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

 更新时间:2021年06月07日 15:50:12   作者:一天一篇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 图像去雾内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现PolynomialFeatures多项式的方法

    python实现PolynomialFeatures多项式的方法

    这篇文章主要介绍了python实现PolynomialFeatures多项式的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 浅谈keras中的后端backend及其相关函数(K.prod,K.cast)

    浅谈keras中的后端backend及其相关函数(K.prod,K.cast)

    这篇文章主要介绍了浅谈keras中的后端backend及其相关函数(K.prod,K.cast),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python+wxPython实现自动生成PPTX文档程序

    Python+wxPython实现自动生成PPTX文档程序

    这篇文章主要介绍了如何使用 wxPython 模块和 python-pptx 模块来编写一个程序,用于生成包含首页、内容页和感谢页的 PPTX 文档,感兴趣的小伙伴可以学习一下
    2023-08-08
  • python imread读取文件失败的问题及解决

    python imread读取文件失败的问题及解决

    这篇文章主要介绍了python imread读取文件失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python 使用Yolact训练自己的数据集

    python 使用Yolact训练自己的数据集

    这篇文章主要介绍了python 使用Yolact训练自己的数据集,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python使用Flask框架获取当前查询参数的方法

    Python使用Flask框架获取当前查询参数的方法

    这篇文章主要介绍了Python使用Flask框架获取当前查询参数的方法,实例分析了query_string获取查询参数的技巧,需要的朋友可以参考下
    2015-03-03
  • python将写好的程序打包成exe可执行文件

    python将写好的程序打包成exe可执行文件

    这篇文章主要介绍了python写好的程序打包成exe可执行文件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python代码实现烟花实例

    python代码实现烟花实例

    这篇文章主要给大家分享了python烟花详细的代码,文章主要以python烟花的代码展开全文,所以解说会比较少,代码较多。喜欢的小伙伴可以参考一下,希望对你有所帮助
    2021-12-12
  • python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法

    python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法

    今天小编就为大家分享一篇python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python如何为图片添加水印

    Python如何为图片添加水印

    这篇文章主要介绍了Python如何使用Python-Pillow库给图片添加水印的方法,非常的简单实用,有需要的小伙伴可以参考下
    2016-11-11

最新评论