【发布时间】:2017-12-10 08:23:26
【问题描述】:
我正在使用 opencv 为 iPhone 开发一个应用程序。我必须使用方法solvePnPRansac:
http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html
对于这种方法,我需要提供一个相机矩阵:
__ __
| fx 0 cx |
| 0 年 |
|_0 0 1 _|
其中 cx 和 cy 代表图像的中心像素位置, fx 和 fy 代表焦距,但这就是文档所说的全部内容。我不确定为这些焦距提供什么。 iPhone 5 的焦距为 4.1 毫米,但我认为这个值不能按原样使用。
我查看了另一个网站:
http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html
它显示了 opencv 如何创建相机矩阵。这里指出焦距是以像素为单位测量的。
我查看了另一个网站:
http://www.velocityreviews.com/forums/t500283-focal-length-in-pixels.html
(大约一半) 它说焦距可以使用以下公式从毫米单位转换为像素:fx = fy = focusMM * pixelDensity / 25.4;
我发现的另一个链接指出 fx = focusMM * width / (sensorSizeMM); fy = focusMM * length / (sensorSizeMM);
我不确定这些方程式以及如何正确创建此矩阵。
任何有关如何创建准确的相机矩阵(尤其是 iPhone 5)的帮助、建议或链接都将不胜感激,
艾萨克
附言我认为 (fx/fy) 或 (fy/fx) 可能等于相机的纵横比,但这可能是完全错误的。
更新:
Pixel coordinates to 3D line (opencv)
使用此链接,我可以弄清楚他们希望如何格式化 fx 和 fy,因为他们使用它来缩放相对于它们与中心的距离的角度。因此,fx 和 fy 可能以像素/(单位长度)为单位,但我仍然不确定这个单位长度需要是多少,只要 x 和 y 相互缩放就可以是任意的吗?
【问题讨论】:
标签: iphone opencv computer-vision augmented-reality camera-calibration