ebsynth
ist ein vielseitiges Werkzeug zur beispielhaften Synthese von Bildern. Es kann für eine Vielzahl von Bildsyntheseaufgaben verwendet werden, einschließlich geführter Textursynthese, Übertragung künstlerischer Stile, inhaltsbewusstes Inpainting und Superauflösung.
Der Fokus von ebsynth
liegt auf der Wahrung der Originalität des Quellmaterials. Im Gegensatz zu anderen neueren Ansätzen verlässt sich ebsynth
nicht auf neuronale Netze. Stattdessen wird eine hochmoderne Implementierung nichtparametrischer Textursynthesealgorithmen verwendet. Dank seiner patchbasierten Natur liefert ebsynth
gestochen scharfe Ergebnisse, die alle feinen Details des Originalbilds bewahren.
ebsynth -style -guide -output
-style
-guide
-weight
-uniformity
-patchsize
-pyramidlevels
-searchvoteiters
-patchmatchiters
-extrapass3x3
-backend [cpu|cuda]
Vorgefertigte Windows-Binärdateien können hier heruntergeladen werden: http://jamriska.cz/ebsynth/ebsynth-win64.zip.
Das erste Beispiel zeigt, wie man mit ebsynth
eine grundlegende geführte Textursynthese durchführt. Dieser Anwendungsfall wurde erstmals im ursprünglichen Image Analogies-Artikel [1] vorgeschlagen, wo er als „Textur nach Zahlen“ bezeichnet wurde. Wir beginnen mit einem Foto einer natürlichen Szene zusammen mit ihrer Segmentierung (z. B. Felsen ist grün gestrichen, Himmel blau):
ebsynth -style source_photo.png -guide source_segment.png target_segment.png -output output.png
Als nächstes zeichnen wir von Hand eine Zielsegmentierung und bitten ebsynth
ein neues „Foto“ zu erstellen, das dazu passt. In der Sprache des Stiltransfers: Wir wollen den Stil des Quellfotos auf die Zielsegmentierung übertragen, und zwar so, dass die einzelnen Segmente respektiert werden. Die Segmentierung dient als Leitfaden für die Synthese.
Dieses Beispiel zeigt, wie man mit ebsynth
ein nicht fotorealistisches Rendering erreicht. Es basiert auf der Arbeit von Fišer et al. [7]. Ziel ist es, ein 3D-Modell so zu rendern, wie es ein Künstler tun würde. Insbesondere möchten wir die Art und Weise erfassen, wie ein Künstler die verschiedenen Beleuchtungseffekte wie Glanzlichter, Kontaktschatten und indirekte Reflexionen vermittelt. Dazu bauen wir eine einfache Referenzszene mit einer beleuchteten Kugel auf und lassen diese vom Künstler in seinem/seinem Stil zeichnen. Wir verwenden einen handelsüblichen Pfad-Tracer, um die einzelnen Renderdurchgänge zu erzeugen, z. B. vollständige globale Beleuchtung, nur die direkte diffuse Komponente, nur den indirekten Bounce usw. Als nächstes rendern wir denselben Satz von Durchläufen für das Ziel-3D-Modell und verwenden Sie sie als Leitfaden für 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
Im Vergleich zur Texture-by-Numbers-Methode besteht der Hauptunterschied darin, dass wir jetzt über mehrere Führungskanäle verfügen. Beachten Sie, dass die Führungen immer paarweise vorliegen: zuerst die Quellenführung, dann die Zielführung. Um bessere Ergebnisse zu erzielen, möchten wir möglicherweise den Beitrag der Hilfslinien im Verhältnis zum Stil erhöhen. Im obigen Beispiel hat der Stil eine Standardgewichtung von 1,0, während die Führungskanäle jeweils eine Gewichtung von 0,66 haben. Insgesamt beträgt das Gesamtführungsgewicht 2,0, was zu einem Verhältnis von Führung zu Stil von 2:1 führt.
Dieses Beispiel zeigt, wie man mit ebsynth
den Stil eines Porträtgemäldes auf das Foto einer anderen Person übertragen kann. Es basiert auf der Arbeit von Fišer et al. [8]. Ziel ist es, die feinen Nuancen des Originalgemäldes zu reproduzieren und gleichzeitig die Identität der Zielperson zu bewahren. Das heißt, wir möchten, dass die Person auch nach der Synthese noch erkennbar ist.
Anders als bei StyLit verfügen wir in dieser Einstellung nicht über die Referenz-3D-Geometrie, die wir als Leitfaden verwenden können. Wir können jedoch die Tatsache ausnutzen, dass sowohl das Quellgemälde als auch das Zielfoto ein menschliches Gesicht enthalten, das eine klar definierte Struktur aufweist. Wir werden diese Struktur verwenden, um die notwendigen Leitinformationen abzuleiten.
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
Insbesondere erkennen wir die Gesichtsmarkierungen sowohl im Ziel- als auch im Quellbild und verwenden sie, um einen weichen Segmentierungsleitfaden Gseg
und einen Positionsleitfaden Gpos
zu erstellen, bei dem es sich im Wesentlichen um ein dichtes Warp-Feld handelt, das jedes Zielpixel seiner entsprechenden Position in der Quelle zuordnet . Um die Identität der Person zu bewahren, verwenden wir den Erscheinungsbildführer Gapp
, eine Graustufenversion des Zielfotos, die an die Luminanz des Quellgemäldes angepasst wurde.
Der Code wird öffentlich zugänglich gemacht. Sie können damit alles machen, was Sie wollen.
Sie sollten sich jedoch darüber im Klaren sein, dass der Code den PatchMatch-Algorithmus implementiert, der von Adobe patentiert ist (US-Patent 8.861.869). Andere Techniken könnten ebenfalls patentiert werden. Es liegt in Ihrer Verantwortung, sicherzustellen, dass Sie durch die Verwendung dieses Codes keine Rechte von Patentinhabern verletzen.
Wenn Sie diesen Code für Ihre Recherche nützlich finden, geben Sie bitte Folgendes an:
@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}},
}