3D 重建和 SfM 相机内部参数
3D Reconstruction and SfM Camera Intrinsic Parameters
我正在尝试了解 3D 重建的基本原理,并选择玩弄 OpenMVG。 但是,我已经看到证据表明我所询问的以下概念适用于 all/most SfM/MVS 工具,而不是只是 OpenMVG。因此,我怀疑任何计算机视觉工程师都应该能够回答这些问题,即使他们没有直接的 OpenMVG 经验。
我正在尝试完全理解 相机内部参数,或者它们似乎被称为“相机内部参数”,或者“内部参数”。根据 OpenMVG 的文档,camera intrinsics 取决于用于拍照的相机类型(例如,camera model),其中,OpenMVG 支持五种模型:
- 针孔:3个内在参数(焦点、主点x、主点y)
- 针孔径向 1:4 个固有参数(焦点、主点 x、主点 y、一个径向畸变因子)
- Pinhole Radial 3: 6 params (focal, principal point x, principal point y, 3 radial distortion factors)
- Pinhole Brown: 8 params (focal, principal point x, principal point y, 5 distortion factors (3radial+2 tangential))
- 带鱼眼畸变的针孔:7 个参数(焦点、主点 x、主点 y、4 个畸变因子)
这在他们的 wiki page that explains their camera model 上都有解释,这是我的问题。
在那个页面上有几个核心概念我需要澄清:
- 焦平面:它是什么以及它与图像平面有何不同(如上图所示)那个页面)?
- focal distance/length: 这是什么?
- 主要点:它是什么,为什么理想情况下它应该是图像的中心?
- 比例因子:这只是对相机与图像平面的距离的估计吗?
- 失真:它是什么以及它的各种子类型有什么区别:
- 径向
- 切向
- 鱼眼
在此提前感谢任何clarification/correction!
我不确定焦平面,所以我会在写完你提到的其他概念后再回来。假设你有一个矩形像素的针孔相机模型,让 P=[X Y Z]^T 是相机 space 中的一个点,其中 ^T表示转置。在那种情况下(假设 Z 是相机轴),这个点可以投影为 p=KP 其中 K(校准矩阵)是
f_x 0 c_x
0 f_y c_y
0 0 1
(当然,你会想把p除以它之后的第三个坐标)。
焦距,我会注意到f是相机中心和图像平面之间的距离。变量
f_x=s_x*f
f_y=s_y*f
在上面的矩阵中分别用像素宽和高表示这个值。变量s_x和s_y就是提到的比例因子在您引用的页面上。比例因子是像素大小(宽度或高度)与您在相机中使用的单位之间的比率 space。因此,例如,如果您的像素宽度是您在相机 space 的 x 轴上使用的单位大小的一半,您将拥有 s_x=2.
我看到人们使用术语 主要点 来指代不同的事物。虽然有些人将其定义为相机轴和图像平面之间的交点(Wikipedia 似乎是这样做的),但其他人将其定义为 [c_x [=90 给出的点=]]^T。为了清楚起见,让我们把整个投影过程分开:
等式右边的两项做不同的事情。第一个缩放点并将其放入图像平面。第二项 (i.e. [c_x c_y 1]^T) 移动了另一项的结果。因此, [-c_x ,-c_y]^T 是图像坐标系的中心。
关于tangential/radial畸变的区别:通常在矫正畸变的时候,我们假设图像的中心o 保持不失真。一个像素 p 在畸变的影响下会从它的真实位置 q 有 "moved away"。如果该运动是沿矢量 q-o 进行的,则失真是径向的,但如果该运动具有不同方向的分量,则据说(也)具有切向失真。
正如我所说,我有点不确定他们在图中显示的 焦平面 是什么意思,但我认为该术语通常指的是向上的平面下图像将在物理针孔相机中形成。图像平面上的点 P(以世界坐标表示)在焦平面上只是 -P。
我正在尝试了解 3D 重建的基本原理,并选择玩弄 OpenMVG。 但是,我已经看到证据表明我所询问的以下概念适用于 all/most SfM/MVS 工具,而不是只是 OpenMVG。因此,我怀疑任何计算机视觉工程师都应该能够回答这些问题,即使他们没有直接的 OpenMVG 经验。
我正在尝试完全理解 相机内部参数,或者它们似乎被称为“相机内部参数”,或者“内部参数”。根据 OpenMVG 的文档,camera intrinsics 取决于用于拍照的相机类型(例如,camera model),其中,OpenMVG 支持五种模型:
- 针孔:3个内在参数(焦点、主点x、主点y)
- 针孔径向 1:4 个固有参数(焦点、主点 x、主点 y、一个径向畸变因子)
- Pinhole Radial 3: 6 params (focal, principal point x, principal point y, 3 radial distortion factors)
- Pinhole Brown: 8 params (focal, principal point x, principal point y, 5 distortion factors (3radial+2 tangential))
- 带鱼眼畸变的针孔:7 个参数(焦点、主点 x、主点 y、4 个畸变因子)
这在他们的 wiki page that explains their camera model 上都有解释,这是我的问题。
在那个页面上有几个核心概念我需要澄清:
- 焦平面:它是什么以及它与图像平面有何不同(如上图所示)那个页面)?
- focal distance/length: 这是什么?
- 主要点:它是什么,为什么理想情况下它应该是图像的中心?
- 比例因子:这只是对相机与图像平面的距离的估计吗?
- 失真:它是什么以及它的各种子类型有什么区别:
- 径向
- 切向
- 鱼眼
在此提前感谢任何clarification/correction!
我不确定焦平面,所以我会在写完你提到的其他概念后再回来。假设你有一个矩形像素的针孔相机模型,让 P=[X Y Z]^T 是相机 space 中的一个点,其中 ^T表示转置。在那种情况下(假设 Z 是相机轴),这个点可以投影为 p=KP 其中 K(校准矩阵)是
f_x 0 c_x
0 f_y c_y
0 0 1
(当然,你会想把p除以它之后的第三个坐标)。
焦距,我会注意到f是相机中心和图像平面之间的距离。变量
f_x=s_x*f
f_y=s_y*f
在上面的矩阵中分别用像素宽和高表示这个值。变量s_x和s_y就是提到的比例因子在您引用的页面上。比例因子是像素大小(宽度或高度)与您在相机中使用的单位之间的比率 space。因此,例如,如果您的像素宽度是您在相机 space 的 x 轴上使用的单位大小的一半,您将拥有 s_x=2.
我看到人们使用术语 主要点 来指代不同的事物。虽然有些人将其定义为相机轴和图像平面之间的交点(Wikipedia 似乎是这样做的),但其他人将其定义为 [c_x [=90 给出的点=]]^T。为了清楚起见,让我们把整个投影过程分开:
等式右边的两项做不同的事情。第一个缩放点并将其放入图像平面。第二项 (i.e. [c_x c_y 1]^T) 移动了另一项的结果。因此, [-c_x ,-c_y]^T 是图像坐标系的中心。
关于tangential/radial畸变的区别:通常在矫正畸变的时候,我们假设图像的中心o 保持不失真。一个像素 p 在畸变的影响下会从它的真实位置 q 有 "moved away"。如果该运动是沿矢量 q-o 进行的,则失真是径向的,但如果该运动具有不同方向的分量,则据说(也)具有切向失真。
正如我所说,我有点不确定他们在图中显示的 焦平面 是什么意思,但我认为该术语通常指的是向上的平面下图像将在物理针孔相机中形成。图像平面上的点 P(以世界坐标表示)在焦平面上只是 -P。