关于applyColorMap
函数的使用参考:
1. COLORMAP_JET简介
计算机视觉中最常用的颜色映射算法是Jet,它具有高的对比度可以有效突出图像中的细节。但如果仔细观察图像的梯度图会发现一系列的颜色带,在青色和黄色区域最为明显。
缺点:这对于伪彩图最大的影响在于颜色变化过于剧烈,将导致人眼对于实际数据的误解。很多平滑过渡的区域会被误解为有较大的梯度。由于Jet映射对于人眼感知来说变化不是常量,所以它不具有感知均匀性。这种影响对于色盲人士来说更为明显,将造成伪彩图映射出的信息变得模糊。
2. 灰度到JET的映射
2.1 灰度值映射成JET
对于0~255范围的灰度值映射成JET模式的伪彩,对照情况如下:
将其对应的值打印出来:
Mat img = Mat(20, 256, CV_8UC1);
for (size_t i = 0; i < 20; i++)
{
uchar* p = img.ptr<uchar>(i);
for (int j = 0; j < 256; j++) {
p[j] = j;
}
}
imshow("color", img);
Mat jet;
applyColorMap(img, jet, COLORMAP_JET);
imshow("jet", jet);
for (size_t i = 0; i < 1; i++)
{
uchar* p0 = img.ptr<uchar>(i);
/*uchar* p1 = imgRGB[0].ptr<uchar>(i);
uchar* p2= imgRGB[1].ptr<uchar>(i);
uchar* p3 = imgRGB[2].ptr<uchar>(i);*/
Vec3b* p = jet.ptr<Vec3b>(i);
for (size_t j = 0; j < 256; j++)
{
cout << (int)p0[j]<<" —— "<< "BGR(" << int(p[j][0]) << "," << int(p[j][1]) << "," << int(p[j][2]) << ")" << endl;
}
}
waitKey();
输出的对照值:
0 —— BGR(128,0,0)
1 —— BGR(132,0,0)
2 —— BGR(136,0,0)
3 —— BGR(140,0,0)
4 —— BGR(144,0,0)
5 —— BGR(148,0,0)
6 —— BGR(152,0,0)
7 —— BGR(156,0,0)
8 —— BGR(160,0,0)
9 —— BGR(164,0,0)
10 —— BGR(168,0,0)
11 —— BGR(172,0,0)
12 —— BGR(176,0,0)
13 —— BGR(180,0,0)
14 —— BGR(184,0,0)
15 —— BGR(188,0,0)
16 —— BGR(192,0,0)
17 —— BGR(196,0,0)
18 —— BGR(200,0,0)
19 —— BGR(204,0,0)
20 —— BGR(208,0,0)
21 —— BGR(212,0,0)
22 —— BGR(216,0,0)
23 —— BGR(220,0,0)
24 —— BGR(224,0,0)
25 —— BGR(228,0,0)
26 —— BGR(232,0,0)
27 —— BGR(236,0,0)
28 —— BGR(240,0,0)
29 —— BGR(244,0,0)
30 —— BGR(248,0,0)
31 —— BGR(252,0,0)
32 —— BGR(255,0,0)
33 —— BGR(255,4,0)
34 —— BGR(255,8,0)
35 —— BGR(255,12,0)
36 —— BGR(255,16,0)
37 —— BGR(255,20,0)
38 —— BGR(255,24,0)
39 —— BGR(255,28,0)
40 —— BGR(255,32,0)
41 —— BGR(255,36,0)
42 —— BGR(255