赞
踩
直方图均衡化分为两种:一种是直方图均衡化,一种是自适应直方图均衡化
图像领域又分为三种:灰度图均衡化、彩色图均衡化、YUV 直方图均衡化
所谓的均衡化又称为图像增强,也是我们熟知的增益
我一般用的最多的是直方图均衡化和自适应直方图均衡化,因此在这里主要介绍这两个。
- #img为输入的单通道图像
- cv2.equalizeHist(img)
- #img为输入的单通道图像,clahe和cll是自定义变量
- clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
- #待知晓……
- cll = clahe.apply(img)
- # 将BGR图像转换到HSV空间中
- hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
- # 将HSV图像通道分离
- channels = cv2.split(hsv)
- # 对第1个通道即色调通道进行全局直方图均衡化并保存
- cv2.equalizeHist(channels[0],channels[0])
- # 将处理后的通道和没有处理的两个通道合并,命名为hsv
- cv2.merge(channels,hsv)
- # 将HSV图像转换回BGR图像
- cv2.cvtColor(ycrcb, cv.COLOR_HSV2BGR, img)
- #将BGR的图像转换成HSV
- hsv = cv2.cvtColor(img, cv.COLOR_BGR2HSV)
- #分离HSV通道
- channels = cv2.split(hsv)
- #将图像自适应均衡化
- clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
- #对第1个通道即色调通道进行均衡化
- clahe.apply(channels[0],channels[0])
- #将处理后的通道和没有处理的两个通道合并,命名为hsv
- cv2.merge(channels,hsv)
- #将HSV的图像转换回BGR
- cv2.cvtColor(ycrcb, cv.COLOR_HSV2BGR, img)
- #将BGR转换成YCrCb
- imgYUV = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
- #分离YCrCb通道
- channelsYUV = cv2.split(imgYUV)
- #按第1个通道即亮度通道进行直方图均衡化
- channelsYUV[0] = cv2.equalizeHist(channelsYUV[0])
- #将完成转换的通道与其余通道融合
- channels = cv2.merge(channelsYUV)
- #将YCrCb转换回BGR
- result = cv2.cvtColor(channels, cv2.COLOR_YCrCb2BGR)
随机一份图像的像素值,从灰度值的小到大 or 大到小进行顺序排列,先计算像素个数,再计算个数占总数的百分比(也就是概率),不同的是我们真正要用的不是概率,而是累计概率。从上到下用概率来计算累计概率,再根据计算公式计算均衡化后的灰度值,(255-0)指的是像素值从0到255,最后进行取整
ps:YUV是另一种表达均衡化方式,和上面的不一样,怎么舒服怎么写
参考:opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化_Ibelievesunshine的博客-CSDN博客
深入理解OpenCV+Python直方图均衡化_Linux编程_Linux公社-Linux系统门户网站
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。