穿越经典小说直⽅图均衡化处理:去雾---OpenCV-Python开发指南(45)
⽬录
直⽅图均衡化
直⽅图均衡化的⽬的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到⼀个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了⼈类视觉系统上(HSV)的视觉均衡。
⼀般来说,直⽅图均衡化可以达到增强图像显⽰效果的⽬的。最常⽤的⽐如去雾。下⾯,我们来分别实现灰度图像去雾以及彩⾊图像去雾。实现灰度图像去雾
在OpenCV中,它提供了函数cv2.equalizeHist()来实现直⽅图均衡化,该函数的完整定义如下:
def equalizeHist(src, dst=None):
src:原始图像,必须是8位单通道原始图像
dst:返回值,返回直⽅图均值化处理结果
下⾯,我们来通过该函数实现灰度图像直⽅图均衡化处理,代码如下:
import cv2
import matplotlib.pyplot as plt
适合旅游的地方
img = cv2.imread("45.jpg",0)
equ = cv2.equalizeHist(img)
cv2.imshow("1",img)
cv2.imshow("2",equ)
plt.figure("原始图像直⽅图")
plt.hist(img.ravel(),256)
plt.figure("均衡化图像直⽅图")
plt.hist(equ.ravel(),256)
plt.show()
cv2.waitKey()
关于冬天
cv2.destroyAllWindows()
运⾏之后,效果如下:
单位自查报告范文
左边为原图,右边是处理后的图像,可以看到图像前景的雾,基本已经去掉了。不过,我们还是看看处理前后的直⽅图结果分布。
实现彩⾊图像去雾
虽然上⾯的灰度图像达到了去雾的基本效果,但是说实话,⼤多数实际的场景中,我们⽤到最多的往往是彩⾊图像。所以,掌握彩⾊图像的直⽅图均衡化处理,才是我们真正的实战技能。
下⾯我们来⽤代码实现彩⾊图像直⽅图均衡化处理,代码如下:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("50.jpg")
blue = img[:,:,0]
green = img[:,:,1]
red = img[:,:,2]
blue_equ = cv2.equalizeHist(blue)
阳山金矿green_equ = cv2.equalizeHist(green)
red_equ = cv2.equalizeHist(red)
人生如水
equ = ([blue_equ, green_equ, red_equ])食物链迅雷
cv2.imshow("1",img)
cv2.imshow("2",equ)
plt.figure("原始图像直⽅图")
plt.hist(img.ravel(),256)
百香果酸吗plt.figure("均衡化图像直⽅图")
plt.hist(equ.ravel(),256)
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
这⾥,我们只需要使⽤equalizeHist()函数对彩⾊图像的每个颜⾊进⾏均衡化处理即可。当然,需要注意的是,我们处理完每个颜⾊之后,需要将图像再次合并。运⾏之后效果如下: