目錄
寫在前面
仿射變換:平移、旋轉、放縮、剪切、反射
變換矩陣形式
變換矩陣的理解與記憶
變換矩陣的參數估計
參考
寫在前面2D圖像常見的坐標變換如下圖所示:
這篇文章不包含透視變換(projective/perspective transformation),而將重點放在仿射變換(affine transformation),將介紹仿射變換所包含的各種變換,以及變換矩陣該如何理解記憶。
仿射變換包括如下所有變換,以及這些變換任意次序次數的組合:
平移(translation)和旋轉(rotation)顧名思義,兩者的組合稱之為歐式變換(Euclidean transformation)或剛體變換(rigid transformation);
放縮(scaling)可進一步分為uniform scaling和non-uniform scaling,前者每個坐標軸放縮係數相同(各向同性),後者不同;如果放縮係數為負,則會疊加上反射(reflection)——reflection可以看成是特殊的scaling;
剛體變換+uniform scaling 稱之為,相似變換(similarity transformation),即平移+旋轉+各向同性的放縮;
剪切變換(shear mapping)將所有點沿某一指定方向成比例地平移,語言描述不如上面圖示直觀。
各種變換間的關係如下面的venn圖所示:
通過變換矩陣可以更清晰地看出這些變換間的關係和區別。
沒有平移或者平移量為0的所有仿射變換可以用如下變換矩陣描述:
不同變換對應的a,b,c,d約束不同,排除了平移變換的所有仿射變換為線性變換(linear transformation),其涵蓋的變換如上面的venn圖所示,其特點是原點位置不變,多次線性變換的結果仍是線性變換。
為了涵蓋平移,引入齊次坐標,在原有2維坐標的基礎上,增廣1個維度,如下所示:
所以,仿射變換的變換矩陣統一用 來描述,不同基礎變換的a,b,c,d,e,f約束不同,如下所示:
此外,旋轉和平移相乘得到剛體變換的變換矩陣,如下,有3個自由度(θ,tx,ty),這裡旋轉方向為逆時針方向,因此與上圖中的正負號不同,
再乘上uniform scaling得到相似變換,有4個自由度(s,θ,tx,ty),如下:
變換矩陣的理解與記憶 自然,仿射變換的變換矩陣有6個自由度(a,b,c,d,e,f)。
坐標系由坐標原點和基向量決定,坐標原點和基向量確定了,坐標系也就確定了。
對於坐標系中的位置(x,y),其相對坐標原點在[1,0]方向上的投影為x,在[0,1]方向上的投影為y——這裡投影的意思是過(x,y)做坐標軸的平行線與坐標軸的交點到原點的距離,即(x,y)實際為:
當坐標系變化,坐標系中的點也跟著變化,但點相對新坐標系(x′−y′坐標系)的位置不變仍為(x,y),以旋轉變換為例,新坐標軸的基向量則變為[cos(θ),sin(θ)]和[−sin(θ),cos(θ)],所以點變化到新位置為:
新位置和新基向量是相對絕對坐標系(
x−yx−y坐標系)而言的。其他變換矩陣同理。總結一下:
這時再對照上面的各種變換矩陣,就很好理解了。
變換矩陣的參數估計如果給定兩個對應點集,如何估計指定變換矩陣的參數?
一對對應點可以列兩個線性方程,多個對應點可以列出線性方程組,為了求解參數,需要的對應點數至少為自由度的一半,多個點時構成超定方程組,可以基於最小二乘或者SVD分解等方法進行求解,這裡不再展開。
參考Image Alignment and Stitching: A Tutorial
wiki: Affine transformation
Geometric Transformation
Coordinates and Transformations
Transformations
Geometric Transformations
Image Geometry
申明:原文來源網絡,由《計算機視覺社區》公眾號整理分享大家,僅供參考學習使用,不得用於商用,引用或轉載請註明出處!如有侵權請聯繫刪除!