AI数学相机成像之内参数

Posted 木盏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AI数学相机成像之内参数相关的知识,希望对你有一定的参考价值。

计算机视觉偏底层的工作会跟摄像机打交道,最近正好有接触,所以整理总结一下。
相机参数通常分为内参数外参数,偶尔会有畸变参数等滤镜参数。
申明:本文图例均为原创,借用需附此文链接

内参数:相机内部的参数,包括焦距、像素偏移等。
外参数:相机摆放的位置、角度等。

本文主要介绍相机内参数,并且给出简单的数学推理。
必需预备知识:初中数学+初中物理(不满足条件的不用往下看了-_-)


这里用到的物理知识是“光沿直线传播”,用到的数学知识是“相似三角形”。相机成像用到的是“小孔成像原理”,相机内部有一块平面感光元件,物体光线通过光圈(小孔成像的小孔)打到平面感光元件上完成成像。

图1 相机小孔成像

相机成像无非就是把真实世界里三维坐标里的一个点投影到胶片平面上。图1里描述了空间中一个点 P ( x ˉ , y ˉ , z ) P(\\barx,\\bary,z) P(xˉ,yˉ,z)投影到平面(图中黄色部分)点 P ′ ( x , y ) P^'(x,y) P(x,y),在这里为了方便理解,我构建了一个坐标系,原点位置为二维平面的中心位置,z轴方向为相片法向量向外。
重点:相机成像就是做个 ( x ˉ , y ˉ , z ) (\\barx,\\bary,z) (xˉ,yˉ,z) ( x , y ) (x,y) (x,y)的计算。

图2 相机小孔成像相似三角形计算

咱们可以构建一个相似三角形,有 f / ( z − f ) = l ′ / l = x / x ˉ = y / y ˉ (1) f/(z-f)=l^'/l=x/\\barx=y/\\bary \\tag1 f/(zf)=l/l=x/xˉ=y/yˉ(1)
所以,
x = x ˉ f / ( z − f ) y = y ˉ f / ( z − f ) (2) \\begincases x=\\barxf/(z-f)\\\\ y=\\baryf/(z-f)\\\\ \\endcases \\tag2 x=xˉf/(zf)y=yˉf/(zf)(2)
通常图像坐标原点并不是图像中心点,而是左上角,于是需要加一个偏移量 O x O_x Ox O y O_y Oy来对应像素坐标。所以,式子变为
x = x ˉ f / ( z − f ) + O x y = y ˉ f / ( z − f ) + O y (3) \\begincases x=\\barxf/(z-f)+O_x\\\\ y=\\baryf/(z-f)+O_y\\\\ \\endcases \\tag3 x=xˉf/(zf)+Oxy=yˉf/(zf)+Oy(3)

咱们可以将Aperture(即孔径点)定义成我们坐标系的原点,以换取更简单的表示形式,则图2中紫色部分的 ( z − f ) (z-f) (zf)就变成了 z z z,替换式子得到
x = x ˉ f / z + O x y = y ˉ f / z + O y (4) \\begincases x=\\barxf/z+O_x\\\\ y=\\baryf/z+O_y\\\\ \\endcases \\tag4 x=xˉf/z+Oxy=yˉf/z+Oy(4)

改写成齐次矩阵乘积描述形式,
[ x y 1 ] = 1 z [ f 0 O x 0 f O y 0 0 1 ] [ x ˉ y ˉ z ] (5) \\left[ \\beginmatrix x \\\\ y \\\\ 1 \\endmatrix \\right] =1\\overz \\left[ \\beginmatrix f & 0 & O_x\\\\ 0 & f & O_y\\\\ 0 & 0 & 1 \\endmatrix \\right] \\left[ \\beginmatrix \\barx \\\\ \\bary \\\\ z \\endmatrix \\right] \\tag5 xy1 =z1 f000f0OxOy1 xˉyˉz (5)
内参数包含焦距 f f f、两个方向的中心偏移量 O x O_x Ox O y O_y Oy。通常,用矩阵 K K K来描述内参数,
K = [ f 0 O x 0 f O y 0 0 1 ] (6) K= \\left[ \\beginmatrix f & 0 & O_x\\\\ 0 & f & O_y\\\\ 0 & 0 & 1\\endmatrix \\right] \\tag6 K= f000f0OxOy1 (6)
所以,式(5)可以写成
[ x y 1 ] = 1 z K [ x ˉ y ˉ z ] (7) \\left[ \\beginmatrix x \\\\ y \\\\ 1 \\endmatrix \\right] =1\\overz K \\left[ \\beginmatrix \\barx \\\\ \\bary \\\\ z \\endmatrix \\right] \\tag7 以上是关于AI数学相机成像之内参数的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉|针孔成像,相机内外参及相机标定,矫正的重要性

相机标定究竟在标定什么?[转]

计算机视觉——单目相机标定

计算机视觉——相机内外参、相机标定

学习了哪些知识,计算机视觉才算入门

OpenCV相机标定与畸变校正