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抓取京东价格分析京东商品价格走势
Jan 09 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
Python实现的归并排序算法示例
Nov 21 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
python使用tornado实现简单爬虫
Jul 28 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python生成xml时规定dtd实例方法
Sep 21 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python RSA加密的示例
Dec 09 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
js自定义回调函数
2015/12/13 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
python进阶教程之文本文件的读取和写入
2014/08/29 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
租房协议书范文
2014/08/20 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2015年防汛工作总结
2015/05/15 职场文书
法定授权委托证明书
2015/06/18 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android