DE102017006557A1 - Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen - Google Patents

Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen Download PDF

Info

Publication number
DE102017006557A1
DE102017006557A1 DE102017006557.8A DE102017006557A DE102017006557A1 DE 102017006557 A1 DE102017006557 A1 DE 102017006557A1 DE 102017006557 A DE102017006557 A DE 102017006557A DE 102017006557 A1 DE102017006557 A1 DE 102017006557A1
Authority
DE
Germany
Prior art keywords
source image
image patch
patch
offset
patches
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
DE102017006557.8A
Other languages
English (en)
Inventor
Nathan Carr
Kalyan Sunkavalli
Michal Lukác
Elya Shechtman
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 Systems 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 Systems Inc filed Critical Adobe Systems Inc
Publication of DE102017006557A1 publication Critical patent/DE102017006557A1/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
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/755Deformable models or variational models, e.g. snakes or active contours
    • G06V10/7557Deformable models or variational models, e.g. snakes or active contours based on appearance, e.g. active appearance models [AAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/248Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
    • G06T7/337Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods involving reference images or patches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

Bestimmte Ausführungsformen implizieren ein Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets zum Patchabgleichen. Ein Prozessor identifiziert beispielsweise einen Offset zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch. Sind der erste Quellbildpatch und der erste Zielbildpatch ausreichend ähnlich, so aktualisiert der Prozessor eine Datenstruktur dahingehend, dass diese eine Markierung beinhaltet, die den Offset spezifiziert. Der Prozessor verknüpft den ersten Quellbildpatch über die Datenstruktur mit der Markierung. Der Prozessor wählt anschließend bestimmte hochfrequente Offsets, die den identifizierten Offset beinhalten, unter den häufig auftretenden Offsets in der Datenstruktur aus. Der Prozessor verwendet diese Offsets zum Identifizieren eines zweiten Zielbildpatches, der an dem identifizierten Offset von einem zweiten Quellbildpatch befindlich ist. Der Prozessor verknüpft den zweiten Quellbildpatch über die Datenstruktur mit dem identifizierten Offset auf Grundlage einer ausreichenden Ähnlichkeit zwischen dem zweiten Quellbildpatch und dem zweiten Zielbildpatch.

Description

  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der Bildverarbeitung und insbesondere die Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen und zum hierdurch erfolgenden Verbessern der Übertragung von Offsets durch ein Quellbild während der Ausführung eines Patchabgleichsalgorithmus.
  • Hintergrund
  • Bestimmte Typen von digitaler Bildverarbeitung implizieren das Identifizieren von ausreichend ähnlichen Patches in zwei verschiedenen Bildbereichen (beispielsweise zwei verschiedene Bilder oder zwei verschiedene Bereiche desselben Bildes). Bei einem Beispiel wird die Ähnlichkeit zwischen zwei Bildpatches auf Grundlage einer Metrik, die einen Patchabstand angibt, bewertet, wobei einer der Bildpatches aus einem Quellbildbereich ausgewählt wird, während der andere Bildpatch aus einem Zielbildbereich ausgewählt wird. Die Pixelwerte in den beiden Patches können beispielsweise als Vektoren dargestellt werden, wobei ein Ähnlichkeitskennwert (similarity score) auf Grundlage der Ähnlichkeit zwischen den Vektoren berechnet wird. Ein Beispiel für einen Ähnlichkeitskennwert ist durch die auf summierten Quadraten basierenden Abstände zwischen Pixelwerten in den Patches gegeben, wobei sich Patches mit identischem Bildinhalt in einem Abstand von 0 befinden. Das Identifizieren dieser Ähnlichkeiten zwischen Quellbildpatches und Zielbildpatches ermöglicht eine Verwendung der Zielbilder zum Manipulieren des Quellbildes. Beispiele für diese Manipulationen beinhalten die Bildrekonstruktion (image in-painting), den Stereoabgleich (stereo matching) und die Textursynthese.
  • Einige Bildmanipulationsanwendungen verwenden einen oder mehrere Patchabgleichsalgorithmen, um Ähnlichkeiten zwischen Quellbildpatches und Zielbildpatches ausfindig zu machen. Ein Patchabgleichsalgorithmus identifiziert Entsprechungen zwischen Quellbildpatches und ausreichend ähnlichen Zielbildpatches unter Verwendung von Offsetvektoren. Der Patchabgleichsalgorithmus erzeugt beispielsweise wenigstens eine Transformation, die einen gegebenen Quellbildpatch auf einen entsprechenden Zielbildpatch abbildet. Der Offsetvektor identifiziert einen Offset von dem Quellbildpatch zu einem Zielbildpatch, der zu dem Quellbildpatch ausreichend ähnlich ist. Bei einem Beispiel wird ein Quellbildpatch in dem Quellbildbereich unter Verwendung von Pixelkoordinaten S(i, j) definiert, die angeben, dass der Quellbildpatch sein Zentrum (oder irgendeinen anderen Referenzpunkt) in Spalte i und Reihe j der Pixel in dem Quellbildbereich S aufweist. Auf ähnliche Weise wird ein Zielbildpatch in dem Zielbildbereich T unter Verwendung von Pixelkoordinaten T(k, l) definiert, die angeben, dass der Zielbildpatch sein Zentrum (oder irgendeinen anderen Referenzpunkt) in Spalte k und Reihe l der Pixel in dem Zielbildbereich T aufweist. Eine Transformation von S nach T wird unter Verwendung eines Offsetvektors O zwischen den Patches S(i, j) und T(k, l) dargestellt, wobei der Offsetvektor als O = (k – i, l – j) definiert ist.
  • Bei bestimmten Patchabgleichsalgorithmen wird ein Offsetvektor für einen ersten Quellbildpatch auf einen benachbarten Quellbildpatch übertragen. Das Übertragen wird auf Grundlage der Wahrscheinlichkeit dafür durchgeführt, dass naheliegende Patches in dem Quellbild zu naheliegenden Patches in dem Zielbild ausreichend ähnlich sind. Ein Quellbildpatch und dessen benachbarte Quellbildpatches können beispielsweise eine Ziegelmauer darstellen. Ein Patchabgleichsalgorithmus identifiziert bei dem Versuch, einen ausreichend ähnlichen Zielbildpatch für den Quellbildpatch ausfindig zu machen, einen Offsetvektor (beispielsweise den Vektor (5, 5)), der bereits für den benachbarten Quellbildpatch bestimmt worden ist. Ein Zielbild mit einem Bildpatch, der eine Ziegelmauer darstellt, weist wahrscheinlich einen naheliegenden Bildpatch, der eine Ziegelmauer darstellt, auf. Um diesen Umstand vorteilhaft zu nutzen, sucht der Patchabgleichsalgorithmus nach einem Zielbildpatch, der von dem Quellbildpatch einen Offset um denselben Offsetvektor (beispielsweise ein Zielbildpatch, der sich 5 Pixel oberhalb und 5 Pixel rechts von dem Quellbildpatch befindet), der für den benachbarten Quellbildpatch bestimmt worden ist, aufweist.
  • In einigen Fällen ist der über den Offset identifizierte Zielbildpatch zu dem Quellbildpatch gegebenenfalls nicht ausreichend ähnlich. Der Offset kann beispielsweise einen Zielbildpatch identifizieren, der ein Fenster anstelle einer Ziegelmauer darstellt. In diesem Fall setzt der Patchabgleichsalgorithmus die Suche nach einem ähnlicheren Zielbildpatch fort.
  • Die Nutzung des von benachbarten Patches her erfolgenden Übertragens von Offsetvektoren kann Verarbeitungsunzulänglichkeiten verursachen. Beispielsweise kann das Nächster-Nachbar-Übertragen für das Übertragen von Offsets durch ein Quellbild, das die Übertragung blockierende Objekte aufweist, suboptimal sein. Bei einem vereinfachten Beispiel stellt ein Quellbildbereich eine Ziegelmauer mit einem Laternenmast (das heißt einem blockierenden Objekt) in der Mitte der Mauer dar, und der Zielbildbereich stellt eine ähnliche Ziegelmauer ohne Laternenmast dar. Der Quellbildbereich beinhaltet einen ersten „Ziegelmauer”-Bildpatch, der einen Abschnitt der Ziegelmauer auf der einen Seite des Laternenmastes darstellt, einen „Laternenmast”-Bildpatch, der einen Abschnitt des Laternenmastes darstellt, und einen zweiten „Ziegelmauer”-Bildpatch, der einen Abschnitt der Ziegelmauer auf der anderen Seite des Laternenmastes darstellt.
  • Beim vorliegenden Beispiel ermöglicht derselbe Offsetvektor (beispielsweise der „Ziegelmauer”-Offset (5, 5)), dass ausreichend ähnliche Zielbildpatches sowohl für den ersten „Ziegelmauer”-Bildpatch wie auch den zweiten „Ziegelmauer”-Bildpatch ausfindig gemacht werden. Der „Ziegelmauer”-Offset ermöglicht jedoch nicht, dass ein ausreichend ähnlicher Zielbildpatch für den „Laternenmast”-Bildpatch ausfindig gemacht wird. Das um 5 Pixel nach oben und 5 Pixel nach rechts von dem Laternenpfosten erfolgende Bewegen kann beispielsweise einen Zielbildpatch, der die Ziegelmauer darstellt, anstelle eines Bildpatches, der ähnlich zu dem „Laternenmast”-Bildpatch ist, auswählen. Der Patchausgleichsalgorithmus wählt daher einen weiteren Offsetvektor (beispielsweise den „Laternenmast”-Offset (11, 11)), der einen ausreichend ähnlichen Zielbildpatch für den „Laternenmast”-Bildpatch lokalisiert.
  • Da der „Laternenmast”-Bildpatch ein Nachbar des zweiten „Ziegelmauer”-Bildpatches ist, wird der „Laternenmast”-Offset und nicht der „Ziegelmauer”-Offset auf den zweiten „Ziegelmauer”-Bildpatch sogar dann übertragen, wenn der „Ziegelmauer”-Offset einen ähnlicheren Zielbildpatch für den zweiten „Ziegelmauer”-Bildpatch lokalisieren würde. Der „Laternenmast”-Offset lokalisiert keinen Zielbildpatch, der zu dem zweiten „Ziegelmauer”-Bildpatch ausreichend ähnlich ist. Daher setzt der Patchabgleichsalgorithmus die Suche nach einem ähnlicheren Zielbildpatch fort und erzeugt hierdurch erneut den „Ziegelmauer”-Offset, der zwischen den ersten und zweiten „Ziegelmauer”-Patches übertragen worden wäre, wenn nicht der „Laternenmast”-Bildpatch zwischen beiden positioniert gewesen wäre. Auf diese Weise blockiert der Bildpatch des Laternenmastes, dass der „Ziegelmauer”-Offset zwischen den beiden „Ziegelmauer”-Patches übertragen wird. Daher muss der Patchabgleichsalgorithmus die Verarbeitungsressourcen beim erneuten Erstellen desselben „Ziegelmauer”-Offsets für beide „Ziegelmauer”-Patches erweitern. Die erweiterten Verarbeitungsressourcen können weiter zunehmen, wenn zusätzliche Suchtechniken, so beispielsweise Drehungen und Maßstabsänderungen von Bildpatches, die Dimensionszahl des Suchraumes der Zielbildpatches erhöhen.
  • Bestehende Patchabgleichsalgorithmen können daher aus Gründen wie den vorbeschriebenen (jedoch nicht auf diese beschränkt) rechentechnische Unzulänglichkeiten mit sich bringen.
  • Zusammenfassung
  • Bestimmte Ausführungsformen implizieren die Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen. Bei einigen Ausführungsformen identifiziert ein Prozessor einen Offset zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch. Sind der erste Quellbildpatch und der erste Zielbildpatch ausreichend ähnlich, so aktualisiert der Prozessor eine Datenstruktur dahingehend, dass diese eine Markierung, die den identifizierten Offset spezifiziert, beinhaltet. Der Prozessor verknüpft über die Datenstruktur den ersten Quellbildpatch mit der Markierung. Der Prozessor wählt anschließend bestimmte hochfrequente Offsets, darunter den identifizierten Offset, unter den häufig auftretenden Offsets, die in der Datenstruktur identifiziert sind, aus. Der Prozessor verwendet die ausgewählten Offsets zum Identifizieren eines zweiten Zielbildpatches, der an dem identifizierten Offset von einem zweiten Quellbildpatch befindlich ist. Der Prozessor verknüpft den zweiten Quellbildpatch über die Datenstruktur mit dem identifizierten Offset auf Grundlage dessen, dass der zweite Quellbildpatch und der zweite Zielbildpatch ausreichend ähnlich sind.
  • Die vorliegenden illustrativen Ausführungsformen sind nicht zur Begrenzung oder Definition der Offenbarung aufgeführt, sondern stellen Beispiele zur Vertiefung des Verständnisses dar. Zusätzliche Ausführungsformen werden in der Detailbeschreibung erläutert, wobei eine weitere Beschreibung dort erfolgt.
  • Kurzbeschreibung der Figuren
  • Merkmale, Ausführungsformen und Vorteile der vorliegenden Offenbarung erschließen sich besser bei einem Studium der nachfolgenden Detailbeschreibung in Zusammenschau mit der begleitenden Zeichnung.
  • 1 ist ein Diagramm zur Darstellung eines Beispiels für eine Netzwerkumgebung zur Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen entsprechend bestimmten Ausführungsformen.
  • 2 ist ein Diagramm zur Darstellung eines Patchabgleichsprozessablaufes, bei dem eine Bildmanipulationsanwendung eine dynamisch erzeugte Offsettabelle verwendet, um eine Patchabbildung zu erzeugen, die Bildpatches in einem Quellbildbereich auf Bildpatches in einem Zielbildbereich abbildet, entsprechend bestimmten Ausführungsformen.
  • 3 ist ein Diagramm zur Darstellung von vereinfachten Beispielen für einen Quellbildbereich und einen Zielbildbereich, die von einem Patchabgleichsprozess verwendet werden, entsprechend bestimmten Ausführungsformen.
  • 4 ist ein Diagramm zur Darstellung von vereinfachten Beispielen für Patches in dem Quellbildbereich und dem Zielbildbereich von 3 entsprechend bestimmten Ausführungsformen.
  • 5 ist ein Flussdiagramm zur Darstellung eines Beispiels für ein Verfahren zur Verwendung von Bildpatchmarkierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen entsprechend bestimmten Ausführungsformen.
  • 6 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Identifizieren eines Offsets zwischen einem Quellbildpatch und einem Zielbildpatch bei dem Verfahren von 5 entsprechend bestimmten Ausführungsformen.
  • 7 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Aktualisieren der dynamisch erzeugten Offsettabelle von 2 unter Verwendung des in 6 identifizierten Offsets entsprechend bestimmten Ausführungsformen.
  • 8 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Auswählen von häufig verwendeten Offsets zum Abgleichen eines Zielbildpatches mit einem Quellbildpatch bei dem Verfahren von 5 entsprechend bestimmten Ausführungsformen.
  • 9 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Identifizieren von Zielbildpatches unter Verwendung der in 8 ausgewählten Offsets entsprechend bestimmten Ausführungsformen.
  • 10 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Verknüpfen des in 8 identifizierten Quellbildpatches mit einem Offset, der den ähnlichsten Zielbildpatch identifiziert, entsprechend bestimmten Ausführungsformen.
  • 11 ist ein Blockdiagramm zur Darstellung eines Beispiels für ein Computersystem, das eine Bildmanipulationsanwendung zur Verwendung einer dynamisch erzeugten Offsettabelle ausführt, um eine Patchabbildung zu erzeugen, die Bildpatches in einem Quellbildbereich auf Bildpatches in einem Zielbildbereich abbildet, entsprechend bestimmten Ausführungsformen.
  • Detailbeschreibung
  • Die vorliegende Offenbarung beinhaltet Systeme und Verfahren zur Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für einen Patchabgleichsalgorithmus, der Entsprechungen zwischen Patches in einem Quellbildbereich und Patches in einem Zielbildbereich identifiziert. Ein Offset ist eine von einem Bildbereich auf einen anderen Bildbereich wirkende Abbildung, die einen Vergleich von Bildpatches in den beiden Bildbereichen ermöglicht. Bei verschiedenen Beispielen werden Offsets zur Verschiebung eines oder mehrerer Bildpatches, zur Drehung eines oder mehrerer Bildpatches, zur Spiegelung eines oder mehrerer Bildpatches, zur Skalierung eines oder mehrerer Bildpatches, zur perspektivischen Verzerrung eines oder mehrerer Bildpatches, zur Scherung eines oder mehrerer Bildpatches und zur nichtlinearen Verwölbung eines oder mehrerer Bildpatches verwendet. Wie vorstehend erläutert worden ist, nutzen herkömmliche Lösungen zum Übertragen von Offsets durch ein Quellbild bei einem Patchabgleichsalgorithmus Computerressourcen gegebenenfalls nicht effizient. Bei bestehenden Systemen wird das Übertragen von Offsets von Quellbildbereichen auf ihre naheliegenden Nachbarn gegebenenfalls beispielsweise durch blockierende Objekte unterbrochen, was erforderlich machen kann, dass bestimmte Offsets auf ressourcenintensive Weise erneut erstellt werden, anstatt dass sie einfach von einem Quellbildpatch auf einen anderen kopiert (das heißt übertragen) werden.
  • Bestimmte hier beschriebene Ausführungsformen können Offsets effizienter durch Verfolgen dessen übertragen, wie häufig verschiedene Offsets in dem Quellbild verwendet werden. Bei den vorliegenden Ausführungsformen kann, wenn der Patchabgleichsalgorithmus versucht, einen ähnlichen Zielbildpatch für einen gegebenen Quellbildpatch ausfindig zu machen, der Patchabgleichsalgorithmus einen oder mehrere Offsets, die häufiger von dem Patchabgleichsalgorithmus verwendet worden sind, versuchen, um Quellbildpatches mit Übungsbildpatches abzugleichen. Bei einigen Ausführungsformen berücksichtigt der Patchabgleichsalgorithmus bei der Auswahl eines gegebenen Offsets sowohl diesen Offset wie auch dessen Inverse als potenzielle Offsets für einen Vergleich der Bildpatches. Die Auswahl des hochfrequenten Offsets beruht nicht auf der Übertragung eines Offsets von einem benachbarten Bildpatch her. Damit ermöglicht die Verwendung von hochfrequenten Offsets so, wie hier beschrieben, dass Offsets, die häufig verwendet werden, um ausreichend ähnliche Zielbildpatches ausfindig zu machen, im Quellbild sogar dann übertragen werden, wenn blockierende Bildobjekte das Übertragen von Offsets andernfalls unterbrechen würden.
  • Das nachfolgende nichtbeschränkende Beispiel ist angeführt, um bestimmte Ausführungsformen vorzustellen. Eine Bildmanipulationsanwendung führt einen Patchabgleichsalgorithmus unter Verwendung einer oder mehrerer Tabellen oder anderer Datenstrukturen aus, um die Frequenz bzw. Häufigkeit zu verfolgen, mit der bestimmte Offsets verwendet werden. Jeder Eintrag in einer Tabelle beinhaltet eine diskrete Markierung oder eine andere Kennung, die für einen gegebenen Offset spezifisch ist, wie auch eine Beschreibung des Offsets und Frequenzdaten bzw. Häufigkeitsdaten für den Offset. Die Frequenzdaten bzw. Häufigkeitsdaten geben an, wie viele Quellbildpatches auf ausreichend ähnliche Zielbildpatches über den Offset abgebildet werden. Ein erster Eintrag in der Tabelle beinhaltet beispielsweise die Markierung „O_1”, die einen bestimmten Offset identifiziert, die Offsetbeschreibung „(5, 5)”, die angibt, dass der Offset eine Bewegung von 5 Pixeln nach oben und 5 Pixeln nach rechts impliziert, und eine Gesamtzahl von Patches, die den mit „O_1” markierten Offset verwenden. Ein zweiter Eintrag in der Tabelle beinhaltet die Markierung „O_2”, die Offsetbeschreibung „(11, 12)”, die einen Offset von 11 Pixeln nach oben und 12 Pixeln nach rechts angibt, und eine Gesamtzahl von Patches, die den mit „O_2” markierten Offset verwenden.
  • Die Bildmanipulationsanwendung verwendet eine zweite Tabelle oder eine andere Datenstruktur zum Identifizieren dessen, welche Bildpatches jeden Offset verwenden. Diese zweite Tabelle beinhaltet Daten, die Verknüpfungen von Bildpatches mit spezifischen Offsetmarkierungen identifizieren. Eine derartige Tabelle kann beispielsweise Einträge beinhalten, die zeigen, dass die Patches 1 bis 5 eines Quellbildbereiches mit „O_1” verknüpft sind, während die mit 6 bis 8 nummerierten Patches des Quellbildbereiches mit „O_2” verknüpft sind. Immer dann, wenn eine neue Verknüpfung erstellt wird, aktualisiert die Bildmanipulationsanwendung die Frequenzdaten bzw. Häufigkeitsdaten durch eine Gesamtzahl von Patches, die mit einer gegebenen Offsetmarkierung verknüpft sind.
  • Bei einigen Ausführungsformen ermöglicht die Tabelle der Offsetmarkierungen und der damit verknüpften Frequenzdaten bzw. Häufigkeitsdaten bei fortschreitendem Patchabgleichsalgorithmus eine dynamische, globale Verfolgung von Entsprechungsinformation über einen Quellbildbereich. Sucht die Bildmanipulationsanwendung nach einem Zielbildpatch, der zu einem gegebenen Bildpatch ähnlich ist, so verwendet die Bildmanipulationsanwendung die Frequenzdaten bzw. Häufigkeitsdaten zum Auswählen eines oder mehrerer Offsets, die von dem Quellbild häufig verwendet werden. So können beispielsweise 40% der Quellbildpatches auf Zielbildpatches abgebildet werden, wobei die meisten Abbildungen „O_1” und nicht „O_2” verwenden. Beim vorliegenden Beispiel wählt die Bildmanipulationsanwendung einen Zielbildpatch aus, der sich 5 Pixel oberhalb und 5 Pixel rechts von dem in Rede stehenden Quellbildpatch befindet (das heißt den für „O_1” spezifizierten Offset). Auf diese Weise wird „O_1” durch das Quellbild schneller übertragen, als dies erfolgen würde, wenn der Patchabgleichsalgorithmus einzig auf einer Übertragung zwischen naheliegenden Patches beruhen würde. Des Weiteren ermöglicht die Verwendung der Frequenzinformation zur Übertragung von Offsets auf nichtnaheliegende Patches sogar dann eine Verbesserung der Übertragung von nutzbaren Offsets, wenn ein Quellbildbereich ein oder mehrere blockierende Objekte beinhaltet, da das Auswählen von hochfrequenten Offsets aus einer Offsettabelle nicht erfordert, dass die hochfrequenten Offsets von einem benachbarten Bildpatch verwendet werden.
  • Bestimmte Ausführungsformen erleichtern eine effiziente Datenspeicherung bei der Durchführung des Patchabgleichsalgorithmus. Bestehende Systeme können beispielsweise mehrere Einzeldaten für jeden Quellbildpatch speichern, um eine Transformation zwischen einem Quellbildpatch und seinem entsprechenden Zielbildpatch zu identifizieren. Die mehreren Einzeldaten können ein erstes Vektorelement des Offsets und ein zweites Vektorelement des Offsets beinhalten. In Fällen, in denen ein Zielbildpatch gedreht und der Größe nach angepasst werden muss, um mit einem Quellbildpatch abgeglichen zu sein, können die Einzeldaten auch Information über die Vorgänge der Drehung und Skalierung beinhalten. Daher erfordert das Verknüpfen derselben Transformation mit vier Quellbildpatches bei bestehenden Systemen ein Speichern von vier Kopien desselben Satzes von Transformationsparametern. Im Gegensatz hierzu speichern einige der hier beschriebenen Ausführungsformen den Satz von Transformationsparametern bei der Beschreibung eines Offsets einmal, verknüpfen die Transformationsparameter mit einer Markierung und verknüpfen die Bildpatches einfach mit der Markierung.
  • In der Zeichnung ist 1 ein Diagramm zur Darstellung eines Beispiels für eine Netzwerkumgebung 100 zur Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen entsprechend bestimmten Ausführungsformen. Bei dem in 1 dargestellten Beispiel verwendet eine Bildmanipulationsanwendung 102 einen oder mehrere Patchabgleichsalgorithmen, um Ähnlichkeiten zwischen Quellbildpatches und Zielbildpatches ausfindig zu machen. Die Manipulationsanwendung 102 verwendet beispielsweise Abgleichsdaten 108, um eine Patchabbildung 114 für einen Quellbildbereich 104 und einen Zielbildbereich 106 zu erzeugen. Beispiele für Betriebsvorgänge, die von dem Patchabgleichsalgorithmus durchgeführt werden, werden nachstehend anhand 2 bis 10 beschrieben. Bei einigen Ausführungsformen wird die Bildmanipulationsanwendung 102 von einer Kreativeinrichtung 118 unter Verwendung von Daten ausgeführt, die in einer Datenspeichereinheit 111 gespeichert sind (beispielsweise eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106, den Abgleichsdaten 108 und der Patchabbildung 114).
  • Bei einigen Ausführungsformen beinhaltet die Umgebung 100 Nutzervorrichtungen, so beispielsweise Nutzervorrichtungen 115a–n. Ausgeführt wird die Bildmanipulationsanwendung 102 bei einigen Ausführungsformen von der Nutzervorrichtung 115a unter Verwendung von Daten, die in einer Datenspeichereinheit (beispielsweise der Datenspeichereinheit 111, die eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106, den Abgleichsdaten 108 und der Patchabbildung 114 speichert) gespeichert sind, oder von Daten, die auf einem anderen nichttemporären computerlesbaren Medium (beispielsweise einem nichttemporären computerlesbaren Medium, das eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106, den Abgleichsdaten 108 und der Patchabbildung 114 speichert) gespeichert sind.
  • Jede der Nutzervorrichtungen 115a–n ist mit jedweder Kreativeinrichtung 118 über ein Netzwerk 116 verbunden. Ein Nutzer der Nutzervorrichtungen verwendet verschiedene Produkte, Anwendungen oder Dienste, die von der Kreativeinrichtung 118 über das Netzwerk 116 unterstützt werden. Beispiele für das Netzwerk 116 beinhalten unter anderem das Internet, ein Ortsbereichsnetzwerk („LAN”), ein Drahtlosbereichsnetzwerk, ein drahtgebundenes Bereichsnetzwerk, ein Großbereichsnetzwerk und dergleichen.
  • Die Nutzervorrichtungen 115a–n entsprechen verschiedenen Nutzern. Beispiele für Nutzer beinhalten unter anderem Berufskreative oder Hobbykreative, die Kreativwerkzeuge verwenden, um Kreativinhalt zu erzeugen, zu bearbeiten, zu verfolgen oder zu verwalten, Marketingprofis, die Marketingwerkzeuge verwenden, um Onlineinhalt zu erzeugen, zu bearbeiten, zu verfolgen oder zu verwalten oder um Onlinemarkierprozesse zu verwalten, Endnutzer, Administratoren, Nutzer, die Bildwerkzeuge verwenden, um Bilder zu erstellen, zu bearbeiten, zu verfolgen oder zu verwalten, Werbetreibende, Herausgeber, Entwickler, Inhalts- bzw. Contentinhaber, Inhalts- bzw. Contentverwalter, Inhalts- bzw. Contentersteller, Inhalts- bzw. Contentbetrachter, Inhalts- bzw. Contentkonsumenten, Designer, Editoren bzw. Herausgeber, eine beliebige Kombination aus diesen Nutzern oder auch ein beliebiger anderer Nutzer, der digitale Werkzeuge verwendet, um digitale Vorgänge zu erstellen, zu bearbeiten, zu verfolgen oder zu verwalten.
  • Digitale Werkzeuge beinhalten im Sinne des Vorliegenden Werkzeuge, die dafür verwendet werden, eine Funktion oder einen Arbeitsablauf elektronisch durchzuführen. Beispiele für digitale Werkzeuge beinhalten unter anderem ein Erstellungswerkzeug, ein Inhalts- bzw. Contentbearbeitungswerkzeug, ein Inhalts- bzw. Contentveröffentlichungswerkzeug, ein Inhalts- bzw. Contentverfolgungswerkzeug, ein Inhalts- bzw. Contentverwaltungswerkzeug, ein Inhalts- bzw. Contentdruckwerkzeug, ein Inhalts- bzw. Contentkonsumierwerkzeug, eine beliebige Kombination aus diesen Werkzeugen oder auch ein beliebiges anderes Werkzeug, das dafür verwendet werden kann, eine beliebige andere Funktion oder einen beliebigen anderen Arbeitsablauf im Zusammenhang mit dem Inhalt bzw. Content zu erstellen, zu bearbeiten, zu verwalten, zu erzeugen, zu verfolgen oder zu konsumieren. Digitale Werkzeuge beinhalten die Kreativeinrichtung 118. Ein digitaler Vorgang beinhaltet im Sinne des Vorliegenden einen Vorgang, den man durch eine elektronische Vorrichtung konsumieren kann. Beispiele für einen digitalen Vorgang beinhalten ein Inhalts- bzw. Contenterstellen, ein Inhalts- bzw. Contentbearbeiten, ein Inhalts- bzw. Contentverfolgen, ein Inhalts- bzw. Contentveröffentlichen, ein Inhalts bzw. Contenthinterlegen, ein Inhalts- bzw. Contentdrucken, ein Inhalts- bzw. Contentverwalten, ein Inhalts- bzw. Contentbetrachten, ein Inhalts- bzw. Contentkonsumieren, eine beliebige Kombination dieser Vorgänge oder auch einen beliebigen anderen Arbeitsablauf oder eine beliebige andere Funktion, der/die im Zusammenhang mit dem Inhalt bzw. Content durchgeführt werden kann. Inhalt bzw. Content beinhaltet im Sinne des Vorliegenden elektronischen Inhalt bzw. Content. Beispiele für Inhalt bzw. Content beinhalten unter anderem ein Bild, ein Video, eine Website, eine Webpage, eine Nutzerschnittstelle, einen Menüeintrag, ein Werkzeugmenü, ein Magazin, eine Diashow, eine Animation, einen Post in sozialen Netzwerken (social post), einen Kommentar, einen Blog, einen Datenstrom (data feed), ein Audioobjekt, eine Anzeige, eine Vektorgrafik, eine Bitmap, ein Dokument, eine beliebige Kombination aus einem oder mehreren Inhalten bzw. Contents oder einen beliebigen anderen elektronischen Inhalt bzw. Content.
  • Beispiele für Nutzervorrichtungen beinhalten unter anderem einen Personalcomputer, einen Tabletcomputer, einen Desktopcomputer, eine Verarbeitungseinheit, eine beliebige Kombination aus diesen Vorrichtungen oder auch eine beliebige andere geeignete Vorrichtung mit einem oder mehreren Prozessoren. Jede Nutzervorrichtung beinhaltet wenigstens eine Anwendung, die von der Kreativeinrichtung 118 unterstützt wird. Man beachte, dass die nachfolgende Beschreibung anhand der Nutzervorrichtung 115a als Beispiel erfolgt und dass auch eine beliebige andere Nutzervorrichtung Verwendung finden kann.
  • Die Kreativeinrichtung 118 beinhaltet eine oder mehrere Engines zur Bereitstellung eines oder mehrerer digitaler Vorgänge für den Nutzer. Bei einigen Ausführungsformen beinhalten diese Engines eine oder mehrere der in 1 dargestellt Engines. Bei anderen Ausführungsformen können eine oder mehrere der in 1 dargestellten Engines in der Kreativeinrichtung 118 auch weggelassen sein.
  • Die Kreativeinrichtung 118 kann unter Verwendung eines oder mehrerer Server, einer oder mehrerer Verarbeitungsvorrichtungen, einer oder mehrerer Plattformen mit entsprechenden Anwendungsprogrammschnittstellen, einer Cloudinfrastruktur oder dergleichen implementiert sein. Zusätzlich kann jede Engine zudem unter Verwendung eines oder mehrerer Server, einer oder mehrerer Verarbeitungsvorrichtungen, einer oder mehrerer Plattformen mit entsprechenden Anwendungsprogrammschnittstellen, einer Cloudinfrastruktur oder dergleichen implementiert sein. Die Kreativeinrichtung 118 beinhaltet zudem eine Datenspeichereinheit 111. Die Datenspeichereinheit 111 kann als eine oder mehrere Datenbanken oder als ein oder mehrere Datenserver implementiert sein. Die Datenspeichereinheit 111 beinhaltet Daten, die von der Bildmanipulationsanwendung 102 und anderen Engines der Kreativeinrichtung 118 verwendet werden.
  • Bei einigen Ausführungsformen besucht ein Nutzer der Nutzervorrichtung 115a eine Webseite oder einen Appstore und sucht nach Anwendungen, die von der Kreativeinrichtung 118 unterstützt werden (beispielsweise die Bildmanipulationsanwendung 102). Die Kreativeinrichtung 118 stellt die Anwendungen (beispielsweise die Bildmanipulationsanwendung 102) in Form von Software als Dienst (Software as a Service, „SaaS”) oder als eigenständige Anwendung bzw. App, die auf der Nutzervorrichtung 115a installiert werden kann, oder auch als Kombination hieraus bereit.
  • Bei einigen Ausführungsformen richtet der Nutzer ein Konto mit der Kreativeinrichtung 118 durch Bereitstellung von Nutzerdetails und durch Erstellen von Logindetails ein. Alternativ kann die Kreativeinrichtung 118 Logindetails automatisch für den Nutzer in Reaktion auf den Empfang der Nutzerdetails erstellen. Bei einigen Aspekten wird der Nutzer zudem aufgefordert, einen Anwendungsverwalter bzw. Appmanager zu installieren. Der Anwendungsverwalter bzw. Appmanager ermöglicht, dass der Nutzer die Installation von verschiedenen Anwendungen, die von der Kreativeinrichtung 118 unterstützt werden, sowie weitere mit den Anwendungen bzw. Apps zusammenhängende Funktionalitäten verwaltet, so beispielsweise Aktualisierungen bzw. Updates, Teilnahmekonten und dergleichen. Die Nutzerdetails werden von einer Nutzerverwaltungsengine 116 empfangen und als Nutzerdaten 119 in der Datenspeichereinheit 111 gespeichert. Bei einigen Aspekten beinhalten die Nutzerdaten 119 des Weiteren Kontendaten 120, unter denen die Nutzerdetails gespeichert werden.
  • Bei einigen Ausführungsformen kann der Nutzer entweder für ein Probekonto optieren, oder er kann eine Zahlung auf Grundlage des Konto- oder Teilnahmetyps, der von dem Nutzer gewählt wird, leisten. Alternativ kann die Zahlung auch auf dem Produkt oder der Anzahl von Produkten, die von dem Nutzer gewählt werden, beruhen. Bei einigen Ausführungsformen wird auf Grundlage von Zahlungsdetails des Nutzers ein Nutzerbetriebsprofil 122 von einer Berechtigungsengine 124 erzeugt. Das Nutzerbetriebsprofil 112 wird in der Datenspeichereinheit 111 gespeichert und gibt die Berechtigung eines Nutzers hinsichtlich verschiedener Produkte oder Dienste an. Bei einigen Ausführungsformen gibt das Nutzerbetriebsprofil 122 zudem die Nutzungsart an, so beispielsweise gratis, probeweise, als Student, preisreduziert oder bezahlt. Bei einigen Ausführungsformen können die Nutzerverwaltungsengine 116 und die Berechtigungsengine 124 eine einzige Engine sein, die die Funktionalitäten der beiden Engines wahrnimmt.
  • Bei einigen Ausführungsformen installiert der Nutzer verschiedene Anwendungen, die von der Kreativeinrichtung 118 unterstützt werden, über eine Anwendungsdownloadverwaltungsengine 126. Es sind Anwendungsinstallierer oder Anwendungsprogramme 128, die eine Kopie der Bildmanipulationsanwendung 102 oder einer anderen Software beinhalten können, die mit dem Bild nutzbar sind, um die hier beschriebenen Betriebsvorgänge durchzuführen, in der Datenspeichereinheit 111 vorhanden und werden von dort von der Anwendungsdownloadverwaltungsengine 126 abgerufen. Die Anwendungen werden für den Nutzer direkt oder über den Anwendungsverwalter verfügbar gemacht. Bei einigen Ausführungsformen werden alle Anwendungsprogramme 128 abgerufen und für den Nutzer über eine Schnittstelle des Anwendungsverwalters bereitgestellt. Bei anderen Ausführungsformen werden dem Nutzer die Anwendungsprogramme 128, für die der Nutzer auf Grundlage des Nutzerbetriebsprofils auswählbar ist, angezeigt. Der Nutzer wählt die Anwendungsprogramme 128 aus, die die Bildmanipulationsanwendung 102 oder diejenigen Anwendungen, die der Nutzer herunterladen will, beinhalten können. Die Anwendungsprogramme 128, die die Bildmanipulationsanwendung 102 beinhalten können, werden von dem Anwendungsverwalter über die Anwendungsdownloadverwaltungsengine 126 auf die Nutzervorrichtung 115a heruntergeladen. Entsprechende Daten im Zusammenhang mit dem Herunterladen werden zudem in dem Nutzerbetriebsprofil 122 aktualisiert. Ein Anwendungsprogramm 128 ist ein Beispiel für ein Digitalwerkzeug. Die Anwendungsdownloadverwaltungsengine 126 verwaltet zudem den Prozess der Bereitstellung von Aktualisierungen bzw. Updates für die Nutzervorrichtung 115a.
  • Bei einigen Ausführungsformen wird der Nutzer beim Herunterladen, Installieren und Starten eines Anwendungsprogramms gebeten, Logindetails bereitzustellen. Es wird von der Nutzerverwaltungsengine 116 und der Berechtigungsengine 124 erneut eine Prüfung durchgeführt, um sicherzustellen, dass der Nutzer zur Nutzung des Anwendungsprogramms berechtigt ist. Bei anderen Ausführungsformen wird ein direkter Zugang zu dem Anwendungsprogramm bereitgestellt, wenn der Nutzer bereits in dem Anwendungsverwalter eingeloggt ist.
  • Der Nutzer verwendet ein oder mehrere Anwendungsprogramme 128, die die Bildmanipulationsanwendung 102 beinhalten können, um ein oder mehrere Projekte oder Assets (assets) zu erstellen. Zusätzlich verfügt der Nutzer auch über einen Arbeitsbereich (workspace) innerhalb eines jeden Anwendungsprogramms. Der Arbeitsbereich beinhaltet im Sinne des Vorliegenden die Einstellungen des Anwendungsprogramms, die Einstellungen von Werkzeugen oder die Einstellungen einer Nutzerschnittstelle, die von dem Anwendungsprogramm bereitgestellt wird, sowie beliebige andere Einstellungen oder Eigenschaften, die für das Anwendungsprogramm spezifisch sind. Jeder Nutzer verfügt über einen Arbeitsbereich. Der Arbeitsbereich, die Projekte oder die Assets werden sodann als Anwendungsprogrammdaten 130 in der Datenspeichereinheit 111 von einer Synchronisierungsengine 132 gespeichert. Die Anwendungsprogrammdaten 130 können nutzerspezifisch sein oder mit anderen Nutzern auf Grundlage einer Rechteverwaltung geteilt werden.
  • Bei einigen Ausführungsformen beinhalten die Anwendungsprogrammdaten 130 ein oder mehrere Assets 140. Die Assets 140 können geteilte Assets sein, die der Nutzer mit anderen Nutzern teilen möchte oder die der Nutzer auf einem Marktplatz anbieten will. Die Assets 140 können auch über mehrere Anwendungsprogramme 128, die die Bildmanipulationsanwendung 102 beinhalten, verteilt sein. Bei einigen Ausführungsformen beinhaltet jedes Asset Metadaten 142.
  • Bei einigen Ausführungsformen beinhaltet jedes Asset zudem eine Datei. Beispiele für die Datei beinhalten unter anderem ein Bild 144, einen Text 146, ein Video 148, einen Font 150, ein Dokument 152, eine Kombination aus diesen und dergleichen. Bei einem weiteren Aspekt beinhaltet ein Asset lediglich die Metadaten 142. Die Anwendungsprogrammdaten 130 beinhalten zudem Projektdaten 154 und Arbeitsbereichsdaten 156. Bei einigen Ausführungsformen beinhalten die Projektdaten 154 die Assets 140. Bei zusätzlichen oder alternativen Ausführungsformen sind die Assets 140 eigenständige Assets. Auf ähnliche Weise können die Arbeitsbereichsdaten 156 bei einigen Ausführungsformen Teil der Projektdaten 154 sein oder können bei anderen Ausführungsformen eigenständige Daten sein.
  • Bei einigen Ausführungsformen kann der Nutzer eine oder mehrere Nutzervorrichtungen (beispielsweise die Nutzervorrichtungen 115a–n) aufweisen. Die Anwendungsprogrammdaten 130 sind für den Nutzer von einer beliebigen Vorrichtung (beispielsweise der Vorrichtung 115b) aus zugänglich, darunter von einer Vorrichtung aus, die nicht dafür verwendet worden ist, die Assets 140 zu erstellen (beispielsweise die Vorrichtung 115c). Dies wird von der Synchronisierungsengine 132 bewerkstelligt, die die Anwendungsprogrammdaten 130 in der Datenspeichereinheit 111 speichert und die Anwendungsprogrammdaten 130 für einen Zugriff durch den Nutzer oder andere Nutzer über eine beliebige Vorrichtung verfügbar macht. Vor einem Zugriff auf die Anwendungsprogrammdaten 130 durch den Nutzer seitens einer anderen Vorrichtung oder durch einen anderen Nutzer muss der Nutzer oder der andere Nutzer gegebenenfalls Logindetails zur Authentifizierung bereitstellen, wenn er noch nicht eingeloggt ist. Andernfalls werden, wenn der Nutzer oder der andere Nutzer bereits eingeloggt ist, ein neuerstelltes Asset oder Aktualisierungen bzw. Updates für die Anwendungsprogrammdaten 130 in Echtzeit bereitgestellt. Die Arbeitsbereichsdaten 156 ermöglichen, dass die Synchronisierungsengine 132 eine Arbeitsbereichskonfigurierung für den Nutzer auf einer beliebigen anderen Vorrichtung oder für einen anderen Nutzer auf Grundlage von Rechteverwaltungsdaten bereitstellt.
  • 2 ist ein Diagramm zur Darstellung eines Patchabgleichsprozessablaufes, bei dem eine Bildmanipulationsanwendung 102 eine Patchabbildung 114 erzeugt. Die Patchabbildung 114 bildet Bildpatches in einem Quellbildbereich 104 auf Bildpatches in einem Zielbildbereich 106 ab. Die Bildmanipulationsanwendung 102 erzeugt die Patchabbildung 114 wenigstens teilweise unter Verwendung der Abgleichsdaten 108, wie nachstehend noch detailliert anhand 3 beschrieben wird.
  • Die Bildmanipulationsanwendung 102 beinhaltet Programmcode, der von einer Verarbeitungsvorrichtung ausführbar ist, um einen oder mehrere der hier beschriebenen Betriebsvorgänge durchzuführen. Bei einigen Ausführungsformen ist die Bildmanipulationsanwendung 102 eine eigenständige Anwendung. Bei anderen Ausführungsformen beinhaltet die Bildmanipulationsanwendung 102 ein oder mehrere Module, die in einer anderen Anwendung integriert sind. Ausgeführt werden kann die Bildmanipulationsanwendung 102 auf einer oder mehreren Rechenvorrichtungen, die eigenständige Rechenvorrichtungen sein können, auf einem Satz von Rechenvorrichtungen, die zum Cloudcomputing oder zu einer anderen Art von Distributed Computing konfiguriert sind, oder auf einer beliebigen Kombination hieraus (Ein Beispiel für ein Rechensystem, das die Bildmanipulationsanwendung 102 ausführen kann, wird nachstehend noch anhand 11 beschrieben).
  • Die Abgleichsdaten 108 beinhalten eine beliebige geeignete Datenstruktur, so beispielsweise (jedoch nicht hierauf beschränkt) eine Datenbank oder einen anderen Satz von Tabellen. Bei dem in 2 dargestellten Beispiel beinhalten die Abgleichsdaten 108 eine Patchtabelle 110, die Daten über n verschiedene Patches eines Quellbildbereiches 104 speichert. Bei dem dargestellten Beispiel beinhaltet die Patchtabelle 110 wenigstens ein Feld, das einen Bildpatch (beispielsweise den Satz von Patches „P1, P2, Pk ... Pn”) identifiziert, und ein Feld, das einen oder mehrere Offsets identifiziert, die zum Umwandeln oder auf andere Weise erfolgenden Abbilden eines gegebenen Quellbildpatches auf einen gegebenen Zielbildpatch verwendbar sind. Die Offsetmarkierungen (beispielsweise „O_1”, „O_2”) und dergleichen) werden von der Patchtabelle 110 zum Identifizieren von verschiedenen Offsets verwendet. Bei dem dargestellten Beispiel für eine Patchtabelle 110 können verschiedene Patches mit derselben Offsetmarkierung verknüpft sein.
  • Die Abgleichsdaten 108 beinhalten zudem eine Offsettabelle 112, die Daten über Offsets speichert, wobei die Offsets dafür verwendet werden, Patches des Quellbildbereiches 104 auf den Zielbildbereich 106 abzubilden. Bei dem dargestellten Beispiel beinhaltet jeder Eintrag in der Offsettabelle 112 eine Offsetmarkierung in dem „ID”-Feld (Kennung), die einen jeweiligen Offset eindeutig identifiziert. Jeder Eintrag in der Offsettabelle 112 beinhaltet zudem eine Beschreibung des Offsets (beispielsweise „5, 5” zur Angabe einer um 5 Pixel nach oben und 5 Pixel nach rechts erfolgenden Bewegung in Bezug auf einen Quellbildpatch). Jeder Eintrag in der Offsettabelle 112 beinhaltet zudem Frequenzdaten bzw. Häufigkeitsdaten für den identifizierten Offset. Die Frequenzdaten bzw. Häufigkeitsdaten geben an, wie häufig ein gegebener der Offsets mit verschiedenen Patches in dem Quellbildbereich 104 verknüpft ist. Bei einem Beispiel sind, wie in 2 dargestellt ist, die Frequenzdaten bzw. Häufigkeitsdaten eine Zählung bzw. die Anzahl der Patches in der Patchtabelle 112, die mit dem Offset verknüpft sind. Der Offset mit der Markierung „O_1” ist beispielsweise mit 25 der in der Patchtabelle 110 aufgeführten Patches verknüpft, der Offset mit der Markierung „O_2” ist mit 17 der in der Patchtabelle 110 aufgeführten Patches verknüpft, und dergleichen mehr.
  • Bei einigen Ausführungsformen stellt die Verwendung von Markierungen in der Offsettabelle 112 und der Patchtabelle 110 im Vergleich zu Lösungen, die keine Patchmarkierungen verwenden, eine effizientere Datenspeicherung bereit. Bei Nichtvorhandensein der in 2 dargestellten Markierungen bedingt das Verknüpfen eines gegebenen Bildpatches mit einem Offset oder einer anderen Transformation beispielsweise das Speichern von mehreren Einzeldaten zum Identifizieren einer Transformation (beispielsweise einer Verschiebung, einer Drehung, einer Maßstabsänderung und dergleichen mehr). Sind in der in 2 dargestellten Umgebung die Patchmarkierungen aus der Offsettabelle 112 nicht vorhanden, so ist die Patchtabelle notwendig, um die mehreren Einzeldaten für jeden in der Tabelle aufgeführten Bildpatch zu speichern. Im Gegensatz hierzu ermöglicht die Verwendung von Patchmarkierungen in der Patchtabelle 110 und des Offsets oder der Transformationsbeschreibung in der Offsettabelle 112, dass der Satz von Transformationsparametern einmal bei der Beschreibung eines Offsets gespeichert und jeder Patch mit einer Markierung verknüpft wird. Damit können die hier beschriebenen Patchmarkierungen Information über Offsets, die übertragen werden sollen, effizient speichern.
  • Bei einigen Ausführungsformen sortiert die Bildmanipulationsanwendung 102 die Offsettabelle 112 nach den Frequenzdaten bzw. Häufigkeitsdaten (beispielsweise in absteigender Reihenfolge der „Zählungswerte” bzw. „Anzahlwerte”). Das Sortieren der Offsettabelle 112 nach den Frequenzdaten bzw. Häufigkeitsdaten ermöglicht, dass die Bildmanipulationsanwendung 102 die Offsettabelle 112 als Prioritätsschlange (priority queue) für verschiedene Offsets verwendet, wie detailliert anhand 3 beschrieben wird.
  • 3 zeigt vereinfachte Beispiele für den Quellbildbereich 104 und den Zielbildbereich 106. Bei diesem Beispiel stellt der Quellbildbereich 104 eine Ziegelmauer mit einem Laternenmast vor der Mauer dar, während der Zielbildbereich 106 eine Ziegelmauer mit einem vergitterten Fenster mit einem Gesicht dahinter darstellt. Bei einigen Ausführungsformen sind der Quellbildbereich 104 und der Zielbildbereich 106 Abschnitte derselben Bilddatei (beispielsweise ein Bild eines Gefängnisses, auf dem der Laternenmast und das vergitterte Fenster an verschiedenen Bildstellen befindlich sind). Bereiche desselben Bildes können dichte Teilsätze der Gesamtzahl von Pixeln beinhalten, die das Gesamtbild bilden. Bei zusätzlichen oder alternativen Ausführungsformen sind der Quellbildbereich 104 und der Zielbildbereich 106 verschiedene Bilder (beispielsweise ein Bild einer Schule, das den Laternenmast aufweist, oder ein Bild eines Gefängnisses, das ein vergittertes Fenster aufweist). Bei verschiedenen Ausführungsformen sind der Quellbildbereich 104 und der Zielbildbereich 106 in einer beliebigen Anzahl von verschiedenen Formaten gespeichert, so beispielsweise in einem pixelbasierten Format, in dem der Quellbildbereich 104 und der Zielbildbereich 106 dieselbe Anzahl von Pixeln oder auch verschiedene Anzahlen hiervon aufweisen.
  • Die Bildmanipulationsanwendung 102 wird dafür verwendet, Ähnlichkeiten zwischen Abschnitten des Quellbildbereiches 104 und Abschnitten des Zielbildbereiches 106 zu bestimmen oder auf andere Weise zu identifizieren. Die Patchabbildung 114 beinhaltet Patchabbildungsdaten, die angeben, dass bestimmte Bildpatches in dem Quellbildbereich 104 bestimmten Bildpatches in dem Zielbildbereich 106 entsprechen (das heißt zu diesen ähnlich sind). Die Bildmanipulationsanwendung 102 wird beispielsweise zur Bestimmung dessen verwendet, ob für Bildinhalt, so beispielsweise die Ziegelmauer in dem Quellbildbereich 104, der Zielbildbereich 106 einen beliebigen entsprechenden Bildinhalt, so beispielsweise die Ziegelmauerabschnitte in dem Zielbildbereich 106, beinhaltet. Diese Entsprechung kann Ähnlichkeiten zwischen Bildern angeben (beispielsweise den Umstand, ob Bildinhalt einen identischen oder sehr ähnlichen Inhalt aufweist). Bei einigen Ausführungsformen verwendet die Bildmanipulationsanwendung 102 oder eine andere geeignete Anwendung diese Entsprechung für einen oder mehrere geeignete Bildmanipulationsbetriebsvorgänge. Beispiele für Bildmanipulationsbetriebsvorgänge beinhalten eine Bildrekonstruktion (image in-painting), einen Stereoabgleich (stereo matching), eine Textursynthese, eine Bildsynthese, ein Bildretargeting, eine Bildzusammenfassung oder eine Bild- oder Videomanipulation.
  • Bildbereiche wie die in 2 und 3 dargestellten können unter Verwendung einer beliebigen geeigneten Darstellung definiert werden. Beispiele für derartige Darstellungen beinhalten Grauskalenwerte, Binärwerte, RGB/Lab/YIQ/YUV- oder beliebige andere Farbraumwerte, Gradienten, Texturfilter, Wavelets oder beliebige andere Filterresponses, einen optischen Ablauf (für Video), Oberflächennormalen (für Formen), Volumeneinnahmen (Formen), ein lokales Histogramm von quantisierten Gradientenorientierungen, ein lokales Histogramm von Texturfiltern oder eine beliebige andere gängige Bild-Video-Rasterform-Darstellung oder auch eine beliebige Kombination hieraus.
  • Bei einigen Ausführungsformen sind eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Abgleichsdaten 108 auf einer Rechenvorrichtung gespeichert, die die Bildmanipulationsanwendung 102 ausführt. Bei zusätzlichen oder alternativen Ausführungsformen wird auf das eine oder die mehreren von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Abgleichsdaten 108 über ein Netzwerk durch eine Rechenvorrichtung, die die Bildmanipulationsanwendung 102 anwendet, zugegriffen.
  • Jeder Bildbereich kann mehrere Bildpatches beinhalten. 4 ist ein Diagramm zur Darstellung von vereinfachten Beispielen für Patches in dem Quellbildbereich 104 und dem Zielbildbereich 106. Bei diesem Beispiel sind die Patches durch gepunktete Linien angedeutet, wobei jeder Bildpatch (beispielsweise der Quellbildpatch 302 und der Zielbildpatch 304) innerhalb der mit gepunkteten Linien angedeuteten Grenzen eingefasst ist. Zu illustrativen Zwecken sind in 4 vergleichsweise große Patches mit regelmäßigen Formen dargestellt. Ein Bildpatch beliebiger Größe (beispielsweise 5 mal 5 Pixel) oder sogar einzelne Pixel können jedoch auch von der Bildmanipulationsanwendung 102 verwendet werden. Ein Bildpatch kann eine symmetrische Form (beispielsweise ein Quadrat, ein Rechteck und dergleichen) oder eine asymmetrische oder unregelmäßige Form aufweisen.
  • Bei einigen Ausführungsformen führt die Bildmanipulationsanwendung 102 einen Patchabgleichsalgorithmus aus, um eine Patchabbildung 114 zu erzeugen. Die Patchabbildung 114 bildet einen oder mehrere Patches von Pixeln aus dem Quellbildpatch 302, der in dem Quellbildbereich 104 ist, auf einen oder mehrere ausreichend ähnliche Patches von Pixeln aus dem Zielbildpatch 304, der in dem Zielbildbereich 106 ist, ab. Bei einer Ausführungsform impliziert der Patchabgleichsalgorithmus eine Abtastung über verschiedene Bildpatchfenster (beispielsweise einen Quellbildpatch 302 und einen Zielbildpatch 304) des Quellbildbereiches 104 und des Zielbildbereiches 106 hinweg. Der Patchabgleichsalgorithmus vergleicht Pixelwerte in dem Quellbildpatch und dem Zielbildpatch zur Berechnung eines Ähnlichkeitskennwertes. Ein Beispiel für einen Ähnlichkeitskennwert sind die auf quadrierten Summen beruhenden Abstände („SSD”) zwischen den Pixelwerten in dem Quellbildpatch und dem Zielbildpatch, wobei identische Patches einen SSD von 0 aufweisen. Bei dem in 4 dargestellten Beispiel kann ein Patchabgleichsalgorithmus beispielsweise bestimmen, dass der Abschnitt einer Ziegelmauer, der in dem Quellbildpatch 302 dargestellt ist, und der Abschnitt einer Ziegelmauer, der in dem Zielbildpatch 304 dargestellt ist, identisch oder nahezu identisch sind, und zwar auf Grundlage eines für die beiden Patches gegebenen SSD-Kennwertes von 0 oder nahezu 0.
  • Ein Patchabgleichsalgorithmus kann eine räumliche Kohärenz zur Übertragung von guten Abgleichen verwenden. Beispielsweise kann jeder Abgleich zwischen einem Quellbildpatch und einem Zielbildpatch als Transformation Ti dargestellt werden, die einen Bildpatchort (beispielsweise einen Quellbildpatch) auf einen anderen Bildpatchort (beispielsweise einen Zielbildpatch) abbildet. Eine „gute” Transformation (beispielsweise ein zwischen zwei Patches gegebener Offset mit ausreichender Ähnlichkeit) kann zwischen zwei Patches Px und
    Figure DE102017006557A1_0002
    ausfindig gemacht werden, wobei Px und
    Figure DE102017006557A1_0003
    die Pixelkoordinaten des Zentrums des Quellbildpatches beziehungsweise des Zielbildpatches wiedergeben (beispielsweise
    Figure DE102017006557A1_0004
    ≈ Ti(Px)). Das Übertragen eines „guten” Offsets oder einer anderen Transformation von einem Quellbildpatch auf einen benachbarten Quellbildpatch impliziert die Verwendung des Offsets oder einer anderen Transformation zur Auswahl eines oder mehrerer Kandidatenzielbildpatches für einen Vergleich mit dem benachbarten Quellbildpatch, ein Vergleichen der ausgewählten Kandidatenzielbildpatches mit dem benachbarten Quellbildpatch und ein hierdurch erfolgendes Bestimmen, dass der übertragene Offset oder die andere Transformation zu einem ausreichend ähnlichen Abgleich für den benachbarten Quellbildpatch führt.
  • In einigen Fällen sind die Offsets oder die anderen Transformationen von naheliegenden Patches in einem Quellbild oftmals identisch, was von der räumlichen Kohärenz der Quell- und Zielbilder herrührt. Die räumliche Kohärenz ist eine Eigenschaft, bei der dann, wenn eine „gute” Transformation zwischen Patches unter Verwendung einer bestimmten Abbildung ausfindig gemacht wird, eine in kleinem Ausmaß und in eine beliebige Richtung erfolgende Bewegung dieser Abbildung ebenfalls einen optimalen Abgleich erzeugt, wenn die Bewegung ausreichend klein ist. Bei einem Beispiel können die Quellbildpatches Px,1 und Px,2 aneinander naheliegend sein, und es können die Zielbildpatches
    Figure DE102017006557A1_0005
    aneinander naheliegend sein. Eine Transformation Ti (beispielsweise ein Offset) führt zu einem Abgleich eines ersten Quellbildpatches Px,1 mit einem ersten Zielbildpatch
    Figure DE102017006557A1_0006
    der zu dem ersten Quellbildpatch Px,1 ausreichend ähnlich ist. Ist eine räumliche Kohärenz in den beiden Bildern vorhanden, so ist sehr wahrscheinlich, dass dieselbe Transformation Ti zu einem Abgleich eines zweiten Quellbildpatches Px,2 mit einem zweiten Zielbildpatch
    Figure DE102017006557A1_0007
    der zu dem zweiten Quellbildpatch Px,2 ausreichend ähnlich ist, führt.
  • Obwohl die räumliche Kohärenz ermöglichen kann, dass qualitativ hochwertige Offsets oder andere Transformationen zwischen naheliegenden Patches übertragen werden, verhindert das Vorhandensein von blockierenden Objekten in einem Quellbild gegebenenfalls, dass qualitativ hochwertige Offsets oder andere Transformationen effizient über ein Bild hinweg übertragen werden. Wie beispielsweise in 3 und 4 gezeigt ist, beinhaltet ein regelmäßiges Muster (beispielsweise eine Ziegelmauer) einen Laternenmast im Vordergrund. Das Übertragen von Offsets zwischen naheliegenden Patches kann schnell qualitativ hochwertige Offsets oder andere Transformationen durch einen Bildabschnitt 306 in der linken Hälfte des Quellbildbereiches 104 und durch einen Bildabschnitt 308 in der rechten Hälfte des Quellbildbereiches 104 transportieren. Bedient sich die Bildmanipulationsanwendung 102 jedoch lediglich der Übertragung von Nachbar zu Nachbar, so werden diese qualitativ hochwertigen Offsets oder anderen Transformationen nicht effizient von dem Bildabschnitt 306 auf den Bildabschnitt 308 übertragen, was von dem blockierenden Element (das heißt dem Laternenmast) herrührt. Dies beruht auf dem Umstand, dass der Standardbildpatchabgleich nur gute Transformationen auf naheliegende Nachbarn überträgt.
  • Die Bildmanipulationsanwendung 102 verwendet die Patchtabelle 110 und die Offsettabelle 112 zur Übertragung von Offsets oder anderer Transformationen, die von vielen Patches in dem Quellbildbereich 104 geteilt bzw. gemeinsam genutzt werden. Wird beispielsweise ein Patchabgleichsalgorithmus zum Abgleichen eines Quellbildpatches mit einem Zielbildpatch verwendet, so verwendet die Bildmanipulationsanwendung 102 hochfrequente Offsets aus der Offsettabelle 112 zum Identifizieren von potenziellen Zielbildpatches für einen Vergleich mit den Quellbildpatches. Das Auswählen von Offsets aus der Offsettabelle 112 ermöglicht die globale Übertragung von beliebten Offsets oder anderen Transformationen zusätzlich zu dem bestehenden räumlich lokalen Lösungsansatz, der bei bestimmten Patchabgleichsalgorithmen verwendet wird.
  • 5 ist ein Flussdiagramm zur Darstellung eines Beispiels für ein Verfahren 400 zur Verwendung von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen. Bei einigen Ausführungsformen implementieren eine oder mehrere Verarbeitungsvorrichtungen die in 5 dargestellten Betriebsvorgänge durch Ausführen von geeignetem Programmcode (beispielsweise die Bildmanipulationsanwendung 102). Zu illustrativen Zwecken wird das Verfahren 400 anhand der in 2 sowie 4 bis 11 dargestellten Beispiele beschrieben. Andere Implementierungen sind jedoch ebenfalls möglich.
  • Bei Block 402 impliziert das Verfahren 400 ein Identifizieren eines Offsets zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch. Ein oder mehrere Verarbeitungsvorrichtungen können beispielsweise die Bildmanipulationsanwendung 102 ausführen, um auf den Quellbildbereich 104 und den Zielbildbereich 106 zuzugreifen und einen oder mehrere Offsets zu identifizieren, die zum Transformieren von Bildpatches aus dem Quellbildbereich 104 auf Bildpatches aus dem Zielbildbereich 106 verwendet werden.
  • Bei einigen Ausführungsformen greift die Bildmanipulationsanwendung 102 auf den Quellbildbereich 104 und den Zielbildbereich 106 von einem nichttemporären computerlesbaren Medium aus, das sich lokal auf dem die Bildmanipulationsanwendung 102 ausführenden Computersystem befindet, zu. Das Zugreifen auf den Quellbildbereich 104 und den Zielbildbereich 106 impliziert ein Übermitteln von geeigneten elektronischen Signalen über einen Datenbus, der das nichttemporäre computerlesbare Medium und die Verarbeitungsvorrichtung kommunikativ koppelt. Diese Signale bewirken, dass wenigstens einige der Daten von dem nichttemporären computerlesbaren Medium in einem Speicher mit wahlfreiem Zugriff oder auf einer anderen Speichervorrichtung gespeichert werden, die ein schnelles Abrufen von Daten zur Verarbeitung von Betriebsvorgängen ermöglicht, die von dem die Bildmanipulationsanwendung 102 ausführenden Rechensystem durchgeführt werden.
  • Bei zusätzlichem oder alternativen Ausführungsformen empfängt die Bildmanipulationsanwendung 102 über ein Datennetzwerk eines oder mehrere von dem Quellbildbereich 104 und dem Zielbildbereich 106 von einer Abbildungsvorrichtung oder einer anderen Rechenvorrichtung mit einem nichttemporären computerlesbaren Medium, auf dem der Quellbildbereich 104 und der Zielbildbereich 106 gespeichert sind. Das Zugreifen auf den Quellbildbereich 104 und den Zielbildbereich 106 impliziert ein Übermitteln von geeigneten elektronischen Signalen über eine Netzwerkschnittstellenvorrichtung, die ein die Bildmanipulationsanwendung 102 ausführendes Rechensystem mit einem anderen Rechensystem, das kommunikativ mit dem nichttemporären computerlesbaren Medium über einen Datenbus oder eine andere Form von lokalem Zugriff gekoppelt ist, über ein Datennetzwerk kommunikativ koppelt. Diese Systeme bewirken, dass wenigstens einige der Daten von dem nichttemporären computerlesbaren Medium über das Datennetzwerk übermittelt, über die Netzwerkschnittstellenvorrichtung des die Bildmanipulationsanwendung 102 ausführenden Rechensystems empfangen und in einem Speicher mit wahlfreiem Zugriff oder einer anderen Speichervorrichtung gespeichert werden, die ein schnelles Abrufen von Daten zur Verarbeitung von Betriebsvorgängen ermöglicht, die von dem die Bildmanipulationsanwendung 102 ausführenden Rechensystem durchgeführt werden.
  • Die Bildmanipulationsanwendung 102 ruft Code, der zum Durchführen der Betriebsvorgänge zum Identifizieren von Offsets ausführbar ist, von einem nichttemporären computerlesbaren Medium (beispielsweise durch Kommunizieren von geeigneten Signalen an ein nichttemporäres computerlesbares Medium über einen Datenbus oder ein Datennetzwerk) ab. Die Bildmanipulationsanwendung 102 führt sodann den abgerufenen Code unter Verwendung der Bilddaten, auf die zugegriffen wird, aus.
  • Das Ausführen der Bildmanipulationsanwendung 102 impliziert eine Verarbeitungsvorrichtung (beispielsweise die in 11 dargestellte Verarbeitungsvorrichtung), die einen oder mehrere Betriebsvorgänge zum Analysieren der Zugriffsbilddaten und Identifizieren eines Offsets für die Bilddaten durchführt. 6 ist beispielsweise ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Identifizieren eines Offsets 502 zwischen dem Quellbildpatch 302 und dem Zielbildpatch 304 (zur einfacheren Darstellung ist in dem Diagramm der Bildinhalt des Quellbildbereiches 104 und des Zielbildbereiches 106 weggelassen). Beim vorliegenden Beispiel identifiziert die Bildmanipulationsanwendung 102 durch Suchen an einem Bildort in dem Zielbildbereich 106 einen Zielbildpatch 304, der von dem Quellbildpatch 302 um einen Offset von 5 Pixeln nach oben und von dem Quellbildpatch 302 um einen Offset von 5 Pixeln nach rechts versetzt ist.
  • Ein beliebiger Betriebsvorgang oder ein Satz von Betriebsvorgängen, die in dem Programmcode beinhaltet sind, auf den von der Verarbeitungsvorrichtung (beispielsweise der Bildmanipulationsanwendung 102) zugegriffen wird, kann von einem Patchabgleichsalgorithmus zum Identifizieren eines Offsets 502 ausgeführt werden. Nichtbeschränkende Beispiele für Betriebsvorgänge zum Identifizieren eines Offsets finden sich in dem US-Patent Nr. 8,285,055 von Barnes et al. mit dem Titel „Determining correspondence between image regions”, das hiermit durch Bezugnahme mit aufgenommen ist. Bei einigen Ausführungsformen wählt beispielsweise die Bildmanipulationsanwendung 102 beliebig den Offset 502 unter Verwendung eines beliebigen Ortes in dem Zielbildbereich 106 aus. Der Patchabgleichsalgorithmus kann beispielsweise eine Anfangssuchphase vor dem Identifizieren von Offsets für eine Mehrzahl der Patches in dem Quellbildbereich 104 beinhalten. In dieser Anfangssuchphase verwendet der Patchabgleichsalgorithmus einen beliebigen Offsetwert. Führt die Verwendung des beliebig ausgewählten Offsets zum Identifizieren eines Zielbildpatches 304, der zu dem Quellbildpatch 302 ausreichend ähnlich ist, so wird der übertragene Offset dem Quellbildpatch 302 zugewiesen oder auf andere Weise mit diesem verknüpft.
  • Bei zusätzlichen oder alternativen Ausführungsformen beinhaltet der Patchabgleichsalgorithmus einen oder mehrere Betriebsvorgänge, die den Offset 502 von einem anderen Quellbildpatch her, der an dem Quellbildpatch 302 naheliegend oder auf andere Weise zu diesem benachbart ist, übertragen. Die Patchabgleichsalgorithmen können beispielsweise einen oder mehrere Übertragungsbetriebsvorgänge beinhalten, bei denen infolge der räumlichen Kohärenz im Quellbildbereich ein von einem Bildpatch gegebener Offset auf einen naheliegenden Bildpatch übertragen wird. Führt die Verwendung des übertragenen Offsets zum Identifizieren eines Zielbildpatches 304, der zu dem Quellbildpatch 302 ausreichend ähnlich ist, so wird der übertragene Offset dem Quellbildpatch 302 zugewiesen oder auf andere Weise mit diesem verknüpft.
  • Bei zusätzlichen oder alternativen Ausführungsformen wählt der Patchabgleichsalgorithmus den Offsetwert beliebig aus, der einer Randbedingung hinsichtlich des Abstandes von einem vorher identifizierten Zielbildpatch unterliegt. Bei einem Beispiel ist der Offsetwert von einem benachbarten Quellbildpatch auf den Quellbildpatch 302 übertragen worden, wobei der übertragene Offsetwert einen nichtabgeglichenen Zielbildpatch identifiziert, der zu dem Quellbildpatch 302 nicht ausreichend ähnlich ist. Bei diesem Beispiel führt die Bildmanipulationsanwendung 102 eine beliebige Suche innerhalb einer räumlichen Nachbarschaft des nichtabgeglichenen Zielbildpatches durch, um einen geeigneteren Zielbildpatch ausfindig zu machen. Die räumliche Nachbarschaft bedingt Randbedingungen bei der beliebigen Suche. Die Bildmanipulationsanwendung 102 kann beispielsweise beliebig innerhalb einer Nachbarschaft von vier naheliegenden Pixeln in derselben Reihe oder Spalte, der umgebenden acht Pixel in den naheliegenden Reihen oder Spalten und dergleichen mehr suchen. Ist ein beliebig ausgewählter Zielbildpatch 304 zu dem Quellbildpatch 302 ausreichend ähnlich, so identifiziert die Bildmanipulationsanwendung 102 den Offset 502 zwischen dem Quellbildpatch 302 und dem Zielbildpatch 304 als brauchbaren Offset.
  • Wie 5 zeigt, impliziert das Verfahren 400 bei Block 404 ein Bestimmen, ob der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich ist. Eine oder mehrere Verarbeitungsvorrichtungen können beispielsweise die Bildmanipulationsanwendung 102 ausführen, um eine Ähnlichkeit zwischen dem ersten Quellbildpatch und dem ersten Zielbildpatch zu berechnen oder auf andere Weise zu bestimmen.
  • Ein beliebiger geeigneter Bildverarbeitungsalgorithmus kann zur Bestimmung der Ähnlichkeit von zwei Bildpatches verwendet werden. Bei einem Beispiel berechnet die Bildmanipulationsanwendung 102 Vektoren, die eine Farbskalen- oder andere Information über die beiden Bildpatches darstellen, oder identifiziert diese auf andere Weise. Die Bildmanipulationsanwendung 102 kann beispielsweise einen Quellvektor entsprechend Pixelwerten in dem Quellbildpatch und einen Zielvektor entsprechend Pixelwerten in dem Zielbildpatch identifizieren. Die Bildmanipulationsanwendung 102 bestimmt eine Ähnlichkeit zwischen den Bildpatches durch Berechnen eines Abstandes zwischen diesen Vektoren (beispielsweise einen SSD-Kennwert). Ein größerer Abstand gibt einen niedrigeren Grad der Ähnlichkeit an, während ein kleinerer Abstand einen höheren Grad der Ähnlichkeit angibt. Bei einigen Ausführungsformen bestimmt die Bildmanipulationsanwendung 102, dass zwei Bildpatches ausreichend ähnlich sind, wenn der berechnete Abstand kleiner als ein Schwellenabstand ist.
  • Es kann eine beliebige geeignete Bestimmung der Ähnlichkeit Verwendung finden. Bei einigen Ausführungsformen ist ein gegebener Zielbildpatch zu einem Quellbildpatch ausreichend ähnlich, wenn der Zielbildpatch im Vergleich zu allen Zielbildpatches zu dem Quellbildpatch am ähnlichsten ist. Bei anderen Ausführungsformen ist ein gegebener Zielbildpatch zu einem Quellbildpatch ausreichend ähnlich, wenn der Zielbildpatch im Vergleich zu einem ausgewählten Teilsatz von verfügbaren Zielbildpatches (beispielsweise einem Satz von beliebig ausgewählten Zielbildpatches, einem Satz von Zielbildpatches in einer spezifizierten Zone und dergleichen mehr) zu dem Quellbildpatch am ähnlichsten ist. Bei zusätzlichen oder alternativen Ausführungsformen kann eine ausreichende Ähnlichkeit unter Verwendung eines beliebigen der nichtbeschränkenden Beispiele für Messungen der Ähnlichkeit für einen Patchabgleichsalgorithmus bestimmt werden, wie dies beschrieben ist bei „PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing" von Connelly Barnes et al., veröffentlicht bei „ACM Transactions on Graphics (Proc. SIGGRAPH) 28 (3), August 2009", das hiermit durch Bezugnahme mit aufgenommen ist, und/oder wie dies mit Blick auf einen verallgemeinerten Patchabgleichsalgorithmus beschrieben ist bei „The Generalized PatchMatch Correspondence Algorithm" von Connelly Barnes et al., veröffentlicht bei „European Conference an Computer Vision, September 2010", das hiermit ebenfalls durch Bezugnahme mit aufgenommen ist.
  • Ist der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich, so geht das Verfahren 400 zu Block 406 über, der ein Aktualisieren von Abgleichsdaten, die den Offset und den Quellbildpatch implizieren, impliziert. Ein oder mehrere Verarbeitungsvorrichtungen können beispielsweise die Bildmanipulationsanwendung 102 ausführen, um die Abgleichsdaten 108 zu aktualisieren. Bei einigen Ausführungsformen beinhaltet der Block 406 die Blöcke 408 und 410.
  • Bei Block 408 impliziert das Verfahren 400 ein Aktualisieren einer Datenstruktur dahingehend, dass diese einen Eintrag mit einer Markierung, die den identifizierten Offset spezifiziert, beinhaltet. Bei einem Beispiel modifiziert die Bildmanipulationsanwendung 102 eine Offsettabelle 112 in den Abgleichsdaten 108 dahingehend, dass diese den identifizierten Offset beinhaltet. Das Modifizieren der Offsettabelle 112 impliziert ein Erstellen oder Modifizieren einer Reihe oder einer anderen Aufzeichnung in der Offsettabelle 112 dahingehend, dass diese eine Markierung oder eine andere Kennung des Offsets (beispielsweise „O_1”, „O_2” und dergleichen) und eine Beschreibung des Offsets (beispielsweise „5, 5”, „11, 12” und dergleichen) beinhaltet. Eine Verarbeitungsvorrichtung, die das Verfahren 400 ausführt, kann eine beliebige dieser Datenstrukturen dadurch erzeugen, aktualisieren oder auf andere Weise darauf zugreifen, dass geeignete elektronische Signale über einen Datenbus, der das nichttemporäre computerlesbare Medium und die Verarbeitungsvorrichtung kommunikativ koppelt, kommuniziert werden, dass geeignete elektronische Signale über eine Netzwerkschnittstellenvorrichtung, die das nichttemporäre computerlesbare Medium und die Verarbeitungsvorrichtung kommunikativ koppelt, kommuniziert werden, oder auch durch eine beliebige Kombination hieraus.
  • Bei Block 410 impliziert das Verfahren 400 das Aktualisieren der Datenstruktur, um den identifizierten Offset mit dem ersten Quellbildpatch zu verknüpfen. Bei einem Beispiel modifiziert die Bildmanipulationsanwendung 102 eine Patchtabelle 110 in den Abgleichsdaten 108 dahingehend, dass diese einen gegebenen Quellbildpatch mit einer Markierung oder einer anderen Kennung eines gegebenen Offsets verknüpft. Das Modifizieren der Patchtabelle 110 kann beispielsweise ein Erstellen oder Modifizieren einer Reihe oder einer anderen Aufzeichnung in der Patchtabelle 110 dahingehend implizieren, dass diese eine Kennung eines gegebenen Quellbildpatches und eine Markierung des Offsets, der mit dem Quellbildpatch verknüpft worden ist, beinhaltet.
  • Durchführen kann eine Verarbeitungsvorrichtung, die das Verfahren 400 ausführt, den Block 410 durch Kommunizieren von geeigneten elektronischen Signalen über einen Datenbus, der das nichttemporäre computerlesbare Medium und die Verarbeitungsvorrichtung kommunikativ gekoppelt, durch Kommunizieren von geeigneten elektronischen Signalen über eine Netzwerkschnittstellenvorrichtung, die das nichttemporäre computerlesbare Medium und die Verarbeitungsvorrichtung kommunikativ gekoppelt, oder durch eine beliebige Kombination hieraus. Die Verarbeitungsvorrichtung kann beispielsweise Signale (beispielsweise über einen Datenbus oder ein Datennetzwerk) kommunizieren, um auf die Datenstruktur von einem nichttemporären computerlesbaren Medium zuzugreifen oder auf Programmcode zum Aktualisieren der Datenstruktur für eine Verknüpfung des identifizierten Offsets mit dem ersten Quellbildpatch zuzugreifen. Die Verarbeitungsvorrichtung kann den Programmcode zum Aktualisieren der Datenstruktur ausführen, um den identifizierten Offset mit dem ersten Quellbildpatch zu verknüpfen. Das Ausführen des Programmcodes kann veranlassen, dass die Verarbeitungsvorrichtung die gespeicherte Version der Datenstruktur (beispielsweise eine der vorstehend identifizierten Datenstrukturen) aktualisiert.
  • Ein vereinfachtes Beispiel für Betriebsvorgänge, die bei Blöcken 408 und 410 ausgeführt werden, ist in 7 dargestellt. Wie in 7 gezeigt ist, beinhaltet der Quellbildpatch 302 im Vergleich zu dem Zielbildpatch 304, der von dem Quellbildpatch 302 um einen Offset 502 versetzt ist, denselben oder einen ähnlichen Bildinhalt. Die Bildmanipulationsanwendung 102 aktualisiert die Offsettabelle 112 zur Erzeugung einer Aufzeichnung, Aufzeichnung oder eines anderen Eintrages 602, der die Markierung „O_1” und die Beschreibung „5, 5” (das heißt eine um 5 Pixel nach oben und um 5 Pixel nach rechts gegebene Bewegung) für den Offset 502 beinhaltet. Die Bildmanipulationsanwendung 102 aktualisiert zudem die Patchtabelle 112 dahingehend, dass diese den Quellbildpatch 302 mit dem Offset 502 verknüpft. Die Bildmanipulationsanwendung 102 erstellt diese Verknüpfung durch Erstellen einer Aufzeichnung, Aufzeichnung oder eines anderen Eintrages 604 in der Patchtabelle 110. Die Bildmanipulationsanwendung 102 fügt die Markierung für den Offset 502 in das „Offset”-Feld des Eintrages 604 ein. Beim vorliegenden Beispiel wird, wenn der Offset 502 zu der Bildpatchtabelle hinzugefügt wird, nur ein Quellbildpatch (beispielsweise der Quellbildpatch 302) mit dem Offset 502 verknüpft. Daher modifiziert die Bildmanipulationsanwendung 102 das „Zählungs”-Feld bzw. „Anzahl”-Feld für den Offset 502, um dadurch wiederzugeben, dass ein Bildpatch mit dem Offset 502 verknüpft ist.
  • Wie in 5 gezeigt ist, impliziert das Verfahren 400 bei Block 412 ein Auswählen eines Teilsatzes von höchstfrequenten Offsets aus der Datenstruktur. Die Bildmanipulationsanwendung 102 wird beispielsweise von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt, um einen Teilsatz der höchstfrequenten Offsets aus der Offsettabelle 112 oder einer anderen geeigneten Datenstruktur auszuwählen. Die Bildmanipulationsanwendung 102 kann einen beliebigen geeigneten Prozess zum Auswählen des Teilsatzes von höchstfrequenten Offsets verwenden. Bei einigen Ausführungsformen wählt die Bildmanipulationsanwendung 102 die Offsets mit den höchsten Rangbewertungen (das heißt die am häufigsten verwendeten Offsets) aus. Bei einigen Ausführungsformen berücksichtigt die Bildmanipulationsanwendung 102 bei der Auswahl eines gegebenen Offsets aus der Datenstruktur sowohl diesen Offset wie auch dessen Inverse als potenzielle Offsets für einen Vergleich von Bildpatches. Die eine oder die mehreren Verarbeitungsvorrichtungen können auf die höchstfrequenten Offsets von einem nichttemporären computerlesbaren Medium aus (beispielsweise durch Kommunizieren von geeigneten Signalen über ein Datennetzwerk oder einen Datenbus) zugreifen.
  • 8 ist beispielsweise ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Auswählen von häufig verwendeten Offsets für einen Abgleich eines Zielbildpatches mit einem Quellbildpatch. Beim vorliegenden Beispiel trifft die Bildmanipulationsanwendung 102 beim Ausführen eines Patchabgleichsalgorithmus auf den Quellbildpatch 702. Die Bildmanipulationsanwendung 102 greift auf die Offsettabelle 112 oder eine andere geeignete Datenstruktur zu, die Daten zur Angabe dessen aufweist, welche Offsets am häufigsten mit dem Quellbildbereich 104 verknüpft worden sind. Bei dem vereinfachten Beispiel von 8 identifiziert die Offsettabelle 112 vier verschiedene Offsets, die in einer Reihenfolge auf Grundlage dessen, wie viele Quellbildpatches mit jedem Offset (beispielsweise über die Bildpatchtabelle) verknüpft sind, rangbewertetet werden. Die Bildmanipulationsanwendung 102 wählt einen Teilsatz der Offsets aus. Beim vorliegenden Beispiel beinhaltet der ausgewählte Teilsatz 704 zwei am höchsten rangbewertete Offsets (das heißt die Offsets „O_1” und „O_2”, die mit fünfundzwanzig Quellbildpatches beziehungsweise siebzehn Quellbildpatches verknüpft sind).
  • Bei zusätzlichen oder alternativen Ausführungsformen wählt die Bildmanipulationsanwendung 102 bestimmte Offsets aus, die ausreichend hohe Rangbewertungen, jedoch nicht unbedingt die höchsten Rangbewertungen aufweisen. Die Bildmanipulationsanwendung 102 kann beispielsweise die am höchsten rangbewerteten Offsets (beispielsweise die besten zehn Offsets, die am häufigsten verwendet werden) identifizieren und nur einige dieser am höchsten rangbewerteten Offsets (beispielsweise nur die am zweithöchsten und die am siebthöchsten rangbewerteten Offsets) beliebig auswählen.
  • Wie in 5 gezeigt ist, beinhaltet das Verfahren 400 bei Block 414 die Verwendung des ausgewählten Teilsatzes von hochfrequenten Offsets zum Identifizieren eines zweiten Zielbildpatches und/oder weiterer anderer Zielbildpatches. Der zweite Zielbildpatch befindet sich an dem identifizierten Offset von einem zweiten Quellbildpatch, und es sind ein oder mehrere andere Zielbildpatches an einem oder mehreren anderen Offsets von dem zweiten Quellbildpatch befindlich. Die Bildmanipulationsanwendung 102 wird von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt, um Zielbildpatches als Kandidaten für einen Vergleich mit einem Quellbildpatch 702 zu identifizieren. Die Bildmanipulationsanwendung 102 identifiziert die Zielbildpatches, die an Orten positioniert sind, die um die Offsets in dem ausgewählten Teilsatz der höchstfrequenten Offsets von dem Quellbildpatch 702 versetzt sind. Der ausgewählte Teilsatz 704 von hochfrequenten Offsets kann den Offset 502 beinhalten, der vorher von der Bildmanipulationsanwendung 102 identifiziert worden ist.
  • Ein Rechensystem, das die Bildmanipulationsanwendung 102 ausführt, kann auf die Bilddaten von einem nichttemporären computerlesbaren Medium (beispielsweise durch Kommunizieren von geeigneten Signalen über einen Datenbus oder ein Datennetzwerk) zugreifen und kann geeigneten Programmcode (beispielsweise die Bildmanipulationsanwendung 102) ausführen, die eine oder mehrere Funktionen zum Identifizieren eines oder mehrerer Zielpatches aufweisen, wobei wenigstens eine Funktion die ausgewählten hochfrequenten Offsets als Eingabe verwendet.
  • 9 ist ein Diagramm zur Darstellung eines vereinfachten Beispiels für das Identifizieren von Zielbildpatches unter Verwendung des ausgewählten Teilsatzes 704 von hochfrequenten Offsets (zur einfacheren Darstellung ist in 9 der Bildinhalt des Quellbildbereiches 104 und des Zielbildbereiches 106 weggelassen). Die Bildmanipulationsanwendung 102 identifiziert einen ersten Zielbildpatch 802, der an einer Position befindlich ist, die von dem Quellbildpatch 702 um 5 Pixel nach oben und von dem Quellbildpatch 702 um 5 Pixel nach rechts versetzt ist (das heißt, um den Offset 502, der in dem ausgewählten Teilsatz 704 beinhaltet ist). Die Bildmanipulationsanwendung 102 identifiziert einen zweiten Zielbildpatch 804, der an einer Position befindlich ist, die von dem Quellbildpatch 702 um 11 Pixel nach oben und von dem Quellbildpatch 702 um 12 Pixel nach rechts versetzt ist (das heißt um einen Offset 801, der in dem ausgewählten Teilsatz 704 beinhaltet ist).
  • Wie in 5 dargestellt ist, impliziert das Verfahren 400 bei Block 416 ein Bestimmen dessen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ähnlicher als der andere Zielbildpatch (oder die Patches) ist. Die Bildmanipulationsanwendung 102 wird beispielsweise von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt und berechnet Ähnlichkeitskennwerte zwischen jedem der Zielbildpatches 802, 804 und dem Quellbildpatch 702. Die Bildmanipulationsanwendung 102 kann den Ähnlichkeitskennwert auf dieselbe Weise berechnen, wie vorstehend im Zusammenhang mit dem Block 404 beschrieben worden ist.
  • Bei Block 418 impliziert das Verfahren 400 ein Aktualisieren der Datenstruktur, um den zweiten Quellbildpatch mit dem Eintrag für den identifizierten Offset zu verknüpfen. Die Bildmanipulationsanwendung 102 wird beispielsweise von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt und aktualisiert die Datenstruktur, so beispielsweise die Patchtabelle 110. Bei einigen Ausführungsformen verknüpft die Bildmanipulationsanwendung 102 den zweiten Quellbildpatch mit dem identifizierten Offset auf Grundlage dessen, dass der zweite Quellbildpatch und der zweite Zielbildpatch zu dem zweiten Zielbildpatch ähnlicher im Vergleich zu einem oder mehreren anderen Zielbildpatches sind, die unter Verwendung des ausgewählten Teilsatzes von hochfrequenten Offsets identifiziert worden sind.
  • 10 zeigt ein Beispiel für die Betriebsvorgänge, die bei Blöcken 416 und 418 ausgeführt werden. Wie in 10 dargestellt ist, beinhaltet der Quellbildpatch 702 im Vergleich zu dem Zielbildpatch 802 denselben oder einen ähnlichen Bildinhalt (beispielsweise die Darstellung einer Ziegelmauer), beinhaltet im Vergleich zu dem Zielbildpatch 804 jedoch einen weiteren Bildinhalt (beispielsweise eine Ziegelmauer im Gegensatz zu einem Fenster mit einem Gesicht darin). Die Bildmanipulationsanwendung 102 aktualisiert die Patchtabelle 112 und verknüpft den Quellbildpatch 702 mit dem Offset 502. Die Bildmanipulationsanwendung 102 erstellt diese Verknüpfung durch Erstellen einer Aufzeichnung, Aufzeichnung oder eines anderen Eintrages 902 in der Patchtabelle 110. Die Bildmanipulationsanwendung 102 fügt die Markierung für den Offset 502 in das „Offset”-Feld des Eintrages 902 ein.
  • Beim vorliegenden Beispiel modifiziert die Bildmanipulationsanwendung 102 zudem den Eintrag 602, um die neue Verknüpfung des Offsets 502 mit dem Quellbildpatch 702 wiederzugeben. Insbesondere modifiziert die Bildmanipulationsanwendung 102 die Frequenzinformation bzw. Häufigkeitsinformation in dem Eintrag 602 und inkrementiert die Anzahl von Quellbildpatches, die mit dem Offset 502 verknüpft sind.
  • Wie in 5 dargestellt ist, geht das Verfahren 400 zu Block 420 über, wenn die Bildmanipulationsanwendung 102 bei Block 404 bestimmt, dass der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich ist. Block 420 impliziert das Ausfindigmachen eines Offsets, der einen weiteren Zielbildpatch lokalisiert, der zu dem ersten Quellbildpatch ausreichend ähnlich ist. Die Bildmanipulationsanwendung 102 wird von einer oder mehreren Verarbeitungsvorrichtungen ausgeführt und führt Block 420 durch. Das Verfahren 400 geht zu Block 406 über, wenn ein ausreichend ähnlicher Zielbildpatch ausfindig gemacht worden ist.
  • Bei einigen Ausführungsformen wird die Offsettabelle 112 bei Ausführung eines Patchabgleichsalgorithmus dynamisch erzeugt oder aktualisiert. Nachdem beispielsweise jeder Quellbildpatch mit einem ausreichend ähnlichen Zielbildpatch abgeglichen worden ist, kann die Bildmanipulationsanwendung 102 einen neuen Eintrag in der Offsettabelle 112 erstellen (beispielsweise wenn ein neuer Offset entdeckt worden ist) oder einen bestehenden Eintrag in der Offsettabelle 112 aktualisieren (beispielsweise wenn eine neue Verknüpfung zwischen einem vorher identifizierten Offset und einem Quellbildpatch erstellt worden ist).
  • Bei einigen Ausführungsformen modifiziert die Bildmanipulationsanwendung 102 den Betriebsvorgang eines Patchabgleichsalgorithmus auf Grundlage der Datenmenge in der Offsettabelle (oder einer anderen Datenstruktur, die zum Verfolgen dessen verwendet wird, wie häufig Offsets verwendet werden). Bei einem Beispiel sind vergleichsweise wenige (beispielsweise 25% oder weniger) der Bildpatches in einem Quellbildbereich 104 auf entsprechende Bildpatches in dem Zielbildbereich 106 abgebildet worden. Beim vorliegenden Beispiel verwendet die Bildmanipulationsanwendung 102 eine Nächster-Nachbar-Übertragung in Kombination mit beliebigen Auswahlvorgängen von Offsetwerten (mit oder ohne Abstandsrandbedingungen) zum identifizieren von Kandidatenzielpatches für einen Vergleich mit einem gegebenen Quellbildpatch. Bei diesen Ausführungsformen kann der Offset bei Block 402 unter Verwendung eines beliebigen Auswahlprozesses identifiziert werden, wenn weniger Bildpatches als eine Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets (beispielsweise über die Patchtabelle 110) verknüpft worden sind.
  • Es kann jedoch, wenn der Patchabgleichsalgorithmus fortschreitet und ein größerer Abschnitt des Quellbildbereiches 104 auf den Zielbildbereich 106 abgebildet wird, die Bildmanipulationsanwendung 102 ihren Rückgriff auf beliebige Auswahlvorgänge von Offsetwerten reduzieren. Bei einem Beispiel ist ein Großteil (beispielsweise 75% oder mehr) der Bildpatches in einem Quellbildbereich 104 auf entsprechende Bildpatches in dem Zielbildbereich 106 abgebildet worden. Bei diesem Beispiel kann die Bildmanipulationsanwendung 102 auf beliebige Auswahlvorgänge verzichten und auf eine Kombination aus der Offsettabelle 112 und der Nächster-Nachbar-Übertragung zum Identifizieren von Kandidatenzielpatches für einen Vergleich mit einem gegebenen Quellbildpatch zugreifen. Bei diesen Ausführungsformen kann der Teilsatz von hochfrequenten Offsets bei Block 412 ausgewählt werden, wenn mehr als die Schwellenanzahl der Quellbildpatches mit jeweiligen Offsets (beispielsweise über die Patchtabelle 110) verknüpft worden sind.
  • Bei einigen Ausführungsformen macht die Bildmanipulationsanwendung 102 keinen geeigneten Zielbildpatchpatch, der zu einem gegebenen Quellbildpatch passt, ausfindig. Sogar dann, wenn die Bildmanipulationsanwendung 102 beispielsweise einen ausgewählten Teilsatz von hochfrequenten Offsets verwendet, um einen oder mehrere Kandidatenzielbildpatches für einen Vergleich mit dem Quellbildpatch zu identifizieren, sind ein oder mehrere dieser Kandidatenzielbildpatches zu dem Quellbildpatch gegebenenfalls nicht ausreichend ähnlich. Unter diesen Umständen verwendet die Bildmanipulationsanwendung 102 einen oder mehrere alternative Offsets zum Lokalisieren eines oder mehrerer zusätzlicher Kandidatenzielbildpatches. Die Bildmanipulationsanwendung 102 kann beispielsweise einen Offset von einem benachbarten Quellbildpatch sogar dann auf den in Rede stehenden Quellbildpatch übertragen, wenn der übertragene Offset keiner der am höchsten rangbewerteten Offsets in der Offsettabelle 112 ist. Beliebig auswählen kann die Bildmanipulationsanwendung 102 zusätzlich oder alternativ einen Offsetwert durch beliebiges Identifizieren eines Zielbildpatches aus einer randbedingungsbehafteten Nachbarschaft um einen weiteren unter Verwendung eines hochfrequenten Offsets identifizierten Bildpatch herum. Der alternative Offset (beispielsweise ein Offset, der durch eine Nächster-Nachbar-Übertragung oder eine beliebige Suche identifiziert worden ist) kann zum Identifizieren eines Zielbildpatches, der zu dem in Rede stehenden Quellbildpatch ausreichend ähnlich ist, verwendet werden.
  • Obwohl 1 bis 10 derart beschrieben worden sind, dass dort ein Beispiel Verwendung findet, dass eine einzige Offsettabelle 112 impliziert, können auch andere Implementierungen Verwendung finden. Bei einigen Ausführungsformen segmentiert die Bildmanipulationsanwendung 102 beispielsweise einen Quellbildbereich auf Grundlage des semantischen Inhalts des Quellbildbereiches. Ein Beispiel für das Segmentieren des Quellbildbereiches impliziert ein Identifizieren von Farbskalen oder anderen charakteristischen Merkmalen von verschiedenen Segmenten des Quellbildbereiches (beispielsweise rötliche Farben entsprechend den „Ziegelmauer”-Abschnitten des Quellbildbereiches 104, graue oder schwarze Farben entsprechend den „Laternenmast”-Abschnitten des Quellbildbereiches 104 und dergleichen mehr). Die Bildmanipulationsanwendung 102 kann verschiedene Offsettabellen für verschiedene Segmente erzeugen und verwenden.
  • Eine erste Offsettabelle kann beispielsweise dafür erzeugt, aktualisiert und verwendet werden, Kandidatenzielbildpatches für Quellbildpatches in dem ersten Segment (beispielsweise Quellbildpatches mit rötlichen Farbmerkmalen) ausfindig zu machen. Eine zweite Offsettabelle kann beispielsweise dafür erzeugt, aktualisiert und verwendet werden, Kandidatenzielbildpatches für Quellbildpatches in dem zweiten Segment (beispielsweise Quellbildpatches mit schwarzen oder grauen Farbmerkmalen) ausfindig zu machen. Bei Block 412 kann die Bildmanipulationsanwendung 102 identifizieren, welche Offsettabelle für das Segment geeignet ist, das den in Rede stehenden Quellbildpatch beinhaltet. Die Bildmanipulationsanwendung 102 wählt hochfrequente Offsets aus der ausgewählten Offsettabelle aus.
  • Bei einigen Ausführungsformen überträgt die Bildmanipulationsanwendung 102 Daten, die eine oder mehrere der Markierungen, die Abgleichsabbildung oder beliebige andere von dem Verfahren 400 erzeugte Daten identifizieren, oder gibt diese auf andere Weise aus. Die Bildmanipulationsanwendung 102 konfiguriert eine Präsentationsvorrichtung, eine Netzwerkschnittstellenvorrichtung oder eine andere geeignete Ausgabevorrichtung zur Ausgabe dieser Daten an einer Rechenvorrichtung. Beinhalten kann die Ausgabe der Daten das Konfigurieren einer Anzeigevorrichtung zur Wiedergabe von optischen Darstellungen der Markierungen oder der Bilddaten zur Anzeige, ein über ein Datennetzwerk erfolgendes Übertragen einer oder mehrerer Mitteilungen, die Daten zur Beschreibung der Markierungen oder Bilddaten beschreiben, und dergleichen mehr.
  • Ein beliebiges geeignetes Rechensystem oder eine Gruppe von Rechensystemen kann zum Durchführen der hier beschriebenen Betriebsvorgänge verwendet werden. 11 ist ein Blockdiagramm, das beispielsweise ein Beispiel für ein bestimmten Ausführungsformen entsprechendes Rechensystem 1000 darstellt, das eine Bildmanipulationsanwendung 102 zur Verwendung einer dynamisch erzeugten Offsettabelle verwendet, um eine Patchabbildung zu erzeugen, die Bildpatches in einem Quellbildbereich auf Bildpatches in einem Zielbildbereich abbildet.
  • Das dargestellte Beispiel des Rechensystems 1000 beinhaltet einen oder mehrere Prozessoren 1002, die kommunikativ mit einer oder mehreren Speichervorrichtungen 1004 gekoppelt sind. Der Prozessor 1002 führt einen computerausführbaren Programmcode aus, der in der Speichervorrichtung 1004 gespeichert ist, greift auf Information zu, die in der Speichervorrichtung 1004 gespeichert ist, oder beides. Beispiele für den Prozessor 1002 beinhalten einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung („ASIC”), ein feldprogrammierbares Gate Array („FPGA”) oder eine beliebige andere geeignete Verarbeitungsvorrichtung. Der Prozessor 1002 kann eine beliebige Anzahl von Verarbeitungsvorrichtungen, darunter auch lediglich eine, beinhalten.
  • Die Speichervorrichtung 1004 beinhaltet ein beliebiges geeignetes nichttemporäres computerlesbares Medium zum Speichern der Bildmanipulationsanwendung 102. Das computerlesbare Medium kann eine beliebige elektronische, optische, magnetische oder andere Speichervorrichtung beinhalten, die einen Prozessor mit computerlesbaren Anweisungen oder anderem Programmcode bereitstellen kann. Nichtbeschränkende Beispiele für ein computerlesbares Medium beinhalten eine magnetische Platte, einen Speicherchip, einen ROM, einen RAM, eine ASIC, einen optischen Speicher, ein Magnetband oder einen anderen magnetischen Speicher oder ein beliebiges anderes Medium, von dem eine Verarbeitungsvorrichtung Anweisungen lesen kann. Die Anweisungen können prozessorspezifische Anweisungen beinhalten, die von einem Compiler oder einem Interpreter aus Code erzeugt werden, der in einer beliebigen geeigneten Computerprogrammiersprache geschrieben ist, darunter beispielsweise in C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript und ActionScript.
  • Das Rechensystem 1000 kann zudem eine Anzahl von externen oder internen Vorrichtungen, so beispielsweise Eingabe- oder Ausgabevorrichtungen, beinhalten. Das Rechensystem 1000 ist mit einer Eingabe-Ausgabe-Schnittstelle („I/O”) 1008 gezeigt, die eine Eingabe von Eingabevorrichtungen empfangen oder eine Ausgabe für Ausgabevorrichtungen bereitstellen kann. Ein Bus 1006 kann zudem in dem Rechensystem 1000 beinhaltet sein. Der Bus 1006 kann eine oder mehrere Komponenten des Rechensystems 1000 kommunikativ koppeln.
  • Das Rechensystem 1000 führt Programmcode aus, der den Prozessor 1002 dafür konfiguriert, eine oder mehrere der vorstehend im Zusammenhang mit 1 bis 10 beschriebenen Betriebsvorgänge auszuführen. Der Programmcode beinhaltet beispielsweise die Bildmanipulationsanwendung 102 oder andere geeignete Anwendungen, die einen oder mehrere der hier beschriebenen Betriebsvorgänge durchführen. Der Programmcode kann in der Speichervorrichtung 1004 oder auf einem beliebigen geeigneten computerlesbaren Medium befindlich sein und von dem Prozessor 1002 oder einem beliebigen anderen geeigneten Prozessor ausgeführt werden. Bei einigen Ausführungsformen ist der vorstehend beschriebene Programmcode in der Speichervorrichtung 1004, wie in 11 dargestellt ist, gespeichert. Bei zusätzlichen oder alternativen Ausführungsformen ist der vorstehend beschriebene Programmcode in einer oder mehreren Speichervorrichtungen, auf die über ein Datennetzwerk zugegriffen werden kann, gespeichert.
  • Das Rechensystem 1000 kann auf eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Abgleichsdaten 108 auf beliebige geeignete Weise zugreifen. Bei einigen Ausführungsformen werden eines oder alle von einem oder mehreren von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Abgleichsdaten 108 in der Speichervorrichtung 1004, wie es bei dem in 11 dargestellten Beispiel der Fall ist, gespeichert. Bei zusätzlichen oder alternativen Ausführungsformen sind eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Abgleichsdaten 108 in einer oder mehreren Speichervorrichtungen, auf die über ein Datennetzwerk zugegriffen werden kann, gespeichert.
  • Das in 11 dargestellte Rechensystem 1000 beinhaltet zudem wenigstens eine Netzwerkschnittstelle 1010. Die Netzwerkschnittstelle 1010 beinhaltet eine beliebige Vorrichtung oder eine Gruppe von Vorrichtungen, die dafür geeignet sind, eine drahtgebundene oder drahtlose Datenverbindung zu einem oder mehreren Datennetzwerken aufzubauen. Nichtbeschränkende Beispiele für die Netzwerkschnittstelle 1010 beinhalten einen Ethernet-Netzwerkadapter, ein Modem und/oder dergleichen. Das Rechensystem 1000 kann mit einer oder mehreren anderen Rechenvorrichtungen über ein Datennetzwerk unter Verwendung der Netzwerkschnittstelle 1010 kommunizieren.
  • Bei einigen Ausführungsformen beinhaltet das Rechensystem 100 eine Präsentationsvorrichtung 1012, wie in 11 dargestellt ist. Die Präsentationsvorrichtung 1012 kann eine beliebige Vorrichtung oder eine Gruppe von Vorrichtungen beinhalten, die zum Bereitstellen einer optischen, akustischen oder einer beliebigen anderen sinnesorgantauglichen Ausgabe geeignet sind. Nichtbeschränkende Beispiele für die Präsentationsvorrichtung 1012 beinhalten einen Touchscreen, einen Monitor, einen Lautsprecher, eine separate mobile Rechenvorrichtung und dergleichen mehr. Bei einigen Ausführungsformen konfiguriert die Bildmanipulationsanwendung 102 die Präsentationsvorrichtung 1012 dafür, eines oder mehrere von dem Quellbildbereich 104, dem Zielbildbereich 106 und den Bildverarbeitungsergebnissen, die durch Anwenden einer oder mehrerer Bildmanipulationen an dem Bildinhalt erzeugt werden, zu präsentieren.
  • Allgemeine Betrachtungen
  • Es sind hier zahlreiche spezifische Details aufgeführt, um ein eingehendes Verständnis des beanspruchten Erfindungsgegenstandes zu ermöglichen. Einem Fachmann auf dem einschlägigen Gebiet erschließt sich jedoch, dass der beanspruchte Erfindungsgegenstand auch ohne diese spezifischen Details praktisch umgesetzt werden kann. In anderen Fällen sind Verfahren, Einrichtungen oder Systeme, die einem Fachmann auf dem einschlägigen Gebiet bekannt sind, nicht detailliert beschrieben worden, damit der beanspruchte Erfindungsgegenstand nicht unklar wird.
  • Es wird, außer dies ist explizit anders angegeben, davon ausgegangen, dass in vorliegender Beschreibung Erläuterungen, die Begriffe wie „verarbeiten”, „berechnen”, „rechnen”, „bestimmen” und „identifizieren” oder dergleichen verwenden, Handlungen oder Prozesse einer Rechenvorrichtung beschreiben, so beispielsweise eines oder mehrerer Computer oder einer ähnlichen elektronischen Rechenvorrichtung oder von solchen Vorrichtungen, die Daten manipulieren oder transformieren, die als physische, elektronische oder magnetische Quantitäten innerhalb von Speichern, Registern oder anderen Informationsspeichervorrichtungen, Übermittlungsvorrichtungen oder Anzeigevorrichtungen einer Plattform dargestellt werden.
  • Das hier beschriebene System oder die hier beschriebenen Systeme sind nicht auf eine bestimmte Hardwarearchitektur oder Konfiguration beschränkt. Eine Rechenvorrichtung kann eine beliebige geeignete Anordnung von Komponenten beinhalten, die ein Ergebnis, das sich aus einer oder mehreren Eingaben ergibt, bereitstellen. Geeignete Rechenvorrichtungen beinhalten mikroprozessorbasierte Mehrzweckrechensysteme, die auf gespeicherte Software zugreifen, die das Rechensystem ausgehend von einer Allzweckrecheneinrichtung als spezialisierte Recheneinrichtung programmiert oder konfiguriert, die wiederum eine oder mehrere Ausführungsformen des vorliegenden Erfindungsgegenstandes implementiert. Eine beliebige geeignete Programmierung, ein Scripting oder eine andere Art von Sprache oder Kombinationen von Sprachen können dafür verwendet werden, die hier vorgestellte Lehre in Software zur Verwendung beim Programmieren oder Konfigurieren einer Rechenvorrichtung zu implementieren.
  • Ausführungsformen der hier beschriebenen Verfahren können im Betrieb derartiger Rechenvorrichtungen verwirklicht werden. Die Reihenfolge der bei den vorstehenden Beispielen dargestellten Blöcke kann variiert werden. So können Blöcke beispielsweise neuangeordnet, kombiniert und/oder in Teilblöcke zerlegt werden. Bestimmte Blöcke oder Prozesse können parallel durchgeführt werden.
  • Die Verwendung von „geeignet für” oder „konfiguriert für” bezeichnet im Sinne des Vorliegenden eine offene und einschließende Sprache, die Vorrichtungen nicht ausschließt, die zur Durchführung von zusätzlichen Aufgaben oder Schritten geeignet oder konfiguriert sind. Darüber hinaus ist die Verwendung von „auf Grundlage von” dahingehend offen und einschließend gemeint, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Handlung „auf Grundlage” einer oder mehrerer Bedingungen oder eines oder mehrere Werte in der Praxis auch auf zusätzlichen Bedingungen oder Werten über die aufgeführten hinausgehend beruhen kann. Überschriften, Auflistungen und Nummerierungen, die hier aufgenommen sind, dienen der einfacheren Erläuterung und sind nicht beschränkend gemeint.
  • Obwohl der vorliegende Erfindungsgegenstand anhand seiner spezifischen Ausführungsformen detailliert beschrieben worden ist, sollte einsichtig sein, dass ein Fachmann auf dem einschlägigen Gebiet nach dem Erwerb eines Verständnisses für das Vorbesprochene ohne Weiteres Abwandlungen an den Ausführungsformen und hierzu Gleichwertiges konzipieren kann. Entsprechend sollte einsichtig sein, dass die vorliegende Offenbarung lediglich zu Beispielszwecken und nicht zur Beschränkung aufgeführt ist und die Einbeziehung derartiger Abwandlungen an dem vorliegenden Erfindungsgegenstand und/oder von Hinzufügungen hierzu, so sich diese einem Fachmann auf dem einschlägigen Gebiet ohne Weiteres erschließen, nicht ausschließt.
  • 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 8285055 [0069]
  • Zitierte Nicht-Patentliteratur
    • „PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing” von Connelly Barnes et al., veröffentlicht bei „ACM Transactions on Graphics (Proc. SIGGRAPH) 28 (3), August 2009” [0074]
    • „The Generalized PatchMatch Correspondence Algorithm” von Connelly Barnes et al., veröffentlicht bei „European Conference an Computer Vision, September 2010” [0074]

Claims (20)

  1. System, umfassend: ein nichttemporäres computerlesbares Medium, das eine Datenstruktur und Bildpatches speichert; eine Verarbeitungsvorrichtung, die kommunikativ mit dem nichttemporären computerlesbaren Medium gekoppelt ist, wobei die Verarbeitungsvorrichtung dafür konfiguriert ist, auf die Datenstruktur und die Bildpatches, die auf dem nichttemporären computerlesbaren Medium gespeichert sind, zuzugreifen, wobei die Verarbeitungsvorrichtung des Weiteren dafür konfiguriert ist, Programmcode auszuführen, der bei Ausführung durch die Verarbeitungsvorrichtung die Verarbeitungsvorrichtung dafür konfiguriert, Betriebsvorgänge durchzuführen, die umfassen: Identifizieren eines Offsets zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch; zu der Datenstruktur erfolgendes Hinzufügen eines Eintrages mit einer Markierung, die den identifizierten Offset spezifiziert; über die Datenstruktur erfolgendes Verknüpfen des ersten Quellbildpatches mit der Markierung, wobei der identifizierte Offset in einem Satz von hochfrequenten Offsets, die in der Datenstruktur gespeichert sind, beinhaltet ist; unter Verwendung der hochfrequenten Offsets erfolgendes Identifizieren eines zweiten Zielbildpatches, der an dem identifizierten Offset von einem zweiten Quellbildpatch befindlich ist; Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist; und über die Datenstruktur erfolgendes Verknüpfen des zweiten Quellbildpatches mit dem Eintrag für den identifizierten Offset auf Grundlage dessen, dass der zweite Quellbildpatch und der zweite Zielbildpatch ausreichend ähnlich sind.
  2. System nach Anspruch 1, wobei hochfrequente Offsets einen gespeicherten Offset beinhalten; wobei die Betriebsvorgänge des Weiteren umfassen: Identifizieren eines dritten Zielbildpatches, der an dem gespeicherten Offset von dem zweiten Quellbildpatch befindlich ist; wobei das Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist, umfasst: Bestimmen, dass eine erste Ähnlichkeit größer als eine zweite Ähnlichkeit ist, wobei die erste Ähnlichkeit zwischen dem zweiten Quellbildpatch und dem zweiten Zielbildpatch ist, wobei die zweite Ähnlichkeit zwischen dem zweiten Quellbildpatch und dem dritten Zielbildpatch ist.
  3. System nach Anspruch 1 oder 2, wobei die Betriebsvorgänge zum Identifizieren des Offsets zwischen dem ersten Quellbildpatch und dem ersten Zielbildpatch wenigstens eines vom Nachfolgenden umfassen: Beliebiges bzw. zufälliges Auswählen des Offsets unter Verwendung eines Ortes in einem Zielbildbereich, der eine Mehrzahl von Zielbildpatches aufweist, wobei die Mehrzahl von Zielbildpatches den ersten Zielbildpatch und den zweiten Zielbildpatch beinhaltet; Übertragen des Offsets auf den ersten Quellbildpatch von einem dritten Quellbildpatch, der naheliegend an dem ersten Quellbildpatch ist; oder beliebiges bzw. zufälliges Auswählen des Offsets aus dem Zielbildbereich in Abhängigkeit von einer Randbedingung bezüglich eines Abstandes von einem vorher identifizierten Zielbildpatch.
  4. System nach Anspruch 3, wobei der Offset auf Grundlage eines vor dem Identifizieren des Offsets erfolgenden Bestimmens, dass weniger Quellbildpatches als eine Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind, beliebig bzw. zufällig ausgewählt wird; und wobei das Verwenden der hochfrequenten Offsets umfasst: Auswählen eines Teilsatzes der hochfrequenten Offsets als die verwendeten hochfrequenten Offsets auf Grundlage eines im Anschluss an das Identifizieren des Offsets erfolgenden Bestimmens, dass mehr Quellbildpatches als die Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind.
  5. System nach einem der vorherigen Ansprüche, wobei die Betriebsvorgänge des Weiteren umfassen: unter Verwendung der hochfrequenten Offsets erfolgendes Identifizieren eines dritten Zielbildpatches, wobei der dritte Zielbildpatch an dem identifizierten Offset von einem dritten Quellbildpatch befindlich ist; Bestimmen, dass der dritte Zielbildpatch zu dem dritten Quellbildpatch nicht ausreichend ähnlich ist; Identifizieren eines übertragenen Offsets durch Übertragen des übertragenen Offsets auf den dritten Quellbildpatch von einem vierten Quellbildpatch, der naheliegend an dem dritten Quellbildpatch ist; Bestimmen, dass ein vierter Zielbildpatch, der an dem identifizierten übertragenen Offset von dem dritten Quellbildpatch befindlich ist, zu dem dritten Quellbildpatch ausreichend ähnlich ist; und Aktualisieren bzw. Updaten der Datenstruktur mit einer zweiten Markierung, die den identifizierten übertragenen Offset spezifiziert, und Verknüpfen des dritten Quellbildpatches mit der zweiten Markierung.
  6. System nach einem der vorhergehenden Ansprüche, wobei die ersten und zweiten Quellbildpatches in einer Mehrzahl von Quellbildpatches aus einem Quellbild beinhaltet sind; wobei die Betriebsvorgänge des Weiteren umfassen: Rangbewerten von Offsets in der Datenstruktur entsprechend dem, wie viele Quellbildpatches mit jedem der Offsets während einer Ausführung eines Patchabgleichsalgorithmus für das Quellbild verknüpft worden sind; wobei die verwendeten hochfrequenten Offsets die höchsten Rangbewertungen aufweisen.
  7. System nach einem der vorhergehenden Ansprüche, wobei die ersten und zweiten Quellbildpatches in einer Mehrzahl von Quellbildpatches aus einem Quellbild beinhaltet sind; wobei die Betriebsvorgänge des Weiteren umfassen: Rangbewerten von Offsets in der Datenstruktur entsprechend dem, wie viele Quellbildpatches mit jedem der Offsets während einer Ausführung eines Patchabgleichsalgorithmus für das Quellbild verknüpft worden sind; und Identifizieren der am höchsten rangbewerteten Offsets aus der Datenstruktur, wobei das Verwenden der hochfrequenten Offsets umfasst: beliebiges bzw. zufälliges Auswählen und Verwenden von weniger als allen der am höchsten rangbewerteten Offsets.
  8. System nach einem der vorhergehenden Ansprüche, wobei das Bestimmen, dass der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich ist und der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist, umfasst: für jeden der ersten und zweiten Quellbildpatches und jeden der ersten und zweiten Zielbildpatches: Identifizieren eines jeweiligen Quellvektors entsprechend Pixelwerten in dem Quellbildpatch und eines jeweiligen Zielvektors entsprechend Pixelwerten in dem Zielbildpatch; Berechnen eines jeweiligen Abstandes zwischen dem Quellvektor und dem Zielvektor; und Bestimmen, dass der Quellbildpatch zu dem Zielbildpatch ausreichend ähnlich ist, auf Grundlage dessen, dass der berechnete Abstand kleiner als ein Schwellenabstand ist.
  9. System nach einem der vorhergehenden Ansprüche, wobei die ersten und zweiten Quellbildpatches in einer Mehrzahl von Quellbildpatches aus einem Quellbild beinhaltet sind, wobei die Betriebsvorgänge des Weiteren umfassen: Rangbewerten von Offsets in der Datenstruktur entsprechend dem, wie viele Quellbildpatches mit jedem der Offsets während einer Ausführung eines Patchabgleichsalgorithmus für das Quellbild verknüpft worden sind; und erneutes Rangbewerten der Offsets nach dem Verknüpfen des ersten Quellbildpatches mit dem identifizierten Offset.
  10. Verfahren, umfassend: Identifizieren eines Offsets zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch; auf Grundlage dessen, dass der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich ist, erfolgendes Durchführen von Betriebsvorgängen, die mit dem identifizierten Offset zusammenhängen, wobei die Betriebsvorgänge umfassen: zu einer Datenstruktur erfolgendes Hinzufügen eines Eintrages mit einer Markierung, die den identifizierten Offset spezifiziert, und über die Datenstruktur erfolgendes Verknüpfen des ersten Quellbildpatches mit der Markierung, wobei der identifizierte Offset in einem Satz von hochfrequenten Offsets, die in der Datenstruktur gespeichert sind, beinhaltet ist; unter Verwendung der hochfrequenten Offsets erfolgendes Identifizieren eines zweiten Zielbildpatches, der an dem identifizierten Offset von einem zweiten Quellbildpatch befindlich ist; Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist; und über die Datenstruktur erfolgendes Verknüpfen des zweiten Quellbildpatches mit dem Eintrag für den identifizierten Offset auf Grundlage dessen, dass der zweite Quellbildpatch und der zweite Zielbildpatch ausreichend ähnlich sind.
  11. Verfahren nach Anspruch 10, wobei hochfrequente Offsets einen gespeicherten Offset beinhalten; wobei das Verfahren des Weiteren umfasst: Identifizieren eines dritten Zielbildpatches, der an dem gespeicherten Offset von dem zweiten Quellbildpatch befindlich ist; wobei das Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist, umfasst: Bestimmen, dass eine erste Ähnlichkeit größer als eine zweite Ähnlichkeit ist, wobei die erste Ähnlichkeit zwischen dem zweiten Quellbildpatch und dem zweiten Zielbildpatch ist, wobei die zweite Ähnlichkeit zwischen dem zweiten Quellbildpatch und dem dritten Zielbildpatch ist.
  12. Verfahren nach Anspruch 10 oder 11, wobei das Identifizieren des Offsets zwischen dem ersten Quellbildpatch und dem ersten Zielbildpatch wenigstens eines vom Nachfolgenden umfasst: Beliebiges bzw. zufälliges Auswählen des Offsets unter Verwendung eines Ortes in einem Zielbildbereich, der eine Mehrzahl von Zielbildpatches aufweist, wobei die Mehrzahl von Zielbildpatches den ersten Zielbildpatch und den zweiten Zielbildpatch beinhaltet; Übertragen des Offsets auf den ersten Quellbildpatch von einem dritten Quellbildpatch, der naheliegend an dem ersten Quellbildpatch ist; oder beliebiges bzw. zufälliges Auswählen des Offsets aus dem Zielbildbereich in Abhängigkeit von einer Randbedingung bezüglich eines Abstandes von einem vorher identifizierten Zielbildpatch.
  13. Verfahren nach Anspruch 12, wobei der Offset auf Grundlage eines vor dem identifizieren des Offsets erfolgenden Bestimmens, dass weniger Quellbildpatches als eine Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind, beliebig bzw. zufällig ausgewählt wird; und wobei das Verwenden der hochfrequenten Offsets umfasst: Auswählen eines Teilsatzes der hochfrequenten Offsets als die verwendeten hochfrequenten Offsets auf Grundlage eines im Anschluss an das Identifizieren des Offsets erfolgenden Bestimmens, dass mehr Quellbildpatches als die Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind.
  14. Verfahren nach einem der Ansprüche 10 bis 13, des Weiteren umfassend: unter Verwendung der hochfrequenten Offsets erfolgendes Identifizieren eines dritten Zielbildpatches, wobei der dritte Zielbildpatch an dem identifizierten Offset von einem dritten Quellbildpatch befindlich ist; Bestimmen, dass der dritte Zielbildpatch zu dem dritten Quellbildpatch nicht ausreichend ähnlich ist; Identifizieren eines übertragenen Offsets durch Übertragen des übertragenen Offsets auf den dritten Quellbildpatch von einem vierten Quellbildpatch, der naheliegend an dem dritten Quellbildpatch ist; Bestimmen, dass ein vierter Zielbildpatch, der an dem identifizierten übertragenen Offset von dem dritten Quellbildpatch befindlich ist, zu dem dritten Quellbildpatch ausreichend ähnlich ist; und Aktualisieren der Datenstruktur mit einer zweiten Markierung, die den identifizierten übertragenen Offset spezifiziert, und Verknüpfen des dritten Quellbildpatches mit der zweiten Markierung.
  15. Verfahren nach einem der Ansprüche 10 bis 14, wobei die ersten und zweiten Quellbildpatches in einer Mehrzahl von Quellbildpatches aus einem Quellbild beinhaltet sind; wobei das Verfahren des Weiteren umfasst: Rangbewerten von Offsets in der Datenstruktur entsprechend dem, wie viele Quellbildpatches mit jedem der Offsets während einer Ausführung eines Patchabgleichsalgorithmus für das Quellbild verknüpft worden sind; wobei die verwendeten hochfrequenten Offsets die höchsten Rangbewertungen aufweisen.
  16. Verfahren nach einem der Ansprüche 10 bis 15, wobei die ersten und zweiten Quellbildpatches in einer Mehrzahl von Quellbildpatches aus einem Quellbild beinhaltet sind; wobei das Verfahren des Weiteren umfasst: Rangbewerten von Offsets in der Datenstruktur entsprechend dem, wie viele Quellbildpatches mit jedem der Offsets während einer Ausführung eines Patchabgleichsalgorithmus für das Quellbild verknüpft worden sind; und Identifizieren der am höchsten rangbewerteten Offsets aus der Datenstruktur, wobei das Verwenden der hochfrequenten Offsets umfasst: beliebiges bzw. zufälliges Auswählen und Verwenden von weniger als allen der am höchsten rangbewerteten Offsets.
  17. System, umfassend: Mittel zum Identifizieren eines Offsets zwischen einem ersten Quellbildpatch und einem ersten Zielbildpatch; Mittel zum auf Grundlage dessen, dass der erste Quellbildpatch zu dem ersten Zielbildpatch ausreichend ähnlich ist, erfolgenden Durchführen von Betriebsvorgängen, die umfassen: zu einer Datenstruktur erfolgendes Hinzufügen eines Eintrages mit einer Markierung, die den identifizierten Offset spezifiziert, und über die Datenstruktur erfolgendes Verknüpfen des ersten Quellbildpatches mit der Markierung; Mittel zum aus der Datenstruktur erfolgenden Auswählen eines Teilsatzes von hochfrequenten Offsets aus einem Satz von hochfrequenten Offsets, die am häufigsten in der Datenstruktur auftreten, wobei der ausgewählte Teilsatz von Offsets den identifizierten Offset beinhaltet; Mittel zum unter Verwendung des ausgewählten Teilsatzes von hochfrequenten Offsets erfolgenden Identifizieren eines zweiten Zielbildpatches, der an dem identifizierten Offset von einem zweiten Quellbildpatch befindlich ist; Mittel zum Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist; und Mittel zum über die Datenstruktur erfolgenden Verknüpfen des zweiten Quellbildpatches mit dem Eintrag für den identifizierten Offset auf Grundlage dessen, dass der zweite Quellbildpatch und der zweite Zielbildpatch ausreichend ähnlich sind.
  18. System nach Anspruch 17, wobei der ausgewählte Teilsatz von hochfrequenten Offsets einen gespeicherten Offset beinhaltet, wobei das Verfahren des Weiteren umfasst: Identifizieren eines dritten Zielbildpatches, der an dem gespeicherten Offset von dem zweiten Quellbildpatch befindlich ist, wobei das Bestimmen, dass der zweite Quellbildpatch zu dem zweiten Zielbildpatch ausreichend ähnlich ist, umfasst: Bestimmen, dass eine erste Ähnlichkeit zwischen dem zweiten Quellbildpatch und zu dem zweiten Zielbildpatch größer als eine zweite Ähnlichkeit zwischen dem zweiten Quellbildpatch und zu dem dritten Zielbildpatch ist.
  19. System nach Anspruch 17 oder 18, wobei das Identifizieren des Offsets zwischen dem ersten Quellbildpatch und dem ersten Zielbildpatch wenigstens eines vom Nachfolgenden umfasst: Beliebiges bzw. zufälliges Auswählen des Offsets unter Verwendung eines Ortes in einem Zielbildbereich, der eine Mehrzahl von Zielbildpatches aufweist, wobei die Mehrzahl von Zielbildpatches den ersten Zielbildpatch und den zweiten Zielbildpatch beinhaltet; Übertragen des Offsets auf den ersten Quellbildpatch von einem dritten Quellbildpatch, der naheliegend bzw. angrenzend an dem ersten Quellbildpatch ist; oder beliebiges Auswählen des Offsets aus dem Zielbildbereich in Abhängigkeit von einer Randbedingung bezüglich eines Abstandes von einem vorher identifizierten Zielbildpatch.
  20. System nach Anspruch 19, des Weiteren umfassend: Mittel dafür, dass der Offset auf Grundlage eines vor dem Identifizieren des Offsets erfolgenden Bestimmens, dass weniger Quellbildpatches als eine Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind, beliebig bzw. zufällig ausgewählt wird; und wobei der Teilsatz von hochfrequenten Offsets auf Grundlage eines im Anschluss an das Identifizieren des Offsets erfolgenden Bestimmens dessen ausgewählt wird, dass mehr Quellbildpatches als die Schwellenanzahl von Quellbildpatches mit jeweiligen Offsets verknüpft worden sind.
DE102017006557.8A 2016-10-06 2017-07-11 Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen Pending DE102017006557A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/286,905 US10074033B2 (en) 2016-10-06 2016-10-06 Using labels to track high-frequency offsets for patch-matching algorithms
US15/286,905 2016-10-06

Publications (1)

Publication Number Publication Date
DE102017006557A1 true DE102017006557A1 (de) 2018-04-12

Family

ID=59771593

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017006557.8A Pending DE102017006557A1 (de) 2016-10-06 2017-07-11 Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen

Country Status (5)

Country Link
US (1) US10074033B2 (de)
CN (1) CN107918936B (de)
AU (1) AU2017206290B2 (de)
DE (1) DE102017006557A1 (de)
GB (1) GB2555168B (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11501522B2 (en) * 2017-12-06 2022-11-15 Nec Corporation Image recognition model generating device, image recognition model generating method, and image recognition model generating program storing medium
CN109829389B (zh) * 2019-01-08 2021-01-26 上海上湖信息技术有限公司 机器移位判断方法、装置以及计算机存储介质
US20220284233A1 (en) * 2021-03-03 2022-09-08 Microsoft Technology Licensing, Llc Pixel correspondence via patch-based neighborhood consensus
CN116597177B (zh) * 2023-03-08 2024-08-30 西北工业大学 一种基于双分支并行深度交互协同的多源图像块匹配方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285055B1 (en) 2008-09-10 2012-10-09 Adobe Systems Incorporated Determining correspondence between image regions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6084989A (en) * 1996-11-15 2000-07-04 Lockheed Martin Corporation System and method for automatically determining the position of landmarks in digitized images derived from a satellite-based imaging system
TW201138477A (en) * 2009-10-30 2011-11-01 Panasonic Corp Image decoding method, image encoding method, and devices, programs, and integrated circuits therefor
US8571328B2 (en) * 2010-08-16 2013-10-29 Adobe Systems Incorporated Determining correspondence between image regions
WO2014198029A1 (en) * 2013-06-13 2014-12-18 Microsoft Corporation Image completion based on patch offset statistics
EP3407663B1 (de) * 2014-02-10 2020-08-05 Telefonaktiebolaget LM Ericsson (publ) Benutzergerät, netzwerkknoten und verfahren darin zur handhabung von präambelübertragungen in einem direktzugriffskanal in einem funkkommunikationsnetzwerk
US9401016B2 (en) * 2014-05-12 2016-07-26 Kla-Tencor Corp. Using high resolution full die image data for inspection
US9905302B2 (en) * 2014-11-20 2018-02-27 Western Digital Technologies, Inc. Read level grouping algorithms for increased flash performance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285055B1 (en) 2008-09-10 2012-10-09 Adobe Systems Incorporated Determining correspondence between image regions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
„PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing" von Connelly Barnes et al., veröffentlicht bei „ACM Transactions on Graphics (Proc. SIGGRAPH) 28 (3), August 2009"
„The Generalized PatchMatch Correspondence Algorithm" von Connelly Barnes et al., veröffentlicht bei „European Conference an Computer Vision, September 2010"

Also Published As

Publication number Publication date
US10074033B2 (en) 2018-09-11
CN107918936A (zh) 2018-04-17
US20180101942A1 (en) 2018-04-12
GB2555168A (en) 2018-04-25
CN107918936B (zh) 2023-07-18
AU2017206290A1 (en) 2018-04-26
GB201711703D0 (en) 2017-09-06
AU2017206290B2 (en) 2021-05-27
GB2555168B (en) 2020-03-18

Similar Documents

Publication Publication Date Title
DE102017006558B4 (de) Semantische lnstanzebenensegmentierung
DE112019005750T5 (de) Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE102018008161A1 (de) Detektieren von Objekten unter Nutzung eines schwach überwachten Modells
DE102017011262A1 (de) Themenverknüpfung und Markierung für dichte Bilder
DE102016011173A1 (de) Erstellen von Zusammenfassungen von Multimediadokumenten
DE112017006517T5 (de) Visuelle kategoriedarstellung mit vielfältiger einstufung
DE102019005851A1 (de) Objektdetektion in Bildern
DE102019000675A1 (de) Nutzen eines modells auf der basis eines tiefen neuronalen netzwerks zum identifizieren von visuell ähnlichen digitalen bildern auf der basis von nutzer-ausgewählten visuellen eigenschaften
DE102017010210A1 (de) Bild-Matting mittels tiefem Lernen
DE112016005006T5 (de) Automatische videozusammenfassung
DE112007002225B4 (de) Erstellen und Codieren von Glyphen
Chen et al. DGCA: high resolution image inpainting via DR-GAN and contextual attention
DE102017009049A1 (de) Ermöglichen von Transformationen Skizze-zu-Gemälde
DE112019001175T5 (de) Visuelles Feedback zum Prozesszustand
DE112015002286T5 (de) Visuelle interaktive suche
DE102017006557A1 (de) Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen
DE112018005616T5 (de) Blockweise extraktion von dokumentmetadaten
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
DE112008000017T5 (de) Abbilden von Bildern mit Gestaltbeschreibern
DE102017009505A1 (de) Erzeugen einer kompakten Videomerkmaldarstellung in einer digitalen Medienumgebung
DE102018001136A1 (de) Interaktive Farbpalettenschnittstelle zum digitalen Malen
DE102018003475A1 (de) Formbasierte Grafiksuche
DE202016009145U1 (de) Deep-Learning-basierte funktionale Korrelation von volumetrischen Designs
DE112020005732T5 (de) Erzeugen von trainingsdaten zur objekterkennung
DE202017007534U1 (de) Multiskalige 3D-Textursynthese

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: ADOBE INC., SAN JOSE, US

Free format text: FORMER OWNER: ADOBE SYSTEMS INCORPORATED, SAN JOSE, CALIF., US

R082 Change of representative

Representative=s name: MUELLER-BORE & PARTNER PATENTANWAELTE PARTG MB, DE

R012 Request for examination validly filed