| Operatoren |
inpainting_ct — Inpainting eines Bildbereiches mittels Kohärenztransport.
inpainting_ct(Image, Region : InpaintedImage : Epsilon, Kappa, Sigma, Rho, ChannelCoefficients : )
Der Operator inpainting_ct führt ein Inpainting auf der Region Region im Bild Image durch, indem Bildinformation vom Rand dieser Region entlang der Kohärenzrichtung in das Innere transportiert wird.
Das grundlegende Konzept dieses Operators ist Inpainting durch Fortsetzten unterbrochener Höhenlinien. Somit müssen der Bildinhalt und die Inpaintingregion so beschaffen sein, dass diese Idee anwendbar ist. Das heißt, wenn eine Höhenlinie die Inpaintingregion beim Pixel p trifft, dann sollte es einen gegenüberliegenden Punkt q geben, an dem diese Höhenlinie weiterläuft so, dass die Fortsetzung Höhenlinie von zwei gegenüberliegenden Seiten funktioniert. In Fällen, in denen das Bild wenig Geometrie besitzt, kann ein diffusionsbasierter Inpainter, z.B., harmonic_interpolation bessere Ergebnisse liefern. Alternativ kann Kappa auf 0 gesetzt werden. Ein Extremfall mit geringen globalen Geometrien sind reine Texturen. Dann wird die Idee hinter diesem Operator keine guten Ergenisse produzieren (man denke z.B. an ein Schachbrettmuster mit einer großen Inpaintingregion relativ zu den Schachfeldern). Für diesen Typ Bild ist ein texturbasiertes Inpaiting, wie z.B. inpainting_texture, zu empfehlen.
The Operator verwendet ein sogenanntes Upwind-Schema, um den fehlenden Pixeln Grauwerte zuzuweisen, d.h.,:
Die Reihenfolge der zu bearbeitenden Pixel ist durch deren euklidischen Abstand zum Rand der Inpaintingregion gegeben.
Ein neuer Wert wird als ein gewichtetes Mittel von bereits bekannten Werten , die innerhalb einer Kreisscheibe vom Radius Epsilon um das aktuelle Pixel liegen, berechnet. Diese Kreisscheibe ist beschränkt auf bereits bekannte Pixel.
Die Maskengröße dieses Schemas hängt von Epsilon ab.
Die anfänglich verwendeten Bilddaten stammen aus einem Streifen der Dicke Epsilon um die Inpaintingregion. Damit das Schema funktioniert, muss Epsilon mindestens 1 sein, sollte aber größer gewählt werden. Der maximale Wert für Epsilon hängt von den Grauwerten, die die in die Region transportiert werden sollen, ab. Eine Wahl von Epsilon = 5 ist in vielen Fällen anwendbar.
Da das Ziel ist, unterbrochene Höhenlinien zu schließen, muss deren Richtung geschätzt und als Gewicht verwendet werden. Die geschätzte Richtung heißt Kohärenzrichtung, und wird mit Hilfe des Strukturtensors S berechnet.
Zur Bearbeitung von Mehrkanal- oder Farbbildern wird das obige Schema auf jeden Kanal separat angewendet. Die Gewichte aber müssen für alle Kanäle gleich sein, um die Information in allen Kanälen in die gleiche Richtung zu propagieren. Wegen der Abhängigkeit der Gewichte von der Kohärenzrichtung wird hier die gemeinsame Richtung als Eigenrichtung eines zusammengesetzten Strukturtensors berechnet. Wenn nun die n Kanäle des Bildes bezeichnen, so werden die Kanalstrukturtensoren berechnet und wie folgt zum zusammengesetzten Strukturtensor S kombiniert.
Der Zweck, andere ChannelCoefficients als das arithmetische Mittel zu benutzen, besteht darin, verschiedene Farbcodes zu adaptieren. Die Kohärenzrichtung ist eine geometrische Information des zusammengesetzten Bildes, welche durch starke Kontraste, wie z.B. Kanten, gegeben ist. Je kontrastreicher ein Kanal ist, desto mehr geometrische Information enthält er. Folglich sollte dessen Koeffizient, relativ zu den anderen, größer gewählt werden. Für RGB-Bilder ist [0.299, 0.587, 0.114] eine gute Wahl.
Das Gewicht in obigem Schema ist das Produkt einer Richtungskomponente und einer Distanzkomponente. Bezeichne p den 2D-Koordinatenvektor des aktuell zu beabeitenden Pixels und q den 2D-Koordinatenvektor eines Pixels in der Nachbarschaft (die Kreisscheibe beschränkt auf bereits bekannte Pixel). Dann misst die Richtungskomponente die Abweichung des Differenzvektors p-q von der Kohärenzrichtung. Falls die Abweichung, exponentiell skaliert mit , groß ist, wird eine kleine Richtungskomponente zugewiesen. Ansonsten wird eine große Richtungskomponente zugewiesen. wird gesteuert durch Kappa (in Prozent):
Ein Sonderfall ist Kappa gleich Null: In dieser Situation ist die Richtungskomponente konstant (1). Die Richtungsschätzung wird dabei übersprugen, um Laufzeit zu sparen, und die Parameter Sigma, Rho, ChannelCoefficients werden in diesem Fall bedeutungslos, d.h. die Propagation von Information basiert nicht mehr auf den im Bild sichtbaren Strukturen.
Die Distanzkomponente ist 1/|p-q|. Folglich wird, wenn q weit entfernt von p liegt, eine kleine Distanzkomponente zugewiesen, andernfalls, wenn q nahe bei p liegt, eine große Distanzkomponente.
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.
Radius der Pixelnachbarschaft.
Defaultwert: 5.0
Typischer Wertebereich: 1.0 ≤ Epsilon ≤ 20.0
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 1.0
Schärfeparameter in Prozent.
Defaultwert: 25.0
Typischer Wertebereich: 0.0 ≤ Kappa ≤ 100.0
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 1.0
Vorglättungsparmeter.
Defaultwert: 1.41
Typischer Wertebereich: 0.0 ≤ Sigma ≤ 20.0
Minimale Schrittweite: 0.001
Empfohlene Schrittweite: 0.01
Glättungsparameter für die Richtungsschätzung.
Defaultwert: 4.0
Typischer Wertebereich: 0.001 ≤ Rho ≤ 20.0
Minimale Schrittweite: 0.001
Empfohlene Schrittweite: 0.01
read_image (Image, 'claudia') gen_circle (Circle, 333, 164, 35) inpainting_ct (Image, Circle, InpaintedImage, 15, 25, 1.5, 3,1.0)
harmonic_interpolation, inpainting_aniso, inpainting_mcf, inpainting_ced, inpainting_texture
Folkmar Bornemann, Tom März: „Fast Image Inpainting Based On Coherence Transport“; Journal of Mathematical Imaging and Vision; vol. 28, no. 3; pp. 259-278; 2007.
Foundation
| Operatoren |