以下、本発明を実施するための形態について説明する。
[第1の実施の形態]
第1の実施の形態について説明する。図1は第1の実施の形態における多重化装置180の構成例を表わす図である。
多重化装置180は、第1及び第2の圧縮符号化部181,182と多重化データ生成部183を備える。
第1の圧縮符号化部181は、立体視画像の第1の視点に対応する第1の画像に含まれる第1の画像データを第1の画像における画像フレーム間の相関に基づき圧縮符号化する。
また、第2の圧縮符号化部182は、立体視画像の第2の視点に対応する第2の画像に含まれる第2の画像データを第1の画像データに含まれる第1の画像データに基づき圧縮符号化する。
立体視画像は、例えば、第1の視点と第2の視点において同一の立体視画像であって、このような同一の立体視画像を互いに異なる第1の視点と第2の視点から観察され、第1及び第2の視点にそれぞれ対応する第1及び第2の画像が第1及び第2の圧縮符号化部181,182にそれぞれ入力する。第1の視点に対応する第1の画像データは、例えば、左目用(又は右目用)の画像データである。また、第2の視点に対応する第2の画像データは、例えば、右目用(又は左目用)の画像データである。
第1及び第2の圧縮符号化部181,182により、第1及び第2の視点から得られた画像データが符号化されることを、例えば、マルチビュー符号化(又は多視点画像符号化)と称する場合がある。この場合において、第2の圧縮符号化部182では他の視点の画像データを用いて視差補償予測を利用して圧縮符号化を行っている。視差補償予測とは、例えば、視点間の冗長性を利用した予測符号化方式のことである。
多重化データ生成部183は、第1の画像における第1の画像ブロックに含まれる圧縮符号化された第1の画像データを、第1の画素ブロックに含まれる第1の画像データを利用して圧縮符号化された第2の画像における第2の画素ブロックに含まれる第2の画像データよりも先に出力されるように多重化された多重化データを生成し、生成した多重化データを出力する。多重化データは、例えば、他の装置へ出力される。
この場合、多重化データの順番は、第1の画素ブロックに含まれる圧縮符号化された第1の画像データが先、第2の画素ブロックに含まれる圧縮符号化された第2の画像データが後となっている。
従って、多重化データを復号装置で受信した場合、復号装置では、第2の画素ブロックに含まれる圧縮符号化された第2の画像データを受信したときには、参照先となる第1の画素ブロックに含まれる圧縮符号化された第1の画像データを既に受信している状態となっている。
この場合、復号装置では、第2の画素ブロックに含まれる圧縮符号化された第2の画像データを復号する際に、既に受信した第1の画素ブロックに含まれる圧縮符号化された第1の画像データを利用することができる。
具体的には、例えば、復号装置は圧縮符号化された第2の画像データを復号する際に、参照先となる第1の画素ブロックに含まれる復号後の第1の画像データを参照して視差補償予測を用いて復号処理を行うことができる。
よって、復号装置では、第2の画素ブロックに含まれる圧縮符号化された第2の画像データを復号する際に、参照先となる圧縮符号化された第1の画像データの受信を待つことなく、復号処理を行うことが可能となる。
これにより、例えば、本多重化装置130は、復号装置において遅延なく処理を行わせることができる。
なお、第1及び第2の画素ブロックは複数の画素を含み、例えば、マクロブロックに相当する。
[第2の実施の形態]
次に第2の実施の形態について説明する。第2の実施の形態においては、最初に符号化装置と符号化装置に含まれる多重化装置の各構成例を説明する。次に符号化装置に含まれるBase Viewビデオ符号化部(又は第1の符号化部)と、Dependent Viewビデオ符号化部(又は第2の符号化部)の各構成例について説明する。その際に、Base ViewとDependent Viewの参照関係について説明する。そして、最後に、符号化装置に含まれる多重化装置における動作例について説明する。
<符号化装置の構成例>
図2は符号化装置100の構成例を表わす図である。符号化装置100は、ビデオ符号化装置(又は画像符号化装置、以下では「画像符号化装置」と称する場合がある)110、音声等符号化部113、バッファ120−1〜120−9、及び多重化装置130を備える。
図2においては符号化装置100内に多重化装置130を含む構成となっているが、符号化装置100全体が多重化装置となっていてもよい。この場合、図2に示す多重化装置130は多重化ブロックとして機能する。以下においては、図2に示すように符号化装置100内に多重化装置130を含むものとして説明する。
なお、第1の実施の形態における多重化装置180は、例えば、符号化装置100に対応する。また、第1の実施の形態における第1及び第2の圧縮符号化部181,182は、例えば、ビデオ符号化装置110に含まれる、Base Viewビデオ符号化部111及びDependent Viewビデオ符号化部112にそれぞれ対応する。さらに、第1の実施の形態における多重化データ生成部183は、例えば、多重化ビットストリーム生成部131又は多重化装置130に対応する。
画像符号化装置110は、左右画像の各ビデオソース信号(又は画像信号、例えば、画像信号には画像データが含まれるが、以下では「画像信号」と「画像データ」を区別しないで用いる場合がある)を入力し、各画像データに対して圧縮符号化処理を行う。
この場合、左右画像の一方を主画像(以下では、「Base View」と称する場合がある)とし、他方を非主画像(又はNon Base View、以下では「Dependent View」と称する場合がある)とする。例えば、Base Viewは左目用画像、Dependent Viewは右目用画像である。Base ViewとDependent Viewの各視点で得られた画像データは、例えば、2台のカメラで撮影された画像データとなる。
画像符号化装置110は、Base Viewビデオ符号化部(以下では、「Base View画像符号化部」と称する場合がある)111とDependent Viewビデオ符号化部(以下では、「Dependent View画像符号化部」と称する場合がある)112を含む。
Base View画像符号化部111は、Base Viewの画像信号を入力し、例えば、当該画像信号に含まれる画像データに対して圧縮符号化(以下では、「符号化」と称する場合がある)処理を行う。Base View画像符号化部111は、Dependent Viewの画像データを利用しないで、Base Viewの画像データを利用して圧縮符号化処理を行う。この場合、Base View画像符号化部111は、Base Viewの画像データに対して時間方向の冗長性を利用した動き補償予測や、空間方向の冗長性を利用した離散コサイン変換などの処理を行う。Base View画像符号化部111は、例えば、MPEG−4 AVC/H.264(以下、「H.264」と称する場合がある)を利用した符号化処理を行う。
Dependent View画像符号化部112は、Dependet Viewの画像信号を入力し、例えば、当該画像信号に含まれる画像データに対して符号化処理を行う。Dependent View画像符号化部112は、Base Viewの画像データとDependent Viewの画像データを利用して符号化処理を行う。この場合、Dependent View画像符号化部112は、Dependent Viewの画像データに対して動き補償予測や離散コサイン変換などの処理に加えて、Base Viewの画像データを利用して視差補償予測を行う。視差補償予測は、例えば、視点間の冗長性を利用した予測符号化方式である。Dependent View画像符号化部112は、Base Viewの局所復号画像を参照画像として用いて、Dependent Viewに対する符号化を行う。
このように、Base View画像符号化部111とDependent View画像符号化部112により、複数の視点から得られた画像データが符号化されることを、例えば、マルチビュー符号化(又は多視点画像符号化、以下では「多視点画像符号化」と称する場合がある)と称する場合がある。Base View画像符号化部111とDependent View画像符号化部112の各構成例については後述する。なお、圧縮符号化された画像データを、例えば、符号化データと称する場合がある。
音声等符号化部113は、音声信号(又は音声データ、以下では「音声データ」と称する場合がある)などに対して圧縮符号化処理を行い、例えば、MPEG−4 Part14 AAC(又はISO/IEC 14496−3 Subpart4)データを生成する。音声等符号化部113は、Base View画像符号化部111及びDependent View画像符号化部112で生成された圧縮符号化データと多重化可能な形式の符号化データを生成する。
バッファ120−1〜120−9は、ストリームバッファ120−1〜120−3を含む。ストリームバッファ120−1〜120−3は、Base View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113から出力される符号化データ列(以下では、符号化データ列のことを「ビットストリーム」又は「ストリーム」と称する場合がある)をそれぞれ記憶する。ストリームバッファ120−1〜120−3は、例えば、Base View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113から異なるタイミングで出力される各ストリームを多重化装置130において所定のタイミングで多重化できるように遅延を吸収する。
また、バッファ120−1〜120−9は、ストリーム情報バッファ120−4〜120−6を含む。ストリーム情報バッファ120−4〜120−6は、Base View画像符号化111、Dependent View画像符号化部112、及び音声等符号化部113から出力されるストリーム情報をそれぞれ記憶する。ストリーム情報には、例えば、符号化された画像データの各ピクチャのサイズ(又はデータ量)、及び多重化予定時刻(又は、多重化時刻、以下では「多重化時刻」と称する場合がある)を示す情報が含まれる。
多重化時刻は、例えば、復号側において符号化データの復号を開始する時刻を表す。例えば、符号化装置100では、復号側において符号化データが復号される際に仮想バッファを想定し、仮想バッファに蓄積された符号化データがオーバーフロー又はアンダーフローとならずに復号側で復号処理が行われるよう復号処理の開始予定時刻を算出している。本第2の実施の形態においては、例えば、復号開始予定時刻は仮想バッファへの入力時刻と同じであり、仮想バッファへの入力時刻は多重化装置130において多重化が行われる時刻と同じであるとし、多重化時刻は復号開始時刻としている。Base View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113から出力される各ストリームの多重化時刻は、Base View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113で夫々算出される。多重化時刻の算出方法は後述する。
さらに、バッファ120−1〜120−9は、画素ブロック位置情報バッファ120−7,120−8を含む。画素ブロック位置情報バッファ120−7,120−8は、Base View画像符号化部111とDependent View画像符号化部112から出力された画素ブロック位置情報をそれぞれ記憶する。
画素ブロック位置情報は、例えば、Base ViewとDependent Viewの各ストリームにおいて各画素ブロックがどこに位置するかを示す情報であり、画素ブロックに含まれる全符号化データのサイズ(又はデータ量)により表わされる。画素ブロックは、例えば、画像フレーム内において複数の画素を含む領域のことである。画素ブロックは本第2の実施の形態においてはMB(マクロブロック)として説明する。この場合、画素ブロック位置情報は、各MBの符号化データのサイズ(又はデータ量)で表わされる。
Base View画像符号化部111は、Base Viewにおける各MBの画素ブロック位置情報を画素ブロック位置情報バッファ120−7に記憶する。また、Dependent View画像符号化部112は、Dependent Viewにおける各MBの画素ブロック位置情報を画素ブロック位置情報バッファ120−8に記憶する。画素ブロック位置情報の算出方法は後述する。
さらに、バッファ120−1〜120−9は、View間参照先情報バッファ120−9を含む。View間参照先情報バッファ120−9は、Dependent View画像符号化部112から出力されたView間参照先情報を記憶する。View間参照先情報は、例えば、Dependent Viewの符号化処理の際に、Dependent ViewからBase Viewを参照する範囲の最大を画素ブロックのアドレス情報で表わしたものである。View間参照先情報の詳細は後述する。
多重化装置130は、例えば、ストリーム情報、画素ブロック位置情報、View間参照先情報に基づいて、Base ViewとDependent Viewの各ストリーム、及び音声データ等のストリームを多重化する。多重化装置130は、多重化したストリームを多重化ビットストリームとして出力する。
多重化装置130は、多重化ビットストリーム生成部(又は多重化データ生成部)131とスケジューリング部132を含む。
なお、多重化ビットストリーム生成部131とスケジューリング部132は、例えば、第1の実施の形態における多重化データ生成部135に対応する。また、多重化ビットストリームは、例えば、第1の実施の形態における多重化データに対応する。
多重化ビットストリーム生成部131は、スケジューリング部132から出力された多重化順序指示に従って、ストリームバッファ120−1〜120−3から出力された各ストリーム(又は各符号化データ)を多重化する。多重化ビットストリーム生成部131は、多重化された各ストリーム(又は各符号化データ)を含む多重化ビットストリーム(又は多重化データ)を出力する。
スケジューリング部132は、例えば、画素ブロック位置情報とView間参照先情報に基づいて、Base ViewとDependent Viewの各ストリームをどのような順番でパケット化するかを決定し、決定した順序を多重化順序指示として出力する。
多重化装置130で行われる多重化処理の詳細は動作例において説明する。
なお、図2に示す符号化装置100において、音声等符号化部113の個数は1つの例を表わしている。音声等符号化部113の個数は、符号化するデータの種類によって2つ以上あってもよい。この場合、ストリームバッファ120−3とストリーム情報バッファ120−6は、図2に示すように1つではなく、音声等符号化部113の個数分の各ストリームバッファと各ストリーム情報バッファが設けられてもよい。
<Base View画像符号化部111の構成例>
次に、Base View画像符号化部111の構成例について説明する。図3はBase View画像符号化部111の構成例を表わす図である。
Base View画像符号化部111は、イントラ予測部1110、第1のスイッチ1111、整数変換部1112、量子化部1113、エントロピー符号化部1114、符号化制御部1115を備える。また、Base View画像符号化部111は、逆量子化部1116、逆変換部1117、デブロッキングフィルタ1118、フレームメモリ1119、Base View動き予測部1120、動き補償部1121、重み付き予測部1122、第2のスイッチ1123、及び多重化時刻算出部1124を備える。
イントラ予測部1110は、Base Viewの画像データを入力し、例えば、フレーム間予測を用いないフレーム(又はイントラフレーム)のMBに対して、当該フレーム内において当該MBに隣接するMBから補間によって予測画像を生成し、その予測画像との差分となる画像データを出力する。補間モードとしては、例えば、画像データのうち輝度成分については4画素×4ラインの画素ブロックで9種類、16×16の画素ブロックで4種類、色差成分についても4種類ある。
第1のスイッチ1111は、イントラモードが適用される場合、イントラ予測部1110から出力される画像データ(又はフレーム内予測画像の画像データ)を整数変換部1112へ出力する。また、第1のスイッチ1111は、インターモードが適用される場合、Base Viewの画像データと重み付け予測が行われた復号画像データとの差分(又はフレーム間予測画像の画像データ)を整数変換部1112へ出力する。
整数変換部1112は、フレーム内予測画像の画像データ又はフレーム間予測画像の画像データに対して、離散コサイン変換(DCT:Discrete Cosine Transform)などを利用して、周波数領域への直交変換を行う。この場合、整数変換部1112は、整数精度のDCT変換式などを利用して直交変換を行い、直交変換後の成分(又はDCT係数)を算出する。
量子化部1113は、整数変換部1112から出力される各画像データの直交変換後の成分に対して、量子化ステップで除算した結果を整数値で丸めた量子化値を算出する。量子化部1113は、例えば、算出した量子化値を変換係数としてエントロピー符号化部1114と逆量子化部1116へ出力する。
エントロピー符号化部1114は、例えば、変換係数に対して、ハフマン符号をベースにした可変長符号化(VLC:Variable Length Coding)による符号化、又は、可変長符号化より圧縮効率の高いCABAC(Context-based Adaptive Binary Arithmetic Coding)による算出符号化を行う。エントロピー符号化部1114は、フレーム内予測画像に対応する可変長符号化後又は算出符号化後の変換係数を、Base ViewにおけるI(Intra)ピクチャのビットストリームとして出力する。また、エントロピー符号化部1114は、フレーム間予測画像に対応する可変長符号化後又は算出符号化後の変換係数を、Base ViewにおけるP(Predictive)ピクチャ又はB(Bi-directionally predictive)ピクチャのビットストリームとして出力する。
また、エントロピー符号化部1114は、例えば、Base View動き予測部1120から出力された動きベクトルに対して可変長符号化又は算出符号化を行い、可変長符号化後又は算出符号化後の動きベクトルも、Base Viewのビットストリーム中に含めて出力する。
さらに、エントロピー符号化部1114は、可変長符号化後又は算出符号化後のビットストリームに対してシンタックス要素を分析し、1つのMB内における符号化データのデータ量を算出する。シンタックスとは、例えば、ビットストリームに含まれるデータ列がどのような要素でどのような順番となっているかを示すビットストリームの構成規則を示すものである。ビットストリームには、符号化データや動きベクトルなどのようにMB毎に可変長となる要素以外にも、固定長の要素がある。固定長の要素としては、例えば、ストリームがイントラモードで符号化されたものか又はインターモードで符号化されたものかなど示すものがある。ビットストリームに含まれる各要素を、例えば、シンタックス要素と称する場合がある。エントロピー符号化部1114では、シンタックスに基づいて、ビットストリームに含まれるシンタックス要素のビット長をMB毎に測定することで、1つのMB内における符号化データのデータ量を算出する。
エントロピー符号化部1114は、例えば、以下のようにしてMB毎の符号化データ量を算出する。すなわち、エントロピー符号化部1114は、内部メモリなどに保持したシンタックスの情報を読み出し、ビットストリームに含まれる各シンタックス要素のビット数をカウントする。この際、エントロピー符号化部1114は、シンタックスに基づいて、シンタックス要素を確認し、固定長のシンタックス要素はそのままビット数をカウントする。一方、エントロピー符号化部1114は、可変長のシンタックス要素は、指数ゴロム符号により符号化を行うシンタックス要素であれば、連続する「0」のデータの次には1個の「1」、その後に0と同数のデータが含まれるという特徴を利用してカウントし、VLCまたはCAVACにより符号化を行うシンタックス要素であれば、エントロピー符号化部1114で符号化した際のビット数をカウントする。これにより、例えば、エントロピー符号化部1114は可変長の符号化データのビット数をカウントできる。エントロピー符号化部1114は、ビット数のカウントをMB内の最初のシンタックス要素カウント前に0にリセットし、MB内の最後のシンタックス要素カウント後のビット数のカウントを1つのMB内における符号化データのデータ量として算出する。
エントロピー符号化部1114は、算出した各MBの符号化データ量を、例えば、画素ブロック位置情報として画素ブロック位置情報バッファ120−7へ出力する。例えば、スケジューリング部132では、各MBの画素ブロック位置情報に基づいて、ビットストリーム中において各MBがどこに位置するかを把握できる。
符号化制御部1115は、例えば、イントラ予測部1110や整数変換部1112、量子化部1113、エントロピー符号化部1114などで行われる符号化処理に対する符号化方法やパラメータなどを選択することで符号化処理を制御する。符号化制御部1115は、選択したパラメータなどを付帯情報として出力する。図3の例では、符号化制御部1115は、付帯情報をエントロピー符号化部1114へ出力しているが、イントラ予測部1110などの他のブロックに出力してもよい。
逆量子化部1116は、量子化部1113から出力された変換係数に対して、量子化部1113で利用した量子化ステップを乗算することで、量子値となる前の画像データの直交成分を算出する。逆量子化部1116は、算出した画像データの直交成分を逆変換部1117へ出力する。
逆変換部1117は、画像データの直交成分に対して、例えば、所定の演算式などを利用して逆DCT変換を行い、整数変換前の画像データを算出する。
デブロッキングフィルタ1118は、逆変換部1117から出力される画像データがフレーム内予測画像の画像データに対応するときは、逆変換部1117から出力される画像データを入力する。一方、デブロッキングフィルタ1118は、逆変換部1117から出力される画像データがフレーム間予測画像の画像データに対応するときは、逆変換部1117からの出力画像と第2のスイッチ1123からの出力画像とが加算された画像の画像データを入力する。
そして、デブロッキングフィルタ1118は、入力された画像データのうち、所定の画素ブロック境界の画像データに対して、フレーム内予測画像かフレーム間予測画像かに応じて適応的に平滑化する処理を行う。これにより、例えば、整数変換部1112などにより生じたブロック歪を除去して画質劣化の伝搬などを防止できる。ただし、処理量を考慮して、デブロッキングフィルタ1118では平滑化の処理が行われる場合とそのまま画像データを出力する場合がある。
フレームメモリ1119はデブロッキングフィルタ1118から出力される画像データを記憶する。フレームメモリ1119に記憶された画像データは、Dependent View画像符号化部112において視差補償予測が行われる場合の参照先の画像データとして、Dependent View画像符号化部112へ出力される。
Base View動き予測部1120は、Base View画像符号化部111に入力された画像データと、フレームメモリ1119から出力された画像データとに基づいて動きベクトルを予測する。動きベクトルの予測に際して、フレーム内において符号化対象のMBの左、上、右上の各MBの動きベクトルが利用される。Base View動き予測部1120は、予測した動きベクトルを動き補償部1121とエントロピー符号化部1114へ出力する。
動き補償部1121は、フレームメモリ1119から出力された復号画像に対して、Base View動き予測部1120から出力された動きベクトルの分だけずらした予測画像(以下では、「参照ピクチャ」と称する場合がある)の画像データを生成する。この場合、動き補償部1121は、動き補償の対象となる画素ブロックのサイズをMBサイズの16×16以外にも、16×8、4×4などのサイズを利用することができる。動き補償部1121は、生成した参照ピクチャの画像データを重み付き予測部1122へ出力する。
重み付き予測部1122は、参照ピクチャの画像データに対して、適応的に重み係数を乗算して出力する。これにより、例えば、参照ピクチャの明るさを予測して、フェードインなど時間の経過により明るさが変換する画像に対する予測が行われる場合の画質劣化を防止できる。重み付き予測部1122から出力される参照ピクチャは、入力画像に対するフレーム間予測に用いられる。
このように、Base View画像符号化部111は、例えば、動き補償予測による符号化を行うことで、Base Viewにおける画像フレーム間の相関を利用した圧縮符号化を行っている。
多重化時刻算出部1124は、例えば、エントロピー符号化部1114から出力されるビットストリームや画素ブロック位置情報に基づいて多重化時刻を算出する。多重化時刻は、例えば、上記したように復号側で復号処理の際に使用される仮想バッファが破たんしないように復号が開始される時刻であり、多重化を開始する時刻を表わしている。多重化時刻算出部1124は、例えば、ピクチャ毎に多重化時刻を算出する。例えば、以下の処理により多重化時刻が算出される。
すなわち、多重化時刻算出部1124は、ビットストリームのビット長を1ピクチャ分測定して、測定した1ピクチャのデータ量と符号化のビットレートとに基づいて多重化開始時刻を算出する。この場合、多重化時刻算出部1124は、内部メモリなどに保持したシンタックスの情報を利用して1スライス分のデータを確認し、これを1ピクチャ分算出することで1ピクチャ分のデータのデータ量を測定することができる。多重化時刻算出部1124は、例えば、以下の計算式を用いて多重化時刻を算出する。
最初のピクチャの多重化開始時刻mux_time_pic(0)を0とし(mux_time_pic(0)=0)とし、ピクチャnの多重化開始時刻mux_time_pic(n)は、
mux_time_pic(n-1)+ピクチャ(n-1)のサイズ÷符号化ビットレート ・・・(1)
により算出される。
式(1)において、「ピクチャ(n−1)のサイズ」は、例えば、算出対象となるピクチャの時間的に1つ前のピクチャのデータ量を表わしている。
「符号化ビットレート」は、例えば、多重化時刻算出部1124において最初のピクチャの多重化開始時刻(mux_time_pic(0)=0)からのビットストリームに含まれるビット数をカウントするなどして算出可能である。「符号化ビットレート」は、例えば、固定値であってもよい。
すなわち、多重化時刻算出部1124は、エントロピー符号化部1114から出力されるビットストリームに対してシンタックスを用いて1ピクチャ分のデータ量を算出し、また、ビットストリームに基づいて符号化ビットレートを算出する。そして、多重化時刻算出部1124は、内部メモリなどに保持した式(1)を適宜読み出して、式(1)に算出した値を代入することで、各ピクチャの多重化開始時刻mux_time_pic(n)を算出する。
多重化時刻の算出方法としては、上記以外にも、例えば画素ブロック位置情報が用いられてもよい。この場合、多重化時刻算出部1124は、エントロピー符号化部1114から出力された画素ブロック位置情報に基づいて、各ピクチャのサイズ、符号化ビットレートを計算して、式(1)を用いて多重化開始時刻を算出する。
多重化時刻算出部1124は、算出した各ピクチャの多重化開始時刻をBase Viewのストリーム情報としてストリーム情報バッファ120−4へ記憶する。
<Dependent View画像符号化部112の構成例>
図4はDependent View画像符号化部112の構成例を表わす図である。Base View画像符号化部111と同一の構成部分は同一の符号が付されている。
Dependent View動き予測部1125と動き補償部1121は、例えば、動き補償予測に加えて視差補償予測を行う。
動き補償予測では、表示順序で前方又は後方の同一視点の画像を参照画像とするが、視差補償予測では、別視点の画像(又はBase View)を参照画像としている。ただし、Dependent View動き予測部1125と動き補償部1121は、参照画像をDependent ViewからBase Viewとすることで視差補償予測も動き補償予測も共通の処理として動作することができる。なお、Dependent View動き予測部1125では、動き補償予測により動きベクトルを出力し、視差補償予測により視差ベクトルを出力するが、本第2の実施の形態では視差ベクトルと動きベクトルとを区別しないで説明する。
Dependent View動き予測部1125は、例えば、以下のようにして視差補償予測を行う。
すなわち、Dependent View動き予測部1125は、Base View画像符号化部111のフレームメモリ1119からBase Viewの復号画像の画像データを読み出す。Dependent View画像符号化部112は、Dependent View画像符号化部112に入力されるDependent Viewの画素ブロックと相関の高い、Base Viewの復号画像における画素ブロックを求める。Dependent View動き予測部1125は、Dependent Viewの画像データとBase Viewの復号画像の画像データとに対してブロックマッチング処理などを利用して、相関の高いBase Viewの画素ブロックを算出する。そして、Dependent View動き予測部1125は、相関の高いBase Viewの画素ブロックとDependent Viewの画素ブロックの各画像データに基づいて、Dependent Viewの画素ブロックにおける動きベクトル(又は視差ベクトル)を算出する。
図5(A)は視差補償予測において参照されるBase ViewとDependent Viewの参照関係の例を表わす図である。図5(A)において、Base ViewとDependent Viewの各画素ブロックに含まれる数値は、各画素ブロックのフレーム内におけるアドレス値を表わしている。
図5(A)の例において、Dependent Viewの画素ブロック「1」は、相関の高い画素ブロックとしてBase Viewの画素ブロックの「5」を参照している。また、Depentdent Viewの画素ブロック「2」は、相関の高い画素ブロックとしてBase Viewの画素ブロック「7」を参照している。
ただし、Dependent Viewの各画素ブロックと相関の高いBase Viewの範囲は、Base Viewの各画素ブロックの範囲と一致しない場合もある。
図6はこのような場合の参照関係の例を表わす図である。この例では、Dependent Viewの画素ブロック「2」は、Base Viewの画素ブロック「7」、「8」、「11」、及び「12」を跨ぐ領域を参照している。
本第2の実施の形態においては、Dependent Viewの各画素ブロックが参照するBase Viewの範囲の最大アドレス値を、例えば、View間参照先情報としている。図6の例では、Dependent Viewの画素ブロック「2」におけるView間参照情報は「12」となる。なお、図5(A)の例では、Dependent Viewの画素ブロック「1」のView間参照先情報は「5」、Dependent Viewの画素ブロック「2」のView間参照先情報は「7」となる。
図4に戻り、Dependent View動き予測部1125は、上述したように、視差補償予測においてBase Viewの画素ブロックを参照する。Dependent View動き予測部1125は、このときに参照した参照先の画素ブロックのアドレス値をView間参照先情報として算出し、算出したView間参照先情報をView間参照先情報バッファ120−9へ出力する。
他方、Dependent View動き予測部1125は、算出した動きベクトル(又は視差ベクトル)をエントロピー符号化部1114と動き補償部1121に出力する。動き補償部1121では、動きベクトルに基づいてフレームメモリ1119から読み出したDependent Viewの復号画像に対して動き補償を行う。
この場合、例えば、Dependent Viewの画像データのうち、イントラフレームの画像データ(又はフレーム内予測における画像データ)はDependent Viewの画像データが用いられて、イントラ予測部1110からエントロピー符号化部1114により圧縮符号化が行われる。この場合、エントロピー符号化部1114からは、Dependent ViewのIピクチャのストリームが出力される。
また、Dependent Viewの画像データのうち、視差補償予測により予測された予測画像との差分が利用された画像データは、インターモードとして、整数変換部1112からエントロピー符号化部1114により圧縮符号化が行われる。この場合、エントロピー符号化部1114からは、Dependent ViewのPピクチャ又はBピクチャのストリームが出力される。すなわち、視差補償予測により、例えば、Dependent ViewのPピクチャ又はBピクチャのストリームが出力される。
Base View画像符号化部111では、例えば、動き補償予測により、Base Viewの画像フレームのフレーム間相関を利用して圧縮符号化が行われる。一方、Dependent View画像符号化部112では、例えば、視差補償予測により、Base Viewの画素ブロックを参照して(又は画素ブロックに含まれる圧縮符号化前の画像データを参照して)、Dependent Viewの画素ブロックに含まれる画像データに対して圧縮符号化を行う。
なお、Dependent View画像符号化部112では、Base Viewの画像データを用いずに、Dependent Viewの画像データを用いてフレーム間相関を利用して圧縮符号化が行われても良い。すなわち、Dependent View画像符号化部112では、例えば、視差補償予測又は動き補償予測のいずれも処理することができる。いずれを用いるかは、例えば、符号化制御部1115により選択できる。なお、以下の例においては、視差補償予測が行われる場合で説明することにする。
図5(A)や図6の例では、視差補償予測における参照元のDependent Viewの画素ブロックは所定のサイズの画素ブロックとして説明した。H.264の動き補償予測や視差補償予測では、画素ブロックのサイズについては16×16のMB以外にも、MBを更に分割した16×8、8×16、8×8、8×4、4×8、4×4など、全部で7種類のサイズがある。
図7(A)から図7(H)はこのような動き補償予測や視差補償予測で用いられる画素ブロックサイズの例を表わす図である。参照元となるDependent Viewや参照先となるBase Viewの各画素ブロックのサイズは、16×16のMBよりも小さいサイズとなる場合がある。
図8は、MBより小さいサイズの画素ブロックにおける参照関係の例を表わす図である。図8の例では、Dependent Viewの画素ブロック「1」は2つに分割され、一方がBase Viewの画素ブロック「1」、「2」、「5」、「6」を跨ぐ範囲を参照し、他方がBase Viewの画素ブロック「6」、「10」を跨ぐ範囲を参照している。この場合、Dependent Viewの画素ブロック「1」のView間参照先情報は、双方のブロックの最大アドレス値であるBase Viewの画素ブロック「10」となる。
このように、参照先であるBase Viewにおいて所定サイズの画素ブロック毎にアドレス値が付されている場合において、その画素ブロックより小さいサイズの画素ブロックが参照元となる場合がある。この場合でも、View間参照先情報は、例えば、参照先のBase Viewの所定サイズの画素ブロックに付与されたアドレス値が利用され、その中で最大のアドレス値が利用される。
図4に戻り、Dependent View画像符号化部112においても、エントロピー符号化部1114からDependent Viewのストリームが出力される。また、エントロピー符号化部1114において、Dependent Viewの画素ブロック位置情報が算出される。画素ブロック位置情報の算出方法は、上述したBase View画像符号化部111における算出と同一である。さらに、多重化時刻算出部1124においても、Base Viewにおける多重化時刻の算出方法と同一の算出方法により、Dependent Viewの多重化時刻が算出される。
なお、音声等符号化部1113においても、多重化時刻などを含むストリーム情報を算出する。音声等符号化部1113においても、上記したBase Viewの多重化時刻算出部1124などと同様に多重化時刻を算出する。例えば、音声等符号化部1113は、ビットストリームに対してシンタックスを用いて1ピクチャ分のデータ量を算出し、また、ビットストリームに基づいて符号化ビットレートを算出する。そして、音声等符号化部1113は、内部メモリなどに保持した式(1)を適宜読み出して、式(1)に算出した値を代入するなどして多重化時刻を算出する。
<動作例>
次に動作例について説明する。図9と図10は多重化装置130で行われる多重化処理の動作例を表わすフローチャートである。本第2の実施の形態においては、多重化装置130は、Base Viewのビットストリームと、Dependent Viewのビットストリームを多重化して、多重化ビットストリームを生成する。
本多重化装置130は、例えば、画素ブロック位置情報とView間参照先情報に基づいて多重化処理を行う。多重化処理は、例えば、多重化装置130のスケジューリング部132で行われる。
なお、多重化ビットストリームには音声等のストリームも含まれるが、例えば、音声等のストリームは多重化ビットストリーム中の所定位置に含まれて伝送される。この場合、音声等のストリームは、伝送パケットの所定領域に多重化され、或いは所定の伝送パケットに多重化される。以下においては説明の容易のために音声等のストリームの多重化は省略して説明する。
多重化装置130は処理を開始すると(S10)、各ストリームに対して多重化時刻をストリーム情報より取得し、次パケットの多重化時刻とする(S11)。
図11(A)と図11(B)は、Base ViewとDependent Viewの各ストリームにおける多重化時刻の例をそれぞれ表わしている。例えば、Base Viewの1ピクチャ目の多重化時刻は「00:00:00」、Dependent Viewの1ピクチャ目の多重化時刻は「00:00:10」となっている。
なお、図11(A)と図11(B)において、「1」や「2」などは各ストリームにおけるMBのアドレス値を表わしている。
多重化装置130は、各ストリームを1パケット目から順に固定長の伝送パケットの中に多重化していく。伝送パケットは、例えば、MPEG−2のTS(Transport Stream)パケットである。なお、図11(C)は1パケット目の伝送パケットの例を表わしている。
例えば、スケジューリング部132は、伝送パケットの1パケット目には、Base Viewのストリームを多重化するのか、Dependent Viewのストリームを多重化するのかを後段の処理において決定する。そのため、本処理においては、スケジューリング部132は、伝送パケットの1パケット目の多重化時刻を、Base Viewの1ピクチャ目の多重化時刻、又は、Dependent Viewの1ピクチャ目の多重化時刻に設定し、後段の処理に備えている。
図9に戻り、次に、多重化装置130はBase View優先判定処理を行う(S12)。図10は優先判定処理の動作例を表わすフローチャートである。多重化装置130は、Base View優先判定処理を開始すると(S120)、処理対象のDependent ViewのMBが参照しているBase ViewにおけるMBのアドレスを、View間参照先情報より取得する(S121)。
本処理(S121)においてスケジューリング部132は、処理対象となるDependent ViewのMBを決定する。そして、スケジューリング部132は、決定したMBが視差補償予測により参照しているBase ViewのMBのアドレスを取得する。
処理対象となるDependent ViewのMBの決定は、例えば、画素ブロック位置情報に基づいて行われる。詳細については後述する。スケジューリング部132は、いずれのストリームに対しても多重化が行われていない場合、スケジューリング部132は処理対象となるDependent ViewのMBのアドレス値を「1」(以下、MB「1」などと表わす場合がある)に設定する。
その後、スケジューリング部132は、処理対象のDependent ViewのMBが参照しているBase ViewのアドレスをView間参照先情報から取得する。例えば、図5(A)に示す参照関係があるとき、スケジューリング部132は、処理対象のDependent ViewのMB「1」が参照するBase Viewのアドレスとして、MB「5」を取得する。
次に、多重化装置130は、該当Base ViewのMBが多重化済みであるか否かを判定する(S122)。
例えば、スケジューリング部132は、View間参照先情報として参照先となっているBase ViewのMBに含まれる全符号化データが既に伝送パケットに多重化されているか否かを判定する。この場合、スケジューリング部132は、後段の処理において伝送パケットに多重化する処理を行うが、その際に、内部メモリなどにBase Viewの参照先のMBについて多重化済みであるか否かの情報を記憶し、その情報に基づいて本処理を判定してもよい。上記の例において、スケジューリング部132は、伝送パケットの1パケット目にはストリームを多重化していないため、内部メモリには多重化済みの該当Base ViewのMBとしてMB「5」は記憶されていない。従って、スケジューリング部132は、処理対象のDependent ViewのMB「1」に対する該当Base ViewのMB「5」は多重化済みでないと判定する。
多重化装置130は、該当Base ViewのMBが多重化済みでないとき(S122でNo)、処理対象のDependent ViewのMBを多重化対象から外す(S125)。
言い換えると、例えば、多重化装置130は参照先となるBase ViewのMBに含まれる全符号化データが多重化済みでないときは、処理対象のDependent ViewのMBに含まれる符号化データを多重化対象から外している。
このように処理対象のDependent ViewのMBが多重化対象から外されているのは、例えば、該当Base ViewのMBの符号化データ全てが多重化された後で処理対象のDependent ViewのMBの多重化が行われるようにしているからである(S122でYes、図9のS14)。
これにより、例えば、多重化ビットストリームを受信した復号側では、参照元のDependent Viewの符号化データを受信したときは既に参照先のBase Viewの符号化データを受信していることになる。従って、復号側では、参照先のBase Viewの符号化データを待つことなく、既に受信した参照先のBase ViewのMBの符号化データを利用してDependent Viewの該当MBの復号を行うことが可能となる。従って、復号側では、遅延なく、復号処理を行うことができる。この詳細については後述する。
上記した例では、スケジューリング部132は、該当Base ViewのMB「5」が多重化済みではないため、処理対象のDependent ViewのMB「1」を多重化対象から外すことになる。
そして、多重化装置130はBase View優先判定処理を終了する(S124)。
図9に戻り、次に、多重化装置130は各ストリームの次パケットの多重化時刻を比較し、多重化時刻が最も早いストリームiを選択する(S13)。
例えば、スケジューリング部130は、該当Base ViewのMBの符号化データ(又はストリーム)と、処理対象となるDependent ViewのMBの符号化データ(又はストリーム)のうち、多重化時刻が早い方の符号化データ(又はストリーム)を選択する。
図11(A)と図11(B)の例では、スケジューリング部132は、Base Viewの1パケット目の多重化時刻「00:00:00」と、Dependent Viewの1パケット目の多重化時刻「00:00:10」とを比較して、最も早いBase Viewのストリームを選択する。
図9に戻り、次に、多重化装置130は、選択したストリームiのデータを1パケット分多重化する(S14)。
例えば、スケジューリング部132は、選択したBase Viewのストリームを伝送パケットの1パケット目に多重化することを多重化順序指示として多重化ビットストリーム生成部131へ指示する。
多重化順序指示の例について以下説明する。スケジューリング部132は、S13で選択したストリームiのMBのアドレス値を多重化順序指示として多重化ビットストリーム生成部131へ指示してもよい。この場合、スケジューリング部132は、伝送パケットの1パケット分に多重化可能なBase Viewのストリームのビット数を算出し、算出したビット数に基づいて、多重化するBase ViewのMBのアドレス値を算出する。
すなわち、スケジューリング部132は、画素ブロック位置情報から各MBのビット数を取得できる。また、伝送パケット1パケット分のデータ長は固定長である。従って、スケジューリング部132は、伝送パケット1パケットに多重化可能なMB数を、画素ブロック位置情報に基づいて算出可能である。
例えば、Base ViewのMB「1」の画素ブロック位置情報が50ビット、MB「2」の画素ブロック位置情報が60ビット、伝送パケット1パケットの長さが100ビットである場合を考える。この場合、1パケット目にはBase ViewのMB「1」とMB「2」の一部とが多重化可能である。従って、スケジューリング部132は、Base ViewのMB「1」とMB「2」を、多重化順序指示として指示することができる。この場合、多重化順序指示には、各MBのアドレス値とともに各MBの多重化するビット数(又はデータ量)を含めても良い。
図5(B)及び図5(C)は多重化結果の例を表わしている。図5(C)に示すように、多重化順序指示により、伝送パケットの1パケット目には、Base ViewのMB「1」の符号化データと、MB「2」の符号化データの一部が多重化されている。多重化ビットストリーム生成部131は、多重化順序指示に従って、ストリームバッファ120−1,120−2から符号化データを読み出して伝送パケットに多重化する。
Base ViewもDependent Viewも、MBに含まれる画素数は各MBで同一である。しかし、符号化データのデータ量は各MBで同一の場合もあれば異なる場合もある。従って、図5(C)に示すように1つの伝送パケットには複数のMBの符号化データが多重化される場合もあれば、1つのMBの符号化データが複数の伝送パケットに分割されて伝送される場合もある。
多重化指示を出力したスケジューリング部132は、例えば、Base ViewのMB「1」まで多重化済みであることを示す情報を内部メモリに保持する。上述したように、再度、図10のS122の処理を行う際に、該当Base ViewのMBが多重化済みであるか否かの判定に用いられる。
図9に戻り、次に、多重化装置130は選択したストリームiの次パケットの多重化時刻を更新する(S15)。
例えば、スケジューリング部132は、Base Viewの多重化時刻を「00:00:00」から、伝送パケット1パケット分のデータ量を送信するのにかかる時間を加算した時刻を次パケットの多重化時刻とする。この場合、伝送パケット1パケット分のデータ量は固定値であることから、スケジューリング部132は、伝送パケット1パケット分のデータを送信するのにかかる時間を固定時間とすることもできる。
図12(A)と図12(B)は、各ストリームの多重化時刻の例を表わす図である。図12(A)に示すように、更新後のBase Viewの次パケットの多重化時刻は、「00:00:02」となる。
図9に戻り、次に、多重化装置130は多重化処理を終了させるか否かを判定する(S16)。例えば、スケジューリング部132は、Base ViewのDependent Viewの1ピクチャ分のストリームに対する処理が終了すると(S16でYes)、本処理を終了させる(S17)。一方、多重化装置130は、Base ViewとDependent Viewの1ピクチャ分のストリームに対する処理が終了していないと(S16でNo)、S12へ移行して上述した処理を繰り返す。
上記した例は、伝送パケットの1パケット目の多重化が行われた例である。2パケット目以降は、例えば、以下のようになる。
すなわち、処理はS12に移行し、スケジューリング部132はBase View優先判定処理(S12)を行う。この場合、スケジューリング部132は、処理Dependent ViewのMB「1」が参照するBase ViewのMBのアドレス「5」を取得する(図10のS121)。
そして、スケジューリング部132は、該当Base ViewのMB「5」が多重化済みであるか否かを判定する(S122)。この場合、スケジューリング部132は、内部メモリに保持した多重化済みのMBのアドレス「1」と、該当Base ViewのMB「5」とを比較して、該当Base ViewのMBは多重化済みでないと判定する(S122でNo)。次に、スケジューリング部132は、処理Dependent ViewのMB「1」は多重化対象から外す(S125)。
次に、スケジューリング部132は、Base Viewの次パケットの多重化時刻「00:00:02」と、Dependent Viewの次パケットの多重化時刻「00:00:10」とを比較し、最も早いBase Viewのストリームを選択する(図9のS13)。
そして、スケジューリング部132は、多重化順序指示を多重化ビットストリーム生成部131へ出力し、Base Viewのストリームを1伝送パケット分多重化させる(S14)。この場合、多重化順序指示として、Base ViewのMB「2」とMB「3」が指示される。図5(C)に示すように、伝送パケットの2パケット目には、Base ViewのMB「2」の残りのストリームと、MB「3」の一部のストリームが多重化されている。
1ピクチャ分の処理が終了していない(S16でNo)ので、処理は再びS12へ移行する。そして、スケジューリング部132は、上記した処理を繰り返す。
ここで、伝送パケットの4パケット目まで多重化が終了した場合を考える。図13(A)と図13(B)は、4パケット目まで多重化が終了した後において更新されたBase Viewの多重化時刻(「00:00:09」)の例を表わしている。また、参照先のBase ViewのMBのアドレス「4」まで多重化済みとなっており、処理対象Dependent ViewのMB「1」の参照先となるBase ViewのMB「5」の一部が多重化されている。
この場合、Base ViewのMBのアドレス「5」の符号化データ全ては多重化されていない。また、多重化済みのMBとして、Base ViewのMB「4」を示す情報が内部メモリに記憶されている。従って、スケジューリング部132は、該当Base ViewのMB「5」は多重化済みではないと判定し(図9のS122でNo)、処理Dependent ViewのMB「1」を多重化処理対象から外す(S125)。
そして、スケジューリング部132は、Base Viewの多重化時刻「00:00:09」と、Dependent Viewの多重化時刻「00:00:10」とを比較する(S13)。この場合、Base Viewの方がDependent Viewよりも次パケットの多重化時刻は早いため、Base Viewが選択される。そして、スケジューリング部132は、Base ViewのMB「5」の残りのストリームと、MB「6」の一部のストリームを伝送パケットに多重化するよう指示する(図9のS14)。
4パケット目の伝送パケットの多重化が終了すると、Base Viewの次パケットの多重化時刻が更新される。Base Viewの更新後の多重化時刻は、例えば、図14(A)に示すように「00:00:12」となる。
スケジューリング部132は、再び、Base View優先判定処理(図10)を行い、該当Base ViewのMB「5」が多重化済みであるか否かを判定する(S122)。この場合、該当Base ViewのMB「5」は多重化済みであるため、スケジューリング部132は処理対象のDependent ViewのMB「1」を多重化対象とする(S123)。
スケジューリング部132は、Base Viewの多重化時刻「00:00:12」とDependent Viewの多重化時刻「00:00:10」とを比較して、Dependent Viewの方が早いため、Dependent Viewを選択する(S13)。
そして、スケジューリング部132は、Dependent ViewのMBについて1伝送パケット分を多重化するよう指示する(S14)。図5(C)や図14(B)の例では、Dependent ViewのMB「1」が1伝送パケット分と同じデータ長となっている。この場合、スケジューリング部132は、多重化順序指示としてDependent ViewのMB「1」を指示する。
次に、スケジューリング部132は、Dependent Viewの次パケットの多重化時刻を更新する(S15)。そして、スケジューリング部132は、1ピクチャ分の多重化処置を終了するまで上述した処理を繰り返す。
以上により、伝送パケットには、Dependent ViewのMB「1」が参照する参照先のBase ViewのMB「5」の符号化データの全てが多重化された後に、参照元となるDependent ViewのMB「1」の符号化データが多重化される。
上記した例では、Dependent ViewのMB「1」のデータ量は、伝送パケット1パケット分と同じデータ量として説明した。この場合、Dependent Viewの次の処理対象となるMBのアドレス値は「2」となる。
例えば、1つの伝送パケットにDependent ViewのMB「1」,「2」など複数のMBのストリームを多重化できる場合もある。どこまでDependent ViewのMBを多重化したかは、例えば、Dependent Viewの画素ブロック位置情報に基づいて算出可能である。
例えば、Dependent ViewのMB「1」の画素ブロック位置情報が「50ビット」、Dependent ViewのMB「2」の画素ブロック位置情報が「60ビット」で、1つの伝送パケットのパケット長が「100ビット」の場合を考える。この場合、Dependent ViewのMB「1」と、MB「2」の途中まで多重化が行われる。
スケジューリング部132は、Dependent Viewに対しても、Base Viewの場合と同様に、どこまで多重化が終了したかを画素ブロック位置情報に基づいて算出し、例えば内部メモリに保持する(S14)。そして、S121の処理の際に、内部メモリから読み出して、処理対象となるDependent ViewのMBを決定する(S122)。
本多重化装置130は、Dependent ViewのMBが視差補償予測として参照する参照先のBase ViewのMBの符号化データを参照元となるDependent ViewのMBの符号化データよりも先に多重化している。これにより、例えば、多重化ビットストリームを受信した復号側では、参照先のBase Viewのストリームの到着を待つことなく、参照元のDependent ViewのMBを復号できる。
この点について以下説明する。例えば、図15(A)は視差補償予測における参照関係の例を表わし、図15(B)及び図15(C)は多重化結果の例を表わしている。図15(C)の多重化の例は、参照関係を考慮することなく、Base ViewのストリームとDependent ViewのストリームをMBのアドレス値で小さい値から順番に多重化している例を表わしている。なお、図15(A)に示す参照関係の例は、図5(A)に示す参照関係の例を同じである。
図15(C)に示すように、Dependent ViewのMB「1」の符号化データは伝送パケットの2パケット目に多重化される。このような多重化ビットストリームを受信した復号側では、Dependent ViewのMB「1」の符号化データを受け取っても、参照先となるBase ViewのMB「5」の符号化データの全てを受け取らないと復号処理を開始できない。従って、復号側では、Dependent ViewのMB「1」を受け取っても復号できず、Base ViewのMB「1」を受信するまで待つことになる。その待っている時間分の遅延が発生する。
しかし、本第2の実施の形態における多重化装置130は、図5(C)に示すように、参照先となるBase ViewのMB「5」の符号化データが、参照元のDependent ViewのMB「1」よりも先に多重化されている。
従って、復号側は、Base ViewのMB「5」の符号化データの到着を待つことなく、Dependent ViewのMB「1」を復号できる。従って、本多重化装置130は、参照関係を考慮することなく多重化する場合と比較して、復号側において遅延なく復号処理を行わせることができる。
[その他の実施の形態]
次にその他の実施の形態について説明する。
図16は符号化装置100の他の構成例を表わす図である。符号化装置100は、エンコーダ150、メモリ160、多重化処理部170、CPU(Central Processing Unit)171、ROM(Read Only Memory)172、RAM(Random Access Memory)173を備える。
エンコーダ150は、Base ViewとDependent Viewの各画像データを入力し、各画像データに対して多視点画像符号化の処理を行う。エンコーダ150は、符号化後の画像データをストリームとしてメモリ160に記憶する。
また、エンコーダ150は、Base ViewとDependent Viewの各ストリーム情報と各画素ブロック位置情報を生成し、メモリ160に記憶する。さらに、エンコーダ150は、View間参照先情報を生成し、メモリ160に記憶する。
さらに、エンコーダ150は音声データ等に対して符号化処理を行う。
図16の例では、エンコーダ150は1つの例を示しているが、図16の点線で示すように、Base Viewエンコーダ151、Dependent Viewエンコーダ152、及び音声等エンコーダ153の3つのエンコーダに分かれていてもよい。Base Viewエンコーダ151とDependent Viewエンコーダ152は、Base ViewとDependent Viewの画像データに対してそれぞれ多視点画像符号化の処理を行う。また、音声等エンコーダ153は、音声データ等に対して圧縮符号化の処理を行う。
なお、エンコーダ150は、例えば、第2の実施の形態で説明したBase View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113に対応する。また、Base Viewエンコーダ151、Dependent Viewエンコーダ152、及び音声等エンコーダ153は、例えば、第2の実施の形態で説明したBase View画像符号化部111、Dependent View画像符号化部112、及び音声等符号化部113にそれぞれ対応する。
メモリ160は、エンコーダ150から出力されたBase ViewとDependent Viewの各々のストリーム、各々のストリーム情報、及びView間参照先情報を記憶する。
メモリ160も、図16の例では1つの例を示しているが、各ストリームを記憶するストリームメモリ161、各ストリーム情報を記憶するストリーム情報メモリ162、画素ブロック位置情報を記憶する画素ブロック位置情報メモリ163、View間参照先情報を記憶するView間参照先情報メモリ164の4つのメモリに分かれていても良い。
なお、メモリ160は、例えば、第2の実施の形態で説明した複数のバッファ120−1〜120−9に対応する。また、ストリームメモリ161、ストリーム情報メモリ162は、例えば、第2の実施の形態におけるバッファ120−1〜120−3,120−4〜120−6に対応する。さらに、画素ブロック位置情報メモリ163とView間参照先情報メモリ164は、例えば、第2の実施の形態におけるバッファ120−7〜120−8,120−9に対応する。
多重化処理部170は、メモリ160からBase ViewとDependent Viewの各符号化データを読み出し、CPU171から出力された多重化順序指示に従って、各符号化データを多重化する。多重化された符号化データは、多重化ビットストリームとして出力される。なお、多重化処理部170は、例えば、第2の実施の形態で説明した多重化ビットストリーム生成部131に対応する。
CPU171は、ROM172に記憶されたプログラムを読み出してRAM173にロードし、ロードしたプログラムを実行することで、例えば、第2の実施の形態で説明したスケジューリング部132で行われる処理を実行する。CPU171は、例えば、第2の実施の形態で説明したスケジューリング部132に対応する。
上述した第2の実施の形態における符号化装置100(例えば図2)と、図16で示した符号化装置100においても、Dependent Viewとして入力される画像データは1つの例で説明した。いずれの符号化装置100においても、複数のDependent Viewの画像データが符号化装置100に入力されてもよい。
この場合、符号化装置100には、例えば、Dependent Viewの数に応じた個数のDependent View画像符号化部が含まれることになる。各々のDependent View画像符号化部が各々のDependent Viewの画像データに対して符号化処理を行う。また、ストリームバッファやストリーム情報バッファ、画素ブロック位置情報用バッファも、Dependent Viewの数に応じた個数が符号化装置100に含まれる。
図16においては、例えば、多重化処理部170はCPU171内に含まれてもよい。この場合、多重化処理部170で行われる処理や機能がCPU171において行われる。
また、上述した第2の実施の形態や図16の例において、視差補償予測の際の参照関係については、画素ブロックとしてMBを例にして説明した。画素ブロックには、例えば、複数の画素が含まれていればよく、スライス単位など、MBのサイズ(16×16)以外のサイズであってもよい。
以上まとめると付記のようになる。
(付記1)
立体視画像の第1の視点に対応する第1の画像に含まれる第1の画像データを前記第1の画像における画像フレーム間の相関に基づき圧縮符号化し、
前記立体視画像の第2の視点に対応する第2の画像に含まれる第2の画像データを前記第1の画像に含まれる前記第1の画像データに基づき圧縮符号化し、
前記第1の画像における第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第1の画素ブロックに含まれる前記第1の画像データを利用して圧縮符号化された前記第2の画像における第2の画素ブロックに含まれる前記第2の画像データよりも先に出力されるように多重化された多重化データを生成し、
生成した前記多重化データを出力する
処理をコンピュータに実行させる多重化プログラム。
(付記2)
前記第1の画像における圧縮符号化された画像データ列上において前記第1の画素ブロックに含まれる圧縮符号化された全画像データの位置を示す第1の画素ブロック位置情報、前記第2の画像における圧縮符号化された画像データ列上において前記第2の画素ブロックに含まれる圧縮符号化された全画像データの位置を示す第2の画素ブロック位置情報、及び前記第2の画素ブロックに含まれる前記第2の画像データの圧縮符号化の際に参照される前記第1の画素ブロックのアドレス値を示す参照先情報に基づいて、前記第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第2の画素ブロックに含まれる圧縮符号化された前記第2の画像データよりも先に多重化することを特徴とする付記1記載の多重化プログラム。
(付記3)
前記第2の画素ブロックに含まれる圧縮符号化された前記第2の画像データは、前記第1の画素ブロックに含まれる圧縮符号化された全画像データの多重化が行われていないときには多重化せず、前記第1の画素ブロックに含まれる圧縮符号化された全画像データの多重化が行われたときに多重化することを特徴とする付記1記載の多重化プログラム。
(付記4)
前記第1及び第2の画素ブロック位置情報は前記第1及び第2の画素ブロックに含まれる圧縮符号化された全画像データのデータ量によりそれぞれ表わされることを特徴とする付記2記載の多重化プログラム。
(付記5)
更に、前記第2の画素ブロック位置情報に基づいて、多重化対象となる前記第2の画素ブロックを決定する処理をコンピュータに実行させることを特徴とする付記2記載の多重化プログラム。
(付記6)
前記第1及び第2の画素ブロック位置情報、前記参照先情報、前記第1の画像の復号開始時刻により前記第1の画像の多重化開始時刻を示す第1の多重化時刻、及び前記第2の画像の復号開始時刻により前記第2の画像の多重化開始時刻を示す第2の多重化時刻に基づいて、前記第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第2の画素ブロックに含まれる圧縮符号化された前記第2の画像データよりも先に多重化データを生成することを特徴とする付記2記載の多重化プログラム。
(付記7)
前記多重化する処理には、
前記第1及び第2の多重化時刻に基づいて、前記第1の画素ブロックにおける圧縮符号化された第1の画像データ列又は前記第2の画素ブロックにおける圧縮符号化された第2の画像データ列を選択する第1の処理と、
選択された前記第1又は前記第2の画像データ列に夫々含まれる前記第1又は前記第2の画像データのうち、前記多重化データを伝送する伝送パケットの1パケット分のデータを前記伝送パケットに多重化することを指示する第2の処理と、
前記指示に従って、前記第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第2の画像における第2の画素ブロックに含まれる前記第2の画像データよりも先に、前記伝送パケットに多重化する第3の処理と、
選択された前記第1又は前記第2の画像データ列における前記第1又は第2の多重化時刻を更新する第4の処理とを含み、
更新後の前記第1又は第2の多重化時刻に基づいて、前記第1から前記第4の処理が行われることで前記多重化データを生成することを特徴とする付記6記載の多重化プログラム。
(付記8)
前記第1及び第2の画素ブロックは複数の画素を含むことを特徴とする付記1記載の多重化プログラム。
(付記9)
前記第1及び第2の画素ブロックはマクロブロックであることを特徴とする付記1記載の多重化プログラム。
(付記10)
立体視画像の第1の視点に対応する第1の画像に含まれる第1の画像データを前記第1の画像における画像フレーム間の相関に基づき圧縮符号化する第1の圧縮符号化部と、
前記立体視画像の第2の視点に対応する第2の画像に含まれる第2の画像データを前記第1の画像に含まれる前記第1の画像データに基づき圧縮符号化する第2の圧縮符号化部と、
前記第1の画像における第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第1の画素ブロックに含まれる前記第1の画像データを利用して圧縮符号化された前記第2の画像における第2の画素ブロックに含まれる前記第2の画像データよりも先に出力されるように多重化された多重化データを生成し、生成した多重化データを出力する多重化データ生成部
を備えることを特徴とする多重化装置。
(付記11)
立体視画像の第1の視点に対応する第1の画像に含まれる第1の画像データを前記第1の画像における画像フレーム間の相関に基づき圧縮符号化し、
前記立体視画像の第2の視点に対応する第2の画像に含まれる第2の画像データを前記第1の画像に含まれる前記第1の画像データに基づき圧縮符号化し、
前記第1の画像における第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第1の画素ブロックに含まれる前記第1の画像データを利用して圧縮符号化された前記第2の画像における第2の画素ブロックに含まれる前記第2の画像データよりも先に出力されるように多重化された多重化データを生成し、
生成した前記多重化データを出力する
ことを特徴とする多重化方法。
(付記12)
立体視画像の第1の視点に対応する第1の画像に含まれる第1の画像データを前記第1の画像における画像フレーム間の相関に基づき圧縮符号化する第1の圧縮符号化部と、
前記立体視画像の第2の視点に対応する第2の画像に含まれる第2の画像データを前記第1の画像に含まれる前記第1の画像データに基づき圧縮符号化する第2の圧縮符号化部と、
前記第1の画像における第1の画素ブロックに含まれる圧縮符号化された前記第1の画像データを、前記第1の画素ブロックに含まれる前記第1の画像データを利用して圧縮符号化された前記第2の画像における第2の画素ブロックに含まれる前記第2の画像データよりも先に出力されるように多重化された多重化データを生成し、生成した前記多重化データを出力するプロセッサと
を備えることを特徴とする多重化装置。