描点的平面散乱点云边界的提取算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
&
最小凸边算法
定义: 对于平面上的点集 +, 如果连接某两点成一条直线,
点之内。 第二点 证明所求得边界是凸边。 把相邻两个边界点依次连接起来, 得到一个多边形, 下面 证明这个多边形是凸的。由算法知, 如果最后得到的多边任意 相邻两点所连成的直线外面还有扫描点, 那么就将求出这两点 外面的点中距离这两点最远的点为新的边界点, 从而这两点也 就不是最后所求得的多边形相邻的两个顶点。 由此推断在这个 网格中所有的扫描点都不在这两点所在的直线的外面, 也就是 说所有的扫描点都在这个多边形任意相邻的两个顶点的同侧。 由凸多边形的定义, 所求的多边形为凸多边形。 第三点证明是最小凸边。 假设还有 某 一 个 凸 边 形 ! 包 含 所 有 的 扫 描 点 , 并 且 这 个 凸边形比所求得 的 最 小 凸 边 形 还 小 , 那 么 这 个 凸 边 形 ! 必 定 有点在所求得的 最 小 凸 边 形 之 内 , 不 妨 假 设 这 个 凸 边 形 ! 其 余的顶点都与最小凸边相同, 只有一点在最小凸边之内, 则这 一点必定在所求得最小凸边某相邻顶点连线之内, 假设最小凸 边形的相邻 的 两 个 顶 点 为 ( , ), 凸 边 形 ! 在 最 小 凸 边 形 顶 点 顶点 ) 内侧的顶点为点 / , 那么点 ( , 点 ), 点 / 都是凸边形 (、 那 么 连 接 (/ , 连 接 )/ , 那么点 ) 必定在直线 ! 的相邻顶点, 而大多数顶点在直线 (/ 的内部, 这与 ! 是凸多边 (/ 的外面, 形的定义相矛盾。由此证明所求的多边形是最小凸多边形。
万方数据
!""#$%
*’
过! (" ) 次, 乘除法不会超过 ! (" ) 次, 开方不会超过 ! (" ) 次。 依据图 ( 看来, 算法能够正确提取边界。 算法的优缺点: 算法的 优点是能够迅速准确地处理大量数据, 算法的缺点是只能适合 于平面的数据处理,对于空间的数据处理尚需要对算法进行 改进。
wenku.baidu.com图&
最小凸边算法的一个示例
(! ) 连接最上面一点和最下面一点把整个方盒分为两个部 分: 左边部分和右边部分。 对于左边部分把最上面一点、 最下面一点分别与最左 (& ) 边一点各连接成一条线段。 把最左边一点和最上面一点的连线外面的所有点都求 (# ) 出来 (这些点横坐标介于最左面一点的横坐标和最上面一点的 横坐标之间, 纵坐标类似) , 并且把这些点中与此直线距离最远 分别连接点 ( 与最上面一点, 点求出来, 设距离最远点为点 ( , 点 ( 与最左面一点成两条直线 。 对 最 下 面 一 点 与 最 左 面 的 连 线, 求出其外面的点, 并且求出其中与此直线距离最远的点, 记 分别连接点 ) 与最左面的点和点 ) 与最下面的点各成 为点 ) 。
一条直线。 (, ) 对于点 ( 和点 ) 所构成的 # 条直线分别重复第三步 到第四步的操作。 把所有找出来的点顺序连接成折线, 那么由这些折线 (- ) 所构成的折线组合就是左半部分的边界 (对最左面一点与最上 面一点中间所有点的排序, 从最上面一点到最左面一点根据横 坐标由大到小顺序排列, 对最左面一点与最下面一点中的所有 点根据横坐标由小到大排序) 。 (. ) 对于右半部分可以作类似操作。
这个点集中其它所有的点都在这条直线的点都在这条直线的 同侧, 这样的点所构成的边界线称为凸边, 包围点集 + 的 面 积 最小的凸边称为最小凸边。 最小凸边算法: 首先找到包围所有散乱点云的最小方盒, 然后把方盒 (’ ) 的最上面一点、 最下面一点、 最左面一点和最右面一点求出来。 在这里有一种特殊情况: 例如最上面的点数不止一个, 也就是 说有许多点处于同一条纵坐标上, 则这些点都是边界点, 把这 些点两两连接起来, 这些点之间就不再有其它边界点, 对于横 坐标有可能有类似的情况如图 & 所示。
(!""# ) 文章编号 &""!B=88&B "%B""="B"8
! "#$% &’ !()&*#+,- ’&* .#/+#(( 0%)1 ’*&- 2(3$3* 2&#$+/ #$ .#/&*%1* 43/1% &$ 563$ 7&%1
8,&9 5,#(#$ :3$) ;# <#3& :1$,1 (I*,J6,K L,6M(1E6;- 7N >(17,*+;62E *,O >E;17,*+;62E, I*,J6,K !&""&@)
图’ 一个实孔周围 * 个孔中 图! 实孔右上孔为虚孔 求网孔的边界 右上角为虚孔, 阴影表示实孔
定距离, 如果再没有别的点在 01 的 连 线 之 外 , 则由算法知, 点 因此点 / 将被加入到边界 / 是目前在 01 之外 距 离 最 远 的 点 , 点集之中, 也就是是说点 / 将成为边界点的一部分。由于点 / 的取法是任意的因此点云中所有的点都被包含在所求的边界
界算法的要求是快速、 准确。 在这方面, 散乱点云的三角划分的 研究比较多, 并且取得较多的研究成果。提出了许多三角优化 准则以及优化三角形网格构造方法, 其中最著名的是 ’()*+,*三角化 .&/, 它的应用有简单多边形 ’()*+,*- 三角剖分 .!/。在边界 提取方面有许多文章, 如 01+2( 34*5617 等 提出了如何产生 树
计算机工程与应用
域处理第二条边; 对于具有两条不相连的空边的情况, 先将区 域分为两个部分, 然后依据上述方法处理。 对于三条空边的情况, 先在边界网孔内作散乱点最小 (& ) 凸包, 然后解除离实边最近的两点即可。 斜对方向边界网孔的边界提取方法与上面有所不同。 如图 中间的网孔为要判断的网孔, 要判断网孔的右上网孔 ’ 所示, 为虚孔。具体的边界提取方法是: 为便于描述在这里假设右上 角反向延长所对应的网孔为虚孔, 求出这个实孔的最上面的点 连 接 点 ( 和 点 ), 那么 假 设 为 点 ( 和 最 右 面 的 点 假 设 为 点 ), 线段 () 将这个实孔分为两个部分, 求出包围右上角那 一 部 分 如图 ! 所示。其余三种情 的最小凸边, 然后去掉线段 () 则可, 况与此类似。
# 个正对方向有虚孔的边界网孔又分为 8 种情况:
(& ) 一条边的邻域为虚孔 (设为空边) 的边界网孔。 两条边的邻域为虚孔的边界网孔。 (! ) (8 ) 三条边的邻域为虚孔的边界网孔。 对于每种情况边界网孔要细化一条边界线: (& ) 有一条边的邻域为虚孔的边界网孔, 若该网孔的空边 与 - 轴平行, 过 - 值最大和最小的两点 (> , 连接成一条直 0) 线, 它将网孔分为两个部分, 其中一部分包含空边。 在包含空边 的区域内作散乱点云的最小凸包。显然, 该凸包包含直线 >0 , 去掉直线 >0 就得到散乱点的最小凸包。 若网孔的空边与 ? 轴平行的情况与此类似。 (! ) 有两条边的邻域为虚孔的情况, 对于两条空边相连的 情况, 其中第一条边与一条空边的情况作相同处理, 在另一区
一种基于扫描点的平面散乱点云边界的提取算法
周石林 王 琪 廖文和 (南京航空航天大学机电工程学院, 南京 !&""&@ )
ABC*6): D47+E)%%%FE74+$27C
摘 要 根据平面散乱点云的特点, 依据边界点和非边界点的位置关系, 用网格把点云 划 分 开 来 , 在确定边界网格和非
边界网格以后, 将所有的边界网格按照它们的位置关系连接成环, 对于从每一个边界网格提取边界提出了一种最小凸边 算法, 并且从理论和实验上证明了这种最小凸边算法的可行性。 关键词 最小凸边 边界点 散乱点云 文献标识码 > 中图分类号 GH8"&$@
.8/
状或带物体的边界; 97:(1; 0 根 据 局 部 梯 度 的 方 向 信 息 来 提
.#/
取图象的边界。 得到边界 浙 江 大 学 的 李 江 雄 提 出 了 把 散 乱 点 云 网 格 化 .</, 网孔和非边界网孔。把所有相邻的边界网孔相互连接起来, 得 到边界网孔环。 把边界网孔环中每个边界网孔的最小凸边求出 来就得到一段边界线, 把各个分段的边界线连接起来就得到初 始边界线, 然后把初始边界线光顺化就得到边界线。该文完善 了李江雄的边界网格确定的方法, 同时提出了一种求平面散乱 点云的最小凸边算法, 使提取边界得以实现。
&
引言
平面散乱点云的特点是数量巨大, 因此对求散乱点云的边
网孔周围 = 个方向的网孔是否为空:每个非最边上实孔的上、 实孔 # 个角的反向延长线所 下、 左、 右 # 条边正对的 # 个网孔, 形成的右上、 右下、 左上、 左下 # 个网孔。若要判断的网孔为实 则这个网孔为边界 孔且周围 # 个正对网孔之中有一个为虚孔, 网孔;若该网孔为实孔且周围 # 个正对方向的网孔都是实孔, 那么再看这个实孔右上、 右下、 左上、 左下 # 个角的反向延长线 所形成的网孔,若其中有一个为虚孔则该网孔是边界网孔, 称 为斜对方向边界网孔 (当然, 有一种情况例外, 那就是实孔在最 上面、 最下面、 最左面、 最右面的时候, 这个网孔是边界网孔) 。 相邻的边界网孔连接起来就构成多个封闭的环, 每个封闭的环 可以看成一个初始化的边界。
,
数据实例
这个实例是用碎纸片形成的黑白扫描图, 然后划分虚拟网
格, 然后把所得到的网格中的边界网格找出来, 形成边界网格 环,并且把每一个边界网格中的边界细化出来得到各段边界, 然后把这些段边界连接起来, 从而得到一条边界线。 图 # 是一个碎纸片的扫描图。 图 , 是把整个扫描图通过网格划分而得到的边界网格连 成的环。 计算机工程与应用
!=/+*36+: >2271O6,K ;7 ;4( 24*1*2;(16E;62 7N )*1K( ,+C:(1 7N 5)*,*1 576,;E 6, O6E71O(1 6, ;46E 5*5(1, *2271O6,K ;7 ;4( 5)*2( 1()*;67, :(;P((, (OK( 576,;E *,O ,7 (OK( 576,;E, P( O6M6O( *)) 576,;E 6,;7 5*1;E 6, K16OO6,K , *N;(1 O6E;6,K+6E4 (OK( K16OO6,KE N17C ,7 (OK( K16OO6,KE, P( )6,Q *)) (OK( K16OO6,KE 6,;7 * 16,K *2271O6,K ;7 ;4(61 5)*2( 1()*;67,E465, *,O :16,K N71P*1O * ,(P Q6,O 7N ;4( )(*E; 246C: *)K716;4C 6, P4624 P( 2*, O6E;6)) :71O(1)6,( N17C (M(1- (OK( K16OO6,K, *N;(1P*1O P( 517M( ;4*; ;46E *)K716;4C 6E N(*E6:)( 6, ;4(71- *,O (R5(16C(,;$ "1>?&*%/: S(*E; T46C: , AOK( H76,;, S*1K( I+C:(1 7N H76,;E 6, ’6E71O(1
#
理论证明
定理: 对于平面区域的散乱点云, 由最小凸边算法得出的
边界就是最小凸边。 证明: 第一点证明所求得的边界能够把网格里面所有的点包围 起来。 假设存在一点 / 在所求得的最小 凸 边 之 外 , 点 / 必 将 在 某两点的连线之外, 假 设 这 两 点 的 连 线 为 01, 点 / 到 01 有 一
作者简介: 周石林 (&%U"B ) , 男, 在读博士研究生, 研究方向: (&%@!B ) , 男, 在读博士研究生, 副教授, 研究方向: T>’ V T>W V TXW3 。王琪 T>’ V T>W V
="
!""#$%
万方数据
(&%@<B ) , 男, 博士, 教授, 博士生导师, 研究领域: TXW3 。廖文和 T>’ V T>W V TXW3 。
!
边界网格的确定
把包围整个平面散乱点云的最小长方形求出来, 然后用单
位长度 (横 坐 标 和 纵 坐 标 的 单 位 长 度 可 以 不 同 ) 把这个长方形 划分为若干个一样大小的长方形称为网孔。 对于每一个网孔根 据它的里面是否有扫描点分为两种情况:网孔里面没有扫描 点, 网孔里面有扫描点。 有扫描点网孔称为实孔, 没有扫描点的 网孔称为虚孔。 要判断一个网孔是否为边界网孔应该基于这个