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中定义结构体的方法
Mar 04 Python
python实现的解析crontab配置文件代码
Jun 30 Python
Python实现从订阅源下载图片的方法
Mar 11 Python
Python正则表达式常用函数总结
Jun 24 Python
详解Python with/as使用说明
Dec 13 Python
Python 监测文件是否更新的方法
Jun 10 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
python 正则表达式参数替换实例详解
Jan 17 Python
如何在django中添加日志功能
Feb 06 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
一个php作的文本留言本的例子(三)
2006/10/09 PHP
我的论坛源代码(五)
2006/10/09 PHP
再次研究下cache_lite
2007/02/14 PHP
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
FCK调用方法..
2006/12/21 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
python文件操作相关知识点总结整理
2016/02/22 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python正规则表达式学习指南
2016/08/02 Python
python模块之paramiko实例代码
2018/01/31 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python爬取成语接龙类网站
2018/10/19 Python
django模板结构优化的方法
2019/02/28 Python
python3中sys.argv的实例用法
2020/04/24 Python
简述 Python 的类和对象
2020/08/21 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
后勤岗位职责
2013/11/26 职场文书
给小学生的新年寄语
2014/04/04 职场文书
质量承诺书怎么写
2014/05/24 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python