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机器学习库常用汇总
Nov 15 Python
pandas中Timestamp类用法详解
Dec 11 Python
Php多进程实现代码
May 07 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
Jun 11 Python
Python实现注册、登录小程序功能
Sep 21 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
使用 Python 遍历目录树的方法
Feb 29 Python
keras实现多种分类网络的方式
Jun 11 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
php mysql数据库操作类
2008/06/04 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
详解ES6中的let命令
2020/04/05 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
Python的语言类型(详解)
2017/06/24 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
自学python用什么系统好
2020/06/23 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
StubHub德国:购买和出售门票
2017/09/06 全球购物
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
火山动力Java笔试题
2014/06/26 面试题
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
敬老院活动感想
2015/08/07 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Python连续赋值需要注意的一些问题
2021/06/03 Python
python opencv旋转图片的使用方法
2021/06/04 Python