查找表和颜色表
图像查找表图像颜色表
图像查找表
查找表(look up table )概念 查找表【i】=new value,查找表第i项(灰度值i)的新值为 new value。也就是,将原图像中像素值为i的像素变为值”new value“。查找表可以看成一个简单的一对一的映射函数 y= f(x)。对于较大的图像,有效的方法是预先计算所有可能的值,然后需要这些值的时候,利用查找表直接赋值即可。查找表是一维或多维数组,存储了不同输入值所对应的输出值,其优势在于只需读取、无需计算,所以大大提高处理速度。 API : LUT PS:
CV_EXPORTS_W
void LUT(InputArray src
, InputArray lut
, OutputArray dst
);
通过自己的色卡 color,制作查找表 lut , 然后将 lut 应用于图像 src
Mat src
= imread("F:/code/images/wm.jpg");
if (src
.empty()) {
printf("fail to read");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE
);
imshow("input", src
);
Mat color
= imread("F:/code/images/rainbow.png");
Mat lut
= Mat
::zeros(256, 1, CV_8UC3
);
Mat dst
;
for (int i
= 0; i
< 256; i
++) {
lut
.at
<Vec3b
>(i
, 0) = color
.at
<Vec3b
>(11, i
);
}
LUT(src
, lut
, dst
);
imshow("color", color
);
imshow("lut", lut
);
imshow("lut demo", dst
);
图像颜色表
颜色表概念 opencv applyColorMap 提供12种颜色查找表 API : applyColorMap
CV_EXPORTS_W
void applyColorMap(InputArray src
, OutputArray dst
, int colormap
);
通过使用颜色表,选择不同风格进行图像处理
Mat src
= imread("F:/code/images/wm.jpg");
if (src
.empty()) {
printf("fail to read");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE
);
imshow("input", src
);
Mat dst2
;
applyColorMap(src
, dst2
, COLORMAP_CIVIDIS
);
imshow("color_map demo", dst2
);