Kinect物体测量

4

我现在正在尝试找到一种使用kinect计算给定物体大小的方法。

因为我有以下数据:

镜头的角度视场 距离 和800*600分辨率下的像素宽度

我相信这是可以计算出来的。有没有数学技能能给我一点帮助?


你是想获取有兴趣物体的横截面积、线性尺寸还是试图恢复体积? - Atreys
现在先翻译线性尺寸...也许以后我会尝试体积。 - Killercode
1个回答

3

通过一些三角学知识,可以进行近似。

如果你画一个直角三角形ABC,将摄像头放在一条腿(A)处,物体位于远端(边缘BC)处,直角在(C),那么物体的高度将是腿BC的高度。到像素的距离可能是腿AC或AB的距离,Kinect传感器规格将调节这一点。如果你得到像素中心的距离,则它将是AC。如果你有像素角落的距离,则距离将是AB。

用A表示相机拍摄像素的角度,d是直角的斜边长度,y是远端腿(边BC)的距离:

sin(A) = y / d

y = d sin(A)

y是投影到物体平面上的像素长度。你可以通过将角度的正弦乘以到物体的距离来计算它。

这里我承认我不了解Kinect的API以及提供的详细程度。你说你有视野角度,那么你可以假设你800x600像素网格的每个像素占据相机视野的相等角度。如果是这样,那么你可以将视野分成相等的部分来测量每个像素中对象的线性尺寸。
你还提到了你有物体距离。我假设你有800x600网格的每个像素的距离图。如果这是不正确的,一些计算可以用来近似涉及感兴趣对象的像素的距离网格,如果你对被测量对象做出一些假设的话。

我觉得我没有理解 :( - Killercode
你能详细说明一下吗?我相信这是一个语言问题 :Py是投影到目标平面的像素长度吗? - Killercode
我想我明白了...好的,让我们假设我把Kinect固定在桌子上方的支架上,向下指定一个固定高度,并且我想测量桌子上的盒子!我不需要用到勾股定理...所以我只需要你解释的关于角度视野的第二部分就可以了。 - Killercode
最后的评论是我该如何将其从像素传递到公制值:S - Killercode
1
@Killercode,我进行了编辑,希望更加清晰。测量结果(y值)的单位将与您从Kinect获取的测量单位相同。 - Atreys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接