以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像復号装置)
3.第3の実施の形態(画像符号化装置)
4.第4の実施の形態(画像復号装置)
5.第5の実施の形態(画像符号化装置・画像復号装置)
6.第6の実施の形態(画像符号化装置・画像復号装置)
7.第7の実施の形態(コンピュータ)
8.第8の実施の形態(応用例)
<1.第1の実施の形態>
[動き予測]
AVC(Advanced Video Coding)やHEVC(High Efficiency Video Coding)等の画像符号化においては、時間方向(フレーム間)の相関を利用した動き予測が行われる。
このような予測処理の処理単位として、AVCにおいては、マクロブロックやサブマクロブロックといった階層構造のブロックが規定されているが、HEVCにおいては、コーディングユニット(CU(Coding Unit))が規定されている。
CUは、Coding Tree Block(CTB)とも呼ばれ、AVCにおけるマクロブロックと同様の役割を果たす、ピクチャ単位の画像の部分領域である。後者は、16×16画素の大きさに固定されているのに対し、前者の大きさは固定されておらず、それぞれのシーケンスにおいて、画像圧縮情報中において指定されることになる。
例えば、出力となる符号化データに含まれるシーケンスパラメータセット(SPS(Sequence Parameter Set))において、CUの最大サイズ(LCU(Largest Coding Unit))と最小サイズ(SCU(Smallest Coding Unit))が規定される。
それぞれのLCU内においては、SCUのサイズを下回らない範囲で、split-flag=1とすることにより、より小さなサイズのCUに分割することができる。2N×2Nの大きさのCUは、split_flagの値が「1」である時、1つ下の階層となる、N×Nの大きさのCUに分割される。
更に、CUは、イントラ若しくはインター予測の処理単位となる領域(ピクチャ単位の画像の部分領域)である予測ユニット(Prediction Unit(PU))に分割され、また、直交変換の処理単位となる領域(ピクチャ単位の画像の部分領域)である、変換ユニット(Transform Unit(TU))に分割される。現在、HEVCにおいては、4×4及び8×8に加え、16×16及び32×32直交変換を用いることが可能である。
以上のHEVCのように、CUを定義し、そのCUを単位として各種処理を行うような符号化方式の場合、AVCにおけるマクロブロックはLCUに相当すると考えることができる。ただし、CUは階層構造を有するので、その最上位階層のLCUのサイズは、例えば128×128画素のように、AVCのマクロブロックより大きく設定されることが一般的である。
なお、以下において、「領域」には、上述した各種領域(例えば、マクロブロック、サブマクロブロック、LCU、CU、SCU、PU、およびTU等)を全て含む(それらのいずれであってもよい)。もちろん、上述した以外の単位が含まれてもよいし、説明の内容に応じて不可能な単位は、適宜、除外するものとする。
図1は、符号化処理単位であるCUに対する、予測処理単位である予測ユニット(PU)の構成例を示す。図1に示されるように、1CUに対して4種類のPUを形成することができる。図1に示される4つの大きな正方形がCUを示し、その内部の長方形若しくは正方形がPUを示す。数字は、各PUのインデックスを示すものであり、画像の内容を示すものではない。
図1に示されるように、左上の例の場合、CUは1つのPU(2N×2N)により構成される。すなわち、この場合、CUとPUは等価である。また、右上の例の場合、CUは、上下に2分割され、2つの横長のPU(2N×N)により構成される。さらに、左下の例の場合、CUは、左右に2分割され、2つの縦長のPU(N×2N)により構成される。また、右下の例の場合、CUは、上下左右に2分割(合計4分割)され、4つの正方形のPU(N×N)により構成される。この中のいずれのパターンが適用されるかは、画像の内容(予測結果のコスト関数値)により決定される。
ところで、非特許文献3には、動き情報の符号化方式の1つとして、Motion Partition Mergingと呼ばれる手法(マージモード)が提案されている。この手法においては、MergeFlagと、MergeLeftFlagという、2つのflagが、マージモードに関する情報であるマージ情報として伝送される。MergeFlag=1は、処理対象であるカレント領域(注目領域とも称する)Xの動き情報が、カレント領域の上に隣接する周辺領域T、若しくは、カレント領域の左に隣接する周辺領域Lの動き情報と同一であることを示す。この時、マージ情報には、MergeLeftFlagが含められ、伝送される。MergeFlag=0は、カレント領域Xの動き情報が、周辺領域Tおよび周辺領域Lのいずれの動き情報とも異なることを示す。この場合、カレント領域Xの動き情報が伝送される。
カレント領域Xの動き情報が、周辺領域Lの動き情報と同一である場合、MergeFlag=1、かつ、MergeLeftFlag=1となる。カレント領域Xの動き情報が、周辺領域Tの動き情報と同一である場合、MergeFlag=1、かつ、MergeLeftFlag=0となる。
なお、このようなマージモードにおいて、空間的な周辺領域LおよびTだけでなく、時間的な周辺領域(時間相関領域)も、カレント領域Xとマージさせる領域の候補とすることが考えられている。
参照画像インデックスは、図2に示されるように、処理対象であるカレント領域(Current Block)に対して左に隣接する周辺領域A、上に隣接する周辺領域B、および右上に隣接する周辺領域Cの参照画像インデックスに基づいて図3に示される表のように決定される。
図3に示される表において、左から2番目乃至4番目の列は、それぞれ、周辺領域A乃至周辺領域Cの参照画像インデックスの状態を表している。左から1列目は、決定された参照画像インデックスである。「x」、「y」、および「z」は、それぞれ、任意の自然数を示し、「−1」は、参照不可であることを示している。
周辺領域A乃至周辺領域Cのうち、参照可能な領域が1つしかない場合、そのブロックの参照画像インデックスを使う。また、周辺領域A乃至周辺領域Cのうち、参照可能な領域が2つある場合、最小の参照画像インデックスを使う。さらに、周辺領域A乃至周辺領域Cの全てが参照不可の場合、参照画像インデックスを0とする。
処理対象であるカレント領域に対して時間的な周辺に位置する時間相関領域は、図4に示されるように決定される。図4において、左が処理対象であるカレントピクチャ(CurrPic)(注目ピクチャとも称する)の一部の領域を示し、その中の左上の四角がカレント領域(CurrPU)を示す。また、図4の右がカレントピクチャの時間的に周辺に位置する時間相関ピクチャ(colPic)の一部の領域を示している。この時間相関ピクチャにおいて、カレント領域の右下の画素と同じ位置の画素を含む領域を時間相関領域(colPU)とする。この領域が参照不可の場合、復号領域の中央の画素と同じ位置の画素を含む領域を時間相関領域(colPU)とする。
また、時間相関ピクチャは、図5に示されるように決定される。例えば、カレントピクチャがBピクチャで、collocated_from_l0_flagが1の場合、リストL1の参照画像インデックス0のピクチャが時間相関ピクチャとされる。また、カレントピクチャが、Pピクチャの場合若しくはBピクチャでcollocated_from_l0_flagが0の場合、リストL0の参照画像インデックス0のピクチャが時間相関ピクチャとされる。
さらに、カレントピクチャと時間相関ピクチャとの位置関係によって、図6に示されるように、飛び越しフラグが設定される。例えば、図6の上に示されるように、時間相関ピクチャの参照画像の時間的位置がカレントピクチャを飛び越す(時間相関ピクチャと参照画像の間にカレントピクチャが存在する)場合、飛び越しフラグが1に設定される。
また、時間相関ピクチャの参照画像の時間的位置がカレントピクチャを飛び越さない(時間相関ピクチャと参照画像の間にカレントピクチャが存在しない)場合、飛び越しフラグが0に設定される。飛び越しフラグが1の場合、カレント領域が、時間相関領域と時間相関領域の参照画像の内挿となるため、予測ベクトルの信頼度が高い。
また、予測ベクトルpmv生成の際には、時間相関領域の動きベクトルmvColが利用されるが、その場合、図7に示される例のように、時間相関領域の動きベクトルのスケーリングが行われる。すなわち、カレント領域とカレント領域の参照画像の時間的距離Aと、時間相関領域と時間相関領域の参照画像の時間的距離Bに基づき、以下の式(1)および式(2)のようにスケーリングが行われる。
AとBが等しい場合、pmv = mvCol ・・・(1)
AとBが等しくない場合、pmv = mvCol×A/B ・・・(2)
ところで、多視点画像の場合、画像は複数のビューよりなり、このビュー間(視差方向)の相関性を利用した視差予測も行われる。図8に3視点画像の参照関係の例を示す。
図8に示される3視点画像は、ビュー0、ビュー1、およびビュー2の3つのビューよりなる。図8において、POCは、時刻のインデックスを示す。またPicNumは、復号順序のインデックスを示す。
ビュー0は、ベースビューと呼ばれ、時間相関を利用して予測を行う時間予測を使って符号化されている。ビュー1は、ノンベースビューと呼ばれ、時間予測と視差予測を使って符号化される。視差予測では、符号化済みのビュー0とビュー2を参照することができる。ビュー2は、ノンベースビューと呼ばれ、時間予測と視差予測を使って符号化される。視差予測では、符号化済みのビュー0を参照することができる。
しかしながら、上述したように従来の予測ベクトルは動きベクトルに関するもののみであり、このような視点(ビュー)間を跨ぐ視差予測において生成される、ビュー間の、同一若しくは最も近似する部分画像の位置関係を示す視差ベクトルについての符号化(予測)は考えられていなかった。この視差ベクトルは、時間予測の動きベクトルに相当する情報であり、同一時刻の異なるビューの画像を用いてカレント領域の予測画像を生成する時間予測に用いられる。そのため、視差ベクトルの予測を適切に行うことができず、符号化効率が低減する恐れがあった。
そこで、本技術においては、多視点画像において、以下のように視差ベクトルや動きベクトル(動き視差ベクトル)の予測を行う。
例えば、カレント領域の視差ベクトル(カレント視差ベクトルとも称する)の予測は、図9に示される例のように行われる。この例では、リスト1の参照画像インデックス0に同一ビュー(view_id=1)の参照画像が割り当てられ、参照画像インデックス1に異なるビュー(view_id=2)の参照画像が割り当てられている。
リスト1の参照画像インデックス0(RefPicList[0])を時間相関ピクチャとする場合、その時間相関ピクチャに含まれる時間相関領域(colPicB)のベクトルが、同一時刻の異なるビューを参照する視差ベクトルの時、予測ベクトルとして採用する。
また、リスト1の参照画像インデックス1(RefPicList[1])をビュー相関ピクチャとする場合、そのビュー相関ピクチャに含まれるビュー相関領域(colPicA)のベクトルが、同一時刻の異なるビューを参照する視差ベクトルの時、予測ベクトルとして採用する。
すなわち、本技術においては、カレント視差ベクトルの予測のために、すべての参照画像インデックスが相関ピクチャの候補とされる。また、各相関領域のベクトルが、カレント領域のベクトルと同じく、視差ベクトルであるか否かが判定される。
また、カレント領域の動きベクトル(カレント動きベクトルとも称する)の予測は、図10に示される例のように行われる。この例では、リスト1の参照画像インデックス0に同一ビュー(view_id=1)の参照画像が割り当てられ、参照画像インデックス1に異なるビュー(view_id=2)の参照画像が割り当てられている。
リスト1の参照画像インデックス0(RefPicList[0])を時間相関ピクチャとする場合、その時間相関ピクチャに含まれる時間相関領域(colPicB)のベクトルが、同一ビューの異なる時刻を参照する動きベクトルの時、予測ベクトルとして採用する。
また、リスト1の参照画像インデックス1(RefPicList[1])をビュー相関ピクチャとする場合、そのビュー相関ピクチャに含まれるビュー相関領域(colPicA)のベクトルが、同一ビューの異なる時刻を参照する動きベクトルの時、予測ベクトルとして採用する。
すなわち、本技術においては、カレント動きベクトルの予測のために、すべての参照画像インデックスが相関ピクチャの候補とされる。また、各相関領域のベクトルが、カレント領域のベクトルと同じく、動きベクトルであるか否かが判定される。
また、視差ベクトルを予測ベクトルとする場合のスケーリング処理は、以下のように行われる。すなわち、カレント領域とその参照画像のビュー間距離と、相関領域とその参照画像のビュー間距離に基づいて、予測ベクトルがスケーリングされる。
従来の場合、動きベクトルを予測するのみであったので、時間的な距離のみが使用されていたが、多視点画像の場合、視差ベクトルを予測する必要があるので、本技術は、ビュー間距離も使用する。これにより、符号化効率を向上させることができる。
[画像符号化装置]
図11は、画像処理装置である画像符号化装置の主な構成例を示すブロック図である。
図11に示される画像符号化装置100は、例えばAVCやHEVC等の符号化方式のように、予測処理を用いて画像データを符号化する。ただし、画像符号化装置100は、複数のビューからなる多視点画像を符号化する。以下においては、多視点画像の一例として、3つのビューからなる3視点画像を処理する場合について説明する。ただし、実際には、画像符号化装置100は、任意の視点数(ビュー数)の多視点画像を符号化することができる。
図11に示されるように画像符号化装置100は、A/D変換部101、画面並べ替えバッファ102、演算部103、直交変換部104、量子化部105、可逆符号化部106、および蓄積バッファ107を有する。また、画像符号化装置100は、逆量子化部108、逆直交変換部109、演算部110、ループフィルタ111、デコードピクチャバッファ112、選択部113、イントラ予測部114、動き視差予測・補償部115、予測画像選択部116、および多視点デコードピクチャバッファ121を有する。
A/D変換部101は、入力された画像データをA/D変換し、変換後の画像データ(デジタルデータ)を、画面並べ替えバッファ102に供給し、記憶させる。画面並べ替えバッファ102は、記憶した表示の順番のフレームの画像を、GOP(Group Of Picture)に応じて、符号化のためのフレームの順番に並べ替え、フレームの順番を並び替えた画像を、その画像のビューIDおよびPOCとともに、演算部103に供給する。
また、画面並べ替えバッファ102は、フレームの順番を並び替えた画像を、その画像のビューIDおよびPOCとともに、イントラ予測部114および動き視差予測・補償部115にも供給する。なお、ビューIDは、視点を識別するための情報であり、POCは、時刻を識別するための情報である。
演算部103は、画面並べ替えバッファ102から読み出された画像から、予測画像選択部116を介してイントラ予測部114若しくは動き視差予測・補償部115から供給される予測画像を減算し、その差分情報を直交変換部104に出力する。
例えば、イントラ符号化が行われる画像の場合、演算部103は、画面並べ替えバッファ102から読み出された画像から、イントラ予測部114から供給される予測画像を減算する。また、例えば、インター符号化が行われる画像の場合、演算部103は、画面並べ替えバッファ102から読み出された画像から、動き視差予測・補償部115から供給される予測画像を減算する。
直交変換部104は、演算部103から供給される差分情報に対して、離散コサイン変換やカルーネン・レーベ変換等の直交変換を施す。なお、この直交変換の方法は任意である。直交変換部104は、その変換係数を量子化部105に供給する。
量子化部105は、直交変換部104から供給される変換係数を量子化する。量子化部105は、符号量の目標値に関する情報に基づいて量子化パラメータを設定し、その量子化を行う。なお、この量子化の方法は任意である。量子化部105は、量子化された変換係数を可逆符号化部106に供給する。
可逆符号化部106は、量子化部105において量子化された変換係数を、任意の符号化方式で符号化する。また、可逆符号化部106は、イントラ予測のモードを示す情報等を含むイントラ予測情報をイントラ予測部114から取得し、インター予測のモードを示す情報や動き視差ベクトル情報などを含むインター予測情報を動き視差予測・補償部115から取得する。さらに、可逆符号化部106は、ループフィルタ111において使用されたフィルタ係数等を取得する。
可逆符号化部106は、これらの各種情報を任意の符号化方式で符号化し、符号化データのヘッダ情報の一部とする(多重化する)。可逆符号化部106は、符号化して得られた符号化データを蓄積バッファ107に供給して蓄積させる。
可逆符号化部106の符号化方式としては、例えば、可変長符号化または算術符号化等が挙げられる。可変長符号化としては、例えば、H.264/AVC方式で定められているCAVLC(Context-Adaptive Variable Length Coding)などが挙げられる。算術符号化としては、例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)などが挙げられる。
蓄積バッファ107は、可逆符号化部106から供給された符号化データを、一時的に保持する。蓄積バッファ107は、所定のタイミングにおいて、保持している符号化データを、ビットストリームとして、例えば、後段の図示せぬ記録装置(記録媒体)や伝送路などに出力する。つまり、符号化された各種情報が復号側に供給される。
また、量子化部105において量子化された変換係数は、逆量子化部108にも供給される。逆量子化部108は、その量子化された変換係数を、量子化部105による量子化に対応する方法で逆量子化する。この逆量子化の方法は、量子化部105による量子化処理に対応する方法であればどのような方法であってもよい。逆量子化部108は、得られた変換係数を、逆直交変換部109に供給する。
逆直交変換部109は、逆量子化部108から供給された変換係数を、直交変換部104による直交変換処理に対応する方法で逆直交変換する。この逆直交変換の方法は、直交変換部104による直交変換処理に対応する方法であればどのようなものであってもよい。逆直交変換された出力(局所的に復元された差分情報)は、演算部110に供給される。
演算部110は、逆直交変換部109から供給された逆直交変換結果、すなわち、局所的に復元された差分情報に、予測画像選択部116を介してイントラ予測部114若しくは動き視差予測・補償部115から供給される予測画像を加算し、局所的に再構成された画像(以下、再構成画像と称する)を得る。その再構成画像は、ループフィルタ111またはデコードピクチャバッファ112に供給される。
ループフィルタ111は、デブロックフィルタや適応ループフィルタ等を含み、演算部110から供給される復号画像に対して適宜フィルタ処理を行う。例えば、ループフィルタ111は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。また、例えば、ループフィルタ111は、そのデブロックフィルタ処理結果(ブロック歪みの除去が行われた復号画像)に対して、ウィナーフィルタ(Wiener Filter)を用いてループフィルタ処理を行うことにより画質改善を行う。
なお、ループフィルタ111が、復号画像に対して任意のフィルタ処理を行うようにしてもよい。また、ループフィルタ111は、必要に応じて、フィルタ処理に用いたフィルタ係数等の情報を可逆符号化部106に供給し、それを符号化させるようにすることもできる。
ループフィルタ111は、フィルタ処理結果(以下、復号画像と称する)をデコードピクチャバッファ112に供給する。
デコードピクチャバッファ112は、演算部110から供給される再構成画像と、ループフィルタ111から供給される復号画像とをそれぞれ記憶する。また、デコードピクチャバッファ112は、その画像のビューIDおよびPOCを記憶する。
デコードピクチャバッファ112は、所定のタイミングにおいて、若しくは、イントラ予測部114等の外部からの要求に基づいて、記憶している再構成画像(並びに、その画像のビューIDおよびPOC)を、選択部113を介して、イントラ予測部114に供給する。また、デコードピクチャバッファ112は、所定のタイミングにおいて、若しくは、動き視差予測・補償部115等の外部からの要求に基づいて、記憶している復号画像(並びに、その画像のビューIDおよびPOC)を、選択部113を介して、動き視差予測・補償部115に供給する。
選択部113は、デコードピクチャバッファ112から出力される画像の供給先を示す。例えば、イントラ予測の場合、選択部113は、デコードピクチャバッファ112からフィルタ処理されていない画像(再構成画像)を読み出し、周辺画素として、イントラ予測部114に供給する。
また、例えば、インター予測の場合、選択部113は、デコードピクチャバッファ112からフィルタ処理された画像(復号画像)を読み出し、参照画像として、それを動き視差予測・補償部115に供給する。
イントラ予測部114は、デコードピクチャバッファ112から、処理対象領域の周辺に位置する周辺領域の画像(周辺画像)を取得すると、その周辺画像の画素値を用いて、基本的にプレディクションユニット(PU)を処理単位として予測画像を生成するイントラ予測(画面内予測)を行う。イントラ予測部114は、予め用意された複数のモード(イントラ予測モード)でこのイントラ予測を行う。
イントラ予測部114は、候補となる全てのイントラ予測モードで予測画像を生成し、画面並べ替えバッファ102から供給される入力画像を用いて各予測画像のコスト関数値を評価し、最適なモードを選択する。イントラ予測部114は、最適なイントラ予測モードを選択すると、その最適なモードで生成された予測画像を、予測画像選択部116に供給する。
また、イントラ予測部114は、最適なイントラ予測モード等、イントラ予測に関する情報を含むイントラ予測情報を、適宜可逆符号化部106に供給し、符号化させる。
動き視差予測・補償部115は、画面並べ替えバッファ102から供給される入力画像と、デコードピクチャバッファ112から供給される参照画像とを用いて、基本的にPUを処理単位として、動き予測や視差予測(インター予測)を行い、検出された動き視差ベクトルに応じて補償処理を行い、予測画像(インター予測画像情報)を生成する。動き視差予測・補償部115は、予め用意された複数のモード(インター予測モード)でこのようなインター予測(画面間予測)を行う。
動き視差予測・補償部115は、候補となる全てのインター予測モードで予測画像を生成し、各予測画像のコスト関数値を評価し、最適なモードを選択する。動き視差予測・補償部115は、最適なインター予測モードを選択すると、その最適なモードで生成された予測画像を、予測画像選択部116に供給する。
また、動き視差予測・補償部115は、最適なインター予測モード等、インター予測に関する情報を含むインター予測情報を可逆符号化部106に供給し、符号化させる。
予測画像選択部116は、演算部103や演算部110に供給する予測画像の供給元を選択する。例えば、イントラ符号化の場合、予測画像選択部116は、予測画像の供給元としてイントラ予測部114を選択し、そのイントラ予測部114から供給される予測画像を演算部103や演算部110に供給する。また、例えば、インター符号化の場合、予測画像選択部116は、予測画像の供給元として動き視差予測・補償部115を選択し、その動き視差予測・補償部115から供給される予測画像を演算部103や演算部110に供給する。
デコードピクチャバッファ112は、処理対象のビューの画像(並びに、その画像のビューIDおよびPOC)のみを記憶するが、多視点デコードピクチャバッファ121は、各視点(ビュー)の画像(並びに、その画像のビューIDおよびPOC)を記憶する。つまり、多視点デコードピクチャバッファ121は、デコードピクチャバッファ112に供給された復号画像(並びに、その画像のビューIDおよびPOC)を取得し、デコードピクチャバッファ112とともにその復号画像(並びに、その画像のビューIDおよびPOC)を記憶する。
デコードピクチャバッファ112は、処理対象のビューが変わると、その復号画像を消去するが、多視点デコードピクチャバッファ121は、そのまま保持する。そして、デコードピクチャバッファ112などの要求に従って、記憶している復号画像(並びに、その画像のビューIDおよびPOC)を、「処理対象ではないビューの復号画像」として、デコードピクチャバッファ112に供給する。デコードピクチャバッファ112は、多視点デコードピクチャバッファ121から読み出した「処理対象ではないビューの復号画像(並びに、その画像のビューIDおよびPOC)」を、選択部113を介して動き視差予測・補償部115に供給する。
[動き視差予測・補償部]
図12は、図11の動き視差予測・補償部の主な構成例を示すブロック図である。
図12に示されるように、動き視差予測・補償部115は、動き視差ベクトル探索部131、予測画像生成部132、符号化情報蓄積バッファ133、および選択部134を有する。また、動き視差予測・補償部115は、空間相関予測ベクトル生成部135、時間視差相関予測ベクトル生成部136、選択部137、符号化コスト算出部138、およびモード判定部139を有する。
動き視差ベクトル探索部131は、デコードピクチャバッファ112から復号画像画素値を取得し、画面並べ替えバッファ102から原画像画素値を取得する。動き視差ベクトル探索部131は、それらを用いて、処理対象であるカレント領域の参照画像インデックスを決定し、時間方向および視差方向の動き探索を行い、カレント動きベクトルおよびカレント視差ベクトルを生成する。
なお、以下において、時間方向、すなわち、フレーム(ピクチャ)間の動きを示す動きベクトルと、視差方向、すなわち、ビュー間の動きを示す視差ベクトルとを互いに区別する必要が無い場合、若しくは、その両方を指す場合、動き視差ベクトルと称する。カレント領域の動き視差ベクトルは、カレント動き視差ベクトルとも称する。
動き視差ベクトル探索部131は、参照画像インデックスと動き視差ベクトルとを予測画像生成部132および符号化コスト算出部138に供給する。
予測画像生成部132は、動き視差ベクトル探索部131から参照画像インデックスと動き視差ベクトルとを取得するとともに、デコードピクチャバッファ112から復号画像画素値を取得する。予測画像生成部132は、それらを用いてカレント領域の予測画像を生成する。予測画像生成部132は、予測画像画素値を符号化コスト算出部138に供給する。
符号化情報蓄積バッファ133は、モード判定部139において最適モードに選択されたモードを示すモード情報、並びに、そのモードの参照画像インデックスおよび動き視差ベクトルを記憶する。符号化情報蓄積バッファ133は、所定のタイミングにおいて、若しくは、外部からの要求に従って、記憶しているそれらの情報を、選択部134に供給する。
選択部134は、符号化情報蓄積バッファ133から供給されたモード情報、参照画像インデックス、および動き視差ベクトルを空間相関予測ベクトル生成部135若しくは時間視差相関予測ベクトル生成部136に供給する。
空間相関予測ベクトル生成部135および時間視差相関予測ベクトル生成部136は、処理対象であるカレント領域の動きベクトル(カレント動きベクトル)の予測値(予測ベクトル)を生成する。
空間相関予測ベクトル生成部135は、空間的な相関を利用して予測ベクトル(空間相関予測ベクトル)を生成する。より具体的には、空間相関予測ベクトル生成部135は、選択部134を介して符号化情報蓄積バッファ133から、カレント領域と同一のフレーム(カレントフレーム(注目フレームとも称する))の、カレント領域の空間的な周辺に位置する周辺領域(空間周辺領域)の動き情報に関する情報(モード情報、参照画像インデックス、および動き視差ベクトル等)を取得する。
空間相関予測ベクトル生成部135は、例えば、複数の空間周辺領域の動きベクトル(空間周辺動きベクトル)を用いてメジアン演算を行い、空間相関予測ベクトルを生成する。空間相関予測ベクトル生成部135は、生成した空間相関予測ベクトルを選択部137に供給する。
時間視差相関予測ベクトル生成部136は、時間的な相関若しくは視差的な相関を利用して予測ベクトル(時間視差相関予測ベクトル(時間相関予測ベクトル若しくは視差相関予測ベクトル))を生成する。より具体的には、時間視差相関予測ベクトル生成部136は、例えば、選択部134を介して符号化情報蓄積バッファ133から、カレント領域の時間的な周辺に位置する周辺領域(時間周辺領域)の動き情報に関する情報を取得する。時間周辺領域とは、カレント領域と同一ビュー(カレントビュー(注目ビューとも称する))の、カレントフレームと異なるフレーム(ピクチャ)のカレント領域に相当する位置の領域、若しくはその近傍の領域のことを示す。
また、例えば、時間視差相関予測ベクトル生成部136は、選択部134を介して符号化情報蓄積バッファ133から、カレント領域の視差的な周辺に位置する周辺領域(視差周辺領域)の動き情報に関する情報を取得する。視差周辺領域とは、カレント領域のビュー(カレントビュー)と異なるビューの、カレントフレームと同時刻のフレーム(ピクチャ)のカレント領域に相当する位置の領域、若しくはその近傍の領域のことを示す。
時間視差相関予測ベクトル生成部136は、例えば、複数の時間周辺領域の動きベクトル(時間周辺動きベクトル)を用いてメジアン演算を行い、時間相関予測ベクトルを生成する。また、例えば、時間視差相関予測ベクトル生成部136は、例えば、複数の視差周辺領域の動きベクトル(視差周辺動きベクトル)を用いてメジアン演算を行い、視差相関予測ベクトルを生成する。
時間視差相関予測ベクトル生成部136は、このように生成した時間視差相関予測ベクトルを選択部137に供給する。
空間相関予測ベクトル生成部135および時間視差相関予測ベクトル生成部136は、それぞれ予測ベクトルを、インター予測モード毎に生成する。
選択部137は、空間相関予測ベクトル生成部135から供給される空間相関予測ベクトル、および、時間視差相関予測ベクトル生成部136から供給される時間視差相関予測ベクトルを、符号化コスト算出部138に供給する。
符号化コスト算出部138は、予測画像生成部132から供給される予測画像画素値と、画面並べ替えバッファ102から供給される原画像画素値とを用いて、予測画像と原画像の差分値(差分画像)を、インター予測モード毎に算出する。また、符号化コスト算出部138は、その差分画像画素値を用いて、インター予測モード毎にコスト関数値(符号化コスト値とも称する)を算出する。
さらに、符号化コスト算出部138は、選択部137から供給された空間相関予測ベクトルと時間視差相関予測ベクトルとの内、動き視差ベクトル探索部131から供給されたカレント領域の動き視差ベクトルにより近いほうを、カレント領域の予測ベクトルとして選択する。また、符号化コスト算出部138は、その予測ベクトルとカレント領域の動き視差ベクトルとの差分値である差分動き視差ベクトルを生成する。符号化コスト算出部138は、インター予測モード毎に差分動き視差ベクトルを生成する。
符号化コスト算出部138は、各インター予測モードの、符号化コスト値、予測画像画素値、差分動き視差ベクトルを含む差分動き視差情報、および、予測ベクトルや参照画像インデックスを含む予測情報をモード判定部139に供給する。
モード判定部139は、符号化コスト値が最小となるインター予測モードを最適なモードとして選択する。モード判定部139は、最適なモードに選択したインター予測モードの予測画像画素値を、予測画像選択部116に供給する。
予測画像選択部116により、インター予測が選択された場合、モード判定部139は、最適なモードに選択したインター予測モードに関する情報であるモード情報、並びに、そのインター予測モードの差分動き視差情報および予測情報を、可逆符号化部106に供給し、符号化させる。これらの情報は、符号化され、復号側に伝送される。
また、モード判定部139は、最適なモードに選択したインター予測モードの、モード情報、差分動き視差情報、および予測情報を、符号化情報蓄積バッファ133に供給し、記憶させる。これらの情報は、カレント領域より時間的に後に処理される他の領域に対する処理おいて、周辺領域の情報として利用される。
[時間視差相関予測ベクトル生成部]
図13は、時間視差相関予測ベクトル生成部136の主な構成例を示すブロック図である。
図13に示されるように、時間視差相関予測ベクトル生成部136は、カレント領域処理部(注目領域処理部)151、相関領域処理部152、LI予測処理部153、L0予測処理部154、方式1処理部155、方式2処理部156、方式3処理部157、方式4処理部158、および予測ベクトル生成部159を有する。
カレント領域処理部151は、カレント領域に関する情報を取得する処理を行う。カレント領域処理部151は、取得したカレント領域に関する情報を、相関領域処理部152乃至L0予測処理部154の各部に供給する。相関領域処理部152は、相関領域に関する情報を取得する処理を行う。
なお、相関領域は、カレント領域との相関を利用するために参照される領域である。例えば、時間相関領域とは、カレント領域との時間相関を利用するために参照される領域であり、時間相関予測ベクトルの生成に用いられた動きベクトルを有する時間周辺領域である。また、視差相関領域とは、カレント領域との視差相関を利用するために参照される領域であり、視差相関予測ベクトルの生成に用いられた動きベクトルを有する視差周辺領域である。相関領域は、これらの領域を含む。
相関領域処理部152は、相関領域に関する情報を、L1予測処理部153およびL0予測処理部154に供給する。
L1予測処理部153は、L1方向の予測に関する処理を行う。L1予測処理部153は、画面並べ替えバッファ102やデコードピクチャバッファ112から必要な情報を取得する。またL1予測処理部153は、カレント領域処理部151および相関領域処理部152から供給された情報を取得する。L1予測処理部153は、それらの情報を用いて、L1方向の予測に関する処理を行う。
予測処理として方式1乃至方式4の4つの方法が用意されている。L1予測処理部は、いずれかの方法を選択し、方式1処理部155乃至方式4処理部158の内、選択した方法に対応する処理部に、情報を提供する。
L0予測処理部154は、L0方向の予測に関する処理を、L1予測処理部153と同様に行う。
方式1は、リスト1の参照画像インデックス1に割り当てられた、カレントビューと異なるビューの、カレントフレームと同時刻のフレーム(参照画像)を相関画像とし、その相関領域のベクトルが視差ベクトルである場合、その視差ベクトル(リファレンス視差ベクトル)を予測ベクトルとして採用する方式である。方式1処理部155は、このような方式に従って予測ベクトルを生成するための処理を行う。方式1処理部155は、処理の結果得られた各種パラメータを予測ベクトル生成部159に供給する。
方式2は、リスト1の参照画像インデックス0に割り当てられた、カレントビューと同一のビューの、カレントフレームと異なる時刻のフレーム(参照画像)を相関画像とし、その相関領域のベクトルが視差ベクトルである場合、その視差ベクトル(リファレンス視差ベクトル)を予測ベクトルとして採用する方式である。方式2処理部156は、このような方式に従って予測ベクトルを生成するための処理を行う。方式2処理部156は、処理の結果得られた各種パラメータを予測ベクトル生成部159に供給する。
方式3は、リスト1の参照画像インデックス1に割り当てられた、カレントビューと同一のビューの、カレントフレームと異なる時刻のフレーム(参照画像)を相関画像とし、その相関領域のベクトルが動きベクトルである場合、その動きベクトル(リファレンス視差ベクトル)を予測ベクトルとして採用する方式である。方式3処理部157は、このような方式に従って予測ベクトルを生成するための処理を行う。方式3処理部157は、処理の結果得られた各種パラメータを予測ベクトル生成部159に供給する。
方式4は、リスト1の参照画像インデックス0に割り当てられた、カレントビューと同一のビューの、カレントフレームと異なる時刻のフレーム(参照画像)を相関画像とし、その相関領域のベクトルが動きベクトルである場合、その動きベクトル(リファレンス視差ベクトル)を予測ベクトルとして採用する方式である。方式4処理部158は、このような方式に従って予測ベクトルを生成するための処理を行う。方式4処理部158は、処理の結果得られた各種パラメータを予測ベクトル生成部159に供給する。
予測ベクトル生成部159は、方式1処理部155乃至方式4処理部158から供給された情報、および、デコードピクチャバッファ112から取得した参照画像のビュー情報や時間情報等を用いて、時間視差相関予測ベクトルを生成する。その際、予測ベクトル生成部159は、方式1処理部155乃至方式4処理部158から供給される情報を用いてスケーリング処理を行う。その際、予測ベクトル生成部159は、動き相関予測ベクトルについては時間方向にスケーリングを行い、視差相関予測ベクトルについては視差方向にスケーリングを行う。予測ベクトル生成部159は、生成した時間視差相関予測ベクトルを、選択部137を介して符号化コスト算出部138に供給する。
このようにすることにより、時間視差相関予測ベクトル生成部136は、動き相関予測ベクトルだけでなく、視差相関予測ベクトルも生成することができる。したがって、動き視差予測・補償部115は、カレント領域のベクトルが視差ベクトルの場合であっても、予測精度の高い予測ベクトルを生成することができる。これにより画像符号化装置100は、符号化効率の低減を抑制することができる。
[方式選択例]
図14に、各方式が選択される場合の例を示す。図14に示されるように、参照画像との位置関係(参照画像が時間方向に存在するか、若しくは視差方向に存在するか)がカレント領域(注目領域)の場合と同様である領域が相関領域として選択される。すなわち、カレント領域とそのカレント領域の参照画像との位置関係と、相関領域とその相関領域の参照画像との位置関係とが等しくなる。そして、そのカレント領域とそのカレント領域の参照画像との位置関係と、カレント領域と相関領域との位置関係とによって方式が決定される。
図14の表において、下から1行目乃至4行目が各画像の位置関係の例を示しており、A乃至Eは、各行においてビューID若しくはPOCの値の例を示す。つまり、ここで重要なのは、値がいくつであるかではなく、他の画像とビューIDやPOCが一致するか否かである。
下から4行目の例の場合、カレント領域および相関領域ともに、それぞれの参照画像とビューIDが異なるものの、POCが一致する。すなわち、カレント領域および相関領域のベクトルは視差ベクトルである。また、カレント領域と相関領域との間でも、ビューIDが異なり、POCが一致する。すなわち、相関領域は、カレント領域と同じ時刻のフレームの異なるビューの画像である。従って、図14の表に示されるように方式1が選択される。視点間で視差の変化量が一定の領域で、方式1は、有効である。
下から3行目の例の場合、カレント領域および相関領域ともに、それぞれの参照画像とビューIDが異なるものの、POCが一致する。すなわち、カレント領域および相関領域のベクトルは視差ベクトルである。また、カレント領域と相関領域との間では、ビューIDが一致し、POCが異なる。すなわち、相関領域は、カレント領域と同じビューの異なる時刻のフレームの画像である。従って、図14の表に示されるように方式2が選択される。時間的な動き量の変化が小さいときに、方式2は、有効である。
下から2行目の例の場合、カレント領域および相関領域ともに、それぞれの参照画像とビューIDが一致し、POCが異なる。すなわち、カレント領域および相関領域のベクトルは動きベクトルである。また、カレント領域と相関領域との間では、ビューIDが異なり、POCが一致する。すなわち、相関領域は、カレント領域と同じ時刻のフレームの異なるビューの画像である。従って、図14の表に示されるように方式3が選択される。視点間の視差量の変化が小さいときに、方式3は、有効である。
下から1行目の例の場合、カレント領域および相関領域ともに、それぞれの参照画像とビューIDが一致し、POCが異なる。すなわち、カレント領域および相関領域のベクトルは動きベクトルである。また、カレント領域と相関領域との間では、ビューIDが一致し、POCが異なる。すなわち、相関領域は、カレント領域と同じビューの異なる時刻のフレームの画像である。従って、図14の表に示されるように方式4が選択される。
つまり、例えば、3D画像の左右画像のいずれか一方(例えば左眼用画像)をベースビュー(base view)とし、他方(例えば右眼用画像)をディペンデントビュー(dependent view)とすると、ディペンデントビューにおいて、カレント領域のベクトル(符号化ベクトル(Coding vector))の特性と、同じビューの異なる時刻のフレームの相関領域(コロケーテッドブロック(Co-located block))のベクトル(コロケーテッドベクトル(Co-located vector))の特性が一致する場合、コロケーテッドブロックがアベイラブル(Available)とされる。換言するに、ディペンデントビューにおいて、符号化ベクトルおよびコロケーテッドベクトルの特性が一致しない場合、コロケーテッドブロックがノットアベイラブル(Not Available)とされる。もちろん、ベースビューにおいて、同様にするようにしてもよい。
例えば、図13のL1予測処理部153およびL0予測処理部154が、このような設定を行う。
符号化ベクトルおよびコロケーテッドベクトルの特性が一致するか否かは、例えば、図15に示されるように、カレント領域とコロケーテッドブロックのそれぞれのPOCをそれぞれの参照画像のPOCと比較することにより、判定することができる。例えば、図13のL1予測処理部153およびL0予測処理部154が、このような判定を行う。
例えば、L1予測処理部153およびL0予測処理部154は、カレント領域のPOC(CurrPOC)とカレント領域の参照画像のPOC(CurrRefPOC)とが一致せず、かつ、コロケーテッドブロックのPOC(ColPOC)とコロケーテッドブロックの参照画像のPOC(ColRefPOC)とが一致しない場合((CurrPOC != CurrRefPOC)&&(ColPOC != ColRefPOC))、符号化ベクトルおよびコロケーテッドブロックがともに動きベクトル(motion vector)であると判定する(図16のA)。
また、例えば、L1予測処理部153およびL0予測処理部154は、カレント領域のPOC(CurrPOC)とカレント領域の参照画像のPOC(CurrRefPOC)とが一致し、かつ、コロケーテッドブロックのPOC(ColPOC)とコロケーテッドブロックの参照画像のPOC(ColRefPOC)とが一致する場合((CurrPOC == CurrRefPOC)&&(ColPOC == ColRefPOC))、符号化ベクトルおよびコロケーテッドブロックがともに視差ベクトル(inter-view vector)であると判定する(図16のB)。
L1予測処理部153およびL0予測処理部154は、例えば、この判定結果に基づいて、図15の下の表に示されるように、コロケーテッドベクトル(Co-located vector)のアベイラビリティ(Availability)の設定を行う。
例えば、符号化ベクトルおよびコロケーテッドブロックがともに、動きベクトル(motion vector)若しくは視差ベクトル(inter-view vector)であると判定された場合、コロケーテッドベクトル(Co-located vector)がアベイラブル(Available)に設定される(図16のA若しくは図16のB)。
逆に、符号化ベクトルおよびコロケーテッドブロックの一方が、動きベクトル(motion vector)であり、他方が視差ベクトル(inter-view vector)であると判定された場合、コロケーテッドベクトル(Co-located vector)がノットアベイラブル(Not Available)に設定される。
[シンタックス]
図17にこの場合のシーケンスパラメータセットのシンタックスの例を示す。図17に示されるように、下から10行目乃至下から3行目のように、ビューの合計数、ビューを区別するためのID、リストL0における視差予測の枚数、リストL0における視差予測で参照するビューのID、リストL1における視差予測の枚数、および、リストL1における視差予測で参照するビューのID等の情報がシーケンスパラメータセットに含められる。これらの情報は、多視点画像に必要な情報である。換言するに、本技術は、シーケンスパラメータセットに新たなシンタックスを追加することなく適用することができる。
図18にこの場合のスライスヘッダのシンタックスの例を示す。図18に示されるように、上から8行目のように、ビューを区別するためのIDがスライスヘッダに含められる。この情報は、多視点画像に必要な情報である。換言するに、本技術は、スライスヘッダに新たなシンタックスを追加することなく適用することができる。
図19にこの場合の予測ユニットのシンタックスの例を示す。図19に示されるように、本技術は、予測ユニットにも新たなシンタックスを追加することなく適用することができる。ただし、本技術を適用することにより、相関領域の候補が従来の場合より増えるので、マージモードや予測ベクトルのIDにおいて、シンタックスの種類を拡張するか、または、処理の内容を変更する必要がある。
[符号化処理の流れ]
次に、以上のような画像符号化装置100により実行される各処理の流れについて説明する。最初に、図20のフローチャートを参照して、符号化処理の流れの例を説明する。
ステップS101において、A/D変換部101は入力された画像をA/D変換する。ステップS102において、画面並べ替えバッファ102は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
ステップS103において、イントラ予測部114は、イントラ予測処理を行う。ステップS104において、動き視差予測・補償部115は、インター動き予測処理を行う。ステップS105において、予測画像選択部116は、イントラ予測により生成された予測画像、および、インター予測により生成された予測画像の内、いずれか一方を選択する。
ステップS106において、演算部103は、ステップS102の処理により並び替えられた画像と、ステップS105の処理により選択された予測画像との差分を演算する(差分画像を生成する)。生成された差分画像は元の画像に較べてデータ量が低減される。したがって、画像をそのまま符号化する場合に比べて、データ量を圧縮することができる。
ステップS107において、直交変換部104は、ステップS106の処理により生成された差分画像を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、直交変換係数が出力される。ステップS108において、量子化部105は、ステップS107の処理により得られた直交変換係数を量子化する。
ステップS108の処理により量子化された差分画像は、次のようにして局部的に復号される。すなわち、ステップS109において、逆量子化部108は、ステップS108の処理により生成された量子化された直交変換係数(量子化係数とも称する)を量子化部105の特性に対応する特性で逆量子化する。ステップS110において、逆直交変換部109は、ステップS109の処理により得られた直交変換係数を、直交変換部104の特性に対応する特性で逆直交変換する。これにより差分画像が復元される。
ステップS111において、演算部110は、ステップS105において選択された予測画像を、ステップS110において生成された差分画像に加算し、局部的に復号された復号画像(再構成画像)を生成する。ステップS112において、ループフィルタ111は、ステップS111の処理により得られた再構成画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行い、復号画像を生成する。
ステップS113において、デコードピクチャバッファ112や多視点デコードピクチャバッファ121は、ステップS112の処理により生成された復号画像、若しくは、ステップS111の処理により生成された再構成画像を記憶する。
ステップS114において、可逆符号化部106は、ステップS108の処理により量子化された直交変換係数を符号化する。すなわち、差分画像に対して、可変長符号化や算術符号化等の可逆符号化が行われる。なお、可逆符号化部106は、予測に関する情報や、量子化に関する情報や、フィルタ処理に関する情報等を符号化し、ビットストリームに付加する。
ステップS115において、蓄積バッファ107は、ステップS114の処理により得られたビットストリームを蓄積する。蓄積バッファ107に蓄積された符号化データは、適宜読み出され、伝送路や記録媒体を介して復号側に伝送される。
ステップS116において量子化部105は、ステップS115の処理により蓄積バッファ107に蓄積された符号化データの符号量(発生符号量)に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化動作のレートを制御する。
ステップS116の処理が終了すると、符号化処理が終了される。
[インター動き予測処理の流れ]
次に、図21のフローチャートを参照して、図20のステップS104において実行されるインター動き予測処理の流れの例を説明する。
ステップS131において、動き視差ベクトル探索部131は、処理対象のインター予測モードについて、動き探索を行い、処理対象であるカレント領域の動き視差ベクトル(動きベクトルまたは視差ベクトル)を生成する。ステップS132において、予測画像生成部132は、ステップS131において生成された動き視差ベクトルを用いて補償処理を行って予測画像を生成する。ステップS133において、符号化コスト算出部138は、ステップS132において生成された予測画像と、原画像(入力画像)との差分画像を生成する。
ステップS134において、符号化コスト算出部138は、空間相関予測ベクトル生成部135や時間視差相関予測ベクトル生成部136等を用いてマージモード処理を行う。
ステップS135において、符号化コスト算出部138は、ステップS131において生成されたカレント領域の動き視差ベクトルと、ステップS134の処理により生成されたカレント領域の予測ベクトルとを比較し、カレント領域においてマージモードが適用されるか否かを判定する。
両者が一致せず、マージモードが適用されないと判定した場合、符号化コスト算出部138は、処理をステップS136に進め、空間相関予測ベクトル生成部135や時間視差相関予測ベクトル生成部136等を用いて視差動きベクトル予測処理を行う。ステップS136の処理が終了すると、符号化コスト算出部138は、処理をステップS137に進める。
また、ステップS135において、カレント領域の動き視差ベクトルと予測ベクトルが一致し、カレント領域においてマージモードが適用されると判定した場合、符号化コスト算出部138は、ステップS136の処理を省略し、ステップS137に進める。
ステップS137において、符号化コスト算出部138は、全てのインター予測モードで、以上の処理を行ったか否かを判定し、未処理のインター予測モードが存在すると判定された場合、処理をステップS131に戻し、その未処理のインター予測モードについて、それ以降の処理が繰り返されるように制御する。つまり、ステップS131乃至ステップS137の各処理が、各インター予測モードについて実行される。
ステップS137において、全てのインター予測モードについて処理を行ったと判定された場合、符号化コスト算出部138は、処理をステップS138に進める。ステップS138において、符号化コスト算出部138は、各インター予測モードのコスト関数値を算出する。
ステップS139において、モード判定部139は、ステップS138において算出されたコスト関数値(符号化コスト値)が最も小さいインター予測モードを最適なモード(最適インター予測モード)に決定する。
ステップS140において、予測画像生成部132は、その最適インター予測モードで予測画像を生成する。この予測画像は、予測画像選択部116に供給される。
ステップS141において、符号化情報蓄積バッファ133は、図20のステップS105においてインター予測が選択された場合、最適インター予測モードのモード情報や動き情報(動き視差ベクトルや参照画像インデックス等)を記憶する。イントラ予測モードが選択された場合、動き視差ベクトルとしてゼロベクトルが記憶される。なお、これらの情報は、図20のステップS105においてインター予測が選択された場合、可逆符号化部106にも供給され、符号化されて、復号側に伝送される。
ステップS141の処理が終了すると、符号化情報蓄積バッファ133は、インター動き予測処理を終了し、処理を図20に戻す。
[マージモード処理の流れ]
次に、図22のフローチャートを参照して、図21のステップS134において実行されるマージモード処理の流れの例を説明する。
マージモード処理が開始されると、ステップS161において、空間相関予測ベクトル生成部135は、空間周辺領域との相関性を利用して空間相関予測ベクトルを生成する空間相関予測処理を行う。ステップS162において、時間視差相関予測ベクトル生成部136は、時間周辺領域や視差周辺領域との相関性を利用して時間視差相関予測ベクトルを生成する時間相関予測処理を行う。
ステップS163において、符号化コスト算出部138は、ステップS161において生成された空間相関予測ベクトルと、ステップS162において生成された時間視差予測ベクトルとで、重複するベクトルを削除する。
ステップS164において、符号化コスト算出部138は、ベクトルが存在するか否かを判定する。空間相関予測ベクトル若しくは時間視差相関予測ベクトルが1つでも存在すると判定された場合、符号化コスト算出部138は、処理をステップS165に進める。
ステップS165において、符号化コスト算出部138は、ベクトルが複数存在するか否かを判定する。複数存在すると判定された場合、符号化コスト算出部138は、処理をステップS166に進め、マージインデックスを取得する。複数存在しないと判定された場合、符号化コスト算出部138は、ステップS166の処理を省略する。
カレント領域の動きベクトルと一致する空間相関予測ベクトル若しくは時間視差相関予測ベクトルが存在する場合、符号化コスト算出部138は、ステップS167において、その一致するベクトルを予測ベクトルとして取得し、ステップS168において、参照画像インデックスを取得する。
ステップS168の処理を終了すると、符号化コスト算出部138は、マージモード処理を終了し、処理を図21に戻す。
また、ステップS164において、空間相関予測ベクトル若しくは時間視差相関予測ベクトルが1つも存在しないと判定された場合、符号化コスト算出部138は、処理をステップS169に進める。
ステップS169において、符号化コスト算出部138は、予測ベクトルに初期値(例えばゼロベクトル)を与える。また、ステップS170において、符号化コスト算出部138は、参照画像インデックスに初期値(例えば0)を与える。
ステップS170の処理を終了すると、符号化コスト算出部138は、マージモード処理を終了し、処理を図21に戻す。
[視差動きベクトル予測処理の流れ]
次に、図23のフローチャートを参照して、図21のステップS136において実行される視差動きベクトル予測処理の流れの例を説明する。
視差動きベクトル予測処理が開始されると、ステップS191において、空間相関予測ベクトル生成部135は、空間相関予測処理を行い、空間相関予測ベクトルを生成する。ステップS192において、時間視差相関予測ベクトル生成部136は、時間視差相関予測処理を行い、時間視差相関予測ベクトルを生成する。
ステップS193において、符号化コスト算出部138は、テップS191において生成された空間相関予測ベクトルと、ステップS192において生成された時間視差予測ベクトルとで、重複するベクトルを削除する。
符号化コスト算出部138は、残ったベクトルの内、カレント領域の動きベクトルに最も近いベクトルを選択し、ステップS194においてそのベクトルを示す予測ベクトルインデックスを作成し、ステップS195において、そのベクトルを予測ベクトルとする。ステップS195の処理が終了すると、符号化コスト算出部138は、視差動きベクトル予測処理を終了し、処理を図21に戻す。
[時間視差相関予測処理の流れ]
次に、図24乃至図27のフローチャートを参照して、図22のステップS162若しくは図23のステップS192において実行される時間視差相関予測処理の流れの例を説明する。
時間視差相関予測処理が開始されると、カレント領域処理部151は、図24のステップS211において、カレント領域のビューIDとPOCを取得する。ステップS212において、カレント領域処理部151は、カレント領域の参照インデックスを決定する。ステップS213において、カレント領域処理部151は、参照画像のビューIDとPOCを取得する。
ステップS214において、相関領域処理部152は、リストL1の参照画像インデックスの昇順に相関画像を選択する。ステップS215において、相関領域処理部152は、全ての参照画像インデックスを探索したか否かを判定し、全ての参照画像インデックスを参照したと判定した場合、時間視差相関予測処理を終了し、処理を図22若しくは図23に戻す。
また、ステップS215において、未処理の参照画像インデックスが存在すると判定された場合、相関領域処理部152は、処理をステップS216に進める。ステップS216において、相関領域処理部152は、相関領域を決定し、処理を図25に進める。
図25のステップS221において、相関領域処理部152は、相関領域がイントラ予測された領域、若しくは、他の領域を参照しない領域であるか否かを判定する。相関領域がイントラ予測された領域である、若しくは、他の領域を参照しない領域であると判定された場合、相関領域処理部152は、処理を図26に進める。
また、図25のステップS221において、相関領域がインター予測された領域であり、かつ、他の領域を参照する領域であると判定された場合、相関領域処理部152は、処理をステップS222に進める。
ステップS222において、L1予測処理部153は、相関領域のビューIDとPOCを取得する。ステップS223において、L1予測処理部153は、相関領域のL1予測の参照画像のビューIDとPOCを取得する。
ステップS224において、L1予測処理部153は、カレント領域と相関領域のビューIDが一致するか否かを判定する。両者が一致する場合、相関領域は、コロケーテッドブロックである。カレント領域と相関領域のビューIDが一致すると判定された場合、L1予測処理部153は、処理をステップS225に進め、方式4−2処理を行い、方式4若しくは方式2で予測ベクトルを生成するようにする。ステップS225の処理が終了すると、処理は図26に進む。
また、図25のステップS224において、カレント領域と相関領域のビューIDが一致しないと判定された場合、L1予測処理部153は、処理をステップS226に進める。
ステップS226において、L1予測処理部153は、カレント領域と相関領域のPOCが一致するか否かを判定する。カレント領域と相関領域のPOCが一致しないと判定された場合、L1予測処理部153は、処理を図26に進める。
また、図25のステップS226において、カレント領域と相関領域のPOCが一致すると判定された場合、L1予測処理部153は、処理をステップS227に進める。
ステップS227において、L1予測処理部153は、カレント領域の参照画像と相関領域の参照画像のPOCが一致するか否かを判定する。カレント領域の参照画像と相関領域の参照画像のPOCが一致すると判定された場合、L1予測処理部153は、処理をステップS228に進め、方式1処理を行い、方式1で予測ベクトルを生成するようにする。ステップS228の処理を終了すると、L1予測処理部153は、処理を図26に進める。
また、図25のステップS227において、カレント領域の参照画像と相関領域の参照画像のPOCが一致しないと判定された場合、L1予測処理部153は、処理をステップS229に進め、方式3処理を行い、方式3で予測ベクトルを生成するようにする。ステップS229の処理を終了すると、L1予測処理部153は、処理を図26に進める。
図26において、L0予測処理部154は、相関領域のL0予測について、図25のL1予測の場合と同様の処理を行う。つまり、L0予測処理部154は、ステップS231乃至ステップS238の各処理を、図25のステップS222乃至ステップS229の各処理と同様に行う。
ただし、図26の場合、相関領域の参照画像は、L0予測の参照画像とする。また、ステップS234、ステップS237、若しくはステップS238の処理が終了した場合、または、ステップS235においてカレント領域と相関領域のPOCが一致しないと判定された場合、L0予測処理部154は、処理を図27に進める。
図27のステップS241において、予測ベクトル生成部159は、予測ベクトル候補が少なくとも1つ存在するか否かを判定する。予測ベクトル候補が1つも存在しないと判定された場合、予測ベクトル生成部159は、処理を図24のステップS214に戻す。
また、図27のステップS241において、予測ベクトル候補が少なくとも1つ存在すると判定された場合、予測ベクトル生成部159は、処理をステップS242に進める。ステップS242において、予測ベクトル生成部159は、L1の飛び越しフラグのみ1であるか、若しくは、L0/L1の飛び越しフラグの値が等しく、L1の参照があるか否かを判定する。
L1の飛び越しフラグのみが1であると判定された場合、若しくは、L0/L1の飛び越しフラグの値が等しく、かつ、L1の参照があると判定された場合、予測ベクトル生成部159は、処理をステップS243に進める。
ステップS243において、予測ベクトル生成部159は、L1参照のベクトルを取得する。ステップS244において、予測ベクトル生成部159は、L1参照の参照画像インデックスを取得し、処理をステップS247に進める。
また、ステップS242において、L1の飛び越しフラグが1ではない、若しくは、L0の飛び越しフラグも0であると判定され、かつ、L0/L1の飛び越しフラグの値が等しくない、若しくは、L1の参照がないと判定された場合、予測ベクトル生成部159は、処理をステップS245に進める。
ステップS245において、予測ベクトル生成部159は、L0参照のベクトルを取得する。ステップS246において、予測ベクトル生成部159は、L0参照の参照画像インデックスを取得し、処理をステップS247に進める。
ステップS247において、予測ベクトル生成部159は、取得したL1参照のベクトルもしくはL0参照のベクトルを予測ベクトルとする。その際、予測ベクトル生成部159は、カレント領域や相関領域における参照画像との距離を用いてベクトルのスケーリングを行い、スケーリング結果を予測ベクトルとする。
ステップS247の処理が終了すると、予測ベクトル生成部159は、処理を図24に戻し、時間視差相関予測処理を終了し、処理を図22若しくは図23に戻す。
[方式1処理の流れ]
次に、図28のフローチャートを参照して、図25若しくは図26において実行される方式1処理の流れの例を説明する。
方式1処理が開始されると、方式1処理部155は、ステップS261において、カレント領域とカレント領域の参照画像のPOCが一致するか否かを判定する。カレント領域とカレント領域の参照画像のPOCが一致しないと判定された場合、方式1処理部155は、方式1処理を終了し、処理を図25若しくは図26に戻す。
また、ステップS261において、カレント領域とカレント領域の参照画像のPOCが一致すると判定された場合、方式1処理部155は、処理をステップS262に進める。
ステップS262において、方式1処理部155は、相関領域と相関領域の参照画像のPOCが一致するか否かを判定する。相関領域と相関領域の参照画像のPOCが一致しないと判定された場合、方式1処理部155は、方式1処理を終了し、処理を図25若しくは図26に戻す。
また、ステップS262において、相関領域と相関領域の参照画像のPOCが一致すると判定された場合、方式1処理部155は、処理をステップS263に進める。
ステップS263において、方式1処理部155は、カレント領域とカレント領域の参照画像の視点間距離1を算出する。ステップS264において、方式1処理部155は、相関領域と相関領域の参照画像の視点間距離2を算出する。ステップS265において、方式1処理部155は、参照画像の飛び越しフラグを決定し、処理を図25若しくは図26に戻す。これらのパラメータ(視点間距離1、視点間距離2、および飛び越しフラグ)は、図27の処理に利用される。
[方式3処理の流れ]
次に、図29のフローチャートを参照して、図25若しくは図26において実行される方式3処理の流れの例を説明する。
方式3処理が開始されると、方式3処理部157は、ステップS271において、カレント領域とカレント領域の参照画像のビューIDが一致するか否かを判定する。カレント領域とカレント領域の参照画像のビューIDが一致しないと判定された場合、方式3処理部157は、方式3処理を終了し、処理を図25若しくは図26に戻す。
また、ステップS271において、カレント領域とカレント領域の参照画像のビューIDが一致すると判定された場合、方式3処理部157は、処理をステップS272に進める。
ステップS272において、方式3処理部157は、相関領域と相関領域の参照画像のビューIDが一致するか否かを判定する。相関領域と相関領域の参照画像のビューIDが一致しないと判定された場合、方式3処理部157は、方式3処理を終了し、処理を図25若しくは図26に戻す。
また、ステップS272において、相関領域と相関領域の参照画像のビューIDが一致すると判定された場合、方式3処理部157は、処理をステップS273に進める。
ステップS273において、方式3処理部157は、カレント領域とカレント領域の参照画像の視点間距離1を算出する。ステップS274において、方式3処理部157は、相関領域と相関領域の参照画像の視点間距離2を算出する。ステップS275において、方式3処理部157は、参照画像の飛び越しフラグを決定し、処理を図25若しくは図26に戻す。これらのパラメータ(視点間距離1、視点間距離2、および飛び越しフラグ)は、図27の処理に利用される。
[方式4−2処理の流れ]
次に、図30のフローチャートを参照して、図25若しくは図26において実行される方式4−2処理の流れの例を説明する。
方式4−2処理が開始されると、L1予測処理部153若しくはL0予測処理部154は、ステップS281において、カレント領域とカレント領域の参照画像のビューIDが一致するか否かを判定する。両者が一致する場合、符号化ベクトルは動きベクトルである。カレント領域とカレント領域の参照画像のビューIDが一致すると判定された場合、処理は、ステップS282に進む。
ステップS282において、L1予測処理部153若しくはL0予測処理部154は、相関領域(コロケーテッドブロック)と相関領域の参照画像のビューIDが一致するか否かを判定する。両者が一致しない場合、コロケーテッドベクトルは視差ベクトルである。相関領域と相関領域の参照画像のビューIDが一致しないと判定された場合、L1予測処理部153若しくはL0予測処理部154は、方式4−2処理を終了し、処理を図25若しくは図26に戻す。
つまり、この場合、符号化ベクトルが動きベクトルであり、コロケーテッドベクトルが視差ベクトルであるので、符号化ベクトルの特性とコロケーテッドベクトルの特性とが一致しない。したがって、コロケーテッドブロックはノットアベイラブルに設定され、方式4−2処理が終了される。
また、ステップS282において、相関領域と相関領域の参照画像のビューIDが一致すると判定された場合、L1予測処理部153若しくはL0予測処理部154は、処理をステップS283に進める。両者が一致する場合、コロケーテッドベクトルは動きベクトルである。つまり、この場合、符号化ベクトルもコロケーテッドベクトルも動きベクトルであり、両ベクトルの特性が一致する。したがって、この場合、コロケーテッドベクトルがアベイラブルに設定される。
ステップS283において、方式4処理部158は、カレント領域とカレント領域の参照画像の視点間距離1を算出する。ステップS284において、方式4処理部158は、相関領域と相関領域の参照画像の視点間距離2を算出する。ステップS285において、方式4処理部158は、参照画像の飛び越しフラグを決定し、処理を図25若しくは図26に戻す。これらのパラメータ(視点間距離1、視点間距離2、および飛び越しフラグ)は、図27の処理に利用される。
また、ステップS281において、カレント領域とカレント領域の参照画像のビューIDが一致しないと判定された場合、L1予測処理部153若しくはL0予測処理部154は、処理をステップS286に進める。
ステップS286において、予測処理部153若しくはL0予測処理部154は、カレント領域とカレント領域の参照画像のPOCが一致するか否かを判定する。カレント領域とカレント領域の参照画像のPOCが一致しないと判定された場合、予測処理部153若しくはL0予測処理部154は、方式4−2処理を終了し、処理を図25若しくは図26に戻す。
また、ステップS286において、カレント領域とカレント領域の参照画像のPOCが一致すると判定された場合、予測処理部153若しくはL0予測処理部154は、処理をステップS287に進める。両者が一致する場合、符号化ベクトルは視差ベクトルである。
ステップS287において、予測処理部153若しくはL0予測処理部154は、相関領域と相関領域の参照画像のPOCが一致するか否かを判定する。両者が一致しない場合、コロケーテッドベクトルは動きベクトルである。相関領域と相関領域の参照画像のPOCが一致しないと判定された場合、予測処理部153若しくはL0予測処理部154は、方式4−2処理を終了し、処理を図25若しくは図26に戻す。
つまり、この場合、符号化ベクトルが視差ベクトルであり、コロケーテッドベクトルが動きベクトルであるので、符号化ベクトルの特性とコロケーテッドベクトルの特性とが一致しない。したがって、コロケーテッドブロックはノットアベイラブルに設定され、方式4−2処理が終了される。
また、ステップS287において、相関領域と相関領域の参照画像のPOCが一致すると判定された場合、L1予測処理部153若しくはL0予測処理部154は、処理をステップS283に戻す。両者が一致する場合、コロケーテッドベクトルは視差ベクトルである。つまり、この場合、符号化ベクトルもコロケーテッドベクトルも視差ベクトルであり、両ベクトルの特性が一致する。したがって、この場合、コロケーテッドベクトルがアベイラブルに設定される。
この場合、方式2処理部156は、方式4処理部158が実行する場合と同様に、ステップS283乃至ステップS285の処理を行う。ステップS285の処理が終了すると、方式2処理部156は、方式4−2処理を終了し、処理を図25若しくは図26に戻す。
以上のように各処理を行うことにより、時間視差相関予測ベクトル生成部136は、動き相関予測ベクトルだけでなく、視差相関予測ベクトルも生成することができる。したがって、動き視差予測・補償部115は、カレント領域のベクトルが視差ベクトルの場合であっても、予測精度の高い予測ベクトルを生成することができる。これにより、画像符号化装置100は、符号化効率の低減を抑制することができる。
<2.第2の実施の形態>
[画像復号装置]
図31は、画像処理装置である画像復号装置の主な構成例を示すブロック図である。図31に示される画像復号装置300は、図11の画像符号化装置100に対応する装置である。つまり、画像復号装置300は、画像符号化装置100が多視点画像を符号化して生成した符号化データ(ビットストリーム)を、画像符号化装置100の符号化方法に対応する復号方法で復号し、多視点の復号画像を得る。
図31に示されるように、画像復号装置300は、蓄積バッファ301、可逆復号部302、逆量子化部303、逆直交変換部304、演算部305、ループフィルタ306、画面並べ替えバッファ307、およびD/A変換部308を有する。また、画像復号装置300は、デコードピクチャバッファ309、選択部310、イントラ予測部311、動き視差補償部312、および選択部313を有する。
さらに、画像復号装置300は、多視点デコードピクチャバッファ321を有する。
蓄積バッファ301は、伝送されてきた符号化データを蓄積し、所定のタイミングにおいてその符号化データを可逆復号部302に供給する。可逆復号部302は、蓄積バッファ301より供給された、図11の可逆符号化部106により符号化された情報を、可逆符号化部106の符号化方式に対応する方式で復号する。可逆復号部302は、復号して得られた差分画像の量子化された係数データを、逆量子化部303に供給する。
また、可逆復号部302は、符号化データを復号して得られた最適な予測モードに関する情報を参照し、最適な予測モードにイントラ予測モードが選択されたかインター予測モードが選択されたかを判定する。可逆復号部302は、その判定結果に基づいて、その最適な予測モードに関する情報を、イントラ予測部311若しくは動き視差補償部312に供給する。つまり、例えば、画像符号化装置100において最適な予測モードとしてイントラ予測モードが選択された場合、その最適な予測モードに関する情報であるイントラ予測情報等がイントラ予測部311に供給される。また、例えば、画像符号化装置100において最適な予測モードとしてインター予測モードが選択された場合、その最適な予測モードに関する情報であるインター予測情報等が動き視差補償部312に供給される。
逆量子化部303は、可逆復号部302により復号されて得られた量子化された係数データを、図11の量子化部105の量子化方式に対応する方式で逆量子化し、得られた係数データを逆直交変換部304に供給する。逆直交変換部304は、図11の直交変換部104の直交変換方式に対応する方式で逆量子化部303から供給される係数データを逆直交変換する。逆直交変換部304は、この逆直交変換処理により、画像符号化装置100において直交変換される前の差分画像に対応する差分画像を得る。
逆直交変換されて得られた差分画像は、演算部305に供給される。また、演算部305には、選択部313を介して、イントラ予測部311若しくは動き視差補償部312から予測画像が供給される。
演算部305は、差分画像と予測画像とを加算し、画像符号化装置100の演算部103により予測画像が減算される前の画像に対応する再構成画像を得る。演算部305は、その再構成画像をループフィルタ306に供給する。
ループフィルタ306は、供給された再構成画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜施して復号画像を生成する。例えば、ループフィルタ306は、再構成画像に対してデブロックフィルタ処理を行うことにより、ブロック歪を除去する。また、例えば、ループフィルタ306は、そのデブロックフィルタ処理結果(ブロック歪みの除去が行われた再構成画像)に対して、ウィナーフィルタ(Wiener Filter)を用いてループフィルタ処理を行うことにより画質改善を行う。
なお、ループフィルタ306が行うフィルタ処理の種類は任意であり、上述した以外のフィルタ処理を行ってもよい。また、ループフィルタ306が、図11の画像符号化装置100から供給されたフィルタ係数を用いてフィルタ処理を行うようにしてもよい。
ループフィルタ306は、フィルタ処理結果である復号画像を画面並べ替えバッファ307およびデコードピクチャバッファ309に供給する。なお、このループフィルタ306によるフィルタ処理は省略することもできる。つまり、演算部305の出力が、フィルタ処理されずに、デコードピクチャバッファ309に格納されるようにすることもできる。例えば、イントラ予測部311は、この画像に含まれる画素の画素値を周辺画素の画素値として利用する。
画面並べ替えバッファ307は、供給された復号画像の並べ替えを行う。すなわち、図11の画面並べ替えバッファ102により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部308は、画面並べ替えバッファ307から供給された復号画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
デコードピクチャバッファ309は、供給される再構成画像(並びに、その画像のビューIDおよびPOC)や復号画像(並びに、その画像のビューIDおよびPOC)を記憶する。また、デコードピクチャバッファ309は、所定のタイミングにおいて、若しくは、イントラ予測部311や動き視差補償部312等の外部の要求に基づいて、記憶している再構成画像(並びに、その画像のビューIDおよびPOC)や復号画像(並びに、その画像のビューIDおよびPOC)を、選択部310を介してイントラ予測部311や動き視差補償部312に供給する。
イントラ予測部311は、図11のイントラ予測部114と基本的に同様の処理を行う。ただし、イントラ予測部311は、符号化の際にイントラ予測により予測画像が生成された領域に対してのみ、イントラ予測を行う。
動き視差補償部312は、可逆復号部302から供給されるインター予測情報に基づいて動き視差補償を行い、予測画像を生成する。なお、動き視差補償部312は、可逆復号部302から供給されるインター予測情報に基づいて、符号化の際にインター予測が行われた領域に対してのみ、動き視差補償を行う。
動き視差補償部312は、予測処理単位の領域毎に、生成した予測画像を、選択部313を介して演算部305に供給する。
選択部313は、イントラ予測部311から供給される予測画像、若しくは、動き視差補償部312から供給される予測画像を演算部305に供給する。
デコードピクチャバッファ309は、処理対象のビューの画像(並びに、その画像のビューIDおよびPOC)のみを記憶するが、多視点デコードピクチャバッファ321は、各視点(ビュー)の画像(並びに、その画像のビューIDおよびPOC)を記憶する。つまり、多視点デコードピクチャバッファ321は、デコードピクチャバッファ309に供給された復号画像(並びに、その画像のビューIDおよびPOC)を取得し、デコードピクチャバッファ309とともにその復号画像(並びに、その画像のビューIDおよびPOC)を記憶する。
デコードピクチャバッファ309は、処理対象のビューが変わると、その復号画像を消去するが、多視点デコードピクチャバッファ321は、そのまま保持する。そして、デコードピクチャバッファ309などの要求に従って、記憶している復号画像(並びに、その画像のビューIDおよびPOC)を、「処理対象ではないビューの復号画像」として、デコードピクチャバッファ309に供給する。デコードピクチャバッファ309は、多視点デコードピクチャバッファ321から読み出した「処理対象ではないビューの復号画像(並びに、その画像のビューIDおよびPOC)」を、選択部310を介して動き視差補償部312に供給する。
[動き視差補償部]
図32は、動き視差補償部312の主な構成例を示すブロック図である。
図32に示されるように、動き視差補償部312は、符号化情報蓄積バッファ331、空間相関予測ベクトル生成部332、時間視差相関予測ベクトル生成部333、選択部334、演算部335、および予測画像生成部336を有する。
符号化情報蓄積バッファ331は、可逆復号部302において得られた、モード情報、差分動き視差情報、および予測情報を取得する。また、符号化情報蓄積バッファ331は、予測画像生成部336において使用された復号済みの動き視差ベクトルを記憶する。この動き視差ベクトルは、他の領域に対する処理において周辺領域の動き視差ベクトルとして使用される。
符号化情報蓄積バッファ331は、モード情報や復号済みの周辺領域の動き視差ベクトルを、空間相関予測ベクトル生成部332、若しくは、時間視差相関予測ベクトル生成部333の、予測情報において指定される予測ベクトルの種類(空間相関予測ベクトル若しくは時間視差相関予測ベクトル)に対応する方に供給する。
また、符号化情報蓄積バッファ331は、差分動き視差情報に含まれる差分動き視差ベクトルを演算部335に供給する。さらに、符号化情報蓄積バッファ331は、予測情報に含まれる参照画像インデックスを予測画像生成部336に供給する。
空間相関予測ベクトル生成部332は、符号化情報蓄積バッファ331から供給された情報に基づいて、空間相関予測ベクトルを生成する。この生成方法は、空間相関予測ベクトル生成部135の場合と同様である。ただし、空間相関予測ベクトル生成部332の場合、最適なインター予測モードは予め決められているので、そのモードについてのみ空間相関予測ベクトルを生成すればよい。空間相関予測ベクトル生成部332は、生成した空間相関予測ベクトルを、選択部334を介して演算部335に供給する。
時間視差相関予測ベクトル生成部333は、符号化情報蓄積バッファ331から供給された情報、可逆復号部302から供給されるカレント領域のビューIDやPOC等の情報、並びに、デコードピクチャバッファ309から供給される参照画像のビューIDやPOC等の情報に基づいて、時間視差相関予測ベクトルを生成する。この生成方法は、時間視差相関予測ベクトル生成部136の場合と同様である。ただし、時間視差相関予測ベクトル生成部333の場合、最適なインター予測モードは予め決められているので、そのモードについてのみ時間視差相関予測ベクトルを生成すればよい。時間視差相関予測ベクトル生成部333は、生成した時間視差相関予測ベクトルを、選択部334を介して演算部335に供給する。
選択部334は、空間相関予測ベクトル生成部332から空間相関予測ベクトルを供給された場合、それを演算部335に供給する。また、選択部334は、時間視差相関予測ベクトル生成部333から時間視差相関予測ベクトルを供給された場合、それを演算部335に供給する。
演算部335は、選択部334から供給される空間相関予測ベクトル若しくは時間視差相関予測ベクトルに、符号化情報蓄積バッファ331から供給される差分動き視差ベクトルを加算し、カレント領域の動き視差ベクトルを再構築する。演算部335は、再構築されたカレント領域の動き視差ベクトルを予測画像生成部336に供給する。
予測画像生成部336は、演算部335より供給される、再構築されたカレント領域の動き視差ベクトルと、符号化情報蓄積バッファ331から供給される参照画像インデックスと、デコードピクチャバッファ309から供給される周辺領域の画像である周辺画像画素値とを用いて、予測画像を生成する。予測画像生成部336は、生成した予測画像画素値を選択部313に供給する。
このようにすることにより、時間視差相関予測ベクトル生成部333は、時間視差相関予測ベクトル生成部136の場合と同様に、動き相関予測ベクトルだけでなく、視差相関予測ベクトルも生成することができる。したがって、動き視差補償部312は、カレント領域のベクトルが視差ベクトルの場合であっても、視差相関予測ベクトルを再構築することができる。すなわち、画像復号装置300は、画像符号化装置100により生成された符号化データを正しく復号することができるので、符号化効率の向上を実現することができる。
[復号処理の流れ]
次に、以上のような画像復号装置300により実行される各処理の流れについて説明する。最初に、図33のフローチャートを参照して、復号処理の流れの例を説明する。
復号処理が開始されると、ステップS301において、蓄積バッファ301は、伝送されてきたビットストリームを蓄積する。ステップS302において、可逆復号部302は、蓄積バッファ301から供給されるビットストリーム(符号化された差分画像情報)を復号する。このとき、イントラ予測情報やインター予測情報等、ビットストリームに含められた差分画像情報以外の各種情報も復号される。
ステップS303において、逆量子化部303は、ステップS302の処理により得られた、量子化された直交変換係数を逆量子化する。ステップS304において逆直交変換部304は、ステップS303において逆量子化された直交変換係数を逆直交変換する。
ステップS305において、イントラ予測部311若しくは動き視差補償部312は、供給された情報を用いて予測処理を行う。ステップS306において、演算部305は、ステップS304において逆直交変換されて得られた差分画像情報に、ステップS305において生成された予測画像を加算する。これにより再構成画像が生成される。
ステップS307において、ループフィルタ306は、ステップS306において得られた再構成画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行う。
ステップS308において、画面並べ替えバッファ307は、ステップS307においてフィルタ処理されて生成された復号画像の並べ替えを行う。すなわち画像符号化装置100の画面並べ替えバッファ102により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS309において、D/A変換部308は、フレームの順序が並べ替えられた復号画像をD/A変換する。この復号画像が図示せぬディスプレイに出力され、表示される。
ステップS310において、デコードピクチャバッファ309は、ステップS307においてフィルタ処理されて得られた復号画像を記憶する。この復号画像は、インター予測処理において参照画像として利用される。
ステップS310の処理が終了すると、復号処理が終了される。
[予測処理の流れ]
次に、図34のフローチャートを参照して、図33のステップS305において実行される予測処理の流れの例を説明する。
予測処理が開始されると、可逆復号部302は、ステップS331において、処理対象のカレント領域が符号化の際にイントラ予測が行われたか否かを判定する。イントラ予測が行われたと判定された場合、可逆復号部302は、処理をステップS332に進める。
この場合、イントラ予測部311は、ステップS332において、可逆復号部302からイントラ予測モード情報を取得し、ステップS333において、イントラ予測によって予測画像を生成する。予測画像が生成されると、イントラ予測部311は、予測処理を終了し、処理を図33に戻す。
また、ステップS331において、カレント領域がインター予測の行われた領域であると判定した場合、可逆復号部302は、処理をステップS334に進める。ステップS334において、動き視差補償部312は、動き視差補償処理を行う。動き視差補償処理が終了すると、動き視差補償部312は、予測処理を終了し、処理を図33に戻す。
[動き視差補償処理の流れ]
次に、図35のフローチャートを参照して、図34のステップS334において実行される動き視差補償処理の流れの例を説明する。
動き視差補償処理が開始されると、ステップS351において、符号化情報蓄積バッファ331は、ステップS351において復号されたモード情報、動き視差情報、および予測情報等を記憶する。
ステップS352において、空間相関予測ベクトル生成部332、時間視差相関予測ベクトル生成部333、選択部334、および演算部335は、動き視差ベクトル生成処理を行い、カレント領域の動き視差ベクトルを再構築する。
動き視差ベクトルが再構築されると、ステップS353において、予測画像生成部336は、その動き視差ベクトルを用いて予測画像を生成する。
予測画像が生成されると、予測画像生成部336は、動き視差補償処理を終了し、処理を図34に戻す。
[動き視差ベクトル生成処理の流れ]
次に、図36のフローチャートを参照して、図35のステップS352において実行される動き視差ベクトル生成処理の流れの例を説明する。
動き視差ベクトル生成処理が開始されると、符号化情報蓄積バッファ331は、ステップS371において、予測情報からスキップモードであるか否かを判定する。スキップモードであると判定された場合、符号化情報蓄積バッファ331は、処理をステップS372に進める。ステップS372において、空間相関予測ベクトル生成部332乃至演算部335は、マージモード処理を行い、マージモードで動き視差ベクトルを再構築する。なお、このマージモード処理においては、図22のフローチャートを参照して説明した各処理と同様の処理が行われる。マージモード処理が終了すると、演算部335は、動き視差ベクトル生成処理を終了し、処理を図35に戻す。
また、図36のステップS371において、スキップモードではないと判定された場合、符号化情報蓄積バッファ331は、処理をステップS373に進める。ステップS373において、符号化情報蓄積バッファ331は、予測情報からマージモードであるか否かを判定する。マージモードであると判定された場合、符号化情報蓄積バッファ331は、処理をステップS372に戻し、マージモード処理を実行させる。
また、ステップS373において、マージモードではないと判定された場合、符号化情報蓄積バッファ331は、処理をステップS374に進める。
ステップS374において、符号化情報蓄積バッファ331は、参照画像のインデックスを取得する。ステップS375において、符号化情報蓄積バッファ331は、差分動き視差ベクトルを取得する。
ステップS376において、空間相関予測ベクトル生成部332若しくは時間視差相関予測ベクトル生成部333は、視差動きベクトル予測処理を行う。この視差動きベクトル予測処理は、図23のフローチャートを参照して説明した場合と同様に行われる。ただし、この場合、予測方法は決められているので、空間相関予測処理と時間視差相関予測処理の内、いずれか一方(予測情報により指定される方)が行われる。
ステップS377において、演算部335は、ステップS376において再構築された予測ベクトルと、差分動き視差ベクトルとを加算し、動き視差ベクトルを再構築する。
ステップS377の処理が終了すると、演算部335は、動き視差ベクトル生成処理を終了し、処理を図35に戻す。
以上のように各処理を実行することにより、時間視差相関予測ベクトル生成部333は、時間視差相関予測ベクトル生成部136の場合と同様に、動き相関予測ベクトルだけでなく、視差相関予測ベクトルも生成することができる。したがって、動き視差補償部312は、カレント領域のベクトルが視差ベクトルの場合であっても、視差相関予測ベクトルを再構築することができる。すなわち、画像復号装置300は、画像符号化装置100により生成された符号化データを正しく復号することができるので、符号化効率の向上を実現することができる。
<3.第3の実施の形態>
[ポイント]
多視点画像の場合、一般的に、視差を発生させるように画像の位置がビュー間でずれている。そのためビュー方向のブロックを選択するときに、同位置のブロックを選択(参照)しても、予測画像の予測精度が低くなってしまい、適切な予測ベクトルを作ることができない可能性がある。
そこで、予測ベクトル生成のために、ビュー方向のブロックを選択するときに、シフトした位置のブロックを選択する。つまり、カレント領域と同一の時刻の画像の位置をシフトさせた状態でカレント領域と同じ位置となる領域のベクトルを用いて、予測ベクトルを生成するようにする。
このシフト量を、周辺ブロックの視差ベクトルから予め決められた手順で算出するようにする。この手順を符号化側の装置と復号側の装置とで共通化することにより、符号化側と復号側で、同様の予測を行うことができる。
なお、シフト量を計算するための周辺ブロックを明示的に指定し、その情報を、符号化側から復号側に伝送するようにしてもよい。また、シフト量の演算方法に関する情報も符号化側から復号側に伝送するようにしてもよい。
以上のようにすることにより、画像符号化装置においても、画像復号装置においても、ビュー間で位置合わせしたブロックから予測ベクトルを生成することができる。したがって、予測画像の予測精度を向上させることができ、符号化効率を向上させることができる。
以下に、詳細を説明する。
[画像符号化装置]
図37は、本技術を適用した画像符号化装置の他の構成例を示すブロック図である。
図37に示される画像符号化装置400は、基本的に上述した画像符号化装置100と同様の装置である。ただし、画像符号化装置400は、ビュー間で位置合わせしたブロックから予測ベクトルを生成する。
図37に示されるように、画像符号化装置400は、動き予測・補償部415およびBase Viewエンコーダ421を有する。
動き予測・補償部412は、デコードピクチャバッファ112から取得したデコード画像と、Base Viewエンコーダ421から取得したベースビューの動き情報を用いて、ビュー方向のブロックを参照する予測ベクトルを生成する。
Base Viewエンコーダ421は、ベースビューの符号化を行う。Base Viewエンコーダ421は、ベースビューのデコード画像をデコードピクチャバッファ112に供給し、記憶させる。デコードピクチャバッファ112には、さらに、ループフィルタ111から供給されるノンベースビューのデコード画像も記憶される。
Base Viewエンコーダ421は、ベースビューの動き情報を動き予測・補償部412に供給する。
[動き予測・補償部]
図38は、図37の動き予測・補償部412の主な構成例を示すブロック図である。
図38に示されるように、動き予測・補償部412は、インターモード生成部431、参照インデックス決定部432、ベクトル予測部433、ベクトル予測部434、およびモード判定部435を有する。各処理部の間では、図38に示される情報が授受される。
ベクトル予測部433は、インター予測モードの場合、予測ベクトルを生成し、その予測画像を生成する。ベクトル予測部434は、スキップモードやマージモード等の場合、予測ベクトルを生成し、その予測画像を生成する。これらにおいて生成された予測ベクトルや予測画像は、モード判定部435に供給される。
モード判定部435は、これらの情報に基づいてモード判定を行い、選択したモードを示すモード情報と、そのモードの予測ベクトルを可逆符号化部106に供給する。また、選択されたモードの予測画像は、予測画像選択部116に供給される。
[ベクトル予測部]
図39は、ベクトル予測部433の主な構成例を示すブロック図である。
図39に示されるように、ベクトル予測部433は、動き/視差ベクトル探索部451、予測画像生成部452、ベクトルコスト算出部453、ベクトル判定部454、ベクトル情報蓄積バッファ455、周辺ブロックからの予測ベクトル生成部456、異なるピクチャからの予測ベクトル生成部457、および選択部458を有する。各処理部の間では、図39に示される情報が授受される。
異なるピクチャからの予測ベクトル生成部457は、異なるピクチャを参照する予測ベクトルを生成する。つまり、異なるピクチャからの予測ベクトル生成部457は、時間方向とビュー方向の各方向に異なるピクチャを参照し、予測ベクトルを生成する。ビュー方向に異なるピクチャを参照する予測ベクトルを生成する場合、異なるピクチャからの予測ベクトル生成部457は、Base Viewエンコーダ421からベースビューの動き情報を取得し、その動き情報を用いて、予測ベクトルを生成する。
異なるピクチャからの予測ベクトル生成部457が生成した予測ベクトルは、選択部458を介してベクトルコスト算出部453に供給されて、モード判定に用いられるコスト関数値が算出される。
[異なるピクチャからの予測ベクトル生成部]
図40は、異なるピクチャからの予測ベクトル生成部457の主な構成例を示すブロック図である。
図40に示されるように、異なるピクチャからの予測ベクトル生成部457は、視差ベクトル判定部471、ビュー間参照ベクトル生成部472、およびビュー内参照ベクトル生成部473を有する。
視差ベクトル判定部471は、周辺ブロックの視差ベクトルから、参照画像のシフト量を算出する。このシフト量の算出方法は、任意である。例えば、周辺ブロックの視差ベクトルの中からいずれか1つを選択し、それをシフト量としてもよい。また、例えば、周辺ブロックの視差ベクトルの平均値や中央値をシフト量としてもよい。
視差ベクトル判定部471は、このように求めたシフト量を視差ベクトルとして、ビュー間参照ベクトル生成部472に供給する。
ビュー間参照ベクトル生成部472は、ビュー方向に異なるピクチャを参照する予測ベクトルを生成する。
ビュー間参照ベクトル生成部472は、視差ベクトル判定部471により選ばれた視差ベクトル(シフト量)、Base Viewエンコーダ421から供給されるベースビューの動きベクトル(ノンベースビューの場合は視差ベクトルも含む)、並びに、ベクトル情報蓄積バッファ455から読み出した、参照画像インデックス、ビュー間の同一時刻の動き/視差ベクトル等の情報を用いて、視差ベクトルを考慮した予測ベクトルを生成する。
つまり、ビュー間参照ベクトル生成部472は、視差ベクトル判定部471により算出されたシフト量を用いて参照するビューの画像の位置合わせ(シフト)を行う。そして、ビュー間参照ベクトル生成部472は、その位置合わせを行ったブロックから予測ベクトルを生成する。
ビュー間参照ベクトル生成部472は、生成した予測ベクトルを、選択部458(図40では図示せず)を介して、ベクトルコスト算出部453に供給する。
なお、ビュー内参照ベクトル生成部473は、時間方向に異なるピクチャを参照する予測ベクトルを生成する。
以上のようにすることにより、ビュー間参照ベクトル生成部472は、予測精度の高い、適切な予測ベクトルを作ることができる。これにより、画像符号化装置400は、符号化効率を向上させることができる。
[動き予測・補償処理の流れ]
図41のフローチャートを参照して、動き予測・補償処理の流れの例を説明する。
動き予測・補償処理が開始されると、インターモード生成部431は、ステップS401において、インター予測モード、スキップモード、マージモード等の中からいずれかを選択し、そのモードを指定する情報であるインターモードを生成する。
ステップS402において、インターモード生成部431は、生成したインターモードがインター予測モードであるか否かを判定する。
インター予測モードである場合、ステップS403において、インターモード生成部431は、参照画像を決定し、ステップS404において、ベクトル予測部433は、ベクトル予測処理を実行する。
また、インター予測モードでない場合、ステップS404において、ベクトル予測部434は、ベクトル予測処理を行う。
ステップS405において、モード判定部435は、ステップS404において生成された予測ベクトル等に基づいて、モードを判定する。このモードは、ステップS401の処理に利用される。
ステップS405において、可逆符号化部106は、ステップS405において判定されたモードの情報を符号化する。
[ベクトル予測処理の流れ]
図42のフローチャートを参照して、図41のステップS404においてベクトル予測部433により実行されるベクトル予測処理の流れの例を説明する。
ベクトル予測処理が開始されると、動き/視差ベクトル探索部451は、ステップS421において、ベクトルの探索を行う。
ステップS422において、予測画像生成部452は、予測画像を生成する。
ステップS423において、ベクトルコスト算出部453は、残差画像を生成する。
ステップS424において、周辺ブロックからの予測ベクトル生成部456および異なるピクチャからの予測ベクトル生成部457は、符号化済みベクトルから予測ベクトルを生成する。
ステップS425において、ベクトルコスト算出部453は、ベクトルの残差を計算する。
ステップS426において、ベクトル判定部454は、最小コストの予測ベクトルを判定する。この処理結果は、ステップS424の処理に反映される。
ステップS427において、ベクトル情報蓄積バッファ455は、ベクトル情報を蓄積し、処理を図41に戻す。
[予測ベクトル生成処理の流れ]
次に、図43のフローチャートを参照して、図42のステップS424において実行される予測ベクトル生成処理の流れの例を説明する。
予測ベクトル生成処理が開始されると、選択部458は、ステップS441において、どのブロックを参照するかを判定する。
当該ピクチャの周辺ブロックを参照すると判定された場合、周辺ブロックからの予測ベクトル生成部456は、ステップS442において、周辺ブロックの符号化済みベクトルを予測ベクトルにし、処理を図42に戻す。
また、ステップS441において、異なるピクチャのブロックを参照すると判定された場合、選択部458は、処理をステップS443に進め、どのビューのピクチャを参照するかを判定する。
異なるビューのピクチャを参照すると判定された場合、異なるピクチャからの予測ベクトル生成部457は、ステップS444において、ビュー方向に拡張された符号化済みコロケーテッドブロック(Co-located Block)からビュー方向の予測ベクトルを生成し、処理を図42に戻す。
また、ステップS443において、同じビューのピクチャを参照すると判定された場合、異なるピクチャからの予測ベクトル生成部457は、ステップS445において、符号化済みコロケーテッドブロック(Co-located Block)から時間方向の予測ベクトルを生成し、処理を図42に戻す。
[異なるピクチャからの予測ベクトル生成処理の流れ]
次に、図44のフローチャートを参照して、図43のステップS444において実行される異なるピクチャからの予測ベクトル生成処理の流れの例を説明する。
異なるピクチャからの予測ベクトル生成処理が開始されると、視差ベクトル判定部471は、ステップS461において、周辺ブロックの視差ベクトルからシフト量を決定する。
ステップS462において、ビュー間参照ベクトル生成部472は、シフトされた位置のコロケーテッドブロックを選択する。
ステップS463において、ビュー間参照ベクトル生成部472は、コロケーテッドブロックから予測ベクトルを生成し、処理を図43に戻す。
[シフト量決定処理の流れ]
次に、図45のフローチャートを参照して、図44のステップS461において実行されるシフト量決定処理の流れの例を説明する。
ステップS481において、視差ベクトル判定部471は、周辺ブロックの視差ベクトルで、Y方向ベクトルの値が非ゼロのブロックが複数存在するか否かを判定する。
周辺ブロックは、処理対象であるカレントブロック(カレントブロック)の周辺(「隣接」を含む)に位置するブロックである。例えば、図46に示されるように、カレントブロック(Curr)の左に隣接するブロック(Left)、カレントブロックの上に隣接するブロック(Above)、および、カレントブロックの右上に隣接するブロック(Above Right)が周辺ブロックとされる。もちろん、これら以外のブロックを周辺ブロックに含めても良いし、これらのブロックの一部または全部を周辺ブロックとしないようにしてもよい。
周辺ブロックの位置は、全ブロックにおいて共通としてもよいが、ブロックによって異なるようにしてもよい。例えば、画面端やスライス境界に隣接するブロックをカレントブロックとする場合、周辺ブロックの一部を使用不可としてもよい。
ステップS481において、Y方向ベクトルの値が非ゼロのブロックが複数存在しないと判定した場合、視差ベクトル判定部471は、処理をステップS482に進め、対象のX方向の視差ベクトルをシフト量とし、処理を図44に戻す。
また、ステップS481において、Y方向ベクトルの値が非ゼロのブロックが複数存在すると判定した場合、視差ベクトル判定部471は、処理をステップS483に進め、対象のX方向の視差ベクトルの平均値をシフト量とし、処理を図44に戻す。
以上のように各処理を実行することにより、動き予測・補償部415は、予測精度の高い、適切な予測ベクトルを作ることができる。これにより、画像符号化装置400は、符号化効率を向上させることができる。
<4.第4の実施の形態>
[画像復号装置]
図47は、本技術を適用した画像復号装置の他の構成例を示すブロック図である。
図47に示される画像復号装置500は、基本的に上述した画像復号装置300と同様の装置である。ただし、画像復号装置500は、画像符号化装置400の場合と同様に、ビュー間で位置合わせしたブロックから予測ベクトルを生成する。
図47に示されるように、画像復号装置500は、動き補償部512およびBase Viewデコーダ521を有する。
動き補償部512は、デコードピクチャバッファ309から取得したデコード画像と、Base Viewデコーダ521から取得したベースビューの動き情報を用いて、ビュー方向のブロックを参照する予測ベクトルを生成する。
Base Viewデコーダ521は、ベースビューの符号化を行う。Base Viewデコーダ521は、ベースビューのデコード画像をデコードピクチャバッファ309に供給し、記憶させる。デコードピクチャバッファ309には、さらに、ループフィルタ306から供給されるノンベースビューのデコード画像も記憶される。
Base Viewデコーダ521は、ベースビューの動き情報を動き補償部512に供給する。
[動き補償部]
図48は、図47の動き補償部512の主な構成例を示すブロック図である。
図48に示されるように、動き補償部512は、モード判定部531、参照インデックス決定部532、ベクトル復号部533、およびベクトル復号部534を有する。各処理部の間では、図48に示される情報が授受される。
ベクトル復号部533は、インター予測モードの場合、画像符号化装置400から伝送された残差ベクトルを復号し、予測ベクトルを生成する。また、ベクトル復号部533は、その予測ベクトルを用いて予測画像を生成する。その予測画像は、予測画像選択部313に供給される。
ベクトル復号部534は、スキップモードやマージモードの場合、画像符号化装置400から伝送された残差ベクトルを復号し、予測ベクトルを生成する。また、ベクトル復号部534は、その予測ベクトルを用いて予測画像を生成する。その予測画像は、予測画像選択部313に供給される。
[ベクトル復号部]
図49は、ベクトル復号部533の主な構成例を示すブロック図である。
図49に示されるように、ベクトル復号部533は、選択部551、周辺ブロックからの予測ベクトル生成部552、異なるピクチャからの予測ベクトル生成部553、選択部554、演算部555、予測画像生成部556、およびベクトル情報蓄積バッファ557を有する。各処理部の間では、図49に示される情報が授受される。
選択部551は、可逆復号部302から供給されるベクトルインデックスを、インターモードに応じて、周辺ブロックからの予測ベクトル生成部552(スキップモード若しくはマージモード等の場合)、若しくは、異なるピクチャからの予測ベクトル生成部553(インター予測モードの場合)に供給する。
ベクトルインデックスが供給された、周辺ブロックからの予測ベクトル生成部552は、ベクトル情報蓄積バッファ557から取得したベクトル情報を用いて、カレントピクチャ内の周辺ブロックからの予測ベクトルを生成する。
ベクトルインデックスが供給された、異なるピクチャからの予測ベクトル生成部553は、ベクトル情報蓄積バッファ557から取得したベクトル情報を用いて、カレントビュー内の異なるピクチャからの予測ベクトルを生成する。また、異なるピクチャからの予測ベクトル生成部553は、ベクトル情報蓄積バッファ557から取得したベクトル情報や、Base Viewデコーダ521から供給されるベースビューの動き情報を用いて、異なるビューの異なるピクチャからの予測ベクトルを生成する。
この異なるピクチャからの予測ベクトル生成部553は、異なるピクチャからの予測ベクトル生成部457の視差ベクトル判定部471と同様の処理部であり、同様の方法で予測ベクトルを生成する。
選択部554は、周辺ブロックからの予測ベクトル生成部552が生成した予測ベクトル、若しくは、異なるピクチャからの予測ベクトル生成部553が生成した予測ベクトルを演算部555に供給する。
演算部555は、可逆復号部302から供給される動き/視差ベクトルの差分値(残差ベクトル)と、予測ベクトルを加算し、カレント領域の動き/視差ベクトルを生成する。演算部555は、その動き/視差ベクトルを予測画像生成部556に供給する。また、演算部555は、その動き/視差ベクトルをベクトル情報蓄積バッファ557に供給し、記憶させる。
予測画像生成部556は、演算部555から供給されたカレント領域の動き/視差ベクトル、可逆復号部302から供給される参照画像インデックス、および、デコードピクチャバッファ309から供給される復号画像画素値を用いて予測画像を生成する。予測画像生成部556は、生成した予測画像画素値を予測画像選択部313に供給する。
[異なるピクチャからの予測ベクトル生成部]
図50は、異なるピクチャからの予測ベクトル生成部553の主な構成例を示すブロック図である。
図50に示されるように、異なるピクチャからの予測ベクトル生成部553は、視差ベクトル判定部571、ビュー間参照ベクトル生成部572、およびビュー内参照ベクトル生成部573を有する。
この視差ベクトル判定部571、ビュー間参照ベクトル生成部572、およびビュー内参照ベクトル生成部573は、それぞれ、異なるピクチャからの予測ベクトル生成部457の視差ベクトル判定部471、ビュー間参照ベクトル生成部472、およびビュー内参照ベクトル生成部473と同様の処理部であり、同様の処理を行う。
つまり、視差ベクトル判定部571は、視差ベクトル判定部471と同様の方法で、参照先のビューの画像のシフト量を算出し、その画像をシフトする。
したがって、異なるピクチャからの予測ベクトル生成部553は、残差ベクトルを正しく復号し、異なるピクチャからの予測ベクトル生成部457が生成する予測ベクトルと同様の、予測精度の高い適切な予測ベクトルを生成することができる。つまり、ベクトル復号部533は、ベクトル予測部433が生成する予測画像と同様の予測画像を生成することができる。したがって、画像復号装置500は、画像符号化装置400が生成した符号化データを正しく復号することができ、符号化効率の向上を実現することができる。
なお、視差ベクトル判定部571によるシフト量の算出方法は、視差ベクトル判定部471と同じである限り、任意である。例えば、周辺ブロックの視差ベクトルの中からいずれか1つを選択し、それをシフト量としてもよい。また、例えば、周辺ブロックの視差ベクトルの平均値や中央値をシフト量としてもよい。
[動き補償処理の流れ]
図51のフローチャートを参照して、動き補償処理の流れの例を説明する。
動き予測・補償処理が開始されると、モード判定部531は、ステップS501において、インターモードを復号し、ステップS502において、インター予測モードであるか否かを判定する。
インター予測モードである場合、ステップS503において、ベクトル復号部533は、参照画像を決定し、ステップS504において、ベクトル復号処理を行い、残差ベクトルを復号し、予測画像を生成する。
また、インター予測モードでない場合、ステップS504において、ベクトル復号部534は、ベクトル復号処理を行い、残差ベクトルを復号し、予測画像を生成する。
[ベクトル復号処理の流れ]
図52のフローチャートを参照して、図51のステップS504においてベクトル復号部533により実行されるベクトル復号処理の流れの例を説明する。
ベクトル復号処理が開始されると、可逆復号部302は、ステップS521において、残差ベクトル(差分ベクトル)を復号する。
ステップS522において、可逆復号部302は、参照画像インデックスを復号する。
ステップS523において、可逆復号部302は、ベクトルインデックスを復号する。
ステップS524において、周辺ブロックからの予測ベクトル生成部552および異なるピクチャからの予測ベクトル生成部553は、符号化済みベクトルから予測ベクトルを生成する。演算部555は、この予測ベクトルを残差ベクトルに加算して、カレント領域の動き/視差ベクトルを生成する。
ステップS525において、予測画像生成部556は、ステップS524において生成された動き/視差ベクトルを用いて予測画像を生成する。
ステップS526において、ベクトル情報蓄積バッファ455は、ベクトル情報を蓄積し、処理を図51に戻す。
[予測ベクトル生成処理の流れ]
次に、図53のフローチャートを参照して、図52のステップS524において実行される予測ベクトル生成処理の流れの例を説明する。
予測ベクトル生成処理が開始されると、選択部554は、ステップS541において、どのブロックを参照するかを判定する。
カレントピクチャの周辺ブロックを参照すると判定された場合、周辺ブロックからの予測ベクトル生成部552は、ステップS542において、周辺ブロックの符号化済みベクトルを予測ベクトルにし、処理を図52に戻す。
また、ステップS541において、異なるピクチャのブロックを参照すると判定された場合、選択部554は、処理をステップS543に進め、どのビューのピクチャを参照するかを判定する。
異なるビューのピクチャを参照すると判定された場合、異なるピクチャからの予測ベクトル生成部553は、ステップS544において、ビュー方向に拡張された符号化済みコロケーテッドブロック(Co-located Block)からビュー方向の予測ベクトルを生成し、処理を図52に戻す。
また、ステップS543において、同じビューのピクチャを参照すると判定された場合、異なるピクチャからの予測ベクトル生成部553は、ステップS545において、符号化済みコロケーテッドブロック(Co-located Block)から時間方向の予測ベクトルを生成し、処理を図52に戻す。
[異なるピクチャからの予測ベクトル生成処理の流れ]
次に、図54のフローチャートを参照して、図53のステップS544において実行される異なるピクチャからの予測ベクトル生成処理の流れの例を説明する。
異なるピクチャからの予測ベクトル生成処理が開始されると、視差ベクトル判定部571は、ステップS561において、周辺ブロックの視差ベクトルからシフト量を決定する。
ステップS562において、ビュー間参照ベクトル生成部572は、シフトされた位置のコロケーテッドブロックを選択する。
ステップS563において、ビュー間参照ベクトル生成部572は、コロケーテッドブロックから予測ベクトルを生成し、処理を図53に戻す。
つまり、図44のフローチャートの場合と同様の流れで行われる。
[シフト量決定処理の流れ]
次に、図55のフローチャートを参照して、図54のステップS561において実行されるシフト量決定処理の流れの例を説明する。
ステップS581において、視差ベクトル判定部571は、周辺ブロックの視差ベクトルで、Y方向ベクトルの値が非ゼロのブロックが複数存在するか否かを判定する。
ステップS581において、Y方向ベクトルの値が非ゼロのブロックが複数存在しないと判定した場合、視差ベクトル判定部571は、処理をステップS582に進め、対象のX方向の視差ベクトルをシフト量とし、処理を図54に戻す。
また、ステップS581において、Y方向ベクトルの値が非ゼロのブロックが複数存在すると判定した場合、視差ベクトル判定部571は、処理をステップS583に進め、対象のX方向の視差ベクトルの平均値をシフト量とし、処理を図54に戻す。
つまり、図45のフローチャートの場合と同様の流れで行われる。周辺ブロックについても同様である。
以上のように各処理を実行することにより、動き補償部512は、予測精度の高い、適切な予測ベクトルを作ることができる。これにより、画像復号装置500は、符号化効率の向上を実現させることができる。
なお、上述したように、シフト量を計算するための周辺ブロックや、シフト量演算方法等の情報を、画像符号化装置400から画像復号装置500に伝送するようにしてもよい。
<5.第5の実施の形態>
[予測ベクトル]
なお、第3および第4の実施の形態で説明したように、予測ベクトル生成のために、ビュー方向のブロックを選択するときに、シフトした位置のブロックを選択することができる。
この予測ベクトルの候補を、カレント領域と同じビューの異なる時刻のピクチャに属する同位置のブロックであるコロケーテッドブロックのベクトル(コロケーテッドブロック)、若しくは、グローバル視差ベクトルを用いて生成するようにしてもよい。
例えば、図56に示されるように、3D画像の左右画像のいずれか一方(例えば左眼用画像)をベースビュー(base view)とし、他方(例えば右眼用画像)をディペンデントビュー(dependent view)とする。
そのディペンデントビューのカレントピクチャ601のカレント領域611のベクトル(符号化ベクトル(Coding vector))621を予測する際に、例えば、カレント領域と同じビューの異なる時刻のピクチャであるコロケーテッドピクチャ602の、カレント領域と同じ位置にあるコロケーテッドブロック612の動きベクトル(コロケーテッドベクトル)622、若しくは、グローバル視差ベクトル(図示せず)を用いて、予測ベクトル求めるようにしてもよい。
例えば、カレントピクチャ601と同じ時刻のベースビューのピクチャ603のカレント領域11と同じ位置から、コロケーテッドブロック622若しくはグローバル視差ベクトル分(ベクトル631)シフトした位置のブロック613のベクトル623を、符号化ベクトル(MV)621の予測ベクトル(PMV)としてもよい。また、コロケーテッドブロック622若しくはグローバル視差ベクトルを、符号化ベクトル(MV)621の予測ベクトルとしてもよい。
この手順を符号化側の装置と復号側の装置とで共通化することにより、符号化側と復号側で、同様の予測を行うことができる。
なお、コロケーテッドブロックおよびグローバル視差ベクトルのいずれを用いるかを示す情報や、コロケーテッドブロック若しくはグローバル視差ベクトルに関する情報等を明示的に指定し、その情報を、符号化側から復号側に伝送するようにしてもよい。また、シフト量の演算方法に関する情報も符号化側から復号側に伝送するようにしてもよい。
以上のようにすることにより、画像符号化装置においても、画像復号装置においても、ビュー間で同じように位置合わせしたブロックから予測ベクトルを生成することができる。したがって、予測画像の予測精度を向上させることができ、符号化効率を向上させることができる。
[グローバル視差ベクトル]
次に、グローバル視差ベクトルについて説明する。グローバル視差ベクトルは、グローバルな(例えば、ピクチャ、スライス、LCU、若しくはCU等の、所定の単位毎の)代表的な視差ベクトルである。例えば、ピクチャ毎に生成されるグローバル視差ベクトルは、ビュー間の視差量を示す。グローバル視差ベクトルの生成方法は任意である。
なお、グローバル視差ベクトルの詳細な例は、Junghak Nam, Hyomin Choi, Sunmi Yoo, Woong Lim, Donggyu Sim, "3D-HEVC-CE3 result on KWU's advanced motion and disparity prediction method based on global disparity", INTERNATIONAL ORGANISATION FOR STANDARDISATION ORGANISATION INTERNATIONALE DE NORMALISATION ISO/IEC JTC1/SC29/WG11 CODING OF MOVING PICTURES AND AUDIO, ISO/IEC JTC1/SC29/WG11 MPEG2011/M23620, February 2012, San Jose, CAに記載されている。
図57は、視差と奥行きについて説明する図である。
図57に示すように、被写体Mのカラー画像が、位置C1に配置されたカメラc1と位置C2に配置されたカメラc2により撮影される場合、被写体Mの、カメラc1(カメラc2)からの奥行方向の距離である奥行きZは、以下の式(1)で定義される。
Z = (L/d)×f ・・・(1)
なお、Lは、位置C1と位置C2の水平方向の距離(以下、カメラ間距離という)である。また、dは、カメラc1で撮影されたカラー画像上の被写体Mの位置の、カラー画像の中心からの水平方向の距離u1から、カメラc2で撮影されたカラー画像上の被写体Mの位置の、カラー画像の中心からの水平方向の距離u2を減算した値、即ち視差(disparity)である。さらに、fは、カメラc1の焦点距離であり、式(1)では、カメラc1とカメラc2の焦点距離は同一であるものとしている。
つまり、視差dは、以下の式(2)のように定義される。
式(1)や式(2)に示されるように、視差dと奥行きZは、一意に変換可能である。従って、本明細書では、カメラc1とカメラc2により撮影された2視点のカラー画像の視差dを表す画像と奥行きZを表す画像とを総称して、デプス画像(視差画像)とする。
なお、デプス画像(視差画像)は、視差dまたは奥行きZを表す画像であればよく、デプス画像(視差画像)の画素値としては、視差dまたは奥行きZそのものではなく、視差dを正規化した値、奥行きZの逆数1/Zを正規化した値等を採用することができる。
奥行きZは、以下の式(3)により求めることができる。
なお、式(3)において、Zfarは、奥行きZの最大値であり、Znearは、奥行きZの最小値である。最大値Zfarと最小値Znearは、1画面単位で設定されてもよいし、複数画面単位で設定されてもよい。
このように、本明細書では、視差dと奥行きZとは一意に変換可能であることを考慮して、視差dを正規化した値Iを画素値とする画像と、奥行きZの逆数1/Zを正規化した値yを画素値とする画像とを総称して、デプス画像(視差画像)とする。ここでは、デプス画像(視差画像)のカラーフォーマットは、YUV420又はYUV400であるものとするが、他のカラーフォーマットにすることも可能である。
なお、デプス画像(視差画像)の画素値としてではなく、値I又は値yの情報自体に着目する場合には、値I又は値yを、デプス情報(視差情報)とする。更に、値I又は値yをマッピングしたものをデプスマップ(視差マップ)とする。
[予測ベクトルの生成]
予測ベクトルは、例えば図58に示される表のように、符号化ベクトルおよびコロケーテッドベクトルの両方の特性に応じた方法で生成される。
例えば、図58の表の下から6段目に示されるように、符号化ベクトルおよびコロケーテッドベクトルの両方が動きベクトル(Motion vector)の場合、コロケーテッドベクトルが予測ベクトル候補とされる。
また、例えば、図58の表の下から2段目に示されるように、符号化ベクトルおよびコロケーテッドベクトルの両方が視差ベクトル(Inter-view vector)の場合、コロケーテッドベクトルが予測ベクトル候補とされる。
これらに対して、例えば、図58の表の下から5段目に示されるように、符号化ベクトルが動きベクトル(Motion vector)であり、かつ、コロケーテッドベクトルが視差ベクトル(Inter-view vector)である場合、コロケーテッドベクトル分だけシフトしたブロックのベースビューの動きベクトルが予測ベクトル候補とされる。
また、例えば、図58の表の下から4段目に示されるように、符号化ベクトルが動きベクトル(Motion vector)であり、かつ、コロケーテッドブロックがイントラモードである場合、グローバル視差ベクトル分だけシフトしたブロックのベースビューの動きベクトルが予測ベクトル候補とされる。
さらに、例えば、図58の表の下から3段目に示されるように、符号化ベクトルが視差ベクトル(Inter-view vector)であり、かつ、コロケーテッドベクトルが動きベクトル(Motion vector)である場合、グローバル視差ベクトルが予測ベクトル候補とされる。
また、例えば、図58の表の下から1段目に示されるように、符号化ベクトルが視差ベクトル(Inter-view vector)であり、かつ、コロケーテッドブロックがイントラモードである場合、グローバル視差ベクトルが予測ベクトル候補とされる。
このように予測ベクトルの候補の生成方法を増やすことにより、予測ベクトルの予測精度を向上させ、符号化効率を向上させることができる。
[画像符号化装置]
この場合の画像符号化装置の構成例は、図35乃至図38に示される画像符号化装置400の場合と同様であるので、その説明を省略する。
[処理の流れ]
また、この場合の、動き予測・補償処理は、図39のフローチャートを参照して説明した場合と同様に行われる。また、この場合の、ベクトル予測処理は、図40のフローチャートを参照して説明した場合と同様に行われる。したがって、これらの処理の説明は省略する。
図59のフローチャートを参照して、この場合の予測ベクトル生成処理の流れの例を説明する。
予測ベクトル生成処理が開始されると、選択部458は、ステップS601において、どのブロックを参照するかを判定する。
周辺ブロックを参照すると判定された場合、処理はステップS602に進む。ステップS602において、周辺ブロックからの予測ベクトル生成部456は、周辺ブロックの符号化済みベクトルを予測ベクトルにする。ステップS602の処理が終了すると、予測ベクトル生成処理が終了され、処理は、図40に戻る。
また、ステップS601において、参照先として異なるピクチャのブロックが選択された場合、処理は、ステップS603に進む。ステップS603において、異なるピクチャからの予測ベクトル生成部457は、異なる時刻・ビューのブロックの符号化済みベクトルを予測ベクトルにする。ステップS603の処理が終了すると、予測ベクトル生成処理が終了され、処理は、図40に戻る。
次に、図60および図61のフローチャートを参照して、図59のステップS603において実行される、異なるピクチャからの予測ベクトル生成処理の流れの例を説明する。
異なるピクチャからの予測ベクトル生成処理が開始されると、視差ベクトル判定部471は、ステップS621において、符号化ベクトルが動きベクトルであるか否かを判定する。動きベクトルであると判定された場合、処理は、ステップS622に進む。
ステップS622において、視差ベクトル判定部471は、コロケーテッドブロックのモードが何かを判定する。コロケーテッドブロックのモードが動きベクトルであると判定された場合、処理は、ステップS623に進む。
ステップS623において、ビュー内参照ベクトル生成部473は、コロケーテッドベクトルを予測ベクトルにセットする。ステップS623の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
また、ステップS622において、コロケーテッドブロックのモードがイントラ予測であると判定された場合、処理は、ステップS624に進む。
ステップS624において、ビュー間参照ベクトル生成部472は、グローバル視差ベクトルを求め、そのグローバル視差ベクトル分だけシフトしたベースビューのブロックのベクトルを予測ベクトルにセットする。ステップS624の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
また、ステップS622において、コロケーテッドブロックのモードが視差ベクトルであると判定された場合、処理は、ステップS625に進む。
ステップS625において、ビュー間参照ベクトル生成部472は、コロケーテッドベクトル分だけシフトしたベースビューのブロックのベクトルを予測ベクトルにセットする。ステップS625の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
また、ステップS621において、符号化ベクトルが視差ベクトルであると判定した場合、処理は、図61に進む。
図61のステップS631において、視差ベクトル判定部471は、コロケーテッドブロックのモードが何かを判定する。コロケーテッドブロックのモードが視差ベクトルであると判定された場合、処理は、ステップS632に進む。
ステップS632において、ビュー内参照ベクトル生成部473は、コロケーテッドベクトルを予測ベクトルにセットする。ステップS632の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
また、ステップS631において、コロケーテッドブロックのモードが動きベクトルであると判定された場合、処理は、ステップS634に進む。ステップS634において、ビュー間参照ベクトル生成部472は、グローバル視差ベクトルを予測ベクトルにセットする。ステップS634の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
さらに、ステップS631において、コロケーテッドブロックのモードがイントラ予測であると判定された場合、処理は、ステップS635に進む。ステップS635において、ビュー間参照ベクトル生成部472は、グローバル視差ベクトルを予測ベクトルにセットする。ステップS635の処理が終了すると、異なるピクチャからの予測ベクトル生成処理が終了し、処理は、図59に戻る。
以上のように各処理を実行することにより、この場合の画像符号化装置は、コロケーテッドブロックやグローバル視差ベクトルを用いて予測ベクトルを生成することができる。これにより、画像符号化装置は、予測ベクトルの予測精度を向上させることができ、符号化効率を向上させることができる。
[画像復号装置]
次に、この場合の画像符号化装置に対応する画像復号装置について説明する。この場合の画像復号装置の構成例は、画像符号化装置の場合と同様に、図45乃至図48に示される画像復号装置500の場合と同様であるので、その説明を省略する。
[処理の流れ]
次に、この場合の、画像復号装置により実行される各種処理の流れについて説明する。この場合も、画像復号装置においては、画像符号化装置と基本的に同様の処理が行われる。つまり、動き補償処理は、図49のフローチャートを参照して説明した場合と同様に実行される。また、ベクトル復号処理は、図50のフローチャートを参照して説明した場合と同様に実行される。
なお、予測ベクトル生成処理は、図59のフローチャートを参照して説明した場合、つまり、画像符号化装置が実行する場合と同様に実行される。
ただし、この場合、ステップS601の処理は選択部551が行う。また、ステップS602においては、周辺ブロックからの予測ベクトル生成部552が、周辺ブロックの復号済みベクトルを予測ベクトルにする。さらに、ステップS603においては、異なるピクチャからの予測ベクトル生成部553が、異なる時刻・ビューのブロックの復号済みベクトルを予測ベクトルにする。
また、その異なるピクチャからの予測ベクトル生成処理は、図60および図61のフローチャートを参照して説明した場合、すなわち、画像符号化装置が実行する場合と同様に実行される。
ただし、この場合、ステップS621、ステップS622、および、ステップS631の各処理は、視差ベクトル判定部571が行い、ステップS623およびステップS632の各処理は、ビュー内参照ベクトル生成部573が行い、ステップS624、ステップS625、ステップS634、およびステップS635の各処理は、ビュー間参照ベクトル生成部572により実行される。
このように各処理を実行することにより、この場合の画像復号装置は、画像符号化装置と同様に、コロケーテッドブロックやグローバル視差ベクトルを用いて予測ベクトルを生成することができる。これにより、画像復号装置は、予測ベクトルの予測精度を向上させることができ、符号化効率を向上させることができる。
<6.第6の実施の形態>
[参照画像のタイプ]
例えば、HEVCの場合、参照画像には、短時間参照ピクチャと長時間参照ピクチャの2つのタイプがある。短時間参照ピクチャは、符号化ピクチャと時間的に近いピクチャであるため、予測ベクトルに対して、時間的な距離に基づくスケーリング処理が行われる。これに対して、長時間参照ピクチャは、符号化ピクチャと時間的に遠いピクチャであるため、予測ベクトルに対するスケーリングは意味をなさないため、行われない。
画像の動き等に応じてこれらの参照ピクチャを使い分けることで、符号量をより低減させることができる。
符号化ベクトルと予測ベクトルの参照ピクチャのタイプ(短時間参照ピクチャまたは長時間参照ピクチャ)が異なっていても、その予測ベクトルは使用可(Available)となる。
符号化ベクトルと予測ベクトルの参照ピクチャのタイプが異なる場合、それらのベクトルの相関は低いことが予想される。したがって、ベクトルの候補リストに入れてしまうと符号化効率の低下が起こる恐れがあった。例えば、相関がより高いベクトルが、候補リストの後ろの方に追いやられてしまい、ベクトルを指定するためのインデックスの符号量が増加する恐れがあった。また、例えば、相関がより高いベクトルが、候補リストの後ろの方に追いやられてしまい、候補リストから除外されてしまい、指定できなくなる恐れがあった。
そこで、符号化ベクトルと予測ベクトルの参照ピクチャのタイプ(短時間参照ピクチャまたは長時間参照ピクチャ)が異なるときに、その予測ベクトルを使用不可(Not available)にするようにする。
短時間参照ピクチャを参照するベクトルと長時間参照ピクチャを参照するベクトルの特性は異なるため相関が低いと考えられる。したがって、この場合に候補ベクトルから除外することで、符号化効率を改善することができる。
例えば、図62は、背景静止アプリの参照画像の様子の例を説明する図である。静止画像の背景画像の前方に動物体が存在するような動画像(背景静止のアプリ)の場合、静止領域である背景(特にオクルージョン領域)は、長時間ピクチャを参照するので、動きベクトルが0となる傾向がある。これに対して、前方の動物体は短時間参照ピクチャを参照するので、動きベクトルが発生する。このように参照ピクチャのタイプが異なると、動きベクトルの相関が低い(図64のA)。そのため、上述したように、符号化ベクトルと予測ベクトルの参照ピクチャのタイプが異なるときに、候補ベクトルから除外することで、符号化効率を改善することができる。
また、例えば、図63は、ステレオアプリの参照画像の様子の例を説明する図である。立体視のために左目用の画像(左目画像)と右目用の画像(右目画像)が用意されているような動画像(ステレオアプリ)の場合、Dependent View(ここでは右目画像として説明する)を符号化するときに、Base View(ここでは左目画像として説明する)を長時間参照ピクチャとして指定し、Dependent Viewの符号化済みピクチャを短時間参照ピクチャとして指定する。
Dependent Viewを参照する場合、参照先と参照元とでフレームIDが異なるのでスケーリング可能であるが、Base Viewを参照する場合、参照先と参照元とでフレームIDが一致してしまう。そのため、スケーリングの際に分母が0になる恐れがあり、スケーリングが困難になる。そのため、HEVC等では、Base Viewは、スケーリングを行わない長時間参照ピクチャとして指定するようになされている。
そのため、ステレオアプリの場合、長時間参照ピクチャを参照するベクトルは視差ベクトルで、短時間参照ピクチャを参照するベクトルは動きベクトルとなる。したがって、ピクチャタイプ間で、動き(視差)ベクトルの相関が低い(図64のB)。そのため、上述したように、符号化ベクトルと予測ベクトルの参照ピクチャのタイプが異なるときに、候補ベクトルから除外することで、符号化効率を改善することができる。
なお、以下においては、処理対象のブロック(CU、PU等)を符号化ブロック(若しくはカレント)ブロックとも称する。また、符号化ブロックの時間的に周辺のブロック、すなわち、符号化ブロックが存在するピクチャ(カレントピクチャ)の時間的に周辺のピクチャのコロケーテッドブロックを、時間相関ブロックとも称する。さらに、符号化ブロックの空間的に周辺のブロック、すなわち、カレントピクチャにおいて符号化ブロックに隣接するブロック若しくは近傍に位置するブロックを、周辺ブロックとも称する。
図65に周辺ブロックの例を示す。位置A0およびA1のブロックは、符号化ブロック(カレントブロック)の周辺ブロックであり、左側位置のブロックとも称する。また、位置B0、B1、およびB2のブロックは、符号化ブロック(カレントブロック)の周辺ブロックであり、上側位置のブロックとも称する。
[動き(視差)ベクトルの取り扱いのまとめ]
図66は、時間相関ブロックと周辺ブロックの取り扱いの例を説明する図である。ベクトルの予測において、時間相関ブロックの動き(視差)ベクトルを候補ベクトルに含めるか否か、並びに、スケーリングを行うか否かは、図66のAに示される表のように決定する。
つまり、例えば、符号化ブロックの参照画像と時間相関ブロックの参照画像とのタイプが一致する場合、すなわち、ともに短時間参照画像であるか、若しくは、ともに長時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルを候補にし、両者のタイプが一致しない場合、候補から除外するようにする。さらに、符号化ブロックの参照画像と時間相関ブロックの参照画像とが、ともに短時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルのスケーリングを行うようにし、両者がともに長時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
また、ベクトルの予測において、周辺ブロックの動き(視差)ベクトルを候補ベクトルに含めるか否か、並びに、スケーリングを行うか否かは、図66のBに示される表のように決定する。つまり、時間相関ブロックの場合と同様である。
つまり、例えば、符号化ブロックの参照画像と周辺ブロックの参照画像とのタイプが一致する場合、すなわち、ともに短時間参照画像であるか、若しくは、ともに長時間参照画像である場合、周辺ブロックの動き(視差)ベクトルを候補にし、両者のタイプが一致しない場合、候補から除外するようにする。さらに、符号化ブロックの参照画像と周辺ブロックの参照画像とが、ともに短時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行うようにし、両者がともに長時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
[符号化時の処理の流れ]
このような制御を実現するための符号化時の処理の流れの例について、以下に説明する。なお、このような制御は、第3の実施の形態において説明した画像符号化装置400(図37)により実現することができる。
画像符号化装置400による符号化処理は、図20のフローチャートを参照して説明した場合(第1の実施の形態)と同様に行われる。
図20のステップS104において実行されるインター動き予測処理に相当する処理として、動き予測・補償部415が実行するPUの動き(視差)ベクトルと参照インデックス生成処理の流れの例を、図67のフローチャートを参照して説明する。
ステップS701において、インターモード生成部431(図38)は、インターモードを生成する。ステップS702において、インターモード生成部431は、そのモードがマージ(スキップ)モードであるか否かを判定する。
マージ(スキップ)モードであると判定された場合、処理は、ステップS703に進む。ステップS703において、参照インデックス決定部432およびベクトル予測部434は、マージ(スキップ)モードの処理を行い、動き(視差)ベクトルと参照インデックスを生成する。ステップS703の処理が終了すると、処理は、ステップS707に進む。
また、ステップS702において、マージ(スキップ)モードでないと判定された場合、処理は、ステップS704に進む。ステップS704において、ベクトル予測部433は、残差動き(視差)ベクトルと参照インデックスを取得する。ステップS705において、ベクトル予測部433は、AMVPモードの処理を行い、予測動き(視差)ベクトルを生成する。ステップS706において、モード判定部435は、残差動き(視差)ベクトルと予測動き(視差)ベクトルとを加算する。
ステップS707において、モード判定部435は、全てのモードを処理するまで処理をステップS701に戻し、全てのモードが揃ったら、最適なモードを判定する。
ステップS708において、可逆符号化部106は、選ばれた情報を符号化する。ステップS708の処理が終了すると、処理は、図20に戻る。
次に、図67のステップS703において実行されるマージ(スキップ)モード処理の流れの例を、図68のフローチャートを参照して説明する。
処理が開始されると、ステップS711において、参照インデックス決定部432は、空間的に周辺のブロックから候補となる動き(視差)ベクトルと参照インデックスを作成する。
ステップS712において、参照インデックス決定部432は、時間相関ブロック用の参照インデックスを生成する。
ステップS713において、ベクトル予測部434は、時間相関ブロックから候補となる動き(視差)ベクトルを生成する。
ステップS714において、ベクトル予測部434は、動き(視差)ベクトルと参照インデックスの候補リストを生成する。なお、このリストの要素数をYとする。
ステップS715において、ベクトル予測部434は、候補リストの最大数Xを設定する。
ステップS716において、ベクトル予測部434は、リストの要素数Yが候補リストの最大数Xより小さいか否か(Y<Xであるか否か)を判定する。リストの要素数Yが候補リストの最大数Xより小さい(Y<Xである)と判定された場合、処理は、ステップS717に進む。
ステップS717において、ベクトル予測部434は、候補リストの各要素を組み合わせて、新しく動き(視差)ベクトルと参照インデックスを生成する。
ステップS718において、ベクトル予測部434は、候補リストを更新する。この時のリストの要素数をY'とする。
ステップS719において、ベクトル予測部434は、リストの要素数Y'が候補リストの最大数Xより小さいか否か(Y'<Xであるか否か)を判定する。リストの要素数Y'が候補リストの最大数Xより小さい(Y'<Xである)と判定された場合、処理は、ステップS720に進む。
ステップS720において、ベクトル予測部434は、ゼロ動き(視差)ベクトルとゼロ参照インデックスを新たに生成する。ステップS720の処理が終了すると、処理はステップS721に進む。
また、ステップS716において、リストの要素数Yが候補リストの最大数X以上である(Y<Xでない)と判定された場合、処理は、ステップS721に進む。また、ステップS719において、リストの要素数Y'が候補リストの最大数X以上である(Y'<Xでない)と判定された場合、処理は、ステップS721に進む。
ステップS721において、ベクトル予測部434は、候補リストの要素インデックスを生成する。
ステップS722において、ベクトル予測部434は、要素インデックスが指し示す動き(視差)ベクトルと参照インデックスを取得する。ステップS722の処理が終了すると、処理は、図67に戻る。
次に、図68のステップS713において実行される時間相関ブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図69のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部434は、ステップS731において、時間相関ピクチャを指定するインデックスを生成する。
ステップS732において、ベクトル予測部434は、時間相関ピクチャを決定する。
ステップS733において、ベクトル予測部434は、時間相関ピクチャ内に存在する符号化PU(符号化ブロック)の右下位置のブロックを選択する。
ステップS734において、ベクトル予測部434は、右下位置のブロックがイントラモード若しくは使用不可であるか否かを判定する。右下位置のブロックがイントラモード若しくは使用不可であると判定された場合、処理は、ステップS735に進む。
ステップS735において、ベクトル予測部434は、時間相関ピクチャ内に存在する符号化PUの中心位置のブロックを選択する。
ステップS736において、ベクトル予測部434は、その中心位置のブロックがイントラモード若しくは使用不可であるか否かを判定する。中心位置のブロックがイントラモード若しくは使用不可であると判定された場合、処理は、ステップS737に進む。
ステップS737において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルを候補から除外する。ステップS737の処理が終了すると、処理は、図68に戻る。
また、ステップS734において、右下位置のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS738に進む。同様に、中心位置のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS738に進む。
ステップS738において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルと参照インデックスを決定する。
ステップS739において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無を判定する。
ステップS740において、ベクトル予測部434は、ステップS739の判定結果に基づいて、時間相関ブロックの動き(視差)ベクトルを候補から除外するか否かを判定する。
候補から除外すると判定された場合、処理は、ステップS737に戻る。また、ステップS740において、候補から除外しない(候補に含める)と判定された場合、処理は、ステップS741に進む。
ステップS741において、ベクトル予測部434は、ステップS739の判定結果に基づいて、時間相関ブロックの動き(視差)ベクトルに対してスケーリングが必要であるか否かを判定する。
スケーリングが必要であると判定された場合、処理は、ステップS742に進む。ステップS742において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルに対して、スケーリング処理を行う。ステップS742の処理が終了すると、処理は、図68に戻る。
また、ステップS741において、スケーリングが必要でないと判定された場合、処理は、図68に戻る。
次に、図69のステップS739において実行される、時間相関ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無の判定処理の流れの例を、図70のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部434は、ステップS751において、符号化ブロックの参照画像が短時間参照画像と長時間参照画像のいずれであるかを判別する。
ステップS752において、ベクトル予測部434は、時間相関ブロックの参照画像が短時間参照画像と長時間参照画像のいずれであるかを判別する。
ステップS753において、ベクトル予測部434は、ステップS751の判別結果に基づいて、符号化ブロックの参照画像が長時間参照画像であるか否かを判定する。
符号化ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS754に進む。ステップS754において、ベクトル予測部434は、さらに、ステップS752の判別結果に基づいて、時間相関ブロックの参照画像が長時間参照画像であるか否かを判定する。
時間相関ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS755に進む。この場合、符号化ブロックと時間相関ブロックの動き(視差)ベクトルは、ともに長時間参照画像である。したがって、ステップS755において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルを候補に含め、スケーリングが不要であると設定する。ステップS755の処理が終了すると、処理は、図69に戻る。
また、図70のステップS754において、時間相関ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS756に進む。この場合、符号化ブロックと時間相関ブロックとで動き(視差)ベクトルのタイプが一致しない。したがって、ステップS756において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルを候補から除外すると設定する。ステップS756の処理が終了すると、処理は、図69に戻る。
さらに、図70のステップS753において、符号化ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS757に進む。ステップS757において、ベクトル予測部434は、さらに、ステップS752の判別結果に基づいて、時間相関ブロックの参照画像が長時間参照画像であるか否かを判定する。
時間相関ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS756に戻る。つまり、この場合、符号化ブロックと時間相関ブロックとで動き(視差)ベクトルのタイプが一致しないので、時間相関ブロックの動き(視差)ベクトルは候補から除外されるように設定される。
また、ステップS757において、時間相関ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS758に進む。この場合、符号化ブロックと時間相関ブロックの動き(視差)ベクトルは、ともに短時間参照画像である。したがって、ステップS758において、ベクトル予測部434は、時間相関ブロックの動き(視差)ベクトルを候補に含め、さらにスケーリングが必要であると設定する。ステップS758の処理が終了すると、処理は、図69に戻る。
次に、図67のステップS705において実行されるAMVPモード処理の流れの例を、図71のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部433(図38)は、ステップS761において、空間的に周辺のブロックから候補となる動き(視差)ベクトルを生成する。
ステップS762において、ベクトル予測部433は、動き(視差)ベクトルの候補リストを生成する。この候補リストの要素数をAとする。
ステップS763において、ベクトル予測部433は、候補リストの要素数Aが2より小さいか否か(A<2であるか否か)を判定する。
候補リストの要素数Aが2より小さい(A<2である)と判定された場合、処理は、ステップS764に進む。ステップS764において、ベクトル予測部433は、時間相関ブロックから候補となる動き(視差)ベクトルを生成する。この処理は、図69のフローチャートを参照して説明した場合と同様であるので、その説明は省略する。
ステップS765において、ベクトル予測部433は、動き(視差)ベクトルと参照インデックスの候補リストを生成する。この候補リストの要素数をA'とする。
ステップS766において、ベクトル予測部433は、候補リストの要素数A'が2より小さいか否か(A'<2であるか否か)を判定する。
候補リストの要素数A'が2より小さい(A'<2である)と判定された場合、処理は、ステップS767に進む。ステップS767において、ベクトル予測部433は、ゼロ動き(視差)ベクトルとゼロ参照インデックスを新たに生成する。ステップS767の処理が終了すると、処理は、ステップS768に進む。
また、ステップS763において、候補リストの要素数Aが2以上である(A<2でない)と判定された場合、処理は、ステップS768に進む。さらに、ステップS766において、候補リストの要素数A'が2以上である(A<2でない)と判定された場合、処理は、ステップS768に進む。
ステップS768において、ベクトル予測部433は、候補リストの要素インデックス(フラグ)を生成する。
ステップS769において、ベクトル予測部433は、要素インデックスが指し示す動き(視差)ベクトルを取得する。ステップS769の処理が終了すると、処理は、図67に戻る。
次に、図71のステップS761において実行される、空間的に周辺のブロックから候補となる動き(視差)ベクトルを生成する処理の流れの例を、図72のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部433は、ステップS771において、左側位置のブロックから候補となる動き(視差)ベクトルを生成する。
ステップS772において、ベクトル予測部433は、上側位置のブロックから候補となる動き(視差)ベクトルを生成する。
ステップS722の処理が終了すると、処理は、図71に戻る。
次に、図72のステップS771において実行される、左側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図73および図74のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部433は、ステップS781において、位置A0のブロックを選択する。
ステップS782において、ベクトル予測部433は、位置A0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置A0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS783に進む。ステップS783において、ベクトル予測部433は、位置A0のブロックが符号化ブロックと同じ参照画像を参照しているか否かを判定する。
位置A0のブロックが符号化ブロックと同じ参照画像を参照していると判定された場合、処理は、ステップS784に進む。ステップS784において、ベクトル予測部433は、位置A0のブロックの動き(視差)ベクトルを候補にする。ステップS784の処理が終了すると、処理は、図72に戻る。
また、図73のステップS782において、位置A0のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS785に進む。また、ステップS783において、位置A0のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、ステップS785に進む。
ステップS785において、ベクトル予測部433は、位置A1のブロックを選択する。
ステップS786において、ベクトル予測部433は、位置A1のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置A1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS787に進む。ステップS787において、ベクトル予測部433は、位置A1のブロックが符号化ブロックと同じ参照画像を参照しているか否かを判定する。
位置A1のブロックが符号化ブロックと同じ参照画像を参照していると判定された場合、処理は、ステップS788に進む。ステップS788において、ベクトル予測部433は、位置A1のブロックの動き(視差)ベクトルを候補にする。ステップS788の処理が終了すると、処理は、図72に戻る。
また、図73のステップS786において、位置A1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図74のステップS791に進む。また、図73のステップS787において、位置A1のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、図74のステップS791に進む。
図74のステップS791において、ベクトル予測部433は、位置A0のブロックを選択する。
ステップS792において、ベクトル予測部433は、位置A0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置A0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS793に進む。ステップS793において、ベクトル予測部433は、位置A0のブロックの動き(視差)ベクトルを候補にする。ステップS793の処理が終了すると、処理は、ステップS797に進む。
また、図74のステップS792において、位置A0のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS794に進む。
ステップS794において、ベクトル予測部433は、位置A1のブロックを選択する。
ステップS795において、ベクトル予測部433は、位置A1のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置A0のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図72に戻る。
また、図74のステップS795において、位置A1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS796に進む。ステップS796において、ベクトル予測部433は、位置A1のブロックの動き(視差)ベクトルを候補にする。ステップS796の処理が終了すると、処理は、ステップS797に進む。
ステップS797において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無を判定する。
ステップS798において、ベクトル予測部433は、ステップS797の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルを候補から除外するか否かを判定する。
候補から除外すると判定された場合、処理は、ステップS799に進む。ステップS799において、ベクトル予測部433は、左側位置ブロックの動き(視差)ベクトルを候補から除外する。ステップS799の処理が終了すると、処理は、図72に戻る。
また、図74のステップS798において、候補から除外しない(候補に含める)と判定された場合、処理は、ステップS800に進む。
ステップS800において、ベクトル予測部433は、ステップS797の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルに対してスケーリングが必要であるか否かを判定する。
スケーリングが必要であると判定された場合、処理は、ステップS801に進む。ステップS801において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルに対して、スケーリング処理を行う。ステップS801の処理が終了すると、処理は、図72に戻る。
また、図74のステップS800において、スケーリングが必要でないと判定された場合、処理は、図72に戻る。
次に、図74のステップS797において実行される、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無の判定処理の流れの例を、図75のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部433は、ステップS811において、符号化ブロックの参照画像が短時間参照画像と長時間参照画像のいずれであるかを判別する。
ステップS812において、ベクトル予測部433は、周辺ブロックの参照画像が短時間参照画像と長時間参照画像のいずれであるかを判別する。
ステップS813において、ベクトル予測部433は、ステップS811の判別結果に基づいて、符号化ブロックの参照画像が長時間参照画像であるか否かを判定する。
符号化ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS814に進む。ステップS814において、ベクトル予測部433は、さらに、ステップS812の判別結果に基づいて、周辺ブロックの参照画像が長時間参照画像であるか否かを判定する。
周辺ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS815に進む。この場合、符号化ブロックと周辺ブロックの動き(視差)ベクトルは、ともに長時間参照画像である。したがって、ステップS815において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルを候補に含め、スケーリングが不要であると設定する。ステップS815の処理が終了すると、処理は、図74に戻る。
また、図75のステップS814において、周辺ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS816に進む。この場合、符号化ブロックと周辺ブロックとで動き(視差)ベクトルのタイプが一致しない。したがって、ステップS816において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルを候補から除外すると設定する。ステップS816の処理が終了すると、処理は、図74に戻る。
さらに、図75のステップS813において、符号化ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS817に進む。ステップS817において、ベクトル予測部433は、さらに、ステップS812の判別結果に基づいて、周辺ブロックの参照画像が長時間参照画像であるか否かを判定する。
周辺ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS816に戻る。つまり、この場合、符号化ブロックと周辺ブロックとで動き(視差)ベクトルのタイプが一致しないので、周辺ブロックの動き(視差)ベクトルは候補から除外されるように設定される。
また、ステップS817において、周辺ブロックの参照画像が短時間参照画像であると判定された場合、処理は、ステップS818に進む。この場合、符号化ブロックと周辺ブロックの動き(視差)ベクトルは、ともに短時間参照画像である。したがって、ステップS818において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルを候補に含め、さらにスケーリングが必要であると設定する。ステップS818の処理が終了すると、処理は、図74に戻る。
次に、図72のステップS772において実行される、上側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図76および図77のフローチャートを参照して説明する。
処理が開始されると、ベクトル予測部433は、ステップS821において、位置B0のブロックを選択する。
ステップS822において、ベクトル予測部433は、位置B0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS823に進む。ステップS823において、ベクトル予測部433は、位置B0のブロックが符号化ブロックと同じ参照画像を参照しているか否かを判定する。
位置B0のブロックが符号化ブロックと同じ参照画像を参照していると判定された場合、処理は、ステップS824に進む。ステップS824において、ベクトル予測部433は、位置B0のブロックの動き(視差)ベクトルを候補にする。ステップS824の処理が終了すると、処理は、図72に戻る。
また、図76のステップS822において、位置B0のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS825に進む。また、ステップS823において、位置B0のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、ステップS825に進む。
ステップS825において、ベクトル予測部433は、位置B1のブロックを選択する。
ステップS826において、ベクトル予測部433は、位置B1のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS827に進む。ステップS827において、ベクトル予測部433は、位置B1のブロックが符号化ブロックと同じ参照画像を参照しているか否かを判定する。
位置B1のブロックが符号化ブロックと同じ参照画像を参照していると判定された場合、処理は、ステップS828に進む。ステップS828において、ベクトル予測部433は、位置B1のブロックの動き(視差)ベクトルを候補にする。ステップS828の処理が終了すると、処理は、図72に戻る。
また、図76のステップS826において、位置B1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS829に進む。また、ステップS827において、位置B1のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、ステップS829に進む。
ステップS829において、ベクトル予測部433は、位置B2のブロックを選択する。
ステップS830において、ベクトル予測部433は、位置B2のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B2のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS831に進む。ステップS831において、ベクトル予測部433は、位置B2のブロックが符号化ブロックと同じ参照画像を参照しているか否かを判定する。
位置B2のブロックが符号化ブロックと同じ参照画像を参照していると判定された場合、処理は、ステップS832に進む。ステップS832において、ベクトル予測部433は、位置B2のブロックの動き(視差)ベクトルを候補にする。ステップS832の処理が終了すると、処理は、図72に戻る。
また、図76のステップS830において、位置B2のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図77のステップS841に進む。また、図76のステップS831において、位置B2のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、図77のステップS841に進む。
図77のステップS841において、ベクトル予測部433は、左側位置のブロックから動き(視差)ベクトルの候補が生成されているかを判定する。
ステップS842において、ベクトル予測部433は、位置B0のブロックを選択する。
ステップS843において、ベクトル予測部433は、位置B0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS844に進む。ステップS844において、ベクトル予測部433は、位置B0のブロックの動き(視差)ベクトルを候補にする。ステップS844の処理が終了すると、処理は、ステップS851に進む。
また、ステップS843において、位置B0のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS845に進む。
ステップS845において、ベクトル予測部433は、位置B1のブロックを選択する。
ステップS846において、ベクトル予測部433は、位置B1のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS847に進む。ステップS847において、ベクトル予測部433は、位置B1のブロックの動き(視差)ベクトルを候補にする。ステップS847の処理が終了すると、処理は、ステップS851に進む。
また、ステップS846において、位置B1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、ステップS848に進む。
ステップS848において、ベクトル予測部433は、位置B2のブロックを選択する。
ステップS849において、ベクトル予測部433は、位置B2のブロックがイントラモードまたは使用不可であるか否かを判定する。
ステップS849において、位置B2のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図72に戻る。
また、位置B2のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS850に進む。ステップS850において、ベクトル予測部433は、位置B2のブロックの動き(視差)ベクトルを候補にする。ステップS850の処理が終了すると、処理は、ステップS851に進む。
ステップS851において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無を判定する。この処理は、図75のフローチャートを参照して説明した場合と同様に行われるので、その説明は省略する。なお、この場合において、図75の処理が終了したとき、処理は、図74ではなく、図77に戻る。
ステップS852において、ベクトル予測部433は、ステップS851の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルを候補から除外するか否かを判定する。
候補から除外すると判定された場合、処理は、ステップS853に進む。ステップS853において、ベクトル予測部433は、上側位置ブロックの動き(視差)ベクトルを候補から除外する。ステップS853の処理が終了すると、処理は、図72に戻る。
また、図77のステップS852において、候補から除外しない(候補に含める)と判定された場合、処理は、ステップS854に進む。
ステップS854において、ベクトル予測部433は、ステップS851の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルに対してスケーリングが必要であるか否かを判定する。
スケーリングが必要であると判定された場合、処理は、ステップS855に進む。ステップS855において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルに対して、スケーリング処理を行う。ステップS855の処理が終了すると、処理は、図72に戻る。
また、図77のステップS854において、スケーリングが必要でないと判定された場合、処理は、図72に戻る。
以上のように各処理を実行することにより、画像符号化装置400は、符号化効率の低減を抑制することができる。
[復号時の処理の流れ]
以上のように符号化されて得られた符号化データを正しく復号するためには、復号側においても、符号化側と同様の方法で予測を行えばよい。つまり、復号側においても、符号化ベクトルと予測ベクトルの参照ピクチャのタイプ(短時間参照ピクチャまたは長時間参照ピクチャ)が異なるときに、その予測ベクトルを使用不可(Not available)にするようにする。
つまり、例えば、符号化ブロックの参照画像と時間相関ブロックの参照画像とのタイプが一致する場合、すなわち、ともに短時間参照画像であるか、若しくは、ともに長時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルを候補にし、両者のタイプが一致しない場合、候補から除外するようにする。さらに、符号化ブロックの参照画像と時間相関ブロックの参照画像とが、ともに短時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルのスケーリングを行うようにし、両者がともに長時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
また、例えば、符号化ブロックの参照画像と周辺ブロックの参照画像とのタイプが一致する場合、すなわち、ともに短時間参照画像であるか、若しくは、ともに長時間参照画像である場合、周辺ブロックの動き(視差)ベクトルを候補にし、両者のタイプが一致しない場合、候補から除外するようにする。さらに、符号化ブロックの参照画像と周辺ブロックの参照画像とが、ともに短時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行うようにし、両者がともに長時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
このようにすることにより、符号化効率の低減の抑制を実現することができる。
このような制御を実現するための符号化時の処理の流れの例について、以下に説明する。なお、このような制御は、第4の実施の形態において説明した画像復号装置500(図47)により実現することができる。
画像復号装置500による復号処理は、図33のフローチャートを参照して説明した場合(第2の実施の形態)と同様に行われる。また、図33のステップS305の予測処理は、図34のフローチャートを参照して説明した場合と同様に行われる。
図34のステップS334において実行される動き視差補償処理に相当する処理として、動き補償部512が実行するPUの動き(視差)ベクトルと参照インデックス生成処理の流れの例を、図78のフローチャートを参照して説明する。
この処理は、符号化側の処理(図67)の場合と基本的に同様に行われる。ただし、予測モードは符号化側により決定されているので、復号側においては、その使用された予測モードについてのみ処理を行えばよい。
処理が開始されると、ステップS861において、可逆復号部302は、符号化側から供給される予測モードを復号する。
ステップS862において、モード判定部531は、予測モードがマージ(スキップ)モードであるか否かを判定する。
マージ(スキップ)モードであると判定された場合、処理は、ステップS863に進む。ステップS863において、参照インデックス決定部532およびベクトル復号部534は、マージ(スキップ)モードの処理を行い、動き(視差)ベクトルと参照インデックスを生成する。ステップS863の処理が終了すると、処理は、図34に戻る。
また、図78のステップS862において、マージ(スキップ)モードでないと判定された場合、処理は、ステップS863に進む。ステップS864において、ベクトル復号部533は、残差動き(視差)ベクトルと参照インデックスを取得する。ステップS865において、ベクトル復号部533は、AMVPモードの処理を行い、予測動き(視差)ベクトルを生成する。ステップS866において、ベクトル復号部533は、残差動き(視差)ベクトルと予測動き(視差)ベクトルとを加算する。ステップS866の処理が終了すると、処理は、図34に戻る。
次に、図78のステップS863において実行されるマージ(スキップ)モード処理の流れの例を、図79のフローチャートを参照して説明する。この処理は、基本的に符号化側の処理(図68)と基本的に同様に行われる。
ステップS871乃至ステップS874の各処理は、図68のステップS711乃至ステップS714の各処理と同様に実行される。ただし、ステップS871およびステップS872の各処理は、参照インデックス決定部532が行い、ステップS873およびステップS874の各処理は、ベクトル復号部534が行う。
ステップS875において、ベクトル復号部534は、候補リストの最大数Xを復号する。
ステップS876乃至ステップS880の各処理は、図68のステップS716乃至ステップS720の各処理と同様に実行される。ただし、これらの処理は、ベクトル復号部534が実行する。
ステップS881において、ベクトル復号部534は、候補リストの要素インデックスを復号する。ステップS882において、ベクトル復号部534は、要素インデックスが指し示す動き(視差)ベクトルと参照インデックスを取得する。ステップS882の処理が終了すると、処理は、図78に戻る。
次に、図79のステップS873において実行される時間相関ブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図80のフローチャートを参照して説明する。この処理は、基本的に符号化側の処理(図69)と基本的に同様に行われる。
処理が開始されると、ベクトル復号部534は、ステップS891において、時間相関ピクチャを指定するインデックスを復号する。
ステップS892乃至ステップS902の各処理は、図69のステップS732乃至ステップS742の各処理と同様に実行される。ただし、これらの処理は、ベクトル復号部534が実行する。
図80のステップS899において実行される、時間相関ブロックの動き(視差)ベクトルのスケーリング処理の有無と候補の有無の判定処理は、図70のフローチャートを参照して説明した場合と同様に実行されるので、その説明は省略する。ただし、この場合、処理は、ベクトル復号部534が実行し、図70の処理が終了したときは、処理は図80に戻る。
次に、図78のステップS865において実行されるAMVPモード処理の流れの例を、図81のフローチャートを参照して説明する。この処理は、基本的に符号化側の処理(図71)と基本的に同様に行われる。ステップS911乃至ステップS917の各処理は、図71のステップS761乃至ステップS767の各処理と同様に実行される。ただし、これらの処理は、ベクトル復号部533が実行する。
ステップS918において、ベクトル復号部533は、候補リストの要素インデックス(フラグ)を復号する。ステップS919において、ベクトル復号部533は、要素インデックスが指し示す動き(視差)ベクトルを取得する。ステップS919の処理が終了すると、処理は、図78に戻る。
なお、図81のステップS911において実行される、空間的に周辺のブロックから候補となる動き(視差)ベクトルを生成する処理は、図72乃至図77の各フローチャートを参照して説明した場合と同様に実行されるので、その説明は省略する。ただし、この場合、処理は、ベクトル復号部533が実行し、図72の処理が終了したときは、処理は図81に戻る。
また、図81のステップS914において実行される、時間相関ブロックから候補となる動き(視差)ベクトルを生成する処理は、図80のフローチャートを参照して説明した場合と同様に実行されるので、その説明は省略する。ただし、この場合、処理は、ベクトル復号部533が実行し、図80の処理が終了したときは、処理は図81に戻る。
以上のように各処理を実行することにより、画像復号装置500は、符号化データを正しく復号することができ、符号化効率の低減の抑制を実現することができる。
[動き(視差)ベクトルの取り扱いのまとめ]
以上の例の場合、AMVPモードにおいて、周辺ブロックから動き(視差)ベクトルを生成する際に、例えば左側位置の周辺ブロックについては、位置A0、位置A1の順で動き(視差)ベクトルが検索され、見つかった時点で処理が終了される。同様に、例えば上側位置の周辺ブロックについては、位置B0、位置B1、位置B2の順で動き(視差)ベクトルが検索され、見つかった時点で処理が終了される。この場合、動き(視差)ベクトルが候補となり得るか否かは、その後に判定されるので、例えば、ある位置で見つかった動き(視差)ベクトルが候補となり得ない場合であっても、その後の位置の動き(視差)ベクトルの検索は行われない。
周辺ブロックから動き(視差)ベクトルを生成する方法は、これに限らない。例えば、位置A0および位置A1、または、位置B0、位置B1、および位置B2の全てについて動き(視差)ベクトルを候補とすることができるか否かを判定するようにしてもよい。つまり、各位置の周辺ブロックについて、それぞれ、候補の有無を判定し、最後にまとめてスケーリング処理の有無を判定するようにする。
このようにすることにより、上述した例よりも処理が複雑になるものの、各位置の動き(視差)ベクトルについて、候補に含めるか否かを判定することができる。つまり、より適切な候補を検索することができ、符号化効率をより向上させることができる。
図82は、周辺ブロックの取り扱いの例を説明する図である。ベクトルの予測において、まず、各位置の周辺ブロックについて、周辺ブロックの動き(視差)ベクトルを候補ベクトルに含めるか否かが、図82のAに示される表のように決定される。
つまり、例えば、符号化ブロックの参照画像と周辺ブロックの参照画像とのタイプが一致する場合、すなわち、ともに短時間参照画像であるか、若しくは、ともに長時間参照画像である場合、時間相関ブロックの動き(視差)ベクトルを候補にし、両者のタイプが一致しない場合、候補から除外するようにする。
候補が選択された後、その候補ベクトルについて、スケーリングを行うか否かが、図82のBに示される表のように決定される。
つまり、例えば、符号化ブロックの参照画像と周辺ブロックの参照画像とが、ともに短時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行うようにし、それ以外の場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
[符号化時の処理の流れ]
この場合の、左側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図83および図84のフローチャートを参照して説明する。なお、図67乃至図72のフローチャートを参照して説明した各処理は、この場合も同様に実行されるため、これらの処理についての説明は省略する。
図83のステップS921乃至ステップS928の各処理は、図73のステップS781乃至ステップS788の各処理と同様に実行される。ステップS924若しくはステップS928の処理が終了すると、左側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。また、ステップS926において位置A1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、または、ステップS927において位置A1のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、図84のステップS931に進む。
図84のステップS931において、ベクトル予測部433は、位置A0のブロックを選択する。
ステップS932において、ベクトル予測部433は、位置A0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置A0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS933に進む。ステップS933において、ベクトル予測部433は、位置A0のブロックの動き(視差)ベクトルの候補の有無を判定する。
ステップS934において、ベクトル予測部433は、ステップS933の判定結果に基づいて、候補を含むか否かを判定する。
候補を含むと判定した場合、処理はステップS935に進む。ステップS935において、ベクトル予測部433は、位置A0の動き(視差)ベクトルを候補にする。ステップS935の処理が終了すると、処理は、ステップS943に進む。
また、ステップS934において、候補を含まないと判定された場合、処理は、ステップS936に進む。ステップS936において、ベクトル予測部433は、位置A0のブロックの動き(視差)ベクトルを候補から除外する。
ステップS936の処理が終了すると、処理は、ステップS937に進む。また、ステップS932において、位置A0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS937に進む。
ステップS937において、ベクトル予測部433は、位置A1のブロックを選択する。
ステップS938において、ベクトル予測部433は、位置A1のブロックがイントラモードまたは使用不可であるか否かを判定する。位置A1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、左側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。
また、図84のステップS938において、位置A1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS939に進む。ステップS939において、ベクトル予測部433は、位置A1のブロックの動き(視差)ベクトルの候補の有無を判定する。
ステップS940において、ベクトル予測部433は、ステップS939の判定結果に基づいて、候補を含むか否かを判定する。
候補を含むと判定した場合、処理はステップS941に進む。ステップS941において、ベクトル予測部433は、位置A1の動き(視差)ベクトルを候補にする。ステップS941の処理が終了すると、処理は、ステップS943に進む。
また、ステップS940において、候補を含まないと判定された場合、処理は、ステップS942に進む。ステップS942において、ベクトル予測部433は、位置A1のブロックの動き(視差)ベクトルを候補から除外する。ステップS942の処理が終了すると、左側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。
図84のステップS943において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無を判定する。
ステップS944において、ベクトル予測部433は、ステップS943の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルに対してスケーリングが必要であるか否かを判定する。
スケーリングが必要であると判定された場合、処理は、ステップS945に進む。ステップS945において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルに対して、スケーリング処理を行う。ステップS945の処理が終了すると、処理は、図72に戻る。
また、図84のステップS944において、スケーリングが必要でないと判定された場合、処理は、図72に戻る。
次に、図84のステップS933およびステップS939において実行される、周辺ブロックの動き(視差)ベクトルの候補の有無の判定処理の流れの例を、図85のフローチャートを参照して説明する。
図85のステップS951乃至ステップS954,並びにステップS957の各処理は、図75のステップS811乃至ステップS814、並びに、ステップS817の各処理と同様に実行される。
ステップS953において符号化ブロックの参照画像が長時間参照画像であると判定され、ステップS954において周辺ブロックの参照画像が長時間参照画像であると判定された場合、ベクトル予測部433は、ステップS955において、周辺ブロック(位置A0若しくは位置A1のブロック)の動き(視差)ベクトルを候補に含めるように設定する。
また、ステップS953において符号化ブロックの参照画像が長時間参照画像であると判定され、ステップS954において周辺ブロックの参照画像が短時間参照画像であると判定された場合、または、ステップS953において符号化ブロックの参照画像が短時間参照画像であると判定され、ステップS957において周辺ブロックの参照画像が長時間参照画像であると判定された場合、符号化ブロックと周辺ブロックとで参照画像のタイプが異なるので、ベクトル予測部433は、ステップS956において、周辺ブロック(位置A0若しくは位置A1のブロック)の動き(視差)ベクトルを候補から除外するように設定する。
さらに、ステップS953において符号化ブロックの参照画像が短時間参照画像であると判定され、ステップS957において周辺ブロックの参照画像が短時間参照画像であると判定された場合、ベクトル予測部433は、ステップS958において、周辺ブロック(位置A0若しくは位置A1のブロック)の動き(視差)ベクトルを候補に含めるように設定する。
ステップS955、ステップS956、または、ステップS958の処理が終了した場合、処理は、図84に戻る。
次に、図84のステップS943において実行される、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無の判定処理の流れの例を、図86のフローチャートを参照して説明する。
図86のステップS961乃至ステップS963、並びに、ステップS965の各処理は、図75のステップS811乃至ステップS813、並びに、ステップS817の各処理と同様に実行される。
ステップS963において符号化ブロックの参照画像が長時間参照画像であると判定された場合、または、ステップS963において符号化ブロックの参照画像が短時間参照画像であると判定され、ステップS965において、周辺ブロックの参照画像が長時間参照画像であると判定された場合、処理は、ステップS964に進む。つまり、符号化ブロックの参照画像と周辺ブロックの参照画像とのうち、少なくともいずれか一方が長時間参照画像であると判定された場合、処理はステップS964に進む。
ステップS964において、ベクトル予測部433は、スケーリングが不要であると設定する。ステップS964の処理が終了すると、処理は、図84に戻る。
また、図86のステップS963において符号化ブロックの参照画像が短時間参照画像であると判定され、ステップS965において、周辺ブロックの参照画像が短時間参照画像であると判定された場合、つまり、符号化ブロックと周辺ブロックのいずれも参照画像が短時間参照画像であると判定された場合、処理は、ステップS966に進む。
ステップS966において、ベクトル予測部433は、スケーリングが必要であると設定する。ステップS966の処理が終了すると、処理は、図84に戻る。
次に、この場合の、上側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図87乃至図89のフローチャートを参照して説明する。
図87のステップS971乃至ステップS982の各処理は、図76のステップS821乃至ステップS832の各処理と同様に実行される。ステップS974、ステップS978、若しくはステップS982の処理が終了すると、処理は、図89のステップS1017に進む。また、ステップS980において位置B2のブロックがイントラモードであるか若しくは使用不可であると判定された場合、または、ステップS981において位置B2のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、図88のステップS991に進む。
図88のステップS991において、ベクトル予測部433は、左側位置のブロックから動き(視差)ベクトルの候補が生成されているかを判定する。
ステップS992において、ベクトル予測部433は、位置B0のブロックを選択する。
ステップS993において、ベクトル予測部433は、位置B0のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B0のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS994に進む。ステップS994において、ベクトル予測部433は、位置B0のブロックの動き(視差)ベクトルの候補の有無を判定する。この処理は、図85のフローチャートを参照して説明した場合と同様に行われるので、その説明は省略する。
ステップS995において、ベクトル予測部433は、ステップS994の判定結果に基づいて、候補を除外するか否かを判定する。
候補から除外すると判定した場合、処理はステップS996に進む。ステップS996において、ベクトル予測部433は、位置B0のブロックの動き(視差)ベクトルを候補から除外する。ステップS996の処理が終了すると、処理は、ステップS998に進む。
また、ステップS995において、候補から除外しないと判定された場合、処理はステップS997に進む。ステップS997において、ベクトル予測部433は、位置B0のブロックの動き(視差)ベクトルを候補にする。ステップS997の処理が終了すると、処理は、図89のステップS1017に進む。
また、ステップS993において、位置B0のブロックがイントラモードである、若しくは使用不可であると判定された場合、処理は、ステップS998に進む。
ステップS998において、ベクトル予測部433は、位置B1のブロックを選択する。
ステップS999において、ベクトル予測部433は、位置B1のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B1のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS1000に進む。ステップS1000において、ベクトル予測部433は、位置B1のブロックの動き(視差)ベクトルの候補の有無を判定する。この処理は、図85のフローチャートを参照して説明した場合と同様に行われるので、その説明は省略する。
ステップS1001において、ベクトル予測部433は、ステップS1000の判定結果に基づいて、候補を除外するか否かを判定する。
候補から除外すると判定した場合、処理はステップS1002に進む。ステップS1002において、ベクトル予測部433は、位置B1のブロックの動き(視差)ベクトルを候補から除外する。ステップS1002の処理が終了すると、処理は、図89のステップS1011に進む。
また、図88のステップS1001において、候補から除外しないと判定された場合、処理はステップS1003に進む。ステップS1003において、ベクトル予測部433は、位置B1のブロックの動き(視差)ベクトルを候補にする。ステップS1003の処理が終了すると、処理は、図89のステップS1017に進む。
また、ステップS999において、位置B1のブロックがイントラモードである、若しくは使用不可であると判定された場合、処理は、図89のステップS1011に進む。
図89のステップS1011において、ベクトル予測部433は、位置B2のブロックを選択する。
ステップS1012において、ベクトル予測部433は、位置B2のブロックがイントラモードまたは使用不可であるか否かを判定する。
位置B2のブロックがイントラモードでも使用不可でもないと判定された場合、処理は、ステップS1013に進む。ステップS1013において、ベクトル予測部433は、位置B2のブロックの動き(視差)ベクトルの候補の有無を判定する。この処理は、図85のフローチャートを参照して説明した場合と同様に行われるので、その説明は省略する。
ステップS1014において、ベクトル予測部433は、ステップS1013の判定結果に基づいて、候補から除外するか否かを判定する。
候補から除外すると判定した場合、処理はステップS1015に進む。ステップS1015において、ベクトル予測部433は、位置B2のブロックの動き(視差)ベクトルを候補から除外する。ステップS1015の処理が終了すると、処理は、ステップS1017に進む。
また、ステップS1014において、候補から除外しないと判定された場合、処理はステップS1016に進む。ステップS1016において、ベクトル予測部433は、位置B2のブロックの動き(視差)ベクトルを候補にする。ステップS1016の処理が終了すると、処理は、ステップS1017に進む。
ステップS1017において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルのスケーリング処理の有無を判定する。この処理は、図86のフローチャートを参照して説明した場合と同様に行われるので、その説明は省略する。
ステップS1018において、ベクトル予測部433は、ステップS1017の判定結果に基づいて、周辺ブロックの動き(視差)ベクトルに対してスケーリングが必要であるか否かを判定する。
スケーリングが必要であると判定された場合、処理は、ステップS1019に進む。ステップS1019において、ベクトル予測部433は、周辺ブロックの動き(視差)ベクトルに対して、スケーリング処理を行う。ステップS1019の処理が終了すると、処理は、図72に戻る。
また、図89のステップS1018において、スケーリングが必要でないと判定された場合、処理は、図72に戻る。
以上のように各処理を実行することにより、画像符号化装置400は、符号化効率の低減を抑制することができる。
なお、画像復号装置500も、上述した画像符号化装置400と同様に、これらの処理を実行するのでその説明は省略する。これにより、画像復号装置500は、符号化データを正しく復号することができ、符号化効率の低減の抑制を実現することができる。
[動き(視差)ベクトルの取り扱いのまとめ]
以上においては、図66乃至図81を参照して第1の例について説明し、図82乃至図89を参照して第2の例について説明した。
これら以外にも、例えば、第1の例において、符号化ブロックの参照画像と周辺ブロックの参照画像が両方とも長時間参照画像である場合、符号化ブロックと周辺ブロックが同一の参照画像を参照しているときのみ周辺ブロックの動き(視差)ベクトルを候補とし、それらが互いに異なる参照画像を参照しているときは、周辺ブロックの動き(視差)ベクトル候補から除外し、さらに、検索処理も省略するようにしてもよい。
上述したように、長時間参照画像は、背景画像のような静止領域や異なるビューの画像に適用される。したがって、符号化ブロックの参照画像と周辺ブロックの参照画像が両方とも、このような長時間参照画像であるにも関わらず、敢えて、それらが互いに異なる画像であるということは、その参照画像は、互いの相関性が低いと考えられる。つまり、符号化ブロックと周辺ブロックの動き(視差)ベクトルの相関性が低いと考えられる。
そこで、このような相関性が低い可能性があるパターン(符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であり、かつ、両者が互いに異なる画像である場合)を、ベクトルの候補から除外することにより、符号化効率の低減をさらに抑制することができる。また、候補やスケーリングの有無の判定処理を省略することにより、処理の負荷を低減させることができる。
図90は、時間相関ブロックと周辺ブロックの取り扱いの他の例を説明する図である。ベクトルの予測において、時間相関ブロックの動き(視差)ベクトルを候補ベクトルに含めるか否か、並びに、スケーリングを行うか否かは、図90のAに示される表のように決定する。
つまり、図66のAの場合と同様である。
また、ベクトルの予測において、周辺ブロックの動き(視差)ベクトルを候補ベクトルに含めるか否か、並びに、スケーリングを行うか否かは、図90のBに示される表のように決定する。
つまり、例えば、符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像である場合、それらの参照画像が同一であるときのみ、周辺ブロックの動き(視差)ベクトルを候補にする。さらに、それらの参照画像が互いに異なる場合、周辺ブロックの動き(視差)ベクトルを候補から除外するだけでなく、候補やスケーリングの有無の判定処理を省略する。
符号化ブロックの参照画像と周辺ブロックの参照画像とが、ともに短時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行うようにし、両者がともに長時間参照画像である場合、周辺ブロックの動き(視差)ベクトルのスケーリングを行わないようにする。
[符号化時の処理の流れ]
この場合の、左側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図91および図92のフローチャートを参照して説明する。なお、図67乃至図72のフローチャートを参照して説明した各処理は、この場合も同様に実行されるため、これらの処理についての説明は省略する。
図91のステップS1031乃至ステップS1038の各処理は、図73のステップS781乃至ステップS788の各処理と基本的に同様に実行される。ステップS1034若しくはステップS1038の処理が終了すると、左側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。また、ステップS1035において位置A1のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図92のステップS1041に進む。
しかしながら、図91のステップS1037において、位置A1のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、ステップS1039に進む。
ステップS1039において、ベクトル予測部433は、符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であるか否かを判定する。
符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であると判定された場合、左側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。
また、符号化ブロックと周辺ブロックの参照画像の少なくとも一方が短時間参照画像であると判定された場合、処理は、図92のステップS1041に進む。
図92のステップS1041乃至ステップS1051の各処理は、図74のステップS791乃至ステップS799の各処理と同様に実行される。
つまり、符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であると判定された場合、図92の処理が全て省略される。したがって、処理の負荷を低減させることができる。
次に、この場合の、上側位置のブロックから候補となる動き(視差)ベクトル生成処理の流れの例を、図93および図94のフローチャートを参照して説明する。
図93のステップS1071乃至ステップS1082の各処理は、図76のステップS821乃至ステップS832の各処理と基本的に同様に実行される。ステップS1074、ステップS1078、若しくはステップS1082の処理が終了すると、上側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。また、ステップS1080において位置B2のブロックがイントラモードであるか若しくは使用不可であると判定された場合、処理は、図94のステップS1091に進む。
しかしながら、図93のステップS1081において、位置B2のブロックが符号化ブロックと異なる参照画像を参照していると判定された場合、処理は、ステップS1083に進む。
ステップS1083において、ベクトル予測部433は、符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であるか否かを判定する。
符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であると判定された場合、上側位置のブロックから候補となる動き(視差)ベクトル生成処理が終了し、処理は、図72に戻る。
また、符号化ブロックと周辺ブロックの参照画像の少なくとも一方が短時間参照画像であると判定された場合、処理は、図94のステップS1091に進む。
図94のステップS1091乃至ステップS1105の各処理は、図77のステップS841乃至ステップS855の各処理と同様に実行される。
つまり、符号化ブロックと周辺ブロックの参照画像がともに長時間参照画像であると判定された場合、図94の処理が全て省略される。したがって、処理の負荷を低減させることができる。
なお、上述した一連の処理は、多視点画像符号化・多視点画像復号(マルチビューのエンコーダ・デコーダ)にも適用することができる。つまり、多視点符号化・多視点復号を行う場合においても、符号化効率を向上させることができる。さらに、上述した一連の処理は、階層画像符号化(空間スケーラビリティ)・階層画像復号(マルチレイヤのエンコーダ・デコーダ)にも適用することができる。つまり、階層画像符号化・階層画像復号を行う場合においても、符号化効率を向上させることができる。
また、上述した一連の処理は、単視点画像(1ビュー)の、所謂2D画像にも適用することができる。
なお、本技術は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本技術は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本技術は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
<7.第7の実施の形態>
[コンピュータ]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
図95において、パーソナルコンピュータ700のCPU(Central Processing Unit)701は、ROM(Read Only Memory)702に記憶されているプログラム、または記憶部713からRAM(Random Access Memory)703にロードされたプログラムに従って各種の処理を実行する。RAM703にはまた、CPU701が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU701、ROM702、およびRAM703は、バス704を介して相互に接続されている。このバス704にはまた、入出力インタフェース710も接続されている。
入出力インタフェース710には、キーボード、マウスなどよりなる入力部711、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部712、ハードディスクなどより構成される記憶部713、モデムなどより構成される通信部714が接続されている。通信部714は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース710にはまた、必要に応じてドライブ715が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア721が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部713にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図95に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、若しくは半導体メモリなどよりなるリムーバブルメディア721により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM702や、記憶部713に含まれるハードディスクなどで構成される。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本技術は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
<8.第8の実施の形態>
上述した実施形態に係る画像符号化装置及び画像復号装置は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、4つの応用例について説明する。
[第1の応用例:テレビジョン受像機]
図96は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置900は、アンテナ901、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、表示部906、音声信号処理部907、スピーカ908、外部インタフェース909、制御部910、ユーザインタフェース911、及びバス912を備える。
チューナ902は、アンテナ901を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ902は、復調により得られた符号化ビットストリームをデマルチプレクサ903へ出力する。即ち、チューナ902は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送部としての役割を有する。
デマルチプレクサ903は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ904へ出力する。また、デマルチプレクサ903は、符号化ビットストリームからEPG(Electronic Program Guide)などの補助的なデータを抽出し、抽出したデータを制御部910に供給する。なお、デマルチプレクサ903は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
デコーダ904は、デマルチプレクサ903から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ904は、復号処理により生成される映像データを映像信号処理部905へ出力する。また、デコーダ904は、復号処理により生成される音声データを音声信号処理部907へ出力する。
映像信号処理部905は、デコーダ904から入力される映像データを再生し、表示部906に映像を表示させる。また、映像信号処理部905は、ネットワークを介して供給されるアプリケーション画面を表示部906に表示させてもよい。また、映像信号処理部905は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部905は、例えばメニュー、ボタン又はカーソルなどのGUI(Graphical User Interface)の画像を生成し、生成した画像を出力画像に重畳してもよい。
表示部906は、映像信号処理部905から供給される駆動信号により駆動され、表示デバイス(例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD(Organic ElectroLuminescence Display)(有機ELディスプレイ)など)の映像面上に映像又は画像を表示する。
音声信号処理部907は、デコーダ904から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ908から音声を出力させる。また、音声信号処理部907は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
外部インタフェース909は、テレビジョン装置900と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース909を介して受信される映像ストリーム又は音声ストリームが、デコーダ904により復号されてもよい。即ち、外部インタフェース909もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送部としての役割を有する。
制御部910は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置900の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース911から入力される操作信号に応じて、テレビジョン装置900の動作を制御する。
ユーザインタフェース911は、制御部910と接続される。ユーザインタフェース911は、例えば、ユーザがテレビジョン装置900を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース911は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部910へ出力する。
バス912は、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、音声信号処理部907、外部インタフェース909及び制御部910を相互に接続する。
このように構成されたテレビジョン装置900において、デコーダ904は、上述した実施形態に係る画像復号装置の機能を有する。それにより、テレビジョン装置900での画像の復号に際して、符号化効率の低減の抑制を実現することができる。
[第2の応用例:携帯電話機]
図97は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、及びバス933を備える。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス933は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、及び制御部931を相互に接続する。
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929の記憶媒体に記憶させる。
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB(Unallocated Space Bitmap)メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記憶再生部929の記憶媒体に記憶させる。
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、携帯電話機920での画像の符号化及び復号に際して、符号化効率の低減を抑制することができる。
[第3の応用例:記録再生装置]
図98は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
記録再生装置940は、チューナ941、外部インタフェース942、エンコーダ943、HDD(Hard Disk Drive)944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)948、制御部949、及びユーザインタフェース950を備える。
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送部としての役割を有する。
外部インタフェース942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース942は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース942を介して受信される映像データ及び音声データは、エンコーダ943へ入力される。即ち、外部インタフェース942は、記録再生装置940における伝送部としての役割を有する。
エンコーダ943は、外部インタフェース942から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
HDD944は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD944は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
ディスクドライブ945は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVDディスク(DVD-Video、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等)又はBlu-ray(登録商標)ディスクなどであってよい。
セレクタ946は、映像及び音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD948へ出力する。また、デコーダ904は、生成した音声データを外部のスピーカへ出力する。
OSD948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
ユーザインタフェース950は、制御部949と接続される。ユーザインタフェース950は、例えば、ユーザが記録再生装置940を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
このように構成された記録再生装置940において、エンコーダ943は、上述した実施形態に係る画像符号化装置の機能を有する。また、デコーダ947は、上述した実施形態に係る画像復号装置の機能を有する。それにより、記録再生装置940での画像の符号化及び復号に際して、符号化効率の低減を抑制することができる。
[第4の応用例:撮像装置]
図99は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、及びバス972を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス972は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、及び制御部970を相互に接続する。
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース966又はメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース966又はメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
OSD969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
外部インタフェース966は、例えばUSB入出力端子として構成される。外部インタフェース966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース966は、撮像装置960における伝送部としての役割を有する。
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース971から入力される操作信号に応じて、撮像装置960の動作を制御する。
ユーザインタフェース971は、制御部970と接続される。ユーザインタフェース971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、撮像装置960での画像の符号化及び復号に際して、符号化効率の低減を抑制することができる。
なお、本明細書では、閾値などの様々な情報が、符号化ストリームのヘッダに多重化されて、符号化側から復号側へ伝送される例について説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
なお、本技術は以下のような構成も取ることができる。
(1) 視差方向の相関性を利用した予測に用いられるカレントブロックのカレント視差ベクトルを符号化する際に、前記カレント視差ベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス視差ベクトルを用いて生成する予測ベクトル生成部と、
前記カレント視差ベクトルと、前記予測ベクトル生成部により生成された前記予測ベクトルとの差分ベクトルを生成する差分ベクトル生成部と
を備える画像処理装置。
(2) 前記予測ベクトル生成部は、カレントビューと同一のビューを対象として、カレントピクチャと異なる時刻のコロケーテッドピクチャに含まれるコロケーテッドブロックの視差ベクトルを用いて、前記カレント視差ベクトルの予測ベクトルを生成する
前記(1)に記載の画像処理装置。
(3) 前記予測ベクトル生成部は、カレントブロックのベクトルの特性とコロケーテッドブロックのベクトルの特性とが一致する場合に、コロケーテッドブロックをアベイラブルに設定する
前記(2)に記載の画像処理装置。
(4) 前記ベクトルの特性は、ベクトルのタイプであり、
前記予測ベクトル生成部は、カンレントブロックのベクトルの特性が視差ベクトルあり、かつ、コロケーテッドブロックのベクトルの特性が視差ベクトルである場合に、コロケーテッドブロックをアベイラブルに設定する
前記(3)に記載の画像処理装置。
(5) 前記予測動きベクトル生成部は、ピクチャの出力順を示すPOC(Picture Order Count)を用いて、カレントブロックのベクトルの特性とコロケーテッドブロックのベクトルの特性とを判定する
前記(3)または(4)に記載の画像処理装置。
(6) 前記予測動きベクトル生成部は、カレントピクチャのPOCと、カレントピクチャから参照されるカレントリファレンスピクチャのPOCと、コロケーテッドピクチャのPOCと、コロケーテッドピクチャから参照されるコロケーテッドリファレンスピクチャのPOCとを用いて、カレントブロックのベクトルの特性とコロケーテッドブロックのベクトルの特性とを判定する
前記(5)に記載の画像処理装置。
(7) 前記予測動きベクトル生成部は、カレントピクチャのPOCとカレントピクチャから参照されるカレントリファレンスピクチャのPOCとが一致し、かつ、コロケーテッドピクチャのPOCとコロケーテッドピクチャから参照されるコロケーテッドリファレンスピクチャのPOCとが一致する場合に、カレントブロックのベクトルの特性とコロケーテッドブロックのベクトルの特性とは、視差ベクトルであると判定する
前記(6)に記載の画像処理装置。
(8) 前記予測ベクトル生成部は、カレントブロックのベクトルの特性とコロケーテッドブロックのベクトルの特性とが異なる場合に、コロケーテッドブロックをノットアベイラブルに設定する
前記(2)乃至(7)のいずれかに記載の画像処理装置。
(9) 前記ベクトルの特性は、参照ピクチャのタイプであり、
前記予測ベクトル生成部は、カレントブロックの参照ピクチャのタイプとコロケーテッドブロックの参照ピクチャのタイプとが異なる場合に、コロケーテッドブロックをノットアベイラブルに設定する
前記(8)に記載の画像処理装置。
(10) 前記ベクトルの特性は、参照ピクチャのタイプであり、
前記予測ベクトル生成部は、カレントブロックの参照ピクチャのタイプが長時間参照であり、かつ、コロケーテッドブロックの参照ピクチャのタイプが長時間参照である場合に、リファレンスインデックスを探索する探索処理をスキップする
前記(8)または(9)に記載の画像処理装置。
(11) 前記予測ベクトル生成部は、前記カレントビューと異なるビューを対象として、カレントピクチャと同一の時刻のピクチャに含まれるリファレンスブロックの視差ベクトルを用いて、前記カレント視差ベクトルの予測ベクトルを生成する
前記(1)乃至(10)のいずれかに記載の画像処理装置。
(12) 前記予測ベクトル生成部は、カレントピクチャと予測動きベクトルを生成する際に参照するリファレンスピクチャとの位置関係に基づいて、前記リファレンス視差ベクトルをスケーリングして、前記カレント視差ベクトルの予測ベクトルを生成する
前記(1)乃至(11)のいずれかに記載の画像処理装置。
(13) 前記予測ベクトル生成部は、時間方向の相関性を利用した予測に用いられるカレントブロックのカレント動きベクトルを符号化する際に、前記カレント動きベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス動きベクトルを用いて生成し、
前記差分ベクトル生成部は、前記カレント動きベクトルと前記予測ベクトル生成部により生成された前記予測ベクトルとの差分ベクトルを生成する
前記(1)乃至(12)のいずれかに記載の画像処理装置。
(14) 前記予測ベクトル生成部は、前記カレントビューと異なるビューを対象として、前記カレントピクチャと同一の時刻のピクチャに含まれるリファレンスブロックの動きベクトルを用いて、前記カレント動きベクトルの予測ベクトルを生成する
前記(13)に記載の画像処理装置。
(15) 前記予測ベクトル生成部は、前記カレントビューと同一のビューを対象として、前記カレントピクチャと異なる時刻のピクチャに含まれるリファレンスブロックの動きベクトルを用いて、前記カレント動きベクトルの予測ベクトルを生成する
前記(13)または(14)に記載の画像処理装置。
(16) 前記予測ベクトル生成部は、カレントピクチャと予測動きベクトルを生成する際に参照するリファレンスピクチャとの位置関係に基づいて、前記リファレンス動きベクトルをスケーリングして、前記カレント動きベクトルの予測ベクトルを生成する
前記(15)に記載の画像処理装置。
(17) 前記予測ベクトル生成部は、前記カレントビューと異なるビューを対象として、前記カレントピクチャと同一の時刻のピクチャの画素の位置をシフトさせた状態で前記カレントブロックと同じ位置となるブロックのベクトルを用いて、前記予測ベクトルを生成する
前記(1)乃至(16)のいずれかに記載の画像処理装置。
(18) 前記予測ベクトル生成部は、前記カレントブロックの周辺領域の視差ベクトルに応じて、前記画像のシフト量を設定する
前記(17)に記載の画像処理装置。
(19) 前記予測ベクトル生成部は、Y方向の視差ベクトルの値が非ゼロである前記周辺ブロックの、X方向の視差ベクトルを、前記シフト量とする
前記(18)に記載の画像処理装置。
(20) 前記予測ベクトル生成部は、Y方向の視差ベクトルの値が非ゼロである複数の前記周辺ブロックの、X方向の視差ベクトルから算出される値を、前記シフト量とする 前記(18)または(19)に記載の画像処理装置。
(21) 前記予測ベクトル生成部は、Y方向の視差ベクトルの値が非ゼロである複数の前記周辺ブロックの、X方向の視差ベクトルの平均値又は中央値を、前記画像のシフト量とする
前記(20)に記載の画像処理装置。
(22) 前記予測ベクトル生成部は、グローバル視差ベクトルに応じて、前記画像のシフト量を設定する
前記(17)乃至(21)のいずれかに記載の画像処理装置。
(23) 画像処理装置の画像処理方法において、
前記画像処理装置が、
視差方向の相関性を利用した予測に用いられるカレントブロックのカレント視差ベクトルを符号化する際に、前記カレント視差ベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス視差ベクトルを用いて生成し、
前記カレント視差ベクトルと、生成された前記予測ベクトルとの差分ベクトルを生成する
画像処理方法。
(24) 視差方向の相関性を利用した予測に用いられるカレントブロックのカレント視差ベクトルの復号において、前記カレント視差ベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス視差ベクトルを用いて生成する予測ベクトル生成部と、
前記カレント視差ベクトルと前記予測ベクトルとの差分ベクトルに、前記予測ベクトル生成部により生成された前記予測ベクトルを加算し、前記カレント視差ベクトルを再構築する演算を行う演算部と
を備える画像処理装置。
(25) 画像処理装置の画像処理方法において、
前記画像処理装置が、
視差方向の相関性を利用した予測に用いられるカレントブロックのカレント視差ベクトルの復号において、前記カレント視差ベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス視差ベクトルを用いて生成し、
前記カレント視差ベクトルと前記予測ベクトルとの差分ベクトルに、生成された前記予測ベクトルを加算し、前記カレント視差ベクトルを再構築する演算を行う
画像処理方法。
(26) 時間方向の相関性を利用した予測に用いられるカレントブロックのカレント動きベクトルを符号化する際に、カレントブロックの参照ピクチャのタイプとカレントピクチャと異なる時刻のコロケーテッドピクチャに含まれるコロケーテッドブロックの参照ピクチャのタイプとが異なる場合に、コロケーテッドブロックをノットアベイラブルに設定し、前記カレント動きベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス動きベクトルを用いて生成する予測ベクトル生成部と、
前記カレント動きベクトルと前記予測ベクトル生成部により生成された前記予測ベクトルとの差分ベクトルを生成する差分ベクトル生成部と
を備える画像処理装置。
(27) 画像処理装置の画像処理方法において、
前記画像処理装置が、
時間方向の相関性を利用した予測に用いられるカレントブロックのカレント動きベクトルを符号化する際に、カレントブロックの参照ピクチャのタイプとカレントピクチャと異なる時刻のコロケーテッドピクチャに含まれるコロケーテッドブロックの参照ピクチャのタイプとが異なる場合に、コロケーテッドブロックをノットアベイラブルに設定し、前記カレント動きベクトルの予測ベクトルを、予測動きベクトルを生成する際に参照するリファレンス動きベクトルを用いて生成し、
前記カレント動きベクトルと生成された前記予測ベクトルとの差分ベクトルを生成する
画像処理方法。