當前位置:吉日网官网 - 油畫收藏 - 轉仿射變換及其變換矩陣的理解

轉仿射變換及其變換矩陣的理解

posted @?2019-05-30 17:37? shine-lee 閱讀(7203)? 評論(7)? 編輯 ? 收藏

分類:? 傳統計算機視覺

目錄

寫在前面

仿射變換:平移、旋轉、放縮、剪切、反射

變換矩陣形式

變換矩陣的理解與記憶

變換矩陣的參數估計

參考

博客: blog.shinelee.me ?|? 博客園 ?|? CSDN

寫在前面

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的所有仿射變換可以用如下變換矩陣描述:

[x′y′]=[acbd][xy][x′y′]=[abcd][xy]

不同變換對應的a,b,c,da,b,c,d約束不同,排除了平移變換的所有仿射變換為 線性變換 (linear transformation),其涵蓋的變換如上面的venn圖所示,其特點是 原點位置不變 , 多次線性變換的結果仍是線性變換 。

為了涵蓋平移,引入 齊次坐標 ,在原有2維坐標的基礎上,增廣1個維度,如下所示:

x′y′1=ad0be0cf1?xy1[x′y′1]=[abcdef001][xy1]

所以,仿射變換的變換矩陣統壹用ad0be0cf1[abcdef001]來描述,不同基礎變換的a,b,c,d,e,fa,b,c,d,e,f約束不同,如下所示:

此外,旋轉和平移相乘得到剛體變換的變換矩陣,如下,有3個自由度(θ,tx,tyθ,tx,ty),這裏旋轉方向為逆時針方向,因此與上圖中的正負號不同,

cos(θ)sin(θ)0?sin(θ)cos(θ)0txty1?xy1=x′y′1[cos?(θ)?sin?(θ)txsin?(θ)cos?(θ)ty001][xy1]=[x′y′1]

再乘上uniform scaling得到相似變換,有4個自由度(s,θ,tx,tys,θ,tx,ty),如下:

scos(θ)ssin(θ)0?ssin(θ)scos(θ)0txty1?xy1=x′y′1[scos?(θ)?ssin?(θ)txssin?(θ)scos?(θ)ty001][xy1]=[x′y′1]

自然,仿射變換的變換矩陣有6個自由度(a,b,c,d,e,fa,b,c,d,e,f)。

變換矩陣的理解與記憶

坐標系 由 坐標原點 和 基向量 決定, 坐標原點 和 基向量 確定了,坐標系也就確定了。

對於坐標系中的位置(x,y)(x,y),其相對坐標原點在[1,0][1,0]方向上的投影為xx,在[0,1][0,1]方向上的投影為yy——這裏投影的意思是過(x,y)(x,y)做坐標軸的平行線與坐標軸的交點到原點的距離,即(x,y)(x,y)實際為:

[xy]=x[10]+y[01]=[1001][xy][xy]=x[10]+y[01]=[1001][xy]

當坐標系變化,坐標系中的點也跟著變化 ,但 點相對新坐標系 (x′?y′x′?y′坐標系) 的位置不變 仍為(x,y)(x,y),以旋轉變換為例,新坐標軸的基向量則變為[cos(θ),sin(θ)][cos?(θ),sin?(θ)]和[?sin(θ),cos(θ)][?sin?(θ),cos?(θ)],所以點變化到新位置為:

[x′y′]=x[cos(θ)sin(θ)]+y[?sin(θ)cos(θ)]=[cos(θ)sin(θ)?sin(θ)cos(θ)][xy][x′y′]=x[cos?(θ)sin?(θ)]+y[?sin?(θ)cos?(θ)]=[cos?(θ)?sin?(θ)sin?(θ)cos?(θ)][xy]

新位置和新基向量是相對絕對坐標系(x?yx?y坐標系)而言的。其他變換矩陣同理。

總結壹下:

所有變換矩陣只需關註壹點: 坐標系的變化 ,即 基向量和原點的變化 ;

坐標系變化到哪裏,坐標系中的所有點也跟著做同樣的變化 ;

坐標系的變換分為? 基向量的變化 ?以及? 坐標原點的變化 ,在仿射變換矩陣ad0be0cf1[abcdef001]中,?[ad][ad]和[be][be]為新的基向量,[cf][cf]為新的坐標原點,先變化基向量,再變化坐標原點;

這時再對照上面的各種變換矩陣,就很好理解了。

變換矩陣的參數估計

如果給定兩個對應點集,如何估計指定變換矩陣的參數?

壹對對應點可以列兩個線性方程,多個對應點可以列出線性方程組,為了求解參數,需要的對應點數至少為自由度的壹半,多個點時構成超定方程組,可以基於最小二乘或者SVD分解等方法進行求解,這裏不再展開。

參考

Image Alignment and Stitching: A Tutorial

wiki: Affine transformation

Geometric Transformation

Coordinates and Transformations

Transformations

Geometric Transformations

Image Geometry

原文鏈接: blogs.com/shine-lee/p/10950963.html

  • 上一篇:豆瓣TOP20有哪些好看的電影?
  • 下一篇:適合家庭使用,途安車模賞析,特別精細的那種
  • copyright 2024吉日网官网