-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft allgemein Computersysteme, und spezieller Verfahren und Systeme zum Maskieren und Extrahieren eines Objekts aus einer komplexen Szene in einem digitalen Video.
-
HINTERGRUND
-
GU, Chuang, LEE, Ming-Chieh: ”Semiautomatic Segmentation and Tracking of Semantic Video Ojbects”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 8, No. 5, September 05, 1998, pp. 572–584, offenbart ein Extraktionsverfahren von semantischen Objekten aus digitalen Videos, welches zunächst eine Segmentierung eines Videoobjektes durchführt, bei welcher für ein digitales Bild eine Annäherung zu einer Objektgrenze durch einen Benutzer eingegeben wird. Um diese Objektgrenze herum werden eine innere sowie eine äußere Grenze gezogen, so dass die tatsächliche Objektgrenze zwischen diesen beiden Grenzen liegt. Basierend auf den Pixelwerten der Objektgrenze werden alle Pixelwerte innerhalb der Objektgrenze verglichen und jeweils einer der beiden Grenzen zugeordnet. Das Objekt wird basierend auf der Segmentierung auf den Bildern die zeitlich nach dem o. g. digitalen Bild liegen, verfolgt.
-
LOMBARDO, A. et al: ”Intra-GoP Modeling of MPEG Video Traffic”, IEEE International Conference on Communications, ICC 98, Atlanta, GA, USA, June 7–11, 1998, Conference Record, Vol. 2, pp. 563–567, offenbart eine Vorgehensweise zum Kodieren aufeinanderfolgender Rahmen, welche entweder mit einer Bewegungskompensation hinsichtlich der vorherigen und nachfolgenden Rahmen oder einer Interpolation zwischen diesen kodiert werden.
-
LUO, H.; ELEFTHERIADIS, A.: ”Spatial Temporal Active Contour Interpolation for Semi-automatic Video Object Generation”, offenbart einen Ansatz der Active-Contour-Interpolation für eine halb-automatische Videoobjektgenerierung. Dazu wird das konventionelle Active-Contour Modell adaptiert. Das Contour-Interpolations-Problem wird dabei in zwei Contour-Tracking Probleme sowie ein Merging-Problem geteilt. Ein neues Konzept des Parametric-Neighborhood-Templates wird eingeführt, um die Robustheit des Contour-Tracking zu erhöhen.
-
Eine übliche Aufgabe bei der Manipulation digitaler Bilder besteht darin, ein oder mehrere Vordergrundobjekte aus einer Hintergrundszene zu extrahieren. Verschiedene Schwierigkeiten treten beim Extrahieren des Objekts auf exakte Art und Weise auf, insbesondere wenn der Hintergrund komplex ist, und mehrere unterschiedliche Farben aufweist.
-
Eine Schwierigkeit besteht darin, dass das Objekt mit der Hintergrundszene gemischt ist, also ein Pixel am Rand eines Objekts Beiträge sowohl vom Vordergrund als auch vom Hintergrund aufweisen kann, wodurch die Farbe des Pixels dann eine Mischung aus der Farbe des Vordergrunds und jener des Hintergrunds wird. Eine weitere Schwierigkeit betrifft die Komplexität des Objekts, da eine Objektgrenze wesentliche Details enthalten kann, deren Identifizierung nur mit erheblichen Aufwendungen möglich ist. Weiterhin kann eine Kombination dieser Probleme auftreten, was zum Beispiel dann der Fall ist, wenn das Objekt Haar oder einen Pelz aufweist. Die Formen von Haar oder Pelzen sind kompliziert, und Bereiche mit dünnen Fasern führen zu einer wesentlichen Farbmischung. Dies macht es schwierig, korrekt das Objekt aus dem Hintergrund zu extrahieren, da es sowohl maskiert werden muss (also bestimmt werden muss), welche Pixel in dem Grenzbereich zu dem Objekt gehören, als auch farblich dekontaminiert werden muss (so dass Pixel, die Farbe sowohl vom Objekt als auch dem Hintergrund aufweisen, ”gereinigt” werden müssen, damit sie nur Farben des Objekts enthalten).
-
Verschiedene herkömmliche Systeme und Verfahren, welche diese Schwierigkeiten angehen, wurden entwickelt, weisen jedoch sämtlich verschiedene Probleme auf, wie dies nachstehend erläutert wird.
-
Ein herkömmliches Verfahren zum Extrahieren eines Objekts aus einem Hintergrund in einem Standbild besteht in der Verwendung eines Softwareerzeugnisses, beispielsweise Adobe® Photoshop® 5.5 und 6.0. Photoshop stellt ein Bildextraktionsmerkmal zur Verfügung, welches die Hervorhebung einer unscharfen Grenze eines Objekts in einem Standbild ermöglicht. Photoshop führt die Bildextraktion durch, und erzeugt sowohl eine Opazitätsmaske als auch abgeänderte Farben, welche die Hintergrundkontaminierung von dem Objekt entfernen. Das Bildextraktionsmerkmal kann auch bei einem Videoclip eingesetzt werden, der aus einer Gruppe digitaler Bilder besteht. Das Bildextraktionsmerkmal erfordert jedoch einen Vorgang, von Hand das Objekt in jedem Rahmen in dem Videoclip hervorzuheben und zu extrahieren.
-
Herkömmliche Systeme, welche eine Bildextraktion bei digitalen Videos durchführen, verwenden einen Hintergrund, der eine konstante oder annähernd konstante hintere Farbe (normalerweise Blau) aufweist. Trotz der Vorgehensweisen, die in diesem Bereich entwickelt wurden, gibt es immer noch Probleme beim Extrahieren von Objekten, deren Ränder wesentliche Details enthalten, oder bei denen Beiträge sowohl vom Vordergrund als auch vom Hintergrund vorhanden sind. Blaues Nebenlicht oder blaues Streulicht (Reflexion des blauen Lichts von dem blauen Bildschirm auf dem Vordergrundobjekt), Hintergrundschatten auf dem blauen Bildschirm (Schatten des Vordergrundobjekts auf dem Hintergrund, den man als Teil des Vordergrundobjektes beibehalten möchte), und Hintergrundstörungen (Abweichungen eines normalerweise rein blauen Hintergrunds vom reinen Blau) sind Beispiele für Probleme. Eine analytische Vorgehensweise zur Überwindung einiger dieser Probleme wurde von A. Ray Smith und J. F. Blinn vorgestellt in ”Blue Screen Matting” (Computer Graphics Proceedings, Annual Conference Series, 1996, 259–268) [nachstehend Smith]. Smith schlug eine ”Triangulationslösung” vor, bei welcher zusätzlich zu einer Aufnahme des Objekts vor einem blauen Hintergrund eine andere Aufnahme des Objekts gegen einen Hintergrund vorgenommen wird, der eine zweite Farbe aufweist. Allerdings kann dieses Verfahren nicht bei sich bewegenden Vordergrundobjekten eingesetzt werden, da das Verfahren einen pixelweisen Vergleich durchführt, und das Objekt daher bei den beiden Aufnahmen exakt in derselben Position vorhanden sein muss. Obwohl das vorgeschlagene Verfahren die mit blauen Bildschirmen verbundenen Probleme verringern kann, kann es daher nicht eingesetzt werden, wenn sich bewegende Objekte in einer Szene mit einem realistischeren Hintergrund vorhanden sind.
-
Es wäre daher wünschenswert, ein Verfahren ähnlich dem Bildextraktionsmerkmal in Adobe® Photoshop® zu haben, das exakte Objektextraktionen von nicht-gleichförmigen Hintergründen ermöglicht, und dass auch bei einem digitalen Videoclip eingesetzt werden kann, ohne dass man von Hand das Objekt markieren muss, das extrahiert werden soll, in jedem digitalen Bild in der Videosequenz.
-
ZUSAMMENFASSUNG
-
Allgemein stellt gemäß einem ersten Aspekt die Erfindung Verfahren und Einrichtungen, einschließlich Computerprogrammerzeugnissen, zur Verfügung, welche Vorgehensweisen zum Maskieren eines Vordergrundabschnitts eines digitalen Bildes gegenüber einem Hintergrundabschnitt eines digitalen Bildes implementieren und einsetzen. Das digitale Bild ist Teil eines Videos, das eine Zeitsequenz digitaler Bilder aufweist, und jedes Bild wird durch mehrere Pixel festgelegt. Bei diesem Aspekt wird eine erste Eingabe empfangen, die einen ersten Grenzbereich festlegt. Der erste Grenzbereich enthält zumindest einen Teil des Vordergrundabschnitts und zumindest einen Teil des Hintergrundabschnitts in einem ersten digitalen Bild. Es wird eine zweite Eingabe empfangen, die einen zweiten Grenzbereich festlegt. Der zweite Grenzbereich enthält zumindest einen Teil des Vordergrundabschnitts und zumindest einen Teil des Hintergrundabschnitts in einem zweiten digitalen Bild. Ein Zwischengrenzbereich wird für ein Bild interpoliert, das zeitlich zwischen dem ersten und dem zweiten digitalen Bild liegt. Der erste, der zweite und der Zwischen-Grenzbereich werden dazu verwendet, den Vordergrundabschnitt gegenüber dem Hintergrundabschnitt in dem digitalen Video zu maskieren.
-
Vorteilhafte Implementierungen können eines oder mehrere oder folgenden Merkmale umfassen. Benutzereingaben können die Grenzbereiche festlegen, und das Interpolieren eines Zwischengrenzbereiches kann automatisch ohne Benutzereingabe durchgeführt werden. Wenn der erste, der zweite und der Zwischengrenzbereich zum Maskieren des Vordergrundabschnitts gegenüber dem Hintergrundabschnitt verwendet werden, kann für einen Pixel in einem Grenzbereich eine Ermittlung erfolgen, ob der Pixel Daten enthält, welche dem Vordergrundabschnitt zugeordnet sind, und kann das Ergebnis der Ermittlung dazu verwendet werden, den Vordergrundabschnitt gegenüber dem Hintergrundabschnitt in dem digitalen Video zu maskieren. Ein immanenter Farbwert kann für einen Pixel in dem ersten, dem zweiten, und dem Zwischengrenzbereich ermittelt werden, und der ermittelte, immanente Farbwert kann dazu verwendet werden, den Vordergrundabschnitt aus dem Hintergrundabschnitt zu extrahieren. Die Grenzbereiche können dadurch angezeigt werden, dass ein innenseitiger Weg erzeugt wird, der sich innerhalb eines Vordergrundabschnitts befindet; und ein außenseitiger Weg erzeugt wird, der sich außerhalb des Vordergrundabschnitts befindet, und den innenseitigen Weg umschließt, wobei Pixel zwischen dem innenseitigen und dem außenseitigen Weg zu einem Grenzbereich gehören. Der innenseitige Weg und der außenseitige Weg können vektorbasierend sein. Die Grenzbereiche können dadurch angezeigt werden, dass ein einzelner Weg erzeugt wird, der eine Breite aufweist, welche jede des Grenzbereiches umfasst. Der einzelne Weg kann vektorbasierend sein, und kann eine variable Dicke im Verlauf seiner Länge aufweisen.
-
Das Maskieren des Vordergrundabschnitts gegenüber dem Hintergrundabschnitt kann das Maskieren des Vordergrundabschnitts umfassen, und den Einsatz einer Gaussschen Unschärfe bei dem Abschnitt des Grenzbereiches. Der maskiert Vordergrundabschnitt und der Abschnitt des Grenzbereiches können darüber hinaus angezeigt werden. Das Maskieren des Vordergrundabschnitts und eines Abschnitts des Grenzbereiches kann alternativ die Bestimmung der Opazitäten der Pixel in dem Abschnitt des Grenzbereiches umfassen, der mit dem Vordergrundabschnitt angezeigt wird, und das Ändern der Opazitäten für Pixel, welche Opazitäten aufweisen, die größer sind als ein Schwellenwert. Auch hier können der maskierte Vordergrundabschnitt und der Abschnitt des Grenzbereiches angezeigt werden.
-
Es kann auch eine Eingabe empfangen werden, die einen Grenzbereich für einen zweiten Vordergrundabschnitt in dem ersten digitalen Bild definiert. Der Grenzbereich umfasst zumindest ein Teil eines zweiten Vordergrundabschnitts und zumindest ein Teil des Hintergrundabschnitts. Es kann auch eine Eingabe empfangen werden, die einen Grenzbereich für den zweiten Vordergrundabschnitt in dem zweiten digitalen Bild definiert. Der Grenzbereich umfasst zumindest ein Teil des zweiten Vordergrundabschnitts und zumindest ein Teil des Hintergrundabschnitts. Ein Zwischengrenzbereich für den zweiten Vordergrundabschnitt für ein Bild zwischen dem ersten und dem zweiten digitalen Bild kann interpoliert werden.
-
Es kann eine Eingabe empfangen werden, die einen ersten internen Grenzbereich definiert. Der erste interne Grenzbereich kann von dem ersten Grenzbereich in einem ersten digitalen Grenzbereich umschlossen sein. Es kann eine Eingabe empfangen werden, die einen zweiten internen Grenzbereich definiert, wobei der zweite interne Grenzbereich von dem zweiten Grenzbereich in einem zweiten digitalen Bild umschlossen ist. Es kann ein Zwischeninterngrenzbereich für ein Bild, das zeitlich zwischen dem ersten und zweiten Digitalbild liegt, interpoliert werden. Der erste, zweite, und der Zwischengrenzbereich, sowie der erste interne, zweite interne, und Zwischeninterngrenzbereich können dann dazu verwendet werden, den Vordergrundabschnitt gegenüber dem Hintergrundabschnitt in dem digitalen Video zu maskieren. Der erste interne Grenzbereich, der zweite interne Grenzbereich, und der Zwischeninterngrenzbereich können zumindest einen Teil des Vordergrundabschnitts enthalten. Der erste interne Grenzbereich, der zweite interne Grenzbereich, und der Zwischeninterngrenzbereich können zumindest einen Teil des Hintergrundabschnitts umfassen. Der erste interne Grenzbereich, der zweite interne Grenzbereich, und der Zwischeninterngrenzbereich können zumindest einen Teil des Vordergrundabschnitts und zumindest einen Teil des Hintergrundabschnitts umfassen. Der Vordergrundabschnitt kann ein Objekt sein.
-
Allgemein stellt gemäß einem anderen Aspekt die Erfindung Verfahren und Einrichtungen, einschließlich Computerprogrammerzeugnissen, zur Verfügung, welche Vorgehensweisen zum Maskieren eines Vordergrundabschnitts eines digitalen Bildes gegenüber einem Hintergrundabschnitt eines digitalen Bildes implementieren und verwenden. Das digitale Bild ist Teil eines Videos, das eine Zeitsequenz digitaler Bilder aufweist, und jedes Bild wird durch mehrere Pixel festgelegt. Bei diesem Aspekt wird eine Eingabe empfangen, die einen ursprünglichen Grenzbereich festlegt. Der ursprüngliche Grenzbereich umfasst zumindest ein Teil des Vordergrundabschnitts und zumindest ein Teil des Hintergrundabschnitts in einem ursprünglichen digitalen Bild. Ein Grenzbereich wird automatisch für ein anderes digitales Bild in der Zeitsequenz erzeugt, auf Grundlage des ursprünglichen Grenzbereiches, und der ursprüngliche und der automatisch erzeugte Grenzbereich werden zum Maskieren des Vordergrundabschnitts gegenüber dem Hintergrundabschnitt in dem digitalen Video verwendet.
-
Vorteilhafte Implementierungen dieses zweiten Aspekts der Erfindung können ein oder mehrere der voranstehend geschilderten Merkmale in Bezug auf den ersten Aspekt der Erfindung umfassen, sowie ein oder mehrere der folgenden Merkmale. Eine Eingabe, die einen ursprünglichen Grenzbereich definiert, kann für einen zweiten Vordergrundabschnitt empfangen werden, wobei der ursprüngliche Grenzbereich zumindest ein Teil eines zweiten Vordergrundabschnitts und zumindest ein Teil des Hintergrundabschnitts in dem digitalen Bild mit dem ersten Vordergrundabschnitt aufweist. Ein Grenzbereich kann für den zweiten Vordergrundabschnitt in einem anderen Bild in der Zeitsequenz automatisch erzeugt werden, auf Grundlage des ursprünglichen Grenzbereiches für den zweiten Vordergrundabschnitt, und der ursprüngliche und der automatisch erzeugte Grenzbereich können dazu verwendet werden, den zweiten Vordergrundabschnitt gegenüber dem Hintergrundabschnitt in dem digitalen Video zu maskieren.
-
Es kann eine Eingabe empfangen werden, die einen ursprünglichen internen Grenzbereich definiert. Der ursprüngliche, interne Grenzbereich kann von dem ursprünglichen Grenzbereich in einem ersten digitalen Bild umschlossen sein. Ein interner Grenzbereich für ein anderes Bild in der Zeitsequenz kann automatisch erzeugt werden, auf Grundlage des ursprünglichen internen Grenzbereiches, und der ursprüngliche interne und der automatisch erzeugte interne Grenzbereich können dazu verwendet werden, den Vordergrundabschnitt gegenüber dem Hintergrundabschnitt in dem digitalen Video zu maskieren.
-
Das automatische Erzeugen eines Grenzbereiches für ein anderes digitales Bild kann umfassen, einen Randweg in dem ursprünglichen Grenzbereich zu identifizieren, wobei der Randweg Ränder des Vordergrundabschnitts in dem ursprünglichen digitalen Bild anzeigt; Identifizieren eines Randweges in einem automatisch erzeugten Grenzbereich, wobei der Randweg Ränder des Vordergrundabschnitts in dem anderen digitalen Bild anzeigt; Bestimmung einer Randwegtransformation zwischen dem ursprünglichen digitalen Bild und dem anderen digitalen Bild; und Anwenden der Randwegtransformation auf den innenseitigen Weg und den außenseitigen Weg in dem ursprünglichen digitalen Bild, um einen Grenzbereich in dem anderen digitalen Bild zu erzeugen. Der Randweg kann unter Verwendung eines Schlangen-Algorithmus identifiziert werden, der auf einen vorher identifizierten Randweg einwirkt. Das Identifizieren eines Randweges in dem ursprünglichen Grenzbereich kann umfassen, Punkte in dem Grenzbereich aufzufinden, welche Bildgradientenwerten aufweisen, die einen Schwellenwert überschreiten. Ein Bildgradientenwert kann für jeden Farbkanal in dem ursprünglichen Grenzbereich berechnet werden.
-
Das Identifizieren eines Randweges in dem ursprünglichen Grenzbereich kann umfassen, den innenseitigen Weg und den außenseitigen Weg zu kopieren; Bewegen der Kopien des innenseitigen Weges und des außenseitigen Weges aufeinander zu, und zu Rändern des Vordergrundabschnitts hin, unter Verwendung eines Schlangen-Algorithmus; und Identifizieren des Randweges als jenen Weg, an welchem die Kopie des innenseitigen Weges und die Kopie des außenseitigen Weges zu einem Weg konvergieren. Die Bestimmung der Randwegtransformation kann umfassen, eine Gruppe lokaler Randwegtransformationen zu bestimmen, wobei die Gruppe der lokalen Randwegtransformationen zusammen die Randwegtransformation bildet. Die lokalen Randwegtransformationen können für jeden Punkt in dem Randweg dadurch bestimmt werden, dass eine Translation, eine Rotation, und eine Skalierung für jede lokale Randwegtransformation in der Gruppe lokaler Randwegtransformationen bestimmt werden.
-
Das Einsetzen der Randwegtransformation bei dem innenseitigen und außenseitigen Weg kann umfassen, eine Gruppe lokaler Transformationen bei jedem Punkt in dem innenseitigen Weg anzuwenden, und bei jedem Punkt in dem außenseitigen Weg, wobei die Gruppe lokaler Transformationen die Randwegtransformation dadurch ausbildet, dass eine Translation, eine Rotation, und eine Skalierung als jede lokale Transformation des innenseitigen Weges und des außenseitigen Weges angewendet wird.
-
Allgemein stellt gemäß einem anderen Aspekt die Erfindung Verfahren und Einrichtungen, einschließlich Computerprogrammerzeugnissen, zur Verfügung, welche Vorgehensweisen zum Maskieren eines Objekts gegenüber einem Hintergrund in einem digitalen Video implementieren und verwenden. Das digitale Video umfasst eine Zeitsequenz digitaler Bilder, und jedes Bild ist durch mehrere Pixel festgelegt. Bei diesem Aspekt wird eine erste Benutzereingabe empfangen, die einen ersten Grenzbereich definiert. Der erste Grenzbereich enthält zumindest ein Teil eines Objekts und zumindest ein Teil des Hintergrunds in einem ersten digitalen Bild. Es wird eine zweite Benutzereingabe empfangen, die einen zweiten Grenzbereich festlegt, wobei der zweite Grenzbereich zumindest ein Teil des Objekts und zumindest ein Teil des Hintergrundabschnitts in einem zweiten digitalen Bild umfasst. Ein Zwischengrenzbereich wird für ein Bild interpoliert, das zeitlich zwischen dem ersten und zweiten digitalen Bild liegt. Der erste, der zweite, und der Zwischengrenzbereich werden dazu verwendet, das Objekt gegenüber dem Hintergrund in dem digitalen Video zu maskieren. Der erste, der zweite, und der Zwischengrenzbereich werden dazu verwendet, das Objekt aus dem Hintergrund in dem digitalen Video zu extrahieren, und das maskierte und extrahierte Objekt wird gegenüber einem neuen Hintergrund in einem anderen digitalen Video angeordnet.
-
Die Erfindung kann so implementiert werden, dass ein oder mehrere der folgenden Vorteile erreicht werden. Unscharfe oder haarige Objekte können einfach aus komplexen Hintergründen in einem digitalen Video extrahiert werden. Das extrahierte Objekt kann in eine neue Hintergrundszene eingeführt werden. Ein Blaubildschirmhintergrund ist nicht erforderlich, um ein erfolgreiches Extrahieren des Objekts zu erzielen. Das Objekt kann automatisch oder halbautomatisch extrahiert werden.
-
Die Einzelheiten einer oder mehrerer Ausführungsformen der Erfindung sind in den beigefügten Zeichnungen und der nachstehenden Beschreibung angegeben. Andere Merkmale, Ziele, und Vorteile der Erfindung werden aus der Beschreibung und den Zeichnungen deutlich, und aus den Patentansprüchen.
-
BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Flußdiagramm zum Auswählen und Extrahieren eines Objekts aus einem digitalen Videoclip unter Verwendung eines innenseitigen Weges und eines außenseitigen Weges.
-
2 ist ein Flußdiagramm zum Auswählen und Extrahieren eines Objekts aus einem digitalen Videoclip unter Verwendung eines einzigen Weges entlang der Objektgrenze.
-
3A ist ein erstes digitales Bild, das ein Objekt in einer ersten Position vor einem ersten Hintergrund zeigt.
-
3B ist ein zweites digitales Bild, welches das Objekt in einer zweiten Position vor dem ersten Hintergrund zeigt.
-
4A ist ein erstes digitales Bild, das das Objekt in 3A zeigt, das vor einem neuen Hintergrund angeordnet ist.
-
4B ist ein zweites digitales Bild, das das Objekt in 3B zeigt, das vor einem neuen Hintergrund angeordnet ist.
-
5 ist ein Flußdiagramm, das den Extrahierungsschritt von 1 bzw. 2 zeigt.
-
6 ist ein digitales Bild, das ein Objekt einschließlich eines Teils des Hintergrunds zeigt.
-
7 ist ein Flußdiagramm zum Auswählen und Extrahieren eines Objekts unter Verwendung nur eines Einzelbilds.
-
8 ist ein Flußdiagramm, welches den Verfolgungsschritt von 7 erläutert.
-
Gleiche Bezugszeichen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
-
DETAILLIERTE BESCHREIBUNG
-
1 zeigt einen Prozess 100 zum Extrahieren eines Vordergrundabschnitts aus einem Hintergrundabschnitt in einem digitalen Video. Der Prozess kann bei jedem Vordergrundabschnitt eingesetzt werden, den ein Benutzer aus dem Hintergrund extrahieren möchte. Bei einer bevorzugten Implementierung der Erfindung repräsentiert der Vordergrundabschnitt ein Objekt. Beispielhaft wird der Vordergrundabschnitt als ein Objekt in der folgenden Beschreibung bezeichnet, jedoch sollte dies keinesfalls als Einschränkung der beigefügten Patentansprüche verstanden werden. Das Objekt, oder der Vordergrundabschnitt, das bzw. der aus dem Hintergrund extrahiert werden soll, kann von jeder Art sein, kann ortsfest sein oder sich bewegen, und kann eine sich ändernde Form und ein sich änderndes Erscheinungsbild aufweisen. Der Prozess arbeitet ebenso gut bei jedem Vordergrundabschnitt oder Objekt. Das digitale Video enthält eine Zeitsequenz digitaler Bilder, die mit einer bestimmten Rate angezeigt werden sollen. Digitale Videos können verschiedene unterschiedliche Format aufweisen, wobei die üblichsten AVI, MPEG, und MOV sind. Der Prozess kann durch einen oder mehrere Prozessoren ausgeführt werden, von denen jeder Befehle ausführt, auf die von einem lokalen und/oder entfernten Speicher zugegriffen wird. Die Prozessoren können auch an verschiedene Eingabe/Ausgabegeräte angeschlossen sein, beispielsweise eine Anzeige, eine Tastatur, oder eine Maus, um es einem Benutzer zu ermöglichen, die Eingabe zu kontrollieren, und das Ergebnis des Prozesses zu bewerten. Die Prozessoren können auch an eine Eingabe/Ausgabeschnittstelle angeschlossen sein, welche Daten über eine Kommunikationsverbindung empfängt und sendet. Eine derartige Schnittstelle empfängt und sendet Daten über eine Kommunikationsverbindung. Derartige Kommunikationsverbindungen umfassen beispielsweise eine serielle Verbindung, ein Lokalbereichsnetzwerk, eine drahtlose Verbindung, und eine parallele Verbindung.
-
Der Prozess 100 beginnt im Schritt 105 mit dem Empfang eines digitalen Videoclips, aus welchem ein Benutzer ein Objekt extrahieren möchte. Dieser digitale Videoclip kann durch irgendeines der verschiedenen Eingabe/Ausgabegeräte oder über Kommunikationsverbindungen empfangen werden. Im Schritt 110 empfängt der Prozess die Auswahl des Benutzers eines ursprünglichen Einzelbildes. Das ursprüngliche Einzelbild ist ein digitales Bild, welches einem Zeitpunkt entspricht, an welchem der Benutzer mit dem Extrahieren des Objekts aus dem Videoclip beginnen möchte. Ein Beispiel für ein Einzelbild 300 ist in 3A gezeigt, und enthält ein Objekt 305, das sich auf einem Hintergrund 310 befindet. Im Schritt 115 empfängt der Prozess eine Eingabe von einem Benutzer, die ein Objekt anzeigt, das er aus dem Hintergrund extrahieren möchte, und im Schritt 120 empfängt der Prozess einen Weg, der von dem Benutzer innerhalb der Grenze des Objekts gezogen wird. Wenn der Weg innenseitig der Grenze des Objekts gezogen wird, kann der Benutzer allgemein der Außenkontur des Objekts folgen.
-
Grenzen bezeichnen den Bereich des Bildes, in welchem sich das Vordergrundobjekt und der Hintergrundbereich treffen. Die Grenze kann zahlreiche Pixel breit sein, oder so klein sein, dass sie nur die Breite eins einzelnen Pixels aufweist, und enthält Pixel, welche gemischte Daten aufweisen, also Daten, die dem Objekt zugeordnet sind, sowie Daten, die dem Hintergrund zugeordnet sind. So kann beispielsweise ein rotes Objekt auf einem blauen Hintergrund dazu führen, dass eine Grenze Pixel aufweist, die blau, rot, und in verschiedenen Schattierungen purpurfarben sind. In zahlreichen Fällen findet es ein Benutzer schwierig, die Grenze des Objekts zu verfolgen. Ein Beispiel hierfür ist der Fall, dass das Objekt eine unscharfe Grenze mit Haar oder Pelz hat. Der Prozeß lässt daher den Benutzer einen breiteren Grenzbereich erzeugen, der die Grenze umschließt, wie nachstehend erläutert. Nach Empfangen des Weges innenseitig der Grenze des Objekts empfängt der Prozess ebenfalls einen Weg, der von dein Benutzer außerhalb der Grenze gezogen wird, Schritt 125. Auch der außenseitige Weg muss nur allgemein der Grenze folgen. Der Bereich zwischen dem innenseitigen Weg und dem außenseitigen Weg bildet den Grenzbereich, der die Grenze einschließt. Eine detaillierte Beschreibung, wie der Grenzbereich benutzt wird, erfolgt später. Die innenseitigen und außenseitigen Wege können in Form von Bezier-Kurven vorliegen. Es können jedoch auch andere Arten vektorbasierender Wege verwendet werden.
-
Dann wartet der Prozess, um herauszufinden, ob der Benutzer daran interessiert ist, andere Objekte gegenüber dem Hintergrund zu maskieren, Schritt 130. 3A enthält nur ein Objekt 305, jedoch zeigt 6 ein Beispiel, bei welchem zwei Objekte 605 und 610 extrahiert werden sollen. Falls der Benutzer ein anderes Objekt auswählen möchte, lässt der Prozess den Benutzer ein neues Objekt auswählen, Schritt 135. Der Prozess empfängt dann Benutzereingaben, die einen innenseitigen Weg und einen außenseitigen Weg um ein neues Objekt herum angeben, Schritte 120 und 125. Nach Auswahl sämtlicher Objekte geht der Prozess zum Schritt 140 über, in welchem der Prozess eine Benutzerauswahl eines anderen Einzelbildes empfängt.
-
In dem neuen Einzelbild 350, gezeigt in 3B, führt der Prozess dieselben Schritte durch wie in dem ursprünglichen Einzelbild. Der Prozess empfängt eine Eingabe von einem Benutzer, welche das erste Objekt identifiziert, Schritt 145, einen innenseitigen Weg, Schritt 150, und einen außenseitigen Weg, Schritt 155, wodurch der Grenzbereich festgelegt wird. Das Objekt kann seine Position zwischen dem ursprünglichen Einzelbild und dem neuen Einzelbild geändert haben, und die innenseitigen und außenseitigen Wege können daher eine unterschiedliche Form und einen unterschiedlichen Ort aufweisen, was zu einem geänderten Grenzbereich führt. Nach Empfang der Wege wartet der Prozess auf eine Eingabe von dem Benutzer, die angibt, ob irgendwelchen weiteren Objekte in dem Bild vorhanden sind, die aus dem Hintergrund extrahiert werden sollen, Schritt 160, und falls dies der Fall ist, wird ein neues Objekt zur Verarbeitung ausgewählt, Schritt 165, und werden Wege um das neue Objekt herum empfangen.
-
Wenn ein Grenzbereich für jedes interessierende Objekt in dem neuen Einzelbild erzeugt wurde, wartet der Prozess auf eine Benutzereingabe, welche irgendwelche anderen Einzelbilder angibt, Schritt 170. Ist dies der Fall, kehrt der Prozess zurück, und macht mit dem Schritt 140 weiter, in welchem er ein weiteres Einzelbild empfängt. Die Anzahl an Einzelbildern, die ausgesucht werden, kann abhängig von der Art der Bewegung variieren, welche das Objekt durchführt, und davon, wie exakt der Benutzer die Interpolation zwischen den Bildern haben möchte, wie dies nachstehend erläutert wird.
-
Nachdem der Benutzer die Grenzbereiche in sämtlichen interessierenden Einzelbildern markiert hat, geht der Prozess weiter mit Interpolation von Zwischenwegen für die Bilder, die sich zeitlich zwischen den vom Benutzer empfangenen Einzelbildern befinden, Schritt
175. Die Interpolation der Zwischenwege kann auf eine Anzahl herkömmlicher Art und Weisen durchgeführt werden. Beispiele für Interpolationsprozesse finden sich in ”Adobe After Effects Version 3.0 User Guide for Use with Apple Macintosh Computers”, 1995, User Guide Adobe After Effects TM, version 3.0, Adobe Systems Incorporated, 1585 Charleston Road, Mountain View, CA 94039-7900, USA, Part number: 0197 2558 (10/95), S. 268–271 sowie 292–314 und in dem
US-Patent Nr. 5,929,867 derselben Anmelderin mit dem Titel ”Floating Keyframes”. Üblicherweise werden in einem Filmsystem zwei Funktionen, Q und S, zum Steuern von Ändern von Schichteigenschaften im Verlauf der Zeit verwendet. Q legt einen Weg durch einen n-dimensionalen Eigenschaftsraum fest, und S legt die Bewegung entlang dem Weg fest. Die Form von Q und S wird durch die Einzelbilder kontrolliert. Um eine Schichteigenschaft zwischen zwei Einzelbildern zu animieren, konstruiert das System einen Weg Q zwischen den beiden Eigenschaftswerten, und eine Bewegungssteuerfunktion S zwischen den beiden Zeitwerten, welche den betreffenden Einzelbildern zugeordnet sind. Das System verwendet dann an Weg Q und die Bewegungssteuerfunktion S zum Interpolieren des Wertes der Schichteigenschaft für sämtliche Rahmen zwischen den beiden Einzelbildern.
-
Um beispielsweise die Bewegung einer Schicht über einem Bildschirm zu erzielen, wählt ein Benutzer ein Einzelbild zu einem ersten Zeitpunkt aus, wodurch die Positionseigenschaft der Schicht auf eine Anfangsposition eingestellt wird. Der Benutzer wählt dann ein zweites Einzelbild zu einem zweiten Zeitpunkt aus, welches die Positionseigenschaft der Schicht auf ihre nächste Position einstellt. Beim Befehl, die Änderung zu animieren, berechnet das System die Position der Schicht zu jeder Zwischenzeit und bewegt die Schicht zu jeder dieser Positionen, und erzeugt so die Bewegung der Schicht von der Startposition zur Endposition. Benutzer können jede Anzahl an Einzelbildern für jede Eigenschaft auswählen, und die Interpolation wird auf dieselbe Art und Weise zwischen jedem Paar benachbarter Einzelbildern durchgeführt.
-
Die Prinzipien der Animierung der Positionseigenschaft einer Schicht sind ebenso anwendbar beim Animieren anderer n-dimensionaler Schichteigenschaften, beispielsweise Farbe, Größe, Maskenform, 3D-Objektform, 3D-Objektposition, und anderen beliebigen n-dimensionalen Eigenschaften. Die Schichteigenschaften, die bei der in der vorliegenden Anmeldung beschriebenen Erfindung interpoliert werden, sind die Form des innenseitigen Weges bzw. des außenseitigen Weges, und deren jeweiliger Ort in jedem Rahmen des digitalen Videos.
-
Nachdem die innenseitigen Wege und die außenseitigen Wege automatisch für jeden Rahmen zwischen den Einzelbildern interpoliert wurden, extrahiert der Prozess jedes Objekt, das von dem Benutzer ausgewählt wurde, aus dem Hintergrund, Schritt 180. Der Extraktionsprozess wird nunmehr mit weiteren Einzelheiten unter Bezugnahme auf 5 beschrieben, in welcher der Prozess im Schritt 505 startet. Zuerst wählt der Extraktionsprozess das ursprüngliche Einzelbild aus, Schritt 510. Der Extraktionsprozess wählt das erste Objekt aus, Schritt 515. Auf Grundlage der vektorbasierenden innenseitigen und außenseitigen Wege werden ein rasterbasierender Vordergrund, Hintergrund und Hervorhebungsmasken erzeugt, Schritt 520. Die drei Masken werden folgendermaßen erzeugt.
-
Zuerst erzeugt der Extraktionsprozess in einem Beispiel eine Vordergrundmaske unter Verwendung des innenseitigen Weges. Der innenseitige Weg wird an eng beabstandeten Punkten abgetastet, mit einer Trennung von einem Pixel oder weniger. Für jeden Abtastpunkt wird der Wert der Maske auf 1 eingestellt. Nach Abtastung des innenseitigen Weges wird ein beliebiger Punkt innerhalb des innenseitigen Weges ausgewählt. Der Punkt innerhalb des Weges lässt sich dadurch auffinden, dass zuerst eine Pixelmaske erzeugt wird, die überall Werte von 0 hat, mit Ausnahme dort, wo Pixel von dem Weg überquert werden; diesen wird der Wert 1 zugeteilt. Dann wird ein Pixel mit einem Maskenwert von 1 ausgewählt. Die nächsten Nachbarn dieses Pixels, die einen Maskenwert von 0 aufweisen, werden dann berücksichtigt, und irgendeiner von ihnen wird als der innenseitige Punkt ausgewählt, falls der Pixel die folgende Eigenschaft aufweist: eine Linie, die von dem Punkt zu dem Rand des Bildes gezogen wird, führt eine ungeradzahlige Anzahl von Übergängen von 0 auf 1 oder 1 auf 0 in den Maskenwerten des betreffenden Pixels durch. Nach Auswahl des inneren Punktes erzeugt der Extraktionsprozess eine Vordergrundmaske, durch zunächst Einstellen der Maskenwerte sämtlicher Pixel, die entlang dem Weg liegen, auf einen Wert von 0,5, und sämtlicher anderen Pixel auf einen Wert von 0. Dann wird eine Flutungsfülloperation durchgeführt, beginnend an dem ausgewählten innenseitigen Punkt, welche sämtliche Pixel mit dem Wert 0 mit dem Wert 1 füllt, und die Flutfüllexpansion stoppt, wenn auf Pixel mit Werten von 0,5 getroffen wird. Schließlich werden alle Pixel mit einem Wert von 0,5 so geändert, dass sie einen Wert von 1 aufweisen. Die Vorgehensweise der Flutfüllung ist auf diesem Gebiet wohlbekannt, und ist beschrieben in James D. Foley und Andries van Dam ”Fundamentals of Interactive Computer Graphics” (Addision-Wesley Publishing Company, 1982, Seiten 446–449). Zweitens erzeugt der Extraktionsprozess eine Hintergrundmaske auf ähnliche Art und Weise, jedoch unter Verwendung des außenseitigen Weges anstatt des innenseitigen Weges, und durch Auswahl eines beliebigen Punktes außerhalb des außenseitigen Weges als Startpunkt für die Flutfüllung. Schließlich erzeugt der Extraktionsprozess eine Hervorhebungsmaske entsprechend dem Grenzbereich aus der Vordergrundmaske und der Hintergrundmaske. Ein Wert von 1 wird einem Punkt in der Hervorhebungsmaske zugeordnet, wenn die entsprechenden Werte der Vordergrundmaske und der Hintergrundmaske an diesem Punkt gleich 0 sind. Ist zumindest einer der Vordergrund- und Hintergrundmaskenwerte gleich 1 an dem fraglichen Punkt, wird der Wert der Hervorhebungsmaske auf 0 eingestellt. Die Hervorhebungsmaske definiert daher einen Grenzbereich.
-
Zum Erzeugen der Maske im Schritt 520 behandelt das Verfahren sämtliche Objekte in dem Bild zusammen als ein einzelnes Objekt. Für diese Vorgehensweise werden sämtliche im Vordergrund festgelegte Wege kombiniert, um eine Vordergrundmaske zu erzeugen, und werden sämtliche im Hintergrund festgelegten Wege kombiniert, um eine Hintergrundmaske zu erzeugen. Die Kombination besteht daraus, die jedem Weg zugeordnete Maske zu berechnen, wie voranstehend, und eine logische XOR-Operation bei jedem Pixel durchzuführen, um die einzelnen Masken zu einer kombinierten Maske zu vereinigen. Wenn die kombinierte Hintergrundmaske mit B bezeichnet ist, und die einzelnen Hintergrundmasken als ba, wobei a = 1, 2, ..., ...Nb die Anzahl an Hintergrundwegen angibt, dann lässt sich die Operation folgendermaßen darstellen (es wird darauf hingewiesen, dass die nachstehende Bezeichnung Operationen angibt, die bei jedem Pixel in einer Maske durchgeführt werden sollen. Die Gleichung B = 0 bedeutet daher ”setze den Wert jedes Pixels in der Maske B auf 0”): B = 0
wiederhole für jedes b = 1, 2, ... Nb
ca = 1 – ba (Komplement von ba)
B = caXORB
-
Nimmt man das Komplement, wird die Hintergrundmaske reduziert: B = 1 – B, wobei cXORd gleich 0 ist, wenn sowohl c und d gleich 0 sind, oder beide gleich 1 sind, und anderenfalls cXORd gleich 1 ist, für irgendwelche Maskenpixelwerte c und d, welche mögliche Werte von 0 oder 1 annehmen können.
-
Eine ähnliche, jedoch etwas andere, Operation wird durchgeführt, um die vereinigte Vordergrundmaske F aus den einzelnen Masken fa, a = 1, 2, ... Nf zu erzeugen, wobei a die Anzahl an Vordergrundwegen angibt. F = 0 (setze jeden Pixel in der Maske auf 0)
wiederhole für jedes a = 1, 2, ... Nf
F = faXORF
stelle B auf 0 ein, wenn der entsprechende Pixel in F auf 1 eingestellt wird.
-
Die Hervorhebungsmaske wird wie voranstehend geschildert erzeugt, durch Einstellung sämtlicher Pixel auf 1, bei denen weder F- noch B-Pixelwerte auf 1 eingestellt sind.
-
Unter Verwendung der soeben beschriebenen Prozedur wird das gesamte Bild als eine einzige Größe behandelt, die aus mehreren Stücken bestehen kann, und erzeugt der Extraktionsprozess, wie nachstehend erläutert, eine vollständige Extraktion in einem einzigen Schritt.
-
Wenn die Hervorhebungsmaske festgelegt wurde, geht der Extraktionsprozess im Schritt
525 weiter, in welchem eine Objektextraktion durchgeführt wird. Ein Beispiel für einen Objektextraktionsprozess ist in der nachveröffentlichten US-Patentschrift
US 6 337 925 B1 mit der Bezeichnung ”Method for Determining a Border in a Complex Scene with Applications to Image Masking” derselben Anmelderin beschrieben. Das Ergebnis des Objektextraktionsprozesses ist ein in Bezug auf Farbe dekontaminiertes Bild des Objekts, das aus neuen ”immanenten” Vordergrundfarbwerten und einem Opazitätskanal (alpha-Kanal) besteht, der das Ausmass festlegt, in welchem jeder Pixel zum Vordergrundobjekt gehört. Für eine Maske von acht Bit repräsentiert ein Wert von 255 die vollständige Mitgliedschaft im Vordergrund, ein Wert von 0 die vollständige Mitgliedschaft im Hintergrund, und repräsentieren Zwischenwerte Zwischen-Mitgliedschaften im Vordergrund und Hintergrund.
-
Der Extraktionsprozess überprüft dann, ob der Benutzer irgendwelche weiteren Objekt definiert hat, die aus dem ursprünglichen Einzelbild extrahiert werden sollen, Schritt 530. Falls Ja, wählt dann der Prozess das nächste Objekt aus (Schritt 535), und führt die Schritte 520 bis 535 für dieses Objekt durch. Die Schritte 520 bis 535 werden wiederholt, bis kein weiteres, zu verarbeitendes Objekt übrigbleibt, wonach dann der Prozess untersucht, ob irgendwelche weiteren, zu verarbeitenden Rahmen vorhanden sind, Schritt 540. Sind noch weitere Rahmen zu verarbeiten, wählt der Maskierungsprozess einen neuen Rahmen aus, Schritt 545, und wiederholt die Schritte 510 bis 540 für den neuen Rahmen. Wenn der endgültige Rahmen des Videoclips oder ein anderer Stopppunkt in dem Videoclip erreicht wird, ordnet der Extraktionsprozess die maskierten Objekte rahmenweise in einem neuen Hintergrund an, Schritt 550. Dies sieht man in den 4A und 4B für die in 3A bzw. 3B gezeigten Rahmen. Schließlich werden die Rahmen zu einem Videoclip zusammengebaut, der das sich bewegende Objekt 305 vor einem neuen Hintergrund zeigt, Schritt 555. Hiermit ist der Extraktionsprozess 500 beendet.
-
Der Extraktionsprozess kann auch unter Verwendung nur eines Weges um das Objekt herum durchgeführt werden. Dieser Prozess ist sehr ähnlich wie jener, der voranstehend beschrieben wurde, und wird nunmehr unter Bezugnahme auf 2 erläutert. Der Prozess 200 beginnt im Schritt 205 mit dem Empfang eines digitalen Videoclips, aus welchem ein Benutzer ein Objekt extrahieren möchte. Im Schritt 210 empfängt der Prozess eine Benutzerauswahl des ursprünglichen Einzelbildes, gefolgt von einer Auswahl eines Objekts, an dessen Extraktion er interessiert ist, Schritt 215. Anstelle des Empfangs eines innenseitigen Weges und eines außenseitigen Weges um die Objektgrenze herum empfängt bei der vorliegenden Implementierung der Prozess nur einen von dem Benutzer gezogenen Weg, Schritt 220. Dieser Weg weist eine bestimmte Dicke auf, die zum Abdecken der Grenze ausreicht. Der Weg kann beispielsweise unter Verwendung eines Bürstenwerkzeugs gezogen werden, bei welchem sich in Abhängigkeit von dem durch den Benutzer ausgeübten Druck die Dicke ändert. Die Eigenschaften dieser Arten von Bürstenwerkzeugen sind auf diesem Gebiet wohlbekannt, und werden daher hier nicht beschrieben. Infolge der Wahl, dass die Dicke des Weges variiert werden kann, den der Benutzer um die Grenze herumzieht, können Teile mit unterschiedlicher ”Unschärfe” berücksichtigt werden. Bei dem Beispiel mit dem Baby in den 3A und 3B kann es beispielsweise wünschenswerter sein, einen dickeren Weg um den Kopfbereich zu ziehen, wo die Grenze schwer zu definieren ist, und einen dünneren Weg entlang den Armen, wo sich die Grenze einfacher definieren lässt. Bei der vorherigen Implementierung gab der Benutzer den Grenzbereich durch Ziehen eines innenseitigen und eines außenseitigen Weges vor, jedoch wird bei der vorliegenden Implementierung der Grenzbereich durch den Weg selbst vorgegeben, was in vielen Fällen daher eine attraktivere Option darstellen kann. Auch hier ist der Weg vektorbasierend, und besteht aus Bezier-Kurven, wobei jedoch auch andere Arten vektorbasierender Wege verwendet werden könnten.
-
Dann wartet der Prozess, damit der Benutzer eingeben kann, ob er irgendwelche anderen Objekte aus dem Hintergrund extrahieren möchte, Schritt 225. Sind weitere Objekte zu extrahieren, macht der Prozess damit weiter, eine Anzeige des nächsten, von dem Benutzer ausgewählten Objekts zu empfangen, Schritt 230, und einen einzelnen Weg um das zweite Objekt herum zu empfangen, Schritt 220. Wurden alle Objekte ausgewählt, geht der Prozess mit dem Schritt 235 weiter, in welchem der Prozess es dem Benutzer ermöglicht, ein weiteres Einzelbild auszuwählen. Für dieses neue Einzelbild führt der Prozess dieselben Schritte wie in dem ursprünglichen Einzelbild durch. Der Prozess empfängt eine Auswahl des ersten Objekts, Schritt 240, und einen Weg, der die Grenze des Objekts abdeckt, Schritt 245. Nach dem Ziehen der Wege wartet der Prozess auf eine Benutzereingabe, die anzeigt, ob weitere Objekte in dem Bild vorhanden sind oder nicht, die aus dem Hintergrund extrahiert werden sollen, Schritt 250. Ist dies der Fall, werden neue Objekt identifiziert, Schritt 255, und werden Wege um sie herum gezogen.
-
Wenn ein Grenzbereich um jedes interessierende Objekt in dem neuen Einzelbild erzeugt wurde, empfängt der Prozess eine Eingabe von dem Benutzer, die angibt, ob er Grenzbereiche für die Objekt in irgendwelchen anderen Einzelbildern erzeugen möchte, Schritt 260. Falls Ja, kehrt der Prozess zum Schritt 235 zurück, in welchem ein neues Einzelbild ausgewählt wird. Die Anzahl an Einzelbildern kann sich in Abhängigkeit von der Art der Bewegung, die das Objekt durchführt, ändern, und davon, wie exakt die Interpolation zwischen den Bildern sein soll, wie dies nachstehend erläutert wird.
-
Nachdem der Benutzer die Grenzbereich in sämtlichen interessierenden Einzelbildern markiert hat, wird der Prozess durch Interpolieren von Zwischenwegen für die Bilder fortgesetzt, die zeitlich zwischen den von dem Benutzer ausgewählten Einzelbilder liegen, Schritt 265. Nachdem ein Weg um jedes ausgewählte Objekt herum automatisch für jeden Zwischenrahmen interpoliert wurde, wird jedes Objekt, das von dem Benutzer ausgewählt wurde, gegenüber dem Hintergrund maskiert, Schritt 270. Das Objekt wird wie voranstehend geschildert extrahiert, mit Ausnahme der Tatsache, dass der Schritt 520, in welchem die Hintergrund-, Vordergrund- und Hervorhebungsmasken erzeugt wurden, auf unterschiedliche Art und Weise ausgeführt wird, die nunmehr nachstehend beschrieben wird. Die drei Masken werden folgendermaßen erzeugt:
Zuerst erzeugt der Maskierungsprozess eine Vordergrundmaske unter Verwendung des innenseitigen Randes des einzigen Weges. Der innenseitige Rand des Weges wird an eng beabstandeten Punkten abgetastet, mit einer Trennung von einem Pixel oder weniger. Für jeden Abtastpunkt wird der Wert der Maske auf 1 eingestellt. Nach dem Abtasten des innenseitigen Randes des Weges wählt der Maskierungsprozess einen beliebigen Punkt an der Innenseite des Weges aus. Der beliebige Punkt kann auf ähnliche Weise ausgewählt werden, wie bei dem Modell, das voranstehend für sowohl den innenseitigen als auch den außenseitigen Weg beschrieben wurde. Nach Auswahl des innenseitigen Punktes erzeugt der Maskierungsprozess eine Vordergrundmaske durch Flutfüllung der Maske mit Werten von 1, beginnend an dem ausgewählten Punkt. Zweitens erzeugt der Maskierungsprozess eine Hintergrundmaske auf ähnliche Weise, jedoch unter Verwendung des außenseitigen Randes des Weges anstelle des innenseitigen Randes des Weges, und durch Auswahl eines beliebigen Punktes außerhalb des äußeren Randes des Weges als Startpunkt für die Flutfüllung. Schließlich erzeugt der Maskierungsprozess eine Hervorhebungsmaske dadurch, dass er der Hervorhebungsmaske einen Wert von 1 zuordnet, und sowohl der Vordergrund- als auch der Hintergrundmaske einen Wert von 0 zuordnet, für jeden Pixel, der innerhalb des festgelegten Radius R von jedem Punkt auf dem einzigen Weg aus liegt. Wenn die Hervorhebungsmaske festgelegt wurde, führt der Maskierungsprozess die Schritte 525–560 wie voranstehend beschrieben durch, und ist mit der Fertigstellung des Maskierungsprozesses auch der gesamte Prozess fertig, gezeigt durch Schritt 275 in 2.
-
In einigen Fällen kann ein Hintergrundobjekt innerhalb eines Vordergrundobjekts vorhanden sein. So weist beispielsweise, wie in 6 gezeigt, die Frau auf der rechten Seite einen Bereich 614 unter ihrem Arm auf, der nicht ein Teil des Vordergrunds ist, sondern ein Teil des Hintergrunds 612. Wenn der Benutzer dieses Hintergrundteil 614 von dem Vordergrund trennen möchte, kann er diesen Bereich dadurch markieren, dass er einen Weg 625 zieht, der das Hintergrundteil 614 umschließt. Der Weg, der das Hintergrundteil 614 umschließt, liegt vollständig innerhalb des Objekts. Wenn der Maskierungsprozess die Vordergrund-, die Hintergrund- und die Hervorhebungsmaske erzeugt, ist alles innerhalb des Weges, der das Hintergrundteil 614 umschließt, ein Teil der Hervorhebungsmaske, und wird entsprechend dem Extrahieren und Maskieren des Objekts behandelt. Selbstverständlich kann der Grenzbereich oder der Hervorhebungsbereich um das Hintergrundteil 614 herum alternativ dadurch angezeigt werden, dass ein Grenzbereich mit einem innenseitigen Weg und einem außenseitigen Weg erzeugt wird, oder durch Ziehen eines einzigen Weges, der eine Breite aufweist, welche die Grenze abdeckt, wie dies voranstehend beschrieben wurde. Hierbei wird, wenn das Hintergrundteil innerhalb des Objekts liegt, der Grenzbereich als interner Grenzbereich bezeichnet. Die Erzeugung eines internen Grenzbereiches unter Verwendung eines innenseitigen und eines außenseitigen Weges ist besonders dann nützlich, wenn ein großer Teil des Vordergrundobjekts zum Hintergrund gehört, und führt zu einer schnelleren Verarbeitungszeit für die Bestimmung der Grenze in dem Hervorhebungsbereich.
-
Eine alternative Implementierung der Erfindung wird nunmehr unter Bezugnahme auf 7 beschrieben. Bei dieser Implementierung können ein oder mehrere Objekte automatisch dadurch verfolgt werden, dass das Objekt oder die Objekte in einem ursprünglichen Einzelbild ausgewählt werden. Die in 7 gezeigten Schritte 705 bis 735 sind identisch mit dem Prozess, der in Bezug auf 1 beschrieben wurde. Nachdem der Prozess Benutzerangaben über alle Objekte empfangen hat, die maskiert werden sollen, macht der Prozess mit dem Schritt 740 weiter, und maskiert das Objekt in dem momentanen Rahmen. Der Prozess überprüft dann, ob der momentane Rahmen der Stopprahmen ist, Schritt 745. Der Stopprahmen kann der letzte Rahmen in dem Videoclip sein, oder kann von dem Benutzer ausgewählt werden. Ist der momentane Rahmen der Stopprahmen, endet der Prozess im Schritt 750. Anderenfalls geht es im Prozess mit dem Schritt 755 weiter, in welchem das ausgewählte Objekt automatisch in dem nächsten Rahmen verfolgt wird. Der Verfolgungsprozess wird mit weiteren Einzelheiten nachstehend beschrieben. Der nächste Rahmen wird zum momentanen Rahmen, Schritt 760, und der Prozess wird fortgesetzt mit Extrahieren des Objekts in dem momentanen Rahmen, Schritt 740, und endet schließlich, wenn das Objekt verfolgt und aus sämtlichen Rahmen extrahiert wurde. Bei dem in 7 gezeigten Prozess werden ein innenseitiger Weg und ein außenseitiger Weg verwendet. Alternativ können diese Schritte dadurch durchgeführt werden, dass ein Weg verwendet wird, der die Objektgrenze abdeckt, anstelle des innenseitigen und außenseitigen Weges, wie dies voranstehend in Bezug auf 2 beschrieben wurde.
-
Der automatische Verfolgungsschritt 755 wird nunmehr beschrieben, jedoch muss zuerst eine Gruppe von Variablen eingeführt werden. Für die Zwecke der Beschreibung des automatischen Verfolgungsschrittes 755 wird angenommen, dass nur ein Objekt in einem ursprünglichen Rahmen ausgewählt wurde, der zu einer Zeit t auftritt, unter Verwendung eines innenseitigen Weges P1(t) und eines außenseitigen Weges P2(t). Fachleute auf diesem Gebiet wissen, wie der Prozess auf mehr als ein Objekt verallgemeinert werden kann, aus der folgenden Beschreibung. Wird mehr als ein Objekt ausgewählt, dann wird das Verfahren wiederholt bei jedem Objekt durchgeführt. Jeder Weg besteht aus einer Gruppe von Spitzen mit festgelegten Koordinaten. So besteht beispielsweise P1(t) = {v11(t), v12(t), v13(t), ... v1M1(t)}
aus M1 Spitzen, und
P2(t) = {v21(t), v22(t), v23(t), ... v2M2(t)
aus M2 Spitzen, wobei
vij(t) = (xij(t), yij(t))
der zweidimensionale Spitzenpunkt zur Zeit t ist.
-
Der Spitzenpunkt kann eine höhere Dimension aufweisen, falls dies von der Anwendung benötigt wird. Der innenseitige und der außenseitige Weg werden dadurch gebildet, dass ihre jeweiligen Spitzen mit geraden Linien oder komplizierteren Kurven verbunden werden, beispielsweise eine kubische Bezier-Kurve. Um Punkte zu erzeugen, die ausreichend eng zusammenliegen, werden die Kurven zuerst abgetastet, um eine potentiell dichtere Gruppe von Punkten rij(t) zu erzeugen. Die Abtastung wird unter Verwendung von Standardabtastverfahren durchgeführt, um die folgende Darstellung der Eingabe- und Ausgabewege als Gruppe von Punkten zu ergeben: P1(t) = {r11(t), r12(t), r13(t), ... r1N1(t)}
besteht aus N1 Punkten, und
P2(t) = {r21(t), r22(t), r23(t), ... r2N2(t)}
besteht aus N2 Spitzen, wobei
rij(t) = (xij(t), yij(t)
der Abtastpunkt zur Zeit t ist.
-
Die Anzahl an ausgewählten Abtastpunkten hängt von dem gewünschten Detailniveau ab. Bei einem Extrem gilt N1 = M1 und N2 = M2. Dies ist der Fall, in welchem nur die Spitzen ausgewählt werden. Ein anderes Extrem liegt dann vor, wenn die Abtastpunkte so dicht gewählt werden, dass die Entfernung zwischen benachbarten Abtastpunkten kleiner ist als der Abstand zwischen Pixeln.
-
Nach Definition dieser Variablen wird der automatische Verfolgungsprozess im Schritt 755 nunmehr unter Bezugnahme auf 8 beschrieben. Zuerst wird eine kurze Übersicht über den gesamten Prozess gegeben. Der automatische Verfolgungsprozess beginnt im Schritt 805. Im Schritt 810 legt der Verfolgungsprozess einen Randweg E(t) fest, der starke Ränder in dem Grenzbereich zwischen P1(t) und P2(t) in dem ursprünglichen Rahmen aufweist, der zur Zeit t auftritt. Wenn der Verfolgungsprozess den Randweg E(t) im Schritt 810 identifiziert hat, geht der Verfolgungsprozess zum Schritt 815 über, in welchem sich der Randweg E(t) zu den Rändern in dem nächsten Rahmen bewegt, der zur Zeit t + 1 auftritt. Nach Bewegung des Randweges zu den Rändern in dem folgenden Rahmen, wird eine kombinierte lokale Transformation T bestimmt, welche E(t) nach E(t + 1) bringt, also E(t + 1) = TE(t), Schritt 820. Die Transformation T wird dann dazu verwendet, P1(t) und P2(t) zu transformieren, Schritt 825, entsprechend P1(t + 1) = TP1(t) und P2(t + 1) = TP2(t). Durch Anwenden der Transformation T auf die Wege P1(t) und P2(t) werden sie auf eine Art und Weise transformiert, welche die Transformationen nachbildet, die bei den Bildrändern stattfinden, die in dem Grenzbereich zwischen den beiden Wegen liegen. Dies vervollständigt den automatischen Verfolgungsprozess, und darin kann das Objekt aus dem Rahmen extrahiert werden, wie dies voranstehend beschrieben wurde. Die Schritte 810 bis 825 werden nunmehr mit weiteren Einzelheiten beschrieben.
-
Schritt 810: Auffinden eines Randweges
-
Der Randweg E(t) kann unter Verwendung eines von zwei Verfahren gefunden werden. Das Verfahren A hat den Vorteil, dass es einfacher und schneller durchzuführen ist, und es erfasst sämtliche Ränder in dem Grenzbereich. In Situationen, in welchen der Beitrag von dem Hintergrund einen großen Anteil der Ränder in dem Grenzbereich darstellt, erzeugt jedoch des Verfahren B häufig eine bessere Verfolgung des Objekts.
-
Verfahren A
-
Das Ziel des Verfahrens A besteht darin, Punkte in dem Grenzbereich zu finden, also zwischen P
1(t) und P
2(t), welche Randwerte oder Bildgradientenwerte aufweisen, die größer sind als ein vorbestimmter Schwellenwert G
0. Die Ausdrücke Randwerte und Bildgradient werden hier austauschbar verwendet, und bezeichnen Farbintensitätswertänderungen zwischen dem Pixel, der untersucht wird, und seinen benachbarten Pixeln. Ein analytischer Ausdruck für die Gradientenwerte wird nachstehend angegeben. Ebenso wie bei den voranstehend geschilderten Implementierungen der Erfindung wird eine Grenzbereichsmaske oder Hervorhebungsmaske H erzeugt, die einen Wert von 1 für alle Pixel zwischen P
1(t) und P
2(t) in dem Bildrahmen hat, und sonst einen Wert von 0. Nach der Erzeugung der Hervorhebungsmaske H wird ein Bildgradient G(x, y) für jeden Pixel mit einem Wert von 1 berechnet. Ein Wert der Berechnung des Bildgradienten G(x, y) ist gegeben durch:
-
I(x, y) ist die Bildintensität für einen vorgegebenen Farbkanal in dem Bild.
-
Die Gradienten, die für jeden Farbkanal berechnet wurden, können kombiniert werden. Wenn beispielsweise das Bild ein RGB-Farbbild ist, das aus roten, grünen und blauen Farbkanälen besteht, lässt sich der Gradient G(x, y) folgendermaßen berechnen:
- Gr
- der Gradient des roten Kanals ist,
- Gb
- der Gradient des blauen Kanals, und
- Gg
- der Gradient des grünen Kanals.
-
Hat der Pixel einen Gradientenwert größer als G0, dann wird er zu der Liste von Punkten addiert, welche E(t) enthält. Ein typischer Wert für die Schwelle G0 beträgt 100 für Bilder mit acht Bit, in welchen die Pixelintensitätswerte im Bereich von 0 bis 255 liegen. Der Randweg E(t) besteht dann aus sämtlichen Punkten zwischen P1(t) und P2(t), die einen Gradienten aufweisen, der größer ist als G0. Es wird nicht garantiert, dass die Punkte einander benachbart sind, jedoch ist dies nicht dazu erforderlich, die übrigen Schritte durchzuführen, wie nachstehend erläutert wird.
-
Verfahren B
-
Dieses Verfahren ist komplizierter als das Verfahren A, garantiert jedoch, dass sämtliche Punkte in dem Randweg E(t) nebeneinander liegen. Weiterhin erzeugt dieses Verfahren den einzigen, besten kontinuierlichen Rand, der zwischen P1(t) und P2(t) liegt, im Gegensatz zum Verfahren A, welches Randpunkte aus allen starken Rändern in dem Grenzbereich erzeugt.
-
Dies wird erzielt unter Verwendung eines neuen Einsatzes eines Standard-Schlangenverfahrens. Schlangenverfahren sind auf diesem Gebiet wohlbekannt. Die neue Anwendung, die bei dieser Implementierung der Erfindung verwendet ist, ist auch als aktives Konturverfahren bekannt, und wird beschrieben in M. Kass, A. Witkin, und D. Terzopoulos ”Snakes: Active Contour, Models” (International Journal of Computer Vision, Vol. 1, Seiten 321–331, 1998) [nachstehend Kass].
-
Zuerst wird eine Kopie jedes Weges erzeugt, P1'(t) = P1(t) und P2'(t) = P2(t). Jeder Punkt in dem Weg P1'(t) wird entsprechend einer Gruppe von Kräften bewegt, welche Änderungen gegenüber der Ursprungsposition widerstehen, oder einer Biegung des Weges, und wird zum Weg P2'(t) hingezogen, und daher auch zum Rand des Objekts. Die Bewegung der verschiedenen Punkte in P1'(t) wird unter Verwendung ähnlicher Verfahren wie jener erzielt, die beschrieben sind in Steve R. Gunn und Mark S. Nixon ”A Robust Snake Implementation; A Dual Active Contour” (IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 19, Nr. 1, Januar 1997). P2'(t) wird auf entsprechende Weise zu P1'(t) gezogen, und daher auch zum Rand des Objekts. Auf diese Weise konvergieren schließlich P1'(t) und P2'(t) zu einem Weg E(t), der dazu neigt, starken Rändern in dem Grenzbereich zwischen P1(t) und P2(t) zu folgen.
-
Ein Randkraftfeld G(x, y) wird dadurch erzeugt, dass der Gradient an jedem Pixelort (x, y) in dem Bildrahmen berechnet wird, auf dieselbe Art und Weise, wie der Bildgradient beim voranstehenden Verfahren A berechnet wurde. Dieses Feld wird unscharf oder diffus ausgebildet, damit sich der Einfluß von Rändern über einen größeren Bereich erstrecken kann. Eine typische Implementierung der Erzeugung der Unschärfe umfasst den Einsatz einer Standard-Gauss-Unschärfe mit einem Radius von 10 Pixeln bei G(x, y). Der Benutzer der Anwendung kann den Unschärferadius steuern. Der negative Wert des sich ergebenden, unscharfen Gradienten wird mit Vc(x, y) bezeichnet, und stellt die randbasierende potentielle Energie dar, welche die Wege zu starken Rändern hin treibt. Ein alternatives Verfahren zum Auffinden von Vc(x, y) besteht darin, eine Schwelle für G(x, y) festzulegen, wobei ein Wert von 1 jenen Pixeln zugeordnet wird, die Werte von G(x, y) aufweisen, die größer sind als G0, und ein Wert von 0 allen anderen Pixeln zugeordnet wird. Dann wird eine Entfernungstransformationsberechnung durchgeführt, um das Feld Vc(x, y) zu erzeugen, welches gleich 0 an den voranstehenden Schwellenwertpunkten ist, und linear mit zunehmender Entfernung von diesen Punkten zunimmt. Entfernungstransformationsberechnungen dieser Art wurden beschrieben in Per-Erik-Danielsson ”Euclidean Distance Mapping” (Computer Graphics and Image Processing, Vol. 14, Seiten 227–248, 1980).
-
Unter Verwendung eines anderen Einsatzes der Entfernungstransformation, die bei jenen Punkten entlang dem Weg P2'(t) eingesetzt wird, wird ein Potentialfeld V2(x, y) ermittelt, das Werte von 0 für Punkte entlang dem Weg aufweist, und zunehmende Werte weg von diesen Punkten. Ein entsprechendes Potentialfeld V1(x, y) wird ebenfalls auf Grundlage der Punkte auf dem Weg P1'(t) berechnet.
-
Nachdem die drei Potentialfelder Vc(x, y), V1(x, y) und V2(x, y) zur Zeit t berechnet wurden, werden die Punkte auf den Wegen P1'(t) und P2'(t) bewegt, um eine gewichtete Summe dieser drei potentiellen Energien zu minimieren, und gleichzeitig die Verzerrung der Kurven zu minimieren. Die gewichtete Summe ist Vexternal(x, y) = ccVc(x, y) + c1V1(x, y) + c2V2(x, y), wobei cc, c1 und c2 Gewichtungskoeffizienten sind. Wenn das Entfernungstransformationsverfahren verwendet wird, ist ein typischer Wert für jeden der Gewichtungskoeffizienten 1,0. Wenn Wegpunkte in dem Weg P2'(t) bewegt werden, wird c2 auf 0 gesetzt, und wenn Wegpunkte in P1'(t) bewegt werden, wird c1 auf 0 gesetzt.
-
Mehrere Iterationen, typischerweise 10, werden durchgeführt, wenn die Wege bewegt werden. Für jede Iteration werden alle Punkte im Weg P1'(t) und alle Punkte im Weg P2'(t) bewegt. Nunmehr werden mit vx und vy Variablen (Geschwindigkeiten) bezeichnet, welche Anfangswerte von 0 aufweisen, und wird (x, y) initialisiert auf die Werte der Wegkoordinaten; zum Beispiel für die Punkte 3 im Weg 1, x = x13(t), y = y13(t), dann wird jeder Punkt folgendermaßen bewegt: vx = vx + dt·Fx vy = vy + dt·Fy x = x + dt·vx y = y + dt·vy dt ist typischerweise 0,2 Fx = –V(x + 1, y) + V(x – 1, y) Fy = –V(x, y + 1) + V(x, y – 1)
-
V(x, y) ist eine potentielle Energie, die aus der externen und der internen Energie besteht: V(x, y,) = Vexternal(x, y) + Vinternal(x, y)
-
Die interne Energie minimiert die Verzerrungen der Kurven gegenüber den ursprünglichen Kurven. Ein Beispiel für die interne Energie für beispielsweise den Punkt 3 ist gegeben durch: Vinternal(x3, y3) = k[(x3 – x2 – x13(t) + x12(t))2 + (y3 – y2 – y13(t) + y12(t))2 + (x3 – x4 – x13(t) + x14(t))2 + (y3 – y4 – y13(t) + y14(t))2] wobei k eine Konstante für die Federsteifigkeit ist, welche das Ausmass steuert, um welches die Kurven verzerrt werden können, und das Gleichgewicht zwischen internen und externen Kräften steuert. Ein typischer Wert für k beträgt 0,3. Die sich ergebenden Punkte für den Weg P1'(t), nach Durchführung sämtlicher Iterationen durch den Schlangenalgorithmus, werden auf den Randweg gesetzt: E(t) = P1'(t).
-
Bei einer geringfügigen Variation des Verfahrens B werden die Koeffizienten c1 und c2 beide so ausgewählt, dass sie negative Zahlen sind, beispielsweise –1. Dies erzeugt eine Abstoßung zwischen der Schlange und diesen Rändern. In dieser Situation muss nur ein Weg, P1'(t), bewegt werden, nachdem er so initialisiert wurde, dass er zwischen P1(t) und P2(t) liegt.
-
Schritt 815: Bewegung von E(t) zu den Rändern im Rahmen t + 1
-
Die Bewegung von E(t) zu den Rändern in dem nächsten Rahmen der zum Zeitpunkt t + 1 auftritt, kann unter Verwendung eines Standard-Schlangenalgorithmus erfolgen, beispielsweise jenem, der in Kass beschrieben wurde, oder nach einem der Verfahren A und B, die voranstehend beschrieben wurden. Bei einer Implementierung wird der Schlangenalgorithmus des Verfahrens B wiederholt mit c1 = c2 = 0, und mit den Gradienten auf Grundlage der Bildintensitätswerte im Rahmen t + 1 anstelle im Rahmen t, wobei nur der Randgradient G(x, y) übrig bleibt, um die externe Antriebskraft zu erzeugen. Nach einer Anzahl an Iterationen in dem Schlangendynamikalgorithmus, typischerweise 15, ist das Ergebnis der Randweg E(t + 1) für das Objekt in dem Rahmen, der zum Zeitpunkt t + 1 auftritt.
-
Schritt 820: Bestimmung der kombinierten lokalen Transformation T
-
Die Transformation T kann als Liste von Transformationen angesehen werden, eine für jeden Punkt in dem Weg E(t): T = {T1, T2, ... TN} entsprechend E(t) = {r1, r2, ... rN}, so dass die Anwendung von T oder E ergibt E(t + 1) = TE(t) = {T1r1, T2r2, ... TNrN}.
-
Für jeden Punkt ri(t) im Weg E(t) wird die entsprechende lokale Transformation Ti berechnet. Ein Kreis mit dem Radius R wird um den Punkt gezogen. R kann durch den Benutzer gesteuert werden, und kann Werte im Bereich von einem Pixel bis zur Bildgröße annehmen. Größere Werte von R ermöglichen die Verfolgung der globalen Objektbewegung, können jedoch lokale Verzerrungen auslassen. Kleinere Werte von r ermöglichen die Verfolgung von Merkmalen in der Kurve, welche Skalierungsgrößen in der Größenordnung von R aufweisen.
-
Die Gruppe von Punkten in dem Randweg E(t), die innerhalb des Kreises liegen, welcher r
i(t) umgibt, bildet eine lokale Kurve E
1i, die dazu verwendet wird, die lokale Transformation T
i zu finden, welche diesem Punkt zugeordnet ist. Für jeden Punkt von E
1i gibt es einen entsprechenden Punkt E
2i in dem Randweg E(t + 1). Die Indizes 1i und 2i wurden nur wegen der einfachen Notation ausgewählt, und sollten nicht so angesehen werden, dass sie sich auf absolute Rahmennnummern beziehen. Die Transformation T
i(dx, dy, θ, scaleX, scaleY) findet man durch Vergleich von E
1i mit E
2i auf folgende Weise:
Translation: | dx <x2 – x1> |
| dy = <y2 – y1> |
Rotation: | tanθ = <(x1y2 – x2y1)/(x1x2 + y1y2)> |
Skalierung: | scaleX = <x2x1>/<x1 2> |
| scaleY = <y2y1>/<y1 2> |
wobei <...> den Mittelwert der eingeschlossenen Größe angibt, ermittelt über die Gruppe von Punkten, die innerhalb der lokalen Kurve E
1i liegen.
-
Schritt 825: Anwendung der Transformation T auf den innenseitigen und den außenseitigen Weg
-
Die Transformation T
i(dx, dy, θ, scaleX, scaleY) wird dann bei einem Punkt r
i im Weg 1 angewendet, der als der nächste Punkt im Weg 1 zu dem i-ten Punkt in der Randkurve E
1i ausgewählt wird, um die beste Approximation von E
2i durch Translation, Rotation, und Skalierung von r
i zu erzielen:
Translation: | xi = xi + dx |
| yi = yi + dy |
Rotation: | xi = xicosθ – yisinθ |
| yi = yicosθ + xisinθ |
Skalierung: | xi = scaleX·xi |
| yi = scaleY·yi |
-
Die Transformation Ti(dx, dy, θ, scaleX, scaleY) wird auf jeden Punkt in P1(t) angewendet. Dieselbe Prozedur wird für jeden Punkt in P2(t) durchgeführt, unter Verwendung derselben Transformationsgleichungen wie voranstehend, wobei erneut ri der nächste Punkt in P2(t) an dem i-ten Punkt in der Randkurve ist. Auf diese Weise werden P1(t) und P2(t) lokal auf eine Art und Weise transformiert, welche die Transformation nachbildet, welche bei der Kurve zwischen dem momentanen Rahmen und dem darauffolgenden Rahmen auftrat.
-
Die Erfindung kann als digitale elektronische Schaltung, oder als Computerhardware, Firmware, Software, oder Kombinationen hieraus implementiert werden. Einrichtungen gemäß der Erfindung können als ein Computerprogrammerzeugnis implementiert sein, das erfassbar in einem maschinenlesbaren Speichergerät zur Ausführung durch einen programmierbaren Prozessor verwirklicht ist; und Verfahrensschritte der Erfindung können durch einen programmierbaren Prozessor durchgeführt werden, der ein Programm von Befehlen ausführt, um Funktionen der Erfindung durch Operationen bei Eingangsdaten durchzuführen, und Ausgaben zu erzeugen. Die Erfindung kann auch in vorteilhafter Weise als ein oder mehrere Computerprogramme implementiert sein, die auf einem programmierbaren System ausführbar sind, das zumindest einen programmierbaren Prozessor enthält, der so angeschlossen ist, dass er Daten und Befehle von einem Datenspeichersystem empfängt, und Daten und Befehle an dieses überträgt, zumindest ein Eingabegerät, und zumindest ein Ausgabegerät. Jedes Computerprogramm kann als prozedurale oder objektorientierte Programmiersprache auf hohem Niveau implementiert sein, oder in Assembler- oder Maschinensprache, falls erwünscht; und in jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein. Geeignete Prozessoren umfassen beispielsweise sowohl allgemeine als auch spezielle Mikroprozessoren. Normalerweise empfängt ein Prozessor Befehle und Daten von einem Nur-Lesespeicher und/oder einem Speicher mit wahlfreiem Zugriff. Üblicherweise enthält ein Computer ein oder mehrere Massenspeichergeräte zum Speichern von Datendateien; derartige Gerät umfassen magnetische Disketten oder Platten, beispielsweise interne Festplatten und entfernbare Disketten; magnetooptische Disketten; und optische Disketten. Speichergeräte, die zur erfassbaren Verwirklichung von Computerprogrammbefehlen und Daten geeignet sind, umfassen sämtliche Formen nicht-flüchtiger Speicher, einschließlich beispielsweise Halbleiterspeichergeräte, etwa EPROM, EEPROM, und Flash-Speichergeräte; magnetische Platten und Disketten wie beispielsweise innere Festplatten und entfernbare Disketten; magnetooptische Disketten; und CD-ROM-Disketten. Die voranstehenden Einrichtungen können ergänzt werden durch ASICs (anwendungsspezifische integrierte Schaltungen), oder in diesen vorgesehen sein.
-
Um die Wechselwirkung mit einem Benutzer zu ermöglichen, kann die Erfindung auf einem Computersystem implementiert werden, das ein Anzeigegerät aufweist, beispielsweise einen Monitor oder einen LCD-Bildschirm, zur Anzeige von Information an den Benutzer, sowie eine Tastatur und ein Zeigergerät wie beispielsweise eine Maus oder einen Trackball, durch welche der Benutzer Eingaben zum Computersystem vornehmen kann. Das Computersystem kann so programmiert werden, dass eine graphische Benutzerschnittstelle zur Verfügung gestellt wird, durch welche Computerprogramme Mitbenutzern wechselwirken.
-
Es wurde eine Anzahl an Implementierungen der Erfindung beschrieben. Dennoch wird darauf hingewiesen, dass verschiedene Modifikationen vorgenommen werden können, ohne vom Wesen und Umfang der Erfindung abzuweichen. Daher werden andere Implementierungen vom Umfang der folgenden Patentansprüche umfasst.
-
Bezugszeichenliste
-
Fig. 1:
- YES
- Ja
- NO
- Nein
- END
- Ende
- 105
- Digitalen Videoclip empfangen
- 110
- Anfangsrahmen auswahlen
- 115
- Erstes Objekt auswahlen
- 120
- Ziehe Weg innerhalb Objektgrenze
- 125
- Ziehe Weg außerhalb Objektgrenze
- 130
- Mehr Objekte zu extrahieren?
- 135
- Wähle ein anderes Objekt aus
- 140
- Wähle nächsten Rahmen aus
- 145
- Wähle erstes Objekt aus
- 150
- Ziehe Weg innerhalb Objektgrenze
- 155
- Ziehe Weg außerhalb Objektgrenze
- 160
- Mehr Objekte zu extrahieren?
- 165
- Wähle ein anderes Objekt aus
- 170
- Mehr Einzelbilder?
- 175
- Interpoliere Zwischenwege
- 180
- Extrahiere Objekte
- 185
- Ende
Fig. 2: - YES
- Ja
- NO
- Nein
- 205
- Empfange digitalen Videoclip
- 210
- Wähle Anfangsrahmen aus
- 215
- Wähle erstes Objekt aus
- 220
- Ziehe Weg, welcher die Objektgrenze abdeckt
- 225
- Mehr Objekte zu extrahieren?
- 230
- Wähle ein anderes Objekt aus
- 235
- Wähle nächsten Rahmen aus
- 240
- Wähle erstes Objekt aus
- 245
- Ziehe Weg, der die Objektgrenze abdeckt
- 250
- Mehr Objekte zu extrahieren?
- 255
- Wähle ein anderes Objekt aus
- 260
- Weitere Einzelbilder?
- 265
- Interpoliere Zwischenwege
- 270
- Extrahiere Objekt bzw. Objekte
- 275
- Ende
Fig. 5: - YES
- Ja
- NO
- Nein
- 510
- Wähle Anfangsrahmen aus
- 515
- Wähle erstes Objekt aus
- 520
- Erzeuge Masken
- 525
- Führe Objektextraktion durch
- 530
- Irgendwelche weiteren Objekte im Anfangsrahmen ?
- 535
- Wähle ein anderes Objekt aus
- 540
- Irgendwelche weiteren Rahmen zu untersuchen ?
- 545
- Wähle nächsten Rahmen aus
- 550
- Ordne extrahiertes Objekt vor neuem Hintergrund an
- 555
- Baue Bilder zu Videoclip zusammen
- 560
- Ende
Fig. 7: - YES
- Ja
- NO
- Nein
- 705
- Empfange digitalen Videoclip
- 710
- Wähle Anfangsrahmen aus
- 715
- Wähle erstes Objekt aus
- 720
- Ziehe Weg innerhalb Objektgrenze
- 725
- Ziehe Weg außerhalb Objektgrenze
- 730
- Mehr Objekte zu extrahieren?
- 735
- Wähle ein anderes Objekt aus
- 740
- Extrahiere Objekt oder Objekte im momentanen Rahmen
- 745
- Ist der momentane Rahmen der Stopprahmen?
- 750
- Ende
- 755
- Verfolge das Objekt oder die Objekte in dem nächsten Rahmen
- 760
- Mache den nächsten Rahmen zum momentanen Rahmen
Fig. 8: - 805
- Beginn
- 810
- Finde einen Randweg E(t)
- 815
- Bewege E(t) zu den Rändern im Rahmen t + 1
- 820
- Bestimme kombinierte lokale Transformation T
- 825
- Verwende T zum Transformieren von P1(t) und P2(t)
- 830
- Ende