我用了一部华为荣耀 9 手机,没有标定内参和焦距,直接拍摄了一个园区场景:
采集了场地上几个点的经纬度坐标,并标记了它们在上图中的像素,然后把手机相机当作理想针孔相机模型,用 cv2.projectPoints
计算了世界坐标系下的点在图像上的重投影,发现误差几乎可以忽略:
用 mask r-cnn 检测图中车辆以后,根据 bounding box 和 mask 的信息用 scipy.optimize.minimize
函数估算了车辆的 3d 位姿 (大地 xy 坐标,与北方夹的偏航角),结果如下图:
效果还不错。
现在流行用神经网络直接给出 3d 的位姿信息,我用的方法比较笨,调的 scipy 库。但是我想思想应该是一致的吧。我这个手机是快 3 年前买的,现在看来确实很符合理想针孔相机模型,畸变可以忽略。
注意这个方法不需要标定相机内参,任何手机拍一段视频都可以用来进行分析,前提只要标定场景中几个点的坐标。
1
Plank 2020-03-18 11:29:54 +08:00
这种有啥应用场景吗?
|
2
mathzhaoliang OP @Plank 无人驾驶或者园区监控吧
|