MATLAB典型去雾算法代码汇编.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间: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),其原理示意图如 图 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)做对比度增强,得到最终的结果图像 其中,是Retinex的输出,表示3个颜色谱带,是高斯滤波函数,表示尺度的权重因子,表示使用尺度的个数,=3,表示彩色图像,。=1,表示灰度图像。从公式中可以看出:MSR算法的特点是能产生包含色调再现和动态范围压缩这两个特性的输出图像。 在MSR算法的增强过程中,图像可能会因为增加了噪声而造成对图像中的局部区域色彩失真,使得物体的真正颜色效果不能很好的显现出来,从而影响了整体视觉效果。为了弥补这个缺点,一般情况下会应用带色彩恢复因子C的多尺度算法(MSRCR)来解决。带色彩恢复因子C的多尺度算法(MSRCR)]是在多个固定尺度的基础上考虑色彩不失真恢复的结果,在多尺度Retinex算法过程中,我们通过引入一个色彩因子C来弥补由于图像局部区域对比度增强而导致图像颜色失真的缺陷,通常情况下所引入的色彩恢复因子C的表达式为 其中,表示第个通道的色彩恢复系数,它的作用是用来调节3个通道颜色的比例,表示的是颜色空间的映射函数。带色彩恢复的多尺度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:N1 for j=1:M1 F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档