OpenCV使用python实现限制对比度的自适应直方图均衡化
Posted 异步图书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV使用python实现限制对比度的自适应直方图均衡化相关的知识,希望对你有一定的参考价值。
每天与你分享 IT好书 技术干货 职场知识
前面讲到的自适应直方图均衡化的实现方法首先是将图像划分成不重叠的区域块,让后对每个块分别进行直方图均衡化处理。如果在图像有噪声的情况下这样处理,在每个被分割的小区域块中的噪声就会被放大。
为了避免噪声对图像均衡化的影响,这里使用了限制对比度的自适应直方图均衡化来处理图像的直方图均衡化。
限制对比度的直方图均衡化的处理方式是先为直方图设置一个阈值,该阈值为限制对比度值,超过该阈值的值会被裁剪,然后裁剪的部分会均匀的分布到其他值上,这样就重构了直方图,接下来就可以用重构后的直方图来进行接下来的均衡化操作了。
下面是限制对比度的操作示例图,我这边用excel图来进行展示:
阈值为40时,超出阈值的为50这个直方图区域,将多出的50-40=10的部分均匀分布到每个区域上,平均每个区域增加的值为2
注意:在OpenCV手册中没有提及到限制对比度的自适应直方图均衡化函数。
具体的python实现限制对比度的自适应直方图均衡化代码如下:
# -*_ coding:utf-8-*-
import cv2
import numpy as np
import sys
#主函数
if __name__ == "__main__":
if len(sys.argv) > 1:
#第一步:读入图像
src = cv2.imread(sys.argv[1],cv2.IMREAD_ANYCOLOR)
else:
print "请输入图像"
#创建CLAHE对象
clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
#将每个帧转换为灰度或将其应用于每个通道(转换为灰度)
gray_image = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#限制对比度的自适应阈值均衡化
dst = clahe.apply(gray_image)
#显示图像
cv2.imshow("原图",src)
cv2.imshow("直方图均衡化",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
其中默认设置的“限制对比度”为40,块的大小为8X8
程序运行后的效果如下图所示:
推荐阅读
每天与你分享IT好文。
在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程
点击查看原文,阅读更多内容
以上是关于OpenCV使用python实现限制对比度的自适应直方图均衡化的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV-Python自适应直方图均衡类CLAHE及方法详解
自适应直方图均衡(AHE)和限制对比度的自适应直方图均衡(CLAHE)