学士学位论文
致 谢
32
学士学位论文
附 录
电子信息科学与技术 夏笑笑
1.不同尺寸模板的均值滤波取出高斯噪声的代码如下: >>clear all
>>i=imread('cameraman.tif') >>h1=ones(3)/9 >>h2=ones(7)/49
>>j=imnoise(I,'gaussian',0,0.02) >>j=imnoise(i,'gaussian',0,0.02) >>j=double(j)
>>g1=conv2(j,h1,'same') >>g2=conv2(j,h2,'same'); >>subplot(2,2,1);
>>imshow(i); title('原始图像'); >>subplot(2,2,2);
>>imshow(j,[]); title('添加高斯噪声图像'); >>subplot(2,2,3);
>>imshow(g1,[]); title('3*3均值滤波图像'); >>subplot(2,2,4); >>imshow(g2,[]);
>>title('7*7均值滤波图像')
2.均值滤波与超限像素平滑滤波图形去噪的源代码: >>clear all
>>I=imread('cameraman.tif'); >>[m,n]=size(I); >>T=50; >>G=[]
>>H1=ones(3)/9;
>>J=imnoise(I,'salt & pepper',0.05); >>J=double(J);
>>G1=conv2(J,H1,'same'); >>for i=1:m
for j=1:n
if abs(J(i,j)-G1(i,j))>T G(i,j)=G1(i,j); else
G(i,j)=J(i,j); end end end
33
学士学位论文
>>subplot(2,2,1); >>imshow(I);
>>title('原始图像') >>subplot(2,2,2) >>imshow(J,[])
>>title('添加椒盐噪声图像'); >>subplot(2,2,3); >>imshow(G1,[]);
>>title('3*3均值滤波图像') >>subplot(2,2,4) >>imshow(G,[])
>>title('超限像素平滑图像')
3. 对高斯、椒盐、乘性噪声的图像进行中值滤波的仿真代码如下: >>clear all
>>I=imread('cameraman.tif')
>> N1=imnoise(I,'salt & pepper',0.04); >> N2=imnoise(I,'gaussian',0.02); >> N3=imnoise(I,'speckle',0.02); >> G1=medfilt2(N1); >> G2=medfilt2(N2); >> G3=medfilt2(N3); >> subplot(2,3,1); >> imshow(N1)
>> title('添加椒盐噪声图像'); >> subplot(2,3,2); >> imshow(N2)
>> title('添加高斯噪声图像'); >> subplot(2,3,3); >> imshow(N3);
>> title('添加乘性噪声图像'); >> subplot(2,3,4); >> imshow(G1);
>> title('椒盐噪声中值滤波图像'); >> subplot(2,3,5); >> imshow(G2);
>> title('高斯噪声中值滤波图像'); >> subplot(2,3,6); >> imshow(G3);
>> title('乘性噪声中值滤波图像');
4.对加入高斯噪声、椒盐噪声的图像分别作均值、维纳和中值滤波的源代码如下: >> I=imread('cameraman.tif');
34
学士学位论文
>> J2=imnoise(I,'salt & pepper',0.02); >> J1=imnoise(I,'gaussian',0,0.02); >> K= medfilt2(J1); >> K2= medfilt2(J2);
>> h=filter2(fspecial('average',3),J1)/255; >> h1=filter2(fspecial('average',3),J2)/255; >> s=wiener2(J1,[3 3]); >> s1=wiener2(J2,[3 3]);
>> subplot(3,3,1);imshow(I); >> title('原始图像');
>> subplot(3,3,2);imshow(J1); >> title('加高斯噪声图像'); >> subplot(3,3,3);imshow(J2); >> title('加椒盐噪声图像'); >> subplot(3,3,4);imshow(h); >> title('均值滤高斯噪声'); >> subplot(3,3,5);imshow(s); >> title('维纳滤高斯噪声'); >> subplot(3,3,6);imshow(K); >> title('中值滤高斯噪声'); >> subplot(3,3,7);imshow(h1); >> title('均值滤椒盐噪声'); >> subplot(3,3,8);imshow(s1); >> title('维纳滤椒盐噪声'); >> subplot(3,3,9);imshow(K1); >> title('中值滤椒盐噪声'); 5.图像的二维小波两级分解与重构
9.图像的二维小波分解与重构的代码如下: >>clear all
>>load woman2%装载图像,调用wavedec2函数,用db1小波对图像进行两级分解 >> [C,S]=wavedec2(X,2,'db1'); >>cA1=appcoef2(C,S,'db1',1);
>>cA2=appcoef2(C,S,'db1',2);%利用appcoef2和分解结构[CS]分别提取1、2层近似分量
>>cH1=detcoef2('h',C,S,1); >>cV1=detcoef2('v',C,S,1); >>cD1=detcoef2('d',C,S,1); >>cH2=detcoef2('h',C,S,2);
35
学士学位论文
>>cV2=detcoef2('v',C,S,2);
>>cD2=detcoef2('d',C,S,2); 利用deccoef2和分解结构[CS]分别提取1、2层细节分量 >>figure(1) >>image(X); >>colormap(map); >>title('原始图像') >>figure(2)
>>colormap(map); %对近似和细节部分进行显示 >>colnb=size(map,1)
>>cod_cA1=wcodemat(cA1,colnb); >>cod_cH1=wcodemat(cH1,colnb); >>cod_cV1=wcodemat(cV1,colnb); >>cod_cD1=wcodemat(cD1,colnb); >>cod_cA2=wcodemat(cA2,colnb); >>cod_cH2=wcodemat(cH2,colnb); >>cod_cV2=wcodemat(cV2,colnb); >>cod_cD2=wcodemat(cD2,colnb);
>>image([cod_cA1,cod_cH1;cod_cV1,cod_cD1]); title('第一层分解系数'); >>figure(3)
>>image([cod_cA2,cod_cH2;cod_cV2,cod_cD2]); >>colormap(map); title('第二层分解系数'); >>Xnew=waverec2(C,S,'db1') >>figure(4)
>>image(Xnew); colormap(map); title('图像重构') 6.对一维信号软硬阈值处理源代码: >>snr=3;
>> init=2055615866;
>> [xref,x]=wnoise(3,11,snr,init); >> subplot(221) >> plot(xref)
>> axis([1 2048 -10 10]) >> title('Original signal') >> subplot(223) >> plot(x)
36