将原图像通过变换函数映射成新的像素值,b = f(a)
,a是变换后的像素值,b表示变换前像素值,f为变换函数。在这里使用查表的方法(Look Up Table, 简称LUT),先计算出整个灰度空间在f上的映射,再根据映射表格变换图像的像素值。
f: b = 255*(a-min)/(max-min) ,max,min是图像像素值中的最大最小值。
//映射表格
Mat lut(1,256,CV_8U);
for(int i=0;i<256;i++)
{
if(lut.at<uchar>(i)<imin)
lut.at<uchar>(i)=0;
else if(lut.at<uchar>(i)>imax)
lut.at<uchar>(i)=255;
else
lut.at<uchar>(i)=static_cast<uchar>(
255.0*(i-imin)/(imax-imin)+0.5);
}