数字图像处理【冈萨雷斯】(第二版)图像复原与重建 学习笔记

噪声模型

使用imnoise函数对图像添加噪声

f=imread('pout.tif');
g1=imnoise(f,'gaussian');
g2=imnoise(f,'salt & pepper');
g3=imnoise(f,'speckle');
figure,subplot (221),imshow(f,[]),title('原图像');
subplot(222),imshow(g1,[]),title('高斯污染噪声');
subplot(223),imshow(g2,[]),title('椒盐');
subplot(224),imshow(g3,[]),title('乘性噪声');

周期噪声

C1=[0 64;0 128;32 32;64 0;128 0;-32 32];
[r1,R1,S1]=imnoise3(512,512,C1);
figure,subplot(231);imshow(S1,[]),title('C1,A=1脉冲');
subplot(234),imshow(r1,[]),title('C1,A=1空间正弦噪声')

C2=[0 32;0 64;16 16;32 0;64 0;-16 16];
[r2,R2,S2]=imnoise3(512,512,C2);
subplot(232);imshow(S2,[]),title('C2,A=1脉冲');
subplot(235),imshow(r2,[]),title('C2,A=1空间正弦噪声')

C3=[6 32;-2 2];
[r3,R3,S3]=imnoise3(512,512,C3);
subplot(233),imshow(r3,[]),title('C3,A=-1空间正弦噪声')

A4=[1 5];
[r4,R4,S4]=imnoise3(512,512,C3,A4);
subplot(236),imshow(r4,[]),title('C3,A=[1 5]空间正弦噪声')

估计噪声

f=imread('pout.tif');
[B,c,r]=roipoly(f);
[h,npix]=histroi(f,c,r);
figure,subplot(221),imshow(f),title('原图像');
subplot(222),imshow(B),title('Rio');
subplot(223),bar(h,1),title('ROI 直方图');

[v,unv]=statmoments(h,2);
X=imnoise2('gaussian',npix,1,147,20);
subplot(224),histogram(X,130),title('高斯噪声直方图');

仅有噪声的复原

空间噪声滤波器

f=imread('pout.tif');
[M,N]=size(f);
R=imnoise2('salt & pepper',M,N,0.1,0);
c=find(R==0);
gp=f;
gp(c)=0;

R=imnoise2('salt & pepper',M,N,0,0.1);
c=find(R==1);
gs=f;
gs(c)=255;
fp=spfilt(gp,'chmean',3,3,1.5);
fs=spfilt(gs,'chmean',3,3,-1.5);



fpmax=spfilt(gp,'max',3,3);
fsmin=spfilt (gs,'min',3,3);
subplot(3,2,1);imshow(gp);title('仅胡椒');
subplot(3,2,2);imshow(gs);title('仅盐粒');
subplot(3,2,3);imshow(fp);title('Q=1.5');
subplot(3,2,4);imshow(fs);title('q=-1.5');
subplot(3,2,5);imshow(fpmax);title('最大滤波器处理椒盐');
subplot(3,2,6);imshow(fsmin);title('最小滤波器处理盐粒');

算术均值与几何滤波

f=imread('pout.tif');
f=im2double(f);
figure(1),subplot(221),imshow(f,[]),title('原图像');
[M,N]=size(f);
n1=imnoise2('gaussian',M,N,147/255,29/255);
f1=f+n1;
subplot(222),imshow(f1,[]),title('高斯滤波结果');
g11=spfilt(f1,'amean');
subplot(223),imshow(g11,[]),title('算术均值滤波结果');
g22=spfilt(f1,'gmean');
subplot(224),imshow(g22,[]),title('几何滤波结果');

调谐与反调谐滤波

n2=imnoise2('salt & pepper',M,N,0,0.1);
f2=f+n2;
figure(2),subplot(221),imshow(f2,[]),title('椒盐噪声污染');
f22=spfilt(f2,'chmean',3,3,1.5);
subplot(222),imshow(f22,[]),title('Q>1.5反调和滤波结果');
n3=imnoise2('salt & pepper',M,N,0,0.1);
f3=f+n2;
subplot(223),imshow(f3,[]),title('盐燥声污染');
f33=spfilt(f3,'chmean',3,3,-1.5);
subplot(224),imshow(f33,[]),title('Q<1.5反调和滤波结果');

中值滤波

n4=imnoise2('salt & pepper',M,N,0,0.1);
f4=f+n4;
figure(5),subplot(231),imshow(f4,[]),title('椒盐噪声污染');
g51=spfilt(f4,'chmean',3,3,1.5);
subplot(232);imshow(g51,[]);title('Q>反调和');
g52=spfilt(f4,'chmean',3,3,-1.5);
subplot(233);imshow(g52,[]);title('Q<反调和'); 
g53=spfilt(f4,'max',3,3);
subplot(234);imshow(g53,[]);title('最大值滤波'); 
g54=spfilt(f4,'min',3,3);
subplot(235);imshow(g54,[]);title('最小值滤波'); 
g55=spfilt(f4,'median',3,3);
subplot(236);imshow(g55,[]);title('中值滤波'); 

中点滤波

n5=imnoise2('uniform',M,N,-0.1,0.1);
f5=f+n5;
figure(6),subplot(121),imshow(f5,[]),title('均匀噪声污染');
g6=spfilt(f4,'midpoint',3,3);
subplot(122);imshow(g6,[]);title('中点滤波结果');

阿尔法滤波

f6=f+n4+n1;
figure(7),subplot(121),imshow(f6,[]),title('盐燥声和高斯噪声污染');
g7=spfilt(f6,'atrimmed',3,3,2);
subplot(122);imshow(g7,[]);title('修正阿尔法滤波结果');

退化图像

退化图像

f=imread('pout.tif');
f=im2double(f);
figure,subplot(221),imshow(f,[]),title('原图像');
PSF=fspecial('motion',56,65);
f2=imfilter(f,PSF,'circular');
subplot(222),imshow(f2,[]),title('运动模糊');
n=imnoise2('gaussian',size(f,1),size(f,2),0,sqrt(0.0001));
subplot(223),imshow(n,[]),title('高斯图像');
f3=f2+n;
subplot(224),imshow(f3,[]),title('退化图像');

退化图像的还原

frest1=deconvwnr(f3,PSF);
figure,subplot(221),imshow(f3),title('退化图像');
subplot(222),imshow(frest1,[]),title('逆滤波图像');

Sn=abs(fft2(n)).^2;
nA=sum(Sn(:))/numel(Sn);
Sf=abs(fft2(f)).^2;
fA=sum(Sf(:))/numel(Sf);
R=nA/fA;
frest2=deconvwnr(f3,PSF,R);
subplot(223),imshow(frest2,[]),title('常数比维纳');

NCORR=fftshift(ifft2(Sn));
ICORR=fftshift(ifft2(Sf));
frest3=deconvwnr(f3,PSF,NCORR,ICORR);
subplot(224),imshow(frest3,[]),title('自相关函数维纳滤波')

注意:实验图片为二维灰度图片,你的本机matlab 软件可能缺少相关函数文件,相关文件已附载

为学习笔记,如有错误,请指教,谢谢

为更好学习对代码段进行了分割展示,部分只引入了一次图片(怕麻烦),调试时注意哦

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值