【问题标题】:Transforming 2D pixel coordinates to 3D Azure Kinect将 2D 像素坐标转换为 3D Azure Kinect
【发布时间】:2020-08-05 07:39:12
【问题描述】:

我正在使用深度相机检测矩形。此时,我正在努力使用 NFOV 深度相机生成选定像素的准确 3d 坐标。我通过在测试板上选择 2 个点来测试这一点,使用 Depth 2d 将它们转换为 Color 3d Kinect-SDK C# Wrapper 函数,计算接收坐标之间的距离,并测量所选真实世界点之间的距离(918mm)。在 2.7 米距离处,图像中心出现 2 厘米的误差,而在角落,误差达到 6 厘米。

转换函数不应该纠正失真吗?我是否错过了接收准确数据的关键步骤?这可能是别的东西吗?

感谢您的帮助!

【问题讨论】:

标签: c# kinect kinect-sdk azurekinect


【解决方案1】:

添加来自 Git 问题的响应:

几点:

  1. 您是如何选择二维点的。是不是通过手动查看 红外图像或手动查看深度图像?重点是,你 应该从与 3d 完全匹配的准确 2d 像素开始 点,通过人眼执行此操作时,您通常需要一些纹理 例如在红外光谱中有可见标记的目标板,然后你 像素检查(假设人眼可以提供足够的精度)到 找到标记的中心或使用 CV 算法检测 2d 分。
  2. 仅尝试将 2d 深度像素转换为 3d 深度点 相机空间(而不是彩色 3d 空间)。你只需要改变 TransformTo3D 的最后一个参数为 K4A.CalibrationDeviceType.Depth 然后比较相对 A点到B点的距离与真实世界的测量值。这 可以帮助缩小是否仅使用深度相机内在函数可以 给出更好的结果(而不是一直到色彩空间)。 如果您使用深度相机空间中的 3d 点看到更好的结果 与色彩空间中的 3d 点相比,可能有 一些与外部或颜色内部相关的校准问题。

最后,深度相机相对于 colot 相机倾斜 6 度应该无关紧要。相机校准内在函数针对每个相机的失真进行校准,而外在函数则针对相机力学进行校准。

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 2015-01-01
    • 2015-06-29
    • 2014-06-12
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多