我用了一部华为荣耀 9 手机,没有标定内参和焦距,直接拍摄了一个园区场景:
采集了场地上几个点的经纬度坐标,并标记了它们在上图中的像素,然后把手机相机当作理想针孔相机模型,用 cv2.projectPoints
计算了世界坐标系下的点在图像上的重投影,发现误差几乎可以忽略:
用 mask r-cnn 检测图中车辆以后,根据 bounding box 和 mask 的信息用 scipy.optimize.minimize
函数估算了车辆的 3d 位姿 (大地 xy 坐标,与北方夹的偏航角),结果如下图:
现在流行用神经网络直接给出 3d 的位姿信息,我用的方法比较笨,调的 scipy 库。但是我想思想应该是一致的吧。我这个手机是快 3 年前买的,现在看来确实很符合理想针孔相机模型,畸变可以忽略。
注意这个方法不需要标定相机内参,任何手机拍一段视频都可以用来进行分析,前提只要标定场景中几个点的坐标。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.