急急急!图像逆滤波与维纳滤波的程序代码(matlab)

急急急!图像逆滤波与维纳滤波的程序代码(matlab),第1张

clcclear all

%读原始图像埋哗%

format long

Blurred=imread('fig525(b).bmp')

subplot(1,2,1)imshow( Blurred)title('原图像')

%自编函数进行维纳滤波%

k=0.0025

[m,n]=size(Blurred)

spectrum=zeros(m,n)

H=zeros(m,n)

for u=1:m

for v=1:n

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

spectrum(u,v)=H(u,v)^2

end

end

f=double(Blurred)

F1=fftshift(fft2(f))

HW=H./(spectrum+0.001)

restore1=HW.*F1

restored=real(ifft2(ifftshift(restore1)))

subplot(1,2,2)imshow(restored,[])title('自编函数进行维纳滤波')

%调用matlab提供的维纳滤波函数%

figure

hw1=real(ifft2(ifftshift(H)))%转化到空域前液隐上来

result1=deconvwnr(Blurred,hw1,0.001)

result2=ifftshift(result1)%再去图像进行1,3象限对调,2与4象限对慧厅调

subplot(1,2,1)imshow(result2,[])title('调用维纳滤波函数')

好多人回答啊!

图像求反两种方法都可以

>> g1=imgdjust(f,[0 1],[1 0])%f为输入图像,此为第一种方法

>> g2=imcomplement(f)%f同样为输入图像,此为第二种方郑迅法

至于邻域均值嘛,主要肢丛激用 fspecial和imfilter 两个函数,具体可以看一下帮助 ^_^

下面的两个例子分别用正方形和圆形的模板进行邻域均值。

>>w1=fspecial('average') %产生一个3x3大小的方形平均滤波模板w1

>>g1=imfilter(f,w1,'replicate') % g1为处理后的图像。'replicate'指卷积填充边缘时用复制边界历袜的值来扩展。

>>w2=fspecial('disk') %产生一个半径为5的圆形平均滤波模板w2

>>g2=imfilter(f,w2,'replicate') % 同样,g2为处理后的图像,'replicate'指卷积填充边缘时用复制边界的值来扩展。


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

原文地址: http://outofmemory.cn/yw/8225302.html

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

发表评论

登录后才能评论

评论列表(0条)

保存