PCL:过滤点云给定 2 线方程

Posted

技术标签:

【中文标题】PCL:过滤点云给定 2 线方程【英文标题】:PCL: Filtering Point Cloud given 2 line equations 【发布时间】:2021-05-11 08:19:55 【问题描述】:

给定 y = mx + c 形式的两条线方程,必须过滤掉不在两条线之间的所有点。

目前我正在使用直通过滤器,它可以大致过滤掉这些点。相反,这可以使用两个线方程更精确地完成吗?

【问题讨论】:

【参考方案1】:

假设您有一条线由y = mx + c1 定义,另一条线由y = mx + c2 定义。如您所见,我假设两行的m 系数相同,否则短语​​p>

所有不在在两行之间的点都必须被过滤掉

会毫无意义。

现在,对行进行排序,使c2 <= c1,即

if (c1 < c2) std:;swap(c1, c2);

现在您确定c1 行等于或高于c2 行。

采取任何一点(xxyy)。将xx 代入第一行的方程, y = m * xx + c1。如果结果小于yy,则 (xx, yy) 位于c1 行上方。您应该将其从云端移除。

对 c2 行执行相同操作:y = m * xx + c2。如果结果大于 yy,则点 (xx, yy) 位于 c2 行下方,应从集合中删除。

换句话说,你应该只保留那些满足的点 (x, y)

  m * x + c1 >= y and m * x + c2 <= y; // assuming c1 >= c2

例子:

假设您有 y = x + 3 和 y = x + 1。假设你有一个点 (2,4)。你应该保留它还是过滤掉它?

我们有c1 = 3,c2 = 1。让我们在第一行插入 2。 y = 1*2 + c1 = 5. 5 >= 4. 第一次测试通过。

现在是第二行。 y = 1*2 + 1 = 3. 3

【讨论】:

以上是关于PCL:过滤点云给定 2 线方程的主要内容,如果未能解决你的问题,请参考以下文章

PCL - 过滤掉密集区域中未找到的点

PCL 在没有云副本的八叉树上应用过滤器

点云处理技术之PCL滤波器——参数化模型(投影点云,pcl::ProjectInliers)

PCL:点云赋色 | 自定义点云中任意一点的颜色

PCL点云配准

【PCL】VoxelGrid体素化网格滤波器