的计算范围,即:
shape=‘full’时,作边界补零
shape=‘same’时,返回图像B与输入图像A大小相同 shape=‘valid’时,不考虑边界补零,只计算有效输出部分。
此外,也可以使用imfilter函数进行卷积或相关性滤波来实现图像平滑。该 函数的调用格式为:
B = imfilter(A,H)
B = imfilter(A,H, option1,option2,…)
其中B=imfilter(A,H)返回图像A经算子h滤波后的结果;
B=imfilter(A,H, option 1, option 2,…)是根据指定的option参数实现图像 滤波。option参数可以有下列取值:
边界填充选项
对一幅图像进行滤波时,零填充可能会导致图像被一个黑框围绕,为了消除 零填充的人工痕迹,imfilter函数支持三种可选的边界填充方法:
‘symmetric’ 边界对称 ‘replicate’ 边界复制,缺省值 ‘circular’ 边界循环 输出尺寸选项
其选项与filter2函数的shape参数相同。 滤波选项
‘corr’ 使用相关性来进行滤波,缺省使用此方法 ‘conv’ 使用卷积方法实现滤波
以上两个滤波函数的参数h可以是自定义的滤波器模板,也可以是MATLAB 提供的预定义滤波器模板。函数fspecial生成滤波所用的预定义模板。其调用格式为:
h = fspecial(‘type’)
h = fspecial(‘type’,parameters)
其中,参数type指定滤波器的种类,parameters是与滤波器种类有关的具体参 数。
例1.5.2 对图1.5.1中加入椒盐噪声的图像进行均值滤波,可以使用下列语句。
>> h=fspecial('average',3); >> gd=imfilter(J,h);
>> subplot(1,2,1);imshow(J);title('加入椒盐噪声的图像'); >> subplot(1,2,2);imshow(gd);title('3×3模板均值滤波'); 其显示结果如图1.5.2所示。
图1.5.2 均值滤波
(3) 中值滤波器函数:medfilt2
中值滤波是一种最常用的非线性平滑滤波器,其滤波原理是把邻域中的图像的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。其调用格式为:
B = medfilt2(A)
B = medfilt2(A,[M N])
其中,A是输入图像,B是中值滤波后输出的图像。[M N]指定滤波模板的大小,默认模板是3×3的。
例1.5.3 对图1.5.1中加入椒盐噪声的图像进行中值滤波,可以使用下列语句。
>> k=medfilt2(J);
>> subplot(1,2,1);imshow(J);title('加入椒盐噪声的图像'); >> subplot(1,2,2);imshow(k);title('3×3模板中值滤波'); 其显示结果如图1.5.3所示。
图1.5.3 中值滤波
(4) 频域低通滤波
频域滤波的基本步骤为:
1) 用(-1)x+y乘以输入图像来进行频域中心变换; 2) 由(1)计算图像的DFT,即I(u,v); 3) 用滤波函数H(u,v)乘以I(u,v); 4) 计算(3)中结果的反DFT; 5) 得到(4)中的实部; 6) 用(-1)x+y乘以(5)中的结果。
MATLAB图像处理工具箱提供了一些函数来进行傅立叶变换。 ①函数:fft2
用于计算二维快速傅立叶变换。调用格式为: Y = fft2(X) ; Y = fft2(X,M,N);
式中X是输入图像矩阵,Y是X进行二维傅立叶变换后的图像矩阵;X和Y 大小相同。
在Y=fft2(X,M,N)中,按照M、N指定的值对图像进行剪切或补0后进行傅 立叶变换,返回变换矩阵的大小为M×N。
②函数:fftshift
fftshift函数将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。其调用格式为:
Y = fftshift(X) ; Y = fftshift(X,DIM) ;
fftshift用于调整 fft、fft2和fftn的输出结果。对于向量X,将其左右两半交换位置,对于矩阵 X,将其一、三象限和二、四象限进行互换,对于高维向量 X,将矩阵各维的两半进行互换。
③函数:ifft2
用于计算图像的二维傅立叶反变换。其调用格式为: Y = ifft2(X) ; Y = ifft2(X,M,N) ;
ifft2用于返回图像的二维傅立叶反变换矩阵,其参数定义同fft2。 例1.5.3 对图1.5.1中加入椒盐噪声的图像进行截至频率D0为25的高斯低通滤波,其显示结果如图1.5.4所示。
图1.5.4 频域高斯低通滤波
六、实验步骤:
(1)对给定的图像添加均值为0,方差分别为200、400的高斯噪声,以及概率分别为0.1、0.2的椒盐噪声,显示添加噪声后的图像。
(2)对加噪图像分别进行3×3、5×5、9×9的均值滤波,显示并比较滤波结果。
(3)对加噪图像分别进行3×3、5×5、9×9的中值滤波,显示并比较滤波结果。
(4)对加噪图像进行截止频率D0分别为10、25的理想低通、巴特沃斯低通及高斯低通滤波,显示并比较滤波结果。
(三)图像增强
一、实验题目:
图像增强
二、实验目的:
(1)了解图像增强的内容和意义; (2)掌握基于空域的图像增强方法; (3)掌握基于频域的图像增强方法。
三、实验内容:
(1)综合运用直方图均衡、灰度变换、锐化空域滤波等方法编程实现对
图像的空域增强处理; (2)编程实现图像的频域增强处理。 四、预备知识:
(1)熟悉MATLAB图像输入输出操作; (2)熟悉图像的模板操作; (3)熟悉图像的频域变换处理; (4)熟悉二维频谱的显示方法。
五、实验原理:
图像增强是对图像进行加工,以得到视觉效果更好或更有用的新图像。图像增强在处理方法上可分为基于空域的图像增强和基于频域的图像增强。
空域图像增强常用方法: (1)直方图均衡化
直方图是一个离散函数,它表示数字图像每一灰度级与该灰度级出现频率的对应关系。有的图像的灰度直方图在低值灰度区间上频率较大,使得图像中较暗区域中的细节常常看不清楚。为了使图像清晰,可将图像灰度范围拉开,并且让灰度频率较小的灰度级变大,即让灰度直方图在较大的动态范围内趋于一致。
(2)灰度变换
灰度变换时按一定的规则修改输入图像每一个像素的灰度,从而改变图像灰度的动态范围。它可对灰度范围进行扩展或压缩,也可对图像进行分段处理,根据图像的特点和要求在某段区间中进行压缩而在另外区间中进行扩展。 (3)空域滤波
空域滤波可用来对图像的某些特征进行增强,而去除其他特征。空域滤波是一种模板操作,即输出图像的某一像素值由输入图像相应的像素及其邻域的像素值决定。模板操作可看成图像和模板的卷积。而不同的滤波操作,其模板就不同。
锐化(高通)滤波模板的例子如图所示,它实际上是拉普拉斯算子。这样的模板放在图像中灰度值是常数或变化很小的区域时,输出为零或很小,这样就去除了图像中的低频分量,实现图像锐化。
-1 -1 -1 -1 8 -1 -1 -1 -1
锐化滤波器模板 (4)频域滤波