通常,除非您具有有关该世界的额外信息,否则您无法从单个图像中提取公制距离测量值。例如,如果您知道世界是平面的(或者您可以检测到地板,它是一个平面区域),则可以估算单应性。
单应性是平面(3x3矩阵)之间的投影变换。给定相机的固有校准,您可以将此平面感应的单应性分解为旋转和平移。翻译是按比例的。您可以通过了解相机到地面(平面)的距离来解决此比例尺的歧义。
一旦有了单应性,就可以检测不在平面上的对象。单应性可以将第一个图像变形为第二个图像。平面上的对象将对齐,并且会有一个小的误差。不在平面上的对象将无法对齐。这称为视差。
一种实现方式可能是
- 从两个图像中提取特征。
- 匹配功能,或对其进行跟踪。
- 使用RANSAC估算单应性。
- 使用校准将单应性分解为旋转和平移。
- 将第一个图像变形为第二个图像
。误差较大的像素不在地面上,可能会成为
障碍。
大部分构件都是在opencv中实现的(请参见http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。
祝好运。
PS单应性分解也将为您提供平面法线。但是,由于您假设这是地平面,因此我们有法线指向上方。可以在校准过程中完成更精确的解决方案。您可以使用棋盘格目标并估计其姿势。该姿势将具有一个平面法线并与摄影机保持一定距离。