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之集成开发环境(IDE)
Sep 12 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
python代码编写计算器小程序
Mar 30 Python
Python适配器模式代码实现解析
Aug 02 Python
pytorch masked_fill报错的解决
Feb 18 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
如何卸载python插件
Jul 08 Python
PO模式在selenium自动化测试框架的优势
Mar 20 Python
OpenCV-Python实现人脸磨皮算法
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
You might like
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
javascript下function声明一些小结
2007/12/28 Javascript
javascript 闭包
2011/09/15 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Python复制目录结构脚本代码分享
2015/03/06 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
python读取各种文件数据方法解析
2018/12/29 Python
Python Pillow Image Invert
2019/01/22 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
总务岗位职责
2013/11/19 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
高中军训感言1000字
2014/03/01 职场文书
党支部承诺书范文
2014/03/28 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
欠条样本
2015/07/03 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers