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代码制作configure文件示例
Jul 28 Python
Python yield 使用浅析
May 28 Python
Python中django学习心得
Dec 06 Python
opencv python 图像去噪的实现方法
Aug 31 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
python中函数返回多个结果的实例方法
Dec 16 Python
python绘制雷达图实例讲解
Jan 03 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
PHP中extract()函数的妙用分析
2012/07/11 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
AJAX在JQuery中的应用详解
2019/01/30 jQuery
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Django开发的简易留言板案例详解
2018/12/04 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
python——全排列数的生成方式
2020/02/26 Python
Python新手学习装饰器
2020/06/04 Python
python如何编写win程序
2020/06/08 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
新闻记者实习自我鉴定
2013/09/19 职场文书
五年级数学教学反思
2014/02/11 职场文书
绿色出行口号
2014/06/18 职场文书
授权委托书样本
2014/09/25 职场文书
党支部先进事迹材料
2014/12/24 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript