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

合集下载

基于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绪论图像作为人类感知世界的主要视觉基础,是人类获取信息以及表达信息的重要方法。

图像去雾----暗通道

图像去雾----暗通道

图像去雾----暗通道暗通道去雾算法原理及实现1. 算法原理。

基本原理来源于何凯明⼤神的CVPR09的论⽂暗通道。

所谓暗通道是⼀个基本假设,这个假设认为,在绝⼤多数的⾮天空的局部区域中,某⼀些像素总会有⾄少⼀个颜⾊通道具有很低的值。

这个其实很容易理解,实际⽣活中造成这个假设的原因有很多,⽐如汽车,建筑物或者城市中的阴影,或者说⾊彩鲜艳的物体或表⾯(⽐如绿⾊的树叶,各种鲜艳的花,或者蓝⾊绿⾊的睡眠),颜⾊较暗的物体或者表⾯,这些景物的暗通道总是变现为⽐较暗的状态。

所以暗通道是什么呢?其实⽐较简单,作者认为暗通道是:暗通道先验理论指出:暗通道实际上是在rgb三个通道中取最⼩值组成灰度图,然后再进⾏⼀个最⼩值滤波得到的。

我们来看⼀下有雾图像和⽆雾图像暗通道的区别:可以发现,有雾的时候会呈现⼀定的灰⾊,⽽⽆雾的时候咋会呈现⼤量的⿊⾊(像素为接近0),作者统计了5000多副图像的特征,基本都符合这样⼀条先验定理。

雾图形成模型计算机视觉中,下⾯这个雾图形成模型是被⼴泛使⽤的:其中I(x)是现有的图像(待去雾),J(x)是要恢复的原⽆雾图像,A是全球⼤⽓光成分,t(x)是透射率,现在的条件就是已知I(x),来求J(x),显然不加任何限制的话是有⽆穷多个解的。

但是现实⽣活中,即使是晴天⽩云,空⽓中也会存在⼀些颗粒,看远⽅的物体还是能够感觉到雾的影响,另外,雾的存在可以让⼈们感觉到景深的存在,所以我们保留⼀部分的雾,上式修正为:其中w是[0-1]之间的⼀个值,⼀般取0.95差不多。

上⾯的推导都是假设全球⼤⽓光是已知的,实际中,我们可以借助暗通道图来从有雾图像中来获取该值:1. 从暗通道图中按照亮度⼤⼩取前0.1%的像素。

2. 在这些位置中,在原始图像中寻找对应具有最⾼亮度点的值,作为A值。

到这⾥,我们就可以进⾏⽆雾图像的恢复了:当投射图t很⼩时,会导致J的值偏⼤,会导致图⽚某些地⽅过爆,所以⼀般可以设置⼀个阈值来限制,我们设置⼀个阈值:⼀般设置较⼩,0.1即可。

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

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

作者: 张道华[1]
作者机构: [1]亳州学院电子与信息工程系,安徽亳州236800
出版物刊名: 通化师范学院学报
页码: 1-6页
年卷期: 2019年 第4期
主题词: Matlab;图像增强;去雾系统;三种算法
摘要:为了实现雾天图像的增强,采用Matlab对集成直方图均衡化、Retinex、暗通道优先三种雾天图像清晰化处理算法的去雾系统进行软件实现,不仅能够对这三种算法的最终结果和中间产物进行输出,还能够对这三种算法的算法效率和算法结果进行直观数字的对比.实验表明,三种算法各有优缺点,实际应用中可根据需要选取适当的算法.该系统的设计可为其他去雾算法的研究提供技术参考.。

烟雾检测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命令汇总

MATLAB命令汇总

MATLAB命令汇总1.基本运算:-`+`:加法运算-`-`:减法运算-`*`:乘法运算-`/`:除法运算-`^`或`**`:幂运算- `sqrt(`: 平方根函数- `exp(`: 指数函数- `log(`: 对数函数2.矩阵和向量:- `zeros(`: 创建全零矩阵- `ones(`: 创建全一矩阵- `eye(`: 创建单位矩阵- `rand(`: 创建随机矩阵- `diag(`: 提取矩阵的对角线元素- `transpose(`或`'`: 转置矩阵- `det(`: 求矩阵的行列式- `inv(`: 求矩阵的逆矩阵- `trace(`: 求矩阵的迹3.数据处理和统计函数:- `mean(`: 求平均值- `median(`: 求中位数- `std(`: 求标准差- `var(`: 求方差- `sort(`: 排序- `histogram(`: 绘制直方图- `corrcoef(`: 计算相关系数矩阵- `cov(`: 计算协方差矩阵- `unique(`: 去掉重复元素4.数据可视化:- `plot(`: 绘制二维折线图- `scatter(`: 绘制散点图- `bar(`: 绘制柱状图- `hist(`: 绘制直方图- `pie(`: 绘制饼图- `imagesc(`: 绘制热图- `contour(`: 绘制等高线图- `surf(`: 绘制三维曲面图5.逻辑和条件语句:- `if`: 条件判断语句- `else`: 条件判断的可选分支- `elseif`: 多个条件判断的中间分支- `while`: 循环语句- `for`: 循环语句- `break`: 跳出循环- `continue`: 跳过本次循环6.文件和数据输入输出:- `load(`: 从文件加载数据- `save(`: 将数据保存到文件- `fopen(`: 打开文件- `fclose(`: 关闭文件- `fprintf(`: 格式化输出到文件- `fscanf(`: 从文件按格式读取数据7.函数和脚本文件:- `function`: 定义函数- `script`: 脚本文件- `input(`: 从命令行输入数据- `disp(`: 显示结果或变量值- `return`: 返回函数结果- `clear(`: 清除变量或内存- `clc(`: 清除命令窗口内容以上是一些常用的MATLAB命令和函数的汇总,这只是冰山一角,MATLAB还提供了许多其他功能和扩展性更强的函数和工具箱,可以根据不同的需求进行更详细的学习和使用。

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

  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分量处理的步骤进行理解。

相关文档
最新文档