/// 伽马变换 公式:y = (x + esp)^gamma
Mat Gamma_image;
Gamma_image.create(512,512,CV_64FC1);//创建伽马图以保存结果像并初始化
cvtColor(input_image, input_image, CV_BGR2GRAY);//输入图像(lena图)灰度化
input_image.convertTo(input_image, CV_64FC1, 1, 0);//灰度图像将uchar变为double
normalize(input_image, input_image, 0, 1, NORM_MINMAX, -1, Mat() );//灰度图归一到[0,1]
float esp = 0.1;//定义补偿系数esp
input_image = input_image + esp;//x + esp
pow(input_image, 0.345, Gamma_image);//(x + esp)^gamma
normalize(Gamma_image, Gamma_image, 0, 255, NORM_MINMAX, -1, Mat() );//Gamma图像归一到[0,255]
Gamma_image.convertTo(Gamma_image, CV_8UC1, 1, 0);//Gamma图像转为8位单通道
imshow("Gamma_image",Gamma_image);
将《数字图像处理与机器视觉》书中P76页中的伽马变换做了一下,理论部分在该书的P76-77.
《数字图像处理与机器视觉》 该书下载地址:http://pan.baidu.com/share/link?shareid=3551301329&uk=1610854122
gamma等于1就相当于之前灰度线性变换中Fa=1的情况,这种有侧重增强高、低灰度的方法还是要掌握的。