(原文連結,請點擊這裡)
作者: Johannes Kopf (微軟研究院)、Dani Lischinski(希伯來大學)
摘要
我們提出了一種新穎的演算法,從像素圖匯出一張光滑、與解析度無關的向量圖,可以任意放大而不會失真。我們的演算法完全保留原始輸入像素圖的縮放特徵資訊,並且通過分段光滑的輪廓曲線,產生平滑變化的陰影,並清晰地分割這些特徵資訊為的不同地區類型。在原圖中,像素分部呈方形像素塊,斜對角相鄰像素塊只靠一個像素點與本像素塊相連。這導致微弱的特徵資訊經過常規的放大之後,基本看不見;並且斜對角像素塊是否應該相連變得無從分辨。我們演算法的關鍵是處理這些斜對角像素塊的關係。我們可以重塑這些像素單元,使原斜對角應該相連的像素單元仍以邊相鄰。這樣即使放大,仍保留斜對角像素塊的串連關係資訊。我們減少了像素的走樣,並且通過擬合圖片輪廓的樣條曲線、最佳化樣條曲線的控制點,改善了光滑度。
關鍵詞
像素圖 品質最佳化 向量化
1 導論
像素圖是一種數字圖形的表現形式,描述精確到像素水平。這種圖片被實際廣泛應用於1990年代中期以前所有的電腦和電子遊戲。另外,較老的案頭環境裡的表徵圖、小顯示屏裝置例如手機,都應用這類圖片。由於那時的硬體條件限制,美工們被強迫用只有很少顏色分類的畫板作圖,並且要機械地手工設定每個像素的位置,而不是從更高解析度作品自動縮放。因此,經典的像素圖經常被冠以原始的老化的,意指在現代電腦圖形中早已消失。但當年電子遊戲盛行的黃金年代,像素圖的傑作比比皆是。許多還成為了一整代人的文化符號,例如“星際入侵“、三色的”超級瑪麗小精靈“。幸虧有各種各樣的模擬器,這些經典的電子遊戲繼續提供人們歡樂,不需要依賴於早就消失的硬體而直接在電腦上運行。
在這篇論文裡,我們面臨一個非常有趣的挑戰:是否可以從一個年代久遠的電子遊戲或者模擬器的一幀裡取出一個子畫面,並將它向量化?事實上,每個像素手工布局使得每個像素都承載最豐富的意義。這提供了足夠的資訊,使我們可以推匯出相應的向量圖用於顯著放大而不走樣。當然,像素圖的量化本質確有呈現出一定程度的美感,但是我們相信經過我們的方法處理得到的向量圖仍然能保有一些原圖的魅力(見圖1)。
最近鄰處理的結果(原圖:40 X 16 像素) 本文演算法的結果
圖1:原始的採樣放大的結果不夠好;但是我們的演算法從原圖匯出一張光滑、與解析度無關的向量圖,可用於高解析度顯示裝置。(原圖著作權屬於Nintendo有限公司)
之前的向量化技術是為了自然景觀圖片並且基於片段和邊緣檢測濾波器,不適合於解決像素圖的微型特徵資訊。這些方法是典型的像素點聚類並將分區邊界轉換成光滑曲線。然而,在像素圖中,每一個像素都包含重要的意義。結果,之前的向量化演算法應用於像素圖時,會導致丟失細節資訊(見圖2)。
PhotoZoom4(普通的映像填充採樣放大) hq4x(特定的像素圖放大) Adobe Live Trace(向量化)
圖2:用如上所述的各種方法得到的結果。對比圖一中我們得到的結果。
在過去的十年,提出了很多特定的像素圖放大方法,我們在下一節會提到。這些技術經常可以處理得不錯。但是,因為它們的局部性,結果仍有鋸齒。並且它們沒有解決斜對角像素塊的是否相鄰的關係處理。還有,所有這些方法的放大因子固定為2倍、3倍或者4倍。
這篇論文裡,我們介紹一種新穎的處理方法,適合於像素圖的特徵資訊裡單個像素的放大。我們首先解決斜對角像素塊的是否相鄰的關係處理,然後擬合圖片輪廓的樣條曲線、最佳化樣條曲線的控制點,實現最大程度光滑和去鋸齒。圖片的向量結果可以被渲染在任何類型解析度的顯示裝置上。
我們成功地將我們的演算法應用在從過時的電子遊戲和案頭表徵圖中匯出的海量像素圖片處理中,也用於Super Nintendo模擬器的幀處理。我們廣泛對比各種像素圖放大方法,從向量化到普通的映像填充採樣放大和特定的像素圖放大方法。另外,本論文的這些例子對照的圖片都附在論文的補充材料裡。
2 前期工作
本論文的前期工作可以被劃分為三部分。在圖2和圖9,還有補充材料,我們在每一部分裡用我們的演算法對比一種有代表意義的相關演算法。
常規的映像填充採樣放大
”經典“的映像填充採樣放大,應用線性濾波器,或匯出於分析插值理論、或匯出於訊號處理理論。使用濾波器的執行個體,比如“最近鄰,Bicubic和Lancosz [ Wolberg 1990 ]。這些濾波器並不對未經處理資料做任何假定,唯一的條件就是頻寬節流設定。結果,圖片經這種處理之後,突變亮點和明顯的邊界都變得模糊。
最近十年,許多複雜的演算法問世,並對原始輸入圖片做了強假定,比如,假定討論自然圖片統計[Fattal 2007]或者自相似性[Glasneret al.2009]。這些方法都超出了本文的論點。然而,在多數情形,這些(自然的)圖片並不包含顏色量化的微型像素圖片。因此,這些方法在這些圖形輸入處理上往往表現很差。
像素圖增強技術
最近幾年,很多特定的像素圖放大演算法面世[Wikipedia 2011]。大多數產生於虛擬社區,沒有在科學雜誌上發表;然而,開源實現卻隨處可見。所有這些演算法是基於像素和固定的整型放大因子的。
第一個這類為我們所知的演算法是EPX,由Eric Johnston在1992年移植LucasArts遊戲到早期的Macintosh電腦上,這種電腦的解析度大概是原平台的兩倍[Wikipedia 2011]。這種演算法用一種簡單的方法放大圖片的解析度:每一個像素被初始替換成2 X 2的同種顏色的像素塊;然後,如果原圖左上相鄰的像素的基本顏色一樣,那麼在新的2 X 2的像素塊的左上的像素替換成原圖左上的像素,新像素塊的其他幾個點以此類推。
這種演算法足夠簡單,可以應用於即時系統並且常常表現不錯。但是,邊緣方向被量化為僅僅12種不同的方向可能導致產生鋸齒效果。另一個限制是這個演算法的嚴格的局部性,使解決斜對角像素的相鄰關係變得困難。這兩個限制在圖9(右下)中可以看出。
這之後的幾種演算法都是基於相同的想法,但是用更複雜的邏輯來決定 2 X 2 像素塊的顏色。最有名的是 Egle(Dirk Stevens著),2xSaI [Liauw Kie Fa 2001] 和 Scale2x [Mazzonleini 2001],都是通過考察更多的鄰近點或者運用拓展色。幾個輕量級的不同實現被命以不同的名字,例如 SuperEgle和Super2xSaI。這些同族演算法的遺傳性限制是它們僅僅允許放大一倍。更大的放大就是重複執行多次。可是,這種策略會隨著放大因子的增大,顯著降低圖片品質,因為這些方法假定非鋸齒輸入,導致鋸齒輸出。
這種類型的演算法裡,最新最複雜的解決方案是hqx族[Stepin 2003]。這個演算法一次檢測3 X 3的像素塊,並且比較中間像素和它的8個近鄰。每一個近鄰被分類為顏色相似或者不相似,就會產生256中不同的組合。然後為每一種組合查表產生一個實際的插值模式。這種方法可以做出各種各樣的效果,比如明顯邊界等。這種方法結果的品質確實很高。但是,由於嚴格的局部性,這個演算法仍不能解決某些串連關聯式模式,並仍有可能產生鋸齒。查表僅用於2倍、3倍和4倍放大因子處理。
圖片向量化
從圖片自動匯出向量化圖片的著作數不勝數。這些方法和我們的方法目的類似。然而,大多數預設的意圖是處理更大的自然圖片,而不是像素圖。他們的核心觀點是,向量化方法依賴於分段和邊界檢測演算法,聚類像素到更大的分區,從而擬合向量曲線。這些聚類工具並不能在像素圖上表現得很好。由於像素圖的特徵資訊非常微弱,所有的邊界都是階躍的,沒有連續漸層可依。因此,這些演算法在像素聚類分區時,極有可能丟失像素圖的這些微小的特徵資訊。
這些演算法的另一個挑戰是處理8方向連結像素;許多像素圖僅通過像素塊的角點呈現串連關係。常規的圖形向量化工具不能很好的處理這種情形,極有可能打斷這種串連關係特徵資訊。下面,我們僅提及一些有代表性的向量處理方法。
Selinger[2003]描述了一種演算法 稱作”Potrace“,用於跟蹤黑白圖片並用微小的圖片呈現結果。可是,這種方法,不能處理彩色圖片。彩色圖片必須首先背量化,並解構成部分到不同的黑白通道,然後分別跟蹤。這導致結果圖形的邊界互相滲透。
圖3:本文描述演算法一覽。(a)輸入圖片(16 X 16 像素)。(b)初始化帶斜邊界的相似圖。藍色線條在陰影區,所以可以被安全移除。而紅色線條,移除將導致結果變化(c)斜邊界的標定(d)在標定的相似圖基礎上,重塑像素塊以反映聯絡關係(e)樣條擬合可視邊界(f)用樣條最佳化擬合來減少鋸齒的最終結果圖(原圖著作權屬於Nintendo有限公司)
Lecot and L´evy[2006] 提出一種系統(”ARDECO“)用於向量化光柵圖。他們的演算法用一組向量基和一次或者二次漸近來逼近最好的效果。這種分解給予一種分區演算法,而這種分區演算法不可能在處理像素圖上取得滿意的效果。
Lai et al.[2009]提出了一種從光柵圖自動匯出漸進網格的方法。這種方法也依賴於分區演算法,同樣不能處理好像素圖。
Orzan et al.[2008]介紹了圖片劃分的擴散曲線,擴散該曲線兩邊的顏色。他們還給出一種自動產生這種擴散曲線描述的演算法。然而,他們的公式,依賴於Canny邊緣檢測。這些濾波器並不能在像素圖處理取得很好的效果。最可能的原因是這些圖形的尺寸很小,對應邊緣檢測器只能做有限的支援。Xia et al.[2009]描述了一種技術,對點陣圖形進行像素層級的三角劃分。然而,它仍舊依賴於Canny邊緣檢測。
各種各樣的商業圖形工具,例如Adobe Live Trace[Adobe公司 2010] 和 Vector Magic[Vector Magic公司 2010],用於光柵圖性的自動向量化。原始演算法的確切理論並沒有公開,但是,他們用於像素圖時都表現得不好。這一點可以參照本文的對照和補充材料。
3 演算法
我們的目的是轉換像素圖為與解析度無關的向量圖,通過分段光滑的輪廓曲線,產生光滑且適應變化的陰影,並清晰地分割這些特徵資訊為的不同地區類型。雖然這也是一般圖片的向量化演算法的目標,但是像素圖獨一無二的特點給我們帶來了非凡的挑戰:
1.每個像素都有意義。例如,一個單獨的像素,顏色與周圍的像素非常不同,是一個典型的必須保留的特徵資訊(例如,一個人物角色的眼睛)
2.像素寬度的8方向串連直線和曲線,例3-a中,幽靈的黑色輪廓。這些像素看起來是聯絡在一起的,但放大之後看起來不是。
3.本地化模糊配置:例如,當考慮一個兩種不同顏色的2 X 2 檢測板模型,無法清晰地表明哪兩個斜對角應該被聯絡起來,構成特徵曲線的部分(參考圖3-a幽靈的嘴和耳朵)這個問題已經被研究過,在二值圖片中被分為前景和背景。簡單的解決方案已被提出[Kong 和 Rosenfeld 1996]。問題是如何處理多彩色的更複雜的情形。
4.像素圖的鋸齒對比原圖的比例,很難區分需要進行連續處理的特徵資訊和人工描點的不需要連續處理的部分。例如,在圖3-a裡,如何知道嘴部要保持波動,而幽靈的輪廓應該平滑?
3.1 綜述
本文的向量描述的主要基礎是二次B樣條曲線,用以定義分區之間分段光滑的輪廓。一旦曲線計算好,一張圖片就可以用標準的工具[Nehab and hoppe 2008;Jeschke et al.2009]進行渲染。因此,我們的主要計算任務是決定座標和這些輪廓的精確地理位置。類比其他向量化演算法,歸根結底,就是要檢測邊界並曲線擬合。然而,因上述原因,這個過程非常複雜。
由於像素圖的小尺寸和極有限的調色盤,標定邊界非常簡單:任意兩個相鄰的像素,卻有足夠不同的顏色,應該被輪廓線區分開。然而,問題是串連這些邊緣片段為一體,同時處理好8方向串連關係和是否串連關係的界定。
考慮一個矩形柵格圖形,長w+1,寬h+1,表示一個w X h的圖片。每個像素對應一個柵格單元。水平和垂直臨近柵格與當前柵格共用一條邊,而斜對角臨近柵格與當前柵格共用一個頂點。當圖形放大後,斜對角臨近柵格看起來與當前柵格是不相連的,而共用一條邊的臨近柵格仍然相連。因此,我們處理方法的第一步是修改原始方形像素單元,使垂直方向原來只共用一個頂點的相鄰像素共用一條邊。這個處理過程詳細描述在3.2節。我們採用一些謹慎設計的啟發方法,來介紹如何界定斜對角像素是否串連。
重塑圖形之後,我們通過對比相鄰像素的顯著不同,確認出可見邊界。我們指定這些邊是可見的,因為它們組成我們最終向量描述的可見輪廓;相比較而言,剩下的邊將被保留在光滑的陰影區。為了產生光滑的輪廓曲線,我們用二次B樣條曲線擬合可見邊界,這部分在3.3節描述。然而,由於曲線控制點的位置由低解析度的像素格高度量化,處理結果仍然有鋸齒。我們因此最佳化曲線形狀以減少鋸齒效果,但是保留有意有高彎曲特徵資訊的輪廓曲線部分,這部分在3.4節描述。
(a)稀疏像素陣模型的啟發規則 (b)像素孤島模型啟發規則
圖4:在相似圖中解決對角邊界問題的啟發方法:曲線:這裡沒有顯示,見圖3-b。稀疏像素陣:紅色部分比綠色部分更稀疏。這種啟發方法保持紅色柵格邊緣聯絡。像素孤島:這種情形的啟發規則是保持邊緣聯絡,因為否則一個單一的像素島就會被建立。
最終,我們通過徑向基函數,進行色彩插值渲染。這是一步邊界敏感的處理,每個像素的影響不會傳播到輪廓邊界的另一邊。
3.2 重塑像素單元
第一步的目標是重塑像素單元,使擁有類比色彩的相鄰像素共用邊界。為了判斷哪些像素共用邊界,我們建立了一個相似圖形,每個像素一個圖形結點。最初,每個節點聯絡到所有它的8個相鄰點。然後,我們移除所有相鄰但顏色不相似的結點共用的邊。依據在hqx演算法[Stepin 2003]中應用的標準,我們比較相鄰結點的YUV通道值,並分別依據YUV的差別大於48/255,7/255,6/255而認為它們不相似。
圖3-b顯示相似圖形用這種處理得到的結果。這個圖包含很多對角聯絡。我們的目的是消除所有這些交叉邊得到類似圖3-c的正規化圖形。進一步處理產生的正規化圖形,就可以得到我們期望看到的鄰近像素單元共用邊的屬性,見圖3-d。
需要區分兩種情形:
1.如果2X2的像素塊是全部串連在一起的,它就是連續陰影地區的一部分。這種情況下,兩條斜對角線可以被安全的擦除,不會影響最終結果。這些連線就是類似圖3-b的藍色部分。
2.如果2X2的像素塊僅僅包含斜對角線,沒有水平和垂直方向的連線,那麼移除任意一條都會影響最終結果。這種情況下我們必須小心擦除選擇哪些連線。這些連線就是類似圖3-b的紅色部分。
不可能僅從2X2的像素塊的視角決定擦除哪些連線。僅從圖3-b的2X2的像素塊的紅色部分無法分辨是亮或暗的像素塊仍然保持串連。不過,可以通過檢測更遠一點的臨近像素塊。顯而易見暗的像素塊需要保留連線以構成一個更長的線性特徵,而亮像素塊是背景的一部分。
決定保留哪些連線和Gestalt法則有關,並且必須有意類比當時人們手工描點表現的特徵資訊。這是一個非常艱難的任務,但是,我們歸納了三個簡單的啟發規則有效地解決眾多關於串連問題的情形。這些情形可以從本文的補充材料找到。我們為每一種啟發規則分配一個權重,最後選擇能使權重綜合最大的串連方式。如果兩種對角串連的權重相同,兩者都會被移除。針對這些啟發規則作如下說明:
曲線規則:如果兩個像素是一條長曲線特徵的一部分,他們應該相連。這裡的曲線定義為相似圖中串連權值為2的結點的邊界的按序組合。我們按兩種對角分別串連加入該曲線的方式計算曲線的長度。如果對角線的端點沒有權值為2的結點,曲線的最短長度是1.這個規則通過判斷哪條對角線連入可以使曲線長度最大從而保留該連線,擦除另一條。圖3-b中顯示了兩個例子:假設右邊的紅色對角線已考察完,然後考察左邊的兩條紅色對角線。包含黑色部分的像素塊是長度為7的曲線的一部分,而白色的像素塊不是(僅長度為1),所以根據這個啟發規則,串連包含黑色部分的像素塊,並得到權值6(參照圖3-c,6為曲線到此處的長度)。
稀疏像素陣規則:作二色畫(不僅是黑白的)時,人們傾向於預設用更稀疏的顏色作為前景,而另一種顏色作為背景。這種情況下,我們預設串連前景像素塊(想象一條虛線)。這個規則通過分別計算兩條對角線所能串連最少柵格的方式,判斷串連哪一條對角線。舉個中心有交叉對角線的8X8的例子,見圖4-a。這條規則使中間的紅色對角線相連,而綠色的不相連。因為兩條對角線分別串連時,作為前景色彩的紅色點部分比綠色點少。
像素島規則:我們盡量避免使圖形細碎成很多小部分。因此,我們避免建立不需連線的像素島。如果兩條對角線其中一條不能串連任何結點,另一個條可以串連一個權重為1的結點,這意味著如果兩條如果都不考慮串連,則會產生像素島。為了避免如此,經驗性地為這條對角串連賦值權重5。這種情形見圖4-b。
現在既然可以在相似圖中處理好串連問題,圖形正規化之後,我們可以考慮進一步,重塑像素單元圖。重塑方法如下:將相似圖中的每條邊二等分,然後按照半條邊為單位,依次串連到該半邊所串連的結點。繼而,重塑單元圖形可以看做一個廣義的Voronoi圖:每個Voronoi單元由對比其他結點距離本單元的中心結點距離最短的所有點構成。我們可以簡化這個圖,去掉所有只被兩個Voronoi單元共用的頂點,而拉成一條直線。插圖顯示了廣義Voronoi插圖和對應相似圖的簡化版。圖3-c利用簡化版Voronoi圖處理得到圖3-d。值得注意的是結點中心的位置座標正好分別是像素單元長寬的一半的整數倍。稍後我們將利用這點來做相似圖的模型匹配。
插圖:左邊為精確的廣義voronoi圖,右邊為用上述方法得到的簡化版。
Voronoi單元的形狀完全由相似圖中它的鄰近單元決定。由於不同的voronoi單元形狀數目有限,所以可以用一種比較高效的演算法:掃描線方式遍曆相似圖,每次匹配一個3X3的方塊,然後貼上匹配方塊邊詳盡描述的相應voronoi單元模板。這種方法裡,我們直接用簡化版的voronoi圖,而不用精確版的。
3.3 推導樣條曲線
重塑單元圖形解決了所有的串連問題,處理得到大致的結果。然而,它的邊界有很多角而不夠光滑,由於之前的量化處理,看起來仍然是一塊一塊的。我們通過識別可見邊界來解決這些問題。串連被兩個顏色明顯不同的單元共用的可見邊界頂點的分段直線用二次B樣條曲線代替[de Boor 1978]。這裡,我們僅僅通過數可見邊的數目來決定結點的值。B樣條曲線的控制點被初始化成這些結點。
當三條樣條曲線交匯到一個公用頂點時,我們可以選擇其中兩條光滑串連,在該點變成T型接合。這樣做的好處是得到變得更簡單、更光滑的圖形。問題是:我們該選擇哪兩條光滑串連?
我們首先確認包含一個公用頂點的每條可見邊是需要消隱的邊還是輪廓邊界。消隱的邊分開顏色相似的兩個圖元,這裡的相似指的是兩個圖形單元顏色的不同不足以定性共用邊界為輪廓邊界。輪廓邊界代表能區分顏色足夠不同的圖元。具體來說,在我們的具體實現裡,兩個相鄰圖元的YUV距離不超過100/255的都作為消隱邊界。也就是說,如果一個共用頂點的三邊界,其中有一條消隱邊界和兩條輪廓邊界,我們往往選擇光滑串連兩條輪廓邊界。這個情形見圖5-a。如果碰到這條規則不能解決的,我們簡單地處理,判斷三邊中哪兩邊的夾角更接近180°,就光滑串連這兩邊。這個情形見圖5-b。
圖5:解決在標記結點的T型接合。樣條曲線用黃色著色表示。(a)這種情形,Y型的左邊屬於消隱邊界,因此另外的兩邊連成一條樣條曲線。(b)中,三個完全不同的顏色地區交匯於一點。其中夾角最接近180°的兩邊連成一條樣條曲線。
這樣做還有一個小問題:B樣條曲線僅僅是趨近於它們的控制點,而不是插入這些點的值。因此,在一個T型接合中,我們必須調整需要光滑串連的一條曲線的端點以正好和另一條需要光滑串連的曲線的端點匹配。
3.4 曲線最佳化
擬合B樣條曲線極大地改善結果圖的光滑度;然而,仍然有鋸齒(見圖6-b)。
(a)輸入(13X15像素) (b)樣條初始化 (c)樣條最佳化
圖6:通過最小化曲線曲率消除鋸齒。
因此,我們通過最佳化控制頂點的位置進一步改善光滑度。最佳化規則是使每一個頂點的能量的總和最小:
Pi表示第i個結點的位置。一個結點的能量定義為該點光滑度和位置的和:
兩者對能量總和的影響程度是相等的。光滑度通過曲率計算。因此,我們定義光滑度能量為:
這裡r(i)是由pi所影響的曲線所在的地區,k(s)是s點的曲率。我們可以通過固定的採樣間隔只進行整數型計算。
為了防止得到的結果變形太多,我們需要進一步限制控制點的位置。我們定義位置能量如下:
是第i個結點的初始位置。將等式右邊的指數提升為4,允許結點在相對小的範圍內有活動的空間,但是可以使較大誤差的位置能量明顯提高,易於剔除。
注意能量函數並不區分到底是鋸齒,還是需要保留的類似鋸齒的突出特徵資訊,比如說轉角。在前一種情形下,光滑處理是需要的,然而在後一種情形下,必須避免。我們通過利用等式3檢測類似鋸齒的突出特徵資訊,並從整體圖形中直接排除在突出特徵資訊周圍的這些地區。由於重塑的單元圖形的量化本質,突出特徵屬性僅僅只能代表有限的幾種特殊模型,見圖7。
圖7:我們的演算法檢測的轉角模型。原始方形像素柵格用灰色表示。由於相似圖的構成方式,結點的位置在水平和垂直方向都是半個像素柵格的整數倍,所以檢測這些模型是非常方便、直接的。
因此,我們必須簡單地處理一下在重塑的單元圖形這些模型(包括旋轉和反射變換處理)。檢測到一種模型之後,馬上從整體圖形中排除在這個模型中的結點之間的部分樣條曲線。圖8顯示了在一個樣本子畫面裡的檢測模型,並高亮標明從整體圖形中直接排除的部分曲線。
註:圖8在原論文中是這種結構,為了保持圖形原貌,未修改為水平布局
圖8:轉角檢測:(a)屬於一個轉角檢測模型的結點用紅色標明。包含這些紅色結點的部分曲線片段直接排除在光滑處理之外,用高亮黑色標明。
既然能量函數是非線性,定義了一個非常光滑的勢能面,因此可以用一個非常簡單的弛豫過程最佳化。每一次迭代,我們做一次隨機結點集考察並根據各自的情況最佳化。針對每一個結點,我們嘗試幾次以當前點為中心,隨機小半徑範圍內的移動,並保留使當前結點勢能最小化的位置。
經過最佳化樣條結點的位置,樣條曲線周圍的像素單元的形狀可能會顯著改變。接下來我們用harmonic圖[Eck et al.1995]計算所有不在最佳化討論範圍內(也不包含在圖片的長寬限制邊界的點)。這種方法可以極小化圖元失真,並把這個問題歸結為一個簡單的稀疏線性系統問題(確切的說明和解釋,請參考Hormann[2001])。
3.5 渲染
我們的向量描述可以用標準的向量圖渲染技術渲染,比如Nehab和Hoppe[2008]描述的系統。擴散求解方法也可以用來渲染這些向量。這裡,可以在圖元中心放置色彩源並防止擴散穿透樣條曲線。Jeschke et al.[2009]描述了一個可以即時渲染這些擴散系統。本文用一個較慢但是簡單的實現:這裡我們以圖元中心為圓心,設定截尾高斯影響函數(σ = 1,半徑為2個像素),並設定此地區之外的可見圖元的影響度為0。最終每一點的顏色根據周圍各點的影響權重計算平均顏色得到。
4 效果
我們將本文的演算法應用於眾多的電子遊戲和其他軟體。圖9代表性的顯示了我們的結果,並與各種各樣的放大技術作對照。在補充材料裡,我們提供了更詳實的結果和對照組。
圖9:將我們的演算法與各類相關演算法對比的結果範例。請縮放到合適的尺寸到PDF以查看細節。還可以查看填充材料擷取更多的對照和結果範例。(原圖:Keyboard,386著作權屬於微軟;Help,Yoshi,Toad著作權屬於Nintendo有限公司;Bomberman著作權屬於Hudson軟體有限公司;Axe Battler著作權屬於Sega公司;入侵者著作權屬於Taito公司)
我們的演算法的表現依賴於從原始輸入匯出的曲線的尺寸和個數。即使當前還沒有投入很大的精力做演算法最佳化,效果已經很不錯了。下表歸納了為補充材料裡54個樣本,在一個2.4GHz的單核CPU上做處理的時間花費:
當然,我們當前討論的焦點不是達到即時的速度,而是我們的演算法在動畫材料輸入上最佳化的效果,比如電子遊戲。為了這個實驗,我們從電子遊戲模擬器匯出幀序列,然後用我們的演算法對所有的幀進行處理。瞬時一致性的兩個最關鍵的步驟是相似圖的像素串連和結點位置最佳化。經過一系列的實驗檢測發現,我們的啟發規則魯棒性強,對特徵資訊的處理符合預期,即使是動畫效果細微的變化也是如此。在最佳化時,結點的位置其實是受到強有力的約束的,因為在位置能量的等式右邊,指數很大,是4。正因如此,我們的結果始終沒脫離原始輸入,並且與原始輸入保持一致。圖10展示了用我們的方法增強效果。在補充材料裡,我們提供了更高解析度序列幀對應的增強視頻並把結果和其他技術的結果對照。
最近鄰處理的結果 我們的結果 hq4x的結果
圖10:在動態環境中應用像素圖增強。實際處理時,模擬器的原始輸出被放大了4倍。請縮放到合適的尺寸到PDF以查看細節(原圖著作權屬於Nintendo有限公司)
4.1 限制
我們的演算法是特別設計應用於手工描像素點的像素圖的。從90年代中期起,電子遊戲裝置和電腦可以呈現比手繪圖更多的顏色。在這些系統上,設計者要先在高解析度上處理多色圖片,甚至是照片,然後降質採樣處理應用於相應的遊戲解析度。這種處理的效果在某種程度上,相對我們演算法針對的原始輸入更接近於自然影像。針對這些圖片,我們的演算法產生的厚實的邊界也不總是很合適。圖11展示了我們的演算法應用於這樣的圖片的一個例子。
輸入(24X29像素) 我們的結果
圖11:不太成功的例子。反走樣輸入很難用我們的演算法處理。“唉,註定的...”(原圖著作權屬於id軟體公司)
另一個限制是我們的樣條有時光滑處理有些過了,比9顯示的“386”晶片的轉角。我們的轉角檢測模型是基於啟發規則的,有時也不能完全和人的視覺感知契合。一個可能的將來的擴充是允許增加B樣條向量的階數,以建立在向量描述中的突出特徵,比如在一段較長的直線遇到一個角度的時候。
雖然我們實驗的輸入中,很多都用了某些形式的邊緣反走樣,但是我們還沒有實驗到有強抖動模型的像素圖,比如檢測板模型,建立重疊陰影的痕迹。我們的演算法也需要改良成能處理這些輸入。
5 結論
我們呈述了一種從像素圖匯出與解析度無關的向量描述的演算法。我們的演算法解決了像素柵格的分界和串連關係判斷問題,並且重塑像素柵格,保證串連柵格之間共用邊。我們匯出包含平滑變化的陰影的分區,並用分段光滑的輪廓曲線清晰地分離這些地區。我們證明了常規的映像效果增強和向量化演算法不能很好的處理像素圖,而我們的演算法針對各種各樣的像素圖輸入都有良好的效果。
接下來的工作還有很多方向。顯然,最佳化演算法的即時性效果並應用於模擬器,是很有用的。之前本文提到的一些想法對一般的映像向量化技術有所裨益。另一個有趣的方向是改善反走樣輸入圖片的處理。這可以用一些光滑邊界曲線而不是含有頂點的輪廓曲線的渲染來解決。一個全新的有趣話題是研究針對像素圖動畫的即時增強採樣。如果我們從一個微型輸入放大並在高清解析度裝置上輸出,各點的位置是極端量化的,會導致畫面不連續。而且很多現代顯示裝置較早期運行在一個更高的重新整理頻率上,需要通過產生中間幀來改善動畫效果。
鳴謝
我們感謝Holger Winnem¨oller中肯的意見和協助我們建立一些對照組。這個工作也部分被由以色列人文和科學學院建立的以色列科學基金會贊助。
參考資料(略)