-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft eine Vorrichtung zur Verarbeitung von Multiview-Videos.
-
Stand der Technik
-
Multiview-Videocodierung (MVC) betrifft eine Komprimierung von Videosequenzen (z. B. einer Sequenz von Abbildern oder "Bildern") die üblicherweise mit entsprechenden Kameras aufgenommen werden. Die Videosequenzen oder "Views" können in Übereinstimmung mit einem Standard wie beispielsweise MPEG codiert werden. Ein Bild in einer Videosequenz kann ein vollständiges Video-Einzelbild (video frame) oder ein Halbbild (field) eines Video-Einzelbilds darstellen. Ein Slice ist ein selbständig codierter Teilbereich eines Bildes, der einige oder alle Makroblocks des Bildes umfasst, wobei ein Makroblock einen Block von Bildelementen (oder "Pixel") umfasst.
-
Die Videosequenzen können als Multiview-Videosequenzen gemäß der H.264/AVC Codec-Technologie codiert werden, wobei viele Entwickler Forschungen im Hinblick auf eine Novellierung der Standards zur Aufnahme von Multiview-Videosequenzen betreiben.
-
Der derzeitige H.264 Standard gibt drei Profile zur Unterstützung von speziellen Funktionen vor. Der Ausdruck "Profil" bezeichnet die Standardisierung von technischen Komponenten zur Verwendung in Videocodierungs-/-decodierungsalgorithmen. Mit anderen Worten wird das Profil von einem Satz technischer Komponenten gebildet, der zum Decodieren eines Bitstroms einer komprimierten Sequenz vorgegeben ist und als Sub-Standard angesehen werden kann. Die oben erwähnten drei Profile sind ein Basisprofil, ein Hauptprofil und ein erweitertes Profil. Im H.264-Standard wurde eine Vielzahl von Funktionen für den Codierer und den Decoder so festgelegt, dass Codierer und Decoder jeweils mit dem Basisprofil, dem Hauptprofil und dem erweiterten Profil kompatibel sein können.
-
Der Bitstrom für den H.264/AVC-Standard ist entsprechend in eine Videocodierungsebene (Video Coding Layer, VCL) zur Abwicklung der Laufbildcodierung (d. h. der Sequenzcodierung) und eine Netzwerk-Abstraktionsebene (Network Abstraction Layer, NAL) gegliedert, die mit einem zum Übertragen bzw. Speichern codierter Information ausgebildeten Subsystem verknüpft ist. Die Ausgangsdaten des Codiervorgangs sind VCL-Daten, wobei diese vor einem Übertragen oder Speichern in NAL-Einheiten aufgenommen werden. Jede der NAL-Einheiten umfasst eine Rohbytesequenz-Nutzlast (Raw Byte Sequence Payload, RBSP), die entweder komprimierten Videodaten oder Header-Information entspricht.
-
Die NAL-Einheit enthält einen NAL-Header und eine RBSP. Der NAL-Header umfasst eine Flag-Information (z. B. nal_ref_idc) und Information zur Identifizierung (ID) (z. B. nal_unit_type). Die Flag-Information "nal_ref_idc" zeigt das Vorhandensein oder Fehlen eines als Referenzbild der NAL-Einheit verwendeten Slice an. Die ID-Information "nal_unit_type" gibt den Typ der NAL-Einheit an. Die RBSP speichert komprimierte Originaldaten. An den letzten Teil der RBSP kann ein RBSP-Abschlussbit (RBSP-trailing bit) so hinzugefügt werden, dass die Länge der RBSP als Vielfaches von 8 Bit dargestellt werden kann.
-
Es gibt eine Vielzahl von NAL-Einheiten, zum Beispiel ein Instantaneous-Decoding-Refresh-Bild (IDR-Bild, momentan-decodierungsaktualisiertes Bild), einen Sequenzparametersatz (Sequence Parameter Set, SPS), einen Bildparametersatz (Picture Parameter Set, PPS), und ergänzende Erweiterungsinformation (Supplemental Enhancement Information, SEI), et cetera.
-
Im Standard ist ein Zielprodukt unter Verwendung von Profilen und Ebenen grundsätzlich so definiert, dass das Zielprodukt mit adäquatem Aufwand realisiert werden kann. Der Decoder genügt bei einem entsprechenden Profil und einer entsprechenden Ebene einer vorgegebenen Randbedingung.
-
Das Profil und die Ebene können eine Funktion oder einen Parameter des Decoders so anzeigen, dass sie angeben, welche komprimierten Bilder von dem Decoder gehandhabt werden können. Durch die Profil-ID-Information kann eine spezielle Information identifiziert werden, die angibt, welches der mehreren Profile zu dem Bitstrom gehört. Die Profil-ID-Information "profile_idc" stellt ein Flag zum Identifizieren eines dem Bitstrom zugeordneten Profils zur Verfügung. Der H.264/AVC-Standard umfasst drei Profil-Identifikatoren (IDs). Wenn die Profil-ID-Information "profile_idc" auf "66" gesetzt ist, dann basiert der Bitstrom auf dem Basisprofil. Wenn die Profil-ID-Information "profile_idc" auf "77" gesetzt ist, basiert der Bitstrom auf dem Hauptprofil. Wenn die Profil-ID-Information "profile_idc" auf "88" gesetzt ist, basiert der Bitstrom auf dem erweiterten Profil. Die oben erwähnte "profile_idc"-Information kann zum Beispiel in dem SPS (Sequenz-Parametersatz) enthalten sein.
-
Offenbarung der Erfindung
-
Ein Verfahren zum Decodieren eines Videosignals umfasst nach einem Aspekt grundsätzlich ein Empfangen eines Bitstroms, der ein gemäß einem ersten Profil, das eine Auswahl von einem Satz von Profilen darstellt, der mehrere Profile für Einzelview-Videosignale und zumindest ein Profil für ein Multiview-Videosignal umfasst, kodiertes Videosignal und eine das erste Profil identifizierende Profilinformation aufweist, ein Extrahieren der Profilinformation aus dem Bitstrom und ein dem bestimmten Profil entsprechendes Decodieren des Videosignals.
-
Aspekte können eines oder mehrere der nachfolgenden Merkmale umfassen.
-
Das Verfahren weist ferner, wenn das bestimmte Profil zu einem Multiview-Videosignal gehört, ein Extrahieren einer mit mehreren Views verknüpften Konfigurationsinformation aus dem Bitstrom auf, wobei die Konfigurationsinformation eine View-Abhängigkeitsinformation, die die Abhängigkeitsbeziehungen zwischen entsprechenden Views darstellt, View-Identifizierungsinformation, die einen Referenzview angibt, Viewanzahlinformation, die die Anzahl an Views angibt, Viewebeneninformation zum Verfügung Stellen einer Viewskalierbarkeit, und Viewanordnungsinformation, die eine Kameraanordnung angibt, umfasst. Die Konfigurationsinformation kann zum Beispiel als Reaktion daraufhin extrahiert werden, dass das Profil als zu einem Multiview-Videosignal gehörend bestimmt wurde.
-
Die Profilinformation befindet sich in einem Header des Bitstroms.
-
Die View-Abhängigkeitsinformation repräsentiert die Abhängigkeitsbeziehungen in einer zweidimensionalen Datenstruktur.
-
Die zweidimensionale Datenstruktur umfasst eine Matrix.
-
Die Viewebeneninformation entspricht mehreren Ebenen, die den Views entsprechend einer hierarchischen View-Vorhersagestruktur unter den Views des Multiview-Videosignals zugeordnet sind.
-
Mehrere Bereiche eines gegebenen Bildes von Bildern eines gegebenen Views sind mit entsprechenden Identifikatoren verknüpft, die eine zugehörige Ebene angeben.
-
Die mehreren Bereiche entsprechen unabhängigen Slices des gegebenen Bildes.
-
Jedes Slice entspricht einem vollen Bild.
-
Bilder eines Views, der einer gegebenen Ebene zugeordnet ist, werden aus Bildern eines Views vorhergesagt, der einer niedrigeren Ebene als der gegebenen Ebene zugeordnet ist.
-
Bilder eines einzelnen Views, der der niedrigsten Ebene zugeordnet ist, werden nicht aus Bildern einer anderen Ebene vorhergesagt.
-
Die hierarchische View-Vorhersagestruktur umfasst einen einzelnen Basisview und mehrere Hilfsviews, wobei Bilder in einem View einer ersten Ebene auf der Basis von Bildern des Basisviews vorhergesagt werden und Bilder eines Views einer gegebenen höheren Ebene auf der Basis von Views vorhergesagt werden, die sich in niedrigeren Ebenen als der Ebene des Views der gegebenen höheren Ebene befinden.
-
Gemäß einem anderen Aspekt umfasst ein Verfahren zum Decodieren eines Multiview-Videosignals im Allgemeinen ein Empfangen eines Bitstroms, der ein den Abhängigkeitsbeziehungen zwischen den jeweiligen Views entsprechend codiertes Multiview-Videosignal aufweist, wobei die View-Abhängigkeitsinformation die Abhängigkeitsbeziehungen in einer zweidimensionalen Datenstruktur repräsentiert, sowie ein Extrahieren der zweidimensionalen Datenstruktur und ein Bestimmen der Abhängigkeitsbeziehungen aus der extrahierten Datenstruktur und ein Decodieren des Multiview-Videosignals gemäß den bestimmten Abhängigkeitsbeziehungen.
-
Aspekte können eines oder mehrere der nachfolgenden Merkmale umfassen.
-
Die zweidimensionale Datenstruktur umfasst eine Matrix.
-
Das Verfahren weist ferner ein Extrahieren von Konfigurationsinformation aus dem Bitstrom auf, die zumindest eine Viewidentifizierungsinformation, die einen Referenzview angibt, und/oder eine Viewanzahlinformation, die die Anzahl der Views angibt und/oder eine Viewebeneninformation für das zur Verfügung Stellen einer Viewskalierung, und/oder eine Viewanordnungsinformation, die eine Kameraanordnung angibt.
-
Die Viewebeneninformation entspricht mehreren Ebenen, die Views entsprechend einer hierarchischen View-Vorhersagestruktur unter den Views des Multiview-Videosignals zugeordnet sind.
-
Mehrere Bereiche eines gegebenen Bildes von Bildern eines gegebenen Views sind mit entsprechenden Identifikatoren verknüpft, die eine entsprechende Ebene angeben.
-
Die mehreren Bereiche entsprechen selbständigen Slices des gegebenen Bildes.
-
Jedes Slice entspricht einem Vollbild.
-
Bilder eines Views, dem eine gegebene Ebene zugeordnet ist, werden aus Bildern eines Views vorhergesagt, dem eine niedrigere Ebene als die gegebene Ebene zugeordnet ist.
-
Bilder eines einzelnen Views, dem die niedrigste Ebene zugeordnet ist, werden nicht aus Bildern einer anderen Ebene vorhergesagt.
-
Die hierarchische View-Vorhersagestruktur umfasst einen einzelnen Basisview und mehrere Hilfsviews, wobei Bilder in einem View einer ersten Ebene auf der Basis von Bildern in dem Basisview vorhergesagt werden und Bilder in einem View einer gegebenen höheren Ebene auf der Basis von Views vorhergesagt werden, die sich in niedrigeren Ebenen als der Ebene des Views der gegebenen höheren Ebene befinden.
-
Gemäß einem anderen Aspekt umfasst ein Verfahren zum Codieren eines Videosignals für jede der jeweiligen Decodierverfahren im Allgemeinen ein Erzeugen eines Bitstroms, der zum Decodieren in das Videosignal durch das jeweilige Decodierverfahren ausgebildet ist. Zum Beispiel weist gemäß einem anderen Aspekt ein Verfahren zum Codieren eines Bitstroms im Allgemeinen ein Ausbilden des Bitstroms in Übereinstimmung mit einem ersten Profil auf, das eine Auswahl aus einem Profilsatz repräsentiert, der mehrere Profile für Einzelview-Videosignale und wenigstens ein Profil für ein Multiview-Videosignal enthält, sowie Profilinformation, die das erste Profil identifiziert. Gemäß einem anderen Aspekt weist ein Verfahren zum Codieren eines Bitstroms im Allgemeinen ein Ausbilden des Bitstroms entsprechend den Abhängigkeitsbeziehungen zwischen den jeweiligen Views und View-Abhängigkeitsinformationen auf, die Abhängigkeitsbeziehungen in einer zweidimensionalen Datenstruktur repräsentieren.
-
Gemäß einem anderen Aspekt weist für jede der jeweiligen Decodierverfahren ein auf einem computerlesbaren Medium gespeichertes Computerprogramm im Allgemeinen Anweisungen auf, die einen Computer zur Ausführung des jeweiligen Decodierverfahrens veranlassen.
-
Gemäß einem anderen Aspekt können bei jedem der jeweiligen Decodierverfahren auf einem maschinenlesbaren Informationsträger befindliche Bilddaten im Allgemeinen durch das jeweilige Decodierverfahren in ein Videosignal decodiert werden.
-
Gemäß einem weiteren Aspekt weist für jedes der jeweiligen Decodierverfahren ein Decoder im Allgemeinen eine Einrichtung zur Ausführung des jeweiligen Decodierverfahrens auf.
-
Gemäß einem weiteren Aspekt weist für jedes der jeweiligen Decodierverfahren ein Codierer im Allgemeinen eine Einrichtung zum Erzeugen eines Bitstroms auf, der zum Decodieren in ein Videosignal mithilfe des jeweiligen Decodierverfahrens ausgebildet ist.
-
Gemäß einem weiteren Aspekt weist ein Verfahren zum Codieren einer Multiview-Sequenz im Allgemeinen ein Erzeugen eines Bitstroms durch Codieren von bei mehreren Views (d. h. Multiview) erfassten Bilder auf, wobei die Anzahl der Multiviews (m) auf 2n-1 < m ≤ 2n festgesetzt ist, und der Bitstrom einen einzelnen Basisview-Bitstrom und N hierarchische Hilfsview-Bitströme umfasst.
-
Gemäß einem anderen Aspekt wird allgemein ein Verfahren zum Codieren einer Multiview-Sequenz angegeben, die ein Erzeugen eines Bitstroms durch Codieren von Bildern aufweist, die bei mehreren zweidimensionalen (2D) Views (d. h. 2D-Multiview) erfasst wurden, wobei, wenn die Anzahl (m) des 2D-Multiview auf einer horizontalen Achse auf 2n-1 < m ≤ 2n festgesetzt ist und die Anzahl (p) des 2D-Multiview auf einer vertikalen Achse auf 2k-1 < p ≤ 2k festgesetzt ist, der Bitstrom einen einzelnen Basisview-Bitstrom und (n + k) hierarchische Hilfsview-Bitströme umfasst.
-
Gemäß einem weiteren Aspekt, wird allgemein ein Verfahren zum Decodieren einer Multiview-Sequenz angegeben, das ein Empfangen eines codierten Bitstroms von Bildern, die bei mehreren Views (d. h. Multiview) erfasst wurden, wobei der Bitstrom, wenn die Anzahl des Multiview (m) auf 2n-1 < m ≤ 2n festgesetzt ist, einen einzelnen Basisview-Bitstrom und n hierarchische Hilfsview-Bitströme umfasst, und ein selektives Decodieren des Basisview-Stroms und/oder der n hierarchischen Hilfsview-Bitströme entsprechend dem empfangenen Bitstrom aufweist.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Decodieren einer Multiview-Sequenz angegeben, das ein Empfangen eines Bitstroms codierter Bilder, die bei mehreren zweidimensionalen (2D) Views (d. h. 2D-Multiview) erfasst wurden, wobei die Anzahl (m) der 2D-Multiview auf einer horizontalen Achse auf 2n-1 < m ≤ 2n festgesetzt ist und die Anzahl (p) des 2D-Multiview auf einer vertikalen Achse auf 2k-1 < p ≤ 2k festgesetzt ist, der Bitstrom einen einzelnen Basisview-Bitstrom und (n + k) hierarchische Hilfsview-Bitströme umfasst, und ein selektives Decodieren des Basisview-Bitstroms und/oder der (n + k) hierarchischen Hilfsview-Bitströme entsprechend dem empfangenen Bitstrom aufweist.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Codieren einer Multiview-Sequenz angegeben, die ein Erzeugen eines Bitstroms durch Codieren von Bildern aufweist, die bei m Views (d. h. Multiview von m) erfasst wurden, wobei der Bitstrom einen einzelnen Basisview-Bitstrom und zumindest einen Hilfsview-Bitstrom umfasst, beide Enden des Multiview jeweils als erste Views festsetzt werden, ein Zentralview des Multiview auf einen zweiten View gesetzt wird, durch Überspringen von zumindest einem View in beide Richtungen auf Basis des zweiten Views der Reihe nach angeordnete Views jeweils als dritte Views gesetzt werden, die von den ersten bis dritten Views verschiedenen anderen Views jeweils als vierte Views gesetzt werden und ein beliebiger der ersten bis dritten Views als Basisview zum unabhängigen Codieren bestimmt wird, während die verbleibenden, vom Basisview verschiedenen Views als Hilfsviews zur Vorhersagecodierung (predictive coding) festgesetzt werden.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Codieren einer Multiview-Sequenz angegeben, das ein Erzeugen eines Bitstroms durch Codieren von Bildern aufweist, die bei m Views (d. h. Multiview von m) erfasst wurden, wobei der Bitstrom einen einzelnen Basisview-Bitstrom und zumindest einen Hilfsview-Bitstrom umfasst, die Position des Basisview auf einen an einem zentralen Teil des Multiview gelegenen View gesetzt wird, Positionen eines zweiten Hilfsviews auf Views gesetzt werden, die an beiden Enden des Multiview angeordnet sind, und Positionen eines ersten Hilfsview durch Überspringen von zumindest einem View in beide Richtungen auf Basis des Basisview der Reihe nach angeordnet werden.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Decodieren einer Multiview-Sequenz angegeben, die ein Empfangen eines codierten Bitstroms von Bildern aufweist, die bei m Views (d. h. Multiview von m) erfasst wurden, wobei der Bitstrom einen einzelnen Basisview-Bitstrom und zumindest einen Hilfsview-Bitstrom umfasst, ein Basisview-Bild von dem empfangenen Bitstrom durch unabhängiges Decodieren von Daten eines Zentralviews des Multiviews rekonstruiert wird, ein Bild eines ersten Hilfsviews unter Verwendung des Basisview-Bildes aus dem empfangenen Bitstrom rekonstruiert wird, wobei der erste Hilfsview von Views gebildet wird, die durch Überspringen von zumindest einem View in beide Richtungen auf Basis des Basisview der Reihe nach angeordnet sind, und wobei ein Bild des zweiten Hilfsviews unter Verwendung des Basisview-Bildes aus dem empfangenen Bitstrom rekonstruiert wird, wobei die zweiten Hilfsviews von Views gebildet werden, die zu beiden Seiten des Multiview angeordnet sind.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Decodieren einer Multiview-Sequenz angegeben, die ein Empfangen eines codierten Bitstroms von Bildern, die bei m Views (d. h. Multiview von m) erfasst wurden, wobei der Bitstrom einen einzelnen Basisview-Bitstrom und zumindest einen Hilfsview-Bitstrom umfasst, ein Auslesen von Positionsinformation eines Basisviews aus dem empfangenen Bitstrom, ein Erfassen der Positionen des Basisview und des Hilfsview über die Positionsinformation und ein Rekonstruieren von Bildern des Basisview und des Hilfsview aufweist, wobei die Positionsinformation des Basisview auf einen beliebigen der zu beiden Seiten des Multiview gelegenen ersten View, einen am Zentrum des Multiview gelegenen zweiten View und einen durch Überspringen von zumindest einem in beide Richtungen auf Basis des zweiten Views der Reihe nach angeordneten dritten Views hinweist.
-
Gemäß einem weiteren Aspekt umfasst ein Verfahren zum Codieren einer Videosequenz im Allgemeinen ein Auswählen von zumindest einem Profil aus mehreren Profilen, wenn ein Bitstrom erzeugt wird, sowie ein Einbinden von zumindest einer mit einer Videosequenz verknüpften Konfigurationsinformation in das Profil.
-
Gemäß einem weiteren Aspekt wird allgemein ein Verfahren zum Decodieren einer Videosequenz angegeben, das ein Extrahieren von zumindest einer Profilinformation aus einem empfangenen Bitstrom, ein Extrahieren von zumindest einer in dem Profil enthaltenen Konfigurationsinformation auf Basis der extrahierten Profilinformation und ein Decodieren des Bitstroms unter Verwendung der extrahierten Konfigurationsinformation aufweist.
-
Gemäß einem weiteren Aspekt wird allgemein eine Vorrichtung zum Codieren einer Videosequenz angegeben, die eine Einrichtung zur Auswahl von zumindest einem Profil aus mehreren Profilen, wenn ein Bitstrom erzeugt wird, und eine Einrichtung zur Einbindung von zumindest einer Konfigurationsinformation der empfangenen Videosequenz in das ausgewählte Profil aufweist.
-
Gemäß einem weiteren Aspekt wird allgemein eine Vorrichtung zum Decodieren einer Videosequenz angegeben, die eine Einrichtung zum Extrahieren von zumindest einer Profilinformation aus dem empfangenen Bitstrom, eine Einrichtung zum Extrahieren von zumindest einer in dem Profil enthaltenen Konfigurationsinformation auf Basis der extrahierten Profilinformation und eine Einrichtung zum Decodieren des Bitstroms unter Verwendung der extrahierten Konfigurationsinformation aufweist.
-
Aspekte können einen oder mehrere der nachfolgenden Vorteile aufweisen.
-
Das Verfahren zum Codieren/Decodieren einer Multiview-Sequenz, kann die Multiview-Sequenz effektiv codieren. Beim Codieren der Multiview-Sequenz können einzelne Views während dem Decodieren der Multiview-Sequenz hierarchisch dargestellt werden. Das Verfahren erstellt während dem Codieren der Multiview-Sequenz eine Vorhersagestruktur von Bildern individueller Views. Daher kann das Verfahren die Vorhersagestruktur auch bei zunehmender Multiview-Anzahl und Erweiterung der Anordnung in der selben Weise wie bei den oben erwähnten bevorzugten Ausführungsformen erweitern. Außerdem führt das Verfahren eine Viewskalierbarkeitsfunktion des Multiviews unter Verwendung einer hierarchischen Struktur so aus, dass es den Decodier-/Codiervorgang so durchführen kann, dass er sich für diverse am empfangsseitigen Ende vorhandene Anzeigevorrichtungen eignet, woraus sich die Realisierung eines effektiven Codier-/Decodiersystems ergibt.
-
Das Verfahren zum Codieren/Decodieren einer Videosequenz überträgt die "num_Views"-Information, die dem Codierer und Decoder bei der Abwicklung einer mit mehreren Kameras erfassten Multiview-Sequenz die Anzahl der Views bekannt gibt. Das Codier-/Decodierverfahren kann einen Referenzview bestimmen, der als Basis des gesamten View fungiert. Die Referenzviewsequenzen können unabhängig voneinander ohne Bezug auf andere Viewsequenzen codiert werden. Das Codier-/Decodierverfahren kann den Codier-/Decodiervorgang durch Bezug auf die "view_arrangement"-Information individuellen Anordnungen entsprechend effektiv ausführen.
-
Das Codier-/Decodierverfahren kann den Profiltyp identifizieren, kann eine Vielzahl von mit einer Videosequenz verknüpften Konfigurationen hinzufügen und kann den Codier-/Decodiervorgang unter Verwendung der hinzugefügten Information effektiv ausführen.
-
Andere Merkmale und Vorteile werden aus der nachfolgenden Beschreibung und den Ansprüchen ersichtlich.
-
Kurzbeschreibung der Figuren
-
1 stellt ein Beispiel einer Decodiervorrichtung dar.
-
2 stellt ein Strukturschema dar, das die Syntax eines Sequenzparametersatzes RBSP veranschaulicht.
-
3A stellt ein Strukturschema dar, das einen Bitstrom veranschaulicht, der nur eine Sequenz aufweist.
-
3B stellt ein Strukturdiagram dar, das einen Bitstrom veranschaulicht, der zwei Sequenzen aufweist.
-
4A bis 4C stellen grafische Darstellungen zur Veranschaulichung exemplarischer Group of GOP(GGOP)-Strukturen dar.
-
5 stellt ein Flussdiagram zur Veranschaulichung eines Verfahrens zum Decodieren einer Videosequenz dar.
-
6A/6B, 7A/7B, und 8 stellen grafische Darstellungen zur Veranschaulichung von Beispielen für Multiview-Sequenz-Vorhersagestrukturen dar.
-
9A, 9B stellen grafische Darstellungen zur Veranschaulichung einer hierarchischen Vorhersagestruktur zwischen mehreren Viewpunkten der Multiview-Sequenzdaten dar.
-
10A, 10B stellen grafische Darstellungen zur Veranschaulichung einer Vorhersagestruktur von zweidimensionalen (2D) Multiview-Sequenzdaten dar.
-
11A bis 11C stellen grafische Darstellungen zur Veranschaulichung einer Multiview-Sequenz-Vorhersagestruktur dar.
-
12 stellt eine grafische Darstellung zur Veranschaulichung eines hierarchischen Codier-/Decodiersystems dar.
-
Beste Ausführungsform der Erfindung
-
Zur effektiven Handhabung einer Multiview-Sequenz enthält ein Eingangsbitstrom Information, die es einer Decodiervorrichtung ermöglicht zu bestimmen, ob sich der Eingangsbitstrom auf ein Multiviewprofil bezieht. Falls festgestellt wird, dass sich der Eingangsbitstrom auf ein Multiviewprofil bezieht, wird dem Bitstrom eine, einer Syntax entsprechende, mit der Multiview-Sequenz verknüpfte ergänzende Information hinzugefügt und zum Decoder übertragen. Die Multiviewprofil-ID kann zum Beispiel einen Profilmodus zur Bearbeitung von Multiview-Videodaten entsprechend einem Zusatz des H.264/AVC-Standards angeben.
-
Die MVC-(Multiview-Videocodier-)Technologie stellt eine Zusatztechnologie des H.264/AVC-Standards dar. Das heißt, dass eine spezifische Syntax als ergänzende Information für einen MVC-Modus hinzugefügt wird. Eine solche Novellierung zur Unterstützung der MVC-Technologie kann effektiver sein als eine alternative, bei der eine unbedingte Syntax verwendet wird. Falls der Profil-Identifikator der AVC-Technologie zum Beispiel auf ein Multiviewprofil hinweist, kann das Anfügen einer Multiview-Sequenzinformation die Codierleistung erhöhen.
-
Der Sequenzparametersatz (SPS) eines H.264/AVC-Bitstroms ist ein Beispiel für eine Headerinformation, die eine mit der Codierung der Gesamtsequenz verknüpfte Information (z.B. ein Profil und eine Ebene) umfasst.
-
Die Gesamtheit der komprimierten Laufbilder (d. h. eine Sequenz) kann an einem Sequenzheader so beginnen, dass ein der Headerinformation entsprechender Sequenzparametersatz (SPS) früher am Decoder eintrifft als Daten, auf die durch den Parametersatz Bezug genommen wird. In der Folge fungiert der Sequenzparametersatz RBSP am Eintrag S1 (2) als Headerinformation komprimierter Daten von Laufbildern. Falls der Bitstrom empfangen wird, identifiziert die Profil-ID-Information "profile_idc", welches der Profile unter den mehreren Profilen zu dem empfangenen Bitstrom gehört.
-
Die Profil-ID-Information "profile_idc" kann zum Beispiel auf "MULTI_VIEW_PROFILE" gesetzt werden, so dass die, die Profil-ID-Information enthaltende, Syntax bestimmen kann, ob sich der empfangene Bitstrom auf ein Multiview-Profil bezieht. Die nachfolgende Konfigurationsinformation kann hinzugefügt werden, wenn sich der empfangene Bitstrom auf das Multiview-Profil bezieht.
-
1 stellt ein Blockschema zur Veranschaulichung eines Beispiels für eine Decodiervorrichtung (oder "Decoder") eines Multiview-Videosystems zum Decodieren eines Videosignals, das eine Multiview-Videosequenz enthält, dar. Das Multiview-Videosystem umfasst eine entsprechende Codiervorrichtung (oder "Codierer"), um die Multiview-Videosequenz als Bitstrom zur Verfügung zu stellen, der auf einem maschinenlesbaren Informationsträger (z.B. ein maschinenlesbares Speichermedium oder ein maschinenlesbares Energiesignal, das zwischen einem Sender und einem Empfänger übertragen wird) manifestierte codierte Bilddaten umfasst.
-
Wie 1 zu entnehmen ist, umfasst die Decodiervorrichtung eine Parsereinheit 10, eine Entropiedecodiereinheit 11, eine inverse Quantisierungs-/inverse Transformationseinheit 12, eine Inter-Vorhersageeinheit 13, eine Intra-Vorhersageeinheit 14, einen Entblockungs-Filter (deblocking filter) 15 und einen Pufferspeicher 16 für decodierte Bilder.
-
Die Inter-Vorhersageeinheit 13 umfasst eine Bewegungskompensationseinheit 17, eine Beleuchtungskompensationseinheit 18 und eine Beleuchtungskompensationsoffsetvorhersageeinheit 19.
-
Die Parsereinheit 10 leistet eine Syntaxanalyse der in NAL-Einheiten empfangenen Videosequenz zum Decodieren der empfangenen Videosequenz. Typischerweise werden einer oder mehrerer Sequenzparametersätze und Bildparametersätze an einen Decoder übertragen, bevor ein Sliceheader und Slicedaten decodiert werden. In diesem Fall kann der NAL-Header oder ein Erweiterungsbereich des NAL-Headers eine Vielzahl von Konfigurationsinformationen umfassen, zum Beispiel zeitliche Ebeneninformation, View-Ebeneninformation, Ankerbild(anchor picture)-ID-Information und View-ID-Information et cetera.
-
Der Ausdruck "Zeitebeneninformation" ist ein Beispiel für eine hierarchische Strukturinformation zum Bereitstellen einer zeitlichen Skalierbarkeit aus dem Videosignal so, dass einem Benutzer Sequenzen einer Vielzahl von Zeitzonen mittels der oben erwähnten zeitlichen Ebeneninformation zur Verfügung gestellt werden können.
-
Der Ausdruck "View-Ebeneninformation" ist ein Beispiel für eine hierarchische Strukturinformation zum Bereitstellen einer View-Skalierbarkeit aus dem Videosignal. Die Multiview-Videosequenz kann die zeitliche Ebene und die Viewebene so definieren, dass dem Benutzer entsprechend der definierten zeitlichen Ebene und Viewebene eine Vielzahl von zeitlichen Sequenzen und Viewsequenzen zur Verfügung gestellt werden können.
-
Auf diese Weise kann der Benutzer, falls die Ebeneninformation wie oben beschrieben definiert ist, die zeitliche Skalierbarkeit und die Viewskalierbarkeit verwenden. Der Benutzer kann eine Sequenz daher einer gewünschten Zeit bzw. Ansicht (view) entsprechend betrachten oder kann eine Sequenz entsprechend einer anderen Beschränkung betrachten. Die oben erwähnte Ebeneninformation kann Referenzbedingungen entsprechend auf vielfältige Weise erstellt werden. Zum Beispiel kann die Ebeneninformation entsprechend einer Kameraposition geändert werden und auch einem Kameraanordnungstyp entsprechend geändert werden. Außerdem kann die Ebeneninformation auch willkürlich ohne spezielle Referenz erstellt werden.
-
Der Ausdruck "Ankerbild" bezeichnet ein codiertes Bild, in dem sich alle Slices ausschließlich auf Slices in einem aktuellen View und nicht auf Slices in anderen Views beziehen. Zum Multview-Sequenzdecodieren kann ein wahlfreier Zugriff (random access) zwischen den Views verwendet werden.
-
Zur Ausführung eines Direktzugriffvorgangs (random access process) für den Zugriff auf Daten eines speziellen Views ohne Erfordernis eines Decodierens einer größeren Datenmenge kann eine Ankerbild-ID-Information verwendet werden.
-
Der Ausdruck "View-ID-Information" bezeichnet eine spezielle Information zur Unterscheidung zwischen einem Bild eines aktuellen View und einem Bild eines anderen Views. Zur Unterscheidung eines Bildes von anderen Bildern beim Codieren eines Videosequenzsignals kann ein Bildfolgezähler (picture order count, POC) und eine Einzelbildnummerinformation (frame number information, frame_num) verwendet werden.
-
Wenn eine aktuelle Sequenz als eine Multiview-Videosequenz bestimmt wird, kann eine Inter-View-Vorhersage durchgeführt werden. Zur Unterscheidung eines Bildes eines aktuellen Views von einem Bild eines anderen Views wird ein Identifikator verwendet.
-
Zur Angabe eines Views eines Bildes kann ein View-Identifikator definiert werden. Die Decodervorrichtung kann eine Information eines Bildes in einem von einem View des aktuellen Bildes verschiedenen View unter Verwendung des oben erwähnten View-Identifikators erhalten, so dass es das Videosignal unter Verwendung der Information des Bildes decodieren kann. Der oben erwähnte View-Identifikator kann auf den gesamten Codier-/Decodiervorgang des Videosignals angewandt werden. Ferner kann der oben erwähnte View-Identifikator auch auf den Multiview-Videocodiervorgang unter Verwendung der Einzelbildnummerinformation "frame_num", die einen View berücksichtigt, angewandt werden.
-
Üblicherweise weist die Multiviewsequenz eine große Datenmenge auf, wobei zur Verarbeitung der großen Datenmenge eine hierarchische Codierfunktion eines jeden View (auch "View-Skalierbarkeit" genannt) verwendet werden kann. Für die Ausführung der View-Skalierbarkeitsfunktion kann eine Vorhersagestruktur bestimmt werden, die die Views der Multiviewsequenz berücksichtigt.
-
Die oben erwähnte Vorhersagestruktur kann durch Strukturieren der Vorhersagereihenfolge oder Richtung der mehreren Viewsequenzen definiert werden. Sind zum Beispiel mehrere zu codierende Viewsequenzen gegeben, dann wird eine Zentralposition der Gesamtanordnung als Basisview so gesetzt, dass zu codierende Viewsequenzen hierarchisch ausgewählt werden können. Als Basisview können das Ende der Gesamtanordnung oder andere Teile festgelegt werden.
-
Wenn sich die Anzahl der Kameraviews in Form einer Zweierpotenz darstellen lässt, kann eine hierarchische Vorhersagestruktur zwischen mehreren Viewsequenzen auf Basis des oben erwähnten Falls der durch eine Zweierpotenz bezeichneten Kameraviews gebildet werden. Falls dagegen die Anzahl der Kameraviews nicht durch eine Zweierpotenz gekennzeichnet ist, können virtuelle Views verwendet werden, und die Vorhersagestruktur kann auf Basis der virtuellen Views gebildet werden. Wenn die Kameraanordnung eine zweidimensionale Anordnung wiedergibt, kann die Vorhersagereihenfolge durch Richtungsänderungen in eine horizontale oder vertikale Richtung erstellt werden.
-
Eine Entropie-Decodierung eines geparsten Bitstroms erfolgt an einer Entropie-Decodiereinheit (entropy decoding unit) 11, wobei Daten wie beispielsweise ein Koeffizient eines jeden Makroblocks, ein Bewegungsvektor, usw. extrahiert werden. Die inverse Quantisierungs-/inverse Transformationseinheit 12 multipliziert einen empfangenen Quantisierungswert mit einer vorgegebenen Konstante, um einen transformierten Koeffizientenwert zu akquirieren, und führt eine inverse Transformation des gewonnenen Koeffizientenwerts so durch, dass sie einen Bildpunktwert rekonstruiert. Die Inter-Vorhersageeinheit 13 führt eine Inter-Vorhersagefunktion von decodierten Stücken des aktuellen Bildes unter Verwendung des rekonstruierten Bildpunktwerts aus.
-
Zur selben Zeit wird der Entblockungsfilter 15 auf jeden decodierten Makroblock angewandt, um den Grad der Blockverzerrung zu reduzieren. Der Entblockungsfilter 15 führt eine Glättung der Blockkanten so durch, dass eine Bildqualität des decodierten Einzelbildes verbessert wird. Die Auswahl eines Filtervorgangs hängt von Randstärke und Gradient eines nahe des Randes angeordneten Bildstückes ab. Die gefilterten Bilder werden in dem Pufferspeicher 16 für decodierte Bilder so gespeichert, dass sie ausgegeben oder als Referenzbilder verwendet werden können.
-
Der Pufferspeicher 16 für decodierte Bilder speichert oder gibt vorcodierte Bilder aus, um die Inter-Vorhersagefunktion auszuführen. Hierbei werden die Einzelbildnummerinformation "frame_num" und POC(Bildfolgezähler)-Information der Bilder zum Speichern oder Ausgeben der vorcodierten Bilder verwendet. Im Falle der MVC-Technologie können in den oben erwähnten vorcodierten Bildern Bilder eines anderen Views enthalten sein. Daher kann zur Verwendung der oben erwähnten Bilder als Referenzbilder bei Bedarf nicht nur die "frame_num"- und die POC-Information, sondern auch ein View-Identifikator, der einen Bildview angibt, verwendet werden.
-
Die Inter-Vorhersageeinheit 13 führt die Inter-Vorhersage unter Verwendung der in dem Pufferspeicher 16 für decodierte Bilder gespeicherten Referenzbilder durch. Der inter-codierte Makroblock kann in Makroblock-Partitionen unterteilt sein. Jede Makroblock-Partition kann durch ein oder zwei Referenzbilder vorhergesagt werden.
-
Die Bewegungskompensationseinheit 17 kompensiert eine Bewegung des aktuellen Blocks unter Verwendung der von der Entropie-Decodiereinheit 11 erhaltenen Information. Die Bewegungskompensationseinheit 17 extrahiert aus dem Videosignal Bewegungsvektoren von zum aktuellen Block benachbarten Blocks und erhält eine Bewegungsvektorvorhersage des aktuellen Blocks. Die Bewegungskompensationseinheit 17 kompensiert die Bewegung des aktuellen Blocks durch Verwendung eines Differenzwertes zwischen dem Bewegungsvektor und einer aus dem Videosignal der erhaltenen Bewegungsvektorvorhersage extrahierten Vorhersage. Die oben erwähnte Bewegungskompensation kann mithilfe von nur einem Referenzbild durchgeführt werden, sie kann aber auch mithilfe von mehreren Referenzbildern durchgeführt werden.
-
Daher kann, falls die oben erwähnten Referenzbilder als Bilder von anderen, zum aktuellen View verschiedenen Views bestimmt werden, die Bewegungskompensation entsprechend einem die anderen Views anzeigenden View-Identifikator durchgeführt werden.
-
Ein Direktmodus bezeichnet einen Codiermodus zum Vorhersagen von Bewegungsinformation des aktuellen Blocks auf Basis der Bewegungsinformation eines vollständig decodierten Blocks. Der oben erwähnte Direktmodus kann die Anzahl der zum Codieren der Bewegungsinformation erforderlichen Anzahl an Bit verringern, woraus sich eine erhöhte Komprimierungseffizienz ergibt.
-
Zum Beispiel sagt ein zeitlicher Direktmodus eine Bewegungsinformation des aktuellen Blocks unter Verwendung einer Korrelation der Bewegungsinformation in einer zeitlichen Richtung voraus. Ähnlich dem zeitlichen Direktmodus kann der Decoder die Bewegungsinformation des aktuellen Blocks unter Verwendung einer Korrelation der Bewegungsinformation in einer View-Richtung vorhersagen.
-
Falls der empfangene Bitstrom einer Multiview-Sequenz entspricht, können Viewsequenzen jeweils durch verschiedene Kameras so erfasst worden sein, dass aufgrund von, bezüglich der Kameras, internen oder externen Faktoren ein Beleuchtungsunterschied auftreten kann. Um die mit dem Beleuchtungsunterschied verknüpfte potentielle Ineffizienz zu reduzieren, führt eine Beleuchtungskompensationseinheit 18 eine Beleuchtungskompensationsfunktion aus.
-
Bei der Ausführung der Beleuchtungskompensationsfunktion kann eine Flag-Information verwendet werden, die anzeigt, ob eine Beleuchtungskompensation bei einer bestimmten Ebene eines Videosignals ausgeführt wird. Die Beleuchtungskompensationseinheit 18 kann zum Beispiel die Beleuchtungskompensationsfunktion unter Verwendung einer Flag-Information auswählen, die angibt, ob die Beleuchtungskompensation eines entsprechenden Slices oder Makroblocks ausgeführt wird. Ferner kann das oben erwähnte Verfahren zur Ausführung der Beleuchtungskompensation unter Verwendung der oben erwähnten Flag-Information auf eine Vielzahl von Makroblocktypen (z.B. einen Inter-16×16-Modus, einen B-Überspring-Modus, einen Direktmodus, usw.) angewandt werden.
-
Zur Rekonstruktion des aktuellen Blocks bei einer Durchführung der Beleuchtungskompensation kann eine Information eines benachbarten Blocks oder Information eines Blocks in zu einem View des aktuellen Blocks verschiedenen Views verwendet werden, wobei auch ein Offsetwert des aktuellen Blocks verwendet werden kann.
-
Hierbei bezeichnet der Offsetwert des aktuellen Blocks einen Differenzwert zwischen einem durchschnittlichen Bildpunktwert des aktuellen Blocks und einem durchschnittlichen Bildpunktwert eines dem aktuellen Block zugehörigen Referenzblocks. Um ein Beispiel für die Verwendung des oben erwähnten Offsetwerts anzugeben, kann eine Vorhersage des Offsetwerts des aktuellen Blocks unter Verwendung des zum aktuellen Block benachbarten Blocks erhalten werden, wobei ein Residuumwert zwischen dem Offsetwert und der Vorhersage verwendet werden kann. Daher kann der Decoder den Offsetwert des aktuellen Blocks unter Verwendung des Residuumwerts und der Vorhersage rekonstruieren.
-
Um die Vorhersage des aktuellen Blocks zu erhalten, kann bei Bedarf Information der benachbarten Blocks verwendet werden.
-
Beispielsweise kann der Offsetwert des aktuellen Blocks unter Verwendung des Offsetwerts eines Nachbarblocks vorhergesagt werden. Vor einem Vorhersagen eines Offsetwerts des aktuellen Blocks wird bestimmt, ob der Referenzindex des aktuellen Blocks gleich einem Referenzindex des Nachbarblocks ist. Entsprechend den Bestimmungsergebnis kann die Beleuchtungskompensationseinheit 18 bestimmen, welcher der benachbarten Blöcke verwendet werden wird bzw. welcher Wert verwendet werden wird.
-
Die Beleuchtungskompensationseinheit 18 kann die Beleuchtungskompensation unter Verwendung eines Vorhersagetyps des aktuellen Blocks durchführen. Falls der aktuelle Block mittels zweier Referenzblöcke vorhersagecodiert ist, kann die Beleuchtungskompensationseinheit 18 einen zu jedem Referenzblock gehörenden Offsetwert unter Verwendung des Offsetwerts des aktuellen Blocks erhalten.
-
Wie oben beschrieben, werden die von der Beleuchtungskompensation und Bewegungskompensation akquirierten Inter-Vorhersagebilder oder Intra-Vorhersagebilder entsprechend einem Vorhersagemodus ausgewählt, und das aktuelle Bild rekonstruiert.
-
In diesem Dokument werden später eine Vielzahl von Beispielen von Codier-/Decodierverfahren zur Rekonstruktion eines aktuellen Bildes beschrieben. 2 stellt ein Strukturschema dar, das eine Syntax eines Sequenzparametersatzes RBSP veranschaulicht.
-
Wie aus 2 ersichtlich, bezeichnet ein Sequenzparametersatz eine Headerfunktion, die mit der Codierung der Gesamtsequenz verknüpfte Information (z.B. ein Profil und eine Ebene) umfasst.
-
Die gesamte komprimierte Sequenz kann an einem Sequenzheader beginnen, so dass ein der Headerinformation entsprechendes Sequenzparametersatz früher am Decoder eintrifft, als sich auf den Parametersatz beziehende Daten. In der Folge fungiert der Sequenzparametersatz (RBSP) bei Schritt S1 als mit den resultierenden Daten komprimierter Laufbilder verknüpfte Headerinformation. In Schritt S2 bestimmt die "profile_idc"-Information bei Erhalt des Bitstroms, welches der Profile von den mehreren Profilen dem empfangenen Bitstrom entspricht. Wenn "profile_idc" 16 zum Beispiel auf "66" gesetzt ist, dann gibt dies an, dass der empfangene Bistrom auf einem Basisprofil basiert. Wenn "profile_idc" auf "77" gesetzt ist, gibt dies an, dass der empfangene Bitstrom auf einem Hauptprofil basiert. Falls "profile_idc" auf "88" gesetzt ist, so gibt es an, dass der empfangene Bitstrom auf einem erweiterten Profil basiert. Schritt S3 verwendet die Syntax "If(profile_idc) == MULTI_VIEW_PROFILE)", um zu Bestimmen, ob sich der empfangene Bitstrom auf ein Multiviewprofil bezieht.
-
Falls sich der empfangene Bitstrom in Schritt S3 auf das Multiviewprofil bezieht, kann dem empfangenen Bitstrom eine Vielzahl von Informationen der Multiviewsequenzen hinzugefügt werden.
-
Die "reference_view"-Information repräsentiert einen Referenzview eines gesamten Views und kann dem Bitstrom eine mit dem Referenzview verknüpfte Information hinzufügen. Üblicherweise codiert oder decodiert eine MVC-Technik eine Referenzviewsequenz unter Verwendung eines Codierschemas, das für eine Einzelsequenz verwendet werden kann (z.B. den H.264/AVC-Codec). Wenn der Referenzview zu der Syntax hinzugefügt wird, gibt die Syntax an, welcher View von den vielen Views als Referenzview gesetzt werden wird.
-
Als oben erwähnter Referenzview fungiert ein als Codierreferenz fungierender Basisview. Bilder des Referenzviews werden unabhängig ohne Bezugnahme auf ein Bild eines anderen View codiert.
-
Die Anzahl der Views (num_views) kann spezielle Information hinzufügen, die die Anzahl der durch mehrere Kameras erfassten Multiviews angibt. Die Viewzahl (num_views) einer jeden Sequenz kann auf unterschiedliche Weise gesetzt werden. Die "num_views"-Information wird an einem Codierer oder Decoder übertragen, so dass der Codierer und Decoder in Schritt S5 die "num_views"-Information ungehindert verwenden können.
-
Eine Kameraanordnung (view_arrangement) bezeichnet einen Anordnungstyp der Kameras beim Erfassen einer Sequenz. Durch Hinzufügen von "view_arrangement"-Information zur Syntax kann der Codiervorgang effektiv so ausgeführt werden, dass er für individuelle Anordnungen geeignet ist. Sodann kann, wenn ein neues Codierverfahren entwickelt wird, eine unterschiedliche "view_arrangement"-Information verwendet werden.
-
Die Einzelbildzahl "temporal_units_size" bezeichnet die Anzahl von nacheinander codierten/decodierten Einzelbildern eines jeden Views. Falls erforderlich kann auch eine spezielle Information zur Anzeige der Einzelbildzahl hinzugefügt werden. Etwas ausführlicher zeigt die "temporal_units_size"-Information, unter der Voraussetzung, dass ein aktueller N-ter View codiert/decodiert wird und ein M-ter View als nächstes codiert/decodiert werden wird, an, wie viele Einzelbider des N-ten Views zunächst verarbeitet werden, bevor dann der M-te View verarbeitet wird. Durch die "temporal_units_size"-Information und die "num_views"-Information kann das System bestimmen, welche Views von den mehreren Views zu jedem Einzelbild gehören. Falls als "temporal_units_size"-Information eine erste Länge von dem I-Slice zu dem P-Slice einer jeden Viewsequenz, eine zweite Länge zwischen den P-Slices oder eine einem vielfachen der ersten und der zweiten Länge entsprechenden Länge gesetzt wird, kann die "temporal-units_size"-Information bei nur einem View verarbeitet werden und dann mit dem nächsten View fortfahren. Die "temporal_units_size"-Information kann gleich oder kleiner als die herkömmliche GOP-Länge sein. Die 4B~4C zeigen zum Beispiel die GGOP-Struktur zur Erläuterung des "temporal_units_size"-Konzepts. In 4B ist die "temporal_units_size"-Information hierbei auf "3" gesetzt. In 4C ist die "temporal_units_size"-Information auf "1" gesetzt.
-
Bei einigen Beispielen ordnet das MVC-Verfahren mehrere Einzelbilder so entlang einer Zeitachse und einer Viewachse an, dass es einer "temporal_units_size" von "1" entsprechend bei einem jeden der Views am selben Zeitwert jeweils ein einzelnes Einzelbild verarbeiten kann und dann bei einem jeden der Views am nächsten Zeitwert ein einzelnes Einzelbild verarbeiten kann. Als Alternative kann das MVC-Verfahren einer "temporal_units_size" von "N" entsprechend N Einzelbilder aus dem selben View verarbeiten und dann die N Einzelbilder des nächsten Views verarbeiten. Da üblicherweise zumindest ein Einzelbild verarbeitet wird, kann der Syntax "temporal_units_size_minus1" hinzugefügt werden, um darzustellen, wie viele zusätzliche Einzelbilder verarbeitet werden. Die oben erwähnten Beispiele können daher in Schritt S7 jeweils durch "temporal_units_size_minus1 = 0" und "temporal_units_size_minus1 = N-1" bezeichnet werden.
-
Die Profile des herkömmlichen Codierschemas weisen kein gemeinsames Profil auf, so dass ferner ein Flag verwendet wird, um die Kompatibilität anzuzeigen. "constraint_set*_flag"-Information gibt an, welches der Profile den Bitstrom unter Verwendung eines Decoders decodieren kann. "constraint_set0_flag"-Information gibt an, dass der Bitstrom in Schritt S8 durch einen Decoder des Basisprofils decodiert werden kann. "constraint_set1_flag"-Information gibt an, dass der Bitstrom in Schritt S9 durch einen Decoder des Hauptprofils decodiert werden kann. "constraint_set2_flag"-Information gibt an, dass der Bitstrom in Schritt S10 durch einen Decoder des erweiterten Profils decodiert werden kann. Es besteht daher ein Bedarf an einer Definition des "MULTI_VIEW_PROFILE"-Decoders, wobei der "MULTI_VIEW_PROFILE"-Decoder in Schritt S11 durch eine "constraint_set4_flag"-Information definiert werden kann.
-
Die "level_idc"-Information bezeichnet einen Ebenenidentifikator. Die "Ebene" bezeichnet allgemein die Fähigkeit des Decoders und die Komplexität des Bitstroms und bezieht sich auf die in den oben erwähnten Profilen in Schritt S12 vorgegebenen technischen Elemente.
-
Die "seq_parameter_set_id"-Information bezeichnet eine SPS(Sequenzparametersatz)-ID-Information, die in dem SPS (Sequenzparametersatz) enthalten ist, um in Schritt S13 Sequenztypen zu identifizieren.
-
3A stellt ein Strukturschema dar, das einen Bitstrom veranschaulicht, der nur eine Sequenz enthält.
-
Wie 3A entnommen werden kann, bezeichnet der Sequenzparametersatz (SPS) eine Headerinformation, die eine mit der Gesamtsequenzcodierung verknüpfte Information (z.B. ein Profil und eine Ebene) umfasst. Die ergänzende Zusatzinformation (supplemental enhancement information, SEI) bezeichnet eine ergänzende Information, die für den Decodiervorgang einer Laufbild-(d.h. Sequenz)Codierebene nicht erforderlich ist. Der Bildparameterset (PPS) stellt eine Headerinformation dar, die einen Codiermodus des gesamten Bildes angibt. Das I-Slice führt lediglich einen Intra-Codiervorgang aus. Das P-Slice führt den Intra-Codiervorgang oder den Inter-Vorhersagecodiervorgang aus. Der Bildseparator (picture delimiter) bezeichnet eine Grenze zwischen Videobildern. Das System wendet die SPS-RBSP-Syntax auf den oben erwähnten SPS an. Daher setzt das System die oben erwähnte Syntax während einem Erzeugen des Bitstroms ein, so dass es einem gewünschten Objekt eine Vielzahl von Informationen hinzufügen kann.
-
3B stellt eine strukturelle graphische Darstellungen dar, die einen Bitstrom veranschaulicht, der zwei Sequenzen aufweist.
-
Wie aus 3B ersichtlich, kann die H.264/AVC-Technologie eine Vielzahl von Sequenzen unter Verwendung eines einzelnen Bitstroms handhaben. In der SPS umfasst der SPS zum Identifizieren einer Sequenz SPS-ID-Information (seq_parameter_set_id). Die SPS-ID-Information ist in dem PPS (Bildparameterset) so vorgegeben, dass sie die das Bild enthaltende Sequenz identifiziert. Ferner ist die PPS-ID-Information (pic_parameter_set_id) in dem Sliceheader so vorgegeben, dass die "pic_parameter_set_id"-Information den zu verwendenden PPS identifizieren kann.
-
Zum Beispiel umfasst ein Header des Slice #1 von 3B eine in Bezug zu nehmende PPS-ID-Information (pic_parameter_set-id), die mit ➀ bezeichnet ist. Der PPS#1 umfasst die mit ➁ bezeichnete in Bezug genommene SPS-ID-Information (SPS = 1). Daher kann erkannt werden, dass das Slice #1 zur Sequenz #1 gehört. Auf diese Weise kann auch erkannt werden, dass das Slice #2 wie durch ➂ und ➃ gekennzeichnet, zur Sequenz #2 gehört. Tatsächlich werden das Basisprofil und das Hauptprofil zum Erzeugen eines neuen Videobitstroms addiert und editiert. In diesem Fall werden zwei Bitströmen unterschiedliche SPS-ID-Informationen zugeordnet. Jeder der zwei Bitströme kann bei Bedarf auch in ein Multiviewprofil umgewandelt werden.
-
4A zeigt eine exemplarische Group Of GOP(GGOP)-Struktur (Bildgruppen-Gruppenstruktur). 4B und 4C zeigen eine GGOP-Struktur zur Erläuterung eines "temporal_units_size"-Konzepts. GOP bezeichnet eine Datengruppe von einigen Bildern. Zur effektiven Durchführung des Codierprozesses verwendet MVC das GGOP-Konzept zur Durchführung einer räumlichen Vorhersage und zeitlichen Vorhersage.
-
Falls als "temporal_units_size"-Information eine erste Länge zwischen dem I-Slice und dem P-Slice einer jeden Viewsequenz, eine zweite Länge zwischen den P-Slices, oder eine einem Vielfachen der ersten oder zweiten Länge entsprechende dritte Länge gesetzt wird, kann die "temporal_units_size"-Information bei nur einem View verarbeitet werden und kann dann zum nächsten View übergehen. Die "temporal_units_size"-Information kann gleich oder kleiner als die herkömmliche GOP-Länge sein. Zum Beispiel ist in 4B die "temporal_units_size"-Information auf "3" gesetzt. In 4C ist die "temporal_units_size"-Information auf "1" gesetzt. Insbesondere können in 4B, falls die "temporal_units_size"-Information durch "temporal_units_size > 1" gekennzeichnet ist und einer oder mehrere Views an dem I-Einzelbild beginnen, (temporal_units_size > 1) Einzelbilder verarbeitet werden. Ferner kann das System durch Bezug auf die oben erwähnte "temporal_units_size"- und "num_views"-Information erkennen, welcher der Views von den mehreren Views zu jedem Einzelbild der Gesamtsequenz gehört.
-
In 4A sind die einzelnen Einzelbilder entlang einer Zeitachse und einer Viewachse angeordnet. Die Bilder von V1~V8 zeigen jeweils eine GOP an. Die als Basis-GOP fungierende V4 wird als Referenz-GOP der anderen GOPs verwendet. Wenn die "temporal_units_size"-Information auf "1" gesetzt ist, verarbeitet das MVC-Verfahren Einzelbilder der einzelnen Views an der selben Zeitzone und kann dann die Einzelbilder der einzelnen Views an der nächsten Zeitzone aufbereiten. Die Bilder von T1~T4 geben Einzelbilder einzelner Views an der selben Zeitzone an. Mit anderen Worten kann das MVC-Verfahren zunächst die T1-Einzelbilder verarbeiten, um dann mehrere Einzelbilder in der Reihenfolge von T4 → T2 → T3 → ... bearbeiten. Wenn die "temporal_units_size"-Information auf "N" gesetzt ist, kann das MVC-Verfahren zunächst N Einzelbilder in Richtung der Zeitachse innerhalb eines einzelnen Views verarbeiten und dann die N Einzelbilder am nächsten View verarbeiten. Mit anderen Worten, wenn die "temporal_units_size"-Information auf "4" gesetzt ist, kann das MVC-Verfahren zunächst in den T1-~T4-Einzelbildern enzhaltene Einzelbilder der V4 GOP verarbeiten, und kann dann mehrere Einzelbilder in der Reihenfolge von V1 → V2 → V3 → ... verarbeiten.
-
Bei einem Erzeugen des Bitstroms nach 4A wird daher die Anzahl der Views (num_views) auf "8" gesetzt, wobei der Referenzview auf die V4 GOP (Group of Pictures, Bildergruppe) gesetzt wird. Die Anzahl der Einzelbilder (temporal_units_size) bezeichnet die Anzahl von nacheinander codierten/decodierten Einzelbildern eines jeden Views. Falls daher in 4A die Einzelbilder eines jeden View an der gleichen Zeitzone verarbeitet werden, wird die "temporal_unit_size"-Information auf "1" gesetzt. Falls innerhalb eines einzelnen Views die Einzelbilder in Richtung der Zeitachse verarbeitet werden, wird die "temporal_unit_size"-Information auf "N" gesetzt. Die oben erwähnte Information wird dem Bitstromerzeugungsvorgang hinzugefügt.
-
5 stellt ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Decodieren einer Videosequenz dar.
-
Wie 5 zu entnehmen ist, werden aus dem empfangenen Bitstrom eine oder mehrere Profilinformationen extrahiert. Hierbei kann die extrahierte Profilinformation zumindest eines von mehreren Profilen (z.B. das Basisprofil, das Hauptprofil, und das Multiviewprofil) sein. Die oben erwähnte Profilinformation kann in Schritt S51 entsprechend den eingegangenen Videosequenzen geändert werden. Aus der extrahierten Profilinformation wird zumindest eine in dem oben erwähnten Profil enthaltene Konfigurationsinformation extrahiert. Zum Beispiel werden, wenn sich die extrahierte Profilinformation auf das Multiviewprofil bezieht, in Schritt S53 eine oder mehrere in dem Multiviewprofil enthaltene Konfigurationsinformationen (d.h. "reference_view", "num_views", "view_arrangement", und "temporal_units_size") extrahiert. Auf diese Weise wird die oben erwähnte extrahierte Information zum Decodieren des multiviewcodierten Bitstroms verwendet.
-
Die 6A–6B stellen grafische Darstellungen zur Veranschaulichung einer Multiviewsequenz-Vorhersagestruktur gemäß einem ersten Beispiel dar.
-
Wie aus den 6A–6B ersichtlich ist, wird die Multiviewzahl (m) unter der Voraussetzung, dass die Anzahl (m) von mehreren Viewpunkten (d.h. Multiviewzahl) auf 2n (d.h. m = 2n) gesetzt ist Bei n = 0 ist die Multiviewzahl (m) auf "1" gesetzt. Bei n = 1 ist die Multiviewzahl (m) auf "2" gesetzt. Bei n = 2 ist die Multiviewzahl (m) auf "4" gesetzt. Bei n = 3 ist die Multiviewzahl (m) auf "8" gesetzt. Daher umfasst der Bitstrom, wenn die Multiviewzahl (m) auf 2n-1 < m < 2n gesetzt ist, einen einzelnen Basisview-Bitstrom und n-hierarchische Hilfsview-Bitströme.
-
Namentlich bezeichnet der Ausdruck "Basisview" einen Referenzview unter mehreren Viewpunkten (d.h. dem Multiview). Mit anderen Worten wird eine dem Basisview enstprechende Sequenz (d.h. Laufbilder) durch allgemeine Videocodierschemata (z.B. MPEG-2, MPEG-4, H.263 und H.264, usw.) so codiert, dass diese in der Form eines selbständigen Bitstroms erzeugt wird. Der einfacheren Beschreibung halber wird dieser selbständige Bitstrom als "Basisview-Bitstrom" bezeichnet.
-
Der Ausdruck "Hilfsview" bezeichnet die verbleibenden, von dem oben erwähnten Basisview verschieden, Views der mehreren Viewpunkte (d.h. dem Multiview). Mit anderen Worten bildet eine dem Hilfsview entsprechende Sequenz einen Bitstrom durch Ausführen einer Disparitätsschätzung der Basisviewsequenz, wobei dieser Bitstrom als "Hilfsview-Bitstrom" bezeichnet wird.
-
Im Falle des Durchführens eines hierarchischen Codiervorgangs (d.h. eines Viewskalierbarkeitsvorgangs) zwischen mehreren Viewpunkten (d.h. dem Multiview) wird der oben erwähnte Hilfsview-Bitstrom in einen ersten Hilfsview-Bitstrom, einen zweiten Hilfsview-Bitstrom und einen n-ten Hilfsview-Bitstrom eingeteilt.
-
Der Ausdruck "Bitstrom" kann, soweit erforderlich, den oben erwähnten Basisview-Bitstrom und den oben erwähnten Hilfsview-Bitstrom umfassen.
-
Wenn die Multiviewzahl (m) zum Beispiel auf "8" (n = 3) gesetzt ist, umfasst der Bitstrom einen einzelnen Basisview und drei hierarchische Hilfsviews. Wenn der Bitstrom einen einzelnen Basisview und n-hierarchische Hilfsviews umfasst, wird bevorzugt, dass eine den Basisview des Multiview darstellende Position und eine den jeweiligen hierarchischen Hilfsview darstellende Position durch allgemeine Regeln definiert werden. Wie ersichtlich, bezeichnen die quadratischen Flächen der 6A–6B einzelne Viewpunkte. Bei denen in den quadratischen Flächen enthaltenen Zahlensymbolen bezeichnet die Nummer "0" einen Basisview, die Nummer "1" bezeichnet einen ersten hierarchischen Hilfsview, die Nummer "2" bezeichnet einen zweiten hierarchischen Hilfsview und die Nummer "3" bezeichnet einen dritten hierarchischen Hilfsview. In diesem Beispiel der 6A–6B sind als Multiviewvideosequenz ein Maximum von 8 Viewpunkten exemplarisch offenbart, es ist jedoch darauf hinzuweisen, dass die Multiviewzahl nicht auf "8" beschränkt ist und auf andere Beispiele bei Bedarf eine beliebige Multiviewzahl angewandt werden kann.
-
Wie der 6A zu entnehmen ist, werden jeweilige Basisviews und Hilfsviews durch die folgenden Regeln bestimmt. Zunächst wird die Position des Basisviews auf einen 2n-1-ten View gesetzt. Bei zum Beispiel n = 3 wird der Basisview auf einen vierten View gesetzt. Die 6A–6B zeigen einen exemplarischen Fall, bei dem der Anfangsview an der äußerst rechten Seite angeordnet ist. Als Basisview wird ein, einer vierten Stelle von dem äußersten rechten View 61 entsprechender, spezieller View verwendet. Vorzugsweise kann die Position des Basisviews an einer speziellen Position in der Nähe eines innerhalb des Multiview zentralen Views angeordnet werden oder kann auf den zentralen View des Multiviews gesetzt werden, da der Basisview als Referenz zur Durchführung des (Vorhersagechiffrier-) oder Vorhersagecodiervorgangs von anderen Hilfsviews verwendet werden kann.
-
Der äußerst linke View wird, um ein weiteres Beispiel anzugeben, als Anfangsview gesetzt, wobei die Anzahl (m) der Viewpunkte (d. h. die Multiviewzahl) in der Reihenfolge von m = 0 → m = 1 → m = 2 → m = 3, ... angeordnet werden kann. Zum Beispiel kann bei n = 3 die 2n-1-te Multiviewzahl (d. h. m = 4) als Basisview gesetzt werden.
-
Die Position des ersten hierarchischen Hilfsview kann auf einen linksseitigen View gesetzt werden, der zu dem oben erwähnten Basisview in einem Ausmaß von 2n-2 beabstandet ist, oder auf einen rechtsseitigen View, der von dem oben erwähnten Basisview in einem Ausmaß von 2n-2 beabstandet ist. 6A zeigt zum Beispiel einen exemplarischen Fall, bei dem ein von dem Basisview um 2n-2 Views in Richtung links beabstandeter Viewpunkt (d. h. zwei Viewpunkte im Fall von n = 3) als erster hierarchischer Hilfsview festgelegt wird. Demgegenüber zeigt 6B einen exemplarischen Fall, bei dem ein von dem Basisview um 2n-2 Views in Richtung rechts beabstandeter Viewpunkt als erster hierarchischer Hilfsview festgelegt wird. In dem oben erwähnten Beispiel ist die Nummer des ersten hierarchischen Hilfsviews auf "1" gesetzt.
-
Die Position des zweiten hierarchischen Hilfsview kann auf einen linksseitigen View gesetzt werden, der zu dem Basisview in einem Ausmaß von 2n-2 beabstandet ist, oder auf einen rechtsseitigen View, der von dem ersten hierarchischen Hilfsview in einem Ausmaß von 2n-2 beabstandet ist. In dem oben erwähnten Fall der 6A werden zum Beispiel zwei zweite hierarchische Hilfsviews erzeugt. Da es bei dem oben erwähnten Fall der 6B keinen zum ersten hierarchischen Hilfsview in einem Ausmaß von 2n-2 in Richtung rechts beabstandeten View gibt, wird ein zum Basisview in einem Ausmaß von 2n-2 in Richtung links beabstandeter Viewpunkt als zweiter hierarchischer Hilfsview festgelegt.
-
Als zweiter hierarchischer Hilfsview 63 kann auch ein von dem zweiten hierarchischen Hilfsview in einem Ausmaß von 2n-2 in Richtung links beabstandeter Viewpoint festgesetzt werden. Falls der Viewpunkt jedoch zu einem der beiden Enden des Multiview gehört, kann der oben erwähnte Viewpunkt als dritter hierarchischer Hilfsview bestimmt werden. In dem Fall von 6B werden einer oder zwei zweite hierarchische Hilfsviews erzeugt.
-
Schließlich wird die Position des dritten hierarchischen Hilfsviews auf die verbleibenden, von den oben erwähnten als Basisview sowie erstem und zweiten hierarchischen Hilfsview gewählten Viewpunkten verschiedenen, Viewpunkte gesetzt. In 6A werden vier dritte hierarchische Hilfsviews erzeugt. In 6B werden vier oder fünf dritte hierarchische Hilfsviews erzeugt.
-
Die 7A–7B stellen konzeptionelle graphische Darstellungen zur Veranschaulichung einer Multiview-Sequenz-Vorhersagestruktur gemäß einem zweiten Beispiel dar.
-
Das in den 7A–7B illustrierte zweite Beispiel ist dem oben erwähnten ersten Beispiel der 6A–6B konzeptionell ähnlich, doch sollte darauf hingewiesen werden, dass die 7A–7B den Anfangsview zur Wahl des Basisviews im Unterschied zu den 6A–6B an der äußersten linken Seite angeordnet zeigen. Mit anderen Worten wird ein zur äußerst linken Seite 65 beabstandeter vierter View als Basisview gewählt. Die übrigen zu dem oben erwähnten Unterschied verschiedenen Teile sind in den 7A–7B die selben wie jene der 6A–6B.
-
8 stellt eine konzeptionelle graphische Darstellung einer Multiview-Sequenz-Vorhersagestruktur gemäß einem dritten Beispiel dar.
-
Das in 8 veranschaulichte dritte Beispiel zeigt einen exemplarischen Fall, bei dem die Multiviewzahl (m) auf 2n-1 < m ≤ 2n gesetzt ist. Genauer genommen zeigt 8 diverse Fälle, die mit m = 5, m = 6, m = 7, m = 8 bezeichnet sind. Bei m = 5, 6 und 7 erfüllt die Multiviewzahl (m) nicht die Bedingung m = 2n, so dass bei dem System ohne Vornahme von Änderungen Schwierigkeiten bezüglich einer Realisierung des oben erwähnten ersten Beispiels der 6A–6B und des oben erwähnten zweiten Beispiels der 7A–7B bestehen. Um das vorstehend genannte Problem zu lösen, setzt das System ein Konzept virtueller Views so ein, dass das vorgenannte Problem durch das Konzept der virtuellen Views umgangen wird.
-
Zum Beispiel werden, wenn 2n-1 < m ≤ 2n, 2n-m virtuelle Views erzeugt. Ist die Multiviewzahl (m) eine ungerade Zahl, dann werden an der linken Seite (oder der rechten Seite) der Multiviewanordnung (2n – m + 1)/2 virtuelle Views erzeugt, während an der rechten Seite (oder der linken Seite) der Multiviewanordnung (2n – m – 1)/2 virtuelle Views erzeugt werden. Ist die Multiviewzahl (m) eine gerade Zahl, dann werden an der linken Seite und der rechten Seite der Multiviewanordnung jeweils (2n – m)/2 virtuelle Views erzeugt. Die obengenannte Vorhersagestruktur kann auf die resultierenden virtuellen Views dann in der selben Weise angewandt werden.
-
Wenn die Multiviewzahl (m) zum Beispiel auf "5" gesetzt ist, wird der Multiview m = 8 virtuell durch Hinzufügen von einem oder zwei virtuellen Views an jedes der beiden Enden des jeweiligen Multiview gebildet, und die Position des Basisviews und die Positionen von drei hierarchischen Hilfsviews werden ausgewählt. Wie aus 8 ersichtlich werden zwei virtuelle Views an das linksseitige Ende und ein virtueller View wird an das rechtsseitige Ende angehängt, so dass der Basisview und und der erste bis dritte hierarchische Hilfsview entsprechend dem vorgenannten Beispiel der 6A gewählt werden.
-
Wenn die Multiviewzahl (m) zum Beispiel auf "6" gesetzt ist, wird der Multiview m = 8 virtuell durch Hinzufügen von einem einzelnen virtuellen View an jedes der beiden Enden des Multiviews gebildet, und die Position des Basisview und die Positionen der drei hierarchischen Hilfsviews werden entsprechend gewählt. Wie aus 8 ersichtlich werden der Basisview und der erste bis dritte hierarchische Hilfsview entsprechend dem vorgenannten Beispiel der 6A gewählt.
-
Wenn die Multiviewzahl (m) zum Beispiel auf "7" gesetzt ist, wird der Multiview m = 8 virtuell durch Hinzufügen eines einzelnen virtuellen Views an eines der beiden Enden des Multiviews gebildet, und die Position des Basisview und die Positionen der drei hierarchischen Hilfsviews werden entsprechend gewählt. Wie aus 8 ersichtlich wird an das linksseitige Ende ein einzelner virtueller View angefügt, so dass der Basisview und der erste bis dritte Hilfsview entsprechend dem vorgenannten Beispiel der 6A gewählt werden.
-
Die 9A–9B stellen konzeptionelle graphische Darstellungen zur Veranschaulichung einer hierarchischen Vorhersagestruktur zwischen mehreren Viewpunkten von Multiview-Sequenzdaten dar. 9A zeigt zum Beispiel das Ausführungsbeispiel des Falles von 6A, und 9B zeigt das Ausführungsbeispiel des Falles von 7A. Genauer genommen werden, wenn die Multiviewzahl (m) auf "8" gesetzt ist, der Basisview und drei hierarchische Hilfsviews so zur Verfügung gestellt, dass die hierarchische Codierung (oder "View-Skalierbarkeit") zwischen mehreren Viewpoints während des Codierens der Multiview-Sequenz verfügbar ist.
-
Mit den oben erwähnten hierarchischen Hilfsview-Bitströmen realsierte einzelne Bilder werden auf Basis eines Bildes des Basisview und/oder eines Bildes eines oberen hierarchischen Hilfsview-Bildes so abgeschätzt/vorhergesagt, dass die Codierung des resultierenden Bildes durchgeführt wird. Insbesondere wird als oben erwähnte Abschätzung üblicherweise die Disparitäts-Abschätzung verwendet.
-
Zum Beispiel führt der erste hierarchische Hilfsview 92 den Abschätzungs-/Codiervorgang zwischen Viewpunkten (d. h. Abschätzungs-/Codiervorgang des Multiview) durch Bezugnahme auf den Basisview 91 aus. Die zweiten hierarchischen Hilfsviews (93a und 93b) führen den Abschätzungs-/Codiervorgang zwischen Viewpunkten durch Bezugnahme auf den Basisview 91 und/oder den ersten hierarchischen Hilfsview 92 aus. Die dritten hierarchische Hilfsviews (94a, 94b, 94c und 94d) führen den Abschätzungs-/Codiervorgang zwischen Viewpunkten durch Bezugnahme auf den Basisview und den ersten hierarchischen Hilfsview 92 und/oder die zweiten hierarchischen Hilfsviews (93a und 93b) aus. In den Zeichnungen geben die Pfeile Ablaufrichtungen des zuvor oben in Verbindung mit der vorstehend angegebenen Beschreibung erwähnten Multiview-Abschätzungs-/Codiervorgangs an, und man kann erkennen, dass sich in der selben Hierarchie enthaltene Hilfsströme bei Bedarf auf unterschiedliche Views beziehen. Der vorstehend genannte hierarchisch codierte Bitstrom wird am empfangsseitigen Ende entsprechend den Anzeigeeigenschaften selektiv decodiert, wobei eine genauere Schilderung dessen später unter Bezugnahme auf die 12 dargelegt wird.
-
Im Allgemeinen kann die Vorhersagestruktur des Codierers so in eine andere Struktur abgeändert werden, dass der Decoder die Vorhersagestrukturbeziehungen der Bilder einzelner Views problemlos mittels Übertragung von Information erkennen kann, die die Beziehungen der einzelnen Views angibt. Ferner kann auch spezielle Information an den Decoder übertragen werden, die angibt, welche der Ebenen der gesamten View-Hierarchie die einzelnen Views enthält.
-
Unter der Voraussetzung, dass den jeweiligen Bildern (oder Slices) eine Viewebene (view_level) zugewiesen wird und zwischen den Bildern der Views eine Abhängigkeitsbeziehung gegeben ist, kann der Decoder selbst dann, wenn die Vorhersagestruktur durch den Codierer auf verschiedenste Weise verändert wurde, die veränderte Vorhersagestruktur erkennen. In diesem Fall kann die Vorhersagestruktur-/Richtungsinformation der jeweiligen Views in Form einer Matrix ausgebildet sein, so dass die matrixartige Vorhersagestruktur-/Richtungsinformation an einen Bestimmungsort übertragen wird. Mit anderen Worten wird an den Decoder die Anzahl der Views (num_view) übertragen, und ferner können die Abhängigkeitsbeziehungen der jeweiligen Views durch eine zweidimensionale (2D) Matrix dargestellt werden.
-
Wenn sich die Abhängigkeitsbeziehungen der Views mit der Zeit ändern, zum Beispiel, wenn sich die Abhängigkeitsbeziehungen der ersten Einzelbilder eines jeden GOP von denen der anderen Einzelbilder der verbleibenden Zeitzonen unterscheiden, kann die mit den einzelnen Fällen verknüpfte Abhängigkeitsbeziehungsmatrix-Information übertragen werden.
-
Die 10A–10B stellen konzeptionelle graphische Darstellungen zur Veranschaulichung einer Vorhersagestruktur einer zweidimensionalen (2D) Multiviewsequenz gemäß einem vierten Beispiel dar.
-
Die oben angegebenen ersten bis dritten Beispiele offenbarten Beispiele eines Multiview einer eindimensionalen Anordnung. Es sollte darauf hingewiesen werden, dass diese bei Bedarf auch auf eine zweidimensionale (2D) Multiviewsequenz angewandt werden können.
-
In den 10A–10B geben Quadrate einzelne in zweidimensionaler Form angeordnete Views an, wobei in den Quadraten enthaltene Zahlensymbole die Beziehungen der hierarchischen Views anzeigen.
-
Wenn die Nummer eines Quadrats zum Beispiel in der Form "A-B" gestaltet ist, gibt "A" einen zugehörigen hierarchischen Hilfsview an und "B" gibt eine Priorität in dem selben hierarchischen Hilfsview an.
-
Soweit es die in den quadratischen Flächen enthaltenen Zahlensymbole betrifft, gibt die Zahl "0" einen Basisview, die Zahl "1" einen ersten hierarchischen Hilfsview, die Zahl "2-1" oder "2-2" einen zweiten hierarchischen Hilfsview, die Zahl "3-1" oder "3-2" einen dritten hierarchischen Hilfsview, die Zahl "4-1", "4-2" oder "4-3" einen vierten hierarchischen Hilfsview und die Zahl "5-1", "5-2" oder "5-3" einen fünften hierarchischen Hilfsview an.
-
Abschließend lässt sich sagen, dass im Falle eines Erzeugens eines Bitstroms durch Codieren von Bildern, die aus dem zweidimensionalen (2D) Multiview erlangt wurden, der oben genannte Bitstrom, wenn die 2D-Multiviewzahl (m) entlang einer horizontalen Achse 2n-1 < m ≤ 2n und die Multiviewzahl (p) entlang einer vertikalen Achse 2k-1 < m ≤ 2k ist, einen einzigen Basisview-Bitstrom und (n + k) hierarchische Hilfsview-Bitströme aufweist.
-
Genauer gesagt werden die oben genannten (n + k) hierarchischen Hilfsviews abwechselnd entlang der horizontalen und der vertikalen Achse gebildet. Zum Beispiel wird ein erster hierarchischer Hilfsview der (n + k) hierarchischen Hilfsviews von 10A an der den Basisview enthaltenden vertikalen Achse positioniert. Ein erster hierarchischer Hilfsview der (n + k) hierarchischen Hilfsviews von 10B wird an der den Basisview enthaltenden horizontalena Achse positioniert.
-
Zum Beispiel umfasst der Bitstrom wie in 10A gezeigt, wenn die Multiviewzahl entlang der horizontalen Achse (m) auf "8" gesetzt ist (d. h. n = 3) und die Multiviewzahl entlang der vertikalen Achse (p) auf "4" gesetzt ist (d. h. k = 2), einen einzigen Basisview und fünf hierarchische Hilfsviews. In Verbindung mit der oben angegebenen Beschreibung zeigt 10A, dass die hierarchischen Hilfsviews in der Reihenfolge "vertikale Achse → horizontale Achse → vertikale Achse ..." ausgewählt werden. Ein Verfahren zum Bestimmen von Positionen des Basisview und der hierarchischen Hilfsviews wird hiernach wie folgt beschrieben.
-
Zunächst wird die Position des Basisview in der selben Weise bestimmt, wie bei der oben angegebenen eindimensionalen Anordnung. Daher wird die Position des Basisview als ein spezieller View entsprechend einer 2n-1-ten Position in Richtung der horizontalen Achse und einer 2k-1-ten Position in Richtung der vertikalen Achse bestimmt.
-
Die Position eines ersten hierarchischen Hilfsviews wird, wie mit ➀ bezeichnet, als zur Position des Basisview in Richtung der vertikalen Achse im Ausmaß von 2k-2 beabstandeter oberseitiger View oder unterseitiger View festgelegt. Die Positionen der zweiten hierarchischen Hilfsviews werden als linksseitige Views, wie mit ➁ bezeichnet, oder rechtsseitige Views festgelegt, die von der Position des Basisviews und des ersten hierarchischen Hilfsviews in Richtung der horizontalen Achse im Ausmaß von 2n-2 beabstandet sind. Als Positionen der dritten hierarchischen Hilfsviews werden die Views bestimmt, die in der vertikalen Achse, die nicht nur die ersten und zweiten hierarchischen Hilfsviews, sondern auch den Basisview enthält, verbleiben. Die Position des vierten hierarchischen Hilfsviews wird als linkseitiger View oder rechtsseitiger View bestimmt, der zu den ersten bis dritten hierarchischen Hilfsviews und dem Basisview in Richtung der horizontalen Achse im Ausmaß von 2n-2 beabstandet ist. Die Positionen der fünften hierarchischen Hilfsviews werden schließlich als die verbleibenden Views festgelegt, die von dem Basisview und den ersten bis vierten hierarchischen Hilfsviews verschieden sind.
-
Wie aus 10B ersichtlich ist, umfasst der Bitstrom zum Beispiel, wenn die Multiviewzahl entlang der horizontalen Achse (m) auf "8" gesetzt ist (d. h. n = 3) und die Multiviewzahl entlang der vertikalen Achse (p) auf "4" gesetzt ist (d. h. k = 2), einen einzelnen Basisview und fünf hierarchische Hilfsviews. In Verbindung mit der oben angegebenen Beschreibung zeigt 10B, dass die hierarchischen Hilfsviews in der Reihenfolge "horizontale Achse → vertikale Achse → horizontale Achse ..." ausgewählt werden. Ein Verfahren zum Bestimmen von Positionen des Basisview und der hierarchischen Hilfsviews wird hiernach wie folgt beschrieben.
-
Zunächst wird die Position des Basisview in der selben Weise bestimmt, wie bei der oben angegebenen eindimensionalen Anordnung. Daher wird die Position des Basisview als ein spezieller View entsprechend einer 2n-1-ten Position in Richtung der horizontalen Achse und einer 2k-1-ten Position in Richtung der vertikalen Achse bestimmt.
-
Die Position des ersten hierarchischen Hilfsviews wird, wie mit ➀ bezeichnet, als zur Position des Basisview in Richtung der horizontalen Achse im Ausmaß von 2n-2 beabstandeter linksseitiger View oder rechtsseitiger View festgelegt. Die Positionen der zweiten hierarchischen Hilfsviews werden als oberseitige Views, wie mit ➁ bezeichnet, oder unterseitige Views festgelegt, die von dem Basisview und dem ersten hierarchischen Hilfsview in Richtung der vertikalen Achse im Ausmaß von 2k-1 beabstandet sind. Als Positionen der dritten hierarchischen Hilfsviews werden die linksseitigen und rechtsseitigen Views bestimmt, die von dem Basisview und den ersten hierarchischen Hilfsviews in Richtung der horizontalen Achse im Ausmaß von 2n-2 beabstandet sind. Die Positionen der vierten hierarchischen Hilfsviews werden als die Views bestimmt, die in der vertikalen Achse, die nicht nur die ersten bis dritten hierarchischen Hilfsviews, sondern auch den Basisview enthält, verbleiben. Die Positionen der fünften hierarchischen Hilfsviews werden schließlich als die verbleibenden Views festgelegt, die sich von dem Basisview und den ersten bis vierten hierarchischen Hilfsviews unterscheiden.
-
Die 11A–11C stellen konzeptionelle graphische Darstellungen zur Veranschaulichung einer Multiviewsequenz-Vorhersagestruktur gemäß einem fünften Beispiel dar. Das in den 11A–11C veranschaulichte fünfte Beispiel weist Vorhersagestrukturregeln auf, die sich von jenen des oben erwähnten ersten bis dritten Beispiels unterscheiden. Zum Beispiel geben die quadratischen Flächen der 11A–11C einzelne Views an, während die in den quadratischen Flächen enthaltenen Zahlensymbole die Reihenfolge der View-Vorhersage angeben. Mit anderen Worten bedeutet, soweit die in den quadratischen Flächen enthaltenen Zahlensymbole betroffen sind, die Zahl "0" einen ersten vorhergesagten View (oder einen ersten View), die Zahl "1" einen zweiten vorhergesagten View (oder zweiten View), die Zahl "2" einen dritten vorhergesagten View (oder dritten View) und die Zahl "3" einen vierten vorhergesagten View (oder vierten View).
-
11A zeigt zum Beispiel Bestimmungsformate des ersten bis vierten Views für den Fall, dass die Multiviewzahl (m) mit m = 1~m = 10 gekennzeichnet ist. Die ersten bis vierten Views werden mithilfe der folgenden Regeln bestimmt.
-
Zum Beispiel werden beide Enden des Multiview als erster View (0), und der Zentralview des Multiviews wird als zweiter View (1) gesetzt. Als dritte Views (2) werden jeweils Views gesetzt, die der Reihe nach durch Überspringen von zumindest einem View in beide Richtungen auf Basis des zweiten Views (1) angeordnet sind. Die verbleibenden, von den ersten bis dritten Views verschiedenen Views werden jeweils als vierte Views (3) gesetzt. Wenn die ersten bis dritten Views wie oben beschrieben bestimmt werden, besteht eine Notwendigkeit zur Unterscheidung zwischen Basisview und Hilfsview. Zum Beispiel wird von dem ersten View, dem zweiten View oder dem dritten View einer als Basisview gesetzt, und die verbleibenden vom Basisview verschiedenen Views können als Hilfsviews gesetzt werden.
-
Vorausgesetzt, dass der Basisview durch die oben beschriebenen vorgegebenen Regeln nicht bestimmt und vom Codierer beliebig gewählt wird, kann in dem Bitstrom eine Identifizierungsinformation (ID-Information) (d. h. "base_view_position") für die Position des Basisview enthalten sein.
-
11B zeigt ein anderes Beispiel der Bestimmung des zweiten View (1). Genauer zeigt 11B an anderes, vom Beispiel der 11A insofern verschiedenes Beispiel, dass es einen exemplarischen Fall zeigt, bei dem die verbleibenden, von dem ersten View (0) verschiedenen, Views auf ungerade Zahlen gesetzt werden. Mit anderen Worten kann sich der zweite View (1) bei m = 4, m = 6, m = 8 oder m = 10 von 11B von dem zweiten View (1) von 11A bei Bedarf unterscheiden. Als weiteres Beispiel können, im Falle eines Bestimmens von nach dem zweiten View (1) positionierten Views, obere Views durch aufeinanderfolgendes Überspringen eines einzelnen Views auf Basis des ganz linken ersten Views (0) bestimmt werden.
-
11C zeigt in Verbindung mit der vorstehend angegebenen Beschreibung einen exemplarischen Fall, bei dem die Multiviewzahl (m) 10 ist (d. h. m = 10) und der (einem sechsten View entsprechende) Basisview des Multiview mittels der Basisview-ID-Information als "base_view_position = '1' view" gekennzeichnet ist. Zum Beispiel wird, wie aus 11C ersichtlich ist, der erste hierarchische Hilfsview auf den dritten View (2) gesetzt, der zweite hierarchische Hilfview wird auf den ersten View (0) gesetzt, und der dritte hierarchische Hilfsview wird auf den vierten View (3) gesetzt.
-
In Verbindung mit der oben angegebenen Beschreibung kann der Basisview in den 11A–11C auch wie in 11C gezeigt auf den ersten View (1) gesetzt werden. Der Grund hierfür ist, dass bei einer Anordnung des Basisview an einer speziellen Position in der Nähe des Zentralteils des Multiview oder einer Anordnung am Zentralteil des Multiview der Abschätzungs-/Codiervorgang der anderen Hilfsviews effektiv durchgeführt werden kann. Daher können die Position des Basisview und die Position des Hilfsviews gemäß den nachfolgenden Regeln bestimmt werden.
-
Mit anderen Worten wird die Position des Basisview auf den Zentralview (1) des Multiview gesetzt, die Position des zweiten Hilfsviews wird auf die Views an jedem der beiden Enden des Multiviews gesetzt, und die Position des ersten Hilfsviews wird auf den View (2) gesetzt, der der Reihe nach durch Überspringen von zumindest einem View in beide Richtungen auf Basis des Basisview angeordnet ist. Die verbleibenden, von den oben erwähnten Views verschiedenen Views (3), werden alle als dritte Hilfsviews gesetzt.
-
Im Zusammenhang mit der vorstehenden Beschreibung werden, wenn die Multiviewzahl (m) gleich oder kleiner als "7" (d. h. m ≤ 7) ist, nur zwei oder weniger Views zwischen dem Basisview (1) und dem zweiten Hilfsview (0) angeordnet, alle zwischen dem Basisview (1) und dem zweiten Hilfsview (0) angeordnete Views werden jeweils auf die ersten Hilfsviews (2) gesetzt.
-
Wenn die Multiviewzahl (m) gleich oder größer als "8" ist (d. h. m≥8) und lediglich zwei oder weniger Views zwischen dem zweiten Hilfsview (0) und dem ersten Hilfsview (2) angeordnet sind, werden alle zwischen dem zweiten Hilfsview (0) und dem ersten Hilfsview (2) angeordneten Views jeweils auf die dritten Views (3) gesetzt.
-
Zum Beispiel lässt sich erkennen, wenn wie in den 11A~11C dargestellt m = 8, m = 9 und m = 10, dass ein oder zwei zwischen dem zweiten Hilfsview (0) und dem ersten Hilfsview (2) angeordnete Views jeweils auf den dritten Hilfsview (3) gesetzt werden.
-
Als weiteres Beispiel, wenn nur zwei oder weniger Views zwischen dem Basisview (1) und dem zweiten Hilfsview (0) angeordnet sind, können alle zwischen dem Basisview (1) und dem zweiten Hilfsview (0) angeordneten Views jeweils auf die dritten Hilfsviews (3) gesetzt werden. Zum Beispiel kann wie in den 11A~11C gezeigt, wenn m = 8, erkannt werden, dass zwei zwischen dem Basisview (1) und dem zweiten Hilfsview (0) angeordnete Views jeweils auf die dritten Hilfsviews (3) gesetzt werden.
-
Bei Verwendung des Basisview und der Hilfsviews, wie sie durch das oben angebenene Verfahren bestimmt sind, kann die View-Skalierbarkeit zwischen den Views (oder Viewpunkten) durchgeführt werden.
-
Zum Beispiel werden, wenn die Multiviewzahl (m) gleich oder kleiner "7" ist (d. h. m ≤ 7), ein einzelner Basisviewstrom und zwei hierarchische Hilfsview-Bitströme erzeugt. Zum Beispiel kann der zweite Hilfsview (0) auf den ersten hierarchischen Hilfsview gesetzt werden, wobei der erste Hilfsview (2) auch auf den zweiten hierarchischen Hilfsview gesetzt werden kann.
-
Wenn die Multiviewzahl (m) zum Beispiel gleich oder größer "8" (d. h. m ≥ 8) ist, d. h., wenn m = 8, m = 9 oder m = 10, werden ein einziger Basis-Bitstrom und drei hierarchische Hilfsview-Bitströme erzeugt. Zum Beispiel wird der erste Hilfsview (2) als erster hierarchischer Hilfsview gewählt, der zweite Hilfsview (0) wird als erster hierarchischer Hilfsview gewählt, und der dritte Hilfsview (3) wird als dritter hierarchischer Hilfsview gewählt.
-
12 stellt eine konzeptionelle graphische Darstellung zur Veranschaulichung eines hierarchischen Verfahrens zum Codieren/Decodieren einer Multiview-Sequenz dar.
-
12 lässt erkennen, dass der Codierer am übertragenden Ende die View-Skalierbarkeitsfunktion der Multiview-Sequence unter Verwendung von modifizierten Verfahren, die mithilfe der ersten bis fünften Ausführungsformen vorhergesagt werden können, und im ersten bis fünften Beispiel gezeigte Verfahren zum Erzeugen eines Bitstroms durchführt, und den Bitstrom dann an das empfangsseitige Ende überträgt.
-
Das Decodierverfahren und die Decodiervorrichtung empfangen daher den mit den oben erwähnten Eigenschaften ausgebildeten Bitstrom, Decodieren den empfangenen Bitstrom und Erzeugen decodierte Daten für jede der Hierarchien. Danach können unter Verwendung der von jeder Hierarchie decodierten Daten, entsprechend der Wahl eines Benutzers oder Bildschirms diverse Anzeigearten realisiert werden.
-
Zum Beispiel eignet sich eine Basisebene 121 zur ausschließlichen Reproduktion von Daten des Basisviews für eine 2D-Anzeige 125. Eine erste Erweiterungsebene #1 (122) zur gemeinsamen Reproduktion von Daten des Basisviews und Daten des ersten hierarchischen Hilfsviews eignet sich für eine aus einer Kombination von 2D-Bildern gebildeten Stereoanzeige 126. Eine zweite Erweiterungsebene #2 (123) zur gemeinsamen Reproduktion von Daten des Basisviews, Daten des ersten hierarchischen Hilfsviews und Daten des zweiten hierarchischen Hilfsviews eignet sich für eine Multiview-Anzeige 127 mit geringer Auflösung zur 3D-Reproduktion der Multiview-Sequenz. Eine dritte Erweiterungsebene #3 zum gemeinsamen Reproduzieren von Daten des Basisviews und Daten aller hierarchischen Hilfsviews eignet sich für eine Multiview-Anzeige 128 mit hoher Auflösung zur 3D-Reproduktion der Multiview-Sequenz.