【OpenCV3】彩色映射——cv::applyColorMap()与cv::LUT()详解

在图像处理的过程中,我们通常会遇到将灰度图像映射成彩色图像的情形(即通常所说的伪彩映射),OpenCV2和OpenCV3中均提供了两个用于伪彩映射的函数——cv::applyColorMap()和cv::LUT()。

1、cv::applyColorMap()

cv::applyColorMap()是使用OpenCV预定义的colormap,将灰度图映射成彩色图像。opencv中提供了12个预定义的colormaps,如下图所示



想要获得更多colormap请查看Python中的彩色映射 和 Python中的彩色映射(续篇)

具体使用如下:

[cpp]  view plain  copy
 print ?
  1. cv::Mat im_gray = imread("pluto.jpg", cv::IMREAD_GRAYSCALE);  
  2. cv::Mat im_color;  
  3. cv::applyColorMap(im_gray, im_color, cv::COLORMAP_JET);  

效果如下:



2、cv::LUT()

虽然cv::applyColorMap()用起来很方便,但是无法支持用户自定义的colormap,而这就需要使用cv::LUT()。

首先是colormap的定义:以256级灰阶为例,所谓colormap就是就是灰度级0-255之间256种色彩的映射表。

cv::LUT()具体使用方法如下:

[cpp]  view plain  copy
 print ?
  1. cv::Mat image_gray_3c;  
  2. //单通道的灰度图,转换成R、G、B三通道值均相等的三通道图  
  3. cv::cvtColor(image_gray, image_gray_3c, cv::COLOR_GRAY2RGB);  
  4. //opencv默认的颜色排列顺序是BGR,而这里自定义的colormap的顺序是RGB  
  5. cv::cvtColor(golden_map, golden_map, cv::COLOR_BGR2RGB);   
  6. cv::Mat image_color;  
  7. cv::LUT(image_gray_3c, golden_map, image_color);  


注意:输入的灰度图,一定要先转换成3通道图(即24位深)。这里,使用了自己定义的一个colormap,效果如下:



  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值