相机标定
参数优化
1.生成标定板
2.拍摄标定板照片10~20张
3.识别每张照片中标定板角点
4.获取每张照片中标定板角点的像素坐标uv和世界坐标xy
5.计算每张照片的单应性矩阵Hi
6.构造每张照片的Vi,构建V=[V1;V2;…Vi…]
7.svd分解V,求解B和内参矩阵A和尺度因子s
[u, s, v]=svd(V);
b=v(:,6);
v0=(b(2)*b(4)-b(1)*b(5))/(b(1)*b(3)-b(2)^2);
s=b(6)-(b(4)^2+v0*(b(2)*b(4)-b(1)*b(5)))/b(1);
alpha_u=sqrt(s/b(1));
alpha_v=sqrt(s*b(1)/(b(1)*b(3)-b(2)^2));
skewness=-b(2)*alpha_u*alpha_u*alpha_v/s;
u0=skewness*v0/alpha_u-b(4)*alpha_u*alpha_u/s;
A=[alpha_u skewness u0
0 alpha_v v0
0 0 1]
8.每张照片使用同一个A,然后优化各自的外参R,T
实际情况下,数据中是存在噪音的,所以计算得到的旋转矩阵R并不一定能满足旋转矩阵的性质。所以通常根据奇异值分解来得到旋转矩阵R。
上述的推导结果是基于理想情况下的解,从理论上证明了张氏标定算法的可行性。但在实际标定过程中,一般使用最大似然估计进行优化。假设我们拍摄了n张标定图片,每张图片里有m个棋盘格角点。三维空间点X在图片上对应的二维像素为x,三维空间点经过相机内参M,外参R,t变换后得到的二维像素为x’,假设噪声是独立同分布的,我们通过最小化x, x’的位置来求解上述最大似然估计问题:

现在我们来考虑透镜畸变的影响,由于径向畸变的影响相对较明显,所以主要考虑径向畸变参数,根据经验,通常只考虑径向畸变的前两个参数k1,k2就可以(增加更多的参数会使得模型变的复杂且不稳定)。实际求解中,通常把k1,k2也作为参数加入上述函数一起进行优化,待优化函数如下所示

上述非线性优化问题通常用Levenberg-Marquardt(LM)算法进行迭代求解。一般将k1,k2初值设为0。
本文介绍了相机标定的过程,包括生成标定板、拍摄照片、识别角点坐标、计算单应性矩阵等步骤。重点讲解了如何通过SVD分解求解内参矩阵和外参,并提及实际情况下可能存在的噪声问题,以及如何使用最大似然估计进行优化。同时,讨论了透镜径向畸变的考虑,特别是k1和k2参数的优化,通常采用LM算法进行迭代求解。
644

被折叠的 条评论
为什么被折叠?



