基于伽马变换的图像增强
伽马变换主要用于图像矫正,将灰度过高以及灰度过低的图像进行修正处理,增强对比度。
变换公式是对原图像的每个像素值做乘积运算。
//伽马图像增强
void gamaTest(Mat img)
{
imshow("原始图像", img);
Mat imgGamma(img.size(), CV_32FC3);
for (int i = 0; i < img.rows; i++)
{
for (int j = 0; j < img.cols; j++)
{
imgGamma.at<Vec3f>(i, j)[0] = (img.at<Vec3b>(i, j)[0])*(img.at<Vec3b>(i, j)[0])*(img.at<Vec3b>(i, j)[0]);
imgGamma.at<Vec3f>(i, j)[1] = (img.at<Vec3b>(i, j)[1])*(img.at<Vec3b>(i, j)[1])*(img.at<Vec3b>(i, j)[1]);
imgGamma.at<Vec3f>(i, j)[2] = (img.at<Vec3b>(i, j)[2])* (img.at<Vec3b>(i, j)[2])* (img.at<Vec3b>(i, j)[2]);
}
}
//归一化
normalize(imgGamma, imgGamma, 0, 255, CV_MINMAX);
//转换为8 bit图像显示
convertScaleAbs(imgGamma, imgGamma);
imshow("伽马增强效果", imgGamma);
waitKey(0);
}
效果图: