MATLAB典型去雾算法代码

合集下载

中文翻译

中文翻译

一、论文思想的简单描述首先看看暗通道先验是什么:在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值。

换言之,该区域光强度的最小值是个很小的数。

我们给暗通道一个数学定义,对于任意的输入图像J,其暗通道可以用下式表达:式中Jc表示彩色图像的每个通道,Ω(x)表示以像素X为中心的一个窗口。

式(5)的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定,一般有WindowSize = 2 * Radius + 1;暗通道先验的理论指出:实际生活中造成暗原色中低通道值主要有三个因素:a)汽车、建筑物和城市中玻璃窗户的阴影,或者是树叶、树与岩石等自然景观的投影;b)色彩鲜艳的物体或表面,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面);c)颜色较暗的物体或者表面,例如灰暗色的树干和石头。

总之,自然景物中到处都是阴影或者彩色,这些景物的图像的暗原色总是很灰暗的。

我们抛开论文中列举的那些例子,自己从网上找几幅没有雾的风景照,看看结果如下:一些无雾的图片其暗通道在看看一些有雾的图的暗通道:一些有雾的图片其暗通道上述暗通道图像均使用的窗口大小为15*15,即最小值滤波的半径为7像素。

由上述几幅图像,可以明显的看到暗通道先验理论的普遍性。

在作者的论文中,统计了5000多副图像的特征,也都基本符合这个先验,因此,我们可以认为其实一条定理。

有了这个先验,接着就需要进行一些数学方面的推导来最终解决问题。

首先,在计算机视觉和计算机图形中,下述方程所描述的雾图形成模型被广泛使用:其中,I(X)就是我们现在已经有的图像(待去雾的图像),J(x)是我们要恢复的无雾的图像,A是全球大气光成分,t(x)为透射率。

现在的已知条件就是I(X),要求目标值J(x),显然,这是个有无数解的方程,因此,就需要一些先验了。

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究基于MATLAB的户外监控图像去雾及清晰化处理方案的研究摘要:近年来,随着科技的不断进步与发展,监控设备在社会安全领域中扮演着重要的角色。

然而,由于天气条件或环境因素的影响,户外监控图像中常常存在雾霾及模糊问题,进而降低了监控图像的质量和清晰度。

为此,本文提出了一种基于MATLAB的户外监控图像去雾及清晰化处理方案,旨在提高户外监控图像的质量和清晰度。

1. 引言户外监控系统在保障社会安全方面起着至关重要的作用。

然而,由于气象条件或环境因素的限制,户外监控图像中常常受到雾霾的影响,从而导致图像质量下降、细节模糊等问题。

为了解决这一问题,本文提出了一种基于MATLAB的户外监控图像去雾及清晰化处理方案。

2. 相关技术2.1 雾霾成因与特点雾霾是一种由于大气中的悬浮颗粒物或水滴聚集引起的能见度降低的现象。

其成因主要包括大气污染物、气压变化以及湿度等气象因素。

雾霾导致的图像问题主要表现为色调偏暗、对比度降低以及细节模糊等。

2.2 图像去雾算法图像去雾是一种通过数学模型和算法,将雾霾中的影响因素去除,恢复原本清晰的图像的过程。

常用的图像去雾算法包括大气光估计、逆向模糊以及图像增强等。

2.3 图像清晰化算法图像清晰化算法旨在增强图像的清晰度和细节。

常用的图像清晰化算法包括锐化增强、频率域滤波以及边缘增强等。

3. 方法本文提出了一种综合性的基于MATLAB的户外监控图像去雾及清晰化处理方案。

具体步骤如下:(1) 预处理:对获取到的监控图像进行预处理,包括色彩空间转换、降噪等操作,使得图像更适合后续处理。

(2) 雾霾去除:根据雾霾成因和特点,采用大气光估计和逆向模糊的算法来去除图像中的雾霾,恢复图像的清晰度和对比度。

(3) 图像增强:应用图像增强算法,如锐化增强、频率域滤波和边缘增强等,来增强图像的清晰度和细节。

(4) 结果评估:通过与原始图像进行主观和客观评估,来评估处理结果的质量和性能。

图像去雾霭算法及其实现..

图像去雾霭算法及其实现..

图像去雾霭算法及其实现电气工程及其自动化学生姓名杨超程指导教师李国辉摘要雾霭等天气条件下获得的图像,具有图像不清晰,颜色失真等等一些图像退化的现象,直接影响了视觉系统的发挥。

因此,为了有效的改善雾化图像的质量,降低雾霭等天气条件下造成户外系统成像的影响,对雾霭图像进行有效的去雾处理显得十分必要。

本设计提出了三种图像去雾算法,一种是基于光照分离模型的图像去雾算法;一种是基于直方图均衡化的图像去雾算法;还有一种是基于暗原色先验的图像去雾算法。

并在MATLAB的基础上对现实生活的图像进行了去雾处理,最后对不同的方法的处理结果进行了简要的分析。

关键词:图像去雾光照分离直方图均衡化暗原色先验Algorithm and its implementation of image dehazingMajor Electrical engineering and automationStudent Yang Chaocheng Supervisor Li GuohuiAbstract Haze weather conditions so as to obtain the image, the image is not clear, the phenomenon of color distortion and so on some image degradation, directly influence the exertion of the visual system. Therefore, in order to effectively improve the atomization quality of the image, reduce the haze caused by outdoor weather conditions such as imaging system, the influence of the haze image effectively it is necessary to deal with the fog.This design introduced three kinds of algorithms of image to fog, a model is based on the separation of light image to fog algorithm; One is the image to fog algorithm based on histogram equalization; Another is based on the dark grey apriori algorithms of image to fog. And on the basis of MATLAB to the real life to deal with the fog, the image of the processing results of different methods are briefly analyzed.Key words:Image to fog Light separation histogram Dark grey目录摘要 (I)Abstract. (II)目录1绪论图像去雾霭算法及其实现 (1)1.1研究背景及意义 (1)1.2当前图像去雾霭技术发展现状及其趋势 (2)1.3 本文的章节安排 (2)1.4小结 (3)2图像去雾霭基础理论 (4)2.1雾霭的形成机理 (4)2.2图像去雾算法 (4)2.2.1图像增强技术 (5)2.2.2图像复原技术 (5)2.3基于图像增强的去雾霭算法 (5)2.3.1同态滤波 (6)2.3.2光照分离模型 (7)2.3.3小结 (11)2.4基于直方图均衡化的图像去雾算法 (11)2.4.1直方图均衡化去雾原理 (11)2.4.2直方图均衡化模型 (12)2.4.3直方图均衡化的算法步骤 (12)2.4.4小结 (16)2.5基于图像复原的去雾霭方法 (16)2.5.1暗原色先验去雾霭原理 (16)2.5.2暗原色先验模型 (16)2.5.3算法概述 (17)2.5.4小结: (20)3实验结果 (21)4总结与展望 (22)附录1 光照分离代码 (23)附录2 基于直方图均衡化的图像去雾代码 (25)附录3 暗原色先验的去雾代码 (27)参考文献 (29)致谢 (30)图像去雾霭算法及其实现1绪论图像作为人类感知世界的主要视觉基础,是人类获取信息以及表达信息的重要方法。

(完整版)MATLAB典型去雾算法代码..

(完整版)MATLAB典型去雾算法代码..

本节主要介绍基于Retinex理论的雾霭天气图像增强及其实现。

1。

3.1 Rentinex理论Retinex(视网膜“Retina"和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论.该算法的基本原理模型最早是由Edwin Land(埃德温•兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。

Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的.根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8。

3—1所示。

图 1。

3—1 Retinex理论示意图对于观察图像S中的每个点(x,y),用公式可以表示为:S(x,y)=R(x,y)×L(x,y) (1.3。

1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。

1。

3.2 基于Retinex理论的图像增强的基本步骤步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即:S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y));步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数:D(x, y)=S(x, y) *F(x, y);步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G(x, y):G(x,y)=S'(x, y)—log(D(x, y)) ;步骤四:对G(x,y)取反对数,得到增强后的图像R(x, y):R(x, y)=exp(G(x, y));步骤五:对R(x,y)做对比度增强,得到最终的结果图像.1.3。

数字图像去雾算法研究毕业论文

数字图像去雾算法研究毕业论文

毕业论文(设计) 题目数字图像去雾算法研究学生姓名学号院系计算机与软件学院专业计算机科学与技术指导教师声明本人郑重声明:1、持以“求实、创新”的科学精神从事研究工作。

2、本论文是我个人在导师指导下进行的研究工作和取得的研究成果。

3、本论文中除引文外,所有实验、数据和有关材料均是真实的。

4、本论文中除引文和致谢的内容外,没有抄袭其他人或其他机构已经发表或撰写过的研究成果。

5、其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。

作者签名:日期:目录1 引言 (1)2 图像去雾算法 (1)2.1 基于光照分离模型的图像去雾算法 (2)2.1.1 算法概述 (2)2.1.2 同态滤波 (3)2.1.3 模型简介 (3)2.1.4 偏微分方程求解 (4)2.2 基于直方图均衡化的图像去雾算法 (7)2.2.1 算法概述 (7)2.2.2 直方图修正技术的基础 (7)2.2.3 直方图的均衡化 (8)2.2.4 直方图均衡化的算法步骤 (9)2.3 基于暗原色先验的图像去雾算法 (10)2.3.1 算法概述 (10)2.3.2 已有雾成像模型 (10)2.3.2 暗原色先验 (11)2.3.3 暗原色先验去雾算法分析 (11)3 数字图像去雾系统的设计 (12)3.1 开发工具—MATLAB (12)3.2系统设计 (13)3.3 菜单设计 (13)3.4 模块设计 (13)3.5 界面设计 (14)3.5.1 界面设计原则 (14)3.5.2 界面设计步骤 (14)4 数字图像去雾系统的实现 (19)4.1图片打开模块 (19)4.2基于光照分离模型的图像去雾模块 (19)4.2.1 同态滤波及光照分离代码 (19)4.2.2 去雾效果图 (21)4.2.3 结果分析 (21)4.3基于直方图均衡化的图像去雾模块 (22)4.3.1 代码 (22)4.3.2 去雾效果图 (23)4.3.3 结果分析 (23)4.4基于暗原色先验的图像去雾模块 (24)4.4.1代码 (24)4.4.2 去雾效果图 (25)4.4.3 结果分析 (26)4.5图片保存模块 (26)5 系统运行效果 (27)5.1 整体界面运行效果 (27)5.2 文件打开运行效果 (27)5.2 基于光照分离模型图像去雾效果图 (28)5.3直方图均衡化图像去雾效果图 (29)5.4基于暗原色先验的去雾效果图 (30)5.5文件保存界面效果图 (30)6 结论 (31)数字图像去雾算法研究摘要:图像去雾是指运用一定的模型或算法,对已经雾化的图像进行处理,达到还原图像本来特征的过程。

视频图像增强和去雾算法matlab实现

视频图像增强和去雾算法matlab实现

视频图像增强和去雾算法说明摘要 本文档介绍夜间增强和去雾增强算法及其实现。

(1)将图像由RGB空间转换到HSI空间,然后对HSI空间亮度分量(I分量)的灰度直方图进行均衡化处理,然后再转换到RGB空间。

空间。

)利用暗原色先验图像去雾算法对图像进行去雾处理。

(2)利用暗原色先验图像去雾算法对图像进行去雾处理。

1目录一、通过I分量增强夜间图像 (3)1. 算法原理 (3)2. M ATLAB程序 (6) (77)3. 夜间增强效果 .................................................................................................................................二、去雾增强 (9) (99)1. 算法原理 .........................................................................................................................................2. M ATLAB程序 (11) (113)3. 去雾效果 .......................................................................................................................................参考文献 (14)一、通过I分量增强夜间图像1. 算法原理首先将图像由RGB空间转换到HSI空间,然后对HSI空间亮度分量(I分量)的灰度直方空间显示。

图进行均衡化处理,提高图像的亮度,然后转换回RGB空间显示。

(1)图像由RGB空间转换到HSI空间。

RGB向HSI模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。

几种去雾算法介绍

几种去雾算法介绍

⼏种去雾算法介绍Single Image DehazingRaanan FattalHebrew University of Jerusalem,Israel这篇⽂章提出⼀种新的从单幅输⼊图像中估计传输函数的⽅法。

新⽅法中,重新定义了⼤⽓传输模型,⼤⽓散射模型中除了传输函数(transmission function)这个变量外,还增加了表⾯阴影(surface shading)这个变量。

作者假设⼀个前提,表⾯阴影和传输函数是统计⽆关的,根据这⼀前提对⼤⽓散射模型进⾏运算分析,即可求得传输函数并对图像去雾。

作者⾸先介绍了⼤⽓散射模型:该式定义域RGB三颜⾊通道空间,表⽰探测系统获取的图像,是⽆穷远处的⼤⽓光,表⽰⽬标辐射光,即需要回复的⽬标图像,表⽰传输函数,即光在散射介质中传输经过衰减等作⽤能够到达探测系统的那⼀部分的光的⽐例。

坐标向量表⽰探测系统获取的图像中每⼀个像素的坐标位置。

对⼤⽓散射模型进⾏变形,将需要恢复的⽬标图像视作表⾯反射系数(surface albedo coefficients)和阴影系数(shading factor)的按坐标的点乘,即,其中为三通道向量,是描述在表⾯反射的光的标量。

即的尺度与相同,为彩⾊图像,为灰度图像。

为了简化,假设在某区域内为常数,即在像素区域内,为常数。

则⼤⽓散射模型变为:将向量分解成两个部分,⼀部分为与⼤⽓光平⾏的向量,另⼀部分为与⼤⽓光垂直的残留向量(residualvector),记作,且,表⽰与⼤⽓光向量垂直的所有向量构成的向量空间。

对于重新定义的⼤⽓散射模型中的,将其写成平⾏于的向量于平⾏于的向量之和:其中,记作,为表⾯反射和⼤⽓光的相关量或相关系数,表⽰在RGB空间中的两个三维向量的点积。

为了获得独⽴的⽅程,求取输⼊图像沿着⼤⽓光向量的那⼀分量(标量)为:则输⼊图像沿着⽅向的那⼀分量(标量)为:(因为向量和向量垂直,所以)。

则有:由上式解得传输函数为:若已知⽆穷远出的⼤⽓光,则与均可求,唯⼀未知量为,所以求解的问题就归结为求解内的问题。

烟雾检测Matlab代码

烟雾检测Matlab代码

tic;clear all;close all;clc;A = aviinfo('smoke.avi');mov = mmreader('smoke.avi');LEN = A.NumFrames;%得到视频的帧数for i = 1 : LENb = read(mov, i);imwrite(b, strcat('smoke', int2str(i), '.jpg'), 'jpg');endfor x = 1 : LENpic = imread(strcat('smoke', int2str(x), '.jpg'));%读入一张图片pic1 = pic;%pic1中存放的是处理过后的彩色图像pic_hsv = rgb2hsv(pic);s = size(pic1);bw_pic = zeros(s(1), s(2));for i = 1 : s(1)for j = 1 : s(2)if pic_hsv(i, j, 1) > 0.35 && pic_hsv(i, j, 1) < 0.65 && ...pic_hsv(i, j, 2) > 0.06 && pic_hsv(i, j, 2) < 0.3 && ...pic_hsv(i, j, 3) > 0.5 && pic_hsv(i, j, 3) <= 1;pic1(i, j, 1) = 255;pic1(i, j, 2 : 3) = 0;endif pic1(i, j, 1) == 255 && pic1(i, j, 2) == 0bw_pic(i, j) = 1;endendendcov_bw_pic = 1 - bw_pic;fill_pic = imfill(cov_bw_pic, 'holes');fill_pic1 = 1 - fill_pic;B_pic = bwboundaries(fill_pic1);%得到的是一个P×1的单元ss = size(B_pic);%ss的值就是连通分量的数量ss1 = size(B_pic{1, 1});%ss1是一个大小为m×2的矩阵max = ss1(1);for i = 2 : ss(1)%找到最大的连通区域的边界总个数ss2 = size(B_pic{i, 1});if ss2(1)> maxmax = ss2(1);endend%⑤…………………………将小于最大连通区域的连通分量边界赋零for k = 1 : ss(1)%将小于最大连通区域的连通分量边界赋零,%其作用就是将其余小的连通分量与边界隔开Mid = B_pic{k, 1};ss3 = size(Mid);if ss3(1) < maxfor i = 1 : ss3(1)fill_pic1(Mid(i, 1), Mid(i, 2)) = 0;endendend%反转填充cov_fill_pic1 = 1 - fill_pic1;A_fill_pic = imfill(cov_fill_pic1, 'holes');%进行内部填充,再反变换回来,即得到所要求的区域A_fill_pic1 = 1 - A_fill_pic;B_pic1 = bwboundaries(A_fill_pic1);sss = size(B_pic1);%sss的值就是连通分量的数量for k = 1 : sss(1)%该循环作用是找到最大区域的边界,然后在原图像的对应位置上赋红Mid = B_pic1{k};%Mid是一个m×2的矩阵,m就是边界点的数量%ss4(1)表示边界点的数量,Mid(i, 1)和Mid(i, 2)表示边界点的坐标ss4 = size(Mid);if ss4(1) == maxfor i = 1 : ss4(1)pic(Mid(i, 1), Mid(i, 2), 1) = 255;pic(Mid(i, 1), Mid(i, 2), 2 : 3) = 0;endendendimwrite(pic, strcat('lou_smoking', int2str(x), '.jpg'), 'jpg');endaviobj = avifile('lou_smoking.avi');%将处理后的图片连成视频文件aviobj.fps = 25;%初始化视频文件的属性aviobj.Quality = 100;pression = 'None';for i = 1 : LENframe = imread(strcat('lou_smoking', int2str(i), '.jpg'));aviobj = addframe(aviobj, uint8(frame));endaviobj=close(aviobj);%关闭aviobj的对象toc;。

利用Matlab仿真实现图像烟雾识别(k-means聚类图像分割+LBP+PCA+SVM)

利用Matlab仿真实现图像烟雾识别(k-means聚类图像分割+LBP+PCA+SVM)

利⽤Matlab仿真实现图像烟雾识别(k-means聚类图像分割+LBP+PCA+SVM)⽬录⼀、算法简介1.1 c-means聚类算法1 .2 LBP算法1.3 PCA算法1.4 SVM算法⼆、算法实现2.1 烟雾识别算法流程2.2 c-means算法实现2.3 LBP算法实现2.4 SVM算法实现三、结果分析⼀、算法简介1.1 c-means聚类算法聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象进⾏分组。

⽬的是使组内的对象相互之间是相似的(相关的),⽽不同组中的对象是不同的(不相关的)。

组内相似性越⼤,组间差距越⼤,说明聚类效果越好。

也就是说,聚类的⽬标是得到较⾼的类内相似度和较低的类间相似度,使得类间的距离尽可能⼤,类内样本与类中⼼的距离尽可能⼩。

在此,我们选⽤k-means聚类算法。

1 .2 LBP算法LBP(Local Binary Pattern,局部⼆值模式)是⼀种⽤来描述图像局部纹理特征的算⼦;它具有旋转不变性和灰度不变性等显著的优点。

它是⾸先由T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,⽤于纹理特征提取,提取的特征是图像的局部的纹理特征。

原始的LBP算⼦定义为在3*3的窗⼝内,以窗⼝中⼼像素为阈值,将相邻的8个像素的灰度值与其进⾏⽐较,若周围像素值⼤于中⼼像素值,则该像素点的位置被标记为1,否则为0。

这样,3*3邻域内的8个点经⽐较可产⽣8位⼆进制数(通常转换为⼗进制数即LBP码,共256种),即得到该窗⼝中⼼像素点的LBP值,并⽤这个值来反映该区域的纹理信息。

1.3 PCA算法PCA(Principal Component Analysis),即主成分分析⽅法,是⼀种使⽤最⼴泛的数据降维算法。

其算法步骤如下:1)数据中⼼化——去均值,根据需要,有的需要归⼀化——Normalized;2)求解协⽅差矩阵;3)利⽤特征值分解/奇异值分解求解特征值以及特征向量;4)将特征值从⼤到⼩排序,保留前k个特征向量5)利⽤特征向量构造投影矩阵;6)利⽤投影矩阵,得出降维的数据。

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究基于MATLAB的户外监控图像去雾及清晰化处理方案的研究摘要:随着人工智能和计算机视觉的发展,户外监控图像在保障公共安全方面扮演着重要角色。

然而,户外环境中的天气因素,如雾霾和大气污染,会导致监控图像失真,降低了其清晰度和可视性。

本文基于MATLAB开展研究,提出了一种基于图像去雾和清晰化处理的方案,旨在通过算法的改进提高户外监控图像的清晰度和质量。

1. 引言随着城市化进程的加快,社会安全问题日益突出,对于户外监控设备的需求也不断增加。

然而,由于气候和环境的影响,户外监控图像中存在雾霾、雨雾等现象,导致目标物体模糊不清,降低了监控图像的可视性。

2. 图像去雾方法为了解决监控图像中存在的雾霾问题,本文提出了一种基于原图像的暗传递函数估计和导向滤波的去雾方法。

首先,利用原图像和暗通道先验原理,估计出图像中的暗传递函数。

然后,通过导向滤波的方式,对图像进行去雾处理。

导向滤波的原理是通过引导图像的细节来保持图像的细节信息,从而提高监控图像的清晰度。

3. 清晰化处理方法除了进行去雾处理外,在清晰化处理方面也有很多方法可供选择。

本文提出了一种基于图像锐化的清晰化处理方法,在图像锐化的过程中,通过增强图像的高频信息,使目标物体的边缘更加清晰,提高图像的清晰度。

4. 算法实现与实验结果在MATLAB环境下,实现了以上提出的去雾和清晰化处理方法,并对一组户外监控图像进行了实验。

实验结果表明,提出的方法在去雾和清晰化处理方面都取得了较好的效果,图像的清晰度和可视性得到了明显提升。

5. 讨论与结论本文通过改进和优化现有的图像处理算法,提出了一种基于MATLAB的户外监控图像去雾及清晰化处理方案。

实验结果表明,该方法可以有效地去除监控图像中的雾霾和提高图像的清晰度,有助于提升户外监控图像的质量和可视性。

然而,该方法还存在一定的局限性,仍有待进一步的优化和改进。

6. 展望在未来的研究中,可以继续探索其他图像处理算法,如去雨滴、去雪花等,以进一步提高户外监控图像的质量和清晰度。

基于MATLAB的图像去雾处理技术

基于MATLAB的图像去雾处理技术

基于MATLAB的图像去雾处理技术基于MATLAB的图像去雾处理技术摘要:图像去雾技术是一项对雾化图像进行恢复处理来提高图像质量的重要技术。

本文基于MATLAB平台,综述了图像去雾处理的基本原理、相关算法和实现方法,并对不同算法进行了对比和性能评估。

结果表明,基于MATLAB的图像去雾技术在提高图像质量、恢复图像细节方面表现出良好的效果,具有较高的应用价值和实际意义。

1. 引言由于天气条件、环境污染等原因,图像中常常出现模糊不清、色彩失真的现象,这时候就需要对图像进行去雾处理,以提高图像的质量和信息的可读性。

图像去雾处理技术已经成为计算机视觉和图像处理领域的重要研究方向之一。

本文基于MATLAB平台,重点介绍基于物理模型和无参考图像去雾算法的原理和实现方法,并进行了详细的对比和性能评估。

2. 图像去雾原理图像去雾原理主要分为两种:物理模型和无参考图像去雾原理。

物理模型方法是基于光线传输模型,通过分析光线在大气中的散射和吸收规律,来恢复图像的细节和信息。

无参考图像去雾方法是不依赖于任何彩色中的参考图像和场景先验知识,仅仅通过分析图像本身的信息来进行去雾操作。

3. 基于物理模型的图像去雾算法基于物理模型的图像去雾算法主要包括大气光估计、雾剔除和图像恢复。

其中,大气光估计通过计算图像中最亮像素的值来估计大气光的强度。

雾剔除是通过将大气光分量从输入图像中减去,以提取出原始图像中的细节和信息。

图像恢复是使用去雾模型来恢复图像的细节和色彩,使得图像更加清晰和真实。

4. 基于无参考图像去雾算法无参考图像去雾方法是通过分析图像的统计特性和纹理信息来进行去雾处理。

其中,常用的算法包括暗通道先验、边缘保持过滤器等。

暗通道先验是基于自然图像中最暗像素通道的特点,通过估计雾浓度和大气光来进行图像去雾操作。

边缘保持过滤器是通过平滑图像中的纹理信息来减小雾的影响,从而提升图像的质量和可读性。

5. 基于MATLAB的图像去雾实现本文采用MATLAB平台进行图像去雾处理的实现,通过调用MATLAB中提供的图像处理工具箱和算法库,可以方便地实现各种图像去雾算法。

2009年CVPR最佳论文去雾技术源代码

2009年CVPR最佳论文去雾技术源代码

这段代码对内存很高,所使用图片尽量控制在200*300范围内img_name='002.bmp';% 原始图像I=double(imread(img_name))/255;% 获取图像大小[h,w,c]=size(I);win_size = 7;img_size=w*h;dehaze=zeros(img_size*c,1);dehaze=reshape(dehaze,h,w,c);figure, imshow(I);win_dark=zeros(img_size ,1);%这段代码可用矩阵处理for cc=1:img_sizewin_dark(cc)=1;endwin_dark=reshape(win_dark,h,w);%计算分块darkchannel,此处也尝试用矩阵处理,循环太多for j=1+win_size:w-win_sizefor i=win_size+1:h-win_sizem_pos_min = min(I(i,j,:));for n=j-win_size:j+win_sizefor m=i-win_size:i+win_sizeif(win_dark(m,n)>m_pos_min)win_dark(m,n)=m_pos_min;endendendendendfigure, imshow(win_dark); %输出darkchannel图像%%%%%%%%%%%%%%% 这段没看懂什么意思for cc=1:img_sizewin_dark(cc)=1-win_dark(cc);end%%%%%%%%%%%%%%%%选定精确dark value坐标win_b = zeros(img_size,1);%rem函数为求余函数,有可能是进行边缘处理for ci=1:hfor cj=1:wif(rem(ci-8,15)<1)if(rem(cj-8,15)<1)win_b(ci*w+cj)=win_dark(ci*w+cj);endendendend%显示分块darkchannel%figure, imshow(win_dark);neb_size = 9;win_size = 1;epsilon = 0.0000001;%指定矩阵形状indsM=reshape([1:img_size],h,w);%是不是win_dark%计算矩阵Ltlen = img_size*neb_size^2;row_inds=zeros(tlen ,1);col_inds=zeros(tlen,1);vals=zeros(tlen,1);len=0;for j=1+win_size:w-win_sizefor i=win_size+1:h-win_sizeif(rem(ci-8,15)<1)if(rem(cj-8,15)<1)continue;endendwin_inds=indsM(i-win_size:i+win_size,j-win_size:j+win_size);win_inds=win_inds(:);%列显示winI=I(i-win_size:i+win_size,j-win_size:j+win_size,:);winI=reshape(winI,neb_size,c); %三个通道被拉平成为一个二维矩阵3*9win_mu=mean(winI,1)'; %求每一列的均值如果第二个参数为2 则为求每一行的均值//矩阵变向量win_var=inv(winI'*winI/neb_size-win_mu*win_mu' +epsilon/neb_size*eye(c)); %求方差winI=winI-repmat(win_mu',neb_size,1);%求离差tvals=(1+winI*win_var*winI')/neb_size;% 求论文所指的矩阵Lrow_inds(1+len:neb_size^2+len)=reshape(repmat(win_inds,1,neb_size),...neb_size^2,1);col_inds(1+len:neb_size^2+len)=reshape(repmat(win_inds',neb_size,1),...neb_size^2,1);vals(1+len:neb_size^2+len)=tvals(:);len=len+neb_size^2;endendvals=vals(1:len);row_inds=row_inds(1:len);col_inds=col_inds(1:len);%创建稀疏矩阵A=sparse(row_inds,col_inds,vals,img_size,img_size);%求行的总和sumA为列向量sumA=sum(A,2);%spdiags(sumA(:),0,img_size,img_size) 创建img_size大小的稀疏矩阵其元素是sumA中的列元素放在由0指定的对角线位置上。

基于Matlab的图像去雾系统的设计研究

基于Matlab的图像去雾系统的设计研究
在主菜单下可进入暗通道优先算法模式、直 方图均衡化算法模式、Retinex 算法模式和对比 模式四种模式,点击“生成”或“对比”则可以生成 处理结果,点击“清除”按钮可以将界面中的图像 和按钮置为初始状态.
图 2 去雾系统主界面
在三种算法模式下,除了可以在右上角显示 去雾后的增强图像,还可以在下方显示算法产生 的对应中间结果,包括:暗通道优先处理算法的
针对雾天图像增强处理的研究已经成为计算机视觉和图像处理领域的研究热点吸引了国内外大量研究者提出了大量算法文中三种算法都能在一定程度上完成对带雾图像的清晰化处理但是在处理效果和处理速度上仍然各有差别各有优缺点暗通道优先算法的去雾效果最好但运算时间要远高于其他两种算法
2019 年 第2期
科技开发与应用
学 报(自然科学)
第 40 卷 总第 289 期
基于 Matlab 的图像去雾系统的设计研究
张道华
摘 要:为了实现雾天图像的增强,采用 Matlab 对集成直方图均衡化、Retinex、暗通道优先三种雾天图
像清晰化处理算法的去雾系统进行软件实现,不仅能够对这三种算法的最终结果和中间产物进行输出,还
能够对这三种算法的算法效率和算法结果进行直观数字的对比.实验表明,三种算法各有优缺点,实际应用
中可根据需要选取适当的算法.该系统的设计可为其他去雾算法的研究提供技术参考.
关键词:Matlab;图像增强;去雾系统;三种算法中图分类号:TP311
文献标识码:A
文章编号:1008-7974(2019)02-0001-06
DOI:10.13877/22-1284.2019.04.001
本去雾系统的构建与开发是在 Matlab 2011a 下完成的,因此,运行模块程序需在计算机上安 装 Matlab 2011a 或更高版本.打开 Matlab,在“文 件”(File)菜单栏中选择“打开…”(Open…)在文 件选择对话框中选择“.fig”文件,均可进入相应 界面的编辑窗口.

MATLAB典型去雾算法代码..

MATLAB典型去雾算法代码..

MATLAB典型去雾算法代码一、去雾算法简介去雾算法是指利用图像处理技术,对有雾的图像进行处理,使得雾霾等干扰因素去除,从而得到更加清晰的图像。

目前,有许多不同的去雾算法,其中,传统的能量最小化模型和暗通道先验模型是常用的两种方法。

本文主要介绍这两种典型的去雾算法的MATLAB代码实现。

二、传统能量最小化模型传统能量最小化模型的基本思路是通过最小化图像中雾霾带来的能量损失,来还原原始的无雾图像。

该算法的实现步骤如下:1.获取原始图像和透射率图首先,需要获取有雾图像和对应的透射率图。

透射率图描述了经过雾霾后,光线传输的衰减程度,可以通过以下公式计算:t(x)=1-\\omega \\cdot min(R,G,B)其中,R、G、B是当前像素的三个通道的颜色值,ω是一个常数,用来控制光线的全局衰减程度。

在MATLAB中,可以使用以下代码来获取透射率图:img = imread('foggy_image.jpg');omega = 0.95;t = 1 - omega * min(img,[],3);2.计算能量函数接下来,需要计算能量函数。

传统能量最小化模型采用的是双边能量函数,其计算公式如下:E_{b}(I)=-ln(I_{d}(x))+\\lambda \\sum_{y\\in S(x)}[ln(I_{d}(x))-ln(I _{d}(y)))]^{2}其中,Id表示透射率图,S(x)表示与像素点x相邻的像素点集合,λ是常数。

在MATLAB中,可以使用以下代码来计算双边能量函数:lambda = 0.5;J = im2double(img);for i=1:3J(:,:,i) = guidedfilter(J(:,:,i), t, 10, 0.001);endJ = (img - J) ./ (1 - t);output = exp(-lambda * sum(log(max(output, 1e-20)), 3));3.求解优化问题最后,通过求解能量函数的优化问题,即可得到去雾后的图像。

用于图像去雾的优化对比度增强算法

用于图像去雾的优化对比度增强算法

用于图像去雾的优化对比度增强算法图像去雾哪家强?之前我们已经讨论过了著名的基于暗通道先验的图像去雾(Kaiming He, 2009)算法,如果你用兴趣可以参考:此外,网上也有很多同道推荐了一篇由韩国学者所发表的研究论文《Optimized contrast enhancement for real-time image and video dehazing》(你也可以从文末参考文献【1】给出的链接中下载到这篇经典论文),其中原作者就提出了一个效果相当不错的图像去雾算法。

最近有朋友在我们的图像处理算法研究学习群中也提到了该算法,恰巧想到主页君也很久未发图像相关之文章了,今天遂心血来潮,向大家科普一下这个新算法。

为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。

本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。

算法核心1:计算大气光值通常,图像去雾问题的基本模型可以用下面这个公式来表示(这一点在基于暗通道先验的图像去雾中我们也使用过):I(p)=t(p)J(p)+(1−t(p))A其中,J(p)=(Jr(p),Jg(p),Jb(p))T 表示原始图像(也就是没有雾的图像);I(p)=(Ir(p),Ig(p),Ib(p))T 表示我们观察到的图像(也就是有雾的图像)。

r、g、b 表示位置p 处的像素的三个分量。

A=(Ar,Ag,Ab)T 是全球大气光,它表示周围环境中的大气光。

此外,t(p)∈[0,1] 是反射光的透射率, 由场景点到照相机镜头之间的距离所决定。

因为光传播的距离越远,那么通常光就约分散而且越发被削弱。

所以上面这个公式的意思就是,本来没有被雾所笼罩的图像J 与大气光 A 按一定比例进行混合后就得到我们最终所观察到的有雾图像。

大气光A 通常用图像中最明亮的颜色来作为估计。

因为大量的灰霾通常会导致一个发亮(发白)的颜色。

【图像增强系列】基于暗原色先验的去雾论文 MATLAB源码及对比效果图

【图像增强系列】基于暗原色先验的去雾论文 MATLAB源码及对比效果图
在[2]当中,Fttal 提出了一种基于独立成分分析(ICA)的实现方法。首先,局部区域的反射率被 假定为一个恒定的向量 R。因而,在该区域内所有的 J(x)拥有相同的方向向量 R,如图 2 所示。其次,通 过假定在一个局部表面投影 J(x)和透射率函数 t(x)在统计学上是相互独立的,可以用 ICA 来估算 R。再 次,由输入的彩色图像建立的 MRF 模型可应用来推断整幅图像的结果。这一实现手段是基于物理的并能 结合一幅优质的深度图来产生自然的无雾图像。不足的是,该手段因为利用了一个局部区域的统计学独 立的假设,需要在相互独立的成分之间差异很大的时候才能有显著效果。任意差异性的匮乏或者过低的 信噪比都会使得统计结果不可靠。还有,统计规律是根据图像的颜色信息得出的,因此对灰度图像无效。 在雾浓度较大时,该方法也无能为力,因为浓雾一般没有色彩,倾向于成为噪声。
最近,基于单一图像的去雾取得了很大的进展。这些方法的成功往往得益于一个强有力的先验或假 设。Tan[16]观察到无雾图像比有雾图像具有更高的对比度,他通过扩大复原图像的局部对比度来达到去 雾的效果。这样得到的结果在视觉上是很吸引人的,但实际上在光学原理上达到去雾。Fattal[2]通过假 定透射率和表面投影在局部是不相关的,估算景物的反射率,来推断景物光在空气中传播时的透射率。 Fattal 的的做法比较准确,并且能产生很好的去雾结果。然而他的方法在雾浓度较大的时候便显得无能 为力,尤其是当他的假想一旦失效的时候。
根据暗原色先验的规律,无雾自然图像的暗原色项Jdark应该是接近于0的。 Jdark(x) = min c ( min y∈Ω(x) (Jc(y))) = 0. (9)
Ac 总是正的,导致:
min c ( min y∈Ω(x) (Jc(y) Ac )) = 0 (10) 把方程(10)带入方程(8),我们可以简单地估算出透射率t: ˜t(x) = 1 − min c ( min y∈Ω(x) ( Ic(y) Ac )). (11) 事实上,minc(miny∈Ω(x)( Ic(y) Ac )) Ac 是规格化的雾图Ic(y)的暗原色。它直接提供了透射信息。如前所述,暗原色先验对天空区域不成立, 但幸好在带雾的图像中天空的颜色总是同大气光A非常接近,所以在天空区域我们有: min c ( min y∈Ω(x) ( Ic(y) Ac )) → 1, and ˜t(x) → 0, 又因为天空光来自无穷远处,其透射率趋近于 0,所以式子(11)能较好地同时处理包含或者不包含天空的 区域。我们并不需要事先把天空部分单独加以处理。

烟雾动态提取 matlab

烟雾动态提取 matlab

烟雾动态提取matlab全文共四篇示例,供读者参考第一篇示例:烟雾动态提取是一个在计算机视觉和图像处理领域常见且重要的任务。

烟雾经常出现在自然或人为灾难中,如火灾、爆炸等,烟雾的存在给图像处理和目标识别带来了很大的困难。

为了更好地理解并处理烟雾图像,烟雾动态提取技术应运而生。

在过去的几年中,烟雾动态提取已经成为了计算机视觉领域的一个研究热点,有很多研究者提出了各种各样的方法来解决这个问题。

基于Matlab的烟雾动态提取技术已经被广泛应用于各种应用中,包括安防监控、自然灾害监测等领域。

在Matlab中,有很多方法可以用来进行烟雾动态提取。

最常用的是基于背景建模和运动检测的方法。

背景建模可以提取出图像中的静态背景信息,而运动检测可以检测出图像中的移动对象,通过两者结合可以提取出烟雾区域。

在Matlab中实现烟雾动态提取的具体步骤如下:1. 读取视频帧:首先要将视频文件导入Matlab中,并且逐帧读取视频帧。

2. 背景建模:利用Matlab中的背景建模算法,如高斯混合模型(GMM)等,提取出视频帧中的静态背景信息。

3. 运动检测:运用Matlab中的光流法(Optical Flow)或运动检测算法,如帧差法等,检测出视频帧中的移动对象。

4. 烟雾提取:将运动对象与背景信息结合,通过一定的规则或算法,提取出视频帧中的烟雾区域。

5. 烟雾跟踪:对烟雾区域进行跟踪,可以利用Kalman滤波等跟踪算法,跟踪烟雾的运动轨迹。

通过以上步骤,就可以实现对烟雾动态信息的提取和跟踪。

在实际应用中,烟雾动态提取技术可以用于火灾监测、烟雾检测、自然灾害监测等领域。

在火灾监测中,可以通过实时监测烟雾信息,以及烟雾的移动轨迹,提前发现并报警火灾的发生。

烟雾动态提取技术在Matlab中的应用具有很大的潜力,可以在各种应用场景中发挥重要作用。

随着科学技术的不断进步和发展,相信烟雾动态提取技术在未来会得到更进一步的完善和应用。

希望本文能为烟雾动态提取技术的研究和应用提供一些参考和帮助。

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究

基于MATLAB的户外监控图像去雾及清晰化处理方案的研究作者:***来源:《赤峰学院学报·自然科学版》2021年第10期摘要:隨着视频监控在各行各业的广泛应用,视频图像的清晰化处理也愈加重要。

本文针对雾霾天气下所采集的户外视频图像,构建了一个基于MATLAB的图像去雾及清晰化处理系统,将前期研究的全局直方图均衡化算法、限制对比度自适应直方图均衡算法、多尺度Retinex算法和暗通道先验算法集成到该系统中,进行大量的仿真实验,并构建图像质量评价体系对这四种算法的处理效果进行评价,进一步分析出常用的四种去雾算法所适应的不同场景。

关键词:去雾;图像处理;MATLAB;图像质量评价中图分类号:TP751 文献标识码:A 文章编号:1673-260X(2021)10-0042-05近年来,随着科学技术的迅猛发展,数字多媒体技术也日益提高,监控视频越来越广泛地应用在交通运输、安全防护、军事领域、工农业生产,甚至居家生活等各行各业,并发挥着越来越重要的作用。

但是,户外监控视频对天气条件的要求非常敏感,尤其当下空气污染所造成的雾霾天气严重,使得监控视频所采集的图像严重退化,这就限制了景象的识别,极大地影响了监控视频发挥其效用。

所以,对监控图像以及监控视频的去雾及清晰化处理的研究就显得非常必要。

1 雾霾天气下图像的去雾化研究现状在雾霾天气下,自然光受到大气中颗粒较大的气溶胶悬浮粒子的干扰发生散射,使获取的户外图像的对比度和饱和度明显下降[2,3]。

另外,由于雾霾的存在,使得退化图像中,原来较低的灰度值产生的一定程度的提高,原本较高的灰度值却被削弱,这就大大地降低了视频图像的质量。

现如今,对恶劣天气下视频图像进行清晰化处理的方法可归为两类:基于图像特征的图像增强算法和基于物理模型的图像复原算法。

图像增强算法是从提升对比度、强化细节、改善整体视觉效果等方面对图像进行清晰化处理,这类算法虽然实用性强,但因为它并不是针对图像降质的本质原因进行研究,所以处理后的图像很有可能会造成信息损失或过饱和等现象,清晰化处理效果并不理想。

fade 去雾指标 python

fade 去雾指标 python

fade 去雾指标pythonFade去雾指标是一种用于图像去雾的算法,其原理是基于图像中像素的灰度值和像素之间的差异来计算图像的透明度,从而去除图像中的雾霾。

在Python中,可以使用以下代码实现Fade去雾指标:```pythonimport cv2import numpy as npdef get_dark_channel(img, size):"""获取暗通道图像"""b, g, r = cv2.split(img)min_img = cv2.min(cv2.min(r, g), b)kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (size, size)) dark_img = cv2.erode(min_img, kernel)return dark_imgdef get_atmosphere(img, dark_img):"""获取大气光值"""h, w = img.shape[:2]flat_img = img.reshape(h * w, 3)flat_dark = dark_img.reshape(h * w)indices = np.argsort(flat_dark)[::-1][:h * w // 1000]atmosphere = np.max(flat_img[indices], axis=0)return atmospheredef get_transmission(img, atmosphere, size, omega=0.95): """获取透射率"""img_norm = img.astype('float') / atmosphere.astype('float') dark_img = get_dark_channel(img_norm, size)transmission = 1 - omega * dark_imgreturn transmissiondef get_dehaze(img, size=15, omega=0.95):"""获取去雾图像"""dark_img = get_dark_channel(img, size)atmosphere = get_atmosphere(img, dark_img)transmission = get_transmission(img, atmosphere, size, omega)transmission = cv2.max(transmission, 0.1)img_norm = img.astype('float') / 255img_norm = (img_norm - atmosphere) / transmission + atmosphere img_norm = np.clip(img_norm, 0, 1)img_dehaze = (img_norm * 255).astype('uint8')return img_dehaze```以上代码中,`get_dark_channel`函数用于获取暗通道图像,`get_atmosphere`函数用于获取大气光值,`get_transmission`函数用于获取透射率,`get_dehaze`函数用于获取去雾图像。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本节主要介绍基于Retinex理论的雾霭天气图像增强及其实现。

1.3.1 Rentinex理论Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。

该算法的基本原理模型最早是由Edwin Land(埃德温•兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。

Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。

根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。

图1.3-1 Retinex理论示意图对于观察图像S中的每个点(x,y),用公式可以表示为:S(x,y)=R(x,y)×L(x,y)(1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。

1.3.2 基于Retinex理论的图像增强的基本步骤步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即:S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y));步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数:D(x, y)=S(x, y) *F(x, y);步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y):G(x,y)=S '(x, y)-log(D(x, y)) ;步骤四:对G(x,y)取反对数,得到增强后的图像R(x, y):R(x, y)=exp(G(x, y));步骤五:对R(x,y)做对比度增强,得到最终的结果图像。

1.3.3 多尺度Retinex 算法D Jobson 等人提出了多尺度Retinex 算法,多尺度算法的基本公式是:[][]{}i 1(,)log (,)log (,)(,)Ni n i n n R x y W I x y F x y I x y ==-*∑其中,i R (x,y )是Retinex 的输出,,,i R G B ∈表示3个颜色谱带,(,)F x y 是高斯滤波函数,n W 表示尺度的权重因子,N 表示使用尺度的个数,N =3,表示彩色图像,,,i R G B ∈。

N =1,表示灰度图像。

从公式中可以看出:MSR 算法的特点是能产生包含色调再现和动态范围压缩这两个特性的输出图像。

在MSR 算法的增强过程中,图像可能会因为增加了噪声而造成对图像中的局部区域色彩失真,使得物体的真正颜色效果不能很好的显现出来,从而影响了整体视觉效果。

为了弥补这个缺点,一般情况下会应用带色彩恢复因子C 的多尺度算法(MSRCR )来解决。

带色彩恢复因子C 的多尺度算法(MSRCR)]是在多个固定尺度的基础上考虑色彩不失真恢复的结果,在多尺度Retinex 算法过程中,我们通过引入一个色彩因子C 来弥补由于图像局部区域对比度增强而导致图像颜色失真的缺陷,通常情况下所引入的色彩恢复因子C 的表达式为(,)(,)(,)i i MSRCR i MSR R x y C x y R x y =1(,)(,)[(,)][](,)i i i Nj j I x y C x y f I x y f I x y ===∑其中,i C 表示第个通道的色彩恢复系数,它的作用是用来调节3个通道颜色的比例,()f •表示的是颜色空间的映射函数。

带色彩恢复的多尺度Retinex 算法(MSRCR )通过色彩恢复因子C 这个系数来调整原始图像中三个颜色通道之间的比例关系,从而通过把相对有点暗的区域的信息凸显出来,以达到消除图像色彩失真的缺陷。

处理后的图像局域对比度提高,而且它的亮度与真实的场景很相似,图像在人们视觉感知下显得极其逼真。

因此,MSR 算法具有较好的颜色再现性、亮度恒常性以及动态范围压缩等特性。

1.3.4 例程精讲例程1.3.1是基于Retinex理论进行雾霭天气增强的MATLAB程序,读者可结合程序及注释对基于Retinex理论进行雾霭天气增强的基本原理进行进一步分析,该程序的运行结果如图1.3-2所示。

例程1.3.1*********************************************************************** *****************clear;close all;% 读入图像I=imread('wu.png');% 取输入图像的R分量R=I(:,:,1);[N1,M1]=size(R);% 对R分量进行数据转换,并对其取对数R0=double(R);Rlog=log(R0+1);% 对R分量进行二维傅里叶变换Rfft2=fft2(R0);% 形成高斯滤波函数sigma=250;F = zeros(N1,M1);for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对R分量与高斯滤波函数进行卷积运算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr=Rlog-DRlog;% 取反对数,得到增强后的图像分量EXPRr=exp(Rr);% 对增强后的图像进行对比度拉伸增强MIN = min(min(EXPRr));MAX = max(max(EXPRr));EXPRr = (EXPRr-MIN)/(MAX-MIN);EXPRr=adapthisteq(EXPRr);% 取输入图像的G分量G=I(:,:,2);[N1,M1]=size(G);% 对G分量进行数据转换,并对其取对数G0=double(G);Glog=log(G0+1);% 对G分量进行二维傅里叶变换Gfft2=fft2(G0);% 形成高斯滤波函数sigma=250;for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对G分量与高斯滤波函数进行卷积运算DG0=Gfft2.*Ffft;DG=ifft2(DG0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DGdouble=double(DG);DGlog=log(DGdouble+1);Gg=Glog-DGlog;% 取反对数,得到增强后的图像分量EXPGg=exp(Gg);% 对增强后的图像进行对比度拉伸增强MIN = min(min(EXPGg));MAX = max(max(EXPGg));EXPGg = (EXPGg-MIN)/(MAX-MIN);EXPGg=adapthisteq(EXPGg);% 取输入图像的B分量B=I(:,:,3);[N1,M1]=size(B);% 对B分量进行数据转换,并对其取对数B0=double(B);Blog=log(B0+1);% 对B分量进行二维傅里叶变换Bfft2=fft2(B0);% 形成高斯滤波函数sigma=250;for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对B分量与高斯滤波函数进行卷积运算DB0=Gfft2.*Ffft;DB=ifft2(DB0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DBdouble=double(DB);DBlog=log(DBdouble+1);Bb=Blog-DBlog;EXPBb=exp(Bb);% 对增强后的图像进行对比度拉伸增强MIN = min(min(EXPBb));MAX = max(max(EXPBb));EXPBb = (EXPBb-MIN)/(MAX-MIN);EXPBb=adapthisteq(EXPBb);% 对增强后的图像R、G、B分量进行融合I0(:,:,1)=EXPRr;I0(:,:,2)=EXPGg;I0(:,:,3)=EXPBb;% 显示运行结果subplot(121),imshow(I);subplot(122),imshow(I0);*********************************************************************** *****************1.3-2 例程1.3.1的运行结果例程1.3.2是基于Retinex理论进行雾霭天气增强的MATLAB程序,读者可结合程序及注释对基于Retinex理论进行雾霭天气增强的基本原理进行进一步分析,该程序的运行结果如图1.3-3所示。

例程1.3.2*********************************************************************** *****************clear;close all;I=imread('wu.png');% 分别取输入图像的R、G、B三个分量,并将其转换为双精度型R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);R0=double(R);G0=double(G);B0=double(B);[N1,M1]=size(R);% 对R分量进行对数变换Rlog=log(R0+1);% 对R分量进行二维傅里叶变换Rfft2=fft2(R0);% 形成高斯滤波函数(sigma=128)sigma=128;F = zeros(N1,M1);for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对R分量与高斯滤波函数进行卷积运算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr0=Rlog-DRlog;% 形成高斯滤波函数(sigma=256)sigma=256;F = zeros(N1,M1);for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对R分量与高斯滤波函数进行卷积运算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr1=Rlog-DRlog;% 形成高斯滤波函数(sigma=512)sigma=512;F = zeros(N1,M1);for i=1:N1for j=1:M1F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));endendF = F./(sum(F(:)));% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F));% 对R分量与高斯滤波函数进行卷积运算DR0=Rfft2.*Ffft;DR=ifft2(DR0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像DRdouble=double(DR);DRlog=log(DRdouble+1);Rr2=Rlog-DRlog;% 对上述三次增强得到的图像取均值作为最终增强的图像Rr=(1/3)*(Rr0+Rr1+Rr2);% 定义色彩恢复因子Ca=125;II=imadd(R0,G0);II=imadd(II,B0);Ir=immultiply(R0,a);C=imdivide(Ir,II);C=log(C+1);% 将增强后的R分量乘以色彩恢复因子,并对其进行反对数变换Rr=immultiply(C,Rr);EXPRr=exp(Rr);% 对增强后的R分量进行灰度拉伸MIN = min(min(EXPRr));MAX = max(max(EXPRr));EXPRr = (EXPRr-MIN)/(MAX-MIN);EXPRr=adapthisteq(EXPRr);[N1,M1]=size(G);% 对G分量进行处理,步骤与对R分量处理的步骤相同,请读者仿照R分量处理的步骤进行理解。

相关文档
最新文档