基于MATLAB的图像模糊复原系统
源码如下:
- 退化程序
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');%保存图
- 运动角度的求解
%求解模糊运动角度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);
%模糊图像的频谱图
C=sum(B2,1);
%对频谱图求列和
[m,n]=size(C); x=0:1:n-1; y=C;
figure,plot(x,y);title('频谱列和曲线图1')
%绘制频谱列和曲线图
- 运动长度算法
%求解模糊运动长度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_doub