边界跟踪算法(二)——摩尔邻域跟踪算法



摩尔领域也称为8邻域或者间接邻域。摩尔邻域跟踪算法的基本思想:

找到一个黑色像素,并将它定为你的起始像素。(定位一个起始像素可以以多种方式来完成的;我们将从网格的左下角开始,自下而上扫描每一列像素,从最左向右的每列像素,直到遇到一个黑色的像素,我们将其作为我们的起始像素)。

总的想法如下图所示:每次遇到黑色像素,将设置为当前边界像素点,然后原路返回到先前到达的白色像素,以顺时针方向搜索的摩尔邻域内的每一个像素,直到遇到下一个黑色像素。重复这个过程,当起始像素被第二次访问时算法终止,在整个运行过程走过的黒色像素就是目标的边界像素。

事实证明,和Square边界跟踪算法处理的情况类似,如果它要依赖于这一终止标准,摩尔邻域边界跟踪算法将无法跟踪大量的图形轮廓。

改进方法:

(1)停止访问开始像素n次,其中至少为2

(2)第二次进入起始点与第一次进入的方向相同时停止;

不同于Square跟踪算法(左转或右转并且会丢失“对角线”像素),摩尔邻域跟踪算法可以提取任何连接部分的外边界。原因是:对于任何邻接性(或简单连接)的图案,下一个边界像素总是位于当前边界像素的摩尔邻域内。由于该算法会检査在当前边界像素的摩尔邻域内的每一个像素,势必会检测到下一个边界像素。当摩尔邻域跟踪算法第二次以与第一次同样的方式追踪到起始像素,这意味着它己经跟踪完图案的完整的边界,如果不终止,则再次重复跟踪同一个轮廓。