以下、添付の図面を参照して、本願発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
<実施形態1>
図1に本発明の画像符号化装置を用いた画像符号化システムのブロックを示す。101、102、103はカメラであり、同期をとって各ピクチャを撮像する。接続される台数は複数台であれば、特に数に制限は無い。104はベースビュー符号化を行うベースビュー符号化部であり、カメラ101で撮影されたピクチャを符号化する。105、106は他のビューを参照して符号化するノンベースビュー符号化を行うノンベースビュー符号化部であり、カメラ102、カメラ103で撮影されたピクチャをそれぞれ符号化する。107は各ビュー単位で符号化された符号化データを統合し、H.264のMVC符号化として必要なヘッダデータを付加するMVC符号化部である。但し、これに限定されず、他の多視点符号化方法を用いても構わない。108はインターフェースであり、生成されたビットストリームを外部に出力する。各カメラで撮像されたビューの画像データはそれぞれの符号化部で符号化され、MVC符号化部107でビットストリームを生成し、インターフェース108から出力される。
また、図20に本発明の画像復号装置を用いた画像復号システムのブロックを示す。2001はインターフェースであり、復号する画像のビットストリームを入力する。2002はビットストリームからMVC符号化に必要な符号データを復号し、各ビューの符号データを分離して出力するMVC復号部である。2003はベースビューの復号を行うベースビュー復号部である。2004、2005は他のビューを参照して復号するノンベースビュー復号部である。2006は画像合成装置であり、各ビューの画像データから不図示のユーザが見る画像データを合成する。2007は合成された画像を立体的に表示することができるディスプレイである。インターフェース2001から入力されたビットストリームはMVC復号部2002で各ビューの符号データに分離される。分離された符号データはベースビュー復号部2003、ノンベースビュー復号部2004、2005で復号され、各ビューの画像データを再生する。再生された各ビューの画像データは不図示のユーザが立体的に見ることができるように画像合成装置2006で画像データを合成し、ディスプレイ2007に表示する。
以下、本発明の画像符号化について、図面を用いて説明する。本実施形態において、3つのビューの符号化について説明するが、本発明はこれに限定されない。図2は図1に記載のベースビュー符号化部104の詳細を示すブロック図である。
図2において、201は端子であり、図1のカメラ101からピクチャの画像データを入力する。202はフレームメモリであり、1ピクチャ以上のピクチャの画像データを格納する。203は再生された画像データを格納するフレームメモリである。204は時間的に前または後のピクチャを参照して、動きベクトルを算出し、前記動きベクトルに基づいて予測を行うインター予測部である。インター予測部204は動きベクトルに合わせ、画像データの予測誤差も出力する。205はピクチャ内で予測を行うイントラ予測部である。206はインター予測部204で算出された動きベクトルや予測モードを保持しておく動きベクトル保持部である。207はインター予測部204とイントラ予測部205の予測誤差を比較し、予測誤差の小さい予測を選択する予測判定部である。予測判定部207は選択された予測誤差と選択結果を出力する。208は予測誤差に対して直交変換を行い、量子化を行い、量子化係数データを生成する変換量子化部である。209は変換量子化部208とは逆の動作を行い、量子化係数データから予測誤差を再生する逆量子化逆変換部である。210は前記予測モード、前記動きベクトル、再生された予測誤差、復号済みの画像データから画像データを再生する画像再構成部である。211は符号化部であり、得られた予測モード、動きベクトル、量子化係数データや量子化パラメータ等を符号化してブロック単位の符号化データを生成する。212は端子であり、生成されたビットストリームを外部に出力する。213は端子であり、図1に示したノンベースビュー符号化部105、106からフレームメモリ203の参照情報を入力する。ここで説明のため、参照情報は参照するビュー、ピクチャの番号等と参照する画素位置等の情報とするが、これに限定されない。このため、フレームメモリ203においては参照情報で指定された画像データを読み出す機能を備える。214は端子であり、参照情報に基づいたビューの復号画像の画像データを提供する。215は端子であり、図1に示したノンベースビュー符号化部105、106からピクチャやブロックの位置の情報を入力する。216は端子であり、これらの端子215から入力された情報に基づき、ビューの中のブロックの動きベクトルを提供する。
また、図3は図1に記載のノンベースビュー符号化部105の詳細を示すブロック図である。ノンベースビュー符号化部106も同じ構成をとる。図3において、図2に記載したブロックと同様な機能を果たすブロックについては同じ番号を付し、説明を省略する。301は端子であり、図1のカメラ102または3からピクチャの画像データを入力する。201も同様に端子であり、カメラ102からピクチャの画像データを入力する。302はフレームメモリであり、1ピクチャ以上のピクチャの画像データを格納する。
307は端子であり、図1のベースビュー符号化部104からベースビューの再生画像やノンベースビュー符号化部106から再生画像を入力する。308は端子であり、ノンベースビューのビューから視差ベクトルを入力する。本実施形態ではノンベースビュー符号化部106から視差ベクトルを入力する。310は端子301と端子307から入力されたピクチャに対して、他のビューを参照したり、他のビューの視差ベクトルを用いたりして視差ベクトルを算出し、ビュー間予測を行うビュー間予測部である。ビュー間予測部310は視差ベクトル、後述するビュー間予測モードと画像データの予測誤差を出力する。また、ビュー間予測部310は他のビューを参照するための参照情報(参照するビュー、ピクチャの番号等と参照する画素位置等の情報)を生成する。309は端子であり、前記の参照情報をベースビュー符号化部104、ノンベースビュー符号化部106に出力する。311はビュー間予測部310で算出された視差ベクトル保持しておく視差ベクトル保持部である。
312はインター予測部204、イントラ予測部205、ビュー間予測部310の予測誤差を比較し、予測誤差の小さい予測を選択する。選択された予測誤差と選択結果を予測モードとして出力する。313は端子であり、図1に示したノンベースビュー符号化部106からフレームメモリ203の参照情報を入力する。314は端子であり、参照情報に基づいたビューの復号画像の画像データを提供する。315は前記予測モード、前記動きベクトル、前記視差ベクトル、再生された予測誤差、再生された画像データから画像を再生する画像再構成部である。316はセレクタであり、予測判定部312が生成した予測モードに応じて入力を切り替えて出力する。317は符号化部であり、得られた予測モード、動きベクトル、視差ベクトル、後述するビュー間予測モード、予測誤差を符号化してブロック単位の符号化データを生成する。318は端子であり、生成されたビットストリームを外部に出力する。319は端子であり、図1に示したノンベースビュー符号化部106からピクチャやブロックの位置の情報を入力する。320は端子であり、端子319から入力されたこれらの情報に基づき、ビューの中のブロックの動きベクトルを提供する。
上記画像符号化装置における画像の符号化動作を以下に説明する。ノンベースビュー符号化についてはノンベースビュー符号化部105と106は同じ動作をするので、ここではノンベースビュー符号化部105の動作として説明する。
図2の端子201から入力された画像データはフレームメモリ202に入力され、格納される。また、同時に、図3の端子301から入力された画像データはフレームメモリ302に入力され、格納される。説明のために、ピクチャ内の全てのブロックに対してピクチャ内予測で符号化するイントラピクチャ符号化と時間的に前または後のピクチャを参照して動き補償を行い符号化するインターピクチャ符号化から構成されるものとする。但し、これに限定されず、例えば、双方向予測を行っても良い。図2のフレームメモリ202と図3のフレームメモリ302は必要なピクチャを保持するものとする。
まず、図2において、端子201から入力された画像データはフレームメモリ202を介してインター予測部204とイントラ予測部205に入力される。インター予測部204ではフレームメモリ203に格納されている再生画像データを参照して動き補償を行い、動きベクトルと予測誤差を算出する。算出された動きベクトルと予測モードは動きベクトル保持部206で保持される。イントラ予測部205ではフレームメモリ203に格納されている再生画像データを参照してイントラ予測を行い、イントラ予測モードと予測誤差を算出する。予測判定部207はインター予測部204とイントラ予測部205で算出された予測誤差を比較し、予測誤差の小さいものを選択する。すなわちインター予測部204から入力された予測誤差が小さければ、インター予測部204の予測誤差を変換量子化部208に出力し、インター予測符号化モードであることと動きベクトル等を符号化部211に出力する。逆に、イントラ予測部205から入力された予測誤差が小さければ、イントラ予測部205の予測誤差を変換量子化部208に出力し、イントラ予測符号化モードであることとイントラ予測モードを符号化部211に出力する。変換量子化部208は入力された予測誤差に対して直交変換を行い、その結果に対して量子化パラメータで量子化を行い、量子化係数データを算出する。量子化係数データは符号化部211と逆量子化逆変換部209に入力される。符号化部211は入力された符号化モード、各予測符号化モードの情報、量子化パラメータと量子化係数データを所定の符号化方式によって符号化する。本実施形態では符号化方式については特に限定しないが、H.264の算術符号化方式やハフマン符号などの符号化を行うことができる。
一方、逆量子化逆変換部209は変換量子化部208とは逆の動作を行い、予測誤差を算出する。画像再構成部210は算出された予測誤差と予測符号化モードを入力する。予測判定部207からインター予測符号化の場合はその予測誤差生成に用いた動きベクトルを、イントラ予測符号化の場合はイントラ予測モードを合わせて入力する。予測判定部207から得られたこれらの情報に基づいて、フレームメモリ203に格納されている再生画像データを参照して予測を行い、予測誤差と加算して再生画像データを生成する。生成された再生画像データはフレームメモリ203に格納される。
また、図3において、端子301から入力された画像データはフレームメモリ302を介してインター予測部204とイントラ予測部205とビュー間予測部310に入力される。ビュー間予測部310は図2のフレームメモリ203のベースビューの再生画像データを参照したり、ノンベースビュー符号化部106のフレームメモリ203を参照したりして視差ベクトルを算出する。これらの視差ベクトルに加えて視差ベクトル保持部311の視差ベクトルを用いてビュー間予測のモードと最終的な視差ベクトルを決定する。決定された視差ベクトルを用いてビュー間予測を行い、視差ベクトルや予測誤差を算出する。まず、L1予測で同じビューの最も参照番号の小さい参照ピクチャをアンカーピクチャに選定する。その後、当該アンカーピクチャで符号化対象ブロックと同じ位置のブロックをアンカーブロックとする。アンカーブロックが視差ベクトルを持ってビュー間予測を行っているか否かを判定する。視差ベクトルを持っている場合はアンカーブロックの視差ベクトルを符号化対象ブロックの視差ベクトルとする。このビュー間予測モードを特にビュー間ダイレクト予測モードと呼ぶ。
図8にビュー間ダイレクト予測モードの時の視差ベクトルの様子を示す。図8において、カメラ101〜カメラ103は、図1のカメラ101〜カメラ103と同じ機能を果たすため、説明を省略する。
カメラ101からはピクチャ701、704、707、710の順で入力される。それぞれの時間をt0、t1、t2、t3とする。これと同期して、カメラ102からはピクチャ702、705、708、711の順で、カメラ103からはピクチャ703、706、709、712の順で入力される。符号化対象のピクチャの時間をt2とした時、L1予測で最小の参照ピクチャ番号を持つピクチャの時間がt1であった場合を例にとって説明する。但し、カメラの台数(ビューの数)、L1予測での最小の参照ピクチャ番号、時間の間隔はこれに限定されない。
符号化対象ピクチャ708に対して、アンカーピクチャはピクチャ705となる。符号化対象ブロック713に対して、アンカーブロック714が対応する。アンカーブロック714が視差ベクトル715及び視差ベクトル716を持ち、他のビューのブロック717、ブロック718を参照しているとする。この場合、符号化対象ブロック713の視差ベクトル719は視差ベクトル715と等しく、視差ベクトル720は視差ベクトル716と等しいように設定する。
図4にビュー間予測部310の詳細なブロック図を示す。400は端子であり、図3のインター予測部204から動きベクトル算出のためのピクチャの参照情報を入力する端子である。ピクチャの参照情報としてはL1予測の情報等である。401は端子であり、図3のフレームメモリ302から符号化対象ブロックの画像データを入力する。402は端子であり、図3の端子308に接続されて、外部から参照画像データを入力する。403は端子であり、視差ベクトル保持部311に接続され、視差ベクトルを入力する。404はアンカーピクチャ決定部であり、同じビューのピクチャからアンカーピクチャを決定する。405はアンカーブロック決定部であり、アンカーブロックの位置を決定する。406はアンカーピクチャ内のアンカーブロックの位置を示す参照情報を生成するアンカー参照情報算出部である。407は端子であり、視差ベクトル保持部311に接続されており、アンカーブロックの位置を示す参照情報を出力する。408はセレクタであり、制御信号によって出力先を選択する。409は視差ベクトル算出部であり、符号化対象ブロックの画像データと参照するビューの画像データから視差ベクトルを算出する。410は端子403から入力された視差ベクトルを用いて参照ビューの画像データから予測誤差を算出する予測誤差算出部である。411は視差ベクトル算出部409と予測誤差算出部410が参照するための画像データを読み込むための参照情報の出力(セレクタ412の入力)、セレクタ408の入力を制御する参照情報出力制御部である。412はセレクタであり、参照情報出力制御部411の信号に基づいて入力を選択する。413は端子であり、図3の端子309に接続されており、他のビューの画像データを参照するための参照情報を外部に出力する。414はビュー間予測決定部であり、入力された予測誤差を用いてビュー間予測モードを決定し、視差ベクトル、予測誤差を選択して出力する。415は端子であり、ビュー間予測モードや視差ベクトルの情報を外部に出力する端子である。416は端子であり、予測誤差を外部に出力する。
図4の構成において、符号化対象ブロックの画像データはアンカーピクチャ決定部404、視差ベクトル算出部409、予測誤差算出部410に入力される。アンカーピクチャ決定部404は入力された符号化対象ブロックのピクチャの情報とインター予測のための参照情報からアンカーピクチャを決定する。端子400から入力されたL1予測で同じビューの最も参照番号の小さい参照ピクチャをアンカーピクチャに選定する。アンカーブロック決定部405は符号化対象ブロックの位置情報からアンカーブロックの位置を決定する。これは対象ブロックと同一位置のブロックの位置情報をブロックの計数等で算出すればよい。アンカー参照情報算出部406はこれらのアンカーピクチャとアンカーブロックの情報から参照情報を算出し、端子407から視差ベクトル保持部311に出力する。これに適合するブロックの視差ベクトルを端子403から入力する。入力された視差ベクトルに基づいて視差ベクトルが指し示す画像データを入力するための参照情報を生成する。生成された参照情報は参照情報出力制御部411とセレクタ412に入力される。参照情報出力制御部411は入力された順に参照情報を出力するためにセレクタ412を制御する。参照情報はセレクタ412を介して端子413から出力され、図3の端子309を介して他のベースビュー符号化部やノンベースビュー符号化部に入力される。その結果は端子402から入力され、参照情報出力制御部411からの制御によってセレクタ408を介して予測誤差算出部410に入力される。予測誤差算出部410では符号化対象ブロックの画像データと入力された参照画像データとの差分から予測誤差を算出する。算出された予測誤差はビュー間予測決定部414に入力される。
視差ベクトル算出部409は入力された符号化対象ブロックの位置から他のビューに対して視差ベクトル算出のために参照する画像データを指定するための参照情報を生成する。生成された参照情報は参照情報出力制御部411とセレクタ412に入力される。参照情報出力制御部411は他に参照情報の入力がなければ、参照情報はセレクタ412を介して端子413から出力するように制御する。端子413を介して参照情報は図3の端子309を介して他のベースビュー符号化部やノンベースビュー符号化部に入力される。その結果は端子402から入力され、参照情報出力制御部411からの制御によってセレクタ408を介して視差ベクトル算出部409に入力される。視差ベクトル算出部409では符号化対象ブロックの画像データと比較を行い、視差ベクトルを算出する。算出された視差ベクトルと算出された視差ベクトルを用いた時の予測誤差はビュー間予測決定部414に入力される。
ビュー間予測決定部414は入力された予測誤差を比較し、視差ベクトル算出部409から入力された予測誤差が小さければ、端子416より視差ベクトル算出部409から出力された予測誤差を出力する。と同時に端子415から視差ベクトルとビュー間予測モードがビュー間参照予測モードであることを外部に出力する。このようにビュー間予測モードは視差ベクトルを持ち、符号化を行うモードである。また、視差ベクトル算出部409から入力された予測誤差が小さくなければ、端子416より予測誤差算出部410から出力された予測誤差を出力する。と同時に端子415よりビュー間予測モードがビュー間ダイレクト予測モードであることを外部に出力する。
ビュー間予測モードと視差ベクトルはセレクタ316と画像再生部315に入力される。予測誤差は予測判定部312に入力される。算出された視差ベクトルは視差ベクトル保持部311に入力され、保持される。
予測判定部312はインター予測部204、イントラ予測部205、ビュー間予測部310で算出された予測誤差を比較し、予測誤差の小さいものを選択する。すなわちインター予測部204から入力された予測誤差が小さければ、インター予測部204の予測誤差を変換量子化部208に出力し、インター予測符号化モードであることと動きベクトル等を符号化部317に出力する。また、イントラ予測部205から入力された予測誤差が小さければ、イントラ予測部205の予測誤差とイントラ予測モードを変換量子化部208に出力し、イントラ予測符号化モードであることとイントラ予測モードを符号化部317に出力する。さらに、ビュー間予測部310から入力された予測誤差が小さければ、ビュー間予測部310の予測誤差を変換量子化部208に出力し、ビュー間予測符号化モードであることを符号化部317に出力する。
また、セレクタ316は予測判定部312から選択された符号化対象の予測モードによって入力先を変更する。ビュー間予測符号化モードであればビュー間予測部310のビュー間予測モードと視差ベクトルを符号化部317に出力する。そうでなければインター予測部204の動きベクトルを出力する。
符号化部317は入力された符号化モード、ビュー間予測モードを含む各予測符号化モードの情報、量子化パラメータと量子化係数データを所定の符号化方式によって符号化する。本実施形態では符号化方式については特に限定しないが、H.264の算術符号やハフマン符号などの符号化を行うことができる。例えば、H.264の空間/時間ダイレクト予測の判定フラグであるdirect_spatial_mv_pred_flagに続いて、direct_view_mv_pred_flagを設定する。この値が0であれば、ビュー間参照予測モードを表し、1であればビュー間ダイレクト予測モードを表す構成にしても良い。またはdirect_mv_pred_modeのような2ビットで表される符号とする。符号が0であれば空間ダイレクト予測、1であれば時間ダイレクト予測、2であればビュー間ダイレクト予測、3であればビュー間参照予測の各モードを表すものとしてもよい。ビュー間予測モードがビュー間参照予測モードであれば、これに加えて視差ベクトルを符号化する。
一方、逆量子化逆変換部210では予測誤差を再生する。画像再構成部315は再生された予測誤差と予測符号化モードを入力する。インター予測符号化の場合はその予測誤差の生成に用いた動きベクトルを、イントラ予測符号化の場合はイントラ予測モードを、ビュー間予測符号化の場合はビュー間予測モードと視差ベクトルを合わせて入力する。予測判定部312から得られたこれらの情報に基づいて、フレームメモリ203に格納されている再生画像データを参照して予測を行い、予測誤差と加算して再生画像データを生成する。生成された再生画像データは図3のフレームメモリ203に格納される。
図5は、実施形態1に係る画像符号化装置におけるベースビュー画像符号化処理を示すフローチャートである。まず、ステップS501にて、符号化するピクチャの画像データを入力する。
ステップS502にて、符号化対象ピクチャのピクチャ符号化モードを決定する。すなわちイントラピクチャ符号化するか、インターピクチャ符号化するか、ビュー間予測符号化するかを決定する。ステップS503にて、ステップS502で決定したピクチャ符号化モードを含めてヘッダデータを符号化する。ステップS504にて、符号化対象ピクチャのピクチャ符号化モードを判定する。ピクチャ符号化モードがイントラピクチャ符号化であればステップS505に進み、インターピクチャ符号化であれば、ステップS506に進む。ステップS505にて、H.264のイントラピクチャの符号化方式に従って符号化し、ビットストリームを生成する。
ステップS506にて、H.264のインターピクチャの符号化方式に従って符号化し、ビットストリームを生成する。また、図6は実施形態1に係る画像符号化装置におけるノンベースビュー画像符号化処理を示すフローチャートである。同図において、図5と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。ステップS602にて、符号化対象ピクチャのピクチャ符号化モードを決定する。すなわちイントラピクチャ符号化するか、インターピクチャ符号化するか、ビュー間予測符号化するかを決定する。
ステップS607にて、符号化対象ピクチャのピクチャ符号化モードを判定する。ピクチャ符号化モードがビュー間予測符号化であればステップS608に進み、インターピクチャ符号化であれば、ステップS506に進む。ステップS608にて、ビュー間予測符号化を行い、ビュー間予測符号化を行ってビットストリームを生成する。
図7にステップS608の詳細なフローチャートを示す。まずはステップS701にて、ピクチャの画像データから符号化対象のブロックを切り出す。ステップS702にて、符号化対象のブロックの符号化モードを決定する。符号化モードの決定については特に限定しないが、ブロック内の画像の特性、周囲のブロックとの相関等に基づいて決定することができる。ステップS703にて、ステップS702で決定されたブロックの符号化モードがイントラ予測符号化かどうかを判定する。イントラ予測符号化であればステップS704に進み、そうでなければステップS705に進む。
ステップS704にて、H.264のイントラ予測ブロック符号化を行い、ブロックの符号データを生成する。ステップS705にて、ステップS702で決定されたブロックの符号化モードがインター予測符号化かどうかを判定する。インター予測符号化であればステップS706に進み、そうでなければステップS707に進む。
ステップS706にて、H.264のインター予測ブロック符号化を行い、ブロックの符号データを生成する。ステップS707にて、同じビューのアンカーピクチャとしてL1予測で最も参照番号の小さい参照ピクチャを決定する。
ステップS708にて、ステップS607で決定されたアンカーピクチャで符号化対象ブロックと同じ位置のブロックをアンカーブロックとする。ステップS709にて、アンカーブロックが視差ベクトルを用いて予測を行ったか否かを判定する。アンカーブロックが視差ベクトルを用いてビュー間予測符号化を行っていればステップS710に進み、そうでなければステップS712に進む。ステップS710にて、符号化対象ブロックの符号化モードをビュー間ダイレクト予測モードとし、これを符号化する。
ステップS711にて、アンカーブロックの視差ベクトルを符号化対象ブロックの視差ベクトルとする。ステップS712にて、符号化対象ブロックの符号化モードをビュー間参照予測モードとし、これを符号化する。ステップS713にて、同じアクセスユニット内の別なビューの復号画像を参照して視差ベクトルを算出する。ステップS714にて、算出された視差ベクトルを符号化する。ステップS715にて、得られた視差ベクトルを用いて予測誤差の算出を行う。ステップS716にて、算出された予測誤差を変換・量子化して量子化係数データを算出し、符号化する。ステップS717にて、ピクチャ内の全てのブロックについて符号化を行ったか否かを判定する。全てのブロックの符号化処理が終了していない場合はステップS701に進み、次の符号化対象ブロックの処理を続けて行う。終了している場合にはビュー間予測符号化ピクチャの符号化処理を終了する。
以上の構成と動作により、ビュー間ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの視差ベクトルを使用するため、視差ベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。また、動きベクトル、視差ベクトルの符号化方式についてはこれに限定されず、符号化済みの動きベクトル、視差ベクトルを参照して符号化してももちろん構わない。
なお、本実施形態では図8に示したように同じアクセスユニット内の他のビューに対する視差ベクトルを例にとって説明したが、これに限定されない。例えば、図9のように視差ベクトルとその参照ピクチャの組み合わせによって、他のビューの他のピクチャを参照してももちろん構わない。
さらに、本実施形態では図7のステップS709以降で視差ベクトルを用いたビュー間予測を行ったがこれに限定されない。例えば、アンカーブロックが時間ダイレクト予測であれば、符号化対象ブロックも時間ダイレクト予測で符号化してもよい。図10に別なビュー間ピクチャの符号化処理を表すフローチャートを示す。同図において、図7と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
ステップS1001にて、アンカーブロックの予測モードが時間ダイレクトであるか否かを判定する。アンカーブロックが時間ダイレクト予測であれば、ステップS1002に進み時間ダイレクト予測によって符号化対象ブロックの動きベクトルを算出する。ステップS1003にて、算出された動きベクトルを用いて動き補償を行い、予測誤差を算出する。時間ダイレクト予測でなければ、ステップS709に進み、図7と同様にビュー間参照予測モード乃至はビュー間ダイレクト予測モードで符号化を行う。
これによって、時間ダイレクト予測とビュー間ダイレクト予測の併用が可能になり、より一層の符号化効率の向上が望める。
図4でその構成を説明する。図4のアンカー参照情報算出部406から出力されるアンカー参照情報を端子407から出力して、端子319から入力して動きベクトル保持部206を参照する。動きベクトル保持部206では時間ダイレクト予測が行われたか否かの結果を端子320から出力する。これを図4の端子403から入力する。予測誤差算出部410はアンカーブロックが時間ダイレクト予測モードであったことをビュー間予測決定部414に出力する。ビュー間予測決定部414ではダイレクトモードであった場合、端子415から時間ダイレクト予測モードであったことを出力する。この際、予測誤差、視差ベクトルは出力されない。図3に戻り、予測判定部312はビュー間予測による予測誤差が出力されないため、ビュー間予測は選択しない。インター予測部204はアンカーブロックの予測モードを動きベクトル保持部206から読み出し、時間ダイレクト予測であれば、符号化対象ブロックも時間ダイレクト予測モードで動き補償を行う。
さらには、図11に別なビュー間ピクチャの符号化処理を表すフローチャートを示す。同図において、図7と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
ステップS1100にて、符号化対象ブロックを周囲のブロックの画素値からイントラ予測を行い、予測誤差Diを算出する。
ステップS1101にて、ビュー内の他のピクチャを参照して動きベクトルを算出し、インター予測を行って予測誤差を求め、例えば予測誤差の二乗総和によって、予測誤差コストDmを算出する。ステップS1102にて、他のビューのピクチャを参照して視差ベクトルを算出し、ビュー間予測を行って予測誤差を求め、予測誤差コストDvを算出する。ステップS1103にて、アンカーブロックの視差ベクトルを用いて、ビュー間予測を行って予測誤差を求め、予測誤差コストDdを算出する。ステップS1104にて、各予測誤差コストと予測誤差Diを比較し、予測誤差Diが最小であれば、ステップS704に進む。そうでなければ、ステップS1105に進む。
ステップS1105にて、その他の各予測誤差コストを比較し、予測誤差コストDmが最小であれば、ステップS1106に進む。同様に、予測誤差コストDvが最小であれば、ステップS712に進み、予測誤差コストDdが最小であれば、ステップS610に進む。ステップS1106にて、予測モードとしてインター予測モードを符号化する。ステップS1107にて、ステップS1101で算出した動きベクトルを符号化する。ステップS1108にて、前記動きベクトルを用いて動き補償を行い、予測誤差を算出する。
これによって、ピクチャ間予測、ビュー間参照予測、ビュー間ダイレクト予測の併用が可能になり、より一層の符号化効率の向上が望める。もちろん、ピクチャ間予測には時間ダイレクトモードを含めても構わない。また、予測モードの判定に予測誤差コストを算出したがこれに限定されず、実際の符号長や別な統計量を用いても構わない。
なお、本実施形態において、ノンベースビュー符号化でベースビュー符号化のビューから動きベクトルを読み出すことは無いので、端子215及び端子216は省略しても構わない。
本実施形態では説明を簡略化するためにピクチャ単位でイントラ予測符号化モードかインター予測符号化モードかビュー間予測符号化モードかを決定したが、これに限定されず、より細かなスライスやブロックの単位で切り替えてももちろん構わない。
<実施形態2>
以下、本発明の画像符号化について実施形態2を、図面を用いて説明する。本実施形態において、3つのビューの符号化について説明するが、これに限定されない。図12は図2に記載のノンベースビュー符号化部105の詳細を示すブロック図である。図12において、図3のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。
1201はアンカー設定部であり、アンカーピクチャとアンカーブロックを決定し、その参照情報を出力する。1202は端子であり、他のビューの動きベクトル保持部に接続されている。ノンベースビュー符号化部105においても端子319を介して参照情報を入力し、動きベクトル保持部306から参照情報が示すブロックの動きベクトルを端子320から出力する。アンカー設定部1201から出力されたアンカーブロックの参照情報を出力する。1209は端子であり、実施形態1の図2に示したベースビュー符号化部104の端子216に接続されており、ベースビュー符号化されたビューの参照情報を入力する。1204はインター予測部であり、インター予測を行う。実施形態1の図3に示したインター予測部304とは端子1209から入力された参照情報に基づいてインター予測を行うことが異なる。1210はアンカーブロックを決定してその参照情報を算出し、端子301と端子307から入力されたピクチャに対して、他のビューを参照して視差ベクトルを算出し、ビュー間予測を行うビュー間予測部である。1217は符号化部であり、実施形態1の図3に記載の符号化部317と同様に得られた予測モード、動きベクトル、視差ベクトル、予測モード、予測誤差を符号化してブロック単位の符号化データを生成する。1212はインター予測部1204、イントラ予測部205、ビュー間予測部1210の予測誤差を比較し、予測誤差の小さい予測を選択する。選択された予測誤差と選択結果を予測モードとして出力する。
上記画像符号化装置における画像の符号化動作を以下に説明する。端子301から入力された画像データはフレームメモリ302を介してインター予測部1204とイントラ予測部305とビュー間予測部310に入力される。ビュー間予測部1210は視差ベクトルを決定し、ビュー間予測を行い、予測誤差を算出する。
図13にビュー間予測部1210の詳細なブロック図を示す。図13において、図4のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。1313は端子であり、視差ベクトル算出部409が出力する視差ベクトル算出のために他のビューを参照する画像データを指定するための参照情報を出力する。
視差ベクトル算出部409は実施形態1と同様に視差ベクトル算出のために参照する画像データを指定するための参照情報を生成する。生成された参照情報は端子1313から出力される。端子1313を介して参照情報は図12の端子309を介して他のベースビュー符号化部やノンベースビュー符号化部に入力される。その結果は端子402から入力され、視差ベクトル算出部409に入力される。視差ベクトル算出部409では実施形態1と同様に視差ベクトルと視差ベクトルを用いた時の予測誤差を出力する。端子416より予測誤差を、端子415から視差ベクトルとビュー間予測モードがビュー間参照予測モードであることを外部に出力する。
アンカー設定部1201は最も距離の近いビューの同じアクセスユニットの参照ピクチャをアンカーピクチャに選定する。その後、当該アンカーピクチャで符号化対象ブロックとピクチャ上で同じ位置のブロックをアンカーブロックとし、その参照情報を出力する。インター予測部1204はアンカー設定部1201で設定されたアンカーブロックが動きベクトルを持ってインター予測を行っているか否かを判定する。端子1209からアンカーブロックの動きベクトルが入力された時、アンカーブロックがインター予測されたと判断し、アンカーブロックの動きベクトルを符号化対象ブロックの動きベクトルとする。このインター予測モードを特にビュー間時間ダイレクト予測モードと呼ぶ。そうでなければ通常の動きベクトル探索を行い、動きベクトルとその予測誤差を求める。このインター予測モードをインター動き補償予測モードと呼ぶ。
図15にビュー間時間ダイレクト予測モードの時の動きベクトルの様子を示す。図15において、図8のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。
符号化対象のピクチャの時間をt2とした時、ビュー間予測で最も近い参照ビュー番号を持つビューがカメラ101のビューであった場合を例にとって説明する。但し、カメラの台数(ビューの数)、ビュー間予測での最も近い参照番号、時間の間隔はこれに限定されない。
符号化対象ピクチャ808に対して、アンカーピクチャはピクチャ807となる。符号化対象ブロック813に対して、アンカーブロック1501が対応する。アンカーブロック1501が動きベクトル1504及び動きベクトル1505を持ち、同じビュー内のピクチャのブロック1502、ブロック1503を参照しているとする。この場合、符号化対象ブロック813の動きベクトル1508は動きベクトル1504と等しく、動きベクトル1509は動きベクトル1505と等しく設定する。これを実現するため、図12のインター予測部1204は端子1209からアンカーブロックの動きベクトルを入力する。この動きベクトルを用いて予測誤差を算出する。また、アンカーブロックが動きベクトルを持っていなければ、同じビュー内の再生画像を参照して、動きベクトル探索を行う。この場合はインター予測となる。
予測判定部1212はインター予測部1204、イントラ予測部205、ビュー間予測部1210で算出された予測誤差を比較し、予測誤差の小さいものを選択する。すなわちインター予測部1204でビュー間時間ダイレクト予測モードまたはインター予測モードで得られた予測誤差が小さければ、インター予測部1204の予測誤差を変換量子化部208に出力する。さらに、ビュー間時間ダイレクト予測モードまたはインター予測モードと動きベクトル等を符号化部1217に出力する。また、イントラ予測部205から入力された予測誤差が小さければ、イントラ予測部205の予測誤差とイントラ予測モードを変換量子化部208に出力し、イントラ予測符号化モードであることとイントラ予測モードを符号化部1217に出力する。さらに、ビュー間予測部1210から入力された予測誤差が小さければ、ビュー間予測部1210の予測誤差を変換量子化部208に出力し、ビュー間予測符号化モードであることを符号化部1217に出力する。
また、セレクタ316は予測判定部1212から選択された符号化対象の予測モードによって入力先を変更する。ビュー間予測符号化モードであればビュー間予測部1210のビュー間予測モードと視差ベクトルを符号化部1217に出力する。そうでなければインター予測部1204の符号化モードと動きベクトルを出力する。
符号化部1217は入力された符号化モード、ビュー間予測モードを含む各予測符号化モードの情報、量子化パラメータと量子化係数データを所定の符号化方式によって符号化する。本実施形態では符号化方式については特に限定しないが、H.264の算術符号化方式やハフマン符号などの符号化を行うことができる。例えば、H.264の空間/時間ダイレクト予測の判定フラグであるdirect_spatial_mv_pred_flagに続いて、direct_view_mv_pred_flagを設定する。この値が0であれば、インター動き補償予測モードを表し、1であればビュー間時間ダイレクト予測モードを表す構成にしても良い。またはdirect_mv_pred_modeのような2ビットで表される符号とする。符号が0であれば空間ダイレクト予測、1であれば時間ダイレクト予測、2であればビュー間時間ダイレクト予測の各モードを表すものとしてもよい。ビュー間予測モードがビュー間参照予測モードであれば、これに加えて視差ベクトルを符号化する。
図14は、実施形態2に係る画像符号化装置におけるベースビュー画像符号化処理を示すフローチャートである。同図において、図10と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
まず、ステップS1401にて、同じアクセスユニットのアンカーピクチャとしてビュー間予測で最も近い番号のビューを決定する。ステップS1402にて、ステップS1401で決定されたアンカーピクチャで符号化対象ブロックと同じ位置のブロックをアンカーブロックとする。ステップS1403にて、アンカーブロックの動きベクトルを用いて、インター予測を行って予測誤差を求め、予測誤差コストDdを算出する。
ステップS1404にて、各予測誤差コストを比較し、予測誤差コストDmが最小であれば、ステップS1105に進む。同様に、予測誤差コストDvが最小であれば、ステップS712に進み、予測誤差コストDdが最小であれば、ステップS1410に進む。ステップS1410にて、予測モードとしてビュー間時間ダイレクト予測モードを符号化する。ステップS1411にて、アンカーブロックの動きベクトルを符号化対象ブロックの動きベクトルとする。
以上の構成と動作により、ビュー間時間ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの動きベクトルを使用するため、動きベクトルデータの符号データを省略することができる。また、インター予測の時間ダイレクト予測モードも加えて、さらに動きベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。また、動きベクトル、視差ベクトルの符号化方式についてはこれに限定されず、符号化済みの動きベクトル、視差ベクトルを参照して符号化してももちろん構わない。
また、本実施形態のビュー間時間ダイレクト予測とビュー間予測、ビュー間参照予測、インター予測を組み合わせて効率のよいものを選択してももちろん構わない。これらを識別する符号データを用意することで簡単に実現でき、より符号化効率の向上を行うことが可能になる。
また、アンカーブロックの位置をピクチャ上の符号化対象ブロックの位置と同じとしたが、これに限定されず、カメラの配置に基づいて、空間的に同じ位置を示すブロックとしても構わない。また、本実施形態において、最も近い距離のビューの同じアクセスユニットの参照ピクチャをアンカーピクチャとしたが、これに限定されない。例えば、参照する方向を一意に決めて決定しても良いし、アンカーピクチャを指定する識別情報を符号化してももちろん構わない。
<実施形態3>
以下、本発明の画像符号化について実施形態3を、図面を用いて説明する。本実施形態において、3つのビューの符号化について説明するが、これに限定されない。本実施形において、ベースビュー符号化部104は実施形態1と同じ構成をとり、実施形態1と同様の動作を行い、ビュー間予測を行わずにカメラ101から入力されたピクチャを符号化する。
図16に図1のノンベースビュー符号化部105の詳細を示すブロック図である。図16において、図3のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。1601は端子であり、他のノンベースビュー符号化部、本実施例ではノンベースビュー符号化部106からピクチャやブロックの位置の情報を入力する。1602は端子であり、端子1601から入力されたこれらの情報に基づき、ビューの中のブロックの視差ベクトルと参照ビュー番号を出力する。1609は端子であり、アンカーブロックに関する参照情報を出力する。1610はビュー間予測部であり、図3のビュー間予測部310とは端子1609から入力された視差ベクトルからビュー間予測に使用する視差ベクトルを算出する機能が異なる。1611は視差ベクトルとその視差ベクトルが参照する参照ビュー番号を格納する視差ベクトル保持部である。図3の視差ベクトル保持部とは、端子1601の要求に基づいて情報を読み出し、端子1602から出力する機能が異なる。1617は符号化部であり、得られた予測モード、動きベクトル、視差ベクトル、ビュー間予測モード、予測誤差を符号化してブロック単位の符号化データを生成する。
図16に従ってノンベースビュー符号化部105の動作について説明する。端子301から入力された画像データはフレームメモリ302を介してインター予測部204とイントラ予測部205とビュー間予測部1610に入力される。
図17にビュー間予測部1610の詳細なブロック図を示す。図17において、図4のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。1700は当該ノンビュー符号化部の他のビューとの位置関係を含むビュー間情報を保持していうビュー間情報保持部である。1701はビュー間視差ベクトル算出部であり、端子403から入力された視差ベクトルをビュー間情報保持部の位置関係の情報からビュー間予測に用いる視差ベクトルを算出する。1704はアンカーピクチャ決定部であり、符号化するピクチャとビュー間情報から参照ピクチャを決定する。1706はアンカーピクチャ内のアンカーブロックの位置を示す参照情報を生成するアンカー参照情報算出部である。1707は端子であり、他のビューの視差ベクトル保持部311、1611に接続されており、アンカーブロックの位置を示す参照情報を出力する。1710は入力された視差ベクトルを用いて参照ビューの画像データから予測誤差を算出する予測誤差算出部である。
視差ベクトル算出部409は実施形態1と同様に図2のベースビュー符号化部104のベースビューの再生画像データまたはノンベースビュー符号化部106の再生画像データを端子402、セレクタ408から入力して視差ベクトルを算出する。
アンカーピクチャ決定部1704はビュー間情報保持部1700を参照してビュー間予測で最も近い参照番号を持つノンベースビューを選択する。選択されたビューで同じアクセスユニットのピクチャをアンカーピクチャに選定する。その後、アンカーブロック決定部405は当該アンカーピクチャで符号化対象ブロックと同じ位置のブロックをアンカーブロックとする。アンカー参照情報算出部1706はこれらのアンカーピクチャとアンカーブロックの情報から参照情報を算出し、端子1707から他のビューのノンベースビュー符号化部の視差ベクトル保持部1611に出力する。本実施形態では、ノンベースビュー符号化部106になる。図16に戻って視差ベクトル保持部1611はこの参照情報を端子1601から受け取り、該当する視差ベクトルを端子1602から出力する。この視差ベクトルは図17の端子403から入力される。ビュー間視差ベクトル算出部1701はこの視差ベクトルとビュー間情報保持部1700に保持されているビュー間情報に基づいてビュー間予測に用いる視差ベクトルを算出する。
図19にビュー間視差ベクトル算出部1701での視差ベクトルの算出の様子を示す。図19において、図8のブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。
符号化対象のピクチャの時間をt2とした時、ビュー間予測で最も近い参照番号を持つビューがカメラ103から入力されるビューであった場合を例にとって説明する。但し、カメラの台数(ビューの数)、ビュー間予測で最も近い参照ビュー番号、時間の間隔はこれに限定されない。
符号化対象ピクチャ808に対して、アンカーピクチャはピクチャ809となる。符号化対象ブロック813に対して、アンカーブロック1901が対応する。アンカーブロック1901が視差ベクトル1902を持っている。この時、視差ベクトル1902が指し示すビューが符号化対象のビューから見てアンカーピクチャを含むビューとは反対の位置に存在するか否かを判断する。反対の位置のビューのブロック1903を参照している場合、ビュー間視差ダイレクト予測モードを選択する。すなわち、視差ベクトル1902を用いて符号化対象ブロック813の視差ベクトルを算出する。この時、符号化対象ブロックが参照するビューはアンカーピクチャを含むビューとアンカーブロックが参照するブロックを含むビューとなる。視差ベクトル1902をカメラ101とカメラ103の距離をカメラ102の位置で内分する。例えば、視差ベクトル1902の成分が(x、y)とし、カメラ101とカメラ102の距離とカメラ102とカメラ103の距離の比がα:β(α+β=1)であったとする。この時、カメラ101のビューに対する視差ベクトル1905は(αx、αy)となり、カメラ103のビューに対する視差ベクトル1904は(−βx、−βy)となる。視差ベクトル1904に従ってカメラ103のビューのピクチャからブロック1906を、視差ベクトル1905に従ってカメラ101のビューのピクチャからブロック1907を得て予測ブロックを算出する。
このようにアンカーブロックの視差ベクトルから符号化対象ブロックの視差ベクトルを算出して予測するビュー間予測モードを特にビュー間視差ダイレクト予測モードと呼ぶ。
予測誤差算出部1710はこ内分された視差ベクトルに基づいて、他のビューの2つの参照情報を算出し、セレクタ412を介して端子413から出力される。図19の場合では一つは視差ベクトル1904に基づいてノンベースビュー符号化部106の対応する位置の再生画像データを読み出す参照情報である。もう一つは視差ベクトル1905に基づいてベースビュー符号化部104の対応する位置の再生画像データを読み出す参照情報である。前者は図2の端子213から入力され、フレームメモリ203からブロック1607のデータを読み出し、端子214から出力する。後者は図16の端子313から入力され、フレームメモリ203からブロック1906のデータを読み出し、端子314から出力する。予測誤差算出部1710はこれらブロック1606、ブロック1607と符号化対象ブロックから予測誤差を算出する。
ビュー間予測決定部1714は入力された予測誤差を用いてビュー間予測モードを決定し、視差ベクトル、予測誤差を選択して出力する。視差ベクトル算出部409から入力された予測誤差が小さければ、端子416より視差ベクトル算出部409から出力された予測誤差を出力する。と同時に端子415から視差ベクトルとビュー間予測モードがビュー間参照予測モードであることを外部に出力する。予測誤差が小さくなければ、端子416より予測誤差算出部1710から出力された予測誤差を出力する。と同時に端子415よりビュー間予測モードがビュー間ダイレクト予測モードであることを外部に出力する。また、アンカーブロックが視差ベクトルを持っていない場合、または視差ベクトルが指し示すビューが符号化対象のビューからみて同じ方向にある場合については視差ベクトル算出部409からの出力を選択する。さらに、ビュー間参照予測モードをビュー間参照予測モードとする。
図16に戻り、ビュー間予測モードと視差ベクトルはセレクタ316、画像再構成部315に入力される。予測誤差は予測判定部312に入力される。算出された視差ベクトルは視差ベクトル保持部1611に入力され、保持される。
予測判定部312は実施形態1と同様に算出された予測誤差を比較し、予測誤差の小さいものを選択する。また、セレクタ316も実施形態1と同様に入力先を変更する。符号化部1617は入力された符号化モード、各予測符号化モードの情報、量子化パラメータと量子化係数データを所定の符号化方式によって符号化する。本実施形態では符号化方式については特に限定しないが、H.264の算術符号化方式やハフマン符号などの符号化を行うことができる。例えば、H.264の空間/時間ダイレクト予測の判定フラグであるdirect_spatial_mv_pred_flagに続いて、direct_view_mv_pred_flagを設定する。この値が0であれば、ビュー間参照予測モードを表し、1であればビュー間視差ダイレクト予測モードを表す構成にしても良い。またはdirect_mv_pred_modeのような2ビットで表される符号とする。符号が0であれば空間ダイレクト予測、1であれば時間ダイレクト予測、2であればビュー間視差ダイレクト予測、3であればビュー間参照予測の各モードを表すものとしてもよい。ビュー間予測モードがビュー間参照予測モードであれば、これに加えて視差ベクトルを符号化する。
図18は、実施形態3に係る画像符号化装置におけるノンベースビュー画像符号化処理を示すフローチャートである。図18において、図7と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。なお、本実施形態ではベースビュー画像符号化処理は実施形態1の図5に示したフローチャートを同じである。
ステップS1801にて、ビュー間予測で最も近い参照ビュー番号の参照ビューを選択し、そのビューの同じアクセスユニットのピクチャをアンカーピクチャとして決定する。ステップS1802にて、ステップS1801で決定されたアンカーピクチャで符号化対象ブロックと同じ位置のブロックをアンカーブロックとする。ステップS1803にて、アンカーブロックの参照ビューが符号化対象ビューから見てアンカーピクチャのビューと反対側かどうかを判定する。反対側であればステップS1504に進み、そうでなければステップS612に進む。
ステップS1804にて、符号化対象ブロックの符号化モードをビュー間視差ダイレクト予測モードとし、これを符号化する。ステップS1805にて、アンカーブロックの視差ベクトルから符号化対象ブロックの視差ベクトルを内分によって算出する。ステップS1815にて、視差ベクトルが1つの場合は読み出された視差ベクトルに従って参照ピクチャの再生画像から画素値の予測値を算出する。視差ベクトルが複数の場合は読み出された視差ベクトルに従って参照ピクチャの再生画像から各画素値を読み出し、これを平均して予測値を算出する。但し、予測値の算出方法については平均に限定されず、カメラ間の距離を考慮した加重平均を行っても良い。
以上の構成と動作により、ビュー間視差ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの視差ベクトルを使用しカメラ間の距離情報等はシーケンスで共通となる。このため、視差ベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。また、動きベクトル、視差ベクトルの符号化方式についてはこれに限定されず、符号化済みの動きベクトル、視差ベクトルを参照して符号化してももちろん構わない。
また、アンカーブロックの位置をピクチャ上の符号化対象ブロックの位置と同じとしたが、これに限定されず、カメラの配置に基づいて、空間的に同じ位置を示すブロックとしても構わない。また、本実施形態ではビュー間視差ダイレクトで符号化対象のビューから見てアンカーピクチャを含むビューとは反対の位置に存在するビューを例にとって、内分を行ったが、これに限定されない。例えば、反対ではない方向に存在するビューを用いる場合、外挿を行うことも可能である。
<実施形態4>
以下、本発明の画像復号について実施形態を、図面を用いて説明する。本実施形態において、3つのビューの復号について説明するが、これに限定されない。本実施形態では実施形態1で生成されたビットストリームの復号を行う。
図21は図20に記載のベースビュー復号部2003の詳細を示すブロック図である。
図21において、2101は端子であり、外部、例えば図20のMVC復号部2002からベースビュー符号化されたビューのビットストリームを入力する。2102は復号部であり、図1のベースビュー符号化部104で生成した符号データを復号する。復号部2102は符号データをブロック単位で復号し、量子化パラメータ、予測モード、動きベクトル、量子化係数データを再生する。2103は図2の逆量子化逆変換部209と同様に動作し、量子化係数データから予測誤差を再生する。2104は復号された参照するビュー、ピクチャの番号等と参照する画素位置等の参照情報に基づいて同じビュー内のピクチャからインター予測を行い、ブロックの画素値の予測値を算出するインター予測部である。2105は復号された動きベクトルを保持しておく動きベクトル保持部である。2106は復号されたイントラ予測モード等から同じピクチャ内の再生画像の画像データを参照してイントラ予測を行い、ブロックの画素値の予測値を算出するイントラ予測部である。
2107はセレクタであり、復号部2102で復号されたブロック符号化モードによって入力先を切り替える。ブロック符号化モードがインター予測符号化モードであれば、入力先をインター予測部2104とし、そうでなければイントラ予測部2106とする。2108は逆量子化逆変換部2103で再生された予測誤差、セレクタ2107から入力される画素値の予測値から画像データを再生する画像再構成部である。2109はフレームメモリであり、ピクチャの参照に必要なピクチャの再生された画像データを格納する。2110は端子であり、再生された画像データを外部に出力する。2111は端子であり、図20に示したノンベースビュー復号部2004、2005からピクチャやブロックの位置の情報を入力する。2112は端子であり、これらの端子2111から入力された情報に基づき、ビューの中のブロックの動きベクトルを提供する。2113は端子であり、図20に示したノンベースビュー復号部2004、2005からフレームメモリ2109の参照情報を入力する。2114は端子であり、参照情報に基づいたビューの復号画像の画像データを出力する。
また、図22は図20に記載のノンベースビュー復号部2004の詳細を示すブロック図である。ノンベースビュー復号部2005も同じ構成をとる。図22において、図21に記載したブロックと同様な機能を果たすブロックについては同じ番号を付し、説明を省略する。2201は端子であり、外部、例えば図20のMVC復号部2002からノンベースビュー符号化されたビューのビットストリームを入力する。2202は復号部であり、図1のノンベースビュー符号化部105で生成した符号データを復号する。復号部2202は符号データをブロック単位で復号し、量子化パラメータ、予測モード、動きベクトル、視差ベクトル、ビュー間予測モード等、量子化係数データを再生する。ビュー間予測モードについては実施形態1で記載したdirect_view_mv_pred_flag符号データやdirect_mv_pred_mode符号データ等を復号することで再生される。
2206は端子であり、図20のベースビュー復号部2003乃至はノンベースビュー復号部2005から再生された画像データを入力する。2207は端子であり、図20のノンベースビュー復号部2005から再生された視差ベクトルを入力する。2208は端子であり、図20のベースビュー復号部2003乃至はノンベースビュー復号部2005から動きベクトルを入力する。2210は端子であり、図20のベースビュー復号部2003乃至はノンベースビュー復号部2005に再生画像の参照情報(参照するビュー、ピクチャの番号等と参照する画素位置等の情報)を出力する。2211は端子であり、参照するアンカーブロックの動きベクトルを参照するために図20のベースビュー復号部2003乃至はノンベースビュー復号部2005に参照するブロックのビューやピクチャの番号や位置情報等を出力する。
2203はセレクタであり、復号部2202で復号されたブロック符号化モードとビュー間予測モードによって参照情報の入出力先を切り替える。
表1にその入出力の関係を示す。
表1において「−」は存在しない組み合わせを示し、何も出力しない。
2205は再生された視差ベクトルを保持する視差ベクトル保持部である。2209はビュー間予測を行うビュー間予測部である。ビュー間予測部2209は復号部2202で復号されて再生されたビュー間予測モードや視差ベクトルや他のビューやピクチャの視差ベクトルを参照してビュー間予測を行い、画像データの予測値を算出する。2215はセレクタであり、ブロック符号化モードによって入力先を切り替えて出力する。ブロック符号化モードがビュー間予測符号化モードであれば、ビュー間予測部2209が生成した予測値を出力する。インター予測モードであれば、インター予測部2104が生成した予測値を出力する。イントラ予測モードであれば、イントラ予測部2106が生成した予測値を出力する。
上記画像復号装置における画像の復号動作を以下に説明する。ノンベースビュー復号についてはノンベースビュー復号部2004と2005は同じ動作をするので、ここではノンベースビュー復号部2004の動作として説明する。
図22の端子2201からベースビュー符号化されたブロック単位の符号データが復号部2202に入力される。また、同時に図22の端子2201からノンベースビュー符号化されたブロック単位の符号データが復号部2202に入力される。
まず図22において、復号部2202に入力されたビットストリームはブロック単位の符号データに分割されて処理が行われる。復号部2202は量子化係数符号データを分離し、復号して量子化係数を算出する。算出された量子化係数は逆量子化逆変換部2103によって予測誤差を再生する。
一方、復号部2202はブロック符号化モードを復号し、セレクタ2203、2215に出力する。復号部2202で復号するブロックが参照するピクチャや動きベクトルの参照情報を復号し、インター予測部2104と動きベクトル保持部2105に入力する。インター予測部2104はフレームメモリ2109から参照ピクチャと動きベクトルに従ってブロック単位で画素値の予測値を算出する。復号部2202で復号されたイントラ予測モードはイントラ予測部2106に入力され、イントラ予測モードに従ってフレームメモリ2109の再生済みの画素データから画素値の予測値を算出する。画像再構成部2108はインター予測部2104とイントラ予測部2106で算出された画素値の予測値を入力する。また、画像再構成部2108は逆量子化逆変換部2103から再生された予測誤差を入力し、これらから再生画像データを生成し、フレームメモリ2109に出力する。フレームメモリ2109は参照に必要なピクチャの分だけの再生画像データを保持する。出力された再生画像データは端子2110から出力される。
また、図22において、復号部2202に入力されたビットストリームはブロック単位の符号データに分割されて処理が行われる。復号部2202は量子化係数符号データを分離し、復号して量子化係数を算出する。また、復号部2202はブロック符号化モードを復号し、セレクタ2203に入力する。また、ビュー間予測符号化モードであれば、ビュー間予測モードを復号し、同様にセレクタ2203に入力する。ビュー間予測モードを復号はdirect_view_mv_pred_flag符号データを復号して、この値が0であればビュー間参照予測モードであり、1であればビュー間ダイレクト予測モードとなる。復号部2202はブロック符号化モードがイントラ予測符号化モードであればイントラ予測モードを復号し、イントラ予測部2106に入力する。ブロック符号化モードがインター予測符号化モードであれば参照ピクチャに関する情報や動きベクトルを復号し、セレクタ2203に入力する。また、ビュー間予測符号化モードであれば、ビュー間予測モード、参照ピクチャに関する情報や動きベクトルを復号し、セレクタ2203に入力する。セレクタ2203は入力の状態と表1を参照して入力と出力を決定する。
セレクタ2203はイントラ予測符号化モードであれば、何も出力しない。インター予測符号化モードであれば参照ピクチャと動きベクトルからなる参照情報がインター予測部2104に入力される。また、ビュー間予測符号化モードであれば、ビュー間予測モード、参照ピクチャ、参照ビュー、視差ベクトル等の参照情報がビュー間予測部2209に入力される。
図23にビュー間予測部2209の詳細なブロック図を示す。2300は端子であり、図22の動きベクトル保持部2105に接続されており、予測モードや動きベクトル算出のためのピクチャの参照情報を入力する。2301は端子であり、セレクタ2203に接続されており、視差ベクトル、ビュー間予測モードを入力する。2302は端子であり、視差ベクトル保持部2205に接続されており、他のピクチャの視差ベクトルを入力する。2303は端子であり、図22の端子2207に接続されており、他のビューの視差ベクトルを入力する。2304はアンカーピクチャ決定部であり、同じビューのピクチャからアンカーピクチャを決定する。2305はアンカーブロック決定部であり、アンカーブロックの位置を決定する。2306はアンカーピクチャ内のアンカーブロックの位置を示す参照情報を生成するアンカー参照情報算出部である。2307は端子であり、図22の視差ベクトル保持部2205に接続されており、アンカーブロックの位置を示す参照情報を出力する。
2308は分離部であり、視差ベクトル、ビュー間予測モードを分離する。端子2301から入力されたセレクタであり、分離部2308で分離されたビュー間予測モードに従って、入力を選択する。2310はビュー間予測選択部であり、分離部2308で分離されたビュー間予測モードに従って入力された視差ベクトルを選択して出力する。2311は参照情報算出部であり、選択された視差ベクトルが示す画像データを参照するための参照情報を生成する2312は端子であり、図22の端子2210に接続されており、算出された参照情報を外部に出力する。2313は端子であり、図22の端子2206に接続されており、参照情報算出部2311で算出された参照情報に基づく画像データを入力する。2314は予測値算出部であり、視差ベクトルに基づいて予測値を算出する。2315は端子であり、図22のセレクタ2215に接続されており、予測値を外部に出力する。
まず、ビュー間予測モードがビュー間参照予測モードである場合について説明する。ビュー間予測部2209はビュー間参照予測モードの場合、復号部2202で復号された視差ベクトルとビュー間予測モードを端子2301から入力する。分離部2308は入力された視差ベクトルとビュー間予測モードを分離し、それぞれをビュー間予測選択部2310に入力する。ビュー間予測選択部2310は入力されたビュー間予測モードがビュー間参照予測モードであることから、入力された視差ベクトルがそのまま視差ベクトルとなり、参照情報算出部2311と予測値算出部2314に入力される。参照情報算出部2311では入力された視差ベクトルから、参照するビュー、ピクチャ、画像データの位置を算出し、参照情報として端子2312から出力する。この参照情報は図22の端子2210から参照するビュー番号に基づいて対応するベースビュー復号部またはノンベースビュー復号部に対して出力する。参照するビューがベースビュー符号化されたビューであれば図21の端子2113から参照ピクチャ番号と視差ベクトルを入力し、該当する画像データを読み出し、端子2114から出力する。また、参照するビューが他のノンベースビューであれば、同様に当該ノンベースビュー復号部の端子2113から参照ピクチャ番号と視差ベクトルを入力し、該当する画像データを読み出し、端子2114から出力する。
これらの画像データは図22の端子2206を介して入力され、図23の端子2313から予測値算出部2314に入力される。予測値算出部2314ではビュー間予測選択部2310で選択された視差ベクトルに基づいて予測値を算出する。例えばフィルタ演算等で小数点以下の視差ベクトルに対応した予測値を算出する。算出された予測値は端子2315を介して図22のセレクタ2215に出力される。
続いて、ビュー間予測モードがビュー間ダイレクト予測モードである場合について説明する。ビュー間予測部2209はビュー間ダイレクト予測モードの場合、視差ベクトルは復号されない。端子2301からはビュー間予測モードのみが入力され、分離部2308に入力される。また、アンカーピクチャ決定部2304は端子2300を介して入力されたL1予測で同じビューの最も参照番号の小さい参照ピクチャをアンカーピクチャに選定する。アンカーブロック決定部2305は符号化対象ブロックの位置情報からアンカーブロックの位置を決定する。これは対象ブロックと同一位置のブロックの位置情報をブロックの計数等で算出すればよい。アンカー参照情報算出部2306はこれらのアンカーピクチャとアンカーブロックの情報から参照情報を算出し、端子2307から視差ベクトル保持部2205に出力する。アンカーブロックの参照情報に基づき、アンカーブロックの視差ベクトルを視差ベクトル保持部2205から読み出す。読みだされたアンカーブロックの視差ベクトルは端子2303を介してセレクタ2309に入力される。ビュー間予測モードがビュー間ダイレクト予測モードであるので、セレクタ2309は端子2303から入力されたアンカーブロックの視差ベクトルをビュー間予測選択部2310に出力する。
ビュー間予測選択部2310は入力されたビュー間予測モードがビュー間参照予測モードであることから、入力されたアンカーブロックの視差ベクトルがそのまま視差ベクトルとなり、参照情報算出部2311と予測値算出部2314に入力される。ビュー間参照予測モードと同様に参照情報算出部2311は参照情報を算出し、端子2312から出力する。続いて、ビュー間参照予測モードと同様に、端子2313から入力された画像データから予測値算出部2314で予測値を算出し、端子2315から出力される。
出力された予測値はセレクタ2215に入力される。セレクタ2215は復号部2202によって復号されたブロック符号化モードによって入力先を切り替えて出力する。すなわち、ブロック符号化モードがイントラ予測符号化モードであればイントラ予測部2106から、インター予測符号化モードであればインター予測部2104から、ビュー間予測符号化モードであればビュー間予測部2209から予測値を入力する。以後、画像再構成部2108、フレームメモリ2109はベースビュー復号部103の図21と同様に動作し、再生画像を出力する。
図8のビュー間ダイレクト予測モードの時の視差ベクトルの様子を用いて説明を加える。符号化対象ブロック813に対して、同じビューのアンカーブロック814を決定する。該当するアンカーピクチャ(t1)のブロック814の視差ベクトル815と視差ベクトル816を用いて、符号化対象ブロックの視差ベクトル(視差ベクトル819と視差ベクトル820)とする。視差ベクトルとピクチャ番号(t2)とを端子2211から出力する。ベースビュー復号部2003では、ブロック821の画像データを図21のフレームメモリ2109からピクチャ番号(t2)と視差ベクトル819に従って端子2114から出力する。ノンベースビュー復号部1705では、ブロック822の画像データを図22のフレームメモリ2109からピクチャ番号(t2)と視差ベクトル820に従って端子2114から出力する。
図24は、実施形態4に係る画像復号装置におけるベースビュー画像復号処理を示すフローチャートである。まず、ステップS2401にて、復号するビットストリームを1ピクチャ分入力する。ステップS2402にて、ビットストリームから当該ピクチャのピクチャ符号化モードを復号する。ここで得られる符号化モードはイントラ予測符号化モードかインター予測符号化モードである。続いて、ステップS2403にて、その他のヘッダデータを復号する。
ステップS2404にて、ステップS2302で復号したピクチャ符号化モードを判定する。ピクチャ符号化モードがイントラピクチャ符号化モードであればステップS2405に進み、インターピクチャ符号化モードであれば、ステップS2406に進む。ステップS2405にて、H.264のイントラピクチャの符号化方式に従って復号し、参照に必要な情報を保持しつつ再生画像を生成する。ステップS2406にて、H.264のインターピクチャの符号化方式に従って復号し、参照に必要な情報を保持しつつ再生画像を生成する。
また、図25は実施形態4に係る画像復号装置におけるノンベースビュー画像復号処理を示すフローチャートである。同図において、図24と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
ステップS2502にて、ビットストリームから当該ピクチャのピクチャ符号化モードを復号する。ここで得られる符号化モードはイントラ予測符号化モード、インター予測符号化モード、ビュー間予測符号化モードである。ステップS2504にて、ステップS2502で復号したピクチャ符号化モードを判定する。ピクチャ符号化モードがビュー間予測符号化モードであればステップS2505に進み、そうでなければステップステップS2404に進む。ステップS2505にて、ビュー間予測符号化を行ったピクチャの符号データの復号を行う。
図26にステップS2505の詳細なフローチャートを示す。まず、ステップS2601にて、ピクチャの符号化データから復号する対象のブロックの符号データを入力する。ステップS2602にて、復号対象ブロックのブロック符号化モードを復号する。ステップS2603にて、ステップS2602で復号されたブロックの符号化モードがイントラ予測符号化かどうかを判定する。イントラ予測符号化モードであればステップS2604に進み、そうでなければステップS2605に進む。
ステップS2604にて、H.264のイントラ予測の手順に従いブロックの符号データを復号し、再生画像を生成する。ステップS2605にて、ステップS2602で復号されたブロックの符号化モードがインター予測符号化モードかどうかを判定する。インター予測符号化モードであればステップS2606に進み、そうでなければステップS2607に進む。ステップS2606にて、H.264のインター予測の手順に従いブロックの符号データを復号し、動きベクトル、予測誤差を再生し再生画像を生成する。動きベクトル等は以降の参照のためにこれを保持する。
ステップS2607にて、復号するブロックが含まれるビュー内のアンカーピクチャを抽出する。さらにアンカーピクチャからアンカーブロックを抽出するステップS2608にて、ビュー間予測符号化モードを復号する。ステップS2609にて、ビュー間予測符号化モードを判定する。ビュー間予測符号化モードがビュー間ダイレクト予測モードであれば、ステップS2610に進み、そうでなければステップS2612に進む。
ステップS2610にて、ビュー間予測符号化モードがビュー間ダイレクト予測モードであったので、視差ベクトルの復号が行われず、ステップS2607で抽出したアンカーブロックの視差ベクトルを復号対象ブロックの視差ベクトルとする。ステップS2611にて、ステップS2610で求められた視差ベクトルに基づいて他のビューの再生画像を参照して画素の予測値を算出する。
ステップS2612にて、ビュー間予測符号化モードがビュー間参照予測モードであったので、視差ベクトルの符号データを復号する。ステップS2613にて、ステップS2612で求められた視差ベクトルに基づいて他のビューの再生画像を参照して画素の予測値を算出する。ステップS2614にて、予測誤差を復号して量子化係数を得て、これに逆量子化、逆変換を施し、予測誤差を再生する。再生された予測誤差とステップS2611乃至はステップS2613で生成された画素値の予測値から画像データを再生する。
ステップS2615にて、ピクチャ内の全てのブロックについて復号を行ったか否かを判定する。全てのブロックの復号処理が終了していない場合はステップS2601に進み、次の復号対象ブロックの処理を続けて行う。終了している場合にはビュー間予測符号化ピクチャの復号処理を終了する。
以上の構成と動作により、ビュー間ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの視差ベクトルを使用するため、視差ベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。なお、本実施形態では説明を簡略化するためにピクチャ単位でイントラ予測符号化モードかインター予測符号化モードかビュー間予測符号化モードかを決定したが、これに限定されず、より細かなスライスやブロックの単位で切り替えてももちろん構わない。
また、本実施形態ではブロック単位に符号データの処理を行ったがこれに限定されず、入力順に処理を行ってももちろん構わない。なお、本実施形態では図8に示したように同じアクセスユニット内の他のビューに対する視差ベクトルを例にとって説明したが、これに限定されない。例えば、図9のように視差ベクトルとその参照ピクチャの組み合わせによって、他のビューの他のピクチャを参照してももちろん構わない。
さらに、本実施形態では図26のステップS2609以降で視差ベクトルを用いたビュー間予測を行ったがこれに限定されない。例えば、アンカーブロックが時間ダイレクト予測であれば、符号化対象ブロックも時間ダイレクト予測で符号化してもよい。図27に別なビュー間ピクチャの符号化処理を表すフローチャートを示す。同図において、図26と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
ステップS2701にて、アンカーブロックの予測モードが時間ダイレクトであるか否かを判定する。アンカーブロックが時間ダイレクト予測であれば、ステップS2702に進む。ステップS2702にて、時間ダイレクト予測によって復号対象ブロックの動きベクトルを算出する。ステップS2703にて、算出された動きベクトルを用いて再生画像の参照を行い、予測値を算出する。ステップS2701にて、時間ダイレクト予測でなければ、ステップS2609に進み、図26と同様にビュー間参照予測モード乃至はビュー間ダイレクト予測モードで復号を行う。これによって、時間ダイレクト予測とビュー間ダイレクト予測の併用が可能になり、より少ないビットレートで符号化されたビットストリームの復号が可能になる。
なお、本実施形態において、ノンベースビュー符号化でベースビュー符号化のビューから動きベクトルを読み出すことは無いので、端子2111及び端子2112は省略しても構わない。なお、本実施形態において、ステップS2607にてアンカーブロックの抽出を行ったが、ステップS2609でビュー間ダイレクト予測モードであることが判明してからステップS2610の前に抽出を行ってももちろん構わない。
<実施形態5>
本実施形態では実施形態2で生成されたビットストリームの復号を行う。本実施形態において、3つのビューの復号について説明するが、これに限定されない。本実施形において、ベースビュー復号部2003は実施形態4と同じ構成をとり、実施形態4と同様の動作を行い、ビュー間予測を行わずにカメラ101から入力されたピクチャを復号する。また、ノンベースビュー復号部2004は実施形態4と同じ構成をとるため、図22を用いて説明する。以下に、画像のノンベースビューの復号動作を以下に説明する。
図22の端子2201からノンベースビュー符号化されたブロック単位の符号データが復号部2202に入力される。復号部2202は量子化係数符号データの復号を行い、ブロック符号化モードを復号する。ブロック符号化モードがイントラ予測符号化モードであれば、実施形態4と同等にイントラ予測モードの復号、イントラ予測部2106での予測を行う。インター予測符号化モードであれば参照ピクチャに関する情報や動きベクトルの復号を行いインター予測部2104で動き補償による予測を行う。ビュー間予測符号化モードであれば、ビュー間予測モードを復号し、同様にセレクタ2203に入力する。ビュー間予測モードを復号はdirect_view_mv_pred_flag符号データを復号して、この値が0であればビュー間参照予測モードであり、1であればビュー間時間ダイレクト予測モードとなる。
セレクタ2203は入力の状態と表2を参照して入力と出力を決定する。
表2において「−」は存在しない組み合わせを示し、何も出力しない。
ビュー間予測符号化モードであれば、ビュー間予測モード、参照ピクチャ、参照ビュー、視差ベクトル等の参照情報がビュー間予測部2209に入力される。ビュー間予測モードがビュー間参照予測モードである場合については実施形態4と同様に処理が行われる。
ビュー間予測モードがビュー間時間ダイレクト予測モードである場合について説明する。ビュー間時間ダイレクト予測モードの場合、他のビューの動きベクトルを用いるため、動きベクトルは復号されない。まず、同じアクセスユニット内でアンカーピクチャを決定し、アンカーピクチャのアンカーブロックの動きベクトルを動きベクトル保持部2105から読み出す。端子2111からアンカーピクチャの参照ピクチャ番号とアンカーブロックの位置が入力され、該当する動きベクトルが端子2112から読み出される。読みだされた動きベクトルは端子2208からセレクタ2203を介してインター予測部2104に入力される。インター予測部2104では入力された動きベクトルに基づいてビュー内の他のピクチャを参照して動き補償を行い、予測値を生成する。生成された予測値はセレクタ2215を介して画像再構成部2108に入力される。以後、画像再構成部2108、フレームメモリ2109はベースビュー復号部2003の図21と同様に動作し、再生画像を出力する。
図15のビュー間時間ダイレクト予測モードの時の動きベクトルの様子を用いて説明を加える。符号化対象ブロック813に対して、同じアクセスユニットのアンカーブロック1501を決定する。該当するアンカーピクチャ807のブロック1501の動きベクトル1504と動きベクトル1505を用いて、符号化対象ブロックの動きベクトル(動きベクトル1508と動きベクトル1509)とする。この動きベクトルとビュー番号と図22の端子2112から出力する。ビュー番号で指定されたベースビュー復号部2003またはノンベースビュー復号部2005では、ブロック1506及び1507の画像データをフレームメモリ2109から動きベクトル1508及び1509に従って端子2114から出力する。
実施形態5に係る画像復号装置におけるベースビュー画像復号処理を示すフローチャートは図24と、ノンベースビュー画像復号処理を示すフローチャートは図25と同じである。
図28は、実施形態5に係る画像復号装置におけるビュー間復号処理を示すフローチャートである。同図において、図26と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。ステップS2807にて、復号するピクチャが含まれるアクセスユニット内のアンカーピクチャを抽出する。さらにアンカーピクチャからアンカーブロックを抽出するステップS2808にて、ビュー間予測符号化モードを復号する。
ステップS2809にて、ビュー間予測符号化モードを判定する。ビュー間予測符号化モードがビュー間時間ダイレクト予測モードであれば、ステップS2810に進み、そうでなければステップS2612に進む。ステップS2810にて、ビュー間予測符号化モードがビュー間時間ダイレクト予測モードであったので、動きベクトルの復号が行われず、ステップS2807で抽出したアンカーブロックの動きベクトルを復号対象ブロックの動きベクトルとする。ステップS2811にて、ステップS2810で求められた動きベクトルに基づいて同じビュー内のピクチャの再生画像を参照して画素の予測値を算出する。以後、ステップS2614で予測誤差から画像データを再生する。
以上の構成と動作により、ビュー間時間ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの動きベクトルを使用するため、動きベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。なお、本実施形態では説明を簡略化するためにピクチャ単位でイントラ予測符号化モードかインター予測符号化モードかビュー間予測符号化モードかを決定したが、これに限定されず、より細かなスライスやブロックの単位で切り替えてももちろん構わない。また、本実施形態ではブロック単位に符号データの処理を行ったがこれに限定されず、入力順に処理を行ってももちろん構わない。なお、本実施形態において、ステップS2807にてアンカーブロックの抽出を行ったが、ステップS2809でビュー間時間ダイレクト予測モードであることが判明してからステップS2810の前に抽出を行ってももちろん構わない。
<実施形態6>
本実施形態では実施形態3で生成されたビットストリームの復号を行う。本実施形態において、3つのビューの復号について説明するが、これに限定されない。本実施形において、ベースビュー復号部2003は実施形態4と同じ構成をとり、実施形態4と同様の動作を行い、ビュー間予測を行わずにカメラ101から入力されたピクチャを復号する。また、ノンベースビュー復号部2004は実施形態4と同じ構成をとるため、図22を用いて説明する。以下に、画像のノンベースビューの復号動作を以下に説明する。
実施形態5と同様に復号部2202はブロック符号化モードを復号し、其々のブロック符号化モードに従って符号データを復号する。ビュー間予測符号化モードであれば、ビュー間予測モードを復号し、同様にセレクタ2203に入力する。ビュー間予測モードを復号はdirect_view_mv_pred_flag符号データを復号して、この値が0であればビュー間参照予測モードであり、1であればビュー間視差ダイレクト予測モードとなる。
セレクタ2203は入力の状態と表3を参照して入力と出力を決定する。
表3において「−」は存在しない組み合わせを示し、何も出力しない。
ビュー間予測符号化モードであれば、ビュー間予測モード、参照ピクチャ、参照ビュー、視差ベクトル等の参照情報がビュー間予測部2209に入力される。
図29に実施形態6におけるビュー間予測部2209の詳細なブロック図を示す。図29においては、図23と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。2900は当該ノンビュー復号部の他のビューとの位置関係を含むビュー間情報を保持していうビュー間情報保持部である。ビュー間情報保持部2900は図17のビュー間情報保持部1700と同様に動作する。2904はアンカーピクチャ決定部である。アンカーピクチャ決定部2904は図17のアンカーピクチャ決定部1704と同様に動作する。2901はビュー間視差ベクトル算出部であり、実施形態3の図17のビュー間視差ベクトル算出部1701と同様に動作する。ビュー間予測モードがビュー間参照予測モードである場合については実施形態4と同様に処理が行われる。また、実施形態4と異なり、端子2303は他のビューの視差ベクトルを入力するため、図22の端子2207に接続される。また、端子2307は他のビューの視差ベクトルを参照するため、図22の端子2211から他のベースビュー復号部やノンベースビュー復号部に出力される。
ビュー間予測モードがビュー間視差ダイレクト予測モードである場合について説明する。ビュー間視差ダイレクト予測モードの場合、他のビューの視差ベクトルを用いるため、視差ベクトルは復号されない。
まず、アンカーピクチャ決定部2304は同じアクセスユニット内でアンカーピクチャを決定する。実施形態4と同様にアンカーブロックの参照情報を生成し端子2307から他のベースビュー復号部やノンベースビュー復号部に出力される。端子2303はこのようにして得られた他のビューのアンカーピクチャに属するアンカーブロックの視差ベクトルを入力する。ビュー間視差ベクトル算出部2901は図17のビュー間視差ベクトル算出部1701と同様に入力された視差ベクトルをビュー間情報保持部2900に保持されたビュー間の距離に応じて内分し、セレクタ2309に出力する。分離部2308からビュー間視差ダイレクト予測モードがセレクタ2309に出力されるため、セレクタ2309はビュー間視差ベクトル算出部2901から視差ベクトルを入力し、ビュー間予測選択部2310に出力する。以下、実施形態4と同様に予測値を得て、端子2315から出力する。
出力された予測値はセレクタ2215に入力される。セレクタ2215は実施形態4と同様にブロック符号化モードによって入力先を切り替えて出力する。以後、画像再構成部2108、フレームメモリ2109はベースビュー復号部2003の図21と同様に動作し、再生画像を出力する。
図19のビュー間視差ダイレクト予測モードの時の視差ベクトルの様子を用いて説明を加える。符号化対象ブロック813に対して、同じアクセスユニットのアンカーブロック1901を決定する。該当するアンカーピクチャ809のブロック1901の視差ベクトル1902を抽出する。これを内分して、符号化対象ブロックの視差ベクトル(視差ベクトル1904と視差ベクトル1905)とし、ビュー番号とともに端子2211から出力する。ビュー番号で指定されたベースビュー復号部2003またはノンベースビュー復号部2005では、ブロック1906及び1907の画像データをフレームメモリ2109から視差ベクトル1904と視差ベクトル1905に従って端子2114から出力する。
実施形態6に係る画像復号装置におけるベースビュー画像復号処理を示すフローチャートは図24と、ノンベースビュー画像復号処理を示すフローチャートは図25と同じである。
図30は、実施形態6に係る画像復号装置におけるビュー間復号処理を示すフローチャートである。同図において、図22と同じ機能を果たすステップについては同じ番号を付し、説明を省略する。
ステップS3007にて、復号するピクチャが含まれるアクセスユニット内のアンカーピクチャを抽出する。さらにアンカーピクチャからアンカーブロックを抽出するステップS3008にて、ビュー間予測符号化モードを復号する。ステップS3009にて、ビュー間予測符号化モードを判定する。ビュー間予測符号化モードがビュー間視差ダイレクト予測モードであれば、ステップS3010に進み、そうでなければステップS2612に進む。
ステップS3010にて、ビュー間予測符号化モードがビュー間視差ダイレクト予測モードであったので、視差ベクトルの復号が行われず、ステップS3007で抽出したアンカーブロックの視差ベクトルを内分し、復号対象儀ブロックの視差ベクトルを算出する。ステップS3011にて、ステップS3010で求められた2つの視差ベクトルに基づいて同じアクセスユニット内のピクチャの再生画像を参照して画素の予測値を読み出し、実施形態3に記載したように平均等の方法で画素値の予測値を算出する。以後、ステップS2614にてステップS3011で算出された画素値の予測値と予測誤差から画像データを再生する。
以上の構成と動作により、ビュー間視差ダイレクト予測を行うことにより、符号化対象ブロックがアンカーブロックの視差ベクトルを使用するため、視差ベクトルデータの符号データを省略することができる。
なお、本実施形態ではH.264符号化方式を例にとって説明したが、これに限定されない。例えばHEVC等の符号化方式であってももちろん構わない。なお、本実施形態では説明を簡略化するためにピクチャ単位でイントラ予測符号化モードかインター予測符号化モードかビュー間予測符号化モードかを決定したが、これに限定されず、より細かなスライスやブロックの単位で切り替えてももちろん構わない。
また、本実施形態ではブロック単位に符号データの処理を行ったがこれに限定されず、入力順に処理を行ってももちろん構わない。また、本実施形態ではアンカーブロックの視差ベクトルが同じアクセスユニット内のピクチャを参照する場合を説明したが、これに限定されない。例えば、アンカーブロックが他のアクセスユニットのピクチャを参照する場合、復号対象の視差ベクトルもアンカーブロックと同じアクセスユニットで参照するピクチャとすることで実現可能である。
なお、本実施形態において、ステップS3007にてアンカーブロックの抽出を行ったが、ステップS3009でビュー間視差ダイレクト予測モードであることが判明してからステップS3010の前に抽出を行ってももちろん構わない。また、本実施形態ではビュー間視差ダイレクトで符号化対象のビューから見てアンカーピクチャを含むビューとは反対の位置に存在するビューを例にとって、内分を行ったが、これに限定されない。例えば、反対ではない方向に存在するビューを用いる場合、外挿を行うことも可能である。
<実施形態7>
図2、図3、図4、図12、図13、図16、図17、図21、図22、図23、図29に示した各処理部はハードウェアでもって構成しているものとして上記実施形態では説明した。しかし、これらの図に示した各処理部で行なう処理をコンピュータプログラムでもって構成しても良い。
図31は、上記各実施形態に係る画像表示装置に適用可能なコンピュータのハードウェアの構成例を示すブロック図である。
CPU3101は、RAM3102やROM3103に格納されているコンピュータプログラムやデータを用いてコンピュータ全体の制御を行うと共に、上記各実施形態に係る画像処理装置が行うものとして上述した各処理を実行する。即ち、CPU3101は、図2、図3、図4、図12、図13、図16、図17、図21、図22、図23、図29に示した各処理部として機能することになる。
RAM3102は、外部記憶装置3106からロードされたコンピュータプログラムやデータ、I/F(インターフェース)3109を介して外部から取得したデータなどを一時的に記憶するためのエリアを有する。更に、RAM3102は、CPU3101が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM3102は、例えば、フレームメモリとして割当てたり、その他の各種のエリアを適宜提供したりすることができる。
ROM3103には、本コンピュータの設定データや、ブートプログラムなどが格納されている。操作部3104は、キーボードやマウスなどにより構成されており、本コンピュータのユーザが操作することで、各種の指示をCPU3101に対して入力することができる。表示部3105は、CPU3101による処理結果を表示する。また表示部3105は例えば液晶ディスプレイのようなホールド型の表示装置や、フィールドエミッションタイプの表示装置のようなインパルス型の表示装置で構成される。
外部記憶装置3106は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置3106には、OS(オペレーティングシステム)や、図2、図3、図4、図12、図13、図16、図17、図21、図22、図23、図29に示した各部の機能をCPU3101に実現させるためのコンピュータプログラムが保存されている。更には、外部記憶装置3106には、処理対象としての各画像データが保存されていても良い。
外部記憶装置3106に保存されているコンピュータプログラムやデータは、CPU3101による制御に従って適宜RAM3102にロードされ、CPU3101による処理対象となる。I/F3107には、LANやインターネット等のネットワーク、投影装置や表示装置などの他の機器を接続することができ、本コンピュータはこのI/F3107を介して様々な情報を取得したり、送出したりすることができる。3108は上述の各部を繋ぐバスである。
上述の構成からなる作動は前述のフローチャートで説明した作動をCPU3101が中心となってその制御を行う。
<その他の実施形態>
前述の実施形態において、ビュー間ダイレクト予測モード、ビュー間時間ダイレクトモード、ビュー間視差ダイレクト予測モードとビュー間参照予測モードを其々説明した。これらを上述のように用いても構わないし、これらを組み合わせて使用してももちろん構わない。例えば、ブロック単位でdirect_mv_pred_mode符号を設け、これらを識別する符号を割り当ててももちろん構わない。
本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。