1. 伽馬變換
伽馬變換主要用於圖像的校正,將灰度過高或者灰度過低的圖片進行修正,增強對比度。變換公式就是對原圖像上每一個像素值做乘積運算:

伽馬變換對圖像的修正作用其實就是通過增強低灰度或高灰度的細節實現的,從伽馬曲線可以直觀理解:

γ值以1為分界,值越小,對圖像低灰度部分的擴展作用就越強,值越大,對圖像高灰度部分的擴展作用就越強,通過不同的γ值,就可以達到增強低灰度或高灰度部分細節的作用。
2. 實現
在對圖像進行伽馬變換時,如果輸入的圖像矩陣是CV_8U,在進行冪運算時,大於255的值會自動截斷為255;所以,先將圖像的灰度值歸一化到【0,1】范圍,然后再進行冪運算;
1 void GammaTransform(cv::Mat &image, cv::Mat &dist) 2 { 3
4 Mat imageGamma; 5 //灰度歸一化
6 image.convertTo(imageGamma, CV_64F, 1.0 / 255, 0); 7
8 //伽馬變換
9 double gamma = 1.5; 10
11 pow(imageGamma, gamma, dist);//dist 要與imageGamma有相同的數據類型
12
13 dist.convertTo(dist, CV_8U, 255, 0); 14 }
伽馬變換對於圖像對比度偏低,並且整體亮度值偏高(對於於相機過曝)情況下的圖像增強效果明顯,但需要手動調節r值。
