1.介绍
在一张灰度图像的直方图中,显示了图像灰度分配的范围和强度,我们利用这个信息,就可以做到修改,甚至提高某一个图像的质量。
2.实现方法:
使用查找表,查找表是一个简单的一对一(多对一)函数,在这个查找表中定义了如何将原始的像素转换成新的像素。其本质是一个一维数组,对于常规灰度图像而言有256个条目,表的第i项表示响应灰度的新值。
newIntensity = lookup[oldIntensity]
OpenCV中的 cv::LUT 可以对图像应用查找表以生成新的图像,我们将其添加到Histogram1D类中。
现在,我们先来看看如何利用查找表修改图像的外观,在这里我们想把一张灰度图变成他的负片。为了实现这个目标,我们需要了解LUT函数需要什么作为输入。
LUT(InputArray src, InputArray lut, OutputArray dst);
函数十分简单,第一个参数是你要修改的图像,第二个参数是查找表,第三个参数是输出图像。注意,查找表是数组的形式。
我们首先定义一个查找表 lut,并给它赋值。在opencv中,我们选择用cv::Mat的形式定义数组。
int dim(256);
cv::Mat lut(1, &dim, CV_8U);
for (int i = 0; i < 256; i++)
{
lut.at<uchar>(i) = 255 - i;
}
在opencv的Mat类定义中,我们可以找到:
Mat(int ndims, const int* sizes,