inpainting_textureinpainting_textureInpaintingTextureInpaintingTexture (Operator)

Name

inpainting_textureinpainting_textureInpaintingTextureInpaintingTexture — Inpainting eines Bildbereiches durch Texturfortsetzung.

Signatur

inpainting_texture(Image, Region : InpaintedImage : MaskSize, SearchSize, Anisotropy, PostIteration, Smoothness : )

Herror inpainting_texture(const Hobject Image, const Hobject Region, Hobject* InpaintedImage, const Hlong MaskSize, const Hlong SearchSize, double Anisotropy, const char* PostIteration, double Smoothness)

Herror T_inpainting_texture(const Hobject Image, const Hobject Region, Hobject* InpaintedImage, const Htuple MaskSize, const Htuple SearchSize, const Htuple Anisotropy, const Htuple PostIteration, const Htuple Smoothness)

void InpaintingTexture(const HObject& Image, const HObject& Region, HObject* InpaintedImage, const HTuple& MaskSize, const HTuple& SearchSize, const HTuple& Anisotropy, const HTuple& PostIteration, const HTuple& Smoothness)

HImage HImage::InpaintingTexture(const HRegion& Region, Hlong MaskSize, Hlong SearchSize, double Anisotropy, const HString& PostIteration, double Smoothness) const

HImage HImage::InpaintingTexture(const HRegion& Region, Hlong MaskSize, Hlong SearchSize, double Anisotropy, const char* PostIteration, double Smoothness) const

HImage HImage::InpaintingTexture(const HRegion& Region, Hlong MaskSize, Hlong SearchSize, double Anisotropy, const wchar_t* PostIteration, double Smoothness) const   (Nur Windows)

static void HOperatorSet.InpaintingTexture(HObject image, HObject region, out HObject inpaintedImage, HTuple maskSize, HTuple searchSize, HTuple anisotropy, HTuple postIteration, HTuple smoothness)

HImage HImage.InpaintingTexture(HRegion region, int maskSize, int searchSize, double anisotropy, string postIteration, double smoothness)

Beschreibung

Der Operator inpainting_textureinpainting_textureInpaintingTextureInpaintingTextureInpaintingTexture dient zur Entfernung größerer Objekte oder Bildstörungen aus der Region RegionRegionRegionRegionregion des Eingabebildes ImageImageImageImageimage. Dazu werden Bildblöcke der Kantenlänge MaskSizeMaskSizeMaskSizeMaskSizemaskSize 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 RegionRegionRegionRegionregion 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* SearchSizeSearchSizeSearchSizeSearchSizesearchSize um den Punkt x beschränkt, in dem sich die Mittelpunkte der Vergleichsblöcke befinden müssen.

Die Reihenfolge, in der die Pixel von RegionRegionRegionRegionregion 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 AnisotropyAnisotropyAnisotropyAnisotropyanisotropy 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 AnisotropyAnisotropyAnisotropyAnisotropyanisotropy 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 PostIterationPostIterationPostIterationPostIterationpostIteration auf den Wert 'min_grad'"min_grad""min_grad""min_grad""min_grad", so wird die Summe der Quadrate der Grauwertgradienten über die Vergleichsblöcke minimiert, setzt man ihn auf 'min_range_extension'"min_range_extension""min_range_extension""min_range_extension""min_range_extension", so minimiert man das Anwachsen des Grauwertintervalls der Vergleichsblöcke gegenüber dem Referenzrechteck um den Punkt x. Hat PostIterationPostIterationPostIterationPostIterationpostIteration den Wert 'none'"none""none""none""none", wird keine Nachiteration durchgeführt. Welche Blöcke für die nachträgliche Minimierung zulässig sind, wird durch den Parameter SmoothnessSmoothnessSmoothnessSmoothnesssmoothness 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 SmoothnessSmoothnessSmoothnessSmoothnesssmoothness wird das Inpaintingergebnis daher glatter und Strukturen verschwinden. Die Passgenauigkeit der gewählten Vergleichsblöcke nimmt dabei ab. Wird SmoothnessSmoothnessSmoothnessSmoothnesssmoothness 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 SearchSizeSearchSizeSearchSizeSearchSizesearchSize vorhanden ist, so behalten die verbleibenden Pixel ihren ursprünglichen Grauwert und die ROI des Ausgabebildes InpaintedImageInpaintedImageInpaintedImageInpaintedImageinpaintedImage wird um den unbearbeiteten Bereich reduziert. Ist die Strukturgröße der ROI von ImageImageImageImageimage oder des Rechengebietes RegionRegionRegionRegionregion kleiner als MaskSizeMaskSizeMaskSizeMaskSizemaskSize, so kann die Laufzeit des Algorithmus extrem anwachsen. Es sollten daher nur klar strukturierte Eingaberegionen verwendet werden.

Achtung

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.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / uint2 / real)

Eingabebild.

RegionRegionRegionRegionregion (input_object)  region objectHRegionHRegionHobject

Inpaintingregion.

InpaintedImageInpaintedImageInpaintedImageInpaintedImageinpaintedImage (output_object)  image(-array) objectHImageHImageHobject * (byte / uint2 / real)

Ausgabebild.

MaskSizeMaskSizeMaskSizeMaskSizemaskSize (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Größe der Inpaintingblöcke.

Defaultwert: 9

Wertevorschläge: 7, 9, 11, 15, 21

Restriktion: MaskSize >= 3 && odd(MaskSize)

SearchSizeSearchSizeSearchSizeSearchSizesearchSize (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Größe des Suchfensters.

Defaultwert: 30

Wertevorschläge: 15, 30, 50, 100, 1000

Restriktion: 2 * SearchSize > MaskSize

AnisotropyAnisotropyAnisotropyAnisotropyanisotropy (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

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

PostIterationPostIterationPostIterationPostIterationpostIteration (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Nachiteration zur Artefaktreduzierung.

Defaultwert: 'none' "none" "none" "none" "none"

Werteliste: 'min_grad'"min_grad""min_grad""min_grad""min_grad", 'min_range_extension'"min_range_extension""min_range_extension""min_range_extension""min_range_extension", 'none'"none""none""none""none"

SmoothnessSmoothnessSmoothnessSmoothnesssmoothness (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Grauwerttoleranz für Nachiteration.

Defaultwert: 1.0

Wertevorschläge: 0.0, 0.1, 0.2, 0.5, 1.0

Restriktion: Smoothness >= 0

Modul

Foundation