2014年8月29日 星期五

從 SVD 得到的資訊

SVD 是個神奇的矩陣拆解, 應用價值遠大於 eigen vector

複習一下, 非正交的 eigen vector 並非落在橢圓的長短軸上 , 會很難聯想

而 SVD 解出的 u, v 保證是正交矩陣, 因為正交, 可直接代表轉換後橢圓的樣貌

可更直接的知道變換矩陣的對圖形的物理意義在哪

svd32
圖片來源 : 線代啟示錄

令 [u , Σ , vT] = svd(A)

如上圖, 2維向量用單位圓當例子, 可以得到三個訊息

1. 橢圓的長短軸位置在原本在 v1, v2 的向量角度上 (被撐大/縮小是在 v1 v2 位子上進行的)
2. 中間的 Σ (σ1 σ2 ... σn) 內容分別代表各邊的長度
3. 最後長短軸會旋轉到 u1, u2 的向量角度上

由上面可以理解, 當我們的應用是要找出變換後能讓輸出資訊最大最小的輸入, 變換矩陣對單位圓的響應就是上面提到的橢圓, 因此那個最長/最短的軸就是能讓輸出資訊最大或最小的向量位置, 如果可以知道那個極短軸的位置在哪, 並且從哪裡來. 就可以得到想要的答案.

當 eigen value 正交, SVD 的 u = v, 表示軸來源位置等於最後呈現的位置, 也就是可不經轉動之經過長短軸縮放產生該橢圓.

如果在乎的資訊是 " 是拿什麼位置來當軸的", 那就要看 v 的數值
如果在乎的資訊是 " 最後形狀的樣子", 那就要看 u 的數值

舉個例子, 希望由 SVD 求最佳解, 希望知道 σ1 ... σn 中最小值所對應的向量, 該向量為解, 此時在乎的是讓 σ 為最小的原本向量在哪, 而非 σ 為最小最後長怎樣, 因此選擇 v 來看.

另外一個例子,希望找出 epipolar 位置在哪, 此時在乎的是直線方程式分布的形狀, 不在乎這些線原本從哪來的, 則選擇 u 來看.

2014年8月18日 星期一

3D 到 2D 投影座標, 點, 線 與相機系統之對應關係

[前言]

再寫 OpenCV Calibration 之前, 須先將 2D 投影座標的系統描述一遍
在此僅針對二維的投影座標做解釋, 超過二維投影實在是超出正常人的想像空間, 不知道如何圖解了

當二維的座標, 經轉換後出現了位移的表現, 此時除了原本的[x, y]維度, 我們需給予一個新的維度 "1" 來表達位移的狀態, 也就是 [x, y, 1]. 然而位移的表現, 用矩陣運算表示為.

 

如果有一矩陣運算式為


該矩陣會使 "1" 的維度不等於 1, 這又該如何解釋? 這時已經不是能用 2 維上的位移來解釋了. 此時, 比較好的看法是, 將其看成在一個三維的空間, 投影到 z = 1 的二維平面上的投影座標.



其實, 任何用 [x, y, 1]T表現的座標都能用二維的投影座標 (原座標為三維) 來解釋, 例如上面的位移也是一種特殊的投影表現. 所有投影座標, 在經過運算後, 須將最後的 "1" 維度除掉, 讓 "1" 永遠是1, 這就是所謂的投影過程. 怎麼投影不是這邊要描述的重點, 這裡要看的是, 投影座標的點, 線怎麼來的 ? 以及任意的二維座標轉換物理意義 (數學是有 inverse 是為了強調是相機座標轉換, 非物體的變化)


上式也就是 2D 投影平面之間的線性轉換, 或者可以稱它為 Homography, 在運算上與應用上的好處是, 可以僅用已知的 2D 座標來運算不需真的知道3D座標, 但如果要了解他的物理意義, 還是透過回到 3D系統上再投影回平面, 會更好理解與解釋. 說穿了這樣的 2D 轉換, 其實只是對投影平面在 3D 的立體空間上的位置與型態做變化而已, 需注意, 僅投影平面有變化, 但無論如何, 光學中心是不能有任何的改變的! 因此我們可以將這個變化套用在實際的相機系統上.

投影系統變化帶給整個相機系統會是一個怎樣的變化, 物理意義該如何解釋?
在這之前先了解 2D 投影平面上的點與線怎麼來的.

[2D投影座標上的點]

在任何 3D 上的點, 透視投影到 z = 1 平面上的那一點, 即 2D 投影座標上的點


例如, (6,2,2) 會投影到 (3,1,1) 這個點, 也就是 (3,1) , 因投影的交會點在(0,0,0), 可以發現只要將 3D 點的 z 值除掉, 就會是 2D 投影點的答案了.

[2D投影座標上的線]

從國中還是國小數學, 我們知道2D的直線方程式為 ax + by + c= 0, 在此不再用多項式來表示, 而是用矩陣 [a, b, c] 來表示一條直線, 當 [a, b, c] 被定義為直線, 任何通過該直線的 (x,y)則必須符合下面的數學意義

這是什麼意思呢? 如果回到 3D 的座標來看, 任何點 [x, y, z] 與向量 [a, b, c] 內積為 0, 表示該點通過原點的向量與 [a, b, c] 垂直, 所有點通過原點與 [a, b, c] 垂直可組成一個面, 令所有點除 z = [x', y' , 1] 則是該面投影在(或切於) z = 1 的點, 這些在 z = 1 的點剛好就是一條線, 該線就是 [a, b ,c] 所表現的線. 而 [a, b, c] 其實等於該線的法向量.



[相機與矩陣]

相機的成像原理, 其實就是 3D 空間投影到 2D 空間的表現, 在假設拍攝的物件與環境都不變的情況下, 所有的數學運算, 將只是單純的相機座標轉換運算, 本文所描述的2D座標空間只是單純的相機在 z = 1 的投影座標下的(類比)空間, 並不包含從 z = 1 的投影空間轉換到實際 pixel 的(數位)影像空間.

對投影座標做運算, 等同於對 3D 座標做運算後再投影回去

上面兩式的差別只有輸入點在 [x y 1] 或是 [x y z] 上, 之後都必須投影回到 z=1 的平面, 也就是最後求出來的數值, 都必須除掉使它為 1 (若為 0 則為無窮遠)
但是這個假設不包含3D座標轉換有位移的情況


只有符合 Homography 的假設上面方程式關係才存在. (也就是只有共面才可能符合條件)


因此, 我們可以假設, 將相機的光學中心設在 3D 座標 (0, 0, 0) 的位置 , 這樣也才符合光學投影所有點都將穿過光學中心的過程.

另外, 相機無法在 3D 空間中進行位移的動作. 否則將無法單純利用投影向量的變化來描述所有可能性.

之前提到, 對投影平面直接進行轉換等同於對其 3D 轉換後投影, 通常把它想成直接在 3D 上進行座標轉換後再投影是最好理解的方式, 對 3D 轉換其實就是在對投影的那個面, 進行轉換, 因此整個不管是 2D 直接轉換的過程, 或是 3D 轉換再投影的過程, 都是在對投影平面進行轉換的動作. (需注意, 被攝物的座標是不會變動的, 變動的是相機的狀態, 當然, 如果要想成是被攝物在進行變化, 數學上也是說得過去, 但比較不符合事實)

 相機在進行變換之前, 主宰原本相機的狀態有三個向量, 相機面對 [0,0,1]T = z 軸, sensor 水平方向平行於 [1,0,0]T = x 軸, sensor 垂直方向平行於[0,1,0]T =  y 軸 , 物理上sensor / 底片的位置在於 z = -1 的地方, 所有光會通過孔徑 (0,0,0) 打再 sensor 上, 但為了方便繪圖與避免鏡像, 通常以背投影的方式令 sensor 在 z = 1 的平面上, 也就是鏡頭焦距固定為 1, 另外相機需符合針孔相機的原理. 而 sensor 大小對應到鏡頭的 FOV (視角) 來決定, 或是反過來說. 下圖為 y = 0 的切面來看這個 FOV = 90 的相機系統, 實際上物件是三維的.

以這 FOV = 90的相機來說, 其對應的 2D 座標, 最左邊 x = -1, 通過 z 軸的點 x = 0,最右邊 x = 1, 無論投影平面怎麼變化, 都是遵循這樣的規則



當像機經過變化, 令座標轉換後投影的公式為

 
主宰相機的三個向量將發生變化, 相機改面對 [r00,r10,r20]T向量, sensor 水平方向(左右)改平行於 [r01,r11,r21]T向量, sensor 垂直方向(上下)改平行於 [r02,r12,r22]T向量.

這三個向量所有的變化都是由兩種行為組合 (1) 縮放(振幅變化) (2) 旋轉(角度變化)

為了簡單化, 分別解說各別代表的物理意義.

[x y z 的縮放]

z 的縮放 :

下面中間有 inverse 的是具座標轉換物理意義的公式 , 右邊解完 inverse 是直接算式.


這裡使相機看的方向改為 [0,0,2]T, 這邊向量方向不變, 只有振幅放大2倍, 什麼意思呢? 也就是這個座標轉換將原本 z = 1 的投影平面變為 z = 2 平面, 使得投影平面與原點的距離多兩倍其餘狀態皆不變. 通俗的說就是焦距變大了, 相機 zoom in, 使畫面內容放大.


如上圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變化,  原本投影在 (1, 0) 的點, 變化後變為 (2, 0), 另外 FOV 也變小了.

x 的縮放 :

這裡使 sensor 水平方向改為 [1/2,0,0]T, 一樣, 向量的方向不變, 但縮小兩倍, 也就是原本 x = 0.5 的大小會被當做 1 來看, 會使物件原本 x 的大小放大兩倍,


如上圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變 化,  原本投影在 x 的點, 變化後成像也是變為兩倍, 雖然從圖上較難看出. 這邊的解釋會與 z 方向改變的縮放有所不同, z 方向的向量縮放影響的是焦距大小, 此時 sensor 狀態是不變的, 而 x 方向縮放改變的是 sensor 的大小, 雖然這裡與數位化的像素轉換無關, 但用 pixel 的角度來解釋會比較容易, 可以解釋為再解析度相同的情況下, 表示一個 pixel 的單位寬度變窄, 整體的 FOV 也跟著變小.

y 的縮放 :
解釋同 x 的縮放. 但要補充的是, 這邊為什麼要將 z 的縮放與 x y 縮放用不同物理意義來解釋? 因為一針孔相機之焦距只能有一個, 若 x y 方向的縮放大小不同, 無法用焦距來解釋, 但卻可以很簡單的用 sensor pixel 單位長寬不一致的方向來解釋.

而 sensor pixel 長寬不一致的設計在一些特定的應用上是會故意這樣做的, 例如運用在 NTSC / PAL 的閉路系統的攝影機上, 為了方便符合類比信號規格會做非正方形的 pixel size.

但, 若 x, y 縮放一致, 例如 x , y 向量都縮小兩倍, 結果與 z 向量放大兩倍的成像結果將會一致.
然而實際的應用上, 相機通常都是相同的 sensor / lens 且 pixel 為正方形, 通常不太會去大幅度的改變縮放係數. 應用上會使用到的重點是在旋轉.

[x y z 的旋轉]

x-y 的旋轉與仿射 :


z 軸固定的情況下, x 或 y 軸角度有變化的物理意義是, 相機看的角度一樣, sensor 一樣垂直於相機看的角度, 但 sensor 本身會旋轉或歪斜.

當 [a b 0]T [c d 0]T當互相正交, 則表示變化後水平與垂直方向還是保持垂直狀態, 行為會是 sensor 旋轉, 若向量振福大小不等於一, 則有縮放. 在這裡假設振幅為1
一般來說會以 [cos(a) sin(a) 0]T [-sin(a) cos(a) 0]T呈現

如上圖, 是 z=1的剖面圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變化, 是一個單純的旋轉.

如上圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變化, 是一種歪斜的表現.
如果 x y 軸變化後呈現非正交狀態, 表示sensor 平行方向與垂直方向呈現非 90 度的情況, 則表示有歪斜 (skew)產生.物理意義上, 歪斜表示 sensor 的製造過程中, 無論是 sensor 本身, 或 pixel 本身, 都不是做的正正方方的. 與 x y 振幅(長寬)互不相同不一樣的地方是, 正常不會有故意歪斜的設計存在. 所以歪斜本身通常是一種錯誤的型態.

x-z 的旋轉與仿射 :

分正交與非正交狀態.
正交狀態與前面所說的一樣, 單純是固定 y 軸的旋轉 , 物理意義是相機的仰角(y方向)不變, 而整體左右旋轉來觀看, 如下圖.


題外話, 這種行為通常與你手持相機隨移左右旋轉晃動去看有所不同, 因為手在旋轉的時候會動到光學中心, 產生位移.


而在非正交狀態下, 相機的水平平行方向將不等於相機看的方向, 也就是 sensor 中心點雖然一樣落在主要的光軸上, 但卻是擺斜的 , 這裡舉一個簡單的例子


在這個例子中, 只有 x 方向有變化其餘皆保持不變, 變化後的 x 軸 [1 0 0]T = [1 0 1/2]T


如上圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變化, 可以發現 sensor 水平平面與相機看的方向 (光學中軸)非垂直狀態, 此外這個例子變化後震幅並非保持在 1, 因此還會有上面縮放的特性.

這邊特別故意設計成水平方向旋轉的角度與上面正交的角度相同, 可以觀察這兩個的差異在哪.

看看另外一個例子


這個例子一樣是 x-z 歪斜, 但不同的是, sensor 水平方向不變, 但看的方向歪了



如上圖, 灰色為原本預設的相機型態, 黑色為座標轉換後的變化, 這個例子是一個很典型的例子, 看出來了嗎? sensor 只是進行了橫向的移動而以, 他其實就是單純的 x 方向位移, 也就是, 位移可以透過3D空間的變化來達成. 這裡可以發現, 改變後 z 方向的振幅變了, 但事實上, sensor 平面 (z = 1) 到 z = 0 平面距離沒有變化, 因此不會出現放大縮小的現象.

y-z 的旋轉與仿射 :

原理同 x - z, 只是左右方向的變化變成上下的變化而已.

理解2D投影變化的行為, 會對之後 Calibration 的行為有更好的理解.


2014年7月25日 星期五

Eigenvector 的 2D 幾何物理意義

eigenvalue / eigenvector  相較於線性轉換或座標轉換而言, 其物理意義是較為抽象且不同應用有不同的物理意義.

會回過來看這個東西是因為最近又看到它了,由於工作應用幾乎不會用到它的特性, 因此重新見到它時, 只能滿臉疑惑的看著這名字熟析, 但不知道能做什麼的東西...

這邊寫一下回顧的心得與對它的觀點, 在回顧的過程中, 為了深入理解物理意義, 線性代數基本定理上都忘光了, 因此看的很辛苦. 不過也透徹了一些小小道理.

[數學模組]



白話來說, 就是一個線性轉換, 可能會存在一向量, 該向量經過該線性轉換得到的結果只有縮放, 沒有旋轉. 該向量即為 eigenvector, 而縮放的大小, 就是 eigenvalue.

[向量的移動] 

在看特徵向量之前, 先了解2維向量經過一矩陣線性轉換後, 對圖形會有什麼變化
這個轉換我們可以想像成一股力量迫使原本的向量改變的他們的位置移動到新的位置上
2x2 矩陣的移動可以簡單的想像是由四種基本力量結合在一起所產生, 分別為

1. 水平軸的水平力量

 
當為正能量, 該力量在 x > 0 往右拉, 在 x < 0 往左拉, 力量成線性變化, 也就是該力量越往在 x = 0 (y 軸上) 會越小, 當再 x = 0 時會沒有這股力量, 可參考上圖


當為負能量, 該力量在 x > 0 往左推, 在 x < 0 往右推, 也就是正能量箭頭反向後的結果.

2. 水平軸的垂直力量



當為正能量, 該力量在 x > 0 往上, 在 x < 0 往下, 力量成線性變化, 也就是該力量越往在 x = 0 (y 軸上) 會越小, 當再 x = 0 時會沒有這股力量, 可參考上圖

當為負能量, 該力量在 x > 0 往下, 在 x < 0 往上, 也就是正能量箭頭反向後的結果.


3. 垂直軸的垂直力量



當為正能量, 該力量在 y > 0 往上拉, 在 y < 0 往下拉, 力量成線性變化, 也就是該力量越往在 y = 0 (x 軸上) 會越小, 當再 y = 0 時會沒有這股力量, 可參考上圖

當為負能量, 該力量在 y > 0 往下推, 在 y < 0 往上推, 也就是正能量箭頭反向後的結果.

4. 垂直軸的水平力量



當為正能量, 該力量在 y > 0 往右, 在 y < 0 往左, 力量成線性變化, 也就是該力量越往在 y = 0 (x 軸上) 會越小, 當再 y = 0 時會沒有這股力量, 可參考上圖

當為負能量, 該力量在 y > 0 往左, 在 y < 0 往右, 也就是正能量箭頭反向後的結果.

其實該力量用2維陣列表示就是長這個樣子

| 水平軸的水平力量    垂直軸的水平力量 |
| 水平軸的垂直力量    垂直軸的垂直力量 |

了解力量的特性後, 還有一個假設, 我們要假設原點有股力量會將分布在座標上的點往圓心方向拉, 該力量為



因此, 當要維持目前座標上所有點的位置, 需要有一股基本力量來維持, 也就是




因此移動向量會是施與的力量減去往原點的力量, 施予力量



其移動力量為



因此, 當矩陣為基本的力量時, 移動向量會是 0 (矩陣向量不變).

[變換基本行為]

所有的2維線性轉換向量移動方式, 皆由上面四大基本力量所組成

舉例來說, 另線性轉換矩陣為

, 其移動向量為 

四個基本移動向量對應到九個位置

 (-1, 1), (0, 1), (1, 1), (-1, 0), (0, 0), (1, 0), (-1, -1), (0, -1), (1, -1)

用圖形表示該矩陣

左上灰色為水平軸的水平移動量
右上藍色為垂直軸的水平移動量
左下綠色為水平軸的垂直移動量
右下紅色為垂直軸的垂直移動量




相加後得到



所有 2x2 線性變換, 其整體行為可以分成兩大類

  1. 無整體旋轉行為
  2. 有整體旋轉行為
所謂的旋轉是該點會有一股位移力量, 該力量可分解為該點至圓心的線, 與垂直於該線之方向, 垂直於該線之方向若移動的力量非零,則對該點產生旋轉, 如果每個點相對的旋轉方向(順時針或逆時針) 皆相同, 那麼就有整體旋轉的行為存在, 否則只有個體旋轉的情形無整體旋轉之行為.



因為變化為線性, 無整體旋轉行為在旋轉方向是區段不同的, 在兩個不同的旋轉方向之間,  必定存在至少一個向量旋轉能量為 0, 而不會旋轉的向量, 就是所謂的特徵向量

旋轉的例子為



 

最後的移動量為


可以看出, 所有點都具有逆時針旋轉的移動方向, 故不會存在任一位置向量不具旋轉特性, 這種矩陣, 因不存在不具旋轉特性的向量, 即無實數的特徵向量

[其他特徵值物理意義]

影像處理 :

以圖形來理解物理意義是最好的方法, 因此都用 2 維矩陣來做說明.

以影像的角度來看, 當影像經過一線性轉換 (旋轉/縮放), 若有方向不受到改變的就是 eigenvector

單位圓 :

與其用影像變化的角度來看, 用單位圓的變化來看會更直接, 因為單位圓有個特色就是從圓心到圓上的所有向量大小都為 1,單位圓的線性變化, 會實實在在的反應出該線性轉換帶給各角度向量旋轉與縮放的力道.

單位圓經過線性轉換是什麼變化, 其實就是從圓, 變成(斜)橢圓

可參考
由椭圆矩阵表达式获取到单位圆的线性变换
圆与椭圆之间“隔着”一个矩阵

因此, 我們可以從單位圓, 跟橢圓之間向量方向的變化, 來找出當相同(或相反)方向時的向量, 即為特徵向量.

假設單位元經過一向量 進行線性轉換



藍色的圓為半徑 =1 的單位圓, 綠色為經過轉換的斜橢圓, 可以得知當 (x,y)T = [1, 0]T(藍色) 經轉換變成 [1, 0.3]T(綠色)



當 (x,y)T = [0, 1]T(藍色) 經轉換變成 [0.5, 1]T(綠色)

可以知道, 當藍色的指針, 從上圖的位置, 逆時鍾掃到下圖的位置,  綠色指針也進行一樣的動作, 可以理解到, 在這中間過程中, 必定有藍色與綠色指針(向量) 重疊的時刻



當藍綠重疊的位置之單位圓上的座標向量,為特徵向量, 而橢圓上位置距離圓心的距離則為特徵值.

 以這個例子來說,藍綠指針在逆時針往下走下去又會再重疊一次, 重疊位置在淡藍色的細線上,同理可以得知其特徵向量與值, 這表示該線性轉換 A 有兩個特徵向量.

[延伸特性]

得知特徵向量在單位圓上的物理意義後, 我們換個角度來看特徵向量與特徵值對於線性轉換的貢獻在哪邊.

在此之前先回顧一下縮放的物理意義, 令轉換矩陣



這表示對 x 軸方向進行 倍的縮放, 對 y 軸進行倍的縮放. 可以想像一下有個無形的手, 對著單位圓牢牢抓住 x 軸與 y 軸, 然後用力拉(擠)到長度上, 由於 x, y 軸為失力點, 失力方向平於於兩軸, 此時 x, y 軸上的向量方向不會有任何改變.因為 x , y 軸的向量角度不變, 可以得知特徵向量位於於 x, y 軸上.

換句話說, 如果有一股力量延某個方向通過圓心拉扯或擠壓單位圓, 這股力量的方向就是特徵向量, 力量的強度就是特徵值.



然而任意矩陣 A 可以被拆解為多個矩陣相乘的多個組合, 也就是 A 的轉換動作可以被切割成好幾個動作完成, 我們讓其中一個動作包含上述特定方向通過圓心的方式拉扯擠壓的動作, 可以將 A 轉換矩陣拆解出與特徵向量有關的動作.

 

當 v 可 inverse, 同乘 inv(v)得



其物理意義可以如此解釋, 一線性轉換 A , 可拆解為下列動作來完成
  1.  : 座標轉換成特徵向量座標為基底的座標
  2.    : 對座標轉換後, 基底為特徵向量的 x y 軸進行縮放的動作
  3.    :  = , 從原本特徵向量的基底再轉回正常的基底

第3項要說直接做 的線性轉換也可以. 不過解釋為座標轉換會比較好想像上面說說特徵向量方向不變的道理. 因為座標轉換的物理意義是,實際的點的位置從來沒移動過, 而線性轉換是點的實際位置變掉了.

舉例 ,



   = 0.4059     = 2.0941

第一步, 如下圖將單位圓座標轉換到 座標上, 也就是進行 線性轉換
如下圖, 因為做過座標轉換, 所以實際上看到的 [1, 0] 是原本的 [0.998, -0.0626]
而 [0, 1] 則是 [0.6853, 0.7283]
要注意的是, 因為在這僅進行座標轉換, 所以原本的單位圓還是在同一個位置
因此, 就算在這看起起來整個圓都已經變形或被旋轉到, 都無所謂, 因為最後一步轉回原座標系統會抵消這裡發生的動作.




第二步, 如下圖在這對座標轉換過去的 x, y 軸方向進行拉伸或推擠的動作
力道為特徵值
需注意因座標系統不同, 相對於原本的座標系統, 其實是在對特徵向量方向進行
以我們定義的物理意義邏輯來看, 只有這裡這個動作會改變單位圓點的位置.




最後,如下圖再進行一次座標轉換, 回到原本的座標系統



我們可以說當 A 有特徵向量 ,將有一股力量在特徵向量方向施力, 且不會有包含整體的旋轉力量就可以完成 A 的動作.

[橢圓]

之前提到, 單位圓 C 經線性轉換 A 可變成斜橢圓 E
實際上如果要達到相同於 E 形狀的橢圓, 不只矩陣 A 辦的到. 可能存在很多矩陣都能做到
不過雖然形狀相同, 但每個點對應到單位圓的方式可是不同的~

其中也包含兩特徵向量為正交 (單位矩陣) 的案例, 當特徵向量為正交, 由前面的拆解說明來看,
因特徵向量正交, 第一步的座標轉換動作只會做到旋轉, 並不會使單位圓有原本範例變形的情況, 然後對 x, y 軸拉擠, 最後旋轉回原本座標, 因正交, 最後的動作也是單純的旋轉.

可以發現上述的動作, 其拉擠的方向會是橢圓最長與最短之處, 也就是在特徵向量正交的前提下, 其特徵向量與特徵值, 將會等於橢圓長短軸方向與大小.

[SVD]

前面提到, 當實數 v 為實數 A 特徵向量, 可將 A 拆解為
 

這種拆解方式, v 不一定正交
如果兩特徵向量正交, 知道特徵向量與值後, 可以很簡單的知道單位圓經過 A 的形狀, 因為特徵向量即為橢圓的長短軸.

另外 SVD可將的實數矩陣拆解式改為正交型態



其中 u v 為正交矩陣, u 不一定等於 v, 雖然符合跟前面相同, 但需注意的是這裡的 v 當 u 不等於 v 就不是 A 的特徵向量了. 至於 u, v 怎麼解請參考 wiki SVD

若能將 u 分解為 rv, 因為 u , r , v 都是正交單位為 1 的矩陣, 所以可以看成 u 的旋轉角度 = r 的旋轉角度 + v 的旋轉角度


可以看到, A 矩陣的表示可以解讀為,對某正交的特徵向量 v 的方向縮放成橢圓, 再轉 r 的角度.

可以得知, 任何橢圓都可以透過對任意正交的兩方向作縮放動作, 在旋轉獲得. 然而當正交的 v 向量, 轉變為橢圓後, 還要在經過一個角度的旋轉, 該 v 並非 A 的特徵向量.

任何實數 A 對單位圓的線性變化為橢圓, 我們可以說

  • 該橢圓可直接用任意兩向量方向的力量拉擠出來, 並且旋轉得到 (沒什麼特殊意義)
  • 若橢圓可直接用兩向量方向的力量拉擠出來 , 而旋轉角度為 0, 該向量為特徵向量, 但這兩股力量不一定正交 (特徵向量的物理意義)
  • 該橢圓可直接用兩正交向量方向的力量拉擠出來, 並且旋轉得到, 這種做法可以很簡單直覺的畫出經過 A 的橢圓樣貌 (SVD物理意義)
SVD 的最大用途是化簡多維矩陣的運算, 對於幾何表現來說也是簡化其幾何行為, 也就是, 若對橢圓的施力並非正交, 實際上是很難直覺的精確的畫出該橢圓的形狀的 (長短軸在哪不清楚), 若以 SVD 的形式存在, 可以根據特徵值, 特徵向量, 最後的旋轉角度, 直接畫出該橢圓的樣子.



Recap 一些重點
  • 特徵向量為正交的線性矩陣 A 其特徵向量與值等於橢圓長短軸半徑.
  • 當 A 為對稱矩陣, 其特徵向量為正交, 固當 A 為對稱矩陣, 可以直接從其特徵向量得知橢圓的長短軸狀態.
  • 當 A非對秤矩陣, 其橢圓長短軸可用其他方式得到, [v, d] = eig(inv(A)'*inv(A)), 橢圓長短軸為 v*(1/sqrt(d))