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 matplotlib画图实例代码分享
Dec 27 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
Python实现微信机器人的方法
Sep 06 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
python爬虫实例之获取动漫截图
May 31 Python
详解python 内存优化
Aug 17 Python
python使用shell脚本创建kafka连接器
Apr 29 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
牡丹941资料
2021/03/01 无线电
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
Vuex 入门教程
2018/01/10 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
python实现实时监控文件的方法
2016/08/26 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
django将数组传递给前台模板的方法
2019/08/06 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
医院检讨书范文
2014/02/01 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
对照检查剖析材料
2014/09/30 职场文书
公务员政审材料范文
2014/12/23 职场文书
瘦西湖导游词
2015/02/03 职场文书
高一军训决心书
2015/02/05 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js