一、概念
LUT(LOOK -UP-TABLE)查找表。简言之:通过事先建立的一张表对图像进行映射。这样可以起到突出图像的有用信息,增强图像的光对比度的作用对某图像中的像素值进行替换。
二、原理
函数原型:
void LUT(InputArray src, InputArray lut, OutputArray dst);
//src表示的是输入图像(可以是单通道也可是3通道)
//lut表示查找表(查找表也可以是单通道,也可以是3通道;
//...如果输入图像为单通道,那查找表必须为单通道;
//...若输入图像为3通道,查找表可以为单通道,也可以为3通道;
//...若为单通道则表示对图像3个通道都应用这个表,若为3通道则分别应用 )
//dst表示输出图像
三、示例代码
#include<highgui\highgui.hpp>
using namespace cv;
int main()
{
//查找表,数组的下标对应图片里面的灰度值
//例如lutData[20]=0;表示灰度为20的像素其对应的值0.
uchar lutData[256];
for (int i = 0; i < 256; i++)
{
if (i <= 100)
lutData[i] = 0;
if (i > 100 && i <= 200)
lutData[i] = 100;
if (i > 200)
lutData[i] = 255;
}
Mat lut(1, 256, CV_8UC1, lutData);
Mat a = imread("C://Users//Administrator//Pictures//Saved Pictures//qzx.jpg", CV_LOAD_IMAGE_GRAYSCALE);
Mat b;
LUT(a, lut, b);
imwrite("C://Users//Administrator//Pictures//Saved Pictures//qxz.jpg", b);
}
原图:
结果: