1、实 验 报 告一、实验目的和要求试求出一幅二值图像上目标的骨架。二、实验原理细化和骨架化操作是把区域的面宽度缩到最小,即单像素宽度,也就是把物体变细,直到现最小的像点连通性。骨架化又称中轴变换(medial axis transform, MAT)。对于一个区域 R,若边界为 B,对区域中每一点 P,我们 B 上搜索与它最近的点,若能找到多于一个同样距离的最近点,则 P 属于 R 的中轴或称骨架在 R 内作与边界有两个以上切点的内切圆,则所有这些圆的圆心的集合就是中轴 。对于中轴与边界相连的区域,可以通过以每个骨架点为中心的圆来重建区域,即这些圆的集合的并组成了整个区域用于中轴变换的距离,除欧
2、氏距离外,也可用其它距离。编程时可以通过二值区域细化快速算法来实现:三、实验方法对一幅二值图,进行骨架化。四、实验结果及分析中中中中中中中中中中中中中中中中中五、心得体会1、实现骨架化的算法并不复杂,但值得注意的一点是,当原始图像中的白点增多,即白线变得很粗时,计算骨架所用的时间迅速增大。六、源代码clear;clf;clc;f=imread(bone.bmp);sizeX,sizeY=size(f);K=f;L=f; %骨架化图a=2;b=2;while 1for a=2:(sizeX-1)for b=2:(sizeY-1)N=K(a,b-1)+K(a+1,b-1)+K(a+1,b)+K(a
3、+1,b+1)+K(a,b+1)+K(a-1,b+1)+K(a-1,b)+K(a-1,b-1);T=(K(a+1,b-1)-K(a,b-1)=1)+(K(a+1,b)-K(a+1,b-1)=1)+(K(a+1,b+1)-K(a+1,b)=1)+(K(a,b+1)-K(a+1,b+1)=1)+(K(a-1,b+1)-K(a,b+1)=1)+(K(a-1,b)-K(a-1,b+1)=1)+(K(a-1,b-1)-K(a-1,b)=1)+(K(a,b-1)-K(a-1,b-1)=1);if (N1)*(N1)*(N7)*(T=1)*(K(a-1,b)*K(a,b-1)*(K(a,b+1)+K(a+1,b)=0)L(a,b)=0;end endendif K=Lbreak;endK=L;endZ=f-L;figure(1)imshow(f);title(原始图像);figure(2)imshow(L);title(骨架化结果);figure(3)imshow(Z);title(将骨架放入原图中);