DE10084783B3 - System und Verfahren zur Generierung von Videoframes - Google Patents
System und Verfahren zur Generierung von Videoframes Download PDFInfo
- Publication number
- DE10084783B3 DE10084783B3 DE10084783T DE10084783T DE10084783B3 DE 10084783 B3 DE10084783 B3 DE 10084783B3 DE 10084783 T DE10084783 T DE 10084783T DE 10084783 T DE10084783 T DE 10084783T DE 10084783 B3 DE10084783 B3 DE 10084783B3
- Authority
- DE
- Germany
- Prior art keywords
- frame
- frames
- elements
- motion vector
- threshold
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/587—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
- Hintergrund der Erfindung
- Technisches Gebiet
- Die Erfindung bezieht sich auf das Feld der Videoübertragungen, insbesondere auf ein System und ein Verfahren zur Generierung von Videoframes.
- Stand der Technik
- Fast alle Anwendungen der Video- und visuellen Kommunikation befassen sich mit großen Mengen von Videodaten. Zur Generierung einer Videopräsentation zeigt ein Rendering-Computer eine Vielzahl aufeinander folgender digitaler Einzelbilder („Frames„) und simuliert hierdurch Bewegung.
- Zur Zeit bestehen noch bestimmte technische Probleme bezüglich der Übertragung und Aufarbeitung („Rendering„) einer Videopräsentation über Computernetzwerke mit niedriger Bandbreite.
1 zeigt ein konventionelles Video-Streaming-System100 . Im Videosystem100 ist ein Medien-Server102 über ein Netzwerk104 mit einem Rendering-Computer106 verbunden. Der Medienserver102 umfasst typischerweise eine oder mehrere Videopräsentationen110 zur Übertragung an den Rendering-Computer106 . - Ein bei den derzeitigen Streaming-Systemen auftretendes Problem besteht darin, dass die Übertragungsbandbreite zwischen dem Medienserver
102 und dem Rendering-Computer106 nicht ausreicht, um eine nahtlose Echtzeitpräsentation zu unterstützen, wie sie beispielsweise von einem standardmäßigen Fernsehgerät bereitgestellt wird. Um dieses Problem zu lösen und es dem Benutzer zu ermöglichen, die Präsentation in Echtzeit zu empfangen, wird die Videopräsentation oft räumlich und zeitlich komprimiert. Um des weiteren die übertragene Datenmenge zu reduzieren, überspringt der Medienserver102 ausgewählte Frames der Präsentation bzw. kann die Videopräsentation alternativ so entwickelt werden, dass sie nur einige wenige Frames pro Sekunde aufweist. Die sich hierdurch ergebenden Präsentationen sind jedoch flatterig und ruckartig, und einfach nicht so fließend wie Präsentationen mit einer höheren Frame-Rate. - Um die Rate zu erhöhen, mit welcher die Frames dem Benutzer gezeigt werden, kann ein Frame-Generator
112 zur Bereitstellung von Zwischen-Frames (nachfolgend „Interframes„) zwischen zwei ausgewählten Referenzframes der Videopräsentation110 verwendet werden. Typischerweise sind Frame-Generatoren einer von zwei Kategorien zuzuordnen: Linearbewegungs-Interpolationssysteme und bewegungskompensierte Frame-Interpolationssysteme. Linearbewegungs-Interpolationssysteme überlagern zwei Referenzframes der Videopräsentation110 , um ein oder mehrere Interframes zu generieren. Bewegungskompensierte Frame-Interpolationssysteme benutzen Bewegungsvektoren für die Frame-Interpolation. -
2 stellt das Datenformat eines Frame200 gemäß einem bewegungskompensierten Frame-Interpolationssystem dar. Das Frame200 in2 ist in neun horizontale Gruppen von Blöcken (nach dem englischen Ausdruck ”Group of Blocks” als GOB bezeichnet) unterteilt. Jede GOB umfasst elf Makroblöcke. Jeder Makroblock weist vier Luminanzblöcke mit einer Größe von je 8 Pixeln auf 8 Zeilen, gefolgt von zwei in ihrer Frequenz reduzierten (sog. ”downsampled”) Chrominanzblöcken (Cb und Cr) auf. - In bewegungskompensierten Interpolationssystemen werden ausgewählte Makroblöcke auf der Basis eines Referenzframe einem Bewegungsvektor zugewiesen.
3 zeigt ein Ausführungsbeispiel eines Referenzframe300 . Normalerweise ist das Referenzframe das letzte Frame, das an den Rendering-Computer106 übertragen wurde. Jeder Bewegungsvektor weist auf eine gleichdimensionierte Region im Referenzframe, die gut mit dem zu übertragenden Makroblock übereinstimmt. Falls keine gute Repräsentation gefunden werden kann, wird der Block unabhängig kodiert. - Durch Senden der Bewegungsvektoren, die auf Regionen im schon an den Rendering-Computer
106 übertragenen Referenzframe weisen, kann der Medienserver102 eine Repräsentation eines Frame übertragen, die weniger Daten aufweist, als wenn die Pixelinformationen für jeden Pixel in jedem Block übertragen würden. - Die aktuellen Frame-Generatoren erhöhen die Frame-Rate zwar, weisen jedoch ein simplistisches Design auf. Diese Systeme lassen bestimmte Besonderheiten innerhalb ausgewählter Streaming-Präsentationen außer Acht. Zum Beispiel berücksichtigen aktuelle Frame-Generatoren, die bewegungskompensierte Frame-Interpolation verwenden, keine Videopräsentationen mit Textzeichen. Um dem Betrachter zusätzliche Informationen zu vermitteln, wird ein Videobild oft mit Videotext überlagert. Wenn die bewegungskompensierte Frame-Interpolation ein Textzeichen enthaltendes Interframe generiert, kann das generierte Frame den Text fälschlicherweise an einen anderen Ort verschieben und hierdurch einen fließenden Text erzeugen, der vom Ersteller der Videopräsentation nicht vorgesehen war.
- Ein weiteres mit bestehenden Frame-Generatoren verbundenes Problem besteht darin, dass sie die Frame-Generierung unintelligent durchführen, unabhängig davon, ob eine solche Interpolation zu einer qualitativ hochwertigeren Videopräsentation führt. Die Frame-Interpolation erhöht zwar die Anzahl von Frames, die dem Betrachter präsentiert werden. Jedoch kann eine solche Frame-Generierung unter bestimmten Umständen zu merkwürdigen Ergebnissen führen. Einige Encoder wählen beispielsweise einen Bewegungsvektor für einen ausgewählten Block ausschließlich aufgrund der Tatsache, dass der Bewegungsvektor auf einen Block verweist, der gut mit dem ausgewählten Block übereinstimmt, obwohl zwischen einem entsprechenden Frame und dem anderen keine eigentliche Bewegung vorliegt. Da daher nicht alle Vektoren Bewegung darstellen, sollte in diesen Fällen die Frame-Generierung nicht immer angewendet werden.
-
EP 0 909 092 A2 beschreibt ein Verfahren und eine Vorrichtung zur Konvertierung von Videosignalen. Das Dokument schlägt vor, eine Bildrate (Frame Rate) eines Videosignals zu konvertieren, indem zwischen bestehenden Frames ein interpoliertes Frame eingesetzt wird. Dazu wird in einem ersten und einem zweiten Frame festgestellt, ob eine Bewegung vorliegt. Aus dieser Bewegung zwischen den beiden Frames wird ein Bewegungsvektor ermittelt. Auf Basis des Bewegungsvektors wird ein Kompensationsvektor bestimmt und es werden Bewegungskompensationssignale erzeugt. Aus den den beiden Frames zugehörigen Kompensationssignalen wird eine Differenz gebildet, welche mit einem Schwellwert verglichen wird. Liegt die Differenz unterhalb des Schwellwerts, so wird ein zusätzlicher Frame zwischen dem ersten und dem zweiten Frame aus dem ersten und dem zweiten Frame gebildet. Ist die Differenz größer oder gleich dem Schwellwert, so wird der zusätzliche Frame aus zeitlich näher liegendem ersten oder zweiten Frame gebildet. Eine Bestimmung, ob ein zusätzliches Frame gebildet wird, bleibt von dem Dokument unberührt. - Aktuelle Frame-Generatoren führen auch keinerlei Nachfilterung der generierten Frames durch. Da bewegungskompensierte Interpolationssysteme ein Interframe mittels Blöcken von Pixeln, sogenannten Makroblöcken aufbauen, ist es daher leicht nachvollziehbar, dass die Pixel eines jeden Blocks eventuell nicht gut mit den Pixeln im benachbarten Block übereinstimmen. Aus diesem Grund können die Ränder eines jeden der Blöcke dem Betrachter der Medienpräsentation sichtbar sein.
-
US 5,592,226 beschreibt ein Verfahren zur Komprimierung von Video-Daten, bei dem eine zeitliche adaptive Bewegungsinterpolation auf der Grundlage der Zeitcharakteristik des menschlichen Sehvermögens verwendet wird, um Schwellwert-Pegel bezüglich des Ausmaßes einer Bewegung insgesamt zwischen Frames festzustellen. Die globale Bewegung zwischen aufeinanderfolgenden Frames in einer Gruppe von Bildern wird gemessen, um festzustellen, ob die Bewegung kleiner oder größer als die festgelegten Schwellwert-Pegel ist, um die Anzahl zusätzlicher Rahmen zu bestimmen. - Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren und ein System zur Generierung von Videoframes in einem Computersystem zu schaffen, das in Bezug auf das Frame-Generierungsverfahren intelligent vorgeht. Falls die Frame-Generierung abnormale Ergebnisse liefern würde, sollte keine Frame-Generierung durchgeführt werden. Ein Frame-Generator sollte auch bestimmen, ob die Referenzframes Textzeichen enthalten und diese während des Frame-Generierungsverfahrens berücksichtigen. Des weiteren sollte ein Frame-Generator auch Interpolationsartefakte aus dem Interframe herausfiltern.
- Diese Aufgabe wird durch die in den Ansprüchen 1, 15 bzw. 7, 20 angegebenen Merkmale gelöst.
- Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen.
- Eine Ausführungsform der Erfindung umfasst ein Verfahren zur Generierung von Videoframes in einem Computersystem, wobei dieses beinhaltet, dass ein erstes Frame in einem Speicher im Computersystem empfangen wird, dass ein zweites Frame im Speicher im Computersystem empfangen wird, und dass bestimmt wird, ob ein Interframe zwischen dem ersten Frame und dem zweiten Frame generiert werden soll, und dass abhängig vom Bestimmungsschritt mittels der Elemente des ersten Frame und/oder zweiten Frame zumindest ein Interframe generiert wird.
- Eine weitere Ausführungsform der Erfindung umfasst ein System zur Generierung von Videoframes, welches Mittel zum Empfang eines ersten Frame in einem Speicher im Computersystem, Mittel zum Empfang eines zweiten Frame im Speicher im Computersystem, Mittel zur Bestimmung, ob ein Interframe zwischen dem ersten und zweiten Frame generiert werden soll, und Mittel zur Generierung, abhängig vom Bestimmungsschritt, von zumindest einem Interframe mittels der Elemente des ersten Frame und/oder des zweiten Frame.
- Gemäß einer Ausführungsform der Erfindung umfasst das Verfahren den Empfang eines ersten Frame mit einem Satz von Elementen, die zusammen ein digitales Bild darstellen, und die Generierung eines zweiten Frame mit den Elementen des ersten Frame, wobei das zweite Frame repräsentativ ist für das erste Frame zu einem Zeitpunkt vor oder nach dem ersten Frame.
- Gemäß einer weiteren Ausführungform der Erfindung umfasst das Verfahren den Empfang eines ersten Frame mit mehreren Makroblöcken in einem Speicher des Computersystems, wobei das erste Frame einem Video-Bild zu einem ersten Zeitpunkt entspricht, und wobei jeder Makroblock mehrere Zeilen und Spalten von Pixeln umfasst, wobei jeder Pixel einen zugehörigen Intensitätswert hat; den Empfang eines zweiten Frame mit mehreren Makroblöcken im Speicher des Computersystems, wobei das zweite Frame einem Videobild zu einem zweiten Zeitpunkt entspricht, und wobei jeder Makroblock mehrere Zeilen und Spalten von Pixeln umfasst, wobei jeder Pixel einen zugehörigen Intensitätswert hat, und die Bestimmung, ob ein Interframe zwischen dem ersten und zweiten Frame generiert werden soll, wobei die Bestimmung folgende Schritte umfasst: Empfang von Zeitintervalldaten, die auf das Darstellungstiming des ersten und zweiten Frames hinweisen, und Bestimmung, ob der Zeitunterschied zwischen dem ersten und zweiten Frame größer als ein Schwellwert ist, wobei die Größe des Schwellwerts zumindest zum Teil auf dem Wert eines Quantisierers basiert, der eine ganze Zahl ist, die Klarheit des jeweiligen Frame angibt, und Generierung, abhängig vom Bestimmungsschritt, von mindestens einem Interframe auf der Basis der Makroblöcke des ersten und zweiten Frames.
- Eine Ausführungsform des erfindungsgemäßen Systems umfasst ein Frame-Analysemodul zum Empfang von Frames sowie ein Frame-Synthesemodul zur Bestimmung, ob die Generierung von einem oder mehreren Frames zwischen zwei empfangenen Frames eine fließendere visuelle Darstellung liefert, als ohne die Frame-Generierung.
- Eine weitere Ausführungsform des erfindungsgemäßen Systems umfasst Mittel zum Empfang eines ersten Frames in einem Speicher des Computersystems, wobei das erste Frame einen ersten Satz von Elementen umfasst; Mittel zum Empfang eines zweiten Frames im Speicher des Computersystems, wobei das zweite Frame einen zweiten Satz von Elementen umfasst; und Mittel zur Wahl eines Frame-Generierungsverfahrens basierend auf dem ersten und/oder zweiten Frame; sowie Mittel zur Anwendung des gewählten Frame-Generierungsverfahrens zur Generierung von mindestens einem Interframe basierend auf dem ersten und/oder zweiten Satz von Elementen.
- Eine weitere Ausführungform der Erfindung umfasst ein System zur Generierung von Videoframes mit einem Frame-Analysemodul für den Empfang von Frames sowie einem Frame-Synthesemodul zur Bestimmung, ob die generierung von einem oder mehreren Frames zwischen zwei empfangenen Frames eine fließendere visuelle Darstellung liefert als ohne die Frame-Generierung.
- Kurze Beschreibung der Zeichnungen
- Es zeigen:
-
1 ein stark schematisiertes Blockschema eines Streaming-Video-Systems mit einem Medienserver und mindestens einem Rendering-Computer. -
2 ein Diagramm, das den Aufbau eines Videoframe darstellt, der in einer Streaming-Video-Präsentation verwendet werden kann. -
3 ein Blockschema, das ein auf Bewegungsvektoren basierendes Kodierungsschema darstellt, das im Medienserver gemäß1 benutzt werden kann. -
4 ein Blockschema, das die Bestandteile des erfindungsgemäßen Frame-Generators darstellt. -
5 ein stark schematisiertes Ablaufdiagramm, welches das Frame-Generierungsverfahren gemäß4 darstellt, wobei dieses Verfahren die Analyse von zwei Basis-Frames, die Bestimmung, ob die Frame-Generierung auf der Basis der beiden Basis-Frames erfolgen soll, und die Generierung eines oder mehrerer Interframes umfasst. -
6 –10 gemeinsam ein Ablaufdiagramm, das die in5 stattfindenden Verfahren in Hinsicht auf die Analyse der beiden Basis-Frames und der Bestimmung, ob die Frame-Generierung stattfinden soll, darstellt. -
11 eine repräsentative Zeichnung, die das Layout eines beispielhaften Basis-Frames darstellt. -
12 ein Ablaufdiagramm, das ein globales Bewegungskorrekturverfahren zur Neuberechnung jeder der in zwei Basis-Frames in5 abhängig kodierten Makroblöcke darstellt. -
13A ein Ablaufdiagramm, das vier Blöcke des zweiten Frame darstellt, die als Teil des globalen Bewegungskorrekturverfahrens in12 analysiert werden. -
13B ein Ablaufdiagramm, das vier Blöcke des zweiten Frame darstellt, die als Teil des globalen Bewegungskorrekturverfahrens12 analysiert werden. -
14 und15 repräsentative Zeichnungen, die zusätzlich zu den in13 gezeigten Blöcken, die im Rahmen des globalen Bewegungskorrekturverfahrens von12 analysiert werden, weitere Blöcke darstellen. -
16 ein Ablaufdiagramm, das das Bewegungsvektor-Filterungsverfahren zur Modifizierung der Bewegungsvektoren des Basis-Frame vor dem Frame-Generierungsverfahren darstellt. -
17 ein repräsentatives Diagramm, das darstellt, welche Blöcke während des Bewegungsvektor-Filterungsverfahrens von16 für einen ausgewählten Makroblock (durch ein umkreistes „X„ gekennzeichnet) analysiert werden. -
18 ein repräsentatives Diagramm, das zeigt, welche Blöcke während des Bewegungsvektor-Filterungsverfahrens von16 für einen ausgewählten Makroblock (ebenfalls durch ein umkreistes „X„ gekennzeichnet) analysiert werden. -
19 ein Ablaufdiagramm, das ein Texterkennungsverfahren anzeigt, das im Rahmen des in5 gezeigten Frame-Analyseschritts stattfindet. -
20 ein repräsentatives Diagramm, das eine Anzahl von Blöcken anzeigt, die während des Texterkennungsverfahrens als vermutliche Textblöcke markiert wurden. -
21 ein Ablaufdiagramm, das die im Frame-Generierungsschritt gemäß5 enthaltenen Schritte ausführlicher darstellt. -
22 ein Verfahren für die Filterung eines Interframe, das vom Frame-Generator in4 generiert wurde. - Ausführliche Beschreibung des bevorzugten Ausführungsbeispiels
- Die folgende, ausführliche Beschreibung bezieht sich auf spezifische Ausführungsformen der Erfindung. Die Erfindung kann jedoch wie in den Ansprüchen definiert und von diesen abgedeckt auf viele verschiedene Weisen ausgeführt werden. Diese Beschreibung nimmt Bezug auf die Zeichnungen, in denen einander entsprechende Teile durchgehend mit den gleichen Bezugszeichen gekennzeichnet sind.
- Systemüberblick
- In
1 wird ein stark schematisiertes Blockschema eines Streaming-Video-Systems100 , das mit einer Ausführungsform der vorliegenden Erfindung verwendet werden kann, dargestellt. Das Video-Streaming-System100 umfasst einen Medienserver102 , der über ein Netzwerk104 mit einem Rendering-Computer106 verbunden ist. - Es wird angemerkt, dass der Medienserver
102 und der Rendering-Computer106 jeweils ein beliebiger, konventioneller Allzweck-Computer sein kann, der einen oder mehr Mikroprozessoren wie z. B. vom Typ Pentium, Pentium II, Pentium Pro, xx86, 8051, MIPS, Power PC oder ALPHA benutzt. - Der Medienserver
102 umfasst einen Encoder116 zum Kodieren von Videobildern. Der Rendering-Computer106 umfasst einen Decoder118 zum Dekodieren der Videobilder, die vom Encoder116 kodiert und anschließend an den Rendering-Computer106 übertragen wurden. Zur Vereinfachung der Beschreibung wird im Folgenden die Benutzung eines Encoder und Decoder beschrieben, deren Konfiguration die Anforderungen der Standards H.263 und/oder H.263(+) Version 2 erfüllt. Die erfindungsgemäßen Verfahren können jedoch auch mit anderen standardmäßigen Kodierungs- und Dekodierungsschemas angewendet werden, beispielsweise mit H.261, MPEG-1 und MPEG-2. Es kann auch ein proprietäres Kodierungs- und Dekodierungsschema benutzt werden. - Ein Frame-Generator
112 empfängt vom Decoder118 zwei Frames gleichzeitig, wobei jeder der Frames jeweils als ein erster Basis-Frame und ein zweiter Basis-Frame fungieren, die zur Interpolation eines bzw. mehrerer Interframes benutzt werden können. - Als Bestandteil des Frame-Generierungsverfahrens benutzt und/oder berechnet der Frame-Generator
112 eine Anzahl von Schwellwerten, die nachfolgend im einzelnen beschrieben werden. Jeder dieser Schwellwerte wurde analytisch und unter Anwendung heuristischer Tests ermittelt. Es können daher in Abhängigkeit von der Übertragungsrate des Netzwerks104 , der Verarbeitungsgeschwindigkeit des Medienservers102 und Rendering-Computers106 sowie der Kodierungs- und Dekodierungsalgorithmen, die entsprechend vom Encoder116 und Decoder118 benutzt werden, unterschiedliche einzelne Werte auftreten. -
4 zeigt Komponenten des Frame-Generator112 gemäß einer Ausführungsform der vorliegenden Erfindung. Der Frame-Generator112 weist ein Frame-Analysemodul400 und ein Frame-Synthesemodul402 auf. In einer Ausführungsform bestehen das Frame-Analysemodul400 und das Frame-Synthesemodul402 jeweils aus verschiedenen Softwaremodulen, die typischerweise separat kompiliert wurden und zu einem einzigen, ausführbaren Programm zusammengefasst sind. Dementsprechend können das Frame-Analysemodul400 und das Frame-Synthesemodul402 optional mit einem oder mehreren Softwaremodulen, die auf dem Rendering-System106 vorhanden sind und ausgeführt werden, integriert werden. - In einer Ausführungsform arbeitet der Frame-Generator
112 mittels einer Zustandsmaschine404 . In einer Ausführungsform ist die Zustandsmaschine404 ein Softwaremodul, das in seiner Art dem Frame-Analysemodul400 und/oder dem Frame-Synthesemodul402 ähnelt. Die Zustandsmaschine404 ist betriebsfähig mit dem Frame-Analysemodul400 und dem Frame-Synthesemodul402 verbunden. In einer Ausführungsform der Erfindung weist die Zustandsmaschine404 sieben Zustände auf: KEYFRAME, ABORT, LOW_ACTION, MODERATE_ACTION, HIGH_ACTION, BIG_CHANGE und SMALL_CHANGE. Dem Fachmann wird es ohne weiteres verständlich sein, dass auch eine einfachere bzw. eine kompliziertere Zustandsmaschine benutzt werden kann. - Der Frame-Generator
112 benutzt einen bzw. mehrere der Zustände der Zustandsmaschine404 , um zu bestimmen, welche Aktionen während der Frame-Analyse und Frame-Generierung durchgeführt werden müssen. In der Tabelle 1 werden die einzelnen Zustände kurz beschrieben. Tabelle 1Zustand Zustandsbeschreibung KEYFRAME Das zweite Frame wird unabhängig kodiert. ABORT Die Frame-Generierung sollte nicht fortgesetzt werden. LOW_ACTION Die Bewegungsvektoren des zweiten Basis-Frame sind unter einem ausgewählten Schwellwert. MODERATE_ACTION Zwischen den ersten und zweiten Basis-Frames wird eine mäßige Bewegung festgestellt. HIGH_ACTION Zwischen den ersten und zweiten Basis-Frames wird eine signifikante Bewegung festgestellt. SMALL_CHANGE Zwischen den ersten und zweiten Basis-Frames werden kleinere Änderungen festgestellt. BIG_CHANGE Zwischen den ersten und zweiten Basis-Frames werden signifikante Änderungen festgestellt. - Die Bedeutung der einzelnen Zustände der Zustandsmaschine
404 im Bezug auf das Frame-Generierungsverfahren wird nachfolgend ausführlicher beschrieben. - Unter nochmaliger Bezugname auf
4 können das Frame-Analysemodul400 , Frame-Synthesemodul402 und die Zustandsmaschine404 jeweils in einer beliebigen Programmiersprache wie C, C++, BASIC, Pascal, JAVA und FORTRAN geschrieben sein. C, C++, BASIC, Pascal, JAVA und FORTRAN sind branchenübliche Programmiersprachen, für die viele handelsübliche Compiler benutzt werden können, um ausführbaren Code zu erzeugen. Die vorgenannten Komponenten des Frame-Generators112 können ferner in Verbindung mit verschiedenen Betriebssystemen wie UNIX, Solaris, Disk Operating System (DOS), OS/2, Windows 3.X, Windows 95, Windows 98 und Windows NT benutzt werden. - Alternativ können das Frame-Analysemodul
400 , das Frame-Synthesemodul402 und/oder die Zustandsmaschine404 jeweils als Hardwaregerät ausgebildet sein. - Systembetrieb
-
5 zeigt ein stark schematisiertes Ablaufdiagramm, welches das Frame-Generierungsverfahren des Frame-Generator112 (1 ) darstellt. Vor dem Start hat der Frame-Generator112 mindestens ein erstes und zweites Basis-Frame aus dem Decoder118 empfangen. Der Decoder118 hat dem Frame-Generator112 ferner verschiedene statistische Informationen bereitgestellt. Anfangend bei einem Schritt502 analysiert der Frame-Generator112 die ersten und zweite Basis-Frames und statistischen Informationen. Das Verfahren zur Analyse der Basis-Frames wird nachfolgend unter Bezugname auf6 bis21 beschrieben. Es wird angemerkt, dass der Begriff „Frame-Generierung„ in diesem Dokument als die Frame-Interpolation beinhaltend verstanden werden soll. - Als nächstes bestimmt der Frame-Generator
112 (1 ) in einem Entscheidungsschritt504 , ob auf der Basis der ersten und zweiten Basis-Frames und der statistischen Informationen ein Interframe generiert werden soll. Das Verfahren zur Bestimmung, ob ein Interframe generiert werden soll, wird nachstehend unter Bezugname auf6 bis20 beschrieben. Einige der Faktoren, die vom Frame-Generator112 bei der Bestimmung, ob eine Frame-Generierung durchgeführt werden soll, berücksichtigt werden, sind jedoch hier zusammengefasst angegeben: das Vorhandensein von Textzeichen, die Größe der mit den Basis-Frames zugehörigen Bewegungsvektoren, die Anzahl der in den Basis-Frames unabhängig kodierten Makroblöcke, die Zeitabstände zwischen den Basis-Frames, ob die mit jedem der Makroblöcke in den Basis-Frames zugehörigen Bewegungsvektoren korrigiert werden können sowie Vergleichsinformationen über die Vektoren jeder der Makroblöcke in den Basis-Frames. - Falls der Frame-Generator
112 feststellt, dass es akzeptabel ist, Interframes zu generieren, fährt der Frame-Generator112 mit dem Schritt506 fort. Im Schritt506 generiert der Frame-Generator112 je nach Implementierung ein Interframe oder mehrere Interframes. Das Verfahren zur Generierung von Interframes wird nachfolgend noch ausführlicher unter Bezugnahme auf21 beschrieben. In Schritt506 kann der Frame-Generator112 die generierten Frames auch filtern. Das Verfahren zum Filtern der generierten Frames wird nachfolgend unter Bezugname auf22 beschrieben. - Es wird nun nochmals auf den Entscheidungsschritt
504 verwiesen. Falls der Frame-Generator112 (1 ) feststellt, dass es nicht akzeptabel ist, Interframes zu generieren, wird das Verfahren bei Schritt508 abgebrochen. - Zustandsbestimmung
- Die
6 bis10 bilden zusammengenommen ein Ablaufdiagramm, das ein Zustandsbestimmungsverfahren darstellt. Der Frame-Generator112 benutzt den Zustand, um zu bestimmen, ob die Frame-Generierung angebracht ist, und um ein angemessenes Frame-Generierungsverfahren auszuwählen.6 –10 veranschaulichen noch ausführlicher die Schritte, die in Schritt502 von5 durchgeführt werden. - Beginnend bei Schritt
600 sendet der Decoder118 (1 ) ein erstes Basis-Frame, ein zweites Basis-Frame und statistische Informationen über die ersten und zweiten Basis-Frames an den Frame-Generator112 (1 ). Der Frame-Generator112 analysiert dann in nachfolgenden Schritten jedes dieser beiden Basis-Frames als Teil des Verfahrens zum Generieren eines Interframe. Nachdem der Frame-Generator112 (1 ) seine Analyse der ersten und zweiten Basis-Frames abgeschlossen hat, umfassen die nächsten beiden Basis-Frames, die dem Frame-Generator112 bereitgestellt werden, das zweite Basis-Frame und ein neues Basis-Frame, wobei das zweite Basis-Frame das erste Basis-Frame ersetzt. Dies bedeutet, dass jedes Basis-Frame in der Videopräsentation110 (1 ) mindestens zweimal an den Frame-Generator112 geleitet wird, einmal als ein erstes Basis-Frame und einmal als ein zweites Basis-Frame. Es wird ebenso angemerkt, dass in einer bevorzugten Ausführungsform keine Frame-Generierung durchgeführt wird, bis der Frame-Generator112 Daten vom Decoder118 empfängt, die mindestens zwei Frames darstellen. - In einer Ausführungsform der Erfindung, die den Standard H.263 benutzt, können die vom Decoder
118 (1 ) übertragenen statistischen Informationen die folgenden einschließen. Erstens enthalten die statistischen Informationen einen Anhaltspunkt dafür, ob das zweite Basis-Frame unabhängig kodiert wurde. Gemäß dem Standard H.263 kann ein Frame unabhängig kodiert oder abhängig kodiert sein. Falls ein Frame unabhängig kodiert ist, wird jeder Makroblock des Frame vom Medienserver102 an den Rendering-Computer106 übertragen. Falls das Frame abhängig kodiert ist, wird ein mit jedem der abhängig kodierten Makroblöcke zugehöriger Bewegungsvektor an den Rendering-Computer106 gesendet. Jeder der Bewegungsvektoren identifiziert Regionen in einem vorher gesendeten Frame. Zweitens umfassen die statistischen Informationen einen Quantisierer für das zweite Basis-Frame. Der Quantisierer ist eine ganze Zahl zwischen 1 und 31, die die Klarheit des zweiten Basis-Frame angibt. Im Allgemeinen gilt, dass, je niedriger der Wert des Quantisierers, desto höher die Klarheit des zweiten Basis-Frame. Drittens umfassen die statistischen Informationen die Zeit in Millisekunden zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame. Die statistischen Informationen können auch die Makroblockinformationen für die ersten und zweiten Basis-Frames enthalten. Die Makroblockinformationen enthalten für jeden Makroblock zumindest eine von zwei Fakten: (i) falls der Makroblock abhängig kodiert wurde, einen zugehörigen Bewegungsvektor, oder (ii) falls der Makroblock unabhängig kodiert wurde, statistische Informationen über den Makroblock. - Im nächsten Schritt
602 führt der Frame-Generator112 (1 ) verschiedene Fehlerüberprüfungsroutinen an den ersten und zweiten Basis-Frames durch, um zu bestimmen, ob die Basis-Frames gültige Informationen enthalten. Falls die ersten und zweiten Basis-Frames nicht gültig sind, bricht der Frame-Generator112 das Frame-Generierungsverfahren ab. Falls die ersten und zweiten Basis-Frames gültig sind, fährt der Frame-Generator112 andernfalls mit Schritt604 fort, um festzustellen, ob das zweite Basis-Frame unabhängig kodiert oder mit Bewegungsvektoren kodiert wurde. - Falls das zweite Frame unabhängig kodiert wurde, führt der Frame-Generator
112 (1 ) mit einem Schritt610 fort und setzt den Zustand des Frame-Generators112 auf „KEYFRAME„. Der Frame-Generator112 führt dann mit einem Entscheidungsschritt612 fort und bestimmt, ob das durch die statistischen Informationen identifizierte Zeitintervall zwischen den beiden Basis-Frames größer als ein erster Schwellwert ist. In einer Ausführungsform der Erfindung beträgt der erste Schwellwert ca. 67 Millisekunden. 67 Millisekunden stellen die Zeit zwischen zwei Basis-Frames dar, die mit einer Rate von 15 Frames pro Sekunde präsentiert werden. Dem Fachmann wird durchaus verständlich sein, dass sich dieser Schwellwert von Implementierung zu Implementierung verändern kann. - Falls die Zeit zwischen den ersten und zweiten Basis-Frames größer ist als der erste Schwellwert, geht der Frame-Generator
112 (1 ) zum Schritt614 weiter. In Schritt614 setzt der Frame-Generator112 den Status aufgrund des relativ langen Zeitintervalls zwischen den zwei Basis-Frames auf „BIG_CHANGE„. Wie vorstehend beschrieben weist der Zustand „BIG_CHANGE„ daraufhin, dass zwischen den Bildern in den ersten und zweiten Basis-Frames signifikante Unterschiede vorliegen können. Daraufhin beendet der Frame-Generator112 am Beendungsschritt616 seine vorläufige Frame-Analyse. - Um nochmals auf den Entscheidungsschritt
612 Berg zu nehmen: Falls der Frame-Generator112 (1 ) feststellt, dass die Zeit zwischen den zwei Basis-Frames kleiner als der erste Schwellwert ist, halt der Frame-Generator112 den Zustand auf „KEYFRAME„ aufrecht. Der Frame-Generator112 geht ferner zum Beendungsschritt616 weiter und beendet das Zustandsbestimmungsverfahren. - In Hinsicht auf den Entscheidungsschritt
604 (6 ) ist weiter zu sagen, dass der Frame-Generator112 zu einem Entscheidungsschritt618 weitergeht, falls der Frame-Generator112 (1 ) feststellt, dass das zweite Basis-Frame nicht unabhängig kodiert ist. In Entscheidungsschritt618 bestimmt der Frame-Generator112 , ob die Zeitdauer zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame größer als ein zweiter Schwellwert ist. Der Frame-Generator112 geht bei Vorliegen eines großen Intervalls zwischen den Basis-Frames davon aus, dass wahrscheinlich eine große Änderung in den Bildern jeder der Basis-Frames vorliegt. Falls der Wert des Quantisierers hoch ist, wird das Bild in einem Frame weiterhin, wie vorstehend erklärt, weniger klar sein als in einem Frame mit einem niedrigeren Quantisierer. Jegliche Änderungen in einem Frame mit einem niedrigen Quantisierer sind daher leichter zu erkennen als in einem Frame mit einem niedrigeren Quantisierer. In einer Ausführungsform der Erfindung entspricht der zweite Schwellwert dem zwanzigfachen (20×) Wert des Quantisierers. Der Wert zwanzig wurde durch verschiedene heuristische Methoden und Analyse erhalten und stellt in einer Ausführungsform bei Benutzung in Verbindung mit dem Quantisierer einen vorteilhaften Schwellwert bereit. - Falls die Dauer zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame größer ist als der zweite Schwellwert, geht der Frame-Generator
112 (1 ) zum Schritt614 weiter und setzt den Zustand in der Zustandsmaschine404 (4 ) auf „BIG_CHANGE„. Andernfalls, falls die Dauer zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame weniger als der Wert des zweiten Schwellwerts beträgt, geht der Frame-Generator112 zu einem Schritt622 weiter und zählt die Anzahl von Blöcken im zweiten Basis-Frame, die unabhängig kodiert sind. - Sodann bestimmt der Frame-Generator
112 (1 ) in einem Entscheidungsschritt624 , ob der Prozentsatz der in Schritt622 gezählten Blöcke größer ist als ein dritter Schwellwert. In einer Ausführungsform der Erfindung beträgt der dritte Schwellwert ca. 6 2/3% der Anzahl der Makroblöcke im zweiten Frame. Der Fachmann wird durchaus verstehen, dass Makroblöcke normalerweise unabhängig kodiert sind, wenn der Encoder116 (1 ) keine gute Übereinstimmung zwischen dem Makroblock und einer entsprechend dimensionierten Region in einem ausgewählten bzw. mehreren ausgewählten vorherigen Frames finden kann. Mit zunehmender Anzahl unabhängig kodierter Makroblocks nimmt der Frame-Generator112 an, dass eine größere Wahrscheinlichkeit besteht, dass eine große Änderung zwischen den ersten und zweiten Basis-Frames vorliegt und dass eine Frame-Generierung unangebracht sein kann. - Falls die Anzahl von unabhängig kodierten Makroblöcken im zweiten Basis-Frame größer ist als der dritte Schwellwert, geht der Frame-Generator
112 zum Schritt614 weiter. Andernfalls, falls die Anzahl von unabhängig kodierten Makroblöcken im zweiten Frame geringer als der dritte Schwellwert ist, geht der Frame-Generator112 zu einem Entscheidungsschritt626 weiter. - In einem Entscheidungsschritt
626 bestimmt der Frame-Generator112 (1 ), ob der maximale Bewegungsvektor im zweiten Frame geringer ist als ein vierter Schwellwert. In einer Ausführungsform der Erfindung bestimmt der Frame-Generator112 den maximalen Bewegungsvektor wie folgt. Zuerst wird für jeden Bewegungsvektor ein Skalar bestimmt. Der Skalar entspricht der Summe des Quadrats jeder der x- und y-Komponenten eines Bewegungsvektors. Dann wird der Skalar mit dem höchsten Wert ausgewählt. - In einer Ausführungsform der Erfindung hängt der Wert des vierten Schwellwerts vom Wert des Quantisierers für das zweite Frame ab. Der Frame-Generator
112 benutzt den Quantisierer, um zu bestimmen, ob einer der Bewegungsvektoren im zweiten Frame im Verhältnis zum Quantisierer relativ groß ist. Die Tabelle 2 stellt die Werte des vierten Schwellwerts in Abhängigkeit vom Wert des Quantisierers dar. Tabelle 2Quantisiererwert 4. Schwellwert Quantisierer < 5 6 5 ≥ Quantisierer < 11 12 Quantisierer ≥ 12 24 - Falls der mit dem maximalen Bewegungsvektor zugehörige Skalar weniger als der vierte Schwellwert beträgt, geht der Frame-Generator
112 zu einem Schritt630 weiter. In einem Schritt630 setzt der Frame-Generator112 den Zustand in der Zustandsmaschine404 (4 ) auf „LOW_ACTION„. Durch Weitergehen zum Schritt616 hat der Frame-Generator112 das vorläufige Zustandsbestimmungsverfahren abgeschlossen. - In Hinsicht auf den Entscheidungsschritt
626 ist ferner anzumerken, dass, falls der Frame-Generator112 (1 ) feststellt, dass der maximale Bewegungsvektor größer ist als der vierte Schwellwert, der Frame-Generator112 zu einem Schritt632 weitergeht. Im Schritt632 berechnet der Frame-Generator112 für jeden Makroblock im zweiten Frame: (i) den durchschnittlichen Abstand zwischen dem mit einem entsprechenden Makroblock zugehörigen Bewegungsvektor und dem mit dem Makroblock rechts vom entsprechenden Makroblock zugehörigen Bewegungsvektor; und (ii) den durchschnittlichen Abstand zwischen dem mit dem entsprechenden Makroblock zugehörigen Bewegungsvektor und dem mit dem Makroblock unter dem entsprechenden Makroblock zugehörigen Bewegungsvektor. In einer Ausführungsform wird der Abstand zwischen zwei Bewegungsvektoren berechnet, indem der absolute Wert der Differenz zwischen den x-Komponenten und den y-Komponenten jedes der beiden Bewegungsvektoren festgestellt wird. -
11 stellt z. B. ein beispielhaftes Frame900 mit einer Mehrzahl von Makroblöcken902 dar. Das Frame900 ist das zweite von zwei Basis-Frames, das vom Decoder118 (1 ) an den Frame-Generator112 (1 ) gesendet wurde. Ein Makroblock906 in einer ersten räumlichen, in9 gezeigten Position weist einen zugehörigen Bewegungsvektor908 auf, der sich auf eine Region in einem vorhergehenden Basis-Frame bezieht, welche die gleiche räumliche Position wie der Makroblock910 aufweist. In diesem Beispiel hat die x-Komponente des Bewegungsvektors908 den Wert 2, und die y-Komponente des Bewegungsvektors908 hat den Wert –2. In einem weiteren Beispiel weist ein Makroblock914 einen zugehörigen Bewegungsvektor918 auf, der sich auf eine Region in einem vorherigen Basis-Frame, wie z. B. das erste Basis-Frame, bezieht, welche die gleiche räumliche Position wie der Makroblock920 aufweist. Die x-Komponente des Bewegungsvektors918 hat den Wert 0, und die y-Komponente des Bewegungsvektors918 hat den Wert –2. - Bei diesem Beispiel werden des weiteren zur Berechnung der Differenz zwischen dem Bewegungsvektor
908 und dem Bewegungsvektor918 die folgenden Berechungen durchgeführt: Erstens wird der absolute Wert der Differenzen der x-Komponenten jedes Vektors bestimmt, d. h. 2 – 0 = 2. Zweitens wird der absolute Wert der Differenzen der y-Komponenten jeder Komponente [jedes Vektors] bestimmt, d. h. 2 – 2 = 0. - Daraufhin unterteilt der Frame-Generator
112 (1 ) in einem Schritt634 gemäß6 das zweite Frame in Abschnitte. In einer Ausführungsform der Erfindung wird das zweite Basis-Frame grob in vier Quadranten926 ,928 ,930 ,932 (11 ) unterteilt. In einer Ausführungsform der Erfindung sind die Spalte rechts außen und die unterste Zeile der Makroblöcke in keinem der Abschnitte enthalten. - Nachdem die Frames in Abschnitte unterteilt worden sind, geht der Frame-Generator
112 (1 ) zu einem Schritt638 (7 ) weiter. Im Schritt638 summiert der Frame-Generator112 für jeden der Abschnitte die berechneten Bewegungsvektordifferenzen (in Schritt632 bestimmt) für die Makroblöcke innerhalb eines entsprechenden Abschnitts, d. h. die Summe der Differenzen für jede der x- und y-Komponenten zwischen jedem der Makroblöcke und den rechten und unteren Nachbarn des Makroblocks. - Im folgenden Schritt
640 (7 ) vergleicht der Frame-Generator112 jede der mit den einzelnen Abschnitten zugehörigen Summen (in Schritt632 bestimmt) mit einem fünften Schwellwert. In einer Ausführungsform der Erfindung wird der fünfte Schwellwert auf ca. 64 eingestellt. Dazu ist zu sagen, dass der Wert 64 mit Hilfe verschiedener heuristischer Analyse- und Testmethoden bestimmt wurde. - Falls in einem weiteren Schritt
642 eine der Summen den fünften Schwellwert überschreitet, geht der Frame-Generator112 zu einem Schritt644 weiter und setzt den Zustand in der Zustandsmaschine404 (4 ) auf „HIGH_ACTION„. Durch Fortfahren zum Schritt616 (6 ) über den auf eine andere Seite verweisenden Verbindungspunkt „B„ beendet der Frame-Generator112 das Zustandsbestimmungsverfahren. - Um nochmals Bezug auf den Schritt
642 (7 ) zu nehmen: Falls keine der mit einem der Abschnitte zugehörigen Summen den Schwellwert überschreitet, geht der Frame-Generator112 (1 ) über den auf eine andere Seite verweisenden Verbindungspunkt „C„ zu einem Schritt800 (8 ) weiter. In einem Schritt800 berechnet der Frame-Generator112 eine Summe der quadrierten Differenz zwischen der Pixelintensität jeder der Pixel im zweiten Basis-Frame und der Pixel im ersten Basis-Frame. - In
9 vergleicht der Frame-Generator112 beispielsweise die Pixelintensität eines jeden Pixels in einem Makroblock906 mit der Pixelintensität von Pixeln in einem Makroblock in der gleichen räumlichen Position eines vorherigen Basis-Frame, wie z. B. des ersten Basis-Frame. In einer Ausführungsform der vorliegenden Erfindung wird jeder Pixel im Makroblock durch eine ganze Zahl zwischen 0 und 255 dargestellt, wobei die ganze Zahl die „Intensität„ jedes der Pixel identifiziert. Der Wert 0 steht hierbei für schwarz, der Wert 255 für weiß, und dazwischen liegende Werte stellen eine relative Mischung dieser beiden dar. - Bei einem weiteren Schritt
802 (8 ) benutzt der Frame-Generator112 (1 ) die in Schritt800 berechneten Werte zur Berechnung der durchschnittlichen Summe der quadrierten Differenz der Intensitätswerte zwischen den Pixeln in jedem der Makroblöcke. Diese durchschnittliche Summe der quadrierten Differenz wird durch Summierung der in Schritt802 berechneten Differenzen und anschließendem Dividieren der Summe durch die Anzahl der Pixel im Makroblock berechnet. - In einem nächsten Schritt
804 berechnet der Frame-Generator112 die durchschnittliche Summe der quadrierten Differenz der Pixelintensität für jeden der Makroblöcke. Die durchschnittliche Summe der quadrierten Differenz wird durch Summierung der durchschnittlichen Summe der quadrierten Differenz für jeden Makroblock (in Schritt802 berechnet) und Dividieren der Summe durch die Anzahl der Makroblöcke berechnet. - Bei einem darauf folgenden Entscheidungsschritt
808 bestimmt der Frame-Generator112 , ob die durchschnittliche Summe der quadrierten Pixelintensität größer ist als ein sechster Schwellwert. In einer Ausführungsform der Erfindung wird der sechste Schwellwert durch die Gleichung 1 berechnet.Sechster Schwellwert = Quantisierer·4·(133/Δ)2. (1) - Quantisierer
- = Klarheitsstufe der zweiten Frame-Zeit.
- Δ
- = Zeitdauer in Millisekunden zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame.
- Dazu wird angemerkt, dass der Wert 133 der Zeit in Millisekunden zwischen zwei Frames, die mit einer Rate von 7,5 Frames pro Sekunde (einer typischen Übertragungsrate für ein 28,8 kn/s-Kommunikationsgerät) gesendet werden, entspricht.
- Falls die durchschnittliche Summe der quadrierten Pixelintensität größer ist als der sechste Schwellwert, geht der Frame-Generator
112 (1 ) zu einem Schritt812 weiter und setzt den Zustand in der Zustandsmaschine404 auf „BIG_CHANGE„. Daraufhin kehrt das Verfahren über den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendungsschritt616 (6 ) zurück, und der Frame-Generator112 schließt das vorläufige Zustandsbestimmungsverfahren ab. - Um nochmals Bezug auf den Entscheidungsschritt
808 (8 ) zu nehmen: Falls der Durchschnitt unter dem sechsten Schwellwert liegt, geht der Frame-Generator112 (1 ) zu einem Schritt814 weiter. Im Schritt814 bestimmt der Frame-Generator112 , ob die Summe der quadrierten Differenz der Pixelintensität zwischen den Pixeln in den ersten und zweiten Basis-Frames kleiner als der siebte Schwellwert ist. In einer Ausführungsform der Erfindung wird der siebte Schwellwert auf ca. 2500 eingestellt; dabei können natürlich auch andere Schwellwerte benutzt werden, besonders bei anderen Implementierungen. - Falls die Summe der quadrierten Differenzen der Pixelintensität kleiner ist als der siebte Schwellwert, geht der Frame-Generator
112 (1 ) zu einem Schritt816 weiter. Im Schritt816 setzt der Frame-Generator112 den Zustand in der Zustandsmaschine404 auf „SMALL_CHANGE„. Daraufhin geht der Frame-Generator112 über den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendigungsschritt616 weiter und schließt das Zustandsbestimmungsverfahren ab. - Bei nochmaliger Bezugnahme auf den Entscheidungsschritt
814 ist anzumerken, dass, falls der Frame-Generator112 (1 ) feststellt, dass die Summe der quadrierten Differenz der Pixelintensität zwischen den ersten und zweiten Frames den siebten Schwellwert überschreitet bzw. diesem entspricht, der Frame-Generator112 zu einem Schritt818 weitergeht. Im Schritt818 setzt der Frame-Generator112 den Zustand in der Zustandsmaschine404 auf „MODERATE_ACTION„. Daraufhin geht der Frame-Generator112 aber den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendigungsschritt616 weiter und schließt das Bestimmungsverfahren ab. - Frame-Analyse
-
9 und10 zeigen gemeinsam ein Ablaufdiagramm zur Durchführung einer zusätzlichen Analyse in Berg auf die ersten und zweiten Basis-Frames. Insbesondere zeigen9 und10 ein Verfahren das, in Abhängigkeit vom Wert des von der Zustandsmaschine404 aufrechterhaltenen Zustands, bestimmt, ob die Generierung von Interframes zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame angebracht ist. Der Frame-Generator112 (1 ) geht vom Beendigungsschritt616 (6 ) zu einem Schritt1000 weiter (9 ). - Abhängig vom Zustand der Zustandsmaschine
404 geht der Frame-Generator112 (1 ) entweder zu einem Schritt1004 , einem Schritt1008 oder einem Schritt1009 weiter. Falls der Zustand in der Zustandsmaschine404 (4 ) entweder „LOW_ACTION„ oder „KEYFRAME„ ist, geht der Frame-Generator112 zum Schritt1004 weiter. Vom Schritt1004 geht der Frame-Generator112 zu einem Schritt1012 weiter, um zu bestimmen, ob der Frame-Generator112 Text in den ersten und zweiten Basis-Frames feststellen kann. Das Texterkennungsverfahren wird nachfolgend unter Bezugnahme auf20 ausführlicher beschrieben. - In einem Entscheidungsschritt
1016 bestimmt der Frame-Generator112 (1 ) als nächstes, ob der Zustand in der Zustandsmaschine404 (4 ) einem der folgenden Zustände entspricht: „ABORT„, „SMALL_CHANGE„, „BIG_CHANGE„ oder „HIGH_ACTION„. Falls der Zustand entweder „ABORT„, „SMALL_CHANGE„, „BIG_CHANGE„ oder „HIGH_ACTION„ ist, lässt der Frame-Generator112 die Frame-Generierung fehlschlagen und geht zu einem Fehlerschritt1020 weiter. Um dabei zu helfen, die Angebrachtheit einer Frame-Generierung in nachfolgenden Frames zu bestimmen, zeichnet der Frame-Generator112 im Fehlerschritt1020 auf, dass die Frame-Generierung nicht angebracht war. - Um nochmals auf den Entscheidungsschritt
1016 (9 ) Bezug zu nehmen: Falls der Zustand in der Zustandsmaschine404 (4 ) nicht einer der Zustände „ABORT„, „SMALL_CHANGE„, „BIG_CHANGE„ oder „HIGH_ACTION„ ist, geht der Frame-Generator112 (1 ) über den auf eine andere Seite verweisenden Verbindungspunkt „D„ zu einem Schritt1102 (10 ) weiter. - Im Schritt
1102 (10 ) überprüft der Frame-Generator112 den Status des Zustands der Zustandsmaschine404 während der letzten beiden Frame-Generierungsversuche. Wie unter Bezugnahme auf den Fehlerschritt1020 festgestellt wurde, zeichnet der Frame-Generator112 nach der Verarbeitung der ersten und zweiten Basis-Frames auf, ob die Frame-Generierung in Hinsicht auf die zwei Frames als angebracht festgestellt wurde. - Falls der Frame-Generator
112 (1 ) beim Fortfahren mit einem Entscheidungsschritt1106 bestimmt, dass die Frame-Generierung in einem der letzten zwei Frame-Generierungsversuche als nicht angebracht festgestellt worden war, geht der Frame-Generator112 zu einem Schritt1108 weiter und lässt das Frame-Generierungsverfahren fehlschlagen. Es wird angemerkt, dass der Frame-Generator112 , um zu verhindern, dass der Frame-Generator112 permanent in einem Fehlerzustand stecken bleibt, den Grund für das Fehlschlagen der Frame-Generierung in den vorherigen zwei Schritten feststellt. Falls die Frame-Generierung in den vorhergehenden zwei Versuchen aufgrund anderer Faktoren als eines Fehlschlags in noch einem anderen vorhergehenden Frame-Generierungsversuch fehlschlug, schlägt die Frame-Generierung fehl. Falls jedoch die Frame-Generierung aufgrund des Fehlschlags eines vorhergehenden Versuchs einer Frame-Generierung fehlschlug, oder falls keine Fehlschläge auftraten, ignoriert der Frame-Generator112 den eventuellen Fehlschlag und geht zu einem Endschritt1110 weiter. - Es wird nun nochmals auf den Schritt
1000 (9 ) Bezug genommen: Falls der Frame-Generator112 (1 ) bestimmt, dass der Zustand im Frame-Generator [in der Zustandsmaschine]404 (4 ) „MODERATE_ACTION„ oder „HIGH_ACTION„ ist, geht der Frame-Generator112 zum Schritt1008 weiter. Der Frame-Generator112 geht zu einem Schritt1030 weiter und versucht, die mit jedem der Makroblöcke im zweiten Basis-Frame zugehörigen Bewegungsvektoren so zu ändern, dass jeder der Bewegungsvektoren eine Bewegung zwischen dem zweiten Basis-Frame und dem ersten Basis-Frame darstellt. Es ist hierbei signifikant, dass jeder der Bewegungsvektoren anfangs vom Encoder116 aufgrund der Tatsache ausgewählt worden sein kann, dass die durch diesen Bewegungsvektor identifizierte Region eine gute Übereinstimmung mit dem Makoblock darstellt, und nicht weil sich das Bild im Makroblock tatsächlich in die durch den Bewegungsvektor identifizierte Richtung bewegte. Aufgrund dieser Tatsache versucht der Frame-Generator112 daher, jegliche Bewegungsvektoren, die keine Bewegung des Bilds in den ersten und zweiten Basis-Frames darstellen, nachzuändern. Das Verfahren zum Korrigieren der Richtung jedes der Bewegungsvektoren des zweiten Basis-Frame wird nachstehend unter Bezugnahme auf12 ausführlicher beschrieben. - Als nächstes führt der Frame-Generator
1044 [112 ] in Schritt1044 eine Bewegungsvektorfilterung durch. Das Verfahren zur Bewegungsvektorfilterung wird nachstehend unter Bezugnahme auf16 beschrieben. Kurz gesagt besteht die Funktion des Bewegungsvektorfilterungsverfahrens jedoch in der Eliminierung von Ausreißern eines Makroblocks, der sich gemäß den zugehörigen Bewegungsvektoren des Makroblocks im Verhältnis zu seinen Nachbarn radikal bewegt. - Daraufhin bestimmt der Frame-Generator
112 in einem Zustand [Schritt]1046 nochmals den Zustand des Frame-Generator112 . In einer Ausführungsform der Erfindung führt der Frame-Generator112 jeden der Schritte in den6 ,7 und8 nochmals aus. Optional kann der Frame-Generator112 ausgewählte Schritte überspringen, die nicht von der Texterkennung und vom globalen Bewegungsvektor-Korrekturverfahren betroffen sind, z. B. die Bestimmung der Zeit zwischen Frames (Schritt618 ) und die Bestimmung der Anzahl unabhängig kodierter Blöcke (Schritt622 ). - Der Frame-Generator
112 geht zu einem Entscheidungsschritt1048 weiter und bestimmt, ob sich der Zustand nach der Ausführung des Schritts1046 von „MODERATE_ACTION„ zu „HIGH_ACTION„ geändert hat. Falls sich der Zustand von „MODERATE_ACTION„ zu „HIGH_ACTION„ geändert hat, geht der Frame-Generator zu einem Zustand [Schritt]1050 weiter. Im Zustand [Schritt]1050 ändert der Frame-Generator112 den Zustand auf „MODERATE_ACTION„ zurück. Der Frame-Generator112 geht dann zu einem Zustand [Schritt]1052 weiter. - Um nun wieder auf den Entscheidungszustand
1048 [Entscheidungsschritt] Bezug zu nehmen: Falls der Frame-Generator112 bestimmt, dass der Zustand sich nicht von „MODERATE_ACTION„ auf „HIGH_ACTION„ geändert hat, geht der Frame-Generator zum Zustand [Schritt]1052 weiter. - Der Frame-Generator
112 geht entweder vom Entscheidungsschritt1048 oder dem Schritt1050 zu einem Schritt1052 weiter. Im Schritt1052 wiederholt der Frame-Generator112 das Verfahren für die Bewegungsvektorfilterung (wobei dieses Verfahren zuerst in Schritt1044 durchgeführt worden war). Das Verfahren für die Bewegungsvektorfilterung wird nachfolgend unter Bezugnahme auf16 beschrieben. - Daraufhin kehrt der Frame-Generator
112 zum Schritt1012 zurück und führt eine (vorstehend beschriebene) Texterkennung durch. - Es wird nun nochmals auf den Schritt
1000 (9 ) Berg genommen: Falls der Frame-Generator112 (1 ) feststellt, dass der Schritt [Zustand] im Frame-Generator [in der Zustandsmaschine]404 (4 ) „ABORT„, „SMALL_CHANGE„ oder „BIG_CHANGE„ ist, geht der Frame-Generator112 zum Schritt1009 weiter. Daraufhin stoppt der Frame-Generator112 im Schritt1010 die Analyse der ersten und zweiten Basis-Frames für die Frame-Generierung. Im Schritt1010 hat der Frame-Generator112 festgestellt, dass es nicht angebracht ist, einen Interframe zu generieren und lässt das Frame-Generierungsverfahren deshalb fehlschlagen. Der Verfahrensablauf kehrt zum Schritt502 (5 ) zurück, in welchem der Frame-Generator112 die nächsten zwei vom Decoder118 bereitgestellten Frames analysiert. - Globale Bewegungskorrektur
-
12 ist ein Ablaufdiagramm eines Verfahrens zur Bestimmung, ob einer der Makroblöcke im zweiten Basis-Frame eine besser übereinstimmende Region im ersten Basis-Frame aufweist, als von dem zu diesem Zeitpunkt mit jedem der Makroblöcke zugehörigen Bewegungsvektor angegeben wird. - Anfangend mit einem Schritt
1200 erhält der Frame-Generator112 (1 ) eine Liste prospektiver Bewegungsvektoren, die zur Identifizierung einer möglicherweise besser übereinstimmenden Region als der Region, die zu dieser Zeit mit jedem der Makroblöcke zugehörig ist, benutzt werden. Anfangs enthält die Liste prospektiver Bewegungsvektoren den aktuellen Bewegungsvektor für den Makroblock und einen Nullvektor. Schritte1202 bis1208 beschreiben das Verfahren zur Erfassung der restlichen prospektiven Bewegungsvektoren ausführlicher. - In einem nächsten Schritt
1202 berechnet der Frame-Generator112 (1 ) den durchschnittlichen Bewegungsvektor eines jeden der Makroblöcke im zweiten Basis-Frame. Der durchschnittliche Bewegungsvektor wird dann als einer der prospektiven Bewegungsvektoren benutzt. - In einem weiteren Schritt
1204 identifiziert der Frame-Generator112 (1 ) vier Blöcke1302 ,1306 ,1308 ,1310 (13A ), die respektiv jeweils nahe einer der vier Ecken1312 ,1314 ,1316 bzw.1318 des zweiten Basis-Frame angeordnet sind. Es wird angemerkt, dass die Eckblöcke nicht notwendigerweise Makroblöcken entsprechen. Die Eckblöcke1302 ,1306 ,1308 ,1310 können daher eine kleinere oder größere Pixelgröße als die Makroblöcke aufweisen. In einer Ausführungsform ist jeder der vier Eckblöcke1302 ,1304 ,1306 ,1308 so angeordnet, dass jede der Ecken1322 ,1324 ,1326 ,1328 jedes der Eckblöcke1302 ,1304 ,1306 ,1308 von einer der Ecken1312 ,1314 ,1316 ,1318 des zweiten Frame sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt ist. Zum Beispiel ist Block1302 an Pixel 8, 8 angeordnet und von der Ecke1312 sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt. In einem weiteren Beispiel ist die Ecke1324 des Eckblocks1304 von der Ecke1314 sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt. - Nachdem der Frame-Generator
112 (1 ) jeden der vier Eckblöcke1302 ,1306 ,1308 ,1310 identifiziert, analysiert der Frame-Generator112 eine Anzahl von Blöcken im ersten Basis-Frame, wobei er nach einem Block sucht, der mit den Eckblöcken1302 ,1304 ,1306 ,1308 übereinstimmt. In einer Ausführungsform der Erfindung analysiert der Frame-Generator112 für jeden der Eckblöcke1302 ,1304 ,1306 ,1308 die Blöcke1352 ,1354 ,1356 ,1358 im ersten Basis-Frame, wobei die Blöcke1352 ,1354 ,1356 ,1358 sich respektiv in der gleichen räumlichen Position wie die Eckblöcke1302 ,1304 ,1306 ,1308 im zweiten Basis-Frame befinden. Zusätzlich zu diesen vier Eckblöcken analysiert der Frame-Generator112 im ersten Basis-Frame jeden Block, der eine Ecke aufweist, die in entweder der x- oder y-Richtung um nicht mehr als 8 Pixel von einer Ecke1372 ,1374 ,1376 ,1378 der entsprechenden Blöcke1352 ,1354 ,1356 ,1358 entfernt ist. - In Bezug auf Block
1302 und unter Bezugnahme auf die14 und15 analysiert der Frame-Generator112 beispielsweise jeden Block im ersten Basis-Frame, der eine obere linke Ecke in einem quadratischen, sich von 0, 0 zu 16, 16 erstreckenden Fenster aufweist. Block1404 (14 ) und Block1508 (15 ) sind jeweils Blöcke, die bei diesem Verfahren analysiert werden. - Um festzustellen, wie gut der Eckblock im zweiten Basis-Frame und einer der ausgewählten Blöcke im ersten Basis-Frame übereinstimmen, führt der Frame-Generator
112 die Gleichung 2 durch.ÜBEREINSTIMMUNG = SUMME + (8192·RADIUS). (2) - SUMME
- = die Summe der quadrierten Differenzen zwischen jedem der Pixel in einem der Eckblöcke im ersten Basis-Frame und jedem der Pixel in der gleichen räumlichen Position im ausgewählten Block im ersten Basis-Frame.
- RADIUS
- = die größere der Differenzen des Abstands in Pixeln zwischen dem ausgewählten Block und dem Eckblock in Bezug auf die y- und y-Achse.
- Je niedriger der Wert der ÜBEREINSTIMMUNG, desto besser die Übereinstimmung zwischen dem ausgewählten Block im ersten Basis-Frame und dem ausgewählten der Eckblöcke
1302 ,1306 ,1308 ,1310 . - Im folgenden Schritt
1208 wird nach der Identifizierung der Blöcke im ersten Basis-Frame, die eine gute Übereinstimmung mit jedem der Eckblöcke1302 ,1304 ,106 [1306 ],1308 aufweisen, ein Bewegungsvektor zwischen den Eckblöcken1302 ,1304 ,1306 ,1308 und den identifizierten Blöcken berechnet. - Der Frame-Generator
112 (1 ) benutzt die vier in Schritt1208 berechneten und mit jedem der Eckblöcke1302 ,1306 ,1308 ,1310 (13A ) zugehörigen Bewegungsvektoren als letzte vier der prospektiven Bewegungsvektoren. - In Zusammenfassung umfasst die Gruppe prospektiver Bewegungsvektoren also: einen Nullvektor, den aktuellen Bewegungsvektor, einen durchschnittlichen Bewegungsvektor für das zweite Basis-Frame sowie die vier Bewegungsvektoren, die in Bezug auf jeden der vier Eckblöcke in den Schritten
1204 und1208 berechnet wurden. - Daraufhin bestimmt der Frame-Generator
112 in einem Schritt1210 für jeden Makroblock im zweiten Basis-Frame, welcher der prospektivem Bewegungsvektoren zur Frame-Generierung benutzt werden soll. Um den am besten geeigneten Bewegungsvektor zu identifizieren, wendet der Frame-Generator112 die Gleichung 3 in Verbindung mit einem ausgewählten Makroblock und in Folge mit jedem der prospektiven Bewegungsvektoren an.ÜBEREINSTIMMUNG = SUMME + 4096 (|x| + |y|). (3) - SUMME
- = die Summe der quadrierten Differenzen zwischen jedem der Pixel im ausgewählten Makroblock und jedem der Pixel in der gleichen räumlichen Position im Makroblock, die durch einen ausgewählten prospektiven Bewegungsvektor identifiziert wurde.
- x
- = die x-Komponente des ausgewählten prospektiven Bewegungsvektors.
- y
- = die y-Komponente des ausgewählten prospektiven Bewegungsvektors.
- Nach Anwendung der Gleichung 3 für jeden der prospektiven Bewegungsvektoren für einen ausgewählten Makroblock überprüft der Frame-Generator
112 den Wert der Variablen ÜBEREINSTIMMUNG, die anhand eines jeden der prospektiven Bewegungsvektoren bestimmt wurde. Der Frame-Generator112 wählt dann den Bewegungsvektor aus, der den niedrigsten festgestellten Wert der ÜBEREINSTIMMUNG aufweist, und setzt den Bewegungsvektor des Makroblocks auf den ausgewählten Bewegungsvektor zurück. Der Frame-Generator112 wendet dann Gleichung 3 in Bezug auf die restlichen Makroblocks und in Verbindung mit jedem der prospektiven Bewegungsvektoren an. - Bewegungsvektorfilterung
-
16 ist ein Ablaufdiagramm eines Verfahrens zur Filterung der Bewegungsvektoren in den Basis-Frames. Das Filterungsverfahren gewährleistet, dass ein Makroblock keine zugehörige Region aufweist, die sich radikal von dem mit den Nachbarn des Makroblocks zugehörigen Bewegungsvektor unterscheidet.16 ist eine ausführlichere Darstellung der Schritte, die in Schritten1044 und1052 von9 enthalten sind. Dazu ist zu sagen, dass die Bewegungsvektorfilterung sowohl für die ersten als auch für die zweiten Basis-Frames durchgeführt wird. Aus Gründen der Verständlichkeit der Beschreibung wird nachfolgend jedoch nur auf das zweite Basis-Frame Bezug genommen. - Ausgehend von einem Schritt
1600 (16 ) geht der Frame-Generator112 (1 ) zu einem Schritt1602 weiter und filtert das Innere des zweiten Basis-Frame. Schritte1606 ,1610 und1614 beschreiben das Verfahren zur Filterung des Inneren des zweiten Basis-Frame ausführlicher. - Nach dem Weitergang zu einem Entscheidungsschritt
1606 bestimmt der Frame-Generator112 (1 ), ob das zweite Basis-Frame ein kleines Frame ist. In einer Ausführungsform der Erfindung wird ein Frame als klein bewertet, wenn die Breite des zweiten Basis-Frame weniger als ca. 200 Pixel bzw. die Höhe des Frame weniger als ca. 180 Pixel beträgt. Falls der Frame-Generator112 feststellt, dass das zweite Basis-Frame ein kleines Frame ist, geht der Frame-Generator112 zu einem Schritt1610 weiter. Im Schritt1610 setzt der Frame-Generator112 jeden Bewegungsvektor für jeden Makroblock, der nicht an der Kante des zweiten Basis-Frame angeordnet ist, auf den Medianwert der Bewegungsvektoren seiner acht Nachbarn zurück. - Um nochmals auf Schritt
1606 Bezug zunehmen: Falls der Frame-Generator112 (1 ) feststellt, dass das zweite Basis-Frame kein kleines Frame ist, geht der Frame-Generator112 zu einem Schritt1614 weiter. Im Schritt1614 bestimmt der Frame-Generator112 für jeden Makroblock einen Medianwert eines Satzes von Makroblöcken, wobei dieser Satz die folgenden umfasst: den Bewegungsvektor eines jeden der benachbarten Makroblöcke des Makroblocks, 12 andere proximal angeordnete Makroblöcke und drei Instanzen des aktuellen Makroblocks. Der Frame-Generator112 (1 ) setzt dann den Wert des Makroblocks auf diesen berechneten Medianwert zurück. -
17 zeigt die Makroblöcke, die vom Frame-Generator112 (1 ) analysiert werden, wenn der Schritt1614 für einen beispielhaften Makroblock1702 durchgeführt wird. In Bezug auf den Makroblock1702 (durch ein umkreistes „X„ gekennzeichnet) analysiert der Frame-Generator112 acht benachbarte Makroblöcke1704 bis1730 (jeweils durch ein umkreistes „X„ gekennzeichnet). Der Frame-Generator112 analysiert ferner zwölf proximal angeordnete Makroblöcke1734 –1756 (ebenso durch ein „X„ gekennzeichnet). Nach Erfassen der Bewegungsvektoren für diese Makroblöcke stellt der Frame-Generator112 diese Bewegungsvektoren in eine Bewegungsvektorenliste. Der Frame-Generator112 fügt der Bewegungsvektorenliste ferner drei Instanzen des zu diesem Zeitpunkt mit dem Makroblock1702 zugehörigen Bewegungsvektors hinzu. Der Frame-Generator112 bestimmt dann einen Median-Bewegungsvektor, der auf der Liste der Bewegungsvektoren basiert. Zur Bestimmung des Medianwerts bestimmt der Frame-Generator112 erst einen x-Medianwert für jeden der Bewegungsvektoren in der Liste. Der Frame-Generator bestimmt dann einen y-Medianwert für jeden der Bewegungsvektoren in der Liste. Der Frame-Generator112 vereinigt den x-Medianwert und den y-Medianwert, um einen neuen Bewegungsvektor für den Makroblock1702 zu erhalten. - Vom Schritt
1610 oder vom Schritt1614 geht der Frame-Generator112 zu einem Schritt1618 weiter. Im Schritt1618 startet der Frame-Generator112 (1 ) das Filterungsverfahren für die Kantenmakroblöcke des zweiten Basis-Frame. Daraufhin berechnet der Frame-Generator112 im Schritt1622 für jeden Kantenmakroblock den Median-Bewegungsvektor seiner unmittelbaren Nachbarn und setzt den Bewegungsvektor eines Makroblocks auf diesen berechneten Wert zurück. Falls sich der Makroblock beispielsweise auf einer eckenlosen Kante des zweiten Basis-Frame befindet, setzt der Frame-Generator112 den Wert des Makroblocks so zurück, dass er dem Medianwert seiner 5 Nachbarn entspricht. Und schließlich, falls sich der Makroblock an einer Ecke des zweiten Basis-Frame befindet, setzt der Frame-Generator112 den Wert des Bewegungsvektors auf dessen 3 Nachbarn zurück. -
18 zeigt die Makroblöcke, die vom Frame-Generator112 (1 ) analysiert werden, wenn der Schritt1618 für einen beispielhaften Makroblock1804 durchgeführt wird. In Bezug auf den Makroblock1804 analysiert der Frame-Generator112 fünf benachbarte Makroblöcke1806 ,1808 ,1810 ,1812 und1814 (jeweils durch ein „X„ gekennzeichnet). Das Verfahren zur Bewegungsvektorfilterung wird bei einem Schritt1624 (16 ) schließlich abgeschlossen. - Texterkennung
-
19 zeigt ein Ablaufdiagramm eines Verfahrens zur Identifizierung von Teilen der ersten und zweiten Basis-Frames, die Text enthalten.19 zeigt ferner die Schritte, die in Schritt1012 von9 enthalten sind. Durch Texterkennung wird statischer Text, wie z. B. Überschriften, die einen aktiven Hintergrund überlagern, identifiziert. Nach einer solchen Erkennung stellt der Frame-Generator112 sicher, dass die statischen Textblöcke während des Frame-Generierungsverfahrens nicht an eine andere Position verschoben werden. - In einer Ausführungsform der Erfindung markiert der Frame-Generator
112 im Rahmen der Frame-Generierung im ersten Basis-Frame und im zweiten Basis-Frame Makroblockquadranten (Blöcke aus 8×8 Pixeln), die statisch bleiben sollen. Im Allgemeinen findet das Texterkennungsverfahren in drei Schritten statt. Zuerst findet der Frame-Generator vermutliche Textblöcke. Dann ignoriert der Frame-Generator112 jegliche vermutliche Textblöcke, die nicht kontinuierlich mit einem anderen Textblock in Verbindung stehen. Und schließlich markiert der Frame-Generator auch jegliche Lücken und Ecken, die im ausgewählten Frame identifiziert wurden, als vermutliche Textblöcke. - Anfangend mit dem Texterkennungsverfahren in einem Schritt
1900 (19 ) berechnet der Frame-Generator112 (1 ) die Summe der quadrierten Differenz der Pixelintensität zwischen identisch angeordneten Blöcken in aufeinander folgenden Frames. Diese Summe identifiziert die Ähnlichkeit zwischen Blöcken mit der gleichen räumlichen Anordnung im ersten Basis-Frame und im zweiten Basis-Frame. In einem weiteren Schritt1902 (19 ) bestimmt der Frame-Generator112 (1 ) für jeden Block, ob der in Schritt1900 für den Block berechnete Wert unter einem achten Schwellwert liegt. Der achte Schwellwert gibt an, ob zwischen den ersten und zweiten Basis-Frames eine signifikante Änderung aufgetreten ist. Während andere Schwellwerte in anderen Ausführungsformen geeigneter sein können, beträgt der achte Schwellwert in einer Ausführungsform der Erfindung ca. 2500. - Falls der Frame-Generator
112 feststellt, dass der für einen Block in Schritt1900 berechnete Wert unter dem Schwellwert liegt, geht der Frame-Generator112 zu einem Schritt1906 weiter. Im Schritt1906 weist der Frame-Generator112 dem Bewegungsvektor der Blöcke, die innerhalb des achten Schwellwerts fallen, neu den Wert 0, 0 zu. Falls die Differenz der Pixelintensität von zwei Blöcken mit der gleichen räumlichen Position in zwei verschiedenen Frames vernachlässigbar ist, nimmt der Frame-Generator112 an, dass der Block Text enthält und sein Bewegungsvektor für Frame-Generierungszwecke Null sein sollte. - Der Frame-Generator
112 (1 ) geht nun entweder vom Schritt1906 oder, ausgehend davon, dass die Summe der quadrierten Differenzen für einen vorgegebenen Block unter dem achten Schwellwert betrug, vom Entscheidungsschritt1902 zu einem Entscheidungsschritt1910 (19 ) weiter. Falls der Frame-Generator112 im Entscheidungsschritt1910 feststellt, ob irgendwelche der Blöcke in den zwei vorhergehenden bereitgestellten Frames als Textblock erkannt wurden, geht der Frame-Generator112 in Bezug auf diese Blöcke zu einem Schritt1914 weiter. Im Schritt1914 setzt der Frame-Generator112 den Wert einer Variablen „Schwellwert„ für jeden Block, der bei der Analyse der zwei vorherigen Basis-Frames als Textblock erkannt wurde, auf3200 . Wie nachfolgend noch ausführlicher beschrieben wird, identifiziert die Variable „Schwellwert„ einen Wert, der überschritten werden muss, um eine Kante zwischen zwei Pixeln zu finden. - Falls der Frame-Generator
112 feststellt, dass keine der Blöcke bei der Analyse der vorherigen zwei Basis-Frames als Textblöcke erkannt wurden, geht der Frame-Generator112 andernfalls in Bezug auf diese Blöcke zu einem Schritt1918 weiter. Im Schritt1918 setzt der Frame-Generator112 den Wert der Variablen „Schwellwert„ für jeden der Blöcke, die in den zwei vorherigen Frames als Textblock erkannt wurden, auf1600 . - Der Frame-Generator
112 geht dann entweder vom Schritt1914 oder vom Schritt1918 zum Schritt1922 weiter. Im Schritt1922 bestimmt der Frame-Generator112 für jeden Block, ob benachbarte Pixel im Block in Bezug aufeinander eine unterschiedliche Intensität aufweisen. Falls zwei Pixel ausreichend in ihrer Intensität variieren, identifiziert der Frame-Generator112 diese zwei Pixel als eine „Kante„ im Bild bildend. Falls genug Kanten im Block gefunden werden, wird davon ausgegangen, dass der Block ein Textblock ist. - In einer Ausführungsform der Erfindung wendet der Frame-Generator
112 die Gleichungen 4 und6 für jeden der Pixel in einem ausgewählten Block im ersten Basis-Frame an, außer in der untersten Zeile und in der Pixelspalte rechts außen. Der Frame-Generator112 wendet ferner die Gleichungen 5 und 7 für die Pixel im zweiten Basis-Flame mit der gleichen räumlichen Anordnung wie die ausgewählten Pixel im ersten Basis-Frame an.Eax = sign(A(x, y) – A(x + 1, y)) × (A(x, y) – A(x + 1, y))2. (4) Ebx = sign(B(x, y) – B(x + 1, y)) × (B(x, y) – B(x + 1, y))2. (5) Eay = sign(A(x, y) – A(x, y + 1)) × (A(x, y) – A(x, y + 1))2. (6) Eby = sign(B(x, y) – B(x, y + 1)) × (B(x, y) – B(x, y + 1))2. (7) - A(x, y)
- = die Pixelintensität eines Pixels im ausgewählten Block im ersten Basis-Frame.
- B(x, y)
- = die Pixelintensität eines Pixels im ausgewählten Block im zweiten Basis-Frame.
- sign(a)
- = 1, falls a > 0; 0, falls a = 0; –1, falls a > 0.
- Die Ergebnisse der Gleichungen 4 und 5 zeigen die relative Differenz der Intensität zwischen zwei horizontal benachbarten Pixel in jedem der ersten und zweiten Basis-Frames auf. In ähnlicher Weise zeigen die Ergebnisse der Gleichungen 6 und 7 die relative Differenz der Intensität zwischen zwei vertikal benachbarten Pixel in jedem der ersten und zweiten Basis-Frames auf. Falls der Wert der Variablen „Eax„ beispielsweise positiv ist, hat das äußerste linke der zwei angegebenen Pixel die größte Intensität der beiden. Umgekehrt, falls der Wert der Variable „Eax„ negativ ist, hat das äußerste rechte der zwei angegebenen Pixel die größte Intensität der beiden. Eine ähnliche Beziehung besteht für die Pixel, die mit den Variablen „Ebx„, Eay„ und „Eby„ angewendet werden. Durch Benutzung der Werte der Variablen „Eax„, „Ebx„, „Eay„, „Eby„ und „Schwellwert„ kann der Frame-Generator
112 die Anzahl der Kanten zählen, die von jedem der Pixel innerhalb eines ausgewählten Blocks gebildet werden. - In einer Ausführungsform der vorliegenden Erfindung benutzt der Frame-Generator
112 eine Variable „edge_count„ („Kantenzählung„) zur Unterstützung der Bestimmung der Anzahl von Kanten im ausgewählten Block. Nach Berechnung der Werte von „Eax„, „Ebx„, „Eay„ und „Eby„ ändert der Frame-Generator112 den Wert der Variablen „edge_count„ auf der Basis dieser Werte. Die nachfolgende Tabelle 3 enthält eine Reihe von Bedingungen, die angewandt werden, um die Anzahl der Kanten im ausgewählten Block zu bestimmen. Falls die in der ersten Tabellenspalte identifizierte Bedingung erfüllt ist, ändert der Frame-Generator112 den Wert der Variablen „edge_count„ auf der Basis des Ergebnisses, das in der zweiten Tabellenspalte angegeben ist. Tabelle 3Zustand Ergebnis (Eax > Schwellwert) und (Ebx > Schwellwert) Inkrement des edge_count um 2 (Eax < –Schwellwert) und (Ebx < –Schwellwert) Inkrement des edge_count um 2 (Eax > Schwellwert) und (Ebx < Schwellwert) Dekrement des edge_count um 1 (Eax < –Schwellwert) und (Ebx > –Schwellwert) Dekrement des edge_count um 1 (Ebx > Schwellwert) und (Eax < Schwellwert) Dekrement des edge_count um 1 (Ebx < –Schwellwert) und (Eax > –Schwellwert) Dekrement des edge_count um 1 (Eay > Schwellwert) und (Eby > Schwellwert) Inkrement des edge_count um 2 (Eay < –Schwellwert) und (Eby < –Schwellwert) Inkrement des edge_count um 2 (Eay > Schwellwert) und (Eby < Schwellwert) Dekrement des edge_count um 1 (Eay < –Schwellwert) und (Eby > –Schwellwert) Dekrement des edge_count um 1 (Eby > Schwellwert) und (Eay < Schwellwert) Dekrement des edge_count um 1 (Eby < –Schwellwert) und (Eay > –Schwellwert) Dekrement des edge_count um 1 - Der Frame-Generator
112 wendet die Gleichungen 4–7 für jeden der Pixel innerhalb der Blöcke in einer ausgewählten räumlichen Position in den ersten und zweiten Basis-Frames an. Nach der Analyse eines neuen Blocks in einer anderen räumlichen Position setzt der Frame-Generator112 den Wert der Variablen „edge_count„ auf Null zurück. - In einem darauf folgenden Schritt
1926 bestimmt der Frame-Generator112 , welche Gruppe von Blöcken als vermutliche Textblöcke bezeichnet werden. In einer Ausführungsform der Erfindung, falls die Variable „edge_count„ für einen ausgewählten Block größer als 10 ist, bezeichnet der Frame-Generator112 diesen Block als einen vermutlichen Textblock. - Nach Fortfahren zu einem weiteren Schritt
1930 eliminiert der Frame-Generator112 einen jeden Block aus der vermutlichen Gruppe von Textblöcken, der nicht unmittelbar an einen anderen der vermutlichen Textblöcke angrenzt. In einer Ausführungsform der Erfindung bezieht sich der Begriff „angrenzen„ auf die Blöcke unmittelbar über, unter, links und rechts vom ausgewählten Block. - Im Schritt
1930 kann der Frame-Generator112 optional feststellen, ob sich eine ausreichende Anzahl vermutlicher Textblöcke in der vermutlichen Textblockgruppe befindet, um die Schlussfolgerung zuzulassen, dass die vermutlichen Textblöcke Text darstellen. Falls die Anzahl vermutlicher Textblöcke weniger als 6 beträgt, entfernt der Frame-Generator112 in einer Ausführungsform der Erfindung beispielsweise alle der Blöcke aus der vermutlichen Textblockgruppe. - Im Schritt
1930 kann der Frame-Generator112 ferner auch optional feststellen, ob die Anzahl von Blöcken in der vermutlichen Textblockgruppe einen Textblockschwellwert überschreitet. Falls zu viele Textblöcke erkannt werden, geht die Frame-Generierung112 davon aus, dass die ersten und zweiten Basis-Frames hauptsächlich Text enthalten und die Frame-Generierung in diesem Fall unerwartete Ergebnisse verursachen kann. Falls die Anzahl der Blöcke im vermuteten Textblock den Textblockschwellwert überschreitet, lässt der Frame-Generator112 die Frame-Generierung auf der Basis der ersten und zweiten Basis-Frames fehlschlagen. In einer Ausführungsform ist der Textblockschwellwert als ca. 30 betragend vordefiniert. In einer anderen Ausführungsform der Erfindung wird der Textblockschwellwert auf Ad-hoc-Basis berechnet. - Nach Fortfahren zu einem weiteren Schritt
1933 analysiert der Frame-Generator112 die vermutlichen Textblockgruppen, um zu bestimmen, ob Lücken oder fehlende Ecken identifiziert werden können. In einer Ausführungsform der Erfindung wird der vermutlichen Textblockgruppe ein ausgewählter Block hinzugefügt, falls sich vermutliche Textblöcke: (i) über und unter dem ausgewählten Block; (ii) sowohl links und rechts vom ausgewählten Block; (iii) unter, links sowie unter und links vom ausgewählten Block; (iv) unter, rechts sowie unter und rechts vom ausgewählten Block; (v) über, links sowie über und links vom ausgewählten Block; oder (vi) über, rechts sowie über und rechts vom ausgewählten Block befinden. - In
20 wird z. B. ein Teil eines Frames2000 dargestellt. Das Frame2000 ist in eine Mehrzahl von 8×8-Blöcken2002 unterteilt. Eine ausgewählte Anzahl der Blöcke2002 wurden als vermutliche Textblöcke identifiziert (durch Schattierung). Wie auch durch eine visuelle Inspizierung leicht zu sehen ist, grenzen ferner eine Anzahl von Blöcken2002 aneinander und definieren 6 Blockformen2010 ,2014 ,2016 ,2020 ,2024 und2028 . Im Schritt1934 analysiert der Frame-Generator112 jeden der Blöcke2002 , um Lücken und fehlende Ecken zu identifizieren. Beim Erreichen eines Blocks2032 bestimmt der Frame-Generator112 , dass sich ein vermutlicher Textblock sowohl rechts und links vom Block2032 befindet. Der Frame-Generator112 fügt den Block2032 daher der vermutlichen Textblockgruppe hinzu. - In einer Ausführungsform der Erfindung führt der Frame-Generator
112 einen Durchlauf der Blöcke2002 im Frame2000 von links nach rechts, oben nach unten durch. Es können jedoch auch andere Durchlaufmethoden eingesetzt werden. In einer anderen Ausführungsform der vorliegenden Erfindung berücksichtigt der Frame-Generator112 keine neu hinzugefügten vermutlichen Textblöcke beim Ausfüllen der Lücken und fehlenden Ecken. Wie vorstehend erwähnt, wurde der Block2032 beispielsweise aufgrund der Anordnung anderer vermutlicher Textblöcke als ein vermutlicher Textblock hinzugefügt. In dieser Ausführungsform berücksichtigt der Frame-Generator112 den Block2032 jedoch bei der Analyse der anderen Blöcke nicht als markierten vermutlichen Block. - Alternativ schließt der Frame-Generator
112 in einer anderen Ausführungsform bei der Analyse der restlichen Blöcke neu hinzugefügte, vermutliche Textblöcke mit ein. In dieser Ausführungsform berücksichtigt der Frame-Generator112 z. B. nach der Bestimmung, dass der Block2032 als ein vermutlicher Textblock hinzugefügt werden soll, den Block2032 als einen der vermutlichen Textblöcke für die restliche Analyse. In dieser Ausführungsform kann der Frame-Generator112 ferner mehrere Durchlaufe der Blöcke2002 durchführen, wobei beim Durchlauf neue Lücken oder leere Ecken, die während eines vorhergehenden Durchlaufs identifiziert wurden, ausgefüllt werden. - Synthese
- In
21 wird ein Verfahren zur Generierung von Interframes auf der Basis der ersten und zweiten Basis-Frames dargestellt. In einem Schritt2100 hat der Frame-Generator112 die ersten und zweiten Basis-Frame schon analysiert, um die Angebrachtheit der Frame-Generierung zu bestimmen. Der Frame-Generator112 hat ferner den Durchschnitt eines jeden der Bewegungsvektoren auf der Basis der benachbarten Bewegungsvektoren ermittelt. Zusätzlich hat der Frame-Generator112 eine ausgewählte Anzahl von Blöcken als Textblöcke markiert. Zu diesem Zeitpunkt ist der Frame-Generator112 bereit, einen oder mehr Interframes zu generieren. - Es ist anzumerken, dass der Frame-Generator
112 mehr als einmal aufgerufen und hierdurch mehr als ein Interframe generiert werden kann. In einer Ausführungsform der Erfindung empfängt der Frame-Generator112 eine Zeitreferenz, die angibt, zu welchem Zeitpunkt das generierte Frame in Bezug auf das erste und zweite Basis-Frame angezeigt werden soll. Ein erstes Basis-Frame kann z. B. für eine Anzeige zur Zeit bei 100 Millisekunden bestimmt werden. Das zweite Basis-Frame kann ferner für eine Anzeige zur Zeit bei 300 Millisekunden festgelegt werden. Der Frame-Generator112 kann dann unter Benutzung der ersten und zweiten Basis-Frames einen Interframe für die Anzeige zur Zeit bei 200 Millisekunden generieren. Alternativ kann der Frame-Generator112 aufgefordert werden, zwei Interframes bereitzustellen, eines für die Anzeige zur Zeit bei 150 Millisekunden, das andere zur Zeit bei 250 Millisekunden. Der Frame-Generator112 kann benutzt werden, um eine beliebige Anzahl von Interframes zu generieren. Der Frame-Generator112 kann ferner dazu benutzt werden, ein weiteres Frame zu generieren, wobei ein generiertes Frame als eines der Basis-Frames benutzt wird. Der Frame-Generator112 kann auch so adaptiert werden, dass er eine Aufforderung empfängt, die eine oder mehrere Zwischenzeiten identifiziert, anstatt die Zwischenzeiten nacheinander zu empfangen. - Die Zwischenzeit kann weiterhin beispielsweise auch als eine ganze Zahl im Wertebereich von 1 bis 255 dargestellt werden. In dieser Ausführungsform bedeutet eine Zwischenzeit von 1, dass das zu generierende Frame zeitlich proximal zum ersten Basis-Frame dargestellt werden soll. Eine Zwischenzeit von 255 bedeutet, dass das zu generierende Frame zeitlich proximal zum zweiten Basis-Frame dargestellt werden soll. Zur Verständlichkeit der Beschreibung geht die weitere Beschreibung auf das Verfahren der Frame-Synthese in Bezug auf ein Zeitintervall ein, das als ein Wert im Bereich zwischen 1 und 255 gemessen wird.
- Nach dem Fortfahren zum Schritt
2104 bestimmt der Frame-Generator112 , ob der Zustand der Zustandsmaschine404 „MODERATE_ACTION„ ist. Ist der Zustand nicht „MODERATE_ACTION„, geht der Frame-Generator112 zu einem Schritt2108 weiter. - Im Schritt
2108 vereinigt der Frame-Generator112 die ersten und zweiten Basis-Frames anhand eines linearen Durchschnittswerts. In einer Ausführungsform der Erfindung wendet der Frame-Generator112 als Teil dieses Schritts die Gleichung 8 auf jede Pixelposition innerhalb der ersten und zweiten Basis-Frames an.Generiertes Frame(x, y) = (256 – time_reference)/256·erstes Frame(x, y) + time_reference/256·zweites Frame (x, y) (8) - time_reference
- = eine ganze Zahl zwischen 1 und 255, wobei die ganze Zahl die zeitliche Nähe des zu generierenden Frame in Bezug auf die ersten und zweiten Basis-Frames angibt.
- Erstes Frame(x, y)
- = der Intensitätswert eines Pixels an einer Position x, y im ersten Basis-Frame.
- Zweites Frame(x, y)
- = der Intensitätswert eines Pixels an einer Position x, y im zweiten Basis-Frame.
- Um nochmals auf den Schritt
2104 Bezug zu nehmen: Falls der Frame-Generator112 feststellt, dass der Zustand „MODERATE_ACTION„ ist, geht der Frame-Generator112 zum Schritt2112 weiter. Im Status2112 bestimmt der Frame-Generator112 , ob das zu generierende Frame zeitlich näher zum ersten Basis-Frame oder zum zweiten Basis-Frame dargestellt werden soll. Falls der Frame-Generator bestimmt, dass das zu generierende Frame zeitlich näher zum zweiten Basis-Frame dargestellt werden soll, geht der Frame-Generator112 zu einem Schritt2120 weiter. Andernfalls, falls der Frame-Generator112 bestimmt, dass das zu generierende Frame zeitlich näher zum ersten Basis-Frame dargestellt werden soll, geht der Frame-Generator112 zu einem Schritt2124 weiter. In der Ausführungsform der Erfindung, wenn der Wert der Variablen „time_reference„ größer oder gleich128 ist, stellt der Frame-Generator112 fest, dass das zu generierende Frame sich naher am zweiten Basis-Frame befindet. Wenn der Wert der Variablen „time_reference„ kleiner als128 ist, stellt der Frame-Generator112 fest, dass das zu generierende Frame sich näher am ersten Basis-Frame befindet. - Im Zustand
2120 generiert der Frame-Generator112 ein Frame auf der Grundlage der Makroblockinformationen aus dem zweiten Basis-Frame. Im Rahmen des Zustandes2120 generiert der Frame-Generator112 vier „Referenz„-Bewegungsvektoren für jeden der Makroblöcke aus dem Bewegungsvektor des ausgewählten Makroblocks und den Bewegungsvektoren der benachbarten Makroblöcke. Jeder Bewegungsvektor stellt eine Bewegung eines der vier Quadranten bzw. „Blöcke„ innerhalb eines ausgewählten Makroblocks dar. Falls sich der ausgewählte Makroblock an der Frame-Kante befindet, erhalten Bewegungsvektoren für diese Quadranten entlang der Kante einen Bewegungsvektor, der demjenigen des gesamten Makroblocks entspricht. Andernfalls wendet der Frame-Generator112 für Quadranten innerhalb des Frame die Gleichungen 9 bis 16 für jede der Makroblockpositionen im zu generierenden Frame an.xupper_left = –((256 – time_reference)/256)·((4·MV(x, y).x + 2·MV(x, y – 1).x + 2·MV(x – 1, y).x + MV(x – 1, y – 1).x)/9) (9) yupper_left = –((256 – time_reference)/256)·((4·MV(x, y).y + 2·MV(x, y – 1).y + 2·MV(x – 1, y).y + MV(x – 1, y – 1).y)/9) (10) xlower_left = –((256 – time_reference)/256)·((4·MV(x, y).x + 2·MV(x, y + 1).x + 2·MV(x – 1, y).x + MV(x – 1, y + 1).x)/9) (11) ylower_left = –((256 – time_reference)/256)·((4·MV(x, y).y + 2·MV(x, y + 1).y + 2·MV(x – 1, y).y + MV(x – 1, y + 1).y)/9) (12) xupper_right = –((256 – time_reference)/256)·((4·MV(x, y).x + 2·MV(x, y – 1).x + 2·MV(x + 1, y).x + MV(x + 1, y – 1).x)/9) (13) yupper_right = –((256 – time_reference)/256)·((4·MV(x, y).y + 2·MV(x, y – 1).y + 2·MV(x + 1, y).y + MV(x + 1, y – 1).y)/9) (14) xlower_right = –((256 – time_reference)/256)·((4·MV(x, y).x + 2·MV(x, y + 1).x + 2·MV(x + 1, y).x + MV(x + 1, y + 1).x)/9) (15) ylower_right = –((256 – time_reference)/256)·((4·MV(x, y).y + 2·MV(x, y + 1).y + 2·MV(x + 1, y).y + MV(x + 1, y + 1).y)/9) (16) - time_reference
- = Eine ganze Zahl zwischen 1 und 255, wobei die ganze Zahl die zeitliche Nähe des generierten Frame zu den ersten und zweiten Basis-Frames angibt.
- xupper_left
- = die x-Komponente des Bewegungsvektors für den oberen linken Quadranten.
- yupper_left
- = die y-Komponente des Bewegungsvektors für den oberen linken Quadranten.
- xupper_right
- = die x-Komponente des Bewegungsvektors für den oberen rechten Quadranten.
- yupper_right
- = die y-Komponente des Bewegungsvektors für den oberen rechten Quadranten.
- xlower_left
- = die x-Komponente des Bewegungsvektors für den unteren linken Quadranten.
- ylower_left
- = die y-Komponente des Bewegungsvektors für den unteren linken Quadranten.
- xlower_right
- = die x-Komponente des Bewegungsvektors für den unteren rechten Quadranten.
- ylower_right
- = die y-Komponente des Bewegungsvektors für den unteren rechten Quadranten.
- MV(x, y).x
- = die x-Komponente eines Bewegungsvektors eines ausgewählten Makroblocks in einem Referenz-Frame, wobei der Block x Makroblöcke von der Oberseite eines Frame und y Makroblöcke links vom interpolierten Frame angeordnet ist.
- MV(x, y).y
- = die y-Komponente eines Bewegungsvektors eines ausgewählten Makroblocks in einem Referenz-Frame, wobei der Block x Makroblöcke von der Oberseite eines Frame und y Makroblöcke links vom interpolierten Frame angeordnet ist.
- Die Gleichungen 9–16 ergeben gemeinsam die x- und y-Komponenten der vier „Referenz„-Bewegungsvektoren. Der Frame-Generator
112 benutzt die vier Referenz-Bewegungsvektoren <xupper_left/ yupper_left>, <Xupper_right/yupper_right>, <xlower_left/ylower_left> und <Xlower_right/ylower_right> in Bezug auf eine Makroblockposition zur Identifizierung von „Basis„-Regionen im ersten Basis-Frame. Bei der Generierung des Interframe ruft der Frame-Generator112 in Bezug auf den Makroblock die durch die Referenz-Bewegungsvektoren <xupper_left/yupper_left>, <xupper_right/yupper_right>, <xlower_left/ylower_right>, und <xlower_right/ylower_right> identifizierten „Basis„-Regionen auf und platziert den Basis-Makroblock in das Interframe für jeden Quadranten. Falls festgestellt wird, dass der Makroblockquadrant Videotext enthält, benutzt der Frame-Generator112 in einer Ausführungsform der Erfindung nicht den Referenz-Bewegungsvektor zur Auswahl einer Basisregion. In dieser Ausführungsform führt der Frame-Generator112 ein Mischungsverfahren durch, das nachstehend unter Bezugnahme auf einen Schritt2128 näher beschrieben wird. - Um nochmals auf den Entscheidungsschritt
2112 Bezug zu nehmen: Falls der Frame-Generator112 bestimmt, dass das zu generierende Frame zeitlich näher zum ersten Basis-Frame dargestellt werden soll, geht der Frame-Generator zum Schritt2124 weiter. Im Schritt2124 generiert der Frame-Generator112 das Interframe mit Hilfe der Makroblockinformationen aus dem zweiten Basis-Frame. Im Rahmen des Zustands2124 generiert der Frame-Generator112 vier „Referenz„-Bewegungsvektoren aus dem Bewegungsvektor des ausgewählten Makroblocks und den Bewegungsvektoren der benachbarten Makroblöcke. Jeder Bewegungsvektor stellt eine Bewegung eines der vier Quadranten bzw. „Blöcke„ innerhalb eines ausgewählten Makroblocks dar. Falls sich der ausgewählte Makroblock an der Frame-Kante befindet, erhalten Bewegungsvektoren für diese Quadranten entlang der Kante einen Bewegungsvektor, der demjenigen für den gesamten Makroblock entspricht. Andernfalls wendet der Frame-Generator112 für Quadranten innerhalb des Frame die Gleichungen 17–24 für jede der Makroblockpositionen im zu generierenden Frame an.xupper_left = (time_reference/256)·((4·MV(x, y).x + 2·MV(x, y – 1).x + 2·MV(x – 1, y).x + MV(x – 1, y – 1).x)/9) (17) yupper_left = (time_reference/256)·((4·MV(x, y)·y + 2·MV(x, y – 1).y + 2·MV(x – 1, y).y + MV(x – 1, y – 1).y)/9) (18) xlower_left = (time_reference/256)·((4·MV(x, y).x + 2·MV(x, y + 1).x + 2·MV(x – 1, y).x + MV(x – 1, y + 1).x)/9) (19) ylower_left = (time_reference/256)·((4·MV(x, y).y + 2·MV(x, y + 1).y + 2·MV(x – 1, y).y + MV(x – 1, y + 1).y)/9) (20) xupper_right = (time_reference/256)·((4·MV(x, y).x + 2·MV(x, y – 1).x + 2·MV(x + 1, y).x + MV(x + 1, y – 1).x)/9) (21) yupper_right = (time_reference/256)·((4·MV(x, y).y + 2·MV(x, y – 1).y + 2·MV(x + 1, y).y + MV(x + 1, y – 1).y)/9) (22) xlower_right = (time_reference/256)·((4·MV(x, y).x + 2·MV(x, y + 1).x + 2·MV(x + 1, y).x + MV(x + 1, y + 1).x)/9) (23) ylower_right = (time_reference/256)·((4·MV(x, y).y + 2·MV(x, y + 1).y + 2·MV(x + 1, y).y + MV(x + 1, y + 1).y)/9) (24) - time_reference
- = Eine ganze Zahl zwischen 1 und 255, wobei die ganze Zahl die zeitliche Nähe des generierten Frame zu den ersten und zweiten Basis-Frames angibt.
- Xupper_left
- = die x-Komponente des Bewegungsvektors für den oberen linken Quadranten.
- yupper_left
- = die y-Komponente des Bewegungsvektors für den oberen linken Quadranten.
- xupper_right
- = die x-Komponente des Bewegungsvektors für den oberen rechten Quadranten.
- yupper_right
- = die y-Komponente des Bewegungsvektors für den oberen rechten Quadranten.
- xlower_left
- = die x-Komponente des Bewegungsvektors für den unteren linken Quadranten.
- ylower_left
- = die y-Komponente des Bewegungsvektors für den unteren linken Quadranten.
- xlower_right
- = die x-Komponente des Bewegungsvektors für den unteren rechten Quadranten.
- ylower_right
- = die y-Komponente des Bewegungsvektors für den unteren rechten Quadranten.
- MV(x, y).x
- = die x-Komponente eines Bewegungsvektors eines ausgewählten Makroblocks in einem Referenz-Frame, wobei der Block x Makroblöcke von der Oberseite eines Frame und y Makroblöcke links vom interpolierten Frame angeordnet ist.
- MV(x, y).y
- = die y-Komponente eines Bewegungsvektors eines ausgewählten Makroblocks in einem Referenz-Frame, wobei der Block x Makroblöcke von der Oberseite eines Frame und y Makroblöcke links vom interpolierten Frame angeordnet ist.
- Die Gleichungen 17–24 ergeben gemeinsam die x- und y-Komponenten der vier „Referenz„-Bewegungsvektoren. Der Frame-Generator
112 benutzt die vier Referenz-Bewegungsvektoren <xupper_left/yupper_left>, <xupper_right/yupper_right>, <xlower_left/ylower_left> und <xlower_right/ylower_right> in Bezug auf jeden der Makroblöcke zur Identifizierung von „Basis„-Regionen im ersten Basis-Frame. Bei der Generierung des Interframe ruft der Frame-Generator112 in Bezug auf jeden der Makroblöcke die durch die Referenz-Bewegungsvektoren <xupper_left/yupper_left>, <xupper_right/yupper_right>, <xlower_left/ylower_left> und <xlower_right/ylower_right> identifizierten „Basis„-Regionen auf und platziert den Basis-Makroblock in das Interframe für jeden Quadranten. Falls festgestellt wird, dass der Makroblockquadrant Videotext enthält, benutzt der Frame-Generator112 in einer Ausführungsform der Erfindung nicht den Referenz-Bewegungsvektor zur Auswahl einer Basisregion. In dieser Ausführungsform führt der Frame-Generator112 ein Mischungsverfahren durch, das nachstehend unter Bezugnahme auf einen Schritt2128 näher beschrieben wird. - Vom Schritt
2124 oder vom Schritt2120 aus geht der Frame-Generator112 zum Schritt2128 weiter. Im Schritt2128 führt der Frame-Generator112 für jeden Makroblockquadranten, der Videotext in demjenigen Basis-Frame enthält, welches im Zustand2112 ausgewählt wurde, d. h. im ersten oder zweiten Basis-Frame, eine Mischung jeder der Pixel im Makroblockquadranten mit einem im anderen Basis-Frame identisch angeordneten Makroblockquadranten durch. Im Rahmen des Mischungsverfahrens wendet der Frame-Generator112 die Gleichung 8 für jedes der Pixel in den Makroblockquadranten an. - In einem weiteren Zustand
2128 filtert der Frame-Generator112 das Interframe. Das Verfahren zur Filterung des Interframe wird nachfolgend unter Bezugnahme auf22 beschrieben. - Und schließlich wird das generierte Interframe im Zustand
2132 dem Betrachter angezeigt. In einer Ausführungsform der Erfindung zeigt der Frame-Generator112 das Interframe auf einer Anzeige auf dem Rendering-Computer106 zu einem Zeitpunkt an, welcher der dem Frame-Generator112 bereitgestellten Offset-Zeit entspricht. In einer anderen Ausführungsform der Erfindung wird das Interframe an ein nicht dargestelltes Rendering-Programm übertragen. - Postsynthese-Filterung
- In der
22 wird ein Verfahren zur Filterung eines vom Frame-Generator112 generierten Interframe dargestellt. Es liegt jedoch nahe, dass auch andere Filterungsverfahren verwendet werden können. Das Filterungsverfahren macht die Sprunghaftigkeit zwischen benachbarten Makroblockquadranten (8×8-Blöcken) im interpolierten Frame weicher. Selbstverständlich liegt es nahe, dass nach der Interpolation eines Frame aus Basis-Frame-Daten Blöcke, die vormals im Basis-Frame benachbart waren, im interpolierten Frame eventuell nicht mehr benachbart sind. Obwohl nach der Frame-Interpolation ein Block aus dem Basis-Frame gut als Ersatz für den interpolierten Block dienen kann, stimmen die Pixel an den Kanten eines jeden der interpolierten Blöcke eventuell nicht perfekt mit den Pixeln an der Kante eines benachbarten Blocks überein. Daher wird in einer Ausführungsform der vorliegenden Erfindung ein Filterungsverfahren auf jeden der interpolierten Frames angewandt. - Im Rahmen dieses Verfahrens analysiert der Frame-Generator
112 für jeden Block die Blöcke rechts und unterhalb des ausgewählten Blocks. Der Frame-Generator112 führt zuerst eine horizontale Filterung jeder der Zeilen eines jeden der Blöcke durch. Daraufhin führt der Frame-Generator112 eine vertikale Filterung jeder der Zeilen eines jeden Blocks durch. Schritte2200 ,2204 ,2208 ,2212 und2216 beschreiben das Verfahren für die horizontale Filterung jeder der Zeilen in den Blöcken. Schritte2218 ,2219 ,2220 ,2224 und2228 beschreiben das Verfahren zur vertikalen Filterung jeder der Spalten in jedem der Blöcke. In einer Ausführungsform der Erfindung führt der Frame-Generator112 zwei Durchlaufe von links nach rechts, oben nach unten durch jeden der Blöcke im interpolierten Frame durch, wobei einer der Durchlaufe für die horizontale Filterung und der andere für die vertikale Filterung dient. Es liegt jedoch nahe, dass auch andere Durchlaufschemas verwendet werden können. - Anfangend mit einem Schritt
2200 beginnt der Frame-Generator112 das horizontale Filterungsverfahren. Der Frame-Generator filtert nacheinander jede der Zeilen in jedem der 8×8-Blöcke im interpolierten Frame. Schritte2204 ,2208 ,2212 und2216 erläutern das Verfahren zur horizontalen Filterung der einzelnen Blöcke noch ausführlicher. Schritte2204 ,2208 ,2212 und2216 werden für jeden der 8×8-Blöcke in den interpolierten Frames durchgeführt. - In einem weiteren Schritt
2204 benutzt der Frame-Generator112 den Quantisierer für das interpolierte Frame zur Bestimmung der Stärke des Filters, das für die horizontale Filterung des zu diesem Zeitpunkt ausgewählten Blocks verwendet werden soll. In einer Ausführungsform der Erfindung hat der Quantisierer für das interpolierte Frame den gleichen Wert wie der Quantisierer für das Basis-Frame, das zur Generierung des interpolierten Frame benutzt wurde. In einer Ausführungsform der Erfindung benutzt der Frame-Generator112 die Gleichung 25 für diese Berechnung.filter_strength = SF × (|IMV(x, y)·x – MV(x + 1, y).x| + |MV(x, y).y – MV(x + 1, y)·y|). (25) - SF
- = 2, falls Quantisierer > 15; 1, falls 7 < Quantisierer ≤ 15; 0,5, falls 4 < Quantisierer ≤ 7; oder 0, falls Quantisierer ≤ 4.
- MV(x, y).x
- = die x-Komponente eines Bewegungsvektors eines ausgewählten 8×8-Blocks in einem Referenz-Frame, das zur Generierung des interpolierten Frame benutzt wurde, wobei der Block x Blöcke von der Oberseite eines Frame und y Blöcke links vom interpolierten Frame angeordnet ist.
- MV(x, y).y
- = die y-Komponente eines Bewegungsvektors eines ausgewählten 8×8-Blocks in einem Referenz-Frame, das zur Generierung des interpolierten Frame benutzt wurde, wobei der Block x Blöcke von der Oberseite eines Frame und y Blöcke links vom interpolierten Frame angeordnet ist.
- Die Variable „filter_strength„ wird vom Frame-Generator
112 benutzt, um die Angebrachtheit der Filterung jedes der Pixel im aktuell ausgewählten Block zu bestimmen. Es ist anzumerken, dass der Wert der Variablen „filter_strength„ sich während des Filterungsverfahrens für ein ausgewählte Zeile zwar ändert, dass der Wert der Variablen „filter_strength„ jedoch bei Filterung einer neuen Zeile auf die mit dem Block assoziierte Filterstärke zurückgesetzt wird. - In den Schritten
2208 ,2212 und2216 wird das Verfahren für die horizontale Filterung eines ausgewählten Blocks beschrieben. Der Frame-Generator112 beginnt ein Iterationsverfahren für jede der Zeilen im aktuell ausgewählten Block. In Kürze, der Frame-Generator112 wählt im Schritt2208 eine der Zellen in den Blöcken aus. Daraufhin bestimmt der Frame-Generator112 im Schritt2212 , ob ausgewählte Pixel in der Zeile gefiltert werden sollen. Schließlich filtert der Frame-Generator112 im Schritt2216 die ausgewählten Pixel. - Um nochmals auf Schritt
2208 Bezug zu nehmen: Der Frame-Generator112 filtert eine ausgewählte Zeile des aktuell ausgewählten Bocks. Anfangend in der obersten Zeile des Blocks stellt der Frame-Generator112 eine Variable „filter1„ so ein, dass sie sich auf den äußersten rechten Pixel der ausgewählten Zeile bezieht. Der Frame-Generator112 stellt ferner eine Variable „filter2„ so ein, dass sie sich auf den äußersten linken Pixel in der gleichen Zeile wie im Block rechts neben dem ausgewählten Block bezieht. - In einem weiteren Schritt
2212 bestimmt der Frame-Generator12 abhängig vom Wert der Variablen „filter_strength„, ob der Pixel, auf den sich die Variable „filter1„ bezieht, gefiltert werden soll. Falls die Variable „filter_strength„ gleich Null ist, stoppt der Frame-Generator112 in einer Ausführungsform der Erfindung die Filterung der aktuell ausgewählten Zeile. Es liegt jedoch nahe, dass auch andere Schwellwerte benutzt werden können. - Falls der Wert der Variablen „filter_strength„ größer als Null ist, geht der Frame-Generator
112 andernfalls zu einem Schritt2216 weiter. Im Schritt2216 filtert der Frame-Generator112 die Pixel, auf die sich die Variablen „filter1„ und „filter2„ beziehen. Der Frame-Generator112 stellt den Pixel, auf den sich die Variable „filter1„ bezieht, so ein, dass er dem Durchschnitt der Pixelwerte von sich selbst und seiner linken und rechten Nachbarn entspricht. Der Frame-Generator112 stellt ferner den Pixel, auf den sich die Variable „filter2„ bezieht so ein, dass er dem Durchschnitt der Pixelwerte von sich selbst und seiner linken und rechten Nachbarn entspricht. Der Frame-Generator112 dividiert dann die Variable „filter_strength„ durch 2 und rundet ab. Daraufhin stellt der Frame-Generator112 die Variable „filter1„ neu ein, so dass sie sich auf den Pixel unmittelbar links neben dem Pixel bezieht, auf den sich „filter1„ bezieht. Der Frame-Generator112 stellt ferner die Variable „filter2„ neu ein, so dass sie sich auf den Pixel bezieht, der sich unmittelbar rechts neben dem Pixel befindet, auf den sich die Variable „filter2„ zu diesem Zeitpunkt bezieht. Der Frame-Generator112 kehrt dann zum Schritt2212 zurück und fährt mit der Filterung der Pixel in der ausgewählten Zeile fort, bis der Wert der Variable „filter_strength„ Null ist. Zu diesem Zeitpunkt kehrt der Frame-Generator112 zum Schritt2208 zurück, um die nächste Zeile im ausgewählten Block zu filtern. Nach Abschluss der Filterung jeder der Zeilen im aktuell ausgewählten Block kehrt der Frame-Generator112 zum Schritt2204 zurück, um den Wert der Variablen „filter_strength„ für den nächsten auszuwählenden Block neu zu berechnen. - Nachdem alle der Zeilen von Pixeln in jedem Block des interpolierten Frame gefiltert wurden, geht der Frame-Generator
112 zu einem Schritt2218 weiter, um jede der Spalten eines jeden der Blöcke zu filtern. In einem Schritt2218 filtert der Frame-Generator112 nacheinander jede Spalte von Pixeln in jedem Block des interpolierten Frame. Das Verfahren zur Bestimmung, ob die ausgewählten Pixel innerhalb jeder der Zeilen gefiltert werden sollen, wird in Schritt2224 und2228 beschrieben. - In einem weiteren Schritt
2219 benutzt der Frame-Generator112 den Quantisierer für das interpolierte Frame, um die Stärke des Filters zu bestimmen, die für die vertikale Filterung eines jeden Blocks im interpolierten Frame benutzt werden soll. In einer Ausführungsform der Erfindung benutzt der Frame-Generator112 die Gleichung 26 für diese Berechnung.filter_strength = SF × (|MV(x, y).x – MV(x, y + 1).x| + (MV(x, y).y – MV(x, y + 1)·y|). (26) - SF
- = 2, falls Quantisierer > 15; 1, falls 7 < Quantisierer ≤ 15; 0,5, falls 4 < Quantisierer ≤ 7; oder 0, falls Quantisierer ≤ 4.
- MV(x, y).x
- = die x-Komponente eines Bewegungsvektors eines ausgewählten Blocks in einem Referenz-Frame, das zur Generierung des interpolierten Frame benutzt wurde, wobei der Block „x„ Blöcke von der Oberseite eines Frame und „y„ Blöcke links vom Frame angeordnet ist.
- MV(x, y).y
- = die y-Komponente eines Bewegungsvektors eines ausgewählten Blocks in einem Referenz-Frame, das zur Generierung des interpolierten Frame benutzt wurde, wobei der Block „x„ Blöcke von der Oberseite eines Frame und „y„ Blöcke links vom Frame angeordnet ist.
- Wie oben unter Bezugnahme auf die horizontale Filterung wird die Variable „filter_strength„ vom Frame-Generator
112 dazu benutzt, um die Angebrachtheit der Filterung eines jeden der Pixel in einer ausgewählten Spalte des aktuellen Blocks zu bestimmen. - Unter Bezugnahme auf die Schritte
2220 ,2224 und2228 wird nun das Verfahren zur vertikalen Filterung der Spalten von Pixeln in den Blöcken beschrieben. In diesen Schritten beginnt der Frame-Generator112 ein Iterationsverfahren für jede der Spalten in einem der ausgewählten Blöcke. In Kürze, der Frame-Generator112 wählt im Schritt2208 eine der Spalten in dem ausgewählten Block aus. Dann bestimmt der Frame-Generator112 im Schritt2212 , ob die Pixel in der ausgewählten Spalte gefiltert werden sollen. Schließlich filtert der Frame-Generator112 im Schritt2216 die ausgewählten Pixel. - Es wird nun spezifisch auf den Schritt
2220 Bezug genommen: Der Frame-Generator112 filtert eine ausgewählte Zeile des ausgewählten Blocks. Anfangend mit der äußersten linken Spalte stellt der Frame-Generator112 eine Variable „filter1„ so ein, dass sie sich auf den untersten Pixel der ausgewählten Spalte bezieht. Der Frame-Generator112 stellt ferner eine Variable „filter2„ so ein, dass sie sich auf den obersten Pixel in der gleichen Spalte im Block unter dem ausgewählten Block bezieht. - In einem weiteren Schritt
2224 bestimmt der Frame-Generator112 abhängig vom Wert der Variablen „filter_strength„, ob die Pixel, auf die sich die Variable „filter1„ bezieht, gefiltert werden sollen. Falls die Variable „filter_strength„, den Wert Null hat, stoppt der Frame-Generator112 in einer Ausführungsform der Erfindung die Filterung der aktuell ausgewählten Spalte. Falls nicht alle der Spalten im Block ausgewählt wurden, kehrt der Frame-Generator112 zu diesem Zeitpunkt zum Schritt2220 zurück, um die nächste Spalte im Block zu filtern. Falls alle der Spalten im Block gefiltert wurden, kehrt der Frame-Generator andernfalls zum Schritt2218 zurück, um den nächsten Block zu filtern. - Es wird weiterhin auf den Schritt
2224 Bezug genommen: Falls die Variable „filter_strength„ größer als Null ist, geht der Frame-Generator112 zu einem Schritt2228 weiter und filtert den Pixel, auf den sich die Variablen „filter1„ und „filter2„ beziehen. Der Frame-Generator112 stellt den Pixel, auf den sich die Variable „filter1„ bezieht, so ein, dass er dem Durchschnitt der Pixelwerte von sich selbst und seiner oberen und unteren Nachbarn entspricht. Der Frame-Generator112 stellt ferner den Pixel, auf den sich die Variable „filter2„ bezieht, so ein, dass er dem Durchschnitt der Pixelwerte von sich selbst und seiner oberen und unteren Nachbarn entspricht. Der Frame-Generator112 dividiert dann die Variable „filter_strength„ durch 2 und rundet ab. Daraufhin stellt der Frame-Generator112 die Variable „filter1„ neu ein, so dass sie sich auf den Pixel unmittelbar über dem Pixel bezieht, auf den sich „filter1„ bezieht. Der Frame-Generator112 stellt ferner die Variable „filter2„ neu ein, so dass sie sich auf den Pixel bezieht, der sich unmittelbar unter dem Pixel befindet, auf den sich die Variable „filter2„ zu diesem Zeitpunkt bezieht. Der Frame-Generator112 kehrt dann zum Schritt2224 zurück und fährt mit der Filterung der Pixel in der ausgewählten Zeile [Spalte] fort, bis die Filterstärke Null ist. Zu diesem Zeitpunkt kehrt der Frame-Generator112 zum Schritt2220 zurück, um den nächsten Pixel in der Spalte zu filtern. - Der erfindungsgemäße Frame-Generator
112 führt vorteilhaft eine umfassende Analyse der ersten und zweiten Basis-Frames durch, um die Angebrachtheit der Frame-Generierung zu bestimmen. Falls die Frame-Generierung wahrscheinlich ein abnormales Ergebnis liefern würde, wird sie nicht durchgeführt. Ebenso führt der Frame-Generator112 bei Benutzung in Verbindung mit einem bewegungskompensierten Interpolationssystem eine globale Bewegungsvektorkorrektur durch und stellt hierdurch sicher, dass jeder der Bewegungsvektoren eine Bewegung darstellt. - Der Frame-Generator
112 kann ferner auch die Anwesenheit von Text in den ersten und zweiten Basis-Frames erkennen. Falls solcher Text erkannt wird, behält der Frame-Generator die Position des Texts im generierten Frame bei und unterscheidet sich hierdurch von simplistischeren Lösungen, die eine Frame-Generierung unabhängig von der Anwesenheit von Text durchführen. - Der Frame-Generator
112 filtert auch die generierten Frames. Eine solche Filterung liefert eine angenehmer empfundene Präsentation als Präsentationen mit ungefilterten Frames. - Während mittels der obigen, ausführlichen Beschreibung neue Merkmale der Erfindung anhand verschiedener Ausführungsformen aufgezeigt, beschrieben und hervorgehoben wurden, ist es klar, dass der Fachmann verschiedene Auslassungen, Substitutionen und Änderungen bezüglich der Form und der Details der dargestellten Vorrichtung bzw. des dargestellten Verfahrens vornehmen kann, ohne vom Konzept der Erfindung abzuweichen. Der Anwendungsbereich der Erfindung wird durch die beiliegenden Patentansprüche, nicht die vorstehende Beschreibung vorgegeben. Alle Änderungen, die den Ansprüchen in Bedeutung und Umfang gleichwertig sind, sollen innerhalb ihres Anwendungsbereichs angenommen werden.
- Übersetzung der Textbestandteile in den Figuren:
- Fußzeile auf allen Zeichnungsblättern: ERSATZBLATT (REGEL 26)
- Bezugszeichenliste
- Fig. 1
- 102
- Medienserver
- 116
- Encoder
- 104
- Netzwerk
- 106
- Rendering-Computer
- 118
- Decoder
- 112
- Frame-Generator
- 1
- Bild-Frame
- 2
- 144 Zeilen
- 3
- 176 Pixel
- 4
- Gruppe von Blöcken (GOB = Group of Blocks)
- 5
- Makroblock
- 6
- Block
- 7
- 8 Zeilen
- 8
- 8 Pixel
- 1
- Bewegungsvektor
- 2
- Beste Makroblock-Übereinstimmung
- 3
- Suchfenster
- 1
- Frame-Statistiken
- 2
- Frame dekodieren
- 3
- Vorheriger Frame
- 4
- Frame-Speicher
- 5
- Erfolg?
- 6
- FRU-Statistiken
- 7
- Frame zu Video-Rendering-System
- 400
- Frame-Analyse
- 402
- Frame-Synthese
- 404
- Zustandsmaschine
- 1
- Nein
- 2
- Ja
- 502
- Basis-Frames analysieren
- 504
- Generierung von Interframe(s) akzeptierbar?
- 506
- Interframe(s) generieren
- 508
- Beenden
- 1
- Ja
- 2
- Nein
- 3
- (Zu
7 ) - 600
- Empfängt Frames und statistische Infos
- 602
- Durchführung der Fehlerüberprüfung der Frames
- 604
- Ist zweites Frame unabhängig kodiert?
- 610
- Zustand = „KEYFRAME„ zuweisen
- 612
- Ist Zeit zwischen Frames > erster Schwellwert?
- 614
- Zustand = „BIG_CHANGE„ zuweisen
- 616
- Beenden
- 618
- Ist Zeitdauer zwischen Frames > zweiter Schwellwert?
- 622
- Anzahl der Makroblocks zählen, die unabhängig kodiert wurden
- 624
- Prozentsatz unabhängig kodierter Makroblocks größer als dritter Schwellwert?
- 626
- Ist maximaler Bewegungsvektor < vierter Schwellwert?
- 630
- Zustand = „LOW_ACTION„ zuweisen
- 632
- Durchschnittlichen Abstand zwischen Bewegungsvektor für jeden Makroblock und den Bewegungsvektor des Makroblocks rechts und darunter berechnen
- 634
- Frame in Abschnitte unterteilen
- 1
- Ja
- 2
- Nein
- 3
- Zu
8 - 4
- Zu
6 - 638
- Für jeden Abschnitt die berechneten Bewegungsvektordifferenzen jedes Makroblocks summieren
- 640
- Jede Summe mit einem fünften Schwellwert vergleichen
- 642
- Ein Quadrant > Schwellwert?
- 644
- Zustand = „HIGH_ACTION„ zuweisen
- 1
- Ja
- 2
- Nein
- 800
- Für jeden Makroblock mit Bewegungsvektor eine Summe der quadrierten Differenz zwischen den Pixeln an ähnlichen räumlichen Positionen in zwei Frames berechnen
- 802
- Durchschnittliche Summe der quadrierten Differenz für jeden Pixel in jedem Makroblock berechnen
- 804
- Durchschnittliche Summe der quadrierten Differenz für jeden Makroblock berechnen
- 808
- Durchschnitt für jeden Makroblock > sechster Schwellwert?
- 812
- Zustand = „BIG_CHANGE„ zuweisen
- 814
- Restenergie < siebter Schwellwert?
- 816
- Zustand = „SMALL_CHANGE„ zuweisen
- 818
- Zustand = „MODERATE_ACTION„ zuweisen
- 1
- Ja
- 2
- Nein
- 3
- Zu
10 - 1000
- Beginn
- 1004
- „LOW_ACTION„ oder „KEYFRAME„
- 1008
- „MODERATE_ACTION„ oder „HIGH_ACTION„
- 1009
- „ABORT„, „SMALL_CHANGE„ oder „BIG_CHANGE„
- 1010
- Fehlschlag Upsampling
- 1012
- Texterkennung durchführen
- 1016
- Ist Zustand = „ABORT„, „SMALL_CHANGE„, „BIG_CHANGE„, „HIGH_ACTION„?
- 1020
- Fehlschlag Upsampling
- 1030
- Globale Bewegungskorrektur durchführen
- 1044
- Bewegungsvektorfilterung durchführen
- 1046
- Zustand neu bestimmen
- 1048
- Bestimmen, ob sich Zustand von „MODERATE„ auf „HIGH„ geändert hat?
- 1050
- Zustand auf „MODERATE„ zurückändern
- 1052
- Bewegungsvektorfilterung durchführen
- 1
- Ja
- 2
- Nein
- 3
- (Von
9 ) - 1102
- Letzten beiden Zustände überprüfen
- 1106
- Ist einer der letzten zwei Zustände ein Fehlschlag?
- 1108
- Fehlschlag Upsampling
- 1110
- Ende
- 1
- Globale Bewegungskorrektur
- 2
- Start
- 3
- Ende
- 1200
- Liste der prospektiven Bewegungsvektoren holen
- 1202
- Durchschnittlichen Bewegungsvektor für das Frame berechnen
- 1204
- Vier Eckblöcke identifizieren
- 1208
- Bewegungsvektor für jeden Eckblock berechnen
- 1210
- Besten Bewegungsvektor für jeden Makroblock berechnen
- 1
- Bewegungsvektorfilterung
- 2
- Ja
- 3
- Nein
- 1600
- Start
- 1602
- Frame-Inneres filtern
- 1606
- Kleines Frame?
- 1610
- Jeden Bewegungsvektor auf den Medianwert von sich selbst und den acht Nachbarn zurücksetzen
- 1614
- Für jeden Bewegungsvektor den Medianwert eines Satzes von Bewegungsvektoren berechnen, einschl.: Bewegungsvektor für jeden benachbarten Makroblock, 12 anderen Makroblöcken und drei Instanzen des aktuellen Makroblocks
- 1618
- An Kanten des Frame entlang filtern
- 1622
- Für jeden Kanten-Makroblock den Median-Bewegungsvektor seiner Nachbarn berechnen und den Bewegungsvektor jedes Kanten-Makroblocks auf diesen Wert zurücksetzen
- 1624
- Ende
- 1
- Texterkennung
- 2
- Nein
- 3
- Beenden
- 4
- Ja
- 1900
- Summe der quadrierten Differenzen der Pixelintensität zwischen identischen Blöcken in aufeinander folgenden Frames berechnen
- 1902
- Ist Summe der quadrierten Differenz unter Schwellwert?
- 1906
- Block einen Bewegungsvektor von 0, 0 zuweisen
- 1910
- Block als Textblock in letzen zwei Frames bestimmt?
- 1914
- Schwellwert = 3200 einstellen
- 1918
- Schwellwert = 1600 einstellen
- 1922
- Kantenzahl für Frame mit Schwellwert berechnen
- 1926
- Vermutliche Textblöcke bestimmen
- 1930
- Nicht zusammenhängende Textblöcke eliminieren
- 1932
- Blöcke und Ecken füllen
- 1
- Hier füllen
- 1
- Synthese
- 2
- Ja
- 3
- Nein
- 4
- Ende
- 2100
- Start
- 2104
- Zustand ist „MODERATE„?
- 2108
- Erste und zweite Frames zusammenfügen
- 2112
- Ist ausgewählte Zeit näher am ersten Frame?
- 2120
- Blöcke in neuem Frame auf der Basis des zweiten Frame berechnen
- 2124
- Blöcke in neuem Frame auf der Basis des ersten Frame berechnen
- 2128
- Nachfiltern neues Frame
- 2132
- Neues Frame anzeigen
- 1
- Nachfilterung
- 2200
- Horizontale Filterung durchführen
- 2204
- Quantisierer und Bewegungsvektor von Block und Nachbarblöcken zur Bestimmung einer Filterstärke für den Block verwenden
- 2208
- Jede Zeile des Blocks filtern
- 2212
- Auf der Basis der Filterstärke bestimmen, ob individuelle Pixel in Zeile gefiltert werden sollen
- 2216
- Ausgewählte Pixel filtern
- 2218
- Vertikale Filterung durchführen
- 2219
- Quantisierer und Bewegungsvektor von Block und Nachbarblöcken zur Bestimmung einer vertikalen Filterstärke für den Block verwenden
- 2220
- Jede Spalte des Blocks filtern
- 2224
- Auf der Basis der Filterstärke bestimmen, ob individuelle Pixel in Spalte gefiltert werden sollen
- 2228
- Ausgewählte Pixel filtern
Claims (25)
- Verfahren zur Generierung von Videoframes in einem Computersystem, wobei dieses Verfahren umfasst: den Empfang eines ersten Frame in einem Speicher im Computersystem; den Empfang eines zweiten Frame im Speicher im Computersystem, wobei der zweite Frame Elemente aufweist und jedes der Elemente des zweiten Frame entweder unabhängig kodiert ist oder einen zugehörigen Bewegungsvektor aufweist; die Bestimmung, ob zwischen dem ersten Frame und dem zweiten Frame ein Interframe generiert werden soll, wobei die Bestimmung, ob ein Interframe generiert werden soll, die Bestimmung umfasst, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet; und die Generierung zumindest eines Interframe basierend auf den Elementen des ersten Frame und/oder zweiten Frame abhängig vom Bestimmungsschritt.
- Verfahren nach Anspruch 1, gekennzeichnet dadurch, dass jedes der Elemente ein Makroblock mit einer Mehrzahl von Zeilen und Spalten von Pixeln ist, wobei jedes der Pixel einen zugehörigen Intensitätswert aufweist.
- Verfahren nach Anspruch 1, gekennzeichnet dadurch, dass die Bestimmung, ob der Interframe generiert werden soll, die Bestimmung umfasst, ob der zweite Frame ein Keyframe ist.
- Verfahren nach Anspruch 1, zusätzlich mit den Schritten: Empfang von Zeitintervalldaten, die auf das Darstellungstiming des ersten und zweiten Frames hinweisen; und Bestimmung, ob der Zeitunterschied zwischen dem ersten und zweiten Frame größer als ein Schwellwert ist.
- Verfahren nach Anspruch 4, gekennzeichnet dadurch, dass die Größe des Schwellwerts zumindest zum Teil auf dem Wert eines Quantisierers basiert, der dem ersten Frame und/oder dem zweiten Frame zugeordnet ist und eine ganze Zahl ist, die die Klarheit des jeweiligen Frame angibt.
- Verfahren nach Anspruch 1, gekennzeichnet dadurch, dass die Bestimmung, ob der Interframe generiert werden soll, die Bestimmung umfasst, ob der maximale Bewegungsvektor im zweiten Frame einen vordefinierten Schwellwert überschreitet.
- System zur Generierung von Videoframes, wobei dieses System umfasst: Mittel für den Empfang eines ersten Frame, das Elemente aufweist, in einem Speicher im Computersystem; Mittel für den Empfang eines zweiten Frame, das Elemente aufweist, im Speicher im Computersystem, wobei jedes der Elemente des zweiten Frame entweder unabhängig kodiert ist oder einen zugehörigen Bewegungsvektor aufweist; Mittel zur Bestimmung, ob zwischen dem ersten Frame und dem zweiten Frame ein Interframe generiert werden soll, wobei die Bestimmung, ob ein Interframe generiert werden soll, die Bestimmung umfasst, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet, und Mittel zur Generierung zumindest eines Interframe basierend auf Elementen des ersten Frame und/oder zweiten Frame abhängig vom Bestimmungsschritt.
- System nach Anspruch 7, gekennzeichnet dadurch, dass jedes der Elemente ein Makroblock mit einer Vielzahl von Zeilen und Spalten von Pixeln ist, wobei jedes der Pixel einen zugehörigen Intensitätswert aufweist.
- System nach Anspruch 7, gekennzeichnet dadurch, dass die Bestimmung, ob der Interframe generiert werden soll, die Bestimmung umfasst, ob der zweite Frame ein Keyframe ist.
- System nach Anspruch 7, gekennzeichnet durch: den Empfang von Zeitintervalldaten, die auf das Darstellungstiming des ersten und zweiten Frames hinweisen; und die Bestimmung, ob der Interframe generiert werden soll, umfasst die Bestimmung, ob der Zeitunterschied zwischen dem ersten und zweiten Frame größer als ein Schwellwert ist.
- System nach Anspruch 7, gekennzeichnet dadurch, dass die Größe des Schwellwerts zumindest zum Teil auf dem Wert eines Quantisierers basiert, der dem ersten Frame und/oder dem zweiten Frame zugeordnet ist und eine ganze Zahl ist, die die Klarheit des jeweiligen Frame angibt.
- System nach Anspruch 7, gekennzeichnet dadurch, dass die Bestimmung, ob der Interframe generiert werden soll, die Bestimmung umfasst, ob der maximale Bewegungsvektor im zweiten Frame einen vordefinierten Schwellwert überschreitet.
- System nach Anspruch 7, das Folgendes aufweist: ein Frame-Analysemodul zum Empfangen von Frames; sowie ein Frame-Synthesemodul zur Bestimmung, ob die Generierung von einem oder mehreren Frames zwischen zwei empfangenen Frames eine fließendere visuelle Darstellung liefert, als ohne Frame-Generierung, durch Bestimmung, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet.
- System nach Anspruch 13, gekennzeichnet dadurch, dass das Frame-Synthesemodul zwischen zwei empfangenen Frames ein oder mehrere Frames generiert.
- Verfahren zur Generierung von Videoframes in einem Computersystem, beinhaltend: Empfang eines ersten Frame in einem Speicher des Computersystems, wobei das erste Frame einen ersten Satz von Elementen umfasst; Empfang eines zweiten Frame im Speicher des Computersystems, wobei das zweite Frame einen zweiten Satz von Elementen umfasst; Bestimmung, ob ein Interframe zwischen dem ersten Frame und dem zweiten Frame generiert werden soll, durch Bestimmung, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet; Wahl eines Frame-Generierungsverfahrens basierend auf den Informationen im ersten und/oder zweiten Frame; und Anwendung des gewählten Frame-Generierungsverfahrens zur Generierung von mindestens einem Interframe, der auf dem ersten und/oder zweiten Satz von Elementen basiert.
- Verfahren nach Anspruch 15, gekennzeichnet dadurch, dass das Frame-Generierungsverfahren ausgewählt wird aus der Gruppe mit bewegungskompensierter Interpolation und linearer Interpolation.
- Verfahren nach Anspruch 16, gekennzeichnet dadurch, dass einer oder mehrere des ersten Satzes von Elementen und des zweiten Satzes von Elementen einen zugehörigen Bewegungsvektor aufweist.
- Verfahren nach Anspruch 17, gekennzeichnet dadurch, dass die Auswahl eines Frame-Generierungsverfahrens umfasst: Bestimmung, ob einer der Bewegungsvektoren einen Schwellwert überschreitet; und Auswahl der bewegungskompensierten Interpolation als Verfahren für die Frame-Generierung, falls einer der Bewegungsvektoren den Schwellwert überschreitet.
- Verfahren nach Anspruch 17, gekennzeichnet dadurch, dass die Auswahl eines Frame-Generierungsverfahrens die folgenden Schritte umfasst: für eine Gruppe von einem oder mehreren Elementen des ersten und zweiten Satzes von Elementen und in Bezug auf jedes enthaltene Element der Gruppe, Identifizierung eines weiteren benachbart positionierten Elements in der Gruppe; Bestimmung des durchschnittlichen Abstands zwischen dem dem entsprechenden enthaltenen Element zugehörigen Bewegungsvektor und dem diesem benachbart positionierten Element zugehörigen Bewegungsvektor; Summierung der durchschnittlichen Abstände; und Auswahl der bewegungskompensierten Interpolation, falls der summierte Gesamtbetrag unter einem Schwellwert liegt.
- System zur Generierung von Videoframes, das Folgendes umfasst: Mittel zum Empfang eines ersten Frame in einem Speicher des Computersystems, wobei das erste Frame einen ersten Satz von Elementen umfasst; Mittel zum Empfang eines zweiten Frame im Speicher des Computersystems, wobei das zweite Frame einen zweiten Satz von Elementen umfasst; Mittel zur Bestimmung, ob ein Interframe zwischen dem ersten Frame und dem zweiten Frame generiert werden soll, durch Bestimmung, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet; Mittel zur Wahl eines Frame-Generierungsverfahrens basierend auf dem ersten und/oder zweiten Frame; und Mittel zur Anwendung des gewählten Frame-Generierungsverfahrens zur Generierung von mindestens einem Interframe basierend auf dem ersten und/oder zweiten Satz von Elementen.
- System nach Anspruch 20, gekennzeichnet dadurch, dass das Frame-Generierungsverfahren ausgewählt wird aus der Gruppe mit bewegungskompensierter Interpolation und linearer Interpolation.
- System nach Anspruch 20, gekennzeichnet dadurch, dass eines oder mehrere des ersten Satzes von Elementen und des zweiten Satzes von Elementen einen zugehörigen Bewegungsvektor aufweist.
- System nach Anspruch 22, gekennzeichnet dadurch, dass die Mittel zur Auswahl eines Frame-Generierungsverfahrens umfassen: Mittel zur Bestimmung, ob einer der Bewegungsvektoren einen Schwellwert überschreitet; und Mittel zur Auswahl der bewegungskompensierten Interpolation als Verfahren für die Frame-Generierung, falls einer der Bewegungsvektoren den Schwellwert überschreitet.
- System nach Anspruch 20, das Folgendes umfasst: ein Frame-Analysemodul zum Empfangen von Frames; sowie ein Frame-Synthesemodul zur Bestimmung, ob die Generierung von einem oder mehreren Frames zwischen zwei empfangenen Frames eine fließendere visuelle Darstellung liefert, als ohne Frame-Generierung, durch Bestimmung, ob die Anzahl unabhängig kodierter Elemente des zweiten Frame einen vordefinierten Schwellwert überschreitet oder durch Bestimmung, ob der maximale Bewegungsvektor im zweiten Frame einen vordefinierten Schwellwert überschreitet.
- System nach Anspruch 24, gekennzeichnet dadurch, dass das Frame-Synthesemodul zwischen zwei empfangenen Frames ein oder mehrere Frames generiert.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/345,686 US6731818B1 (en) | 1999-06-30 | 1999-06-30 | System and method for generating video frames |
US09/345,686 | 1999-06-30 | ||
PCT/US2000/018390 WO2001001696A1 (en) | 1999-06-30 | 2000-06-30 | System and method for generating video frames |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10084783T1 DE10084783T1 (de) | 2002-09-26 |
DE10084783B3 true DE10084783B3 (de) | 2013-11-28 |
Family
ID=23356063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10084783T Expired - Lifetime DE10084783B3 (de) | 1999-06-30 | 2000-06-30 | System und Verfahren zur Generierung von Videoframes |
Country Status (5)
Country | Link |
---|---|
US (1) | US6731818B1 (de) |
AU (1) | AU6341000A (de) |
DE (1) | DE10084783B3 (de) |
GB (1) | GB2368744B (de) |
WO (1) | WO2001001696A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100525785B1 (ko) * | 2001-06-15 | 2005-11-03 | 엘지전자 주식회사 | 이미지 화소 필터링 방법 |
US7298885B2 (en) * | 2002-11-27 | 2007-11-20 | 3M Innovative Properties Company | Biological growth plate scanner with automated image processing profile selection |
JP4428159B2 (ja) * | 2003-11-05 | 2010-03-10 | セイコーエプソン株式会社 | 画像データ生成装置、画質補正装置、画像データ生成方法および画質補正方法 |
US8472523B2 (en) * | 2004-08-13 | 2013-06-25 | Broadcom Corporation | Method and apparatus for detecting high level white noise in a sequence of video frames |
US8582660B2 (en) * | 2006-04-13 | 2013-11-12 | Qualcomm Incorporated | Selective video frame rate upconversion |
JP4172495B2 (ja) * | 2006-05-09 | 2008-10-29 | ソニー株式会社 | 画像表示装置、信号処理装置、および画像処理方法、並びにコンピュータ・プログラム |
JP2008307184A (ja) * | 2007-06-13 | 2008-12-25 | Fujifilm Corp | 画像処理装置および画像処理プログラム |
US8559733B2 (en) * | 2009-03-31 | 2013-10-15 | Citrix Systems, Inc. | Methods and systems for approximating progressive image encoding using image partitioning |
RU2510589C2 (ru) * | 2012-07-05 | 2014-03-27 | Вадим Витальевич Ярошенко | Способ кодирования цифрового видеоизображения |
EP3053333A4 (de) * | 2013-10-04 | 2017-08-02 | RealD Inc. | Masteringsysteme und -verfahren für bilder |
US10523961B2 (en) | 2017-08-03 | 2019-12-31 | Samsung Electronics Co., Ltd. | Motion estimation method and apparatus for plurality of frames |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0391094B1 (de) * | 1989-04-05 | 1994-10-12 | Yves Charles Faroudja | Fernseh-Abtastzeilenverdoppler mit einem zeitlichen Mittelwertfilter |
US5592226A (en) * | 1994-01-26 | 1997-01-07 | Btg Usa Inc. | Method and apparatus for video data compression using temporally adaptive motion interpolation |
US5734435A (en) * | 1994-02-01 | 1998-03-31 | Snell & Wilcox Ltd. | Video processing to convert between field rates |
EP0909092A2 (de) * | 1997-10-07 | 1999-04-14 | Hitachi, Ltd. | Verfahren und Vorrichtung zur Videosignalumsetzung |
WO1999025122A2 (en) * | 1997-11-07 | 1999-05-20 | Koninklijke Philips Electronics N.V. | Coding a sequence of pictures |
WO1999052281A2 (en) * | 1998-04-03 | 1999-10-14 | Miranda Technologies Inc. | Hdtv up converter |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4383272A (en) | 1981-04-13 | 1983-05-10 | Bell Telephone Laboratories, Incorporated | Video signal interpolation using motion estimation |
EP0294957B1 (de) | 1987-06-09 | 1995-04-12 | Sony Corporation | Verarbeitung des Bewegungsvektors in digitalen Fernsehbildern |
DE69334277D1 (de) | 1992-11-05 | 2009-05-28 | Canon Kk | Vorrichtung und Verfahren zur Verarbeitung von Bewegtbildern |
CA2126467A1 (en) | 1993-07-13 | 1995-01-14 | Barin Geoffry Haskell | Scalable encoding and decoding of high-resolution progressive video |
GB9325073D0 (en) | 1993-12-07 | 1994-02-02 | Eidos Plc | Improvements in or relating to video processing systems |
JP3344601B2 (ja) | 1993-12-29 | 2002-11-11 | ソニー株式会社 | 画像データ再生方法及びその装置、静止画検出装置及びその方法、シーンチエンジ検出装置及びその方法並びにフレームシンクロナイザ |
JP3193833B2 (ja) | 1994-07-25 | 2001-07-30 | ケイディーディーアイ株式会社 | 動ベクトル処理装置 |
FR2742900B1 (fr) | 1995-12-22 | 1998-02-13 | Thomson Multimedia Sa | Procede d'interpolation de trames progressives |
WO1997046020A2 (en) | 1996-05-24 | 1997-12-04 | Philips Electronics N.V. | Motion vector processing |
EP0883298A3 (de) | 1997-06-04 | 2000-03-29 | Hitachi, Ltd. | Vorrichtung zur Umsetzung von Bildsignalen sowie Fernsehempfänger |
-
1999
- 1999-06-30 US US09/345,686 patent/US6731818B1/en not_active Expired - Lifetime
-
2000
- 2000-06-30 WO PCT/US2000/018390 patent/WO2001001696A1/en active Application Filing
- 2000-06-30 AU AU63410/00A patent/AU6341000A/en not_active Abandoned
- 2000-06-30 DE DE10084783T patent/DE10084783B3/de not_active Expired - Lifetime
- 2000-06-30 GB GB0130614A patent/GB2368744B/en not_active Expired - Lifetime
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0391094B1 (de) * | 1989-04-05 | 1994-10-12 | Yves Charles Faroudja | Fernseh-Abtastzeilenverdoppler mit einem zeitlichen Mittelwertfilter |
US5592226A (en) * | 1994-01-26 | 1997-01-07 | Btg Usa Inc. | Method and apparatus for video data compression using temporally adaptive motion interpolation |
US5734435A (en) * | 1994-02-01 | 1998-03-31 | Snell & Wilcox Ltd. | Video processing to convert between field rates |
EP0909092A2 (de) * | 1997-10-07 | 1999-04-14 | Hitachi, Ltd. | Verfahren und Vorrichtung zur Videosignalumsetzung |
WO1999025122A2 (en) * | 1997-11-07 | 1999-05-20 | Koninklijke Philips Electronics N.V. | Coding a sequence of pictures |
WO1999052281A2 (en) * | 1998-04-03 | 1999-10-14 | Miranda Technologies Inc. | Hdtv up converter |
Non-Patent Citations (6)
Title |
---|
HASKELL, Barry ; PURI, Atul ; NETRAVALI, Arun N.: Digital video: an introduction to MPEG-2. New York [u.a.] : Chapman & Hall, 1997. S. 146-155. - ISBN 0-412-08411-2 * |
HASKELL, Barry ; PURI, Atul ; NETRAVALI, Arun N.: Digital video: an introduction to MPEG-2. New York [u.a.] : Chapman & Hall, 1997. S. 146-155. – ISBN 0-412-08411-2 |
Jiann-Jone Chen; Hsueh-Ming Hang: "Source model for transform video coder and its application. II. Variable frame rate coding", Circuits and Systems for Video Technology, IEEE Transactions on , vol.7, no.2, pp.299-311, Apr 1997doi: 10.1109/76.564109 * |
KIM, Joon-Seek ; PARK, Rae-Hong: Local motion-adaptive interpolation technique based on block matching algorithms. In: Signal Processing: Image Communication, Vol. 4, 1992, S. 519-528. - ISSN 0923-5965 |
KIM, Joon-Seek ; PARK, Rae-Hong: Local motion-adaptive interpolation technique based on block matching algorithms. In: Signal Processing: Image Communication, Vol. 4, 1992, S. 519-528. - ISSN 0923-5965 * |
WEINER, E., MALAH, D.: Interpolation of skippe4d image frames for image sequence coding. In: 17th Convertion of Electrical and Electronics Engineers in Israel, 1991, S. 178-181 * |
Also Published As
Publication number | Publication date |
---|---|
DE10084783T1 (de) | 2002-09-26 |
GB2368744B (en) | 2003-12-24 |
AU6341000A (en) | 2001-01-31 |
GB2368744A (en) | 2002-05-08 |
GB0130614D0 (en) | 2002-02-06 |
WO2001001696A1 (en) | 2001-01-04 |
US6731818B1 (en) | 2004-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69031055T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE69027479T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE69733978T2 (de) | Bilddateninterpolationsgerät | |
DE69609482T2 (de) | Verfahren zur Interpolation von Vollbilden | |
DE69413148T2 (de) | Verfahren zur Bestimmung von Bewegungsvektoren in kleinen Bildsegmenten in Fernsehbildern | |
DE69032437T2 (de) | Bewegungseinschätzer | |
DE69132475T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE69131591T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE69519462T2 (de) | Bildübertragungssystem und Verfahren zur Datenreduktion von Farbbildern mittels Farbtabellen und Zusammenfassung von Bildbereichen | |
DE69213271T2 (de) | Kodierung von Videosignalen | |
DE69323986T2 (de) | Vorrichtung und Verfahren zur Bildverarbeitung | |
DE69015419T2 (de) | Umwandlung eines Videosignals auf einen photographischen Film. | |
DE69510851T2 (de) | Verfahren und Gerät zur Reduzierung von Umwandlungsartefakten | |
DE3687434T2 (de) | Geraet zum ausgleich von bewegung in einem von einem von einem fernsehsignal abgeleiteten bild. | |
DE10084783B3 (de) | System und Verfahren zur Generierung von Videoframes | |
DE69028792T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE102005046772A1 (de) | Iteratives Verfahren zur Interpolation von Bildinformationswerten | |
DE69027704T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE69031144T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE60031594T2 (de) | Verfahren und Vorrichtung zum Interpolieren von Zeilen | |
DE69028239T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
DE19816898B4 (de) | Vorrichtung und Verfahren zum adaptiven Codieren eines Bildsignals | |
DE69031322T2 (de) | Bewegungsabhängige Videosignalverarbeitung | |
WO2001052525A2 (de) | Digitalfotografieverfahren und digitalkamera | |
EP1605405B1 (de) | Verfahren zur Ermittlung von Bewegungsvektoren, die Bildbereichen eines Bildes zugeordnet sind |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8128 | New person/name/address of the agent |
Representative=s name: WITTE, WELLER & PARTNER, 70178 STUTTGART |
|
R082 | Change of representative |
Representative=s name: PATENTANWAELTE WALLACH, KOCH & PARTNER, DE Representative=s name: PATENTANWAELTE WALLACH, KOCH & PARTNER, 80339 MUEN |
|
R002 | Refusal decision in examination/registration proceedings | ||
R125 | Request for further processing filed | ||
R126 | Request for further processing allowed | ||
R002 | Refusal decision in examination/registration proceedings | ||
R125 | Request for further processing filed | ||
R126 | Request for further processing allowed | ||
R018 | Grant decision by examination section/examining division | ||
R082 | Change of representative |
Representative=s name: PATENTANWAELTE WALLACH, KOCH & PARTNER, DE |
|
R081 | Change of applicant/patentee |
Owner name: INTEL CORPORATION, US Free format text: FORMER OWNER: REALNETWORKS, INC., SEATTLE, US Effective date: 20130828 Owner name: INTEL CORPORATION, SANTA CLARA, US Free format text: FORMER OWNER: REALNETWORKS, INC., SEATTLE, WASH., US Effective date: 20130828 |
|
R082 | Change of representative |
Representative=s name: PATENTANWAELTE WALLACH, KOCH & PARTNER, DE Effective date: 20130828 Representative=s name: PATENTANWAELTE WALLACH, KOCH & PARTNER, DE Effective date: 20110713 Representative=s name: PATENTANWAELTE WALLACH, KOCH, DR. HAIBACH, FEL, DE Effective date: 20130828 Representative=s name: PATENTANWAELTE WALLACH, KOCH, DR. HAIBACH, FEL, DE Effective date: 20110713 |
|
R020 | Patent grant now final | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: H04N0007260000 Ipc: H04N0019000000 |
|
R020 | Patent grant now final |
Effective date: 20140301 |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: H04N0007260000 Ipc: H04N0019000000 Effective date: 20140416 |
|
R071 | Expiry of right |