做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨。

本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!!

废话不说了,代码是码农的语言,就像原理图是电工的语言一样,直接上吧:

这是原始图像:

这是伪彩化后的图像:

代码如下:

文字版的代码如下:

void CMy20121227灰度转伪彩显示Dlg::OnBnClickedButton1()

{

// TODO: Add your control notification handler code here

Mat img = imread("huidu.jpg", CV_LOAD_IMAGE_GRAYSCALE);

namedWindow("img");

imshow("img", img);

waitKey(0);

Mat img_color(img.rows, img.cols, CV_8UC3);//RGB图像

int tmp=0;

for (int y=0;y

{

for (int x=0;x

{

tmp = img.at(y,x);

img_color.at(y,x)[0] = abs(255-tmp); //blue

img_color.at(y,x)[1] = abs(127-tmp); //green

img_color.at(y,x)[2] = abs( 0-tmp); //red

}

}

namedWindow("img_color");

imshow("img_color", img_color);

waitKey(0);

destroyAllWindows();

}

但是,这种转换只是直接简单的用RGB三色交叉而已,生成的伪彩图效果并不好,那么我就考虑用MATLAB中那样生成彩虹图,区分更明显,更适合肉眼观察。

主要思路是把灰度图对应的0~255的数值分别转换成彩虹色:红、橙、黄、绿、青、蓝。这里我没有使用紫色,因为实用中发现紫色的效果并不好。彩虹色对应的RGB值在下面的代码中可以看到,所以只需要分别作线性插值就可以了。

废话少说,直接上代码,简洁明快是我的一贯风格,无论编程还是做人都是,哈哈:

代码如下:

文字版代码如下:

// R G B gray

//----------------------------------

// 红 255, 0, 0 255

// 橙 255, 127, 0 204

// 黄 255, 255, 0 153

// 绿 0, 255, 0 102

// 青 0, 255, 255 51

// 蓝 0, 0, 255 0

void CMy20121227灰度转伪彩显示Dlg::OnBnClickedButton2()

{

Mat img = imread("huidu.jpg", CV_LOAD_IMAGE_GRAYSCALE);

namedWindow("img");

imshow("img", img);

waitKey(0);

Mat img_color(img.rows, img.cols, CV_8UC3);//RGB图像

#define IMG_B(img,y,x) img.at(y,x)[0]

#define IMG_G(img,y,x) img.at(y,x)[1]

#define IMG_R(img,y,x) img.at(y,x)[2]

uchar tmp=0;

for (int y=0;y

{

for (int x=0;x

{

tmp = img.at(y,x);

if (tmp <= 51)

{

IMG_B(img_color,y,x) = 255;

IMG_G(img_color,y,x) = tmp*5;

IMG_R(img_color,y,x) = 0;

}

else if (tmp <= 102)

{

tmp-=51;

IMG_B(img_color,y,x) = 255-tmp*5;

IMG_G(img_color,y,x) = 255;

IMG_R(img_color,y,x) = 0;

}

else if (tmp <= 153)

{

tmp-=102;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 255;

IMG_R(img_color,y,x) = tmp*5;

}

else if (tmp <= 204)

{

tmp-=153;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 255-uchar(128.0*tmp/51.0+0.5);

IMG_R(img_color,y,x) = 255;

}

else

{

tmp-=204;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 127-uchar(127.0*tmp/51.0+0.5);

IMG_R(img_color,y,x) = 255;

}

}

}

namedWindow("img_color");

imshow("img_color", img_color);

waitKey(0);

destroyAllWindows();

}

可以看出,这种方法转化的效果不错,能够较好的把灰度图转换成适合肉眼观察的彩虹图。

本文的编程环境是Visual Studio 2008、OpenCV 2.4.3。

sume

2012.12.28

matlab灰度图转伪彩色,[转载]灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3相关推荐

  1. python彩虹图_灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3

    做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...

  2. 数字图像处理--灰度图转伪彩色图

    开篇废话 观察了一下冈萨雷斯的书,发现彩色图像处理仅仅用了一章进行介绍,原因分析了一下,后来发现,好像别的介绍的也不多,得出一个结论.冈萨雷斯这本书仅仅能作为一部纲领性的介绍.它基本涵盖了图像处理的基 ...

  3. Opencv学习笔记5:Opencv处理彩虹图、铜色图、灰度反转图

    一.概述: 人类能够观察到的光的波长范围是有限的,并且人类视觉有一个特点,只能分辨出二十几种灰度,也就是说即使采集到的灰度图像分辨率超级高,有上百个灰度级,但是很遗憾,人们只能看出二十几个,也就是说信 ...

  4. 图像处理之灰度图转伪彩色图原理与代码分析

    首先强调:在matlab中用[row,col]=size(x)获取的行和列是与图片编辑器显示的行列相反. 首先RGB图转为灰度图,通过rgb2gray()函数:灰度图中每个像素点的灰度值根据三个分段线 ...

  5. C#灰度图转伪彩色图

    /// <summary>/// 伪彩色图像构造器/// </summary>public class PseudoColorImageBuilder{/// <summ ...

  6. android 图片 灰度图,Android-将RGB彩×××转换为灰度图

    彩色转灰度图(常见方式)RGB-->GRAY方法一:RGB[A] to Gray:Y←0.299⋅R+0.587⋅G+0.114⋅B opencv函数实现:cvtColor(src, bwsrc ...

  7. opencv遍历实现灰度图转伪彩色图[C/C++][附applyColorMap方法]

    灰度图转伪彩色图 数字图像处理的作业,利用opencv实现通过灰度隐射将灰度图转化为伪彩色图. 效果大概如下,在最后附带opencv自带函数处理的方法 原图 遍历图 opencv的 applyColo ...

  8. 灰度图转RGB(伪彩色图)

    灰度图转RGB(伪彩色图) 前言 代码 参考 前言 灰度图可以转化成伪彩色图以显示出更多的细节,简单整理了三种转化的方法,结合openCV通过C++进行了实现. 代码 该函数将二维数组转化为伪彩色图并 ...

  9. cv2 inrange灰度图_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...

    title: [python]基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析 type: categories copyright: true categories ...

最新文章

  1. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  2. MySQL、MariaDB修改默认字符集
  3. leetcode-python-优先级队列与时间复杂度
  4. iOS 后台语音播报功能开发过程中的那些坑
  5. java 泛型 多态_Java 多态
  6. oracle中何时会用到join,Oracle中join用法的演示
  7. NET中dictionary的一个小坑
  8. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.15 如何掌握拍摄方向
  9. 【转】VC6下安装与配置OpenCV1.0
  10. toolchain安装教程支持_网上现成toolchain安装操作
  11. 计算机网络(四)—— 网络层(1、2):网络层概述、网络层提供的两种服务
  12. Java 找不到符号 符号 类 SpringBootApplication
  13. 微信小程序:微信公众号申请微信小程序并认证的步骤
  14. 从头开始搞懂 MySQL(07)为什么同一条 SQL 时快时慢
  15. 【xla】四、【构图阶段】BuildXlaOpsPass
  16. G2Plot 图例(legend)带瞄准图标解决
  17. V2X-Hub,车路协同云控平台
  18. Android集成FireBase
  19. 在物联网(IOT)背景下服务器怎样和电控板打交道的?
  20. android银行卡绑定,华为huawei pay怎么绑定银行卡 绑卡方法教程

热门文章

  1. 介绍计算机硬件的英语作文带翻译,介绍光盘行动的英语作文带翻译
  2. 【SMS】移动短信网关返回信息状态代码说明【China Mobile】
  3. w ndows相机控制协议,米联客(MSXBO)USB3.0 UVC摄像头实现基于FT602Q芯片方案
  4. 探讨微信浏览器不支持下载怎么解决
  5. 中国现代史网,我的新网站
  6. IHS Petra v3.1.8.3.rar Reflexw v5.0.rar
  7. 科技如何“再造”美妆行业,上海秉坤出席2022CBE美妆未来趋势高峰论坛
  8. webRTC(四),android应用开发基础课件
  9. mysql滴一声弹出,关于mysql数据库在输入密码后,滴的一声直接退出
  10. 自定义查询 java_JAVA自定义查询策略