在本教程中,我们将首先展示一种使用OpenCV的预定义颜色图对灰度图像进行伪彩色 / 假彩色 的简单方法。
这篇文章专门介绍了NASA的“ New Frontiers program”计划,该计划帮助探索了木星,金星和现在的冥王星!
通常,对行星和空间中其他物体的灰度图像进行伪彩色显示,以显示细节,并用不同的颜色标记与不同材料相对应的区域。我们将使用的灰阶照片的一个冥王星 所采取的新的天际在本教程中的例子。
什么是色彩图?
假设我们要在地图上显示美国不同地区的温度。我们可以将温度数据作为灰度图像叠加在美国地图的顶部,较暗的区域表示温度较低,较亮的区域表示温度较高的区域。这样的表示不仅令人难以置信的无聊,而且由于两个大原因,它是一种不好的表示。首先,人类视觉系统并未优化以测量灰度强度的微小变化。我们在感知颜色变化方面做得更好。其次,我们将不同的含义与不同的颜色相关联。用蓝色表示较凉的温度,用红色表示较暖的温度更有意义。
温度数据只是一个示例,但是在其他几种情况下,数据是单值(灰度)的,但是将其转换为颜色数据以进行可视化是有意义的。通过伪彩色更好地可视化的数据的其他示例是高度,压力,密度,湿度等。
在OpenCV中使用applyColorMap
OpenCV定义了12个颜色图,可使用applyColorMap函数将其应用于灰度图像以生成伪彩色图像。让我们快速了解如何将色彩映射表COLORMAP_JET应用于图像。
C++
using namespace cv;
Mat im_gray = imread("pluto.jpg", IMREAD_GRAYSCALE);
Mat im_color;
applyColorMap(im_gray, im_color, COLORMAP_JET);
Python
import cv2
im_gray = cv2.imread("pluto.jpg", cv2.IMREAD_GRAYSCALE)
im_color = cv2.applyColorMap(im_gray, cv2.COLORMAP_JET)
下图显示了颜色图的可视化表示形式和COLORMAP_ *的数值。较低的灰度值由刻度左侧的颜色替换,而较高的灰度值位于刻度右侧的颜色。
自定义色彩图
自定义颜色图 有些人对餐馆的菜单永远不满意。尽管厨师在选择食材方面具有专业知识,但他们将通过添加,替换和替代食材来定制菜肴。哦,是的,那些人。
如果您恰好是这些人之一,并且想要创建自己的颜色图(上帝的帮助下12色图有什么问题?),请执行以下步骤。
-
定义颜色图:颜色图是从0-255值到256色的映射。在OpenCV中,我们需要创建一个大小为256 x 1的8位彩色图像,以存储256个彩色值。
-
使用查找表映射颜色: 在OpenCV中,可以使用查找表LUT将存储在256 x 1彩色图像中的颜色图应用于图像。
C++
Mat im_color;
// NOTE : im_gray is 3-channel image with identical
// red, green, blue channels.
LUT(im_gray, lut, im_color);
Python
# NOTE : im_gray is 3-channel image with identical
# red, green, blue channels.
im_color = cv2.LUT(im_gray, lut)
相关源码下载地址:关注“图像算法”微信公众号,回复伪彩色