Professional Documents
Culture Documents
作者姓名:108322035 蘇柏宇
指導老師:林容杉
日期:2022 年 06 月 03 日
透過一些電腦圖形軟體能夠以各種方式處理圖像,例如縮放、旋轉等
等,而
Warps and Morphs 又是另一種圖像處理的技術,這類技術常應用於生物
體的生長過程、協助重建面貌、以及近幾年新興的軟體上能夠模擬人老
化時的面容都是此技術的應用。
Warp:
從最簡單的單個三角形開始說起,點單來說 Warp 就是把圖(a)
變成圖(b)的過程,( 令 c1+c2+c3=1 可
以得到右圖上的
與下圖中的 比較可以得到
為 v 到 w 之間的關係式, 而下式為(a)、(b)兩圖像數密度的關係式
1
我們希望將一張圖分割成多塊三角形來獲得圖片中的特徵再經由上述的過程進行 warp,需要滿足以
下條件 (vi 稱為頂點 i=1,2,3….n)
1. 矩形的邊必須要為構成三角形的邊
2. 線段不相交
3. 每個頂點至少為一個三角形的頂點
4. 三角形的聯集為矩形
5. 滿足上述條件的三角形的總數要為最大值 (沒有頂點能夠連接了)
注意 : 圖片矩形的四個角也要當作頂點
分割三角形的步驟可以交由電腦運算,只需指定所需要的頂點並讓電腦
自行生成三角分割。
通過將頂點 v1,v2,…,vn 移動到 w1,w2,w3,…,wn 得到指定的 warp,但
是我們對頂點的移動施加了兩項限制
1. 矩形四角的四個頂點保持固定,任意一個矩形邊上的頂點保持固定
或移動到矩形的同一側的另一個點。所有其他頂點將保留在內部的
矩形。
2. 三角切割確定後的三角形,頂點移動後不重疊
第一個限制保證了開始圖片的矩形形狀被保留。 第二個限制保證位移
的頂點仍然形成矩形的三角切割,並且新的三角切割與原始三角切割相
似。
10.19.5 的圖 c 就是不合規定的例子
Time-Varying Warps:
Time-Varying Warps 是當起始圖片的頂點在時間上從其原始位置連續移動到指定的最終位置時生成
的一組 Warp,就像是動畫片的放映,從初始 t=0 到 t=1 每個頂點移動進行 Warp
將頂點從 t=0 移動到 t=1 的最簡單方法是沿直線路徑以等速度從它們的初始位置移動到它們的最終
位置。
為了描述這樣的運動,我們讓 ui(t)表示在 0 和 1 之間的任何時間 t 的第 i 個頂點的位置。
因此 ui(0)=vi (為起始圖片的位置), ui(1)=wi (為最終圖片的位置) t=0 和 t=1 之間的運動以
此式表示
2
使用 Matlab 進行 Morph
粗略的分成以下步驟
1. 兩張圖片的參考點選擇,若是臉部的話盡量取得五官等特徵
2. 透過 Matlab 函數 tearchn 完成 Delaunay 三角形分割
3 之後按照每塊三角形進行不同比例的 Warping 變形
詳細步驟:
定義對應關係:
在 Warp 中兩個三角形是一對一關係,進行三角分割時為了減少三角形的變形,採用兩點取平均的方
式來計算 (im1 為初始圖片,im2 為最終圖片)
3
上圖中的第 45 行 pts_mean 就是再取平均值
Tri 是進行三角分割後一個儲存了每個三角形頂點數據的矩陣
4
進行完三角分割後開始進入定義 Morph 函數的程序
im1_warp、im2_warp、morphed_im 這三個矩陣的運算則是利用以下個公式進行計算
5
定義 Affine warp 函數:
此式為 2D 空間中每個像素點位置轉換的公式
每一個三角形都是一對一的,每一對三角形都有一個用於映射的變換矩陣,三角形逐幀更改變換
矩陣也逐幀更改。
進行 Morphing 的函數都具備後就可以手進行主程式。
6
上圖為我進行取頂點並進行三角分割的實際操作。
心得:
這次的期末報告製作讓我對英文的閱讀能力有顯著的提升,以前看到原文書都會很排斥閱讀,但有
了這次的經驗之後讓我大大改觀,原文書中對於議題的說明都講得十分詳盡,錯過了真的很可惜。
這次報告的主題我認為自己已經弄懂的部分只有三角分割,以及進行 warp 的理論過程,對於
Matlab 程式的操作還是十分生疏,製作報告的過程裡這一部分花了我很多的時間,有許多的程式碼
不知道如何運用我也自己上了 MathWorks - Makers of MATLAB and Simulink - MATLAB & Simulink
這個網站來查找資料也讓我學到不少東西。
7
參考資料 Elementary Linear Algebra: Applications Version
作者: Anton, Howard/ Rorres, Chris
出版日期:2013/11/04