基于MATLAB的图像去雾GUI系统(集成4种去雾算法)
00 目录
应用背景
去雾算法理论
MATLAB程序实现
源码获取
01 应用背景
由于大气中存在灰尘、烟雾、薄雾和其他漂浮颗粒物,因此大气中拍摄的图像通常会出现颜色失真、模糊、对比度低等问题,而模糊图像的输入将使后续高级视觉处理如分类、跟踪、人员再识别和目标检测等任务难以实现。因此图像去雾的目的是从被输入带雾图像中复原出无雾的图像,为高级视觉任务提供可靠数据。
现有的图像去雾算法主要可以分为以下 3类:
(1)基于图像增强的去雾算法。根据图像的灰度分布,通过拉伸补偿对比度、亮度、色彩饱和度等突出图像的细节信息,提升图像的视觉观感,常用方法包括直方图均衡化、小波变 换以及基于Retinex理论的算法等
(2)基于图像复原的去雾算法。可以分为两类,一类是基于先验统计信息,通过统计高低质量图像的亮度等信息,复原出高质量的无雾图像。另一类是基于物理模型,研究相机成像过程中的大气扰动的影响,分析雾霾等引起图像质量下降的原因,构建相应的数学模型,以观测到的雾霾图像为输入,通过估算透射率等未知参数,反演计算复原出无雾图像。
(3)基于深度学习的去雾算法。近年来随着人工智能的发展,越来越多的研究人员使用深度学习的方法实现图像去雾,主要分为端对端和非端对端的网络模型。
本文主要用了前两类方法,即全局直方图均衡化、局部直方图均衡化,Retinex算法以及暗通道先验算法,第三类方法正在开发中,开发完成后将加进现有系统中。
02 去雾算法理论
2.1直方图均衡化算法
直方图是一种基于统计意义上的分布图,它统计的是一幅图像中不同灰度级出现的概率。假设用N 来表示图像 f(x,y)的像素个数,rk 表示第 k 个灰度级所对应的灰度值,L 表示灰度级的个数,nk 表示灰度级为 k 的像素个数, 那么直方图则可以定义为:
P(rk)=nk/N,k=0,1,2,…,L-1
所谓直方图均衡化,就是将原始图像集中分布的直方图通过算法使之均匀分布。 均衡化的直方图,各像素之间灰度值差别的动态范围增加了,从而使图像的整体对比度得到提高。 在 MATLAB 中可以使用imhist( )函数来计算灰度图像的直方图。
直方图均衡化处理技术可以分为全局直方图均衡化处理和局部直方图均衡化处理。全局直方图是对整个图像都采用同一种变换方法的处理方式,它对处理的数据不加选择,这样可能会降低有用信号的对比度并且增强背景干扰信息的对比度;另外,图像均衡化后灰度级减少,某些细节将会随之消失,导致处理效果并不理想。 局部直方图则是将退化图像根据像素点或灰度值等因素划分成若干子块,再分别对这些块状区域进行均衡化处理。
2.2Retinex算法
Retinex 算法是一种常用的、 以人类视觉系统为出发点的图像增强算法,是以视网膜大脑皮层理论为基础。 Retinex 理论认为,物体的颜色是由物体对红、绿、蓝三种光线的反射能力决定的,而不是由反射光的强度的绝对值和光照的非均匀性来决定的。 若把原始图像 S(x,y)分解成入射图像 L(x,y)和反射图像 R(x,y)两个图像,则
S(x,y)=L(x,y)·R(x,y)
最简单和基础的 Retinex 算法就是单尺度的Retinex 算法(SSR),其原理如下:
首先用取对数的方法将光线中的入射光和反射光两种分量进行分离,将能反映图像细节信息的反射分量保留下来,即
lnR(x,y)=lnS(x,y)-lnL(x,y)
再用高斯模板对原始图像作卷积,即对原始图像作低通滤波,从而得到低通滤波函数 D(x,y),用 F(x,y)来表示高斯滤波函数,则
D(x,y)=S(x,y)·F(x,y)
第三步,将原始图像用取对数的方法,减掉上一步作低通滤波后的图像,就得到高频增强的图像G(x,y),即
G(x,y)=lnS(x,y)-lnD(x,y)
最后,取 G(x,y)的反对数,就得到了对原始退化图像进行增强后的图像 R(x,y),即
R(x,y)=expG(x,y)
Retinex 算法实际是通过原始图像 S 得到物体的反射性质 R,就是通过去除入射光线 L 对图像质量的影响,从而尽可能恢复到图像中物体原本的面目。 如何来估算 R,这并没有一个准确的标准,所以对 R 不同的估算, 就产生了不同的 Retinex 算法。其中多尺度 Retinex 算法是(MSR) 就是基于 SSR的一种比较重要且流行的算法。 MSR 算法改进了SSR 算法尺度单一、不能兼顾动态范围压缩和色彩保真性的不足, 其原理是对多个不同尺度的 SSR算法结果进行加权平均,即
上式中,i∈R,G,B 三个颜色通道,ωk 表示权重因子,k 表示使用的尺度个数,k=3 表示彩色图像,此时 i=3(红、绿、蓝三个通道);k=1 时,表示图像是灰度图像,此时 i=1(只有一个颜色通道)。
2.3 暗通道先验算法
暗通道先验算法是一种典型的图像复原算法,是根据大气散射原理构建图像的退化模型,以此来进行去雾化处理。雾霾天气下的视频图像可以用气散射模型来表示:
I(x)=J(x)t(x)+A(1-t(x))
其中,I(x)指的是我们所看到的雾霾天气下的图像的亮度,这个是已知的,J(x)是去雾处理后的图像,也就是我们所要达到的目标,t(x)表示的是介质的透射率,A 则是全球大气光成分。 暗通道先验算法是基于统计意义的算法,即在大部分户外无雾图像的无天空区域,像素中至少有一个颜色通道存在非常低的亮度值,几乎接近于 0,这个通道就是暗通道。 即
在上式中,JC(y)表示的是彩色图像 J 的三个通道(R,G,B)中的任意一个通道,Ω(x)表示的是以像素 x 为中心的一个窗口,由此可以看出,获取暗通道就是获取一个窗口内所有像素的各个通道的最小值。那么,假设大气光成分值 A 是一个已知的值,另外,引入一个在[0,1]之间的参数 ω,使得在去雾图像中保留一定的雾,以免图像失真,这样可得到初始透射率,t (x)的公式:
在实际应用中,A 的值可以借助于暗通道图从有雾的图像中获得。 另外可以再加入一个阈值 t0,它可以防止透射率过小从而导致 J 值偏大,使图像整体偏白。 因此,最终的图像去雾公式是:
03 MATLAB程序实现
本文基于MATLAB的GUIDE工具,设计出了图像去雾系统
主菜单可以对图像进行保存,去雾算法共4种选择,全局直方图均衡化、局部直方图均衡化、Retinex、暗通道先验去雾算法。在效果里可以调出去雾前后的直方图对比图。
源码目录:
04 源码获取
https://mbd.pub/o/bread/ZJeVm59u
基于MATLAB的图像去雾GUI系统(集成4种去雾算法)相关推荐
- 基于MATLAB的图像去雾系统
基于MATLAB的图像去雾系统 (一)图像去雾基础原理 1.雾霭的形成机理 雾实际上是由悬浮颗粒在大气中的微小液滴构成的气溶胶,常呈现乳白色,其底部位于地球表面,所以也可以看作是接近地面的云.霭其实跟 ...
- 03系统多界面_基于MATLAB的多方法车牌识别系统[带GUI界面+万字技术文档+直播]
一.课题介绍 随着汽车数量的增加,城市交通状况日益受到人们的重视,如何进行有效的交通管理更是成为了人们关注的焦点.智能交通系统通过车辆检测装置对过往的车辆实施检测,提取有关交通数据,达到监控.管理和指 ...
- matlab 图像模板匹配,基于MATLAB模板匹配的车牌识别系统
一.课题名称[Q1321814823] 基于MATLAB模板匹配的车牌识别系统 二.课题背景 随着汽车数量的增加,城市交通状况日益受到人们的重视,如何进行有效的交通管理更是成为了人们关注的焦点.针对此 ...
- 【点击百度快照】基于MATLAB的运动车辆跟踪检测系统(GUI,视频读取)
一.课题介绍* 本设计为基于MATLAB的运动车辆跟踪检测系统.带有一个GUI界面,可以读取高速路车流视频,读取视频信息,并且统计每辆车经过左车道还是右车道,车速和平均速度检测,以及某一帧下的车流密度 ...
- 基于MATLAB人脸面部检测的口罩识别系统
基于MATLAB人脸面部检测的口罩识别系统 课题意义 作为数字图像处理和计算机视觉领域的一个重要组成部分,利用摄像机对图像进行采集,从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价 ...
- 基于MATLAB的图像融合设计
基于MATLAB的图像融合设计 摘 要 图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准.并且采用一定的算法将不同类型的传感器获取的同一对象的图像数据所含用的信息优势或互补性有机地结合 ...
- 基于matlab的图像形状与分类毕业设计(含源文)
基于matlab的图像形状与分类 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务 ...
- matlab创新开放性实验,基于MATLAB 的自动控制原理实验仿真系统的设计
基于MATLAB 的自动控制原理实验仿真系统的设计 基于MATLAB 的自动控制原理实验仿真系统的设计 田晴,张茁 (河北联合大学电气工程学院,河北唐山063000) 摘要:MATLAB的图形用户界面 ...
- 基于MATLAB图像处理的硬币个数识别系统
基于MATLAB图像处理的硬币个数识别系统 1.课题介绍 本设计为基于MATLAB的硬币图像识别统计装置,通过数码相机获取平铺无重叠堆积的硬币的图像,并通过Matlab工具处理后统计硬币的数目.通过控 ...
- 基于Matlab 与ADAMS联合的机器人系统仿真分析
机器人优化设计与仿真分析专题 机器人建模基础 4月23日 (9:00-12:00) 机器人运动学基础 几何运动学闭环解解析法建模 运动学MATLAB脚本文件编写(封闭解.构型绘制) 串联机器人MATL ...
最新文章
- php5.3中的safe_mod与magic_quotes_gpc
- 域服务器2008系统密码忘记了,如何在Server 2008 R2上重置您忘记的域管理员密码 | MOS86...
- 移动端touch与click
- Resharper进阶一:简要介绍
- SonarLint各种提示的意思
- Codeforces-710E Generate a String
- 软考论文答题纸PDF
- 并行学习框架下基于GAN的城市道路网短时路段交通预测方法
- Excel将一个表格的格式复制到其他表格,不用格式刷
- Office2016装Mathtype找不到WLL
- Git分布式版本控制遇到的问题如何把本地的项目上传到码市上
- [CF538H]Summer Dichotomy
- ElementUI的表格换行符失效、不换行
- 牛屎芯片 | 硬件之家
- VB.net小技巧——ReoGrid控件添加到工具箱说明
- D19:Duplicate Number(重复数字,翻译+题解)
- UE C++ 编辑器开发 1.创建一个简单的蓝图节点
- 论“东数西算”对气象行业的影响
- Hadoop学习笔记之HDFS
- 汇编语言程序设计实验报告一
热门文章
- HTML新年祝福抽奖小游戏,春节祝福抽奖小游戏代码
- Android弹力球小游戏案例
- AT24C02详解(蓝桥杯单片机模块(IIC总线))
- 关于偶尔会用到 但用起来两眼发愣的 STL(应该不会更新)
- 新手教程系列——SpringBoot基础
- 从360随身WiFi到随身WiFi的改革发展史
- 滑雪道c语言程序,POJ1088 滑雪 dp C语言
- 关于卡巴斯基7.0的新传输协议
- 计算机英语听力敎材,计算机多媒体在英语听力教学中的运用
- 用遗传搜索算法求函数2*x1^2+3*x2^2的最大值(C++实现)