「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」
1 导论
计算机视觉系列教程1-1:透视空间与透视变换中提到,透视空间所有变换都是投影变换的特例,本节进一步研究投影变换矩阵(单应性矩阵)的估计。
透视变换的核心是单应性矩阵H或单应性向量h。
H=⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⇔h=[h11h12h13h21h22h23h31h32h33]T
设psrc=[xy1]T与pdst=[x′y′1]T是二维透视空间P2中,一次透视变换前后的对应点,因此其满足
pdst=Hpsrc⟺⎣⎡x′y′1⎦⎤=⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⎣⎡xy1⎦⎤
若将单应性矩阵进行尺度缩放后作用于psrc,则
kHpsrc=k⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⎣⎡xy1⎦⎤=kpdst
而透视空间中,kpdst与pdst实际上对应同一点,因此kH与H相当于同一次透视变换,故
单应性矩阵H仅有8个自由度,通常通过设置h33=1或∥h∥22=1来约束冗余的参数。
下面详细阐述单应性矩阵估计方法。
2 基本直接线性变换(Basic DLT)
将上式改写为齐次形式
⎣⎡0x−y′x0y−y′y01−y′−x0x′x−y0x′y−10x′y′x−x′x0y′y−x′y0y′−x′0⎦⎤⎣⎡h11h12h13h21h22h23h31h32h33⎦⎤=⎣⎡000⎦⎤
其中系数矩阵的秩为2,因此一对变换点仅能确定2个自由度。因此需要无三点共线的四对变换点才能确定单应性矩阵H。
⎣⎡0x10x20y10y20101−x10−x20−y10−y20⋮−10−10y1′x1−x1′x1y2′x2−x2′x2y1′y1−x1′y1y2′y2−x2′y2y1′−x1′y2′−x2′⎦⎤⎣⎡h11h12h13h21h22h23h31h32h33⎦⎤=⎣⎡000⎦⎤⇔Ah=0
对于形如Ax=b的非齐次线性方程可以通过伪逆形式计算x;对于形如Ax=0的齐次线性方程的解则对应矩阵A右奇异向量vp,其中vp对应的奇异值σp≈0或不对应奇异值。
3 归一化直接线性变换(Normalized DLT)
基本DLT估计算法的缺陷是:
- 单应性估计不具有相似不变性。假设在第一次估计下有xdst=Hxsrc。现对两张图像分别进行相似变换并重新进行单应性估计,得到(Tdstxdst)=H′(Tsrcxsrc),改写为xdst=(Tdst−1H′Tsrc)xsrc,大部分情况下H=Tdst−1H′Tsrc,这表明基本DLT算法无法抵抗相似变换的干扰。
- 估计的单应性矩阵容易产生病态条件,鲁棒性差。由于默认透视空间的尺度变换因子w=1,所以齐次坐标下很可能产生分量幅度差异大的情况,例如某特征点 X=[1001011]T。在这种情况下估计出的单应性矩阵,各个元素数值数量级可能会相差104以上,导致病态条件——特征点的轻微变化都会造成单应性矩阵的剧变。
基于以上两种缺陷,需要将基本DLT算法进行优化,优化的核心就是特征点坐标的归一化。设原图像特征点集合为 ,目标图像特征点集合为 ,则具体的算法为:
- 将特征点集合Xsrc、Xdst归一化。使用相似变换矩阵Tsrc、Tdst将特征点集合中心移至原点,且与原点平均距离为2。由于默认尺度因子为w=1,所以归一化到2可以保持齐次坐标的三个分量有相同的幅度,例如X=[1001001]T⇒Xnormal=[111]T。这里给出一种相似变换矩阵的计算方式,设
Xnormal=TX⇔⎣⎡x~iy~i1⎦⎤=⎣⎡sstxty1⎦⎤⎣⎡xiyi1⎦⎤
令
⎩⎨⎧N1∑i=1Nx~i=N1∑i=1N(sxi+tx)=0N1∑i=1Ny~i=N1∑i=1N(syi+ty)=0N1∑i=1Nx~i2+y~i2=2
解得
⎩⎨⎧tx=−sN1∑i=1Nxi=−sxˉty=−sN1∑i=1Nyi=−syˉs=N1∑i=1Nx~i2+y~i22=N1∑i=1N(xi−xˉ)2+(yi−yˉ)22
- 运用基本DLT算法由 与 估计单应性矩阵
- 解归一化,映射回实际图像
4 鲁棒单应性估计(Robust Homography Estimation)
结合基本DLT算法、归一化DLT算法及RANSAC算法进行单应性矩阵估计,具体流程如下:
- 设置迭代次数K=∞,内点集Sin=⊘,模型参数H=H0;
- 随机从样本数据集S中选取4对特征点,并通过基本DLT算法确定测试模型Htest;
- 用Htest遍历样本数据集S,估计误差ε在距离阈值t内的点加入内点集Sin。其中阈值t=5.99σ,σ为估计不确定度,估计误差ε主要有两种度量方式:① 代数误差εi=∥Aihtest∥,其中
Ai=[0−y′x0−y′y0−y′−xx′x−yx′y−1x′y′x0y′y0y′0]
② 几何误差(二次投影误差)εi=∥HXsrc,i,Xdst,i∥22+∥∥Xsrc,i,H−1Xdst,i∥∥22,可以视作交叉检验。
- 若Sin的大小小于阈值T,则放弃该模型,重复(2);若Sin的大小大于阈值t,则通过归一化DLT算法或Levenberg Marquardt等迭代优化算法,利用Sin中的所有点重新估计模型Htest∗;
- 计算当前模型Htest∗下的内点率ω=∣S∣∣Sin∣,根据K=ln(1−ωn)ln(1−p)更新迭代次数;
- 至此完成一次迭代,若Htest∗下内点率为最大,则更新H=Htest∗,重复(2) ~ (5)直至迭代次数满足要求。
计算机视觉基础教程大纲
章号 内容
0 色彩空间与数字成像
1 计算机几何基础
2 图像增强、滤波、金字塔
3 图像特征提取
4 图像特征描述
5 图像特征匹配
6 立体视觉
7 项目实战
更多内容欢迎来我的AI频道“AI技术社”