仿射变换(affinement)是由一个线性变换和平移组成的,如图所示
图像里的仿射变换1. SLAM中的仿射变换
在SLAM里,尤其是直接法SLAM,当想要使用块匹配(patch match)来求对应点的时候,由于两帧之间的视角已变,patch的形状和位置也发生了改变,不能单纯用一样的patch做匹配(如4x4的),需要有一帧里做仿射变换,把另一帧的正常patch变换到该帧,变换之后可能是平行四边形,菱形等(不包括梯形)。
实际上相机平面上的投影并不是仿射变换,因为相机不是平行投影,而是中心投影。如下图所示,当物体相对投影面倾斜的时候,中心投影会变成梯形(不是线性变换),而平行投影仍然是矩形(或平行四边形)。
中心投影和平行投影然而当我们考虑像素块的patch的时候,几个到几十个像素的尺度太小了,近似为平行投影,所以用仿射变换是没问题的。况且严格使用SE3变换计算量较大,不适合用在需要快速匹配的像素块。
一般平移这一步在重投影的时候已经定位了,或者说当我们不知道块的具体位置,如进行极线搜索的时候,平移正是我们所求的。而往往线性变换已知,所以我们只要关注patch的线性变换。SLAM中也常用Affine来直接代替线性变换了,这点要注意。
2. 线性变换矩阵求解
正如上面链接提到的,线性变换矩阵的求解只要求出源空间的基的变换即可,特别的,当源空间基为平行于图片像素的时候,直接拿变换后的基组成1、2列就可得到仿射变换矩阵。
二维线性变换矩阵的构成
网友评论