更多内容关注公众号:数学的旋律
tb店铺搜:FUN STORE玩物社,专业买手挑选送礼好物
一、 特征描述子(descriptor)
分割后的像素集经常以一种适合于计算机进一步处理的形式来表示和描述。基本上,表示一个区域涉及两种选择:
① 根据其外部特征(其边界)来表示区域
② 根据其内部特征(如组成该区域的像素)表示区域
下一项任务是基于所选择的表示来描述区域。当我们关注的重点是形状特征时,可选择一种外部表示;而当关注的重点是内部属性如颜色和纹理时,可以选择一种内部表示。有时,需要同时使用这两种表示。无论哪种情形,选择用来作为描述子的特征都应尽可能地对大小、平移和旋转不敏感。
二、表示
前面讨论的图像分割技术以沿着边界或包含在区域中的像素的形式产生原始数据。标准做法是使用某种方案将分割后的数据精简为便于描述子计算的表示。以下讨论各种表示方法。
1. 边界追踪
边界追踪算法的输出是排过序的点的序列。给定一个二值区域R或其边界,追踪R的边界或给定边界的算法如下:
① 令起始点 b 0 b_0 b0 为图像中左上角标记为1的点。使用 c 0 c_0 c0 表示 b 0 b_0 b0 西侧的邻点。很明显, c 0 c_0 c0 总是背景点。从 c 0 c_0 c0 开始按顺时针方向考察 b 0 b_0 b0 的8个邻点。令 b 1 b_1 b1 表示所遇到的值为1的第一个邻点,并直接令 c 1 c_1 c1(背景)是序列中 b 1 b_1 b1 之前的点。存储 b 0 b_0 b0 和 b 1 b_1 b1 的位置,以便在步骤5中使用。
② 令 b = b 1 b=b_1 b=b1 和 c = c 1 c=c_1 c=c1
③ 从 c c c 开始按顺时针方向行进,令 b b b 的8个邻点为 n 1 , n 2 , . . . , n 8 n_1,n_2,...,n_8 n1,n2,...,n8。找到标为1的第一个 n k n_k nk。
④ 令 b = n k b=n_k b=nk 和 c = n k − 1 c=n_k-1 c=nk−1
⑤ 重复步骤3和步骤4,直到 b = b 0 b=b_0 b=b0 且找到的下一个边界点为 b 1 b_1 b1。
算法停止时,所找到的 b b b 点的序列就构成了排列后的边界点的集合。
2. 链码
链码用于表示由顺次连接的具有指定长度和方向的直线段组成的边界。这种表示基于这些线段的4连接或8连接。每个线段的方向使用一种数字编号方案编码,如图1所示,以这种方向性数字序列表示的编码称为佛雷曼(Freeman)链码。
链码的一次差分为,通过计算链码中分隔两个相邻像素的方向变化的数(按逆时针方向计算前一个数字变化到后一个数字所需的步数),其中第一元素是通过使用链码的最后一个元素和第一个元素间的转变来计算得到的。例如,4方向链码0231&#