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监控网站运行异常并发送邮件的方法
Mar 13 Python
Python中type的构造函数参数含义说明
Jun 21 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
利用Python求阴影部分的面积实例代码
Dec 05 Python
python文件写入write()的操作
May 14 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python3实现弹弹球小游戏
Nov 25 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
Django框架之路由用法
Jun 10 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP实现货币换算的方法
2014/11/29 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
python为什么要安装到c盘
2020/07/20 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
python常量折叠基础知识点讲解
2021/02/28 Python
类的返射机制中的包及核心类
2016/09/12 面试题
中等生评语大全
2014/05/04 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
考试作弊检讨书
2014/10/21 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
篮球拉拉队口号
2015/12/25 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python