第二章 文獻回顧
2.2 擴散曲線應用
圖 6 Selinger [6] 的自動向量化方法,首先偵測給定的點陣圖的邊緣資訊,並轉換成 向量曲線,再進行上色。(a)為給定的點陣圖,(b)為計算出來的向量曲線,(c)為顯像結 果。(圖片來源: [6])
圖 7 使用 Potrace 所計算的擴散曲線顯像結果。原本點陣圖上的一條輪廓被計算成兩 條,產生雙重邊緣的現象。
2.2 擴散曲線應用
Orzan 等人[1]所提出的擴散曲線,使用非常簡單的基元來表示向量圖形,因此過 去幾年有許多人相繼提出了與擴散曲線相關的應用。 Jeschke 等人[7]提出了以圖形處 理器為主的拉普拉斯解答器(Laplacian Solver),來加速擴散曲線的顯像過程,達到即時 運算的結果。本論文所生成的擴散曲線亦用此方法來加速顯像。
Bowers 等人[8]則提出了以光線追蹤(ray tracing)來計算擴散曲線的擴散。這種方 式延伸了擴散曲線的基元,加入了梯度、紋理、透明度,甚至是美術人員可以自行設定
(a) (b) (c)
14
的權重資訊,讓擴散曲線能產生更豐富的效果,如圖 8 所示。除此之外,這個方法還 改善了擴散曲線在交會點顯著的人工合成現象,如圖 9 所示。
圖 8 擴散曲線的顯像方法比較。(a)為 Orzan 等人[1]的方法,(b)為 Bowers 等人[8]
的方法。(b)的眼睛部分的光影變化較(a)豐富。(圖片來源: [8])
圖 9 擴散曲線的顯像方法於交會點的比較。(a)為 Orzan 等人[1]的方法,(b)為Bowers 等人[8]的方法。(b)的交會點部分所產生的人工合成現象略為不明顯。(圖片來源: [8])
Winnemöller 等人[9]將擴散曲線應用於紋理的設計上。首先讓使用者編輯擴散曲 線以設計紋理元素,之後加入了法線及紋理座標等資訊,將紋理元素重複地拼貼在圖片 中的衣服或掛布上面。使用者可以使用這個系統快速地將設計好的不同紋理元素拼貼在
(a) (b)
(a) (b)
15
同一張圖片中的同一塊區域,如圖 8 所示。由於增加了法線的資訊,因此可以產生更 逼真的細節及陰影效果。Sun 等人[10]及 Jeschke 等人[11]則將擴散曲線延伸到3D物體 的紋理貼圖上,由於向量圖的特性,這些紋理貼圖都是解析度相依,而且可以隨著3D 物體曲面的變化產生相對應的結果,如圖 9、圖 10 所示。
圖 10 Winnemöller 等人[9]的拼貼方法。(a)使用者可以在圖片中指定要拼貼紋理元素 的區域。(b)使用者可以很快地將不同的紋理元素應用在同一張圖片上。(圖片來源: [9])
圖 11 Sun 等人[10]將擴散曲線應用在3D曲面的紋理貼圖。(圖片來源: [10])
圖 12 Jeschke 等人[11]將擴散曲線應用在3D曲面的顯像上。(圖片來源: [11])
Takayama 等人[12]提出了擴散曲面(Diffusion Surfaces)的概念,是以擴散曲線作延
16
伸的一種 3D 曲面。與擴散曲線類似,只要在曲面兩邊定義一連串的控制顏色點,便可 以產生自動擴散的立體模型。這種方法可以產生非真實感繪製(Non-photorealistic rendering, NPR)風格的立體模型,如圖 11 所示。
圖 13 Takayama 等人[12]所提出的擴散曲面。(a)給定曲面兩面的顏色值,就可以將 顏色擴散到整個立體模型。 (b)利用擴散曲面所生成的NPR風格的3D模型。(圖片來源:
[12])
Hnaidi 等人[13]將擴散曲線的擴散方法延伸應用到地形的生成上,如圖 11 所示。
由於擴散曲線的顏色是從顏色控制點往外擴散生成的,所以只要用相同地方法,給定地 形的主要輪廓曲線,以及曲線上頭的梯度值,整塊地形每個位置的梯度也可以從曲線上 向外擴散而得。
圖 14 Hnaidi 等人[13]使用擴散曲線的擴散方法所生成的複雜地形結果。(圖片來源:
[13])
17
第三章 方法
本章節將描述點陣圖自動向量化的方法。首先,我們會在 3.1 介紹整個方法的概 觀。接下來,由於本方法是將點陣圖轉換成擴散曲線的向量表示式,因此我們先在 3.2 介紹擴散曲線的結構及顯像方法。最後,我們將闡述整個自動向量化的演算法,包含在 3.3 說明輪廓偵測器, 3.4 說明輪廓追蹤演算法, 3.5 說明顏色及模糊資訊的萃取。
3.1 概觀
我們的目標是要將點陣圖自動轉換成擴散曲線,並且讓產生的向量圖盡可能地接近 原本的點陣圖。為了達到此目的,我們從點陣圖中萃取形狀、顏色及模糊資訊,並透過 這些資訊產生擴散曲線。圖 15 顯示我們的方法架構圖。首先,我們的系統輸入一張由 使用者所給定的點陣圖。接下來,針對這張點陣圖進行輪廓偵測以獲得輪廓資訊。由於 產生出來的輪廓資訊是以像素陣列的方式儲存,因此我們再透過輪廓追蹤演算法,將輪 廓資訊轉換成貝茲曲線。至於擴散曲線所需要的顏色及模糊資訊,則是沿著輪廓從點陣 圖上萃取。當上述這些資訊都獲得了以後,我們便生成擴散曲線,並使用以圖形處理器 為基底的顯像系統進行顯像。
18
圖 15 方法架構圖。
3.2 擴散曲線
擴散曲線是由 Orzan 等人[1]所提出的一個新的向量圖型基元。在這一節中,我們 將介紹擴散曲線的資料結構,以及我們如何透過這個幾何基元有效地顯像成一張圖片。
3.2.1 資料結構
如圖 16,擴散曲線的結構包含底下這些基礎元素:
1. 有著一組控制點(control point)的三次方貝茲樣條曲線(cubic Bezier spline),如 圖16(a)。
萃取顏色及 模糊資訊
轉換成擴散曲線結構 輸入點陣圖
輪廓偵測
擴散曲線顯像
輪廓追蹤
19
20
1. 產生一個柵格化(rasterization)的顏色來源影像。位在貝茲樣條曲線兩側上的 像素的顏色取決於顏色屬性,剩餘的像素則未上色。
21
插即可。最終得到一張模糊資訊來源 σ,如圖 18(b) 所示。
圖 18 柵格化所得擴散曲線所需要的各種基礎元素。(圖片來源: [1])
3.2.2.2 顏色擴散
有了 3.2.2.1 所計算的顏色來源 C 及梯度域 W 之後,接下來就可以對整張圖片 進行擴散。我們使用類似於 Pérez 等人[14]的方法,透過解出底下的泊松方程式 (Poisson equation)將顏色擴散到整張圖片:
∆𝐼 = div 𝑊
如果(𝑥, 𝑦)像素有顏色值,𝐼(x, y) = 𝐶(𝑥, 𝑦)
∆ 及 𝐼 為拉普拉斯及散度(divergence)運算子。
由於計算泊松方程式的解需要很大的線性系統,因此我們採用 Jeschke 等人[7]所 提出的以圖形處理器為主的拉普拉斯解答器(Laplacian Solver),來加速計算的過程,已 完成擴散曲線顏色的顯像。顏色顯像的結果如圖 19(a) 所示。
3.2.2.3 模糊資訊擴散
與 3.2.2.2 的方法類似,我們同樣也針對之前所計算的模糊資訊進行擴散。與顏色 擴散不太一樣的是,曲線上的模糊數值不像顏色資訊需要向外移動一段距離,因此沒有
(a) 顏色來源(C) (b) 模糊資訊來源(σ)
(c) x 方向的梯度值 Wx (d) y 方向的梯度值 Wy
22
任何梯度的限制。計算方法如下:
∆𝐵 = 0
如果(𝑥, 𝑦)像素在曲線上,𝐵(x, y) = 𝜎(𝑥, 𝑦)
其中 B 為欲計算的模糊貼圖,𝜎(𝑥, 𝑦) 為在該點上的模糊數值。
同樣地,我們也使用Jeschke 等人[7]的以圖形處理器為主的拉普拉斯解答器來計算 此泊松方程式,計算結果如圖 19(b) 所示。
3.2.2.4 綜合結果
當顏色及模糊的顯像結果都已經計算完畢以後,最終就是將兩張圖片進行相乘 得到最終的結果,如圖 19(c) 所示。
(c) 最終顯像結果
圖 19 使用泊松方程式進行擴散所產生的顏色貼圖結果(a)及模糊貼圖顯像結果(b)。以 及將兩張圖片相乘所得到的最終顯像結果(c)。(圖片來源: [1])
(a) 顏色顯像結果 (b) 模糊貼圖顯像結果
23
Arbelaez 等人[15]所提出的輪廓偵測器的基本構成,是從一張圖片中計算各種強度 (包含亮度、顏色及紋理)的方向梯度量值(Oriented gradient magnitude) G。方向梯度量 值的計算方式,如圖 20 所示。首先,在圖片中的每個位置 (x,y) 上放置一個圓盤(a),
當每個位置的梯度量值都計算完畢後,我們再使用二階 Savitzky-Golay 濾波器[16]
來強化區域最大值,並且平滑化在方向 θ 時多重偵測到的最大值。
24
圖 20 Arbelaez 等人[15]方向梯度量值計算方法。給定一張圖片,此方法計算在方向 θ 時某個位置的方向梯度量值。(a)顯示在位置 (x,y) 上的圓盤,藍色及紅色半圓表示 g 及 h。(b)的兩張直方圖即為 g 及 h 兩半圓所統計的強度值。(c)顯示計算 X2 距離後,
再使用二階 Savitzky-Golay 濾波器[16]所產生的方向梯度量值。這個例子使用半徑為5 像素的圓盤,方向 θ = 𝜋4 來計算。(圖片來源: [15])
3.3.2 亮度、顏色及紋理梯度
有了方向梯度量值的計算方法之後,接下來就針對圖片的各種特徵來計算不同的通 道(channel)的梯度量值。首先,我們將給定的圖片轉換成 CIE Lab 顏色空間,也就是 亮度 L 、顏色 a 及顏色 b 三個通道,並且使用 3.3.1 的計算方法算出三個通道的方 向梯度量值 G ,如圖 21 所示。
(a) (b) (c)
θ
25
圖 21 利用Arbelaez 等人[15]的方法所計算的亮度 L 、顏色 a 及顏色 b 三個通道的 方向梯度量值。(a)為輸入的圖片,(b)(d)(f)為轉換成 CIE Lab 後的 L、a、b 三個通道 的數值,(c)(e)(g)為三個通道所各自計算的方向梯度量值。(圖片來源: [15])
除了顏色的資訊之外,我們也考慮了紋理的資訊,因此第四個通道就是紋理通道。
我們使用濾波器及分群方法,將每個像素指定到特定的紋理元素(texton) ID。首先,我 們先將圖片轉成灰階,再與圖 22 的 17 個高斯導數濾波器(Gaussian derivative filter) 進行卷積(convolution)。如此一來,每個像素都會對應到一個17維度的向量,我們再使 用K-means分群法對這些向量進行分群,如此每個像素都會對應到一個分群過後的紋理 元素 ID。最後,我們將圖片中的每個像素,用其對應 ID 的紋理元素代替。接下來我 們就可以針對這張圖片,以 3.3.1 的計算方法算出方向梯度量值,如圖 23 所示。
圖 22 Arbelaez 等人[14]所提出的17個不同的高斯導數濾波器。(圖片來源: [15])
(a) (b) (c)
(d) (e) (f) (g)
26
27 neighborhood algorithm)來進行輪廓追蹤,每當找到一條最長的像素鏈(pixel chain),便 使用輪廓向量化方法找出與像素鏈差異性最小的貝茲樣條曲線。
28
29
30
圖 27 萃取顏色及模糊資訊。(a)從點陣圖中萃取顏色資訊,之後儲存於顏色控制點 Cl
及 Cr。(b)從輪廓偵測中萃取模糊資訊,之後儲存於模糊控制點Σ。
(a) (b)
31
32
圖 28 點陣圖自動向量化的結果。(a)(b)(c)為輸入的圖片,(d)(e)(f)為我們的自動向量 化所計算出來的向量圖。
(a) (d)
(b) (e)
(c) (f)
33
圖 29 手動修改擴散曲線的顏色及線條資訊。(a)原本的擴散曲線向量圖。(b)使用者可 以透過修改控制點的位置,來調整瓢蟲斑點的大小及位置。(c)使用者也可以透過修改瓢 蟲最外層擴散曲線控制點的顏色,以得到不同的背景顏色。
(a)
(b) (c)
34
圖 30 各種不同的風格的繪畫,透過自動向量化產生的結果。(a)為水彩畫風格的繪畫,
(d)為透過我們的方法所產生的向量圖。(b)(c)為非真實感繪製風格的圖片,(e)(f)則分 別為(b)(c)的向量化結果。
(a) (d)
(b) (e)
(c) (f)
35 統,在搭載NVIDIA Geforce GTX 460顯示卡的 Intel core 2 duo E7500 2.93GHz 的個 人電腦上,輪廓偵測需花費1-2小時的計算時間,計算擴散曲線需花費20-30秒的計算時
36
的方法無法完整呈現。
圖 32 我們的方法與漸層網格[3]的比較結果。(a)為輸入的圖片。(b)為漸層網格的結果,
需要340個頂點構成,如(c)所示。(d)為我們的方法所計算的結果,只需要85條擴散曲 線,如(e)所示。
(a)
(b) (c)
(d) (e)
37
圖 33 我們的方法與Potrace的比較結果。(a)為輸入的點陣圖,(b)為我們的向量化結果,
(c)為Potrace的結果。
(a)
(b) (c)
38 相比,會產生很大的誤差。Jeschke 等人[17] 提出了使用伽柏雜訊(Gabor noise)來表現 紋理變化的演算法。這個方法使用擴散曲線來表現圖片的整體結構,再透過調整伽柏雜 訊的參數,讓產生出來的雜訊能產生區域性的紋理效果及光影變化。
輪廓偵測的數值高低代表著輪廓的重要程度,有些較為重要的輪廓在原本的點陣圖 上並非具有很銳利邊緣,這代表著輪廓的重要性與模糊程度並無直接相關。如此一來,
39
本篇使用萃取輪廓偵測的結果來給定模糊控制點的數值的做法,其實並不夠妥善。若能
本篇使用萃取輪廓偵測的結果來給定模糊控制點的數值的做法,其實並不夠妥善。若能