首页 文章

基于原始SDK的kinect数据需要什么校正数学

提问于
浏览
3

我正在使用Kinect相机来获取深度数据 . 到目前为止我的应用程序工作,我得到了13位深度信息,排除了球员数据 . 把它放在一个24位的RGB位图上(我不喜欢rgb656),mdf应用程序看起来很棒,在该区域没有问题,没有位移错误等(并且不需要WPF显示它)

然而..我接着想要验证它到现实世界的测量 . 我正在使用原始的Microsoft SDK(我认为这是Windows 7的1.7) .

然后我注意到尽管我得到了正确的位,但错误率仍然很高,我可以使用 . 请参阅下表,我使用(便宜得多)磁带测量工具进行Kinect和(实际)世界毫米测量,以验证它

(测量来自正面中像素,它与物体不成角度)

kinect  world    err
 800    800      0
 894    900      6
 987    1000    13
1082    1100    18
1179    1200    21
1271    1300    29
1366    1400    34
1459    1500    41
1550    1600    50
1647    1700    53
1730    1800    70
1831    1900    69
1924    2000    76
2014    2100    86
2112    2200    88
2207    2300    93

通过一些反复试验,我发现kinect深度数据乘以1,0063确实给出了更好的结果 . 现在虽然它改善了一点 . 我想知道是否有一些公式可以更好地工作,因为乘以1,0063是很好的线性数学,也许这应该是指数,对数或??? . 我只是认为错误率不是非常线性的 .

上面的数据,我手动采取(很可能它包含一些小的humman测量错误,因为这也)我正在寻找一些数学,也可以提供可能的偏差加上minus . 比如距离是730毫米,可能高于或低于12毫米 .

我用C#编写代码,我是初学者和新手 . 也许这不是一个关于C#的直接问题,但它有点像编码困境,我在这里看到其他主题是人们要求正确的公式(韦尔编码很多) . 这里有一个非常强大的kinect社区 . 很可能你在这里知道一个比我的1,0063更好的答案

我可以阅读大约12种编码语言,所以如果你用不同的语言知道答案,那也很好 . 不帮助我的东西,是使用Aforge / OpenCV / xyz / Mathlab /等当然它们很棒但是如果我只需要1个功能,那么我不想使用它们,因为这个项目的所有其他图形内容我都是自己做的库 . (因为我觉得了解这些东西很酷)

---更新尚未钉它,但除了深度1,0063它接缝:

depth = kinectdept * ( kinectdepth - 800 ) * 0,069

非常接近 . 奇怪的是,上表中的错误率非常接近

(realDepth-800)/16

但我需要更多的样本来验证它,因为人类的错误在这里很大 .

1 回答

  • 2

    很棒的帖子,

    警钟响了 . 当我红了这个错误有多严重 . 就个人而言,我有点惊讶,这并没有引起更多关注 . 我开始测试,结果略有不同 . 哦,我猜你在写下的公式中犯了一个小错误 . 我得到了最好的结果:

    //Below  1300mm
    kinectDepth = kinectDepth + (kinectDepth -800) * 0,05
    // range 1350mm 2050mm
    kinectDepth = kinectDepth + (kinectDepth -800) * 0,064
    // range 2050mm 2850mm
    kinectDepth = kinectDepth + (kinectDepth -800) * 0,069
    // beyond 2900mm 
    kinectDepth = kinectDepth + (kinectDepth -800) * 0,08
    // beyond 3500mm
    kinectDepth = kinectDepth + (kinectDepth -800) * 0,085
    

    请注意,我们没有得到精确的mm,我们看到数字在更远的地方以厘米为单位跳跃,在近距离时它会跳跃2mm~4mm .

    我没有机会用其他的kinects测试它,但是如果其他人也喜欢分享他们的测试,我们只需要使用Excel,输入你的数学并保持$ B $ 1指向单个值(ea 0,05) . 我们从A列中获取了测试结果,并通过数学计算得出2个校正柱来比较结果 . 对于我们使用的范围,我们为每个范围制作了一个小线图,并且在视觉上测试了最佳拟合 . 我们也采取了一些趋势线,但这不太方便 . 由于在某些特定间隔处存在一些距离更多的不准确变化,例如随着时间(不是直线)增长的波形 . 另外,因为我们有一个上升校正,这可能是非线性的 . 但我无法理解,所以我纠正了基于上述的功能

    我希望有更多的人可以测试这个,这样我们就可以找到真正的解决方案 . 我的答案不是我认为的解决方案,但我希望有人可以改进并根据我和你的结果发布更好的解决方案 . 因此,我将此作为“测试”结果解决方案发布,而不是“最终”解决方案 .

相关问题