基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码

上传人:M****1 文档编号:506350133 上传时间:2023-04-30 格式:DOCX 页数:8 大小:15.64KB
返回 下载 相关 举报
基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码_第1页
第1页 / 共8页
基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码_第2页
第2页 / 共8页
基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码_第3页
第3页 / 共8页
基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码_第4页
第4页 / 共8页
基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码》由会员分享,可在线阅读,更多相关《基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码(8页珍藏版)》请在金锄头文库上搜索。

1、页眉内容本文主要介绍基于 Retinex 理论的雾霭天气图像增强及其实现。并通过编写 两个程序来实现图像的去雾功能。1 Rentinex 理论Retinex (视网膜“ Retina”和大脑皮层“ Cortex”的缩写)理论是一种建立 在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land (埃德温?兰德)于1971 年提出的一种被称为的色彩的理论, 并在颜色恒常性的基础上提出的一种图像增 强方法。 Retinex 理论的基本内容是物体的颜色是由物体对长波 (红)、中波(绿) 和短波(蓝)光线的反射

2、能力决定的,而不是由反射光强度的绝对值决定的;物 体的色彩不受光照非均性的影响,具有一致性,即Ret inex理论是以色感一致性(颜色恒常性)为基础的。根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像: 反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。图-1 Retinex 理论示意图对于观察图像S中的每个点(x,y),用公式可以表示为:S(x,y)=R(x,y) L(x;y)(实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了 入射光L的性质从而得到物体原本该有的样子。2 基于 Retinex 理论

3、的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: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,

4、y)=exp(G(x, y);步骤五:对R(x,y)做对比度增强,得到最终的结果图像。3 多尺度 Retinex 算法D Jobson等人提出了多尺度Retinex算法,多尺度算法的基本公式是:其中,Ri(x,y )是Retinex的输出,i R,G,B表示3个颜色谱带,F (x, y)是高斯滤波函数, Wn 表示尺度的权重因子, N 表示使用尺度的个数, N =3,表示 彩色图像,i R,G,B。 N =1,表示灰度图像。从公式中可以看出: MSR算法的特点是能产生包含色调再现和动态范围压缩这两个特性的输出图像。在 MSR 算法的增强过程中,图像可能会因为增加了噪声而造成对图像中 的局部区域

5、色彩失真, 使得物体的真正颜色效果不能很好的显现出来, 从而影响 了整体视觉效果。为了弥补这个缺点,一般情况下会应用带色彩恢复因子 C 的 多尺度算法(MSRCR)来解决。带色彩恢复因子C的多尺度算法(MSRCR)是在 多个固定尺度的基础上考虑色彩不失真恢复的结果,在多尺度 Retinex 算法过程 中,我们通过引入一个色彩因子 C 来弥补由于图像局部区域对比度增强而导致 图像颜色失真的缺陷,通常情况下所引入的色彩恢复因子C的表达式为其中, Ci 表示第个通道的色彩恢复系数,它的作用是用来调节3 个通道颜色的比例, f (?) 表示的是颜色空间的映射函数。带色彩恢复的多尺度 Retinex 算

6、法 (MSRCR)通过色彩恢复因子C这个系数来调整原始图像中三个颜色通道之间 的比例关系, 从而通过把相对有点暗的区域的信息凸显出来, 以达到消除图像色 彩失真的缺陷。 处理后的图像局域对比度提高, 而且它的亮度与真实的场景很相 似,图像在人们视觉感知下显得极其逼真。因此, MSR 算法具有较好的颜色再 现性、亮度恒常性以及动态范围压缩等特性。4 例程精讲例程 1 是基于 Retinex 理论进行雾霭天气增强的 MATLAB 程序,读者可结 合程序及注释对基于 Retinex 理论进行雾霭天气增强的基本原理进行进一步分 析,该程序的运行结果如图 -2 所示。例程 1 :clear;close

7、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)=ex p(-(i-N1/2)A2+(j-M1/2)A2)/(2*sigma*sigma);endendF = F./(sum(F(:);% 对高斯滤波函数进行二维傅里叶变换 Ffft=f

8、ft2(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);%取输

9、入图像的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)=ex p(-(i-N1/2)A2+(j-M1/2)A2)/(2*sigma*sigma);endendF = F./(sum(F(:);% 对高斯滤波函数进行二维傅里叶变换Ffft=fft2(double(F);%对G分量与高斯滤波函数进行卷积运算DG0=Gfft2.*Ffft;DG=iff

10、t2(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分量进行数据转换,并对其取对数

11、B0=double(B);Blog=log(B0+1);%对B分量进行二维傅里叶变换Bfft2=fft2(B0);% 形成高斯滤波函数sigma=250;for i=1:N1for j=1:M1F(i,j)=ex p(-(i-N1/2)A2+(j-M1/2)A2)/(2*sigma*sigma); endendF = F./(sum(F(:);% 对高斯滤波函数进行二维傅里叶变换 Ffft=fft2(double(F);%对B分量与高斯滤波函数进行卷积运算DB0=Gfft2.*Ffft;DB=ifft2(DB0);% 在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像 DBdoubl

12、e=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)

13、;*图-2 例程 1的运行结果例程 2 是基于 Retinex 理论进行雾霭天气增强的 MATLAB 程序,读者可结 合程序及注释对基于 Retinex 理论进行雾霭天气增强的基本原理进行进一步分析,该程序的运行结果如图 -3 所示。例程 2 :* clear;close allI=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);

14、%对R分量进行二维傅里叶变换Rfft2=fft2(R0);% 形成高斯滤波函数( sigma=128 )sigma=128;F = zeros(N1,M1);for i=1:N1for j=1:M1F(i,j)=ex p(-(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)=ex p(-(i-N1 /2)2+(j-M1/2)2)/(2*sigma*sigma);endendF = F./(sum(F(:);% 对高斯滤波函数进行二维傅里叶变换F

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号