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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
Python连接DB2数据库
Aug 27 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
python实现百度语音识别api
Apr 10 Python
python2.7实现邮件发送功能
Dec 12 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
python三引号如何输入
Jul 06 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
Python机器学习之PCA降维算法详解
May 19 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python命令行解析模块详解
2018/02/01 Python
Python登录系统界面实现详解
2019/06/25 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python缓存技术实现过程详解
2019/09/25 Python
python GUI模拟实现计算器
2020/06/22 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
门诊挂号室室长岗位职责
2013/11/27 职场文书
药店促销活动策划方案
2014/08/24 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
Python 中的Sympy详细使用
2021/08/07 Python