齊次座標與平移仿射變換(MATLAB)

平移與仿射

衆所周知,二維圖像的平移是非線性的,仿射變換實現了線性效果。

平移:是將圖像的每個像素點在水平和垂直方向上進行移動,只是改變了圖像的位置信息,而圖像的內容並不會發生改變。二維的圖像計算公式如下:很顯然不是線性的
在這裏插入圖片描述
在二維矩陣圖像的基礎上,加一個座標軸。在齊次座標系下進行圖像的幾何變換,我們把他稱之爲仿射變換。一個三維的齊次座標軸下的仿射變換,就是線性運算。運算過程如下:
在這裏插入圖片描述
在matlab環境下實現仿射變換

%放射變換實現圖像平移
F = imread('cameraman.tif');
fheight = size(F,1);
fwidth  = size(F,2);
m = 30;%水平方向的平移量
n=20;%垂直方向的平移量
tform = maketform('affine',[1 0 0 ;0 1 0; m n 1]);
G = imtransform(F,tform,'XData',[1 fwidth+30],'YData',[1 (fheight+20)]);
subplot(121);
imshow(F);
title('原圖');
subplot(122);
imshow(G);
title('平移後的圖像');

知識補充

(1)齊次座標
齊次座標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用於進行仿射(線性)幾何變換。”其重要性主要有,其一是區分向量和點,其二是易於進行仿射變換(AffineTransformation)

因爲仿射空間的存在,我們認爲圖形變換就是變換了以圖形爲原點的仿射座標,那麼我們使用齊次座標表示法,同時變換矩陣也擴充一個維度稱它爲”平移維度“,這時候我們可以利用數學技巧“忽略掉”除了“平移維度”之外的維度,只進行“平移維度”的計算, 根據矩陣乘法的計算規則,就很自然的處理了兩個仿射空間的平移。

(2)仿射變換

在這裏插入圖片描述
在這裏插入圖片描述
(3)maketform()函數和imtransform()函數

maketform():仿射變換’affine’包括了

  • 平移translation
  • 縮放scaling
  • 旋轉rotation-
  • 剪切shearing
  • 投影變換projective transformations
  • 自定義的變換custom transformations

imtransform():返回值中包含的另兩個額外輸出參數xdataydata,表示輸出圖像在輸出座標空間的位置。xdata包含了輸出圖像拐角處像素的x座標,ydata包含了這些像素的y座標(這裏說的x、y座標是指像素的中點)。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章