天天看點

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

0 前言

現在的人臉圖像識别流程中有一個步驟叫人臉對齊,現在的一般方法是采用人臉上的關鍵點坐标,進行相似變換來實作人臉校正。多次在人臉識别的論文中看到 similarity transform,由于線上代和矩陣分析的課上一直劃水。對相似變換也是一知半解,今天決定不惜一下相關的知識。大部分的内容都是參考網上大神的,這裡隻是做個整理。下面的闡述主要以二維坐标為例,多元空間的左邊點,可以通過增加變換矩陣的次元得知。

1 變換矩陣

假如二維空間中存在點(x,y),我們想通過将x移動a,y移動b,得到新的坐标點(x’,y’),那麼變換的公式可以寫為:

x ′ = x + a y ′ = y + b x'= x + a \\ y'=y + b x′=x+ay′=y+b

上市可以寫成矩陣的形式:

[ x ′ y ′ 1 ] = [ 1 0 a 0 1 b 0 0 1 ] [ x y 1 ] \left[ \begin{matrix} x' \\ y' \\ 1 \end{matrix} \right] = \left[ \begin{matrix} 1 & 0 & a \\ 0 & 1 & b \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] ⎣⎡​x′y′1​⎦⎤​=⎣⎡​100​010​ab1​⎦⎤​⎣⎡​xy1​⎦⎤​

上式中等号後面的矩陣即為變換矩陣。為了使用矩陣表示平移變換,需要将坐标的次元增加一維,因為二維的矩陣沒有辦法表示平移變換,這叫做齊次坐标。

齊次坐标: 使用N+1維坐标來表示N維坐标,例如在2D笛卡爾坐标系中加上額外變量w來形成2D齊次坐标系(x,y)⇒(x,y,w) 。齊次坐标具有規模不變性,同一點可以被無數個齊次坐标表達.(x,y,1)⇒(ax,ay,a) 齊次坐标轉化為笛卡爾坐标可以通過同除最後一項得到。

在計算機圖形學中,為了統一将平移、旋轉、縮放等用矩陣表示,需要引入齊次坐标。(假設使用2x2的矩陣,是沒有辦法描述平移操作的,隻有引入3x3矩陣形式,才能統一描述二維中的平移、旋轉、縮放操作。同理必須使用4x4的矩陣才能統一描述三維的變換。

同樣的我們可以使用矩陣來表示,縮放變換,旋轉變換,相似變換,仿射變換和投影變換。

2 剛性變換

剛性變換: 隻有物體的位置(平移變換)和朝向(旋轉變換)發生改變,而形狀不變,得到的變換稱為剛性變換。剛性變換是最一般的變換。

2.1 平移變換

平移變換我們在上面已經提到過

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣
一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

2.2 旋轉變換

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

旋轉變換的變換矩陣,不像平移變換那麼容易得到,我們這裡介紹一下,旋轉變換的變換矩陣是怎麼求出來的。

2.2.1 繞原點的二維旋轉

首先要明确旋轉在二維中是繞着某一個點進行旋轉,三維中是繞着某一個軸進行旋轉。二維旋轉中最簡單的場景是繞着坐标原點進行的旋轉,如下圖所示:

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣
一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

2.2.3 繞任意點的二維旋轉

繞原點的旋轉是二維旋轉最基本的情況,當我們需要進行繞任意點旋轉時,我們可以把這種情況轉換到繞原點的旋轉,思路如下:

  1. 首先将旋轉點移動到原點處
  2. 執行如2所描述的繞原點的旋轉
  3. 再将旋轉點移回到原來的位置
    一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣
    一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣
    對于二維平移,如下圖所示,P點經過x和y方向的平移到P’點,可以得到:
    一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣
    一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

2.3 等距變換

等距變換相當于是平移變換和旋轉變換的複合,用R表示變換矩陣,即為 :

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

左上角2×2矩陣為旋轉部分,tx和ty為平移因子,它有三個自由度,即旋轉,x方向平移,y方向平移。等距變換前後長度,面積,線段之間的夾角都不變。

3 相似變換

在介紹相似變換之前先介紹兩個簡單的變換,縮放變換和切向變換。

3.1 縮放變換

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

3.2 切向變換

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

3.3 相似變換

相似變換相當于是等距變換和均勻縮放的一個複合,用S表示變換矩陣,即為

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

左上角2×2矩陣為旋轉部分,tx和ty為平移因子,它有4個自由度,即旋轉,x方向平移,y方向平移和縮放因子s。相似變換前後長度比,夾角,虛圓點I,J保持不變。相似變換其實與相似三角形之間是有類似的。

4 仿射變換

仿射變換和相似變換近似,不同之處在于相似變換具有單一旋轉因子和單一縮放因子,仿射變換具有兩個旋轉因子和兩個縮放因子,是以具有6個自由度。不具有保角性和保持距離比的性質,但是原圖平行線變換後仍然是平行線。仿射變換主要包括平移變換、旋轉變換、縮放變換(也叫尺度變換)、傾斜變換(也叫錯切變換、剪切變換、偏移變換)、翻轉變換,有六個自由度。

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

仿射變換的表示如下:

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

仿射變換的特點如下:

仿射變換保持二維圖形的“平直性”和“平行性”,但是角度會改變。

“平直性”:變換後直線還是直線、圓弧還是圓弧。

“平行性”:平行線還是平行線,直線上點的位置順序不變。

它有6個自由度,即旋轉4個,也就是前述大矩形的4個元素都可以同時改變,x方向平移,y方向平移。它能保持平行性,不能保持垂直性,Image中各部分變換前後面積比保持不變,共線線段或者平行線段的長度比保持不變,矢量的線性組合不變。

5 投影變換

在這裡需要明晰一下的是,透視變換(Perspective Transformation)也稱作投影變換(Projective Transformation)、射影變換。

射影變換:是最一般的線性變換。有8個自由度。射影變換保持重合關系和交比不變。但不會保持平行性。即它會使得仿射變換産生非線性效應。

射影變換組成了一個群,這個群被稱為射影變換群,n×n可逆實矩陣稱為一般線性群GL(n),當把相差非零純量因子的矩陣都視為等同時,便得到射影映射群,記為PL(n)。在平面,射影變換為PL(3)。

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

仿射變換和射影變換的差別:

其中當上面矩陣的最後一行為(0,0,1)時的變換就為仿射變換,在仿射的前提下,當左上角2×2矩陣正交時為歐式變換,左上角矩陣行列式為1時為定向歐式變換。是以射影變換包含仿射變換,而仿射變換包含歐式變換。

至此我們得到了射影變換和仿射變換的關系。

6 解析變換矩陣

變換矩陣可以分為如下幾個部分:

一文讀懂圖像中點的坐标變換(剛體變換,相似變換,仿射變換,投影變換)0 前言1 變換矩陣2 剛性變換3 相似變換5 投影變換6 解析變換矩陣

其中大矩形中的4個元素組成的整體表示線性變換,比如scaling(尺度),shearing(剪切)和ratotion(旋轉);橢圓部分表示平移的參數,一個确定在x方向上的平移一個确定在y方向上的平移;小矩形部分用于産生透視變換。從這裡是以可以了解成仿射等是透視變換的特殊形式。其實不管是仿射變換是透視變換的特殊形式,其他所有的變換都是透視變換的變換矩陣取特殊值的特殊形式。

最後再補充一些名詞上的解釋:

projective transformation(投影變換) = homography(單應性變換) = collineation( 直射變換).

參考部落格:
  1. 旋轉變換(一)旋轉矩陣
  2. 圖像幾何變換之仿射變換
  3. 何為仿射變換(Affine Transformation)
  4. 【Computer Vision】圖像單應性變換/投影/仿射/透視
  5. 仿射變換和射影變換、等距變換、相似變換

繼續閱讀