滤波算子,然后可以使用imfilter()或filter2()函数调用创建好的滤波器对图像进行滤波。
(6)边缘检测
数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属性。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。常用的有Sobel算子,Prewitt算子,Roberts算子,Log算子等。Matlab7.0工具箱中提供的edge()函数可以进行边缘检测,在其参数里面,可以根据需要选择合适的算子及其参数。
(7)图像处理功能的Matlab实现实例
本文通过运用图像处理工具箱的有关函数对一人脸的彩色图像进行处理。 7.1)图像类型的转换
因后面的图像增强,边缘检测都是针对灰度图像进行的,而我们的原图是RGB图像,所以首先我们要对原图类型进行转换。实现过程代码如下:
i=imread('f:\\face1.jpg');j=rgb2gray(i); imshow(j);imwrite(j,'f:\\face1.tif')
效果图2.1
图2.1
9 / 9
7.2)图像增强
(7.2.1)灰度图像直方图均衡化
通过比较原图和直方图均衡化后的图像可见,图像变得更清晰,而且均衡化后的直方图比原直方图的形状更理想。该部分的程序代码如下:
i=imread('f:\\face1.tif'); j=histeq(i);imshow(j);
figure,subplot(1,2,1),imhist(i); subplot(1,2,2),imhist(j) 执行后的效果图如图2.2和图2.3:
图
2.2均衡化后的灰度图像 图2.3均衡化前后的直方图对比图
(7.2.2)灰度图像平滑与锐化处理
平滑滤波器的目的在于模糊图像或消除噪声,Matlab7.0图像处理工具箱提供了medfilter2()函数用于实现中值滤波,wiener2()实现对图像噪声的自适应滤波。在本文实例中,为了使滤波效果更明显,我们事先为图像认为增加滤波,然
10 / 10
后用自适应滤波方法对图像进行滤波。锐化处理的目的在于强调图像被模糊的细节,在本实例中采用了预定义高斯滤波器的方法对图像进行锐化滤波。功能实现的代码如下:
i=imread('f:\\fae1.tif'); j=imnoise(i,'guassian',0,0.02); subplot(1,2,1),imshow(j);
j1=wiener2(j);subplot(1,2,2),imshow(j1);
h=fspecial('gaussian',2,0.05);j2=imfilter(i,h);figure,subplot(1,2,1),imshow(i)
subplot(1,2,2),imshow(j2)
得到的效果图如图2.4和图2.5:
加入噪声的图像 滤波后的图像
图2.4 平滑滤波效果
原灰度图像 锐化后的图像
11 / 11
图2.5 锐化滤波效果图
7.3)边缘检测
Matlab7.0图像处理工具箱提供了edge()函数实现边缘检测,还 有各种方法算子供选择,在本实例中采用了canny算子来进行边缘检 测,
程序代码如下:
i=imread('f:face.tif');
j=edge(i,'canny',[0.04,0.25],1.5); imshow(j) 效果图如图2.6
原灰度图像 边缘检测后的图像
图2.6 边缘检测效果图
12 / 12