2.3图像处理功能的Matlab实现实例
本文通过运用图像处理工具箱的有关函数对一人脸的彩色图像进行处理。
1)图像类型的转换
因后面的图像增强,边缘检测都是针对灰度图像进行的,而我们的原图是RGB图像,所以首先我们要对原图类型进行转换。实现过程代码如下:
i=imread('f:\\face1.jpg');j=rgb2gray(i); imshow(j);imwrite(j,'f:\\face1.tif') 效果图2.1
图2.1
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均衡化前后的直方图对比图
(2)灰度图像平滑与锐化处理
平滑滤波器的目的在于模糊图像或消除噪声,Matlab7.0图像处理工具箱提供了medfilter2()函数用于实现中值滤波,wiener2()实现对图像噪声的自适应滤波。在本文实例中,为了使滤波效果更明显,我们事先为图像认为增加滤波,然后用自适应滤波方法对图像进行滤波。锐化处理的目的在于强调图像被模糊的细节,在本实例中采用了预定义高斯滤波器的方法对图像进行锐化滤波。功能实现的代码如下:
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 平滑滤波效果
原灰度图像 锐化后的图像
图2.5 锐化滤波效果图
3)边缘检测
Matlab7.0图像处理工具箱提供了edge()函数实现边缘检测,还
有各种方法算子供选择,在本实例中采用了canny算子来进行边缘检
测,
程序代码如下: i=imread('f:face.tif');