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和C语言混合编程实例
Jun 04 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python如何定义带参数的装饰器
Mar 20 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
详解Python字典的操作
Mar 04 Python
python实现邮件发送功能
Aug 10 Python
python3获取url文件大小示例代码
Sep 18 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Pytorch模型转onnx模型实例
Jan 15 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python多线程编程(一):threading模块综述
2015/04/05 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Django多个app urls配置代码实例
2020/11/26 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
索桥的故事教学反思
2014/02/06 职场文书
英文求职信写作小建议
2014/02/16 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
长城导游词300字
2015/01/30 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang