-
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.