DE102013013636B9 - Pixel Pufferung - Google Patents

Pixel Pufferung Download PDF

Info

Publication number
DE102013013636B9
DE102013013636B9 DE102013013636.9A DE102013013636A DE102013013636B9 DE 102013013636 B9 DE102013013636 B9 DE 102013013636B9 DE 102013013636 A DE102013013636 A DE 102013013636A DE 102013013636 B9 DE102013013636 B9 DE 102013013636B9
Authority
DE
Germany
Prior art keywords
image data
buffer
resolution
image
processing module
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.)
Active
Application number
DE102013013636.9A
Other languages
English (en)
Other versions
DE102013013636A1 (de
DE102013013636B4 (de
Inventor
Steven Fishwick
Stephen Morphet
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE102013013636A1 publication Critical patent/DE102013013636A1/de
Publication of DE102013013636B4 publication Critical patent/DE102013013636B4/de
Application granted granted Critical
Publication of DE102013013636B9 publication Critical patent/DE102013013636B9/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map
    • G06T3/053Detail-in-context presentations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • H04N19/428Recompression, e.g. by spatial or temporal decimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0102Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving the resampling of the incoming video signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0125Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level one of the standards being a high definition standard
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Systems (AREA)
  • Image Input (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)

Abstract

Die vorliegende Erfindung stellt ein Verfahren und ein System zur Bereitstellung von Bilddaten an ein Bildverarbeitungsmodul bereit. Bilddaten werden aus dem Speicher in einen Herunterskalierer gelesen, der die Bilddaten auf eine erste Auflösung herunterskaliert. Die Bilddaten erster Auflösung werden in einem ersten Puffer gespeichert. Zusätzlich wird ein Bereich vom Bilddaten, die das Bildverarbeitungsmodul anfordern wird, vorhergesagt, und Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, werden aus dem Speicher in einen zweiten Auflösungspuffer gespeichert. Die Bilddaten in dem zweiten Puffer haben eine höhere Auflösung als die erste Auflösung. Wenn eine Anforderung nach Bilddaten von dem Bildverarbeitungsmodul empfangen wird, wird anschließend bestimmt, ob Bilddaten, ...

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und System, um Bilddaten einem Bildverarbeitungsmodul bereitzustellen.
  • Hintergrund
  • Bild- oder Videoverarbeitungssysteme können hohe Anforderungen an Speichersysteme stellen. Eine Bildverarbeitungsvorrichtung ist typischerweise mit einem Speicher unter Verwendung eines Busses mit begrenzter Bandbreite verbunden. In vielen Fällen ist auch ein Speicher lokal an der Bildverarbeitungsvorrichtung vorgesehen, der als ein Puffer oder Cache-Speicher arbeitet, mit dem Ziel, die Mengen an Daten, die über den Bus von dem Speicher ausgelesen oder in diesen geschrieben werden, zu reduzieren. Das Auslesen von Daten aus dem Speicher über den Bus ist vergleichsweise langsam und verbraucht mehr Energie im Vergleich zum Auslesen der gleichen Daten aus einem lokalen Speicher.
  • Manche Speicherbandbreite ist unvermeidbar. Ein typisches Verarbeitungssystem muss jedes Eingangseinzelbild aus dem Speicher über den Bus lesen und jedes Ausgangseinzelbild in einen Speicher über den Bus schreiben. Für hochauflösendes (HD-)Video kann ein Einzelbild 1920 Pixel breit und 1080 Pixel hoch sein. Bei einem typischen 420-Chrominanz-Unterabtastungsmodus ist die Größe des Einzelbildes ungefähr 3,1 Megabyte (MB). Für eine Eingangsbildfrequenz von 24 Einzelbildern pro Sekunde (fps, engl. frames per second) ist alleine die Eingangsdatenbandbreite ungefähr 74 MB/sec.
  • Die Ausgangsvideogröße und Bildfrequenz kann sich von der Eingangsvideogröße und Bildfrequenz unterscheiden, in Abhängigkeit von der angewandten Verarbeitung. Ein möglicher Verarbeitungsalgorithmus ist ein hoch auflösender bewegungskompensierter Bildfrequenzkonverter, der Eingangsbildfrequenzen mit 24 fps lesen kann und der Ausgangsbildfrequenzen mit beispielsweise 120 fps schreiben kann. In diesem Fall übersteigt die Ausgangsdatenbandbreite 300 MB/Sek, zusätzlich zu der Eingangsdatenbandbreite von 74 MB/Sek, wie zuvor beschrieben. Ein derartig großer Datentransfer ist größtenteils unvermeidbar.
  • Ein beispielhafter Bildfrequenzkonversionsalgorithmus arbeitet in zwei Hauptphasen. Erstens errechnet eine Bewegungsabschätzung ein Vektorfeld, das die Bewegung zwischen einem Paar von aufeinanderfolgenden Einzelbildern darstellt. Zweitens erstellt eine Bildaufbau- oder Interpolationsphase eine Anzahl von Ausgangseinzelbildern unter Verwendung von Pixeln, die von den Eingangseinzelbildern genommen wurden und die in die Ausgangseinzelbilder an Positionen, die durch die Bewegungsvektoren bestimmt werden, platziert werden.
  • Es gibt verschiedene Ansätze zur Bewegungsabschätzung. Ein üblicher ist, ein Einzelbild in kleine rechteckige Blöcke zu unterteilen und für jeden Block einen passenden Bereich von Pixeldaten in einem angrenzenden Eingangseinzelbild zu suchen. Dieses Suchverfahren erfordert typischerweise die Bewertung eines jeden einer Anzahl von Bewegungsvektorkandidaten, und die Qualität der Übereinstimmung wird unter Verwendung einer Metrik, wie beispielsweise der Summe der absoluten Differenzen (SAD, engl. sum of absolute differences) zwischen den Pixeln in dem Block und den Pixeln aus dem benachbarten Einzelbild, bestimmt. Die positionelle Verschiebung zwischen passenden Pixelbereichen bestimmt den Bewegungsvektor für diesen Block.
  • Bewegungsvektorkandidat kann jeder Vektor innerhalb einer Suchreichweite sein. Die Suchreichweite umgibt den Block, und ihre Größe bestimmt die Reichweite von Bewegungen, die erfasst und nachverfolgt werden können. Hierbei gibt es oftmals verschiedene Kandidaten mit ähnlichen Werten, was bedeutet, dass Pixel von angrenzenden Einzelbildern mehr als einmal gelesen werden müssen. Demzufolge ist es zweckmäßig, die zu der Suchreichweite korrespondierenden angrenzenden Einzelbilderpixeldaten in einem lokalen Puffer zu speichern. Nachdem der Puffer gefüllt ist, können viele Vektorkandidaten getestet werden, ohne dass zusätzliche Speicherbandbreite in Anspruch genommen wird, jedoch muss der Speicherbandbreitenverbrauch zum Füllen des Puffers berücksichtigt werden.
  • In der Bilderstellungsphase des Algorithmus werden dem ausgewählten Bewegungsvektor korrespondierende Pixeldaten an ihre Position im Ausgangseinzelbild projiziert. Mehrere alternative Bewegungsabschätzungsergebnisse können projiziert werden, wobei die Pixelwerte in dem Ausgangseinzelbild aus einer Zusammenstellung jeder der Ergebnisse gebildet sind. Die Pixeldaten, die in der Bilderstellung verwendet werden, werden auch aus demselben Pixeldatenpuffer gelesen, der die Pixel für die Bewegungsabschätzung liefert.
  • illustriert einen Ansatz für den Entwurf eines Pixeldatenpuffers. Der Puffer 100 ist mit der gleichen Größe wie der Suchbereich 105 des Bewegungsabschätzers gezeigt und ist auf dem Block 110, für den die Bewegungsabschätzung vorgenommen wird, zentriert. In der Praxis kann die Puffergröße leicht erweitert werden, um Daten an andere Prozesse, wie beispielsweise die Bilderstellungsphase des Bildratenkonverters, zu liefern. Wenn die Verarbeitung der Bewegungsabschätzung zum nächsten Block 115 geht, verwirft der Pixeldatenpuffer Daten, die einer Spalte von Blöcken 120 an einer Kante des Suchbereichs entsprechen, und liest Daten, die einer Spalte von Blöcken 125 an der gegenüberliegenden Kante des Suchbereichs entsprechen. Wenn die Höhe des Suchbereichs V Blöcke ist, dann müssen V Blöcke von Pixeldaten für jeden neuen Block, der in dem Bewegungsabschätzer verarbeitet wird, gelesen werden. Einige Einsparungen können gemacht werden, wenn der Suchbereich anfängt, mit den Kanten des Bildschirms zu überlappen, aber das wird ungefähr durch die Notwendigkeit aufgehoben, eine lange Reihe von Blöcken 130 zu lesen, wenn die Verarbeitungsstelle zur nächsten Reihe absteigt. Eine boustrophedonische Verarbeitungsreihenfolge 135 wird gegenüber einer gerasterten Abtastreihenfolge 140 bevorzugt, da die Verarbeitung, um zurück zu dem gegenüberliegenden Ende der nächsten Reihe zu springen, ein teures Ersetzen des gesamten Pufferinhalts 145 erfordern würde.
  • Es ist angemessen zu erwarten, dass für die Bewegungsabschätzung eines Einzelbildes jeder Block von Pixeldaten in dem angrenzenden Einzelbild zumindest einmal untersucht werden muss. Die meisten Bewegungen sind näherungsweise translational, und das Vektorfeld ist ziemlich gleichförmig. Zwar gibt es Ausnahmen, bei denen wesentliche Teile des benachbarten Einzelbildes nie von dem Bewegungsabschätzer besucht werden, man kann sich jedoch nie darauf verlassen, dass dies der Fall ist. Es ist angemessen zu sagen, dass ein Bewegungsabschätzer in Bezug auf die Speicherbandbreite optimal ist, wenn jeder Block von Pixeldaten des angrenzenden Einzelbildes einmal, und nur einmal, gelesen wird.
  • Das Design der hat den Vorteil der Minimierung der für den Pixeldatenpuffer erforderlichen Speichermenge, auf Kosten von ungefähr V-mal den Speicherbandbreitenverbrauch eines optimalen Designs. Für einen angemessenen vertikalen Bewegungssuchbereich ist V nicht besonders klein.
  • illustriert einen Pixeldatenpuffer 200, der die volle Breite des Einzelbildes beträgt. Der Suchbereich 205 des Bewegungsabschätzers entspricht dem verarbeiteten Block 210. Wenn die Bewegungsabschätzung zum nächsten Block 215 fortschreitet, muss ein zusätzlicher Block 220 gelesen werden, und ein Block 225 kann verworfen werden. Die Position des gelesenen Blocks umhüllt den Anfang der nächsten Zeile, wenn sich die Verarbeitungsposition dem Ende der gegenwärtigen Zeile annähert, so dass die Unterscheidung zwischen der boustrophedonischen und der Rasterabtastungsverarbeitung weniger bedeutsam wird. Dieses Design erreicht die optimale Speicherbandbreite, weil jeder Block des Einzelbildes nur einmal gelesen werden muss. Wo das Einzelbild breit ist, kann eine größere Verzögerung auftreten, bevor der Puffer ausreichend voll ist, so dass der erste Block verarbeitet werden kann. Der signifikanteste Nachteil dieses Designs ist der erheblich größere Betrag von lokalem Speicher, der für den Pixeldatenpuffer erforderlich ist.
  • Ein Cache-Speicher ist in der Regel keine geeignete Alternative zu dem Pixeldatenpuffer in dieser Art von Anwendung, aufgrund der Zeit, die erforderlich ist, um im Falle eines Cache-Fehltreffers Daten aus dem Speicher über den Bus zu lesen. Im Gegensatz hierzu garantieren die Designs von Pixeldatenpuffern, dass die Daten sofort verfügbar sind. Dies ist in einer rechenintensiven Echtzeitanwendung wie der Videobearbeitung bedeutsam.
  • Mit zunehmender Videoeinzelbildgröße erhöht sich der für den Pixeldatenpuffer erforderliche Speicherbetrag entsprechend proportional. Ein hochauflösendes (HD-)Bild hat 1920×1080 Pixel. Zwar gibt es keine Begrenzung für die Größe der Bewegung in einer Videosequenz, es gibt jedoch oft praktische Einschränkungen im Hinblick auf die Größe des Suchbereichs des Bewegungsabschätzers. Die vertikale Größe des Suchbereichs, V, ist von besonderer Bedeutung. Damit ein Bewegungsabschätzer die Mehrzahl der Bewegungen in HD-Video Nachverfolgen kann, kann es erforderlich sein, dass der Puffer mehrere Hundert Pixel groß sein muss. Wenn der Pixeldatenpuffer die Größe des Bildschirms hat und wenn der vertikale Suchbereich, V, 200 Pixel ist, dann ist ein Speicherplatz von ungefähr 1920×200 Pixel erforderlich ( zeigt, dass der Puffer über einen Teil seiner Breite einen Block kürzer sein kann). Die Bewegungsabschätzung arbeitet oftmals zwischen verschiedenen Einzelbildern oder über verschiedene Intervalle gleichzeitig, was Pixeldaten für vielleicht 2, 3 oder 4 Einzelbildern zur gleichen Zeit erfordert. Die Speicheranforderungen müssen demzufolge entsprechend hochskaliert werden. Die Gesamtmenge an erforderlichem Speicher ist groß, und die Pixeldatenpufferung stellt einen erheblichen Anteil der Chip-Fläche einer Bewegungsabschätzvorrichtung dar.
  • Ultrahochauflösende Fernseh-(UHDTV-)Standards legen neue Videoformate mit höherer Auflösung als HD fest. 4K UHDTV ist ein Format mit Einzelbildern von zweimal der Größe von HD in jeder Dimension, das heißt 3840×2160 Pixeln. Die Notwendigkeit, die Einzelbilder zu lesen, bleibt unvermeidlich, so dass die Speicherbandbreite sich wenigstens im Verhältnis zu der Fläche der Einzelbilder erhöht, das heißt, um viermal. Folglich ist es wünschenswert, Pixeldatenpuffer zu gestalten, derart, dass diese so nah am Optimum wie möglich sind, und keine unnötige Speicherbandbreite hinzufügen. Dies legt die Verwendung von Pixeldatenpuffern mit der vollen Breite des Bildschirms nahe. Typische Bewegungsvektoren skalieren auch im Verhältnis zu der Einzelbildgröße, so dass sich die Suchbereichsabmessungen verdoppeln werden. Der Pixeldatenpuffer über die volle Breite wird nun ungefähr 3840 mal 400 Pixel groß sein, viermal die Größe und demzufolge ungefähr viermal die Chip-Fläche der die HD-Lösung.
  • 8K UHDTV Einzelbilder sind zweimal so groß wie das 4K UHDTV in jeder Dimension. Dies erhöht die Bandbreitenanforderungen auf sechzehnmal den Wert für HD Video und erfordert sechzehnmal den Pixeldatenpufferspeicherbetrag.
  • Zum Stand der Technik wird noch auf folgende Veröffentlichungen verwiesen:
    • [1] BERIC, Aleksandar, et al. Memory-centric video processing. Curcuits and Systems for Video Technology, IEEE Trans., 2008, Vol. 18(4): 439–452,
    • [2] HUANG, Ai-Mei; NGUYEN, Truong. Correlation-based motion vector processing with adaptive interpolation scheme for motion-compensated frame interpolation. Image Processing, IEEE Trans., 2009, Vol. 18(4): 740–752,
    • [3] OJO, Olukayode Anthony; DE HAAN, Gerard. Robust motion-compensated video upconversion. Consumer Electronics, IEEE Trans., 1997, Vol. 43(4): 1045–1056 und
    • [4] LUESSI, Martin; KATSAGELLOS, Aggelos K. Efficient motion compensated frame rate upconversion using multiple interpolations and median filtering. In: Image Processing (ICIP), 2009 16th IEEE Int. Conf. IEEE, 2009. S. 373–376.
  • Die Veröffentlichung [1] offenbart für den Bereich der Nachverarbeitung von Videodaten eine zweistufige Speicherhierarchie und offenbart die Merkmale des Oberbegriffs des Hauptanspruchs. Die Offenbarung [2] betrifft das Problem der unzuverlässigen Bewegungsvektoren, die visuelle Artefakte erzeugen können. Hierbei wird vorgeschlagen, die Größe eines verdeckten Bereichs abzuschätzen und dann mit einem Interpolierungsansatz die verfälscht dargestellten Bereiche zu rekonstruieren. Die Offenbarung [3] lehrt einen Ansatz zur Verarbeitung von Videobewegungsdaten, bei denen ein falsch interpolierter Pixel entweder ersetzt oder auf Basis von benachbarten Pixeln gemittelt wird. Die Offenbarung [4] schlägt dagegen vor, Artefakte dadurch zu reduzieren, indem verschiedene Interpolierungsansätze mit einer medialen Filterung kombiniert werden.
  • Zusammenfassung der Erfindung
  • Die Anmelderin hat erkannt, dass es wünschenswert wäre, die Menge an Speicherplatz, die von Bilddatenpuffern benötigt wird, zu reduzieren, bei gleichzeitiger Reduzierung des Speicherbandbreitenverbrauchs.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Bereitstellen von Bilddaten an ein Bildverarbeitungsmodul bereitgestellt, umfassend die Schritte: Lesen von Bilddaten aus dem Speicher in einen Herunterskalierer, der die Bilddaten auf eine erste Auflösung herunterskaliert; Speichern der Bilddaten erster Auflösung in einem ersten Puffer; Vorhersagen eines Bereichs von Bilddaten, den das Bildverarbeitungsmodul anfordern wird; Speichern von Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, aus dem Speicher in einen zweiten Puffer, wobei die Bilddaten in dem zweiten Puffer eine höhere Auflösung als die erste Auflösung aufweisen; Empfangen einer Anforderung für Bilddaten von dem Bildverarbeitungsmodul; Bestimmen, dass Bilddaten, die zumindest einem Teil der angeforderten Bilddaten entsprechen, nicht in dem zweiten Puffer sind; Hochskalieren von Bilddaten von dem ersten Puffer, um einen Ersatz für den zumindest einen Teil der angeforderten Bilddaten mit einer Auflösung bereitzustellen, die zumindest die höhere Auflösung erreicht; und Bereitstellen der hochskalierten Bilddaten an das Bildverarbeitungsmodul.
  • Ausführungsformen der vorliegenden Erfindung haben den Vorteil, dass die Menge an Bilddaten, die mit höherer Auflösung in dem zweiten Puffer gespeichert ist, klein sein kann, und ohne das Risiko, dass falls zu angeforderten Bilddaten entsprechende Bilddaten nicht in dem zweiten Puffer sind, es erforderlich ist, Bilddaten aus dem Speicher zu holen, was für viele Anwendungen zu einer inakzeptablen Verzögerung führen kann. Falls zu den angeforderten Bilddaten entsprechende Bilddaten nicht in dem zweiten Puffer sind, dann werden Bilddaten aus dem ersten Puffer hochskaliert, um einen Ersatz für die angeforderten Bilddaten in einer Auflösung bereitzustellen, die zumindest so groß ist wie die höhere Auflösung. Dieses Verfahren hat den Nachteil, dass in einigen Fällen dem Bildverarbeitungsmodul möglicherweise Bilddaten in niedriger Qualität bereitgestellt werden. Hochfrequenzinformationen geht während des Herunterskalierprozesses verloren, die durch nachfolgendes Hochskalieren der Bilddaten nicht wieder hergestellt werden kann. Dieses Verfahren hat jedoch den Vorteil, dass der von dem Bilddatenpuffer benötigte Speicherplatz reduziert werden kann.
  • Obwohl Bilddaten für einen Bereich des Bildes sowohl in dem zweiten als auch in dem ersten Puffer gespeichert werden können, kann, da der zweite Puffer (derjenige, der die Bilddaten höherer Auflösung speichert) klein sein kann (aufgrund der Rückfallmöglichkeit des Vorsehens von Bilddaten niedriger Auflösung in dem ersten Puffer), der gesamte Speicherplatz, der für beide Puffer benötigt wird, geringer sein als derjenige, der benötigt wäre, wenn alle Bilddaten in dem ersten Puffer mit der höheren Auflösung gespeichert wären.
  • Dies bedeutet ferner, dass folglich Bilddaten für einen größeren Bereich des Bildes in der gleichen Menge an Pufferspeicher gespeichert werden können. Dies hat den Vorteil, dass in manchen Anwendungen die Speicherbandbreite, die benötigt wird, um Bilddaten, die sich nicht in einem Puffer befinden, wiederzulesen, reduziert werden kann, ohne die Menge an Speicherplatz, die von dem Puffer benötigt wird, zu erhöhen.
  • In einem bevorzugten Ausführungsbeispiel der Erfindung speichert der erste Puffer Bilddaten, entsprechend der vollen Breite eines Einzelbildes.
  • Vorzugsweise werden die Bilddaten im dem zweiten Puffer aus dem Speicher in den zweiten Puffer gelesen. Jedoch umfasst in einem alternativen Ausführungsbeispiel der Schritt des Speicherns von Bilddaten, die zumindest einem Teil dem vorhergesagten Bereich von Bilddaten entsprechen, aus dem Speicher in den zweiten Puffer: Lesen von Bilddaten aus dem Speicher in einen Herunterskalierer, der die Bilddaten auf eine zweite Auflösung herunterskaliert; und Speichern der Bilddaten in der zweiten Auflösung in dem zweiten Puffer.
  • Ein Ausführungsbeispiel der Erfindung enthält ferner: Bestimmen, dass Bilddaten, die einem Teil der angeforderten Bilddaten entsprechen, in dem zweiten Puffer sind; und Bereitstellen von Bilddaten aus dem zweiten Puffer an das Bildverarbeitungsmodul mit einer Auflösung, die zumindest gleich der höheren Auflösung ist.
  • Bilddaten können in jedem der ersten und der zweiten Puffer in rechteckigen Blöcken angeordnet sein. Vorzugsweise steht die Größe der Blöcke in dem ersten Puffer mit der Größe der Blöcke in dem zweiten Puffer durch einen Skalierungsfaktor im Zusammenhang, entsprechend dem Unterschied zwischen der ersten Auflösung und der höheren Auflösung.
  • Der zweite Puffer kann unter Verwendung eines inhaltsadressierbaren Speichers umgesetzt werden.
  • Der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfordern wird, kann unter Verwendung von Daten, die von dem Bildverarbeitungsmodul oder einem weiteren Bildverarbeitungsmodul bereitgestellt werden, vorhergesagt werden. Beispielsweise kann der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfordern wird, unter Verwendung von Bewegungsvektoren, die durch das Bildverarbeitungsmodul oder dem anderen Bildverarbeitungsmodul bereitgestellt werden, vorhergesagt werden.
  • In einem bevorzugten Ausführungsbeispiel der Erfindung werden die Bilddaten erster Auflösung in dem ersten Puffer gespeichert durch: Schreiben der Bilddaten erster Auflösung in den Speicher; und Lesen der Bilddaten erster Auflösung aus dem Speicher in den ersten Puffer. Schreiben der Bilddaten erster Auflösung in den Speicher benötigt Speicherbandbreite. Jedoch hat die Anmelderin festgestellt, dass für Anwendungen, bei denen die Bilddaten andernfalls wiedergelesen und herunterskaliert werden müssten, das Schreiben der Bilddaten erster Auflösung in den Speicher zu einer Gesamtspeicherbandbreiteneinsparung führen kann. Die Menge an Speicherbandbreite, die benötigt wird, um die Bilddaten erster Auflösung in den Speicher zu schreiben und aus dem Speicher zu lesen, kann weniger als die Speicherbandbreite sein, die benötigt wird, um Bilddaten in einer höheren Auflösung zu lesen, und diese Einsparung wird sich erhöhen, falls die Bilddaten mehrmals aus dem Speicher gelesen werden müssen. Ferner ermöglicht dieses Verfahren die erforderliche Rechenleistung, die benötigt wird, um die Bilddaten herunterzuskalieren, zu reduzieren, da die Bilddaten nur einmal herunterskaliert werden müssen.
  • In einem weiteren bevorzugten Ausführungsbeispiel der Erfindung erzeugt der Herunterskalierer Rest-Bilddaten durch Bestimmen eines Unterschieds zwischen: Bilddaten in der höheren Auflösung; und Bilddaten, die von der ersten Auflösung zu der höheren Auflösung hochskaliert wurden.
  • In diesem Ausführungsbeispiel können die Bilddaten im zweiten Puffer, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, Rest-Bilddaten enthalten. Die Rest-Bilddaten haben die gleiche Auflösung wie die höhere Auflösung. Jedoch ist der Vorteil, Rest-Bilddaten zu verwenden, dass Rest-Bilddaten oftmals leichter und vollständiger komprimiert werden können als die höher auflösenden Bilddaten. Dies bedeutet, dass die Speicherbandbreite, die erforderlich ist, um Rest-Bilddaten in den Speicher zu schreiben und aus dem Speicher zu lesen, vorteilhafterweise kleiner sein kann als die Speicherbandbreite, die erforderlich ist, um die Bilddaten höherer Auflösung zu lesen. Ferner kann der Speicherplatz, der von dem zweiten Puffer benötigt wird, reduziert werden. Die Rest-Bilddaten können unter Verwendung einer verlustbehafteten oder einer nicht-verlustbehaftenden Komprimierung komprimiert werden.
  • Gemäß diesem Ausführungsbeispiel kann das Bereitstellen von Bilddaten aus dem zweiten Puffer an das Bildverarbeitungsmodul umfassen: Hochskalieren von Bilddaten aus dem ersten Puffer, um zumindest die höhere Auflösung zu erreichen; Kombinieren von Rest-Bilddaten aus dem zweiten Puffer mit den hochskalierten Bilddaten; und Bereitstellen des Ergebnisses an das Bildverarbeitungsmodul.
  • In einem weiteren bevorzugtem Ausführungsbeispiel der Erfindung umfasst das Verfahren das Bestimmen des Anteils von Hochfrequenz-Informationen in einem Teil des Bildes. Dies kann durch Analysieren der Rest-Bilddaten erfolgen.
  • In diesem Ausführungsbeispiel können Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden, falls bestimmt wird, dass der Anteil an Hochfrequenz-Information in diesem Teil des Bildes unter einem Schwellwert ist. Dadurch kann Speicherbandbreite eingespart werden, und zusätzlich Platz in dem zweiten Puffer zur Belegung durch andere Daten freigesetzt werden. Diese anderen Daten können Daten sein, die noch zu speichern sind, oder, indem der zweite Puffer wie ein Cache-Speicher angesehen wird, Daten, die bereits gespeichert wurden (die in der Zukunft nützlich sein könnten), und deren Rauswurf wir vermeiden können.
  • Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, können auch dann nicht in den zweiten Speicher gespeichert werden, falls angezeigt wird, dass dieser Teil des vorhergesagten Bereichs von Bilddaten nicht von dem Bildverarbeitungsmodul verwendet werden wird. Dies kann beispielsweise der Fall sein, falls das Vertrauen in die vorhergesagten Bilddaten niedrig ist.
  • Gemäß einem weiteren bevorzugtem Ausführungsbeispiel der Erfindung wird im Hinblick auf Anforderung an eine Verbrauchsrate der Speicherbandbreite bestimmt, wie viele Bilddaten aus dem Speicher in den zweiten Puffer gespeichert werden.
  • Vorzugsweise wird der Schwellwert hinsichtlich der Menge an Hochfrequenz-Information in unterschiedlichen Teilen des Bildes und der Anforderung an eine Verbrauchsrate der Speicherbandbreite bestimmt.
  • Gemäß einem weiteren bevorzugtem Ausführungsbeispiel der Erfindung können die Bilddaten erster Auflösung von dem ersten Puffer an das Bildverarbeitungsmodul oder ein weiteres Bildverarbeitungsmodul in Reaktion auf eine Anfrage von dem Bildverarbeitungsmodul oder dem anderen Bildverarbeitungsmodul für Bilddaten in der ersten Auflösung bereitgestellt werden. Beispielsweise kann das Bildverarbeitungsmodul oder das weitere Bildverarbeitungsmodul einen Bewegungsabschätzer umfassen, der die Bilddaten in der ersten Auflösung verwendet.
  • Das Bildverarbeitungsmodul kann zum Beispiel ein Bildersteller eines Einzelbildraten-Konverters sein, der ein Bild in zumindest der höheren Auflösung basierend auf den Ergebnissen des Bewegungsabschätzers ausgibt. In einem Ausführungsbeispiel enthält der Bildersteller des Einzelbildraten-Konverters ferner einen Analysator, dem Bilddaten in der ersten Auflösung von dem ersten Puffer bereitgestellt werden.
  • In einem Ausführungsbeispiel der Erfindung wird eine Stelle einer möglichen Diskontinuität zwischen den hochskalierten Bilddaten aus dem ersten Puffer und den Bilddaten, die von dem zweiten Puffer bereitgestellt werden, identifiziert. Gemäß einem bevorzugtem Ausführungsbeispiel der Erfindung kombiniert eine Mischeinheit Bilddaten aus dem zweiten Puffer mit hochskalierten Bilddaten aus dem ersten Puffer in der Nähe der Diskontinuität, um die Sichtbarkeit der Diskontinuität zu reduzieren.
  • Gemäß einem weiteren bevorzugtem Ausführungsbeispiel der Erfindung werden zumindest einige Chrominanz-Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert. Die Anmelderin hat festgestellt, dass Hochfrequenz-Information im Allgemeinen nicht so einfach in Chrominanz-Bilddaten wie in Luminanz-Bilddaten wahrgenommen wird. Folglich ermöglicht das Nichtlesen von Chrominanz-Bilddaten für ein oder mehrere Bildpixel in den zweiten Puffer das Aufrechterhalten von Bandbreite, bei gleichzeitiger Reduzierung von Verschlechterungen in der Qualität der Bilddaten, die dem Bildverarbeitungsmodul bereitgestellt werden. Zu dem wird dadurch ermöglicht, Platz in dem zweiten Puffer zur Belegung durch andere Daten freizugeben.
  • Gemäß der vorliegenden Erfindung wird ferner ein System zur Bereitstellung von Bilddaten an ein Bildverarbeitungsmodul bereitgestellt, umfassend: einen Herunterskalierer, der eingerichtet ist, Bilddaten aus dem Speicher auf eine erste Auflösung herunterzuskalieren; einen ersten Puffer, der angeordnet ist, die Bilddaten erster Auflösung zu speichern; einen zweiten Puffer, der angeordnet ist, Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, zu speichern, wobei die Bilddaten in dem zweiten Puffer eine höhere Auflösung als die erste Auflösung aufweisen; und einen Prozessor, der eingerichtet ist: Bilddaten aus dem Speicher in den Herunterskalierer zu lesen und die Bilddaten erster Auflösung in dem ersten Puffer zu speichern; einen Bereich der Bilddaten, den das Bildverarbeitungsmodul anfordern wird, vorherzusagen; Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, aus dem Speicher in den zweiten Puffer zu speichern; eine Anfrage für Bilddaten von dem Bildverarbeitungsmodul zu empfangen; zu bestimmen, dass Bilddaten, die zumindest einem Teil des angeforderten Bereichs von Bilddaten entsprechen, nicht in dem zweiten Puffer sind; Bilddaten aus dem ersten Speicher unter Verwendung eines Hochskalierers hochzuskalieren, um einen Ersatz für den zumindest einen Teil des angeforderten Bereichs von Bilddaten bereitzustellen, in einer Auflösung, die zumindest die höhere Auflösung erreicht; und die hochskalierten Bilddaten dem Bildverarbeitungsmodul bereitzustellen.
  • Folglich kann in bevorzugten Ausführungsbeispielen der Erfindung der zweite Puffer ein wenig wie ein Cache-Speicher arbeiten, unter Speicherung einer Anzahl von Blöcken von Pixeldaten in hoher Auflösung. Der Inhalt des zweiten (hohe Auflösung) Puffers kann durch eine Puffersteuerungseinheit aufrecht erhalten werden, die Vorhersage- und Ratensteuerungsalgorithmen verwenden kann, um die erforderlichen Pixeldaten durch ein Bildverarbeitungsmodul bereitzustellen, wobei sie auch gleichzeitig den Verbrauch von Speicherbandbreite reguliert.
  • Anwendungen (wie zum Beispiel der Bewegungsabschätzer und Bildersteller eines Einzelbildkonverters) können auf Daten von entweder dem ersten oder zweiten Puffer zugreifen. Ein Bewegungsabschätzer kann zum Beispiel so eingerichtet sein, um vollständig auf Basis von Daten in der niedrigen (ersten) Auflösung aus dem ersten Puffer zu arbeiten. Der Bildersteller sollte vorzugsweise mit Daten hoher Auflösung arbeiten, so dass die Ausgabe-Einzelbilder wo immer möglich, die Auflösung der Eingabe-Einzelbilder beibehalten. Der Zugang zu dem zweiten (hohe Auflösung) Puffer erfolgt durch die Puffersteuerungseinheit, die Daten hoher Auflösung bereitstellt, wo diese in dem Puffer der hohen Auflösung verfügbar sind, und die hochskalierte Daten von dem ersten (niedrige Auflösung) Puffer bereitstellt, wenn Daten hoher Auflösung nicht verfügbar sind.
  • Weitere Merkmale und Vorteile der bevorzugten Ausführungsbeispiele der Erfindung werden aus der folgenden detaillierten Beschreibung ersichtlich.
  • Kurze Beschreibung der Figuren
  • Ausführungsbeispiele der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben:
  • illustriert einen Pixeldaten-Puffer, der die gleiche Größe aufweist wie ein Suchbereich des Bewegungsschätzers;
  • illustriert einen Pixeldaten-Puffer, der so breit ist wie das Videoeinzelbild;
  • ist ein Blockdiagramm, das die Architektur eines Systems mit Puffern hoher Auflösung und niedriger Auflösung unter der Steuerung einer Puffersteuerungseinheit in einem Ausführungsbeispiel der vorliegenden Erfindung zeigt;
  • ist ein Blockdiagramm eines verbesserten Systems, das in niedriger Auflösung Einzelbilder und Restdaten speichert in einem Ausführungsbeispiel der vorliegenden Erfindung;
  • ist ein Blockdiagramm einer Puffersteuerungseinheit in einem Ausführungsbeispiel der vorliegenden Erfindung;
  • ist ein Blockdiagramm einer alternativen Puffersteuerungseinheit, die das Puffern von Restdaten in einem Ausführungsbeispiel der vorliegenden Erfindung verwaltet;
  • illustriert verschiedene Ausrichtungen der angeforderten Daten in Bezug auf die Speicherblöcke des Puffers;
  • illustriert die Verfügbarkeit und Nicht-Verfügbarkeit von Daten in Blöcken, die von einem Puffer angefordert werden;
  • zeigt eine Variation der Puffersteuereinrichtung, die eine Mischeinheit beinhaltet, in einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • ist ein Blockdiagramm eines System mit einem zusätzlichen Puffer, der Daten einer Zwischenauflösung speichert, in einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung
  • Die hier beschriebene Pixel-Pufferungs-Technik entkoppelt eine ON-CHIP-Speichergröße von der Eingangs-Einzelbildgröße, während der Speicherbandbreitenverbrauch begrenzt wird.
  • Diese Architektur ermöglicht einen nützlichen und flexiblen Kompromiss zwischen zwei Extremen. Das System der verwendet einen kleinen ON-Chip Pufferspeicher, aber die Speicherbandbreite ist übertrieben. Das System der , mit einem Pixel-Puffer voller Breite und hoher Auflösung, minimiert die Speicherbandbreite auf Kosten einer ungeheuer großen Menge von ON-Chip Pufferspeicher. Während jede Lösung machbar ist, wenn die Video-Auflösungen klein sind, werden die Mängel beider Lösungen offensichtlich, wenn die Auflösung steigt. Durch Auswahl angemessener Skalierungsfaktoren und Puffergrößen ermöglicht die beschriebene Technik, eine angemessene Balance zwischen Kosten-Bandbreite und Bildqualität zu finden. Während sie vor allem für hochauflösende Videobearbeitungssysteme bestimmt ist, können die beschriebenen Beispiele auch für niedrigauflösende Systeme angewendet werden, bei denen weitere Einsparungen gegenüber existierenden Designs erreicht werden können.
  • Die folgenden Beispiele werden im Zusammenhang mit einem bewegungskompensierten Einzelbildraten-Konverters beschrieben. Jedoch wird der Fachmann erkennen, dass die Technik auf eine große Vielzahl von Bild- und Videobearbeitungsanwendungen angewendet werden kann.
  • Der Begriff „Anwendung” wird hier verwendet, um einen Verarbeitungsblock oder ein Modul, das gepufferte Pixeldaten verwendet, zu beschreiben. Anwendungen werden typischerweise als Teil der gleichen Hardware-Vorrichtungen wie das Pixelpuffersystem umgesetzt und sollten nicht mit beispielsweise Software-Anwendungen verwechselt werden, die auf einem Universal-Rechner laufen. Der bewegungskompensierte Einzelbildraten-Konverter ist ein Beispiel einer Anwendung, die gepufferte Pixeldaten verwendet, und man wird sehen, dass diese Anwendung auch in Form von mehreren Anwendungen umgesetzt werden kann, von denen jede die Pixeldaten in unterschiedlicher Weise verwendet.
  • zeigt ein vereinfachtes Blockdiagramm eines Systems, in dem hochauflösende Videoeinzelbilder in einem Speicher 300 gespeichert sind. Eine Herunterskalierungseinheit 305 wandelt Einzelbilder hoher Auflösung in eine niedrigere Auflösung um und speichert die Pixeldaten niedriger Auflösung in dem Puffer niedriger Auflösung 310. Zur Minimierung des Speicherbandbreitenverbrauchs wird ein Puffer der vollen Breite des herunterskalierten Bildes bevorzugt.
  • Der Herunterskalierungsvorgang kann jede der bekannten Techniken zur Bildskalierung verwenden. Ein ziemlich hochwertiger Skalierer, beispielsweise der bikubischen Art, wird empfohlen, da Pixel von dem Puffer niedriger Auflösung in dem Ausgabebild erscheinen können.
  • Für manche Anwendungen ist die Auflösung der herunterskalierten Daten vollständig ausreichend. Eine derartige Anwendung ist als Anwendung niedriger Auflösung 315 gezeigt. In dem Beispiel eines Einzelbildraten-Konverters ist es möglich, Bewegungsabschätzer als Anwendungen niedriger Auflösung laufen zu lassen, wie nachfolgend erörtert wird.
  • Eine Puffersteuerungseinheit 320 stellt Bilddaten hoher Auflösung einer Anwendung hoher Auflösung 335 bereit. Die Anwendung hoher Auflösung arbeitet, als wenn sie Zugang zu einem Pixeldaten-Puffer voller Größe hätte, der Pixeldaten hoher Auflösung enthält, wie beispielsweise in der gezeigt. Tatsächlich existiert jedoch kein solcher Puffer. Die Puffersteuerungseinheit 320 hält eine kleine Menge von Daten hoher Auflösung in dem Puffer hoher Auflösung 330 vor. Wenn die Anwendung 335 Pixeldaten anfordert, liefert die Puffersteuerungseinheit diese von dem Puffer hoher Auflösung 330, wenn diese verfügbar sind. Wenn die Daten nicht von dem Puffer hoher Auflösung verfügbar sind, liefert die Puffersteuerungseinheit Daten von den Puffer niedriger Auflösung 310 über den Hochskalierer 325. Das Hochskalierverhältnis entspricht dem Verhältnis des Herunterskalierers 305, so dass die Skalierung der Daten niedriger Auflösung denen der Einzelbilder hoher Auflösung entspricht. Die Anwendung hoher Auflösung 335 braucht nicht zu wissen, ob irgendein bestimmter Pixel über den Pfad niedriger Auflösung geliefert wurde. Hochfrequenzinformation geht natürlich während des Herunterskalierverfahrens verloren. Wenn die hochskalierten Daten verwendet werden, um eine Ausgabe zu erzeugen, kann der Mangel an Hochfrequenz-Information zu einer sichtbaren Erweichung des Bildes führen.
  • Die Puffersteuerungseinheit 320 stellt sicher, dass, wo immer möglich, die von der Anwendung hoher Auflösung 335 angeforderten Daten in dem Puffer hoher Auflösung 330 vorhanden sind.
  • In einem Beispiel wird die Speicherung von Pixeldaten in dem Puffer hoher Auflösung 330 in rechteckigen Blöcken organisiert. Die Größe dieser Speicherblöcke kann für die beste Leistung des Puffersystems gewählt werden und kann sich von der Blockgröße, falls vorhanden, die für die Bearbeitung der Anwendung hoher Auflösung 335 verwendet wird, unterscheiden. Die Aufteilung des Speichers hoher Auflösung in Blöcke ermöglicht die Verwaltung des Pufferinhaltes in einer geeigneten Granularität und das Anfordern von Bereichen von hochskalierten Daten von dem Hochskalierer 325 und dem Puffer niedriger Auflösung 310.
  • Ebenso kann der Puffer niedriger Auflösung 310 Pixeldaten in rechteckigen Blöcken speichern. Es kann besonders bequem sein beispielsweise eine Speicherblockgröße für niedrige Auflösungen zu wählen, die mit der Speicherblockgröße für hohe Auflösungen über den Skalierungsfaktor, der in dem Herunterskalierer 305 und dem Hochskalierer 325 verwendet wird, in Verbindung steht. Auf diese Weise entspricht einem Block niedriger Auflösung ein Block hoher Auflösung.
  • Cache-Speicher sind wohl bekannt. Ein herkömmlicher Cache-Speicher empfängt Anforderungen für Daten von einer bestimmten Speicheradresse und liefert diese Daten an die Vorrichtung, die die Anforderungen gemacht hat. Beim ersten Mal, wenn ein Satz Daten angefordert wird, wird dieser aus dem Speicher über den Bus geholt. Die Daten werden in dem Cache dupliziert, so dass, falls diese ein zweites Mal angefordert werden, die Daten aus dem Cache geliefert werden können, anstatt diese aus dem Speicher zu holen. Dies ist als „Cache-Treffer” bekannt. Die Speichermenge in einem Cache ist relativ klein, so dass es im Allgemeinem für den Cache nicht möglich ist, eine duplizierte Kopie der gesamten Arbeitsmenge von Daten vorrätig zu halten. Dies trifft insbesondere zu, wenn die Arbeitsmenge groß ist, wie es der Fall bei Bild- oder Videodaten ist. Typischerweise wird ein neuer Satz von Daten, der in den Cache geladen wird, einen anderen Satz von Daten herauswerfen. Sollte der herausgeworfene Satz der Daten erneut angefordert werden, ist es notwendig, diesen erneut aus dem Speicher zu holen. Die Situation, in der eine Leseanforderung dazu führt, dass Daten aus dem Speicher geholt werden, ist als „Cache-Fehltreffer” bekannt. Die Größe des Caches, Abbildungsregeln und die Regelungen von Ersetzungen bestimmen das Verhalten des Caches und können für eine Universalperformance oder für die Performance in einer besonderer Anwendung ausgewählt werden.
  • Das Vorgreifen (engl. pre-fetching) ist eine Technik die mit Cache-Speichern verwendet wird, wenn es möglich ist, vorherzusagen, dass ein Datensatz in naher Zukunft von dem Cache-Speicher angefordert werden wird. Der Vorgriff überträgt die Daten in den Cache-Speicher, so dass ein Cache-Treffer eintreten wird, wenn diese zum ersten Mal angefordert werden. In einer Videoanwendung kann dies zweckmäßig sein, wenn beispielsweise Pixelblöcke in einer Rasterscan-Reihenfolge verarbeitet werden. Kurz bevor die Bearbeitung eines Blockes vollständig ist, kann eine Vorgriff-Anweisung ausgegeben werden, um die Daten für den nächsten Block in den Cache-Speicher zu holen, so dass die Daten für den nächsten Block unmittelbar verfügbar sind, wenn die Verarbeitung des nächsten Blockes beginnt. Dieses Vorgreifen reduziert nicht den Bandbreitenverbrauch, ist aber hilfreich, um die Wartezeit (Verzögerung), die mit einem Cache-Fehltreffer verbunden ist, zu verbergen. Wenn Vorgreifen eingesetzt wird, sollte die Möglichkeit in Betracht gezogen werden, dass die vorgegriffenen Daten andere Daten aus dem Cache-Speicher hinauswerfen, während dieser noch in Gebrauch ist, was zusätzliche Cache-Fehltreffer verursacht.
  • Der Puffer hoher Auflösung 330 und die Steuerung 320 unterscheiden sich von einem herkömmlichen Cache-Speicher dadurch, dass eine Anforderung nach Daten, die nicht in dem Puffer hoher Auflösung vorhanden sind, nicht dazu führt, dass Daten aus dem Speicher geholt werden. Stattdessen werden die Daten von dem Puffer niedriger Auflösung 310 über den Hochskalierer 325 bereitgestellt. Hierdurch wird die Wartezeit eines Speicherzugriffs immer vermieden.
  • Ohne ein Mittel wie beispielsweise den „Cache-Fehlzugriff”, um den Puffer hoher Auflösung 330 zu füllen, müssen andere Mechanismen bereitgestellt werden. Die Puffer-Steuerung 320 übt diese Funktion aus, parallel zu der Bereitstellung von Daten an die Anwendung 335.
  • Die Struktur einer Puffer-Steuerungseinheit 320 wird in gezeigt. Die Lesesteuerung 500 empfängt eine Anforderung für einen Block von Bilddaten von der Anwendung. Die Anforderung wird verarbeitet, um die von dem Puffer hoher Auflösung 505 benötigten Daten zu bestimmen, beispielsweise durch Abbildung der Anforderung auf die Speicherblockgröße hoher Auflösung. Der Puffer hoher Auflösung wird dann abgefragt, um zu bestimmen, ob der Puffer die angeforderten Daten enthält. Der Mechanismus, um den Puffer anzufragen, kann Techniken ähnlich zu denen im Speicher-Cache-Design verwenden: Beispielsweise wird eine Kennzeichnung 510 (engl. tag) mit jedem Block von gepufferten Daten 515 gespeichert und kann von den Koordinaten der Pixeldaten in dem Einzelbild abgeleitet werden oder von der Adresse der Daten im Speicher. Der Puffer kann dann in Form eines inhaltsadressierbaren Speichers (CAM, engl. content addressable memory) implementiert werden, was es ermöglicht, die Daten, die einer speziellen Kennzeichnung entsprechen, abzurufen.
  • Wenn die angeforderten Daten in dem Puffer hoher Auflösung enthalten sind, werden die Daten über den Pfad 520 an den Multiplexer 525 geliefert. Wenn die angeforderten Daten nicht in dem Puffer hoher Auflösung enthalten sind, wird eine Anforderung an den Hochskalierer (und von dem Hochskalierer an den Puffer niedriger Auflösung) gesendet, um die hochskalierten Daten niedriger Auflösung über den Pfad 530 zu liefern. Alternativ kann die Anforderung nach Daten an den Puffer hoher Auflösung und den Hochskalierer gleichzeitig gesendet werden, so dass ein größerer Teil der mit dem Hochskalieren von Daten niedriger Auflösung verbundenen Wartezeit hinter der Zeit versteckt ist, die für die Anfrage an den Puffer hoher Auflösung benötigt wird.
  • Optional kann die Anforderung nach Daten an den Speicher über einen Bus gesendet werden und Daten hoher Auflösung an den Multiplexer über den Pfad 535 geliefert werden. Im Allgemeinen liefert das System Daten über entweder Pufferpfade niedriger Auflösung oder Pufferpfade hoher Auflösung, um die beträchtliche Wartezeit und den Bandbreitenverbrauch, der mit einem Speicherzugriff verbunden ist, zu vermeiden. Nichtsdestotrotz kann die Möglichkeit, Daten aus dem Speicher zu liefern, in manchen Anwendungen nützlich sein.
  • Der Multiplexer 525 schaltet zwischen verschiedenen Datenpfaden um, unter der Steuerung der Lesesteuerung 500, um so die geeigneten Daten an die Anwendung am Ausgang 540 zu liefern.
  • Die Vorgriffsteuerung 545 ist dafür verantwortlich, Daten aus dem Speicher zu lesen und diese in den Puffer hoher Auflösung zu speichern. Idealerweise sind alle Daten geholt und in dem Puffer hoher Auflösung verfügbar, bevor diese von einer Anwendung angefordert werden. In der Praxis wird die Verfügbarkeit von der Vorhersagbarkeit des Bedarfs, den Speicherrichtlinien in dem Puffer hoher Auflösung (d. h., ob das Speichern eines Datensatzes das Herauswerfen eines anderen verursacht) und anderen Faktoren, wie beispielsweise die auf der Speicherschnittstelle ausgeübte Ratenkontrolle (engl. rate control) abhängen. Im Allgemeinen wird der Vorgriff-Steuerungsalgorithmus von den Merkmalen der Anwendung abhängen.
  • Die Bilderstellungsphase des Einzelbildratenkonverters läuft in der Regel als eine Anwendung hoher Auflösung. Bewegungsvektoren, die während einer Bewegungsabschätzungsphase bestimmt wurden, werden verwendet, um die Stellen in einem Eingabeeinzelbild zu bestimmen, von denen Pixeldaten abgefragt werden müssen. Die abgefragten Pixeldaten werden dann, möglicherweise mit anderen Pixeldaten, die von anderen Eingabe-Einzelbildern abgefragt wurden, zu einem Ausgangs-Einzelbild zur Anzeige zusammengesetzt.
  • Die Vorgriff-Steuerung für die Bilderstellungsanwendung ist unkompliziert, falls eine Bewegungsabschätzungsanwendung ausreichend im Voraus läuft, so dass Bewegungsvektoren es ermöglichen, die genauen Datenanforderungen des Bilderstellers zu kennen. In diesem Fall kann die Vorgriff-Steuerung eine FIFO(engl. first in, first out)-Warteschlange der antizipierten Datenanforderungen umfassen, wobei Daten an den Puffer hoher Auflösung geliefert werden, kurz bevor diese von dem Bildersteller angefordert werden.
  • Wenn aktuelle Bewegungsvektoren nicht ausreichend im Voraus verfügbar sind, kann die Vorgriff-Steuerung versuchen, die Anforderungen, die der Bildersteller wahrscheinlich machen wird, zu bestimmen.
  • Ein Beispiel für ein Vorhersageverfahren ist, anzunehmen, dass eine Bewegung die gleiche sein wird, wie sie es an der gleichen Stelle während des vorherigen Einzelbild-Intervalls war. Bewegende Objekte bewegen sich in der Regel weiter, so dass dies normalerweise zu einer guten Vorhersage führt. Eine Ausnahme gibt es an den Kanten von sich bewegenden Objekten, wo der Vektor der Bewegung eines Objektes entspricht, das sich wegbewegt hat. Bewegungskompensation des Vektorfeldes kann die Vorhersage in diesen Fällen verbessern.
  • In vielen Fällen beruht die dominierende Bewegung in einem Einzelbild auf der Bewegung der Kamera, beispielsweise im Fall eines horizontalen Kameraschwenks. Der Vektor, der diese Bewegung darstellt, ist als ein globaler Bewegungsvektor bekannt und kann aus einem Mittelwert eines Vektorfeldes abgeleitet werden. Auch im Falle, wo die Szene sich bewegende Objekte enthält, erzeugt ein unter Verwendung eines Medians berechneter Mittelwert einen globalen Bewegungsvektor, der oft eine gute Vorhersage für den Bewegungsvektor in einer Mehrzahl der Blöcke des Einzelbildes darstellt. Ein globaler Bewegungsvektor stellt somit eine alternative Vorhersage dar, die zur Verwendung durch die Vorgriff-Steuerung geeignet ist.
  • Bei Verwendung von Vektoren aus einem vorhergehenden Einzelbildintervall, entweder einzeln oder als eine globale Bewegung, hängt die Genauigkeit der Vorhersage von einer Bewegung ab, die sich nicht signifikant von einem Einzelbild-Intervall zum nächsten ändert. Glücklicherweise ist dies im Allgemeinen der Fall. Wenn die Bewegungsabschätzung in dem aktuellen Einzelbild-Intervall voranschreitet, können diese Vektoren auch in die Vorhersage mit einbezogen werden, so dass kleine Änderungen in der Bewegung berücksichtigt werden können.
  • Wenn die Vorhersage fehlschlägt, dann werden die angeforderten Pixeldaten nicht in dem Puffer hoher Auflösung verfügbar sein, und so werden stattdessen Pixeldaten niedriger Auflösung geliefert. Ein Fehlschlagen der Vorhersage ist dann am Wahrscheinlichsten, wo es bewegende Objekte oder plötzliche Veränderungen in der Bewegung gibt. Eine Bewegungsunschärfe kann die Erscheinung von sich bewegenden Objekten schwächen, und Betrachter sind weniger in der Lage, Objekten zu folgen, die sich unberechenbar bewegen. Die Lieferung von Pixeldaten niedriger Auflösung fällt wahrscheinlich mit Bereichen des Bildes zusammen, in denen der Inhalt hoher Auflösung entweder fehlt oder nicht leicht wahrgenommen wird. Folglich ist die visuelle Auswirkung eines Vorhersageausfalls reduziert.
  • In einem idealen Fall, wo die Vorhersage gut funktioniert, kann erwartet werden, dass sich der Speicherbandbreitenverbrauch aufgrund der Lieferung von Pixeldaten hoher Auflösung dem optimalen Fall annähert, wo jedes Pixel (oder Block von Pixeln) nur einmal gelesen wird. In der Praxis sind die von der Anwendung hoher Auflösung angeforderten Blöcke von Pixeln wahrscheinlich nicht mit dem Speicherblockraster abgestimmt, das in dem Puffer hoher Auflösung verwendet wird.
  • Die zeigt übliche Fälle von nicht abgestimmten Datenanforderungen. Wenn der Block 700 angefordert wird, müssen Pixel von vier Speicherblöcken 711, 712, 713 und 714 ausgegeben werden. Wenn die Anwendung hoher Auflösung Blöcke in einer Rasterscan-Reihenfolge verarbeitet, kann der Caching-Effekt des Puffers hoher Auflösung den Speicherbandbreitenverbrauch von 4× auf 2× reduzieren. Wenn beispielsweise Block 720 angefordert ist, verbleiben die Speicherblöcke 713 und 714 in dem Puffer von dem vorherigen Zugriff, und zwei zusätzliche Blöcke, 731 und 732 werden benötigt.
  • Wenn es die Ressourcen erlauben, kann ein größerer Puffer hoher Auflösung ermöglichen, dass Blöcke, die während der Verarbeitung einer Reihe geladen wurden, für die Wiederverwendung verfügbar bleiben, wenn die nächste Reihe verarbeitet wird. Wenn beispielsweise der Block 740 angefordert wird, können die Speicherblöcke 712 und 714 in dem Puffer verbleiben und die zusätzlichen Blöcke 751 und 752 werden benötigt. Wenn dann der Block 760 angefordert ist, verbleiben die Blöcke 714, 732 und 752 in dem Puffer und ein zusätzlicher Block 753 ist benötigt. In diesem Fall kann sich der Speicherbandbreitenverbrauch 1× nähern.
  • Alternativ können Verbesserungen in der Caching-Performance ohne eine große Zunahme der Puffergröße erhalten werden durch Änderung der Blockverarbeitungsreihenfolge von einem Rasterscan- zu einem gekachelten Layout, oder einem Morton-Reihenfolge Layout wenn es die Anwendung erlaubt.
  • In einem bewegungskompensierten System, werden Blockanforderungen in einem gepackten Gitter (wie beispielsweise Blöcke 700, 720, 740 und 760) angeordnet, wenn das Vektorfeld gleichförmig ist. Wenn das Vektorfeld nicht gleichförmig ist, kann dies eine Sequenz von Blockanforderungen hervorrufen, wie beispielsweise 740, 760, 780. Während diese Sequenz vollständig vorhersagbar (bei vorheriger Erkenntnis des Vektorfeldes) sein kann, stört dies wahrscheinlich auch die Caching-Performance des Puffers. Während beispielsweise die Speicherblöcke 732 und 792 in dem Puffer verbleiben, ist es wahrscheinlich, dass die Blöcke 731 und 791 verworfen wurden.
  • Ein Bewegungsabschätzer ist eine Verarbeitung, die gut geeignet ist, um als Anwendung niedriger Auflösung ausgeführt zu werden. Signalaufbereitung ist eine bekannte Technik, um die Leistung eines Bewegungsabschätzers zu verbessern, und beinhaltet oftmals das Tiefpassfiltern der Bilddaten. Die Gründe dafür, dass dies vorteilhaft ist, umfassen Rauschunterdrückung, und Überempfindlichkeit der Block-Anpassungs-Maßnahmen, wie die Summe der absoluten Differenzen (SAD) für sehr hohe Frequenzanteile. Folglich gibt es normalerweise kaum Nachteile und wahrscheinlich einige Vorteile, einen Bewegungsabschätzer auf Daten, die zu einer niedrigen Auflösung herunterskaliert wurden, laufen zu lassen.
  • Trotzdem führt ein Bewegungsabschätzer Zugriffe auf Daten durch, die einigermaßen vorhersagbar sind, und der Lokalitätsgrad ist derart, dass der Puffer hoher Auflösung gut arbeiten kann, wenn die Wahl getroffen wird, einen Bewegungsabschätzer als einen Prozess hoher Auflösung zu implementieren.
  • In dem Bewegungsabschätzer ist der Vergleich von Blöcken von Pixeldaten typischerweise der Vergleich von einem rasterausgerichteten Block von Pixeln in einem Einzelbild mit mehreren nicht ausgerichteten Kandidatenblöcken in einem angrenzenden Einzelbild. Eine Anzahl von nicht ausgerichteten Kandidatenblöcken ist in illustriert. Die Auswahl der Positionen der Kandidatenblöcke ist ein kompliziertes Thema, das an dieser Stelle nicht diskutiert wird, das aber dem Fachmann bekannt ist. Es ist im Wesentlichen ein Problem der Vorhersage der Bewegung von Objekten. Die Menge an Kandidatenblockpositionen wird sich typischerweise um einen oder mehrere wahrscheinliche Bewegungsvektoren häufen, mit kleinen Abweichungen in der Position, die es dem Bewegungsvektorfeld ermöglichen, sich über die Zeit zu verbessern und anzupassen.
  • Die Häufungen 777 und 778 sind mit jeweils vier und zwei Kandidaten gezeigt. Es ist zu erkennen, dass der Puffer gut funktioniert, da mehrere Kandidatenorte Daten von der gleichen Menge von Pixeldatenspeicherblöcken benötigen.
  • In dem Maße, in dem Kandidatenblockpositionen ausreichend weit im Voraus vorhergesagt werden können, bieten sie eine nützliche Eingabe für die Vorgriff-Steuerung 545, da jede Kandidatenblockposition ein Gebiet von Pixeldaten darstellt, die angefordert werden wird, wenn die Kandidaten getestet werden. Die Vorgriff-Steuerung erhält über den Datenpfad 550 eine Eingabe von der Anwendung, die Daten dieser Art umfassen kann.
  • 4 ist ein Blockdiagramm, das zusätzliche Details zeigt, die in einem weiteren Beispielsystem implementiert werden können.
  • In vielen Anwendungen wird jedes Einzelbild eines Videos mehrere Male verarbeitet. In dem Beispiel eines Bewegungsabschätzers findet eine Suche zwischen einem Paar von Einzelbildern statt. Die erste Bewegungsabschätzung findet zwischen dem Einzelbild 0 und dem Einzelbild 1 statt. Die zweite Bewegungsabschätzung findet zwischen dem Einzelbild 1 und Einzelbild 2 statt, die dritte Bewegungsabschätzung zwischen dem Einzelbild 2 und dem Einzelbild 3, und so weiter. Mit der Ausnahme des ersten Einzelbildes in der Sequenz wird jedes Einzelbild von zwei Bewegungsabschätzungen benötigt. Ausgefeiltere Suchabschätzer können Suchen über verschiedene Intervalle und in verschiedenen Richtungen (zum Beispiel die Suche nach dem Inhalt des Einzelbildes n im Einzelbild n – 1 ist nicht das Gleiche wie die Suche nach dem Inhalt des Einzelbildes n – 1 in dem Einzelbild n) durchführen. Es ist folglich möglich, dass jedes Einzelbild eines Videos zwei, drei oder mehrere Male gelesen wird. Da es normalerweise nicht machbar ist, komplette Einzelbilder in dem Pufferspeicher zu speichern, erhöht sich die Speicherbandbreite entsprechend.
  • In einem alternativen Ausführungsbeispiel enthält der Speicher 400 Speicherplatz für Hochauflösungs-Videoeinzelbilder 405, die von einem Herunterskalierer 410 verarbeitet werden. Die Steuerungseinheit 415 des Puffers niedriger Auflösung speichert die herunterskalierten Pixeldaten in dem Puffer niedriger Auflösung wie vorher und gibt die Daten an den Speicher 420 zurück. Wenn dasselbe Einzelbild ein zweites Mal verarbeitet wird, fragt die Steuerungseinheit des Puffers niedriger Auflösung die Niedrigauflösungs-Einzelbilder 420 aus dem Speicher ab und vermeidet so die Notwendigkeit, die Einzelbilder hoher Auflösung wieder herunterzuskalieren.
  • Wenn die Größe im Speicher eines Einzelbildes hoher Auflösung B ist und ein typischer Herunterskalierungs-Faktor von 0,5 verwendet wird, dann ist die Größe des Einzelbildes niedriger Auflösung im Speicher gleich B/4. Das erste Mal wenn ein Einzelbild verarbeitet wird, ist der Speicherbandbreitenverbrauch ein Lesen von B plus ein Schreiben von B/4. Das zweite Mal, wenn das Einzelbild verarbeitet wird, ist der Speicherbandbreitenverbrauch ein Lesen von B/4. Der gesamte Speicherbandbreitenverbrauch für einen Rahmen der n-mal verarbeitet wird, ist (1 + n/4) B im Vergleich zu nB für ein System, das die herunterskalierten Einzelbilder nicht speichert. Folglich liegt eine Bandbreiteneinsparung für jedes Einzelbild vor, auf das mehr als einmal zugegriffen wird. Da der Herunterskalierer 410 weniger Einzelbilder zu verarbeiten hat, ergibt sich auch eine Gelegenheit, Chip-Fläche einzusparen oder den Stromverbrauch zu reduzieren.
  • Der Herunterskalierer 410 kann auch eine Restausgabe erzeugen. Der Rest ist die Differenz zwischen den Pixeldaten hoher Auflösung und den Pixeldaten, die schließlich wieder erzeugt werden, wenn die Pixeldaten niedriger Auflösung hochskaliert werden. Die Restdaten haben die gleiche Auflösung wie die Pixeldaten hoher Auflösung, haben aber den Vorteil, vergleichbar einfach komprimiert werden zu können. Der Rest-Encoder 425 komprimiert die Restdaten und speichert diese im Speicher bei 430.
  • Die Puffer-Steuerungseinheit 435 verwaltet jetzt einen Puffer von kodierten Restdaten 440 anstelle des Puffers von Pixeldaten hoher Auflösung 330. Wenn die Anwendung hoher Auflösung Pixeldaten anfordert und der geeignete Restdatensatz in Restpuffer 440 verfügbar ist, wird der Rest bei 445 dekodiert und zu den hochskalierten Daten niedriger Auflösung hinzugefügt. Dies ist äquivalent zum direkten Bereitstellen der Daten hoher Auflösung.
  • Die Komprimierbarkeit der Restdaten variiert zwischen sehr wenig in Bereichen mit beträchtlichem Hochfrequenz-Detailreichtum bis hin zu beträchtlich in Bereichen, wo das Einzelbild hoher Auflösung sehr wenig Hochfrequenz-Detailreichtum hat. Im schlimmsten Fall ist die Größe der Restdaten, die aus dem Speicher geholt werden müssen, die gleiche, wie wenn Pixeldaten hoher Auflösung geliefert worden wären. Im Durchschnitt sind die Restdaten kleiner und reduzieren die Speicherbandbreite weiter. Ferner belegen komprimierte Restdaten weniger Platz im Rest-Puffer 440 und erhöhen die effektive Größe des Puffers und bedeuten, dass es weniger Anlässe gibt, bei denen die Puffer-Steuerung 435 der Anwendung Pixeldaten niedriger Auflösung liefern muss. zeigt die Puffersteuerungseinheit der in abgewandelter Form, um in dem System der zu arbeiten.
  • Der Pixeldatenpuffer hoher Auflösung ist durch einen Rest-Puffer 600 ersetzt, und der Rest-Decoder 605 entspricht dem Block 445 der . Decodierte Restdaten werden mit Daten niedriger Auflösung bei 610 summiert, um Pixeldaten hoher Auflösung an den Multiplexer bereitzustellen. Wenn ein ungepufferter Rest-Datenpfad 615 verwendet wird, dann müssen diese Daten an den Rest-Decoder geleitet werden.
  • Restdaten können in Blöcken, vorzugsweise der gleichen Größe wie die Speicherblockgröße, gespeichert werden, die von dem Puffer hoher Auflösung verwendet wird. Verschiedene Verfahren können für die Komprimierung der Restdaten geeignet sein, und solche Verfahren sind aus den Bereichen der Bild- und Videocodierung wohl bekannt. Verfahren, basierend auf der diskreten Kosinus-Transformation (DCT) oder basierend auf Wavelets, sind geeignet. Mit solchen Methoden wird es möglich, ein verlustbehaftetes Kodieren der Restdaten in Betracht zu ziehen. Verlustbehaftetes Kodieren wird beispielsweise bei der JPEG-Bildkodierung oder in der MPEG-Videokodierung verwendet.
  • In dem hier beschriebenen System kann das verlustbehaftete Kodieren von Resten die Speicherbandbreite weiter reduzieren und es erlauben, eine noch größere Anzahl von Resten in dem Puffer hoher Auflösung zu speichern, als es mit verlustfreier Rest-Kodierung möglich ist. Der mögliche Nachteil ist, dass die Wiederherstellung von Pixeldaten hoher Auflösung von dem hochskalierten Bild niedriger Auflösung und dem Rest nicht länger perfekt ist. In vielen Fällen kann der Verlust visuell nicht wahrnehmbar sein, und in den meisten Fällen werden die wiederhergestellten Daten hoher Auflösung der Verwendung von hochskalierten Daten niedriger Auflösung vorgezogen, die selbst einen beträchtlichen Grad an Informationsverlust darstellen. Ob eine verlustbehaftete Restkomprimierung verwendet werden soll und der verwendete Komprimierungsgrad hängen von der Anwendung ab.
  • Die Berechnung eines Restes bietet auch eine Gelegenheit, den Inhalt des Hochauflösungs-Bildes zu analysieren. Es gibt beträchtliche Vorteile, diese Analyse durchzuführen, sogar in dem System der , wo der Rest nicht gespeichert ist. Ist der Rest eines Blockes klein, dann gibt es in diesem Teil des Bildes einen kleinen Hochfrequenz-Inhalt. Kenntnis über die Verteilung des Hochfrequenz-Detailreichtums in einem Bild kann von der Puffer-Steuerung 320 verwendet werden, um die Pufferverwendung im Hinblick auf den Bandbreitenverbrauch zu optimieren.
  • Wo der Rest für einen Block ausreichend klein ist, so dass festgestellt werden kann, dass es keinen signifikanten visuellen Unterschied zwischen Pixeldaten hoher Auflösung und Pixeldaten niedriger Auflösung gibt, kann die Puffer-Steuerung entscheiden, Daten hoher Auflösung nicht aus dem Speicher zu laden, auch wenn vorhergesagt ist, dass diese Daten von einer Anwendung hoher Auflösung angefordert werden. Die Abwesenheit der Daten in dem Puffer hoher Auflösung wird dazu führen, dass Daten niedriger Auflösung stattdessen geliefert werden, und eine Einsparung in dem Bandbreitenverbrauch wird erreicht.
  • Ein ähnlicher Vorteil kann erzielt werden mit Information, die durch die Anwendungen geliefert werden. und zeigen beide Eingaben 550 und 620, die der Vorgriff-Steuerung Anwendungsdaten bereitstellen. Die Anwendungsdaten können Bewegungsvektor- und globale Bewegungsvektordaten, wie zuvor beschrieben, enthalten, aber können auch weitere Daten enthalten, beispielsweise über die Leistung des Algorithmus.
  • In dem Beispiel des Einzelbildratenkonvertierers kann der Bilderzeuger Bewegungsvektor- und Pixeldaten analysieren, wenn er das zusammengesetzte Bild erzeugt. Verschiedene Situationen können auftreten, wo der Bilderzeuger Anwendungsdaten liefert, die der Vorgriff-Steuerung ermöglichen, den Bandbreitenverbrauch zu optimieren.
  • Wie vorstehend beschrieben, erzeugt ein typischer Bilderzeuger sein zusammengesetztes Bild unter Verwendung von Pixeldaten, die von verschiedenen Eingangs-Einzelbildern geschätzt werden, nach Maßgabe von verschiedenen unterschiedlichen Bewegungsvektorfeldern. Die Aufgabe des Bilderzeugers ist, Unstimmigkeiten zwischen den verschiedenen Abschätzungen aufzulösen, um die bestmögliche zusammengesetzte Ausgabe zu erzeugen. Die Ausgabe wird typischerweise eine gewichtete Mischung zwischen einigen oder allen der Schätzungen an einer speziellen Position in dem Bild sein.
  • In einem Beispiel ist der Bilderzeuger in zwei Teile geteilt; eine Analysestufe und eine Zusammensetzungsstufe. Die Analysestufe läuft nun als eine Anwendung niedriger Auflösung und die Zusammensetzungsstufe als eine Anwendung hoher Auflösung.
  • Wo die Analysestufe feststellt, dass alle oder eine Mehrzahl der Schätzungen konsistent miteinander sind, ist eine Mischung unnötig, und jede der konsistenten Schätzungen ist ausreichend gut, um alleine in dem Ausgangsbild verwendet zu werden. In diesem Fall kann die Analysestufe Anwendungsdaten an die Vorgriff-Steuerung senden, dadurch anzeigend, dass nur eines der geschätzten Bilder von der Zusammensetzungsstufe benötigt wird. Die Daten hoher Auflösung, die dieser Schätzung entsprechen, werden in den Puffer hoher Auflösung geholt, aber Daten für andere Schätzungen nicht.
  • Wo der Vertrauensgrad in die Korrektheit des zusammengesetzten Bildes niedrig ist, werden verschiedene Arten von Fehlerverschleierungen verwendet. Eine spezielle Art der Fehlerverschleierung ist, einen Tiefpassfilter oder eine Unschärfe auf das Ausgabebild anzuwenden. Es ist anerkannt, dass es wenig Sinn macht, Daten hoher Auflösung zu lesen, wenn die Auflösung durch Filtern herabgesetzt werden soll. Folglich kann die Verwendung einer Fehlerverschleierung angezeigt sein durch Senden der Anwendungsdaten an die Puffer-Steuerung. Die Puffer-Steuerung wird das Lesen der Daten hoher Auflösung verhindern, was zu einer Reduzierung des Bandbreitenverbrauchs führt.
  • Vergleichbare Einsparungen können zu jeder Zeit gemacht werden, wenn festgestellt werden kann, dass nur eine Untermenge der projizierten Bilder von der Zusammensetzungsstufe benötigt wird.
  • Es wird klar, dass die zuvor beschriebenen Beispiele auch für andere Anwendungen als die Bildratenkonvertierung von Bedeutung sind und dass viele Algorithmen in der Lage sein werden, Anwendungsdaten zu liefern, die es der Vorgriff-Steuerung ermöglichen, den Speicherbandbreitenverbrauch in einer geeigneten Weise zu optimieren.
  • Die zuvor beschriebenen Beispiele beschreiben Situationen, wo die Puffer-Steuerung es vermeidet, gewisse Blöcke von Daten hoher Auflösung zu holen, basierend auf Informationen, die anzeigen, dass die Daten niedriger Auflösung ausreichend sein werden. Es sind andere Fälle möglich, wo Daten hoher Auflösung wünschenswert wären, aber aus bestimmten Gründen nicht verfügbar sind. Gründe können einen nicht ausreichenden Platz in dem Puffer hoher Auflösung, eine ungenaue Vorhersage durch die Anwendung oder die Vorgriff-Steuerung oder ungenügende verfügbare Speicherbandbreite zur Lieferung der Daten hoher Auflösung, einschließen.
  • Im letzteren Fall kann das System eine Begrenzung in Bezug auf die Menge an verbrauchter Speicherbandbreite auferlegen. In der Beschreibung der und der Erörterung von nicht angepasst Datenanfragen wurde gesagt, dass der Speicherbandbreitenverbrauch zwischen 1× und 4× dem Betrag der angeforderten Daten variieren kann, abhängig von der Abstimmung der Anforderungen und der Caching-Leistung des Puffers.
  • In einem Beispiel kann eine Raten-Steuerung auf den Vorgriff der Daten hoher Auflösung angewendet werden. Beispielsweise kann ein System, das typischerweise Speicherbandbreite von 2,2× der Menge an angeforderten Daten verbrauchen würde, eingeschränkt werden, nur 1,5× zu verbrauchen. Die Bandbreiteneinschränkung wird durch das Vermeiden des Lesens bestimmter Blöcke von Daten hoher Auflösung und stattdessen durch das Liefern von Daten niedriger Auflösung an die Anwendungen angewendet.
  • Ratensteuerungs-Algorithmen werden in der Videokodierung verwendet, wo es oftmals eine Anforderung ist, einen kodierten Bit-Strom mit einer gewünschten Datenrate zu erzeugen. Ein Videokodierer steuert die Datenrate durch Variierung des Quantisierungsgrades, der für jeden kodierten Block verwendet wird. In dem System der , wo Daten hoher Auflösung aus dem Speicher gelesen werden, kann die Raten-Steuerung entweder die Daten für jeden Block lesen oder nicht lesen. In dem System der , vorausgesetzt, dass Restdaten geeignet kodiert sind, kann die Raten-Steuerung wählen, alle, einige oder keine der Reste für jeden Block zu lesen. Dies kann eine ausgefeiltere Raten-Steuerung ermöglichen, als dies in dem System der möglich ist.
  • Ein typischer Raten-Steuerungs-Algorithmus wird die Zielrate längerfristig erreichen, während oftmals kurzzeitige Fluktuationen über der Zielrate erlaubt werden. In einem Einzelbild basiertem System, wie in der Videoverarbeitung, ist es wünschenswert, die verfügbare Bandbreite geeignet über alle Einzelbilder zu verteilen. Die Raten-Steuerung sollte keine Bandbreite durch Liefern von Daten hoher Auflösung an den oberen Teil eines Einzelbildes verschwenden, falls das bedeutet, dass der untere Teil des Einzelbildes von Daten ausgehungert wird. Andererseits sollte Bandbreite nicht übermäßig in Erwartung eines Hochfrequenz-Detailreichtums reserviert werden, der nicht existiert. Die Analyse der Verteilung des Detailreichtums in einem Einzelbild, wie es im Zusammenhang mit der Berechnung eines Restes beschrieben wurde, stellt Daten bereit, die eine Raten-Steuerung verwenden kann, um Bandbreite geeignet zuzuordnen. Wo Anwendungsdaten auch der Vorgriff-Steuerung ermöglichen, es zu vermeiden, Daten hoher Auflösung für einige Teile des Bildes zu lesen, können die Anwendungsdaten auch an die Raten-Steuerung geliefert werden und in die Raten-Steuerungsberechnungen eingebaut werden.
  • wurde bereits beschrieben, und die Wirkungen der Abgleichungen der Datenanforderungen an Bandbreite wurden erörtert. Ein anderes Problem, das auftritt, wenn Daten hoher Auflösung nicht von dem Puffer hoher Auflösung verfügbar sind, ist die Möglichkeit einer sichtbaren Diskontinuität in dem Ausgabebild, wo ein Übergang zwischen Daten hoher Auflösung und Daten niedriger Auflösung auftritt.
  • zeigt eine Situation, in der Daten hoher Auflösung nicht vollständig verfügbar sind. Schattiert gezeigte Speicherblöcke, wie beispielsweise 800, sind Blöcke, für die Daten hoher Auflösung verfügbar sind, und Blöcke ohne Schattierung, wie beispielsweise 805, sind Blöcke, für die Daten hoher Auflösung nicht verfügbar sind. Eine Anforderung für Pixel-Datenblock 810 kann vollständig aus dem Puffer hoher Auflösung erfüllt werden. Der Pixel-Datenblock 815 jedoch benötigt Daten aus dem Speicherblock 805, der nicht in dem Puffer hoher Auflösung verfügbar ist. Zumindest der Bereich 820 der Anforderung muss demzufolge unter Verwendung von Daten niedriger Auflösung erfüllt werden.
  • zeigt eine Anforderung für einen weiteren Pixel-Datenblock 850, der einige Zeit nach der Anforderung für den Block 810 auftritt. Daten hoher Auflösung für den Speicherblock 800, vorher verfügbar in dem Puffer, sind nicht mehr länger verfügbar, und so ist der Bereich 855 der Anforderung unter Verwendung von Daten niedriger Auflösung erfüllt.
  • Wenn ein Block wie 815 oder 825 angefordert wird, hat die Lesesteuerung die Wahl, nur Pixeldaten niedriger Auflösung für den angeforderten Block bereitzustellen oder diejenigen Pixel hoher Auflösung, die verfügbar sind, bereitzustellen und die verbleibenden aus dem Puffer niedriger Auflösung bereitzustellen. Die Entscheidung kann von dem Anteil von verfügbaren Pixeln hoher Auflösung oder ihrer Verteilung innerhalb des Blockes abhängen. Im Fall, dass eine Mischung aus Pixeln hoher Auflösung und niedriger Auflösung geliefert wird, muss die Lese-Steuereinheit 500 der auf die teilweise Verfügbarkeit der Daten in dem Puffer hoher Auflösung und dem Steuerungsmultiplexer 525 auf einer per-Pixel-Basis antworten. Die in gezeigten ähnlichen Einheiten verhalten sich ähnlich.
  • Der Ansatz der Auflösungs-Diskontinuität ist stark von der Anwendung abhängig. Wenn Daten angefordert werden, ist es immer bekannt, welche Pixel aus dem Puffer hoher Auflösung und welche aus dem Puffer niedriger Auflösung bereitgestellt werden können. Eine Anwendung kann dann Daten, wie beispielsweise Restgrößen oder andere Informationen, die während der Bildanalyse erhalten wurden, in Betracht ziehen, um die wahrscheinliche Sichtbarkeit einer Diskontinuität zu bestimmen. Eine Option ist es, eine Diskontinuität durch die Anwendung einer glättenden Nachverarbeitung zu verschleiern. Dieser Ansatz kann als ähnlich zu den Deblocking-Ansätzen gesehen werden, die bereits in Videodecodern wie beispielsweise H.264 bekannt sind. Alternativ wird die Lieferung nur von Daten niedriger Auflösung Diskontinuitäten innerhalb eines Blockes vermeiden, aber nicht notwendigerweise an seinen Kanten. In sind Diskontinuitäten an den internen Kanten 825 und 830 zu der Zeit bekannt, an der der Pixel-Datenblock 815 an die Anwendung geliefert wird. In können Diskontinuitäten an den externen Kanten 860 und 865 nur bekannt werden, wenn Pixeldaten zu einem Ausgabebild zusammengebaut werden, beispielsweise in der Bilderstellungs-Anwendung.
  • Ein alternativer Ansatz wendet eine Filterung oder Vermischung an, wenn die Daten bereitgestellt werden. zeigt eine geeignete Abwandlung des Systems der , obwohl diese auch in gleicher Weise auf das System der angewandt werden könnte. Eine Vermischungseinheit 910 ersetzt den Multiplexer und, mit einer geeigneten Steuerung 915 von der Lese-Steuereinheit 900, stellt einen weichen Übergang zwischen Daten hoher Auflösung und Daten niedriger Auflösung bereit. Die Steuerungsdaten für die Mischung, müsen nun anstatt einen per-Pixel-Schalter bereitzustellen, einen Teilwert bereitstellen, der den Anteil von Daten niedriger Auflösung, der in jeder Position zu verwenden ist, angibt. Da Daten niedriger Auflösung immer verfügbar sind und Daten hoher Auflösung es nicht sein können, liegt der vermischte Bereich immer auf der Hochauflösungs-Seite der Linie der Diskontinuität. Die detaillierte Steuerung der Mischeinheit hängt von der Anwendung und den Vorgriff-Algorithmen ab, die in jedem speziellen Fall verwendet werden, und insbesondere von dem Grad, wie das Muster der Lese-Anforderungen und die Verfügbarkeit von Daten in dem Puffer hoher Auflösung vorab bekannt sein können.
  • Videobilder werden oft unter Verwendung von Luminanz- und Chrominanz-Daten dargestellt. Die Luminanz-Daten enthalten ein Schwarz/Weiß-Bild hoher Auflösung, und die Chrominanz-Daten enthalten die zusätzlichen Daten, die benötigt werden, um ein Farbbild auszubilden. Chrominanz-Daten sind gewöhnlicherweise unterabgetastet (sub-sampled), so dass sie in einer niedrigeren Auflösung als die entsprechenden Luminanz-Daten vorliegen. Es ist bekannt, dass die Wahrnehmung des Detailgrads und Schärfe in einem Bild hauptsächlich von den Luminanz-Daten herrührt und dass ein beträchtlicher Wert an Informationen aus den Chrominanz-Daten entfernt werden kann, bevor eine Bildverschlechterung einfach wahrgenommen wird.
  • In einem anderen Beispiel behandelt die Puffer-Steuerung die Luminanz- und Chrominanz-Daten getrennt. Wenn eine Entscheidung getroffen wird, ob Daten in den Puffer hoher Auflösung geladen werden, kann die Vorgriff-Steuerung eine andere Entscheidung für Luminanz-Daten treffen, als sie diese für die entsprechenden Chrominanz-Daten trifft. Diese Entscheidung kann beispielsweise von der Menge des Hochfrequenz-Detailreichtums in den Luminanz- und Chrominanz-Daten, von Daten von einer Anwendung oder von den Anforderungen einer Ratensteuerung abhängen. Anforderungen von Bilddaten werden behandelt, ob entsprechend entweder Luminanz- oder Chrominanz-Daten in dem Puffer hoher Auflösung verfügbar sind, wobei jede Komponente, die nicht verfügbar ist, aus dem Puffer niedriger Auflösung über den Hochskalierer geliefert wird.
  • Ein System kann so eingerichtet sein, dass die meisten Chrominanz-Daten von den Puffer niedriger Auflösung geliefert werden, wodurch Bandbreite gespart und mehr Patz für Puffer hoher Auflösung für Luminanz-Daten bereitgestellt wird. Alternativ kann ein System alle Chrominanz-Daten aus dem Puffer niedriger Auflösung liefern.
  • In den obigen Beispielen wurden Systeme beschrieben, in denen Bilddaten in zwei Auflösungen existieren. Es ist klar, dass dieselben Techniken auf eine beliebige Anzahl von Auflösungen erweitert werden können. Beispielsweise kann ein System einen Bildpuffer mittlerer Auflösung hinzufügen. zeigt eine Abweichung des Systems der , bei dem die Puffer-Steuerungseinheit 1000 sowohl einen Puffer hoher Auflösung 1015 als auch einen Puffer mittlerer Auflösung 1010 verwaltet. Der Skalierer 1005 führt sowohl die Herunterskalierung von der hohen Auflösung in die mittlerer Auflösung und die Hochskalierung von der mittleren Auflösung in die hohe Auflösung durch. Das System kann wählen, Bilddaten in einer mittleren Auflösung zu speichern, wo eine Analyse zeigt, dass der Bildinhalt in nicht annehmbarer Weise verschlechtert werden würde, wenn Daten niedriger Auflösung verwendet würden, aber wo die Verwendung von Daten hoher Auflösung wenig zusätzliche Vorteile bringen würde. Der Puffer 1010 mittlerer Auflösung könnte mit dem Puffer hoher Auflösung 1015 in einen einzigen Speicher 1020 integriert werden, bei dem ein Anteil des Speichers, der für Daten jeder Auflösung bereitgestellt wird, variiert. Die Speicherung von Daten mittlerer Auflösung anstatt von Daten hoher Auflösung erhöht die effektive Kapazität des Speichers 1020 und erhöht die Puffer-Leistungsfähigkeit des Systems.

Claims (54)

  1. Ein Verfahren zur Bereitstellung von Bilddaten an ein Bildverarbeitungsmodul, umfassend die Schritte: Lesen von Bilddaten aus einem Speicher in einen Herunterskalierer, der die Bilddaten auf eine erste Auflösung herunterskaliert; Vorhersagen eines Bereiches von Bilddaten, den das Bildverarbeitungsmodul anfordern wird; Speichern von Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, aus dem Speicher in einen zweiten Puffer, wobei die Bilddaten in dem zweiten Puffer eine höhere Auflösung als die erste Auflösung aufweisen; Empfangen einer Anforderung für Bilddaten von dem Bildverarbeitungsmodul; dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: Speichern der Bilddaten erster Auflösung in einem ersten Puffer; Bestimmen, dass Bilddaten, die zumindest einem Teil der angeforderten Bilddaten entsprechen, nicht in dem zweiten Puffer sind; Hochskalieren von Bilddaten von dem ersten Puffer, um einen Ersatz für den zumindest einen Teil der angeforderten Bilddaten mit einer Auflösung bereitzustellen, die zumindest die höhere Auflösung erreicht; und Bereitstellen der hochskalierten Bilddaten an das Bildverarbeitungsmodul.
  2. Ein Verfahren nach Anspruch 1, wobei der Schritt des Speicherns von Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, aus dem Speicher in den zweiten Puffer umfasst: Lesen von Bilddaten aus dem Speicher in einen Herunterskalierer, der die Bilddaten auf eine zweite Auflösung herunterskaliert; und Speichern der Bilddaten zweiter Auflösung in dem zweiten Puffer.
  3. Ein Verfahren nach Anspruch 1 oder 2, ferner umfassend: Bestimmen, dass Bilddaten, die einem Teil der angeforderten Bilddaten entsprechen, in dem zweiten Puffer sind; und Bereitstellen von Daten aus dem zweiten Puffer an das Bildverarbeitungsmodul in einer Auflösung, die zumindest gleich der höheren Auflösung ist.
  4. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei der erste Puffer Bilddaten speichert, entsprechend der vollen Breite eines Einzelbildes.
  5. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei Bilddaten in jedem der ersten und der zweiten Puffer in rechteckigen Blöcken angeordnet sind.
  6. Ein Verfahren nach Anspruch 5, wobei die Größe der Blöcke in dem ersten Puffer mit der Größe der Blöcke in dem zweiten Puffer durch einen Skalierungsfaktor im Zusammenhang steht, entsprechend dem Unterschied zwischen der ersten Auflösung und der höheren Auflösung.
  7. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei der zweite Puffer unter Verwendung eines inhaltsadressierbaren Speichers implementiert ist.
  8. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfragen wird, unter Verwendung von Daten, die von dem Bildverarbeitungsmodul oder einem weiteren Bildverarbeitungsmodul geliefert werden, vorhergesagt wird.
  9. Ein Verfahren nach Anspruch 8, wobei der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfragen wird, unter Verwendung von Bewegungsvektoren, die von dem Bildverarbeitungsmodul oder dem weiteren Bildverarbeitungsmodul geliefert werden, vorhergesagt wird.
  10. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei das Speichern der Daten erster Auflösung in dem ersten Puffer umfasst: Schreiben der Bilddaten erster Auflösung in den Speicher; und Lesen der Bilddaten erster Auflösung von dem Speicher in den ersten Puffer.
  11. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei der Herunterskalierer Rest-Bilddaten erzeugt, durch Bestimmung einer Differenz zwischen: Bilddaten in der höheren Auflösung und Bilddaten, die von der ersten Auflösung zu der höheren Auflösung hochskaliert wurden.
  12. Ein Verfahren nach Anspruch 11, wobei die Rest-Bilddaten unter Verwendung von verlustbehafteter oder nicht-verlustbehafteter Komprimierung komprimiert sind.
  13. Ein Verfahren nach Anspruch 11 oder 12, wobei die Bilddaten in dem zweiten Puffer, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, Rest-Bilddaten umfassen.
  14. Ein Verfahren nach Anspruch 13, wenn abhängig von Anspruch 3, wobei das Bereitstellen von Bilddaten aus dem zweiten Puffer an das Bildverarbeitungsmodul umfasst: Hochskalieren von Bilddaten aus dem ersten Puffer, um zumindest die höhere Auflösung zu erreichen; Kombinieren von Rest-Bilddaten aus dem zweiten Puffer mit den hochskalierten Bilddaten; und Bereitstellen des Ergebnisses an das Bildverarbeitungsmodul.
  15. Ein Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend das Bestimmen des Betrages von Hochfrequenz-Information in einem Teil des Bildes.
  16. Ein Verfahren nach Anspruch 15, wobei Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden, wenn bestimmt wird, dass der Betrag von Hochfrequenz-Information in diesem Teil des Bildes unter einem Schwellwert ist.
  17. Verfahren nach einem der vorhergehenden Ansprüche, wobei Bilddaten, die einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden, wenn angezeigt wird, dass dieser Teil des vorhergesagten Bereichs von Bilddaten nicht von dem Bildverarbeitungsmodul verwendet werden wird.
  18. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei bestimmt wird, wie viele Bilddaten aus dem Speicher in den zweiten Puffer gespeichert werden, im Hinblick auf eine Anforderung einer Verbrauchsrate der Speicherbandbreite.
  19. Ein Verfahren nach Anspruch 18, wenn abhängig von Anspruch 16, wobei der Schwellwert im Hinblick auf die Menge an Hochfrequenz-Informationen in unterschiedlichen Teilen des Bildes und der Anforderung der Verbrauchsrate der Speicherbandbreite angepasst wird.
  20. Ein Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Bereitstellen von Bilddaten erster Auflösung aus dem ersten Puffer an das oder ein weiteres Bildverarbeitungsmodul in Antwort auf eine Anforderung des oder des weiteren Bildverarbeitungsmoduls für Bilddaten in der ersten Auflösung.
  21. Ein Verfahren nach Anspruch 20, wobei das oder das weitere Bildverarbeitungsmodul einen Bewegungsabschätzer enthält, der die Bilddaten in der ersten Auflösung verwendet.
  22. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bildverarbeitungsmodul, dem Bilddaten in zumindest der höheren Auflösung bereitgestellt werden, ein Bild basierend auf dem Ergebnis eines Bewegungsabschätzers ausgibt.
  23. Ein Verfahren nach Anspruch 22, wobei das Bildverarbeitungsmodul einen Bildersteller eines Bildraten-Konvertierers enthält.
  24. Ein Verfahren nach Anspruch 23, wenn abhängig von Anspruch 20, wobei der Bildersteller des Einzelbildraten-Konvertierers ferner einen Analysator umfasst, dem Bilddaten in der ersten Auflösung von dem ersten Puffer bereitgestellt werden.
  25. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei ein Ort einer möglichen Diskontinuität zwischen den hochskalierten Bilddaten aus dem ersten Puffer und Bilddaten, die aus dem zweiten Puffer bereitgestellt werden, identifiziert wird.
  26. Ein Verfahren nach Anspruch 25, wobei eine Mischeinheit Bilddaten aus dem zweiten Puffer mit hochskalierten Bilddaten aus dem ersten Puffer in der Nähe der Diskontinuität vermischt, um die Sichtbarkeit der Diskontinuität zu reduzieren.
  27. Ein Verfahren nach einem der vorhergehenden Ansprüche, wobei zumindest einige Chrominanz-Bilddaten, die dem zumindest einen Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden.
  28. Ein System zur Bereitstellung von Bilddaten an ein Bildverarbeitungsmodul, umfassend: einen Herunterskalierer, der eingerichtet ist, Bilddaten aus einem Speicher in eine erste Auflösung herunterzuskalieren; einen zweiten Puffer, der angeordnet ist, Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, zu speichern, wobei die Auflösung der Bilddaten, die in dem zweiten Puffer gespeichert sind, höher ist als die erste Auflösung; und einen Prozessor, der eingerichtet ist: Bilddaten aus dem Speicher in den Herunterskalierer zu lesen; einen Bereich der Bilddaten, den das Bildverarbeitungsmodul anfordern wird, vorherzusagen; Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, aus dem Speicher in den zweiten Puffer zu speichern; eine Anfrage für Bilddaten von dem Bildverarbeitungsmodul zu empfangen; dadurch gekennzeichnet, dass das System ferner einen ersten Puffer umfasst, der angeordnet ist, die Bilddaten erster Auflösung zu speichern, und dass der Prozessor ferner eingerichtet ist: die Bilddaten erster Auflösung in dem ersten Puffer zu speichern; zu bestimmen, dass Bilddaten, die zumindest einem Teil des angeforderten Bereichs von Bilddaten entsprechen, nicht in dem zweiten Puffer sind; Bilddaten aus dem ersten Speicher unter Verwendung eines Hochskalierers hochzuskalieren, um einen Ersatz für den zumindest einen Teil des angeforderten Bereichs von Bilddaten bereitzustellen, in einer Auflösung, die zumindest die höhere Auflösung erreicht; und die hochskalierten Bilddaten dem Bildverarbeitungsmodul bereitzustellen.
  29. Ein System nach Anspruch 28, wobei der Prozessor eingerichtet ist, Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs entsprechen, in dem zweiten Puffer zu speichern, durch: Lesen von Bilddaten aus dem Speicher in den Herunterskalierer, der die Bilddaten auf eine zweite Auflösung herunterskaliert; und Speichern der Bilddaten zweiter Auflösung in dem zweiten Puffer.
  30. Ein System nach Anspruch 28 oder 29, wobei der Prozessor ferner ausgebildet ist: zu bestimmen, dass Bilddaten, die einem Teil der angeforderten Bilddaten entsprechen, in dem zweiten Puffer sind; und Bilddaten aus dem zweiten Puffer dem Bildverarbeitungsmodul in einer Auflösung bereitzustellen, die zumindest gleich der höheren Auflösung ist.
  31. Ein System nach einem der Ansprüche 28 bis 30, wobei der erste Puffer Bilddaten, entsprechend der vollen Breite eines Einzelbildes, speichert.
  32. Ein System nach einem der Ansprüche 28 bis 31, wobei die Bilddaten in jedem der ersten und der zweiten Puffer in rechteckigen Blöcken angeordnet sind.
  33. Ein System nach Anspruch 32, wobei die Größe der Blöcke in dem ersten Puffer mit der Größe der Blöcke in dem zweiten Puffer durch einen Skalierungsfaktor im Zusammenhang steht, entsprechend dem Unterschied zwischen der ersten Auflösung und der höheren Auflösung.
  34. Ein System nach einem der Ansprüche 28 bis 33, wobei der zweite Puffer unter Verwendung eines inhaltsadressierbaren Speichers implementiert ist.
  35. Ein System nach einem der Ansprüche 28 bis 34, wobei der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfordern wird, unter Verwendung von Daten, die von dem Bildverarbeitungsmodul oder einem weiteren Bildverarbeitungsmodul geliefert werden, vorhergesagt wird.
  36. Ein System nach Anspruch 35, wobei der Bereich von Bilddaten, den das Bildverarbeitungsmodul anfragen wird, unter Verwendung von Bewegungsvektoren, die durch das Bildverarbeitungsmodul oder das weitere Bildverarbeitungsmodul geliefert werden, vorhergesagt wird.
  37. Ein System nach einem der Ansprüche 28 bis 36, wobei der Prozessor ausgebildet ist, die Bilddaten erster Auflösung in dem ersten Puffer zu speichern, durch: Schreiben der Bilddaten erster Auflösung in den Speicher; und Lesen der Bilddaten erster Auflösung von dem Speicher in den ersten Puffer.
  38. Ein System nach einem der Ansprüche 28 bis 37, wobei der Herunterskalierer Rest-Bilddaten erzeugt, durch Bestimmen einer Differenz zwischen: Bilddaten in der höheren Auflösung und Bilddaten, die von der ersten Auflösung in die höhere Auflösung hochskaliert wurden.
  39. Ein System nach Anspruch 38, wobei die Rest-Bilddaten unter Verwendung von verlustbehafteter oder nicht-verlustbehafteter Komprimierung komprimiert werden.
  40. Ein System nach Anspruch 38 oder 39, wobei die in dem zweiten Puffer gespeicherten Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, Rest-Bilddaten umfassen.
  41. Ein System nach Anspruch 40, wenn abhängig von Anspruch 30, wobei der Prozessor eingerichtet ist, Bilddaten von dem zweiten Puffer dem Bildverarbeitungsmodul bereitzustellen, durch: Hochskalieren von Bilddaten aus dem ersten Puffer unter Verwendung eines Hochskalierers, um zumindest die höhere Auflösung zu erreichen; Kombinieren von Restbilddaten aus dem zweiten Puffer mit Bilddaten aus dem ersten Puffer, die hochskaliert wurden, um zumindest die höhere Auflösung zu erreichen; und Bereitstellen des Ergebnisses an das Bildverarbeitungsmodul.
  42. Ein System nach einem der Ansprüche 28 bis 41, wobei der Prozessor ferner ausgebildet ist, die Menge an Hochfrequenz-Information in einem Teil des Bildes zu bestimmen.
  43. Ein System nach Anspruch 42, wobei Bilddaten, die einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden, wenn bestimmt wird, dass die Menge an Hochfrequenz-Informationen in diesem Teil des Bildes unterhalb eines Schwellwerts ist.
  44. Ein System nach einem der Ansprüche 28 bis 43, wobei Bilddaten, die zumindest einem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in den zweiten Puffer gespeichert werden, wenn angezeigt ist, dass der Teil des vorhergesagten Bereichs von Bilddaten nicht von dem Bildverarbeitungsmodul verwendet wird.
  45. Ein System nach einem der Ansprüche 28 bis 44, wobei bestimmt wird, wie viele Bilddaten aus dem Speicher in den zweiten Puffer gespeichert werden, im Hinblick auf eine Anforderung an die Verbrauchsrate der Speicherbandbreite.
  46. Ein System nach Anspruch 45, wenn abhängig von Anspruch 43, wobei der Schwellwert im Hinblick auf die Menge an Hochfrequenz-Informationen in unterschiedlichen Teilen des Bildes und der Anforderung an die Verbrauchsrate der Speicherbandbreite angepasst wird.
  47. Ein System nach einem der Ansprüche 28 bis 46, wobei der Prozessor ferner ausgebildet ist, Bilddaten erster Auflösung aus dem ersten Puffer an das oder ein weiteres Bildverarbeitungsmodul bereitzustellen in Antwort auf eine Anforderung von dem oder dem weiteren Bildverarbeitungsmodul für Bilddaten in der ersten Auflösung.
  48. Ein System nach Anspruch 47, wobei das oder das weitere Bildverarbeitungsmodul, das Bilddaten in der ersten Auflösung anfordert, einen Bewegungsabschätzer umfasst, der die Bilddaten der ersten Auflösung verwendet.
  49. Ein System nach einem der Ansprüche 28 bis 48, wobei das Bildverarbeitungsmodul, das Bilddaten in zumindest der höheren Auflösung anfordert, ein Bild basierend auf den Ergebnissen des Bewegungsabschätzers ausgibt.
  50. Ein System nach Anspruch 49, wobei das Bildverarbeitungsmodul einen Bildersteller eines Einzelbildraten-Konvertierers enthält.
  51. Ein System nach Anspruch 50, wenn abhängig von Anspruch 47, wobei der Bildersteller des Einzelbildraten-Konvertierers ferner einen Analysator umfasst, dem Bilddaten in der ersten Auflösung von dem ersten Puffer bereitgestellt werden.
  52. Ein System nach einem der Ansprüche 28 bis 51, wobei der Prozessor ferner ausgebildet ist, einen Ort einer möglichen Diskontinuität zwischen den hochskalierten Bilddaten aus dem ersten Puffer und den Bilddaten, die aus dem zweiten Puffer bereitgestellt werden, zu identifizieren.
  53. Ein System nach Anspruch 52, wobei eine Mischeinheit Bilddaten, die von dem zweiten Puffer bereitgestellt werden, mit hochskalierten Bilddaten aus dem ersten Puffer in der Nähe der Diskontinuität kombiniert, um die Sichtbarkeit der Diskontinuität zu reduzieren.
  54. Ein System nach einem der Ansprüche 28 bis 53, wobei zumindest einige Chrominanz-Bilddaten, die zumindest dem Teil des vorhergesagten Bereichs von Bilddaten entsprechen, nicht in dem zweiten Puffer gespeichert werden.
DE102013013636.9A 2012-09-05 2013-08-14 Pixel Pufferung Active DE102013013636B9 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1215870.5 2012-09-05
GB1215870.5A GB2496015B (en) 2012-09-05 2012-09-05 Pixel buffering

Publications (3)

Publication Number Publication Date
DE102013013636A1 DE102013013636A1 (de) 2014-03-13
DE102013013636B4 DE102013013636B4 (de) 2015-07-09
DE102013013636B9 true DE102013013636B9 (de) 2015-09-03

Family

ID=47136993

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013013636.9A Active DE102013013636B9 (de) 2012-09-05 2013-08-14 Pixel Pufferung

Country Status (6)

Country Link
US (3) US10109032B2 (de)
JP (1) JP5717815B2 (de)
CN (1) CN103686044B (de)
DE (1) DE102013013636B9 (de)
GB (1) GB2496015B (de)
TW (1) TWI596570B (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582160B2 (en) 2013-11-14 2017-02-28 Apple Inc. Semi-automatic organic layout for media streams
US9489104B2 (en) 2013-11-14 2016-11-08 Apple Inc. Viewable frame identification
US20150254806A1 (en) * 2014-03-07 2015-09-10 Apple Inc. Efficient Progressive Loading Of Media Items
JP2015195572A (ja) * 2014-03-28 2015-11-05 パナソニックIpマネジメント株式会社 コンテンツ処理装置およびコンテンツ処理方法
US10382782B2 (en) * 2014-06-27 2019-08-13 Samsung Electronics Co., Ltd. Image frame interpolation apparatus, display apparatus and control method thereof
WO2016039167A1 (ja) * 2014-09-12 2016-03-17 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
CN109074630A (zh) * 2016-05-20 2018-12-21 上海安科迪智能科技有限公司 具有分布式存储器的阵列照相机成像系统
US10319114B2 (en) * 2017-07-13 2019-06-11 Google Llc Foveated compression of display streams
GB2570118B (en) * 2018-01-10 2020-09-23 Advanced Risc Mach Ltd Storage management methods and systems
KR102571776B1 (ko) * 2019-02-25 2023-08-29 구글 엘엘씨 가변 엔드-포인트 사용자 인터페이스 렌더링
CN111831239B (zh) * 2019-04-15 2023-07-11 深信服科技股份有限公司 一种虚拟桌面残影消除方法、装置、电子设备及存储介质
US10972629B2 (en) * 2019-09-11 2021-04-06 Toshiba Tec Kabushiki Kaisha Image processing apparatus configured to combine image information such that the combined first image information and second image information have the first resolution
CN112565585B (zh) * 2019-09-26 2021-12-24 珠海格力电器股份有限公司 图像显示电路、图像显示方法及图像显示设备
US11330296B2 (en) 2020-09-14 2022-05-10 Apple Inc. Systems and methods for encoding image data
CN114675418A (zh) * 2021-05-08 2022-06-28 胡大文 超轻巧的穿戴显示装置和用于显示装置的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784114A (en) * 1992-07-03 1998-07-21 Snell & Wilcox Ltd Motion compensated video processing
US5929919A (en) * 1994-04-05 1999-07-27 U.S. Philips Corporation Motion-compensated field rate conversion
US20100316127A1 (en) * 2009-06-12 2010-12-16 Masayuki Yokoyama Image processing device and image processing method
US8014618B2 (en) * 2007-09-18 2011-09-06 Korea Advanced Institute Of Science And Technology High-speed motion compensation apparatus and method

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3014618A (en) 1960-01-06 1961-12-26 Andrew G Kireta Cartridge dispenser
GB2235856B (en) * 1989-09-01 1993-11-17 Quantel Ltd Improvements in or relating to electronic graphic systems
WO1993018618A1 (en) * 1992-03-03 1993-09-16 Kabushiki Kaisha Toshiba Time-varying image encoder
JP3773585B2 (ja) * 1996-03-29 2006-05-10 富士通株式会社 画像符号化装置
DE19637463A1 (de) * 1996-09-13 1998-03-26 Gsf Forschungszentrum Umwelt Verfahren zur Anzeige von geometrischen Objektoberflächen
US5861920A (en) * 1996-11-08 1999-01-19 Hughes Electronics Corporation Hierarchical low latency video compression
US6618443B1 (en) * 1997-03-12 2003-09-09 Matsushita Electric Industrial Co., Ltd. Upsampling filter for a down conversion system
US20020196853A1 (en) * 1997-06-04 2002-12-26 Jie Liang Reduced resolution video decompression
JP3844844B2 (ja) * 1997-06-06 2006-11-15 富士通株式会社 動画像符号化装置及び動画像符号化方法
KR100412501B1 (ko) * 2001-11-30 2003-12-31 삼성전자주식회사 움직임 보상을 위한 화소값 선택 장치 및 방법
US6812929B2 (en) * 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
JP3882651B2 (ja) 2002-03-20 2007-02-21 富士ゼロックス株式会社 画像処理装置およびプログラム
US7075535B2 (en) * 2003-03-05 2006-07-11 Sand Codex System and method for exact rendering in a zooming user interface
JP2005286472A (ja) * 2004-03-29 2005-10-13 Sanyo Electric Co Ltd 画像処理装置および画像処理方法
US20060008154A1 (en) * 2004-07-01 2006-01-12 Belle Ronny V Video compression and decompression to virtually quadruple image resolution
US7965773B1 (en) * 2005-06-30 2011-06-21 Advanced Micro Devices, Inc. Macroblock cache
US7920628B2 (en) * 2005-07-29 2011-04-05 Broadcom Corporation Noise filter for video compression
JP4594201B2 (ja) * 2005-09-28 2010-12-08 パナソニック株式会社 画像符号化方法、画像符号化装置、プログラムおよび集積回路
US8325798B1 (en) * 2005-12-15 2012-12-04 Maxim Integrated Products, Inc. Adaptive motion estimation cache organization
US20070230564A1 (en) * 2006-03-29 2007-10-04 Qualcomm Incorporated Video processing with scalability
US7855752B2 (en) * 2006-07-31 2010-12-21 Hewlett-Packard Development Company, L.P. Method and system for producing seamless composite images having non-uniform resolution from a multi-imager system
WO2008086828A1 (en) * 2007-01-18 2008-07-24 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Quality scalable video data stream
TW200838321A (en) * 2007-03-02 2008-09-16 X8 Technology Inc Motion estimation method and system with dual search windows for high resolution video coding
CN100562919C (zh) 2007-03-14 2009-11-25 华为技术有限公司 对视频信号进行垂直分辨率调整的装置和方法
US20080285652A1 (en) * 2007-05-14 2008-11-20 Horizon Semiconductors Ltd. Apparatus and methods for optimization of image and motion picture memory access
US7705889B2 (en) * 2007-06-15 2010-04-27 Sony Corporation Shutter time compensation
EP2206342A2 (de) * 2007-09-10 2010-07-14 Nxp B.V. Verfahren und vorrichtung zur bewegungsschätzung und bewegungskompensation in videobilddaten
US8565310B2 (en) * 2008-01-08 2013-10-22 Broadcom Corporation Hybrid memory compression scheme for decoder bandwidth reduction
JP2010171480A (ja) 2009-01-20 2010-08-05 Panasonic Corp 画像復号化装置および画像符号化装置、並びに画像復号化方法および画像符号化方法
US20100215104A1 (en) * 2009-02-26 2010-08-26 Akira Osamoto Method and System for Motion Estimation
GB2471323B (en) * 2009-06-25 2014-10-22 Advanced Risc Mach Ltd Motion vector estimator
US8508659B2 (en) * 2009-08-26 2013-08-13 Nxp B.V. System and method for frame rate conversion using multi-resolution temporal interpolation
US8971400B2 (en) * 2010-04-14 2015-03-03 Mediatek Inc. Method for performing hybrid multihypothesis prediction during video coding of a coding unit, and associated apparatus
DK2947877T3 (en) * 2010-04-23 2017-01-23 M&K Holdings Inc Apparatus for encoding an image
US9602819B2 (en) * 2011-01-31 2017-03-21 Apple Inc. Display quality in a variable resolution video coder/decoder system
US8805170B2 (en) * 2012-03-07 2014-08-12 Broadcom Corporation System and method for memory storage of video data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784114A (en) * 1992-07-03 1998-07-21 Snell & Wilcox Ltd Motion compensated video processing
US5929919A (en) * 1994-04-05 1999-07-27 U.S. Philips Corporation Motion-compensated field rate conversion
US8014618B2 (en) * 2007-09-18 2011-09-06 Korea Advanced Institute Of Science And Technology High-speed motion compensation apparatus and method
US20100316127A1 (en) * 2009-06-12 2010-12-16 Masayuki Yokoyama Image processing device and image processing method

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BERIC, Aleksandar, et al. Memory-centric video processing. Circuits and Systems for Video Technology, IEEE Transactions on, 2008, Vol 18(4): 439-452. doi: 10.1109/TCSVT.2008.918775 *
HUANG, Ai-Mei; NGUYEN, Truong. Correlation-based motion vector processing with adaptive interpolation scheme for motion-compensated frame interpolation. Image Processing, IEEE Transactions on, 2009, Vol. 18(4): 740-752. doi: 10.1109/TIP.2008.2010206 *
LUESSI, Martin; KATSAGGELOS, Aggelos K. Efficient motion compensated frame rate upconversion using multiple interpolations and median filtering. In: Image Processing (ICIP), 2009 16th IEEE International Conference on. IEEE, 2009. S. 373-376. doi: 10.1109/ICIP.2009.5414501 *
OJO, Olukayode Anthony; DE HAAN, Gerard. Robust motion-compensated video upconversion. Consumer Electronics, IEEE Transactions on, 1997, Vol. 43 (4): 1045-1056. doi: 10.1109/30.642370 *

Also Published As

Publication number Publication date
US20140063031A1 (en) 2014-03-06
DE102013013636A1 (de) 2014-03-13
CN103686044B (zh) 2015-08-12
US11587199B2 (en) 2023-02-21
DE102013013636B4 (de) 2015-07-09
CN103686044A (zh) 2014-03-26
US10109032B2 (en) 2018-10-23
GB2496015B (en) 2013-09-11
GB201215870D0 (en) 2012-10-24
JP2014053896A (ja) 2014-03-20
TWI596570B (zh) 2017-08-21
GB2496015A (en) 2013-05-01
TW201417038A (zh) 2014-05-01
JP5717815B2 (ja) 2015-05-13
US20190026857A1 (en) 2019-01-24
US20230196503A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
DE102013013636B9 (de) Pixel Pufferung
DE69920429T2 (de) Bewegungsschätzungssystem und -verfahren
DE69830802T2 (de) Zuweisung von rechenleistung in einem informationsstrom-dekoder
DE69735402T2 (de) System und Methode zur Bewegungskompensation mit Hilfe eines Schrägziegelspeicherformats für verbesserte Effizienz
DE69738264T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
DE69829345T2 (de) Verfahren zur Verminderung des Verarbeitungsleistungsbedarfs eines Videodekoders
DE69634962T2 (de) Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes
DE69838729T2 (de) Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder
DE20321894U1 (de) Verbesserter Videodecodierer und zugehöriges Computergerät
DE102016125117A1 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE112016002026T5 (de) Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung
DE102004021854A1 (de) Vorrichtung für sowohl eine Block-Matching Motion Compensation als auch eine Global Motion Compensation sowie Verfahren hierfür
DE102016124926A1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
DE102011008630A1 (de) Techniken zur Bewegungsseinschätzung
DE102016125604A1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE69916662T2 (de) Verfahren und vorrichtung zur bewegungskompensation in einem texturabbildungssystem
DE69909880T2 (de) Dekodierung eines komprimierten digitalen Bildsignals
DE602004007682T2 (de) Leistungsoptimiertes colokalisiertes bewegungschätzverfahren
EP1110407A1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes mit anwendung eines objektgesamtbewegungsvektors
DE202016008206U1 (de) Abschätzung einer Bewegung in einem superweiten Bereich zur Kodierung eines Videos
DE60209715T2 (de) Verfahren und dekodierer zur verarbeitung von einem digitalen videosignal
DE69821704T2 (de) Verfahren und Gerät zur Kodierung und Dekodierung von Objektforminformation
EP0981909B1 (de) Verfahren und vorrichtung zur codierung und decodierung eines digitalisierten bildes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final