利用边界跟踪计算多个对象的直径和中心(一)

来源:互联网 发布:fc2最新域名网站 编辑:程序博客网 时间:2024/04/30 09:05

在图像处理中经常需要计算多个对象的直径和中心,那么边界跟踪是一种非常有效的方法

1)确定一个对象的边界和区域的GetOneEdge算法

其基本过程为:

1. 确定某一点是否在边界上

2. 沿逆时针方向寻找下一个边界点

    1)若当前的方向为边界点,则顺时针旋转两个方向,跳到2

    2)若当前的方向不是边界点,则逆时针旋转一个方向,跳到2

    3)若搜寻已达8次或已经回到起点,则退出

程序如下:

 

 

2) 提取多个对象的边界和区域的EdgeTrack算法

    在整幅图像中,有可能不止一个对象,对于每个对象,均可以采用前面的边界跟踪算法。在遍历的过程中,需要对已经遍历的对象的区域进行标记。以免遍历过程出现重叠。

   在程序中,使用edges保存每个对象的边界,使用directions保存边界的方向。在这个过程中用pFlagImage标示已经确定对象的区域。

在这个过程中RegionsExtract函数根据对象的边界edges和方向directions来确定对象的区域。

  

 在这个过程中,还需要用到RegionsExtract函数,这个函数是根据对象的边界和方向来标记整个对象的。详见后文。