(四)实验4 图像复原
一、实验主题
学习图像复原的相关原理及实现方法,并掌握逆滤波、维纳滤波的原理与程序实现。
二、实验目的
1.掌握图像复原的基本原理和方法。
2.学习使用程序设计环境。
3.使用设计框架构造应用程序。
4.掌握逆滤波、维纳滤波的原理和实现。
三、实验要求
对图像进行退化处理,如加噪、运动干扰等,根据退化模型设计复原滤波器,如逆滤波、维纳滤波,对图像进行复原,对比原始图、退化图、复原图对复原效果进行评估。
四、实验平台
1、编程平台:MATLAB R2020b
2、编程语言:matlab
五、实验代码
1、图像复原主代码:
% 图像复原
function ImageRestore()
img=imread('lena.bmp');
%图像归一化
img=double(img)/double(max(img(:)));
% img = imnoise(img,'gaussian', 0, 0.001); %加噪
%运动模糊,产生一个沿着theta方向运动长度l的卷积核
l=40;
theta=30;
blur=fspecial('motion', l, theta);
blur=fspecial('disk', 100); % 'average'正方形模板 'disk'圆盘模板均值模糊
% imshow(blur,[]);
% imshow(ifft2(fft2(blur,512,512)),[]);
%对图像进行卷积滤波,产生退化图像
degenerate = imfilter(img, blur, 'conv', 'circular');
% degenerate = imnoise(degenerate,'gaussian', 0, 0.0001); %加噪
% degenerate=LFPFilter(degenerate,80); %低通滤波
%采用 deconvwnr 维纳滤波对图像进行复原,deconvreg 最小二乘,deconvlucy使用lucy richard恢复
restore = deconv2(degenerate, blur);
% restore = deconvwnr(degenerate, blur,0.005);
% restore1=LFPFilter(restore,30); %低通滤波
% restore2=ButtLFPFilter(restore,30,10); %巴特沃兹低通滤波
figure
imshow(img,[]);
figure
imshow(degenerate,[]);
figure
imshow(restore,[]);
% figure
% imshow(restore1,[]);
% figure
% imshow(restore2,[]);
end
2、逆滤波相关代码:
%逆滤波
function restore = deconv2(img,blur)
[r,c]=size(img);
f=fft2(img);
blur1=imresize(blur,r,c);
blur1=imshift(blur1,-floor(size(blur)/2));
fb=fft2(blur1);
fmax=max(abs(fb(:)));
for i=1:r*c
if abs(fb(i))<fmax*1e-4
fb(i)=fmax*1e-4;
end
end
f=f./fb;
restore=ifft2(f);
end
%图像尺寸调整到row*col
function Img = imresize(img,row,col)
[r,c]=size(img);
Img=img;
if row>r
Img=[Img;zeros(row-r,c)];
end
if row<r
Img(row+1:end,:)=[];
end
if col>c
Img=[Img,zeros(row,col-c)];
end
if col<c
Img(:,col+1:end)=[];
end
end
%图像平移(周期延拓处理)
function Img = imshift(img,t)
[r,c]=size(img);
Img=img;
for i=1:r
for j=1:c
Img(mod(i+t(1)-1+r,r)+1,mod(j+t(2)-1+c,c)+1)=img(i,j);
end
end
end
六、实验结果
图1 原始图像
图2 退化图像
图3-1 逆滤波处理后图像
图3-2 维纳滤波(nsr=0.005)处理后图像
图3-3 维纳滤波(nsr=0.00000005)处理后图像
图3-4 维纳滤波(nsr=0)处理后图像
图3-5 理想低通滤波处理后图像
图3-6 巴特沃兹低通滤波处理后图像
七、实验心得
在本次实验过后,我们学习了图像复原的基本原理,与一些基础的图像复原方法,其中我们重点学习了逆滤波与维纳滤波的相关原理与应用方法,并且受益匪浅。下面是对本节学习内容的一些补充:
1、图像复原:
1.1 图像复原的基本概念
图像复原的前提是图像退化,图像退化是指图像在形成、记录、处理、传输过程中由于成像系统、记录设备、处理方法和传输介质的不完善,导致的图像质量下降。具体来说,常见的退化原因大致有:
成像系统的像差或有限孔径或存在衍射;
成像系统的离焦;成像系统与景物的相对运动;
底片感光特性曲线的非线性;
显示器显示时的失真;
遥感成像中的大气散射和大气扰动;
遥感摄像机的运动和扫描速度不稳定;
系统各个环节的噪声干扰;
模拟图像数字化引入的误差等。
图像复原与图像增强相似,两者都是要得到在某种意义上改进的图像,或者说,希望改进输入图像的质量。两者的不同之处是图像增强技术一般要借助人的视觉系统的特性,以取得较好的视觉效果,而视觉效果质量的评价标准是主观的。
图像增强的目标是多样的。而图像复原则认为图像在某种情况下退化或恶化了,使得图像品质出现下降,现在需要根据相应的退化模型和知识重建或恢复原始的图像。因此,图像复原的目标是原始的反应真实物体或场景的图像,这是客观存在的,不以主观意志为转移。图像复原通过概率估计或先验知识千方百计地去还原图像的本来面貌。
1.2 图像复原的一般模型
对于退化的复原,一般可采用两种方法。
给出一幅退化图像,如果已知其退化的过程信息,那么对图像执行该过程的逆操作即可恢复图像。建立恰当的模型之后,使用某种概率准则对几个参数进行估计即可,此时复原变为一个检测问题。
假如退化的过程不可知或无法精确获得,则可对退化过程(模糊和噪声)建立模型,进行描述,并进而寻找一种去除或削弱其影响的过程,是一种估计方法。
一般将图像的退化过程模型化为一个退化函数和一个加性噪声项。设原始输入图像为f ( x , y ) f(x, y)f(x,y),退化函数为h ( x , y ) h(x, y)h(x,y),加性噪声为n ( x , y ) n(x, y)n(x,y),产生的退化图像为g ( x , y ) g(x, y)g(x,y),复原滤波后重建的复原图像为f ^ ( x , y ) \hat{f}(x, y)f^(x,y)。退化和复原过程如下:
如果系统H HH是一个线性、位置不变性的过程,那么在空间域中给出的退化图像可由下式给出:
其中( ∗ ) (*)(∗)表示空间卷积。由数字信号处理的知识可知,空域卷积在频域上可用乘积表示,因此上式等价于以下的频域表达式:
在进行图像复原时既可以在空间域,也可以在频域中进行,根据具体问题采用方便有效的一种方式即可。空间域的处理使用卷积,频域的处理使用相乘实现。
2、逆滤波:
图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过。这里不再详述,只给出物理模型,这里我们仍在频率域表示
G(u,v)=H(u,v)F(u,v)+N(u,v)(1)
其中提到最简单的复原方法是直接做逆滤波(Inverse filter)。
F^(u,v)=G(u,v)/H(u,v)(2)
该除法是阵列操作,即按位除。
在含有噪声情况下,将(1)式两端除以H(u,v)
F^(u,v)=F(u,v)+N(u,v)/H(u,v)(3)文章来源:https://www.toymoban.com/news/detail-477858.html
这里N(u,v)未知,式子表明,即使知道退化函数也不能准备复原图像。还有当退化函数 H(u,v)是零或者非常小的值,则N(u,v)/H(u,v)很容易支配整个式子。
3、维纳滤波:
逆滤波在图像没有噪声的情况下是很好的,但在有噪声的情况下,噪声会被放大,所以维纳滤波就横空出世了,维纳滤波能很好的解决有噪声的图像修复。
维纳滤波是诺波特·维纳在二十世纪四十年代提出的一种滤波器,即假定线性滤波器的输入为有用信号和噪声之和,两者均为广义平稳过程且知道它们的二阶统计特性,根据最小军方误差准则(滤波器的输出信号与需要信号之差的均方值最小),求得最佳线性滤波器的参数。
维纳滤波器是一种自适应最小均方差滤波器。维纳滤波的方法是一种统计方法,它用的最优准则是基于图像和噪声各自的相关矩阵,它能根据图像的局部方差调整滤波器的输出,局部方差最大,滤波器的平滑作用就越强。
公式如下:
其中戴帽子的f为我们维纳滤波后的图像,f为清晰的原始图像,g为待恢复的模糊图像(g上式没有,写出来为了说明的完整性)。
这里戴帽子的f我们是不知道的,所以我们要根据这个优化式子求出f~。
具体的推导过程这里不写,因为我也只看了个大概。
求解的结果为:
其中,G(u,v)是退化图形的傅里叶变换;
H(u,v)是退化函数;
p n ( u , v ) = ∣ N ( u , v ) ∣ 2 p_n(u,v)=|N(u,v)|^2pn(u,v)=∣N(u,v)∣2是噪声的功率谱;
P f ( u , v ) = ∣ F ( u , v ) ∣ 2 P_f(u,v)=|F(u,v)|^2Pf(u,v)=∣F(u,v)∣2是原始图像的功率谱;
s = 1 λ s=\frac{1}{λ}s=λ1,λ为一常数,是拉格朗日乘数。
之前有说过维纳滤波需要知道原始图像和噪声的二阶统计特性,即要知道关于图像和噪声的先验知识,比如p f ( u , v ) , p n ( u , v ) p_f(u,v),p_n(u,v)pf(u,v),pn(u,v),但是这恰恰也是我们不知道的,这也是维纳滤波器的局限所在,我们一般将上述两个公式的比值看做是常数带入进行计算,如下所示:
这是一种无可奈何的粗糙的近似,但是当噪声为白噪声即其功率谱为常数的时候,这种近似效果很不错。
为了强化维纳滤波器的效果“基于维纳滤波的图像复原”这篇论文提出了两次维纳滤波的方法,第一次维纳滤波求出一个近似图像,然后由近似图像的和模糊图像估计噪声和原始图像的先验知识,最后根据该先验知识进行再次的维纳滤波。
“Lucy - Richardson 与维纳滤波算法比较分析”,这篇文章指出在先加模糊函数在加噪声的情况下,维纳滤波的表现比LR滤波器的表现更为良好。
在“维纳滤波图像复原技术的研究与改进”这篇文章中,作者指出,维纳算法可实现最小均方差复原,当图像的频率特性和噪声已知时,维纳滤波的效果较好;在峰值信噪较低时效果不好。这时由于三个问题限制了它的有效性。首先维纳滤波采用均方误差(MSE)准则,该准则对所有的误差(不管其在图像中的位置)都赋予同样的权,而人眼对暗处和高梯度区域的误差比其他区域的误差有较大的容忍性,所以,维纳滤波以一种并非适合人眼的方式对图像进行了平滑(第一个公式即求均方误差最小);其次,维纳滤波假设退化模型为线型空间不变系统,它不能处理具有空间可变点扩散函数的情形(比如物体运动不是匀速或者匀加速);最后,由于基于平稳随机场的模型,维纳滤波 不能处理有着非平稳信号和噪声的一般情形,大部分图像都是高度非平稳的,有着陡峭边缘分开的大块平坦区域(对非平稳过程而言,均值和方差是无法通过统计得到的,因为它们会随时间而变化)。文章来源地址https://www.toymoban.com/news/detail-477858.html
到了这里,关于数字图像处理报告:实验4 图像复原的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!