反卷积复原算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
几种图像复原方法的对比
一、Richardson-Lucy 算法
R-L 算法是目前世界上应用最广泛的函数恢复技术之一,它是一种迭代方法。MATLAB 提供的deconvlucy ()函数还能够用于实现复杂图像重建的多种算法中,这些算法都基于Lucy-Richardson 最大化可能性算法。
R-L 算法是一种迭代非线性复原算法,它是从最大似然公式推导出来的,图像用泊松分布加以模型化的。当下面这个迭代收敛时模型的最大似然函数就可以得到一个令人满意的方程:
1(,)(,)(,)[
(,)](,)(,)
k k k g x y f x y f x y h x y h x y f x y ∧
∧
+∧
=⊕*
其中,*代表卷积,⊕代表相关,∧
f 代表未退化图像的估计,
g 和
h 和以前定义一样。在IPT 中,L-R 算法由名为deconvlucy 的函数完成的。
deconvlucy()函数的调用格式:J=deconvlucy(I ,PSF ,NUMIT ,DAMPAR ,WEIGHT)。其中,I 表示输入图像,PSF 表示点扩散函数。其他参数都是可选参数:NUMIT 表示算法的迭代次数,默认为10次;DAMPAR 是一个标量,它指定了结果图像与原图像I 之间的偏离阈值表,默认值为0(无衰减);WEIGHT 是一个与I 同样大小的数组,它为每一个像素分配一个权重来反映其重量,表示像素加权值,默认值为原始图像的数值。 图像复原源代码:
%% Deblurring Gray Images Using the Lucy-Richardson Algorithm
】
clc
clear
close all
I=imread('E:\'); % 彩色图像的像素为512*512
I1=rgb2gray(I); % 灰度图像的像素为512*512 % figure,imshow(I),title('Original color image');
% figure,imshow(I1),title('Original gray image');
I2=I1(1:2:end,1:2:end); % 图像的像素设置为256*256 figure,imshow(I2),title('Gray Image 256*256');
?
PSF = fspecial('gaussian',5,5); % 点扩散函数
Blurred = imfilter(I2,PSF,'symmetric','conv');
figure;
imshow(Blurred);
title('Gaussian Blurred');
V = ;
BlurredNoisy = imnoise(Blurred,'gaussian',0,V);
figure;
imshow(BlurredNoisy);
~
title('Blurred & Noisy');
K=size(I2);
WT=zeros(K);
WT(5:end-4,5:end-4)=1;
J1 = deconvlucy(BlurredNoisy,PSF);
% H1 = deconvlucy(BlurredNoisy,PSF,5); % 迭代5次% H1_cell=deconvlucy({BlurredNoisy},PSF,5);
% H2_cell=deconvlucy(H1_cell,PSF);
!
% H2=im2uint8(H2_cell{2});
J2 = deconvlucy(BlurredNoisy,PSF,5,im2uint8(3*sqrt(V))); % 迭代5次
J3 =deconvlucy(BlurredNoisy,PSF,15,im2uint8(3*sqrt(V)));% 迭代15次J4 =deconvlucy(BlurredNoisy,PSF,25,im2uint8(3*sqrt(V)));% 迭代25次J5 =deconvlucy(BlurredNoisy,PSF,40,im2uint8(3*sqrt(V)));% 迭代40次J6 =deconvlucy(BlurredNoisy,PSF,20,im2uint8(3*sqrt(V)),WT);% 迭代20次,加WT
J7 = deconvlucy(BlurredNoisy,PSF,40,im2uint8(3*sqrt(V)),WT); % 迭代40次,加WT
%
figure, imshow(J1);
title('J1:deconvlucy(A,PSF)');
~
% figure, imshow(H1); title('H1:Restored Image NUMIT=5');
% figure,imshow(H2),title('H2:Restored Image NUMIT=15');
figure, imshow(J2);
title('J2:deconvlucy(A,PSF,NUMIT=5,DAMPAR)');
figure, imshow(J3);
title('J3:deconvlucy(A,PSF,NUMIT=15,DAMPAR)');
figure, imshow(J4);
title('J4:deconvlucy(A,PSF,NUMIT=25,DAMPAR)');
figure, imshow(J5);
title('J5:deconvlucy(A,PSF,NUMIT=40,DAMPAR)');
|
figure, imshow(J6),
title('J6:deconvlucy(A,PSF,NUMIT=20,DAMPAR,WEIGHT)');
figure, imshow(J7),
title('J7:deconvlucy(A,PSF,NUMIT=40,DAMPAR,WEIGHT)');
二、维纳滤波
维纳滤波法是由Wiener首先提出的,在图像复原领域,由于维纳滤波计算量小,复原效果好,从而得到了广泛的应用和发展。维纳滤波最开始主要应用在一维信号处理里,取得了比较不错的效果。之后,维纳滤波法也用于二维信号处理中,也取得了比较好的效果。
维纳滤波器寻找一个统计误差函数: