动态模糊图像复原MATLAB程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、退化程序
clc;
clear all;
close all;
I=imread('F:\mmw\B1\图2.jpg');%读图
figure;
subplot(4,3,1);
imshow(I);
title('原图像');
LEN=30;%运动长度30
THETA=30;%运动角度30
% LEN=60;
% THETA=60;
n=2;
for i=1:3
for j=1:3
PSF=fspecial('motion',LEN*i,THETA*j);%退化并研究运动角度和长度对图片模糊程度的影响
PSF=fspecial('motion',LEN,THETA);
Blurred=imfilter(I,PSF,'circular','conv');
subplot(4,3,n);
imshow(uint8(Blurred));
title('模糊化');
hold on
n=n+1;
end
end
%imwrite(Blurred,'模糊∠60长60.png');%保存图
2、运动角度的求解
%求解模糊运动角度matlab代码
close all;clc;clear all;
im=imread('F:\mmw\B1\模糊∠60长60.png');
img_gray=rgb2gray(im);%灰度化
img_fft=fftshift(fft2(img_gray));
N=abs(img_fft);
P=(N-min(min(N)))/(max(max(N))-min(min(N)))*225;
figure;
imshow(P);
title('频谱图(运动角度与光斑方向垂直)');
len=35;
theta=0;
PSF=fspecial('motion',len,theta);
B=imfilter(img_gray,PSF,'circular','conv');
subplot(121);imshow(B);
%模糊图像
B1=fft2(double(B));
B2=mat2gray(log(abs(B1)));
subplot(122);imshow(B2);
%模糊图像的频谱图
C=sum(B2,1);
%对频谱图求列和
[m,n]=size(C); x=0:1:n-1; y=C;
figure,plot(x,y);title('频谱列和曲线图1') %绘制频谱列和曲线图
3、运动长度算法
%求解模糊运动长度matlab代码:
im=imread('F:\mmw\B1\模糊∠60长60.png'); img_gray=rgb2gray(im);%灰度化
h=fspecial('sobel');%sobel边缘检测
img_double=double(img_gray);
J=conv2(img_double,h,'same');
IP=abs(fft2(J));
S=fftshift(real(ifft2(IP)));
figure;plot(S);
title('模糊运动长度');
4、噪声分析
%噪声分析
clc;
clear all
im=imread('F:\mmw\B1\图1.png');
[m,n,h]=size(im);
f11=ones(192,162,3);
f22=ones(130,130,3);
f33=ones(100,100,3);
f44=ones(70,70,3);
for i=1:190
for j=1:162
for k=1:3
f11(i,j,k)=im(i,j,k);
end
end
end
for i=1:130
for j=501:630
fork=1:3;
f22(i,j-500,k)=im(i,j,k);
end
end
for i=721:870
for j=11:170
for k=1:3
f33(i-720,j-10,k)=im(i,j,k);
end
end
end
for i=761:830
for j=561:630
for k=1:3
f33(i-760,j-560,k)=im(i,j,k);
end
end
end
figure;
subplot(221),hist(f11,100);
subplot(222),hist(f22,100);
subplot(223),hist(f33,100);
subplot(224),hist(f44,100);
title('噪声分析2');
5、去噪还原
clc;
clear all;
close all;
I=imread('F:\mmw\B1\图1.png');%读图
Len=60;
Theta=60;
PSF=fspecial('motion',Len,Theta); %模糊化
BlurredA=imfilter(I,PSF,'circular','conv');
wnr1=deconvwnr(BlurredA,PSF);%维纳滤波
BlurredD=imfilter(I,PSF,'circ','conv');
INITPSF=ones(size(PSF));
[K DePSF]=deconvblind(BlurredD,INITPSF,30);%盲去卷积法BlurredB=imfilter(I,PSF,'conv');
v=0.02;
Blurred_I_Noisy=imnoise(BlurredB,'gaussian',0,v);
NP=v*prod(size(I));
J=deconvreg(Blurred_I_Noisy,PSF,NP);%最小二乘法BlurredC=imfilter(I,PSF,'symmetric','conv');
v=0.002;