DE102019005516A1 - Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung - Google Patents

Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung Download PDF

Info

Publication number
DE102019005516A1
DE102019005516A1 DE102019005516.0A DE102019005516A DE102019005516A1 DE 102019005516 A1 DE102019005516 A1 DE 102019005516A1 DE 102019005516 A DE102019005516 A DE 102019005516A DE 102019005516 A1 DE102019005516 A1 DE 102019005516A1
Authority
DE
Germany
Prior art keywords
video
movement
target area
pixel
target
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
DE102019005516.0A
Other languages
English (en)
Inventor
Geoffrey Oxholm
Elya Shechtman
Oliver Wang
Michael Lukac
Ramiz Sheikh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Adobe Inc filed Critical Adobe Inc
Publication of DE102019005516A1 publication Critical patent/DE102019005516A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/036Insert-editing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/265Mixing
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/215Motion-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/269Analysis of motion using gradient-based methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/485End-user interface for client configuration
    • H04N21/4854End-user interface for client configuration for modifying image parameters, e.g. image brightness, contrast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/272Means for inserting a foreground image in a background image, i.e. inlay, outlay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/87Regeneration of colour television signals
    • H04N9/873Regeneration of colour television signals for restoring the colour component sequence of the reproduced chrominance signal
    • 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/10016Video; Image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Analysis (AREA)
  • Television Signal Processing For Recording (AREA)
  • Processing Or Creating Images (AREA)

Abstract

Bestimmte Aspekte implizieren ein Videoinpainting mittels einer verlässlichkeitsgewichteten Bewegungsschätzung. Ein Videoeditor greift beispielsweise auf Videocontent zu, der einen Zielbereich aufweist, der in einem oder mehreren Videoframes modifiziert werden soll. Der Videoeditor berechnet eine Bewegung für eine Begrenzung des Zielbereiches. Der Videoeditor interpoliert aus der Begrenzungsbewegung eine Zielbewegung eines Zielpixels innerhalb des Zielbereiches. Bei der Interpolation steuern bzw. regeln Verlässlichkeitswerte, die Begrenzungspixeln zugewiesen sind, wie die Bewegung dieser Pixel zu der interpolierten Zielbewegung beiträgt. Ein Verlässlichkeitswert wird auf Grundlage einer Differenz zwischen einer Vorwärts- und einer Umkehrbewegung in Bezug auf ein bestimmtes Begrenzungspixel, einer Textur in einem Bereich, der das bestimmte Begrenzungspixel beinhaltet, oder einer Kombination hieraus berechnet. Der Videoeditor modifiziert den Zielbereich in dem Video, indem er Farbdaten des Zielpixels entsprechend der Zielbewegung, die aus der Begrenzungsbewegung interpoliert ist, aktualisiert.

Description

  • Verweis auf verwandte Anmeldungen
  • Die vorliegende Offenbarung beansprucht die Priorität der am 12. Oktober 2018 eingereichten vorläufigen US-Anmeldung Nr. 62/745,260 , die hiermit durch Verweis in Gänze mit aufgenommen wird.
  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft allgemein die automatische Verarbeitung von Videocontent für Videoabspielsysteme. Die vorliegende Offenbarung betrifft insbesondere, jedoch nicht im Sinne einer Beschränkung die Nutzung von verlässlichkeitsgewichteten Schätzungen einer Pixelbewegung innerhalb eines Zielbereiches eines Satzes von Videoframes zur Durchführung eines Videoinpainting (Videobildkorrektur) in Bezug auf den Zielbereich.
  • Hintergrund
  • Manche Videoeditierprogramme beinhalten Merkmale zum Ersetzen von Content in einem Zielbereich durch anderen gewünschten Content, so beispielsweise durch nutzerseitig bereitgestellten Content oder Content, der aus anderen Bereichen in dem Video kopiert oder hergeleitet ist. Bei einem Beispiel werden Videoinpaintingverfahren benutzt, um nutzerseitig spezifizierte, räumlich-zeitliche Löcher in einem Video unter Nutzung der übrigen Teile des Videos mit Content zu füllen. Videoinpainting wird bei verschiedenen Anwendungen benutzt, so beispielsweise unter anderen beim Entfernen eines unerwünschten Objektes, bei der Stabilisierung eines Videos, beim Entfernen von Logos oder Wasserzeichen in ausgestrahlten Videos, bei der Wiederherstellung von beschädigtem Filmcontent und dergleichen mehr.
  • Ein Beispiel für Videoinpainting impliziert das manuelle Editieren eines jeden Videoframes. Ein Videoeditor wird beispielsweise dafür benutzt, manuell Content aus einer „sauberen“ Version einer Szene, in der das zu entfernende Objekt fehlt, zu kopieren und eine Version der Szene mit dem Objekt zu editieren, um das Objekt durch Content aus der „sauberen“ Szene zu ersetzen. Diese Technik beruht jedoch auf der Verfügbarkeit einer „sauberen“ Version einer Szene. Ist eine „saubere“ Version einer Szene nicht verfügbar, so muss jedes Frame beispielsweise unter Nutzung eines Bildeditierwerkzeuges wie Adobe® Photoshop® editiert werden. Das manuelle Editieren mehrerer Videoframes kann zeitaufwändig und ungleichmäßig sein, und zwar beispielsweise dann, wenn die manuelle Editierung eines ersten Frames und eine separate manuelle Editierung eines anderen Frames auf Grundlage von Fehlern seitens des Nutzers, subjektiven Beurteilungen seitens des Nutzers und dergleichen mehr voneinander abweichen.
  • Ein weiteres Beispiel für die Videoinpaintingtechnik ist das Plane Tracking (Ebenenverfolgung). Ein Softwarewerkzeug, das Plane Tracking nutzt, verfolgt ein Rechteck mit Quellcontent und eine Fläche von Content zur Entfernung oder Modifizierung. Die Software platziert den Quellcontent über dem zu entfernenden oder zu modifizierenden Objekt. Das Plane Tracking erfordert jedoch, dass der Hintergrundcontent (beispielsweise Content hinter einem zu füllenden Loch oder einem zu ersetzenden Objekt) planar bzw. eben ist. Ist kein planarer bzw. ebener Content vorhanden, so kann das sich ergebende editierte Video Artefakte des entfernten Objektes beinhalten, oder es fehlt gegebenenfalls anderweitig die gewünschte Qualität.
  • Daher können bestehende Lösungen aus Gründen wie den vorstehend beschriebenen (jedoch nicht hierauf beschränkt) Nachteile mit sich bringen.
  • Zusammenfassung
  • Bestimmte Aspekte implizieren die Nutzung von verlässlichkeitsgewichteten Schätzungen einer Pixelbewegung innerhalb eines Zielbereiches eines Satzes von Videoframes zur Durchführung eines Inpainting in Bezug auf den Zielbereich über die Videoframes hinweg. Ein Videoeditor greift beispielsweise auf Videocontent zu, der einen Hinweis aufweist, der einen Zielbereich zur Modifizierung in einem oder mehreren Videoframes einer dargestellten Szene identifiziert. Der Videoeditor berechnet eine Bewegung für die Begrenzung des Zielbereiches. Der Videoeditor weist zudem Begrenzungspixeln Verlässlichkeitswerte zu. Ein bestimmter Verlässlichkeitswert wird auf Grundlage einer Differenz zwischen einer Vorwärts- und einer Umkehrbewegung in Bezug auf ein bestimmtes Begrenzungspixel, einer Textur in einem Bereich, die das bestimmte Begrenzungspixel beinhaltet, oder einer Kombination hieraus berechnet. Der Videoeditor interpoliert aus der Begrenzungsbewegung eine Zielbewegung eines Zielpixels innerhalb des Zielbereiches. Bei der Interpolation steuern bzw. regeln die zugewiesenen Verlässlichkeitswerte die Beiträge verschiedener Bewegungen für verschiedene Begrenzungspixel zu der interpolierten Bewegung. Der Videoeditor modifiziert den Zielbereich in dem Video, indem er Farbdaten des Zielpixels entsprechend der Zielbewegung, die aus der Begrenzungsbewegung interpoliert ist, aktualisiert.
  • Figurenliste
  • Merkmale, Aspekte und Vorteile der vorliegenden Offenbarung erschließen sich besser bei Betrachtung der nachfolgenden Detailbeschreibung und der begleitenden Zeichnung. Die Patent- oder Anmeldungsakte enthält wenigstens eine in Farbe ausgeführte Zeichnung. Kopien der Veröffentlichung des Patentes oder der Patentanmeldung mit der farbigen Zeichnung / den farbigen Zeichnungen werden auf Antrag und nach Zahlung der einschlägigen Gebühr vom Amt zur Verfügung gestellt.
    • 1 zeigt ein Beispiel für eine Videoverarbeitungsumgebung zum Videoinpainting mittels einer verlässlichkeitsgewichteten Bewegungsschätzung entsprechend bestimmten Aspekten der Offenbarung.
    • 2 zeigt ein Beispiel für das Modifizieren eines Videoframes zur Entfernung durch die Videoverarbeitungsumgebung von 1 unter Nutzung eines Videoinpainting entsprechend bestimmten Aspekten der vorliegenden Offenbarung.
    • 3 zeigt ein Beispiel für Videoframes, die einen Zielbereich und zugeordnete Begrenzungspixel aufweisen, die mit der in 1 dargestellten Videoverarbeitungsumgebung editiert werden können, entsprechend bestimmten Aspekten der vorliegenden Offenbarung.
    • 4 zeigt ein Beispiel für Bewegungsfelder, die aus den Videoframes in 3 berechnet werden, entsprechend bestimmten Aspekten der vorliegenden Offenbarung.
    • 5 zeigt ein Beispiel für eine Interpolationsbewegung aus den Bewegungsfeldern von 4 und das hierdurch erfolgende Aktualisieren eines Pixels eines Zielbereiches in einem Videoframe aus 3 entsprechend bestimmten Aspekten der vorliegenden Offenbarung.
    • 6 zeigt ein Beispiel für einen Prozess der Nutzung von verlässlichkeitsgewichteten Schätzungen einer Pixelbewegung innerhalb eines Zielbereiches eines Satzes von Videoframes zur Durchführung eines Inpainting in Bezug auf den Zielbereich über die Videoframes hinweg entsprechend bestimmten Aspekten der vorliegenden Offenbarung.
    • 7 zeigt ein Beispiel für ein Rechensystem zur Implementierung eines oder mehrerer Aspekte der vorliegenden Offenbarung.
  • Detailbeschreibung
  • Bestimmte Aspekte implizieren die Nutzung von verlässlichkeitsgewichteten Schätzungen einer Pixelbewegung entlang einer Begrenzung eines Zielbereiches in einem Satz von Videoframes zur Durchführung eines Videoinpainting in Bezug auf den Zielbereich. Ein Videoeditor unterstützt beispielsweise das Modifizieren eines Zielbereiches eines Videos, der Abschnitte von Videoframes beinhaltet, die ein zu entfernendes oder zu modifizierendes Objekt darstellen, unter Nutzung der berechneten Bewegung einer in dem Video dargestellten Szene, um Content zum Kopieren in den Zielbereich zu identifizieren. Eine derartige Berechnung einer Szenenbewegung beinhaltet ein vor dem Modifizieren des Zielbereiches erfolgendes Schätzen dessen, wie die Bewegung der Szene innerhalb des Zielbereiches aussehen würde, auf Grundlage der Bewegung anderer Pixel in der Szene, so beispielsweise der Bewegung von Begrenzungspixeln, die eine Begrenzung des Zielbereiches definieren. Der Videoeditor verbessert durch Implementieren bestimmter hier beschriebener Aspekte die Genauigkeit der Bewegungsschätzung, indem er bestimmten Pixeln Verlässlichkeitswerte zuweist, wobei ein Verlässlichkeitswert (confidence value) die Zuverlässigkeit einer Bewegungsberechnung in Bezug auf diese Pixel angibt. Bei einer Operation der Bewegungsschätzung, die von den Videoeditoren durchgeführt wird, haben Pixel mit einer zuverlässigeren Bewegungsberechnung größeren Einfluss auf das Schätzen der Bewegung innerhalb des Zielbereiches und umgekehrt.
  • Das nachfolgende nichtbeschränkende Beispiel ist angeführt, um bestimmte Aspekte einzuführen. Bei diesem Beispiel greift ein Videoeditor auf einen Satz von eine Szene darstellenden Videoframes, so beispielsweise auf ein eingegebenes Video, zu, das von einem Nutzer mittels des Videoeditors modifiziert wird. Die dargestellte Szene beinhaltet beispielsweise ein laufendes Fußballspiel wie auch einen Zuschauer, der die Sicht auf das Fußballspiel unterbricht, indem er vor die Kamera läuft. Der Satz von Videoframes beinhaltet einen Hinweis (oder ist einem solchen auf andere Weise zugeordnet), der einen Zielbereich zur Modifizierung in einem oder mehreren Videoframes, die die Szene umfassen, identifiziert. Der Videoeditor kann beispielsweise nutzerseitige Eingaben empfangen, die das Zuschauerobjekt in einem oder mehreren Videoframes identifizieren. Der Videoeditor kann diese Eingaben nutzen und das Zuschauerobjekt in dem Satz von Videoframes, die die Szene umfassen, mit einem Hinweis versehen.
  • Wiederum bei diesem Beispiel berechnet der Videoeditor eine Begrenzungsbewegung für eine Begrenzung des Zielbereiches innerhalb der Szene. Die Begrenzung beinhaltet Begrenzungspixel benachbart zu dem Zielbereich (beispielsweise zu dem Objekt „Zuschauer“) in einem Satz von Videoframes. Die Begrenzungsbewegung gibt an, wie sich Videocontent entlang der Begrenzung innerhalb der Szene bewegt, wenn die Videoframes durchlaufen. Stellt die Szene das Fußballspiel hinter dem Zuschauer dar, so können sich verschiedene Objekte, die das Fußballspiel (beispielsweise das Feld, die Spieler und dergleichen) umfassen, innerhalb der Szene infolge der Bewegung der Objekte selbst während der Aufnahme (beispielsweise bei einem Spieler, der das Feld hinunterläuft), der Bewegung der Kamera (beispielsweise infolge dessen, dass die Kamera von einem Ende des Feldes zum anderen schwenkt), der Änderung des Zooms an der Kamera oder einer Kombination hieraus bewegen. Der Videoeditor weist verschiedenen Begrenzungspixeln zudem Verlässlichkeitswerte zu. Ein bestimmter Verlässlichkeitswert kann angeben, ob eine für ein bestimmtes Begrenzungspixel berechnete Bewegung ausreichend zuverlässig ist, um eine Bewegung innerhalb eines Zielbereiches zu schätzen. Der Videoeditor kann die Verlässlichkeit beispielsweise auf Grundlage einer Differenz zwischen einer Vorwärts- und einer Umkehrbewegung in Bezug auf ein bestimmtes Begrenzungspixel, einer Textur in einem Bereich, die das bestimmte Begrenzungspixel beinhaltet, oder beidem berechnen.
  • Um bei diesem Beispiel das Objekt „Zuschauer“ zu entfernen, schätzt der Videoeditor die Bewegung innerhalb des Zielbereiches. Das Schätzen der Bewegung beinhaltet ein Interpolieren einer Zielbewegung innerhalb des Zielbereiches aus der für die Begrenzungspixel berechneten Begrenzungsbewegung. Daher ist die geschätzte Bewegung innerhalb des Zielbereiches eine Funktion der kombinierten Berechnungen der Bewegung für Begrenzungspixel. Ein bestimmter Verlässlichkeitswert eines bestimmten Begrenzungspixels steuert bzw. regelt den Beitrag der Bewegung jenes Begrenzungspixels zu der interpolierten Zielbewegung. Ist beispielsweise die berechnete Bewegung eines Begrenzungspixels unzuverlässig, so verringert ein jenem Begrenzungspixel zugeordneter Verlässlichkeitswert den Einfluss der berechneten Bewegung jenes Begrenzungspixels innerhalb der Funktion der kombinierten Berechnungen der Bewegung für Begrenzungspixel.
  • Der Videoeditor nutzt die interpolierte Bewegung zum Aktualisieren von Farbdaten von Zielpixeln innerhalb des Zielbereiches. Bei einem vereinfachten Beispiel folgt, wenn sich das bestimmte Objekt „Fußballspieler“ durch die Szene bewegt und sichtbar ist, bevor und nachdem das Objekt „Zuschauer“ die Szene unterbricht, die Bewegung des bestimmten Objektes „Fußballspieler“ einem Weg zwischen einem ersten Frame, in dem das Objekt „Fußballspieler“ sichtbar ist, zu einem zweiten Frame, in dem das Objekt „Fußballspieler“ von dem Objekt „Zuschauer“ verdeckt wird, wobei das erste Frame vor oder nach dem zweiten Frame auftreten kann. Die interpolierte Bewegung innerhalb des Zielbereiches ermöglicht, dass der Videoeditor schätzt, wo das Objekt „Fußballspieler“ innerhalb des Zielbereiches ist, das heißt, er ermöglicht, die Pixel, die den Fußballspieler darstellen, von dem ersten Frame zu ihrer erwarteten Position in dem zweiten Frame zu verfolgen. Der Videoeditor kann daher Farbdaten der Pixel, die den Fußballspieler darstellen, aus dem ersten Frame kopieren und Pixel des Zielbereiches in dem zweiten Frame derart aktualisieren, dass diese die kopierten Farbdaten beinhalten. Auf diese Weise ersetzt das Objekt „Fußballspieler“ das unterbrechende Objekt „Zuschauer“ in dem Video.
  • Verlässlichkeitswerte, die zum Schätzen der Bewegung innerhalb eines Zielbereiches benutzt werden, können auf beliebige geeignete Weise berechnet werden. Bei einigen Aspekten berechnet der Videoeditor Verlässlichkeitswerte wenigstens teilweise durch Bestimmen dessen, ob die Bewegung bestimmter Szenenpixel selbstkonsistent ist. Die berechnete Bewegung einer Begrenzung von dem Zeitstempel t1 zu tn (das heißt zeitlich vorwärts) soll die gleiche Größe und die entgegengesetzte Richtung wie die berechnete Bewegung der Begrenzung von dem Zeitstempel tn zu t1 (das heißt zeitlich rückwärts) aufweisen. Paare von zeitlich benachbarten Frames sollen daher in Bezug auf die Vorwärts- und die Umkehrbewegung konsistent sein. Der Videoeditor kann die Verlässlichkeit der Bewegungsdaten aus einem Begrenzungsbereich auf Grundlage dessen, wie konsistent die zeitlich vorwärtslaufende Bewegung in Bezug auf die zeitlich rückwärtslaufende Bewegung ist, vergrößern oder verkleinern. Bei zusätzlichen oder alternativen Aspekten berechnet der Videoeditor Verlässlichkeitswerte wenigstens teilweise durch Bewerten der Textur von Videocontent um den Zielbereich herum. Eine geringe Textur aufweisende Flächen können Bewegungsdaten aufweisen, die weniger zuverlässig als eine starke Textur aufweisende Flächen sind. Impliziert eine Szene beispielsweise, dass eine Kamera über klaren, blauen Himmel schwenkt, so kann die berechnete Bewegung für die Abschnitte des „Himmels“ der Szene (beispielsweise infolge der Abwesenheit einer Farbvariation von Frame zu Frame) eine sehr geringe Bewegung angeben, obwohl die schwenkende Kamera eine sich bewegende Szene aufgenommen hat. Der Videoeditor kann daher die Verlässlichkeit der Bewegungsdaten aus einem Bereich auf Grundlage dessen, wie viel Textur (beispielsweise Variation der Graustufenintensität) in dem Bereich vorhanden ist, vergrößern oder verkleinern.
  • Bestimmte Aspekte stellen Verbesserungen für Rechensysteme bereit, die zum Editieren von Videocontent benutzt werden. Wie vorstehend erwähnt worden ist, bringen bestehende Videoinpaintingtechniken beispielsweise oftmals manuelle zeitaufwändige Prozesse zur Entfernung oder Modifizierung von Zielobjekten mit sich, während bestehende automatisierte Prozesse, die weniger aufwändig sind, beim Ersetzen oder auf andere Weise erfolgenden Modifizieren von Objekten in einer Szene Artefakte oder andere Ungenauigkeiten einbringen können. Diese Probleme können durch verschiedene der hier beschriebenen Merkmale gelöst werden. Unter Nutzung von Verlässlichkeitswerten zum Verkleinern oder Vergrößern des Einflusses bestimmter Pixel auf eine Operation der Bewegungsinterpolation kann die Genauigkeit der interpolierten Bewegung und allgemeiner die Qualität der Operation des Inpainting durch Erstellen eines modifizierten Videos mit weniger oder gar keinen Artefakten vergrößert werden. Bei verschiedenen Beispielen beruhen bestimmte verlässlichkeitsbasierte Inpaintingtechniken, die hier beschrieben werden, nicht auf einer linearen Bewegung (das heißt auf einer Bewegung, die auf eine Ebene beschränkt ist) oder der Identifikation von Ebenen mittels einer Nutzereingabe. Daher können bestimmte hier beschriebene Aspekte Videoeditierprozesse mit einem höheren Grad der Genauigkeit als bestehende Techniken automatisieren.
  • Beispiel für eine Betriebsumgebung zum Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung
  • In der Zeichnung zeigt 1 ein Beispiel für eine Videoeditierumgebung 100 zum bewegungsbasierten Videoinpainting. Die Videoeditierumgebung 100 beinhaltet einen Satz von kommunikationstechnisch gekoppelten Komponenten. Diese Komponenten beinhalten einen Videoeditor 102, der auf einer oder mehreren Rechenvorrichtungen ausgeführt werden kann, eine Eingabevorrichtung 120, die zur Bereitstellung von Befehlen für den Videoeditor 102 benutzt werden kann, und eine Präsentationsvorrichtung 122, die einem Nutzer Videocontent anzeigt.
  • Der Videoeditor 102 beinhaltet Programmcode zum Anzeigen und Editieren von Videocontent. Beispiele für diesen Programmcode beinhalten Programmcode zur Wiedergabe von Content zur Anzeige, Programmcode zur Erstellung einer oder mehrerer Instanzen von Event Listeners oder anderer geeigneter Objekte zum Empfangen einer Eingabe von Eingabevorrichtungen (beispielsweise eine Maus, einen berührungsempfindlichen Schirm bzw. Touchscreen und dergleichen mehr), Programmcode zum Modifizieren von Farbinformation für Pixel in einem oder mehreren Frames von Videocontent und dergleichen mehr.
  • Bei dem in 1 dargestellten Beispiel beinhaltet der Videoeditor eine Verlässlichkeitsengine 104, eine Interpolationsengine 106 und eine Farbaktualisierungsengine 108. Die Verlässlichkeitsengine 104 beinhaltet Programmcode, der bei Ausführung durch verarbeitende Hardware eine oder mehrere Operationen des Berechnens eines oder mehrerer Maße der Verlässlichkeit von Bewegungsschätzungen, die von dem Videoeditor 102 durchgeführt werden, durchführt. Die Interpolationsengine 106 beinhaltet Programmcode, der bei Ausführung durch verarbeitende Hardware eine oder mehrere Operationen des Schätzens der Bewegung von Pixeln, die eine nutzerseitig spezifizierte, von Interesse seiende Fläche begrenzen, über einen Satz von Videoframes hinweg durchführt. Die Interpolationsengine 106 beinhaltet Programmcode, der bei Ausführung durch verarbeitende Hardware eine oder mehrere Operationen des Schätzens der Bewegung von Pixeln innerhalb der nutzerseitig spezifizierten, von Interesse seienden Fläche über einen Satz von Videoframes 112a-n hinweg durchführt. Die Farbaktualisierungsengine 108 beinhaltet Programmcode, der bei Ausführung durch verarbeitende Hardware eine oder mehrere Operationen des Modifizierens von Farbinformation innerhalb der nutzerseitig spezifizierten, von Interesse seienden Fläche auf Grundlage der geschätzten Bewegung durchführt.
  • Obwohl 1 einen Videoeditor 102 darstellt, der eine Verlässlichkeitsengine 104, eine Interpolationsengine 106 und eine Farbaktualisierungsengine 108 beinhaltet, sind auch andere Implementierungen möglich. Bei verschiedenen Aspekten kann beispielsweise auf eine oder mehrere der Engines verzichtet werden, es kann die Funktionalität von zwei oder mehr dieser Engines zu einer einzigen Softwareengine kombiniert werden, oder es sind eine oder mehrere dieser Engines in Software beinhaltet, die von dem Videoeditor 102 getrennt und in Kommunikation mit diesem ist.
  • Der Videoeditor 102 wird dafür benutzt, ein oder mehrere Objekte oder andere Merkmale in Videocontent unter Nutzung von verlässlichkeitsgewichteter Bewegungsinformation zu entfernen oder zu modifizieren (Ein Beispiel für eine Objektmodifizierung wird nachstehend anhand 2 erläutert, ein Beispiel für die Nutzung von Bewegungsinformation wird nachstehend anhand 3 bis 5 erläutert, und ein Beispiel für die Nutzung einer verlässlichkeitsgewichteten Bewegung wird nachstehend anhand 6 erläutert). Der Videocontent kann beispielsweise eine Sequenz von Videoframes 112a bis 112n beinhalten. Die Sequenz von Videoframes kann kollektiv eine Szene 110 umfassen. Beispiele für das Entfernen oder Modifizieren von Objekten oder anderen Merkmale beinhalten das Entfernen von Menschen oder großen Objekten (bei Farbabstufungen oder bei der Herstellung dreidimensionaler Filme), das Entfernen von dunklen Flächen in dem Video, die durch Staub auf der Linse der Kamera bedingt sind, das Entfernen von unerwünschten Objekten (Müll, versehentlich eingestelltes Element), das Entfernen von Logos (bei Stockvideos oder Kommerzialisierung), das Entfernen von ablenkenden Elementen (Etiketten, reflektierende Lichter und dergleichen), das Ändern des Aussehens einer Sache in einem Video durch Modifizieren nur eines Frames oder eines kleinen Satzes von Frames und dergleichen mehr.
  • Bei einem illustrativen Beispiel füllt der Videoeditor 102 einen Zielbereich, so beispielsweise einen Lochbereich, in einem Satz von Videoframes. Ein Lochbereich kann eine zusammenhängende Sammlung von Pixeln in dem Bild sein, die transparent oder halbtransparent sind. Bei diesem Beispiel empfängt der Videoeditor 102 von der Eingabevorrichtung 120 eine oder mehrere Nutzereingaben, die eine von Interesse seiende Fläche in einem oder mehreren der Videoframes 112a bis 112n spezifizieren. Ein oder mehrere Hinweise 114 sind Daten, die in dem Videocontent beinhaltet oder diesem zugeordnet sind, um die von Interesse seiende Fläche in dem Satz von Videoframes 112a bis 112n zu identifizieren. Bei einem Beispiel beinhalten Nutzereingaben das Zeichnen einer Grobmaske oder das Rotoskopieren an einem oder mehreren Frames, wobei das eine oder die mehreren Objekte, die von der Maske angegeben werden, über eine Sequenz von Frames (das heißt zeitabhängig) verfolgt werden. Der Videoeditor 102 wendet in Reaktion darauf, dass eine oder mehrere Befehlseingaben über die Eingabevorrichtung 120 empfangen werden, einen bewegungsbasierten Videoinpaintingprozess an, um Zielpixeldaten (beispielsweise Farbinformation) zu generieren oder auf andere Weise zu identifizieren. Die Zielpixeldaten werden zum Modifizieren der nutzerseitig spezifizierten von Interesse seienden Fläche benutzt. Insbesondere modifiziert der Videoeditor 102 Farbinformation von Pixeln in der von Interesse seienden Fläche, um die Zielpixeldaten aufzunehmen. Auf diese Weise generiert der Videoeditor 102 eine modifizierte Szene 116, die ein oder mehrere modifizierte Frames 118a bis 118n zur Anzeige an der Präsentationsvorrichtung 122 aufweist.
  • 2 zeigt ein Beispiel für die Nutzung der Videoeditierumgebung 100 bei der Entfernung eines Objektes aus einer Szene. Bei diesem Beispiel identifiziert der Videoeditor 102 auf Grundlage einer oder mehrerer Eingaben von der Eingabevorrichtung 120 ein Objekt, das aus der Szene entfernt werden soll. Der Videoeditor 102 oder eine andere geeignete Software können beispielsweise eine zeichnerische Eingabe empfangen, die einen oder mehrere Abschnitte eines Kamels, das in dem Frame 202 dargestellt ist, aus einem Video auswählt. Der Videoeditor 102 oder die andere geeignete Software weist auf das Frame 202 hin, um zu spezifizieren, dass das mittels der Nutzereingabe identifizierte Kamel entfernt werden soll, wie durch den kamelförmigen Lochbereich in dem mit einem Hinweis versehenen Frame 204 angegeben ist. Der Hinweis kann eine Maske oder auch andere Daten sein, die ein Zielobjekt von anderen Objekten in einem Frame segmentieren. Bei einigen Aspekten kann der Videoeditor die Identifikation eines Objektes in einem Frame einer Szene 110 auf andere Frames der Szene 110 (beispielsweise andere Frames, in denen das zu entfernende Kamel dargestellt ist) übertragen.
  • Bei einigen Aspekten führt die Farbaktualisierungsengine 108 eine Operation der Pixelersetzung oder eine andere Operation der Farbmodifikation in Bezug auf den Lochbereich durch, der in dem mit dem Hinweis versehenen Frame 204 angegeben ist. Die Farbaktualisierungsengine 108 kann beispielsweise ein oder mehrere Ersetzungsobjekte in der Szene identifizieren, die in einem oder mehreren Frames vor dem Frame 208, in einem oder mehreren Frames im Anschluss an das Frame 202 oder bei beidem dargestellt sind. Bei diesem Beispiel identifiziert die Farbaktualisierungsengine 108 Pixel, die in dem Zaunobjekt beinhaltet sind, das in der Szene dargestellt ist, wobei Frames vor und nach dem Frame 202 den Zaun darstellen, ohne dass das entfernte Kamel vor dem Zaun steht. Die interpolierte Bewegung, die von der Interpolationsengine 106 berechnet wird, ermöglicht, dass die Farbaktualisierungsengine 108 die Pixelfarbinformation in dem Lochbereich modifiziert und dabei ein konsistentes Aussehen der Ersetzungsobjekte zwischen Frames bewahrt.
  • Die Farbaktualisierungsengine 108 modifiziert Pixel innerhalb des Lochreiches dahingehend, dass diese die Farbinformation aus den identifizierten Pixeln, die in dem Zaunobjekt beinhaltet sind, aufweisen. Hierdurch generiert die Farbaktualisierungsengine 108 ein modifiziertes Frame 206, in dem das entfernte Kamel nicht mehr erscheint und der Lochbereich 204 modifiziert worden ist, um andere Szenenobjekte, die von dem Kamel in dem Frame 202 verdeckt worden sind, (beispielsweise ein Abschnitt des Zaunes, ein Abschnitt des Bodens und dergleichen mehr) darzustellen. Diese Vorgehensweise ist als „Dense Tracking“ („dichtes Verfolgen“) bekannt. Bei einigen Aspekten kann, wenn ein oder mehrere Objekte hinter dem entfernten Objekt in anderen Frames der Szene nicht dargestellt sind, der Videoeditor 102 einen contentsensitiven Füllalgorithmus benutzen, um zu erraten, was fehlt.
  • Wie vorstehend erwähnt worden ist, impliziert der bewegungsbasierte Videoinpaintingprozess die Nutzung der scheinbaren Bewegung einer Farbinformation von einem Pixel zu einem anderen über den Satz von Videoframes 112a bis 112n hinweg, um zu steuern bzw. zu regeln, wie die von Interesse seiende Fläche modifiziert wird. Der Videoeditor 102 nutzt beispielsweise verlässlichkeitsgewichtete Bestimmungen der Bewegung von Pixeln an der Begrenzung einer von Interesse seienden Fläche, um zu steuern bzw. zu regeln, welche Zielpixeldaten zur Aktualisierung der von Interesse seienden Fläche identifiziert oder generiert werden.
  • Beispiel für bewegungsbasiertes Inpainting eines Zielbereiches eines Videos
  • 3 bis 5 stellen ein vereinfachtes Beispiel dafür dar, dass ein Videoeditor 102 zur Durchführung einer bewegungsbasierten Modifikation eines Zielbereiches benutzt wird. Bei diesem Beispiel führt der Videoeditor 102 eine schnelle und robuste Bewegungsschätzung durch. Der Videoeditor 102 kann eine Bewegung innerhalb eines Zielbereiches unter Nutzung der Bewegung an der Begrenzung des Zielbereiches (beispielsweise an einem nutzerseitig spezifizierten Loch) schätzen. Hierzu kann der Videoeditor 102 eine optische Ablaufbewegung für ein gesamtes Frame berechnen. Der Videoeditor 102 kann sich auf die Bewegung der Pixel entlang der Begrenzung des Loches in jedem Frame konzentrieren. Die bewegungsbasierte Modifikation kann bei dem Beispiel von 2 benutzt werden, um das Zielkamel dadurch zu entfernen, dass die Bewegung eines Gebäudes oder anderer Strukturen, die in einer Szene hinter dem Kamel dargestellt sind, verfolgt wird, was das Aktualisieren des Lochbereiches mit Farbinformation aus geeigneten Pixeln (das heißt Pixel, die das Gebäude oder die anderen Strukturen darstellen) vereinfacht.
  • Bei dem vereinfachten Beispiel von 3 bis 5 greift der Videoeditor 102 auf ein Paar von Videoframes 112a und 112b, wie in 3 dargestellt ist, zu. Der Videocontent, der die Videoframes 112a und 112b beinhaltet, wird mit einem Hinweis versehen, um einen Zielbereich zu identifizieren. Der Zielbereich 306a in dem Videoframe 112a kann beispielsweise angeben, dass ein bestimmtes Objekt (beispielsweise das Kamel von 2) entfernt werden soll, während der Zielbereich 306b in dem Videoframe 112a angeben kann, dass dasselbe Objekt an einem anderen Ort innerhalb der Szene entfernt werden soll. Der Zielbereich wird durch einen Satz von Begrenzungspixeln begrenzt.
  • In 3 beinhaltet die Begrenzung die Begrenzungspixel 302a und 304a an entgegengesetzten bzw. gegenüberliegenden Seiten des Zielbereiches 306a in dem Videoframe 112a. Bei einem Beispiel kann das Begrenzungspixel 302a Teil eines Baumes sein, der in den Frames von 2 dargestellt ist, der Zielbereich 306a kann das Zielkamel sein, das in den Frames von 2 dargestellt ist, und das Begrenzungspixel 304a kann Teil eines Zaunes sein, der in den Frames von 2 dargestellt ist. Auf ähnliche Weise beinhaltet die Begrenzung in dem Videoframe 112b die Begrenzungspixel 302b und 304b (beispielsweise Pixel aus dem Baum und dem Zaun in 2 an verschiedenen Stellen) an entgegengesetzten bzw. gegenüberliegenden Seiten des Zielbereiches 306b (beispielsweise das Zielkamel in 2 an einer anderen Stelle).
  • 4 zeigt ein vereinfachtes Beispiel für eine interpolierte Bewegung innerhalb eines Zielbereiches auf Grundlage von Begrenzungspixeln. Bei diesem Beispiel berechnet der Videoeditor 102 ein Bewegungsfeld 402 für das Videoframe 112a auf Grundlage einer Analyse des Paares von Videoframes 112a und 112b. Die Bewegung des Bewegungspixels 302a ist als Vektor 404 dargestellt, der grafisch in 4 mittels eines Pfeiles in Richtung der durch den Vektor 404 spezifizierten Bewegung dargestellt ist. Auf ähnliche Weise ist die Bewegung des Begrenzungspixels 304a als Vektor 406 dargestellt, der grafisch in 4 mittels eines Pfeiles in der durch den Vektor 406 spezifizierten Richtung der Bewegung dargestellt ist. Da der Zielbereich 306a einem Objekt entspricht, das aus den Frames entfernt werden soll, ist das Bewegungsfeld 402 derart dargestellt, dass es eine „unbekannte“ Bewegung für ein Zielpixel innerhalb des Zielbereiches 306a beinhaltet. Bei diesem Beispiel ist die „unbekannte“ Bewegung eine unbekannte gewünschte Bewegung, das heißt eine Bewegung, die in dem Zielbereich berechnet worden wäre, wenn die Videoframes 112a und 112b aufgenommen worden wären, ohne dass das Zielobjekt entfernt worden wäre.
  • Die Interpolationsengine 106 berechnet auf Grundlage der Begrenzungsbewegung eine geschätzte Bewegung in Bezug auf den Zielbereich 306a. Jedes Begrenzungspixel ist einer jeweiligen Begrenzungsbewegung zugeordnet, die durch einen Vektor, so beispielsweise die Vektoren 404 und 406, dargestellt wird. Die Interpolationsengine 106 nutzt die Sammlung von Vektoren (beinhaltend die Vektoren 404 und 406), um eine geschätzte Bewegung für ein Zielpixel innerhalb des Zielbereiches 306a zu berechnen. Der Videoeditor 102 kann zudem Verlässlichkeitswerte für Bewegungswerte um die Begrenzung des Zielbereiches herum berechnen oder beziehen. Bei einigen Aspekten kann der Videoeditor 102 Verlässlichkeitswerte für Bewegungswerte innerhalb des Zielbereiches berechnen oder beziehen. Der Videoeditor 102 kann Verlässlichkeitswerte für die Bewegung um den Zielbereich herum und/oder innerhalb desselben nutzen, um die Bewegung innerhalb des Zielbereiches zu interpolieren. Beispiele für die Nutzung von Verlässlichkeitswerten zum Interpolieren einer Bewegung werden anhand 6 beschrieben. Die Interpolationsengine 106 generiert ein modifiziertes Bewegungsfeld 410, das einen Bewegungsvektor 412 für die geschätzte Bewegung beinhaltet, zusammen mit den Vektoren 404' und 406', wobei die Vektoren 404' von 406' dieselben wie die Vektoren 404 und 406 für die Begrenzungspixel 302a und 304a in dem Bewegungsfeld 402 sind.
  • Bei der sich ergebenden geschätzten Bewegung kann der Videoeditor 102 zeitabhängig Wege von Pixeln (oder spezieller von Objekten, die von den Pixeln umfasst sind) zwischen Orten außerhalb des Zielbereiches zu Orten innerhalb des Zielbereiches verfolgen. Hierdurch ermöglicht der Videoeditor 102, das Aussehen dieser Pixel unter Nutzung von Videoframes, in denen die Pixel nicht in dem Zielbereich befindlich sind, zu identifizieren oder zu bestimmen. 5 zeigt ein vereinfachtes Beispiel für das Modifizieren von Farbinformation eines Zielpixels innerhalb eines Zielbereiches auf Grundlage einer geschätzten Bewegung, die von der Interpolationsengine 106 berechnet wird. Bei diesem Beispiel hat die Farbaktualisierungsengine 108 den Bewegungsvektor 412 benutzt, um ein Zielpixel 504 zu einem modifizierten Zielbereich 502 zu addieren bzw. hinzuzufügen. Hierdurch „verfolgt“ die Farbaktualisierungsengine ein Pixel von einem Ort außerhalb des Zielbereiches zu einem Ort innerhalb des Zielbereiches.
  • Unter Nutzung des Beispiels von 2 kann ein „verfolgtes“ Pixel ein Abschnitt eines Baumobjektes sein, der von dem Zielkamelobjekt in den Videoframes 112a und 112b verdeckt wird, jedoch in einem oder mehreren Referenzframes sichtbar ist. Ein Referenzframe kann vor einem oder mehreren der Videoframes 112a und 112b, nach einem oder mehreren der Videoframes 112a und 112b oder beidem in der Sequenz befindlich sein. Bei einem vereinfachten Beispiel kann ein Pixel, das an einer Position (3, 1) in einem Referenzframe befindlich ist, eine braune Farbe aufweisen, das heißt Teil des braunen Zaunobjekts sein. Der Bewegungsvektor 412 gibt die Bewegung durch den Zielbereich an, der dem „Zaun“-Pixel zugeordnet worden wäre, wenn das Zaunobjekt nicht von dem Zielobjekt „Kamel“ in den Frames 112a und 112b verdeckt worden wäre. Der Bewegungsvektor 412 für dieses „Zaun“-Pixel kann beispielsweise eine Bewegung von 2 Pixeln nach unten und 3 Pixeln nach rechts angeben. Die Farbaktualisierungsengine 108 kann daher bestimmen, dass bei Nichtvorhandensein einer Verdeckung durch das „Kamel“-Objekt das „Zaun“-Pixel in dem Zielbereich des Videoframes 112a an der Position (1, 4) (das heißt 2 Pixel nach unten und 3 Pixel nach rechts von dem Ort (3, 1) aus) befindlich gewesen wäre. Die Farbaktualisierungsengine 108 kopiert daher Farbinformation aus dem Pixel, das an der Position (3, 1) in dem Referenzframe (das heißt dem „Zaun“-Pixel) befindlich ist, auf das Zielpixel 504, das an der Position (1, 4) in dem modifizierten Videoframe 118a befindlich ist.
  • Wird ein Pixel außerhalb des Loches nicht beobachtet, so kann der Videoeditor 102 ein contentsensitives Füllen für ein einzelnes Frame nutzen und diese Farbwerte sodann durch die Zeit weiterverbreiten. Bisweilen werden mehrere Frames benötigt. Bei einigen Ausführungsformen wird das Frame mit dem größten „ungesehenen Bereich“ als erstes gewählt. Der ungesehene Bereich wird mit einer contentsensitiven Füllung gefüllt und durch die Zeit weiterverbreitet. Sind ungesehene Bereiche weiterhin vorhanden, so kann der größte Bereich erneut gewählt werden. Dies wird wiederholt, bis alle Lochpixel gefüllt sind.
  • Bei dem in 3 bis 5 dargestellten Beispiel kann der Videoeditor 102 ein oder mehrere Verlässlichkeitsmaße nutzen, um die Interpolation der Bewegung, wie hier anhand 6 beschrieben wird, zu steuern bzw. zu regeln. Bei einigen Aspekten bestimmt der Videoeditor 102, ob die Bewegung an der Begrenzung des Zielbereiches selbstkonsistent ist. Diese Bestimmung impliziert das Vergleichen der zeitlich vorwärts laufenden Begrenzungsbewegung (beispielsweise von dem Videoframe 112a nach 112b) mit der zeitlich rückwärts laufenden Bewegung (beispielsweise von dem Videoframe 112b nach 112a). Weisen die Vorwärtsbewegung und die Rückwärtsbewegung dieselbe Größe, jedoch entgegengesetzte Richtungen (beispielsweise eine Vorwärtsbewegung von 4 Pixeln nach oben und eine Umkehrbewegung von 4 Pixeln nach unten) auf, so ist die Bewegung konsistent. Kleinere Differenzen zwischen der Vorwärtsbewegung und der Rückwärtsbewegung können einen höheren Grad der Konsistenz und umgekehrt angeben. Bei einem vereinfachten Beispiel kann der Videoeditor 102 Bewegungsdaten für eine bestimmte Sektion der Begrenzung weglassen, wenn die Bewegung unzureichend konsistent ist. Zusätzlich oder alternativ kann der Videoeditor 102 die Interpolation der Bewegung verbessern, indem er prüft, ob der Content um den Zielbereich herum eine ausreichende Textur enthält. Eine niedrige Textur aufweisende Flächen (wie ein Himmel) führen zu irreführenden Bewegungen, wobei der Videoeditor 102 die Interpolation durch Vernachlässigung derselben verbessern kann. Zusätzlich oder alternativ kann der Videoeditor 102 die Struktur aus der Bewegung (Structure from Motion, „SfM“) nutzen, um 3D-Punkte mit bekannter Bewegung, wenn diese durch das Loch hindurchlaufen, zu verfolgen. Die Bewegung von 3D-Objekten innerhalb des Loches wird vernachlässigt, und es können Hintergrundobjekte benutzt werden.
  • Beispiel für einen Prozess des Videoinpainting mittels einer verlässlichkeitsgewichteten Bewegungsschätzung
  • 6 zeigt ein Beispiel für einen Prozess 600 zum Durchführen eines bewegungsbasierten Videoinpaintings. Eine oder mehrere der anhand 1 bis 6 beschriebenen Operationen können dafür benutzt werden, einen Schritt zum Aktualisieren von Videocontent in einem Zielbereich auf Grundlage einer verlässlichkeitsgewichteten Bewegungsschätzung für den Zielbereich zu implementieren. Bei einigen Aspekten implementieren ein oder mehrere Rechenvorrichtungen die in 6 dargestellten Operationen durch Ausführen eines geeigneten Programmcodes (beispielsweise des Videoeditors 102, einer oder mehrerer der Engines, die in 1 dargestellt sind, und dergleichen mehr). Zu illustrativen Zwecken wird der Prozess 600 anhand bestimmter Beispiele, die in den Figuren dargestellt sind, beschrieben. Andere Implementierungen sind jedoch ebenfalls möglich.
  • Bei Block 602 impliziert der Prozess 600 ein Zugreifen auf eine Szene, die Videoframes beinhaltet. Der Videoeditor 102 kann beispielsweise auf Videocontent aus einer Datenspeichereinheit zugreifen. Die Datenspeichereinheit kann auf einer oder mehreren Ablagevorrichtungen, die über ein Datennetzwerk verfügbar sind, einer oder mehreren Ablagevorrichtungen, die mit einem Datenbus auf einer den Videoeditor 102 ausführenden Rechenvorrichtung verbunden sind, oder auf einer beliebigen Kombination hieraus befindlich sein.
  • Bei einem Beispiel greift der Videoeditor 102 auf Videocontent zu, der einen oder mehrere mit einem Hinweis versehene Zielbereiche Ω aufweist. Beispiele für einen mit einem Hinweis versehenen Zielbereich beinhalten ein Loch, das von einer oder mehreren Löscheingaben generiert wird, die über die Eingabevorrichtung 120 eingegeben werden, ein bestimmtes Zielobjekt zur Ersetzung (beispielsweise das in 2 dargestellte Kamel), das durch eine oder mehrere Auswahleingaben identifiziert wird, die über die Eingabevorrichtung 120 empfangen werden, ein bestimmtes Zielobjekt zur Modifizierung (beispielsweise durch Modifizieren des Aussehens eines Zielobjektes anstellen des Entfernens desselben), das durch eine oder mehrere Auswahleingaben identifiziert wird, die über die Eingabevorrichtung 120 empfangen werden, eine dunkle Fläche in der Szene, die durch Staub auf der Linse der zum Aufnehmen der Szene benutzten Kamera generiert wird, oder ein Schatten zur Entfernung. Der Videoeditor 102 wird dafür benutzt, einige oder alle Pixel in dem Loch mit Farbwerten zu modifizieren. Soll beispielsweise ein Objekt entfernt oder ein Loch gefüllt werden, so wird der Videoeditor benutzt, um Zielpixel in dem Zielbereich derart zu modifizieren, dass diese Farbinformation aufweisen, die sich bei der Aufnahme der Szene ohne das Objekt ergeben hätte.
  • Bei Block 604 impliziert der Prozess 600 ein Berechnen einer Begrenzungsbewegung für eine Begrenzung eines Zielbereiches, der durch einen der Szene zugeordneten Hinweis angegeben ist. Der Videoeditor 102 kann einen optischen Ablauf in Bezug auf einen Satz von Videoframes berechnen, die kollektiv eine Szene darstellen. Die Videoframes können beispielsweise in einem Eingabevideo I der Höhe H, der Breite W und der Anzahl von Frames L beinhaltet sein. Die Verlässlichkeitsengine 104 oder eine andere geeignete Engine des Videoeditors 102 berechnet einen Vorwärtsablauf U und einen Rückwärtsablauf V. Zur Berechnung der Bewegung zwischen dem Frame n und n + 1 berechnet die Verlässlichkeitsengine 104 oder die andere geeignete Engine des Videoeditors 102 den Ablauf (Bewegung) von der Zeit n bis zu der Zeit n + 1. Der Vorwärtsablauf an der Position (x, y, n) (das heißt ein Pixel an der Position (x, y) in einem Frame zu der Zeit n) ist durch U(x, y, n) = (dx, dy, + 1) gegeben, wodurch ein Ablaufvektor (dx, dy) von einem Punkt, der bei (x, y, n) befindlich ist, zu einem Punkt (x + dx, y + dy, n + 1) in dem Video / angegeben wird. Der Rückwärtsablauf an der Position (x, y, n) (das heißt ein Pixel an der Position (x, y) in dem Frame n) ist durch V(x, y, f) = (dx, dy, - 1) gegeben.
  • Bei diesem Beispiel ist eine Begrenzungsbewegung eine Bewegung in Bezug auf ein oder mehrere Pixel, die eine Begrenzung eines Zielbereiches definieren. Die Begrenzung kann beispielsweise der Satz von Pixeln benachbart zur Vereinigung (union) des Loches in einem Videoframe n und einem Videoframe n + 1 sein. Dieser Satz von Begrenzungspixeln kann Pixel beinhalten, die eine gewisse Gemeinsamkeit miteinander aufweisen und die zu wenigstens einem weiteren Pixel, das diese Gemeinsamkeit nicht teilt (beispielsweise zu Pixeln, die wenigstens eine bestimmte Farbinformation teilen und die keine gemeinsame Farbinformation in Bezug auf ein benachbartes Pixel in dem Zielbereich aufweisen) benachbart sind.
  • Bei Block 606 impliziert der Prozess 600, Begrenzungspixeln Verlässlichkeitswerte zuzuweisen. Wie nachstehend im Zusammenhang mit Block 608 erläutert wird, führt der Videoeditor 102 beispielsweise eine oder mehrere Operationen durch, die schätzen oder auf andere Weise bestimmen, welche Pixelbewegung in dem Zielbereich aufgetreten wäre, wenn der Zielbereich das gewünschte Aussehen gehabt hätte (wenn beispielsweise ein Loch gefüllt gewesen wäre, ein Zielobjekt entfernt gewesen wäre, das Aussehen eines Zielobjektes modifiziert gewesen wäre und dergleichen mehr). Dieser Schritt impliziert ein Berechnen der Verlässlichkeit der Bewegung an der Begrenzung des Loches. Die bei Block 606 berechneten Verlässlichkeitswerte steuern bzw. regeln die Rolle, die die verschiedenen Begrenzungspixelbewegungen bei der interpolierten Zielbewegung spielen. Bei einem Beispiel weist die Verlässlichkeitsengine 104 einem ersten Begrenzungspixel einen ersten Verlässlichkeitswert zu und weist einem zweiten Begrenzungspixel einen zweiten, höheren Verlässlichkeitswert zu. Da der zweite Verlässlichkeitswert größer als der erste Verlässlichkeitswert ist, hat die Bewegung des zweiten Begrenzungspixels, das den zweiten Verlässlichkeitswert aufweist, eine größere Wirkung auf die Schätzung der Bewegung innerhalb des Zielbereiches im Vergleich zur Bewegung des ersten Begrenzungspixels, das den ersten Verlässlichkeitswert aufweist.
  • Die Verlässlichkeitswerte können dafür benutzt werden zu steuern bzw. zu regeln, wie die beobachtete Bewegung von bestimmten Pixeln, die einem gegebenen Objekt außerhalb eines Zielbereiches (beispielsweise Begrenzungspixel) zugeordnet sind, genutzt wird, um eine nichtbeobachtete Bewegung innerhalb des Zielbereiches zu schätzen. Eine Bewegungsszene kann beispielsweise ein Zielobjekt darstellen, das entfernt werden soll, wobei ein anderes Objekt, das der Nutzer nicht entfernen will, verdeckt wird. Die Bewegung des verdeckten Objektes durch den Zielbereich wird gegebenenfalls als unbeobachtet betrachtet, da in den Frames, die das Zielobjekt darstellen, das sich vor dem zweiten Objekt bewegt, die Bewegung des verdeckten Objektes nicht dargestellt ist. Da die Bewegung des verdeckten Objektes unbeobachtet ist, führt die Interpolationsengine 106 eine Operation aus, die die Bewegung des verdeckten Objektes schätzt, indem sie die Bewegung an der Begrenzung Bi = (xi,yi) in den Zielbereich hinein interpoliert.
  • Eine einfache Herangehensweise an diese Interpolation kann gleiche Gewichtungen für die Begrenzungspixel einsetzen, sodass jeder Ablaufwert innerhalb des Zielbereiches durch den gesamten Satz von gleichen Begrenzungspixeln bestimmt wird. Dies bedeutet, dass die Bewegung eines beliebigen Pixels innerhalb des Loches j ∈ Ω = (xj,yj) folgendermaßen bestimmt sein kann: U ( x j , y j , n ) = f ( U ( B 1 ) , , U ( B k ) )
    Figure DE102019005516A1_0001
    Hierbei ist k die Anzahl von Begrenzungspixeln. Diese einfache Herangehensweise kann jedoch Pixeln, deren Bewegung an der Begrenzung unzuverlässig ist, eine unerwünschte Gewichtung verleihen. Eine unzuverlässige Bewegung kann beispielsweise infolge der Bewegung eines Schattenwurfes in der Szene, einer Bewegung von Bereichen mit geringer oder gar keiner Textur und dergleichen mehr auftreten. Die Verlässlichkeitsengine 104 kann eine Verlässlichkeit confidence(Bi) für jedes der Begrenzungspixel B1, ..., Bk, wodurch eine derartige Unzuverlässigkeit berücksichtigt wird, berechnen.
  • Bei einigen Aspekten berechnet die Verlässlichkeitsengine 104 einen kombinierten Verlässlichkeitswert confidence(Bi) für das i-te Begrenzungspixel (Bi) aus einer Kombination einer Konsistenzkomponente und einer Texturkomponente. Ein Beispiel für eine Formel des kombinierten Verlässlichkeitswertes ist confidence(Bi) = consistency(i) * texture(i). Bei anderen Aspekten berechnet die Verlässlichkeitsengine 104 einen Verlässlichkeitswert confidence(Bi) für das i-te Begrenzungspixel (Bi) aus einer Konsistenzkomponente ohne Texturkomponente. Beispiele für eine Formel dieses Verlässlichkeitswertes sind confidence(Bi) = consistency(i) und confidence(Bi) = g(consistency(i)), wobei g eine beliebige Funktion ist, die die Konsistenzkomponente als Eingabe nutzt. Bei anderen Aspekten berechnet die Verlässlichkeitsengine 104 einen Verlässlichkeitswert confidence(Bi) für das i-te Begrenzungspixel Bi aus einer Texturkomponente ohne Konsistenzkomponente. Beispiele für eine Formel dieses Verlässlichkeitswertes sind confidence(Bi) = texture(i) und confidence(Bi) = g(texture(i)), wobei g eine beliebige Funktion ist, die die Texturkomponente als Eingabe nutzt.
  • Bei einigen Aspekten wird der Verlässlichkeitswert wenigstens teilweise auf Grundlage einer Konsistenzkomponente berechnet. Für ein gegebenes Paar von Videoframes aus einem Satz von Videoframes 112a bis 112n berechnet die Verlässlichkeitsengine 104 einen optischen Vorwärtsablauf und einen optischen Rückwärtsartlauf des bestimmten Begrenzungspixels in Bezug auf das erste Videoframe und das zweite Videoframe. Eine Zunahme der Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf entspricht einer Abnahme des bestimmten Verlässlichkeitswertes. Die Verlässlichkeitsengine 104 wendet eine Sigmoidfunktion auf die Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf an
  • Bei einem Beispiel berechnet die Verlässlichkeitsengine 104 eine Konsistenzkomponente aus der Übereinstimmung (oder dem Fehlen derselben) zwischen dem Vorwärtsablauf U zu der Zeit n und dem Rückwärtsablauf V zu der Zeit n + 1. Die Verlässlichkeitsengine 104 berechnet beispielsweise die Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf durch Berechnen eines Abstandes von einer beobachteten Position des Pixels in dem ersten Videoframe und einer geschätzten Position eines Pixels aus der Berechnung durch (i) Anwenden des optischen Vorwärtsablaufes aus dem ersten Videoframe zu dem zweiten Videoframe und (ii) Anwenden des optischen Rückwärtsablaufes von dem zweiten Videoframe zu dem ersten Videoframe. Hierzu kann die Verlässlichkeitsengine 104 den Vorwärtsablauf U(xi, yi, n) = (dx, dy, 1) berechnen. Die Verlässlichkeitsengine 104 indexiert diesen Vorwärtsablauf zu dem Rückwärtsablauf V ( x i + d x , y i + d x , n + 1 ) = ( d x ^ , d y ^ , 1 ) .
    Figure DE102019005516A1_0002
    Die Verlässlichkeitsengine 108 kann den Rückwärtsablauf nutzen, um eine Position in dem Frame zu der Zeit n als ( x ^ i , y ^ i ) = ( x i + d x + d x ^ , y i + d y + d y ^ )
    Figure DE102019005516A1_0003

    zu berechnen. Ist der Ablauf vollkommen konsistent, so gelten d x = d x   ^  und  d y = d y ^ ,
    Figure DE102019005516A1_0004
    das heißt, der Vorwärts- und der Rückwärtsablauf sind entgegengesetzt. Gilt d x d x ^
    Figure DE102019005516A1_0005
    und/oder d y d y ^ ,
    Figure DE102019005516A1_0006
    so ist der Ablauf weniger zuverlässig. Zum Berechnen einer Konsistenzkomponente eines Verlässlichkeitswertes kann die Verlässlichkeitsengine 104 eine Sigmoidfunktion anwenden: i = ( d x + d x ^ ) 2 + ( d y + d y ^ ) 2 consistency ( i ) = e ( i 2 / σ c 2 )
    Figure DE102019005516A1_0007
    Bei diesem Beispiel ist der Term εi der Abstand (in Pixeln) zwischen dem Anfangspixel und dem Rundwegort (round-trip location) nach dem Verfolgen des Vorwärts- und Rückwärtsablaufes, während σc die Form der Energiefunktion steuert bzw. regelt. Bei einem Beispiel gilt σc = 0,5.
  • Bei einigen Aspekten beinhaltet ein bestimmter Verlässlichkeitswert für ein Begrenzungspixel die Ausgabe der Sigmoidfunktion (wenn beispielsweise nur die Konsistenz zur Berechnung der Verlässlichkeit benutzt wird). Bei zusätzlichen oder alternativen Aspekten wird ein bestimmter Verlässlichkeitswert für ein Begrenzungspixel aus der Ausgabe der Sigmoidfunktion hergeleitet (beispielsweise wenn eine Konsistenzkomponente mit irgendeiner anderen Komponente zur Berechnung der Verlässlichkeit kombiniert wird). Das Herleiten des bestimmten Verlässlichkeitswertes aus der Ausgabe der Sigmoidfunktion kann beispielsweise ein Multiplizieren der Ausgabe der Sigmoidfunktion mit einer texturbasierten Verlässlichkeit beinhalten, die aus der Textur in einem Fensterbereich berechnet ist, der ein bestimmtes Begrenzungspixel und bestimmte umgebende Pixel beinhaltet.
  • Bei zusätzlichen oder alternativen Aspekten wird der Zuverlässigkeitswert wenigstens teilweise auf Grundlage einer Texturkomponente berechnet. Bei einem Beispiel bestimmt die Verlässlichkeitsengine 104 die Texturkomponente auf Grundlage einer Varianz der Graustufenintensitätswerte in einem spezifizierten Fensterbereich um jedes Begrenzungspixel herum. Eine Zunahme der Textur entspricht einer Zunahme des bestimmten Verlässlichkeitswertes. Weist ein Block von Pixeln beispielsweise durchweg dieselbe Farbe auf, so ist keine Textur und keine Varianz des Aussehens vorhanden. Ein Fehlen der Textur oder ein niedriger Grad der Textur (das heißt eine geringe oder gar keine Varianz der Graustufenintensitätswerte) gibt an, dass der Ablauf unzuverlässig ist.
  • Bei einem Beispiel umfasst die Varianz der Intensitätswerte in dem Bereich eine Summation von Intensitätsdifferenzen, wobei jede Intensitätsdifferenz eine Differenz zwischen einer Graustufenintensität eines jeweiligen Pixels in dem Bereich und einer durchschnittlichen Graustufenintensität des Bereiches ist. Für einen gegebenen Fensterbereich mit dem Radius w kann die Verlässlichkeitsengine 104 die Varianz der Intensitätswerte um ein gegebenes Pixelbegrenzungspixel i herum beispielsweise folgendermaßen berechnen: variance i 2 = u = w w v = w w G ( ( x i + u , y i + v , n ) ) μ 2 w + 1 texture ( i ) = e { variance i 2 / σ t 2 }
    Figure DE102019005516A1_0008
    Bei diesem Beispiel ist µ die durchschnittliche Graustufenintensität in dem Fenster, G(x, y, n) ist die Graustufenintensität an der Position (x, y) und zu der Zeit n, und σt steuert bzw. regelt die Form der Energiefunktion. Bei einem Beispiel gilt σt = 0,125 (die Graustufenwerte sind zwischen 0,0 und 1,0) und w = 4, was zu einem 9x9-Pixelfenster führt.
  • Das vorstehend aufgeführte Beispiel impliziert eine Vorwärtstexturkomponente zum Berechnen von Verlässlichkeitswerten, wobei das Bewegungsfeld für ein gegebenes Frame n unter Nutzung von Verlässlichkeitswerten berechnet wird, die wenigstens teilweise durch Analysieren der Textur in dem Frame n generiert werden. Bei zusätzlichen oder alternativen Aspekten wird eine Rückwärtstexturkomponente zum Berechnen von Verlässlichkeitswerten benutzt. Bei diesen Aspekten kann die Verlässlichkeitsengine 104 die Rückwärtstexturkomponente unter Nutzung von Graustufenintensitätswerten in dem Frame n + 1 berechnen. Daher wird das Bewegungsfeld für ein gegebenes Frame n unter Nutzung von Verlässlichkeitswerten berechnet, die wenigstens teilweise durch eine Rückwärtstexturkomponente entsprechend der Textur in dem Frame n + 1 generiert werden.
  • Bei einigen Aspekten werden eine oder mehrere Operationen von Block 606 nach Block 604, wie in 6 dargestellt ist, durchgeführt. Bei zusätzlichen oder alternativen Aspekten kann der Prozess 600 mittels Durchführen einer oder mehrerer Operationen von Block 606 parallel zu Block 604 oder auch vor Block 604 modifiziert werden. Operationen, die eine Texturanalyse implizieren, können beispielsweise parallel zum Berechnen einer Begrenzungsbewegung oder auch davor durchgeführt werden.
  • Bei Block 608 impliziert der Prozess 600 ein unter Nutzung der Verlässlichkeitswerte erfolgendes Interpolieren einer Zielbewegung eines Zielpixels innerhalb des Zielbereiches aus der Bewegungsbewegung. Die Interpolationsengine 106 generiert beispielsweise ein modifiziertes Bewegungsfeld für ein spezifisches Videoframe (das heißt, sie schätzt die Bewegung eines Pixels in dem Zielbereich eines spezifischen Frames) als Funktion (i) der Bewegung der Begrenzungspixel an der Begrenzung des Zielbereiches, (ii) der Verlässlichkeitswerte, die bei Block 606 zugewiesen werden. Die Interpolationsengine 106 berechnet beispielsweise die Bewegung eines Pixels unter Nutzung der Formel U(xj, yj, n) = f(U(B), conf idence(B)). In dieser Formel wird U(B) als Abkürzung für U(B1), U(B2), ..., U(Bk) benutzt, während confidence(B) als Abkürzung für confidence(B1), confidence(B2), ..., confidence(Bk) benutzt wird.
  • Bei einigen Aspekten berechnet der Videoeditor 102 die interpolierte Zielbewegung zudem unter Nutzung von verfolgten 3D-Punkten. Der Videoeditor 102 kann beispielsweise eine Struktur aus der Bewegung (Structure from Motion, „SfM“) nutzen, um 3D-Punkte mit bekannter Bewegung zu verfolgen, wenn diese durch das Loch hindurchlaufen. Die Bewegung von 3D-Objekten innerhalb des Loches wird vernachlässigt, und es werden Hintergrundobjekte benutzt. Bei anderen Aspekten weist der Videoeditor 102 für Punkte, die die unter Nutzung von SfM durch das Loch hindurch verfolgt worden sind, den entsprechenden Pixeln eine vollkommene Verlässlichkeit (beispielsweise k = 1) zu. Bei zusätzlichen oder alternativen Aspekten können Pixeln, die verfolgten 3D-Punkten entsprechen, Verlässlichkeitswerte zugewiesen werden, die höher als die Verlässlichkeitswerte für Begrenzungspixel sind, da Information innerhalb des Zielbereiches zuverlässiger sein kann. Dies kann beispielsweise durch die Anzahl von Kameras (Frames), in denen der Punkt in dem Videovolumen sichtbar war, bestimmt werden.
  • Es kann ein beliebiger geeigneter Bewegungsinterpolationsprozess benutzt werden. Bei einigen Aspekten interpoliert die Interpolationsengine 106 Positionsdifferenzen (das heißt eine Bewegung) entlang einer Begrenzung zwischen entsprechenden Pixeln eines nächsten Videoframes in einer Sequenz (beispielsweise Frame n + 1) und eines aktuellen Videoframes in der Sequenz (beispielsweise Frame n). Die Positionsdifferenz kann von der Begrenzung über andere Abschnitte des Zielbereiches (beispielsweise ein Loch) interpoliert werden, so beispielsweise von der Begrenzung zum inneren Abschnitt des Zielbereiches. Mit anderen Worten, die Positionsdifferenzen (das heißt die Bewegung), die für Pixel entlang der Begrenzung bestimmt werden, werden dafür benutzt, Positionsänderungen (das heißt die Bewegung) durch den Zielbereich (beispielsweise nach innen) weiterzuverbreiten.
  • Die Interpolationsengine 106 nimmt beispielsweise ein rekursives Downsampling oder Collapsing des Zielbereiches um einen Sampling-Faktor (von beispielsweise 2) vor, um mehrere dem Downsampling unterzogene Abschnitte zu erzeugen. Zunächst kann der Satz von Bewegungsdaten, die den Pixeln des Zielbereiches zugeordnet sind, als Bewegungsdaten, die der Ebene 0 zugeordnet sind, bezeichnet werden. Wie beschrieben worden ist, kann der Satz von Bewegungsdaten für ein Pixel Komponenten der Positionsdifferenz (das heißt Bewegung) und einen Richtungsindikator beinhalten. Ein exemplarischer Satz von anfänglichen Bewegungsdaten für eine Pixelposition kann {dx, dy, 1} oder {dx, dy, - 1} sein, wobei dx eine Differenz des x-Koordinatenwertes darstellt, dy eine Differenz des y-Koordinatenwertes darstellt, 1 einen Vorwärtsablauf darstellt und 0 die Abwesenheit einer Bewegung darstellt. Die Funktion für den Ursprung oder den Zielbereich der Ebene 0 mit den Komponenten der Positionsdifferenz (das heißt Bewegung) und einem Richtungsindikator kann folgendermaßen beschrieben werden: p y r a m i d _ l e v e l [ 0 ] = w e n n ( o n _ b o r d e r ) c × ( x n + 1 x n , y n + 1 )                    y n ,1 ) s o n s t ( 0,0,0 )
    Figure DE102019005516A1_0009
    Bei diesem Beispiel werden die Positionsdifferenzen auf Grundlage der Begrenzungspixelposition im nächsten Videoframe (Farbe) minus die Begrenzungspixelposition im aktuellen Videoframe (beispielsweise xn+1 - xn,yn+1 - yn) berechnet.
  • Der ursprüngliche Zielbereich entsprechend der Darstellung durch Komponenten der Positionsdifferenz (das heißt Bewegung) und einen Richtungsindikator kann um einen Faktor, so beispielsweise 2, einem Downsampling unterzogen werden, um ein erstes einem Downsampling unterzogenes Bild zu erzeugen, das ein Abschnitt (beispielsweise die Hälfte) der Auflösung des ursprünglichen Zielbereiches ist. Wie einsichtig sein sollte, werden beim Downsampling Richtungsindikatoren für Pixel des ersten dem Downsampling unterzogenen Bildes generiert. Rein beispielhalber werde angenommen, dass ein Satz von vier Pixeln auf ein Pixel verringert wird. Des Weiteren werde davon ausgegangen, dass drei der vier Pixel keiner Begrenzung entsprechen und als solche einen Richtungsindikator mit Wert 0 beinhalten und dass eines der vier Pixel einer Begrenzung entspricht und als solches einen Richtungsindikator mit Wert 1 beinhaltet. In einem derartigen Fall werden die Richtungsindikatoren gesammelt oder gemittelt, um einen Richtungsindikator von 0,25 für das Pixel in dem dem Downsampling unterzogenen Bild herzuleiten. Der berechnete Richtungsindikator von 0,25 gibt die Anzahl von Pixeln mit Information der Positionsdifferenz (das heißt Bewegung) an, die zum Berechnen des Wertes benutzt worden sind (So beinhalten beispielsweise 25% der zum Berechnen von Ergebnissen benutzten Pixel irgendeine Information der Positionsdifferenz (das heißt Bewegung).
  • Entsprechend dem Generieren eines jeden der neuen Richtungsindikatoren für die verschiedenen Pixelpositionen des ersten dem Downsampling unterzogenen Bildes kann der größte oder wichtigste Richtungsindikatorwert identifiziert werden. Identifiziert werden kann auf diese Weise der Wert, der der größten Menge an Information der Positionsdifferenz (das heißt Bewegung) zugeordnet ist, die für die bestimmte dem Downsampling unterzogene Ebene (beispielsweise für das erste dem Downsampling unterzogene Bild) verfügbar ist. Für jedes Pixel des ersten dem Downsampling unterzogenen Bildes können die Werte der Positionsdifferenz (das heißt Bewegung) (beispielsweise x- und y-Koordinatenwerte) und der Richtungsindikatoren sodann durch den größten Richtungsindikatorwert dividiert werden. Ein derartiger Prozess renormiert die Daten entsprechend der maximalen Angabe der Information der Positionsdifferenz (das heißt Bewegung).
  • Bei Block 610 impliziert der Prozess 600 ein Aktualisieren von Farbdaten des Zielpixels entsprechend der Zielbewegung, die aus der Begrenzungsbewegung interpoliert worden ist. Der Videoeditor 102 nutzt beispielsweise Bewegungsfelder, die mit einer interpolierten Zielbewegung verschiedener Pixel modifiziert worden sind, um Wege der Pixel von einem Ort innerhalb des Zielbereiches zu einem oder mehreren Orten außerhalb des Zielbereiches zu verfolgen. Für jedes Pixel innerhalb des Zielbereiches in einem gegebenen Videoframe kopiert der Videoeditor 102 die Pixeldaten (beispielsweise Farbinformation) aus einem entsprechenden Pixel, das zu einem anderen Videoframe verfolgt worden ist, wie vorstehend anhand 5 beschrieben worden ist.
  • Das Aktualisieren von Farbdaten kann einen Prozess beinhalten, bei dem Videocontent nach dem Editieren unter Nutzung des Prozesses 600 eine oder mehrere Modifizierungen an dem Zielbereich nach dem Abspielen anzeigt. Bei einigen Aspekten impliziert das Aktualisieren von Farbdaten ein Modifizieren einer Bildschicht, die das Zielobjekt in einem oder mehreren Videoframes beinhaltet. Bei zusätzlichen oder alternativen Aspekten impliziert das Aktualisieren von Farbdaten ein Überlagern von einer oder mehreren Bildschichten mit dem modifizierten Zielbereich und einer oder mehreren Bildschichten, die das modifizierte Zielobjekt in einem oder mehreren Videoframes beinhalten. Bei einem Beispiel kann der Videoeditor 102 einen Satz von Videoframes erstellen, der eine Maske in Form des Zielbereiches aufweist, wobei Pixel außerhalb des Zielbereiches transparent dargestellt werden, während Pixel innerhalb des Zielbereiches opak dargestellt werden. Der Videoeditor 102 kann die opaken Pixel dieser Bildschicht bei Block 610 aktualisieren. Der Videoeditor kann einen mehrschichtigen Satz von Frames erstellen, in dem die Schicht mit den opaken Pixeln, die den modifizierten Zielbereich darstellen, und den transparenten Pixeln anderswo mit einer Quellenschicht überlagert wird, die den Videocontent mit dem unmodifizierten Zielbereich beinhaltet. Eine beliebige Anzahl von Schichten mit verschiedenen Konfigurationen von Masken kann zum Generieren eines Ausgabevideos mit dem modifizierten Zielbereich benutzt werden.
  • Beispiel für ein Rechensystem zum Implementieren bestimmter Aspekte
  • Ein beliebiges geeignetes Rechensystem oder eine Gruppe von Rechensystemen kann zum Durchführen der hier beschriebenen Operationen benutzt werden. 7 zeigt beispielsweise ein Beispiel für ein Rechensystem 700. Bei einigen Aspekten beinhaltet das Rechensystem 700 eine verarbeitende Hardware 702, die einen Programmcode 705 (beispielsweise den Videoeditor 102, die Verlässlichkeitsengine 104, die Interpolationsengine 106, die Farbaktualisierungsengine 108) ausführt, eine Ablagevorrichtung 704, die einen oder mehrere Sätze von Programmdaten 707 speichert, die durch Operationen in dem Programmcode 705 berechnet oder benutzt werden, (beispielsweise einen Satz von eingegebenen Videoframes, Hinweise, die Zielbereiche identifizieren, Bewegungsfelder, einen Satz von editierten Videoframes und dergleichen mehr), eine oder mehrere Eingabevorrichtungen und eine oder mehrere Präsentationsvorrichtungen 122 zum Anzeigen von grafischem Content, der durch Ausführen des Programmcodes 705 generiert wird. Zu illustrativen Zwecken zeigt 7 ein einziges Rechensystem, in dem der Programmcode 705 ausgeführt wird, die Programmdaten 707 gespeichert werden und die Eingabevorrichtungen 120 und die Präsentationsvorrichtung 714 vorhanden sind. Bei verschiedenen Anwendungen können die beschriebenen Datensätze und Vorrichtungen auch über verschiedene Computersysteme mit Vorrichtungen, die zu den in 7 beschriebenen ähnlich sind, gespeichert oder dort beinhaltet sein.
  • Das dargestellte Beispiel eines Rechensystems 700 beinhaltet die verarbeitende Hardware 702, die kommunikationstechnisch mit einer oder mehreren Ablagevorrichtungen 704 gekoppelt ist. Die verarbeitende Hardware 702 führt einen computerausführbaren Programmcode aus, der in der Ablagevorrichtung 704 gespeichert ist, greift auf Information zu, die in der Ablagevorrichtung 704 gespeichert ist, oder beides. Beispiele für die verarbeitende Hardware 702 beinhalten einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate Array (FPGA) oder eine beliebige andere geeignete Verarbeitungsvorrichtung. Die verarbeitende Hardware 702 kann eine beliebige Anzahl von Verarbeitungsvorrichtungen, darunter auch nur eine einzige Verarbeitungsvorrichtung, beinhalten.
  • Die Ablagevorrichtung 704 beinhaltet ein beliebiges geeignetes nichttemporäres, computerlesbares Medium zum Speichern von Daten, Programmcode oder beidem. Ein computerlesbares Medium kann eine beliebige elektronische, optische, magnetische oder andere Speichervorrichtung beinhalten, die für einen Prozessor computerlesbare Anweisungen oder anderen Programmcode 705 bereitstellen kann. Nichtbeschränkende Beispiele für ein computerlesbares Medium beinhalten eine Magnetplatte, einen Speicherchip, einen ROM, einen RAM, eine ASIC, einen optischen Speicher, ein Magnetband oder einen anderen magnetischen Speicher oder ein beliebiges anderes Medium, von dem eine Verarbeitungsvorrichtung Anweisungen lesen kann. Der Programmcode 705 kann prozessorspezifische Anweisungen beinhalten, die von einem Compiler oder einem Interpreter aus Code generiert werden, der in einer beliebigen geeigneten Computerprogrammiersprache geschrieben ist, darunter beispielsweise C, C++, C#, Visual Basic, Java, Python, Perl, Javascript und Actionscript.
  • Das Rechensystem 700 kann zudem eine Anzahl von externen oder internen Vorrichtungen beinhalten, so beispielsweise eine Eingabevorrichtung 120, eine Präsentationsvorrichtung 714 oder andere Eingabe- oder Ausgabevorrichtungen. Das Rechensystem 700 ist beispielsweise mit einer oder mehreren I/O-Schnittstellen 708 (Input/Output I/O) gezeigt. Eine I/O-Schnittstelle 708 kann eine Eingabe von Eingabevorrichtungen empfangen oder eine Ausgabe für Ausgabevorrichtungen bereitstellen. Ein oder mehrere Busse 706 sind zudem in dem Rechensystem 700 beinhaltet. Die Busse 706 koppeln jeweils eine oder mehrere Komponenten des Rechensystems 700 kommunikationstechnisch.
  • Das Rechensystem 700 führt Programmcode aus, der die verarbeitende Hardware 702 dafür konfiguriert, eine oder mehrere der hier beschriebenen Operationen durchzuführen. Der Programmcode 705 beinhaltet beispielsweise den Videoeditor 102, die Verlässlichkeitsengine 104, die Interpolationsengine 106, die Farbaktualisierungsengine 108 oder einen anderen geeigneten Programmcode, der eine oder mehrere der hier beschriebenen Operationen durchführen kann. Der Programmcode 705 kann auf der Ablagevorrichtung 704 oder auf einem beliebigen geeigneten computerlesbaren Medium vorhanden sein und von der verarbeitenden Hardware 702 oder einem beliebigen anderen geeigneten Prozessor ausgeführt werden. Der Programmcode 705 nutzt oder generiert Programmdaten 707. Beispiele für die Programmdaten 707 beinhalten eines oder mehrere der Ablageframes, der Ground-Truth-Frames, der Merkmalsklassifizierungsdaten, der Merkmalsauswahldaten, der Schlüssel- oder Wertkarten und dergleichen mehr, wie hier anhand 1 bis 7 beschrieben worden ist.
  • Bei einigen Aspekten beinhaltet das Rechensystem 700 zudem eine Netzwerkschnittstellenvorrichtung 710. Die Netzwerkschnittstellenvorrichtung 710 beinhaltet eine beliebige Vorrichtung oder eine Gruppe von Vorrichtungen, die dafür geeignet sind, eine drahtgebundene oder drahtlose Datenverbindung mit einem oder mehreren Datennetzwerken herzustellen. Nichtbeschränkende Beispiele für die Netzwerkschnittstellenvorrichtung 710 beinhalten einen Ethernet-Netzwerk-Adapter, ein Modem und/oder dergleichen. Das Rechensystem 700 ist dazu fähig, mit einer oder mehreren anderen Rechenvorrichtungen über ein Datennetzwerk unter Nutzung der Netzwerkschnittstellenvorrichtung 710 zu kommunizieren.
  • Eine Eingabevorrichtung 120 kann eine beliebige Vorrichtung oder Gruppe von Vorrichtungen beinhalten, die dafür geeignet sind, optische, akustische oder andere geeignete Eingaben zu empfangen, die die Operationen der verarbeitenden Hardware 702 steuern bzw. Regeln oder beeinflussen. Nichtbeschränkende Beispiele für die Eingabevorrichtung 120 beinhalten eine Aufzeichnungsvorrichtung, einen Touchscreen, eine Maus, eine Tastatur, ein Mikrofon, eine Videokamera, eine separate mobile Rechenvorrichtung und dergleichen mehr. Eine Präsentationsvorrichtung 714 kann eine beliebige Vorrichtung oder Gruppe von Vorrichtungen beinhalten, die zur Bereitstellung optischer, akustischer oder anderer geeigneter sensorischer Ausgaben geeignet ist. Nichtbeschränkende Beispiele für die Präsentationsvorrichtung 714 beinhalten einen Touchscreen, einen Monitor, eine separate mobile Rechenvorrichtung und dergleichen mehr.
  • Obwohl 7 die Eingabevorrichtung 120 und die Präsentationsvorrichtung 714 derart zeigt, dass diese lokal auf der Rechenvorrichtung, die den Programmcode 705 ausführt, befindlich sind, sind auch andere Implementierungen möglich. Bei einigen Aspekten können eine oder mehrere von der Eingabevorrichtung 120 und der Präsentationsvorrichtung 714 beispielsweise auch eine Remote-Clientrechenvorrichtung beinhalten, die mit dem Rechensystem 700 über die Netzwerkschnittstellenvorrichtung 710 unter Nutzung eines oder mehrerer der hier beschriebenen Datennetzwerke kommuniziert.
  • Allgemeine Betrachtungen
  • Obwohl der vorliegende Erfindungsgegenstand detailliert anhand spezifischer Aspekte beschrieben worden ist, sollte einsichtig sein, dass ein Fachmann auf dem einschlägigen Gebiet beim Erwerb von Verständnis für das Vorbeschriebene ohne Weiteres Abwandlungen, Änderungen und Äquivalente bezüglich dieser Aspekte konzipieren kann. Es sind hier zahlreiche spezifische Details aufgeführt, um ein eingehendes Verständnis des beanspruchten Erfindungsgegenstandes bereitzustellen. Einem Fachmann auf dem einschlägigen Gebiet erschließt sich, dass der beanspruchte Erfindungsgegenstand auch ohne diese spezifischen Details verwirklicht werden kann. In anderen Fällen sind Verfahren, Einrichtungen oder Systeme, die einem Durchschnittsfachmann bekannt sein dürften, nicht detailliert beschrieben worden, um den beanspruchten Erfindungsgegenstand nicht undeutlich zu machen. Entsprechend ist die vorliegende Offenbarung zu exemplarischen und nicht zu beschränkenden Zwecken dargelegt worden und schließt die Einbeziehung solcher Abwandlungen, Änderungen und/oder Hinzufügungen bezüglich des beanspruchten Erfindungsgegenstandes, die sich einem Durchschnittsfachmann auf dem einschlägigen Gebiet ohne Weiteres erschließen, nicht aus.
  • Es ist - außer dies ist expliziert anders angegeben - davon auszugehen, dass in der vorliegenden Beschreibung Erläuterungen, die Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ und „Identifizieren“ oder dergleichen nutzen, Handlungen oder Prozesse einer Rechenvorrichtung, so beispielsweise eines oder mehrerer Computer oder einer ähnlichen elektronischen Rechenvorrichtung oder solcher Vorrichtungen, betreffen, die Daten, die als physische, elektronische oder magnetische Größen innerhalb von Ablagen, Registern oder anderen Informationsspeichervorrichtungen, Übertragungsvorrichtungen oder Anzeigevorrichtungen der Rechenplattform dargestellt sind, manipulieren oder transformieren. Die Nutzung von „ausgelegt“ oder „konfiguriert“ ist hier dahingehend sprachlich offen und einschließend gemeint, dass sie Vorrichtungen, die dafür ausgelegt oder konfiguriert sind, zusätzliche Aufgaben oder Schritte durchzuführen, nicht ausschließt. Zusätzlich ist die Nutzung von „auf Grundlage“ dahingehend offen und einschließend gemeint, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Handlung „auf Grundlage“ einer oder mehrerer aufgeführter Bedingungen oder Werte in der Praxis auch auf zusätzlichen Bedingungen oder Werten über die angeführten hinausgehend beruhen kann. Hier enthaltene Überschriften, Listen und Nummerierungen dienen lediglich der einfacheren Erläuterung und sind nicht beschränkend gemeint.
  • Aspekte der hier offenbarten Verfahren können im Betrieb derartiger Rechenvorrichtungen durchgeführt werden. Das hier beschriebene System oder die hier beschriebenen Systeme sind nicht auf eine bestimmte Hardwarearchitektur oder Konfiguration beschränkt. Eine Rechenvorrichtung kann eine beliebige geeignete Anordnung von Komponenten beinhalten, die ein Ergebnis bereitstellen, das von einer oder mehreren Eingaben abhängt. Geeignete Rechenvorrichtungen beinhalten mikroprozessorbasierte Mehrzweckcomputersysteme, die auf gespeicherte Software zugreifen, die das Rechensystem von einer Allzweckrecheneinrichtung zu einer spezialisierten Recheneinrichtung, die einen oder mehrere Aspekte des vorliegenden Erfindungsgegenstandes implementiert, programmiert oder konfiguriert. Eine beliebige geeignete Programmierung, ein solches Scripting oder ein anderer Typ von Sprache oder Kombinationen von Sprachen können dafür benutzt werden, die hier enthaltenen Lehren in Software zu implementieren, die beim Programmieren oder Konfigurieren einer Rechenvorrichtung benutzt werden soll. Die Reihenfolge der Blöcke, die bei den vorstehenden Beispielen präsentiert wird, kann variiert werden. So können Blöcke beispielsweise umgeordnet, kombiniert und/oder in Detailblöcke zerlegt werden. Bestimmte Blöcke oder Prozesse können auch parallel durchgeführt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62745260 [0001]

Claims (14)

  1. Verfahren, bei dem eine oder mehrere Verarbeitungsvorrichtungen Operationen durchführen, die umfassen: Zugreifen auf eine Szene, die ein erstes Videoframe und ein zweites Videoframe umfasst, wobei die Szene, auf die zugegriffen wird, einen Hinweis aufweist, der einen Zielbereich identifiziert, der in einem oder mehreren Videoframes, die die Szene umfassen, modifiziert werden soll; Berechnen einer Begrenzungsbewegung für eine Begrenzung des Zielbereiches innerhalb der Szene, wobei die Begrenzung Begrenzungspixel benachbart zu dem Zielbereich in dem ersten Videoframe und dem zweiten Videoframe beinhaltet; jeweiliges Zuweisen von Verlässlichkeitswerten an die Begrenzungspixel, wobei ein bestimmter Verlässlichkeitswert wenigstens teilweise auf einem oder mehreren von (i) einer Differenz zwischen einer Vorwärts- und einer Umkehrbewegung in Bezug auf ein bestimmtes Begrenzungspixel und (ii) einer Textur in einem Bereich, der das bestimmte Begrenzungspixel beinhaltet, beruht; Interpolieren einer Zielbewegung eines Zielpixels innerhalb des Zielbereiches aus der Begrenzungsbewegung, wobei der bestimmte Verlässlichkeitswert des bestimmten Begrenzungspixels einen Beitrag einer bestimmten Bewegung des bestimmten Begrenzungspixels zu der Zielbewegung entsprechend der Interpolation aus der Begrenzungsbewegung steuert bzw. regelt; und Aktualisieren von Farbdaten des Zielpixels entsprechend der Zielbewegung, die aus der Begrenzungsbewegung interpoliert ist.
  2. Verfahren nach Anspruch 1, wobei die Operationen des Weiteren ein Zuweisen des bestimmten Verlässlichkeitswertes mittels Durchführen von zusätzlichen Operationen umfassen, die umfassen: Berechnen eines optischen Vorwärtsablaufes und eines optischen Rückwärtsablaufes des bestimmten Begrenzungspixels in Bezug auf das erste Videoframe und das zweite Videoframe; und Anwenden einer Sigmoidfunktion auf eine Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf, wobei der bestimmte Verlässlichkeitswert eine Ausgabe der Sigmoidfunktion beinhaltet oder aus dieser hergeleitet ist, wobei eine Zunahme der Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf einer Abnahme des bestimmten Verlässlichkeitswertes entspricht.
  3. Verfahren nach Anspruch 2, wobei die Operationen des Weiteren ein Berechnen der Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf mittels Durchführen von zusätzlichen Operationen umfassen, die umfassen: Identifizieren einer beobachteten Position des bestimmten Begrenzungspixels in dem ersten Videoframe; Berechnen einer geschätzten Position des bestimmten Begrenzungspixels durch (i) Anwenden des optischen Vorwärtsablaufes von dem ersten Videoframe zu dem zweiten Videoframe und (ii) Anwenden des optischen Rückwärtsablaufes von dem zweiten Videoframe zu dem ersten Videoframe; und Berechnen eines Abstandes von der beobachteten Position zu der geschätzten Position.
  4. Verfahren nach Anspruch 2 oder 3, wobei die Operationen des Weiteren ein Herleiten des bestimmten Verlässlichkeitswertes aus der Ausgabe der Sigmoidfunktion umfassen, wobei das Herleiten des bestimmten Verlässlichkeitswertes aus der Ausgabe der Sigmoidfunktion ein Multiplizieren der Ausgabe der Sigmoidfunktion mit einer Texturkomponente umfasst, die aus der Textur in einem Fensterbereich berechnet ist, der das bestimmte Begrenzungspixel und einen Satz von Pixeln in einem Fenster um das bestimmte Begrenzungspixel herum beinhaltet, wobei eine Zunahme der Textur einer Zunahme des bestimmten Verlässlichkeitswertes entspricht.
  5. Verfahren nach Anspruch 4, wobei die Operationen des Weiteren umfassen: Berechnen der Texturkomponente durch in dem ersten Videoframe oder dem zweiten Videoframe erfolgendes Berechnen einer Varianz von Intensitätswerten in dem Fensterbereich.
  6. Verfahren nach Anspruch 5, wobei die Varianz von Intensitätswerten in dem Fensterbereich eine Summation von Intensitätsdifferenzen umfasst, wobei jede Intensitätsdifferenz eine Differenz zwischen einer Graustufenintensität eines jeweiligen Pixels in dem Fensterbereich und einer durchschnittlichen Graustufenintensität des Fensterbereiches ist.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Operationen des Weiteren ein Zuweisen des bestimmten Verlässlichkeitswertes mittels Durchführen von zusätzlichen Operationen umfassen, die umfassen: in dem ersten Videoframe oder dem zweiten Videoframe erfolgendes Berechnen einer Varianz von Intensitätswerten in einem Fensterbereich, der das bestimmte Begrenzungspixel und einen Satz von Pixeln in einem Fenster um das bestimmte Begrenzungspixel herum beinhaltet, wobei eine Abnahme der Varianz von Intensitätswerten einer Abnahme des bestimmten Verlässlichkeitswertes entspricht.
  8. Verfahren nach Anspruch 7, wobei die Varianz von Intensitätswerten in dem Fensterbereich eine Summation von Intensitätsdifferenzen umfasst, wobei jede Intensitätsdifferenz eine Differenz zwischen einer Graustufenintensität eines jeweiligen Pixels in dem Fensterbereich und einer durchschnittlichen Graustufenintensität des Fensterbereiches ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Zielbereich ein Objekt umfasst, das entfernt oder modifiziert werden soll.
  10. Nichttemporäres computerlesbares Medium, auf dem Programmcode gespeichert ist, der bei Ausführung durch eine oder mehrere Verarbeitungsvorrichtungen veranlasst, dass die eine oder die mehreren Verarbeitungsvorrichtungen Operationen durchführen, die umfassen: Zugreifen auf ein Video, das einen Zielbereich aufweist; einen Schritt des Aktualisierens von Videocontent in dem Zielbereich auf Grundlage einer verlässlichkeitsgewichteten Bewegungsschätzung für den Zielbereich; und Präsentieren des aktualisierten Videocontents auf einer Anzeigevorrichtung.
  11. Nichttemporäres computerlesbares Medium nach Anspruch 10, wobei der Schritt des Aktualisierens von Videocontent in dem Zielbereich auf Grundlage der verlässlichkeitsgewichteten Bewegungsschätzung für den Zielbereich umfasst: Berechnen eines optischen Vorwärtsablaufes und eines optischen Rückwärtsablaufes eines bestimmten Begrenzungspixels in Bezug auf ein erstes Videoframe in dem Video und ein zweites Videoframe in dem Video; und Anwenden einer Sigmoidfunktion auf eine Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf, wobei ein bestimmter Verlässlichkeitswert des bestimmten Begrenzungspixels eine Ausgabe der Sigmoidfunktion beinhaltet oder aus dieser hergeleitet ist, wobei eine Zunahme der Differenz zwischen dem optischen Vorwärtsablauf und dem optischen Rückwärtsablauf einer Abnahme des bestimmten Verlässlichkeitswertes entspricht.
  12. Nichttemporäres computerlesbares Medium nach Anspruch 10 oder 11, wobei der Schritt des Aktualisierens von Videocontent in dem Zielbereich auf Grundlage der verlässlichkeitsgewichteten Bewegungsschätzung für den Zielbereich umfasst: in einem oder mehreren den Zielbereich darstellenden Videoframes des Videocontents erfolgendes Berechnen einer Varianz von Intensitätswerten in einem Fensterbereich, der (i) ein bestimmtes Begrenzungspixel aus einer Begrenzung um den Zielbereich herum und (ii) einen Satz von Pixeln in einem Fenster um das bestimmte Begrenzungspixel herum beinhaltet, wobei eine Abnahme der Varianz von Intensitätswerten einer Abnahme eines bestimmten Verlässlichkeitswertes des bestimmten Begrenzungspixels entspricht.
  13. System, umfassend: eine Verarbeitungsvorrichtung; und ein nichttemporäres computerlesbares Medium, das kommunikationstechnisch mit der Verarbeitungsvorrichtung gekoppelt ist, wobei die Verarbeitungsvorrichtung dafür konfiguriert ist, auf dem nichttemporären computerlesbaren Medium gespeicherten Programmcode auszuführen und dadurch Operationen durchzuführen, die umfassen: Zugreifen auf eine Szene, die ein erstes Videoframe und ein zweites Videoframe umfasst, wobei die Szene, auf die zugegriffen wird, einen Hinweis aufweist, der einen Zielbereich identifiziert, der in einem oder mehreren Videoframes, die die Szene umfassen, modifiziert werden soll; Berechnen einer Begrenzungsbewegung für eine Begrenzung des Zielbereiches innerhalb der Szene, wobei die Begrenzung Begrenzungspixel benachbart zu dem Zielbereich in dem ersten Videoframe und dem zweiten Videoframe beinhaltet; jeweiliges Zuweisen von Verlässlichkeitswerten an die Begrenzungspixel, wobei ein bestimmter Verlässlichkeitswert wenigstens teilweise auf einem oder mehreren von (i) einer Differenz zwischen einer Vorwärts- und einer Umkehrbewegung in Bezug auf ein bestimmtes Begrenzungspixel und (ii) einer Textur in einem Bereich, der das bestimmte Begrenzungspixel beinhaltet, beruht; Interpolieren einer Zielbewegung eines Zielpixels innerhalb des Zielbereiches aus der Begrenzungsbewegung, wobei der bestimmte Verlässlichkeitswert des bestimmten Begrenzungspixels einen Beitrag einer bestimmten Bewegung des bestimmten Begrenzungspixels zu der Zielbewegung entsprechend der Interpolation aus der Begrenzungsbewegung steuert bzw. regelt; und Aktualisieren von Farbdaten des Zielpixels entsprechend der Zielbewegung, die aus der Begrenzungsbewegung interpoliert ist.
  14. System nach Anspruch 13, wobei die Operationen des Weiteren umfassen: Zuweisen des bestimmten Verlässlichkeitswertes mittels Durchführen von zusätzlichen Operationen, die die Verfahrensschritte nach einem der Ansprüche 2 bis 9 umfassen.
DE102019005516.0A 2018-10-12 2019-08-06 Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung Pending DE102019005516A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862745260P 2018-10-12 2018-10-12
US62/745,260 2018-10-12
US16/378,906 2019-04-09
US16/378,906 US11081139B2 (en) 2018-10-12 2019-04-09 Video inpainting via confidence-weighted motion estimation

Publications (1)

Publication Number Publication Date
DE102019005516A1 true DE102019005516A1 (de) 2020-04-23

Family

ID=70160085

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019005516.0A Pending DE102019005516A1 (de) 2018-10-12 2019-08-06 Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung

Country Status (4)

Country Link
US (2) US11081139B2 (de)
CN (1) CN111050210B (de)
AU (1) AU2019216594B2 (de)
DE (1) DE102019005516A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111724335A (zh) * 2019-03-21 2020-09-29 深圳中科飞测科技有限公司 检测方法及检测系统
US11710247B2 (en) 2020-01-30 2023-07-25 Unity Technologies Sf System for image compositing including training with synthetic data
US11676252B2 (en) 2020-01-31 2023-06-13 Unity Technologies Sf Image processing for reducing artifacts caused by removal of scene elements from images
US20210274091A1 (en) 2020-02-28 2021-09-02 Weta Digital Limited Reconstruction of obscured views of captured imagery using arbitrary captured inputs
US20210274092A1 (en) 2020-02-28 2021-09-02 Weta Digital Limited Reconstruction of obscured views in captured imagery using pixel replacement from secondary imagery
US11694313B2 (en) 2020-02-28 2023-07-04 Unity Technologies Sf Computer-generated image processing including volumetric scene reconstruction
US11756210B2 (en) 2020-03-12 2023-09-12 Adobe Inc. Video inpainting via machine-learning models with motion constraints
CN114071223A (zh) * 2020-07-30 2022-02-18 武汉Tcl集团工业研究院有限公司 基于光流的视频插帧的生成方法、存储介质及终端设备
US11468256B2 (en) * 2020-11-24 2022-10-11 Accenture Global Solutions Limited Obfuscation of areas of a physical environment depicted in a video
US11823357B2 (en) 2021-03-09 2023-11-21 Adobe Inc. Corrective lighting for video inpainting
CN113766275B (zh) * 2021-09-29 2023-05-30 北京达佳互联信息技术有限公司 视频剪辑方法、装置、终端及存储介质
CN114268832B (zh) * 2021-12-20 2024-05-28 杭州逗酷软件科技有限公司 一种修复方法、电子设备及计算机存储介质
US11978143B2 (en) * 2022-05-23 2024-05-07 Lemon Inc. Creation of videos using virtual characters
CN116309057A (zh) * 2023-03-14 2023-06-23 中科星图数字地球合肥有限公司 遥感影像拼接方法、装置、计算机设备和存储介质
CN116866665B (zh) * 2023-09-05 2023-11-14 中信建投证券股份有限公司 一种视频播放方法、装置、电子设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1053452A (en) 1907-11-13 1913-02-18 Edward C Stover Apparatus for transporting liquids or gases.
US1004943A (en) 1908-10-30 1911-10-03 Westinghouse Air Brake Co Electric-pump governor.
US6667774B2 (en) * 2001-11-02 2003-12-23 Imatte, Inc. Method and apparatus for the automatic generation of subject to background transition area boundary lines and subject shadow retention
US7548659B2 (en) 2005-05-13 2009-06-16 Microsoft Corporation Video enhancement
US8243805B2 (en) 2006-11-14 2012-08-14 Microsoft Corporation Video completion by motion field transfer
KR20130073459A (ko) 2011-12-23 2013-07-03 삼성전자주식회사 멀티-뷰 생성 방법 및 장치
WO2014044908A1 (en) * 2012-09-21 2014-03-27 Nokia Corporation Method and apparatus for video coding
JP6378323B2 (ja) 2013-05-28 2018-08-22 トムソン ライセンシングThomson Licensing 密な動き場を介する下位のビデオシーケンスへの画像編集伝達
US10049435B2 (en) 2014-07-31 2018-08-14 Adobe Systems Incorporated Controlling smoothness of a transmission between images
AU2015354783B2 (en) * 2014-10-31 2020-11-05 Raytheon Company System for real-time moving target detection using vision based image segmentation
US10534525B1 (en) * 2014-12-09 2020-01-14 Amazon Technologies, Inc. Media editing system optimized for distributed computing systems
US9741144B2 (en) 2015-11-09 2017-08-22 Adobe Systems Incorporated Seamless compositing using a soft selection
WO2019141106A1 (zh) * 2018-01-18 2019-07-25 成都贝施美医疗科技股份有限公司 基于c/s架构的牙齿美化ar智能辅助方法及装置
CN108600865B (zh) * 2018-05-14 2019-07-23 西安理工大学 一种基于超像素分割的视频摘要生成方法

Also Published As

Publication number Publication date
US20200118594A1 (en) 2020-04-16
AU2019216594B2 (en) 2021-08-05
US11081139B2 (en) 2021-08-03
CN111050210A (zh) 2020-04-21
US20200118254A1 (en) 2020-04-16
AU2019216594A1 (en) 2020-04-30
US10872637B2 (en) 2020-12-22
CN111050210B (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
DE102019005516A1 (de) Videoinpainting mittels verlässlichkeitsgewichteter Bewegungsschätzung
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE112018000332T5 (de) Dichtes visuelles slam mit probabilistic-surfel-map
DE69828974T2 (de) Verfahren und system zur veränderung und aufbereitung dreidimensionaler animationen in einer nicht-linearen editionsumgebung
DE112016004731T5 (de) Erweitern von Mehrfachansicht-Bilddaten mit synthetischen Objekten unter Verwendung von IMU und Bilddaten
DE602004005358T2 (de) Objektdetektion in bildern
DE60111851T2 (de) Videobildsegmentierungsverfahren unter verwendung von elementären objekten
DE112007001789B9 (de) Verfahren zum Bewerten eines Bildes im Hinblick auf eine dominante Linie
DE102015210453B3 (de) Verfahren und vorrichtung zum erzeugen von daten für eine zwei- oder dreidimensionale darstellung zumindest eines teils eines objekts und zum erzeugen der zwei- oder dreidimensionalen darstellung zumindest des teils des objekts
DE102018006050A1 (de) Parallaxenkorrektur in der Virtuellen Realität
DE102019005517A1 (de) Von änderungsbasierten Heuristiken getriebene automatische und interaktive Animation
DE102006023093A1 (de) Verfahren und Vorrichtung zur Korrektur eines Bildes
DE112020005584T5 (de) Verdeckung berücksichtigende Innenraumszenenanalyse
DE602004012341T2 (de) Verfahren und System zur Bereitstellung einer Volumendarstellung eines dreidimensionalen Objektes
DE102019131971A1 (de) Ein Bildverarbeitungsmodul
DE102008050049A1 (de) Verfahren zur Bestimmung einer die Objektgrenze eines Objekts in einem digitalen 3D-Datensatz annähernden 3D-Oberfläche
EP2528042A1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen
DE102023124813A1 (de) Modifizieren von zweidimensionalen bildern unter verwendung von iterativen dreidimensionalen netzen der zweidimensionalen bilder
WO2020164671A1 (de) Modulares inpainting verfahren
DE112018002554T5 (de) Verfahren und Vorrichtung zur Verarbeitung eines 360-Grad-Bildes
DE102023124805A1 (de) Modifizieren von zweidimensionalen bildern unter verwendung von segmentierten dreidimensionalen objektnetzen der zweidimensionalen bilder
DE102023124586A1 (de) Erzeugen von adaptiven dreidimensionalen netzen von zweidimensionalen bildern
DE102020127278A1 (de) Around-View-Synthese-System und -Verfahren
EP2893510B1 (de) Verfahren und bildverarbeitungsanlage zum entfernen eines visuellen objektes aus einem bild
WO2003025843A2 (de) Modellbasierte objektklassifikation und zielerkennung

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed