用python对彩色图像进行直方图均衡化处理

2025-10-22 01:52:18

1、色彩分离:

把图片分成若干个单通道的灰度图。

img[:,:,0]是第一个通道。

用python对彩色图像进行直方图均衡化处理

2、构造单通道图像的直方图:

hist = cv2.calcHist([img[:,:,0]],[0],None,[256],[0,256])

绘制直方图:

plt.plot(hist,color='b')

可以发现,这个图的直方图集中在暗区,说明图像偏暗。

用python对彩色图像进行直方图均衡化处理

3、第二个通道图像的直方图:

hist = cv2.calcHist([img[:,:,1]],[0],None,[256],[0,256])

plt.plot(hist,color='g')

用python对彩色图像进行直方图均衡化处理

用python对彩色图像进行直方图均衡化处理

4、第三个通道图像的直方图:

hist = cv2.calcHist([img[:,:,2]],[0],None,[256],[0,256])

plt.plot(hist,color='r')

用python对彩色图像进行直方图均衡化处理

用python对彩色图像进行直方图均衡化处理

5、把三个直方图画到一起:

hist = cv2.calcHist([img[:,:,0]],[0],None,[256],[0,256])

plt.plot(hist,color='b')

hist = cv2.calcHist([img[:,:,1]],[0],None,[256],[0,256])

plt.plot(hist,color='g')

hist = cv2.calcHist([img[:,:,2]],[0],None,[256],[0,256])

plt.plot(hist,color='r')

用python对彩色图像进行直方图均衡化处理

6、可以发现,第一个通道的直方图相对于另外两个通道,更不均衡,所以这里,只对第一个通道的图像进行均衡化处理:

pic = cv2.equalizeHist(img[:,:,0])

下面第一幅图,是处理前的效果图,第二幅图,是处理后的效果图。

用python对彩色图像进行直方图均衡化处理

用python对彩色图像进行直方图均衡化处理

7、看看处理后的直方图。

hist = cv2.calcHist([pic],[0],None,[256],[0,256])

plt.plot(hist,color='b')

用python对彩色图像进行直方图均衡化处理

8、再对pic进行均衡化处理,连续执行10次。

效果图如下,变化不明显。

用python对彩色图像进行直方图均衡化处理

用python对彩色图像进行直方图均衡化处理

9、合并通道,也就是合并为彩色图像:

im=cv2.merge([pic,img[:,:,1],img[:,:,2]])

后面的图像是新图,前面的图像是原图。

用python对彩色图像进行直方图均衡化处理

用python对彩色图像进行直方图均衡化处理

10、新的彩色图像的直方图。

用python对彩色图像进行直方图均衡化处理

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢