Suche Bilder Maps Play YouTube News Gmail Drive Mehr »
Anmelden
Nutzer von Screenreadern: Klicke auf diesen Link, um die Bedienungshilfen zu aktivieren. Dieser Modus bietet die gleichen Grundfunktionen, funktioniert aber besser mit deinem Reader.

Patentsuche

  1. Erweiterte Patentsuche
VeröffentlichungsnummerDE102006008780 A1
PublikationstypAnmeldung
AnmeldenummerDE200610008780
Veröffentlichungsdatum22. März 2007
Eingetragen24. Febr. 2006
Prioritätsdatum8. Febr. 2005
Auch veröffentlicht unterCN1893651A, DE102006008780B4, US7609766, US20060176952
Veröffentlichungsnummer0610008780, 200610008780, DE 102006008780 A1, DE 102006008780A1, DE 2006/10008780 A1, DE-A1-102006008780, DE0610008780, DE102006008780 A1, DE102006008780A1, DE2006/10008780A1, DE200610008780
ErfinderSteve Zhihua Zeng
AntragstellerVixs Systems Inc., Toronto
Zitat exportierenBiBTeX, EndNote, RefMan
Externe Links: DPMA, Espacenet
System von Komplexitätsvorverarbeitung innerhalb eines Bildes
DE 102006008780 A1
Zusammenfassung
Ein System mit einer Videopipeline wird offenbart, das einen Variationsberechnungsteil aufweist. Der Varianzberechnungsteil berechnet eine Mehrzahl von Varianzwerten für einen Makroblock. Ein Indikator eines DCT-Typs für den Makroblock wird, basierend auf der Mehrzahl von Varianzwerten, festgestellt.
Ansprüche(24)
  1. Ein Verfahren aufweisend: Erhalten eines ersten Datensatzes, der einen ersten Teil eines zu komprimierenden Videobildes darstellt; Feststellen einer ersten Mehrzahl von Variationswerten, wobei jeder Variationswert auf einer entsprechenden Teilmenge des ersten Datensatzes basiert; und Feststellen eines DCT-Typs, basierend auf der ersten Mehrzahl von Variationswerten.
  2. Verfahren gemäß Anspruch 1, wobei Feststellen des DCT-Typs basierend auf der Mehrzahl von Variationswerten Feststellen des DCT-Typs basierend auf einem Vergleich eines ersten Variationswerts der Mehrzahl von Variationswerten mit einem zweiten Variationswert der ersten Mehrzahl von Variationswerten umfasst.
  3. Verfahren gemäß Anspruch 1, wobei die erste Mehrzahl von Variationswerten einen Vollbildvariationswert basierend auf einer ersten Teilmenge des ersten Datensatzes und einen Halbbildvariationswert basierend auf einer zweiten Teilmenge des ersten Datensatzes umfasst.
  4. Verfahren gemäß Anspruch 1, wobei die erste Mehrzahl von Variationswerten einen ersten Halbbildvariationswert basierend auf einer ersten Teilmen ge des ersten Datensatzes und einen Halbbildvariationswert basierend auf einer zweiten Teilmenge des ersten Datensatzes umfasst.
  5. Verfahren gemäß Anspruch 1, weiterhin aufweisend: Bereitstellen von wenigstens einem Variationswert, um in einem Speicher gespeichert zu werden, wobei der wenigstens eine Variationswert auf wenigstens einem der Mehrzahl von Variationswerten basiert.
  6. Verfahren gemäß Anspruch 5, wobei der wenigstens eine Variationswert kein Vorzeichen hat und durch eine ungerade Anzahl von Bits dargestellt wird.
  7. Verfahren gemäß Anspruch 6, weiterhin aufweisend: Bereitstellen eines Indikators des DCT-Typs, um im Speicher gespeichert zu werden.
  8. Verfahren gemäß Anspruch 7, wobei der Indikator des DCT-Typs und der wenigstens eine Variationswert gleichzeitig gespeichert werden.
  9. Verfahren gemäß Anspruch 7, wobei der Indikator des DCT-Typs und der eine Variationswert in einem gemeinsamen Datenwort gespeichert werden.
  10. Verfahren gemäß Anspruch 1, wobei Erhalten des ersten Datensatzes Erhalten des ersten Datensatzes in einer ersten Stufe einer Pipeline aus einer zweiten Stufe der Pipeline umfasst.
  11. Verfahren gemäß Anspruch 10, wobei die zweite Stufe der Pipeline einen Videoteiler umfasst.
  12. Verfahren gemäß Anspruch 10, wobei die zweite Stufe der Pipeline einen Rauschverringerungsfilter aufweist.
  13. Verfahren gemäß Anspruch 10, weiterhin aufweisend: Identifizieren der zweiten Stufe der Pipeline als eine einer dritten Stufe der Pipeline und einer vierten Stufe der Pipeline.
  14. Verfahren gemäß Anspruch 13, wobei Identifizieren der zweiten Stufe weiterhin Lesen eines Werts aus einem Speicherort aufweist, um die zweite Stufe zu identifizieren.
  15. Ein Verfahren aufweisend: Erhalten einer Mehrzahl von Video-Makroblöcken aus einem Speicher während einer ersten Zeitdauer; Verarbeiten der Mehrzahl von Video-Makroblöcken in einer ersten Stufe einer Pipeline während einer zweiten Zeitdauer, um eine Mehrzahl von ersten modifizierten Makroblöcken zu erzeugen; Verarbeiten der Mehrzahl von ersten modifizierten Makroblöcken in einer zweiten Stufe der Pipeline während einer dritten Zeit, um eine Mehrzahl von Variationswerten für jeden Makroblock festzustellen.
  16. Verfahren gemäß Anspruch 15, wobei Verarbeiten der Mehrzahl von Video-Makroblöcken in der ersten Stufe der Pipeline auf N-Makroblöcken arbeitet, wobei N eine positive ganze Zahl größer als 1 ist.
  17. Ein System aufweisend: eine erste Stufe einer Pipeline, aufweisend eine Eingabe, um einen ersten Datensatz zu erhalten, der einen Teil eines Videobildes darstellt, und eine Ausgabe, um einen zweiten Datensatz bereitzustellen, der den Teil eines Videobildes darstellt, der auf dem ersten Datensatz basiert; und eine zweite Stufe der Pipeline, aufweisend eine Eingabe, die an die Ausgabe der ersten Stufe angeschlossen ist, um den zweiten Datensatz zu erhalten, und eine Ausgabe, wobei die zweite Stufe der Pipeline aufweist: einen ersten Teil, um einen oder mehrere Halbbild-Variationswerte des zweiten Datensatzes festzustellen; und einen zweiten Teil, um einen oder mehrere Vollbild-Variationswerte des zweiten Datensatzes festzustellen.
  18. System von Anspruch 17, wobei der erste Teil zum Feststellen einer Mehrzahl von Halbbild-Variationswerten dient, die auf dem zweiten Datensatz basieren, und wobei der zweite Teil dazu dient, eine Mehrzahl von Vollbild-Variationswerten festzustellen, die auf dem zweiten Datensatz basieren.
  19. System von Anspruch 18, weiterhin aufweisend: einen dritten Teil, der an das erste Modul und das zweite Modul angeschlossen ist, um Varianzwerte zu erhalten, und um einen Indikator zum Steuern der Komprimierung des zweiten Datensatzes bereitzustellen.
  20. System von Anspruch 17, weiterhin aufweisend: einen Speicher, aufweisend eine Ausgabe, um einen dritten Datensatz, der den Teil des Videobildes darstellt, an die Pipeline bereitzustellen, wobei der erste Datensatz entweder derselbe wie der dritte Datensatz oder eine Darstellung des dritten Datensatzes ist.
  21. System gemäß Anspruch 20, wobei die Ausgabe des ersten Moduls an den Speicher angeschlossen ist, um den zweiten Datensatz an einer Eingabe des Speichers bereitzustellen.
  22. Ein System aufweisend: einen Speicher, der zum Übertragen von N Bits von Information gleichzeitig in der Lage ist; ein Verarbeitungsmodul, das an den Speicher angeschlossen ist, um Videoinformationen zu erhalten, die einen Teil eines Videobildes darstellt, und um einen X-Bit-Wert bereitzustellen, der eine Varianzberechnung darstellt, die auf dem Teil des Videobildes basiert, und einen Y-Bit-Wert, der auf einen Typ der Kompression hinweist, die auf den Teil des Videobildes angewandt werden soll, wobei X, Y und N ganze Zahlen sind und die Summe von X und Y kleiner oder gleich N ist.
  23. System von Anspruch 22, wobei das Verarbeitungsmodul weiter dazu dient, den Y-Bit-Wert bereitzustellen, wobei der Y-Bit-Wert ein Ein-Bit-Wert ist.
  24. System gemäß Anspruch 22, wobei der Speicher zum gleichzeitigen Übertragen von 16 oder mehr Bits von Information in der Lage ist.
Beschreibung
  • [0001]
    Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/823,646 (Attorney Docket Number 1459-ViXS002), eingereicht am 20. März 2001 mit dem Titel „ADAPTIVE BANDWITH FOOTPRINT MATCHING FOR MULTIPLE COMPRESSED VIDEO STREAMS IN A FIXED BANDWITH NETWORK," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/864,524 (Attorney Docket Number 1459-ViXS003), eingereicht am 24. Mai 2001 mit dem Titel „METHOD AND APPARATUS FOR A MULTIMEDIA SYSTEM," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/864,602 (Attorney Docket Number 1459-ViXS004), eingereicht am 24. Mai 2001 mit dem Titel „METHOD AND APPARATUS OF MULTIPLEXING A PLURALITY OF CHANNELS IN A MULTIMEDIA SYSTEM," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/864,476 (Attorney Docket Number 1459-ViXS008), eingereicht am 24. Mai 2001 mit dem Titel „METHOD AND APPARATUS FOR MANAGING RESOURCES IN A MULTIMEDIA SYSTEM," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/990,976 (Attorney Docket Number 1459-ViXS0012), eingereicht am 21. No vember 2001 mit dem Titel „SYSTEM AND METHOD FOR MULTIPLE CHANNEL VIDEO TRANSCODING," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 09/990,737 (Attorney Docket Number 1459-ViXS0013), eingereicht am 21. November 2001 mit dem Titel „METHOD AND SYSTEM FOR RATE CONTROL DURING VIDEO TRANSCODING," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/137,151 (Attorney Docket Number 1459-ViXS0036), eingereicht am 2. Mai 2002 mit dem Titel „METHOD AND SYSTEM FOR PROTECTING VIDEO DATA," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/174,371 (Attorney Docket Number 1459-ViXS0038), eingereicht am 18. Juni 2002 mit dem Titel „DYNAMICALLY ADJUSTING DATA RATE OF WIRELESS COMMUNICATIONS," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/376,581 (Attorney Docket Number 1459-ViXS0048), eingereicht am 28. Februar 2003 mit dem Titel „METHOD AND APPARATUS FOR NONINTRUSIVE TRANSCEIVER PROPERTY ADJUSTMENT," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/376,853 (Attorney Docket Number 1459-ViXS0051), eingereicht am 28. Februar 2003 mit dem Titel „SYSTEM FOR PROVIDING DATA TO MULTIPLE DEVICES AND METHOD THEREOF," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/345,710 (Attorney Docket Number 1459-ViXS0053), eingereicht am 16. Januar 2003 mit dem Titel „METHOD OF MOTION VECTOR PREDICTION AND SYSTEM THEREOF," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/345,847 (Attorney Docket Number 1459-ViXS0054), eingereicht am 16. Januar 2003 mit dem Titel „METHOD OF VIDEO ENCODING USING WINDOWS AND SYSTEM THEREOF," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/375,582 (Attorney Docket Number 1459-ViXS0059), eingereicht am 24. Februar 2003 mit dem Titel „METHOD AND SYSTEM FOR TRANSCODING VIDEO DATA," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/461,095 (Attorney Docket Number 1459-ViXS0060), eingereicht am 13. Juni 2003 mit dem Titel „SYSTEM AND METHOD FOR PROCESSING AUDIO FRAMES," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/683,062 (Attorney Docket Number 1459-ViXS0061), eingereicht am 10. Oktober 2003 mit dem Titel „METHOD AND APPARATUS FOR ACCURATELY DETECTING VALIDITY OF A RECEIVED SIGNAL," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/673,693 (Attorney Docket Number 1459-ViXS0062), eingereicht am 29. September 2003 mit dem Titel „METHOD AND SYSTEM FOR SCALING IMAGES," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird. Zugehörige Inhalte finden sich in einer gleichzeitig anhängigen US-Patentanmeldung mit der Anmeldungsnummer 10/673,612 (Attorney Docket Number 1459-ViXS0063), eingereicht am 29. September 2003 mit dem Titel „METHOD AND SYSTEM FOR NOISE REDUCTION IN AN IMAGE," welche hiermit durch Referenz in ihrer Gesamtheit aufgenommen wird.
  • HINTERGRUND Gebiet der Erfindung
  • [0002]
    Die vorliegende Offenbarung bezieht sich allgemein auf Videoverarbeitung und insbesondere auf die Verarbeitung von Varianzen für Videobilder.
  • [0003]
    Techniken zur Videoverarbeitung arbeiten auf einer Folge von einzelnen Bildern, die ein bewegtes Video darstellen, wenn sie sequentiell angezeigt werden. Für Rohbilddaten ist es oft wünschenswert, dass sie komprimiert werden, um die Menge der benötigten Daten zu verringern, die zum Darstellen der Folge von einzelnen Bildern benötigt werden, aus denen das Video besteht. Eine übliche Komprimierungstechnik besteht darin, räumliche Redundanz aus den Quellbildern unter Verwendung eines blockbasierten DCT- (Diskrete Cosinus Transformation-) Verfahrens zu entfernen. Das blockbasierte DCT-Verfahren kann entweder Vollbilddaten (Picture Frame Data) oder Halbbilddaten (Picture Field Data) beim Versuch komprimieren, die Kompression der Quellbilder zu optimieren. Deshalb wäre ein System und Verfahren zum Verbessern der Optimierung von Quellbildern nützlich.
  • KUZRE BESCHREIBUNG DER ZEICHNUNGEN
  • [0004]
    Die vorliegende Offenbarung kann besser verstanden und ihre zahllosen Merkmale und Vorteile können Fachleuten durch Bezug auf die beigefügten Zeichnungen deutlich gemacht werden.
  • [0005]
    1 ist ein Blockdiagramm, das ein System in Übereinstimmung mit der vorliegenden Offenbarung darstellt.
  • [0006]
    2 und 4 sind spezifische Ausführungsformen einer Pipeline in Übereinstimmung mit einer besonderen Ausführungsform der vorliegenden Offenbarung.
  • [0007]
    3 zeigt acht Blöcke, die einen Makroblock in Übereinstimmung mit einer spezifischen Ausführungsform der Offenbarung zugeordnet sind.
  • [0008]
    5 und 6 zeigen in Form eines Blockdiagramms eine spezifische Implementierung eines Variationsberechnungsmoduls der Pipeline aus 2 und 4 in Übereinstimmung mit einer spezifischen Ausführungsform der Offenbarung.
  • [0009]
    7 und 8 zeigen Verfahren in Übereinstimmung mit einer spezifischen Ausführungsform der Offenbarung.
  • [0010]
    Der Gebrauch desselben Bezugszeichens in verschiedenen Zeichnungen weist auf ähnliche oder identische Einheiten hin.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • [0011]
    Ein System und Verfahren zum Festlegen und Speichern eines Indikators eines DCT-Typs wird offenbart. Insbesondere wird eine Mehrzahl von Varianten für einen Makroblock festgelegt und dazu verwendet um festzulegen, ob Vollbild- oder Halbbildkompression des Makroblocks implementiert werden sollte. Die vorliegende Offenbarung wird besser mit Bezug auf die 1 bis 7 verstanden.
  • [0012]
    1 zeigt ein System 100 in Übereinstimmung mit einer spezifischen Ausführungsform der vorliegenden Offenbarung. Das System 100 stellt ein Videoverarbeitungssystem dar mit einer Mehrzahl von Modulen einschließlich Videoeingabe 110, Videopipeline 120, Videokompression 130, Speichercontroller 140 (Memory Controller, MC), Controller 150 und Speicher 160.
  • [0013]
    Der Begriff „Port" wird hier breit verwendet und bezieht sich auf funktional bezogene Verbindungen eines Systems oder eines Teils eines Systems. Zum Beispiel kann sich der Begriff „Port" auf eine oder mehrere Eingabeverbindungen, eine oder mehrere Ausgabeverbindungen und eine oder mehrere bidirektionale Verbindungen beziehen, die auf einen spezifischen Teil eines Systems bezogen sind. Es sollte klar sein, dass spezifische Typen von Ports zwischen Komponenten in den Figuren nur veranschaulichend sind und nicht notwendigerweise so gemeint sind, dass sie Verbindungen auf einen spezifischen Typ von Port beschränken oder die Existenz von separaten Ports implizieren. Zum Beispiel kann ein spezifisches Modul, das mit einem Eingabeport, das durch einen „in"-Pfeil dargestellt wird, und einen Ausgabeport, der durch einen „out"-Pfeil dargestellt wird, in der tatsächlichen Implementierung einen einzigen bidirektionalen Port aufweisen.
  • [0014]
    Die Videoeingabe 110 weist einen Port zum Empfang von Videodaten SOURCE VIDEO auf und ist mit dem Variationsrechner 140 des Speichercontrollers und Controller 150 verbunden. Die Videopipeline 120 ist mit dem Speichercontroller 140 und dem Controller 150 verbunden. Der Videokomprimierer 130 ist mit dem Speichercontroller 140 und dem Controller 150 verbunden. Der Speichercontroller 140 ist zusätzlich mit dem Controller 150 und dem Speicher 160 verbunden.
  • [0015]
    Im Betrieb wird SOURCE VIDEO, die eine Mehrzahl von Rohbildern eines Videostroms darstellen, bei der Videoeingabe 110 erhalten. Die Rohbilder werden an die Videopipeline 120 bereitgestellt, die die Bilder für Videokompression vorbereitet. Ein spezifisches Modul 240 der Videopipeline 120 ist dargestellt und stellt ein Pipelinestufenmodul dar, das verwendet wird, um Variationen innerhalb der Bilder festzustellen. Der Videokomprimierer 130 empfängt und komprimiert die vorverarbeiteten Bilder aus der Videopipeline 120, basierend auf der Variationsinformation aus dem Variationsrechner 240. In der gezeigten Ausführungsform werden Daten zwischen den Modulen 110, 120 und 130 durch den Speichercontroller 140 transferiert, was in einer Verzögerungsdauer resultiert, die von dem Zeitpunkt reicht, wenn die Daten von dem Speicher 160 angefordert werden, bis zu dem Zeitpunkt, wenn sie bei den Modulen verfügbar sind.
  • [0016]
    Verarbeitungseffizienz wird durch Berechnen von Bildvariationsinformationen innerhalb der Videopipeline 120 realisiert, da ein einziger Zugriff auf den Speicher 160 dazu verwendet werden kann, um mehrere Vorkomprimierungsstufen innerhalb der Videopipeline 120 zu unterstützen, einschließlich der Stufe des Variationsrechner 240. Die Möglichkeit zum Gebrauch eines einzigen Zugriffs, der hier beschrieben wird, verringert die Anforderungen an die Bandbreite der Daten zwischen dem Speichercontroller 140 und dem Speicher 160 und zwischen dem Speichercontroller 140 und seinen Clients. Eine spezifische Implementierung der Videopipeline 120 wird in 2 dargestellt.
  • [0017]
    2 zeigt eine spezifische Ausführungsform der Videopipeline 120 einschließlich Skalierer 210, Rauschverringerungsfilter 220 (Noise Reduction Filter, NRF), Variationsrechner 240 und DCT-Typ Selektor 250. Eine oder mehrere Verbindungen wie etwa die Verbindungen, die durch 202, 212, 222, 242 und 243 dargestellt sind, können zum Implementieren einer oder mehrerer Datenflussoptionen durch die Videopipeline 120 verwendet werden. Zum Beispiel können alle Daten sequentiell von dem Skalierer 210 zu dem Rauschverringerungsfilter 220 zum Variationsrechner 240 zum DCT-Typ Selektor 250 fließen. In einer weiteren Ausführungsform können die Daten selektiv, wie etwa durch den Gebrauch eines Registers (nicht gezeigt), den Skalierer 210 oder das Rauschreduktionsfilter oder beide überbrücken, wie durch die Verbindung 202 dargestellt.
  • [0018]
    Im Betrieb werden Quellvideobilder bei der Videopipeline 120 von 2 aus dem Speicher 160 erhalten. Typischerweise werden die Quellbilder bei der Videopipeline 120 als Datensätze erhalten und bearbeitet, die nur einen Teil eines Quellbildes darstellen. Zum Beispiel kann der Teil ein spezifischer Block des Quellbildes sein. In einer Ausführungsform kann der spezifische Block einer oder mehrere Makroblöcke sein. Man beachte, dass der hier gebrauchte Begriff „Mak roblock" in einem spezifischen Kontext gebraucht wird, wie er mit Bezug auf eine oder mehrere MPEG-Spezifikationen verstanden wird, wie etwa gegenwärtig verfügbare Versionen der verschiedenen MPEG-Standards, die als MPEG 1, MPEG 2 und MPEG 4 bezeichnet werden, die alle Fachleuten gut bekannt sind. Allerdings sollte es klar sein, dass der Gebrauch von spezifischen Kontexten in dieser Offenbarung nur für Zwecke der Darstellung ist und andere blockbasierte Kontexte der Verarbeitung von Videoinformationen umfasst.
  • [0019]
    Das Ziel der Quellbildinformationen innerhalb der Videopipeline 120 können eine oder mehrere Stufen einschließlich Skalierer 210, Rauschverringerungsfilter 220 und Variationsrechner 240 sein, wie durch die Verbindung 202 angedeutet wird. Das Ziel der Quellvideobilder in der Videopipeline 120 kann je nach Ausführung fest oder variabel sein. Zum Beispiel kann das System 100 so ausgeführt sein, dass es ausschließlich Quellbilddaten an den Skalierer 210 bereitstellt. Alternativ kann das System 100 Register (nicht dargestellt) bereitstellen, die es den Quelldaten erlauben, an eine oder mehrere Stufen der Videopipeline 120 bereitgestellt zu werden. Zum Beispiel könnten die Quelldaten entweder an den Skalierer 210, das Rauschreduktionsfilter 220 oder den Variationsrechner 240 bereitgestellt werden, basierend auf einem Wert, der in einem Register gespeichert ist.
  • [0020]
    Wie dargestellt, kann der Skalierer 210 rohe Quellbilddaten empfangen, wie etwa Makroblöcke aus dem Speicher 160, die als MB aus MC 140 gekennzeichnet sind. Der Skalierer 210 ist ein Videoskalierer, der zum Skalieren der Quellbilder in einer vertikalen oder einer horizontalen Richtung oder beiden in der Lage ist. Skalierte Bilder aus dem Skalierer 210, die Darstellungen der Quellbilder sind, können an eine oder mehrere Stufen der Videopipeline 120 und den Speicher 160 durch den Speichercontroller 140 bereitgestellt werden. Ob die skalierten Bilder aus dem Skalierer 210 an den Speicher 160 und eine Stufe der Videopipeline 120, wie etwa Rauschverringerungsfilter 220 und Variationsrechner 240, bereitgestellt werden, kann je nach Ausführung fest oder variabel sein.
  • [0021]
    Zum Beispiel kann das System 100 so ausgeführt sein, um die skalierten Bilder immer an ein oder mehrere Ziele bereitzustellen. Zum Beispiel könnten die skalierten Bilddaten immer an das Rauschverringerungsfilter 220 bereitgestellt werden, oder immer an das Rauschverringerungsfilter 220 und den Speicher 160 bereitgestellt werden. In einer weiteren Ausführungsform kann das System 100 Register (nicht dargestellt) bereitstellen, die es den skalierten Daten ermöglichen, an eine oder mehrere Stufen der Videopipeline 120 bereitgestellt zu werden. Zum Beispiel könnten die skalierten Daten entweder an den Rauschverringerungsfilter 220 oder den Variationsrechner 240 basierend auf einem Registerwert bereitgestellt werden, und könnten an den Speicher 160 basierend auf einem anderen Registerwert bereitgestellt werden.
  • [0022]
    Das Rauschverringerungsfilter 220 empfängt Bilddaten wie etwa Makroblöcke, die durch MB gekennzeichnet sind, aus Speicher 160 oder skalierte Daten aus dem Skalierer 210. Das Rauschverringerungsfilter 220 filtert empfangene Bilddaten und stellt gefilterte Bilddaten durch die Verbindung 222 bereit. Gefilterte Bilddaten aus dem Rauschverringerungsfilter 220 können an eine oder mehrere Stufen der Videopipeline 120 (die Fähigkeit, gefilterte Daten an eine oder mehrere Stufen bereitzustellen, ist nicht spezifisch gezeigt) und den Speicher 160 bereitgestellt werden. Ob die gefilterten Daten aus dem Rauschverringerungsfilter 220 entweder an den Speicher 160 oder eine Stufe der Videopipeline 120, wie etwa den Variationsrechner 240, oder an beide bereitgestellt werden, kann je nach Ausführungsform fest oder variabel sein, auf eine Weise, die ähnlich zu der mit Bezug auf den Skalierer 210 oder den Rauschverringerungsfilter 220 besprochenen Weise.
  • [0023]
    Der Variationsrechner 240 empfängt Bilddaten wie etwa Makroblöcke, die mit MB gekennzeichnet sind, aus Speicher 160, skalierte Daten aus dem Skalierer 210 oder gefilterte Daten von dem Rauschverringerungsfilter 220 und stellt Variationsinformationen für die empfangenen Bilddaten fest. In einer Ausführungsform werden die Variationsinformationen für 8 × 8 Blöcke der Helligkeitsdaten berech net. Allerdings kann für Zwecke der Effizienz die Berechnung auf der Basis eines Makroblocks durchgeführt werden.
  • [0024]
    Ein 16 × 16 Makroblock enthält vier Halbbildblöcke und vier Vollbildblöcke. 3 zeigt die vier Vollbildblöcke und vier Halbbildblöcke für einen Makroblock 310. Vollbildblock 1 umfasst die 64 Pixel ganz oben und ganz links des Makroblocks 310. Der Vollbildblock 2 umfasst die 64 Pixel ganz oben und ganz rechts des Makroblocks 310. Vollbildblock 3 umfasst die 64 Pixel ganz unten und ganz links des Makroblocks 310. Vollbildblock 4 umfasst die 64 Pixel ganz unten und ganz rechts des Makroblocks 310. Die oberen Halbbildblöcke 5 und 6 werden in 3B dargestellt, wobei die Halbbildblöcke 5 und 6 die oberen Halbbilder (die unschattierten Pixelzeilen von 3A) der linken bzw. der rechten Hälfte des Makroblocks 310 umfassen. Die unteren Halbbildblöcke 7 und 8 werden in 3C dargestellt, wobei die Halbbildblöcke 7 und 8 die unteren Felder (die schattierten Pixelzeilen von 3A) der linken bzw. der rechten Hälfte des Makroblocks 310 umfassen. Eine oder mehrere dieser acht Varianzberechnungen können an den Speicher 160 zum späteren Gebrauch bereitgestellt werden, wie durch die Verbindung 243 und die Verbindung 242 dargestellt. In Übereinstimmung mit einer spezifischen Ausführungsform der vorliegenden Offenbarung werden Werte berechnet, die Variationsinformationen für jeden der acht Blöcke darstellen. Der DCT-Typ Selektor 250 legt einen DCT-Typ für jeden Makroblock fest, der auf den Variationsinformationen beruht, die durch den Variationsrechner 240 berechnet werden. In einer Ausführungsform stellt der DCT-Typ Selektor 250 einen Vollbild-DCT-Indikator für einen Makroblock bereit, wenn eine Summierung der Vollbildvariationen für den Makroblock kleiner als eine Summierung der Halbbildvarianzen des Makroblocks ist. Ähnlich stellt der DCT-Typ Selektor 250 einen Halbbild-DCT-Indikator für einen Makroblock bereit, wenn eine Summierung der Halbbildvarianzen für den Makroblock kleiner ist als eine Summierung der Vollbildvarianzen des Makroblocks. Durch Auswahl eines DCT-Typs für einen Makroblock, der auf der kleinsten gesamten Vollbild- oder Halbbildvarianz basiert, und Komprimieren des Makroblocks durch den Videokomprimierer 130, die auf dem berechneten DCT-Typ beruht, wurde gezeigt, dass eine verbesserte Gesamtkomprimierung erhalten wird.
  • [0025]
    4 zeigt eine alternative Ausführungsform der Videopipeline 120. Elemente, die den vorher beschriebenen Elementen ähnlich sind, sind ähnlich numeriert. In der Ausführungsform von 4 werden die Variationswerte der acht Blöcke, die durch den Variationsrechner 240 für jeden Makroblock berechnet wurden, an die Variationsselektor 280 und den DCT-Typ Selektor 290 bereitgestellt.
  • [0026]
    Die Varianzselektor 280 wählt die kleinste Varianz der Variationswerte der acht Blöcke aus und liefert diesen Wert oder eine abgeschnittene oder gerundete Darstellung dieses Wertes an die Ausgabe des Varianzselektors 280. In einer Ausführungsform sind die durch den Variationsrechner 240 berechneten Variationen 16-Bit-Werte, und die durch den Varianzselektor 280 ausgegebenen Variationswerte sind 15-Bit-Werte.
  • [0027]
    Die DCT-Typ Selektor 290 legt einen 1-Bit-DCT-Typ-Indikator basierend auf der Mehrzahl von Varianzen auf eine Weise fest, die ähnlich zu der vorher beschriebenen ist.
  • [0028]
    In der dargestellten Ausführungsform von 4 wird der 1-Bit-DCT-Typ-Indikator mit dem Variationswert kombiniert, dargestellt als 15-Bit-Varianz (σ2), um ein Datenwort zu bilden, das in dem Speicher 160 gespeichert werden kann. Auf diese Weise können sowohl die Variation als auch die DCT-Typ-Daten mit einer einzigen Schreiboperation gespeichert werden, wodurch weniger Bandbreite erforderlich ist, als wenn die DCT-Typ-Daten und Varianzdaten separat gespeichert werden.
  • [0029]
    Die Variationen, die durch den Variationsrechner 240 berechnet werden, messen die räumliche Aktivität für einen Makroblock. Die räumliche Aktivität (actj wie etwa die Variation eines Makroblocks j) wird berechnet aus den vier Helligkeits-, Vollbild-organisierten Blöcken 1 bis 4 aus 3 und den vier Helligkeits-, Halbbild-organisierten Blöcken 5 bis 8 von 3, wie in Gleichung 1 angezeigt. Man beachte, dass die Halbbildvariation weggelassen werden kann, wenn der Makroblock Teil eines Progressiv-Bildes ist. actj = 1 + min(vblk1, vblk2, ..., vblk8) Gleichung 1
  • [0030]
    Dabei sind vblk1-vblk8 die Variationen der acht Blöcke des Makroblocks j. In der spezifischen Ausführungsform sind die Variationen vblk1-vblk8 durch Gleichung 2 bestimmte Variationen:
  • [0031]
    Dabei stellt n einen der acht Blöcke dar, k stellt eines der 64 Pixel des Blocks n dar, Pk stellt den Wert des kten Pixels dar und Pmeann ist der Mittelwert der 64 Pixel des Blocks n.
  • [0032]
    In einer Ausführungsform wird die Variation auf 8 × 8 Blöcken von Helligkeitsdaten auf einer Basis von Makroblöcken berechnet. Ein 16 × 16 Makroblock sollte vier Variationswerte und vier Halbbild-Variationswerte enthalten. In einer weiteren Ausführungsform werden weitere zwei der kleinsten Variationen unter den acht Variationen als die Varianz des MB ausgewählt, obwohl andere Verfahren verwendet werden können, um die Varianz des MB festzustellen. Die resultierende Variation wird in den Speicher als Teil eines 16 Bit Wert (15 Bit Varianz und ein 1 Bit DCT) für einen gegebenen Makroblock j geschrieben.
  • [0033]
    Wenn vertikale Skalierung auf dem Vollbild (Frame) durchgeführt wird, dann ergeben sich nur vier Varianzberechnungen anstelle von acht. Diese Verringerung in der Zahl von Varianzen resultiert aus dem Weglassen entweder des oberen oder unteren Halbbildes (Field), wenn die vertikale Skalierung durchgeführt wird. Allerdings gibt es in einer spezifischen Ausführungsform des Systems 100 immer noch vier Varianzwerte, da die Varianz über einen ganzen 16 × 16 Makroblock berechnet wird. Dies resultiert in 16 geraden Halbbildzeilen (2, 4, 6, ..., 32) oder 16 ungeraden Halbbildzeilen (1, 3, 5, ..., 31).
  • [0034]
    In einer Ausführungsform werden alle gewählten Varianzen zu einem gesamten Bild akkumuliert und dann als Teil des Datenraten-Steueralgorithmus normalisiert. Diese Normalisierung wird am Ende eines Vollbildes durchgeführt, indem die Summe der Varianzen durch die Gesamtzahl von Makroblöcken in diesem Vollbild dividiert wird.
  • [0035]
    In einer Ausführungsform ist die berechnete Variation für einen Block seine Varianz. Der verwendete Varianzalgorithmus kann wie folgt vereinfacht und reduziert werden. Zu Beginn wird die Varianzberechnung nur auf den Ausgaben der 8-Bit-Y-Komponenten wie etwa der Ausgabe aus dem NRF berechnet. Die Varianz (σ2) wird festgestellt, indem die folgenden Akkumulationen der 64 Komponenten eines 8 × 8 Blocks durchgeführt werden.
    • 1. Initialisiere s = s2 = 0
    • 2. für jede Y-Komponente (64 gesamt): sei v = YCURRENT; s = s + v; s2 = s2 + v·v;
    • 3. nach dem Erhalt aller 64 Komponenten σ2 = s2 – (s·s)/64
  • [0036]
    5 zeigt eine spezifische Implementierung als integrierte Schaltung zum Festlegen von s und s2. Insbesondere wird jede Eingabe, Y-Komponente (Helligkeit), an den Variationsblock auf dieselbe Weise bearbeitet. Um deshalb die Fläche der integrierten Schaltung zu verringern, wird derselbe Block zum Berechnen von s und s2 für jede Helligkeitskomponente verwendet. Diese Berechnung wird auf einer einzigen Zeile von 8 Pixeln durchgeführt, wobei jedes Pixel ein 8-Bit-Wert ohne Vorzeichen ist, der von dem NRF oder VS (Variation Select, Variationsselektor) erhalten wird. Jeder der dargestellten Teile des Akkumulators wird nach dem Erhalt einer Menge von 8 Pixeln (1/2 einer Makroblockzeile) zurückgesetzt. Sobald die zwei Zwischenvariablen s1 und s2 berechnet sind, werden sie an den Akkumulationsblock der Variationsvariablen von 6 weitergeleitet.
  • [0037]
    Der Akkumulationsblock der Variablen von 6 akkumuliert acht Sätze von Variablen s1 und s2, die zum Berechnen der Varianz (σ2) von jeder der Helligkeitsblöcke verwendet werden, indem die Gleichung von Schritt 3 oben angewendet wird.
  • [0038]
    Um die Fläche der integrierten Schaltung zu verringern, werden die arithmetischen Funktionen des Akkumulationsblocks der Variablen zwischen den acht Helligkeitsblöcken gemeinsam verwendet. Die gezeigte spezifische Implementierung hat einen arithmetischen Datenpfad, der zweimal instanziiert ist, um der Tatsache Rechnung zu tragen, dass jede Hälfte einer MB-Zeile für zwei Varianz-Halbbild-Berechnungen erforderlich sein könnte. Deshalb gibt es für jede gegebene Hälfte einer MB-Zeile zwei Akkumulationen für die Sätze der Variablen s und s2.
  • [0039]
    In einer Ausführungsform des Systems 100 verarbeiten das Rauschverringerungsfilter 220 oder der Skalierer 210 insgesamt 64 Pixel. Diese 64 Pixel stellen nicht die Pixel eines einzigen Makroblocks dar. Vielmehr entsprechen sie einer Zeile von Pixeln, die vier horizontal benachbarte Makroblöcke überspannt. Deshalb gibt es innerhalb jedes der zwei Akkumulationspfade von 6 MUX-Abschnitte, die ein Maximum von 16 Akkumulationsregistern zum Akkumulieren der Variablen s und s2 der vier möglichen MBs enthalten.
  • [0040]
    Die Varianz wird durch Verwendung der endgültigen Werte der Variablen s und s2 für einen gegebenen 8 × 8 Datenblock berechnet. Deshalb können zwei identische Instanziierungen des Schaltkreises von 6 verwendet werden, um alle acht möglichen Varianzen zu berechnen. Der endgültige Varianzwert wird zu einem 15-Bit-Ergebnis abgeschnitten, anstelle des tatsächlichen 16-Bit-Resultats, das von Software erwartet wird. Diese Bit-Reduktion ist notwendig, um das Schreiben des verketteten Varianzinformation-Datenblocks zu unterstützen, der aus der endgültigen MB-Varianz und dem DCT-Typ besteht.
  • [0041]
    In einer Ausführungsform ist der Variationsrechner 240 auch für das Feststellen der durchschnittlichen Varianz des Vollbildes verantwortlich. Diese durchschnittliche Varianz ist einfach die Summierung aller MB-Varianzen für das Vollbild geteilt durch die Anzahl der MBs in dem Vollbild.
  • [0042]
    Allerdings ist ein Teilen durch einen nicht konstanten Teiler in Hardware keine triviale Implementierung. Deshalb stellt die Software einen Normalisierungs-Multiplikationsfaktor von 1/n bereit, um die Implementierung der durchschnittlichen Varianzberechnung zu unterstützen. 7 zeigt ein Verfahren in Übereinstimmung mit einer spezifischen Ausführungsform der vorliegenden Offenbarung. Bei Schritt 501 wird ein erster Datensatz erhalten, der einen ersten Teil eines zu komprimierenden Videobildes darstellt. Mit Bezug auf 2 kann der erste Datensatz ein oder mehrere Makroblöcke sein, die bei dem Variationsrechner 240 erhalten werden. Der erste Datensatz kann von einer Mehrzahl der Pipelinestufen erhalten werden, basierend auf einer Auswahl eines Anwenders.
  • [0043]
    Bei Schritt 502 wird eine erste Mehrzahl von Varianzwerten festgestellt, basierend auf dem ersten Datensatz. Zum Beispiel können acht Varianzwerte, einer für jeden Vollbild- und Halbbild-Helligkeitsblock, festgestellt werden.
  • [0044]
    Ein oder mehrere Varianzwerte, die bei 502 berechnet wurden, können zum Speichern im Speicher bei Schritt 503 bereitgestellt werden. Ausführen von 502 kann von einer Auswahl eines Anwenders abhängig sein. Der Datenpfad 520 deutet an, dass der Schritt 504 unabhängig von Schritt 503 durchgeführt werden kann.
  • [0045]
    Bei Schritt 504 wird ein DCT-Typ, der eine Komprimierung des ersten Datensatzes steuert, basierend auf der ersten Mehrzahl von Varianzwerten festgestellt. Zum Beispiel wird der DCT-Typ auf Halbbild-DCT gesetzt, wenn die Halbbildvarianzen eine kleinere Summe als die Vollbildvarianzen aufweisen. Ähnlich wird der DCT-Typ auf Vollbild-DCT gesetzt, wenn die Vollbildvarianzen eine kleinere Summe als die Halbbildvarianzen aufweisen.
  • [0046]
    Schritte 505 und 506 können selektiv und unabhängig voneinander ausgeführt werden. Bei Schritt 506 wird ein Indikator des DCT-Typs und wenigstens ein Varianzwert gleichzeitig als Teil eines gemeinsamen Schreibens der Daten dem Speicher bereitgestellt.
  • [0047]
    Bei Schritt 505 wird der Indikator des DCT-Typs im Speicher gespeichert. Der Videokomprimierer 130 verwendet den Indikator des DCT-Typs zur Steuerung, ob der Makroblock, der dem DCT-Typ zugeordnet ist, als Vollbild- oder Halbbilddaten komprimiert wird.
  • [0048]
    8 zeigt ein weiteres Verfahren in Übereinstimmung mit der vorliegenden Offenbarung. Insbesondere wird bei Schritt 601 während einer ersten Zeitdauer eine Mehrzahl von Video-Makroblöcken aus dem Speicher empfangen.
  • [0049]
    Bei Schritt 602 wird die Mehrzahl von Video-Makroblöcken in einer ersten Stufe einer Pipeline verarbeitet, um eine Mehrzahl von ersten modifizierten Datenblöcken zu erzeugen. Zum Beispiel können die ersten modifizierten Datenblöcke skalierte Daten aus der Skaliererstufe oder gefilterte Daten aus einer Daten-Filterstufe der Pipeline sein.
  • [0050]
    Bei Schritt 603 wird die Mehrzahl der ersten modifizierten Makroblöcke in einer zweiten Stufe der Pipeline verarbeitet, um während einer dritten Zeitdauer eine Mehrzahl von Varianzwerten für jeden Makroblock festzulegen.
  • [0051]
    In der vorangegangenen detaillierten Beschreibung wurde Bezug genommen auf die beigefügten Zeichnungen, die einen Teil davon bilden und in denen auf dem Wege der Abbildung spezifische Ausführungsformen gezeigt werden, in denen die Erfindung ausgeführt werden kann. Diese Ausführungsformen und bestimmte Varianten davon wurden in ausreichendem Detail beschrieben, um Fachleuten die Ausführung der Erfindung zu ermöglichen. Es sollte klar sein, dass andere geeignete Ausführungsformen verwendet werden können und dass logische und elektrische Änderungen gemacht werden können, ohne vom Geist oder dem Bereich der Erfindung abzuweichen. Zusätzlich sollte es klar sein, dass die funktionalen Blöcke, die in den Figuren gezeigt werden, auf mehrere Weisen kombiniert oder geteilt werden könnten, ohne von dem Geist oder dem Bereich der Erfindung abzuweichen. Die vorangegangene detaillierte Beschreibung ist deshalb nicht dazu gedacht, auf die hier dargelegten spezifischen Formen beschränkt zu sein, sondern im Gegenteil ist es beabsichtigt, solche Alternativen, Modifikationen und Äquivalente abzudecken, die vernünftigerweise innerhalb des Geistes und des Bereichs der angehängten Ansprüche umfasst sein können.
Klassifizierungen
Internationale KlassifikationH04N7/26
UnternehmensklassifikationH04N19/176, H04N19/112, H04N19/60, H04N19/14, H04N19/42
Europäische KlassifikationH04N7/30, H04N7/26L, H04N7/26A4C4, H04N7/26A6C2, H04N7/26A8B
Juristische Ereignisse
DatumCodeEreignisBeschreibung
22. März 2007OP8Request for examination as to paragraph 44 patent law
20. Dez. 2011R016Response to examination communication
13. Febr. 2012R018Grant decision by examination section/examining division
27. Dez. 2012R020Patent grant now final
Effective date: 20120922