OpenCV--006:伪彩色:LUT作用与用法

article/2025/4/25 14:17:57

文章目录

    • 一、伪彩色
    • 二、LUT
      • 1. LUT概念
      • 2. 作用
      • 3. LUT函数
      • 4. LUT应用
        • 4.1 颜色空间缩减
        • 4.2 图像反转
    • 三、OpenCV:applyColorMap函数

一、伪彩色

伪彩色(Pseudo-color)图像的每个像素的颜色不是由每个基本色分量的数值直接决定,实际上是把像素当成调色板(Palettes)或颜色查找表(Color Look-Up Table,CLUT)的表项入口地址,根据该地址可查找出包含实际R、G、B的强度值,如果图像中的颜色在调色板或彩色查找表中不存在,则调色板会用一个最为接近的颜色来匹配。通过查找出的R、G、B强度值产生的色彩不是图像本身真正的颜色,因此称为伪彩色。

彩色图像转换为灰度图像是一个不可逆的过程,灰度图像也不可能变换为原来的彩色图像。而某些场合需要将灰度图像转变为彩色图像伪彩色处理主要是把黑白的灰度图像或者多波段图像转换为彩色图像的技术过程。其目的是提高图像内容的可辨识度。其中方法有,灰度分成法,灰度变换法。

二、LUT

详细介绍:LUT

1. LUT概念

LUT是:Look Up Table(颜色查找表)。
通过LUT,可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。

2. 作用

避免对每一个像素都进行一次计算。预先计算每个像素值的对应的匹配值,然后直接对原图中的像素值在LUT中进行查找,即可快速得到匹配值,减少大量不必要的计算。

  • LUT 不单单用于图像中。在数据处理中,只要知道原始数据范围、变换公式、变换后得到的数据,也可以使用LUT加快速度。

  • LUT实际用途:将一个颜色空间的图匹配到另一个颜色空间;将某个对比度的图匹配到另一对比度;图像增强、产生伪彩色等;


在这里插入图片描述
上图中每个格子代表一个像素,左图有30和40两种像素值,经过LUT之后,40匹配到90,30匹配到10。这样就得到了高对比度图像
在这里插入图片描述

3. LUT函数

void LUT(InputArray src, InputArray lut, OutputArray dst)
Parameters: 
第一个参数:原始图像的地址; 
第二个参数:查找表的地址,对于多通道图像的查找,它可以有一个通道,也可以与原始图像有相同的通道; 
第三个参数:输出图像的地址。

4. LUT应用

详见:LUT应用

4.1 颜色空间缩减

将现有颜色空间值除以某个输入值,以获得较少的颜色数。例如,颜色值0到9可取为新值0,10到19可取为10,以此类推。(示例来源于OpenCV官网)。

显然这是一个多对一的映射, I [ n e w ] = I [ o l d ] / 10 ∗ 10 I[new] = I[old]/10*10 I[new]=I[old]/1010。很容易想到,只要遍历图像矩阵的每一个像素,对像素应用上述公式就可以完成任务。只是这里用到了除法和乘法运算,而这两种运算又特别费时。鉴于一幅图像只涉及256个像素,我们大可开一个长度为256的数组,让其下标代表旧像素值,数组值代表新的像素值,如 l o o k u p [ 256 ] = 0 , … , 0 , 10 , … , 10 , 20 , … , 20 , … , 250 , … , 250 lookup[256]={0,…,0,10,…,10,20,…,20,…,250,…,250} lookup[256]=0,,0,10,,10,20,,20,,250,,250这样我们遍历修改时不就可以通过像素值从表中查出要改变的像素值了么,而且这一过程只有赋值运算。

4.2 图像反转

显然这是一个一对一的映射,即像素值0变为255,1变为254,2变成253······255变为0,254变成1,253变成2。对应的查找表为: l o o k u p [ 256 ] = 255 , 254 , … , 1 , 0 lookup[256]={255,254,…,1,0} lookup[256]=255,254,,1,0

🔲🔲🔲算法实现:

void Invert(Mat &img,const uchar* const lookup) {for (int i = 0; i < img.rows; i++){uchar* p = img.ptr<uchar>(i);for (int j = 0; j < img.cols; j++){p[j] = lookup[p[j]];}}
}
int main() {Mat src = imread("D:/test/11.jpeg");imshow("src", src);Mat img1;cvtColor(src, img1, COLOR_RGB2GRAY);imshow("img1", img1);uchar lut[256];for (int i = 0; i < 255; i++){lut[i] = 255 - i;}Invert(img1,lut );imshow("img2", img1);waitKey(0);return 0;}

🔲🔲🔲opencv直接实现:

Mat lookUpTable(1, 256, CV_8U);
uchar* p = lookUpTable.data;
for (int i = 0; i < 256; i++)p[i] = 255 - i;
//通过LUT函数实现图像取反
LUT(img1, lookUpTable, img1);

在这里插入图片描述

三、OpenCV:applyColorMap函数

详见:applyColorMap函数
OpenCV的定义12种colormap (色度图) ,可以应用于灰度图像,使用函数applycolormap产生伪彩色图像。

Mat im_gray = imread("D:/test/2.jpg", IMREAD_GRAYSCALE);
Mat im_color;
applyColorMap(im_gray, im_color, COLORMAP_JET);

相关内容:
谈OpenCV中查询表lookup table的LUT函数
opencv图像处理学习(四十)——伪彩色处理


http://chatgpt.dhexx.cn/article/cCNFLiCa.shtml

相关文章

【OpenCV 例程300篇】203. 伪彩色图像处理

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录 【youcans 的 OpenCV 例程300篇】203. 伪彩色图像处理什么是伪彩色图像&#xff1f…

itoa函数和atoi函数

itoa是广泛应用的非标准 C语言扩展函数。由于它不是标准C语言函数&#xff0c;所以不能在所有的 编译器中使用。但是&#xff0c;大多数的编译器&#xff08;如Windows上的&#xff09;通常在<stdlib.h>头文件中包含这个函数。 1说明编辑 功能&#xff1a;将任意类型的数…

C++之spriintf函数(itoa函数)

sprintf函数 头文件&#xff1a;stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] … ); 参数列表 buffer&#xff1a;char型指针&#xff0c;指向将要写入的字符串的缓冲区。 format&#xff1a;格式化字符串。 [argument]…&#xff1a;可选参数&a…

Vue 艺术字体下载、设置

1&#xff0c;本人常用的下载地址&#xff1a;https://zh.fonts2u.com/ 2&#xff0c;找到你需要的字体点击下载 3&#xff0c;下载完之后有一个ttf文件 4&#xff0c;在vue里面&#xff0c;我个人在assets文件下创建一个文件夹&#xff0c;叫什么名字都行&#xff0c;找到你…

vue下载跨域图片

<a style"color: #409EFF;" click"downImg(url)">下载还款凭证</a>//方法一 &#xff08;只有这种方法解决我的需求&#xff09; downImg(imgsrc) {const src ${imgsrc}?t${new Date().getTime()}fetch(src).then(res > {res.blob().th…

vue点击url链接下载文件

在src下面新建一个downLoadUrl的目录 downLoadUrl / index.js文件 /** 后端返回文件的url,前端创建a标签来下载** 1. 解决了若文件为图片或浏览器支持的格式类型,点击下载会直接打开文件的问题,* 2. 下载文件时,浏览器会有闪动的问题** 页面内使用* 1. 引入指令 import do…

vue文件下载及重命名

本文所讲的下载地址格式为&#xff1a;地址文件名&#xff08;例如&#xff1a;http... test.docx&#xff09; 页面代码&#xff1a; <!--map为所下载的文件信息&#xff0c;包括文件名、路径等 --> <p v-down"map">这是文件名</p> js代码…

使用npm下载vue-router(vuex)路由报错,“export ‘XXXX‘ was not found in ‘vue‘

vue-router vuex 报错同理 vue-router vuex 报错同理 今天在写vue项目使用cnpm下载路由&#xff0c;然后就报错"export ref was not found in vue 原因&#xff1a;cnpm install vue-router --save 现在默认下载的是4.x的版本 &#xff0c;我是用的是…

vue实现文件下载

vue中文件下载 前言 Vue浏览器文件下载最简单的方法就是用a链接实现&#xff0c;然后加一个download属性。让后端返回[blob]文件格式&#xff0c;需要传递 responseType: ‘blob’ 一、使用步骤 展示文件&#xff0c;文件点击后查看方法为handlePreview <span style&qu…

vue学习之一:下载vue-cli项目

这几周一直辗转在vue官网和各大博客搜索关于vue项目实战的例子。学的实在是零零碎碎的。不过总算在对于vue项目搭建有个基本认知&#xff0c;于是直接拿起以前做过的项目进行改版了&#xff0c;接下来是从怎么搭建vue2.xvue-router项目实战写的一些列文章。我的开发环境都是基于…

下载vue脚手架@vue/cli(详解)

1.首先到官网下载node.js 2.在自己的电脑查看是否下载成功 使用window加r输入cmd使用node -v 查看node.js是否下载成功 3.使用npm下载yarn 注意&#xff1a;因为下载node.js中会自动帮你下载npm&#xff0c; npm install -g yarn 使用yarn -v 如果显示有版本号则下载成功…

vue.js中文官网下载vue.js失败了?

访问vue官网 https://v2.cn.vuejs.org/v2/guide/installation.html下载vue.js&#xff0c;页面直接报错404&#xff0c;只需要切换到英文版&#xff0c;重新下载即可成功。 或者直接访问以下地址: https://v2.vuejs.org/v2/guide/installation.html#Direct-lt-script-gt-Includ…

如何下载vue.js

vue官网&#xff1a;https://v2.vuejs.org/ 1、第一步 2、第二步 3、 第三步

idea 下载vue 插件

1.先查看自己的idea 的版本 2.然后去官网 https://plugins.jetbrains.com/plugin/9442-vue-js/versions 下载跟自己idea 版本对应的vue插件 一定要对应不然 报版本不对应问题 类似于&#xff1a; 下载完之后 把文件放在 相应位置 我是放在了idea的插件位置 一般是在 idea的…

Vue.js的下载和调用

Vue支持双向绑定&#xff0c;非常不错。将视图层和模型层分离开。是基于MVVM模型&#xff0c;模型-视图-视图模型 。支持ES6。 目录 一、在官网下载vue.js文件 二、声明Vue对象 三、Vue修饰符 1. v-once。 使{{}}内的值不能被修改 2.v-pre 。{{}}将不会被Vue替换&#xff0c…

操作系统课后答案第三章

**操作系统课后答案**第三章 处理及调度与死锁 1、高级调度与低级调度的主要任务是什么? 为什么要引入中级调度? 答&#xff1a;高级调度的主要任务&#xff1a;用于决定把外存上处于后背队列中的哪些作业调入内存&#xff0c;并为它们创建进程&#xff0c;分配必要的资源&am…

第1章 操作系统引论课后答案

第1章 操作系统引论 1.1 简答题参考答案 1&#xff0e;在计算机系统上配置 OS&#xff08;operating system&#xff0c;操作系统&#xff09;的目标是什么&#xff1f;作用主 要表现在哪几个方面&#xff1f; 【参考答案】在计算机系统上配置OS&#xff0c;主要目标是实现&a…

操作系统解答题

操作系统 **1.平均等待时间问题****2.同步互斥问题****3.分页系统地址转换****4.LRU&#xff08;最近最久未使用&#xff09;置换算法**5.银行家算法 1.平均等待时间问题 有5个进程P1&#xff0c;P2&#xff0c;P3&#xff0c;P4&#xff0c;P5&#xff0c;它们同时依次进入就…

操作系统习题(有答案)

最近在学习os在网上找到的很好的资料&#xff0c;希望对大家有用~ 第1章 一、填空 1&#xff0e;计算机由 硬件 系统和 软件 系统两个部分组成&#xff0c;它们构成了一个完整的计算机系统。 2&#xff0e;按功能划分&#xff0c;软件可分为 系统 软件和 应用 软件两种。 3&am…

【《操作系统慕课版》合集】期末复习 + 核心算法整理 + 课后答案

所有章节归类好了概念、算法&#xff0c;同时课后的简答题也一并给出了答案。祝各位复习愉快~ 整理不易希望能点个赞~ 目录 第一章 操作系统概述 第二章 进程的描述与控制 第三章 处理机调度与死锁 第四章 进程同步 第五章 存储器管理 第六章 虚拟存储器 第七章 输入输…