1. 程式人生 > >OpenCV3.3—影象增強(方法:伽馬變換)

OpenCV3.3—影象增強(方法:伽馬變換)

1. 伽馬變換

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

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

γ值以1為分界,值越小,對影象低灰度部分的擴充套件作用就越強,值越大,對影象高灰度部分的擴充套件作用就越強,通過不同的γ值,就可以達到增強低灰度或高灰度部分細節的作用。

2. 實現

在對影象進行伽馬變換時,如果輸入的影象矩陣是CV_8U,在進行冪運算時,大於255的值會自動截斷為255;所以,先將影象的灰度值歸一化到【0,1】範圍,然後再進行冪運算;

void  GammaTransform(cv::Mat &image, cv::Mat &dist)
{

	Mat imageGamma;
	//灰度歸一化
	image.convertTo(imageGamma, CV_64F, 1.0 / 255, 0);

	//伽馬變換
	double gamma = 1.5;

	pow(imageGamma, gamma, dist);//dist 要與imageGamma有相同的資料型別

	dist.convertTo(dist, CV_8U, 255, 0);
}

 伽馬變換對於影象對比度偏低,並且整體亮度值偏高(對於於相機過曝)情況下的影象增強效果明顯,但需要手動調節r值。