当前位置:   article > 正文

OpenCV学习-P29-P32 Opencv直方图均衡化、掩膜_opencv 加掩膜的直方图均衡化

opencv 加掩膜的直方图均衡化

1 直方图

直方图原理:统计图像各个灰度区间的像素数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
cv2.calcHist([img],[0],None,[256],[0,256])
[0]表示通道,[256]表示bin个数,[0,256]表示灰度值取值范围,参数需要加[]

img= cv2.imread(r'.\\20220822162647.jpg',0)

histr=cv2.calcHist([img],[0],None,[256],[0,256])
plt.figure(figsize=(10,6),dpi=100)
plt.plot(histr)
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果需要提取图像某部分直方图,可以给calcHist添加掩膜
在这里插入图片描述

img= cv2.imread(r'.\\20220822162647.jpg',0)

mask=np.zeros(img.shape[:2],np.uint8)
mask[200:250,100:300]=255
masked_img=cv2.bitwise_and(img,img,mask=mask)
histr=cv2.calcHist([img],[0],None,[6],[0,256])
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8))

axes[0,0].imshow(img)
axes[0,0].set_title("原图")

axes[0,1].imshow(mask)
axes[0,1].set_title("蒙版数据")

axes[1,0].imshow(masked_img)
axes[1,0].set_title("掩膜后数据")

axes[1,1].plot(histr)
axes[1,1].set_title("灰度直方图")
axes[1,1].grid()

plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2 直方图均衡化

直方图均衡化可提高图像整体对比度,在曝光过度或不足的图像中可以更好的突出细节
在这里插入图片描述
在这里插入图片描述

3 直方图自适应均衡化

dst=cv.equalizeHist(img)
自适应直方图均衡化:全局直方图均衡化后,可能会丢失部分细节信息,如下图人脸原来是清晰的,均衡化后太亮就不清晰了,所以需要将图像分为很多小块(称为tiles,在opencv中默认为8*8),对每个小块进行直方图均衡化,
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/119932?site
推荐阅读
相关标签
  

闽ICP备14008679号