【问题标题】:Map Projection Points to Real world Points将投影点映射到真实世界的点
【发布时间】:2019-03-01 19:22:21
【问题描述】:

我已经广泛搜索了这个问题的答案,但我找不到,所以我在这里问。

问题:

我有一个激光从头顶向下投射到一个表面上,我想在这个表面上投射一些特定尺寸的形状。为了做到这一点,我需要“校准”激光以使其在现实世界中接地。

激光在 x 和 y 方向上投射在其自己的坐标系中,范围从 -32000 到 32000。我在我的表面上以一个粗略的矩形设置了目标(有关更多详细信息,请参见下图)。目标以毫米为单位设置,并且是它们自己的坐标系。

我需要能够以毫米为单位取点,并在一系列场景中准确地将它们放入 -32000 到 32000 的范围内。

示例:

确定所需点的激光空间坐标最准确的方法是什么?

问题 2:

投影空间不保证是平坦的。它可以向任何方向倾斜。例如,如果底部(相对于示例图片)升高,则真实世界坐标在 2-D 中保持不变,但测量的激光坐标变得更像梯形。见下图

如果有人遇到/解决了类似的问题,或者甚至可以开始为我指出正确的解决方案,我们将不胜感激。

谢谢!

【问题讨论】:

    标签: c# wpf transform transformation homography


    【解决方案1】:

    我在这里的帖子中遇到了同样的问题:https://stackoverflow.com/a/52480400/9130280

    作为一个例子,我问了我的图片问题,因为它更容易解释,但我将解决方案应用于设备在表面上的定位。它接近你想要做的。

    基本上,您必须使用 OpenCvSharp 3 库(来自 nuget)。

    首先你必须得到一个单应矩阵。您必须知道的唯一坐标是边缘。所以你用边缘填充两个数组,然后你使用:

    homographyMatrix = OpenCvSharp.Cv2.FindHomography(originalPointsList, targetPointsList);

    然后将“毫米”中的任何点与激光坐标中的等效点相匹配:

    targetPoint = OpenCvSharp.Cv2.PerspectiveTransform(orignalPoint, homographyMatrix);

    如果您需要更多详细信息,请告诉我。

    【讨论】:

    • 这个解决方案非常适合我提出的问题。事实证明,当我开始这个问题时,我并没有完全理解我的问题。我将您的答案标记为正确,因为它是正确的。但是,按照我现在的理解,我已经开始了一个新线程来详细说明我的问题。 stackoverflow.com/questions/52615168/…
    • 太棒了!如果您发现新线程有任何解决方案,请告诉我。我可以用它来改进我的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2018-11-03
    • 2019-09-29
    • 2019-12-14
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多