计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

目录

0 拍照的死亡角度

拍照死亡角度一般指的是将自己脸盆子拍得特别大,拍出用鼻孔看人的狰狞面目,比如下面这张照片。在拍照的死亡角度下,镜头畸变会产生失真,让你的体态更圆润、厚实,因此部分美颜软件里人像修正中会有”去畸变”这一项功能。本文就从计算机视觉的角度谈一谈镜头畸变原理。

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

; 1 透视相机模型

透视相机模型描述了三维空间中的点与二维图像平面上像素间的映射关系

根据小孔成像原理,透视相机的成像点与空间点之间方向相反,如图所示。为得到与空间点方向相同的成像点,将成像面沿着光轴移动到归一化成像面,接下来的讨论以归一化成像面为准。

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
在确定归一化成像面后,从空间点W ⁣ X ~ ^W!\tilde{X}W X ~到像素点u ~ \tilde{u}u ~的映射可分为两步:
  1. 将W ⁣ X ~ ^W!\tilde{X}W X ~映射到归一化成像面的成像点C ⁣ x ~ ^C!\tilde{x}C x ~,对应的映射关系称为 相机外参(Extrinsic)
  2. 将C ⁣ x ~ ^C!\tilde{x}C x ~映射到像素平面的像素u ~ \tilde{u}u ~,对应的映射关系称为 相机内参(Intrinsic)。上述各点均处于投影空间,采用齐次坐标。

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

2 相机矩阵

设世界坐标系{ W } \left{ \boldsymbol{W} \right}{W }相对于透视相机坐标系{ C } \left{ \boldsymbol{C} \right}{C }的位姿为

W C ⁣ T = [ W C ⁣ ⁣ ⁣ R C ⁣ p w 0 0 1 ] {\boldsymbol{W}}^{\boldsymbol{C}}!\boldsymbol{T}=\left[ \begin{matrix} {\boldsymbol{W}}^{\boldsymbol{C}}\;!!!\boldsymbol{R}& ^{\boldsymbol{C}}!\boldsymbol{p}_{w_0}\ 0& 1\\end{matrix} \right]W C ​T =[W C ​R 0 ​C p w 0 ​​1 ​]

考虑到从三维空间降维到二维平面,设世界坐标值[ W ⁣ ⁣ X W ⁣ ⁣ ⁣ ⁣ Y W ⁣ ⁣ Z 1 ] T \left[ \begin{matrix} ^{\boldsymbol{W}!}!X& ^{\boldsymbol{W}!}!!\:!\:Y& ^{\boldsymbol{W}!}!Z& 1\\end{matrix} \right] ^T [W X ​W Y ​W Z ​1 ​]T,则

C ⁣ x ~ = [ 1 0 0 0 0 1 0 0 0 0 1 0 ] , W C ⁣ T W ⁣ ⁣ X ~ = [ C ⁣ X C Y C ⁣ Z ] ^{\boldsymbol{C}}!\tilde{x}=\left[ \begin{matrix} 1& 0& 0& 0\ 0& 1& 0& 0\ 0& 0& 1& 0\\end{matrix} \right] {\color{white} ,}_{\boldsymbol{W}}^{\boldsymbol{C}}!\boldsymbol{T}^{\,\,\boldsymbol{W}}!!\tilde{X}=\left[ \begin{array}{c} ^{\boldsymbol{C}}!X\ ^{\boldsymbol{C}}Y\ ^{\boldsymbol{C}}!Z\\end{array} \right]C x ~=⎣⎡​1 0 0 ​0 1 0 ​0 0 1 ​0 0 0 ​⎦⎤​,W C ​T W X ~=⎣⎡​C X C Y C Z ​⎦⎤​

在上述推导过程中,称

M E = [ 1 0 0 0 0 1 0 0 0 0 1 0 ] , W C ⁣ T = [ W C ⁣ ⁣ ⁣ R C ⁣ p w 0 ] \boldsymbol{M}{\boldsymbol{E}}=\left[ \begin{matrix} 1& 0& 0& 0\ 0& 1& 0& 0\ 0& 0& 1& 0\\end{matrix} \right] {\color{white} ,}{\boldsymbol{W}}^{\boldsymbol{C}}!\boldsymbol{T}=\left[ \begin{matrix} {\boldsymbol{W}}^{\boldsymbol{C}}\;!!!\boldsymbol{R}& ^{\boldsymbol{C}}!\boldsymbol{p}{w_0}\\end{matrix} \right]M E ​=⎣⎡​1 0 0 ​0 1 0 ​0 0 1 ​0 0 0 ​⎦⎤​,W C ​T =[W C ​R ​C p w 0 ​​​]

相机外参矩阵。通常令尺度因子C ⁣ Z = 1 ^{\boldsymbol{C}}!Z=1 C Z =1,C ⁣ x ~ = [ C ⁣ X C ⁣ Z C Y C ⁣ Z 1 ] T = [ C ⁣ x ^ C ⁣ y ^ 1 ] T ^{\boldsymbol{C}}!\tilde{x}=\left[ \begin{matrix} \frac{^{\boldsymbol{C}}!X}{^{\boldsymbol{C}}!Z}& \frac{^{\boldsymbol{C}}Y}{^{\boldsymbol{C}}!Z}& 1\\end{matrix} \right] ^T=\left[ \begin{matrix} ^{\boldsymbol{C}}!\hat{x}& ^{\boldsymbol{C}}!\hat{y}& 1\\end{matrix} \right] ^T C x ~=[C Z C X ​​C Z C Y ​​1 ​]T =[C x ^​C y ^​​1 ​]T

从C ⁣ x ~ ^C!\tilde{x}C x ~到像素u ~ \tilde{u}u ~的映射用三维 内参矩阵K K K来表示,即

u ~ = K C ⁣ x ~ = [ f u s c u 0 f v c v 0 0 1 ] C ⁣ x ~ \tilde{u}=\boldsymbol{K}^C!\tilde{x}=\left[ \begin{matrix} f_u& s& c_u\ 0& f_v& c_v\ 0& 0& 1\\end{matrix} \right] \,\,^C!\tilde{x}u ~=K C x ~=⎣⎡​f u ​0 0 ​s f v ​0 ​c u ​c v ​1 ​⎦⎤​C x ~

其中

  • 如图(a)所示,参数c u c_u c u ​、c v c_v c v ​用于 中心映射——将光轴与归一化成像面的交点,即成像面中心点映射到像素平面中心,其取决于拜耳阵列与光轴如何对齐。
  • 如图(b)所示,参数f u f_u f u ​、f v f_v f v ​用于 归一化——将矩形的传感器阵列映射为正方形
  • 如图©所示,参数s s s用于 正交化——当传感器阵列不正交或传感器平面与光轴不垂直时,需要引入 纠正畸变。

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

; 3 镜头畸变

上述透视相机模型基于针孔无限小的假设,但在现实中,光线通过镜头将使相机内部复杂化,产生明显的径向失真——场景中的线条在图像中显示为曲线。 径向畸变(Radial Distortion)有两种类型:

  • 筒体畸变(Barrel Distortion)
  • *枕形失真(Pincushion Distortion)

此外由于相机组装过程中,透镜不能和成像面严格平行,会引入 切向畸变(Tangential Distortion)

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
针对具有镜头畸变的相机,不能直接应用透视相机模型,通常需要先通过多项式模型修正这种几何偏差,即:

{ x ^ = x ( 1 + κ 1 r 2 + κ 2 r 4 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y ^ = y ( 1 + κ 1 r 2 + κ 2 r 4 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \begin{cases} \hat{x}=x\left( 1+\kappa _1r^2+\kappa _2r^4 \right) +2p_1xy+p_2\left( r^2+2x^2 \right)\ \hat{y}=y\left( 1+\kappa _1r^2+\kappa _2r^4 \right) +p_1\left( r^2+2y^2 \right) +2p_2xy\\end{cases}{x ^=x (1 +κ1 ​r 2 +κ2 ​r 4 )+2 p 1 ​x y +p 2 ​(r 2 +2 x 2 )y ^​=y (1 +κ1 ​r 2 +κ2 ​r 4 )+p 1 ​(r 2 +2 y 2 )+2 p 2 ​x y ​

其中r 2 = x 2 + y 2 r^2=x^2+y^2 r 2 =x 2 +y 2,κ 1 \kappa _1 κ1 ​、κ 2 \kappa _2 κ2 ​称为 径向畸变参数,p 1 p_1 p 1 ​、p 2 p_2 p 2 ​称为 切向畸变参数; ( x , y ) (x,y)(x ,y )为畸变坐标,( x ^ , y ^ ) \left( \hat{x},\hat{y} \right)(x ^,y ^​)为无畸变坐标。

计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

🚀 计算机视觉基础教程说明

章号 内容
0 色彩空间与数字成像
1 计算机几何基础
2 图像增强、滤波、金字塔
3 图像特征提取
4 图像特征描述
5 图像特征匹配
6 立体视觉
7 项目实战

🔥 更多精彩专栏

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

Original: https://blog.csdn.net/FRIGIDWINTER/article/details/123966382
Author: Mr.Winter`
Title: 计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/632172/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球