我正在进行一个基于Kinect的项目,使用红外视图和深度视图。在红外视图中,使用CVBlob库,我能够提取一些2D感兴趣点。我想找到这些点的深度。所以我想直接使用深度视图,像这样:
coordinates3D[0] = coordinates2D[0];
coordinates3D[1] = coordinates2D[1];
coordinates3D[2] = (USHORT*)(LockedRect.pBits)
[(int)coordinates2D[1] * Width + (int)coordinates2D[0]] >> 3;
我认为这不是获取深度的正确公式。 我能够在深度视图中可视化感兴趣的二维点。如果我在红外视图中得到一个点(x, y),那么我会在深度视图的(x, y)处绘制一个红色点。
我注意到红色点的位置与我的预期不符(在物体上)。它们的位置存在系统性误差。
我认为深度视图和红外视图具有一一对应关系,不像彩色视图和深度视图之间的对应关系。
这是否确实如此,还是红外和深度视图之间存在偏移?如果存在偏移,我能否以某种方式获取正确的深度值?