边界跟踪算法的程序说明和程序代码
来源:互联网 发布:域名注册需要什么资料 编辑:程序博客网 时间:2024/05/12 13:22
4.算法描述:
设在数字化网格平面的形状是封闭的,且只有一个连通的区域,这个连通的区域在二维数组中用1来标记,其余的数组元素用0来标记。算法中的坐标与程序中的二维数组的下标对应。
Step 1. 对数组进行逐行查找,找到由数字1表示的封闭图形的最上端一行的最左边一个点(其数组行下标应该是最小的),用P0表示。P0是边界跟踪的起始点。定义变量dir 表示上述“关于方向码的概念”中的8个方向,所以dir的取值范围是 0,1 … 7 ,注意,后面的计算过程,有dir对8的模(求余)运算。
对dir 赋初值 dir=7;
Step 2. 按逆时针方向顺序依次判断当前点(一开始为P0点)的8个3x3邻居是否为1,开始的邻居号为:
(1)(dir+7) mod 8 如果 当前的dir为偶数;
(2)(dir+6) mod 8 如果 当前的dir为奇数;
按上述的逆时针方向找到的第一个不为0的点为找到的新的边界,记为Pn,并更新dir值 (以当前找到为1的点为最后更新的dir方向)。
Step 3. 如果当前的边界点Pn的坐标等于找到的第2个边界点P1的坐标,而且它前一个边界点Pn-1的坐标又与起始点P0坐标相同,则算法结束。否则,重复Step 2.
Step 4. 封闭形状的边界跟踪结果则为上述步骤记录的P0,P1,P2 ….Pn的坐标,或者是上述过程中保存的dir 值。
5.关于算法描述的部分举例。
以前面的图形为例,现在对于该算法的前面若干步骤的执行情况做一描述,以便更好理解算法的执行过程。
Step 1: (n=0) 找到的Pn=P0=(1,2); dir=7;
Step 2: (n=n+1=1) 按逆时针方向顺序找到P0点的8个3x3邻居中第一个为1的点,此时P0的八个近邻情形为(X表示当前P):
0 0 0
0 X 1
0 1 1
开始判断的方向为(dir+6) mod 8 =(7(奇数)+6) mod 8=5 ,也就是开始以逆时针依次判断的起始方向为西南方向!
此时,为0,接着要判断南,i.e. dir=dir+1=6, 好,这是1。
现在要做的事情有两个:一是记录邻居“南”,(6近邻)的坐标,Pn=P1=(2,2)
二是记录方向码 6 ;
(这两个记录过程,一般用两个数组来实现,以便最后输出结果)
此时,注意,dir已经更新为 6 !
Step 3 , 不符合结束条件,继续转Step 2
Step 2: (n=n+1=2)按逆时针方向顺序找到P1(2,2)点的8个3x3邻居中第一个为1的点,此时P1(2,2)的八个近邻情形为(X表示当前P):
0 1 1
0 X 1
1 1 1
开始判断的方向为(dir+6) mod 8 =(6(偶数)+6) mod 8=4 ,也就是开始以逆时针依次判断的起始方向为西方向!
此时,为0,接着要判断西南,i.e. dir=dir+1=5, 好,这是1。
现在要做的事情有两个:一是记录邻居“西南”,(5近邻)的坐标,P2=(3,1)
二是记录方向码 5 ;
(两个数组记录,以便最后输出结果)
Step 3 , 不符合结束条件,继续转Step 2
Step 2: (n=n+1=3) 按逆时针方向顺序找到P2(3,1)点的8个3x3邻居中第一个为1的点,此时P1(2,2)的八个近邻情形为(X表示当前P):
0 0 1
0 X 1
0 0 1
开始判断的方向为(dir+6) mod 8 =(5(奇数)+6) mod 8=3 ,也就是开始以逆时针依次判断的起始方向为西北方向!
此时,为0,接着要判断西,西南,南,也为0,再继续判断东南i.e. dir=7, 好,这是1。
一是记录邻居“东南”,(7近邻)的坐标,P3=(4,2)
二是记录方向码 7 ;
(两个数组记录,以便最后输出结果)
。。。。。。。。。。。。
- 边界跟踪算法的程序说明和程序代码
- 图像八方向链码的边界跟踪算法
- 边界跟踪算法(一)——Square跟踪算法
- 图像处理基本算法 链码 边界跟踪
- 图像处理基本算法 链码 边界跟踪
- C实现moore边界跟踪算法
- 图像处理基础知识系列之一:边界跟踪之内边界跟踪算法解释
- 常用的一些小程序集合的算法描述和部分代码(输出BMP,截取yuv,边界标记)
- 利用边界跟踪计算多个对象的直径和中心(一)
- 利用边界跟踪计算多个对象的直径和中心(二)
- matlab练习程序(二值图像内外边界跟踪)
- SIFT算法:Matlab程序代码测试例子的说明(Lowe的代码)
- 匈牙利算法的MATLAB 程序代码
- 边界跟踪算法(二)——摩尔邻域跟踪算法
- 基于边界化粒子重采样的改进L1跟踪算法(Bounded Particle Resampling-L1 tracker)
- 一种多尺度的KCF跟踪程序代码分析(二)——图片视频转换和初始框输入
- 一种多尺度的KCF跟踪程序代码分析(一)
- 关于程序的边界检查
- SRP单一职责原则
- 抽取百度百科的感慨
- log4j使用总结
- 最具竞争力的团队从事3G智能手机应用软件外包
- Map.Entry 类使用简介
- 边界跟踪算法的程序说明和程序代码
- 工作中: 重起 weblogic 的shell
- c#委托的定义与基本使用
- [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理
- Apache2.2+多个Tomcat6.0
- 存储过程模板
- VSS常见问题
- redis运行后的一些警告
- 交朋友