转载:https://www.cnblogs.com/wangguchangqing/p/8335131.html
在看各类文章时,一直没看懂畸变参数是怎么求出来的,一开始以为畸变参数会在内参矩阵里一起求出来,后来发现不是这样的。考虑畸变时,要先求出畸变系数,然后在去除畸变后再用下面的方法估计内参外参
在不考虑畸变时
设P=(X,Y,Z)为场景中的一点,在针孔相机模型中,其要经过以下几个变换,最终变为二维图像上的像点p=(μ,ν):
1.将P从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使用的是相机间的相对位姿,也就是相机的外参数。
2.从相机坐标系,通过透视投影变换到相机的成像平面上的像点p=(x,y)。
3.将像点p从成像坐标系,通过缩放和平移变换到像素坐标系上点p=(μ,ν)。
相机将场景中的三维点变换为图像中的二维点,也就是各个坐标系变换的组合,可将上面的变换过程整理为矩阵相乘的形式:
将矩阵K称为相机的内参数,
其中,α,β表示图像上单位距离上像素的个数,则fx=αf,fy=βf将相机的焦距f变换为在x,y方向上像素度量表示。
另外,为了不失一般性,可以在相机的内参矩阵上添加一个扭曲参数γ,该参数用来表示像素坐标系两个坐标轴的扭曲。则内参数K变为
对于大多数标准相机来说,可将扭曲参数γ设为0. Multiple View Geometry in Computer Vision
考虑畸变时
考虑畸变时要先求解出畸变参数,然后去除畸变后再进行上面的估计,因为上面的cx,cy是在没畸变下的形式
为了取得好的成像效果,通常要在相机的镜头前添加透镜。在相机成像的过程中,透镜会对光线的传播产生影响,从而影响相机的成像效果,产生畸变:
透镜自身的形状对才光线的传播产生影响,形成的畸变称为径向畸变。在小孔模型中,一条指向在成像平面上的像仍然是直线。但是在实际拍摄的过程中,由于透镜的存在,往往将一条直线投影成了曲线,越靠近图像的边缘,这种现象越明显。透镜往往是中心对称的,使得这种不规则的畸变通常是径向对称的。主要有两大类:桶形畸变和枕形畸变。如下图:
张氏标定法中只关注了影响较大的径向畸变。
设,(μ,ν)是理想的无畸变的像素坐标;(μ,ν)是畸变后的像素坐标;(μ0,ν0)是相机的主点;(x,y)和(x,y)理想的无畸变的归一化的图像坐标和畸变后的归一化图像坐标,使用下面的式子表示径向畸变:
k1,k2表示径向畸变的系数。径向畸变的中心和相机的主心是在相同的位置,
假设γ=0,则有:
将上面的式子改写为矩阵的形式
上面的等式是从一幅图像上的一个点取得,设有n幅图像,每幅图像上有m个点,则将得到的所有等式组合起来,可以得到2mn个等式,将其记着矩阵形式
Dk=d
则可得
和上面类似利用最大似然估计取得最优解,使用LM的方法估计使得下面式子是最小值的参数值
得到畸变参数k1,k2后,可以先将图像进行去畸变处理,然后用去畸变后的图像坐标估计相机的内参数。