Image Inpainting
Erfahre, wie Bild-Inpainting Inhalte mithilfe von Masken, Segmentierung, OpenCV, YOLO26 und generativen Modellen wiederherstellt oder entfernt – sowie wichtige Anwendungen und Einschränkungen.
Image Inpainting ist eine Computer-Vision-Technik, die fehlende, beschädigte oder absichtlich maskierte Bereiche eines Bildes rekonstruiert, sodass sich der vervollständigte Bereich in seine Umgebung einfügt. Anstatt unerwünschte Pixel einfach nur abzudecken, schätzt ein Inpainting-System plausibles Ersatzinhalten aus nahegelegenen Texturen, der Szenenstruktur und bei generativen Systemen gelernten visuellen Mustern ab. Zu den häufigsten Zielen gehören das Wiederherstellen beschädigter Fotografien, das Entfernen von Objekten oder Text sowie das Schließen von Lücken, die bei der Bildbearbeitung entstanden sind.
Wie Image Inpainting funktioniert#
Ein Inpainting-Workflow hat in der Regel zwei Eingaben: das Originalbild und eine Maske, die die zu ersetzenden Pixel identifiziert. Das System bewahrt Pixel außerhalb der Maske, während es Inhalte innerhalb der Maske synthetisiert oder rekonstruiert. Maskenkonventionen variieren je nach Werkzeug, weshalb Entwickler bestätigen müssen, ob weiße, schwarze, Null- oder Nicht-Null-Pixel den bearbeitbaren Bereich darstellen.
Traditionelle computer vision-Methoden propagieren Farben, Kanten und Texturen von der Maskengrenze nach innen. Zum Beispiel füllt der OpenCV image inpainting workflow maskierte Bereiche mithilfe benachbarter Pixel und bietet Algorithmen an, die darauf ausgelegt sind, umliegende Strukturen fortzuführen. Diese Ansätze sind effizient und funktionieren oft gut bei Kratzern, Staub, dünnem Text und kleinen Löchern. (docs.opencv.org)
Lernbasierte Systeme leiten übergeordneten Kontext ab. Ein Modell erkennt möglicherweise, dass sich ein maskierter Bereich auf Mauerwerk, Gras, Kleidung oder dem Gesicht einer Person befindet, und generiert Inhalte, die mit dieser Interpretation übereinstimmen. Das Ergebnis ist jedoch plausibel, anstatt eine Wiederherstellung der unbekannten Originalpixel zu sein.
Masken und Modellansätze#
Die Maskenqualität beeinflusst das Ergebnis stark. Eine Maske, die zu klein ist, lässt möglicherweise Objektränder oder Schatten zurück, während eine zu große Maske nützlichen Kontext entfernt. Präzise Masken können manuell erstellt oder mit image segmentation generiert werden. Instance segmentation ist besonders nützlich, da sie für jedes Objekt eine separate Maske auf Pixelebene erzeugt.
Ultralytics SAM 2 documentation beschreibt punkt- und box-basierte Segmentierung zur interaktiven Auswahl eines Objekts. Für bekannte Objektklassen gibt die Ultralytics YOLO segmentation task Objektmasken und Polygonkoordinaten zurück. Teams können Polygonmasken auch mit dem Ultralytics Platform annotation editor erstellen und verfeinern, der manuelle, SAM-unterstützte und YOLO-unterstützte Annotation unterstützt.
Mehrere Modellfamilien können das eigentliche Füllen durchführen:
- Klassische Methoden erweitern nahegelegene Pixel, Konturen oder glatte Intensitätsmuster. Die scikit-image restoration API umfasst biharmonisches Inpainting für maskierte Bereiche.
- Generative adversarial networks lernen, durch Wettbewerb zwischen Generator- und Diskriminator-Netzwerken visuell realistische Vervollständigungen zu erzeugen.
- Diffusion models transformieren Rauschen innerhalb der Maske iterativ in Inhalte, die durch das sichtbare Bild und optional durch einen Text-Prompt konditioniert sind.
Image Inpainting im Vergleich zu verwandten Aufgaben#
Inpainting ist durch lokalisierten Ersatz definiert. Verwandte Aufgaben haben andere Ziele:
- Objektentfernung ist eine Anwendung von Inpainting: Die Segmentierung wählt das Objekt aus, und Inpainting füllt das resultierende Loch.
- Image segmentation identifiziert, welche Pixel zu einem Objekt oder einer Klasse gehören, ersetzt sie jedoch nicht.
- Denoising reduziert weit verbreitetes Rauschen, während es im Allgemeinen den Szeneninhalt bewahrt.
- Outpainting erweitert Inhalte über die ursprüngliche Leinwand hinaus, anstatt einen inneren Bereich zu reparieren. Der Google Cloud mask-based image editing guide unterscheidet zwischen dem Einfügen, Entfernen, Erweitern und Ersetzen von Inhalten.
- Super-resolution erhöht die Bildauflösung und -details, anstatt auf eine vom Benutzer definierte Maske abzuzielen.
Das Entfernen von Text folgt demselben Workflow wie die Objektentfernung. Der Text wird maskiert, und dann sagt das System den verdeckten Hintergrund voraus. Wenn der Text ein einzigartiges Gesicht, Symbol oder Dokumentdetail abdeckt, können die Originalinformationen nicht zuverlässig wiederhergestellt werden.
Anwendungen in der Praxis#
Bereinigung von Einzelhandelsbildern: Ein Online-Verkäufer kann ein verirrtes Kabel, eine Reflexion, einen Halteständer oder ein Hintergrundobjekt aus einer Produktfotografie segmentieren und den Bereich inpainten. Kleine Mängel eignen sich möglicherweise für Adobe Content-Aware Fill, während Adobe generative image editing größere, semantisch komplexe Bereiche verarbeiten kann. (helpx.adobe.com)
Bildrestauration: Archive und Bildverarbeitungsteams können Kratzer, Staubflecken, Sensordefekte oder fehlende Pixel in gescannten Fotografien und Mikroskopiebildern maskieren. Dies kann die Lesbarkeit und Präsentation verbessern, aber rekonstruierte Bereiche sollten nicht als beobachtete Beweise behandelt werden. In medizinischen, wissenschaftlichen oder forensischen Bildern könnte eine erfundene Struktur die Interpretation verändern und muss klar dokumentiert werden.
Praktischer Arbeitsablauf und Einschränkungen#
Das folgende Beispiel verwendet YOLO26, um eine Personenmaske zu erstellen, und OpenCV, um diesen Bereich zu füllen. Installieren Sie die Abhängigkeiten mit pip install ultralytics opencv-python numpy.
import cv2
import numpy as np
from ultralytics import YOLO
model = YOLO("yolo26n-seg.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Select the first detected person and convert its polygon to a mask.
class_ids = result.boxes.cls.cpu().numpy().astype(int)
person_index = next(i for i, class_id in enumerate(class_ids) if class_id == 0)
contour = result.masks.xy[person_index].astype(np.int32)
contour = contour.reshape(-1, 1, 2)
image = result.orig_img.copy()
mask = np.zeros(image.shape[:2], dtype=np.uint8)
cv2.drawContours(mask, [contour], -1, 255, cv2.FILLED)
inpainted = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
cv2.imwrite("inpainted.jpg", inpainted)Dies kombiniert die Objektlokalisierung mit dem dokumentierten Muster für das building masks from segmentation contours. Klassisches Füllen kann bei großen Objekten, sich wiederholenden Geometrien, Schatten, Reflexionen oder Gesichtern Schwierigkeiten haben. Generative Methoden handhaben einen breiteren Kontext, können jedoch fabrizierte Details einbringen. Bewahren Sie das Original auf, überprüfen Sie die Ränder bei voller Auflösung und protokollieren Sie wesentliche Bearbeitungen mithilfe von Herkunftsmechanismen wie C2PA Content Credentials, insbesondere wenn Authentizität wichtig ist. Die NIST guidance on synthetic-content transparency betont zudem Herkunft und Kennzeichnung als wichtige Sicherheitsvorkehrungen für bedeutsam veränderte Medien. (c2pa.org)






