Efficient Organized Point Cloud Segmentation with Connected Components论文阅读

Efficient Organized Point Cloud Segmentation with Connected Components

适用:有组织的点云

方法

A Connected Component Algorithm
  • 点云用 P ( x , y ) P(x,y) P(x,y)表示,可以通过x,y访问其领域
  • 点云分割的平面段用 L L L标签来表示:比如 P ( x 1 , y 1 ) ∈ S i P (x_1, y_1) ∈ S_i P(x1,y1)Si P ( x 2 , y 2 ) ∈ S i P (x_2, y_2) ∈ S_i P(x2,y2)Si, 则 L ( x 1 , y 1 ) = L ( x 2 , y 2 ) L(x_1, y_1) =L(x_2, y_2) L(x1,y1)=L(x2,y2).
  • 如果 C ( P ( x 1 , y 1 ) , P ( x 2 , y 2 ) ) = t r u e C(P (x_1, y_1), P (x_2, y_2)) = true C(P(x1,y1),P(x2,y2))=true, 则 L ( x 2 , y 2 ) = L ( x 1 , y 1 ) L(x_2, y_2) = L(x_1, y_1) L(x2,y2)=L(x1,y1),否则 L ( x 2 , y 2 ) ≠ L ( x 1 , y 1 ) L(x_2, y_2) \not=L(x_1, y_1) L(x2,y2)=L(x1,y1).
    在这里插入图片描述
  • 首先为云中的第一个点分配标签为0的有效数据
  • 然后将点云的第一行和第一列带入 C C C进行比较,以分配标签。其余的点通过检查其相邻点 P ( x − 1 , y ) P(x−1,y) P(x1,y) P ( x , y − 1 ) P(x,y− 1) P(xy1)
  • 如果两个相邻像素(上方和左侧)具有不同的标签,则必须将这些标签与当前像素的标签合并
    在这里插入图片描述
  • 使用联合查找算法来高效地完成这一任务。
  • 一旦标签图像创建完成,则执行第二遍以合并标签,将最合适的标签分配给区域,并生成最终连接的组件标签图像 L ( x , y ) L(x,y) L(xy)
B Planar Segmentation

求每个点法线的方法:使用积分图计算点云法向量

  • 在计算每个点的单位长度法线 { n x , n y , n z } \{ nx,ny,nz\} { nxnynz}后,点 p p p可以表示为:
    p = { x , y , z , n x , n y , n z } p =\{ x, y, z, nx, ny, nz \} p={ x,y,z,nx,ny,nz}
  • 用法线计算到该点的垂直距离(平面方程的d变量),从而得到平面空间中的坐标:
    n d = { x , y , z } ⋅ { n x , n y , n z } nd = \{x, y, z\} · \{nx, ny, nz\} nd={ x,y,z}{ nx,ny,nz}
  • 用这些信息增强我们的点表示会产生一个具有全平面方程的点:
    p = { x , y , z , n x , n y , n z , n d } p = \{x, y, z, nx, ny, nz, nd\} p={ x,y,z,nx,ny,nz,nd}
  • 定义两点之间的法线方向和垂直距离分量的距离度量
    在这里插入图片描述
  • 将该函数 C C C与上述算法一起使用,得到与平面空间中的连通分量相对应的一组标记线段 L ( x , y ) L(x,y) L(xy)

在这里插入图片描述
注意,在这一点上,我们只检查了局部信息,这意味着我们的片段可能只是局部平面的。到目前为止,该方法可以被认为是“平滑表面”分割,而不是平面分割。

  • 我们对每个具有超过min个内点的平面段进行最小二乘平面拟合,从而得到每平面段的方程。为了确保生成的平面段实际上是平面的,还将计算曲率,并使用阈值来过滤平滑但不是平面的平面段。
C Planar Refinement Algorithm

上述方法的一个缺点是它需要精确的曲面法线,而这些法线并不总是可用的。特别是,对象边界和图像边界附近的点/像素往往具有噪声表面法线或无表面法线,这导致分割的平面区域在实际平面边缘之前结束。
在这里插入图片描述

  • 这里用新的 c o m p a r e ( C ) compare(C) compareC函数来解决。给定法线 p = { x , y , z } p=\{x,y,z\} p{ xyz}的点和平面方程 e q n = { n x , n y , n z , n d } eqn=\{nx,ny,nz,nd\} eqn{ nxnynznd},点到平面的距离由下式给出:
    d i s t p t p ( p , e q n ) = ∣ n x ∗ x + n y ∗ y + n z ∗ z + n d ∣ distptp(p, eqn) = | nx ∗ x + ny ∗ y + nz ∗ z + nd | distptp(p,eqn)=nxx+nyy+nzz+nd
  • 此函数的输入需要我们之前的平面分的输出标签 L L L,以及一组标签 r e f i n e _ l a b e l s = { l 1 , … , l n } refine\_labels=\{l1,…,ln\} refine_labels{ l1ln}。还需要每个段标签的平面方程 e q n s = { e q n 1 , … , e q n n } eqns=\{eqn_1,…,eqn_n\} eqns={ eqn1eqnn}

在这里插入图片描述

由于此比较仅在一个方向上延伸区域,因此需要两个额外的过程进行细化:一个过程用于“向上和向左”延伸平面区域,另一个过程则用于“向下和向右”延伸。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43200940/article/details/128080455