Wie verwende ich Pillow, um Bild-Inpainting auf einem Bild durchzuführen?

Nov 10, 2025

Eine Nachricht hinterlassen

Image Inpainting ist eine leistungsstarke Technik im Bereich der Bildverarbeitung, deren Ziel es ist, fehlende oder beschädigte Teile eines Bildes nahtlos auszufüllen. Pillow, eine bekannte Python-Bibliothek zur Bildbearbeitung, kann effektiv zum Durchführen von Bild-Inpainting verwendet werden. Als Kissenlieferant freue ich mich, Ihnen mitzuteilen, wie Sie Pillow für diesen Zweck verwenden können.

Bild-Inpainting verstehen

Bevor wir uns mit der Implementierung befassen, ist es wichtig zu verstehen, was Image Inpainting ist. Bild-Inpainting wird in verschiedenen Szenarien eingesetzt, beispielsweise zum Entfernen unerwünschter Objekte aus einem Bild, zum Wiederherstellen alter und beschädigter Fotos oder zum Ausfüllen von Bereichen, die durch Text oder andere Elemente verdeckt sind. Das Ziel besteht darin, den eingefärbten Bereich mit den umgebenden Pixeln zu verschmelzen, sodass das endgültige Bild natürlich aussieht.

Voraussetzungen

Um Pillow zum Inpainting von Bildern verwenden zu können, muss Python auf Ihrem System installiert sein. Anschließend können Sie Pillow mit installierenPip:

Pip Kissen installieren

Laden und Vorverarbeiten des Bildes

Der erste Schritt bei jeder Bildverarbeitungsaufgabe ist das Laden des Bildes. Pillow bietet hierfür eine einfache Möglichkeit. Hier ist ein Beispiel für das Laden eines Bildes:

aus PIL importieren Bild # Laden Sie das Bild image_path = 'your_image.jpg' image = Image.open(image_path) # Konvertieren Sie das Bild in den RGB-Modus, falls dies noch nicht geschehen ist if image.mode != 'RGB': image = image.convert('RGB')

In diesem Code importieren wir zunächst dieBildModul von Pillow. Dann öffnen wir das Bild mit demoffenVerfahren. Es empfiehlt sich, das Bild in den RGB-Modus zu konvertieren, da dies für einige Vorgänge möglicherweise erforderlich ist.

Definieren des Inpainting-Bereichs

Um Inpainting durchzuführen, müssen wir den Bereich im Bild definieren, den wir füllen möchten. Dies kann durch Erstellen einer binären Maske erreicht werden, bei der die Pixel im einzufärbenden Bereich auf 255 (weiß) und der Rest auf 0 (schwarz) gesetzt werden.

import numpy as np # Erstellen Sie eine leere Maske mit der gleichen Größe wie das Bild mask = Image.new('L', image.size, 0) # Definieren Sie den Bereich, der eingefärbt werden soll (z. B. ein Rechteck) x1, y1, x2, y2 = 100, 100, 200, 200 draw = ImageDraw.Draw(mask) draw.rectangle((x1, y1, x2, y2), Füllung = 255)

In diesem Code erstellen wir zunächst ein neues Graustufenbild (mode='L') der gleichen Größe wie das Originalbild und füllen Sie es mit 0. Dann verwenden wir dasImageDrawModul zum Zeichnen eines Rechtecks ​​auf der Maske, das den einzufärbenden Bereich darstellt.

Einfache Inpainting-Technik: Durchschnittliche benachbarte Pixel

Eine der einfachsten Inpainting-Techniken besteht darin, den Inpaint-Bereich mit der durchschnittlichen Farbe der benachbarten Pixel zu füllen. So können Sie es mit Pillow implementieren:

aus PIL-Import ImageDraw # Konvertieren Sie das Bild und die Maske in Numpy-Arrays image_array = np.array(image) mask_array = np.array(mask) # Holen Sie sich die Koordinaten des eingefärbten Bereichs inpaint_coords = np.where(mask_array == 255) # Iterieren Sie über den eingefärbten Bereich für x, y in zip(*inpaint_coords): # Holen Sie sich die benachbarten Pixelnachbarn = [] für dx in [-1, 0, 1]: für dy in [-1, 0, 1]: wenn dx == 0 und dy == 0: weiter nx, ny = x + dx, y + dy wenn 0 <= nx < image_array.shape[0] und 0 <= ny < image_array.shape[1] und mask_array[nx, ny] == 0: neighbors.append(image_array[nx, ny]) # Berechnen Sie die durchschnittliche Farbe der Nachbarn, wenn Nachbarn: Average_color = np.mean(neighbors, axis = 0).astype(int) image_array[x, y] = Average_color # Konvertieren Sie das Numpy-Array zurück in ein Bild inpaint_image = Image.fromarray(image_array)

In diesem Code konvertieren wir zunächst das Bild und die Maske in Numpy-Arrays. Dann finden wir die Koordinaten des eingefärbten Bereichs mithilfe vonnp.wo. Für jedes Pixel im Inpaint-Bereich finden wir die Nachbarpixel, die nicht im Inpaint-Bereich liegen. Wir berechnen die durchschnittliche Farbe dieser Nachbarn und setzen die Farbe des eingefärbten Pixels auf diese durchschnittliche Farbe. Schließlich konvertieren wir das Numpy-Array zurück in ein Bild.

Erweitertes Inpainting mit Pillow und anderen Bibliotheken

Während die einfache Inpainting-Technik in einigen Fällen funktionieren kann, möchten Sie für komplexere Szenarien möglicherweise fortgeschrittenere Algorithmen verwenden. Ein solcher Algorithmus ist die Fast-Marching-Methode, die mit implementiert werden kannscikit - BildBibliothek in Kombination mit Pillow.

Memory Foam PillowHousehold Pillow

from skimage.restoration import inpaint import numpy as np # Konvertieren Sie das Bild und die Maske in Numpy-Arrays image_array = np.array(image) mask_array = np.array(mask) # Führen Sie Inpainting mit der Fast-Marching-Methode durch inpaint_array = inpaint.inpaint_fmm(image_array, mask_array) # Konvertieren Sie das Numpy-Array zurück in ein Bild inpaint_image = Image.fromarray((inpaint_array * 255).astype(np.uint8))

In diesem Code verwenden wir dieinpaint_fmmFunktion vonscikit - BildInpainting durchführen. Diese Funktion verwendet die schnelle Marschmethode, um den eingefärbten Bereich zu füllen. Nach dem Inpainting konvertieren wir das Numpy-Array zurück in ein Bild.

Speichern des eingefärbten Bildes

Sobald Sie das eingefärbte Bild haben, können Sie es in einer Datei speichern.

# Speichern Sie das eingefärbte Bild. Output_path = 'inpaint_image.jpg' inpaint_image.save(output_path)

Dieser Code speichert das eingefärbte Bild im angegebenen Dateipfad.

Anwendungen des Image Inpainting mit Pillow

Das Inpainting von Bildern mit Pillow hat ein breites Anwendungsspektrum. Im Bereich der Fotografie können damit unerwünschte Objekte wie Personen, Schilder oder Staubflecken aus einem Bild entfernt werden. Bei der Restaurierung historischer Fotos kann es helfen, beschädigte Stellen zu reparieren und die ursprüngliche Schönheit des Fotos wiederherzustellen. Im Bereich der Computergrafik können damit nahtlose Texturen erstellt oder fehlende Teile von 3D-Modellen ausgefüllt werden.

Unsere Kissenprodukte

Als Kissenlieferant bieten wir nicht nur das Wissen über die Verwendung von Kissen für die Bildmalerei an, sondern bieten auch eine Vielzahl hochwertiger Produkte anHaushaltskissenUndMemory Foam-Kissen. Unsere Haushaltskissen sind so konzipiert, dass sie maximalen Schlafkomfort bieten, während sich unsere Memory-Schaum-Kissen an die Form Ihres Kopfes und Nackens anpassen, Druckstellen reduzieren und einen besseren Schlaf fördern.

Kontaktieren Sie uns für den Kauf und die Zusammenarbeit

Wenn Sie an unseren Pillow-Produkten interessiert sind oder Fragen zur Verwendung von Pillow zum Malen von Bildern haben, können Sie uns gerne zum Kauf und zur Zusammenarbeit kontaktieren. Wir sind bestrebt, Ihnen die besten Produkte und Dienstleistungen anzubieten.

Referenzen

  • Offizielle Dokumentation des Kissens
  • Scikit – Bilddokumentation
  • Bildverarbeitungslehrbücher zu Bild-Inpainting-Algorithmen

Anfrage senden