DE10084783B3 - System und Verfahren zur Generierung von Videoframes - Google Patents

System und Verfahren zur Generierung von Videoframes Download PDF

Info

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
Application number
DE10084783T
Other languages
English (en)
Other versions
DE10084783T1 (de
Inventor
Greg Conklin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10084783T1 publication Critical patent/DE10084783T1/de
Application granted granted Critical
Publication of DE10084783B3 publication Critical patent/DE10084783B3/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods 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

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.

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-System 100. Im Videosystem 100 ist ein Medien-Server 102 über ein Netzwerk 104 mit einem Rendering-Computer 106 verbunden. Der Medienserver 102 umfasst typischerweise eine oder mehrere Videopräsentationen 110 zur Übertragung an den Rendering-Computer 106.
  • Ein bei den derzeitigen Streaming-Systemen auftretendes Problem besteht darin, dass die Übertragungsbandbreite zwischen dem Medienserver 102 und dem Rendering-Computer 106 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 Medienserver 102 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äsentation 110 verwendet werden. Typischerweise sind Frame-Generatoren einer von zwei Kategorien zuzuordnen: Linearbewegungs-Interpolationssysteme und bewegungskompensierte Frame-Interpolationssysteme. Linearbewegungs-Interpolationssysteme überlagern zwei Referenzframes der Videopräsentation 110, um ein oder mehrere Interframes zu generieren. Bewegungskompensierte Frame-Interpolationssysteme benutzen Bewegungsvektoren für die Frame-Interpolation.
  • 2 stellt das Datenformat eines Frame 200 gemäß einem bewegungskompensierten Frame-Interpolationssystem dar. Das Frame 200 in 2 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 Referenzframe 300. Normalerweise ist das Referenzframe das letzte Frame, das an den Rendering-Computer 106 ü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 Medienserver 102 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.
  • 610 gemeinsam ein Ablaufdiagramm, das die in 5 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 in 5 abhängig kodierten Makroblöcke darstellt.
  • 13A ein Ablaufdiagramm, das vier Blöcke des zweiten Frame darstellt, die als Teil des globalen Bewegungskorrekturverfahrens in 12 analysiert werden.
  • 13B ein Ablaufdiagramm, das vier Blöcke des zweiten Frame darstellt, die als Teil des globalen Bewegungskorrekturverfahrens 12 analysiert werden.
  • 14 und 15 repräsentative Zeichnungen, die zusätzlich zu den in 13 gezeigten Blöcken, die im Rahmen des globalen Bewegungskorrekturverfahrens von 12 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 von 16 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 von 16 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 in 5 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 in 4 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-Systems 100, das mit einer Ausführungsform der vorliegenden Erfindung verwendet werden kann, dargestellt. Das Video-Streaming-System 100 umfasst einen Medienserver 102, der über ein Netzwerk 104 mit einem Rendering-Computer 106 verbunden ist.
  • Es wird angemerkt, dass der Medienserver 102 und der Rendering-Computer 106 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 Encoder 116 zum Kodieren von Videobildern. Der Rendering-Computer 106 umfasst einen Decoder 118 zum Dekodieren der Videobilder, die vom Encoder 116 kodiert und anschließend an den Rendering-Computer 106 ü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 Decoder 118 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 Netzwerks 104, der Verarbeitungsgeschwindigkeit des Medienservers 102 und Rendering-Computers 106 sowie der Kodierungs- und Dekodierungsalgorithmen, die entsprechend vom Encoder 116 und Decoder 118 benutzt werden, unterschiedliche einzelne Werte auftreten.
  • 4 zeigt Komponenten des Frame-Generator 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Der Frame-Generator 112 weist ein Frame-Analysemodul 400 und ein Frame-Synthesemodul 402 auf. In einer Ausführungsform bestehen das Frame-Analysemodul 400 und das Frame-Synthesemodul 402 jeweils aus verschiedenen Softwaremodulen, die typischerweise separat kompiliert wurden und zu einem einzigen, ausführbaren Programm zusammengefasst sind. Dementsprechend können das Frame-Analysemodul 400 und das Frame-Synthesemodul 402 optional mit einem oder mehreren Softwaremodulen, die auf dem Rendering-System 106 vorhanden sind und ausgeführt werden, integriert werden.
  • In einer Ausführungsform arbeitet der Frame-Generator 112 mittels einer Zustandsmaschine 404. In einer Ausführungsform ist die Zustandsmaschine 404 ein Softwaremodul, das in seiner Art dem Frame-Analysemodul 400 und/oder dem Frame-Synthesemodul 402 ähnelt. Die Zustandsmaschine 404 ist betriebsfähig mit dem Frame-Analysemodul 400 und dem Frame-Synthesemodul 402 verbunden. In einer Ausführungsform der Erfindung weist die Zustandsmaschine 404 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 Zustandsmaschine 404, 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 1
    Zustand 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-Analysemodul 400, Frame-Synthesemodul 402 und die Zustandsmaschine 404 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-Generators 112 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-Synthesemodul 402 und/oder die Zustandsmaschine 404 jeweils als Hardwaregerät ausgebildet sein.
  • Systembetrieb
  • 5 zeigt ein stark schematisiertes Ablaufdiagramm, welches das Frame-Generierungsverfahren des Frame-Generator 112 (1) darstellt. Vor dem Start hat der Frame-Generator 112 mindestens ein erstes und zweites Basis-Frame aus dem Decoder 118 empfangen. Der Decoder 118 hat dem Frame-Generator 112 ferner verschiedene statistische Informationen bereitgestellt. Anfangend bei einem Schritt 502 analysiert der Frame-Generator 112 die ersten und zweite Basis-Frames und statistischen Informationen. Das Verfahren zur Analyse der Basis-Frames wird nachfolgend unter Bezugname auf 6 bis 21 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 Entscheidungsschritt 504, 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 auf 6 bis 20 beschrieben. Einige der Faktoren, die vom Frame-Generator 112 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-Generator 112 mit dem Schritt 506 fort. Im Schritt 506 generiert der Frame-Generator 112 je nach Implementierung ein Interframe oder mehrere Interframes. Das Verfahren zur Generierung von Interframes wird nachfolgend noch ausführlicher unter Bezugnahme auf 21 beschrieben. In Schritt 506 kann der Frame-Generator 112 die generierten Frames auch filtern. Das Verfahren zum Filtern der generierten Frames wird nachfolgend unter Bezugname auf 22 beschrieben.
  • Es wird nun nochmals auf den Entscheidungsschritt 504 verwiesen. Falls der Frame-Generator 112 (1) feststellt, dass es nicht akzeptabel ist, Interframes zu generieren, wird das Verfahren bei Schritt 508 abgebrochen.
  • Zustandsbestimmung
  • Die 6 bis 10 bilden zusammengenommen ein Ablaufdiagramm, das ein Zustandsbestimmungsverfahren darstellt. Der Frame-Generator 112 benutzt den Zustand, um zu bestimmen, ob die Frame-Generierung angebracht ist, und um ein angemessenes Frame-Generierungsverfahren auszuwählen. 610 veranschaulichen noch ausführlicher die Schritte, die in Schritt 502 von 5 durchgeführt werden.
  • Beginnend bei Schritt 600 sendet der Decoder 118 (1) ein erstes Basis-Frame, ein zweites Basis-Frame und statistische Informationen über die ersten und zweiten Basis-Frames an den Frame-Generator 112 (1). Der Frame-Generator 112 analysiert dann in nachfolgenden Schritten jedes dieser beiden Basis-Frames als Teil des Verfahrens zum Generieren eines Interframe. Nachdem der Frame-Generator 112 (1) seine Analyse der ersten und zweiten Basis-Frames abgeschlossen hat, umfassen die nächsten beiden Basis-Frames, die dem Frame-Generator 112 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äsentation 110 (1) mindestens zweimal an den Frame-Generator 112 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-Generator 112 Daten vom Decoder 118 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 Medienserver 102 an den Rendering-Computer 106 übertragen. Falls das Frame abhängig kodiert ist, wird ein mit jedem der abhängig kodierten Makroblöcke zugehöriger Bewegungsvektor an den Rendering-Computer 106 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-Generator 112 (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-Generator 112 das Frame-Generierungsverfahren ab. Falls die ersten und zweiten Basis-Frames gültig sind, fährt der Frame-Generator 112 andernfalls mit Schritt 604 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 Schritt 610 fort und setzt den Zustand des Frame-Generators 112 auf „KEYFRAME„. Der Frame-Generator 112 führt dann mit einem Entscheidungsschritt 612 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 Schritt 614 weiter. In Schritt 614 setzt der Frame-Generator 112 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-Generator 112 am Beendungsschritt 616 seine vorläufige Frame-Analyse.
  • Um nochmals auf den Entscheidungsschritt 612 Berg zu nehmen: Falls der Frame-Generator 112 (1) feststellt, dass die Zeit zwischen den zwei Basis-Frames kleiner als der erste Schwellwert ist, halt der Frame-Generator 112 den Zustand auf „KEYFRAME„ aufrecht. Der Frame-Generator 112 geht ferner zum Beendungsschritt 616 weiter und beendet das Zustandsbestimmungsverfahren.
  • In Hinsicht auf den Entscheidungsschritt 604 (6) ist weiter zu sagen, dass der Frame-Generator 112 zu einem Entscheidungsschritt 618 weitergeht, falls der Frame-Generator 112 (1) feststellt, dass das zweite Basis-Frame nicht unabhängig kodiert ist. In Entscheidungsschritt 618 bestimmt der Frame-Generator 112, ob die Zeitdauer zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame größer als ein zweiter Schwellwert ist. Der Frame-Generator 112 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 Schritt 614 weiter und setzt den Zustand in der Zustandsmaschine 404 (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-Generator 112 zu einem Schritt 622 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 Entscheidungsschritt 624, ob der Prozentsatz der in Schritt 622 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 Encoder 116 (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-Generator 112 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 Schritt 614 weiter. Andernfalls, falls die Anzahl von unabhängig kodierten Makroblöcken im zweiten Frame geringer als der dritte Schwellwert ist, geht der Frame-Generator 112 zu einem Entscheidungsschritt 626 weiter.
  • In einem Entscheidungsschritt 626 bestimmt der Frame-Generator 112 (1), ob der maximale Bewegungsvektor im zweiten Frame geringer ist als ein vierter Schwellwert. In einer Ausführungsform der Erfindung bestimmt der Frame-Generator 112 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 2
    Quantisiererwert 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 Schritt 630 weiter. In einem Schritt 630 setzt der Frame-Generator 112 den Zustand in der Zustandsmaschine 404 (4) auf „LOW_ACTION„. Durch Weitergehen zum Schritt 616 hat der Frame-Generator 112 das vorläufige Zustandsbestimmungsverfahren abgeschlossen.
  • In Hinsicht auf den Entscheidungsschritt 626 ist ferner anzumerken, dass, falls der Frame-Generator 112 (1) feststellt, dass der maximale Bewegungsvektor größer ist als der vierte Schwellwert, der Frame-Generator 112 zu einem Schritt 632 weitergeht. Im Schritt 632 berechnet der Frame-Generator 112 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 Frame 900 mit einer Mehrzahl von Makroblöcken 902 dar. Das Frame 900 ist das zweite von zwei Basis-Frames, das vom Decoder 118 (1) an den Frame-Generator 112 (1) gesendet wurde. Ein Makroblock 906 in einer ersten räumlichen, in 9 gezeigten Position weist einen zugehörigen Bewegungsvektor 908 auf, der sich auf eine Region in einem vorhergehenden Basis-Frame bezieht, welche die gleiche räumliche Position wie der Makroblock 910 aufweist. In diesem Beispiel hat die x-Komponente des Bewegungsvektors 908 den Wert 2, und die y-Komponente des Bewegungsvektors 908 hat den Wert –2. In einem weiteren Beispiel weist ein Makroblock 914 einen zugehörigen Bewegungsvektor 918 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 Makroblock 920 aufweist. Die x-Komponente des Bewegungsvektors 918 hat den Wert 0, und die y-Komponente des Bewegungsvektors 918 hat den Wert –2.
  • Bei diesem Beispiel werden des weiteren zur Berechnung der Differenz zwischen dem Bewegungsvektor 908 und dem Bewegungsvektor 918 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 Schritt 634 gemäß 6 das zweite Frame in Abschnitte. In einer Ausführungsform der Erfindung wird das zweite Basis-Frame grob in vier Quadranten 926, 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 Schritt 638 (7) weiter. Im Schritt 638 summiert der Frame-Generator 112 für jeden der Abschnitte die berechneten Bewegungsvektordifferenzen (in Schritt 632 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-Generator 112 jede der mit den einzelnen Abschnitten zugehörigen Summen (in Schritt 632 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-Generator 112 zu einem Schritt 644 weiter und setzt den Zustand in der Zustandsmaschine 404 (4) auf „HIGH_ACTION„. Durch Fortfahren zum Schritt 616 (6) über den auf eine andere Seite verweisenden Verbindungspunkt „B„ beendet der Frame-Generator 112 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-Generator 112 (1) über den auf eine andere Seite verweisenden Verbindungspunkt „C„ zu einem Schritt 800 (8) weiter. In einem Schritt 800 berechnet der Frame-Generator 112 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-Generator 112 beispielsweise die Pixelintensität eines jeden Pixels in einem Makroblock 906 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-Generator 112 (1) die in Schritt 800 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 Schritt 802 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-Generator 112 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 Schritt 802 berechnet) und Dividieren der Summe durch die Anzahl der Makroblöcke berechnet.
  • Bei einem darauf folgenden Entscheidungsschritt 808 bestimmt der Frame-Generator 112, 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 Schritt 812 weiter und setzt den Zustand in der Zustandsmaschine 404 auf „BIG_CHANGE„. Daraufhin kehrt das Verfahren über den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendungsschritt 616 (6) zurück, und der Frame-Generator 112 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-Generator 112 (1) zu einem Schritt 814 weiter. Im Schritt 814 bestimmt der Frame-Generator 112, 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 Schritt 816 weiter. Im Schritt 816 setzt der Frame-Generator 112 den Zustand in der Zustandsmaschine 404 auf „SMALL_CHANGE„. Daraufhin geht der Frame-Generator 112 über den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendigungsschritt 616 weiter und schließt das Zustandsbestimmungsverfahren ab.
  • Bei nochmaliger Bezugnahme auf den Entscheidungsschritt 814 ist anzumerken, dass, falls der Frame-Generator 112 (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-Generator 112 zu einem Schritt 818 weitergeht. Im Schritt 818 setzt der Frame-Generator 112 den Zustand in der Zustandsmaschine 404 auf „MODERATE_ACTION„. Daraufhin geht der Frame-Generator 112 aber den auf eine andere Seite verweisenden Verbindungspunkt „B„ zum Beendigungsschritt 616 weiter und schließt das Bestimmungsverfahren ab.
  • Frame-Analyse
  • 9 und 10 zeigen gemeinsam ein Ablaufdiagramm zur Durchführung einer zusätzlichen Analyse in Berg auf die ersten und zweiten Basis-Frames. Insbesondere zeigen 9 und 10 ein Verfahren das, in Abhängigkeit vom Wert des von der Zustandsmaschine 404 aufrechterhaltenen Zustands, bestimmt, ob die Generierung von Interframes zwischen dem ersten Basis-Frame und dem zweiten Basis-Frame angebracht ist. Der Frame-Generator 112 (1) geht vom Beendigungsschritt 616 (6) zu einem Schritt 1000 weiter (9).
  • Abhängig vom Zustand der Zustandsmaschine 404 geht der Frame-Generator 112 (1) entweder zu einem Schritt 1004, einem Schritt 1008 oder einem Schritt 1009 weiter. Falls der Zustand in der Zustandsmaschine 404 (4) entweder „LOW_ACTION„ oder „KEYFRAME„ ist, geht der Frame-Generator 112 zum Schritt 1004 weiter. Vom Schritt 1004 geht der Frame-Generator 112 zu einem Schritt 1012 weiter, um zu bestimmen, ob der Frame-Generator 112 Text in den ersten und zweiten Basis-Frames feststellen kann. Das Texterkennungsverfahren wird nachfolgend unter Bezugnahme auf 20 ausführlicher beschrieben.
  • In einem Entscheidungsschritt 1016 bestimmt der Frame-Generator 112 (1) als nächstes, ob der Zustand in der Zustandsmaschine 404 (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-Generator 112 die Frame-Generierung fehlschlagen und geht zu einem Fehlerschritt 1020 weiter. Um dabei zu helfen, die Angebrachtheit einer Frame-Generierung in nachfolgenden Frames zu bestimmen, zeichnet der Frame-Generator 112 im Fehlerschritt 1020 auf, dass die Frame-Generierung nicht angebracht war.
  • Um nochmals auf den Entscheidungsschritt 1016 (9) Bezug zu nehmen: Falls der Zustand in der Zustandsmaschine 404 (4) nicht einer der Zustände „ABORT„, „SMALL_CHANGE„, „BIG_CHANGE„ oder „HIGH_ACTION„ ist, geht der Frame-Generator 112 (1) über den auf eine andere Seite verweisenden Verbindungspunkt „D„ zu einem Schritt 1102 (10) weiter.
  • Im Schritt 1102 (10) überprüft der Frame-Generator 112 den Status des Zustands der Zustandsmaschine 404 während der letzten beiden Frame-Generierungsversuche. Wie unter Bezugnahme auf den Fehlerschritt 1020 festgestellt wurde, zeichnet der Frame-Generator 112 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 Entscheidungsschritt 1106 bestimmt, dass die Frame-Generierung in einem der letzten zwei Frame-Generierungsversuche als nicht angebracht festgestellt worden war, geht der Frame-Generator 112 zu einem Schritt 1108 weiter und lässt das Frame-Generierungsverfahren fehlschlagen. Es wird angemerkt, dass der Frame-Generator 112, um zu verhindern, dass der Frame-Generator 112 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-Generator 112 den eventuellen Fehlschlag und geht zu einem Endschritt 1110 weiter.
  • Es wird nun nochmals auf den Schritt 1000 (9) Bezug genommen: Falls der Frame-Generator 112 (1) bestimmt, dass der Zustand im Frame-Generator [in der Zustandsmaschine] 404 (4) „MODERATE_ACTION„ oder „HIGH_ACTION„ ist, geht der Frame-Generator 112 zum Schritt 1008 weiter. Der Frame-Generator 112 geht zu einem Schritt 1030 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 Encoder 116 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-Generator 112 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 auf 12 ausführlicher beschrieben.
  • Als nächstes führt der Frame-Generator 1044 [112] in Schritt 1044 eine Bewegungsvektorfilterung durch. Das Verfahren zur Bewegungsvektorfilterung wird nachstehend unter Bezugnahme auf 16 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-Generator 112. In einer Ausführungsform der Erfindung führt der Frame-Generator 112 jeden der Schritte in den 6, 7 und 8 nochmals aus. Optional kann der Frame-Generator 112 ausgewählte Schritte überspringen, die nicht von der Texterkennung und vom globalen Bewegungsvektor-Korrekturverfahren betroffen sind, z. B. die Bestimmung der Zeit zwischen Frames (Schritt 618) und die Bestimmung der Anzahl unabhängig kodierter Blöcke (Schritt 622).
  • Der Frame-Generator 112 geht zu einem Entscheidungsschritt 1048 weiter und bestimmt, ob sich der Zustand nach der Ausführung des Schritts 1046 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-Generator 112 den Zustand auf „MODERATE_ACTION„ zurück. Der Frame-Generator 112 geht dann zu einem Zustand [Schritt] 1052 weiter.
  • Um nun wieder auf den Entscheidungszustand 1048 [Entscheidungsschritt] Bezug zu nehmen: Falls der Frame-Generator 112 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 Entscheidungsschritt 1048 oder dem Schritt 1050 zu einem Schritt 1052 weiter. Im Schritt 1052 wiederholt der Frame-Generator 112 das Verfahren für die Bewegungsvektorfilterung (wobei dieses Verfahren zuerst in Schritt 1044 durchgeführt worden war). Das Verfahren für die Bewegungsvektorfilterung wird nachfolgend unter Bezugnahme auf 16 beschrieben.
  • Daraufhin kehrt der Frame-Generator 112 zum Schritt 1012 zurück und führt eine (vorstehend beschriebene) Texterkennung durch.
  • Es wird nun nochmals auf den Schritt 1000 (9) Berg genommen: Falls der Frame-Generator 112 (1) feststellt, dass der Schritt [Zustand] im Frame-Generator [in der Zustandsmaschine] 404 (4) „ABORT„, „SMALL_CHANGE„ oder „BIG_CHANGE„ ist, geht der Frame-Generator 112 zum Schritt 1009 weiter. Daraufhin stoppt der Frame-Generator 112 im Schritt 1010 die Analyse der ersten und zweiten Basis-Frames für die Frame-Generierung. Im Schritt 1010 hat der Frame-Generator 112 festgestellt, dass es nicht angebracht ist, einen Interframe zu generieren und lässt das Frame-Generierungsverfahren deshalb fehlschlagen. Der Verfahrensablauf kehrt zum Schritt 502 (5) zurück, in welchem der Frame-Generator 112 die nächsten zwei vom Decoder 118 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-Generator 112 (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. Schritte 1202 bis 1208 beschreiben das Verfahren zur Erfassung der restlichen prospektiven Bewegungsvektoren ausführlicher.
  • In einem nächsten Schritt 1202 berechnet der Frame-Generator 112 (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-Generator 112 (1) vier Blöcke 1302, 1306, 1308, 1310 (13A), die respektiv jeweils nahe einer der vier Ecken 1312, 1314, 1316 bzw. 1318 des zweiten Basis-Frame angeordnet sind. Es wird angemerkt, dass die Eckblöcke nicht notwendigerweise Makroblöcken entsprechen. Die Eckblöcke 1302, 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öcke 1302, 1304, 1306, 1308 so angeordnet, dass jede der Ecken 1322, 1324, 1326, 1328 jedes der Eckblöcke 1302, 1304, 1306, 1308 von einer der Ecken 1312, 1314, 1316, 1318 des zweiten Frame sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt ist. Zum Beispiel ist Block 1302 an Pixel 8, 8 angeordnet und von der Ecke 1312 sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt. In einem weiteren Beispiel ist die Ecke 1324 des Eckblocks 1304 von der Ecke 1314 sowohl in der x- als auch der y-Richtung um 8 Pixel versetzt.
  • Nachdem der Frame-Generator 112 (1) jeden der vier Eckblöcke 1302, 1306, 1308, 1310 identifiziert, analysiert der Frame-Generator 112 eine Anzahl von Blöcken im ersten Basis-Frame, wobei er nach einem Block sucht, der mit den Eckblöcken 1302, 1304, 1306, 1308 übereinstimmt. In einer Ausführungsform der Erfindung analysiert der Frame-Generator 112 für jeden der Eckblöcke 1302, 1304, 1306, 1308 die Blöcke 1352, 1354, 1356, 1358 im ersten Basis-Frame, wobei die Blöcke 1352, 1354, 1356, 1358 sich respektiv in der gleichen räumlichen Position wie die Eckblöcke 1302, 1304, 1306, 1308 im zweiten Basis-Frame befinden. Zusätzlich zu diesen vier Eckblöcken analysiert der Frame-Generator 112 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 Ecke 1372, 1374, 1376, 1378 der entsprechenden Blöcke 1352, 1354, 1356, 1358 entfernt ist.
  • In Bezug auf Block 1302 und unter Bezugnahme auf die 14 und 15 analysiert der Frame-Generator 112 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. Block 1404 (14) und Block 1508 (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öcke 1302, 1304, 106 [1306], 1308 aufweisen, ein Bewegungsvektor zwischen den Eckblöcken 1302, 1304, 1306, 1308 und den identifizierten Blöcken berechnet.
  • Der Frame-Generator 112 (1) benutzt die vier in Schritt 1208 berechneten und mit jedem der Eckblöcke 1302, 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 und 1208 berechnet wurden.
  • Daraufhin bestimmt der Frame-Generator 112 in einem Schritt 1210 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-Generator 112 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-Generator 112 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-Generator 112 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 Schritten 1044 und 1052 von 9 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-Generator 112 (1) zu einem Schritt 1602 weiter und filtert das Innere des zweiten Basis-Frame. Schritte 1606, 1610 und 1614 beschreiben das Verfahren zur Filterung des Inneren des zweiten Basis-Frame ausführlicher.
  • Nach dem Weitergang zu einem Entscheidungsschritt 1606 bestimmt der Frame-Generator 112 (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-Generator 112 feststellt, dass das zweite Basis-Frame ein kleines Frame ist, geht der Frame-Generator 112 zu einem Schritt 1610 weiter. Im Schritt 1610 setzt der Frame-Generator 112 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-Generator 112 (1) feststellt, dass das zweite Basis-Frame kein kleines Frame ist, geht der Frame-Generator 112 zu einem Schritt 1614 weiter. Im Schritt 1614 bestimmt der Frame-Generator 112 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-Generator 112 (1) setzt dann den Wert des Makroblocks auf diesen berechneten Medianwert zurück.
  • 17 zeigt die Makroblöcke, die vom Frame-Generator 112 (1) analysiert werden, wenn der Schritt 1614 für einen beispielhaften Makroblock 1702 durchgeführt wird. In Bezug auf den Makroblock 1702 (durch ein umkreistes „X„ gekennzeichnet) analysiert der Frame-Generator 112 acht benachbarte Makroblöcke 1704 bis 1730 (jeweils durch ein umkreistes „X„ gekennzeichnet). Der Frame-Generator 112 analysiert ferner zwölf proximal angeordnete Makroblöcke 17341756 (ebenso durch ein „X„ gekennzeichnet). Nach Erfassen der Bewegungsvektoren für diese Makroblöcke stellt der Frame-Generator 112 diese Bewegungsvektoren in eine Bewegungsvektorenliste. Der Frame-Generator 112 fügt der Bewegungsvektorenliste ferner drei Instanzen des zu diesem Zeitpunkt mit dem Makroblock 1702 zugehörigen Bewegungsvektors hinzu. Der Frame-Generator 112 bestimmt dann einen Median-Bewegungsvektor, der auf der Liste der Bewegungsvektoren basiert. Zur Bestimmung des Medianwerts bestimmt der Frame-Generator 112 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-Generator 112 vereinigt den x-Medianwert und den y-Medianwert, um einen neuen Bewegungsvektor für den Makroblock 1702 zu erhalten.
  • Vom Schritt 1610 oder vom Schritt 1614 geht der Frame-Generator 112 zu einem Schritt 1618 weiter. Im Schritt 1618 startet der Frame-Generator 112 (1) das Filterungsverfahren für die Kantenmakroblöcke des zweiten Basis-Frame. Daraufhin berechnet der Frame-Generator 112 im Schritt 1622 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-Generator 112 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-Generator 112 den Wert des Bewegungsvektors auf dessen 3 Nachbarn zurück.
  • 18 zeigt die Makroblöcke, die vom Frame-Generator 112 (1) analysiert werden, wenn der Schritt 1618 für einen beispielhaften Makroblock 1804 durchgeführt wird. In Bezug auf den Makroblock 1804 analysiert der Frame-Generator 112 fünf benachbarte Makroblöcke 1806, 1808, 1810, 1812 und 1814 (jeweils durch ein „X„ gekennzeichnet). Das Verfahren zur Bewegungsvektorfilterung wird bei einem Schritt 1624 (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 Schritt 1012 von 9 enthalten sind. Durch Texterkennung wird statischer Text, wie z. B. Überschriften, die einen aktiven Hintergrund überlagern, identifiziert. Nach einer solchen Erkennung stellt der Frame-Generator 112 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-Generator 112 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-Generator 112 (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 Schritt 1902 (19) bestimmt der Frame-Generator 112 (1) für jeden Block, ob der in Schritt 1900 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 Schritt 1900 berechnete Wert unter dem Schwellwert liegt, geht der Frame-Generator 112 zu einem Schritt 1906 weiter. Im Schritt 1906 weist der Frame-Generator 112 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-Generator 112 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 Schritt 1906 oder, ausgehend davon, dass die Summe der quadrierten Differenzen für einen vorgegebenen Block unter dem achten Schwellwert betrug, vom Entscheidungsschritt 1902 zu einem Entscheidungsschritt 1910 (19) weiter. Falls der Frame-Generator 112 im Entscheidungsschritt 1910 feststellt, ob irgendwelche der Blöcke in den zwei vorhergehenden bereitgestellten Frames als Textblock erkannt wurden, geht der Frame-Generator 112 in Bezug auf diese Blöcke zu einem Schritt 1914 weiter. Im Schritt 1914 setzt der Frame-Generator 112 den Wert einer Variablen „Schwellwert„ für jeden Block, der bei der Analyse der zwei vorherigen Basis-Frames als Textblock erkannt wurde, auf 3200. 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-Generator 112 andernfalls in Bezug auf diese Blöcke zu einem Schritt 1918 weiter. Im Schritt 1918 setzt der Frame-Generator 112 den Wert der Variablen „Schwellwert„ für jeden der Blöcke, die in den zwei vorherigen Frames als Textblock erkannt wurden, auf 1600.
  • Der Frame-Generator 112 geht dann entweder vom Schritt 1914 oder vom Schritt 1918 zum Schritt 1922 weiter. Im Schritt 1922 bestimmt der Frame-Generator 112 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-Generator 112 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 und 6 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-Generator 112 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-Generator 112 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-Generator 112 den Wert der Variablen „edge_count„ auf der Basis des Ergebnisses, das in der zweiten Tabellenspalte angegeben ist. Tabelle 3
    Zustand 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-Generator 112 den Wert der Variablen „edge_count„ auf Null zurück.
  • In einem darauf folgenden Schritt 1926 bestimmt der Frame-Generator 112, 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-Generator 112 diesen Block als einen vermutlichen Textblock.
  • Nach Fortfahren zu einem weiteren Schritt 1930 eliminiert der Frame-Generator 112 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-Generator 112 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-Generator 112 in einer Ausführungsform der Erfindung beispielsweise alle der Blöcke aus der vermutlichen Textblockgruppe.
  • Im Schritt 1930 kann der Frame-Generator 112 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-Generierung 112 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-Generator 112 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-Generator 112 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 Frames 2000 dargestellt. Das Frame 2000 ist in eine Mehrzahl von 8×8-Blöcken 2002 unterteilt. Eine ausgewählte Anzahl der Blöcke 2002 wurden als vermutliche Textblöcke identifiziert (durch Schattierung). Wie auch durch eine visuelle Inspizierung leicht zu sehen ist, grenzen ferner eine Anzahl von Blöcken 2002 aneinander und definieren 6 Blockformen 2010, 2014, 2016, 2020, 2024 und 2028. Im Schritt 1934 analysiert der Frame-Generator 112 jeden der Blöcke 2002, um Lücken und fehlende Ecken zu identifizieren. Beim Erreichen eines Blocks 2032 bestimmt der Frame-Generator 112, dass sich ein vermutlicher Textblock sowohl rechts und links vom Block 2032 befindet. Der Frame-Generator 112 fügt den Block 2032 daher der vermutlichen Textblockgruppe hinzu.
  • In einer Ausführungsform der Erfindung führt der Frame-Generator 112 einen Durchlauf der Blöcke 2002 im Frame 2000 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-Generator 112 keine neu hinzugefügten vermutlichen Textblöcke beim Ausfüllen der Lücken und fehlenden Ecken. Wie vorstehend erwähnt, wurde der Block 2032 beispielsweise aufgrund der Anordnung anderer vermutlicher Textblöcke als ein vermutlicher Textblock hinzugefügt. In dieser Ausführungsform berücksichtigt der Frame-Generator 112 den Block 2032 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-Generator 112 z. B. nach der Bestimmung, dass der Block 2032 als ein vermutlicher Textblock hinzugefügt werden soll, den Block 2032 als einen der vermutlichen Textblöcke für die restliche Analyse. In dieser Ausführungsform kann der Frame-Generator 112 ferner mehrere Durchlaufe der Blöcke 2002 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 Schritt 2100 hat der Frame-Generator 112 die ersten und zweiten Basis-Frame schon analysiert, um die Angebrachtheit der Frame-Generierung zu bestimmen. Der Frame-Generator 112 hat ferner den Durchschnitt eines jeden der Bewegungsvektoren auf der Basis der benachbarten Bewegungsvektoren ermittelt. Zusätzlich hat der Frame-Generator 112 eine ausgewählte Anzahl von Blöcken als Textblöcke markiert. Zu diesem Zeitpunkt ist der Frame-Generator 112 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-Generator 112 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-Generator 112 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-Generator 112 aufgefordert werden, zwei Interframes bereitzustellen, eines für die Anzeige zur Zeit bei 150 Millisekunden, das andere zur Zeit bei 250 Millisekunden. Der Frame-Generator 112 kann benutzt werden, um eine beliebige Anzahl von Interframes zu generieren. Der Frame-Generator 112 kann ferner dazu benutzt werden, ein weiteres Frame zu generieren, wobei ein generiertes Frame als eines der Basis-Frames benutzt wird. Der Frame-Generator 112 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-Generator 112, ob der Zustand der Zustandsmaschine 404 „MODERATE_ACTION„ ist. Ist der Zustand nicht „MODERATE_ACTION„, geht der Frame-Generator 112 zu einem Schritt 2108 weiter.
  • Im Schritt 2108 vereinigt der Frame-Generator 112 die ersten und zweiten Basis-Frames anhand eines linearen Durchschnittswerts. In einer Ausführungsform der Erfindung wendet der Frame-Generator 112 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-Generator 112 feststellt, dass der Zustand „MODERATE_ACTION„ ist, geht der Frame-Generator 112 zum Schritt 2112 weiter. Im Status 2112 bestimmt der Frame-Generator 112, 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-Generator 112 zu einem Schritt 2120 weiter. Andernfalls, falls der Frame-Generator 112 bestimmt, dass das zu generierende Frame zeitlich näher zum ersten Basis-Frame dargestellt werden soll, geht der Frame-Generator 112 zu einem Schritt 2124 weiter. In der Ausführungsform der Erfindung, wenn der Wert der Variablen „time_reference„ größer oder gleich 128 ist, stellt der Frame-Generator 112 fest, dass das zu generierende Frame sich naher am zweiten Basis-Frame befindet. Wenn der Wert der Variablen „time_reference„ kleiner als 128 ist, stellt der Frame-Generator 112 fest, dass das zu generierende Frame sich näher am ersten Basis-Frame befindet.
  • Im Zustand 2120 generiert der Frame-Generator 112 ein Frame auf der Grundlage der Makroblockinformationen aus dem zweiten Basis-Frame. Im Rahmen des Zustandes 2120 generiert der Frame-Generator 112 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-Generator 112 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-Generator 112 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-Generator 112 in einer Ausführungsform der Erfindung nicht den Referenz-Bewegungsvektor zur Auswahl einer Basisregion. In dieser Ausführungsform führt der Frame-Generator 112 ein Mischungsverfahren durch, das nachstehend unter Bezugnahme auf einen Schritt 2128 näher beschrieben wird.
  • Um nochmals auf den Entscheidungsschritt 2112 Bezug zu nehmen: Falls der Frame-Generator 112 bestimmt, dass das zu generierende Frame zeitlich näher zum ersten Basis-Frame dargestellt werden soll, geht der Frame-Generator zum Schritt 2124 weiter. Im Schritt 2124 generiert der Frame-Generator 112 das Interframe mit Hilfe der Makroblockinformationen aus dem zweiten Basis-Frame. Im Rahmen des Zustands 2124 generiert der Frame-Generator 112 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-Generator 112 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-Generator 112 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-Generator 112 in einer Ausführungsform der Erfindung nicht den Referenz-Bewegungsvektor zur Auswahl einer Basisregion. In dieser Ausführungsform führt der Frame-Generator 112 ein Mischungsverfahren durch, das nachstehend unter Bezugnahme auf einen Schritt 2128 näher beschrieben wird.
  • Vom Schritt 2124 oder vom Schritt 2120 aus geht der Frame-Generator 112 zum Schritt 2128 weiter. Im Schritt 2128 führt der Frame-Generator 112 für jeden Makroblockquadranten, der Videotext in demjenigen Basis-Frame enthält, welches im Zustand 2112 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-Generator 112 die Gleichung 8 für jedes der Pixel in den Makroblockquadranten an.
  • In einem weiteren Zustand 2128 filtert der Frame-Generator 112 das Interframe. Das Verfahren zur Filterung des Interframe wird nachfolgend unter Bezugnahme auf 22 beschrieben.
  • Und schließlich wird das generierte Interframe im Zustand 2132 dem Betrachter angezeigt. In einer Ausführungsform der Erfindung zeigt der Frame-Generator 112 das Interframe auf einer Anzeige auf dem Rendering-Computer 106 zu einem Zeitpunkt an, welcher der dem Frame-Generator 112 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-Generator 112 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-Generator 112 führt zuerst eine horizontale Filterung jeder der Zeilen eines jeden der Blöcke durch. Daraufhin führt der Frame-Generator 112 eine vertikale Filterung jeder der Zeilen eines jeden Blocks durch. Schritte 2200, 2204, 2208, 2212 und 2216 beschreiben das Verfahren für die horizontale Filterung jeder der Zeilen in den Blöcken. Schritte 2218, 2219, 2220, 2224 und 2228 beschreiben das Verfahren zur vertikalen Filterung jeder der Spalten in jedem der Blöcke. In einer Ausführungsform der Erfindung führt der Frame-Generator 112 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-Generator 112 das horizontale Filterungsverfahren. Der Frame-Generator filtert nacheinander jede der Zeilen in jedem der 8×8-Blöcke im interpolierten Frame. Schritte 2204, 2208, 2212 und 2216 erläutern das Verfahren zur horizontalen Filterung der einzelnen Blöcke noch ausführlicher. Schritte 2204, 2208, 2212 und 2216 werden für jeden der 8×8-Blöcke in den interpolierten Frames durchgeführt.
  • In einem weiteren Schritt 2204 benutzt der Frame-Generator 112 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-Generator 112 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 und 2216 wird das Verfahren für die horizontale Filterung eines ausgewählten Blocks beschrieben. Der Frame-Generator 112 beginnt ein Iterationsverfahren für jede der Zeilen im aktuell ausgewählten Block. In Kürze, der Frame-Generator 112 wählt im Schritt 2208 eine der Zellen in den Blöcken aus. Daraufhin bestimmt der Frame-Generator 112 im Schritt 2212, ob ausgewählte Pixel in der Zeile gefiltert werden sollen. Schließlich filtert der Frame-Generator 112 im Schritt 2216 die ausgewählten Pixel.
  • Um nochmals auf Schritt 2208 Bezug zu nehmen: Der Frame-Generator 112 filtert eine ausgewählte Zeile des aktuell ausgewählten Bocks. Anfangend in der obersten Zeile des Blocks stellt der Frame-Generator 112 eine Variable „filter1„ so ein, dass sie sich auf den äußersten rechten Pixel der ausgewählten Zeile bezieht. Der Frame-Generator 112 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-Generator 12 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-Generator 112 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 Schritt 2216 weiter. Im Schritt 2216 filtert der Frame-Generator 112 die Pixel, auf die sich die Variablen „filter1„ und „filter2„ beziehen. Der Frame-Generator 112 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-Generator 112 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-Generator 112 dividiert dann die Variable „filter_strength„ durch 2 und rundet ab. Daraufhin stellt der Frame-Generator 112 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-Generator 112 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-Generator 112 kehrt dann zum Schritt 2212 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-Generator 112 zum Schritt 2208 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-Generator 112 zum Schritt 2204 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 Schritt 2218 weiter, um jede der Spalten eines jeden der Blöcke zu filtern. In einem Schritt 2218 filtert der Frame-Generator 112 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 Schritt 2224 und 2228 beschrieben.
  • In einem weiteren Schritt 2219 benutzt der Frame-Generator 112 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-Generator 112 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 und 2228 wird nun das Verfahren zur vertikalen Filterung der Spalten von Pixeln in den Blöcken beschrieben. In diesen Schritten beginnt der Frame-Generator 112 ein Iterationsverfahren für jede der Spalten in einem der ausgewählten Blöcke. In Kürze, der Frame-Generator 112 wählt im Schritt 2208 eine der Spalten in dem ausgewählten Block aus. Dann bestimmt der Frame-Generator 112 im Schritt 2212, ob die Pixel in der ausgewählten Spalte gefiltert werden sollen. Schließlich filtert der Frame-Generator 112 im Schritt 2216 die ausgewählten Pixel.
  • Es wird nun spezifisch auf den Schritt 2220 Bezug genommen: Der Frame-Generator 112 filtert eine ausgewählte Zeile des ausgewählten Blocks. Anfangend mit der äußersten linken Spalte stellt der Frame-Generator 112 eine Variable „filter1„ so ein, dass sie sich auf den untersten Pixel der ausgewählten Spalte bezieht. Der Frame-Generator 112 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-Generator 112 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-Generator 112 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-Generator 112 zu diesem Zeitpunkt zum Schritt 2220 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 Schritt 2218 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-Generator 112 zu einem Schritt 2228 weiter und filtert den Pixel, auf den sich die Variablen „filter1„ und „filter2„ beziehen. Der Frame-Generator 112 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-Generator 112 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-Generator 112 dividiert dann die Variable „filter_strength„ durch 2 und rundet ab. Daraufhin stellt der Frame-Generator 112 die Variable „filter1„ neu ein, so dass sie sich auf den Pixel unmittelbar über dem Pixel bezieht, auf den sich „filter1„ bezieht. Der Frame-Generator 112 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-Generator 112 kehrt dann zum Schritt 2224 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-Generator 112 zum Schritt 2220 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-Generator 112 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
    Fig. 2
    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
    Fig. 3
    1
    Bewegungsvektor
    2
    Beste Makroblock-Übereinstimmung
    3
    Suchfenster
    Fig. 4
    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
    Fig. 5
    1
    Nein
    2
    Ja
    502
    Basis-Frames analysieren
    504
    Generierung von Interframe(s) akzeptierbar?
    506
    Interframe(s) generieren
    508
    Beenden
    Fig. 6
    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
    Fig. 7
    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
    Fig. 8
    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
    Fig. 9
    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
    Fig. 10
    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
    Fig. 11Fig. 12
    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
    Fig. 13AFig. 13BFig. 14Fig. 15Fig. 16
    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
    Fig. 17Fig. 18Fig. 19
    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
    Fig. 20
    1
    Hier füllen
    Fig. 21
    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
    Fig. 22
    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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. System nach Anspruch 13, gekennzeichnet dadurch, dass das Frame-Synthesemodul zwischen zwei empfangenen Frames ein oder mehrere Frames generiert.
  15. 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.
  16. Verfahren nach Anspruch 15, gekennzeichnet dadurch, dass das Frame-Generierungsverfahren ausgewählt wird aus der Gruppe mit bewegungskompensierter Interpolation und linearer Interpolation.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. System nach Anspruch 20, gekennzeichnet dadurch, dass das Frame-Generierungsverfahren ausgewählt wird aus der Gruppe mit bewegungskompensierter Interpolation und linearer Interpolation.
  22. 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.
  23. 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.
  24. 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.
  25. System nach Anspruch 24, gekennzeichnet dadurch, dass das Frame-Synthesemodul zwischen zwei empfangenen Frames ein oder mehrere Frames generiert.
DE10084783T 1999-06-30 2000-06-30 System und Verfahren zur Generierung von Videoframes Expired - Lifetime DE10084783B3 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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