主页 > 知识库 > OpenCV-Python直方图均衡化实现图像去雾

OpenCV-Python直方图均衡化实现图像去雾

热门标签:检查注册表项 银行业务 服务器配置 呼叫中心市场需求 智能手机 美图手机 铁路电话系统 网站文章发布

直方图均衡化

直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了人类视觉系统上(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 = cv2.merge([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()函数对彩色图像的每个颜色进行均衡化处理即可。当然,需要注意的是,我们处理完每个颜色之后,需要将图像再次合并。运行之后效果如下:

到此这篇关于OpenCV-Python直方图均衡化实现图像去雾的文章就介绍到这了,更多相关OpenCV-Python 图像去雾内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Opencv实现二维直方图的计算及绘制
  • 基于OpenCV的直方图匹配的实现方法
  • python 对一幅灰度图像进行直方图均衡化
  • OpenCV利用python来实现图像的直方图均衡化
  • 详解用Python为直方图绘制拟合曲线的两种方法
  • opencv python统计及绘制直方图的方法
  • OpenCV半小时掌握基本操作之直方图

标签:红河 上海 沈阳 沧州 新疆 乐山 长治 河南

巨人网络通讯声明:本文标题《OpenCV-Python直方图均衡化实现图像去雾》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266