• 沒有找到結果。

在處理輪廓(Contour)的部分,我們使用 DoG Edge Detection 與 Canny Edge Detection 的演算法來處理影像,其目的與結果各不相同。

首先對於物體的輪廓邊緣(Silhouette Edge),我們使用 DoG Edge Detection 演算法,尋找影像中較明顯的外圍輪廓,主要用來幫助我們加 強最後結果圖的輪廓部分,其結果如圖 3-6 所示,所造成的影響將於第 四章中作說明。

接著對於物體的皺痕邊緣(Crease Edge),我們使用 Canny Edge Detection 演算法,尋找影像中強度變化量較大的部分。其目的是用來幫 助我們作區塊劃分時,也能夠同時考量皺痕邊緣所造成的影響,使得劃 分的區塊能夠更正確,其結果如圖 3-7 所示 。

圖 3-7:Canny Edge Detection 輪廓圖

如圖 3-8 所示,若未使用 Canny Edge Detection 來輔助劃分區塊,

則左圖中紅色區域的劃分方式,將會如中間圖所示,將它劃分成同一個 區塊,但若加上 Canny Edge Detection 則結果如右圖。

圖 3-8:皺痕邊緣與區塊劃分的結果圖

3.5 筆觸

在此節中,我們將討論筆觸的模擬方式。首先我們先考慮,人類徒 手繪製物體時,筆觸會有的一些特性:

(1). 濃淡的差異:

筆觸的濃淡與鉛筆及繪圖時下筆的力道有關,一般鉛筆的硬度 從硬到軟,分別為 9H、8H、…、H、F、HB、B、2B、…、9B;越 硬顏色越淺,越軟顏色越黑,一般繪圖時只需要 4H~6B 即可。當 鉛筆對紙面施加不同的壓力時,會影響顏色的深淺變化。通常在作 畫時會隨著光影的變化方向而施加不同的壓力。一般剛下筆時會施 加較大的壓力,進而依序遞減;且對於施力重心位置的差異性,也 會造成顏色的改變。

(2). 線條的粗細:

隨著對鉛筆的削法與握法的不相同,將造成筆尖與紙張接觸時 的作用面積也會有所差異,進而使得筆觸會有粗細的分別。

(3). 筆觸抖動不規則性:

通常在徒手繪圖時,多多少少都會產生一些因抖動所導致的誤 差,且會有隨著手繪長度增加而對筆觸既定方向的偏移量也就越大

(4). 筆觸的長度:

隨著面積大小或是角度變化等等的因素,每一筆的筆觸長度也 會有所區別。

茲就鉛筆手繪線段的濃淡分佈變化及線段局部抖動與大域偏移現 象分別以圖示意說明如下。

(1). 局部與大域濃淡分佈:

圖 3-9:筆觸線段示意圖

沿著線段手繪方向,其濃淡分佈IL(l)可由圖 3-10 描述,大域分 佈由起點至終點由濃轉淡,中間可伴有局部起伏。

圖 3-10:沿線段手繪方向之濃淡分佈常態圖

沿著線段寬度方向之濃度則應隨著與手繪壓力重心線的距離 之增加由濃轉淡,如圖 3-11 所示。

圖 3-11:手繪線段沿寬度方向之濃淡分佈常態圖

(2). 局部抖動與大域偏移現象:

由線段起點揮筆繪向終點時,隨著手繪長度的增加,手繪軌跡 有逐漸偏離既定方向的趨勢,產生所謂大域偏移的現象(圖 3-12 中 細的虛線軌跡與粗的虛線軌跡的差異),其中並伴有局部抖動筆觸 (圖 3-12 中鋸齒實線所示)。

圖 3-12:手繪線段全域偏移與局部抖動現象

基於要模擬上述的四種特性,我們將筆觸模型設計如下,首先我們 先分別對每一個參數作說明:

(1). 顏色與寬度:Stroke( I , W)

I (Intensity):顏色,用來表示鉛筆的類型,從 9H~9B

W(Width):寬度,用來表示線條的粗細程度,W ∈ {0,1,2, … ,7}

令 W0、W1、W2、W3分別為筆觸線段上的四點線段寬度值,W(x, y) 是由 W0 ~ W3 ∈ [0,7]內插所計算出的 Cubic Spline 三次方程曲線,

如圖 3-13 所示。

圖 3-13:筆觸寬度函數圖

圖 3-14 為顏色與寬度筆觸圖。

圖 3-14:顏色與寬度筆觸圖

(2). 壓力的影響:Stroke( I , W , IL, Iw) IL(Pressure):壓力函數,0 ≦ IL(∗) ≦ 1

令 I0,I1,I2,I3分別為筆觸線段上的四點壓力值,IL(x, y)是由 I0

~I3 ∈ [0,1]內插所計算出的 Cubic Spline 三次方程曲線,如圖 3-15 所示。

圖 3-15:筆觸壓力函數圖

Iw(Pressure distribution):重心分佈函數,0 ≦ Iw(∗) ≦ 1

Iw(x, y) = 1 − (α × w),α ∈ [0,1]表示衰減量、w表示離重心位置 的距離,如圖 3-16 所示。

ILw x, y = I x, y × IL x, y × Iw x, y ,I x, y 為原圖亮度值,圖 3-17 為壓力對於顏色影響筆觸圖。

圖 3-17:壓力對於顏色影響筆觸圖

(3). 筆觸抖動不規則性:Stroke( I , W , J , R ) J(Jitter):週期性的小範圍抖動誤差

J(x,y) = a × sin t + b,a、b ∈ [0,1] 為隨機產生的亂數

PJ x, y = P x, y + J(x, y),圖 3-18 為小範圍抖動筆觸圖。

圖 3-18:小範圍抖動筆觸圖

R(Randomness):亂度,影響線段大域偏移量的程度,模擬較大的 誤差

PR(x,y) = R(Ps(x,y),C1(x,y),C2(x,y),Pe(x,y)) 內插所計算出的 Cubic Spline 三次方程曲線,其中 Ps(x,y)、Pe(x,y)表示線段的起點與終點,

C1(x,y)、C2(x,y)則是隨機產生的兩個控制點,如圖 3-19 所示。

圖 3-19:亂度函數圖

PRJ(x,y) = PR(x,y) +J(x,y) ,圖 3-20 為大範圍誤差筆觸圖。

圖 3-20:大範圍誤差筆觸圖 (4). 筆觸的長度:Stroke( I , W , Pr , L )

L (Length):長度,用來表示筆觸的長短

圖 3-21:相異長度筆觸圖

所以完整的筆觸模型由 Stroke( I , W , Pr , Pd , J , R , L )所組成,圖 3-22 為完整筆觸模型所模擬的筆觸範例呈現。

3.6 繪圖

在上一節中,我們說明了每一線段筆觸的模擬方式,在這一節中,

我們將應用上面所提的方法去繪製整個區塊的素描筆跡。在此必須考量 的因素包含繪製的方式、線段與線段之間的間隔大小以及線段的角度。

以下我們分別針對這幾點加以說明。

(1). 繪製的方式:

在此我們使用了兩種繪製的方式,分別是連續的細線(Hatching) 以及交叉連續的細線(Cross-Hatching),圖 3-23 為模擬連續線段的 筆觸圖。

Hatching Cross-Hatching 圖 3-23:連續線段筆觸圖

(2). 線段與線段之間的間隔大小:

隨著線段與線段之間的間隔大小不同,整體的視覺效果也將會 有所差異。一般我們是將區塊面積較大的區域,間隔設定較大,反 之則較小;顏色較淺的區域,間隔設定較大,反之則較小,圖3-24 為不同的間隔大小所產生的各種筆觸圖。

圖 3-24:不同間隔大小的連續線段筆觸圖

(3). 線段的長度:

線段長度變化對視覺效應所造成的影響甚鉅,圖3-25 為三種 不同長度所產生的各種筆觸圖,一般我們是將區塊面積較大的區域 設定較長的筆觸,而影像中相對較細膩的部分則使用較短的筆觸。

圖 3-25:不同長度的連續線段筆觸圖

(4). 線段的角度:

決定線段在區塊中的角度,如果是從區塊中的每一個像素去計 算,這將會是一件相當繁瑣的工作,所以在此我們使用了更簡單的 方法,先找出包圍此區塊的最小矩形,然後計算此矩形對角線與底 邊的夾角,此夾角當作是線段在此區塊中的角度,如圖3-26 所示。

雖然這個方法相當的容易,但產生的效果卻也令人滿意。

圖 3-26:線段的角度圖

相關文件