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的户外监控图像去雾及清晰化处理方案,旨在提高户外监控图像的质量和清晰度。
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典型去雾算法代码..

本节主要介绍基于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实现

视频图像增强和去雾算法说明摘要 本文档介绍夜间增强和去雾增强算法及其实现。
(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代码

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;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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分量处理的步骤进行理解。