这是我的设置: Kinect安装在执行器上以进行水平移动。 这是我正在做的简短演示。 http://www.youtube.com/watch?v=X1aSMvDQhDM
以下是我的情景:
请参考上图。假设执行器中心“M”和Kinect光轴中心之间的距离'C'为'dx'(毫米),从Kinect获得的深度信息'D'(毫米)是相对的到光轴。由于我现在有一个安装在Kinect中心的执行器,物体和Kinect之间的实际深度为'Z'。
X是光轴和物体之间的距离,以像素为单位。 Theta2是光轴和物体之间的角度。 'dy'可以被忽略。
这是我的问题。 为了获得Z,我可以简单地使用图2中的距离方程。但是我不知道X的真实世界值(mm)。如果我有物体和光轴'theta2'之间的角度,我可以使用Dsin(theta2)来获得mm的X.然而theta2也是未知数。因为如果知道X(以mm为单位),我可以得到theta2,如果theta2已知,我可以得到X.那么我应该如何获得mm中的X值或者光轴与Object P之间的角度?
这是我尝试过的: 因为我知道Kinect的最大视野是57度,而Kinect的最大水平分辨率是640像素,我可以说kinect的1度覆盖了11.228(640/57)像素。但是,通过实验我发现这导致至少2度的误差。我怀疑它是由于Kinect上的镜头失真造成的。但我不知道如何补偿/正常化它。
非常感谢任何想法/帮助。