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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
python中list常用操作实例详解
Jun 03 Python
python清除指定目录内所有文件中script的方法
Jun 30 Python
Django中的forms组件实例详解
Nov 08 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
Python基于内置函数type创建新类型
Oct 22 Python
基于PyTorch中view的用法说明
Mar 03 Python
python基础之爬虫入门
May 10 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
JS实现购物车特效
2017/02/02 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
决策树的python实现方法
2014/11/18 Python
python 调用HBase的简单实例
2016/12/18 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
服务承诺口号
2014/05/22 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
整改报告怎么写
2014/11/06 职场文书
校运会新闻稿
2015/07/17 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript