实验四空域滤波一、实验目的 1、理解空间滤波的含义; 2、熟悉 MATLAB 中的各种滤波函数; 3、掌握 MATLAB 中实现空间滤波的方法。二、实验步骤及内容 1、 MATLAB 实现空间滤波的方法在 MATLAB 中两种方法来实现空间滤波,一种是使用 MATLAB 中提供的滤波函数,另一种是编写 m程序直接对数据进行操作。(1) 滤波函数 filter2 J=filter2(h,X) 其中, X为图像, h为滤波器, J为滤波后的图像。通过改变滤波器掩模,可实现平滑滤波和锐化滤波。或滤波函数 imfilter J=imfilter(X,h) 其中, X为图像, h为滤波器, J为滤波后的图像。例: X =imread('(a).jpg'); %读入实验图像 h =[ 110. 111 ];%定义均值滤波器 J= filter2 (h,X );%均值滤波 imshow( X) ; figure(2), imshow( J ,[]);%显示均值滤波后的图像(2) 中值滤波函数 medfilt2 J=medfilt2(X,[hood,hood]) 其中, X为图像, hood 为滤波器尺寸, J为滤波后的图像,用中值滤波可去除椒盐噪声,达到平滑图像的目的。例: X =imread(' (a) .jpg '); J =medfilt2( X,[5,5 ]); %[ 5,5]为滤波模板的规格( 3)直接对图像数据进行操作使用 for 循环直接对图像数据进行模板卷积的操作,过程直观,便于理解, 可实现各种形式的滤波。注意直接操作时要考虑边缘的处理。模板卷积的主要步骤为: ?将模板在图像中漫游,并将模板中心与图中某个像素位置重合; ?将模板上的各个系数与模板下各对应像素点的灰度值相乘; ?将所有乘积相加(为保持灰度范围,常将结果再除以模板系数之和); ?将上述运算结果赋给输出图像的对应模板中心位置的像素。例:以下程序实现了均值滤波 x= imread('(a).jpg '); b=double(x); %图像数据类型转换 c=b; [xh,xw]=size(x); %xh图像的高(行值),xw 图像的宽(列值) for i=2:xh-1 %图像边缘保留原值 for j=2:xw-1, c(i,j)=( b(i-1,j-1)+b(i-1,j)+b(i-1,j+1)+b(i,j-1)+b(i,j)+b(i,j+1)+... b(i+1,j-1)+ b(i+1,j)+b(i+1,j+1))/9; %在八邻域内平均 end end c=uint8(c); imshow(c) 2 、空间平滑滤波平滑滤波是低频增强的空间域滤波技术。它的目的有两类:一类是模糊;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。(1) 平滑线性滤波器用 h=fspecial( ‘ average ’)得到的 h为 3× 3 的邻域平均模板,然后用 h来对图象 进行平滑处理。例: x=imread(' (a).jpg '); h=fspecial( ‘ average ’);%定义均值模
实验4 空域增强 来自淘豆网www.taodocs.com转载请标明出处.