matlab中,关于图像复原中的维纳滤波问题

matlab中,关于图像复原中的维纳滤波问题,第1张

clear

I=imread('img_orignal.tif')

figure

subplot(2,2,1)imshow(I)title('

图像

')

[m,n]=size(I)F=fftshift(fft2(I))

k=0.005

for u=1:m

for v=1:n

H(u,v)=exp((-k)*(((u-m/2)^2+(v-n/2)^2)^(5/6)))

end

end

G=F.*H

I0=real(ifft2(fftshift(G)))

I1=imnoise(uint8(I0),'gaussian',0,0.001)

subplot(2,2,2)imshow(uint8(I1))title('模糊退化且添加高斯噪声的图像')

F0=fftshift(fft2(I1))

K=0.1

for u=1:m

for v=1:n

H(u,v)=exp(-k*(((u-m/2)^2+(v-n/2)^2)^(5/6)))

H0(u,v)=(abs(H(u,v)))^2

H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K))

end

end

F2=H1.*F0

I2=ifft2(fftshift(F2))

subplot(2,2,3)imshow(uint8(I2))title('维纳滤波复原图')

PSF

=

fspecial('motion',len,ang)

%建立扩散子,其中len是模糊长度,ang是模糊角度

img2=deconvlucy(img,PSF,n)

%用lucy-richardson方法复原图像,其中img是运动模糊图像,PSF是扩散子,n是迭代次数,img2是复原图像

h=imread('C:\Users\CRD\Desktop\robot\Images\lena.tif')

c=mat2gray(h)

figure,imshow(c),title('原始图象')%显示原始图象

g=imnoise(c,'gaussian',0,0.01) %加入高斯噪声

figure,imshow(g),title('加入高斯噪声之后的图象') %显示加入高斯噪声之后的图象n3=input('请输入高斯滤波器的均值\n')

k=input('请输入高斯滤波器的方差\n')

A2=fspecial('gaussian',k,n3) %生成高斯序列

Y5=filter2(A2,g)/255 %用生成的高斯序列进行滤波

figure,imshow(Y5),title('用Matlab函数进行高斯滤波之后的结果') %显示滤波后的图象


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8024032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存