1. 仿射變換的應用
1. 在用ps時,大家一定用過旋轉、水平剪下和垂直剪下的操作。
2. spm在fmri影象資料預處理時,normalize歸一化這一步時,需要將帶配準影象與來自standard space的模板影象進行配準,配準除了涉及旋轉、平移這些剛體變換之外,還包括放縮、錯切。這就構成了a full affine transformation全仿射變換。
3. 做計算機圖形學的朋友都知道,儘管描述乙個三維物件只需要三維向量,但所有的計算機圖形學變換矩陣都是4 x 4的。說其原因,很多書上都寫著「為了使用中方便」,這在我看來簡直就是企圖蒙混過關。真正的原因,是因為在計算機圖形學裡應用的圖形變換,實際上是在仿射空間而不是向量空間中進行的。
2. 仿射變換的定義仿射變換是二維平面中一種重要的變換,在影象圖形領域有廣泛的應用。許多人對「仿射」沒有乙個感官的認識,我覺得很有必要先來說一下「仿射」。
所謂的「仿射變換」就是一種簡單的變換,它的變化包括旋轉、平移、伸縮,原來的直線仿射變換後還是直線,原來的平行線經過仿射變換之後還是平行線,這就是仿射。保持二維圖形的「平直線」和「平行性」,其可以通過一系列的原子變換的復合來實現,包括
平移(translation)
縮放(scale)
翻轉(flip)
旋轉(rotation)
剪下(shear)
仿射變換的矩陣的平移(translation)+旋轉(rotation)操作是其次座標形式的變換矩陣
這個矩陣包含的變換有旋轉和平移,其實是兩個矩陣的混合體,許多文章都對這個做了很詳細的描述。仿射變換的數學公式裡,是如何做到座標點位置的平移呢?清楚這個才是弄明白仿射變換的關鍵。
利用此圖可以完成仿射變換公式的推導,推導如下:
2.1 旋轉操作的矩陣實現
乙個點p在原始座標系下的座標是(xsp,ysp)。然後要完成旋轉操作,旋轉操作是基於原點的,如何得到旋轉之後的點的座標,這裡用到乙個技巧,座標系中某個點的旋轉可以等價地去旋轉座標軸,所以有了上圖中以(xs0,ys0)為中心的虛線與螢幕水平垂直的座標系。在這個座標系中確定p的座標,和在藍色座標系中確定旋轉之後p的座標是等價的。基於這個結論,我們可以通過簡單的立體幾何知識確定p在新座標系中的座標。p在新座標系中的x座標和y座標分別是
這就是仿射變換模型中旋轉部分的原理,還有一步,就是平移。
2.2 平移的實現
旋轉變換之後,我們確定了p點在新座標系中的位置,然後在這個位置的基礎上加上其在x軸和y軸的偏移即可
仿射變換的矩陣橫空出世。當然上圖中對這個變換的處理更巧妙,它還是利用了不移動點移動座標系的策略,將座標係向相反方向移動了相應的距離。於是有了上圖這個經典仿射變換模型的圖示展現。
上圖中我們可以看到,整個在對p點進行仿射變換的過程中,p點的位置並沒有移動,我們是通過不斷的座標系的調整來間接達到p點移動的效果,這充分說明了一件事:
運動都是相對的。
3. 幾種典型的仿射變換api3.1.publicstaticaffinetransform gettranslateinstance(doubletx,doublety)
平移變換,將每一點移動到(x+tx, y+ty),變換矩陣為:
(譯註:平移變換是一種「剛體變換」,rigid-body transformation,中學學過的物理,都知道啥叫「剛體」吧,就是不會產生形變的理想物體,平移當然不會改變二維圖形的形狀。同理,下面的「旋轉變換」也是剛體變換,而「縮放」、「錯切」都是會改變圖形形狀的。)
3.2.publicstaticaffinetransform getscaleinstance(doublesx,doublesy)
縮放變換,將每一點的橫座標放大(縮小)至sx倍,縱座標放大(縮小)至sy倍,變換矩陣為:
剪下變換,變換矩陣為:
相當於乙個橫向剪下與乙個縱向剪下的復合
(譯註:「剪下變換」又稱「錯切變換」,指的是類似於四邊形不穩定性那種性質,街邊小商店那種鐵拉門都見過吧?想象一下上面鐵條構成的菱形拉動的過程,那就是「錯切」的過程。)
3.4.publicstaticaffinetransform getrotateinstance(doubletheta)
旋轉變換,目標圖形圍繞原點順時針旋轉theta弧度,變換矩陣為:
旋轉變換,目標圖形以(x, y)為軸心順時針旋轉theta弧度,變換矩陣為:
[ cos(theta) -sin(theta) x-x*cos+y*sin]
[ sin(theta) cos(theta) y-x*sin-y*cos ]
[ 0 0 1 ]
相當於兩次平移變換與一次原點旋轉變換的復合:
[1 0 -x][cos(theta) -sin(theta) 0][1 0 x]
[0 1 -y][sin(theta) cos(theta) 0][0 1 y]
[0 0 1 ][ 0 0 1 ][0 0 1]
4. 仿射變換效果圖
順時針旋轉30度:
水平剪下:
垂直剪下:
仿射函式和仿射組合
假設f是乙個矢性函式,若它可以表示為f x1,x2,xn a1x1 a2x2 anxn b,其中ai可以是標量,也可以是矩陣,則稱f是仿射函式。矢性函式定義 標性函式f x ax b 即我們通常見到的函式 其中a x b都是標量。維基百科的解釋 affine combination,a certai...
剛性仿射變換演算法 仿射變換
哎慢慢來吧,感覺一大堆東西看不懂.仿射變換就是affine transformation 這是乙個跟影象相關的變換,影象變換是通過矩陣變換來實現的。影象的幾個基本變換有平移 縮放 旋轉 仿射 透視。剛性變換 就像這個題目這樣顯示的,就是非常強硬的變換,在這個二維平面上開始是怎麼樣,後來就是怎麼樣 仿...
仿射(Affine)空間
affine幾何是研究這樣一種幾何 它只涉及兩點之間的向量,而不考慮實際的距離 角度,甚至不考慮作為參照的原點。這些幾何構成的空間就是affine空間。affine空間 相比較於熟悉的歐幾里得空間,affine有一些特別的性質。比如歐式空間認為空間中有乙個原點,對於這個原點有向量a與b。在affin...