资源描述:
《数字图像处理 实验报告四.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四空域滤波一,实验目的:实现图像的线性滤波和非线性滤波变换二,实验条件1,MATLAB软件2,典型的灰度,彩色图像。三,实验原理均值滤波是在空间域对图象进行平滑处理的一种方法,易于实现,效果也挺好。表达式的算法是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。最大(小)值滤波,中值滤波是一种非线性处理技术,能抑制图象中的噪声。在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的最大(小),中值代替。四,实验内容(1)线性滤波,自行编写程序,实现图像的均值滤波。模板3*3,5*5,7*7。(2)非线性滤波,自行编写程序,实现图像的统计序滤波,(最大(小)值,中值(medi
2、an),滤波)模板3*3,5*5,7*7。(3)将滤波前后的图像进行比较,分析其异同;将原图像加噪处理(imnoise)之后,再滤波处理,结果又如何五,实验步骤(1)线性滤波,实现图像的均值滤波。模板3*3,5*5,7*7。以下以3*3为例:代码大致思路如下:先对图片灰度矩阵除去四边后的部分进行计算。然后对四边除去四角后进行计算,最后对四角进行计算。鉴于这个方法比较繁琐麻烦,所以在非线性滤波程序中改用了别的方法处理3*3模板。I=imread('a.jpg');J=rgb2gray(I);J=double(J);A0=zeros(287,287);%A0为线性变换后的图像fori=2:286%
3、对图片灰度矩阵除去四边后的部分进行计算forj=2:286A0(i,j)=(1/9)*(J(i-1,j-1)+J(i-1,j)+J(i-1,j+1)+J(i,j-1)+J(i,j)+J(i,j+1)+J(i+1,j-1)+J(i+1,j)+J(i+1,j+1));endendfori=2:286%对四边除去四角后进行计算A0(1,i)=(1/9)*(J(i,j-1)+J(i,j)+J(i,j+1)+J(i+1,j-1)+J(i+1,j)+J(i+1,j+1));A0(287,i)=(1/9)*(J(i-1,j-1)+J(i-1,j)+J(i-1,j+1)+J(i,j-1)+J(i,j)+J(i
4、,j+1));A0(i,1)=(1/9)*(J(i-1,j)+J(i-1,j+1)+J(i,j)+J(i,j+1)+J(i+1,j)+J(i+1,j+1));A0(i,287)=(1/9)*(J(i-1,j-1)+J(i-1,j)+J(i,j-1)+J(i,j)+J(i+1,j-1)+J(i+1,j+1));endA0(1,1)=(1/9)*(J(i,j)+J(i,j+1)+J(i+1,j)+J(i+1,j+1));%对四角进行计算A0(1,287)=(1/9)*(J(i,j-1)+J(i,j)+J(i+1,j-1)+J(i+1,j+1));A0(287,1)=(1/9)*(J(i-1,j)+
5、J(i-1,j+1)+J(i,j)+J(i,j+1));A0(287,287)=(1/9)*(J(i-1,j-1)+J(i-1,j)+J(i,j-1)+J(i,j));imshow(A0);线性滤波的图像如图一所示:图一线性变换(2)非线性滤波,实现图像的统计序滤波,(最大(小)值,中值(median)滤波)模板3*3,5*5,7*7。以下以3*3为例:代码大致思路如下:利用比原图像矩阵大两行两列的矩阵,将周围填充为0,然后进行计算。I=imread('a.jpg');J=rgb2gray(I);J=double(J);B0=zeros(289,289);%比原图片周围多一周值为0的矩阵B1=
6、zeros(287,287);%最大值滤波后图像灰度矩阵B2=zeros(287,287);%最小值滤波后图像灰度矩阵B3=zeros(287,287);%中值滤波后图像灰度矩阵fori=1:289%B0矩阵赋值为0forj=1:289B0(i,j)=0;endendfori=2:288%B0除了四周的0,其他矩阵值与原图像相同forj=2:288B0(i,j)=J(i-1,j-1);endendfori=2:288forj=2:288%对B0矩阵从[2,2]开始操作k=[B0(i-1,j-1)B0(i-1,j)B0(i-1,j+1)B0(i,j-1)B0(i,j)B0(i,j+1)B0(i+
7、1,j-1)B0(i+1,j)B0(i+1,j+1)];B1(i-1,j-1)=max(k);%将模板中的最大值选出B2(i-1,j-1)=min(k);%将模板中的最小值选出B3(i-1,j-1)=median(k);%将模板中的中值选出endendsubplot(2,2,1);imshow(J);image(J);%输出原图像subplot(2,2,2);imshow(B1);image(B1