ebsynth
是一個用於範例影像合成的多功能工具。它可用於各種影像合成任務,包括引導紋理合成、藝術風格轉移、內容感知修復和超解析度。
ebsynth
的重點是保持來源材料的保真度。與其他近期的方法不同, ebsynth
不依賴神經網路。相反,它使用最先進的非參數紋理合成演算法實現。由於其基於補丁的性質, ebsynth
可以產生清晰的結果,保留原始圖像中存在的所有精細細節。
ebsynth -style -guide -output
-style
-guide
-weight
-uniformity
-patchsize
-pyramidlevels
-searchvoteiters
-patchmatchiters
-extrapass3x3
-backend [cpu|cuda]
可以從此處下載預先建置的 Windows 二進位檔案:http://jamriska.cz/ebsynth/ebsynth-win64.zip。
第一個範例展示如何使用ebsynth
執行基本的引導紋理合成。該用例首次在原始影像類比論文 [1] 中提出,他們稱之為「數位紋理」。我們從自然場景的照片及其分割開始(例如,岩石被漆成綠色,天空被漆成藍色):
ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png
接下來,我們手動繪製目標分割,並要求ebsynth
產生與其匹配的新「照片」。用風格遷移的語言來說:我們希望以尊重各個片段的方式將來源照片的風格遷移到目標分割上。分割充當合成的指導。
此範例示範如何使用ebsynth
實現非真實感渲染。它基於 Fišer 等人的工作。 [7]。目標是像藝術家一樣渲染 3D 模型。具體來說,我們想要捕捉藝術家如何傳達不同的照明效果,例如高光、接觸陰影和間接反射。為此,我們設置了一個帶有發光球的簡單參考場景,並讓藝術家以她/他的風格繪製它。我們使用現成的路徑追蹤器來產生單獨的渲染通道,例如,完整的全域照明、僅直接漫反射分量、僅間接反彈等。 ebsynth
的指南。
ebsynth -style source_style.png
-guide source_fullgi.png target_fullgi.png -weight 0.66
-guide source_dirdif.png target_dirdif.png -weight 0.66
-guide source_indirb.png target_indirb.png -weight 0.66
-output output.png
與數位紋理相比,這裡的主要區別是我們現在有多個引導通道。請注意,指南始終成對出現:首先是來源指南,其次是目標指南。為了獲得更好的結果,我們可能希望提高指南相對於樣式的貢獻。在上面的範例中,樣式的預設權重為 1.0,而引導通道的權重均為 0.66。總之,總引導重量為 2.0,導致引導與樣式比為 2:1。
此範例示範如何使用ebsynth
將肖像畫的風格轉移到另一個人的照片。它基於 Fišer 等人的工作。 [8]。目標是再現源畫的細微差別,同時保留目標人物的身份。即,我們希望該人在合成後仍然可以被識別。
與 StyLit 不同,在此設定中,我們沒有參考 3D 幾何體可用作指導。然而,我們可以利用來源繪畫和目標照片都包含人臉的事實,該人臉具有明確的結構。我們將使用這個結構來推斷必要的指導資訊。
ebsynth -style source_painting.png
-guide source_Gapp.png target_Gapp.png -weight 2.0
-guide source_Gseg.png target_Gseg.png -weight 1.5
-guide source_Gpos.png target_Gpos.png -weight 1.5
-output output.png
具體來說,我們檢測目標影像和來源影像中的臉部標誌,並使用它們來產生軟分割指導Gseg
和位置指導Gpos
,這本質上是一個密集的扭曲場,它將每個目標像素映射到來源影像中的對應位置。為了保留人的身份,我們使用外觀指南Gapp
,它是目標照片的灰度版本,經過均衡處理以匹配來源繪畫的亮度。
該程式碼已發佈到公共領域。你可以用它做任何你想做的事情。
但是,您應該知道程式碼實現了 PatchMatch 演算法,該演算法已獲得 Adobe 的專利(美國專利 8,861,869)。其他技術也可能獲得專利。您有責任確保使用此程式碼不會侵犯任何專利持有者的權利。
如果您發現此程式碼對您的研究有用,請引用:
@misc{Jamriska2018,
author = {Jamriska, Ondrej},
title = {Ebsynth: Fast Example-based Image Synthesis and Style Transfer},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/jamriska/ebsynth}},
}