Scale-aware Black-and-White Abstraction of 3D Shapes(持續更新)
這是一篇Siggraph2018的文章,作者為國立清華大學的YOU-EN LIN,朱巨集國,以及bath大學的YONGLIANG YANG。
本文研究的是:由計算機從3D模型自動生成2D黑白扁平化設計圖片的一種方法。扁平化設計的原則是“Less is More”,用最少的設計元素精確表達出原來的模型。
一&二 . Introduction&related works
扁平化設計有著很多自己的設計特點:
- 為了反映被擋住物體和加強深度的對比,設計者經常利用一種叫做halo-like gap region的設計方法
- 為了產生更強的對比度和強調單獨圖形的幾何形狀,設計者利用的方法為hollow lines and patches
現有的相關的研究有:
- Xu and Kaplan[2018] “Artistic Thresholding”:提出了一種只利用黑白兩色繪製連續色調的圖片的方法。他們主要是將分割的輸入圖片優化連線。雖然這也是基於圖片的顏色標記,但我們的方法在以下兩個方面更加的不同:1)我們的輸入是3D模型;2)我們的公式基於扁平化設計原則;3)我們的圖片包含有著最小色調的邊界節點。
三、設計原則
- Contrast (對比) 設計的主題是黑色,背景是白色;
- Halo 利用halo效果強調幾何圖形的深度順序,為了防止搞混深度的順序,白色的gap是設計在被擋住物體上的。
- Hollow 一些部分上單獨的幾何體經常用不同的顏色來更好的表達。
- Consistency(一致性) 3D模型中提取出來的一樣的部分應該使用一致的顏色。這能夠幫助儲存圖形的語義資訊,使使用者更好的建模和理解。
- Prominence(突出) 經常使用突出的特徵線來表達幾何模型的資訊。
- Clarity(清晰) 簡潔設計提高可讀性。
四.概述
輸入:3D人工模型,觀測角度,指定尺寸
輸出:2D黑白扁平化設計
在我們的扁平化設計中有兩種patch:shape patch & boundary patch;
shape patch:提取輸入的模型
boundary patch:強調幾何特徵或者輸入模型的空間結構;
五、2D/3D模型分析
5.1 3D模型分析
輸入:多個元件的人工模型,由三角面片構成,三角面片表示成M={C1,C2,……,CN},我們基於面片之間的連線關係,將所有的面片分成單獨的元件。為了統一變數的設定,我們將輸入的模型歸一化到x,y,z軸均為(-1.0,1.0)的三角座標系中。我們用一個無向圖表示多元件模型的結構,這裡圖的節點表示單獨的元件,圖的邊連線和,為了簡化模型,我們使用表示第i個面片和它對應圖中的節點。我們使用[Yang et al. 2015]論文中的方法來確定對稱的元件。我們首先估計每個元件的方向邊界框(OBB)。然後通過檢視OBB和模型是否都對齊來確定對稱的兩個元件(圖5)。注意雖然將模型從3D對映到2D時很容易通過內部或相互的遮擋確定鄰接關係,但這裡暫時不考慮。我們也通過檢測鋒利的網格邊界提取幾何特徵,這可以用來強調內部元件的特點。
5.2 2D圖片分析
2D圖片由3D輸入模型使用一個基本的圖形渲染流程在固定的相機視角下產生。為了儲存輸入模型的結構,我們使用一種特定的渲染分割演算法,這種演算法即考慮3D模型又考慮2D投影,當相關的三角面片的ID在框架模型中時,我們首先將3D模型渲染成2D圖片。然後在畫素級別,我們使用一種洪泛演算法,根據面片的連結性使用臨近的面片的畫素,輸出為一組2Dpatch,每個patch都由一個元件中鄰接三角面片的畫素組成(Figure 6)。注意一個面片的元件可能由於其他元件的遮擋或者自我遮擋生成多個2Dpatches。實際上,我們渲染的解析度為1600*1200.視覺的距離為5.0,視角範圍為60度。圖7展示了產生的一些結果。
我們使用有向圖 來表示2D影象分割的結構關係,由兩種有向圖的節點,一種是圖形節點(patch node)代表單獨的2D圖形,我們也設計了邊界節點來連線兩個同一條邊分割的相鄰的圖形和。邊界節點的目的是更好的表達兩個相鄰圖形的3D空間關係,並在合適的時候使用halo效果(詳見第6部分)。對於每一個圖節點,我們也記錄對應三角面片元件的ID。有向圖中的邊包括兩種型別:鄰接邊和內含邊。鄰接邊單純描述圖節點的鄰接關係,內含邊指出一個patch node完全被另一個patch node包含的部分。在分割中兩個相鄰的部分定義了兩個鄰接邊,方向為從被包含的patch node到被遮擋的patch node ,中間通過邊界節點連線。兩個相鄰的patch遮擋關係通過檢查depth buffer中的深度值來確定。內含邊總是指向被包含patch node 。我們把鄰接邊和內含邊的集合分別表示為和(圖8).
六.提取設計優化
基於上述和,第二步是確定每一個patch node 的顏色是白或者黑。並且確定每個boundary node (邊界點)是否要使用halo效果。因為顏色僅僅涉及黑色和白色並且halo效果只判斷使用或者不使用,我們將該設計優化問題視為二元標記問題。更具體地,對於每個patch node ,我們加上一個二元顏色標記,當=0,代表該patch 為黑色,當=1,代表該patch為白色。對於每個邊界節點我們加上一個二元標記來指出是否使用halo 效果。=1表示使用,=0表示不使用。最終2D圖片由最大化下列目標函式產生:
這裡的項分別代表neighber energy(鄰接程度),consistency energy(一致程度)和background energy(背景程度),權重用來控制對應項的相關度。每個程度項反映的是在第三部分中討論過的設計原則,我們現在詳細描述一下每一項。
Neighbor energy 這個項強調相鄰patch 的特徵和空間關係,是由每一個有向圖中鄰接節點的三元組所決定的。對於每個三元組,根據的不同設定能夠產生不同的設計。我們根據設計的特點進一步將三元組設計分成四種類型:‘merge’(合併),'contrast'(對比),'halo'和 'invalid', 其中,‘invalid’指當兩個相鄰的patches是不同顏色的時候,使用halo效果是錯誤的。其他三個型別的設計適合於不同的情況。‘contrast’型別的設計用於強調包含兩個深度接近的鄰接patches的空間關係。‘halo’型別用來反映兩個有很大的深度差的鄰接patches的遮擋關係,因為halo效果本來就是強調深度次序的。‘merge’型別只在當patches很小並且‘contrast’和‘halo’型別因為缺少空間或者辯認度而無法應用時使用。表1列出了所有可能的設計和對應的型別。下邊我們將定量描述四種設計型別。
對於‘contrast’型別,數值如下定義:
ScaleContrast(Pi,Pj)是啟用函式,當patch足夠寬能夠辯認時,只確定顏色對比。Relative(Pi,Pj)測量Pi和Pj的關聯度,d(Bij)是Bij的歸一化深度,Inclusion(Pi,Pj)反映Pi是否包含Pj。注意由於啟用函式的存在,量化值的連續函式是被乘起來的而不是加起來。這隻適用於patch的尺寸合適時的顏色對比,不易識別的特徵應該使用加法。更具體的,單獨的方程如下定義:
Width是patch的最小辯認尺寸(在我們的實驗中為5個畫素)D(Pi)是patch Pi傳遞的最大距離值,從patch的邊界估計patch的寬度。
b(Pi,Pj)是Pi和Pj的共有邊界的歸一化長度,a(Pi)是Pi的歸一化面積,在圖9中我們可以看到,如果Pi和Pj能夠被很容易的單獨分辨出來(即各自的面積很大)並且對比強烈(即有很長的邊界),那Pi和Pj有很強的相關性。注意類似的量化方法也用在[xu and Kaplan 2008]
當Pi和Pj由一個有向圖的內含邊連線時,返回Wi,否則返回1.在我們的實驗中,我們使用Wi=1.5來進一步提高包含的patch的對比度。
對於‘halo’型別,數值如下定義:
Relative(Pi,Pj)和d(Bij)和‘contrast’型別定義相同。類似Scalecontrast,ScaleHalo(Pi,Pj)是一個啟用函式只在patch有足夠的寬度時使用halo效果,定義如下:
不同於ScaleContrast,這裡我們使用D(Pi)而不是2D(Pi)來進一步限制patch的尺寸,因為halo的區域是在被遮擋的patch上進行繪製的,halo的區域和被遮擋的patch都需要在最後的設計中顯示出來。
最後兩種型別‘merge’和‘invalid’簡單地定義為常數:
注意‘invalid’型別是儘量避免的,因此等於0。當‘contrast’和‘halo’型別不符合時,最好使用‘merge’型別,因此merge型別返回一個很小的正值。
整體的neighbor energy fn 由計算出的上述不同情況的所有三元組的和確定,定義如下:
這裡
Consistency energy 這個項表示兩個對應的元件是相同的或者對稱的patches: Pm和Pn的顏色一致性,定義如下:
這裡im是Pm的元件的ID,XNOR是同或操作(相同時輸出1,不同時輸出0),a(Pm)時patchPm的面積,方程min(a(Pm),a(Pn))用來根據patch的尺寸確定影響。
Background energy 這一項表示背景和前景的顏色對比,定義如下:
這裡,是緊挨著背景的有向圖節點的集合,表示白色的背景顏色,XOR是異或操作(相同時輸出0,不同時輸出1),Relative是關聯函式,在前邊已經定義過。
Optimization 我們使用置信傳播[Yedidia et al. 2003]來最大化目標函式(1)並且得到最好的patch顏色和halo效果。根據經驗,我們在所有的實驗中設定。
6.1 突出主要特點
最好的扁平化設計主要考慮各元件間的幾何特點和結構特點。元件內部的特點除了自我遮擋都已經考慮過了(比如輪廓線)。為了更好的設計,我們把突出的邊界提取為每個面片的顯著特徵,因為它們能有效代表人工製作的模型。[Gal et al 2009]
突出的邊界是指面片的邊界由兩面之間的銳角三角形構成。(>80度)
然後我們將突出邊界投影到2D,並且使用洪泛演算法追蹤2D線條分割。在實驗中,我們在最後的設計中使用一個特徵線變數 L,僅僅當1*這是突出的,2*不影響已經做好的原本設計的外觀。第一條原則使用公式 表示,其中Length(L)是L的長度,W是突出性的權重,在我們的實驗中定義為10。第二條規則使用約束公式 這裡P是L所在的patch,這裡的符號定義與halo效果的定義相同。圖10表示了強調突出的特點後的效果以及不強調的效果對比。
6.2 扁平化設計實現
當我們已經定義瞭如何提取patch nodes,boundary nodes 和sharp features之後,就能夠對最終的設計方案進行渲染了。首先我們根據最優化顏色標籤進行顏色確定,生成黑白部分的設計。這裡每一個部分都對應一個模型的patch。然後我們在初始模型上生成邊界patch,對於每個的boundary node邊界節點,我們提取兩個相鄰的patch的邊界,然後用半徑為Width的盤狀掩模(mask)在被遮擋patch上的每個邊界畫素上塑造halo區域(這個區域也是一個邊界patch)顯然Halo區域的寬度是Width,即最小可辨認Patch的寬度。符合突出特徵線的邊界patch也同上產生。對於2D特徵線L,我們用半徑為Width/2,圓心為L的每個畫素點的盤狀掩模刻畫特徵線區域(這也是一個邊界Patch),特徵線區域的寬度為Width
6.3 可調節比例的設計
我們的設計優化和生成演算法是非常靈活的,能夠產生多比例的設計圖案,在大尺度的設計中包含更多的細節特徵,能夠更好的刻畫輸入模型,而在小尺寸的圖案中只保留了突出特徵來避免視覺混亂從而增加可讀性。2D影象預設大小為最大尺度:1600*1200。一個生成最小尺度的圖案的簡單方法是:增加與輸入模型的視線距離,並且保持優化中的Width不變。然而,這極大的影響了5.2中patch分割的質量,並且很容易導致分割結果出錯。這是因為,在光柵化時因為使用了低解析度的圖片 導致小的三角面片被忽略了。相反地,我們建議在最好的解析度上計算所有的設計,並且在優化過程中把Width進行分類(在我們的實驗中是從5到35),最後的結果是通過最優化後的設計(最小辨認尺寸仍然為5)下采樣得到的.為了簡化變數的設定,我們利用一個比例變數 來直接控制。具體來說,當s=1時,使用Width=5的最大比例,s=0對應Width=35的最小比例,s與Width是線性一一對映。圖11展示了三種不同比例的設計。
最小的比例的設計不是大比例的設計的下采樣而是單獨優化生成的,也可以增加Width的值到35以上來產生更小的作品,其限制只是在於對映的圖案的尺寸。
6.4 可選擇的使用者控制
雖然我們的演算法是自動進行的,我們的框架也提供允許使用者為patch自定義顏色的功能,設計優化通過優化其他變數確定對應的顏色標籤來約束使用者。
七、結果和評價
我們在來自論文[Chen et al. 2003]的很多人造的不同種類的三位模型上測試了我們的框架,圖13展示了一些自動生成的結果。這些結果都遵循前邊提到的設計準則並且很好的展示了輸入模型的特點。我們的框架也能夠產生不同比例的設計結果,提高結果的可讀性。更多的設計結果展示在文末的材料裡(我分享了百度雲連結)
7.1 效能
連結:https://pan.baidu.com/s/1v4G6K_pdfb3j-gAQs3k12w 提取碼:b8q8