- 增强图像对比度、使图像辨识度提高
- 像素强度分布更加均衡,而不是整体趋暗或明
参考资料python+opencv直方图均衡化_我是小蚂蚁的博客-CSDN博客_opencv 直方图均衡化
2.1 灰度图
对于灰度图的直方图均衡化,直接用equalizeHist()即可。
equalizeHist()函数的用法非常简单,直接传入单通道图像即可。
2.2 彩色图如果想要对彩色图进行均衡化,可以先用OpenCV的split函数拆分成多个通道,接着分别将各个通道的数组传入equalizeHist(),最后再用merge函数合并成一个彩色图。
2.3 YCC均衡化对彩色图像的另一种均衡化方法,就是先用cvtColor函数(参数mode等于cv.COLOR_BGR2YCrCb)转成YCC颜色模式的图像,然后再用split函数划分成多个通道,将第一个通道(亮度/明度)传入equalizeHist(),最后再用merge函数将第一个通道的新数组和其他通道的数组合并成一个彩色图。
三、生成自适应均衡化图像(cv.createCLANE)第二部分的equalizeHist()函数功能是“全局均衡化”。
全局均衡化API虽然简单易用,但是存在一些问题。
由于整体亮度的提升,图像的部分细节变得模糊,这时候我们可以尝试进行分块的局部均衡化操作。
自适应均衡化,最适合用来对直方图有多个峰值区域的图像;而全局均衡化,适合只有一个峰值区域的图像。
createCLANE的语法格式如下
cv.createCLAHE([, clipLimit[, tileGridSize]]) ->retval
- clipLimit是对比度阈值,生成的图像对比度不能太高;默认的阈值是40.0。
- tileGridSize表示图像的行列分块数;因为自适应均衡化是先将图像按tileGridSize进行行列划分,得到n*m块子图后分别进行均衡化;行列分块数越大,均衡化越细致;默认的尺寸是(8, 8)。
- retval是函数返回值,代表一个类的实例;我们要向实现均衡化,还需要用到这个类实例的方法——apply(img)。



