求大神帮忙给这段matlab程序加上注释,跪谢,急求! 30
f=imread('106_7.tif');f=im2double(f);[rc]=size(f);%设置矩阵的行列数h=fspecial('gaussian',[rc]...
f=imread('106_7.tif');
f=im2double(f);
[r c]=size(f);%设置矩阵的行列数
h=fspecial('gaussian',[r c],0.5);
g=imfilter(f,h,'circular');
a=0.1;
b=0.000000000001;
n=a+b*randn(r,c);
g=g+n;
F=fft2(f);
G=fft2(g);
H=psf2otf(h);
N=fft2(n);
H2=conj(H).*H;
N2=conj(N).*N;
F2=conj(F).*F;
NF=N2./F2;
huv=H2./(H2+NF);
tuv=(1./(H+eps)).*huv;
RA=tuv.*G;
ra=real(ifft2(RA));
MN=sum(sum(N2));
MF=sum(sum(F2));
sr=MN/MF;
huv=H2./(H2+sr);
tuv=(1./(H+eps)).*huv;
RC=tuv.*G;
rc=real(ifft2(RC));
figure,imshow(f);title('原始图像');
figure,imshow(rc);title('降噪图像') 展开
f=im2double(f);
[r c]=size(f);%设置矩阵的行列数
h=fspecial('gaussian',[r c],0.5);
g=imfilter(f,h,'circular');
a=0.1;
b=0.000000000001;
n=a+b*randn(r,c);
g=g+n;
F=fft2(f);
G=fft2(g);
H=psf2otf(h);
N=fft2(n);
H2=conj(H).*H;
N2=conj(N).*N;
F2=conj(F).*F;
NF=N2./F2;
huv=H2./(H2+NF);
tuv=(1./(H+eps)).*huv;
RA=tuv.*G;
ra=real(ifft2(RA));
MN=sum(sum(N2));
MF=sum(sum(F2));
sr=MN/MF;
huv=H2./(H2+sr);
tuv=(1./(H+eps)).*huv;
RC=tuv.*G;
rc=real(ifft2(RC));
figure,imshow(f);title('原始图像');
figure,imshow(rc);title('降噪图像') 展开
1个回答
展开全部
f=imread('cameraman.tif'); % 读图
f=im2double(f); % 转化为double型数据
[r c]=size(f);%设置矩阵的行列数,图的大小
h=fspecial('gaussian',[r c],0.5); % 模糊核
g=imfilter(f,h,'circular'); % 图像模糊
a=0.1;
b=0.000000000001;
n=a+b*randn(r,c); % 噪声,均值为0.1,方差为b^2
g=g+n; % 模糊图像加噪声
F=fft2(f); % 清晰图像频谱
G=fft2(g); % 加噪图像频谱
H=psf2otf(h); % PSF->OTF
N=fft2(n); % 噪声频谱
H2=conj(H).*H;
N2=conj(N).*N;
F2=conj(F).*F;
NF=N2./F2; % 噪信比
huv=H2./(H2+NF);
tuv=(1./(H+eps)).*huv; % 频域滤波器
RA=tuv.*G;
ra=real(ifft2(RA)); % 降噪图像
MN=sum(sum(N2));
MF=sum(sum(F2));
sr=MN/MF;
huv=H2./(H2+sr);
tuv=(1./(H+eps)).*huv; % 另一个频域滤波器
RC=tuv.*G;rc=real(ifft2(RC)); % 另一幅降噪图像
figure,imshow(f);title('原始图像');
追问
大神,这个程序通不?
追答
你的噪声方差太小了,看不出加了噪声的。程序大致通吧,用了两个去噪声的办法,得到了两幅去噪图像,但去噪效果不一定好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询