OpenCV直方图图像增强处理应用实践
1、处理方法1:基于直方图均衡化进行图片增强处理,使图像的灰度更加均衡,适用于对比度较低的图像增强。主要步骤:1)读取图像2)将图像分割到3通道对象中3)针对每个通道进行直方图均衡化4)最后合并分割的3通道图像进行输出


4、处理方法2:完整源代码如下://拉普拉斯算子图像锐化增强void testLpulasi(Mat img){imshow("原始图像", img);Mat imgEnhance;Mat kernel = (Mat_<float>(3,3)<<0,-1,0,0,5,0,0,-1,0);filter2D(img, imgEnhance, CV_8UC3, kernel);imshow("拉普拉斯算子图像增强", imgEnhance);}

5、处理方法3:基于Log对数变换的图像增强,适用于显示图片低灰度部分更多的细节。对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的内容,将其高灰度值部分压缩,减少高灰度部分的细节,从而达到增强图像滴灰度的图像处理。

7、处理方法4:基于伽马变换的图像增强伽马变换主要用于图像矫正,将灰度过高以及灰度过低的图像进行修正处理,增强对比度。变换公式是对原图像的每个像素值做乘积运算。//伽马图像增强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);}
