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


Posted in Python onJune 07, 2021

直方图均衡化

直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了人类视觉系统上(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()

运行之后,效果如下:

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

左边为原图,右边是处理后的图像,可以看到图像前景的雾,基本已经去掉了。不过,我们还是看看处理前后的直方图结果分布。

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

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

实现彩色图像去雾

虽然上面的灰度图像达到了去雾的基本效果,但是说实话,大多数实际的场景中,我们用到最多的往往是彩色图像。所以,掌握彩色图像的直方图均衡化处理,才是我们真正的实战技能。

下面我们来用代码实现彩色图像直方图均衡化处理,代码如下:

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-Python 图像去雾内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现批量修改文件名代码
Sep 10 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
django-rest-swagger的优化使用方法
Aug 29 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
python 并发下载器实现方法示例
Nov 22 Python
Python hashlib模块实例使用详解
Dec 24 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
python suds访问webservice服务实现
Jun 26 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python利用capstone实现反汇编
Apr 06 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
discuz的php防止sql注入函数
2011/01/17 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
node.js基础知识汇总
2020/08/25 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python 域名分析工具实现代码
2009/07/15 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python 装饰器深入理解
2017/03/16 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python 多维List创建的问题小结
2019/01/18 Python
关于Python-faker的函数效果一览
2019/11/28 Python
简单介绍django提供的加密算法
2019/12/18 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
《美丽的小路》教学反思
2014/02/26 职场文书
顶岗实习计划书
2015/01/16 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
python Polars库的使用简介
2021/04/21 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python