1、实验八 图像骨架提取一、 实验要求1.设计并实现对数字图像进行骨架提取。2.分析所得到的结果。二、 实验原理1. 实验环境MATLAB2. 图像的骨架提取原理 图像细化图像细化(Image Thinning),一般指二值图像的骨架化(Image Skeletonization) 的一种操作运算。一个图像的骨架由一些线和曲线(比较理想的是单像素宽度),骨架可以提供一个图像目标的尺寸和形状信息,因而在数字图像分析中具有重要的地位,图像细化(骨架化)是进行图像识别、线条类图像目标分析的重要手段。 骨架的定义及提取原理比较普遍的方法是采用目标(Object)中轴(Medial Axis)的概念。中轴线
2、的点(像素点)定义为距离目标边界上两个点等距的那些像素。在图像处理中实现这种等距的计算一般有两个途径。一是使用距离变换(Distance Transform)的方法(在此不讨论)。另外一个方法介绍如下:思路:想象一个图像目标四周被火点燃,燃烧的速度四周保持一致,那么四周由边界向质心方向(向内部中心)燃烧时,相互遇到的那条线,就是中轴线。以长方形为例,可以想象,分别会有许多内接圆,分别沿着长方形(矩形)的四个角向中心方形移动。拓扑方法是实现图像骨架化的有利工具,我们可以定义一些图像目标边界上可以删除的像素点,以便最后获得图像目标的骨架。但是,我们还要求保持图像目标(一般常用于线条类的图像目标)的
3、连通性(Connectivity),还不能改变图像目标的个数,不能改变目标内的空洞个数,也不能改变不同目标的相互关系(位置关系等等),一旦有些像素涉及到改变上述内容的,则一律不能被当作删除的图像像素。我们可以利用一个 3x3 模板来检测一个像素是否应该被删除掉。假定 3 乘3 大小的图像中,中心点(黑点)被删除,那么会有如下两种情形:(1)顶端两个像素和右下端两个像素被分离了,这样就会将原来的一个目标(物体)分为两个,不符合细化操作的要求。(2)(因为如果这九个点只是一个物体的局部)顶端两个像素和右下端两个像素可能是由外部的像素点进行连接的,那么所有像素点(黑点)会形成一个空洞,如果中心点被删
4、除,则会将孔洞消除,又违背了前面提及的细化的规则。三、 实验内容1. 图像骨架提取的程序流程图:读取图像文件用 g r a y t h r e a s h 函数计算阈值用 i m 2 b w 函数将原图像变为二值图像调用 b w m o r p h 函数去除物体的边界像素其余像素组成图像骨架并显示E n d2. 实验结果:二二二 二二二二二二二二二二 二二二二二二二二四、 实验总结一个图像的骨架由一些线和曲线(比较理想的是单像素宽度),骨架可以提供一个图像目标的尺寸和形状信息,因而在数字图像分析中具有重要的地位,图像细化(骨架化)是进行图像识别、线条类图像目标分析的重要手段。附录:clear
5、all;I=imread(kids.tif);subplot(2,2,1);imshow(I);title(原图像 );level=graythresh(I);I=im2bw(I,level);subplot(2,2,2);.imshow(I);re=ones(400,318);I=re-I;subplot(2,2,2);imshow(I);title(二值化的图像);bwl=bwmorph(I,skel,Inf);subplot(2,2,3);imshow(bwl);title(骨架提取 );bw2=bwmorph(bwl,spur,4);subplot(2,2,4)imshow(bw2)title(消除毛刺后的图像);