要求模糊图像:频域圆边界 + 高斯模糊
不是专业学图像处理的,就是用一下。
%mathematica建表
\[Alpha] = 1/2;
i = 1;
j = 1;
\[Beta] = 8;
v = Range[-0.6, 0.6, 0.00012];
starttime = TimeUsed[]
LUTw = Table[
Minimize[Abs[w]^(1/2) + \[Beta]/2*(w - v[[j]])^2, w], {j, 10001}];
Dimensions[LUTw];
findw = LUTw[[All, 2]];
findw = w /. findw //结果
Dimensions[m];
overtime = TimeUsed[] - starttime
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%matlab程序
function [I] = deblurring_adm_aniso(B, k)
B=imread('图像绝对路径');
w=xlsread('表');
len=41;
theta=0;
k=fspecial('motion',len,theta);
B=B(:,:,1);
imshow(B);
figure;
I=B;
[hang,lie]=size(I);
beta=256;
gamma=600/beta;
Ix=[diff(I,1,2),I(:,1)-I(:,lie)];
Iy=[diff(I,1,1);I(1,:)-I(hang,:)];
[Nomin1,Denom1,Denom2,FFx,FFy]=mine(I,k,Ix,Iy);
Denom = gamma.*Denom1 + Denom2;
vx=double(Ix)/255.0;
for i=1:hang;
for j=1:lie
[~,Index] =min(abs(w-vx(i,j)));%Index
wx(i,j)=w(Index);
end
end
vy=fix(double(Iy))/255.0;
for i=1:hang;
for j=1:lie
[~,Index] =min(abs(w-vy(i,j)));%Index
wy(i,j)=w(Index);
end
end
Wx=fft2(wx);
Wy=fft2(wy);
Fyout=(conj(FFx).*Wx+conj(FFy).*Wy+gamma.*(Nomin1))./Denom;
Iout=uint8(real(ifft2(Fyout)));
imshow(Iout);
function[Nomin1,Denom1,Denom2,FFx,FFy]=mine(y,k,ix,iy);
sizey=size(y);
otfk=psf2otf(k,sizey);
Nomin1=conj(otfk).*fft2(y);
Denom1=abs(otfk).*conj(abs(otfk));
FFx=abs(conj(psf2otf([1,-1],sizey)));
FFy=abs(conj(psf2otf([1;-1],sizey)));
Denom2=abs(psf2otf([1,-1],sizey)).*abs(conj(psf2otf([1,-1],sizey)))+abs(psf2otf([1;-1],sizey)).*abs(conj(psf2otf([1;-1],sizey)));


有效。