國 立 交 通 大 學
多媒體工程研究所
碩 士 論 文
繪圖筆觸控制因素之研究
Study on the Control of Drawing Strokes
研 究 生:李方碩
指導教授:林正中 博士
繪圖筆觸控制因素之研究
Study on the Control of Drawing Strokes
研 究 生:李方碩 Student:Fang-Shuoh Lee
指導教授:林正中 Advisor:Cheng-Chung Lin
國 立 交 通 大 學
多 媒 體 工 程 研 究 所
碩 士 論 文
A ThesisSubmitted to Institute of Multimedia Engineering College of Computer Science
National Chiao Tung University in partial Fulfillment of the Requirements
for the Degree of Master
in
Computer Science June 2007
Hsinchu, Taiwan, Republic of China
繪圖筆觸控制因素之研究
學生:李方碩 指導教授:林正中 副教授 國立交通大學多媒體工程研究所碩士班摘要
本篇論文探討在“方向性模糊”筆觸處理架構下,三項控制因素對繪圖筆觸之影響; 分別是筆觸長短變化,向量場產生方式之變化及雜訊圖型態之變化。 經過一系列系統化之實驗觀察,透過三種控制之參數設定組合,灰階影像可產生類 似鉛筆素描、炭筆畫或墨筆之效果;彩色影像則可產生類似油畫、粉彩或是彩色鉛筆之 效果。 據此,本篇論文亦實作一套模組化之處理程序,使用者只需輸入影像及一個指定繪 圖呈現效果之參數,即可得到對應之繪圖結果。模組化的架構亦使新的筆觸處理構想能 很簡捷地加以測試觀察與驗證。Study on the Control of Drawing Strokes
Student:Fang Shuoh Lee Advisor:Cheng-Chung Lin Institute of Multimedia Engineering
National Chiao Tung University
ABSRACT
In this thesis, how the visual sensation of drawing strokes may vary with three control factors under the framework of line integral convolution (LIC) processing is studied. The three control factors include: (1) variation in stroke length, (2) variation in the generation of vector field, and (3) variation in the generation of noise map.
Through a series of experiments where systematic observations are made, it is observed that with proper combination of the three control factors, the sensation of pencil or charcoal sketching can be achieved for gray-level images and that of color-pencil/pastel sketching or oil-painting can be achieved for colored image.
A modulized framework, where the three control mechanisms are embedded, has been realized, by which new conception of control over the drawing strokes can be easily
implemented and tested. All the user has to do is to offer an input image and a parameter designating the kind of output sensation he wants.
目錄
摘要...I ABSRACT... II 目錄... III 圖片目錄...IV 第一章 簡介... 1 第二章 相關研究 ... 2 第三章 處理方法 ... 4 3.1系統架構... 4 3.2產生筆觸效果... 5 3.3筆觸型態產生... 9 3.4筆觸方向之決定... 11 3.5輪廓維護與加強... 16 3.6彩色影像之處理... 19 3.7即時影像... 20 第四章 實驗結果 ... 22 4.1效能... 22 4.2效果比較... 22 4.3結果圖... 30 4.4限制... 39 第五章 結論... 40 參考文獻... 41圖片目錄
圖 3-1-1 系統流程圖... 5 圖 3-2-1 經過DDA處理產生筆觸效果。左上圖為原圖加上雜訊,左下圖為原圖經過梯度計算出來的向量, 右圖為雜訊圖根據向量圖經過DDA處理後的結果。 ... 6 圖 3-2-2 從(X, Y)畫出正反向的DDA直線。 ... 7 圖 3-2-3 從(X, Y)往正反向計算出的LIC曲線。 ... 7 圖 3-2-4 用LIC(左邊)和DDA(右邊)產生繪圖筆觸 ... 9 圖 3-2-5 以改良式的DDA產生墨筆效果。左邊為原圖,右邊為產生的結果。... 9 圖 3-3-1 將原圖加上[-0.5,0.5]之間的雜訊。原圖(左),雜訊圖(右)... 11 圖 3-3-2 用我們提出的方法產生的雜訊圖。WHITE NOISE(左),低對比雜訊(右) ... 11 圖 3-4-1 使用梯度作為筆觸方向的範例。左邊為原圖,前景的數字 10 使用輻射狀的漸層,背景使用線性 的漸層。右圖是產生的筆觸圖。... 13 圖 3-4-2 由平滑梯度圖產生的方向向量圖。右圖為原圖,左圖為方向向量圖。... 14 圖 3-4-3 利用圖 3-4-2 的左圖亮度值轉換為量化過的角度方向... 15 圖 3-4-4 兩種筆觸方向的比較。左邊為原圖,中間是使用平滑的梯度決定筆觸方向,右邊是由亮度角度圖 決定筆觸方向。 ... 16 圖 3-5-1 利用梯度方向作LIC產生不破壞邊界的模糊效果。左圖為加上雜訊的原圖,右圖為左圖經過梯度 方向的LIC處理後的結果。 ... 17 圖 3-5-2 改良DDA破壞邊界的問題。左圖為一張卡通圖片的部分經過傳統DDA的結果,右圖為避免輪廓 破壞的結果。眼睛和嘴巴的部份有很大的改進。... 18 圖 3-5-3 輪廓加強。左圖為單純的筆觸圖,中間為DOG計算出的輪廓圖,右圖為筆觸圖乘上輪廓圖的結果。 ... 18 圖 3-6-1 繪圖筆觸結果與原圖合成。左上為原圖,右上為原圖使用改良式方法產生的繪圖筆觸結果,下圖 是上面兩張圖經過合成以後的結果。... 20 圖 4-2-1 筆觸長度的影響。這四張圖都是使用CONTRAST=0.3 的雜訊圖,並以平滑梯度圖決定筆觸方向。筆 觸長度分別為 3 個像素(左上)、7 個像素(右上)、15 個像素(左下)、41 個像素(右下)。... 24 圖 4-2-2 雜訊對比程度對於筆觸的影響。這四張圖都是使用 9 個像素的筆觸長度,並以亮度角度圖決定筆 觸方向。左上用的是黑白WHITE NOISE,而右上、左下、右下分別用的是CONTRAST為 1、0.5、0.25 的 雜訊。 ... 25圖 4-2-3 三種梯度計算方法產生筆觸的比較。這三張圖都是使用 9 個像素的筆觸長度,CONTRAST=0.3 的雜 訊圖,並以平滑梯度圖決定筆觸方向。左上為SOBEL計算,右上為SOBEL計算輔以GAUSSIAN BLUR做 模糊處理,左下為本篇論文提出的方法,R設為 8。 ... 26
圖 4-2-4 亮度角度圖量化結果比較。左上為沒有經過量化的結果,右上、左下、右下分別為 9 層、5 層、 2 層量化的結果。 ... 27 圖 4-2-5 產生不同粗細的筆觸效果。左上角是原始的方法的結果。右邊的是把雜訊圖模糊後的產生的結
果。下面這張則是用比較低解析度的圖來做計算,套用原大小的輪廓圖。 ... 28
圖 4-2-6 三種輪廓圖的比較。右上角是SURROUND ON / CENTER OFF的方法,左下是DOG的方法,右下方是 用[10] 所提出用梯度計算的輪廓。 ... 30 圖 4-3-1 炭筆素描繪圖效果。... 31 圖 4-3-2 粉彩畫效果。... 32 圖 4-3-3 黑白短筆觸效果。... 33 圖 4-3-4 僅對亮度部份做短筆觸效果。 ... 34 圖 4-3-5 另一種彩色短筆觸效果。拿原圖和結果圖依照 3.6 節的合成方法合成。... 35 圖 4-3-6 鉛筆素描效果。... 36 圖 4-3-7 與圖 4-3-1 相對的鉛筆素描效果。 ... 37 圖 4-3-8 鉛筆素描效果加上色彩。 ... 38 圖 4-3-9 將即時影像作為輸入。左圖為粉彩效果,右圖為鉛筆素描效果。... 39
第一章 簡介
隨著電腦硬體的不斷提升,擬真顯像(photorealistic rendering,PR)的技術讓電腦 可以製作出人眼幾乎已經無法分辨是否真實的影像。然而在電腦的領域不斷的追求真實 的時候,藝術家們的創作則是跳脫了寫實的迷思,利用各種媒材創作不同的繪圖風格。 但是並非所有的人都是畫家或藝術家,即使擁有欣賞畫作的眼光,卻不是每一人都可以 有能力創作出自己的畫作。因為上面所講的原因,當我們需要使用電腦來產生有藝術風 格的影像時,需要的是與 PR 相對的非擬真顯像(non-photorealistic rendering,NPR)技 術。藉由 NPR 的各種技術,我們可以讓沒有繪畫或創作技術的人,也可以透過程式來 產生具有各種不同藝術感的影像。 本論文的研究重心在於尋求足以決定筆觸特質(方向、長短、質感)之控制參數, 並觀察參數變化所引起的相關結果;並為此實作一套流程,可以將輸入的圖片自動產生 數種具有繪圖筆觸效果的畫作。我們提出了可以產生更多樣性的筆觸方向以及筆觸種類 的方法,而且這些筆觸與輸入圖片的內容相關,因此產生的繪圖結果不致於會有單調或 是機械式的感覺。這套方法除了選擇不同的參數及計算方法外,不需要輸入任何其他諸 如 3D 的幾何資訊或是手動調整的資料,因此無論是影像或是影片資料,甚至是 3D 圖 學的結果都可以使用這套方法來產生繪圖筆觸。我們研究了這套流程每個步驟可以替換 的各種演算法,發現了同樣的流程可以產生出相當多樣性的筆觸以及筆觸方向,並且與 某些繪畫方式所產生的風格相似。並且經過實驗後確定所產生的結果在各式圖片中都能 夠有不錯的效果,並且不會破壞原圖的感覺。我們也嘗試的將這套流程簡化後寫成著色 語言(shading language)放到顯示卡計算來對即時影像做處理。 由於我們為這套系統做了許多的試驗,比較不同參數以及不同計算方法所產生的結 果,因此我們會在第四章詳細說明經過實驗比較後,這套流程的各個步驟在什麼樣的情 形或是需要什麼樣的效果時,要使用哪一種計算方法來產生繪圖效果。第二章 相關研究
在最近關於產生繪畫風格的 NPR 技術已經有相當多樣化的成果,其中研究成果較 為顯著的就是油畫和水彩等模擬的研究[13],然而相對於人類畫出來的筆觸,這些研究 所產生的效果比較像是顏料的堆疊與覆蓋,而較難看出有筆觸方向性之表現。相對於 此,墨筆畫(pen-and-ink)[2][3]以及鉛筆素描(pencil sketch)[4][5][6][7][8][9][10]方面 的研究就需要更多的筆觸方向的表現,但是絕大多數都需要額外的手動輸入或是 3D 幾 何資料,少有能夠像人類一樣自行判斷筆觸方向的方法。在參考文獻[1]裡面,提出了 LIC (line integral convolution)和 DDA (digital differential analyzer convolution)兩種線積分卷積法將各種資料的二維或三維向量場視覺 化,讓肉眼可以立刻辨別該向量場的特性。例如空氣流動、水流或是磁力、重力場等其 他需要判別方向的向量場圖形。LIC 的演算法能夠對 2D 或是 3D 的資料作方向性模糊, 因此同樣也可以應用在 2D 的影像上面。這篇研究也有把這套方法實作在照片的處理上 面,可以產生某種類似梵谷油畫的風格。 後續有其他研究利用 LIC 的特性模擬鉛筆素描的筆觸[4][5][6][7][8][9],也是利用上 面所介紹的方法,只是將 LIC 處理的對象以輸入影像的相關雜訊圖代替,以產生類似鉛 筆筆觸的感覺。後來又有研究以特徵做區塊切割或是以亮度值曲線分層等方式將原圖切 割為若干區域,各區域的筆觸方向以隨機或是區塊幾何特性參考來決定。這些方法雖然 都能產生類似鉛筆素描的感覺,但是所產生的筆觸仍然是很單調或是呆板,除非以手動 介入,不然很難產生讓人信服的自然筆觸。 另外當我們在繪畫的時候,有些地方會特別加強讓它突顯,有些部份則會故意讓它 模糊。這種關鍵的地方有大部分的情況是在輪廓的部份會被特別強調,這種情況就比較 適合我們用程式來模擬。由於使用方向性模糊所產生的筆觸很容易破壞畫面原本的細 節,因此輪廓加強在許多研究都用來補足筆觸所破壞的部份。產生輪廓線搭配筆觸的方
法有很多種方法:在文獻[6][10]有提出利用導數或梯度偵測與繪製輪廓的方法。另外文 獻[11]則提出用 difference of Gaussian (DoG)產生輪廓線的方法。文獻[8][9]則使用 Surround On/Center Off 的方法。
接下來我們在下一章介紹我們所使用的筆觸產生的方法,透過三種主要的參數來產 生迥異的效果。在第四章會介紹我們實驗出來各種繪圖筆觸效果的成果,以及各種方法 的比較結果。最後第五章把整個系統與實驗的經驗做一個結論。
第三章 處理方法
我們希望能夠產生的繪圖效果是可以讓使用者能夠看出明顯的筆觸方向,但是又不 會因為不當筆觸而影響整張畫的感覺。因此我們改進並簡化了文獻[4]以及其他相關研究 [5][6][8][9]所提出的自動化鉛筆繪畫的產生法,並且試驗了每個步驟調整的各種可能, 而產生了一套效果相當穩定的自動產生筆觸的方法。3.1 系統架構
本系統的主要流程如圖 3-1-1所示,首先我們將彩色影像轉為YUV三層,並且只針 對Y頻道處理筆觸,最後再將新產生的Y'和UV兩層合起來成為新的圖。筆觸的產生經 過四個主要的步驟:(1)決定筆觸方向,(2)計算筆觸型態,(3)利用方向性模糊計算 繪圖筆觸圖,(4)將筆觸圖和輪廓圖合成。在某些時候會用到別的方法產生不同的色彩 效果,在 3.6 節會再深入介紹。 我們的架構中拿掉了先前許多研究所採用的區塊分割的方式,這是因為雖然加上了 區塊分割可以讓畫面更為清楚,可是同樣的也有可能因為分割失誤而造成了不良的影 響。因此我們直接把整張圖一起考慮,並且完全採用原圖的彩度與亮度,而不做多餘的 調整,不在這部分使用自動化,確保使用者可以預測最後產生的結果。另外我們也沒有 在計算出來的結果加上紙張效果,主要原是因為我們產生的繪圖效果即使沒有加上紙張 效果也具有繪畫感。其次如果使用者需要最後的輸出有比較明顯的紙張效果,也可以自 由套用其他研究所使用的方法,並不影響產生繪圖效果的主要步驟。 以下的幾節依序會先介紹如何產生筆觸的效果,再來介紹產生筆觸效果所需要的筆 觸方向與筆觸型態,最後介紹輪廓圖以及合成圖層的部份。圖3-1-1 系統流程圖
3.2 產生筆觸效果
我們用來產生筆觸效果的方法與第二章提到利用 LIC 產生鉛筆筆觸的方法架構大 致上都是相同的,同樣是將一張雜訊圖經過方向性模糊處理後產生筆觸的效果,如圖 3-2-1 所示。我們把這樣的流程經過諸多實驗後,發現其中還有許多可以改進的部份, 而且可以產生更多種的繪圖效果。 方向性模糊的方法我們選用DDA和LIC兩種方法。這兩種方法的原理大致相同,輸 入為同樣大小的雜訊圖、向量圖(vector field)以及處理的長度L。每一個像素點依照該 位置的向量方向從正向和反向方向算出一條長度為 2L+1 的線,將雜訊圖中同樣在這條 線上的像素的亮度值乘上權重後求出平均值,就是這個像素的輸出值。可以讓越接近中 心的像素權重越大,或是線上各像素都用相同的權重。兩個方法不同的地方在於DDA 只用目前像素位置上的向量所計算出來的DDA直線做計算(圖 3-2-2),而LIC則是讓這 條線跟著所經過位置的向量方向轉向來產生一條曲線做計算(圖 3-2-3)。向量圖會決定筆觸的方向,可以藉由計算原影像各點的梯度向量求得;雜訊圖會影 響筆觸的型態,可以使用原圖所導出的相關雜訊分佈圖(圖 3-2-1)。這些部分在後面的 幾節會有詳盡的介紹。 雜訊圖(筆觸型態決定因素) 向量圖(筆觸方向決定因素) 筆觸圖(DDA) LIC 或 DDA 方向性模糊處理 (筆觸長度決定因素) 圖3-2-1 經過 DDA 處理產生筆觸效果。左上圖為原圖加上雜訊,左下圖為原圖經過 梯度計算出來的向量,右圖為雜訊圖根據向量圖經過 DDA 處理後的結果。
圖3-2-2 從(x, y)畫出正反向的 DDA 直線。
在最早將 LIC 的方法應用在 2D 影像上面產生類似筆觸的文獻中[1],是以 LIC 去改 進了 DDA 的方法會在轉方向時產生稜線的缺點。然而後來使用 LIC 來做鉛筆筆觸的方 法[4][5][6][8][9],用了分層或切割等方式切割不同的區塊,並且讓每一區塊的筆觸幾乎 是直線且相同方向的,幾乎都沒有保留原本 LIC 會產生迴旋的特性。 雖然LIC產生的結果圖比較清晰,而且在每個點的位置都可以看出明確的向量方 向,對於將資料視覺化的用途來說比較適當,但是我們實驗的結果發現並不一定適合使 用在產生繪圖效果上面。我們重新實驗了使用DDA的方法去替換LIC的結果,發現當處 理的線段長度到達一定的長度後(例如 13 個像素,也就是正、負方向各 6 個像素),我 們所產生的筆觸效果非常類似炭筆素描所產生的結果。如圖 3-2-4顯示使用相同的筆觸 方向以及處理長度時,LIC的特性會讓畫面看起來有許多瑣碎的紋路,而DDA反而可以 表現出筆觸大致的走向而不會雜亂。因此雖然我們所使用的架構與LIC產生繪圖筆觸的 架構非常類似,然而我們只把LIC的方法當做一個選項,以DDA為主要產生筆觸的方法。 在之前的研究中曾經提出過一種改良式 LIC 的方法[8][9],也就是說只針對某個亮 度範 ,又因為我們是每個像素去計算 的, 長 度, 圍的雜訊,計算該像素對於取樣線的其他像素有多少影響,一條一條畫出被模糊的 雜訊。這種方法原本只利用在輪廓上面,我們也把這個方法加入 DDA 的計算,用來產 生另外一種繪圖效果。搭配黑白兩色的雜訊圖,使用這種改良式方向性模糊針對黑色雜 訊點作處理,就會產生如圖 3-2-5 的墨筆畫效果。 在一些情況下,某些部分的筆觸方向會彼此平行 這樣會造成筆觸看起來是一條一條的直線。我們建議這時候要在取樣所使用的線作 某種的擾動,例如隨機取樣周圍的其他像素,才能夠讓產生的繪圖效果更加自然。 以上介紹的筆觸效果產生的方法有三個主要的控制參數,第一個是 DDA 取樣的 第二個是筆觸的方向,第三個是筆觸的種類,更清楚地說就是被模糊的影像。經過 多種實驗後發現,筆觸的長度可以分為長或短兩類,這部份的比較會在第四章詳細介 紹。下面的兩節中我們會介紹筆觸方向及筆觸種類的一些計算方法。
圖3-2-4 用 LIC(左邊)和 DDA(右邊)產生繪圖筆觸
圖3-2-5 以改良式的 DDA 產生墨筆效果。左邊為原圖,右邊為產生的結果。
3.3 筆觸型態產生
這邊所謂筆觸型態控制因素,在實作上指的就是雜訊圖的控制。在先前的相關研究 中,繪圖筆觸是利用原圖產生黑白兩色的 white noise 雜訊圖再經過 LIC 處裡來產生的
[4][5][6][8][9]。然而因為只輸出黑與白兩種亮度的雜訊點,因此這種雜訊圖產生的筆觸, 常常會因為對比太過強烈,而讓一些細節或是平滑的區塊被破壞掉了,這種情形在圖片 中有人物臉部的時候影響特別大。 要改善此種情況有一個最簡單的方法,經過我們實驗後發現,LIC 或是 DDA 針對 灰階 white noise 雜訊圖所產生的筆觸效果更加自然。因此我們可以直接將值介於某個範 圍(例如[-1, +1])的雜訊圖加在原圖上,以其替換原本使用的黑白 white noise 雜訊圖, 同樣可以產生類似的筆觸效果。而且只要控制雜訊值的範圍,就可以控制產生筆觸的對 比度。然而這樣所產生的雜訊圖在一大片明亮或是黑暗的地方,會產生過多的雜訊,造 成黑色的地方不黑,白色的部份不白,與我們繪畫的習慣並不相同。就像圖 3-3-1 的右 圖一樣,在黑與白的部份產生過多的雜訊,破壞了原圖整體的灰階亮度。 針對前述需求,原圖中亮度較低或較高的區域雜訊產生的機率應該要比較低,而亮 度值越接近 0.5 的時候雜訊產生的機率越高。我們根據以上原則設計出一種符合原圖的 灰階亮度,可以調整雜訊對比程度,也能夠產生黑白 white noise 的雜訊圖演算法。把原 圖的亮度值 I(I ∈ [0, 1])轉為我們所要的雜訊圖 I”的方法如下: . " addSource I N I = ⋅ + ⎩ ⎨ ⎧ ⋅ = v P contrast N . ), ' ( otherwise Q I if < ⎩ ⎨ I' . otherwise ⎧ − = I I 1 2 if(addSource=1), 以上 P 和 Q 都是隨機的亂數,P 的範圍是[-1, 1] Q [0, 1] addSource v 的值是 0 1 contrast 0 Q |I’| < |Q|就表示該像素有雜訊 P 是用來產生雜訊的數值 , 的範圍是 。輸入的參數 、 或 , 為大於等於 的值。亂數 用來計算雜訊出現的 機率,如果 。 ,利用 contrast 控制 雜訊亮度值的範圍 之間。 要產生可以自行控制對比程度的雜訊時,就設 設為大於 的值,值越小雜訊的影響越小(圖 右)。當設 的時候,會 先將原圖 轉換為 之間的 。 接近 的時候, 的機率會較高而 [-contrast, contrast] addSource = 1,v = 0,然後contrast 0 3-3-2 addSource = 1
產生較多的雜訊;相反的在I接近黑色或白色的時候,雜訊出現的機率就比較低。如果 要使用黑白white noise的時候,就將contrast和addSource都設為 0,v設為 1(圖 3-3-2左)。 由於雜訊圖影響所產生的筆觸型態,因此對雜訊圖做處理後,所產生的筆觸也不一 樣。例如我們可以將這張雜訊圖做一般的模糊處理(例如高斯模糊)後,讓畫出來的筆 觸比本來更模糊、更大一點。 圖3-3-1 將原圖加上[-0.5, 0.5]之間的雜訊。原圖(左),雜訊圖(右) 圖 -3-2 用我們提出的方法產生的雜訊圖。white noise(左),低對比雜訊(右)
3.
先前使用 產生筆觸效果的研究當中,都是使用一張向量圖作為筆觸方向的依 34 筆觸方向之決定
LIC據。不過每一篇所使用的向量圖的產生方式以及結果不盡相同,有些使用的是區塊幾何 以及貼圖特徵[6],也有些使用的是自訂的方向配合內容走向做調整[4][5],有一部份則 是單 的方法雖然看起來並不自然,但是反而能夠在大多數的情況下得到讓人 滿意 原圖經 過調 不僅 是完全區隔開來,而且即使是沒有連接的部份也都可以表現出相同的筆觸方向。 純使用自訂的方向或隨機決定[6][8][9]。 我們研究後發現到這些自動化方法所使用的方向不論是單一或是兩種方向,或是參 考區塊特性或隨機的方向,都有不小的機會出現不太適合的情況。其中反而是直接給予 單純的向量方向 的結果。 在這邊我們會提出兩種處理方式,用來產生較為自然的筆觸方向。第一種是 整過後的梯度圖,第二種是原圖的彩度或是亮度值所對應的方向角度圖。 第一種方法就是把原圖每個像素在 x 和 y 方向上的梯度,當作計算各像素筆觸方向 斜率的依據。之所以使用梯度直接當作筆觸方向,有一個簡單的理由:在畫面中位於後 方的物體(例如背景),常常會因為前景物體的遮擋而分割成數個區塊。雖然這些區塊 彼此沒有相互連接,但是因為是相同的材質並且受到相同的光源照射,所以不會受到前 景物體的遮擋而影響到它們在畫面上呈現的梯度變化。因此使用梯度當作筆觸方向的 話,可以避免同一個物體因為被遮擋而產生差異過大的筆觸方向。例如圖 3-4-1 前景和 背景分別用不同方向的漸層,利用梯度方向產生筆觸之後,前景與背景的筆觸方向
圖3-4-1 使用梯度作為筆觸方向的範例。左邊為原圖,前景的數字 10 使用輻射狀的 漸層,背景使用線性的漸層。右圖是產生的筆觸圖。 關於影像的梯度計算,最常見的就是利用核心為 3×3 的 Sobel 演算法來產生。然而 如果是一般的照片或網路下載的圖片使用 Sobel 演算法,由於影像品質的關係,梯度變 化會過於劇烈,在產生筆觸效果時會導致筆觸過於雜亂。解決的方法可以將梯度圖做模 糊處理,但是這樣子產生的筆觸會過於圓滑反而效果不自然,而且又多了一項計算。為 了改善以上的情形,最簡單的方法是把 Sobel 所使用的核心放大。然而隨著核心增大, 計算 ⎥ ⎥ ⎥ ⎦ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣− − − 1 2 M r 量也會倍增,對於大型圖片的處理會花費太多時間。我們在這邊提出一個新的梯度 計算方法,讓原本二維的核心計算,改成兩次一維的計算。我們把 Sobel 計算中的兩個 運算子(operator)置換成
[
]
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ = − − − = 0 2 1 1 2 0 2 1 M L L r My r r Mx 。 ⎥ ⎥ ⎥其中 r 代表梯度計算所涉及的範圍,值越大所產生的梯度圖越平滑。把這兩個運算 子對每個像素作一次運算,就可以產生對 x 方向和 y 方向都較為平滑的梯度圖,比較適 合我們的應用,而且速度上也比較不會因為大的核心而變慢很多。雖然這種梯度計算在 非垂直與水平方向上並沒有做到處理,但是經過實驗確定不會影響到我們產生的結果。 利用這種方法產生的筆觸方向較為圓滑,但是仍然能保有邊緣梯度變化較大的特性,因 此在繪製筆觸時邊界和非邊界的部分可以分的很清楚。使用梯度轉為方向的時候要注 意,當梯度為 0 的時候,是沒有辦法計算出方向的。因此要設定一個忍受值(threshold), 當梯度小於此值的時候則使用指定的方向。圖 3-4-2 即為使用以上介紹的梯度計算所產 生的向量方向圖。 圖3-4-2 由平滑梯度圖產生的方向向量圖。右圖為原圖,左圖為方向向量圖。 以上產生的筆觸方向雖然比起過去的方式要來的自然,然而卻沒有辦法產生適合鉛 筆素描的筆觸方向。這是因為我們一般看到的鉛筆素描,都會以一個區塊一個區塊的平 行筆觸作畫,而不會繞著物體的方向轉。因此之前這方面的研究[4][5][6][8][9]才會以各 種切割區塊的方式來讓每個區塊能夠有固定方向的筆觸。 我們希望找到一種方向參考圖,不需要做任何影像區塊分割的處理,從原圖的畫面 就可以找到資訊來決定筆觸方向(就像梯度圖一樣),而且不用手動或是隨機的方式給
予方向,特別是希望鄰近相關部份的筆觸方向能夠相似,以保持畫面的連續性。我們設 計出了兩種產生筆觸方向的方法:第一種是利用色調(hue)對應到 0° ~ 180°之間的角 值傳入筆觸產生的函數;第二種則是將原圖的亮度值對應到 0° ~ 180°之間的角度值, 並且讓方向性模糊的函式改傳入這個角度值作為筆觸方向。 我們這邊建議使用亮度值轉換的角度圖(亮度角度圖),此種方法不但非常簡單, 而且產生的筆觸在對比強的地方可以看到筆觸方向有明顯的不同,對比弱的地方筆觸方 向又會有連續性,而且即使是黑白的圖片也可以產生筆觸方向。在產生亮度角度圖之前 建議先將原圖稍做模糊,以免原圖的雜訊引發過多的筆觸方向;另外也建議把角度圖經 過量化(quantization)處理,讓各方向筆觸之間的轉換不要太過圓滑。量化之後產生的 效果會類似人類作畫時,將不同部分作區塊性處理的作法。圖 3-4-3 為亮度角度圖所決 定的筆觸方向。圖 3-4-4 顯示利用平滑梯度圖和亮度角度圖產生決定的筆觸方向所產生 度 的不同筆觸效果。 圖3-4-3 利用圖 3-4-2的左圖亮度值轉換為量化過的角度方向
圖 兩種筆觸方向的比較。左邊為原圖,中間是使用平滑的梯度決定筆觸方向, 右邊是由亮度角度圖決定筆觸方向。 從 模擬鉛筆素描的研究發現,如果只是產生筆觸效果而不對輪廓做特別的處 ,某些細節和特徵就看不清楚了。然而實際上 在我們的實驗下,如果使用的是梯度去當作輸入的向量圖,並且使用 處理後,在邊 界的地方會因為方向是沿著邊界線走,而形成一種不會破壞邊界的模糊方法。所形成的 效果類似 (如 )。 當我們使用 來計算的時候,雖然也有類似的效果,然而因為我們有些時候需 要較長的線段來達到我們所要的效果,這時候對於邊界的破壞是比較嚴重的,因此我們 必須要針對輪廓做某種程度的加強才能夠維持畫面的清晰。這邊我們分成兩方面來著 手,首先是防止方向性模糊對於邊界的破壞,其次是加上輪廓線的繪製。 要如何避免 破壞邊界?我們就讓每一個像素在繪製的時候多一個條件判斷,如 果取樣的直線進入的像素與原像素的梯度或是角度變化量達到一定的程度,我們就知道 3-4-4
3.5 輪廓維護與加強
LIC 理,所產生的圖常常不夠鮮明而顯得模糊 LIC bilateral filter[11]的效應,可以保留邊界,而讓非邊界的部份做模糊的處理 圖 3-5-1 DDA DDA 這條取樣線很可能經過了輪廓或是區塊交界的部份,這個時候我們就讓這個方向的取樣到此結束。這個方法能夠避免對比分明的部份會在邊界部分產生不正確的結果(圖 3-5-2)。
第二方面是利用描繪輪廓線來提高畫面的精緻程度。要描繪輪廓就要涉及到兩個部 份:輪廓偵測和輪廓繪製。輪廓偵測及繪製有非常多種方式,我們挑出幾個主要的類別 來實驗,difference of Gaussian(DoG)[11]、surround on/ center off [8][9]以及梯度計算 [6][10]三大類。這些方法都可以找出輪廓線,但是效果以及效率都不同,在第四章會比 較這些方法的不同特性。 我們不會直接將描繪輪廓直接加到筆觸圖上面,因為這樣輪廓線將太過於明顯,在 許多繪圖效果上面並不是很適用。因此我們會先將輪廓圖層的亮度值限制在較高的範圍 觸圖乘上 深輪廓部份(圖 ),以這種方式控制輪廓線明顯與 否。若是以計算式的方式表達就是 。
其中 Idrawing是輸出的繪圖筆觸圖,Istroke代表筆觸圖,Iedge表示輪廓圖,brightness 為 0
到 1 之間的小數,越高則輪廓越不明顯。 內,再把筆 輪廓圖來加 3-5-3 ) 1 , , (I brightness Clamp I
Idrawing = stroke× edge
圖3-5-1 利用梯度方向作 LIC 產生不破壞邊界的模糊效果。左圖為加上雜訊的原 圖,右圖為左圖經過梯度方向的 LIC 處理後的結果。
圖3-5-2 改良 DDA 破壞邊界的問題。左圖為一張卡通圖片的部分經過傳統 DDA 的 結果,右圖為避免輪廓破壞的結果。眼睛和嘴巴的部份有很大的改進。
圖3-5-3 輪廓加強。左圖為單純的筆觸圖,中間為 DoG 計算出的輪廓圖,右圖為筆 觸圖乘上輪廓圖的結果。
3.6 彩色影像之處理
繪圖筆觸處理是根據輸入圖像的灰階值計算的,如果輸入為彩色圖片,就先將輸入 的彩色圖片轉成 YUV 的色彩空間內,並針對 Y 頻道來產生繪圖筆觸 Y’。最後再將所產 生的 Y’和原本的 UV 頻道合成彩色繪圖輸出。 在某些情況下,加上繪圖筆觸會讓整張影像看起來比原圖暗。而且如果我們使用從 各黑色雜訊點畫出去的改良式方向性模糊,由於所畫的筆觸很難控制而常常導致亮度較 暗的區域變成一團黑色的筆觸。不過我們只要將產生的圖再做一次的處理就可以讓畫面 更好看,而且又能夠產生另外一種效果。 ) 1 ( ) 1 ( 1 ' Isource Idrawing I = − − ⋅ − 以上式子代表原圖 Isource和 3.2 節提到的改良式方向性模糊產生的繪圖筆觸圖 Idrawing 合成為 I’。產生的結果會在筆觸最深的地方變成原圖的色調,而筆觸越淡就會比原圖的 更亮一點,到沒有筆觸的部份就變成白色(如圖 3-7-1)。可以利用這種合成方法將原本 產生的墨筆畫變成類似彩色鉛筆畫出來的圖。以上介紹的合成方法在商業軟體 Photoshop 的操作介面稱為 screen。圖3-6-1 繪圖筆觸結果與原圖合成。左上為原圖,右上為原圖使用改良式方法產生 的繪圖筆觸結果,下圖是上面兩張圖經過合成以後的結果。
3.7 即時影像
為了能夠將這套系統運用在更多地方,我們嘗試將這套產生繪圖筆觸的方法應用在 影像捕捉裝置或是影片資料上面。為了能夠得到更佳的運算效率,因此我們把許多的模 組簡化,並且把整個程式寫成著色器語言(shading language),讓計算的部分給顯示卡 來負責。 我們在即時影像的處理上面仍然是上面所提的四個步驟:方向、雜訊、筆觸和輪廓,只是省略了幾個處理細節的步驟。例如筆觸的部分僅使用單純 DDA 的演算法,輪廓則 調整文獻[10]所提出的的方法來產生,以較快速的演算法來產生繪圖效果。 實作上面我們僅輸入原圖和一張與原圖等大的亂數圖。亂數圖每個像素的值都介於 0 和 1 之間,用來做每一個像素計算雜訊時所使用的亂數。著色器(shader)會對每一 個像素作計算,首先利用這個像素的梯度或是亮度求出一個方向,然後依照計算出來的 方向對這個像素作 DDA 的計算,其中 DDA 計算到的各像素都要用該位置上的亂數和 原圖的值去計算出加上雜訊的值,最後再將前面計算的結果乘上原圖用梯度計算出來的 輪廓線就能輸出具有繪圖筆觸的影像了。 如果每一個影格都輸入同樣的一張亂數圖,那麼所產生的筆觸就會具有連貫性,畫 面比較穩定。相反的如果想要每一個影格都差距大一點,每一個影格就要輸入不同的亂 數圖才行。如果顯示卡的硬體支援亂數產生的函式,就可以不需要另外輸入亂數圖。 這套方法會因為 DDA 所使用的筆觸長度而影響花費的時間,因此建議在可以產生 效果的前提下盡量使用短的筆觸。由於我們每一個畫面只需要輸入原圖就可以了,因此 用在圖片、影片、拍攝影像(如 web-cam、DV)甚至是 3D 圖學程式所產生的畫面都不 會有問題。
第四章 實驗結果
4.1 效能
我們利用以上介紹的方法實做了兩個程式,並且利用固定的函數配上不同的筆觸控 製輸入,做出各種繪圖效果。
第一個是以 C++實作,以 CPU 計算圖片、照片等單格的影像檔案的程式。第二套 則是以 OGSL(OpenGL Shading Language)或是 HLSL(High Level Shading Language) 實作成可以用影像裝置或是影片檔案當作輸入,經由顯示卡著色器(shader)計算的程 式。
我們在 Pentium 4 2.8GHz, 512MB RAM 搭配 NVIDIA GeForce 6200 的電腦上測試這 兩個版本,並以筆觸長度 5 和 13 個像素來做計算速度的測試。當使用 CPU 版本時,輸 入 1024×768 的影像,筆觸長度 5 個像素的平均花費時間約 2.8 秒以下,筆觸長度 13 個 像素的約 4 秒以下。輸入 640×480 的影像,5 像素的筆觸花約 1 秒的時間完成,13 個像 素的筆觸可以在 1.7 秒以下完成。輸入 320×240 的影像,5 像素筆觸在 0.25 秒以內完成, 13 像素在 0.4 秒以內完成。
而以 GPU (graphical processing unit)版本測試時,以影像大小為 320x240 的網路 攝影機做為輸入,筆觸長度 13 和 5 個像素的都可以跑到 13 FPS(frame per second)左 右,相當於一張花費 0.08 秒。
4.2 效果比較
以下對於 DDA 或 LIC 中核心線的長度、雜訊圖對比強度、筆觸向量圖之變化,對 筆觸效果之影響以三小節介紹,並且接著敘述筆觸粗細以及輪廓加強的實驗觀察心得。
4.2.1 筆觸長度的影響
我們對雜訊圖去做方向性模糊來產生筆觸,這時我們必須給予兩個輸入,一個是方 向,第二個則是模糊的長度。之前的研究都沒有特別提到什麼樣的長度會產生什麼樣的 效果,這是因為這些方法都對於一個塊面作相同或類似方向的方向性模糊,因此長度的 影響並不大。這邊我們以梯度所轉換的筆觸方向,使用DDA做方向性模糊的情形做測 試,可以發現大致上可以區分為短筆觸和長筆觸兩種不同的效果。短筆觸的效果就像是 圖 4-2-1上面兩張圖的效果,仍然留有一條一條的紋理。而長筆觸就像圖 4-2-1下面兩張 圖的樣子,看起來比較像是用手抹暈染的繪圖效果。然而DDA都以直線取樣的緣故,所 以筆觸長度過長的時候,會開始出現嚴重的失真,就像圖 4-2-1右下角的圖一樣,人物 的鼻子已經看起來不太正確。不過從結果也可以發現,要留下繪圖筆觸的效果,筆觸不 能太短也不能太長,使用較花費時間的長筆觸,並不會有更好的效果。圖4-2-1 筆觸長度的影響。這四張圖都是使用 contrast=0.3 的雜訊圖,並以平滑梯 度圖決定筆觸方向。筆觸長度分別為 3 個像素(左上)、7 個像素(右上)、15 個像 素(左下)、41 個像素(右下)。
4.2.2 雜訊對比強度之影響
雜訊會影響產生的筆觸型態,如果雜訊對比強,所形成的筆觸就會較為明顯,如果 雜訊圖和原本的圖差距很小,那麼產生筆觸就不會明顯。圖 4-2-2可以看出各種對比程 度的筆觸對於產生鉛筆素描的影響。以鉛筆素描來說,contrast低於 0.5 的效果較為自然。圖4-2-2 雜訊對比程度對於筆觸的影響。這四張圖都是使用 9 個像素的筆觸長度, 並以亮度角度圖決定筆觸方向。左上用的是黑白 white noise,而右上、左下、右下 分別用的是 contrast 為 1、0.5、0.25 的雜訊。
4.2.3 筆觸向量圖之影響
使用梯度轉換為向量圖來產生筆觸方向時,有幾個計算梯度的方法可以選擇。我們 挑出 3×3 的Sobel計算、高斯模糊處理過的Sobel結果以及我們所提出來的梯度計算法來 做比較。圖 4-2-3可以顯示出 3×3 的Sobel計算受到雜訊影響很大,產生的筆觸過於區域性很雜亂。而高斯模糊後雖然能夠讓筆觸方向更圓滑,但是以繪圖效果而言並不是很自 然,紋路太過明顯。而我們所提出的梯度計算方法,產生的筆觸方向則較為自然。
圖4-2-3 三種梯度計算方法產生筆觸的比較。這三張圖都是使用 9 個像素的筆觸長 度,contrast=0.3 的雜訊圖,並以平滑梯度圖決定筆觸方向。左上為 Sobel 計算, 右上為 Sobel 計算輔以 Gaussian blur 做模糊處理,左下為本篇論文提出的方法,r 設為 8。
4.2.4 筆觸方向量化之效應
用亮度角度決定筆觸方向時,可以經過量化讓結果有不一樣的感覺。從圖 4-2-4可 以看出不同量化程度會產生的不同感覺,其中當量化的層數大於 9 之後就幾乎看不出量 化的效果了。 圖4-2-4 亮度角度圖量化結果比較。左上為沒有經過量化的結果,右上、左下、右 下分別為 9 層、5 層、2 層量化的結果。4.2.5 筆觸粗細之控制
筆觸粗細可以用兩種方法控制,第一種是對雜訊圖做模糊,可以讓筆觸看起來比較 寬。第二種是用低解析度的雜訊圖來產生筆觸效果,這會讓整張畫的效果看起來是比較 粗糙的感覺。不過這兩種方法效果都差強人意,還有改進的空間。 圖4-2-5 產生不同粗細的筆觸效果。左上角是原始的方法的結果。右邊的是把雜訊 圖模糊後的產生的結果。下面這張則是用比較低解析度的圖來做計算,套用原大小 的輪廓圖。4.2.6 不同輪廓加強效果的比較
輪廓加強時我們有很多種輪廓偵測及繪製的方法可以選擇,我們挑出三種來比較其 特性以及效率。這三種方法分別是surround on / center off、DoG、梯度產生的輪廓線[10] 。以筆觸的乾淨程度來比的話是:DoG > Center Off > Gradient(如圖 4-2-6),以速度來 比較的話則是:Gradient > DoG > Center Off,其中用梯度的方法速度比其他兩種要快上 許多。DoG的計算量以及雜訊影響的程度都在中上的程度,雖然輪廓線過於清楚可能也 會造成結果過於呆板,但是由於我們將輪廓淡化後才合成上去,輪廓線不會很突兀。我 們建議在需要高品質的時候使用DoG的方法描繪輪廓線,而當要節省計算速度的時候可 以用梯度計算出的輪廓線。
圖4-2-6 三種輪廓圖的比較。右上角是surround on / center off的方法,左下是DoG 的方法,右下方是用[10] 所提出用梯度計算的輪廓。
4.3 結果圖
就灰階影像而言,我們得到了類似炭筆或是鉛筆素描的感覺。而彩色影像方面也得 到了類似粉彩或是油畫的感覺。同時我們又用了另外一組參數產生短筆觸繪畫的繪圖效 果。以下是各種效果產生的結果圖。
炭筆素描效果。使用 DDA 方法做方向性模糊,用平滑梯度圖決定筆觸方向,筆觸 長度為 L = 5,對比長度 contrast = 0.3 的雜訊,灰階影像。
粉彩或是油畫效果。使用 DDA 方法做方向性模糊,用平滑梯度圖決定筆觸方向, 筆觸長度 L = 5,對比程度 contrast = 0.3 的雜訊,彩色影像。
短筆觸產生的墨筆畫效果。使用改良式 DDA 方法,用平滑梯度圖決定筆觸方向, 筆觸長度 L = 2,黑白兩色 white noise。提高原圖對比及亮度以增強效果。
鉛筆素描效果。使用 DDA 方法,筆觸長度 L = 4,對比程度 contrast = 0.35,用亮 度角度圖決定筆觸方向。
輸入網路攝影機的影像用 GPU 做計算,參數設定同上面各種繪圖效果的介紹,可 以產生炭筆、粉彩、鉛筆效果。 圖4-3-9 將即時影像作為輸入。左圖為粉彩效果,右圖為鉛筆素描效果。
4.4 限制
我們提出的這套方法,在影像的主體或是重點部份過小而且細節的對比不夠強的時 候,可能會產生不理想的結果。譬如說一般出外旅行時拍的照片,常常都是搭配風景的 人物照,或是很多人的風景照,很有可能人物的臉所佔的部份很小或是正好背光的情 形。對這樣的照片來說,這些臉部雖然佔的面積較小,卻有可能是該照片的重點。和大 多數作繪圖效果的方法一樣,我們的方法沒辦法讓很小的細節保留所有的特徵,只能夠 確保整張畫面經過處理後仍然能夠保留原有的感覺。如果要處理這種情形可能就要利用 半自動或是手動的演算法做前處理,將主體的重要細節的各區塊切割開來,並且每個區 塊分開來使用這套流程,最後再將各區塊合起來,就可以讓這些小區域的細節保留下來 了。第五章 結論
我們產生繪圖效果的終極目標是能夠產生類似人類畫家的畫作,但是那並不是一件 簡單的事情。人類的情感以及繪畫功力,即使同樣的人畫同樣的主題,每次畫出來的也 不會相同。因此就算能夠產生與鉛筆、墨筆、油畫、水彩等素材相同的質感,還是沒辦 法取代畫家對於整個畫面設計的巧思。雖然還沒辦法達到這樣的目標,但是我們改進了 一般產生繪圖筆觸方法的缺點,讓使用者能夠輸入自己喜歡的影像,自動產生具有繪畫 感的圖畫。我們所用的演算法相當簡單,讓運算可以在能夠忍受的範圍內完成。 我們不但將過去一直用於鉛筆素描描繪的方法用更簡單而且效果更穩定的計算來 代替,並且利用這套方法實驗各種繪圖效果。我們所產生的結果在大部分的影像上效果 都不錯,相信用在各種影像媒體上面都是相當適合的。參考文獻
[1] B.Cabral, C. Leedom, ”Imaging Vector Field Using Line Integral Convolution”, SIGGRAPH93 conference Proceeding, pp.263~270, 1993.
[2] Michael P. Salisbury, Sean E. Anderson, Ronen Barzel, David H.Salesin, ”Interactive Pen-and-Ink Illustration”, Computer Graphics Proceedings, pp.101~108, 1994. [3] G. Winkerbach, D. H. Salesin, “Computer-Generated Pen-and-Ink Illustration”,
SIGGRAPH94 conference proceedings, pp. 91-100, 1994.
[4] Xiaoyang Mao, Yoshiyasu Nagasaka, Atsumi Imamiya, “Automatic Generation of Pencil Drawing From 2D Images Using Line Integral Convolution”, CAD/Graphics,
pp.240~248, 2001.
[5] Shigefumi Yamamoto, Xiaoyang Mao, Atsumi Imamiya, “Enhanced LIC Pencil Filter”, IEEE Computer Graphics, Imaging and Visualization Proceedings, pp.251~256, 2004. [6] Nan Li, Zhiong Huang, “A Feature-Based Pencil Drawing Method”, SIGGRAPH
conference proceedings, pp. 135, 2003.
[7] Ma-Chi Che, Cheng-Chung Lin, “From image to sketch: with the emphasis of visual targets”, Master thesis, 2004.
[8] Yen-Chi Chang, Cheng-Chung Lin, “Automatic Generation of Pencil Drawing from Photo”, Master thesis, 2005.
[9] Chi-Cheng Chen, Cheng-Chung Lin, “Automatic Generation of Pencil Sketching with the Effects of Paper Texture”, Master thesis, 2006.
[10] Jin Zhou, Baoxin Li, “Automatic Generation of Pencil-Sketch Like Drawings from Personal Photos”, IEEE International Conference on Multimedia and Expo, 2005. [11] Holger Winnemöller, Sven C. Olsen, Bruce Gooch, “Real-Time Video Abstraction”,
ACM SIGGRAPH Paper, 2006.
[12] Shigefumi Yamamoto, Xiaoyang Mao, Atsumi Imamiya, “Colored Pencil Filter with Custom Colors”, Proceedings of Computer Graphics and Applications 2004, 2004. [13] Aaron Hertzmann, Charles E. Jacobs, Nuria Oliver, Brian Curless, and David H. Salesin,