这是极其严肃的一篇
相机标定是指建立相机图像像素位置与场景点位置之间的关系。我们需要求解相机的模型参数。
我们需要两个参数:相机内部参数和外部参数。
我们需要根据相机模型,由已知特征点的图像坐标和世界坐标,求解相机的模型参数。
该表中,ax、ay、u0、v0、γ是线性模型的内部参数。
ax、ay:有效焦距;
u0、v0:光学中心;
γ:多数情况下为0。
R、T是旋转矩阵和平移矩阵,称为外部参数。
k1、k2:径向畸变参数
p1、p2:切向畸变参数。
我来展示一下,用PhotoShop后期处理畸变的效果。
处理前
处理时
处理后(对比图)
可以很明显的发现
- 原图中心向屏幕外面凸出
- 原图四角向屏幕内凹陷
- 原图镜头暗角明显
- 修改后图片中心不再那么凸,四角也没有那么凹
- 镜头暗角被尽可能的消去
- 整张照片,该是平整的地方,相对平整;不像原图,整个尺子都是弯的
- 处理过后可以发现,整张照片比原图稍微小了一点点
以上,有助于理解图像畸变,大致了解处理畸变需要调整什么,以及调整后的效果。
(一个镜头都有如此大的变化,何况两个呢)
(我为什么用PS?我是摄影师啦)
相机模型有线性模型和非线性模型。
但不论是是什么模型,我们都需要标定,都需要估计出内外参数。
- 线性最小二乘法
- 非线性最小二乘法
- Levenberg-Marquardt算法
- 惩罚数法
可以说思想都是找平稳点,把偏差调到最小。详细的数学模型请参考相关专业书籍。
基于2D平面靶标的相机标定(张正友标定法)
(拍黑板 重点!考试范围!)
在该方法中,要求相机在两个以上不同的方位拍摄一个平面靶标,相机和2D屏幕靶标都可以自由移动,不需要知道运动参数。在标定过程中,假定相机内部参数始终不变,即不论相机从任何角度拍摄靶标,相机内部参数都为常数,只有外部参数发生变化。
(有个导师就是好!随便淘宝随便搞!见过这么高级的标定板吗!)
(装B本性一览无余( ̄▽ ̄)”)
1.靶标平面与其图像平面之间的映射矩阵
这些方格就是标定点。
靶标平面上的三维点记为,其图像平面上的二维点记为。
相应的齐次坐标为,与。
相机基于针孔成像模型,空间点M和图像点m之间的映射关系为:
s:任意的非零尺度因子;
R:旋转矩阵,相机外部参数;
t:平移向量,相机外部参数;
A:相机内部参数矩阵(本篇最上面有这个矩阵)。
A矩阵中:
- (u0,v0):主点坐标;
- ax:u轴的尺度因子;
- ay:v轴的尺度因子;
- γ:是u、v轴不垂直因子。
我们设z=0,即靶标平面位于世界坐标系xy平面上。
记旋转矩阵R的第i列为ri,由可得:
此时,仍使用M来表示靶标平面上的点,不过,缺少了z之后,靶标平面上的点M与对应的图像点m之间存在一个矩阵变换H,
其中,H=λA[r1 r2 t]是3*3矩阵,λ为常数因子。记H=[h1 h2 h3](这个很重要!)
!!!!!!!!!!!!!
![h1 h2 h3]=λA[r1 r2 t]!
!!!!!!!!!!!!!
t:从世界坐标系的原点到光心的矢量;
r1,r2:是图像平面两坐标轴,在世界坐标系中的方向矢量!
(牛逼的公式 从来都是美丽的 难以言喻的简约中带着蓬勃之力)
H的计算!目的是使实际图像坐标mi,与根据这个公式计算出的图像坐标之间,参差最小的过程。目标函数:
2.求解相机参数矩阵
空间上的二次曲面可以表示为,其中。B是一个4*4对称矩阵,B乘以任意不为0的向量,仍描述同一二次曲面。
平面上的二次曲线可以表示为,其中。B是一个3*3对称矩阵,B乘以任意不为0的向量,仍描述同一二次曲线。
注意到B是对角矩阵,可以另表示为下面的六维向量:
设H中的第i列向量为,因此有
其中
这样一来,因为(R的正交性,不必特别在意这个r,知道最后结果就可以了),可得
!!!!!!!!!!!!!!
!Vb=0,V为2n*6的矩阵。!
!!!!!!!!!!!!!!
结论
- 如果n>=3,b可以在相差一个尺度因子的意义下唯一确定。
- 如果n=2,可以让B12=0。
我们终于可以求出b了!
当求解完b,我们也可以求解出A,这样图像的外参数就可以求出来了。