DE102020001165A1 - Automatische Synthese eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung - Google Patents

Automatische Synthese eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung Download PDF

Info

Publication number
DE102020001165A1
DE102020001165A1 DE102020001165.9A DE102020001165A DE102020001165A1 DE 102020001165 A1 DE102020001165 A1 DE 102020001165A1 DE 102020001165 A DE102020001165 A DE 102020001165A DE 102020001165 A1 DE102020001165 A1 DE 102020001165A1
Authority
DE
Germany
Prior art keywords
area
pixels
clusters
context
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020001165.9A
Other languages
English (en)
Inventor
Sohrab Amirghodsi
Elya Shechtman
Derek Novo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Adobe Inc filed Critical Adobe Inc
Publication of DE102020001165A1 publication Critical patent/DE102020001165A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20092Interactive image processing based on input by user
    • G06T2207/20104Interactive definition of region of interest [ROI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20156Automatic seed setting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

Ausführungsformen der vorliegenden Erfindung stellen Systeme, Verfahren und Computerspeichermedien zum automatischen Synthetisieren eines contentsensitiven Entnahmebereiches für einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen, bereit. Sind ein Quellbild und ein Loch (oder ein anderer Zielbereich zur Füllung) gegeben, so kann ein Entnahmebereich synthetisiert werden, indem ein Streifen von Pixeln, die das Loch umgeben, identifiziert wird, diese Pixel auf Grundlage einer oder mehrerer Kenngrößen (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus und dergleichen) geclustert werden, jedes der sich ergebenden Cluster als Vordergrundpixel an einen Segmentierungsalgorithmus weitergereicht wird und die sich ergebenden Pixel vereinigt werden, um den Entnahmebereich zu bilden. Der Entnahmebereich kann in einer Randbedingungsmaske gespeichert und an einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen, weitergereicht werden, um eine Füllung für das Loch (oder einen anderen Zielbereich) aus Patches, die aus dem synthetisierten Entnahmebereich entnommen sind, zu synthetisieren.

Description

  • Hintergrund
  • Beim Bearbeiten von Bildern möchte ein Nutzer gegebenenfalls ein unerwünschtes Objekt aus einem Bild entfernen. Ein Fotograf kann beispielsweise ein unerwünschtes Subjekt, visuelle Artefakte, so beispielsweise solche, die sich aus einer Beschädigung oder digitalen Effekten ergeben, und dergleichen erfassen. Das bloße Löschen eines unerwünschten Bereiches hinterlässt jedoch ein Loch in dem Bild. Einige Digitalbildverarbeitungswerkzeuge können das Loch automatisch mit übertragenen Patches, die aus anderen Bereichen des Bildes entnommen sind, füllen. Einige Werkzeuge können beispielsweise einen randomisierten Algorithmus nutzen, um ungefähre Nächster-Nachbar-Treffer zwischen Bildpatches zu identifizieren. Als solches können einige Werkzeuge eine zusammengesetzte Füllung aus den übertragenen Bildpatches erstellen. Auf diese Weise können Nutzer fehlende Abschnitte eines Bildes automatisch füllen. Herkömmliche Techniken füllen das Loch in den meisten Fällen jedoch mit falschem Bildcontent und erzeugen ein unansehnliches und unnatürliches Ergebnis.
  • Zusammenfassung
  • Ausführungsformen der vorliegenden Erfindung betreffen Techniken zum automatischen Synthetisieren eines contentsensitiven Entnahmebereiches für einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen, oder zum Ausdehnen eines bezeichneten Bereiches eines Bildes, so beispielsweise eines nutzerseitig identifizierten Bereiches, der ein Objekt in dem Bild umschließt. Sind ein Quellbild und ein Loch (oder ein anderer Zielbereich zur Füllung) gegeben, so kann ein Entnahmebereich synthetisiert werden, indem ein Streifen von Pixeln, die das Loch umgeben, identifiziert wird, diese Pixel auf Grundlage einer oder mehrerer Kenngrößen (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus und dergleichen mehr) geclustert werden, jedes der sich ergebenden Cluster als Vordergrundpixel an einen Segmentierungsalgorithmus weitergereicht wird und die sich ergebenden Pixel vereinigt werden, um den Entnahmebereich zu bilden. Der Entnahmebereich kann in einer Randbedingungsmaske gespeichert und für einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen, bereitgestellt werden, um eine Füllung für das Loch (oder einen anderen Zielbereich) aus Patches, die aus dem synthetisierten Entnahmebereich entnommen sind, zu synthetisieren.
  • Als solches kann ein Nutzer unter Nutzung der hier beschriebenen Implementierungen contentsensitive Füllungen effizient und effektiv synthetisieren.
  • Figurenliste
  • Die vorliegende Erfindung wird nachstehend detailliert anhand der begleitenden Zeichnungsfiguren beschrieben.
    • 1 ist ein Blockdiagramm eines exemplarischen Rechensystems zum automatischen Synthetisieren eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 2 zeigt ein Beispiel für das Clustern von Pixeln eines Streifens von Anfangskontextpixeln, die ein Loch umgeben, entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 3 zeigt ein Beispiel für geclusterte Pixel eines Streifens, die ein Loch umgeben, entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 4 ist ein Beispiel für flächenangepasste Vordergrundbereiche und eine Pufferung entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 5 ist eine exemplarische Entnahmebereichssynthesepipeline entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 6 zeigt exemplarische Quellbilder und einen Vergleich von contentsensitiven Füllungen, die sich aus herkömmlichen Entnahmebereichen und synthetisierten contentsensitiven Entnahmebereichen ergeben, entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 7 ist ein Flussdiagramm zur Darstellung eines Verfahrens zum Bilden eines Entnahmebereiches eines Bildes entsprechend verschiedenen Ausführungsformen der vorliegenden Erfindung.
    • 8 ist ein Flussdiagramm zur Darstellung eines weiteren Verfahrens zum Bilden eines Entnahmebereiches eines Bildes entsprechend verschiedenen Ausführungsformen der vorliegenden Erfindung.
    • 9 ist ein Blockdiagramm eines exemplarischen Rechensystems zum automatischen Synthetisieren einer contentsensitiven Füllung entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 10 zeigt einen exemplarischen zum contentsensitiven Füllen gedachten Arbeitsraum entsprechend Ausführungsformen der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm einer exemplarischen Rechenumgebung, die zur Nutzung beim Implementieren von Ausführungsformen der vorliegenden Erfindung geeignet ist.
  • Detailbeschreibung
  • Übersicht
  • Während der Fotobearbeitung möchte ein Nutzer oftmals ein unerwünschtes Objekt aus einem Bild entfernen. Ein herkömmliches Werkzeug, um dies zu bewerkstelligen, ist ein CAF-Werkzeug (Content-Aware Filling CAF, contentsensitives Füllen). Allgemein kann ein CAF-Werkzeug einem Nutzer ermöglichen, einen unerwünschten Bereich des Bildes auszuwählen, zu markieren, zu zeichnen oder auf andere Weise anzugeben. Herkömmliche Techniken zum contentsensitiven Füllen entfernen den unerwünschten Bereich und füllen das sich ergebende Loch automatisch unter Nutzung von Entnahmen aus anderen Teilen des Bildes. Ein CAF-Algorithmus strebt danach, ein Zielbild (beispielsweise das Loch) ungefähr zu rekonstruieren, indem er kleine, quadratische Patches aus Pixeln eines Quellbildes (beispielsweise einem Entnahmebereich) umordnet und (mit Überlappungen) zusammenstückelt. Das CAF strebt danach, einen ungefähr passenden Patch (das heißt den nächsten Nachbarn) aus dem Entnahmebereich für jeden Patch eines Zielbildes (das heißt das Loch zur Füllung) zu identifizieren. Kandidatenpatches aus dem Quellbild werden auf interaktive Weise ausgewählt, getestet und verfeinert. Die sich ergebende Rekonstruktion kann das Loch so füllen, dass es aussieht, als wäre das unerwünschte Objekt nie da gewesen.
  • Herkömmliche zum contentsensitiven Füllen gedachte Werkzeuge weisen jedoch verschiedene Nachteile auf. In einer merklichen Anzahl von Fällen wird das Loch beispielsweise mit falschem Bildcontent gefüllt, was ein unansehnliches und unnatürliches Ergebnis erzeugt. Synthetisierte Texturen, Linien oder Farben in einer Füllung können beispielsweise inkonsistent, unzusammenhängend oder verwischt sein. Einige Teile eines Loches sind des Weiteren unrichtigerweise oftmals mit Content gefüllt, der dort augenscheinlich nicht hingehört, was eine unplausible, unerwünschte Füllung ergibt. Als solches besteht Bedarf an Techniken, die contentsensitive Füllungen verbessern.
  • Entsprechend betreffen Ausführungsformen der vorliegenden Erfindung Techniken zum automatischen Synthetisieren eines contentsensitiven Entnahmebereiches für einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen. Sind ein Quellbild und ein Loch (oder ein anderer Zielbereich zur Füllung, sei er nun nutzerseitig ausgewählt, automatisch identifiziert oder anderes) gegeben, so kann ein Entnahmebereich synthetisiert werden, indem ein Streifen von Pixeln, die das Loch umgeben, identifiziert wird, diese Pixel auf Grundlage einer oder mehrerer Kenngrößen (beispielsweise - Farbe, x/y-Koordinaten, Tiefe, Fokus und dergleichen) geclustert werden, jedes der sich ergebenden Cluster als Vordergrundpixel für einen Segmentierungsalgorithmus bereitgestellt wird und die sich ergebenden Pixel vereinigt werden, um den Entnahmebereich zu bilden. Der Entnahmebereich ist in dem Sinne contentsensitiv, dass er auf Grundlage einer Analyse des Contents (beispielsweise von Pixeln, Pixelkenngrößen und dergleichen) des Quellbildes synthetisiert ist. Der Entnahmebereich kann in einer Randbedingungsmaske gespeichert und an einen Lochfüllalgorithmus, so beispielsweise zum contentsensitiven Füllen, weitergereicht werden, um eine Füllung für das Loch (oder einen anderen Zielbereich) aus Patches, die aus dem synthetisierten Entnahmebereich entnommen sind, zu synthetisieren.
  • Bei einigen Ausführungsformen kann ein Streifen, der ein Loch (oder einen anderen Zielbereich) umgibt, als Anfangskontextbereich identifiziert werden, um das Synthetisieren des Entnahmebereiches zu erleichtern. Allgemein ist wahrscheinlich, dass die Pixel, die ein Loch umgeben, Kenngrößen aufweisen, die zum Füllen des Loches genutzt werden können. Diese Bereiche enthalten tendenziell Content, der farblich zum Kontext des Loches ähnlich ist. Indem der Entnahmebereich auf Content beschränkt wird, der farblich zum Content in dem Loch (das heißt zum Kontext des Loches) ähnlich ist, ist wahrscheinlicher, dass ein Patchsynthesealgorithmus Entnahmebereiche aufweist, die semantisch zu abgebildeten Objekten, die mit dem Loch überlappen, ähnlich sind. Bei einigen Ausführungsformen kann der Streifen als Breite von Pixeln, die das Loch umgeben, identifiziert werden. Die Breite des Streifens kann vorbestimmt sein, nutzerseitig ausgewählt werden oder anderes. Bei einigen Ausführungsformen können ein oder mehrere morphologische Vorgänge (beispielsweise auf das Loch) angewendet werden, um den Streifen zu generieren. Der sich ergebende Streifen von Pixeln, die das Loch umgeben, kann als Anfangskontext für das Loch (beispielsweise als Streifen von Anfangskontextpixeln) benutzt werden.
  • Bei einigen Ausführungsformen kann das Clustern auf den Streifen von Anfangskontextpixeln angewendet werden. In vielen Fällen überlappt ein Loch mit Bildbereichen, die mehrere Farbkenngrößen enthalten. Ein ausgewähltes Loch aus einer Szene im Freien kann in dem Streifen beispielsweise einige Kontextpixel, die Himmel enthalten, und andere Kontextpixel, die Erdfarbtöne enthalten, beinhalten. In einigen Fällen kann das Anwenden eines Vordergrundsegmentierungsalgorithmus auf den Streifen tendenziell mehrheitlich dargestellte Farben entlang des Kontextstreifens gegenüber weniger dargestellten Farben begünstigen. Der Vordergrundsegmentierungsalgorithmus kann tendenziell Flächen ausgeben, die ausschließlich oder meistens Mehrheitsfarben entlang des Streifens darstellen. Um diese mögliche Minderdarstellung auszugleichen, kann vor dem Anwenden der Vordergrundsegmentierung ein Clustern auf den Streifen von Anfangskontextpixeln angewendet werden, um gleiche Pixel im Anfangskontext zu gruppieren. Es kann ein beliebiger Typ der Clusterung angewendet werden, so beispielsweise eine k-means-Clusterung, eine mean-shift-Clusterung, eine spektrale Clusterung, eine agglomerative Clusterung und/oder andere. Bei einigen Ausführungsformen kann das Clustern auf Grundlage einer beliebigen Anzahl und einer beliebigen Kombination von Bildkenngrößen und/oder zugehöriger Information (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus, Frequenz bzw. Häufigkeit, semantische Masken und dergleichen mehr) durchgeführt werden. Das Clustern kann beispielsweise in mehreren Dimensionen (beispielsweise fünfdimensionales Clustern im RBG-Raum und Bildraum) durchgeführt werden. Es kann eine bezeichnete Anzahl von Clustern identifiziert (beispielsweise vorab bestimmt, nutzerseitig ausgewählt und dergleichen) werden, Cluster können zusammengeführt werden, um zu der bezeichneten Anzahl zu gelangen, und Cluster, die nicht an das Loch angrenzen, können beschnitten bzw. abgeschnitten werden. Bei einigen Ausführungsformen kann vor dem Clustern des Streifens von Kontextpixeln ein Verwischen auf das Quellbild und/oder den Anfangskontext angewendet werden, um dem Clusterungsalgorithmus das Ausgeben von Bereichen zu erleichtern, bei denen wahrscheinlicher ist, dass sie zusammenhängen. Es kann ein beliebiger Typ von Verwischen angewendet werden, so beispielsweise das Gauß'sche Verwischen (Gaussian blurring), das bilaterale Verwischen, das mittelnde Filtern oder anderes.
  • Zum Identifizieren von Bereichen eines Quellbildes, die farblich zu den Kontextpixeln in dem Streifen ähnlich sind, kann für jedes Cluster von Kontextpixeln aus dem Streifen eine Vordergrundsegmentierung, um Vordergrund- und Hintergrundpixel des Quellbildes zu identifizieren, unter Nutzung der Kontextpixel als Samen für exemplarische Vordergrundpixel angewendet werden. Pixel, die an ein Loch angrenzen, können daher als Samen für Vordergrundpixel an einen Vordergrundsegmentierungsalgorithmus weitergereicht werden, und es kann der Vordergrundsegmentierungsalgorithmus eine Vordergrundbildmaske ausgeben, die angibt, welche Pixel des Quellbildes zum Vordergrund gehören und welche Pixel zum Hintergrund gehören. Die sich ergebenden Vordergrundpixel können benutzt werden, um einen Bereich des Quellbildes darzustellen, der zu den Pixeln innerhalb des Streifens von Kontextpixeln ähnlich ist. Der Vordergrundsegmentierungsalgorithmus kann für jedes Cluster von Pixeln in dem Streifen von Kontextpixeln getrennt ausgeführt würden und dabei bei einer gegebenen Iteration die Pixel in einem gegebenen Cluster als Vordergrundpixel behandeln. Effektiv dient die Vordergrundsegmentierung dazu, Cluster von Kontextpixeln nach außen zu erweitern, um andere ähnliche Pixel in dem Quellbild aufzunehmen. Das Ausdehnen des relevanten Kontextes kann Lochfüllalgorithmen dabei unterstützen, die Anzahl von möglichen brauchbaren Patches zu erhöhen und das Risiko, eine Füllung mit augenscheinlichen Wiederholungen zu synthetisieren, zu verringern.
  • Allgemein stellt die Nutzung von Clustern von Kontextpixeln als Samen für eine Vordergrundsegmentierung eine Verbesserung gegenüber bisherigen Techniken dar. Als Vorbereitung wählen Entwickler von Lochfülltechniken oftmals zwischen globalen Vorgängen (beispielsweise Vorgängen, die über einen gesamten Kontextbereich hinweg auftreten) und lokalen Vorgängen (beispielsweise durch Zerlegen des Kontextbereiches in unzusammenhängende bzw. disparate Bereiche, die getrennt verarbeitet werden). Bei diesem Szenario kann das globale Ausführen eines Vordergrundsegmentierungsalgorithmus (beispielsweise über einen Gesamtkontextbereich) als stumpfe bzw. ineffektive Technik betrachtet werden, die gegebenenfalls die Genauigkeit beschränkt, während das lokale Ausführen eines Vordergrundsegmentierungsalgorithmus (beispielsweise über unzusammenhängende bzw. disparate Kontextbereiche hinweg) als unerwünscht kostenintensiv betrachtet werden kann. Das Clustern der Kontextpixel durch irgendeinen globalen Kennwert zu einer beschränkten Anzahl von Clustern ermöglicht jedoch den Betrieb eines vergleichsweise kostenintensiven Vordergrundsegmentierungsalgorithmus an jedem der Cluster, was die Vorteile der globalen und lokalen Technikern synthetisiert.
  • Bei einigen Ausführungsformen kann der Vordergrundsegmentierungsalgorithmus Cluster von Kontextbereichen ausgeben, die zueinander unverhältnismäßig sind. Ein Lochfüllalgorithmus, der einen Entnahmebereich mit unverhältnismäßigen Clustern benutzt, begünstigt gegebenenfalls größere Cluster gegenüber kleineren Clustern, indem er eine unverhältnismäßige Darstellung bezüglich größerer Cluster beinhaltet. Diese unverhältnismäßige Darstellung kann Auswirkungen auf einen Lochfüllprozess haben, der eine gleichmäßige Entnahme nutzt, indem er die Disparität in der Darstellung vergrößert. Minderdargestellte Cluster passen daher wahrscheinlicher zu Bereichen, die aus gut dargestellten und/oder überdargestellten Clustern abgerufen sind, was zu unplausiblen Lösungen führen kann.
  • Als solches können bei einigen Ausführungsformen die Flächen des Bildes, die die Cluster der Kontextpixel enthalten, hinsichtlich der Proportionalität angepasst werden. Beispielsweise kann ein bezeichneter Kennwert eines Clusters von Kontextpixeln identifiziert werden (beispielsweise ein Ausdehnungsverhältnis, das die erweiterte Fläche von Vordergrundpixeln, die von dem Segmentierungsalgorithmus ausgegeben werden, mit der Anfangsfläche von Vordergrundpixeln, die in den Segmentierungsalgorithmus eingegeben werden, vergleicht, ein Verhältnis, das Umfänge und irgendeinen anderen Aspekt der Anfangs- und erweiterten Flächen vergleicht, und dergleichen). Der identifizierte Kennwert für das Cluster kann als Zielkennwert für die erneute Ausführung des Vordergrundsegmentierungsalgorithmus für die anderen Cluster von Kontextpixeln genutzt werden. Bei einigen Ausführungsformen kann das größte (oder kleinste, medianbezogene, durchschnittliche und dergleichen) Ausdehnungsverhältnis als Zielverhältnis benutzt werden. Um die Größe eines ausgedehnten Clusters von Kontextpixeln zu ändern, kann die entsprechende Anfangsfläche von Kontextpixeln durch den Segmentierungsalgorithmus unter Nutzung einer Anpassung, die ein Ähnlichkeitskriterium bzw. Ähnlichkeitskriterien verringert, erneut behandelt werden, wodurch mehr benachbarte Pixel identifiziert werden (oder umgekehrt). Das Ähnlichkeitskriterium bzw. die Ähnlichkeitskriterien kann/können beispielsweise einen Glättungsterm beinhalten, der Gewichtungen zum Identifizieren von benachbarten Pixeln (beispielsweise den Nachbarschaftsterm bei GraphCut) identifiziert. Ein Vordergrundsegmentierungsalgorithmus kann ein- oder mehrmals erneut ausgeführt werden, wobei das Ähnlichkeitskriterium bzw. die Ähnlichkeitskriterien bei jeder Iteration aktualisiert wird/werden. Der Prozess kann für eine bezeichnete Anzahl von Iterationen fortgesetzt werden, bis man den Zielkennwert innerhalb einer Toleranz oder Ähnlichkeitsschwelle oder anderes erreicht. Als solches können die Cluster von Kontextpixeln Flächen aufweisen, die im Wesentlichen proportional zueinander sind.
  • Allgemein besteht ein Kompromiss zwischen der Größe des Ursprungsstreifens von Kontextpixeln und der Notwendigkeit, die Größe von Clustern von erweiterten Kontextbereichen, die durch den Vordergrundsegmentierungsalgorithmus generiert werden, zu erhöhen. Bei Ausführungsformen, die einen vergleichsweise kleineren Streifen nutzen, weisen einige Anfangscluster gegebenenfalls nicht genug Daten zur Bereitstellung für den Vordergrundsegmentierungsalgorithmus mit genügend Kontext auf, um ein sinnvolles Cluster von ähnlichen Kontextpixeln im Quellbereich zu identifizieren. Demgegenüber gilt: Je größer der Streifen ist, desto wahrscheinlicher identifiziert der Vordergrundsegmentierungsalgorithmus alle ähnlichen Kontextpixel in dem Quellbereich oder einen Großteil hiervon. Die Größe des Streifens kann weiter beschränkt werden, da eine Streifengröße, die zu groß ist, den Vordergrundsegmentierungsalgorithmus und/oder den Clusteralgorithmus einschränken und/oder auf andere Weise zu einer Latenz führen kann. Als solches können einige Ausführungsformen eine Gestaltung implementieren, die ein Gleichgewicht zwischen der Streifengröße und einem oder mehreren der nachfolgend genannten Punkte herstellt, nämlich dem Vergrößern der Größe der Cluster von Kontextbereichen, die von dem Vordergrundsegmentierungsalgorithmus generiert werden, der Anzahl von Iterationen des Vordergrundsegmentierungsalgorithmus, der entsprechenden Toleranz oder Ähnlichkeitsschwelle oder anderes.
  • Die sich ergebenden Cluster von Kontextpixeln können miteinander vereinigt werden, um einen Entnahmebereich zu bilden. Der vereinigte Bereich kann beispielsweise dafür benutzt werden, eine Einzel-Kanal-Binärmaske zu bilden, die zum Bezeichnen dessen genutzt werden kann, welche Pixel für die Nutzung bei einem Lochfüllalgorithmus brauchbar sind. Bei einigen Ausführungsformen kann der Entnahmebereich verarbeitet werden, um kleine Löcher und Flecken, die bei einem Lochfüllalgorithmus negative Auswirkungen haben, zu entfernen. Bei einigen Lochfüllalgorithmen ist beispielsweise ein Patch, der ein Loch berührt, unbrauchbar, weshalb ein Entnahmebereich, der viele kleine Löcher (ähnlich beispielsweise einem Schweizer Käse) enthält, die Anzahl von möglicherweise brauchbaren Patches, die aus dem Entnahmebereich generiert werden können, verringern kann. Flecken, die außerhalb eines Entnahmebereiches auftreten, können während des Lochfüllens zudem zu überflüssigen Berechnungen führen. Als solches kann der Entnahmebereich auf eine beliebige Anzahl von Arten verarbeitet werden, so beispielsweise mittels Durchführen eines oder mehrerer morphologischer Vorgänge, einer medianbezogenen Filterung, irgendeiner anderen Prozedur, die kleine Löcher füllt und/oder Flecken entfernt, einer Kombination hieraus oder anderes. Bei einigen Ausführungsformen kann ein Schließvorgang durchgeführt werden, um kleine Löcher im Entnahmebereich zu schließen, und es kann ein Öffnungsvorgang zum Entfernen von Flecken durchgeführt werden. Der Schließvorgang kann zunächst durchgeführt werden, da kleine Löcher beim Lochfüllen oftmals schädlicher sind. Diese und weitere Abwandlungen können innerhalb des Umfanges der vorliegenden Offenbarung implementiert sein.
  • Bei einigen Ausführungsformen kann der sich ergebende Entnahmebereich mit einem Streifen von Pixeln um das Loch (oder einen anderen Zielbereich) herum gepuffert werden. Es kann beispielsweise möglich sein, dass der synthetisierte Entnahmebereich nicht alle Pixel, die an das Loch angrenzen, beinhaltet. Bei einigen Ausführungsformen können zudem Cluster, die das Loch nicht berühren, aber gleichwohl Pixel enthalten, die nahe an dem Loch sind, beschnitten bzw. abgeschnitten werden. In vielen Fällen sind die wichtigsten Pixel für die Entnahme jedoch diejenigen, die am nächsten an dem Loch sind. Ein Pufferungsstreifen von Pixeln, die das Loch umgeben, kann daher zu dem Entnahmebereich hinzugefügt werden. Der Pufferungsstreifen kann als Breite von Pixeln, die das Loch umgeben, identifiziert werden. Die Breite des Pufferungsstreifens kann vorbestimmt, nutzerseitig ausgewählt oder anderes sein.
  • Der sich ergebende Entnahmebereich (beispielsweise die Binärmaske) kann in einer Randbedingungsmaske gespeichert oder auf andere Weise mit dieser verknüpft werden und kann an einen Lochalgorithmus, so beispielsweise zum contentsensitiven Füllen, weitergereicht werden, um eine Füllung für das Loch (oder einen anderen Zielbereich) aus Patches zu synthetisieren, die aus dem synthetisierten Entnahmebereich entnommen sind. Als solches können contentsensitive Füllungen unter Nutzung der hier beschriebenen Implementierungen effizient und effektiv aus einem contentsensitiven Entnahmebereich synthetisiert werden. Obwohl Ausführungsformen anhand eines Lochfüllalgorithmus beschrieben werden, können hier beschriebene Techniken in einem beliebigen Algorithmus implementiert werden, der einen Bereich eines Bildes zur Füllung eines weiteren Bereiches (beispielsweise spot healing) oder anderes entnimmt.
  • Des Weiteren können hier beschriebene Techniken dafür implementiert werden, einen bezeichneten Bereich eines Bildes auszudehnen. Eine Identifizierung eines Objektes aus einem Bild (beispielsweise bei einem nutzerseitig ausgewählten Bereich, der ein Objekt umschließt, einem automatisch detektierten Bereich, bei dem eine Objektdetektion genutzt wird, und dergleichen) kann Grenzen bezeichnen, die Abschnitte des Objektes abschneiden. Hier beschriebene Techniken als solche können angewendet werden, um einen bezeichneten Bereich eines Bildes, so beispielsweise einen Bereich eines Objektes in dem Bild, auszudehnen, um ähnlichen Content, der unbeabsichtigterweise weggelassen worden ist, aufzunehmen. Die letztgenannte Anwendung kann dafür benutzt werden, die Genauigkeit der Objektauswahl und Objektidentifizierung zu verbessern.
  • Nach erfolgter Kurzbeschreibung einer Übersicht von Aspekten der vorliegenden Erfindung werden verschiedene Begriffe, die in der vorliegenden Beschreibung benutzt werden, eingeführt. Obwohl in der vorliegenden Beschreibung weitere Details im Zusammenhang mit verschiedenen Begriffen bereitgestellt werden, sind nachstehend allgemeine Beschreibungen einiger Begriffe aufgeführt, um ein besseres Verständnis der hier offenbarten Ideen zu ermöglichen.
  • Patchsynthese: Einige Digitalbildverarbeitungswerkzeuge können ein Zielbild aus Patches, die aus anderen Bereichen des Bildes entnommen sind, automatisch synthetisieren. Allgemein bezeichnet die Patchsynthese diese Rekonstruktion eines Zielbildes aus Patches, die aus einem Quellbild entnommen sind. Im Zusammenhang mit dem Lochfüllen kann das zu synthetisierende Zielbild ein Loch in einem Bild sein, und das Quellbild - oder der Entnahmebereich - können der Rest des Bildes oder irgendein Abschnitt hiervon sein. Eine bestimmte Patchsynthesetechnik nutzt einen randomisierten Algorithmus zum Identifizieren von ungefähren Nächster-Nachbar-Treffern zwischen Bildpatches und konstruiert eine zusammengesetzte Füllung aus den identifizierten Bildpatches. Derartige Techniken zum Identifizieren der ungefähren Nächster-Nachbar-Treffer sind auch als Patchabgleich (patch matching) bekannt, und die sich ergebende zusammengesetzte Füllung ist auch als contentsensitive (content-aware) Füllung bekannt.
  • Loch: Bisweilen beinhaltet ein Foto oder ein anderes Bild ein unerwünschtes Objekt, so beispielsweise ein unerwünschtes Subjekt, visuelle Artefakte, so beispielsweise solche, die sich aus einer Beschädigung oder digitalen Effekten ergeben, und dergleichen. Das bloße Löschen eines unerwünschten Bereiches würde jedoch ein Loch in dem Bild hinterlassen. Im Sinne des Vorliegenden kann der Begriff „Loch“ den Bereich des Bildes zur Füllung unabhängig davon bezeichnen, ob der Bereich tatsächlich gelöscht worden ist. Auf ähnliche Weise kann der Begriff „Loch“ einen entsprechenden unbrauchbaren Entnahmebereich in einer Maske, so beispielsweise einer Randbedingungsmaske, bezeichnen.
  • Maske: Im Sinne des Vorliegenden entspricht eine Maske einer oder mehreren Datenstrukturen, die bestimmte Pixel für eine bestimmte Nutzung identifizieren und/oder bezeichnen. Eine Maske kann beispielsweise mit denselben Dimensionen wie ein zu bearbeitendes Ursprungsbild initialisiert sein. Die Maske kann Pixel in einem Loch zur Füllung, Pixel in einem brauchbaren Entnahmebereich, Pixel in einem verkleinerten Bereich, Pixel in einem Randbereich (fringe) und dergleichen identifizieren. Bei einem Beispiel kann eine Nutzerauswahl genutzt werden, um eine Randbedingungsmaske zu generieren, die einen brauchbaren Entnahmebereich in einem Bild bezeichnet. Bei einer Implementierung kann die Randbedingungsmaske einen Zustand für jedes Pixel codieren, so beispielsweise für Pixel in einem brauchbaren Entnahmebereich (beispielsweise unter Nutzung einer Zufallszahl wie 1, des Wertes des Pixels und dergleichen), für Pixel in einem unbrauchbaren Entnahmebereich (beispielsweise 0), für Pixel in einem Loch, für Pixel bei einer nutzerseitig spezifizierten Randbedingung und dergleichen mehr. Weitere Abwandlungen erschließen sich einem Fachmann auf dem Gebiet.
  • Erweitern: Im Sinne des Vorliegenden bezeichnet der Begriff „Erweitern“ das Veranlassen dessen, dass eine größere Fläche bedeckt wird. Ein Anfangskontextbereich kann beispielsweise derart erweitert werden, dass er eine größere Fläche bedeckt, indem der Anfangskontextbereich als Samen für einen Vordergrundsegmentierungsalgorithmus genutzt wird. Bei diesem Beispiel kann der Anfangskontextbereich erweitert werden, um eine größere Fläche zu bedecken, und zwar unabhängig davon, ob die größere Fläche benachbart zu dem Anfangskontextbereich oder auf andere Weise mit ihm zusammenhängend ist.
  • Ähnlichkeitstransformation: Allgemein ist eine Ähnlichkeitstransformation eine formwahrende Transformation, die eines oder mehrere von einer Translation, einer Rotation, einer Skalierung und/oder einer Reflexion (das heißt Spiegelung) beinhalten kann.
  • Exemplarische Umgebung für die Synthese von Entnahmebereichen
  • 1 ist ein Blockdiagramm einer exemplarischen Umgebung 100, die zur Nutzung beim Implementieren von Ausführungsformen der Erfindung geeignet ist. Allgemein ist die Umgebung 100 zur Bildbearbeitung geeignet und erleichtert unter anderem das automatische Synthetisieren eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung. Die Umgebung 100 beinhaltet eine Nutzervorrichtung 110, die eine Fotobearbeitungsanwendung 120 mit einer Nutzerschnittstelle 125, einer Entnahmebereichssynthesepipeline 130 und einer zum contentsensitiven Füllen gedachten Engine 190 aufweist. Die Nutzervorrichtung 110 kann eine beliebige Art von Rechenvorrichtung sein, die zum Erleichtern einer Bildbearbeitung in der Lage ist. Bei einer Ausführungsform kann die Nutzervorrichtung 110 beispielsweise eine Rechenvorrichtung sein, so beispielsweise die Rechenvorrichtung 1100, die anhand 11 noch beschrieben wird. Bei gewissen Ausführungsformen kann die Nutzervorrichtung 110 ein persönlicher Computer (PC), ein Laptopcomputer, eine Workstation, eine mobile Rechenvorrichtung, ein PDA, ein zellenbasiertes Telefon oder dergleichen sein. Bei der in 1 dargestellten Ausführungsform kommunizieren die Nutzerschnittstelle 125, die Entnahmebereichssynthesepipeline 130 und die zum contentsensitiven Füllen gedachte Engine 190 miteinander.
  • Bei der in 1 dargestellten Ausführungsform beinhaltet die Nutzervorrichtung 110 die Nutzerschnittstelle 125, die Entnahmebereichssynthesepipeline 130 und die zum contentsensitiven Füllen gedachte Engine 190. Eine beliebige dieser Komponenten oder auch alle können in eine Anwendung oder ein Add-on oder Plug-in für eine Anwendung, so beispielsweise die Fotobearbeitungsanwendung 120, eingebaut oder integriert sein. Die Fotobearbeitungsanwendung 120 kann allgemein eine beliebige Anwendung sein, die eine Foto- oder Bildbearbeitung erleichtern kann. Die Anwendung 120 kann eine eigenständige Anwendung, eine mobile Anwendung, eine Webanwendung oder dergleichen sein. Bei einigen Implementierungen umfasst/umfassen die Anwendung / die Anwendungen eine Webanwendung, die in einem Webbrowser ausgeführt werden kann und die wenigstens teilweise serverseitig gehostet werden kann. Zusätzlich oder anstatt dessen kann/können die Anwendung / die Anwendungen eine eigens vorgesehene Anwendung umfassen. In einigen Fällen kann die Anwendung in das Betriebssystem (beispielsweise als Dienst) integriert sein. Eine exemplarische Anwendung, die zur Fotobearbeitung benutzt werden kann, ist ADOBE© PHOTOSHOP©, das eine Grafikbearbeitungsanwendung ist. Obwohl die Nutzerschnittstelle 125, die Entnahmebereichssynthesepipeline 130 und die zum contentsensitiven Füllen gedachte Engine 190 hier allgemein derart diskutiert werden, dass sie auf der Nutzervorrichtung 110 befindlich sind, können beliebige oder alle Komponenten oder ein Teil hiervon in einigen Fällen zusätzlich oder alternativ auch in das Betriebssystem (beispielsweise als Dienst) oder in einen Server (beispielsweise einen Remote-Server) integriert sein. Diese und andere Komponenten können miteinander über ein Netzwerk kommunizieren, das ohne Beschränkung ein oder mehrere Ortsbereichsnetzwerke (LANs) und/oder Großbereichsnetzwerke (WANs) beinhalten kann. Derartige vernetzte Umgebungen sind in Firmen, unternehmensweiten Computernetzwerken, Intranets und dem Internet gängig.
  • Allgemein können ein Quellbild und ein Zielbereich des Bildes zur Füllung (beispielsweise ein Loch) identifiziert oder bereitgestellt werden, oder es kann auf andere Weise hierauf zugegriffen werden. Die Nutzerschnittstelle 125 kann einem Nutzer beispielsweise ermöglichen, das Quellbild und/oder den Zielbereich zu spezifizieren. Die Nutzerschnittstelle 125 kann unter Nutzung beliebiger geeigneter Interaktionselemente implementiert sein. Bei einigen Ausführungsformen kann die Nutzerschnittstelle 125 der Nutzerschnittstelle 930 von 9 und/oder dem zum contentsensitiven Füllen gedachten Arbeitsraum 1000 von 10 entsprechen. Bei einem anderen Beispiel kann das Quellbild automatisch analysiert werden, um Distraktoren, Anomalien, Beschädigungen oder andere Mängel in dem Bild zu detektieren, und es können die detektierten Bereiche als Löcher markiert werden. Die Entnahmebereichssynthesepipeline 130 kann einen contentsensitiven Entnahmebereich auf Grundlage des Quellbildes und des Zielbereiches des Quellbildes automatisch synthetisieren. Die zum contentsensitiven Füllen gedachte Engine 190 kann automatisch eine contentsensitive Füllung für den Zielbereich synthetisieren, indem sie aus dem contentsensitiven Entnahmebereich entnimmt. Die zum contentsensitiven Füllen gedachte Engine 190 kann unter Nutzung eines beliebigen geeigneten Lochfüllalgorithmus implementiert werden. Bei einigen Beispielen kann die zum contentsensitiven Füllen gedachte Engine 190 der zum contentsensitiven Füllen gedachten Engine 960 von 9 entsprechen.
  • Obwohl Ausführungsformen hier derart beschrieben sind, dass sie einen Entnahmebereich synthetisieren, aus dem Patches für einen Lochfüllalgorithmus entnommen werden können, kann die Synthesepipeline 130 (oder irgendein Abschnitt derselben) bei einigen Ausführungsformen auch dafür benutzt werden, einen ausgedehnten Bereich für einen beliebigen Bereich des Bildes zu identifizieren. Ein identifizierter Bereich eines Bildes (beispielsweise ein nutzerseitig ausgewählter Bereich, so beispielsweise ein Bereich eines Objektes in dem Bild, ein automatisch detektierter Bereich, so beispielsweise ein Bereich, der unter Nutzung einer Objektdetektion detektiert worden ist, und dergleichen) können eine oder mehrere Grenzen aufweisen, die ähnlichen umgebenden Content (beispielsweise Abschnitte eines identifizierten Objektes) abschneiden. Als solches kann die Synthesepipeline 130 dafür angewendet werden, einen bezeichneten Bereich eines Bildes, so beispielsweise einen identifizierten Bereich eines Objektes in dem Bild, auszudehnen, um ähnlichen Content von außerhalb des identifizierten Bereiches (beispielsweise Content, der unbeabsichtigterweise aus dem bezeichneten Bereich weggelassen worden ist) aufzunehmen. Obwohl einige Ausführungsformen auf das Generieren eines Entnahmebereiches zum Füllen eines Zielbereiches abstellen, können einige Ausführungsformen auch einen Ausdehnungsbereich generieren, der mit einem bezeichneten Bereich gruppiert werden kann, um den bezeichneten Bereich derart auszudehnen, dass weggelassener ähnlicher Content beinhaltet ist. Diese Technik kann benutzt werden, um die Genauigkeit der Objektauswahl und der Objektidentifizierung zu verbessern, indem ein Bereich eines Objektes derart ausgedehnt wird, dass Flächen des Objektes, die abgeschnitten worden sind, beinhaltet sind. Diese und weitere Abwandlungen sind innerhalb der vorliegenden Offenbarung beinhaltet.
  • Auf abstrakter Ebene kann, wenn ein Quellbild und ein Zielbereich des Quellbildes zur Füllung (beispielsweise ein Loch) gegeben sind, die Entnahmebereichssynthesepipetine 130 einen Entnahmebereich automatisch synthetisieren, indem sie einen Streifen von Pixeln, die den Zielbereich umgeben, identifiziert, diese Pixel auf Grundlage einiger Kenngrößen (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus und dergleichen) clustert, jedes der sich ergebenden Cluster als Vordergrundpixel an einen Segmentierungsalgorithmus weiterreicht und die sich ergebenden Pixel vereinigt, um den Entnahmebereich zu bilden. Bei der in 1 dargestellten Ausführungsform beinhaltet die Entnahmebereichssynthesepipeline 130 einen Downsampler 135, einen Streifenauswähler 140, eine Verwischkomponente 145, eine Clusterungskomponente 150, eine Segmentierungskomponente 155, eine Vereinigungskomponente 165, eine Bereinigungskomponente 170, eine Pufferungskomponente 175 und einen Upsampler 180. Diese Konfiguration soll als Beispiel dienen; es können auch andere Konfigurationen mit ähnlicher oder anderer Funktionalität innerhalb des Umfangs der vorliegenden Offenbarung implementiert sein.
  • In 1 beinhaltet die Entnahmebereichssynthesepipeline 130 den Downsampler 135 und den Upsampler 180. Viele Segmentierungsalgorithmen sind rechentechnisch kostenintensiv und/oder können beim Verarbeiten von vergleichsweise großen Bildern zu einer Latenz führen. Bei einigen Ausführungsformen kann der Downsampler 135 als solches ein Downsampling an einem Quellbild und einem Zielbereich (beispielsweise einer Maske, die den Zielbereich identifiziert) vornehmen, um das Leistungsvermögen eines Segmentierungsalgorithmus (der durch die Segmentierungskomponente 155 implementiert sein kann) zu verbessern. Im Sinne eines nichtbeschränkenden Beispiels kann der Downsampler 135 ein Downsampling bis hinab zu einer bezeichneten Anzahl von Pixeln in einer bestimmten Dimension bzw. Abmessung (beispielsweise 400 Pixel) vornehmen. Die Entnahmebereichssynthesepipeline 130 kann einen Entnahmebereich mit der Downsampling-Auflösung synthetisieren, und der Upsampler 180 kann das Upsampling abgeglichen mit der Auflösung des ursprünglichen Quellbildes anwenden. Das Abgleichen der Auflösung des synthetisierten Entnahmebereiches mit dem Quellbild kann das Betrachten und/oder Modifizieren des Entnahmebereiches erleichtern, wie nachstehend noch detaillierter anhand 9 und 10 erläutert wird.
  • Der Streifenauswähler 140 kann auf ein Quellbild und einen Zielbereich des Quellbildes (beispielsweise ein einem Downsampling unterzogenes Quellbild und einen Zielbereich) zugreifen und einen Streifen von Pixeln, die den Zielbereich umgeben, als Anfangskontextbereich identifizieren, um das Synthetisieren eines Entnahmebereiches zu erleichtern. Bei einigen Ausführungsformen kann der Streifen als Breite von Pixeln, die das Loch umgeben, identifiziert werden. Die Breite des Streifens kann vorbestimmt, nutzerseitig ausgewählt oder anderes sein. Zusätzlich oder alternativ können (beispielsweise auf das Loch) ein oder mehrere morphologische Vorgänge angewendet werden, um den Streifen zu erhalten. Der sich ergebende Streifen von Pixeln, die das Loch umgeben, kann als Anfangskontext für das Loch benutzt werden.
  • Bei einigen Ausführungsformen kann eine Verwischkomponente 145 bei einem Quellbild (beispielsweise einem einem Downsampling unterzogenen Quellbild) und/oder dem Anfangskontext ein Verwischen anwenden, um das Clustern durch die Clusterungskomponente 150 zu erleichtern. Man nehme beispielsweise ein Bild einer Oberfläche, die zahlreiche feine Grate aufweist. Obwohl diese Oberfläche für das menschliche Auge gegebenenfalls einfarbig aussieht, kann das Hineinzoomen in das Bild merkliche Schwankungen der Helligkeit und/oder Pixelfarbe offenlegen. Das Clustern von kleinen Bereichen eines Bildes dieser Oberfläche kann Hochfrequenzeffekte, so beispielsweise Bänder, erzeugen. Die Verwischkomponente 145 als solche kann bei dem Quellbild und/oder dem Anfangskontext ein Verwischen anwenden, um das Generieren von Clustern, bei denen wahrscheinlich ist, dass sie zusammenhängen, zu erleichtern. Es kann ein beliebiger Typ von Verwischung angewendet werden, so beispielsweise eine Gauß'sche Verwischung (Gaussian blurring), eine bilaterale Verwischung, eine Durchschnittsfilterung oder anderes.
  • Die Clusterungskomponente 150 kann ein Clustern auf den Streifen von Anfangskontextpixeln anwenden, um verschiedene Cluster gleicher Pixel im Anfangskontext zu generieren. Es kann ein beliebiger Typ von Clusterung angewendet werden, so beispielsweise eine k-means-Clusterung, eine mean-shift-Clusterung, eine spektrale Clusterung, eine agglomerative Clusterung und/oder andere. Bei einigen Ausführungsformen kann die Clusterungskomponente 150 auf Grundlage einer beliebigen Anzahl und einer beliebigen Kombination von Bildkenngrößen und/oder zugehöriger Information (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus, Frequenz bzw. Häufigkeit, semantische Masken und dergleichen) clustern. Das Clustern kann beispielsweise in mehreren Dimensionen durchgeführt werden (beispielsweise als fünfdimensionales Clustern im RBG-Raum und mit Bildkoordinaten). Allgemein fördert das Aufnehmen von Bildkoordinaten (beispielsweise x/y) in die Clusterdimensionen die Clusterkontinuität. Bei einigen Ausführungsformen können ein oder mehrere abstimmbare Parameter spezifiziert (beispielsweise vorab bestimmt, nutzerseitig ausgewählt und dergleichen) werden, so beispielsweise eine bezeichnete Anzahl von Clustern, die Clusternähe (cluster tightness), die Bandbreite und dergleichen mehr. Das Anwenden einer Schwellenclustergröße oder einer maximalen Anzahl von Clustern kann die Geschwindigkeit und Leistung verbessern. Sind die Cluster beispielsweise zu klein, so erzeugt eine nachfolgende Segmentierung gegebenenfalls keine brauchbaren Ergebnisse. Eine Grenze hinsichtlich der Menge von Clustern kann zudem die Anzahl von Segmentierungsvorgängen, die von der Segmentierungskomponente 155 durchgeführt werden, verringern. Als solches können bei Ausführungsformen, bei denen die Anzahl von ausgegebenen Clustern eine bezeichnete Anzahl von Clustern übersteigt, Cluster, die nahe beieinander sind (beispielsweise Paare von benachbarten Clustern mit Zentroiden, die durch den kürzesten Euklidischen Abstand getrennt sind), zusammengeführt werden und ergeben eine bezeichnete Anzahl von Clustern. Cluster, die nicht an das Ziel angrenzen, können derart beschnitten bzw. abgeschnitten werden, dass nur diejenigen Cluster, die den Zielbereich berühren, verbleiben. Das Ergebnis können Cluster von Kontextpixeln mit im Wesentlichen derselben Farbe sein.
  • 2 zeigt ein Beispiel für das Clustern von Pixeln eines Streifens von Anfangskontextpixeln, die ein Loch umgeben, entsprechend Ausführungsformen der vorliegenden Erfindung. In 2 umgibt ein Streifen von Anfangskontextpixeln C das Loch 210. C stellt hierbei die Vereinigung aller Cluster in dem Streifen von Anfangskontextpixeln dar. Bei der in 2 dargestellten Ausführungsform wird das mean-shift-Clustern 230 in einem fünfdimensionalen Raum (drei Dimensionen des RBG-Raumes und zwei Dimensionen der Bildkoordinate) auf C angewandt, um die Cluster C1, C2 und C3 voneinander zu trennen. Diese Cluster sind in 2 in dem fünfdimensionalen Raum 240 wie auch in dem Bildraum 250 gezeigt. Wie dargestellt ist, weist jedes der Cluster C1, C2 und C3 Pixel mit im Wesentlichen derselben Farbe auf. 3 zeigt ein weiteres Beispiel für geclusterte Pixel eines Streifens, die ein Loch umgeben, entsprechend Ausführungsformen der vorliegenden Erfindung. In 3 ist der Streifen von Anfangskontextpixeln, die das Loch 310 umgeben, in drei Cluster 320, 330 und 340 getrennt worden. Bei Ausführungsformen, die Cluster, die nicht an das Loch 310 angrenzen, beschneiden bzw. abschneiden, können die Cluster 330 und 340 aus dem Streifen von Kontextpixeln beschnitten bzw. abgeschnitten werden. Das Beschneiden bzw. Abschneiden derartiger Cluster aus dem Kontext kann ein genaueres Füllen erleichtern, indem Cluster von Pixeln, bei denen wahrscheinlich ist, dass sie farblich von der Grenze des Zielbereiches verschieden sind, aus dem Entnahmebereich weggelassen werden.
  • Wie wiederum in 1 gezeigt ist, kann zum Identifizieren von Bereichen des Quellbildes, die farblich zu den Clustern der Kontextpixel in dem Streifen ähnlich sind, die Segmentierungskomponente 155 eine Vordergrundsegmentierung auf Grundlage eines jeden Clusters von Kontextpixeln anwenden. Insbesondere kann die Segmentierungskomponente 155 auf das (dem Downsampling unterzogene) Quellbild (das den Zielbereich ausschließen kann) zugreifen und für jedes Cluster von Kontextpixeln die Kontextpixel als exemplarische Vordergrundpixel nutzen, um Vordergrundpixel und Hintergrundpixel des Quellbildes zu segmentieren. Ein beliebiger bekannter Vordergrundsegmentierungsalgorithmus kann benutzt werden. Bei einigen Ausführungsformen können Kontextpixel, die an einen Zielbereich angrenzen, an eine Segmentierungskomponente 155 als Samen der Vordergrundpixel weitergereicht werden, und es kann die Segmentierungskomponente 155 eine Vordergrundbildmaske ausgeben, die angibt, welche Pixel des Quellbildes zum Vordergrund gehören und welche Pixel zum Hintergrund gehören. Die Segmentierungskomponente 155 kann für jedes Cluster von Pixeln in dem Streifen von Kontextpixeln getrennt ausgeführt werden und die Pixel in einem gegebenen Cluster als Vordergrundpixel für eine gegebene Iteration behandeln. Als solches können einige oder alle Cluster von Anfangskontextpixeln auf andere Bereiche des Quellbildes, die gegebenenfalls ähnlich sind, erweitert werden.
  • Bei der in 1 dargestellten Ausführungsform beinhaltet die Segmentierungskomponente 155 eine Flächenanpassungskomponente 160. Die Flächenanpassungskomponente 160 kann die Flächen der Cluster von Kontextpixeln hinsichtlich der Proportionalität anpassen. Die Flächenanpassungskomponente 160 kann beispielsweise einen bezeichneten Kennwert eines Clusters von Kontextpixeln identifizieren (beispielsweise ein Ausdehnungsverhältnis, das die erweiterte Fläche von Vordergrundpixeln, die von dem Segmentierungsalgorithmus ausgegeben wird, mit der Anfangsfläche von; Vordergrundpixeln, die in den Segmentierungsalgorithmus eingegeben wird, vergleicht, ein Verhältnis, das Umfänge, irgendeinen anderen Abschnitt der Anfangs- und erweiterten Flächen vergleicht, und dergleichen). Die Flächenanpassungskomponente 160 kann den identifizierten Kennwert für das Cluster als Zielkennwert für die erneute Ausführung des Vordergrundsegmentierungsalgorithmus für die anderen Cluster von Kontextpixeln nutzen, um weniger oder mehr Fläche für eine ausgewogene Darstellung über alle Cluster hinweg auszugeben. Bei einigen Ausführungsformen kann das größte (oder kleinste, medianbezogene, durchschnittliche und dergleichen) Ausdehnungsverhältnis als Zielverhältnis benutzt werden.
  • 4 ist ein Beispiel für flächenangepasste Vordergrundbereiche entsprechend Ausführungsformen der vorliegenden Erfindung. 4 zeigt ein exemplarisches Loch 405 und Anfangskontextbereiche 410a, 410b und 410c. Das Anwenden einer Vordergrundsegmentierung auf Grundlage dieser Anfangskontextbereiche kann erweiterte Kontextbereiche verschiedener Größen erzeugen. Das Ausführen einer Vordergrundsegmentierung auf Grundlage der Anfangskontextbereiche 410a, 410b und 410c unter Nutzung desselben Ähnlichkeitskriteriums bzw. derselben Ähnlichkeitskriterien (nachstehend noch detaillierter erläutert) kann beispielsweise erweiterte Kontextbereiche 420a, 415b1 und 415c1 generieren. Wie ersichtlich ist, weisen diese erweiterten Kontextbereiche verschiedene Größen auf. Zum Anpassen der Flächen dieser Bereiche kann ein Zielausdehnungsverhältnis bestimmt werden. Das Verhältnis der Flächen des erweiterten Kontextbereiches 420a und des Anfangskontextbereiches 410a kann beispielsweise als Zielausdehnungsverhältnis identifiziert werden, da es das größte Ausdehnungsverhältnis der drei Segmentierungen (von denen jede jedem Anfangskontextbereich 410a, 410b, 410c entspricht) aufweist. Als solches können die anderen beiden Segmentierungen (entsprechend den Anfangskontextbereichen 410b und 410c) erneut ausgeführt werden, um dieses Ausdehnungsverhältnis zu erreichen.
  • Um die Größe eines ausgedehnten Clusters von Kontextpixeln zu ändern, kann die entsprechende Anfangsfläche von Kontextpixeln durch den Segmentierungsalgorithmus unter Nutzung einer Anpassung, die ein Ähnlichkeitskriterium bzw. Ähnlichkeitskriterien nutzt, erneut ausgeführt werden, wodurch mehr benachbarte Pixel identifiziert werden (oder umgekehrt). Das Ähnlichkeitskriterium / die Ähnlichkeitskriterien kann/können einen Glättungsterm beinhalten, der Gewichtungen zum Identifizieren von benachbarten Pixeln berücksichtigt (beispielsweise den Nachbarschaftsterm bei GraphCut). Als solches kann die Flächenanpassungskomponente 160 von 1 den Vordergrundsegmentierungsalgorithmus ein- oder mehrmals erneut ausführen und das Ähnlichkeitskriterium bzw. die Ähnlichkeitskriterium bei jeder Iteration aktualisieren. Der Prozess kann für eine bezeichnete Anzahl von Iterationen fortgesetzt werden, bis der Zielkennwert innerhalb einer Toleranz oder Ähnlichkeitsschwelle oder anderes erreicht ist. Als solches können die Cluster von Kontextpixeln Flächen aufweisen, die im Wesentlichen proportional zueinander sind. Bei dem in 4 dargestellten Beispiel können aufeinanderfolgende Iterationen auf Grundlage der Anfangskontextfläche 410b erweiterte Kontextbereiche 415b1, 415b2 und 420b generieren. Aufeinanderfolgende Iterationen auf Grundlage der Anfangskontextfläche 410c können erweiterte Kontextbereiche 415c1, 415c2 und 420c generieren. Als solches sind bei diesem Beispiel die endgültigen Kontextflächen, die den Anfangskontextbereichen 410a, 410b und 410c entsprechen, erweiterte Kontextbereiche 420a, 420b und 420c.
  • Wie wiederum in 1 gezeigt ist, kann die Vereinigungskomponente 165 die sich ergebenden Kontextflächen vereinigen, um einen einzigen Entnahmebereich zu bilden. Die Vereinigungskomponente 165 kann eine Einzel-Kanal-Binärmaske bilden, die brauchbare und unbrauchbare Pixel zur Entnahme bezeichnet. Bei einigen Ausführungsformen kann eine Bereinigungskomponente 170 den Entnahmebereich bearbeiten und dabei kleine Löcher und/oder Flecken entfernen. Die Bereinigungskomponente 170 kann den Entnahmebereich auf eine Vielzahl von Arten bearbeiten, so beispielsweise mittels Durchführen eines oder mehrerer morphologischer Vorgänge, einer medianbezogenen Filterung, irgendeiner anderen Prozedur, die kleine Löcher (beispielsweise einer bezeichneten Größe) füllt und/oder Flecken (beispielsweise einer bezeichneten Größe) entfernt, einer beliebigen Kombination hieraus oder anderes. Bei einigen Ausführungsformen kann die Bereinigungskomponente 170 einen Schließvorgang zum Schließen von kleinen Löchern in dem Entnahmebereich anwenden und einen Öffnungsvorgang zum Entfernen von Flecken durchführen. Diese und weitere Abwandlungen können im Umfang der vorliegenden Offenbarung implementiert sein.
  • Bei einigen Ausführungsformen kann die Pufferungskomponente 175 den Entnahmebereich mit einem Streifen von Pixeln, die einen Zielbereich umgeben, puffern, damit Pixel, die benachbart zu dem Zielbereich sind und die (während der Vordergrundsegmentierung) gegebenenfalls entfernt worden sind, beinhaltet sind. Die Pufferungskomponente 175 kann einen Pufferungsstreifen als Breite von Pixeln, die den Zielbereich umgeben, identifizieren. Die Breite des Pufferungsstreifens kann vorbestimmt, nutzerseitig ausgewählt oder anderes werden. 4 zeigt eine exemplarische Pufferung entsprechend Ausführungsformen der vorliegenden Erfindung. In 4 können die erweiterten Kontextbereiche 420a, 420b und 420c miteinander vereinigt werden, um den Entnahmebereich zu bilden. Gleichwohl beinhaltet dieser Entnahmebereich nicht alle Pixel, die an das Loch 405 angrenzen. Als solches kann ein Pufferungsstreifen 430 zu dem Entnahmebereich hinzugefügt werden. Dies kann sicherstellen, dass wenigstens einige brauchbare Patches, die an das Loch 205 angrenzen, vorhanden sind.
  • Wie wiederum in 1 gezeigt ist, kann die Entnahmebereichssynthesepipeline 130 den synthetisierten Entnahmebereich (beispielsweise die Binärmaske) in einer Randbedingungsmaske speichern oder auf andere Weise damit verknüpft sein, und es können der Entnahmebereich und/oder eine entsprechende Maske an eine zum contentsensitiven Füllen gedachte Engine 190 weitergereicht werden, um eine Füllung für den Zielbereich aus Patches, die aus dem synthetisierten Entnahmebereich entnommen sind, zu synthetisieren.
  • 5 zeigt eine exemplarische Entnahmebereichssynthesepipeline 500 entsprechend Ausführungsformen der vorliegenden Erfindung. Die Entnahmebereichssynthesepipeline 500 kann einer Ausführungsform der Entnahmebereichssynthesepipeline 130 von 5 entsprechen. In 5 wird das Bild 510 (das ein Loch beinhaltet) einem Downsampling 515 unterzogen, um eine Kleinansicht 520 zu generieren. Ein Streifen von Anfangskontextpixeln 525 wird aus der Kleinansicht 520 generiert. In 5 stellt C die Vereinigung aller Cluster in dem Streifen von Anfangskontextpixeln 525 dar. Es wird ein mean-shift-Clustern 530 auf den Streifen von Anfangskontextpixeln 525 angewandt, um Cluster der Anfangskontextpixel 535 zu generieren. Jedes der Cluster von Anfangskontextpixeln 535 wird von einem Vordergrundsegmentierungsalgorithmus 640 ausgeführt, um erweiterte Kontextbereiche 545 zu generieren. Die erweiterten Kontextbereiche 545 werden einer Anpassung 550 unterzogen, um angepasste erweiterte Kontextbereiche 555 zu generieren. Die angepassten erweiterten Kontextbereiche 555 werden einer Vereinigung 560 unterzogen, um einen Entnahmebereich 565 zu generieren, der in einer Binärmaske gespeichert werden kann, die brauchbare Pixel zur Entnahme (in 5 weiß dargestellt) angibt. Der Entnahmebereich 565 wird einer morphologischen Glättung 570 unterzogen, indem morphologische Vorgänge durchgeführt werden, um einen stärker zusammenhängenden Entnahmebereich 575 zu generieren. Der geglättete Entnahmebereich 575 wird einem Upsampling 580 unterzogen, um einen endgültigen synthetisierten Entnahmebereich 585 auszugeben, der auf die Auflösung des Bildes 510 abgestimmt ist. Die Entnahmebereichssynthesepipeline 500 stellt lediglich ein Beispiel dar; weitere Abwandlungen mit ähnlicher oder anderer Funktionalität können innerhalb des Umfangs der vorliegenden Offenbarung implementiert sein.
  • 6 zeigt exemplarische Quellbilder und einen Vergleich von contentsensitiven Füllungen, die sich aus herkömmlichen Entnahmebereichen und synthetisierten contentsensitiven Entnahmebereichen ergeben, entsprechend Ausführungsformen der vorliegenden Erfindung. In 1 sind die Quellbilder mit einem entsprechenden Loch zur Füllung (in einer Darstellung mit einem bandartigen Muster) dargestellt. Bei herkömmlichen Lochfüllalgorithmen kann das Loch aus dem Quellbild entfernt werden, und es kann die verbleibende Fläche als Entnahmebereich benutzt werden. Wie in 6 gezeigt ist, weisen die sich ergebenden herkömmlichen synthetisierten Füllungen verschiedene Unzulänglichkeiten und Fehler auf. Im Gegensatz hierzu sind die sich ergebenden synthetisierten Füllungen Füllungen von 6, bei denen die hier beschriebenen Techniken zum Synthetisieren von contentsensitiven Entnahmebereichen benutzt werden, sehr viel genauer.
  • Exemplarische Flussdiagramme
  • 7 und 8 zeigen Flussdiagramme zur Darstellung von Verfahren für verschiedene hier beschriebene Techniken. Jeder Block der Verfahren 700 und 800 sowie beliebiger anderer hier beschriebener Verfahren umfasst einen Rechenprozess, der unter Nutzung einer Kombination aus Hardware, Firmware und/oder Software durchgeführt wird. Verschiedene Funktionen können von einem Prozessor, der Anweisungen ausführt, die in einem Speicher gespeichert sind, ausgeführt werden. Die Verfahren können auch als computerseitig nutzbare Anweisungen, die auf Computerspeichermedien gespeichert sind, verkörpert sein. Bereitgestellt werden können die Verfahren durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder als Plug-in zu einem anderen Produkt, um nur einige zu nennen.
  • 7 zeigt ein Verfahren 700 zum Bilden eines Entnahmebereiches eines Bildes entsprechend verschiedenen hier beschriebenen Ausführungsformen. Zu Beginn wird bei Block 710 ein Streifen von Kontextpixeln, die ein Loch eines Bildes umgeben, identifiziert. Das Loch kann nutzerseitig ausgewählt werden, und der Streifen kann als Breite von Pixeln, die das Loch umgeben, identifiziert werden. Bei Block 720 werden die Kontextpixel auf Grundlage einer oder mehrerer Kenngrößen (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus, Frequenz bzw. Häufigkeit und dergleichen) zu Clustern geclustert. Das Clustern kann beispielsweise in mehreren Dimensionen (beispielsweise als fünfdimensionales Clustern im RBG-Raum und im Bildraum) durchgeführt werden. Bei Block 730 werden die Cluster von Kontextpixeln erweitert und beinhalten so ähnliche Pixel des Bildes mit Blick auf Cluster von Kontextpixeln auf Grundlage eines Ähnlichkeitskriteriums bzw. von Ähnlichkeitskriterien. Das Ähnlichkeitskriterium / die Ähnlichkeitskriterien können beispielsweise einen Glättungsstern beinhalten, der Gewichtungen zum Identifizieren von benachbarten Pixeln mit einem Vordergrundsegmentierungsalgorithmus berücksichtigt. Die Vordergrundsegmentierung kann insbesondere dafür, Vordergrund- und Hintergrundpixel des Quellbildes zu identifizieren, unter Nutzung der Kontextpixel als exemplarische Vordergrundpixel angewendet werden. Bei Block 740 wird ein Entnahmebereich aus den Clustern von Kontextpixeln gebildet. Insbesondere können die Cluster von Kontextpixeln miteinander vereinigt werden, um den Entnahmebereich zu bilden, und es kann der Entnahmebereich verarbeitet werden, um kleine Löcher und Flecken zu entfernen. Bei Block 750 wird eine Füllung für das Loch aus Pixeln, die aus dem Entnahmebereich entnommen sind, synthetisiert.
  • 8 zeigt ein Verfahren 800 zum Bilden eines Entnahmebereiches eines Bildes entsprechend verschiedenen hier beschriebenen Ausführungsformen. Zu Beginn werden bei Block 810 Kontextpixel, die einen Zielbereich des Bildes zur Füllung umgeben, identifiziert. Der Zielbereich kann nutzerseitig ausgewählt sein, und die Kontextpixel können als Breite von Pixeln, die das Loch umgeben, identifiziert werden. Bei Block 820 werden die Kontextpixel auf Grundlage einer oder mehrerer Kenngrößen (beispielsweise Farbe, x/y-Koordinaten, Tiefe, Fokus, Frequenz bzw. Häufigkeit und dergleichen) zu Clustern geclustert. Bei Block 830 wird jedes der Cluster von Kontextpixeln als Vordergrundpixel an einen Segmentierungsalgorithmus weitergereicht, der ein entsprechendes erweitertes Cluster von Kontextpixeln ausgibt. Bei Block 840 werden die erweiterten Cluster von Kontextpixeln vereinigt, um den Entnahmebereich zu bilden.
  • Exemplarische zum contentsensitiven Füllen gedachte Umgebung
  • 9 zeigt ein Blockdiagramm, einer Umgebung 900, in der eine oder mehrere Ausführungsformen der vorliegenden Offenbarung umgesetzt werden können. Allgemein ist die Umgebung 900 zur Bildbearbeitung geeignet und erleichtert unter anderem das automatische Synthetisieren einer contentsensitiven Füllung. Die Umgebung 900 beinhaltet eine Nutzervorrichtung 910, die eine Fotobearbeitungsanwendung 920 mit einer Nutzerschnittstelle 930 und einer zum contentsensitiven Füllen gedachten Engine 960 aufweist. Die Nutzervorrichtung 910 kann von einer beliebigen Art von Rechenvorrichtung sein, die die Bildbearbeitung erleichtern kann. Bei einer Ausführungsform kann die Nutzervorrichtung 910 beispielsweise eine Rechenvorrichtung wie die Rechenvorrichtung 1100 sein, die nachstehend anhand 11 noch beschrieben wird. Bei Ausführungsformen kann die Nutzervorrichtung 910 ein persönlicher Computer (PC), ein Laptopcomputer, eine Workstation, eine mobile Rechenvorrichtung, ein PDA, ein zellenbasiertes Telefon oder dergleichen sein. Die Nutzerschnittstelle 930 kommuniziert mit der zum contentsensitiven Füllen gedachten Engine 960. Allgemein ermöglicht die Nutzerschnittstelle 930 einem Nutzer das Individualisieren einer beliebigen Anzahl von Eingabeparametern, um für die zum contentsensitiven Füllen gedachte Engine 960 das automatische Synthetisieren einer contentsensitiven Füllung zu erleichtern.
  • Bei der in 9 dargestellten Ausführungsform beinhaltet die Nutzervorrichtung 910 eine Nutzerschnittstelle 930 und eine zum contentsensitiven Füllen gedachte Engine 960. Die Nutzerschnittstelle 930 und/oder die zum contentsensitiven Füllen gedachte Engine 960 können in eine Anwendung oder in ein Add-on oder Plug-in zu einer Anwendung, so beispielsweise der Fotobearbeitungsanwendung 920, integriert oder eingebaut sein. Die Fotobearbeitungsanwendung 920 kann allgemein eine beliebige Anwendung sein, die die Foto- oder Bildbearbeitung erleichtern kann. Die Anwendung 920 kann eine eigenständige Anwendung, eine mobile Anwendung, eine Webanwendung oder dergleichen sein. Bei einigen Implementierungen umfasst/umfassen die Anwendung / die Anwendungen eine Webanwendung, die in einem Browser ausgeführt und wenigstens teilweise serverseitig gehostet sein kann. Zusätzlich oder anstatt dessen kann/können die Anwendung / die Anwendungen eine eigens vorgesehene Anwendung umfassen. In einigen Fällen kann die Anwendung (beispielsweise als Dienst) in das Betriebssystem integriert sein. Eine exemplarische Anwendung, die zur Fotobearbeitung benutzt werden kann, ist ADOBE® PHOTOSHOP®, das eine Grafikbearbeitungsanwendung ist. Obwohl die Diskussion hier im Allgemeinen so erfolgt, dass die Nutzerschnittstelle 930 und/oder die zum contentsensitiven Füllen gedachte Engine 960 mit einer Anwendung verknüpft ist, können die Nutzerschnittstelle 930 und/oder die zum contentsensitiven Füllen gedachte Engine 260 oder irgendein Abschnitt hiervon in einigen Fällen zusätzlich oder alternativ in das Betriebssystem (beispielsweise als Dienst) oder einen Server (beispielsweise einen Remote-Server) eingebaut sein.
  • Allgemein ist die Nutzerschnittstelle 930 eine interaktive Softwareschnittstelle, die einem Nutzer ermöglicht, verschiedene Eingabeparameter zur automatischen Synthese einer contentsensitiven Füllung zu individualisieren. In 9 beinhaltet die Nutzerschnittstelle 930 ein Ursprungsbildfeld 935, ein Ergebnisfeld 940, ein Pinselwerkzeug 945 und ein Fülleigenschaftenfeld 950. Allgemein präsentiert das Ursprungsbildfeld 935 ein Ursprungsbild und nimmt eine Nutzerauswahl eines ersten Bereiches des Ursprungsbildes zur Füllung und/oder eine Nutzerauswahl eines zweiten Bereiches des Ursprungsbildes zur Nutzung als Entnahmebereich vor. Das Pinselwerkzeug 945 ist ein Eingabewerkzeug, das einem Nutzer ermöglicht, den Entnahmebereich, der in dem Ursprungsbildfeld 935 angegeben ist, interaktiv mit einem Pinsel zu bearbeiten, um den Entnahmebereich zu individualisieren. Das Fülleigenschaftenfeld 950 präsentiert eine Auswahl von verschiedenen Fülleigenschaften, so beispielsweise Überblendungseinstellungen für den Entnahmebereich, Fülleinstellungen, so beispielsweise Ähnlichkeitstransformationsparameter für Kandidatenpatches, und Ausgabeeinstellungen für die synthetisierte Füllung, und nimmt diese an. Das Ergebnisfeld 940 präsentiert vor der Fertigstellung der Füllung eine Vorschau dessen, wie die Füllung aussieht.
  • Allgemein kann die Nutzerschnittstelle 930 einem Nutzer ermöglichen, ein Ursprungsbild zur Bearbeitung zu spezifizieren. Bei einigen Ausführungsformen stellt die Nutzerschnittstelle 930 eine Option (beispielsweise einen Menübefehl) bereit, um einen zum contentsensitiven Füllen gedachten Arbeitsraum (workspace), so beispielsweise den in 10 dargestellten zum contentsensitiven Füllen gedachten Arbeitsraum 1000, zu aktivieren. 10 stellt ein exemplarisches Layout der Nutzerschnittstelle 930 dar. Bei der vorliegenden Ausführungsform beinhaltet der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 ein Ursprungsbildfeld 1005 (das dem Ursprungsbildfeld 935 von 9 entsprechen kann), ein Ergebnisfeld 1040 (das dem Ergebnisfeld 940 von 9 entsprechen kann) und ein Fülleigenschaftenfeld 1050 (das dem Fülleigenschaftenfeld 950 von 9 entsprechen kann).
  • Das Ursprungsbildfeld 1005 beinhaltet ein Ursprungsbild 1010. Ein Bereich des Bildes zur Füllung kann nutzerseitig spezifiziert, automatisch generiert, eine Kombination hieraus oder anderes sein. Der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 kann beispielsweise ein Auswahlwerkzeug bereitstellen, mit dem ein Nutzer eine Lochgrenze, so beispielsweise die Lochgrenze 1020, spezifizieren kann. Das Ursprungsbildfeld 1005 kann die Lochgrenze 1020 über dem Ursprungsbild 1010 überblenden, um eine Angabe des Bereiches des Ursprungsbildes 1010 zur Füllung bereitzustellen. Die Lochgrenze 1020 und/oder der Bereich innerhalb der Lochgrenze 1020 (das heißt das Loch) können in einer oder mehreren Datenstrukturen, die den Bereich zur Füllung angeben, gespeichert werden. Zusätzlich und/oder alternativ können die Grenze und/oder das Loch in einer oder mehreren Datenstrukturen, die einen brauchbaren Entnahmebereich angeben, so beispielsweise einer Randbedingungsmaske, gespeichert werden. Insbesondere kann die Randbedingungsmaske das Loch als unbrauchbaren Bereich zur Entnahme bezeichnen. Der Entnahmebereich, aus dem Pixel zum contentsensitiven Füllen entnommen werden können, kann nutzerseitig spezifiziert, automatisch synthetisiert, eine Kombination hieraus oder anderes sein. Der Entnahmebereich kann auf einen Standardbereich (beispielsweise einen automatisch synthetisierten contentsensitiven Entnahmebereich, einen das Loch ausschließenden Bereich und dergleichen) initialisiert sein, der beispielsweise durch eine Nutzereingabe, die den Standardbereich modifiziert, individualisiert werden kann. Der Entnahmebereich kann in einer oder mehreren Datenstrukturen, die einen brauchbaren Entnahmebereich angeben, so beispielsweise der Randbedingungsmaske, gespeichert sein. Insbesondere kann die Randbedingungsmaske den Entnahmebereich als brauchbaren Bereich zur Entnahme bezeichnen.
  • Bei einigen Ausführungsformen kann das Ursprungsbildfeld 1005 eine Überblendung beinhalten, um den Entnahmebereich anzugeben. Das Ursprungsbildfeld 1005 beinhaltet beispielsweise eine Randbedingungsmaskenüberblendung 1030. Überblendungseinstellungen können beispielsweise über das Fülleigenschaftenfeld 1050 definiert werden und/oder individualisierbar sein. Individualisierbare Überblendungseinstellungen können beispielsweise eine Schaltanzeige, die Farbe und/oder Opazität der Randbedingungsmaskenüberblendung 1030 beinhalten. Zusätzlich und/oder alternativ kann eine Option für die Randbedingungsmaskenüberblendung 1030 bereitgestellt werden, um den Entnahmebereich darzustellen oder den ausgeschlossenen Bereich des Ursprungsbildes 1010, der nicht zur: Entnahme benutzt wird, darzustellen. Bei dem in 10 dargestellten Beispiel ist die Randbedingungsmaskenüberblendung 1030 eingeschaltet, transparent und rot und stellt den Entnahmebereich dar.
  • Das Fülleigenschaftenfeld 1050 (das dem Fülleigenschaftenfeld 950 von 9 entsprechen kann) kann eine Auswahl von verschiedenen Fülleigenschaften präsentieren und annehmen, so beispielsweise Überblendungseinstellungen für den Entnahmebereich, Fülleinstellungen, so beispielsweise Ähnlichkeitstransformationsparameter für Kandidatenpatches, und Ausgabeeinstellungen für die synthetisierte Füllung. Allgemein können die Fülleigenschaften darauf eingestellt werden, die Art, auf die die Füllung synthetisiert wird, zu steuern bzw. zu regeln. Beinhalten können die individualisierbaren Fülleinstellungen beispielsweise Ähnlichkeitstransformationsparameter (beispielsweise Parameter, die brauchbare Bereiche für Drehungen, einen Skalierungsfaktor, eine Spiegelung und/oder Translationen von Kandidatenpatches spezifizieren oder auf andere Weise angeben), eine Farbadaption (beispielsweise eine Verstärkung (gain) und/oder eine Tendenz (bias)), eine deterministische Füllsynthese und dergleichen. Die individualisierbaren Fülleinstellungen werden nachstehend detaillierter beschrieben. Die individualisierbaren Ausgabeeinstellungen können eine bezeichnete Ausgabeschicht für die synthetisierte Füllung beinhalten. Das Ausgeben an die aktuelle Schicht ersetzt die Lochpixel in der aktuellen Schicht beispielsweise durch die synthetisierte Füllung, das Ausgeben an eine neue Schicht gibt die synthetisierte Füllung an eine separate Schicht (mit einer Transparenz ringsum) aus, und/oder das Ausgeben an eine Doppelungsschicht kopiert das Ursprungsbild in eine Doppelungsschicht und ersetzt die Lochpixel durch die synthetisierte Füllung in der Doppelungsschicht. Weitere Abwandlungen für Fülleigenschaften erschließen sich einem Fachmann auf dem Gebiet.
  • Allgemein kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 die Randbedingungsmaske und/oder bezeichnete Fülleigenschaften zu einem beliebigen Zeitpunkt automatisch an eine Back-End-Komponente, so beispielsweise die zum contentsensitiven Füllen gedachte Engine 960, weiterreichen, um eine contentsensitive Füllung unter Nutzung der Randbedingungsmaske zu synthetisieren (oder um mit dem Synthetisieren zu beginnen). Automatisch weiterreichen kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 die Randbedingungsmaske und/oder bezeichnete Fülleigenschaften beispielsweise an die zum contentsensitiven Füllen gedachte Engine 960 beim Aktivieren des zum contentsensitiven Füllen gedachten Arbeitsraumes 1000, bei der Auswahl des Ursprungsbildes 10-10, bei der Auswahl oder beim Modifizieren der Lochgrenze und/oder des Entnahmebereiches (beispielsweise mittels des Pinselwerkzeuges 945, eines Lassowerkzeuges, eines Vieleckslassowerkzeuges, eines Ausdehnungsauswahlwerkezuges, eines Schrumpfungsauswahlwerkzeuges und dergleichen), bei der Auswahl oder beim Modifizieren einer Fülleigenschaft, bei der Genehmigung zum Weitergehen (beispielsweise beim Anklicken einer Okay-Schaltfläche) und/oder bei einigen anderen Kriterien. Für den Fall, dass eine Randbedingungsmaske vor einer Nutzerauswahl einer Lochgrenze und/oder eines Entnahmebereiches weitergereicht wird, kann die Randbedingungsmaske auf einen Standardzustand initialisiert werden (der beispielsweise einen automatisch detektierten Bereich, einen Bereich oder eine Auswahl, der/die aus einer anderen Füllung oder einer vorherigen Iteration übernommen worden ist, einen Standardbereich und dergleichen mehr beinhaltet).
  • Der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 beinhaltet das Ergebnisfeld 1040, das eine Vorschau auf die synthetisierte Füllung vor der Fertigstellung beinhalten kann. Eine Vorschau, die auf das Endergebnis abgestimmt ist, kann dadurch generiert werden, dass die zum contentsensitiven Füllen gedachte Engine 960 an dem vollaufgelösten Ursprungsbild 1010 arbeitet. Wie nachstehend noch detaillierter beschrieben wird, implementiert die zum contentsensitiven Füllen gedachte Engine 960 einen iterativen Prozess, um eine Füllung zu konstruieren und zu verfeinern. Jede aufeinanderfolgende Iteration erzeugt eine Lösung mit verbesserten Details und einer im Allgemeinen konsistenten Bildstruktur (beispielsweise hinsichtlich Linien und Kurven in dem Bild). Eine Vorschau kann aus eben diesem Prozess, der dazu benutzt wird, zur vollständigen Lösung zu gelangen, hergeleitet werden. Indem (im Gegensatz zu herkömmlichen Techniken, die mit einer Kleinansicht (thumbnail) zum Generieren einer Vorschau arbeiten) mit dem vollaufgelösten Ursprungsbild 1010 begonnen wird und eine Fülllösung nach einer Iteration als Vorschau benutzt wird, kann eine genaue Vorschau generiert werden, die auf die Bildstruktur des Endergebnisses abgestimmt ist, was im Gegensatz zu herkömmlichen Vorschauen steht. Entsprechend kann die zum contentsensitiven Füllen gedachte Engine 960 die Fülllösung nach einer Iteration (beispielsweise nach jeder Iteration) an das Ergebnisfeld 1040 zur Präsentation gegenüber dem Nutzer weiterreichen. Bei einigen Ausführungsformen kann die zum contentsensitiven Füllen gedachte Engine 960 aufeinanderfolgende Iterationen durchführen und die Lösung für das Ergebnisfeld 1040 nach jeder Iteration bereitstellen. Als solches kann das Ergebnisfeld 1040 eine Live-Vorschau mit sich allmählich aktualisierenden Ergebnissen beinhalten. Diese allmählichen Aktualisierungen können für einen Nutzer eine schnelle Echtzeitrückmeldung und einer frühere Möglichkeit, gewünschte Änderungen vorzunehmen, um zu einer gewünschten Füllung zu gelangen, bereitstellen.
  • Bei einigen Ausführungsformen kann die zum contentsensitiven Füllen gedachte Engine 960 eine Vorschau bereitstellen und den Prozess vor nachfolgenden Iterationen unterbrechen, um vor dem Fertigstellen der Füllung eine Nutzereingabe zu erleichtern. Vor dem Generieren einer Vorschau kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 einem Nutzer beispielsweise ermöglichen, eine gewünschte Auflösung und/oder Abmessung der Vorschau auszuwählen (oder es kann eine Standardvorschauauflösung eingesetzt werden). Die zum contentsensitiven Füllen gedachte Engine 1060 kann mit dem Synthetisieren einer Füllung beginnen und nach einer Iteration unterbrechen, bei der die Auflösung der entsprechenden aktuellen Fülllösung auf die bezeichnete Vorschauauflösung innerhalb einer vorbestimmten Schwelle (sei diese nun in Pixeln, als prozentualer Anteil oder anders spezifiziert) abgestimmt ist. Bei diesen Ausführungsformen kann die zum contentsensitiven Füllen gedachte Engine 960 die aktuelle Füllung an das Ergebnisfeld 1040 zur Präsentation als Vorschau weiterreichen. Bei diesem Szenario kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 einen Nutzer zu einer Angabe dahingehend auffordern, die Verarbeitung fortzusetzen, um Parameter zu ändern und/oder in die Vorschau hinein oder aus dieser heraus zu zoomen.
  • Eine Nutzerangabe dahingehend, die Verarbeitung fortzusetzen, kann das Berechnen der verbleibenden Auflösungen bis zum Ergebnis mit der vollen Auflösung durch die zum contentsensitiven Füllen gedachte Engine 960 aktivieren. Eine Änderung an dem Loch oder Entnahmebereich oder eine Änderung der Ähnlichkeitstransformationsparameter für Kandidatenpatches kann die aktuelle Füllung jedoch obsolet machen. Einige bestehende Berechnungen können wiederverwendet werden, um die Geschwindigkeit zu verbessern und unnötige Neuberechnungen zu vermeiden. Sind beispielsweise eine oder mehrere Masken von einer Änderung nicht betroffen, so müssen diese Masken nicht neuberechnet werden. Auf gleiche Weise müssen Bildpyramiden, die den geänderten Masken entsprechen, nicht neugeneriert werden. Ändert der Nutzer das Loch nicht, so besteht keine Notwendigkeit, den Puffer, der eine Abstandstransformation von jedem Pixel zu der Lochgrenze speichert, erneut zu berechnen. Verschiedene Berechnungen wie diese und andere können in einem Cache-Speicher gespeichert und zur Verbesserung der Verarbeitungsgeschwindigkeit erneut eingesetzt werden, wie sich einem Fachmann auf dem Gebiet erschließt.
  • Eine weitere Möglichkeit bei einer Unterbrechung ist eine Aufforderung des Nutzers dahingehend, in eine Vorschau hinein oder aus dieser heraus zu zoomen. Da die zum contentsensitiven Füllen gedachte Engine 960 bereits niedriger aufgelöste Lösungen berechnet hat, um die Vorschau zu verwirklichen, können diese Lösungen in einem Cache gespeichert sein, es kann auf sie in dem Fall, in dem ein Nutzer aus der Vorschau heraus zoomt (beispielsweise eine niedriger aufgelöste Vorschau anfordert) zugegriffen werden, und es können diese präsentiert werden. Zoomt ein Nutzer in die Vorschau hinein (fordert er beispielsweise eine höher aufgelöste Vorschau an), so kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 an die zum contentsensitiven Füllen gedachte Engine 960 eine Angabe dahingehend weiterreichen, die Berechnung ab der vorherigen Auflösung, wo die letzte Unterbrechung aufgetreten ist, wiederaufzunehmen, um die nächste Vorschauauflösung zu erzeugen. Diese Vorgehensweise nutzt vorherige Iterationen und ermöglicht der zum contentsensitiven Füllen gedachten Engine 960, die neue Vorschau für das Front-End schnell zu generieren.
  • Bei einigen Ausführungsformen kann eine unrichtige Füllung verbessert werden, indem ein Loch in zwei oder mehr Subunterteilungen unterteilt wird und eine Füllung inkrementell für jede Subunterteilung synthetisiert wird. Der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 kann beispielsweise eine Eingabe, die eine erste Subunterteilung manuell identifiziert, annehmen, und es kann, wie vorstehend beschrieben worden ist, eine Füllung generiert werden. Der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 kann eine Eingabe (beispielsweise das Drücken einer Schaltfläche), die angibt, dass die Füllung angenommen werden soll, annehmen, woraufhin der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 eine nachfolgende Eingabe, die eine nachfolgende Subunterteilung manuell identifiziert, erleichtern kann, und es wird der Prozess wiederholt. Zusätzlich und/oder alternativ zum manuellen Annehmen von Eingaben, die Subunterteilungen identifizieren, können die Subunterteilungen automatisch generiert werden, wie sich einem Fachmann auf dem Gebiet erschließt. Bei einigen Ausführungsformen kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 eine Eingabe annehmen, die angibt, dass die als letze generierte Füllung benutzt werden sollte, um eine Füllung für eine nachfolgende Subunterteilung zu generieren. Auf diese Weise kann der zum contentsensitiven Füllen gedachte Arbeitsraum 1000 ein Loch füllen, indem er inkrementell Füllungen für zwei oder mehr Subunterteilungen des Loches generiert.
  • Die vorstehende Diskussion beruht auf 10, um einen exemplarischen zum contentsensitiven Füllen gedachten Arbeitsraum 1000 mit dem Ursprungsbildfeld 1005, dem Ergebnisfeld 1040 und dem Fülleigenschaftenfeld 1050 darzustellen. In 10 ist das Ursprungsbild 1010 ein Bild einer Blume mit einer Biene, die Pollen sammelt. Das Ergebnisfeld 1040 stellt eine exemplarische Füllung dar, die unter Nutzung von Translationen für Kandidatenpatches generiert wird. Bei Bildern mit nichtlinearen Merkmalen kann die Qualität der Füllung verbessert werden, indem der Suchbereich derart ausgedehnt wird, dass er Ähnlichkeitstransformationen für Kandidatenpatches beinhaltet. Fülleinstellungen, so beispielsweise Ähnlichkeitstransformationsparameter, können beispielsweise Drehungen, eine Skalierung und/oder eine Spiegelung ermöglichen. Die Fülleinstellungen können vorab eingestellt werden, für einen interaktiven Zugriff individualisierbar sein oder anderes.
  • Vorhanden ist eine Anzahl von möglichen Vorteilen, die sich aus einem interaktiven Zugriff auf individualisierbare Fülleinstellungen und/oder einen individualisierbaren Entnahmebereich ergeben. Allgemein kann das Synthetisieren von Füllungen unter Nutzung von Ähnlichkeitstransformationen für Kandidatenpatches im Gegensatz zum bloßen Nutzen von Translationen die Füllqualität merklich verbessern. Jedes Bild ist jedoch anders, sodass verschiedene Typen von Transformationen für bestimmte Bilder geeigneter sein können. Drehungen können beispielsweise für gekrümmte Objekte oder perspektivische Bilder geeignet sein. Unter gewissen Umständen angemessen können darüber hinaus auch Drehungen mit beschränkten Bereichen sein. Allgemein kann eine Drehanpassung benutzt werden, um den Grad (oder Bereich) zu spezifizieren, in dem sich Patches drehen können, wenn das Loch als Teil einer Patchanalyse gefüllt wird. Vorab eingestellte Fülleinstellungen (beispielsweise niedrig, mittel, hoch, vollständig) können beispielsweise entsprechend einem Bereich von möglichen Drehungen bezeichnet werden. Vollständige Drehungen (von beispielsweise -180° bis 180°) können für runde oder kreisförmige Objekte geeignet sein. Ein Zwischengrad der Drehung kann für Bilder mit merklichen Krümmungsgraden geeignet sein. Ein niedrigerer Grad der Drehung kann für Bilder mit gekrümmten Linien, so beispielsweise eine Straßenkurve, geeignet sein. Bei einem anderen Beispiel kann eine Skalierung geeignet sein, um eine synthetisierte Bildfüllung für Bildcontent mit sich wiederholenden Mustern verschiedener Größe oder mit Perspektive zu verbessern. Das Spiegeln (beispielsweise das Kippen, so beispielsweise das horizontale Kippen) kann eine synthetisierte Füllung für Bilder mit Symmetrie verbessern. Eine Farbanpassung kann benutzt werden, um die Verstärkung (gain) und/oder die Tendenz (bias) zu spezifizieren, um eine synthetisierte Füllung für Bilder zu verbessern, indem die Helligkeit und/oder der Kontrast von Patches geändert wird, die zum Füllen des Loches als Teil einer Patchsynthese benutzt werden. Indem einem Nutzer ermöglicht wird, eine geeignete Fülleinstellung auszuwählen, kann ein Nutzer die Patchsynthese zu einer optimalen Lösung führen.
  • Zusätzlich oder alternativ zur Bereitstellung von individualisierbaren Ähnlichkeitstransformationsparametern ist eine weitere individualisierbare Fülleinstellung der deterministische Füllsynthesemodus. Herkömmliche Patchsynthesetechniken sind im Allgemeinen multi-threaded. Insbesondere kann ein bezeichnetes Loch in mehrere Dateien zur parallelen Verarbeitung durch verschiedene Threads aufgeteilt werden. Die Taktung, mit der die Threads ihre jeweiligen Lösungen fertigstellen, kann die sich ergebende Fülllösung für das bezeichnete Loch ändern. Da die Taktung bei herkömmlichen Techniken nicht bekannt ist oder gesteuert bzw. geregelt wird, ist eine herkömmliche Patchsynthese im Allgemeinen nicht wiederholbar. Im deterministischen Füllsynthesemodus kann eine wiederholbare Patchsynthesetechnik implementiert werden, wie nachstehend noch detaillierter erläutert wird. Da dieser deterministische Prozess jedoch die Verarbeitungszeit verlängern kann, ermöglicht der Umstand, dass dem Nutzer die Steuerung bzw. Regelung dieses Modus eingeräumt wird, dem Nutzer das Finden eines Kompromisses zwischen Geschwindigkeit und Wiederholbarkeit.
  • Zusätzlich und/oder alternativ zur Bereitstellung von individualisierbaren Fülleinstellungen kann ein individualisierbarer Entnahmebereich genutzt werden, um eine automatisch synthetisierte Füllung zu verbessern. Allgemein kann ein zum contentsensitiven Füllen gedachter Arbeitsraum einem Nutzer das Individualisieren des Entnahmebereiches erleichtern. Der zum contentsensitiven Füllen gedachte Arbeitsraum kann beispielsweise ein Eingabewerkzeug, so beispielsweise ein Pinselwerkzeug (beispielsweise das Pinselwerkzeug 945), bereitstellen, das einem Nutzer das interaktive mit einem Pinsel erfolgende Bearbeiten des Entnahmebereiches in dem Ursprungsbildfeld 935 ermöglicht, um den Entnahmebereich zu individualisieren. Das Pinselwerkzeug kann eine Nutzereingabe, die zu einem brauchbaren Entnahmebereich hinzugefügt oder aus diesem entfernt wird, erleichtern, was in einer Randbedingungsmaske gespeichert werden kann. Die Größe des Pinselwerkzeugs kann änderbar sein, um den Pinsel zu vergrößern oder zu verkleinern. Zusätzlich und/oder alternativ kann die Form des Aufnahmebereiches des Pinselwerkzeuges auf eine beliebige Form individualisierbar sein. Als solches kann das Pinselwerkzeug benutzt werden, um etwas zu dem Entnahmebereich hinzuzufügen oder aus diesem zu entfernen. Zusätzlich und/oder alternativ können verschiedene andere Eingabewerkzeuge bereitgestellt werden, um eine Nutzerauswahl und/oder eine Modifizierung eines Loches und/oder eines Entnahmebereiches zu erleichtern, so beispielsweise ein Lassowerkzeug, ein Vieleckslassowerkzeug, ein Ausdehnungsauswahlwerkzeug, ein Schrumpfungsauswahlwerkzeug und dergleichen. Bei einigen Ausführungsformen kann beim Detektieren der Fertigstellung einer Nutzereingabe (beispielsweise bei einem Pinselstrich, der Pixel aus dem Entnahmebereich und/oder einer entsprechenden Überblendung entfernt) der zum contentsensitiven Füllen gedachte Arbeitsraum den sich ergebenden Entnahmebereich (beispielsweise über eine Randbedingungsmaske) automatisch an eine Back-End-Komponente, so beispielsweise die zum contentsensitiven Füllen gedachte Engine 960, weiterreichen, um unter Nutzung der spezifizierten Randbedingungsmaske eine contentsensitive Füllung zu synthetisieren.
  • Wie in 9 gezeigt ist, beinhaltet die zum contentsensitiven Füllen gedachte Engine 960 eine Patchbrauchbarkeitskomponente 965 und einen patchbasierten Synthesizer 970. Die Patchbrauchbarkeitskomponente 965 und der patchbasierte Synthesizer 970 arbeiten in Kommunikation zum automatischen Synthetisieren einer contentsensitiven Füllung (beispielsweise zum Füllen eines Loches, das durch eine Randbedingungsmaske, die von der Nutzerschnittstelle 930 weitergereicht wird, angegeben wird). Der patchbasierte Synthesizer 270 bzw. 970 kann eine Patchsynthese unter Nutzung eines randomisierten Algorithmus durchführen, um Kandidatenpatches zu generieren und zu bewerten und ungefähre Nächster-Nachbar-Treffer zwischen Bildpatches zu identifizieren. Implizieren kann dies einen iterativen Prozess des Initialisierens, Suchens, Wählens und Hochskalierens für jede Skala einer Mehrskalenlösung, wie sich einem Fachmann auf dem einschlägigen Gebiet erschließt. Kandidatenpatches können aus einem Quellbild (beispielsweise dem Entnahmebereich, der durch eine Randbedingungsmaske bezeichnet ist) während des Initialisierens, Suchens und Upsampelns generiert werden. Allgemein bewertet die Patchbrauchbarkeitskomponente 965 die Brauchbarkeit von Kandidatenpatches, indem sie einen oder mehrere verbesserte Patchbrauchbarkeitstests durchführt. Vorteilhafterweise identifiziert jeder zeit- und patchbasierte Synthetizier 970 einen Kandidatenpatch, und die Patchbrauchbarkeitskomponente 965 bestimmt die Brauchbarkeit des Patches.
  • Allgemein können ein oder mehrere Patchbrauchbarkeitstests in ein interaktives System zum automatischen Synthetisieren einer contentsensitiven Füllung integriert sein. Bei der in 9 dargestellten Ausführungsform kann die Patchbrauchbarkeitskomponente 965 die Brauchbarkeit von Kandidatenpatches für den patchbasierten Synthesizer 970 beispielsweise durch Anwenden eines oder mehrerer Patchbrauchbarkeitstests bewerten. Es kann ein beliebiger geeigneter Patchbrauchbarkeitstest angewendet werden, für den einige Beispiele in der US-Anmeldung Nr. 15/921,457 beschrieben werden, deren Inhalt hiermit durch Bezugnahme in Gänze mit aufgenommen ist.
  • Bei der in 9 dargestellten exemplarischen Implementierung führt der patchbasierte Synthesizer 970 eine Patchsynthese unter Nutzung eines randomisierten Algorithmus durch, um Kandidatenpatches zu generieren und zu bewerten und um ungefähre Nächster-Nachbar-Treffer zwischen Bildpatches zu identifizieren. Um ein gegebenes Zielbild (beispielsweise ein Loch) unter Nutzung von Bildpatches, die aus einem Quellbild transformiert werden, zu konstruieren, kann eine Datenstruktur, die NNF (Nearest Neighbor Field, nächstes Nachbarfeld) genannt wird, benutzt werden, um Abbildungen zwischen Patches in den Quell- und Zielbildern zu verwalten. Das NNF beinhaltet eine Transformation für jedes Pixel in dem Zielbild. Im Sinne des Vorliegenden können diese Transformationen Ähnlichkeitstransformationen beinhalten. Für ein gegebenes Pixel identifiziert die Transformation in dem NNF für jenes Pixel einen entsprechenden Quellpatch, der auf Ähnlichkeit zu einem dem Pixel zugeordneten Zielpatch getestet werden kann. Das Ziel des patchbasierten Synthesizers 970 besteht in der Identifizierung eines Quellpatches: (beispielsweise aus einem brauchbaren Entnahmebereich), der am besten auf jeden Zielpatch (das heißt auf den nächsten Nachbarn) abgestimmt ist. Das NNF kann während verschiedener Phasen des Syntheseprozesses aktualisiert werden, um den Nächster-Nachbar-Quellpatch für jeden Zielpatch durchweg zu verfolgen.
  • Implizieren kann der patchbasierte Synthesizer 970 einen iterativen Prozess des Initialisierens, Suchens, Wählens und für jede Skala einer Mehrskalenlösung erfolgenden Hochskalierens, wie sich einem Durchschnittsfachmann auf dem Gebiet erschließt. Als solches beinhaltet der patchbasierte Synthesizer 970 bei der in 9 dargestellten Ausführungsform eine entsprechende Initialisierungskomponente 972, eine Verbreitungssuchkomponente 974, eine Zufallssuchkomponente 976, eine Wahlkomponente 978 und eine Hochskalierungskomponente 980.
  • Für jedes Zielpixel aus einem Zielbild (beispielsweise einem Loch) weist die Initialisierungskomponente 972 eine zufällig generierte Transformation als Initialisierung zu. Wie hier beschrieben wird, können diese Transformationen Ähnlichkeitstransformationen beinhalten. Ähnlichkeitstransformationsparameter können nutzerseitig ausgewählt, vorbestimmt, eine Kombination hieraus oder anderes sein. Im Allgemeinen sind die zufällig generierten Transformationen gegenüber den anwendbaren Ähnlichkeitstransformationsparametern (beispielsweise Suchdomänen einer Translation, einer Skalierung, einer Drehung und/oder Spiegelung) beschränkt. Vorteilhafterweise bestimmt die Patchbrauchbarkeitskomponente 965 die Brauchbarkeit eines jeden Kandidatenpatches. Für Kandidatenquellpatches, die den Patchbrauchbarkeitstest nicht bestehen, weist die Initialisierungskomponente 972 eine neue zufällig generierte Transformation zu, um den durchgefallenen Kandidatenpatch zu ersetzen, und es wird der Patchbrauchbarkeitstest wiederholt. Erfolgt das Nichtbestehen des Patchbrauchbarkeitstests für eine vorbestimmte Anzahl von Malen (beispielsweise 256), so kann ein Kandidatenpatch generiert werden, indem der brauchbare Entnahmebereich (beispielsweise durch Verformung des Loches) verringert wird, die entsprechende Suchdomäne beschränkt wird und/oder eine zufällig generierte einfache Translation anstelle einer vollständigen Ähnlichkeitstransformation benutzt wird. Als solches kann diese alternative Technik benutzt werden, um einen brauchbaren Kandidatenpatch zu generieren.
  • Im Allgemeinen führt der patchbasierte Synthesizer 970 eine Suche (beispielsweise mittels der Verbreitungssuchkomponente 974 und der Zufallssuchkomponente 976) durch, um Kandidatenpatches zu identifizieren, die das NNF verbessern, wie sich einem Durchschnittsfachmann auf dem Gebiet erschließt. Vorteilhafterweise bestimmt die Patchbrauchbarkeitskomponente 965 die Brauchbarkeit eines jeden Kandidatenpatches. Besteht ein Kandidatenquellpatch einen Patchbrauchbarkeitstest nicht, so wird der Kandidatenpatch nicht zur Verbesserung des NNF eingesetzt. Kandidatenpatches, die den Patchbrauchbarkeitstest bestehen, werden bewertet, um zu bestimmen, ob ein gegebener Kandidatenpatch ein besserer Treffer für einen bestimmten Zielpatch im Vergleich zu einem vorhandenen nächsten Nachbarn in dem NNF ist (ob beispielsweise ein Kandidatenpatch den Patchabstand verringert). Mit anderen Worten, es gilt: NNF = Min(NNF, vorheriges NNF).
  • Bei einigen Ausführungsformen können die Verbreitungssuchkomponente 974 und die Zufallssuchkomponente 976 Kandidatenpatches auf eine Art identifizieren, die eine deterministische Füllsynthese erleichtert. Bei herkömmlichen Techniken kann ein bezeichnetes Loch in mehrere Subunterteilungen zur parallelen Verarbeitung durch verschiedene Threads unterteilt sein. Bei einem Beispiel kann ein Loch in drei Subunterteilungen unterteilt sein, wobei jeder der drei Threads eine entsprechende Subunterteilung parallel verarbeitet. Bei herkömmlichen Techniken verarbeitet ein bestimmter Thread jedes Pixel in einer zugewiesenen Subunterteilung in der Scanlinienreihenfolge. Für ein gegebenes Pixel verbreitet die Verbreitungssuchkomponente 974 beispielsweise Lösungen für benachbarte Pixel und wählt die beste Lösung aus; die Zufallssuchkomponente 976 identifiziert Lösungen für zufällig identifizierte Pixel und wählt die beste Lösung aus; und der zugewiesene Thread bewegt sich zum nächsten Pixel in der Scanlinienreihenfolge. Da einige Threads mit dem Generieren einer Füllung für eine zugewiesene Subunterteilung gegebenenfalls schneller fertig sind, werden oftmals Füllungen für eine Subunterteilung unter Nutzung von Patches generiert, die aus einer unvollständigen Füllung für eine benachbarte Subunterteilung entnommen sind. Als Ergebnis ist die herkömmliche Patchsynthese im Allgemeinen nicht wiederholbar.
  • Als solches kann ein bezeichnetes Loch bei einigen Ausführungsformen in mehr Subunterteilungen als Threads unterteilt werden, und es können mehrere Threads zugewiesen werden, um nur nichtangrenzende Subunterteilungen parallel zu verarbeiten. Bei einem einfachen Beispiel wird davon ausgegangen, dass ein Loch in sechs Blöcke von 0 bis 5 unterteilt ist. Für geradzahlige Iterationen des patchbasierten Synthesizers 970 können drei Threads abwechselnde Blöcke (beispielsweise 0, 2, 4) in der Scanlinienreihenfolge verarbeiten. Während ungeradzahliger Iterationen können die Threads abwechselnde Blöcke in der umgekehrten Scanlinenreihenfolge verarbeiten (beispielsweise 1, 3, 5). Da benachbarte Subunterteilungen Füllungen bis zu dem Zeitpunkt fertiggestellt haben, zu dem ein Thread die Verarbeitung einer bestimmten Subunterteilung beendet, ist der Zeitpunkt, zu dem jeder Thread die Verarbeitung seiner zugewiesenen Subunterteilung beendet, nicht von Belang. Als solches kann das Zuweisen mehrerer Threads zur parallelen Verarbeitung nichtangrenzender Subunterteilungen deterministische Ergebnisse erzeugen.
  • Bei einigen Ausführungsformen kann eine Wellenfronttechnik zum Identifizieren von Kandidatenpatches eingesetzt werden, um eine deterministische Füllsynthese zu erleichtern. Allgemein ist eine Wellenfrontverarbeitung eine Technik zur Verarbeitung eines mehrdimensionalen Gitters, bei dem eine bestimmte Einheit in dem Gitter von anderen Einheiten in dem Gitter abhängt. Beginnend in einer Ecke geht die Verarbeitung in einem Diagonalsweep über das Gitter, der einer Wellenfront ähnelt. Im Zusammenhang mit einer patchbasierten Synthese kann das Suchen unter Nutzung einer Wellenfront anstatt in der Scanlinienreihenfolge durchgeführt werden (So kann die Verbreitungssuchkomponente 974 beispielsweise Lösungen für ein benachbartes Pixel darüber und für ein benachbartes Pixel links davon verbreiten). Ein Zufallszahlengenerator, der von der Zufallssuchkomponente 976 benutzt wird, um Pixel zufällig zu identifizieren, kann modifiziert werden. Zufallszahlengeneratoren sind üblicherweise dafür konzipiert, eine bekannte Abfolge von gleichartigen Zahlen bei gegebenem Samen (seed) zu generieren. Bei einer Wellenfrontverarbeitung zur Erzeugung einer deterministischen Patchsynthese kann der Zufallszahlengenerator derart modifiziert werden, dass er <x, y, patchbasierte Synthesizeriteration, Zufallssuchiterationen> als Eingabe annimmt, um eine gleichförmige Zahl zu generieren. Auf diese Weise erzeugt eine gegebene Abfolge von Abrufen an dem Zufallszahlgenerator für einen gegebenen <x,y>-Pixelwert dieselben Ergebnisse. Auf diese Weise kann ein deterministischer Satz von Kandidatenpatches identifiziert werden, was eine deterministische Füllsynthese erleichtert. Weitere Abwandlungen erschließen sich einem Durchschnittsfachmann auf dem Gebiet.
  • Im Allgemeinen führt ein patchbasierter Synthesizer 970 ein Wählen (voting) (beispielsweise mittels der Wählkomponente 978) durch, um ein vorgeschlagenes Zielbild zu generieren. Im Allgemeinen wird das Patchwählen durchgeführt, um die Pixelfarben eines jeden überlappenden Nachbarpatches zu akkumulieren, wobei die Farbwahlen gewichtet gemittelt werden. Das vorgeschlagene Zielbild kann an das Frontend (beispielsweise das Ergebnisfeld 940) zur Präsentation als Vorschau weitergereicht werden. Wie vorstehend beschrieben worden ist, wird das vorgeschlagene Zielbild während jeder nachfolgenden Iteration aktualisiert, und es kann das aktualisierte Zielbild an das Front-End; für jede Iteration weitergereicht werden. Das Ergebnis ist eine sich graduell bzw. allmählich aktualisierende Live-Vorschau. Diese graduellen bzw. allmählichen Aktualisierungen können für einen Nutzer eine schnelle Echtzeitrückmeldung und eine frühere Gelegenheit dafür bereitstellen, gewünschte Änderungen vorzunehmen, um zu einer gewünschten Füllung zu gelangen.
  • Der batchbasierte Synthesizer 970 führt ein Hochskalieren (upscaling) (beispielsweise mit der Hochskalierungskomponente 980) durch, um das aktuelle NNF zur Nutzung als Grundlinie während einer nachfolgenden Iteration auf der nächsten Skala hochzuskalieren. Da dieses Hochskalieren unbrauchbare Patches erzeugen kann, bestimmt die Patchbrauchbarkeitskomponente 965 vorteilhafterweise die Brauchbarkeit von Kandidatenpatches entsprechend dem hochskalierten NNF. Kandidatenpatches, die eine Patchbrauchbarkeit aufweisen, werden während einer nachfolgenden Iteration des patchbasierten Synthesizers 270 bzw. 970 bewertet, um zu bestimmen, ob ein gegebener Kandidatenpatch ein besserer Treffer für einen bestimmten Zielpatch als ein entsprechender Kandidatenpatch ist, der aus einem zufällig initialisierten NNF generiert ist.
  • Im Allgemeinen wird der Ablauf durch den patchbasierten Synthesizer 970 für nachfolgende Pyramidenskalen wiederholt, bis eine vollaufgelöste Lösung generiert und an das Front-End zur Präsentation gegenüber einem Nutzer weitergereicht ist. Bei einigen Ausführungsformen kann der patchbasierte Synthesizer 970 unterbrechen, wenn irgendeine Komponente einen (beispielsweise vom Nutzer) aktualisierten Entnahmebereich und/oder eine anwendbare Suchdomäne einer Translation, Skalierung, Drehung und/oder Spiegelung detektiert. Bei diesem Szenario kann der patchbasierte Synthesizer 970 vorhandene Berechnungen wiederverwerten, um die Geschwindigkeit zu erhöhen und unnötige Neuberechnungen, wie vorstehend bereits detailliert beschrieben worden ist, zu vermeiden, und kann automatisch mit der Verarbeitung des aktualisierten Entnahmebereiches und/oder der Suchdomäne beginnen. Zusätzlich und/oder alternativ kann der patchbasierte Synthesizer 970 ein vorgeschlagenes Zielbild zur Präsentation als Vorschau weiterleiten und seine Verarbeitung unterbrechen, um eine Nutzereingabe vor Fertigstellung der Füllung, wie vorstehend bereits detaillierter beschrieben worden ist, zu erleichtern. Eine Nutzerangabe dahingehend, die Verarbeitung fortzusetzen, kann bewirken, dass der patchbasierte Synthesizer 970 die verbleibenden Auflösungen, wie vorstehend bereits detaillierter beschrieben worden ist, berechnet.
  • Als solches kann ein Nutzer unter Nutzung der hier beschriebenen Implementierungen contentsensitive Füllungen effizient und effektiv synthetisieren. Obwohl hier Techniken anhand einer Bildvervollständigung im Zusammenhang mit einer Fotobearbeitung beschrieben werden, können die vorliegenden Techniken auf einen beliebigen Lochfüllalgorithmus oder einen beliebigen anderen Algorithmus, der einen Bereich eines Bildes entnimmt, um einen anderen Bereich zu füllen (beispielsweise spot healing), angewendet werden. Diese Implementierungen sind rein exemplarisch, und andere Implementierungen erschließen sich einem Durchschnittsfachmann auf dem Gebiet.
  • Exemplarische Betriebsumgebung
  • Nach erfolgter Beschreibung eines Überblickes über Ausführungsformen der vorliegenden Erfindung wird nachstehend eine exemplarische Betriebsumgebung, in der Ausführungsformen der vorliegenden Erfindung implementiert sein können, beschrieben, um einen allgemeinen Kontext für verschiedene Aspekte der vorliegenden Erfindung bereitzustellen. Insbesondere zeigt 11 eine exemplarische Betriebsumgebung zur Implementierung von Ausführungsformen der vorliegenden Erfindung und ist allgemein als Rechenvorrichtung 1100 bezeichnet. Die Rechenvorrichtung 1100 ist lediglich ein Beispiel für eine geeignete Rechenumgebung und soll keine Beschränkung hinsichtlich des Umfanges der Nutzung oder der Funktionalität der Erfindung nahelegen. Ebenso wenig soll die Rechenvorrichtung 1100 derart gedeutet werden, dass bei ihr eine Abhängigkeit oder eine Bedingung im Zusammenhang mit einer Komponente oder einer Kombination von dargestellten Komponenten gegeben ist.
  • Die Erfindung kann im allgemeinen Kontext von Computercode oder maschinenseitig nutzbaren Anweisungen beschrieben werden, darunter computerausführbare Anweisungen, so beispielsweise Programmmodule, die von einem Computer oder einer anderen Maschine ausgeführt werden, so beispielsweise einem zellenbasierten Telefon, einem Persönlichen Digitalen Assistenten oder einer Handvorrichtung. Allgemein bezeichnen Programmmodule, darunter Routinen, Programme, Objekte, Komponenten, Datenstrukturen und dergleichen, Code, der bestimmte Aufgaben durchführt oder bestimmte abstrakte Datentypen implementiert. Die Erfindung kann durch eine Vielzahl von Systemkonfigurationen umgesetzt werden, darunter Handvorrichtungen, Geräte der Unterhaltungselektronik, Allzweckcomputer, spezialisierte Rechenvorrichtungen und dergleichen mehr. Die Erfindung kann zudem in verteilten Rechenumgebungen umgesetzt werden, wo Aufgaben von remote angeordneten Verarbeitungsvorrichtungen, die durch ein Kommunikationsnetzwerk verknüpft sind, durchgeführt werden.
  • Wie in 11 gezeigt ist, beinhaltet die Rechenvorrichtung 1100 einen Bus 1110, der die nachfolgenden Vorrichtungen direkt oder indirekt koppelt: einen Speicher 1112, einen oder mehrere Prozessoren 1114, eine oder mehrere Präsentationskomponenten 1116, I/O-Ports (Eingabe/Ausgabe I/O) 1118, Eingabe-/Ausgabekomponenten 1120 und eine illustrative Leistungsversorgung 1122. Der Bus 1110 stellt etwas dar, das ein oder mehrere Busse (so beispielsweise ein Adressbus, ein Datenbus oder eine Kombination hieraus) sein kann. Obwohl die verschiedenen Blöcke von 11 der Klarheit halber mit Linien gezeigt sind, ist die Abgrenzung zwischen verschiedenen Komponenten in Wirklichkeit nicht so klar, weshalb die Linien im übertragenen Sinne besser grau oder unscharf sein sollten. Man kann eine Präsentationskomponente, so beispielsweise eine Anzeigevorrichtung, beispielsweise auch als I/O-Komponente betrachten. Zudem können Prozessoren einen Speicher aufweisen. Im Zusammenhang mit der vorliegenden Erfindung wird anerkannt, dass dies das Wesen des Fachgebietes ist, und es wird erneut darauf verwiesen, dass das Diagramm von 11 für eine exemplarische Rechenvorrichtung, die in Verbindung mit einer oder mehreren Ausführungsformen der vorliegenden Erfindung benutzt werden kann, rein illustrativ ist. Es erfolgt keine Unterscheidung zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Handvorrichtung“ und dergleichen mehr, da diese alle im Umfang von 11 und im Verweis auf „Rechenvorrichtung“ mit einbezogen sind.
  • Die Rechenvorrichtung 1100 beinhaltet üblicherweise eine Vielzahl von computerlesbaren Medien. Computerlesbare Medien können beliebige verfügbare Medien sein, auf die von der Rechenvorrichtung 1110 zugegriffen werden kann, und beinhalten sowohl flüchtige wie auch nichtflüchtige Medien sowie entfernbare wie auch nichtentfernbare Medien. Beispiels- und nicht beschränkungshalber können computerlesbare Medien Computerspeichermedien und Kommunikationsmedien umfassen. Computerspeichermedien beinhalten sowohl flüchtige wie auch nichtflüchtige, sowohl entfernbare wie auch nichtentfernbare Medien, die durch ein beliebiges Verfahren oder eine beliebige Technologie zur Speicherung von Informationen, so beispielsweise von computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten, implementiert sind. Computerspeichermedien beinhalten unter anderem RAM, ROM, EEPROM, einen Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD oder einen anderen optischen Plattenspeicher, magnetische Kassetten, ein Magnetband, einen Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, oder ein beliebiges anderes Medium, das zum Speichern der gewünschten Informationen benutzt und auf das von der Rechenvorrichtung 1100 zugegriffen werden kann. Computerspeichermedien umfassen keine Signale als solche. Kommunikationsmedien verkörpern üblicherweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, so beispielsweise einer Trägerwelle oder einem anderen Transportmechanismus, und beinhalten beliebige Informationsverteilungsmedien. Der Begriff „moduliertes Datensignal“ bezeichnet ein Signal, bei dem eine oder mehrere Eigenschaften derart eingestellt oder geändert sind, dass Informationen in dem Signal codiert sind. Beispiels- und nicht beschränkungshalber beinhalten Kommunikationsmedien verdrahtete Medien, so beispielsweise ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, wie auch drahtlose Medien, so beispielsweise akustische, HF-basierte, infrarotbasierte und andere drahtlose Medien. Kombinationen aus beliebigen der vorbeschriebenen Objekte sollen ebenfalls in computerlesbaren Medien beinhaltet sein.
  • Der Speicher 1112 beinhaltet Computerspeichermedien in Form eines flüchtigen und/oder nichtflüchtigen Speichers. Der Speicher kann entfernbar, nichtentfernbar oder eine Kombination hieraus sein. Exemplarische Hardwarevorrichtungen beinhalten einen Solid-State-Speicher, Festplatten, Laufwerke mit optischen Platten und dergleichen mehr. Die Rechenvorrichtung 1100 beinhaltet einen oder mehrere Prozessoren, die Daten aus verschiedenen Entitäten, so beispielsweise dem Speicher 1112 oder den I/O-Komponenten 1120, lesen. Eine Präsentationskomponente / Präsentationskomponenten 1116 präsentiert/präsentieren einem Nutzer oder einer anderen Vorrichtung Datenangaben. Exemplarische Präsentationskomponenten beinhalten eine Anzeigevorrichtung, einen Lautsprecher, eine Druckkomponente, eine Vibrationskomponente und dergleichen mehr.
  • Die I/O-Ports 1118 ermöglichen, dass die Rechenvorrichtung 1100 logisch mit anderen Vorrichtungen gekoppelt ist, die I/O-Komponenten 1120 beinhalten, von denen einige eingebaut sein können. Illustrative. Komponenten beinhalten ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung und dergleichen mehr. Die I/O-Komponenten 1120 können eine natürliche Nutzerschnittstelle (NUI) bereitstellen, die Gesten im Raum, Sprache oder andere physiologische Eingaben, die von einem Nutzer generiert werden, verarbeitet. In einigen Fällen können die Eingaben an ein geeignetes Netzwerkelement zur weiteren Verarbeitung übertragen werden. Implementieren kann eine NUI eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm wie auch neben dem Bildschirm, Gesten im Raum, Kopf- und Augenverfolgung und Berührungserkennung (was nachstehend noch detaillierter beschrieben wird), die einer Anzeige der Rechenvorrichtung 1100 zugeordnet sind. Die Rechenvorrichtung 1100 kann zur Gestendetektion und Erkennung mit Tiefenkameras ausgestattet sein, so beispielsweise mit stereoskopischen Kamerasystemen, Infrarotkamerasystemen, RGB-Kamerasystemen, einer Technologie mit berührungsempfindlichen Bildschirmen und Kombinationen hieraus. Zusätzlich kann die Rechenvorrichtung 1100 mit Beschleunigungsmessern oder Gyroskopen ausgestattet sein, die eine Bewegungsdetektion ermöglichen. Die Ausgabe der Beschleunigungsmesser oder Gyroskope kann für die Anzeige der Rechenvorrichtung 1100 bereitgestellt werden, um eine immersive erweiterte Realität oder eine virtuelle Realität wiederzugeben.
  • Die hier beschriebenen Ausführungsformen unterstützen das automatische Synthetisieren eines contentsensitiven Entnahmebereiches. Die hier beschriebenen Komponenten bezeichnen integrierte Komponenten eines Systems zur automatischen Synthese. Integrierte Komponenten bezeichnen die Hardwarearchitektur und das Softwareframework, die die Funktionalität unter Nutzung des Systhems zur automatischen Synthese unterstützen. Die Hardwarearchitektur bezeichnet physische bzw. physikalische Komponenten und wechselseitige Beziehungen derselben, während das Softwareframework Software bezeichnet, die eine Funktionalität bereitstellt, die mit einer auf einer Vorrichtung verkörperten Hardware implementiert sein kann.
  • Das softwarebasierte End-to-End-System kann innerhalb der Systemkomponenten arbeiten, um Computerhardware zur Bereitstellung einer Systemfunktionalität zu betreiben. Auf niedriger Ebene führen Hardwareprozessoren Anweisungen aus, die aus einem in Maschinensprache (auch als Maschinencode oder nativ bezeichnet) geschriebenen Anweisungssatz für einen gegebenen Prozessor ausgewählt sind. Der Prozessor erkennt die nativen Anweisungen und führt sie entsprechend den Funktionen auf niedriger Ebene beispielsweise im Zusammenhang mit Logik-, Steuerungs- bzw. Regelungs- und Speichervorgängen aus. Auf niedriger Ebene angesiedelte Software, die in Maschinencode geschrieben ist, kann eine komplexere Funktionalität für höhere Ebenen der Software bereitstellen. Im Sinne des Vorliegenden beinhalten computerausführbare Anweisungen eine beliebige Software, darunter Software auf niedriger Ebene, die in Maschinencode geschrieben ist, Software auf höherer Ebene, so beispielsweise Anwendungssoftware, oder eine beliebige Kombination hieraus. In diesem Zusammenhang können die Systemkomponenten Ressourcen verwalten und Dienste für die Systemfunktionalität bereitstellen. Beliebige andere Variationen und. Abwandlungen sind in Ausführungsformen der vorliegenden Erfindung einbezogen.
  • Nach dem erfolgten Identifizieren verschiedener Komponenten in der vorliegenden Offenbarung sollte einsichtig sein, dass eine beliebige Anzahl von Komponenten und deren Anordnungen eingesetzt werden können, um die gewünschte Funktionalität innerhalb des Umfangs der vorliegenden Offenbarung zu erreichen. Die Komponenten in den Ausführungsformen sind, wie in den Figuren dargestellt ist, der Konzeptklarheit halber mit Linien dargestellt. Andere Anordnungen dieser und anderer Komponenten können ebenfalls implementiert sein. Obwohl einige Komponenten beispielsweise als einzelne Komponenten dargestellt sind, können viele der hier beschriebenen Elemente als diskrete oder verteilte Komponenten oder in Zusammenwirkung mit anderen Komponenten oder in einer beliebigen geeigneten Kombination und an einem beliebigen geeigneten Ort implementiert sein. Einige Elemente können weggelassen werden. Verschiedene Funktionen, die hier derart beschrieben sind, dass sie von einer oder mehreren Entitäten durchgeführt werden, können zudem von Hardware, Firmware und/oder Software, wie nachstehend noch beschrieben wird, ausgeführt werden. Verschiedene Funktionen können beispielsweise von einem Prozessor ausgeführt werden, der Anweisungen ausführt, die in einem Speicher gespeichert sind. Als solche können andere Anordnungen und Elemente (beispielsweise Maschinen, Schnittstellen, Funktionen, Reihenfolgen und Gruppierungen von Funktionen und dergleichen) zusätzlich zu den gezeigten oder anstelle derselben verwendet werden.
  • Der Gegenstand der vorliegenden Erfindung ist hier spezifisch beschrieben worden, um bestimmten regulatorischen Erfordernissen zu genügen. Die Beschreibung selbst soll den Umfang des vorliegenden Patentes jedoch nicht beschränken. Vielmehr ist im Zusammenhang mit der vorliegenden Erfindung beabsichtigt, dass der beanspruchte Erfindungsgegenstand auch auf andere Weise verkörpert sein kann, sodass auch andere Schritte oder Kombinationen von Schritten, die zu den in der vorliegenden Offenbarung beschriebenen ähnlich sind, in Verbindung mit gegenwärtigen oder zukünftigen Technologien beinhaltet sind. Obwohl die Begriffe „Schritt“ und/oder „Block“ in dem Sinne benutzt werden, dass sie verschiedene Elemente der eingesetzten Verfahren beschreiben, sollen diese Begriffe nicht dahingehend interpretiert werden, dass sie irgendeine bestimmte Reihenfolge unter oder zwischen verschiedenen hier offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte ist explizit beschrieben.
  • Die vorliegende Erfindung ist anhand bestimmter Ausführungsformen beschrieben worden, die in jeder Hinsicht als illustrativ und nicht als restriktiv gedeutet werden sollen. Alternative Ausführungsformen erschließen sich einem Durchschnittsfachmann auf dem einschlägigen Gebiet, zu dem die vorliegende Erfindung gehört, ohne von deren Umfang abzugehen.
  • Aus dem Vorstehenden ist ersichtlich, dass die vorliegende Erfindung dafür geeignet ist, alle vorstehend aufgeführten Ziele und Aufgaben zusammen mit anderen Vorteilen, die für das System und Verfahren offensichtlich und ihnen inhärent sind, zu verwirklichen. Es sollte einsichtig sein, dass bestimmte Merkmale und Teilkombinationen von Nutzen sind und auch ohne Verweis auf andere Merkmale und Teilkombinationen eingesetzt werden können. All dies ist vom Umfang der Ansprüche abgedeckt und ist innerhalb desselben.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15921457 [0065]

Claims (20)

  1. Ein oder mehrere Computerspeichermedien zum Speichern von computernutzbaren Anweisungen, die bei Nutzung durch eine Rechenvorrichtung veranlassen, dass die Rechenvorrichtung Operationen bzw. Vorgänge durchführt, die umfassen: Identifizieren eines Streifens von Kontextpixeln, die einen Zielbereich eines Bildes umgeben; Clustern der Kontextpixel zu Clustern auf Grundlage einer oder mehrerer Kenngrößen der Kontextpixel; Erweitern der Cluster von Kontextpixeln derart, dass Pixel des Bildes beinhaltet sind, die auf Grundlage eines Ähnlichkeitskriteriums bzw. von Ähnlichkeitskriterien zu den Clustern von Kontextpixeln ähnlich sind; Bilden eines Entnahmebereiches aus den erweiterten Clustern von Kontextpixeln; und Synthetisieren einer Füllung für den Zielbereich aus Pixeln, die aus dem Entnahmebereich entnommen sind.
  2. Ein oder mehrere Computerspeichermedien nach Anspruch 1, wobei die Vorgänge des Weiteren umfassen: Anwenden eines Verwischens auf den Streifen von Kontextpixeln vor dem Clustern.
  3. Ein oder mehrere Computerspeichermedien nach Anspruch 1 oder 2, wobei das Erweitern der Cluster auf Grundlage eines Ähnlichkeitskriteriums bzw. von Ähnlichkeitskriterien umfasst: Weiterreichen eines jeden der Cluster von Kontextpixeln als Vordergrundpixel an einen Segmentierungsalgorithmus, der ein entsprechendes erweitertes Cluster von Kontextpixeln ausgibt.
  4. Ein oder mehrere Computerspeichermedien nach einem der vorhergehenden Ansprüche, wobei das Clustern der Kontextpixel auf Grundlage einer oder mehrerer Kenngrößen umfasst: mehrdimensionales Clustern auf Grundlage von Farbe und Position in dem Bild.
  5. Ein oder mehrere Computerspeichermedien nach einem der vorhergehenden Ansprüche, wobei die Vorgänge des Weiteren umfassen: Beschneiden bzw. Abschneiden wenigstens eines der Cluster, das nicht an den Zielbereich angrenzt.
  6. Ein oder mehrere Computerspeichermedien nach einem der vorhergehenden Ansprüche, wobei die Vorgänge des Weiteren umfassen: Anpassen einer Fläche wenigstens eines der erweiterten Cluster von Kontextpixeln hinsichtlich der Proportionalität.
  7. Ein oder mehrere Computerspeichermedien nach Anspruch 6, wobei das Anpassen der Fläche wenigstens eines der erweiterten Cluster von Kontextpixeln umfasst: erneutes Ausführen eines Segmentierungsalgorithmus mit einem Ausdehnungsverhältnis für die erweiterten Cluster von Kontextpixeln als Ziel.
  8. Ein oder mehrere Computerspeichermedien nach einem der vorhergehenden Ansprüche, wobei die Vorgänge des Weiteren umfassen: wenigstens eines von einem Füllen von Löchern oder einem Entfernen von Flecken des Entnahmebereiches.
  9. Ein oder mehrere Computerspeichermedien nach einem der vorhergehenden Ansprüche, wobei die Vorgänge des Weiteren umfassen: Hinzufügen eines Pufferungsstreifens von Pixeln, die den Zielbereich umgeben, zu dem Entnahmebereich.
  10. Computerisiertes Verfahren zum Bilden eines Entnahmebereiches eines Bildes, wobei das Verfahren umfasst: Identifizieren von Kontextpixeln, die einen Zielbereich des Bildes zur Füllung umgeben; Clustern der Kontextpixel zu Clustern auf Grundlage einer oder mehrerer Kenngrößen der Kontextpixel; Bereitstellen eines jeden der Cluster von Kontextpixeln als Vordergrundpixel für einen Segmentierungsalgorithmus, der ein entsprechendes erweitertes Cluster von Kontextpixeln ausgibt; und Vereinigen der erweiterten Cluster von Kontextpixeln, um den Entnahmebereich zu bilden.
  11. Computerisiertes Verfahren nach Anspruch 10, des Weiteren umfassend: Anwenden eines Verwischens auf die Kontextpixel vor dem Clustern.
  12. Computerisiertes Verfahren nach Anspruch 10 oder 11, wobei das Clustern der Kontextpixel auf Grundlage einer oder mehrerer Kenngrößen umfasst: mehrdimensionales Clustern auf Grundlage von Farbe und Position in dem Bild.
  13. Computerisiertes Verfahren nach einem der Ansprüche 10 bis 12, des Weiteren umfassend: Beschneiden bzw. Abschneiden wenigstens eines der Cluster, das nicht an den Zielbereich angrenzt.
  14. Computerisiertes Verfahren nach einem der Ansprüche 10 bis 13, des Weiteren umfassend: Anpassen einer Fläche wenigstens eines der erweiterten Cluster von Kontextpixeln hinsichtlich der Proportionalität.
  15. Computerisiertes Verfahren nach Anspruch 14, wobei das Anpassen der Fläche wenigstens eines der erweiterten Cluster von Kontextpixeln umfasst: erneutes Ausführen des Segmentierungsalgorithmus mit einem Ausdehnungsverhältnis für die erweiterten Cluster von Kontextpixeln als Ziel.
  16. Computerisiertes Verfahren nach einem der Ansprüche 10 bis 15, des Weiteren umfassend: wenigstens eines von einem Füllen von Löchern oder einem Entfernen von Flecken des Entnahmebereiches.
  17. Computerisiertes Verfahren nach einem der Ansprüche 10 bis 16, des Weiteren umfassend: Hinzufügen eines Pufferungsstreifens von Pixeln, die den Zielbereich umgeben, zu dem Entnahmebereich.
  18. Computersystem, umfassend: einen oder mehrere Hardwareprozessoren und einen Speicher, der dafür konfiguriert ist, Computerprogrammanweisungen für den einen oder die mehreren Hardwareprozessoren bereitzustellen; ein Mittel zum Synthetisieren eines Ausdehnungsbereiches für einen bezeichneten Bereich eines Bildes unter Nutzung des einen oder der mehreren Hardwareprozessoren zum Steuern bzw. Regeln eines Vordergrundsegmentierungsalgorithmus zum Identifizieren von Kontextpixeln des Bildes von außerhalb des bezeichneten Bereiches, die mit dem bezeichneten Bereich verknüpft sind; und eine Schnittstellenkomponente, die dafür konfiguriert ist, den einen oder die mehreren Hardwareprozessoren dafür zu nutzen, den bezeichneten Bereich in Verknüpfung mit dem synthetisierten Ausdehnungsbereich, der die identifizierten Kontextpixel von außerhalb des bezeichneten Bereiches umfasst, zu präsentieren.
  19. Computersystem nach Anspruch 18, wobei der bezeichnete Bereich ein nutzerseitig ausgewählter Bereich ist, der ein Objekt umschließt, und wobei der Ausdehnungsbereich einen Abschnitt des Objektes aufnimmt, der unbeabsichtigterweise aus dem nutzerseitig ausgewählten Bereich weggelassen worden ist.
  20. Computersystem nach Anspruch 18 oder 19, wobei der bezeichnete Bereich ein automatisch detektierter Bereich ist, in dem eine Objektdetektion genutzt wird, und wobei der Ausdehnungsbereich einen Abschnitt des Objektes aufnimmt, der unbeabsichtigterweise aus dem automatisch detektierten Bereich weggelassen worden ist.
DE102020001165.9A 2019-05-23 2020-02-21 Automatische Synthese eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung Pending DE102020001165A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/420,782 2019-05-23
US16/420,782 US11042969B2 (en) 2019-05-23 2019-05-23 Automatic synthesis of a content-aware sampling region for a content-aware fill

Publications (1)

Publication Number Publication Date
DE102020001165A1 true DE102020001165A1 (de) 2020-11-26

Family

ID=70278215

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020001165.9A Pending DE102020001165A1 (de) 2019-05-23 2020-02-21 Automatische Synthese eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung

Country Status (5)

Country Link
US (2) US11042969B2 (de)
CN (1) CN111986291B (de)
AU (1) AU2020201593B2 (de)
DE (1) DE102020001165A1 (de)
GB (1) GB2589389B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111583147B (zh) * 2020-05-06 2023-06-06 北京字节跳动网络技术有限公司 图像处理方法、装置、设备及计算机可读存储介质
US20220156896A1 (en) * 2020-11-18 2022-05-19 Samsung Electronics Co., Ltd. System and method for image inpainting based on layout-guided pre-processing attention mechanism
CN113781571A (zh) * 2021-02-09 2021-12-10 北京沃东天骏信息技术有限公司 图像处理方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001080186A1 (en) * 2000-04-14 2001-10-25 Orlean Holding N.V. An improved system and method for digitally editing a composite image
US6879717B2 (en) * 2001-02-13 2005-04-12 International Business Machines Corporation Automatic coloring of pixels exposed during manipulation of image regions
US20030095707A1 (en) * 2001-11-19 2003-05-22 Koninklijke Philips Electronics N.V. Computer vision method and system for blob-based analysis using a probabilistic pramework
US8483518B2 (en) * 2010-02-19 2013-07-09 Microsoft Corporation Image-based CAPTCHA exploiting context in object recognition
KR101669820B1 (ko) * 2010-07-02 2016-10-27 삼성전자주식회사 볼륨 예측 기반 폐색 영역 양방향 복원 장치 및 방법
US9153031B2 (en) * 2011-06-22 2015-10-06 Microsoft Technology Licensing, Llc Modifying video regions using mobile device input
CN102972038B (zh) * 2011-07-01 2016-02-10 松下电器产业株式会社 图像处理装置、图像处理方法、程序、集成电路
CN102324102B (zh) * 2011-10-08 2014-04-16 北京航空航天大学 一种图像场景空洞区域结构和纹理信息自动填补方法
KR101791604B1 (ko) * 2012-09-11 2017-10-30 삼성전자주식회사 헤드 포지션 추정 방법 및 장치, 컴퓨터 판독가능 저장 매체
US8867794B2 (en) * 2012-10-23 2014-10-21 Cyberlink Corp. Systems and methods for performing image inpainting based on texture analysis
US8731324B1 (en) * 2012-11-02 2014-05-20 Cyberlink Corp. Systems and methods for performing image inpainting
AU2012258421A1 (en) * 2012-11-30 2014-06-19 Canon Kabushiki Kaisha Superpixel-based refinement of low-resolution foreground segmentation
US9213896B2 (en) * 2013-03-05 2015-12-15 Mitsubishi Electric Research Laboratories, Inc. Method for detecting and tracking objects in image sequences of scenes acquired by a stationary camera
WO2015111840A1 (ko) * 2014-01-24 2015-07-30 에스케이플래닛 주식회사 프레임 클러스터링을 이용한 광고 삽입 장치 및 방법
KR101599786B1 (ko) * 2014-01-24 2016-03-09 에스케이플래닛 주식회사 참조 영역 분할을 이용한 인페인팅 장치 및 방법
US20150363660A1 (en) * 2014-06-12 2015-12-17 Asap54.Com Ltd System for automated segmentation of images through layout classification
EP2981063B1 (de) * 2014-07-31 2020-03-04 Samsung Electronics Co., Ltd Verfahren zum modifizieren eines bildes, einschliesslich des fotografierens eines beschränkten elements und vorrichtung zur durchführung des verfahrens
US10121256B2 (en) * 2014-08-28 2018-11-06 Qualcomm Incorporated Temporal saliency map
AU2015392660B2 (en) * 2015-04-27 2019-05-16 Wuhan Optics Valley Zoyon Science And Technology Co., Ltd. Stepwise-refinement pavement crack detection method
US10165199B2 (en) * 2015-09-01 2018-12-25 Samsung Electronics Co., Ltd. Image capturing apparatus for photographing object according to 3D virtual object
CN108475330B (zh) * 2015-11-09 2022-04-08 港大科桥有限公司 用于有伪像感知的视图合成的辅助数据
US9911201B2 (en) * 2016-06-23 2018-03-06 Adobe Systems Incorporated Imaging process initialization techniques
US20190108631A1 (en) * 2017-10-06 2019-04-11 AgriSight, Inc. System and method for field pattern analysis
US11393113B2 (en) * 2019-02-28 2022-07-19 Dolby Laboratories Licensing Corporation Hole filling for depth image based rendering

Also Published As

Publication number Publication date
GB2589389B (en) 2022-06-08
AU2020201593A1 (en) 2020-12-10
US20200372619A1 (en) 2020-11-26
US20210312599A1 (en) 2021-10-07
GB202003400D0 (en) 2020-04-22
CN111986291B (zh) 2024-04-23
US11042969B2 (en) 2021-06-22
GB2589389A (en) 2021-06-02
CN111986291A (zh) 2020-11-24
AU2020201593B2 (en) 2021-08-19

Similar Documents

Publication Publication Date Title
DE60008520T2 (de) Darstellung von durchsichtigen schichten
DE102020001165A1 (de) Automatische Synthese eines contentsensitiven Entnahmebereiches für eine contentsensitive Füllung
DE69735488T2 (de) Verfahren und vorrichtung zum ausrichten von bildern
DE102018006247A1 (de) Digitalbildvervollständigung unter Verwendung des Deep Learning
DE102016011380A1 (de) Bildsynthese unter Verwendung einer Aktivmaske
DE102015009820A1 (de) Bildsegmentierung für eine Kamera-Liveeinspielung
DE102019006149A1 (de) Begrenzungsbewusste Objektentfernung und Contentfüllung
DE102019001695A1 (de) Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente
US8023768B2 (en) Universal front end for masks, selections, and paths
DE112012005827T5 (de) Bearbeiten von Medien unter Verwendung von graphischer Darstellung der Medien
DE112004000377T5 (de) Bildsegmentierung in einer dreidimensionalen Umgebung
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
DE102018003475A1 (de) Formbasierte Grafiksuche
US11379992B2 (en) Patch expansion for segmentation network training
DE102019216979A1 (de) Oberflächenrekonstruktion für interaktive augmented reality
DE102020001437A1 (de) Verwendung kontextsensitiver Sensoren und multidimensionaler Gesteneingaben zum effizienten Generieren von nachbearbeiteten Digitalbildern
DE102019000178A1 (de) Interaktives System zum automatischen Synthetisieren einer contentsensitiven Füllung
WO2008076647A2 (en) Stable mask combination in digital image editing
DE102013020611B4 (de) Ein Ansatz für eine Kamerasteuerung
DE102018009313A1 (de) Erzeugen selektiver virtueller Langzeitbelichtungsbilder
WO2014206394A2 (de) Computerimplementierter digitaler unschärfefilter zur erzeugung eines einem falsch fokussierten linsensystem entsprechenden unschärfeeindrucks in einem digital in einem bild-speicher ursprünglich vorliegenden bild
US8340406B1 (en) Location-weighted color masking
DE102021004573A1 (de) Generieren von Änderungsvergleichen während des Bearbeitens von Digitalbildern
DE102023131117A1 (de) Modifizierung digitaler Bilder durch Verschieben von Objekten mit Tiefenwirkung
DE102023131072A1 (de) Aufweiten von Objektmasken zur Verringerung von Artefakten während des Rekonstruierens

Legal Events

Date Code Title Description
R012 Request for examination validly filed