【问题标题】:Bounding box orientation边界框方向
【发布时间】:2017-09-11 11:23:18
【问题描述】:

在 RANSAC 和在分割和过滤过程中条件异常值去除之后,我使用边界框来获取对象周围的一对 4 点。在计算了边界框的 8 个角点后,我使用了其中的 2 个(前下方)来定位机器人。例如,以下是提取对象的视觉效果,其中包含我打算使用的角点

问题是,如果物体像上面一样笔直,机器人几乎在中间正确移动,但如果物体倾斜,机器人会在右侧或左侧移动更多,具体取决于例如倾斜的哪一侧

经过分析,边界框点似乎并不完全正确,而是在对象上有偏移。在这种情况下有什么帮助?

-在角点上添加手动偏移

-调整分割阈值

-可以使用这些点的表面法线或角度信息

其他可能性

【问题讨论】:

    标签: c++ computer-vision point-cloud-library robotics


    【解决方案1】:

    我假设当您倾斜对象时,对象角上离您较近的点比其他点提供更精确的信息。如果您可以获取角度信息,请找到表面法线,然后计算您在最初获得的两点之间绘制的向量或线与法线向量之间的角度。并尝试根据您得到的结果更改点,在您的偏移区域中,法线和我们的向量将彼此为 90。

    例如,您知道法线向量并且有两个点 (x1,y1), (x2,y2)。在这两点之间画一个向量,计算这个向量和法线之间的角度。如果角度像85度。操纵 (x2,y2) 得到 90 度。这就像你从它的起点拿着一个向量并玩弄它的方向。因为我们假设我们的出发点是精确的。

    【讨论】:

    • 我完全同意你的看法。如果我理解正确 1)在 2 个角点之间找到向量 2)估计这 2 个角点的法线 3)如果(两个向量之间的角度小于 90° 或大于 90°) 4)我们如何操作( x2,y2) 得到 90 度。 ?
    • 它变成了一架飞机。法线向量和我们创建的向量。在这个平面上,矢量只能顺时针或逆时针旋转。尝试在一个方向先旋转它那么小。如果方向正确,继续计算角度。但如果误差增加,则改变方向。例如,如果您在 x y 平面上有一个矢量 。首先测试,如果角度变成你想要的,如果不去就可以了。但增加的数量很少。使用多个步骤指向要点。例如,将您的敏感度设为 +-0.05。
    • 能否请您提及任何来自 PCL 或 OpenCV 教程的示例代码。
    • 这与编程语言无关。假设您有一个函数可以找到两个向量之间的角度。并找到包含法线向量和我们创建的向量的平面。假设我们有返回 69 度的 findAngle(V1,V2)。然后更改 (x2,y2) 然后再次 findAngle(V1,V2) 假设它变为 70,因此继续沿相同方向旋转矢量。它的基本 while 循环和 if 语句。如果先前的 findAngle() > 当前的 findAngle() 继续增加或减少。而(findAngle() > 89 && findAngle()
    猜你喜欢
    • 2015-03-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2021-05-27
    • 2016-03-10
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多