动态模糊图像复原MATLAB程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档