C++ 灰度图像伪彩色处理
真彩色是指影像中的物体颜色和人类肉眼所见的颜色非常相似。在黑白影像中全彩则是指物体的明亮程度。但因为颜色染料等媒体的化学等性质和人类肉眼不同,因此不可能得到绝对的真彩色。
伪彩色的概念就是相较于真彩色提出来的。对于灰度图像,我们可以依据不同像素点的灰度值不同,对R、G、B三个通道进行不同规律的赋值,并将三个通道融合组成一幅伪彩色图像。
1.C++自己实现灰度图像转伪彩色图像
下面介绍一种常见的基于灰度值阶数不同而实现的伪彩色映射。其将256阶灰度阶数分为四段,分别对应R、G、B三通道下的不同映射函数。
C++实现如下(需要配置OpenCV):
void test(Mat &inputimg, Mat &outputimg)
{vector<Mat> mv(3);Mat out;Mat Rimage = inputimg.clone();Mat Gimage = inputimg.clone();Mat Bimage = inputimg.clone();int rowNum = inputimg.rows;int colNum = inputimg.cols;//遍历实现每个像素点的RGB三通道赋值for (int i = 0; i < rowNum; i++){uchar *data1 = inputimg.ptr<uchar>(i);uchar *dataR = Rimage.ptr<uchar>(i);uchar *dataG = Gimage.ptr<uchar>(i);uchar *dataB = Bimage.ptr<uchar>(i);for (int j = 0; j < colNum; j++){if (data1[j] <= 255 / 4){dataR[j] = 0;dataG[j] = 4*data1[j];dataB[j] = 255;}else if (data1[j] <= 255 / 2){dataR[j] = 0;dataG[j] = 255;dataB[j] = -4 * data1[j] + 2 * 255;}else if (data1[j] <= 255 / 3){dataR[j] = 4 * data1[j] - 2 * 255;dataG[j] = 255;dataB[j] = 0;}else{dataR[j] = 255;dataG[j] = 4 * (255 - data1[j]);dataB[j] = 0;}} }mv[0] = Bimage;mv[1] = Gimage;mv[2] = Rimage;//将三通道融合成彩色图想merge(mv, out);outputimg = out.clone();}
2.调用OpenCV的applyColorMap函数
同时在OpenCV中也提供了现成的applyColorMap函数可以直接产生伪彩色图像,同时提供多种颜色映射表可以选择。
void cv::applyColorMap (InputArray src,OutputArray dst,int colormap )
/*
参数
src 灰度或彩色的源图像,类型为CV_8UC1或CV_8UC3。
dst 结果是伪彩色映射后的图像。
colormap 要应用的颜色映射类型
*/
下面是colormap的映射表:
Enumerator | |
---|---|
COLORMAP_AUTUMN |
autumn |
COLORMAP_BONE |
bone |
COLORMAP_JET |
jet |
COLORMAP_WINTER |
winter |
COLORMAP_RAINBOW |
rainbow |
COLORMAP_OCEAN |
ocean |
COLORMAP_SUMMER |
summer |
COLORMAP_SPRING |
spring |
COLORMAP_COOL |
cool |
COLORMAP_HSV |
HSV |
COLORMAP_PINK |
pink |
COLORMAP_HOT |
hot |
COLORMAP_PARULA |
parula |
COLORMAP_MAGMA |
magma |
COLORMAP_INFERNO |
inferno |
COLORMAP_PLASMA |
plasma |
COLORMAP_VIRIDIS |
viridis |
COLORMAP_CIVIDIS |
cividis |
COLORMAP_TWILIGHT |
twilight |
COLORMAP_TWILIGHT_SHIFTED |
twilight shifted |
COLORMAP_TURBO |
turbo |
COLORMAP_DEEPGREEN |
deepgreen |
C++ 灰度图像伪彩色处理相关推荐
- PlantCV中文文档
PlantCV中文文档 1. 简介 1. 欢迎来到PlantCV文档 总览 开始 教程 贡献 版本 2. PlantCV Namespace 2.1 PlantCV 2.1.1 分析颜色 2.1.2 ...
- 【GDAL+C#聚类分析】基于FCM的图像非监督分类
0 引言 拿到一幅遥感图像的时候,我们会主动关注什么要素?比如下面这张图,我们一眼就能看出,这块区域分布着公路.植被.楼房.河流等等地物. 我们为什么能够不假思索地分辨出这些不同的地物?其实这和我们后 ...
- Opencv 给灰度图上颜色
在本教程中,我们将首先给出一个简单的方法,使用OpenCV的预定义的颜色映射来将灰度图像伪彩色化.另外,我们还将展示一个方法,如果你想使用你自己定义一个自定义的调色板.我会分享C++和Python代码 ...
- python灰度图像为什么显示成彩色的_python opencv image 怎么变成伪彩色
匿名用户 1级 2017-05-16 回答 OpenCV 生成 伪彩色图像 opencv中没有易用的伪彩色图像生成函数,这里提供一个改造过的函数,利用自定义colorbar 将灰度图像转换成为伪彩色图 ...
- Matlab实现伪彩色处理:灰度图像转换为彩色图像
灰度图像可以简单理解为一个灰度值矩阵,其中灰度值的取值范围是[0, 255],且灰度值为整数. 现在需要将这个灰度值矩阵中的每一个值拆分成3个通道(RGB),分别是红色通道(red, R).绿色通道( ...
- OpenCV伪彩色applyColorMap函数
假如我们想在图片上显示不同区域的温度,我们可以把红外图像上的温度数据叠加为灰度图像,暗的区域代表冷的温度,更明亮的区域代表较热的温度,但是这样的呈现不能给人类视觉带来直觉的感受,不能更好地感知颜色的变 ...
- Win8Metro(C#)数字图像处理--2.7图像伪彩色
Win8Metro(C#)数字图像处理--2.7图像伪彩色 原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色 2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoCol ...
- Matlab 伪彩色处理方法总结(密度分割法、灰度级变换法、频域变换法)
伪彩色处理方法总结 伪彩色处理是将黑白图像转换为彩色图像,方法分为空域变换及频域变换.空域变换其基本原理是构建颜色映射函数,将灰度值转换为彩色值.因为人眼对彩色图像的分辨能力大于黑白图像,所以伪彩色处 ...
- 数字图像的类型——伪彩色,真彩色,假彩色
参考: http://blog.sina.com.cn/s/blog_764b1e9d0100t9c8.html 伪彩色图像 同灰度图像一样,也是单波段的图像,但是这个单波段图像是有颜色的,不再是灰度 ...
- 将灰度图像转换成彩色图像
伪彩色处理,将灰度图像转换成彩色图像. clc;clear zd=imread('1.jpg'); zd=double(rgb2gray(zd)); figure; subplot(1,2,1) im ...
最新文章
- java rpm_Java JDK rpm安装与配置
- addcolumn---Grid---Magento
- 【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取
- 西宁a货翡翠,孝感a货翡翠
- Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
- linux SIGHUP
- php dirname(_FILE_)
- Screen Space Reflection 2
- 何谓dB、dBm、dBi
- 国仁猫哥:视频号超详细运营攻略教程;教你如何打造一个优质的视频号【建议收藏】
- C 语言 switch 语句
- android开发隐藏图片,用美图看看安卓版教你如何隐藏私人图片(图文)
- Stream流和Optional
- Typora简单传图(Typora+PicGo-Core+SMMS/阿里云OSS 实现图床)
- Hisat2-Stringtie-DESeq2复现Transcript-level expression analysis of RNA-seq experiments with ...
- 火车订票管理系统/火车购票网站系统/火车订票网站/火车票售卖系统
- 迅雷赚钱宝和优酷路由宝赚钱的原理
- MYSQL创建课程表course_MySQL简单案例之创建学生表、课程表和选课表
- CISCO DHCP配置全程详解
- Centos 基本命令