DE102016011380A1 - Bildsynthese unter Verwendung einer Aktivmaske - Google Patents

Bildsynthese unter Verwendung einer Aktivmaske Download PDF

Info

Publication number
DE102016011380A1
DE102016011380A1 DE102016011380.4A DE102016011380A DE102016011380A1 DE 102016011380 A1 DE102016011380 A1 DE 102016011380A1 DE 102016011380 A DE102016011380 A DE 102016011380A DE 102016011380 A1 DE102016011380 A1 DE 102016011380A1
Authority
DE
Germany
Prior art keywords
pixels
synthesis technique
active mask
patch
patch synthesis
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
DE102016011380.4A
Other languages
English (en)
Inventor
Elya Shechtman
Daniel Robert Goldman
Sohrab Amirghodsi
Aliakbar Darabi
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 DE102016011380A1 publication Critical patent/DE102016011380A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • G06T5/77
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/4038Scaling the whole image or part thereof for image mosaicing, i.e. plane images composed of plane sub-images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/4007Interpolation-based scaling, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/155Segmentation; Edge detection involving morphological operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Abstract

Ausführungsformen der vorliegenden Erfindung stellen Systeme, Verfahren und Computerspeichermedien bereit, die auf eine Bildsynthese unter Verwendung einer Aktivmaske gerichtet sind. In einer Ausführungsform wird eine Eingabe empfangen, welche einen Zielbereich in einem Bild identifiziert, der synthetisiert werden soll. Es kann dann eine Flickensynthesetechnik ausgeführt werden, um den Zielbereich basierend auf Teilen eines Quellbereichs, die von der Flickensynthesetechnik identifiziert werden, zu synthetisieren. In Ausführungsformen beinhaltet die Flickensynthesetechnik für zumindest eine Iteration das Erzeugen einer Aktivmaske, die einen oder mehrere Teile des Zielbereichs als inaktiv anzeigt. Diese Aktivmaske kann von dem zumindest einen Prozess der Flickensynthesetechnik verwendet werden, um den einen oder die mehreren Teile, die von der Aktivmaske als inaktiv angezeigt werden, für die zumindest eine Iteration der Flickensynthesetechnik zu ignorieren. Es mögen andere Ausführungsformen beschrieben und/oder beansprucht sein.

Description

  • Hintergrund
  • Digitales Bildeditieren wurde zunehmend populär, da digitale Bilderfassungsvorrichtungen einigermaßen allgegenwärtig geworden sind. Eine Person mag zum Beispiel ein Mobiltelefon, eine dedizierte Kamera oder ähnliches mit sich führen, welche die Person verwenden kann, um digitale Bilder von Szenen zu erfassen (beispielsweise Landschaft, Raum, Sportereignis und so weiter), die von Interesse sind. In einigen Fällen erfassen diese digitalen Bilder die Szene nicht wie gewünscht. In solchen Fällen können digitale Bildeditiertechniken verwendet werden, um das digitale Bild so zu modifizieren, um ein gewünschtes Ergebnis zu erzielen. Einige dieser digitalen Bildeditiertechniken verwenden Flickensynthesetechniken, die verwendet werden können, um einen Bereich des digitalen Bildes zu synthetisieren. Diese Flickensynthesetechniken führen typischer Weise eine iterative Analyse durch, um eine Entsprechung zwischen dem zu synthetisierenden Bereich und entsprechenden Bereichen von einem oder von mehreren Bildern zu identifizieren. Diese entsprechenden Bereiche können entsprechende Bereiche des digitalen Bildes selbst beinhalten, die außerhalb des zu synthetisierenden Bereichs auftreten. Diese entsprechenden Bereiche können dann verwendet werden, um den synthetisierten Bereich zu erzeugen. Derartige digitale Bildeditiertechniken können beispielsweise Bildvervollständigung, Bildumschichtung oder Textursynthese beinhalten.
  • Herkömmliche Flickensynthesetechniken führen eine signifikante Anzahl an Berechnungen aus, welche eine erhebliche Zeitdauer und erhebliche Rechnerressourcen erfordern können, um diese abzuschließen. Als solches mögen herkömmliche Flickensynthesetechniken für einen Benutzer nicht ausreichend interaktiv sein und mögen nicht einfach ausgeführt werden können auf Vorrichtungen, die über begrenzte Rechenleistung verfügen, wie etwa Mobiltelefone.
  • Zusammenfassung
  • Ausführungsformen der vorliegenden Erfindung sind auf Flickensynthesetechniken gerichtet, die eine Aktivmaske verwenden, um diejenigen Pixel in einem Zielbereich zu identifizieren, die weiterhin aktiv sind oder die noch konvergieren müssen, und diejenigen Pixel in dem Zielbereich zu identifizieren, die nicht mehr aktiv sind oder die konvergiert sind. Die Verwendung dieser Aktivmaske in Verbindung mit einer oder mit mehreren Iterationen einer Flickensynthesetechnik kann für diese eine oder für mehrere Iterationen die Verarbeitung von Pixeln, die in dem Zielbereich liegen, auf allein diejenigen Pixel begrenzen, die in der Aktivmaske als aktiv angezeigt sind. Als solches kann ein erhebliches Maß an Verarbeitungszeit und Ressourcen eingespart werden, indem eine zusätzliche Verarbeitung von Pixeln, die von der zusätzlichen Verarbeitung nicht profitieren, verhindert wird.
  • Diese Zusammenfassung wird gegeben, um eine Auswahl an Konzepten in einer vereinfachten Weise vorzustellen, welche in der nachfolgenden detaillierten Beschreibung weiter beschrieben werden. Diese Zusammenfassung ist nicht dazu gedacht, Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstandes zu identifizieren, und ist auch nicht dazu gedacht, als eine Hilfestellung beim Bestimmen des Bereichs des beanspruchten Gegenstandes verwendet zu werden.
  • Kurze Beschreibung der Zeichnungen
  • Die Patent- oder Anmeldungsakte enthält wenigstens eine farbig ausgeführte Zeichnung. Kopien der Veröffentlichung dieses Patents oder dieser Patentanmeldung mit farbige(r/n) Zeichnung(en) werden vom Amt auf Anforderung und nach Zahlung der notwendigen Gebühr bereitgestellt.
  • 1 zeigt eine visuelle Sequenz, die eine allgemeine Übersicht einer beispielhaften digitalen Bildeditiertechnik repräsentiert, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 2 zeigt Aspekte einer beispielhaften Grafikeditierumgebung, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 3 zeigt einen Prozessablauf, der eine beispielhafte Flickensynthesetechnik zeigt, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 4 zeigt einen Prozessablauf, der eine beispielhafte Approximaler-Nächster-Nachbar-Suche zeigt, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 5 zeigt einen Prozessablauf, der eine beispielhafte Aktivmaskenerzeugung zeigt, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 6A bis 6C zeigen veranschaulichende Beispiele eines Suchprozesses, der als Teil einer Flickensynthesetechnik ausgeführt wird, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • 7 ist eine visuelle Darstellung von Aspekten einer Iteration einer Flickensynthesetechnik, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 8 ist eine weitere visuelle Darstellung von Aspekten einer Iteration einer Flickensynthesetechnik, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 9 ist ein Blockdiagramm einer beispielhaften Rechnervorrichtung, in welcher Ausführungsformen der vorliegenden Offenbarung eingesetzt werden können.
  • Detaillierte Beschreibung
  • Digitale Bildeditiertechniken werden häufig verwendet, um ein Digitalbild zu modifizieren, um ein gewünschtes Ergebnis zu erhalten. Einige dieser digitalen Bildeditiertechniken implementieren Flickensynthesetechniken, wie oben erwähnt, die verwendet werden können, um einen Bereich des Digitalbilds zu synthetisieren. Derartige digitale Bildeditiertechniken können beispielsweise Bildvervollständigung, Bildumschichtung, Textursynthese, Bild-Retargeting, Bildverzerrung, Bildüberblendung, Texturinterpolation, Bildharmonisierung, Stiltransfer, Textur nach Zahlen oder eine andere digitale Bildeditiertechnik, die Flickensynthesetechniken verwendet, beinhalten.
  • Als ein Beispiel dieser digitalen Bildeditiertechniken kann in einigen Fällen ein Objekt in dem erfassten Digitalbild erscheinen, das nicht gewünscht ist (beispielsweise elektrische Übertragungsleitungen oder Masten, Menschen, Autos und so weiter) In solchen Fällen mag eine Bildvervollständigung verwendet werden, um den Teil des digitalen Bildes, der das unerwünschte Objekt enthält, auszufüllen oder zu ersetzen. Um diese Bildvervollständigung zu bewerkstelligen kann ein Loch, das durch das Entfernen des Objektes aus dem Digitalbild entsteht, ausgefüllt werden unter Verwendung einer Flickensynthesetechnik, um einen oder mehrere entsprechende Teile des digitalen Bildes oder eines separaten Digitalbilds zu finden. Diese entsprechenden Teile können durch die Flickensynthesetechnik beim Ausfüllen des Lochs verwendet werden. Eine solche Flickensynthesetechnik kann das Durchsuchen des Bildes nach Quellenflicken beinhalten, die Teilen des Bilds entsprechen, die in dem Loch liegen. Sobald entsprechende Teile aufgefunden wurden, kann damit begonnen werden, das Loch auszufüllen mittels einem Abstimmungsprozess, der eine Farbe aller Pixel in dem Loch unter Verwendung dieser entsprechenden Teile bestimmt. Dieser Prozess kann vielmals wiederholt werden, um progressiv bessere entsprechenden Teile zu finden und dadurch in einer besseren Füllung für das Loch resultieren. In jeder dieser Iterationen der Flickensynthesetechnik werden alle Pixel in dem Loch einzeln verarbeitet. Dies ist selbst dann der Fall, wenn ein individuelles Pixel konvergiert ist, oder einen Zustand erreicht hat, in dem keine bessere Farbe für das Pixel gefunden werden kann. Als solches tritt in dem gegenwärtigen Stand der Technik ein substantielles Maß an unnötiger Verarbeitung in diesen Flickensynthesetechniken für Pixel auf, die von einer weiteren Verarbeitung durch diese Flickensynthesetechniken nicht profitieren. Dieses Problem wird in späteren Stufen der Flickensynthesetechnik verstärkt, wo eine relativ große Anzahl an Pixeln konvergiert sein mögen und eine relativ kleine Anzahl von Pixeln weiterhin von einer weiteren Verarbeitung profitieren mag.
  • Ausführungsformen der vorliegenden Erfindung sind allgemein auf das Erzeugen und/oder Verwenden einer Aktivmaske zum Beschränken der Verarbeitung von Pixeln in einem Zielbereich (beispielsweise das oben beschriebene Loch) auf diejenigen Pixel, die noch konvergieren müssen. Die Aktivmaske wird verwendet, um zwischen denjenigen Pixeln in dem Zielbereich, die noch aktiv sind, oder noch konvergieren müssen, und denjenigen Pixeln in dem Zielbereich zu unterscheiden, die nicht mehr aktiv sind, oder die konvergiert sind. Das Verwenden einer solchen Aktivmaske in einer oder in mehreren Iterationen der Flickensynthesetechnik kann die Verarbeitung von Pixeln, die in dem Zielbereich, auf allein diejenigen Pixel beschränkt werden, die in der Aktivmaske als aktiv unterschieden werden. Dabei wird die Verarbeitung, welche im gegenwärtigen Stand der Technik auf diejenigen Pixel angewandt würde, die konvergiert sind, übersprungen, was ein großes Maß an Verarbeitungszeit und Ressourcen einsparen kann.
  • In Ausführungsformen kann eine Aktivmaske erzeugt werden, indem Gruppierungen von Pixeln, die als konvergiert bestimmt wurden, als inaktiv identifiziert werden. Das Identifizieren von Gruppierungen von Pixeln, die konvergiert sind, kann in einigen Ausführungsformen auf einer Kohärenzanalyse basieren, wie der nachstehend ausgiebig besprochenen. Der verbleidende Rest einer solchen Aktivmaske würde diejenigen Pixel identifizieren, die noch konvergieren müssen und daher weiterhin aktiv sind. Die hierin beschriebene Flickensynthesetechnik kann konfiguriert sein, eine solche Aktivmaske vorteilshaft zu nutzen und diejenigen Gruppierungen von Pixeln nicht weiter verarbeiten, die in der Aktivmaske als inaktiv identifiziert sind.
  • 1 zeigt eine Sequenz 100, die eine grobe allgemeine Übersicht einer beispielhaften digitalen Bildeditiertechnik in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung zeigt. Es sei verstanden, dass da es die Absicht der Sequenz 100 ist, eine grobe allgemeine Übersicht zu geben, viele spezifische Details aus dieser Diskussion ausgelassen sind. Diese spezifischen Details werden jedoch in Bezug auf die weiteren Figuren diskutiert.
  • Wie gezeigt beginnt die Sequenz 100 bei 102a mit dem Digitalbild 104. Das Digitalbild 104 repräsentiert ein Bild, das in einem digitalen Format gespeichert ist. Ein solches digitales Format könnte beispielsweise ein Joint Photographic Experts Group (JPEG) Format, ein Bitmap (BMP) Format, ein Tagged Image File Format (TIFF), ein Portable Networks Graphic (PNG) Format, ein Graphics Interchange Format (GIF) oder ein anderes geeignetes Format sein. Das Digitalbild 104 beinhaltet den Zielbereich 106. Wie hierin verwendet, bezieht sich ein Zielbereich eines Digitalbilds auf einen Bereich des digitalen Bildes, der ersetzt werden soll durch einen Bereich, der mittels einer Flickensynthesetechnik synthetisiert wurde. Wie gezeigt zeigt der Zielbereich 106 einen Bereich des Digitalbilds 104, der gefüllt wird unter Verwendung von Teilen des Restes des Digitalbilds 104 als die Quelle. Als solches kann der Bereich außerhalb des Zielbereichs 106 hierin als ein Quellbereich bezeichnet werden. Es sei verstanden, dass in anderen Ausführungsformen der Quellbereich ein oder mehrere weitere Digitalbilder sein könnte.
  • Der Zielbereich 106 kann mit einem synthetisierten Bereich ausgefüllt werden, de erzeugt wird unter Verwendung einer Flickensynthesetechnik, wie der hierin ausgiebig diskutierten, welche Flicken in dem Quellbereich identifizieren kann, die Flicken in dem Zielbereich entsprechen. Wie hierin verwendet kann sich ein Flicken bzw. „patch” auf einen Abschnitt oder eine Gruppierung von Pixeln in einem Digitalbild beziehen. Dieser Abschnitt kann von fester oder variabler Form sein. Beispielsweise kann ein Flicken als eine feste Form 5×5 oder 7×7 definiert sein, wobei die Abmessungen die Anzahl an Pixeln angeben, die von dem Flicken bedeckt werden (beispielsweise bedeckt ein 7×7 Flicken einen Bereich von 7×7 Pixeln, oder insgesamt 49 Pixel). Jeder Flicken kann an einem einzelnen Pixel zentriert sein und kann Flicken überlappen, die bei benachbarten Pixeln zentriert sind. Jedes Pixel kann somit von einer Anzahl überlappender Flicken bedeckt sein. Wenn als Beispiel ein Flicken mit Abmessungen 7×7 betrachtet wird, würde jedes Pixel von gesamt 49 überlappenden Flicken bedeckt.
  • Weiter nun zu 102b wurde ein iterativer Suchprozess einer Flickensynthesetechnik ausgeführt, um Quellenflicken 108a108d aus dem Quellbereich zu identifizieren, die den Zielflicken 110a110d entsprechen. In einigen Ausführungsformen ist dieser iterative Suchprozess eine wiederholte Suche aller Flicken in einem Bildbereich (beispielsweise Quellbereich), um den Flicken aufzufinden, der am ähnlichsten zu einem anderen Bildbereich ist (beispielsweise Zielbereich 106). Dieser ähnlichste Flicken mag im technischen Gebiet als Nächster-Nachbar bzw. „nearest neighbor” oder Approxmimaler-Nächster-Nachbar bzw. „approximate nearest neighbor” bezeichnet werden. Die Ähnlichkeit von Flicken kann verglichen werden unter Verwendung einer beliebigen Flickenabstandsmetrik, beispielsweise Lp. Zusätzliche Details eines solchen Suchprozesses werden nachstehend mit Bezug auf 24 und 6 erläutert. Sobald die Quellenflicken 108a108d identifiziert wurden, kann damit begonnen werden, den Zielbereich 106 aufzufüllen mittels eines „Voting-” bzw. Abstimmungsprozesses der Flickensynthesetechnik. Ein solcher Abstimmungsprozess kann verwendet werden, um Farben für Pixel zu bestimmen, die in dem Zielbereich 106 liegen, unter Verwendung der Quellenflicken 108a108d. Wie gezeigt, sind die Quellenflicken 108a108d, welche durch Durchsuchen des Quellbereichs des Digitalbilds 104 aufgefunden werden, ideale Quellenflicken, die möglicher Weise nicht verbessert werden können, wenn eine weitere Iterationen der Flickensynthesetechnik angewandt wird. Als solches können diese Teile des Zielbereichs 106 als konvergiert betrachtet werden und werden dementsprechend nicht von irgendeiner weiteren Verarbeitung der Flickensynthesetechnik profitieren. Die Flickensynthesetechnik würde jedoch durch viele weitere Iterationen fortfahren, um einen synthetisierten Bereich zu erzeugen, der den Zielbereich 106 ausfüllen kann. In jeder dieser Iterationen würden dabei im gegenwärtigen Stand der Technik die Teile des Zielbereichs, die konvergiert sind, erneut verarbeitet werden mittels des Such- und Abstimmungsprozesses der Flickensynthesetechnik, auch wenn keine Änderung in diesen konvergierten Teilen auftreten würde.
  • In einer Bemühung, zumindest einen Teil dieser wiederholten Verarbeitung dieser konvergierten Teile in der Flickensynthesetechnik zu vermeiden, wird bei 102c eine Aktivmaske 112 erzeugt. Die Aktivmaske 112 identifiziert Gruppierungen von Pixeln, die als konvergiert bestimmt wurden, als inaktive Bereiche 116a116d. Das Bestimmen von Pixeln, die konvergiert sind, wird in größerem Detail nachstehend mit Bezug auf 2, 3 und 5 beschrieben. Der Rest der Aktivmaske 112 identifiziert den aktiven Bereich 114. Die Flickensynthesetechnik kann konfiguriert sein, die Aktivmaske 112 zu nutzen und diejenigen Gruppierungen von Pixeln nicht weiter zu verarbeiten, die in der Aktivmaske 112 als innerhalb inaktiver Bereiche 116a116d liegend identifiziert sind. Es wird verstanden werden, dass mit dem Fortschreiten der Flickensynthesetechnik die Gruppierungen von Pixeln, die als konvergiert seiend bestimmt wurden, weiter wachsen werden. Als solches kann mit dem Fortschreiten der Flickensynthesetechnik die Aktivmaske kontinuierlich aktualisiert werden, um dieses Wachstum widerzuspiegeln. Dementsprechend ist kann der Einfluss der Aktivmaske auf die Verarbeitungsgeschwindigkeit und die -ressourcen in späteren Iterationen der Flickensynthesetechnik zunehmen.
  • 2 zeigt Aspekte einer beispielhaften Grafikeditierumgebung 200 in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung. Wie dargestellt beinhaltet die Grafikeditierumgebung 200 einen Grafikeditor 202. Der Grafikeditor 202 kann ein geeigneter Grafikeditor sein, wie beispielsweise ADOBE® Illustrator oder ADOBE® Photoshop (beide erhältlich von Adobe Systems Inc. aus San Jose, Kalifornien). Der Grafikeditor 202 kann konfiguriert sein, um unter anderem eine Benutzerschnittstelle bereitzustellen, die es einem Benutzer des Grafikeditors 202 ermöglicht, ein Digitalbild zu manipulieren, wie beispielsweise das Digitalbild 204.
  • Das Digitalbild 204 repräsentiert ein Bild, das in einem digitalen Format gespeichert ist (beispielsweise JPEG, BMP, TIFF, PNG, GIF und so weiter). Das Digitalbild 204 kann eine zweidimensionale Matrix von Pixeln digital gespeichert werden, welche das Objekt oder die Szene darstellen, das bzw. die von dem Digitalbild erfasst wird. Jedem dieser Pixel ist eine bestimmte Information zugewiesen, wie beispielsweise Farbinformation. In einigen Ausführungsformen ist beispielsweise jedem Pixel ein Wert im roten, grünen und blauen (RGB) Farbbereich zugewiesen. Der RGB Farbbereich, auf dem technischen Gebiet auch als das RGB Farbmodell bezeichnet, ist eine additive Repräsentation einer Farbe. In dem RGB Farbbereich würde jedem Pixel eine Farbe zugewiesen, indem dem betreffenden Pixel ein Betrag von rot, grün und blau zugewiesen wird, hiernach als ein RGB Farbwert bezeichnet. Die Kombination dieses RGB Farbwerts würde die Farbe des Pixels in dem Digitalbild repräsentieren. Es wird verstanden werden, dass der RGB Farbbereich lediglich als ein Beispiel eines möglichen Farbbereichs betrachtete wird und dass die Lehren dieser Offenbarung auf jeden beliebigen Farbbereich oder Farbrepräsentation angewandt werden könnte, ohne den Bereich dieser Offenbarung zu verlasse. In verschiedenen Ausführungsformen kann das Digitalbild 204 mit einer digitalen Bilderfassungsvorrichtung erzeugt oder erfasst werden. Eine derartige digitale Bilderfassungsvorrichtung könnte beispielsweise ein Dokumentenscangerät, eine Digitalkamera (Video oder Standbild) oder eine andere geeignete digitale Bilderfassungsvorrichtung sein. In anderen Ausführungsformen kann das Digitalbild 204 vollständig im digitalen Raum erzeugt werden (beispielsweise computererzeugte Bilder („computer generated imagery”, CGI)).
  • Der Grafikeditor 202 beinhaltet eine grafische Benutzerschnittstelle (GUI) 206. In Ausführungsformen ist die GUI 206 konfiguriert, es einem Benutzer des Grafikeditors 202 zu ermöglichen, digitale Bildeditiertechniken auf einem Digitalbild 204 auszuführen. zu diesem Zweck kann die GUI 206 konfiguriert sein, dem Benutzer das Digitalbild 204 anzuzeigen und Eingaben von dem Benutzer in Bezug auf das Digitalbild zu empfangen. In Ausführungsformen könnte diese Eingabe eine Auswahl eines Zielbereichs sein, den der Benutzer mit einem synthetisierten Bereich ersetzen möchte, der aus einem Quellbereich zusammengefügt wird. Die GUI 206 könnte diese Eingabe auch verwenden, um eine Zielbereichsinformation 208 zu erzeugen, die verwendet werden könnte, um den Zielbereich mit Bezug auf das Digitalbild 204 zu identifizieren. Als ein Beispiel kann der Benutzer die GUI 206 zusammen mit einer Eingabevorrichtung (beispielsweise Berührungssensoren, Eingabegriffel, Maus und so weiter) verwenden, um ein Objekt zu identifizieren, das der Benutzer aus dem Digitalbild 204 entfernen möchte unter Verwendung eines Bildvervollständigungsprozesses, oder um einen Bereich des Digitalbilds 204 zu identifizieren, den der Benutzer an eine andere Stelle in dem Digitalbild bewegen möchte unter Verwendung eines Bildumschichtungsprozesses. In einigen Ausführungsformen könnte die Zielbereichsinformation 208 die Form einer Maske annehmen, die verwendet werden könnte, um den ausgewählten Zielbereich in dem Digitalbild 204 zu identifizieren. In anderen Ausführungsformen könnte die Zielbereichsinformation 208 Die Form einer Reihe von Koordinaten annehmen (beispielsweise Eckkoordinaten eines begrenzenden Rechtecks, oder Koordinaten für jedes Pixel in dem Zielbereich), die verwendet werden können, um den ausgewählten Zielbereich in dem Digitalbild 204 zu identifizieren. Es wird verstanden werden, dass diese Ausführungsformen der Zielbereichsinformation 208 lediglich als Beispiele möglicher Mechanismen zum Identifizieren des ausgewählten Zielbereichs in dem Digitalbild 204 gedacht sind, und dass jeder andere Mechanismus, der geeignet ist, den Zielbereich zu identifizieren, verwendet werden könnte, ohne den Bereich dieser Offenbarung zu verlassen.
  • Um die digitalen Bildeditiertechniken ausführen zu können, beinhaltet der Grafikeditor 202 ein Bildeditierwerk 212. Das Bildeditierwerk 212 kann das Digitalbild 204 und die Zielbereichsinformation 208 als Eingabe nehmen. In Ausführungsformen kann das Bildeditierwerk 212 ein Flickenentsprechungssuchmodul 214, ein Abstimmungsmodul 216 und ein Aktivmaskenmodul 218 beinhalten. In Ausführungsformen können diese Module zusammenarbeiten, um iterativ eine Flickensynthesetechnik wie hierin beschrieben auszuführen.
  • Das Flickenentsprechungssuchmodul 214 kann konfiguriert sein, eine iterative Suche auszuführen, um für jeden Flicken in dem Zielbereich (beispielsweise Zielflicken 110a110d der 1) den nächstkommenden oder ähnlichsten Flicken (beispielsweise Quellenflicken 108a108d der 1) in einem Quellbereich in dem Digitalbild 204 aufzufinden. In Ausführungsformen kann diese iterative Suche die Form einer Approximaler-Nächster-Nachbar-Suche annehmen. Beispiele von Approximalen-Nächste-Nachbarn-Suchen beinhalten auf Flickenübereinstimmung basierte Suchen (beispielsweise PatchMatch), Hashing basierte Suchen (beispielsweise Kohärenzempfindliches Hashing („coherence sensitive hashing”, CSH)), baumbasierte Suchen (beispielsweise kd-tree), oder eine andere geeignete Approximaler-Nächster-Nachbar-Suche. Das Ergebnis einer Approximaler-Nächster-Nachbar-Suche kann in einer Karte aufgezeichnet werden, die als ein Nächste-Nachbarn-Feld („Nächste-Nachbarn-Feld”, NNF) bezeichnet wird. Ein Nächste-Nachbarn-Feld kann als eine Abbildung von einer Menge von Flicken A in dem Zielbereich auf eine Menge von Flicken B in dem Quellbereich betrachtet werden. Diese Abbildung kann durch f: A → B repräsentiert werden. In einigen Ausführungsformen kann das Nächste-Nachbarn-Feld als eine Menge von Koordinaten gespeichert werden (beispielsweise in einem Puffer oder einem anderen geeigneten Medium). Beispielsweise kann eine Notation verwendet werden, so dass ein Flicken P1 in dem Quellbereich als P1 = S(i, j) definiert ist, wobei 'i' und 'j' beispielsweise die Koordinaten der oberen linken Ecke des Flickens P in dem Quellbereich, S, repräsentieren. Unter Verwendung dieser Notation kann ein Flicken P2 in dem Zielbereich auf ähnliche Weise als P2 = T(k, l) definiert werden. In einer derartigen Notation kann ein Offset bzw. Versatz zwischen den Flicken S(i, j) und T(k, l) als (k–i, l–j) definiert werden. In anderen Ausführungsformen mag lediglich der Offset in dem Nächsten-Nachbarn-Feld gespeichert werden.
  • Eine Approximaler-Nächster-Nachbar-Suche ist eine iterative optimierende Suche, welche danach trachtet, eine Energiefunktion des Nächsten-Nachbarn-Feldes zu optimieren oder zu minimieren. Eine derartige Energiefunktion, 'E', kann durch die Gleichung E = ΣD(a, NN(a)), ∀a ∈ A ausgedrückt werden, wobei 'D' eine Abstandsfunktion (beispielsweise L2 Abstand, Lp Abstand und so weiter) repräsentiert, 'a' einen Flicken in der Menge von Flicken A repräsentiert, und NN(a) durch die Gleichung argminD(a, b), ∀b ∈ B, ausgedrückt werden kann, wobei 'D' wiederum die Abstandsfunktion repräsentiert, 'b' einen Flicken in der Menge von Flicken B repräsentiert, und argmin das mathematische Konzept des Argument des Maximums repräsentiert. Als solches trachtet eine Approximaler-Nächster-Nachbar-Suche danach, eine Menge von Quellenflicken B aufzufinden, die einen minimalen Gesamtabstand von der entsprechenden Menge von Zielflicken in A hat.
  • Um diese Optimierung der Energiefunktion, die oben diskutiert wurde, zu erreichen, kann die Approximaler-Nächster-Nachbar-Suche in einigen Ausführungsformen mit einer anfänglichen Besetzung des Nächsten-Nachbarn-Feldes beginnen. Diese anfängliche Besetzung könnte zufällig zugewiesen, von einem Nächste-Nachbarn-Feld von einer vorherigen Iteration, oder anderweitig mit einem anfänglichen Startpunkt für die Approximaler-Nächster-Nachbar-Suche besetzt werden. In 6A ist eine zufällige anfängliche Besetzung gezeigt. In Ausführungsformen, wo das Nächste-Nachbarn-Feld anfänglich besetzt ist, kann eine iterative Suche ausgeführt werden, um eine Menge von Flicken in dem Quellbereich aufzufinden, welche eine Verbesserung gegenüber der anfänglichen Besetzung des Nächsten-Nachbarn-Feldes darstellt. In einigen Ausführungsformen kann diese iterative Suche zwei Phasen aufweisen. Die erste Phase ist eine Propagationsphase, oder lineare Suchphase, in der gute Lösungen (beispielsweise Quellenflicken und jeweilige Zielflicken mit einem relativ kleinen Abstand) für benachbarte Pixel in dem Zielbereich verbreitet werden können mittels einer linearen Suche (beispielsweise in Abtastzeilenreihenfolge oder entgegen der Abtastzeilenreihenfolge). Eine derartige Propagationsphase ist in 6B gezeigt. Die zweite Phase ist eine Zufallssuchphase, in der eine zufällige Flickensuche ausgeführt werden kann in konzentrischen Nachbarschaften über den Quellbereich, um zu bestimmen, ob irgendeiner dieser zufälligen Quellenflicken einen kleineren Abstand hat als die gegenwärtig ausgewählten Quellenflicken. Diese Zufallsphase kann vorteilhaft sein, um zu verhindern, dass die Approximaler-Nächster-Nachbar-Suche in Minima steckenbleibt. Eine solche Zufallsphase ist in 6C gezeigt.
  • Sobald eine Menge von Quellenflicken B mittels der Approximaler-Nächster-Nachbar-Suche aufgefunden wurde, können diese Flicken zu dem Abstimmungsmodul 216 weitergeleitet werden. Das Abstimmungsmodul 216 kann konfiguriert sein, die Quellenflicken B zu nehmen und diese Flicken zu verwenden, um eine Farbe für jedes Pixel in dem Zielbereich zu bestimmen. Dies kann bewerkstelligt werden mittels einer Misch- bzw. Überblendungsoperation, welche die Flicken berücksichtigt, welche ein einzelnes Pixel überdecken, um diesem einzelnen Pixel eine Farbe zuzuweisen. Die Rechenkosten dieser Mischoperation kann durch die Gleichung N2·K ausgedrückt werden, wobei N die Abmessung der Flicken ist, wobei gleiche quadratische Abmessungen angenommen werden, während K die Anzahl an Pixeln des Zielbereichs repräsentiert. In einigen Ausführungsformen könnte diese Mischoperation eine gewichtete Michoperation sein, in welcher eine gewichtete Summe aller überlappenden Flicken aus dem Nächsten-Nachbarn-Feld verwendet wird, um zu einer finalen Farbe für jedes Pixel zu gelangen.
  • Das oben diskutierte Flickenentsprechungssuchmodul 214 und das Abstimmungsmodul 216 können verwendet werden, um iterativ das Nächste-Nachbarn-Feld zu verfeinern, um geschätzte Farben des Zielbereichs besser zu approximieren. In einigen Ausführungsformen kann dies in einer Mehrfachauflösungsweise bewerkstelligt werden. Als solches mag das Digitalbild 204 zuerst aus einer ursprünglichen Auflösung heruntergesampelt werden zu einer vordefinierten Auflösung, bevor es durch das Flickenentsprechungssuchmodul 214 und das Abstimmungsmodul 216 verarbeitet wird. Nachdem eine hinreichende Anzahl von Iterationen bei dieser heruntergesampelten Auflösung ausgeführt wurden, kann das Digitalbild 204 hochgesampelt werden zu einer nächsten Stufe und die Verarbeitung kann dann wiederholt werden, bis schlussendlich das Digitalbild 204 wieder bis zur ursprünglichen Auflösung hochgesampelt ist.
  • Wenn ein Bereich des Zielbereichs durch Quellenflicken rekonstruiert wird, die kohärent sind, dann werden die Werte entsprechender Pixel für den Zielbereich im Wesentlichen dieselben sein wie der Pixel der Quellenflicken, mit Ausnahme von Grenzen, wo unterschiedliche kohärente Quellenflicken sich überlappen mögen. Wie hierin verwendet bedeutet die Kohärenz eines Flickens, dass eine Verschiebung in dem Nächsten-Nachbarn-Feld (beispielsweise Offset) einer gleichen Verschiebung in dem Quellbereich entspricht. Es sei beispielsweise angenommen, dass (x, y) eine Koordinate eines ersten Zielflickens ist, der synthetisiert wird, und (x', y') eine Koordinate eines ersten Quellenflickens ist, der dem ersten Zielflicken in dem Nächsten-Nachbarn-Feld entspricht. Das heißt, dass (x', y') die Koordinate des besten Quellenflickens ist, der bisher für den ersten Zielflicken aufgefunden wurde. Wenn ein zweiter Zielflicken durch die Koordinate (x + 1, y) angegeben ist und einem zweiten Quellenflicken entspricht, der durch die Koordinate (x' + 1, y) angezeigt wird, dann werden der erste Zielflicken und der zweite Zielflicken als kohärent betrachtet. Diese Eigenschaft von Nächsten-Nachbarn-Feldern kann in Bodenwahrheits- bzw. Grond-Truth Nächsten-Nachbarn-Feldern häufig beobachtet werden. Als eine Nebenwirkung mögen die Approximale-Nächste-Nachbarn-Felder, die von dem Flickenentsprechungssuchmodul 214 zurückgeliefert werden, große kohärente Bereiche aufweisen, welche dieselben Nächste-Nachbarn-Feld Offsets aufweisen. Daher können rekonstruierte Bereiche oftmals aus großen kohärenten Bereichen gebildet werden. In einigen Fällen können diese kohärenten Bereiche einen großen Prozentsatz des synthetisierten Bereichs bei höheren Auflösungen abdecken (beispielsweise spätere Verarbeitungsiterationen). Wie oben ausgeführt, ist die durch das Flickenentsprechungssuchmodul 214 ausgeführte Approximaler-Nächster-Nachbar-Suche eine iterative Optimierungssuche, in welcher jede Iteration versucht, für jeden Zielflicken einen besser passenden Quellenflicken aufzufinden (beispielsweise geringerer Abstand). In einem ideal kohärenten Bereich mögen die Flicken jedoch ideal passen bzw. übereinstimmen, und der Flickenabstand ist typischer Weise null, so dass keine besseren Flicken gefunden werden können. Als solches können diese kohärenten Bereiche, oder die Pixel darin, als konvergiert betrachtet werden. Daher kann die oben diskutierte Flickensynthesetechnik beschleunigt werden, indem die kohärenten Bereiche in der Verarbeitung, die von dem Flickenentsprechungssuchmodul 214 und/oder dem Abstimmungsmodul 216 ausgeführt wird, übersprungen werden. Der Gewinn wird umso größer bei den letzten feineren Stufen, in welchen die meiste Zeit des Algorithmus verbracht wird.
  • Das Aktivmaskenmodul 218 kann konfiguriert sein, eine Aktivmaske zu erzeugen, welche diejenigen Pixel in einem Zielbereich identifiziert, die noch konvergieren müssen und noch aktiv sind, und diejenigen Pixel in dem Zielbereich, die konvergiert sind und nicht mehr aktiv sind. In einigen Ausführungsformen kann die Aktivmaske in Form einer binären zweidimensionalen Matrix gespeichert werden, die für jedes Pixel in dem synthetisierten Zielbereich einen Wert von entweder '1' oder '0' speichert. Die Werte '1' und '0' können verwendet werden, um zwischen denjenigen Pixeln, die in dem Zielbereich noch aktiv sind, und denjenigen Pixeln, die in dem Zielbereich inaktiv sind, zu unterscheiden. Beispielsweise könnte ein Wert von '0' an der Koordinate (c, d) in der Aktivmaske anzeigen, dass das Pixel an einer entsprechenden Stelle in dem Zielbereich weiterhin aktiv ist, während eine '1' an der Koordinate (e, f) in der Aktivmaske anzeigen könnte, dass das Pixel an einer entsprechenden Stelle in dem Zielbereich inaktiv ist. Es wird verstanden werden, dass diese Werte auch umgekehrt sein können, wobei '0' aktiv und '1' inaktiv anzeigt, ohne die Wirkung der Aktivmaske zu verändern. Es sei auch verstanden, dass die binäre Maske lediglich als ein veranschaulichendes Beispiel gedacht ist und nicht zur Beschränkung dieser Offenbarung dient. Jeder andere Mechanismus, der geeignet ist, um zwischen aktiven Pixeln und inaktiven Pixeln zu unterscheiden ist hierin ausdrücklich angedacht.
  • Um die Aktivmaske zu erzeugen kann das Aktivmaskenmodul 218 konfiguriert sein, Gruppierungen von Pixeln in dem Zielbereich, die konvergiert sind, als inaktive Bereiche zu identifizieren. In einigen Ausführungsformen kann das Aktivmaskenmodul 218, um diese Gruppierungen von Pixeln in dem Zielbereich, die konvergiert sind, zu identifizieren, konfiguriert sein, eine Kohärenzanalyse auf den Nächsten-Nachbarn-Feldern auszuführen, die von dem Flickenentsprechungssuchmodul 214 erzeugt wurden. In einer Ausführungsform beispielsweise kann für eine Koordinate (x, y) in dem Zielbereich die Kohärenz der Nächsten-Nachbarn-Felder der Nachbarn evaluiert werden, um zu bestimmen, ob das Pixel an der Stelle (x, y) in dem Zielbereich aktiv oder inaktiv ist. In einigen Ausführungsformen kann beispielsweise die Kohärenz der Nächsten-Nachbarn-Felder der diagonalen Nachbarn (beispielsweise (x – 1, y – 1), (x + 1, y – 1), (x – 1, y + 1) und (x + 1, y + 1)) evaluiert werden, wie in dem nachstehend angegebenen Pseudocode in Algorithmus 1 dargestellt. Wie in dem beispielhaften Pseudocode des Algorithmus 1 unten zu erkennen, wenn die Anzahl kohärenter Nachbarn 3 oder mehr ist, dann wird das Pixel an der Koordinate (x, y) als inaktiv markiert, andernfalls wird das Pixel an der Koordinate (x, y) als aktiv markiert. Es wird verstanden werden, dass der Wert von aktiv Schwellenwert von 3 von Algorithmus 1 lediglich beispielhaft gedacht ist und nicht als beschränkend behandelt werden soll. Als ein anderes Beispiel kann in einigen Ausführungsformen die Kohärenz der Nächsten-Nachbarn-Felder der unmittelbar angrenzenden Nachbarn (beispielsweise (x + 1, y), (x – 1, y), (x, y + 1) und (x, y – 1)) auf ähnliche Weise wie zuvor oben beschrieben evaluiert werden. Als ein anderes Beispiel können die Kohärenzen der Nächsten-Nachbarn-Felder der unmittelbar angrenzenden Nachbarn und der diagonalen Nachbarn gemeinsam auf ähnliche Weise wie zuvor oben beschrieben evaluiert werden. Es wird verstanden werden, dass die obigen Beispiele lediglich der Veranschaulichung dienen. Es gibt zahlreiche Weisen, um festzustellen, ob ein Pixel aktiv oder inaktiv ist, und diese Offenbarung soll nicht hinsichtlich der Weise beschränkt sein, wie ein Pixel als aktiv oder inaktiv bestimmt wird.
  • Figure DE102016011380A1_0002
  • in einigen Ausführungsformen kann das Aktivmaskenmodul 218 weiter konfiguriert sein, die inaktiven Bereiche zu erodieren, oder die aktiven Bereiche zu erweitern, indem diejenigen Pixel an der Kante der inaktiven Bereiche innerhalb der Aktivmaske aktiv gemacht werden. In derartigen Ausführungsformen kann die Flickengröße der Flickensynthesetechnik verwendet werden, um den Abstand in Pixeln, die von der Kante zu erodieren sind, zu bestimmen. Dies kann zum Beispiel berücksichtigen, wo Begrenzungen unterschiedlicher kohärenter Quellenflicken sich überlappen können. Es sei beispielsweise eine Flickenweite von 7 betrachtet. Ein Flicken, bei dem alle 49 (beispielsweise 7×7) Pixel mit ihren vier Nachbarn (beispielsweise diagonal oder direkt benachbart) kohärent sind, ist eine exakte Kopien von dessen nächsten Nachbarflicken in dem Quellbild (zum Beispiel Abstand = 0). Ein solcher Flicken sollte sich nicht mehr ändern, und daher kann der gesamte Flicken als inaktiv deklariert werden und der Suchprozess für diesen Flicken und der Abstimmungsprozess für die Farben der Pixel dieses Flickens können enden. Im Gegensatz dazu kann in einem solchen Beispiel für einen Flicken, welcher ein aktives Pixel in einem Abstand von 3 Pixeln, oder ungefähr ½ der Flickenbreite berührt, nicht garantiert werden, dass dieser bereits vollständig konvergiert ist, und dieser kann sich in der nächsten Iteration der Flickensynthesetechnik immer noch ändern. Als ein Ergebnis können die inaktiven Bereiche in der Aktivmaske um 3 Pixel erodiert werden in dem Bestreben, die inaktiven Bereiche in der Aktivmaske besser zu definieren, und diese Aktivmaske kann für den nächsten Such- und/oder Abstimmungsschritt verwendet werden.
  • Die von dem Aktivmaskenmodul 218 erzeugte Aktivmaske braucht nicht auf den Translationsbereich beschränkt sein. Wie hierin verwendet, bezieht sich der Translationsbereich auf Flicken, die nicht manipuliert wurden (beispielsweise mittels Rotation, Reflektion, Skalengröße, Perspektive und so weiter). Translation ist ein Begriff, der in der Geometrie häufig verwendet wird, um eine Funktion zu beschreiben, die ein Objekt um eine gewisse Distanz verschiebt. In dem Kontext der hierin beschriebenen Approximaler-Nächster-Nachbar-Suche bezieht sich die Translation speziell auf das Suchen nach einem neuen Kandidaten, der in einem gewissen horizontalen und vertikalen Abstand von einem gegebenen Punkt ist. Die kann gleichermaßen auf den Transformationsbereich angewandt werden, in welcher Flicken auf eine Weise manipuliert wurden. Es wird jedoch verstanden werden, dass wenn die Aktivmaske auf den Transformationsbereich angewandt wird, eine ähnliche bzw. gleiche Transformation auf die oben diskutierte Kohärenzanalyse angewandt würde. Wenn beispielsweise ein Quellenflicken um 90 Grad gedreht wurde, dann würde auch die oben diskutierte Kohärenzanalyse um 90 Grad gedreht werden müssen.
  • Nachdem die Aktivmaske erzeugt wurde, kann diese von dem Bildeditierwerk 212, dem Flickenentsprechungssuchmodul 214 und/oder dem Abstimmungsmodul 216 verwendet werden, um die weitere Verarbeitung der inaktiven Pixel zu beschränken, welche von der Aktivmaske identifiziert werden, und dadurch die Anzahl an Berechnungen zu reduzieren, die in der Flickensynthesetechnik ausgeführt werden. Als solches kann jede dieser Komponenten konfiguriert sein, die Aktivmaske in der oben beschriebenen Verarbeitung mit Bezug auf jede dieser Komponenten zu verwenden. In einigen Ausführungsformen könnte die Aktivmaske verwendet werden, um ein Abstimmen bzw. Voting für diejenigen Pixel zu verhindern, die durch die Aktivmaske als inaktiv angezeigt werden. in anderen Ausführungsformen kann eine Aktivmaske von einer vorherigen Iteration der Flickensynthesetechnik verwendet werden, um zu verhindern, dass die Approximaler-Nächster-Nachbar-Suche ausgeführt wird. In nochmals anderen Ausführungsformen kann eine Aktivmaske sogar hochgesampelt werden, um als eine anfängliche Aktivmaske für die nächsthöhere Stufe verwendet zu werden. Ein solches Szenario wird in größerem Detail mit Bezug auf Block 420 der 4 unten beschrieben. In einigen Ausführungsformen kann die Aktivmaske für jede Iteration bei jeder Stufe der Flickensynthesetechnik erzeugt werden. In anderen Ausführungsformen kann die Aktivmaske für bestimmte Iterationen innerhalb der Flickensynthesetechnik verwendet werden. Beispielsweise nimmt der Gewinn, der dadurch erzielt wird, dass die Aktivmaske dazu verwendet wird, die weitere Verarbeitung von inaktiven Pixeln zu begrenzen, auf den letzten wenigen feineren Stufen zu, wo der Hauptteil der Verarbeitungszeit anfällt. Als solches könnte die Aktivmaske lediglich in diesen letzten feineren Stufen verwendet werden.
  • Sobald Bildeditierwerk 212 die Bildeditiertechnik beendet hat, kann das resultierende synthetisierte Digitalbild 220 ausgegeben werden (beispielsweise an eine Anzeige, einen Drucker und so weiter). Einige nichtbeschränkende Beispiele, die von einer hierin beschriebenen Technik profitieren können, welche eine Aktivmaske verwenden, um die Verarbeitung zu reduzieren, beinhalten: Bildvervollständigung, Bildumschichtung, Bildtextursynthese, Bild-Retargeting, Bildverzerrung, Bildüberblendung, Bildtexturinterpolation, Bildharmonisierung, Bildstiltransfer, Textur nach Zahlen, oder eine andere digitale Bildeditiertechnik, welche ein Nächste-Nachbarn-Feld manipuliert. Es wird verstanden werden, dass während die obigen Ausführungen digitale Bildeditiertechniken behandeln, die hierin diskutierten Ausführungsformen auch auf Raum-Zeit erweitert werden könnten, um auf Videoanwendungen angewandt zu werden. Als solches könnten die hierin diskutierten Ausführungsformen erweitert werden auf Videovervollständigung, Videoumschichtung, Video-Retargeting, Videoverzerrung, Videoüberblenden, Videotexturinterpolation, Videoharmonisierung, Videostiltransfer, Video-Textur nach Zahlen oder jeder andere Videoeditierprozess, welcher das Manipulieren eines Nächste-Nachbarn-Feldes beinhaltet. Die Erweiterung der Beschreibungen hierin auf diese Videoeditiertechniken wird einem Fachmann unmittelbar verständlich sein.
  • 3 zeigt einen Prozessablauf 300, der eine beispielhafte Flickensynthesetechnik in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung darstellt. Der Prozessablauf 300 könnte beispielsweise von dem Grafikeditor 202 der 2 ausgeführt werden. Wie dargestellt, kann der Prozessfluss 300 bei Block 302 beginnen, wo ein Digitalbild (beispielsweise das Digitalbild 204 der 2) empfangen wird. Bei Block 304 kann ebenfalls eine Angabe eines Zielbereichs des digitalen Bildes empfangen werden, von dem ein Benutzer wünscht, dass er synthetisiert wird. In Ausführungsformen könnte eine solche Angabe eine Auswahl eines Zielbereichs sein (beispielsweise mittels der GUI 206 der 2), von dem der Benutzer wünscht, dass er aus einem Quellbereich synthetisiert wird. Beispielsweise könnte der Benutzer ein Objekt identifizieren, das der Benutzer aus dem Digitalbild entfernen möchte unter Verwendung eines Bildvervollständigungsprozesses, oder einen Teil des digitalen Bildes identifizieren, den der Benutzer an eine andere Stelle in dem Digitalbild bewegen möchte unter Verwendung eines Bildumschichtungsprozesses.
  • In einigen Ausführungsformen kann die Flickensynthesetechnik in einer Mehrauflösungsweise ausgeführt werden. In einer Mehrauflösungsweise mag die Verarbeitung mit einem Bild in niedriger Auflösung beginnen und kann die Auflösung während der Flickensynthesetechnik erhöhen, bis eine ursprüngliche Auflösung des digitalen Bildes erreicht wird. Als solches kann bei Block 306 die Auflösung des Bildes von einer ursprünglichen Auflösung heruntergesampelt werden zu einer vordefinierten Auflösung in Vorschau auf die weitere Verarbeitung.
  • Eine iterative Suche kann bei Block 310 ausgeführt werden, um für jeden Zielflicken in dem ausgewählten Zielbereich (beispielsweise die Zielflicken 110a110d der 1) den nächsten bzw. nächstkommenden, oder ähnlichsten, Quellenflicken (beispielsweise die Quellenflicken 108a108d der 1) in einem Quellbereich des digitalen Bildes aufzufinden. In Ausführungsformen kann diese iterative Suche die Form einer Approximaler-Nächster-Nachbar-Suche annehmen, die im Detail mit Bezug auf 2 und 4 diskutiert wird.
  • Bei Block 312 kann basierend auf den Ergebnissen der iterativen Suche eine Aktivmaske erzeugt oder aktualisiert werden. Wie zuvor diskutiert unterscheidet eine Aktivmaske zwischen denjenigen Pixeln in einem Zielbereich, die noch konvergieren müssen und daher noch aktiv sind, und denjenigen Pixeln in dem Zielbereich, die konvergiert sind und daher nicht mehr aktiv sind. Um die Aktivmaske zu erzeugen können die Pixel in dem Zielbereich analysiert werden, um Gruppierungen von Pixeln zu bestimmen, die konvergiert sind (beispielsweise mittels der mit Bezug auf 1 oben diskutierten Kohärenzanalyse). Es wird verstanden werden, dass nicht für jede Iteration des Prozessflusses 300 eine Aktivmaske erzeugt oder aktualisiert zu werden braucht. Als solches kann der Block 312 für einige Iterationen übersprungen oder ausgelassen werden, und für andere implementiert sein. Das Erzeugen einer Aktivmaske wird extensiv mit Bezug auf 1 und 5 diskutiert.
  • Basierend auf den Ergebnissen der iterativen Suche kann bei Block 314 ein Abstimmungsprozess ausgeführt werden, um eine Farbe für jedes Pixel in dem Zielbereich zu bestimmen. Dies kann mittels einer Mischoperation bewerkstelligt werden, welche die Quellenflicken berücksichtigt, die jedes Pixel überlappen, um jedem einzelnen Pixel eine Farbe zuzuweisen. In einigen Ausführungsformen könnte diese Mischoperation eine gewichtete Mischoperation sein, in welcher eine gewichtete Summe aller überlappenden Flicken aus dem Nächsten-Nachbarn-Feld verwendet wird, um zu einer finalen Farbe für jedes Pixel zu gelangen. In Iterationen, in denen bei Block 312 eine Aktivmaske erzeugt wurde, kann der Abstimmungsprozess auch diejenigen Pixel berücksichtigen, welche von der Aktivmaske als inaktiv angezeigt sind. Als solches würde der Abstimmungsprozess diejenigen Pixel in dem Zielbereich ignorieren, die von der Aktivmaske als inaktiv angezeigt werden, wodurch die Verarbeitungskosten, die mit diesen inaktiven Pixeln assoziiert sind, eliminiert werden.
  • Bei Block 316, wenn bei der gegenwärtigen Größenstufe weitere Iterationen auszuführen sind, dann kehrt der Prozess zum Block 310 zurück, wo der oben beschriebene Prozess wiederholt wird. In einigen Ausführungsformen kann, wenn eine Aktivmaske in einer Iteration erzeugt wurde, diese Aktivmaske im Block 310 in der nächsten Iteration wiederverwendet werden. In solchen Ausführungsformen würde der iterative Suchprozess, der bei Block 310 ausgeführt wird, diejenigen Pixel in dem Zielbereich ignorieren, welche von der Aktivmaske als inaktiv angezeigt werden, wodurch die mit diesen inaktiven Pixeln assoziierten Verarbeitungskosten eliminiert werden.
  • Wenn bei der gegenwärtigen Größenstufe andererseits weitere Iterationen auszuführen sind, dann schreitet der Prozess vom Block 316 zum Block 318 weiter. Bei Block 318 schreitet wenn es weitere Größenstufen gibt, die zu verarbeiten sind, der Prozess zu Block 320 weiter, wo das Digitalbild auf die nächste Größenstufe hochgesampelt wird. In einigen Ausführungsformen kann die Aktivmaske auch bei Block 320 hochgesampelt werden. In einer solchen Ausführungsform wird das Nächste-Nachbarn-Feld der letzten Iteration hochgesampelt. Dies kann ein dedizierter Prozess sein, da ein invalides Pixel das Ergebnis der Abbildung Quelle/Ziel sein kann. Um jedoch einen zusätzlichen Gewinn aus der Aktivmaske zu erzielen mag es wünschenswert sein, die Fähigkeit beizubehalten, mit einer Aktivmaske für die erste Iteration zu beginnen, wenn wir von einer Größenstufe zur nächsten Größenstufe fortschreiten. Dies könnte besonders wichtig sein für die letzten wenigen Größenskalen, wo der Großteil des Rechenbudgets verbraucht werden mag. Als solches kann das aktuelle Nächste-Nachbarn-Feld hochgesampelt werden und aus diesem hochgesampelten Nächste-Nachbarn-Feld kann eine neue, oder aktualisierte, Aktivmaske erzeugt werden. Es sei auch verstanden, dass die Aktivmaske von der aktuellen Größenstufe verwendet werden kann, um die Verarbeitung zu reduzieren, die beim Hochsampeln des Bildes zur nächsten Größenstufe auftritt. Sobald das Digitalbild hochgesampelt ist, kehrt die Verarbeitung zum Block 310 zurück. Wenn keine weiteren Größenskalen verarbeitet werden müssen, dann kann die Verarbeitung zum Block 322 fortschreiten, wo ein finales Bild mit einem modifizieren, oder synthetisierten, Zielbereich ausgegeben werden kann (beispielsweise an eine Anzeige, einen Drucker und so weiter).
  • 4 zeigt einen Prozessablauf 400, der eine beispielhafte Approximaler-Nächster-Nachbar-Suche zeigt zum Finden einer Menge von Quellenflicken aus einem Quellbereich mit einem minimal möglichen Abstand von einer entsprechenden Menge von Zielflicken für den Zielbereich, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung. Der Prozessfluss 400 könnte beispielsweise von dem Flickenentsprechungssuchmodul 214 der 2 ausgeführt werden. Wie gezeigt, kann der Prozessfluss 400 bei Block 402 beginnen, wo in der gezeigten Ausführungsform das Nächste-Nachbarn-Feld anfänglich auf zufällige Weise besetzt wird. In anderen Ausführungsformen könnte diese anfängliche Besetzung von einem Nächsten-Nachbarn-Feld von einer vorherigen Iteration (beispielsweise vom Prozess 300 der 3) abgeleitet werden, oder anderweitig besetzt werden mit einem anfänglichen Startpunkt für die Approximaler-Nächster-Nachbar-Suche. Eine zufällige Anfangsbesetzung ist in 6A gezeigt. Aus dieser anfänglichen Besetzung des Nächste-Nachbarn-Feldes kann bei Block 404 eine iterative Suche ausgeführt werden, um eine Menge von Flicken in dem Quellbereich aufzufinden, welche eine Verbesserung gegenüber der anfänglichen Besetzung des Nächste-Nachbarn-Feldes darstellt. In einigen Ausführungsformen kann diese iterative Suche zwei Phasen aufweisen. Die erste Phase ist eine Propagationsphase, oder lineare Suchphase, in der gute Lösungen (beispielsweise Quellenflicken und jeweilige Zielflicken mit einem relativ kleinen Abstand) für benachbarte Pixel in dem Zielbereich verbreitet werden können mittels einer linearen Suche (beispielsweise in Abtastzeilenreihenfolge oder entgegen der Abtastzeilenfolge). Eine solche Propagationsphase ist in 6B gezeigt. Die zweite Phase ist eine Zufallssuchphase, in der eine zufällige Flickensuche ausgeführt werden kann in konzentrischen Nachbarschaften über den Quellbereich, um zu bestimmen, ob einer dieser zufälligen Quellenflicken einen kleineren Abstand hat als der gegenwärtig ausgewählte Quellenflicken. Diese Zufallsphase kann vorteilhaft sein, um zu verhindern, dass die Approximaler-Nächster-Nachbar-Suche in Minima steckenbleibt. Eine solche Zufallsphase ist in 6C gezeigt.
  • Bei Block 406 wird eine Bestimmung gemacht, ob ein Nächste-Nachbarn-Feld von einer vorherigen Iteration verfügbar ist. Wenn ein Nächste-Nachbarn-Feld von einer vorherigen Iteration nicht verfügbar ist, dann schreitet die Verarbeitung weiter zu Block 410, wo das bei Block 404 erzeugte nächste Nachbarfeld gespeichert wird. Wenn andererseits ein Nächste-Nachbarn-Feld von einer vorherigen Iteration verfügbar ist, dann kann die Verarbeitung zu Block 408 fortschreiben, wo die Abbildung mit dem kleineren Abstand von jeder Stelle in dem aktuellen Nächste-Nachbarn-Feld und dem vorhergehenden Nächste-Nachbarn-Feld ausgewählt wird für jede Stelle in dem Nächste-Nachbarn-Feld. Die Verarbeitung kann dann zum Block 410 fortschreiten.
  • Bei Block 410 kann die bei Block 404 ausgeführte iterative Suche wiederholt werden, um zu versuchen, das Nächste-Nachbarn-Feld weiter zu verfeinern. Vom Block 410 kann der Prozessfluss zum Block 412 fortfahren, wo das Nächste-Nachbarn-Feld gespeichert wird. Es wird verstanden werden, dass im Prozessfluss 400 jedes Pixel in dem Zielbereich verarbeitet wird. Als solches kann in Ausführungsformen, in denen eine Aktivmaske verfügbar ist, der Prozessfluss 400 konfiguriert sein, die Verarbeitung derjenigen Pixel zu ignorieren, die von der Aktivmaske als inaktiv angezeigt werden, was Verarbeitungszeit einsparen und die Approximaler-Nächster-Nachbar-Suche beschleunigen kann.
  • 5 zeigt einen Prozessablauf 500, der eine beispielhafte Erzeugung einer Aktivmaske für einen Zielbereich zeigt, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung. Der Prozessfluss 500 könnte beispielsweise von dem Aktivmaskenmodul 218 der 2 ausgeführt werden. Wie gezeigt, kann der Prozessfluss 500 beim Block 502 beginnen, wo Teile des Zielbereichs als konvergiert identifiziert werden. In einigen Ausführungsformen kann eine Kohärenzanalyse, wie die mit Bezug auf 1 diskutierte, auf einem Nächste-Nachbarn-Feld des Zielbereichs ausgeführt werden, um diese Teile des Zielbereichs, die konvergiert sind, zu identifizieren.
  • Bei Block 504 kann die Aktivmaske besetzt werden basierend auf denjenigen Teilen des Zielbereichs, die als konvergiert bestimmt wurden. In einigen Ausführungsformen könnte dies beinhalten, eine zweidimensionale binäre Matrix, die für jedes Pixel in dem Zielbereich entweder einen Wert '1' oder einen Wert '0' hält. Die Werte '1' und '0' können verwendet werden, um zwischen denjenigen Pixeln, die in dem Zielbereich noch aktiv sind, und denjenigen Pixeln, die in dem Zielbereich inaktiv sind, zu unterscheiden. Es sei verstanden, dass die Binärmaske lediglich als ein veranschaulichendes Beispiel gedacht ist und nicht als diese Offenbarung beschränkend betrachtet werden soll. Jeder andere Mechanismus, der geeignet ist, um zwischen aktiven Pixeln und inaktiven Pixeln zu unterscheiden, ist hierin ausdrücklich angedacht.
  • Bei Block 506 können die inaktiven Bereiche der Aktivmaske erodiert werden, indem die Pixel an der Kante der inaktiven Bereiche in der Aktivmaske aktiv gemacht werden. In solchen Ausführungsformen kann die Größe eines Flickens einer Flickensynthesetechnik, die bei der Verarbeitung des Zielbereichs verwendet wird, verwendet werden, um den Abstand in Pixeln zu bestimmen, der von der Kante erodiert wird. Dies kann Fälle berücksichtigen, in denen Begrenzungen unterschiedlicher kohärenter Quellenflicken sich überlappen mögen. Es sei beispielsweise eine Flickenbreite von 7 betrachtet. Ein Flicken, dessen 49 Pixel (beispielsweise 7×7) kohärent mit ihren vier Nachbarn sind (beispielsweise diagonal oder unmittelbar angrenzend) ist garantiert eine exakte Kopie von dessen nächstem Nachbarflicken in dem Quellbild (beispielsweise Abstand = 0). Ein solcher Flicken sollte sich nicht mehr ändern, und daher kann der gesamte Flicken als inaktiv deklariert werden und ein weiterer Such- und/oder Abstimmungsprozesses für diesen Flicken kann aufhören. Andererseits kann in einem solchen Beispiel für einen Flicken, welcher ein aktives Pixel in einem Abstand von 3 Pixeln, oder ungefähr ½ der Flickenbreite, berührt, nicht garantiert werden, dass dieser bereits voll konvergiert ist, und dieser mag sich in der nächsten Iteration der Flickensynthesetechnik immer noch ändern. Als ein Ergebnis können die inaktiven Bereiche in der Aktivmaske um 3 Pixel erodiert werden in dem Bestreben, die inaktiven Bereiche in der Aktivmaske besser zu definieren, und diese Aktivmaske kann für den nächsten Suchschritt und/oder den nächsten Abstimmungsschritt verwendet werden.
  • 6A bis 6C zeigen illustrative Beispiele eines Suchprozesses, der als Teil einer Flickensynthesetechnik ausgeführt wird, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung. 6A zeigt eine Zufallsinitialisierungsphase eines Suchprozesses, um den Zielbereich 602 des Bildes A auszufüllen. Wie in 6A gezeigt, wurde das Nächste-Nachbarn-Feld für jeden der Zielflicken, die gemeinsam durch 604 repräsentiert werden, zufällig initialisiert, um auf die Quellenflicken 608a–c abzubilden, wie durch die Pfeile angezeigt, welche die verschiedenen Flicken verbinden. Diese Abbildungen können in einer oder in mehreren Iterationen einer Approximaler-Nächster-Nachbar-Suche verbessert werden, wovon ein Beispiel in 6B und 6C gezeigt ist.
  • In einigen Implementierungen kann eine Propagationsphase ausgeführt werden, wie in 6B gezeigt. Es sei beispielsweise angenommen, dass die Flicken 604 im Bild A jeweils auf die Flicken 608 im Bild B abgebildet wurden, wie durch die Pfeile angezeigt. Benachbarte Flicken von jedem der Flicken 604 können nun evaluiert werden, um zu bestimmen, welche Abbildungen diese haben, und ob eine dieser Abbildungen auf einen der Flicken 604 angewendet werden kann für ein besseres Ergebnis (beispielsweise kleinerer Abstand). In einigen Implementierungen kann ein Algorithmus die vier unmittelbar angrenzenden Pixel betrachten, oder alle Pixel in einer kreisförmigen oder quadratischen Nachbarschaft eines definierten Durchmessers (beispielsweise 2 oder 4), und/oder eine beliebige Untermenge der Pixel in einem festen Abstand zu dem Pixel, an dem Propagation auftritt, um nur einige Beispiele zu nennen. Der Begriff Propagation zeigt an, dass gute Abbildungen für einen Flicken zu benachbarten Flicken propagiert werden können, um deren Abbildungen zu verbessern. Wenn daher zum Beispiel ein lokales Maximum der Entsprechung in Abbildungen einer Nachbarschaft um den Flicken 604 herum existiert, kann dieses in der Propagationsphase erkannt werden.
  • In einigen Situationen mag die Propagationsphase die global beste Abbildung nicht finden und kann in Minima steckenbleiben. Eine Perturbation, wie eine Zufallssuchphase, kann daher verwendet werden, wie schematisch in 6C gezeigt. Hier werden die einzelnen Flicken, die durch 604 repräsentiert sind, anfänglich zum Beispiel auf 610 abgebildet, was aus der in 6C gezeigten Propagationsphase resultiert. Ein oder mehrere zufällig ausgewählte Flicken können dann evaluiert werden. Beispielsweise können in dem Bild B Flicken X, Y und Z zufällig ausgewählt werden. In einigen Implementierungen werden die Flicken X-Z so ausgewählt, dass sie einen zunehmend größeren oder kleineren Abstand von der Stelle des ursprünglichen Abbildungsziels in dem Bild B haben. Beispielsweise kann eine Zufallsverteilung verwendet werden, die nahe liegende Stellen (beispielsweise Flicken Y) und weiter entfernt liegende Stellen (beispielsweise Flicken Z) beinhaltet, wobei die Verteilung mittels einer Verteilungsfunktion größeres Gewicht auf Abstände von nahe liegenden Stellen legt, als diese von einer gleichförmigen Abtastung erhalten würden. Die Flicken X-Z können evaluiert werden, um zu bestimmen, ob einer dieser Flicken eine bessere Entsprechung (beispielsweise kleineren Abstand) mit dem Flicken 604 hat.
  • 7 ist eine visuelle Darstellung von Aspekten einer Iteration 700 einer Flickensynthesetechnik, wie der im Detail oben beschriebenen, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Erfindung. Wie gezeigt, wird die Flickensynthesetechnik auf dem Bild 702, das einen Zielbereich 704 aufweist, ausgeführt. Die Iteration 700 ist eine erste Iteration bei einer neuen Größenstufe. Bei 706 wird das anfängliche Nächste-Nachbarn-Feld für die gezeigte Iteration zufällig initialisiert. Eine solche zufällige Initialisierung ist in 6A gezeigt. Bei 708 wird eine iterative Suche mit zwei Phasen, einer linearen Phase und einer Zufallsphase, ausgeführt, um eine Verbesserung gegenüber dem zufällig zugewiesenen Nächster-Nachbar-Feld zu bewirken. Eine solche iterative Suche ist im Detail mit Bezug auf 2 und 4 beschrieben und in den 6B–C gezeigt. Bei 710 wird eine beste Lösung zwischen einem Nächste-Nachbarn-Feld von einer vorherigen Iteration 712 und dem Nächste-Nachbarn-Feld der aktuellen Iteration ausgewählt, mit der eine weitere iterative Suche ausgeführt wird. Bei 714 wird eine Aktivmaske erzeugt, wie im Detail oben beschrieben. Die schwarzen Bereiche der Aktivmaske spiegeln diejenigen Pixel wider, die anfänglich als inaktiv betrachtet werden, wohingegen die weißen Bereiche diejenigen Pixel widerspiegeln, die als aktiv betrachtet werden. Bei 716 werden die Kanten der schwarzen Bereiche der Aktivmaske erodiert (das heißt der inaktive Bereich wird erodiert). Bei 718 wird ein Abstimmungsprozess, wie der andernorts hierin beschriebene, auf denjenigen Pixeln ausgeführt, die in der Aktivmaske als aktiv angezeigt werden. Als solches werden diejenigen Pixel, die in der Aktivmaske als inaktiv angezeigt werden, in dem Abstimmungsprozess nicht verarbeitet und daher wird durch die Verwendung der Aktivmaske die Verarbeitungszeit reduziert.
  • 8 ist eine weitere visuelle Darstellung von Aspekten einer Iteration 800 einer Flickensynthesetechnik, wie der im Detail oben beschriebenen, in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Erfindung. Wie im Fall der 7 wird die Flickensynthesetechnik auf dem Bild 702 ausgeführt, das einen Zielbereich 704 aufweist. Der Klarheit halber sind das Bild 702 und der Zielbereich 704 nicht erneut in der 8 dargestellt. Die Iteration 800 zeigt eine zweite Iteration der Flickensynthesetechnik, die eine Aktivmaske 804 aus einer ersten Iteration bei einer neuen Größenstufe der Flickensynthesetechnik verwendet. Die in der Iteration 800 dargestellte Größenstufe ist eine größere Größenstufe als die in der Iteration 700 der 7 gezeigte. Bei 806 wird ein anfängliches Nächste-Nachbarn-Feld zufällig initialisiert. Eine solche zufällige Initialisierung ist in 6A gezeigt. Wie aus den glatten Bereichen des zufällig initialisierten Nächste-Nachbarn-Feldes gesehen werden kann, werden diejenigen Pixel, die innerhalb der inaktiven, schwarzen, Bereiche der Aktivmaske 804 liegen, bei 806 nicht verarbeitet. Bei 808 wird eine iterative Suche mit zwei Phasen, einer linearen Phase und einer Zufallsphase, ausgeführt, um eine Verbesserung gegenüber dem zufällig zugewiesenen Nächste-Nachbarn-Feld zu erzielen. Eine solche iterative Suche ist im Detail mit Bezug auf 2 und 4 beschrieben und in 6B–C bezeigt. Es sei verstanden, dass obwohl sie in dem gezeigten Bild nicht erkannt werden können, diejenigen Pixel, die innerhalb der inaktiven, schwarzen, Bereiche der Aktivmaske 804 lieben, bei 808 nicht verarbeitet werden. Bei 810 wird eine beste Lösung zwischen einem Nächste-Nachbarn-Feld von der vorhergehenden Iteration und dem Nächste-Nachbarn-Feld der aktuellen Iteration ausgewählt, wonach eine weitere iterative Suche ausgeführt wird. Wiederum sei verstanden, dass auch wenn sie in dem gezeigten Bild nicht erkannt werden können, diejenigen Pixel, die in den inaktiven, schwarzen, Bereichen der Aktivmaske 804 liegen bei 810 nicht verarbeitet werden. Bei 812 wird eine Aktivmaske für die aktuelle Iteration erzeugt. Wiederum spiegeln die schwarzen Bereiche der bei 812 erzeugten Aktivmaske diejenigen Pixel wider, die anfänglich als inaktiv betrachtet werden, wohingegen die weißen Bereiche diejenigen Pixel widerspiegeln, die als aktiv betrachtet werden. Bei 814 werden die Kanten der schwarzen Bereiche der bei 812 erzeugen Aktivmaske erodiert. Bei 816 wird ein Abstimmungsprozess, wie der andernorts hierin beschriebene, auf denjenigen Pixeln ausgeführt, die in der bei 812 erzeugen Aktivmaske als aktiv angezeigt werden. Als solches werden diejenigen Pixel, die in der Aktivmaske als inaktiv angezeigt werden, in dem Abstimmungsprozess nicht verarbeitet und daher wird unter Verwendung der Aktivmaske die Verarbeitungszeit reduziert.
  • Wie oben beschrieben, wurde die Aktivmaske 804 von einer vorherigen Iteration verwendet, um die Verarbeitung zu reduzieren, die in allen denjenigen Prozessen involviert ist, die ein einzelnes Sternchen haben, während die Aktivmaske von der aktuellen Iteration verwendet wird, um die Verarbeitung zu reduzieren, die in dem Abstimmungsprozess involviert ist, wie durch die Doppelsternchen gezeigt. Als solches werden die rechnerischen Einsparungen der Verwendung der Aktivmaske von jedem dieser Prozesse multipliziert. Auf der finalen Größenstufe einer solchen Flickensynthesetechnik kann die Anzahl an inaktiven Pixeln beispielsweise 70% der Pixel oder mehr sein. Das Verwenden einer Aktivmaske bei einer solchen Größenstufe könnte in einer rechnerischen Einsparung von 35% oder mehr allein auf einer solchen letzten Stufe resultieren. Während in jedem der Prozesse 806810 und 816 der Iteration 800 eine Aktivmaske verwendet wurde, wird verstanden werden, dass dies nicht notwendig ist und lediglich beispielhafte Prozesse zeigt, in denen eine Aktivmaske zu Zwecken rechnerischer Einsparungen verwendet werden können. Wird die Aktivmaske in selbst einem dieser Prozesse verwendet, wird dies in rechnerischen Einsparungen resultieren, und als solches kann einer oder können mehrere dieser Prozesse mit einer Aktivmaske verwendet werden.
  • Nachdem Ausführungsformen der vorliegenden Erfindung beschrieben wurden, wird eine bespielhafte Betriebsumgebung beschrieben, in welcher Ausführungsformen der vorliegenden Erfindung implementiert werden können, um einen allgemeinen Kontext für verschiedene Aspekte der vorliegenden Erfindung zu geben. Mit Bezug auf 9 ist eine beispielhafte Arbeitsumgebung zum Implementieren von Ausführungsformen der vorliegenden Erfindung gezeigt und allgemein als Rechnervorrichtung 900 bezeichnet. Die Rechnervorrichtung 900 ist lediglich ein Beispiel einer geeigneten Rechnerumgebung und ist nicht dazu gedacht, irgendeine Beschränkung hinsichtlich des Bereichs der Anwendung oder Funktionalität der Erfindung zu geben. Auch soll die Rechnervorrichtung 900 nicht so verstanden werden, dass sie eine Abhängigkeit oder ein Erfordernis hätte, die sich auf irgendeine dargestellte Komponente, oder Kombinationen davon, beziehen würde.
  • Ausführungsformen der Erfindung mögen im allgemeinen Kontext von Computerprogrammcode oder von einer Maschine verwendbaren Anweisungen beschrieben sein, einschließlich von einem Computer ausführbaren Anweisungen wie etwa Programmodule, welche von einem Computer oder einer anderen Maschine ausgeführt werden, wie etwa einem Smartphone oder einer andere handgehaltene Vorrichtung. Im Allgemeinen beziehen sich Programmodule, oder Werke, welche Routinen, Programme, Objekte, Komponenten, Datenstrukturen und so weiter beinhalten, auf Code, der bestimmte Aufgaben ausführt, oder bestimmte abstrakte Datentypen implementiert. Ausführungsformen der Erfindung können in einer Vielfalt von Systemkonfigurationen praktiziert werden, einschließlich handgehaltenen Vorrichtungen, Unterhaltungselektronikgeräten, Allzweckcomputer, spezialisiertere Computervorrichtungen und so weiter. Die Erfindung kann auch in verteilten Rechnerumgebungen praktiziert werden, worin Aufgaben von entfernten Verarbeitungsvorrichtungen ausgeführt werden, welche mittels einem Kommunikationsnetzwerk verbunden sind.
  • Mit Bezug auf 9 beinhaltet die Computervorrichtung 900 einen Bus 910, welcher direkt oder indirekt die folgenden Vorrichtungen koppelt: Speicher 912, einen oder mehrere Prozessoren 914, eine oder mehrere Präsentationskomponenten 916, Eingabe-/Ausgabe-(I/O)Anschlüsse 918, Eingabe-/Ausgabe-(I/O)Komponenten 920, und eine beispielhafte Stromversorgung 922. Der Bus 910 repräsentiert, was ein oder mehrere Busse sein können (wie etwa ein Adressbus, ein Datenbus, oder eine Kombination davon). Obwohl die verschiedenen Blöcke der 9 aus Gründen der Klarheit mit Linien gezeigt sind, ist es in der Realität oftmals nicht so klar, die verschiedenen Komponenten abzugrenzen, und die Linien wären metaphorisch eher grau und unscharf sein. So mag man zum Beispiel eine Darstellungskomponente, wie etwa eine Anzeigevorrichtung, als eine Eingabe-/Ausgabekomponente verstehen. Auch weisen Prozessoren allgemein Speicher in der Form von Cache auf. Wir erkennen an, dass dies in der Natur der Technik liegt, und wiederholen, dass das Diagramm der 9 lediglich eine beispielhafte Computervorrichtung veranschaulicht, die in Verbindung mit einer oder mit Ausführungsformen der vorliegenden Erfindung verwendet werden kann. Es wird keine Unterscheidung hinsichtlich solcher Kategorien wie „Arbeitsplatzrechner”, „Server”, „Laptop”, „handgehaltene Vorrichtung” und so weiter getroffen, da alle diese als innerhalb des Bereichs der 9 und dem Bezug auf „Computervorrichtung” gedacht sind.
  • Die Computervorrichtung 900 beinhaltet typischer Weise eine Vielfalt von computerlesbaren Medien. Computerlesbare Medien können alle Medien sein, auf welche die Computervorrichtung 900 zugreifen kann und beinhalten sowohl flüchtige als auch nichtflüchtige Medien, entfernbare und nicht entfernbare Medien. Zum Beispiel, und nicht als Beschränkung, können computerlesbare Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Computerspeichermedien beinhalten sowohl flüchtige als auch nichtflüchtige Medien, entfernbare und nicht entfernbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Information, wie beispielsweise computerlesbare Anweisungen, Datenstrukturen, Programmodule oder andere Daten, implementiert sind, umfassen. Computerspeichermedien beinhalten, ohne hierauf beschränkt zu sein, RAM, ROM, EEPROM, Flashspeicher oder eine andere Speichertechnologie, CD-ROM, DVDs oder andere optische Plattenspeicher, Magnetkassetten, Magnetbandspeicher oder andere magnetische Speichervorrichtungen, oder jedes andere Medium, das dazu verwendet werden kann, um die gewünschte Information zu speichern und auf das die Computervorrichtung 100 zugreifen kann. Computerspeichermedien umfassen keine Signale als solche.
  • Kommunikationsmedien verkörpern computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten typischer Weise in einem modulierten Datensignal, wie beispielsweise eine Trägerwelle oder einem anderen Transportmechanismus, und beinhalten jedes Informationsliefermedium. Der Begriff „moduliertes Datensignal” bedeutet ein Signal, bei dem eine oder mehrere Eigenschaften so gesetzt oder geändert werden, um Information in dem Signal zu kodieren. Als ein Beispiel, und nicht als Beschränkung, beinhalten Kommunikationsmedien drahtgebundene Medien, wie etwa ein drahtgebundenes Netzwerk oder direkt verdrahtete Verbindung, und drahtlose Medien, wie etwa akustische, HF, infrarote und andere drahtlose Medien. Kombinationen von beliebigen der obigen sollen auch in dem Bereich der computerlesbaren Medien enthalten sein.
  • Wie gezeigt, enthält der Speicher 912 Anweisungen 924. Die Anweisungen 924 sind konfiguriert, wenn sie von dem oder den Prozessor(en) 914 ausgeführt werden, die Rechnervorrichtung dazu zu veranlassen, beliebige der hierin beschriebenen Operationen auszuführen, in Bezug auf die oben diskutierten Figuren, oder um beliebige der hierin beschriebenen Probrammodule zu implementieren. Der Speicher kann entfernbar, nicht entfernbar oder eine Kombination dieser sein. Beispielhafte Hardwarevorrichtungen umfassen Halbleiterspeicher, Festplatten, optische Plattenlaufwerke und so weiter. Die Rechnervorrichtung 900 beinhaltet einen oder mehrere Prozessoren, welche Daten von verschiedenen Entitäten auslesen, wie dem Speicher 912 oder Eingabe-/Ausgabekomponenten 920. Die Präsentationskomponente(n) 916 präsentieren einem Benutzer oder einer anderen Vorrichtung Datenangaben. Beispielhafte Präsentationskomponenten beinhalten eine Anzeigevorrichtung, einen Lautsprecher, eine Druckerkomponente, eine Vibrationskomponente und so weiter.
  • Eingabe-/Ausgabeanschlüsse 918 ermöglichen der Computervorrichtung 900, logisch mit anderen Vorrichtungen verbunden zu werden, die Eingabe-/Ausgabekomponenten 920 beinhalten, von denen einige eingebaut sein können. Beispielhafte Komponenten beinhalten ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung und so weiter.
  • Die hierin präsentierten Ausführungsformen wurden mit Bezug auf bestimmte Ausführungsformen beschrieben, die in allen Aspekten lediglich veranschaulichend und nicht beschränkend gedacht sind. Den Fachleuten, an die sich die vorliegende Offenbarung richtet, werden alternative Ausführungsformen ersichtlich sein, ohne den Bereich der Offenbarung zu verlassen.
  • Aus dem Vorstehenden wird ersichtlich, dass diese Offenbarung gut geeignet ist, um alle Zwecke und Aufgaben zu erfüllen, die vorstehend dargelegt sind, zusammen mit anderen Vorteilen, die offenkundig und der Struktur inhärent sind.
  • Es sei verstanden, dass bestimmte Merkmale und Unterkombinationen nützlich sind und ohne Bezug auf andere Merkmale oder Unterkombinationen verwendet werden können. Dies ist angedacht von den und im Bereich der Ansprüche
  • In der vorstehenden detaillierten Beschreibung wird sich auf die beigefügten Zeichnungen gemacht, welche einen Bestandteil hiervon bilden, wobei über diese hinweg gleiche Bezugszeichen gleiche Teile bezeichnen, und in welchen Ausführungsformen veranschaulichend dargestellt sind, die verwirklicht werden können. Es sei verstanden, dass andere Ausführungsformen verwendet und strukturelle oder Logikänderungen gemacht werden können, ohne den Bereich der vorliegenden Offenbarung zu verlassen. Daher ist die vorstehende detaillierte Beschreibung nicht in beschränkendem Sinne zu verstehen und der Bereich von Ausführungsformen wird durch die beigefügten Ansprüche und deren Äquivalente definiert.
  • Verschiedene Aspekte der beispielhaften Ausführungsformen wurden unter Verwendung von Begriffen beschrieben, die von den Fachleuten üblicher Weise verwendet werden, um anderen Fachleuten den Inhalt ihrer Arbeit zu vermitteln. Es wird den Fachleuten jedoch offenkundig sein, dass andere Ausführungsformen mit lediglich einigen der beschriebenen Aspekte verwirklicht werden können. Aus Gründen der Erläuterung werden spezifische Zahlen, Materialien und Konfigurationen angegeben, um ein umfassendes Verständnis der beispielhaften Ausführungsformen zu verschaffen. Es wird einem Fachmann jedoch ersichtlich sein, dass andere Ausführungsformen ohne die spezifischen Details verwirklicht werden können. In anderen Fällen wurden wohlbekannte Merkmale ausgelassen oder vereinfacht, um die beispielhaften Ausführungsformen nicht zu verdunkeln.
  • Verschiedene Operationen wurden nacheinander als mehrere diskrete Operationen auf eine Weise beschrieben, welche dem Verständnis der beispielhaften Ausführungsformen am dienlichsten ist; die Reihenfolge der Beschreibung soll jedoch nicht so interpretiert werden, dass dies impliziert, dass diese Operationen notwendigerweise von der Reihenfolge abhängen. Insbesondere brauchen diese Operationen nicht in der Reihenfolge der Darstellung ausgeführt zu werden. Weiter sollen Beschreibungen von Operationen als separate Operationen nicht so interpretiert werden, dass dies verlangen würde, dass die Operationen notwendiger Weise unabhängig voneinander und/oder durch separate Entitäten ausgeführt werden müssen. Beschreibungen von Entitäten und/oder Modulen als separate Module soll ähnlich nicht so interpretiert werden, zu erfordern, dass die Module separat sind und/oder separate Operationen ausführen. In verschiedenen Ausführungsformen mögen gezeigte und/oder beschriebene Operationen, Entitäten, Daten und/oder Module zusammengefasst, in weitere Unterteile unterteilt und/oder ausgelassen sein.
  • Der Ausdruck „in einer Ausführungsform” wird wiederholt verwendet. Der Ausdruck bezieht sich allgemein nicht auf dieselbe Ausführungsform; er mag dies jedoch tun. Die Begriffe „umfassend”, „mit” und „beinhaltend” sind synonym, solange nicht der Kontext etwas anderes gebietet. Der Ausdruck „A/B” bedeutet „A oder B”. Der Ausdruck „A und/oder B” bedeutet „(A), (B), oder (A und B)”. Der Ausdruck „zumindest eines von A, B und C” bedeutet „(A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).

Claims (20)

  1. Ein oder mehrere computerlesbare Speichermedien, welche darauf gespeicherte Anweisungen umfassen, welche, wenn sie von einem oder mehreren Prozessoren (914) einer Rechnervorrichtung (900) ausgeführt werden, die Rechnervorrichtung (900) mit einem Grafikeditor (202) versehen zum: Empfangen einer Eingabe, welche einen Zielbereich (106) in einem Bild (104; 204; 702) identifiziert, der zu synthetisieren ist; Ausführen einer Flickensynthesetechnik zum Synthetisieren des Zielbereichs (106) basierend auf Teilen eines Quellbereichs, die durch die Flickensynthesetechnik identifiziert werden, wobei zumindest eine Iteration (700; 800) der Flickensynthesetechnik beinhaltet: Erzeugen (812) einer Aktivmaske (112; 804), welche einen oder mehrere Teile des Zielbereichs (106) als inaktiv anzeigt, wobei der eine oder die mehreren Teile aus Gruppierungen von Pixeln bestehen, die konvergiert sind, wobei zumindest ein Prozess der Flickensynthesetechnik den einen oder die mehreren Teile, die von der Aktivmaske (112; 804) als inaktiv angezeigt sind, für die zumindest eine Iteration (700; 800) der Flickensynthesetechnik ignoriert.
  2. Das eine oder die mehreren computerlesbaren Speichermedien nach Anspruch 1, wobei das Erzeugen (812) einer Aktivmaske (112; 804) weiter beinhaltet: Ausführen einer Kohärenzanalyse auf einzelnen Pixeln des Zielbereichs (106); und Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, basierend zumindest zum Teil auf der Kohärenzanalyse.
  3. Das eine oder die mehreren computerlesbaren Speichermedien nach Anspruch 2, wobei das Identifizieren von Gruppierungen von Pixeln, die konvergiert sind, auf einer bestimmten Kohärenz einer Menge von benachbarten Pixeln von jedem Pixel in den Gruppierungen von Pixeln basiert.
  4. Das eine oder die mehreren computerlesbaren Speichermedien nach einem der Ansprüche 2 oder 3, worin das Erzeugen (812) einer Aktivmaske (112; 804) weiter beinhaltet: Identifizieren von Gruppierungen von Pixeln, die potentiell konvergiert sind, basierend auf der Kohärenzanalyse, wobei das Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, weiter basiert auf einer Erosion der Gruppierungen von Pixeln, die potentiell konvergiert sind, um eine vorbestimmte Anzahl von Pixeln.
  5. Das eine oder die mehreren computerlesbaren Speichermedien nach Anspruch 4, wobei die vorbestimmte Anzahl von Pixeln auf einer Flickengröße basiert, die in der Flickensynthesetechnik verwendet wird.
  6. Das eine oder die mehreren computerlesbaren Speichermedien nach einem der vorstehenden Ansprüche, wobei das Ausführen einer Flickensynthesetechnik beinhaltet: Ausführen eines Approximaler-Nächster-Nachbar-Suchprozesses, um die Teile des Quellbereichs zu identifizieren, die beim Synthetisieren des Zielbereichs (106) zu verwenden sind; und Ausführen eines Abstimmungsprozesses, basierend auf den identifizierten Teilen des Quellbereichs, um Farben für einzelne Pixel in dem Zielbereich (106) zu erzeugen.
  7. Das eine oder die mehreren computerlesbaren Speichermedien nach Anspruch 6, wobei der zumindest eine Prozess der Flickensynthesetechnik, der den einen oder die mehreren Teile ignoriert, die durch die Aktivmaske (112; 804) als inaktiv angezeigt werden, den Abstimmungsprozess beinhaltet.
  8. Das eine oder die mehreren computerlesbaren Speichermedien nach einem der Ansprüche 6 oder 7, wobei die zumindest eine Iteration (700; 800) der Flickensynthesetechnik eine Aktivmaske (112; 804) aus einer vorhergehenden Iteration (712) der Flickensynthesetechnik verwendet, und wobei das Ausführen des Approximaler-Nächster-Nachbar-Suchprozesses diejenigen Pixel ignoriert, die als inaktiv identifiziert wurden in der Aktivmaske (112; 804) von der vorhergehenden Iteration (712).
  9. Computerimplementiertes Verfahren zum Synthetisieren von digitalen Bildern (104; 204; 702), umfassend: Empfangen einer Eingabe, die einen Zielbereich (106) in einem Bild (104; 204; 702) identifiziert, der durch einen synthetisierten Bereich zu ersetzen ist; Ausführen einer Flickensynthesetechnik, um den Zielbereich (106) zu synthetisieren basierend auf Teilen eines Quellbereichs, welche durch die Flickensynthesetechnik identifiziert werden, wobei zumindest eine Iteration (700; 800) der Flickensynthesetechnik beinhaltet: Ausführen einer Kohärenzanalyse auf Pixeln in dem Zielbereich (106); und Erzeugen, basierend auf einem Ergebnis der Kohärenzanalyse, einer Aktivmaske (112; 804), die einen oder mehrere Teile des synthetisierten Bereichs als inaktiv anzeigt, wobei der eine oder die mehreren Teile aus Gruppierungen von Pixeln bestehen, die bestimmt wurden, konvergiert zu sein, wobei zumindest ein Prozess der Flickensynthesetechnik den einen oder die mehreren Teile, die von der Aktivmaske (112; 804) als inaktiv angezeigt sind, für zumindest eine Iteration (700; 800) der Flickensynthesetechnik ignoriert.
  10. Computerimplementiertes Verfahren nach Anspruch 9, weiter umfassend: Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, basierend auf einer bestimmten Kohärenz einer Menge von benachbarten Pixeln von jedem Pixel in den Gruppierungen von Pixeln.
  11. Computerimplementiertes Verfahren nach einem der Ansprüche 9 oder 10, wobei das Erzeugen (812) einer Aktivmaske (112; 804) weiter beinhaltet: Identifizieren von Gruppierungen von Pixeln, die potentiell konvergiert sind, basierend auf der Kohärenzanalyse; und Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, basierend auf einer Erosion der Gruppierungen von Pixeln, die potentiell konvergiert sind, um eine vorbestimmte Anzahl von Pixeln.
  12. Computerimplementiertes Verfahren nach einem der Ansprüche 9 bis 11, wobei das Ausführen einer Flickensynthesetechnik beinhaltet: Ausführen eines Approximaler-Nächster-Nachbar-Suchprozesses, um die Teile des Quellbereichs zu identifizieren, die beim Synthetisieren des Zielbereichs (106) zu verwenden sind; und Erzeugen, basierend auf den identifizierten Teilen des Quellbereichs, von Farben für einzelne Pixel in dem Zielbereich (106) durch einen Abstimmungsprozess.
  13. Computerimplementiertes Verfahren nach Anspruch 12, wobei der zumindest eine Prozess der Flickensynthesetechnik, welcher den einen oder die mehreren Teile ignoriert, welche von der Aktivmaske (112; 804) als inaktiv angezeigt werden, den Abstimmungsprozess beinhaltet.
  14. Computerimplementiertes Verfahren nach einem der Ansprüche 12 oder 13, wobei die zumindest eine Iteration (700; 800) der Flickensynthesetechnik eine Aktivmaske (112; 804) aus einer vorhergehenden Iteration (712) der Flickensynthesetechnik verwendet, und wobei das Ausführen des Approximaler-Nächster-Nachbar-Suchprozesses diejenigen Pixel ignoriert, welche in der Aktivmaske (112; 804) von der vorhergehenden Iteration (712) als inaktiv identifiziert sind.
  15. Rechnersystem zum Synthetisieren von digitalen Bildern (104; 204; 702), umfassend: einen oder mehrere Prozessoren (914); und ein oder mehrere computerlesbare Speichermedien, welche mit dem einen oder den mehreren Prozessoren (914) gekoppelt sind, welche darauf aufgezeichnete Anweisungen umfassen, welche, wenn sie von dem einen oder den mehreren Prozessoren (914) ausgeführt werden, das Rechnersystem mit einem Grafikeditor (202) versehen zum: Empfangen einer Eingabe, die einen Zielbereich (106) in einem Bild (104; 204; 702) identifiziert, der zu synthetisieren ist; Ausführen einer Flickensynthesetechnik zum Synthetisieren des Zielbereichs (106) basierend auf Teilen eines Quellbereichs, welche durch die Flickensynthesetechnik identifiziert werden, wobei zumindest eine Iteration (700; 800) der Flickensynthesetechnik beinhaltet: Erzeugen (812) einer Aktivmaske (112; 804), welche einen oder mehrere Teile des Zielbereichs (106) als inaktiv anzeigt, wobei der eine oder die mehreren Teile aus Gruppierungen von Pixeln bestehen, die konvergiert sind, wobei zumindest ein Prozess der Flickensynthesetechnik den einen oder die mehreren Teile, welche von der Aktivmaske (112; 804) als inaktiv angezeigt werden, für die zumindest eine Iteration (700; 800) der Flickensynthesetechnik ignoriert.
  16. Rechnersystem nach Anspruch 15, wobei das Erzeugen (812) einer Aktivmaske (112; 804) weiter beinhaltet: Ausführen einer Kohärenzanalyse auf einzelnen Pixeln des Zielbereichs (106); und Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, basierend zumindest zum Teil auf der Kohärenzanalyse.
  17. Rechnersystem nach Anspruch 16, wobei das Identifizieren von Gruppierungen von Pixeln, die konvergiert sind, auf einer bestimmten Kohärenz einer Menge von benachbarten Pixeln von jedem Pixel in den Gruppierungen von Pixeln basiert.
  18. Rechnersystem nach einem der Ansprüche 16 oder 17, wobei das Erzeugen (812) einer Aktivmaske (112; 804) weiter beinhaltet: Identifizieren von Gruppierungen von Pixeln, die potentiell konvergiert sind, basierend auf der Kohärenzanalyse, wobei das Identifizieren der Gruppierungen von Pixeln, die konvergiert sind, weiter auf einer Erosion der Gruppierungen von Pixeln, die potentiell konvergiert sind, um eine vorbestimmte Anzahl von Pixeln basiert.
  19. Rechnersystem nach einem der Ansprüche 15 bis 18, wobei das Ausführen einer Flickensynthesetechnik beinhaltet: Ausführen eines Approximaler-Nächster-Nachbar-Suchprozesses zum Identifizieren der Teile des Quellbereichs, die zum Synthetisieren des Zielbereichs (106) zu verwenden sind; und Ausführen eines Abstimmungsprozesses, basierend auf den identifizierten Teilen des Quellbereichs, um Farben für einzelne Pixel in dem Zielbereich (106) zu erzeugen, wobei der zumindest eine Prozess der Flickensynthesetechnik, welcher den einen oder die mehreren Teile ignoriert, welche durch die Aktivmaske (112; 804) als inaktiv angezeigt werden, den Abstimmungsprozess beinhaltet.
  20. Rechnersystem nach Anspruch 19, wobei die zumindest eine Iteration (700; 800) der Flickensynthesetechnik eine Aktivmaske (112; 804) von einer vorhergehenden Iteration (712) der Flickensynthesetechnik verwendet, und wobei das Ausführen des Approximaler-Nächster-Nachbar-Suchprozesses diejenigen Pixel ignoriert, welche in der Aktivmaske (112; 804) von der vorhergehenden Iteration (712) als inaktiv angezeigt werden.
DE102016011380.4A 2015-11-18 2016-09-20 Bildsynthese unter Verwendung einer Aktivmaske Pending DE102016011380A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/945,308 US9710898B2 (en) 2015-11-18 2015-11-18 Image synthesis utilizing an active mask
US14/945,308 2015-11-18

Publications (1)

Publication Number Publication Date
DE102016011380A1 true DE102016011380A1 (de) 2017-05-18

Family

ID=57234412

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016011380.4A Pending DE102016011380A1 (de) 2015-11-18 2016-09-20 Bildsynthese unter Verwendung einer Aktivmaske

Country Status (5)

Country Link
US (1) US9710898B2 (de)
CN (1) CN106709871B (de)
AU (1) AU2016225944B2 (de)
DE (1) DE102016011380A1 (de)
GB (1) GB2544590B (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10115032B2 (en) * 2015-11-04 2018-10-30 Nec Corporation Universal correspondence network
US9852523B2 (en) 2016-02-24 2017-12-26 Ondrej Jamri{hacek over (s)}ka Appearance transfer techniques maintaining temporal coherence
US9870638B2 (en) * 2016-02-24 2018-01-16 Ondrej Jamri{hacek over (s)}ka Appearance transfer techniques
US10558342B2 (en) * 2016-07-28 2020-02-11 Troy Plota Automated pixel shifting within a digital image
US10621469B2 (en) * 2016-07-28 2020-04-14 Troy Plota Automated pixel shifting within a video file
US10453253B2 (en) 2016-11-01 2019-10-22 Dg Holdings, Inc. Virtual asset map and index generation systems and methods
US10930086B2 (en) 2016-11-01 2021-02-23 Dg Holdings, Inc. Comparative virtual asset adjustment systems and methods
EP3649618A1 (de) 2017-07-03 2020-05-13 Artomatix Ltd. Systeme und verfahren zur bereitstellung von nichtparametrischer textursynthese beliebiger form und/oder materialdaten in einem einheitlichen rahmen
US10699453B2 (en) * 2017-08-17 2020-06-30 Adobe Inc. Digital media environment for style-aware patching in a digital image
US10614557B2 (en) 2017-10-16 2020-04-07 Adobe Inc. Digital image completion using deep learning
US10672164B2 (en) 2017-10-16 2020-06-02 Adobe Inc. Predicting patch displacement maps using a neural network
US11037019B2 (en) 2018-02-27 2021-06-15 Adobe Inc. Generating modified digital images by identifying digital image patch matches utilizing a Gaussian mixture model
US10586311B2 (en) * 2018-03-14 2020-03-10 Adobe Inc. Patch validity test
US10706509B2 (en) 2018-03-14 2020-07-07 Adobe Inc. Interactive system for automatically synthesizing a content-aware fill
US10755391B2 (en) 2018-05-15 2020-08-25 Adobe Inc. Digital image completion by learning generation and patch matching jointly
KR20200080926A (ko) 2018-12-27 2020-07-07 삼성전자주식회사 영상 처리 장치 및 그 영상 처리 방법
US10762680B1 (en) 2019-03-25 2020-09-01 Adobe Inc. Generating deterministic digital image matching patches utilizing a parallel wavefront search approach and hashed random number
CN110766625B (zh) * 2019-10-15 2022-04-19 中国科学院光电技术研究所 一种数字图像掩模的快速填充方法
US11449974B2 (en) 2019-11-08 2022-09-20 Adobe Inc. Generating modified digital images utilizing nearest neighbor fields from patch matching operations of alternate digital images
FR3106014A1 (fr) * 2020-01-02 2021-07-09 Orange Synthèse itérative de vues à partir de données d’une vidéo multi-vues

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7978906B2 (en) * 2007-06-14 2011-07-12 Microsoft Corporation Capturing long-range correlations in patch models
US8625927B2 (en) * 2010-10-27 2014-01-07 Adobe Systems Incorporated Image processing using image web
CN202172173U (zh) * 2011-06-29 2012-03-21 富士康(昆山)电脑接插件有限公司 电子卡连接器
US8861868B2 (en) * 2011-08-29 2014-10-14 Adobe-Systems Incorporated Patch-based synthesis techniques
US9374650B2 (en) * 2012-07-17 2016-06-21 Starkey Laboratories, Inc. System and method for embedding conductive traces into hearing assistance device housings
WO2014155913A1 (ja) 2013-03-25 2014-10-02 パナソニック株式会社 画像補間装置、画像処理装置および画像補間方法

Also Published As

Publication number Publication date
GB2544590B (en) 2019-10-09
US20170140514A1 (en) 2017-05-18
GB201615368D0 (en) 2016-10-26
AU2016225944B2 (en) 2021-04-01
CN106709871A (zh) 2017-05-24
AU2016225944A1 (en) 2017-06-01
GB2544590A (en) 2017-05-24
US9710898B2 (en) 2017-07-18
CN106709871B (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
DE102016011380A1 (de) Bildsynthese unter Verwendung einer Aktivmaske
EP2556490B1 (de) Erzeugung von bildpyramiden mit mehrfacher auflösung
EP2206089B1 (de) Verfahren und vorrichtung zum darstellen eines virtuellen objekts in einer realen umgebung
EP2206090B1 (de) Verfahren und vorrichtung zum darstellen eines virtuellen objekts in einer realen umgebung
US8547389B2 (en) Capturing image structure detail from a first image and color from a second image
US20040096120A1 (en) System and method for synthesis of bidirectional texture functions on arbitrary surfaces
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
US11288771B2 (en) Texture hallucination for large-scale image super-resolution
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102012210521A1 (de) Unbeschnittene Zeit- und Linsen-Begrenzungen für verbesserte Probentest- Effizienz bei Bild-Rendering
DE102015109559A1 (de) Zuweisen von primitiven zu kacheln in einem graphikverarbeitungssystem
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102018003475A1 (de) Formbasierte Grafiksuche
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
DE102018125472A1 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE602004012341T2 (de) Verfahren und System zur Bereitstellung einer Volumendarstellung eines dreidimensionalen Objektes
EP2528042B1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen
CN110046623B (zh) 一种图像特征点提取方法和相机
DE112021000927T5 (de) Systeme, Verfahren und Vorrichtungen für die Bildverarbeitung
Gupta et al. A robust and efficient image de-fencing approach using conditional generative adversarial networks
DE102019000178A1 (de) Interaktives System zum automatischen Synthetisieren einer contentsensitiven Füllung
DE102022213442A1 (de) Verfahren zur omnidirektionalen dense-regression für maschinelle wahrnehmungsaufgaben mittels verzerrungsfreiem cnn und sphärischer self-attention
DE102013114914A1 (de) Verfahren und System zur grafischen Darstellung unter Verwendung des Metropolis-Lichttransports mit Gradientenbereich
CN113256484A (zh) 一种对图像进行风格化处理的方法及装置
CN111626935B (zh) 像素图缩放方法、游戏内容生成方法及装置

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