OpenCV鱼眼模型理解
鱼眼模型介绍 这里直接截取鱼眼镜头的成像原理到畸变矫正的原文作为此文的引子: 鱼眼镜头一般是由十几个不同的透镜组合而成的。在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。 在研究鱼眼相机成像时,可以将上面的镜头组简化为一个球面: 图中,$O_1-X_cY_cZ_c$是相机坐标系,$O_2-xy$是成像平面。世界中有一点$P$,入射角为$\theta$。如果按照针孔相机模型,入射光线$PO_1$经过镜头后不改变路线,$p’$为$P$的成像点。但对于鱼眼相机,入射光线经过镜头后会发生折射,因此$p$才是$P$的成像点,极坐标表示为$(r, \varphi)$ 。 可以用投影函数来对光线的折射建模。根据投影函数的不同,鱼眼相机的传统模型大致能被分为五种:透视投影(即针孔相机模型)、等积投影、等距投影、体视投影、正交投影。 投影模型 投影函数 特征 i. 透视投影 (perspective projection) $r = ftan\theta$ 针孔相机模型 ii. 体视投影 (stereographic projection) $r = 2ftan\frac \theta 2$ 任何直线相交的角度,在变换后保持不变 iii. 等距投影 (equidistance projection) $r = f\theta$ 物体成像面上距离画面中心的距离与入射角成正比 iv. 等积投影 (equisolid angle projection) $r = 2fsin\frac \theta 2$ 在变换前后,物体所占的立体角大小不变 v. 正交投影 (orthogonal projection) $r = fsin\theta$ 投影畸变最大,而且最大视场角不能大于180° OpenCV所用模型 先看OpenCV文档的原文: Let $P$ be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) The coordinate vector of $P$ in the camera reference frame is:...