⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wien.m

📁 改进的维纳滤波的matlab代码 .m文件 直接运行
💻 M
字号:
% wien.m
%Image restoration by Wiener filter
% call from: x=wien(y,h)
%y--observer image;h--blur;x--restored image
%参考文献:反卷积和信号复原[M]6.2,6.4
function x=wien(y,h)
[m,n]=size(y);
y=double(y);
[mh nh]=size(h);
m2=2*m;
n2=2*n;
yy=zeros(m2,n2);
yy(1:m,1:n)=y;
yy(1:m,n+1:n2)=y(1:m,n:-1:1);
yy(m+1:m2,1:n2)=yy(m:-1:1,1:n2);
Y=fft2(yy);
he=zeros(m2,n2);
he(1:mh,1:nh)=h/sum(sum(h));
H=fft2(he);
HH=real(H.*conj(H));
a1=estsnr(y);%调用函数
delta=10^(-a1/10);
X=Y.*conj(H)./(HH+5*delta);
x1=real(ifft2(X));
x=x1(1:m,1:n);
x=0.5*(abs(x)+x);
xm=max(max(x));
x=(255/xm)*x;

function snr=estsnr(x)
[n,m]=size(x);
c=ones(5,5)/25;
a=conv2(x,c);
a1=a(3:n+2,3:m+2);
v=(x-a1).^2;
a=conv2(v,c);
v=a(3:n+2,3:m+2);
b=10*log10(max(max(v))/min(min(v)));
snr=1.04*b-7;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -