所以例如我有这样的坐标线。如何(使用什么算法)可以生成某种简单的三维场景,这意味着从相机到面向我们的墙壁的相对距离是什么?
答案 0 :(得分:3)
起点:http://en.wikipedia.org/wiki/Pinhole_camera_model和其中一本参考书:Richard Hartley和Andrew Zisserman(2003)。计算机视觉中的多视图几何。剑桥大学出版社。
一种非常简单的方法:请注意,这只是为了解释一般原则。
假设你知道现实世界中墙上网格(瓷砖?)的措施你可以校准相机,所以得到内在和外在相机参数;从这些参数中,您可以获得相机在现实世界场景中的位置(相机中心)。
例如,您可以将XYZ参考框架的原点放在右侧垂直墙与摄像机墙面相交的上角,然后在现实世界中测量XYZ参考系中每个瓷砖角的坐标,你有一组3D点(让我们称之为objectPoints
),这些点的度量单位是毫米(或英寸)。
3D点不得位于同一平面上。
然后你需要在图像上找到相同的点,你将获得一组2D点,这些点的“度量单位”是像素(让我们称之为imagePoints
)。
3D-2D对应是算法的输入,它为您提供相机参数(例如参见http://en.wikipedia.org/wiki/Camera_resectioning或OpenCV函数calibrateCamera
http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html#cv-calibratecamera以objectPoints
作为第一个参数,imagePoints
作为第二个参数)
根据摄像机参数,您可以获得摄像机中心,即摄像机距XYZ参考系(0,0,0)的距离。