| Operatoren |
inpainting_texture — Inpainting eines Bildbereiches durch Texturfortsetzung.
inpainting_texture(Image, Region : InpaintedImage : MaskSize, SearchSize, Anisotropy, PostIteration, Smoothness : )
Der Operator inpainting_texture dient zur Entfernung größerer Objekte oder Bildstörungen aus der Region Region des Eingabebildes Image. Dazu werden Bildblöcke der Kantenlänge MaskSize aus dem intakten Teil des Bildes an den Rand des Rechengebietes angefügt, bis dieses vollständig mit neuen Grauwerten gefüllt ist. Dieser Vorgang wird als Image Inpainting bezeichnet. Das Rechengebiet heißt daher auch Inpaintinggebiet, und wird ausgehend von Region mit jedem eingefügten Rechteck verkleinert. Der Mittelpunkt des aktuell zu bearbeitenden Blockes befinde sich an einer Stelle x. Da x immer auf dem Rand des Inpaintinggebietes gewählt wird, überlappt dieser aktuelle Block mit den bekannten oder bereits eingefügten Grauwerten. Welcher andere Bildblock an die Stelle x passt, wird über seine Grauwertkorrelation mit den Grauwerten im Überlappungsbereich des aktuellen Blocks bestimmt. Als Korrelation wird die Summe der Quadrate der Grauwertdifferenzen verwendet. Die Bildblöcke, die für die Korrelation herangezogen werden und als Kandidaten für die Datenquelle des nächsten Inpaintingschrittes dienen, bezeichen wir als Vergleichsblöcke. Der Suchbereich für geeignete Grauwertmuster ist auf ein Quadrat der Kantenlänge 2* SearchSize um den Punkt x beschränkt, in dem sich die Mittelpunkte der Vergleichsblöcke befinden müssen.
Die Reihenfolge, in der die Pixel von Region aufgefüllt werden, hängt zum einen von der Größe des Überlappungsbereiches und damit von der Anzahl der für die Grauwertkorrelation zur Verfügung stehenden Pixel und zum anderen vom Betrag der Ableitung der Grauwertfunktion tangential zum Rand des Rechengebietes ab. Je größer der Wert des Parameters Anisotropy ist, desto stärker werden Punkte, an denen die Ableitung groß ist, bevorzugt. Dadurch wird z.B. erreicht, dass gerade Kanten, die durch den hohen Gradienten repräsentiert werden, durch das gesamte Rechengebiet hindurch fortgesetzt werden können, ohne bei kleiner werdendem Inpaintinggebiet durch das Inpainting von Bildstrukturen von anderen Teilen des Randes unterbrochen zu werden. Auf der anderen Seite führt ein größer Wert von Anisotropy aber auch dazu, dass eventuelle Scheinkanten, also während des Inpaintings zufällig entstandene unerwünschte Strukturen, ebenfalls propagiert und Störungen so vergrößert werden können.
Um die Bildung solcher Artefakte einzudämmen, kann der ursprüngliche Algorithmus um eine Nachiteration erweitert werden, bei der glatte oder unscheinbare Bildbereiche als Datenquellen für das Inpainting bevorzugt werden. Setzt man den Parameter PostIteration auf den Wert 'min_grad', so wird die Summe der Quadrate der Grauwertgradienten über die Vergleichsblöcke minimiert, setzt man ihn auf 'min_range_extension', so minimiert man das Anwachsen des Grauwertintervalls der Vergleichsblöcke gegenüber dem Referenzrechteck um den Punkt x. Hat PostIteration den Wert 'none', wird keine Nachiteration durchgeführt. Welche Blöcke für die nachträgliche Minimierung zulässig sind, wird durch den Parameter Smoothness festgelegt. Dieser bestimmt, wieviel größer die mittlere absolute Abweichung der Grauwerte in den zulässigen Vergleichsblöcken gegenüber der vom Ursprungsalgorithmus bestimmten minimalen Abweichung ausfallen darf. Mit zunehmendem Wert von Smoothness wird das Inpaintingergebnis daher glatter und Strukturen verschwinden. Die Passgenauigkeit der gewählten Vergleichsblöcke nimmt dabei ab. Wird Smoothness auf 0 gesetzt, so berücksichtigt die Nachiteration nur Vergleichsblöcke mit gleich starker Korrelation zum Referenzblock.
Kann das Inpainting nicht vollständig durchgeführt werden, weil Punkte x existieren, für die kein vollständiger Block mit intakten Grauwertinformationen im Suchbereich der Größe SearchSize vorhanden ist, so behalten die verbleibenden Pixel ihren ursprünglichen Grauwert und die ROI des Ausgabebildes InpaintedImage wird um den unbearbeiteten Bereich reduziert. Ist die Strukturgröße der ROI von Image oder des Rechengebietes Region kleiner als MaskSize, so kann die Laufzeit des Algorithmus extrem anwachsen. Es sollten daher nur klar strukturierte Eingaberegionen verwendet werden.
Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.
Eingabebild.
Inpaintingregion.
Ausgabebild.
Größe der Inpaintingblöcke.
Defaultwert: 9
Wertevorschläge: 7, 9, 11, 15, 21
Restriktion: MaskSize >= 3 && odd(MaskSize)
Größe des Suchfensters.
Defaultwert: 30
Wertevorschläge: 15, 30, 50, 100, 1000
Restriktion: 2 * SearchSize > MaskSize
Einfluss der Kantenstärke auf die Inpaintingreihenfolge.
Defaultwert: 1.0
Wertevorschläge: 0.0, 0.01, 0.1, 0.5, 1.0, 10.0
Restriktion: Anisotropy >= 0
Nachiteration zur Artefaktreduzierung.
Defaultwert: 'none'
Werteliste: 'min_grad', 'min_range_extension', 'none'
Grauwerttoleranz für Nachiteration.
Defaultwert: 1.0
Wertevorschläge: 0.0, 0.1, 0.2, 0.5, 1.0
Restriktion: Smoothness >= 0
Foundation
| Operatoren |