位置: IT常识 - 正文

Python 计算机视觉(八)—— OpenCV 进行图像增强

编辑:rootadmin
Python 计算机视觉(八)—— OpenCV 进行图像增强

推荐整理分享Python 计算机视觉(八)—— OpenCV 进行图像增强,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

参考的一些文章以及论文我都会给大家分享出来 —— 文章链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了。大家一起学习,一起进步!加油!!

目录

1. 图像增强

(1)基本概念

(2)空间域

(3)变换域

2. 直方图均衡化

(1)基本概念

图像直方图

直方图均衡化

(2)直方图均衡化实现

获取原图信息

 绘制直方图

直方图均衡化

3. 局部直方图均衡化

(1)基本概念

(2)代码实现

4. 图像去雾

(1)基本概念

(2)实现

结束语

参考论文

(1)《直方图均衡化在图像处理中的应用_任艳斐》

​(2)《基于直方图均衡的图像增强_李耀辉》


1. 图像增强

此处参考论文:《直方图均衡化在图像处理中的应用_任斐艳》

(1)基本概念

        图像增强是图像处理的最基本手段, 它往住是各种图像分析与处理时的预处理过程。图像增强就是增强图像中用户感兴趣的信息, 其主要目的有两个: 一是改善图像的视觉效果, 提高图像成分的清晰度; 二是使图像变得更有利于计算机处理。图像增强方法一般分为空间域和变换域两大类

(2)空间域

        空间域方法直接对图像像素的灰度进行处理。在空间域内对图像进行点运算, 它是一种既简单又重要的图像处理技术, 它能让用户改变图像上像素点的灰度值, 这样通过点运算处理将产生一幅新图像

(3)变换域

        变换域方法是指在图像的某个变换域中对变换系数进行处理, 然后通过逆变换获得增强图像。对于这个变换域的理解,可以了解一下信号的傅里叶变换,将信号转化到频域内进行观察分析

2. 直方图均衡化(1)基本概念图像直方图

此处可以参考我之前的文章:Python 计算机视觉(七)—— OpevCV进行直方图统计

       简单来说,直方图描述了图像像素点中某一个灰度值出现的概率,一幅图像的直方图是确定不变的,但不同的两幅图像的直方图可能相同

直方图均衡化

此处参考:《基于直方图均衡的图像增强_李耀辉》

       图像直方图反映了不同灰度值的像素的面积 (连续图像)或像素个数 (离散图像)在一帧中的比例,反映了图像的某些信息,直方图均衡就是把一幅已知灰度概率分布的图像经过一种变换使之变成具有均匀概率分布的图像从而使信息嫡达到最大,(简单来说就是将图像的灰度图变得近似均匀分布,让其各种灰度级的像素点分布较为均匀)

(2)直方图均衡化实现获取原图信息

      首先第一步永远是经典的读取图像信息:

"""Author:XiaoMadate:2021/10/25"""import cv2import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei' # matplotlib 绘图库正常使用中文黑体#读取图像信息img0 = cv2.imread('E:\From Zhihu\For the desk\cveight1.jpg')img1 = cv2.resize(img0, dsize = None, fx = 0.5, fy = 0.5)h, w = img1.shape[:2]print(h, w)img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)cv2.namedWindow("W0")cv2.imshow("W0", img1)cv2.waitKey(delay = 0)

获得图像信息:

540 540

       得到的原图如上,显得不是很清晰,就像蒙了一层雾一样,所以我们要对其进行图像增强,让它变得清晰一点,让我们能更好的欣赏美女 

 绘制直方图

这个在前面的文章中已经介绍过了:

#绘制直方图hist0 = cv2.calcHist([img2], [0], None, [256], [0, 255])plt.plot(hist0, label = "灰度图直方图", linestyle = "--", color = 'g')plt.legend() #增加图例plt.savefig("E:\From Zhihu\For the desk\cveight0.jpg") #保存直方图plt.show()

得到的直方图如下:

       可以看出来这幅图的像素点很少有那种亮度特别高的,大多数分布在灰度级数较低和中等的灰度级别处 ,所以这副图像整体色调是较为暗沉的(这里是对灰度图画的直方图,并不是原图哈)

直方图均衡化

直方图均衡化使用的函数是:cv2.equalizeHist()

OpenCV官网给出的解释:OpenCV has a function to do this(this 代表直方图均衡化), cv2.equalizeHist() . Its input is just grayscale image and output is our histogram equalized image.

该函数输入一幅灰度图像,输出即为经过直方图均衡化后的图像 

我们使用该函数进行直方图的均衡化: 

img3 = cv2.equalizeHist(img2) #直方图均衡化cv2.namedWindow("W1")cv2.imshow("W1", img3)cv2.waitKey(delay = 0)

不管效果如何,我们先把结果放出来:

可以看出来图片的效果并没有增强,好像变得更差了

再把它的直方图画出来,和原灰度图的直方图进行对比

代码都在上一篇文章中解释过了,有不懂的地方可以去上一篇查或者评论区大家讨论也行

#绘制均衡化后的直方图#绘制直方图hist0 = cv2.calcHist([img2], [0], None, [256], [0, 255])hist1 = cv2.calcHist([img3], [0], None, [256], [0, 255])plt.subplot(2,1,1)plt.plot(hist0, label = "灰度图直方图", linestyle = "--", color = 'g')plt.legend()plt.subplot(2,1,2)plt.plot(hist1, label = "均衡化后的直方图", linestyle = "--", color = 'r')plt.legend()plt.savefig("E:\From Zhihu\For the desk\cveight0.jpg")plt.show()Python 计算机视觉(八)—— OpenCV 进行图像增强

可以看出来均衡的效果还是有的,只是对于这副图像来说直方图均衡化的图像增强效果不太明显

多换几幅图试一下(W0是原灰度图,W1是直方图均衡化后的灰度图):

      将上面的四幅图进行对比可得,第三幅图和第四幅图的直方图均衡化后的增强效果优于前两幅图,这是为什么呢?

       通过对比我们可以看出,前两幅图的模糊形式和后两幅图并不相同,前两幅图中有些区域亮度较高,有些区域亮度较暗,经过直方图均衡化后会出现一些高亮的部分,导致效果较差, 而很明显使用全局的直方图均衡化进行图像增强更适合使用在后面的那两种情况中

此处我们果断抛弃美女,拿一张带有大雾的美景照片试一下:

总体来说效果还是挺好的,下面看直方图对比:

       直方图均衡化效果也还好(以上的所有更换图片进行尝试只是在读取图片时改变路径,并没有改变其他的代码) 

3. 局部直方图均衡化(1)基本概念

       前文中提到,对于那种有些部分出现高亮,而有些部分较暗的灰度图,如果我们仅仅使用全局的直方图均衡化,会使得某些信息丢失,显示的不清晰

       于是就有了局部直方图均衡化,图像被分成称为“tiles”的小块(在 OpenCV 中,tileSize 默认为 8x8)。然后像往常一样对这些块中的每一个进行直方图均衡。所以在一个小图像部分中,直方图会限制在一个小区域内

此处参考:OpenCV 官网

(2)代码实现#对图像进行局部直方图均衡化clahe = cv2.createCLAHE (clipLimit = 2.0, tileGridSize=(10, 10)) #对图像进行分割,10*10img4 = clahe.apply(img2) #进行直方图均衡化cv2.namedWindow("W2")cv2.imshow("W2", img4)cv2.waitKey(delay = 0)

上图中 W0 为原图,W1 为全局直方图均衡化,W2 为局部直方图均衡化

可以看出对于这幅亮度分布很不均匀的图像,使用局部直方图均衡化进行图像增强的效果优于全局直方图均衡化

绘制出均衡化后的直方图:

#绘制局部均衡化后的直方图hist2 = cv2.calcHist([img4], [0], None, [256], [0, 255])plt.plot(hist2, label = "局部直方图均衡化", color = 'b', linestyle = '--')plt.legend()plt.savefig("E:\From Zhihu\For the desk\cveight_1.jpg")plt.show()

与前面的全局直方图均衡化对比:

       最明显的变化就是某一些像素点数比较少的亮度级别消失了,而且图像直方图的变化也没有那么突兀了,图像也就更加清晰了 

4. 图像去雾(1)基本概念

此处摘自:知乎文章

       在雾霾影响下,视频监控,远程感应,自动驾驶等许多实际应用很容易受到威胁,检测和识别等高级计算机视觉任务很难完成。因此,图像去雾成为一种越来越重要的技术,有很重要的研究价值,同时也是一项充满挑战性的课题。

        图像去雾的研究算法有很多,但是主要分为两类:基于图像增强的去雾算法和基于图像复原的去雾算法。

       基于图像增强的去雾算法:基于图像增强的去雾算法出发点是尽量去除图像噪声,提高图像对比度,从而恢复出无雾清晰图像。代表性方法有:直方图均衡化(HLE)、自适应直方图均衡化(AHE)、限制对比度自适应直方图均衡化(CLAHE)、Retinex算法、小波变换、同态滤波等

       基于图像复原的去雾算法:这一系列方法基本是基于大气退化模型,进行响应的去雾处理。代表性算法有来自何凯明博士的暗通道去雾算法、基于导向滤波的暗通道去雾算法、Fattal的单幅图像去雾算法(Single image dehazing)、Tan的单一图像去雾算法(Visibility in bad weather from a single image)、Tarel的快速图像恢复算法(Fast visibility restoration from a single color or gray level image)、贝叶斯去雾算法(Single image defogging by multiscale depth fusion),基于大气退化模型的去雾效果普遍好于基于图像增强的去雾算法,后面挑选的传统去雾算法例子也大多是基于图像复原的去雾算法

(2)实现

       本文主要介绍的基于图像增强的图像去雾,在此使用直方图均衡化和局部直方图均衡化进行图像的去雾处理

"""Author:XiaoMadate:2021/10/25"""import cv2import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei' # matplotlib 绘图库正常使用中文黑体#读取图像信息img0 = cv2.imread('E:\From Zhihu\For the desk\cveight6.jpg')img1 = cv2.resize(img0, dsize = None, fx = 0.6, fy = 0.6)img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)h, w = img1.shape[:2]print(h, w)cv2.namedWindow("W0")cv2.imshow("W0", img2)cv2.waitKey(delay = 0)#直方图均衡化img3 = cv2.equalizeHist(img2)cv2.namedWindow("W1")cv2.imshow("W1", img3)cv2.waitKey(delay = 0)#对图像进行局部直方图均衡化clahe = cv2.createCLAHE (clipLimit = 2.0, tileGridSize=(10, 10))img4 = clahe.apply(img2)cv2.namedWindow("W2")cv2.imshow("W2", img4)cv2.waitKey(delay = 0)hist2 = cv2.calcHist([img4], [0], None, [256], [0, 255])plt.plot(hist2, label = "局部直方图均衡化", color = 'b', linestyle = '--')plt.legend()plt.savefig("E:\From Zhihu\For the desk\cveight_1.jpg")plt.show()

得到图像如下:(W0 为原图,W1 为全局直方图均衡化,W2 为局部直方图均衡化)

 可以看出直方图均衡化的图像去雾效果还是可以的

结束语

       本篇文章主要介绍了一些图像增强中常用的手段,包括直方图均衡化、局部直方图均衡化、图像的去雾处理等,使用到的参考资料我都粘贴在了原文中,如果想深入学习了解可以点进去进行查看,加油!

参考论文

      看了一下上传的参考论文,好像只有会员才能下载,我把主要部分截屏粘贴在这里吧,大家一起学习,一起进步

(1)《直方图均衡化在图像处理中的应用_任艳斐》

(2)《基于直方图均衡的图像增强_李耀辉》

本文链接地址:https://www.jiuchutong.com/zhishi/297733.html 转载请保留说明!

上一篇:元素垂直居中的五种方式(元素垂直水平居中方式)

下一篇:HTML侧边导航栏(html导航栏边框)

  • 三星电视苹果手机怎么投屏(三星电视苹果手机屏幕镜像搜不到)

    三星电视苹果手机怎么投屏(三星电视苹果手机屏幕镜像搜不到)

  • 零钱通明细能删除吗(零钱通明细删除了还能查询吗)

    零钱通明细能删除吗(零钱通明细删除了还能查询吗)

  • 华为p40pro电池容量是多大(华为p40pro电池容量多少wh)

    华为p40pro电池容量是多大(华为p40pro电池容量多少wh)

  • 华为手机密码怎么设置6位数(华为手机密码怎么改成4位数)

    华为手机密码怎么设置6位数(华为手机密码怎么改成4位数)

  • 苹果13.4.1悬浮球在哪设置(ios悬浮球怎么设置 13.3)

    苹果13.4.1悬浮球在哪设置(ios悬浮球怎么设置 13.3)

  • 海外版抖音刷不出内容(海外版抖音刷不了视频)

    海外版抖音刷不出内容(海外版抖音刷不了视频)

  • 微信怎么不让别人拉我进群(微信怎么不让别人加我为好友)

    微信怎么不让别人拉我进群(微信怎么不让别人加我为好友)

  • mate20x和mate20pro区别

    mate20x和mate20pro区别

  • 什么是id机(id 机)

    什么是id机(id 机)

  • i3 1005g1性能怎么样?(i31005g1怎么样)

    i3 1005g1性能怎么样?(i31005g1怎么样)

  • 浏览器视频缓存文件在哪(edge浏览器视频缓存)

    浏览器视频缓存文件在哪(edge浏览器视频缓存)

  • 微信相机美颜设置方法是什么(微信相机美颜设置方法)

    微信相机美颜设置方法是什么(微信相机美颜设置方法)

  • 拼多多砍价必须是微信好友吗(拼多多砍价必须购买砍价商品吗)

    拼多多砍价必须是微信好友吗(拼多多砍价必须购买砍价商品吗)

  • 手机飞行模式可以收到信息吗(手机飞行模式可以收到短信吗)

    手机飞行模式可以收到信息吗(手机飞行模式可以收到短信吗)

  • 抖音小店提现多久到账(抖音小店提现多少天)

    抖音小店提现多久到账(抖音小店提现多少天)

  • 微信人脸验证为什么老是不通过(微信人脸验证为什么不通过)

    微信人脸验证为什么老是不通过(微信人脸验证为什么不通过)

  • 拼多多查看分享3次什么意思(拼多多查看分享的商品)

    拼多多查看分享3次什么意思(拼多多查看分享的商品)

  • 群活跃度怎么提升?(个人群活跃度怎么提升?)

    群活跃度怎么提升?(个人群活跃度怎么提升?)

  • 苹果手机不亮屏怎么办(苹果手机不亮屏怎么关机)

    苹果手机不亮屏怎么办(苹果手机不亮屏怎么关机)

  • ipad wifi版可以用热点吗(ipad wifi版可以用手机号注册账号吗)

    ipad wifi版可以用热点吗(ipad wifi版可以用手机号注册账号吗)

  • word不显示表格框线(word不显示表格线)

    word不显示表格框线(word不显示表格线)

  • vivos5怎么开启单手模式(vivos5单手操作)

    vivos5怎么开启单手模式(vivos5单手操作)

  • vivo手机sos怎么设置(vivo手机sos紧急呼叫怎么设置)

    vivo手机sos怎么设置(vivo手机sos紧急呼叫怎么设置)

  • 腾讯充值账号弄错(腾讯充值账号什么意思)

    腾讯充值账号弄错(腾讯充值账号什么意思)

  • Mac怎么自定义快捷键打开控制中心?Mac自定义快捷键打开控制中心(mac怎么设置快捷图标)

    Mac怎么自定义快捷键打开控制中心?Mac自定义快捷键打开控制中心(mac怎么设置快捷图标)

  • 【NLP相关】AI绘画api集合(nlp图)

    【NLP相关】AI绘画api集合(nlp图)

  • css 100vw、100vh出现滚动条怎么解决

    css 100vw、100vh出现滚动条怎么解决

  • 外贸出口增值税怎么申报
  • 机械设备关税税率多少
  • 费用会计具体工作总结
  • 每天现金日记账登记完以后应怎么对账
  • 试驾车抵税
  • 进项税留底是什么意思
  • 企业有美金收入吗
  • 长期借款利息按月计提按季支付
  • 最新土地增值税筹划
  • 海关年检需要什么资料
  • 仓库间的调拨流程
  • 固定资产的残值怎么算出来的
  • 搬运费没有发票能入成本吗?
  • 公司向股东借款需要股东会决议吗
  • 职工福利费和职工薪酬的区别
  • windows11怎么设置壁纸
  • 对公转账先打钱后转账
  • 公司车辆违章怎么办
  • 虚增利润
  • 企事业承包承租经营所得税税法
  • 苹果系统权限管理在哪找
  • 不起眼的暴利小生意农村
  • PHP:mb_convert_case()的用法_mbstring函数
  • linux mib
  • 增值税征税范围中的货物包括
  • 几款常用的表单设计软件
  • framework怎么用
  • 善意取得虚开增值税专用发票处理
  • 红字增值税发票怎么开具图解
  • 增值税专用发票怎么开
  • 将织梦dedecms转换到wordpress
  • imu模型
  • 帝国cms到底好不好
  • 农民工工资专用账户打款比例
  • 小规模普通发票几个点的税
  • 工商登记备案在哪查
  • python condition条件变量
  • access宏操作
  • 增量留底退税怎么比增值税高
  • 独资企业和公司区别
  • 企业所得税怎么算
  • 合伙企业年终分红会计分录
  • 行业协会是怎么赚钱的
  • 所得税弥补以前年度亏损是几年
  • 主营业务收入主要反映企业销售商品或劳务获得的收入
  • 写字楼里的公司怎么赚钱
  • 电子发票报销后退款
  • 公司配股对股价的影响
  • 支付补偿款计入什么会计科目
  • 公司购入的房子卖了,如何交增值税
  • 科目汇总表账务处理程序登记总账的依据是
  • 收入的利息如何计算
  • 技术合同免税备案税务局
  • 国企背书是什么意思
  • 利润为负还要交增值税吗
  • 应付利息属于经营性负债吗
  • mysql清空表内容
  • qttask.exe是什么进程?qttask.exe是不是病毒?
  • groove音乐怎么添加本地音乐
  • 360win7
  • macos如何新建文件
  • cpqdfwag.exe是什么进程 能结束吗 cpqdfwag进程查询
  • 三种方法完美解决问题
  • win8初始登录账号密码
  • opengl顶点坐标纹理坐标关系
  • linux查看so中的函数
  • linux安装oracle数据库步骤
  • iframe的替代方案
  • 修改bash_profile
  • python sha256加密解密
  • jquery console.log
  • android 自定义linearlayout 宽度计算不对
  • js 引用类型
  • 自己搭配电脑
  • 石油类资源税税率是多少
  • 小微企业不交所得税
  • 深圳沙井社保局在哪个位置
  • 养猪场环保税
  • 在烟台如何发布招聘信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设