2.1.1 Freeman链码
链码是用于表示由顺次连接的具有指定长度和方向的直线段组成的图像的边界线[100]。Freeman 8方向链码是指相邻两像素点连线的8种可能方向值ai∈{0,1,2,3,4,5,6,7},如图2-1(a)、(b)所示,每个链码值ai都有一个向量Vi与之对应[35]:V0=(1,0),V1=(1,-1),V2=(0,-1),V3=(-1,-1),V4=(-1,0),V5=(-1,1),V6=(0,1),V7=(1,1)。图像中的每个边缘均可用一链码串表示,边缘上的一个点移到下一个点的过程,一定对应着链码的8个基元之一。这是因为数字图像中每个像素点的8个相邻点的方向及距离,恰恰与链码的8个基元的方向及长度一致。如图2-1(c)所示的一条边缘线,S为起始点,E为终点,此边缘链码可表示为L=43322100000066。
图2-1 8方向链码
数字图像是经过采样、量化后形成的离散图像,离散空间中的直线呈现出连续空间的直线所不具备的一些特征,即与连续空间中的直线相比,离散空间中的直线呈现出自身的特征。20世纪70年代,Freeman总结这些特征并提出判定一条链码是直线链码必须遵循的3条准则,简称Freeman直线链码准则[32]:
(1)链码中至多出现两个方向码,且两个方向码为相邻方向码。
(2)若有两个方向码出现,则其中之一必单个出现。
(3)单个出现的方向码总是尽可能均匀地出现在链码串中。
1982年,Wu[101]证明Freeman准则是判别一条链码是否为直线链码的充要条件。由于基于链码的直线提取方法具有计算量小、速度快,尤其对较大的影像具有实时性的优点,所以基于Freeman链码的直线提取方法被广泛应用。目前,基于Freeman链码提取直线主要有两种方式:一是基于直线链码准则约束跟踪直接得到直线链码;二是按如图2-1(c)所示的链码跟踪方式首先跟踪得到链码串,再对其进行直线拟合获取直线链码。