【Opencv3教程】Opencv

编程入门 行业动态 更新时间:2024-10-25 10:30:18

【Opencv3<a href=https://www.elefans.com/category/jswz/34/1771193.html style=教程】Opencv"/>

【Opencv3教程】Opencv

【Opencv3教程】Opencv-python入门篇(二)直方图均衡化

  • 直方图均衡化:
    • 1 直方图:
    • 2 直方图均衡化的原理:
    • 3 直方图均衡化的 python 实现:
    • 4 自适应直方图均衡化:

直方图均衡化:

1 直方图:

对于灰度图,直方图用于统计 [ 0 , 255 ] [0,255] [0,255] 区间内每个像素值出现的次数;

import cv2import matplotlib.pyplot as pltimport numpy as npimage = cv2.imread('./sample.jpg')image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)plt.imshow(image, cmap='gray')
plt.show()plt.hist(image.ravel(), 256, [0, 256])
plt.show()

我们读入测试图像并统计直方图:

2 直方图均衡化的原理:

可以看到像素值的分布是不均衡的,而直方图均衡化可以使图像具有较大的灰度动态范围和较高的对比度,同时图像的细节更为丰富;

即,假设我们有如图数据:

我们从小到大统计每个像素值出现的概率 p i p_i pi​,并计算累积概率 P i P_i Pi​,其中:

P i = ∑ j = 0 i p i P_i=\sum_{j=0}^{i}p_i Pi​=∑j=0i​pi​

即:

则第 i i i 个值 a i a_i ai​ 经过均衡化的新灰度值 A i A_i Ai​ 为:

A i = [ P i × ( a m a x − a m i n ) ] A_i=[P_i×(a_{max}-a_{min})] Ai​=[Pi​×(amax​−amin​)],其中对于灰度图 a m a x = 255 , a m i n = 0 a_{max}=255,a_{min}=0 amax​=255,amin​=0;

得到的经过转换的图像为:

3 直方图均衡化的 python 实现:

import cv2import matplotlib.pyplot as pltimport numpy as npimage = cv2.imread('./sample.jpg')image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)equal = cv2.equalizeHist(image)plt.hist(equal.ravel(), 256, [0, 256])
plt.show()

经过直方图均衡化的图像的直方图如图所示:

左图为原图,右图为均衡化之后的结果:

4 自适应直方图均衡化:

由于不同物体对应图像不同区域,因此首先对图像分区,再分别对每个区域进行直方图均衡化似乎更合理一些,我们就称这种方法为自适应直方图均衡化:

import cv2import matplotlib.pyplot as pltimport numpy as npimage = cv2.imread('./sample.jpg')image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)equal = cv2.equalizeHist(image)result = np.hstack([image, equal])clahe = cv2.createCLAHE(2.0, (8, 8)) 
# clipLimit:颜色对比度的阈值
# titleGridSize:进行像素均衡化的网格大小
res = clahe.apply(image)
result = np.hstack([result, res])plt.imshow(result, cmap='gray')
plt.show()

从左至右依次为:原图,直方图均衡化,自适应直方图均衡化

更多推荐

【Opencv3教程】Opencv

本文发布于:2024-02-12 19:03:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1689005.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:教程   Opencv

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!