用python对彩色图像进行直方图均衡化处理
1、色彩分离:把图片分成若干个单通道的灰度图。img[:,:,0]是第一个通道。
2、构造单通道兔脒巛钒图像的直方图:hist = cv2.calcHist([img[:,:,0]],[0],None,[256],[0,256])绘制直方图:plt.plot(hist,color=&垆杪屑丝#39;b')可以发现,这个图的直方图集中在暗区,说明图像偏暗。
3、第二个通道图像的直方图:hist = cv2.calcHist([img[:,:,1]],职邗珩垃[0],None,[256],[0,256])plt.plot(hist,color='稆糨孝汶;g')
4、第三个通道图像的直方图:hist = cv2.calcHist([img[:,:,2]],[0],None,[256],[0,256])plt.plot(hist,color='r')
5、把三个直方图画到一起:hist = cv2.calcH坡纠课柩ist([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')
6、可以发现,第一个通道的直方图相对于另外两个通道,更不均衡,所以这里,只对第一个通道的图像进行均衡化处理:pic = cv2.equalizeHist(im爿讥旌护g[:,:,0])下面第一幅图,是处理前的效果图,第二幅图,是处理后的效果图。
7、看看处理后的直方图。hist = cv2.calcHist([pic],[0],None,[256],[0,256])plt.plot(hist,color='b')
8、再对pic进行均衡化处理,连续执行10次。效果图如下,变化不明显。
9、合并通道,也就是合并为彩色图像:im=cv2.merge([pic,img[:,:,1],img[:,:,2]])后面的图像是新图,前面的图像是原图。
10、新的彩色图像的直方图。