Textursynthese
Textursynthese nennt man in der Computergrafik die automatische Erzeugung einer Textur.
Einführung
Textursyntheseverfahren befähigen Computer dazu, selbständig Bilder zu erzeugen, die einer Vorlage nachempfunden sind. Es gibt zwei grundlegend verschiedene Arten, diese Aufgabe anzugehen. Bei der parametrischen Herangehensweise untersucht man Vorlagen und entwickelt dann Algorithmen, die ähnliche Bilder erzeugen; im Kontext der 3D-Computergrafik spricht man hier auch von prozeduraler Textursynthese. Bei der nicht-parametrischen Vorgehensweise entwickelt man Algorithmen, denen man das Musterbild direkt übergibt, und die diese eigenständig nachahmen.
Ziel ist es, Bilder zu synthetisieren, die der Vorlage so ähnlich sehen, dass ein Betrachter nicht mehr sagen kann, welches Bild zuerst da war. Typische Anwendungsfälle der Textursynthese ergeben sich bei der Fotoretusche: Man schneidet ein Stück aus einem Foto heraus und möchte die nun leere Stelle so auffüllen, dass möglichst nicht auffällt, dass überhaupt etwas entfernt wurde. Besonders in der 3D-Computergrafik ergeben sich Situationen, in denen man aus kleinen Bildern gerne sehr große machen möchte.
Texturen
Der Begriff Textur hat verschiedene Bedeutungen: Umgangssprachlich ist Textur gleichbedeutend mit „Oberflächenstruktur“, in der Computergrafik ist eine Textur ein digitales Bild, das wie eine zweite Haut über ein dreidimensionales Objekt gelegt wird und in der Bildverarbeitung schließlich ist jedes digitale Bild eine Textur. In der Textursynthese meint Textur meist ein digitales Bild, das eine Oberflächenstruktur zeigt, eine scharfe Abgrenzung zu den anderen Definitionen wird aber nicht vorgenommen.
In der Textursynthese unterscheidet man verschiedene Klassen von Texturen, die fließend ineinander übergehen:
- Von strukturierten Texturen spricht man, wenn sich der Bildinhalt in gleichbleibenden Abständen immer wieder wiederholt. Diese Texturen sind nur bei künstlichen Objekten wie Teppichmustern oder am Computer erzeugten Bildern anzutreffen.
- Teilstrukturierte Texturen sind aufgebaut wie strukturierte Texturen, jedoch gibt es aufgrund kleiner Variationen keine zwei Bildteile, die völlig identisch wären. Das klassische Beispiel ist eine Backsteinmauer; die übergeordnete Struktur ist unübersehbar, aber keine zwei Steine sind völlig identisch.
- Unstrukturierte Texturen enthalten völlig unvorhersagbaren Bildinhalt. Die Einzelteile mögen zwar strukturiert sein, die Struktur ist aber mit einfachen geometrischen Mitteln nicht zu erklären.
- Teilstochastische Texturen bestehen aus unstrukturierten Teilen, die in so großer Zahl und zufällig angeordnet wiederholt werden, dass wiederum der Eindruck einer einheitlichen Fläche entsteht. Ein Beispiel ist eine dichte Schicht von Efeublättern.
- Stochastische Texturen bestehen aus sehr kleinen Teilen, die in großer Zahl zufällig angeordnet sind und so eine einheitliche Oberfläche bilden; diese Texturen wirken wie Bildrauschen. Ein typisches Beispiel ist Sand.
Eine Textursynthese ist nur dann erfolgreich, wenn das Ergebnisbild in der selben Texturklasse liegt wie die Vorlage. Macht das Textursyntheseverfahren beispielsweise aus einer stochastischen Steinfläche ein strukturiertes Kieselmosaik oder zerfällt das teilstrukturierte Ziegeldach in stochastisches Rauschen, so ist das Verfahren mangelhaft. Es gibt Syntheseverfahren, die nur innerhalb einer bestimmte Texturklasse sehr gute Ergebnisse liefern, für alle anderen jedoch ungeeignet sind.
Algorithmen
Alle bislang entwickelten Algorithmen zur Textursynthese verfolgen entweder den Mosaikansatz oder den Pixelansatz. Beim Mosaikansatz wird das Ergebnisbild aus größeren Stücken der Vorlage zusammengesetzt, während es beim Pixelansatz Bildpunkt für Bildpunkt aufgebaut wird.
Ein Textursynthesealgorithmus erhält als Eingaben ein digitales Bild, die gewünschte Größe des Ausgabebildes sowie eventuell einige algorithmusspezifische Parameter, mit denen seine Funktionsweise näher bestimmt werden kann. Die Ausgabe des Algorithmus besteht aus dem synthetisierten Bild.
Mosaiktechniken
Kacheln
Von Kacheln (englisch tiling) spricht man, wenn die Vorlage wiederholt dupliziert und aneinander gefügt wird. Diese Methode ist schnell, erzeugt aber höchstens bei strukturierten Texturen befriedigende Ergebnisse; und nicht einmal dort immer. Erfüllt die Vorlage nicht spezielle Symmetriebedingungen, so ist im Endresultat deutlich erkennbar, wo die Duplikate aneinander grenzen. Da sich der Bildinhalt in regelmäßigen Abständen wiederholt, ist das Ergebnis immer eine strukturierte Textur. Kacheln ist also für andere Texturklassen gänzlich ungeeignet. Spiegelt man die Duplikate wiederholt, so verschwinden zwar die Grenzen zwischen den Kacheln, der Wiederholungseffekt bleibt aber bestehen. Kacheln wird häufig zur Erstellung einfacher Hintergrundbilder für Websites und grafische Benutzeroberflächen angewandt.
Chaosmosaik
Chaosmosaik wurde 2000 von Ying-Qing Xu, Baining Guo und Harry Shum in einem technischen Report der Forschungsabteilung der Firma Microsoft vorgestellt[1]. Die Technik verwendet eine „chaotische“ Form des Kachelns mit einer frei wählbaren untergeordneten Synthesetechnik; die Originalarbeit verwendete die pixelbasierte Textursynthese nach Efros und Leung.
Der erste Schritt von Chaosmosaik besteht darin, durch Kacheln ein Bild mit den gewünschten Maßen zu erstellen. Im zweiten Schritt werden in diesem Kachelbild zufällig ausgewählte Blöcke zufälliger Größe an zufällig ausgewählte Positionen kopiert. Ohne weitere Behandlung enthielte das Ergebnis sichtbare Fugen, wo der Bildinhalt des verschobenen Mosaikstücks nicht mit dem Untergrund zusammenpasst. Bei jedem dieser Kopiervorgänge wird daher um das neu eingefügte Mosaiksteinchen herum ein schmaler Rand ausgeschwärzt. Der geschwärzte Bereich wird in einem Unterschritt mit Hilfe des untergeordneten Syntheseverfahrens ausgefüllt. Diese Form des Chaosmosaik liefert gute Ergebnisse und benötigt wenig Speicherplatz, ist aber durch das untergeordnete Syntheseverfahren langsam.
Xu, Guo und Shum präsentierten daher gleichzeitig eine abgewandelte Form, um den Forderungen nach einem schnellen Syntheseverfahren für 3D-Computergrafiken entgegen zu kommen. In dieser Variante wird kein Ausschwärzen und nachfolgendes Wiederauffüllen verwendet. Stattdessen werden die Ränder der Mosaikteile mit einem Glättungsfilter geglättet, wodurch harte Kanten und scharfe Farbübergänge verschwimmen. Die Ergebnisse sind schlechter als im ursprünglichen Verfahren, werden aber mit einem erheblichen Geschwindigkeitszuwachs belohnt, da Filter sehr effizient angewandt werden können.
Quilten
Beim Quilten wird das Ergebnisbild Flicken für Flicken aus der Vorlage zusammengesetzt. Für jede Flickenposition des Ausgabebildes werden in der Vorlage Bildteile gesucht, deren Umgebung der Umgebung des neuen Flickens möglichst ähnlich ist. Aus den ermittelten Teilen wird dann zufällig einer ausgewählt. Um die Übergänge zwischen den Flicken zu verstecken, wird der neue Flicken vor dem Einfügen zurechtgeschnitten, das heißt sein Rand wird so beschnitten, dass er sich möglichst gut in das bislang erzeugte Bild einfügt.
Quilten ist die qualitativ hochwertigste aber auch zeitaufwändigste Mosaiktechnik. Sie eignet sich für teilstrukturierte und teilstochastische Texturen sowie teilweise für strukturierte und stochastische Texturen. Liegt eine unstrukturierte Mustertextur vor, also eine mit nicht rein geometrisch begründeter Struktur, so wird das Ergebnis nur bedingt zufriedenstellend: Da strukturierte Objekte willkürlich zerschnitten und neu zusammengesetzt werden, können befremdliche Effekte entstehen; so mögen beispielsweise aus Tomaten der Güteklasse A zerstückelte oder verwachsene Tomaten werden. Hochgradig strukturierte Vorlagen liefern nur bei genügend großer Flickengröße befriedigende Ergebnisse, während hochgradig stochastische Vorlagen nach einer möglichst kleinen Flickengröße verlangen. Wird die Flickengröße auf einen Bildpunkt festgelegt, so entspricht Quilten der Technik des Image Growing (s. u.).
Pixeltechniken
Stochastische Synthese
Bei der stochastischen Synthese wird das Ausgabebild Bildpunkt für Bildpunkt zusammengesetzt. Der Farbwert des gerade betrachteten Bildpunkts wird festgelegt, indem der Farbwert eines zufällig ausgewählten Pixels im Vorlagenbild übernommen wird. Diese Methode ist sehr schnell, funktioniert aber nur bei hochgradig stochastischen Texturen, d. h. wenn die Einzelteile der Textur höchstens einen Bildpunkt groß sind.
Nicht-parametrische Synthese
Image Growing ist die qualitativ hochwertigste Pixeltechnik. Für jeden zu setzenden Bildpunkt im Ausgabebild wird eine Reihe von Bildpunkten in der Vorlage ermittelt, deren Umgebungen der Umgebung des neuen Bildpunkts möglichst ähnlich sind. Aus diesen wird dann zusätzlich ein Bildpunkt ausgewählt und dessen Farbe an den neuen Bildpunkt übergeben.
Geschwindigkeit und Qualität der Ergebnisse ist von der Wahl der Größe der betrachteten Umgebung abhängig. Je strukturierter eine Textur ist, desto weiträumiger müssen die Umgebungen der Bildpunkte verglichen werden; bei stochastischen Texturen hingegen ist eine möglichst kleine Umgebungsgröße angezeigt, um keine unerwünschten Strukturen zu erhalten. Je größer die betrachtete Umgebung ist, umso langsamer ist der Algorithmus. Wird die Umgebungsgröße auf null gesetzt, so entspricht das Verfahren der stochastischen Synthese (s. o.).
Die nicht-parametrische Textursynthese wurde erstmals 1999 von Alexei A. Afros und Thomas K. Leung vorgestellt[2]. Der Namenszusatz „nicht-parametrisch“ soll dieses Verfahren deutlich von der prozeduralen, rein parametrischen Textursynthese abgrenzen. Zahlreiche Nachfolgearbeiten [3][4] haben das Verfahren seitdem verfeinert.
Weblinks
- Texture Synthesis by Non-parametric Sampling - Homepage von A. A. Efros und T. K. Leung mit Zusatzinformationen und Beispielbildern
Quellen
- ↑ B. Guo, H. Shum, Y.-Q. Xu: Chaos Mosaic: Fast and Memory Efficient Texture Synthesis. Microsoft Research MSR-TR-2000-32, April 2000. PDF 8 MB
- ↑ A. A. Efros, T. K. Leung: Texture Synthesis by Non-parametric Sampling. In: Proceedings of IEEE International Conference on Computer Vision, Corfu, Greece, September 1999. [PDF Volltext, 1 MB]
- ↑ L.-Y. Wei, M. Levoy: Fast Texture Synthesis using Tree-structured Vector Quantization.
- ↑ M. Ashikhmin: Synthesizing Natural Textures. In: The proceedings of 2001 ACM Symposium on Interactive 3D Graphics, Research Triangle Park, NorthCarolina March 19-21. S. 217-226