图像直方图提供了利用现有像素强度值进行场景渲染的方法。通过分析图像中像素值的分布情况,可以利用这个信息来修改图像,甚至提高图像质量。
用一个简单的映射函数(称为查找表)来修改图像的像素值,查找表通常根据直方分布图生成。
查找表是个一对一(或多对一)的函数,定义了如何把像素值转换成新的值。它是一个一维数组,对于规则的灰度图像,它包含 256 个项目。利用查找表的项目 i,可得到对应灰度级的新强度值,如下所示:
newIntensity= lookup[oldIntensity];
OpenCV 中的 cv::LUT 函数在图像上应用查找表生成一个新的图像。查找表通常根据直方图生成,因此在 Histogram1D 类中加入了这个函数:
static cv::Mat applyLookUp(const cv::Mat& image, // 输入图像
const cv::Mat& lookup) {// uchar 类型的 1×256 数组
// 输出图像
cv::Mat result;
// 应用查找表
cv::LUT(image,lookup,result);
return result;
}