数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)

一、实验目的


1 了解图像复原的意义及主要退化模型的建立;

2 掌握直接逆滤波的原理及缺点,并进行完善;

3 维纳滤波两种语法的图像复原方法及应用;

4 通过本实验掌握利用MATLAB编程实现数字图像的复原方法。


二、实验仪器


安装有MATLAB工具的计算机或个人笔记本


三、实验原理


图像的退化有多种原因,包括光学系统中的衍射、传感器非线性畸变、摄影胶片的非线性、大气湍流的扰动效应、图像运动造成的模糊、几何畸变等等。各种退化图像的复原都可归结为一种过程:把退化模型化,并且采用相反的过程进行处理,以便恢复出原图像。


1.退化模型的建立:


退化过程被建模为一个退化函数和一个加性噪声项。

0a2653c851af460fa595bd959398a8f1.png


G(u,v)=F(u,v)*H(u,v)+N(u,v)

(1)大气湍流的模型:


0eacb84100b54626af849e6b562bf92a.png

(2)运动模糊模型:

H(u,v)=T/(π(ua+vb)) sin⁡[π(ua+vb)]e^(-jπ(ua+vb))

运动模糊退化生成函数:

PSF=fspecial(‘motion’,len,theta);

其中len为移动像素个数,theta为移动方向。

2.复原方法:

(1)直接逆滤波(反向滤波法):

a. 无噪声情况:

根据

0a2653c851af460fa595bd959398a8f1.png

可得:


0eacb84100b54626af849e6b562bf92a.png


对上式进行逆变换到空间域即得到复原图像。

无噪声直接逆滤波步骤:

对退化图像(预先生成)g(x,y)进行二维傅立叶变换,得到G(u,v)。

计算系统冲激响应h(x,y)的二维傅立叶变换,求得H(u,v);

计算F(u,v);

计算F(u,v)的傅立叶反变换,求得f(x,y)。

b. 有噪声情况:

0a2653c851af460fa595bd959398a8f1.png

病态性质:

(a) H(u,v)= 0:无法确定F(u,v)

(b) H(u,v)0:放大噪声

放大噪声的原因: H(x,y)的幅值随着u,v离原点的距离的增加而迅速下降,而噪声的幅值变化则较平缓。

修正:

0eacb84100b54626af849e6b562bf92a.png

(2)维纳滤波

维纳滤波器:


2d65d23f6d4748949b924e4057485923.png


F ̂(u,v)=(H^* (u,v))/(|H(u,v)|^2+(S_n (u,v))/(S_f (u,v) )) G(u,v)

H*(u,v)是系统传递函数的复共轭;

Sn(u,v)是噪声功率谱:

Sf(u,v)是输入图像的功率谱:

维纳滤波函数:

deconvwnr

fr=deconvwnr(g,PSF); %噪信比为0

fr=deconvwnr(g,PSF,NSPR); %噪信比为常量或数组,标量输入

噪信比的算法:

(1)通过功率谱计算

SN=abs(fft2(noise)).^2;

SNA=sum(SN(: ))/numel (noise);

SF=abs(fft2(f)).^2;

SFA=sum(SF(: ))/numel(f);

NSPR=SNA/SFA;

(2)通过方差计算:方差函数:var

varn=var(noise(: )); 计算噪声方差

varf=var(f(: )); 计算信号方差

NSPR=varn/varf;


四、实验内容


1.逆滤波:选择MATLAB文件夹中的foggy图像作为实验图像。


分别用直接逆滤波法和伪逆滤波法去除大气湍流造成的图像退化。

具体步骤:

直接逆滤波:

读取图像----生成退化函数----生成退化图像(原图像频谱点乘退化函数矩阵)----逆运算(退化图像频谱点除退化函数矩阵)

伪逆滤波:

读取图像----生成退化函数----生成退化图像(原图像频谱点乘退化函数矩阵)----选取合适阈值,对退化矩阵进行修正得到修正后的退化矩阵----逆运算(退化图像频谱点除退化函数矩阵)

相关算法:


(1)生成退化函数:


大气湍流的数学模型为:


0a2653c851af460fa595bd959398a8f1.png

H(u,v)=exp(-0.0025* ( (u-M/2).2+(v-N/2).2).^(5/6) );

G(u,v)=F.*H


(2)复原


(a)直接逆滤波


F=G./H;

按照此方法编程运行后能否复原图像?试分析原因并撰写实验报告。

此方法复原出的结果较差,不能复原出原图像。不能复原出原图像的原因是对于那些里原点较远的像素点,会导致光传递函数趋近于0,从而放大噪声


(b)修正函数逆滤波


0a2653c851af460fa595bd959398a8f1.png

for u=1:M
for v=1:N
if sqrt((u-M/2).2+(v-N/2).2)<threshold
F=G./(H(u,v)+eps);
end
end
end

此段程序运行后能否复原图像?效果如何?试分析原因并撰写实验报告。

能复原出原图像,效果不错,因为我们通过阈值修正了光传递函数,从而使离原点较远的像素点设置为1,从而避免放大噪声的现象出现


2.维纳滤波复原


选择LENA图像或利用checkerboard生成棋盘图像。

(1)对测试图像用fspecial函数生成运动造成的退化图像, 用维纳滤波法进行图像复原。

(2)对(1)中的退化图像加入高斯噪声,用维纳滤波的两种语法形式(不加噪信比和加入噪信比)进行复原并显示各图像。噪信比的计算见实验原理部分介绍。观察两种复原结果是否有区别,试分析原因并写入实验报告。

附:

实验所需相关

测试图像:棋盘图像;lena或cameraman图像

常用函数:imread; rgb2gray; im2double; fspecial; imnoise; imfilter; subplot; imshow

本实验新函数:

checkerboard(N); N代表每一个方块的每一边所包含的像素。

deconvwnr(I,PSF)%维纳滤波函数,其中I为处理图像,PSF为点扩散函数亦即图像退化函数

deconvwnr(I,PSF,NSPR)%维纳滤波函数,其中I为处理图像,PSF为点扩散函数,NSPR为噪信功率比。


五、撰写实验报告


报告需包含:程序、图像、分析评价。


六、实验代码


%% 
close all
I = imread('foggysf1.jpg');
I = imcrop(I,[0,1299,512,511]);
I = rgb2gray(I);
imwrite(I,'xsa.png');
%%
I = imread('xsa.png');
I = im2double(I);
F = fft2(I);
F = fftshift(F);
[M,N] = size(I);
for i = 1:M
   for j = 1:N
       H(i,j) = exp(-0.0025* ( (i-M/2).^2+(j-N/2).^2).^(5/6) );
   end
end
G = F.*H;
g = ifftshift(G);
g = ifft2(g);
% imshow(g,[])
F1 = G./H;
f1 = ifft2(F1);
% figure
% imshow(f1)
subplot(2,2,1),imshow(I),title('原图像')
subplot(2,2,2),imshow(g,[]),title('运动退化图像')
subplot(2,2,3),imshow(abs(f1)),title('直接逆滤波')
for i = 1:M
   for j = 1:N
      if (i^2 + j^2) > 10
          H(i,j) = 1;
      end
   end
end
F1 = G./H;
f1 = ifft2(F1);
subplot(2,2,4),imshow(abs(f1)),title('修正后直接逆滤波')
%% 
% 1
I = imread('C:\Users\DELL\Desktop\lena.jpg');
A = fspecial('motion',7,45);
K = imfilter(I,A,'circular');
M = deconvwnr(K,A);
subplot(1,3,1);imshow(I);title('原图像')
subplot(1,3,2);imshow(K);title('退化图像')
subplot(1,3,3);imshow(M);title('滤波图像')
% (2)
I = imread('C:\Users\DELL\Desktop\lena.jpg');
A = fspecial('motion',15,45);
K = imfilter(I,A,'circular');
noise = imnoise(K,'gaussian',0,0.01);
SN=abs(fft2(noise)).^2;
SNA=sum(SN(:))/numel (noise);
SF=abs(fft2(I)).^2;
SFA=sum(SF(:))/numel(I);
NSPR=SNA/SFA;
M = deconvwnr(noise,A,NSPR);
subplot(131);imshow(I);
subplot(132);imshow(noise);
subplot(133);imshow(M);


七、实验截图


0a2653c851af460fa595bd959398a8f1.png0eacb84100b54626af849e6b562bf92a.png2d65d23f6d4748949b924e4057485923.png

相关文章
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
数据链中常见电磁干扰matlab仿真,对比噪声调频,线性调频,噪声,扫频,灵巧五种干扰模型
本项目展示了用于分析和模拟电磁干扰对数据链系统影响的算法。通过Matlab 2022a运行,提供无水印效果图预览。完整代码包含详细中文注释及操作视频。理论部分涵盖五种常见干扰模型:噪声调频、线性调频、噪声、扫频和灵巧干扰,详细介绍其原理并进行对比分析。灵巧干扰采用智能技术如认知无线电和机器学习,自适应调整干扰策略以优化效果。
|
2月前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
207 13
|
2月前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
3月前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
4月前
|
机器学习/深度学习 算法 数据处理
基于最小二乘法的太阳黑子活动模型参数辨识和预测matlab仿真
本项目基于最小二乘法,利用Matlab对太阳黑子活动进行模型参数辨识和预测。通过分析过去288年的观测数据,研究其11年周期规律,实现对太阳黑子活动周期性的准确建模与未来趋势预测。适用于MATLAB2022a版本。
|
4月前
|
算法
基于Kronig-Penney能带模型的MATLAB求解与仿真
基于Kronig-Penney能带模型的MATLAB求解与仿真,利用MATLAB的多种数学工具简化了模型分析计算过程。该模型通过一维周期势垒描述晶体中电子运动特性,揭示了能带结构的基本特征,对于半导体物理研究具有重要价值。示例代码展示了如何使用MATLAB进行模型求解和图形绘制。
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章