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中关于中文编码问题的处理建议
Apr 08 Python
Python随机读取文件实现实例
May 25 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
Python实现简单http服务器
Apr 12 Python
python解析json串与正则匹配对比方法
Dec 20 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
django用户登录验证的完整示例代码
Jul 21 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python中提高pip install速度
Feb 14 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
PHP开发框架总结收藏
2008/04/24 PHP
服务器web工具 php环境下
2010/12/29 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
Angular模板表单校验方法详解
2017/08/11 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python怎么对数字进行过滤
2020/07/05 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
浅析python函数式编程
2020/09/26 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
经贸日语专业个人求职信
2013/12/13 职场文书
党员个人剖析材料
2014/09/30 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
公司岗位说明书
2015/10/08 职场文书