我现在正在尝试找到一种使用kinect计算给定物体大小的方法。
因为我有以下数据:
镜头的角度视场 距离 和800*600分辨率下的像素宽度
我相信这是可以计算出来的。有没有数学技能能给我一点帮助?
通过一些三角学知识,可以进行近似。
如果你画一个直角三角形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像素网格的每个像素占据相机视野的相等角度。如果是这样,那么你可以将视野分成相等的部分来测量每个像素中对象的线性尺寸。