以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置(PU単位の制御))
2.第2の実施の形態(画像復号装置(PU単位の制御))
3.第3の実施の形態(LCU単位の制御)
4.第4の実施の形態(多視点画像符号化・多視点画像復号装置)
5.第5の実施の形態(階層画像符号化・階層画像復号装置)
6.第6の実施の形態(コンピュータ)
7.応用例
<1.第1の実施の形態>
[画像符号化装置]
図1は、画像符号化装置の主な構成例を示すブロック図である。
図1に示される画像符号化装置100は、例えば、HEVC(High Efficiency Video Coding)に準ずる方式の予測処理を用いて画像データを符号化する。
図1に示されるように画像符号化装置100は、A/D変換部101、画面並べ替えバッファ102、演算部103、直交変換部104、量子化部105、可逆符号化部106、蓄積バッファ107、逆量子化部108、および逆直交変換部109を有する。また、画像符号化装置100は、演算部110、デブロックフィルタ111、フレームメモリ112、選択部113、イントラ予測部114、動き予測・補償部115、予測画像選択部116、およびレート制御部117を有する。
画像符号化装置100は、さらに、動きベクトル符号化部121および隣接動きベクトル情報設定部122を有する。
A/D変換部101は、入力された画像データをA/D変換し、変換後の画像データ(デジタルデータ)を、画面並べ替えバッファ102に供給し、記憶させる。画面並べ替えバッファ102は、記憶した表示の順番のフレームの画像を、GOP(Group Of Picture)に応じて、符号化のためのフレームの順番に並べ替え、フレームの順番を並び替えた画像を、演算部103に供給する。また、画面並べ替えバッファ102は、フレームの順番を並び替えた画像を、イントラ予測部114および動き予測・補償部115にも供給する。
演算部103は、画面並べ替えバッファ102から読み出された画像から、予測画像選択部116を介してイントラ予測部114若しくは動き予測・補償部115から供給される予測画像を減算し、その差分情報を直交変換部104に出力する。
例えば、インター符号化が行われる画像の場合、演算部103は、画面並べ替えバッファ102から読み出された画像から、動き予測・補償部115から供給される予測画像を減算する。
直交変換部104は、演算部103から供給される差分情報に対して、離散コサイン変換やカルーネン・レーベ変換等の直交変換を施す。なお、この直交変換の方法は任意である。直交変換部104は、その変換係数を量子化部105に供給する。
量子化部105は、直交変換部104から供給される変換係数を量子化する。量子化部105は、レート制御部117から供給される符号量の目標値に関する情報に基づいて量子化パラメータを設定し、その量子化を行う。なお、この量子化の方法は任意である。量子化部105は、量子化された変換係数を可逆符号化部106に供給する。
可逆符号化部106は、量子化部105において量子化された変換係数を任意の符号化方式で符号化する。係数データは、レート制御部117の制御の下で量子化されているので、この符号量は、レート制御部117が設定した目標値となる(若しくは目標値に近似する)。
また、可逆符号化部106は、イントラ予測のモードを示す情報などをイントラ予測部114から取得し、インター予測のモードを示す情報や差分動きベクトル情報などを動き予測・補償部115から取得する。
可逆符号化部106は、これらの各種情報を任意の符号化方式で符号化し、符号化データ(符号化ストリームとも称する)のヘッダ情報の一部とする(多重化する)。すなわち、可逆符号化部106は、ヘッダ情報を設定する設定部でもある。可逆符号化部106は、符号化して得られた符号化データを蓄積バッファ107に供給して蓄積させる。
可逆符号化部106の符号化方式としては、例えば、可変長符号化または算術符号化等が挙げられる。可変長符号化としては、例えば、H.264/AVC方式で定められているCAVLC(Context-Adaptive Variable Length Coding)などが挙げられる。算術符号化としては、例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)などが挙げられる。
蓄積バッファ107は、可逆符号化部106から供給された符号化データを、一時的に保持する。蓄積バッファ107は、所定のタイミングにおいて、保持している符号化データを、例えば、後段の図示せぬ記録装置(記録媒体)や伝送路などに出力する。すなわち、蓄積バッファ107は、符号化データを伝送する伝送部でもある。
また、量子化部105において量子化された変換係数は、逆量子化部108にも供給される。逆量子化部108は、その量子化された変換係数を、量子化部105による量子化に対応する方法で逆量子化する。この逆量子化の方法は、量子化部105による量子化処理に対応する方法であればどのような方法であってもよい。逆量子化部108は、得られた変換係数を、逆直交変換部109に供給する。
逆直交変換部109は、逆量子化部108から供給された変換係数を、直交変換部104による直交変換処理に対応する方法で逆直交変換する。この逆直交変換の方法は、直交変換部104による直交変換処理に対応する方法であればどのようなものであってもよい。逆直交変換された出力(復元された差分情報)は、演算部110に供給される。
演算部110は、逆直交変換部109から供給された逆直交変換結果である、復元された差分情報に、予測画像選択部116を介してイントラ予測部114若しくは動き予測・補償部115からの予測画像を加算し、局部的に復号された画像(復号画像)を得る。その復号画像は、デブロックフィルタ111またはフレームメモリ112に供給される。
デブロックフィルタ111は、演算部110から供給される復号画像に対して適宜デブロックフィルタ処理を行う。例えば、デブロックフィルタ111は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。
デブロックフィルタ111は、フィルタ処理結果(フィルタ処理後の復号画像)をフレームメモリ112に供給する。なお、上述したように、演算部110から出力される復号画像は、デブロックフィルタ111を介さずにフレームメモリ112に供給することができる。つまり、デブロックフィルタ111によるフィルタ処理は省略することができる。
フレームメモリ112は、供給される復号画像を記憶し、所定のタイミングにおいて、記憶している復号画像を参照画像として、選択部113に供給する。
選択部113は、フレームメモリ112から供給される参照画像の供給先を選択する。例えば、インター予測の場合、選択部113は、フレームメモリ112から供給される参照画像を動き予測・補償部115に供給する。
イントラ予測部114は、選択部113を介してフレームメモリ112から供給される参照画像である処理対象ピクチャ内の画素値を用いて、基本的にプレディクションユニット(PU)を処理単位として予測画像を生成するイントラ予測(画面内予測)を行う。イントラ予測部114は、予め用意された複数のイントラ予測モードでこのイントラ予測を行う。
イントラ予測部114は、候補となる全てのイントラ予測モードで予測画像を生成し、画面並べ替えバッファ102から供給される入力画像を用いて各予測画像のコスト関数値を評価し、最適なモードを選択する。イントラ予測部114は、最適なイントラ予測モードを選択すると、その最適なモードで生成された予測画像を、予測画像選択部116に供給する。
また、上述したように、イントラ予測部114は、採用されたイントラ予測モードを示すイントラ予測モード情報等を、適宜可逆符号化部106に供給し、符号化させる。
動き予測・補償部115は、画面並べ替えバッファ102から供給される入力画像と、選択部113を介してフレームメモリ112から供給される参照画像とを用いて、基本的にPUを処理単位として、動き予測(インター予測)を行う。動き予測・補償部115は、検出された動きベクトルを動きベクトル符号化部121に供給するとともに、検出された動きベクトルに応じて動き補償処理を行い、予測画像(インター予測画像情報)を生成する。動き予測・補償部115は、予め用意された複数のインター予測モードでこのようなインター予測を行う。
動き予測・補償部115は、候補となる全てのインター予測モードで予測画像を生成する。動き予測・補償部115は、対象領域の動きベクトルと、動きベクトル符号化部121からの対象領域の予測動きベクトルとの差分である差分動きベクトルを生成する。また、動き予測・補償部115は、画面並べ替えバッファ102から供給される入力画像と、生成した差分動きベクトルの情報などを用いて、各予測画像のコスト関数値を評価し、最適なモードを選択する。動き予測・補償部115は、最適なインター予測モードを選択すると、その最適なモードで生成された予測画像を、予測画像選択部116に供給する。
動き予測・補償部115は、採用されたインター予測モードを示す情報や、符号化データを復号する際に、そのインター予測モードで処理を行うために必要な情報等を可逆符号化部106に供給し、符号化させる。必要な情報としては、例えば、生成された差分動きベクトルの情報や、予測動きベクトル情報として、予測動きベクトルのインデックスを示すフラグなどがある。
予測画像選択部116は、演算部103や演算部110に供給する予測画像の供給元を選択する。例えば、インター符号化の場合、予測画像選択部116は、予測画像の供給元として動き予測・補償部115を選択し、その動き予測・補償部115から供給される予測画像を演算部103や演算部110に供給する。
レート制御部117は、蓄積バッファ107に蓄積された符号化データの符号量に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
動きベクトル符号化部121は、動き予測・補償部115により求められた動きベクトルを記憶している。動きベクトル符号化部121は、対象領域の動きベクトルを予測する。すなわち、動きベクトル符号化部121は、動きベクトルの符号化または復号のために用いられる予測動きベクトル(predictor)を生成する。なお、動きベクトルについての対象領域(カレントブロック)とは、対象PU(以下、適宜、当該PUとも称する)のことである。
ここで、予測動きベクトルの種類としては、時間予測動きベクトル(temporal predictor)と、空間予測動きベクトル(spacial predictor)とがある。時間予測動きベクトルは、対象領域に時間的に隣接する隣接領域の動きベクトルを用いて生成される予測動きベクトルである。空間予測動きベクトルは、対象領域に空間的に隣接する隣接領域の動きベクトルを用いて生成される予測動きベクトルである。
具体的には、動きベクトル符号化部121は、対象領域(カレントブロック)に時間的に隣接する隣接領域(隣接ブロック)の動きベクトルを用いて、時間予測動きベクトルを生成する。また、動きベクトル符号化部121は、対象領域に空間的に隣接する隣接領域のうち、隣接動きベクトル情報設定部122により使用が禁止されていない隣接領域の動きベクトルを用いて、空間予測動きベクトルを生成する。動きベクトル符号化部121は、生成した予測動きベクトルのうち最適とされる最適予測動きベクトルを、動き予測・補償部115および隣接動きベクトル情報設定部122に供給する。
隣接動きベクトル情報設定部122は、動きベクトル符号化部121に対して、対象領域に空間的に隣接する隣接領域のうち、どの隣接領域の動きベクトルを使用するか、あるいは、どの隣接領域の動きベクトルの使用を禁止するかを設定する。具体的には、隣接動きベクトル情報設定部122は、動きベクトル符号化部121に対して、対象領域に対して右上に隣接して位置する隣接領域の動きベクトルの使用を禁止する。
なお、本実施の形態において、動きベクトルの予測とは、予測動きベクトルを生成する処理を表し、動きベクトルの符号化とは、予測動きベクトルを生成して、生成した予測動きベクトルを用いて、差分動きベクトルを求める処理を表すものとして説明する。すなわち、動きベクトルの符号化処理に、動きベクトルの予測処理が含まれている。同様に、動きベクトルの復号とは、予測動きベクトルを生成して、生成した予測動きベクトルを用いて、動きベクトルを再構築する処理を表すものとして説明する。すなわち、動きベクトルの復号処理に、動きベクトルの予測処理が含まれている。
また、上述した対象領域に隣接する隣接領域は、対象領域の周辺に位置する周辺領域でもあり、以下、両者の文言は、同じ領域を意味するものとして説明していく。
なお、図1の例においては、隣接動きベクトル情報設定部122が、動きベクトル符号化部121の外に設けられる例が示されているが、隣接動きベクトル情報設定部122は、動きベクトル符号化部121に含めるように構成されてもよい。
[動きベクトルのメディアン予測]
図2は、AVC方式において実現されている動きベクトルのメディアン予測を説明する図である。
図2に示される各直線は、動き補償ブロックの境界を示している。また、図2において、Eはこれから符号化されようとしている当該動き補償ブロックを示し、A乃至Dは、それぞれ、既に符号化済の、Eに隣接する動き補償ブロックを示す。
今、X=A,B,C,D,Eとして、Xに対する動きベクトル情報を、mvxとする。
まず、動き補償ブロックA,B、およびCに関する動きベクトル情報を用い、動き補償ブロックEに対する予測動きベクトル情報pmvEを、メディアンオペレーションにより、以下の式(1)のように生成する。
動き補償ブロックCに関する情報が、画枠の端である等の理由により利用不可能(unavailable)である場合、動き補償ブロックDに関する情報で代用される。
画像圧縮情報に、動き補償ブロックEに対する動きベクトル情報として符号化されるデータmvdEは、pmvEを用いて、以下の式(2)のように生成される。
なお、実際の処理は、動きベクトル情報の水平方向および垂直方向のそれぞれの成分に対して、独立に処理が行なわれる。
[マルチ参照フレーム]
また、AVC方式においては、Multi-Reference Frame(マルチ(複数)参照フレーム)という、MPEG2やH.263等、従来の画像符号化方式では規定されていなかった方式が規定されている。
図3を用いて、AVC方式において規定されている、マルチ参照フレーム(Multi-Reference Frame)を説明する。
すなわち、MPEG-2やH.263においては、Pピクチャの場合、フレームメモリに格納された参照フレーム1枚のみを参照することにより動き予測・補償処理が行われていた。これに対して、AVC方式においては、図3に示されるように、複数の参照フレームがメモリに格納され、マクロブロック毎に、異なるメモリを参照することが可能である。
[ダイレクトモード]
上述したマルチ参照フレームにより、Bピクチャにおける動きベクトル情報における情報量は膨大であるが、AVC方式においては、Direct Mode(ダイレクトモード)と称されるモードが用意されている。
このダイレクトモードにおいて、動きベクトル情報は、画像圧縮情報中には格納されない。画像復号装置においては、周辺ブロックの動きベクトル情報、若しくは、参照フレームにおける処理対象ブロックと同じ位置のブロックであるCo-Locatedブロックの動きベクトル情報から、当該ブロックの動きベクトル情報が算出される。
ダイレクトモード(Direct Mode)には、Spatial Direct Mode(空間ダイレクトモード)と、Temporal Direct Mode(時間ダイレクトモード)の2種類が存在し、スライス毎に切り替えることが可能である。
空間ダイレクトモード(Spatial Direct Mode)においては、以下の式(3)に示されるように、処理対象動き補償ブロックEの動きベクトル情報mvEが算出される。
mvE = pmvE ・・・(3)
すなわち、Median(メディアン)予測により生成された動きベクトル情報が、当該ブロックに適用される。
以下においては、図4を用いて、時間ダイレクトモード(Temporal Direct Mode)を説明する。
図4において、L0参照ピクチャにおける、当該ブロックと同じ空間上のアドレスにあるブロックを、Co-Locatedブロックとし、Co-Locatedブロックにおける動きベクトル情報を、mvcolとする。また、当該ピクチャとL0参照ピクチャの時間軸上の距離をTDBとし、L0参照ピクチャとL1参照ピクチャの時間軸上の距離をTDDとする。
この時、当該ピクチャにおける、L0の動きベクトル情報mvL0及びL1の動きベクトル情報mvL1は、以下の式(4)および式(5)のように算出される。
なお、AVC画像圧縮情報においては、時間軸上の距離を表す情報TDが存在しないため、POC(Picture Order Count)を用いて、上述した式(4)および式(5)の演算が行われるものとする。
また、AVC画像圧縮情報においては、ダイレクトモード(Direct Mode)は、16×16画素マクロブロック単位、若しくは、8×8画素ブロック単位で定義することが可能である。
[動きベクトルのMVコンペティション]
ところで、図2を参照して説明したような、メディアン予測を用いた動きベクトルの符号化を改善するため、非特許文献1では、以下に述べるような方法が提案されている。
すなわち、AVCにおいて定義されている、メディアン予測により求められる”Spatial Predictor(空間予測動きベクトル)”に加え、以下に述べる”Temporal Predictor(時間予測動きベクトル)”及び”Spatio-Temporal Predictor(時間と空間の予測動きベクトル)”のどれかを、予測動きベクトル情報として、適応的に用いることが可能にするものである。この提案の方法は、AVCにおいてMVコンペティション(MVCompetition)と呼ばれている。これに対して、HEVCにおいては、Advanced Motion Vector Prediction(AMVP)と呼ばれており、以下、この提案の方法を、AMVPと称して説明する。
図5において、”mvcol”を、当該ブロックに対するCo-Locatedブロックに対する動きベクトル情報とする。また、mvtk(k=0乃至8)をその周辺ブロックの動きベクトル情報であるとして、それぞれの予測動きベクトル情報(Predictor)は、以下の式(6)乃至(8)により定義される。なお、当該ブロックに対するCo-Locatedブロックとは、当該ピクチャが参照する参照ピクチャにおいて、xy座標が、当該ブロックと同じであるブロックのことである。
Temporal Predictor:
・・・(6)
・・・(7)
Spatio-Temporal Predictor:
・・・(8)
画像符号化装置100においては、それぞれのブロックに関して、それぞれの予測動きベクトル情報を用いた場合のコスト関数値が算出され、最適な予測動きベクトル情報の選択が行われる。画像圧縮情報においては、それぞれのブロックに対し、どの予測動きベクトル情報が用いられたかに関する情報(インデックス)を示すフラグが伝送される。
[コーディングユニット]
ところで、マクロブロックサイズを16画素×16画素とするのは、次世代符号化方式の対象となるような、UHD(Ultra High Definition;4000画素×2000画素)といった大きな画枠に対しては、最適ではない。
そこで、AVC方式においては、マクロブロックとサブマクロブロックによる階層構造が規定されているが、例えば、HEVC方式においては、図6に示されるように、コーディングユニット(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に分割することができる。図6の例では、LCUの大きさが128であり、最大階層深度が5となる。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に相当すると考えることができる。また、AVC方式における動き補償ブロックは、PUに相当すると考えることができる。ただし、CUは、階層構造を有するので、その最上位階層のLCUのサイズは、例えば128×128画素のように、AVC方式のマクロブロックより大きく設定されることが一般的である。
よって、以下、LCUは、AVC方式におけるマクロブロックをも含むものとし、CUは、AVC方式におけるブロック(サブブロック)をも含むものとする。
[動きパーティションのマージ]
ところで、動き情報の符号化方式の1つとして、図7に示されるような、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となる。
[空間予測動きベクトル(spatial predictor)]
図5を参照して上述したAMVP もしくは図7を参照して上述したマージモードにおいて、予測動きベクトル(predictor)の候補として、空間予測動きベクトル(spacial predictor)と時間予測動きベクトル(temporal predictor)とが生成される。
次に、図8を参照して、空間予測動きベクトルの生成処理について説明する。図8の例においては、処理の対象領域である当該PU(カレントブロック)と、当該PUに対して、所定の位置関係で隣接するPU(ブロック)であるA0、A1、B0、B1、B2が示されている。
A0は、当該PUの左下に隣接するPUであり、A1は、当該PUの左に隣接するPUのうち、A0の上に位置するPUである。B2は、当該PUの左上に隣接するPUであり、B0は、当該PUの右上に隣接するPUであり、B1は、当該PUの上に隣接するPUのうち、B0の左隣に位置するPUである。
なお、A0、A1は、まとめて、当該PUのLeft(左)に位置するPUと総称される。同様に、B1、B2は、当該PUのTop(上)に位置するPUと総称される。これに対して、B0は、当該PUのTop-right(右上)に位置するPUと称される。
また、当該PUの左や上に隣接するとは、当該PUの左や上に面(辺)で接していることをいい、当該PUの左上、左下、右上に隣接するとは、当該PUに点(1箇所)で接していることをいう。
そして、非特許文献3においては、これら(A0、A1、B0、B1、B2)の隣接PUの動きベクトルが、当該PUの空間予測動きベクトルの候補として、当該PUの空間予測動きベクトルの生成に用いられることが提案されている。
具体的には、A0、A1の順にスキャンが、以下の手順で行われ、当該PUの動きベクトル情報と、同等の参照フレームを持つ動きベクトル情報を検出した時点で、そのスキャンは終了される。また、同様に、B0、B1、B2の順にスキャンが、以下の手順で行われ、当該PUの動きベクトル情報と、同等の参照フレームを持つ動きベクトル情報を検出した時点で、そのスキャンは終了される。
その後、A0、A1から検出された動きベクトル情報が左隣接PUの空間予測動きベクトル情報とされ、B0、B1、B2のから検出された動きベクトル情報が上隣接PUの空間予測動きベクトル情報とされる。そして、左隣接PUの空間予測動きベクトル情報、上隣接PUの空間予測動きベクトル情報、別途検出された時間予測動きベクトル情報が候補とされ、その候補の中からよりよいものが選択されることで、予測動きベクトルが生成される。
次に、スキャンの手順について説明する。まず、第1に、当該PUの動きベクトル情報と、Listも、参照フレーム情報も同じであるものが存在するか否かの探索のためのスキャンが行われる。第2に、当該PUの動きベクトル情報と、Listは異なるが、参照フレーム情報が同じであるものが存在するか否かの探索のためのスキャンが行われる。
第3に、当該PUの動きベクトル情報と、Listは同じであるが、参照フレーム情報が異なるものが存在するか否かの探索のためのスキャンが行われる。第4に、当該PUの動きベクトル情報と、Listも、参照フレーム情報も異なるものが存在するか否かの探索のためのスキャンが行われる。
ここで、上述したように、当該PUに対する予測動きベクトルの生成処理を行うためには、当該PUの右上に隣接するPUであるB0に対する動きベクトル情報が確定するのを待つ必要がある。
したがって、動きベクトルの符号化または復号処理、すなわち、AMVPもしくはMerge modeにおいて空間予測動きベクトルを求める処理をパイプラインにより実現しようとすると、右上に隣接するPUであるB0が、遅延の要因になってしまう恐れがあった。
[本技術の空間予測動きベクトルの生成方法]
そこで、動きベクトル符号化部121においては、AMVPもしくはMerge modeにおいて、当該PUの空間予測動きベクトルを求める際に、図8に示された、当該PUの右上に隣接するPUであるB0の動きベクトルの使用を禁止するようにした。
すなわち、動きベクトル符号化部121においては、図9に示されるように、当該PUに対してTopに位置するPUであるB1、B2およびLeftに位置するPUであるA0、A1の動きベクトル情報のみが用いられて、動きベクトルの符号化処理が行われる。
図9の例においては、当該PUの左下に隣接するPUであるA0、当該PUの左に隣接するPUのうち、下端に位置するPUであるA1、当該PUの左上に隣接するPUであるB2、当該PUの上に隣接するPUのうち、右端に位置するPUであるB1が示されている。
図9の例の当該PUの隣接領域は、当該PUのTop-right(右上)に位置するPUであるB0が除かれている点のみ、図8の例の場合と異なっている。
また、動きベクトル符号化部121においては、図9に示された隣接PUに追加して、図10または図11に示される当該PUの上部に隣接する上隣接PUであるB3やB4を用いるようにしてもよい。このように、候補を増やすことにより、符号化効率の低減を抑制することができる。
図10の例においては、図9の例の当該PUに対してTopに位置するPUであるB1、B2およびLeftに位置するPUであるA0、A1の他に、当該PUに対してTopに位置するPUであるB3が示されている。
このB3は、当該PUの上部に隣接するPUであって、当該PUの上部に隣接するPUのうち、右端に位置するPUであるB1の左隣に位置するPUである。
図10の例の場合、B3は、B1の左隣に位置するので、B1の検出を行った後、直に隣接するB3にアクセスすればよいので、アドレス計算のための演算量が低くてすむ。
図11の例においては、図9の例の当該PUに対してTopに位置するPUであるB1、B2およびLeftに位置するPUであるA0、A1の他に、当該PUに対してTopに位置するPUであるB4が示されている。
このB4は、当該PUの上部に隣接するPUであって、当該PUの上部に隣接するPUのうち、当該PUの水平長さの中央付近に位置するPUである。
なお、PUの長さは、4,8,16,…であるため、その長さの中央は、画素ではなく、画素と画素の間に位置することになる。したがって、当該PUの水平長さの中央に位置するのは、必ず単一のPUということになる。
図10の例の場合のように、B1に直に隣接するB3では、動き情報も近いものであることが想定される。これに対して、図11の例の場合、動き情報に、よりバラエティのあるPU群から動き情報を選択することが可能となる。これにより、符号化効率を向上させることが可能となる。
[パイプライン処理]
次に、図12に示される位置関係のPUを用い、図13を参照して、従来と比較した場合の本技術の処理について説明する。
図12の例においては、当該PUであるPU0、PU0の上に隣接するPU-2、PU0の右上に隣接するPU-1が示されている。なお、図12の例においては、説明の便宜上、PU-2、PU-1、PU0は、同じサイズで示されている。
これらのPUは、図13のAおよび図13のBに示されるように、PU-2、PU-1、PU0の順に、動きベクトルの符号化または復号処理が行われるものとする。
非特許文献3で提案されていた方法の場合、図13のAに示されるように、t0で開始されたPU-2の処理が終わるタイミングであるt2よりも後のt3にならないと、PU-1の処理を開始することができない。同様に、t3で開始されたPU-1の処理が終わるタイミングであるt6よりも後のt7にならないと、PU0の処理を開始することができない。なお、PU0の処理は、t9のタイミングに終了される。
これに対して、本技術の方法の場合、図13のBに示されるように、t0で開始されたPU-2の処理が終わるタイミングであるt2よりも前のt1で、PU-1の処理を開始することができる。同様に、t1で開始されたPU-1の処理が終わるタイミングであるt5よりも後のt4で、PU0の処理を開始することができる。これにより、PU0の処理は、図13のAのPUが終わるタイミングであるt9よりも時間的に早いタイミングのt8に終了することができる。
以上のように、本技術の方法の場合、動きベクトルの符号化または復号における空間予測動きベクトルの生成処理をパイプラインにより実現することができるので、より高速に動作する回路を構築することが可能となる。
なお、図13のBにおいては、PU-1の処理がPU-2の処理が終わるタイミングよりも前に開始できることが示されている。しかしながら、実際には、本技術の場合も、PU-1の処理は、PU-1におけるA1の位置のPUの動きベクトルが格納されないために、図13のAと同様に、PU-2の処理が終わらないと開始されない。このように、本技術の方法は、PU-1とPU0の位置関係において効果がある。すなわち、本技術は、対象領域と隣接領域の位置関係に応じて適用される。
[動きベクトル符号化部の構成例]
図14は、動きベクトル符号化部121の主な構成例を示すブロック図である。なお、図14の例において、動きベクトル符号化部121に含まれない部については、点線で示されている。
図14の例の動きベクトル符号化部121は、動きベクトル符号化部131−1および131−2、時間隣接動きベクトル共有バッファ132、並びに空間隣接動きベクトル共有バッファ133を含むように構成される。
動きベクトル符号化部131−1は、例えば、図12に示される、PU-2、PU0、…の予測動きベクトル生成処理を行う。動きベクトル符号化部131−2は、例えば、図12に示される、PU-1、PU1、…の予測動きベクトル生成処理を行う。すなわち、動きベクトル符号化部131−1および131−2は、処理対象のPUが異なるだけであり、基本的に同様に構成される。なお、以下、動きベクトル符号化部131−1および131−2は、個々に区別する必要がない場合、動きベクトル符号化部131と称する。
動きベクトル符号化部131−1は、空間隣接動きベクトル内蔵バッファ141−1、候補予測動きベクトル生成部142−1、コスト関数値算出部143−1、および最適予測動きベクトル決定部144−1を含むように構成される。
動きベクトル符号化部131−2は、空間隣接動きベクトル内蔵バッファ141−2、候補予測動きベクトル生成部142−2、コスト関数値算出部143−2、および最適予測動きベクトル決定部144−2を含むように構成される。
なお、以下、空間隣接動きベクトル内蔵バッファ141−1および141−2を個々に区別する必要がない場合、空間隣接動きベクトル内蔵バッファ141と称する。候補予測動きベクトル生成部142−1および142−2を個々に区別する必要がない場合、候補予測動きベクトル生成部142と称する。コスト関数値算出部143−1および143−2を個々に区別する必要がない場合、コスト関数値算出部143と称する。最適予測動きベクトル決定部144−1および144−2を個々に区別する必要がない場合、最適予測動きベクトル決定部144と称する。
動き予測・補償部115により探索された当該PUの動きベクトルの情報は、コスト関数値算出部143に供給される。動き予測・補償部115により最終的に決定された動きベクトルの情報は、時間隣接動きベクトル共有バッファ132、空間隣接動きベクトル共有バッファ133、および空間隣接動きベクトル内蔵バッファ141に供給される。
時間隣接動きベクトル共有バッファ132は、メモリで構成され、動きベクトル符号化部131−1および131−2により共有される。時間隣接動きベクトル共有バッファ132は、動き予測・補償部115からの動きベクトル情報を、時間的に隣接する時間隣接領域の動きベクトルの情報として蓄積する。なお、時間的に隣接する領域とは、時間軸上異なるピクチャにおいて、当該領域と同じ空間上のアドレスにある領域のことである。
時間隣接動きベクトル共有バッファ132は、当該PUに時間的に隣接する時間隣接PUに対して求められた動きベクトルを示す情報を読み出し、読み出した情報(時間隣接動きベクトル情報)を、候補予測動きベクトル生成部142に供給する。
空間隣接動きベクトル共有バッファ133は、ラインバッファで構成され、動きベクトル符号化部131−1および131−2により共有される。空間隣接動きベクトル共有バッファ133は、動き予測・補償部115からの動きベクトル情報を、空間的に隣接する空間隣接領域の動きベクトルの情報として蓄積する。空間隣接動きベクトル共有バッファ133は、当該PUに空間的に隣接する空間隣接PUのうち、左に隣接する左隣接PU(例えば、図9のA0、A1)に対して求められた動きベクトルを示す情報を読み出す。空間隣接動きベクトル共有バッファ133は、読み出した情報(空間隣接動きベクトル情報)を、候補予測動きベクトル生成部142に供給する。
空間隣接動きベクトル内蔵バッファ141は、ラインバッファで構成される。空間隣接動きベクトル内蔵バッファ141は、動き予測・補償部115からの動きベクトル情報を、空間的に隣接する空間隣接領域の動きベクトルの情報として蓄積する。
空間隣接動きベクトル内蔵バッファ141は、当該PUに空間的に隣接する空間隣接PUのうち、上に隣接する上隣接PU(例えば、図10のB1、B2、B3)に対して求められた動きベクトルを示す情報を読み出す。その際、空間隣接動きベクトル内蔵バッファ141は、当該PUの情報を、隣接動きベクトル情報設定部122に供給する。それに対応して隣接動きベクトル情報設定部122から読み出しを禁止するPUの情報が供給されるので、空間隣接動きベクトル内蔵バッファ141は、上隣接PUのうち、隣接動きベクトル情報設定部122により禁止されているPU(例えば、図8のB0)の動きベクトルを読み出さない。空間隣接動きベクトル内蔵バッファ141は、読み出した情報(空間隣接動きベクトル情報)を、候補予測動きベクトル生成部142に供給する。なお、例えば、図10のB3の動きベクトルを読み出す指示も、隣接動きベクトル情報設定部122が行うようにしてもよい。
候補予測動きベクトル生成部142は、AMVPまたはマージモードによる方法に基づき、空間隣接動きベクトル共有バッファ132からの左隣接PUの空間隣接動きベクトル情報を用いて、当該PUの候補となる空間予測動きベクトルを生成する。また、候補予測動きベクトル生成部142は、AMVPまたはマージモードによる方法に基づき、空間隣接動きベクトル内蔵バッファ141からの上隣接PUの空間隣接動きベクトル情報を用いて、当該PUの候補となる空間予測動きベクトルを生成する。なお、空間隣接動きベクトル内蔵バッファ141において、上隣接PUの空間隣接動きベクトル情報は、隣接動きベクトル情報設定部122により読み出しが制御されている。候補予測動きベクトル生成部142は、生成した候補空間予測動きベクトルを示す情報を、コスト関数値算出部143に供給する。
候補予測動きベクトル生成部142は、AMVPまたはマージモードによる方法に基づいて、時間隣接動きベクトル共有バッファ132からの時間隣接動きベクトル情報を参照して、当該PUの候補となる時間予測動きベクトルを生成する。候補予測動きベクトル生成部142は、生成した候補時間予測動きベクトルを示す情報を、コスト関数値算出部143に供給する。
コスト関数値算出部143は、各候補予測動きベクトルに関するコスト関数値を算出し、算出したコスト関数値を、候補予測動きベクトルの情報とともに最適予測動きベクトル決定部144に供給する。
最適予測動きベクトル決定部144は、コスト関数値算出部143からのコスト関数値を最小とする候補予測動きベクトルを、当該PUに対する最適予測動きベクトルであるとして、その情報を、動き予測・補償部115に供給する。
なお、動き予測・補償部115は、最適予測動きベクトル決定部155からの最適予測動きベクトルの情報を用い、動きベクトルとの差分である差分動きベクトルを生成して、各予測モードについてコスト関数値を算出する。動き予測・補償部115は、そのうち、コスト関数値を最小とする予測モードを、インター最適予測モードに決定する。
動き予測・補償部115は、インター最適予測モードの予測画像を、予測画像選択部116に供給する。なお、動き予測・補償部115は、生成した差分動きベクトル情報を、可逆符号化部106に供給する。
隣接動きベクトル情報設定部122は、空間隣接動きベクトル内蔵バッファ141から当該PUの情報を受け取ると、当該PUの上隣接PUのうち、動きベクトルの使用を禁止するPUのアドレスの情報を、空間隣接動きベクトル内蔵バッファ141に供給する。なお、このとき、必要に応じて(例えば、図10または図11の場合)、当該PUの上隣接PUのうち、動きベクトルの使用を許可するPUのアドレスの情報が、空間隣接動きベクトル内蔵バッファ141に供給されるようにしてもよい。
[符号化処理の流れ]
次に、以上のような画像符号化装置100により実行される各処理の流れについて説明する。最初に、図15のフローチャートを参照して、符号化処理の流れの例を説明する。
ステップS101において、A/D変換部101は入力された画像をA/D変換する。ステップS102において、画面並べ替えバッファ102は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。ステップS103において、イントラ予測部114は、イントラ予測モードのイントラ予測処理を行う。
ステップS104において、動き予測・補償部115、動きベクトル符号化部121、および隣接動きベクトル情報設定部122は、インター予測モードでの動き予測や動き補償を行うインター動き予測処理を行う。このインター動き予測処理についての詳細は、図16を参照して後述する。
ステップS104の処理により、当該PUの動きベクトルが探索され、パイプライン処理により、当該PUの各予測動きベクトルが生成され、そのうち、当該PUに最適な予測動きベクトルが決定される。そして、最適インター予測モードが決定され、最適インター予測モードの予測画像が生成される。
決定された最適インター予測モードの予測画像とコスト関数値は、動き予測・補償部115から予測画像選択部116に供給される。また、決定された最適インター予測モードの情報や最適とされた予測動きベクトルのインデックスを示す情報、予測動きベクトルと動きベクトルの差分を示す情報も、可逆符号化部106に供給され、後述するステップS114において、可逆符号化される。
ステップS105において、予測画像選択部116は、イントラ予測部114および動き予測・補償部115から出力された各コスト関数値に基づいて、最適なモードを決定する。つまり、予測画像選択部116は、イントラ予測部114により生成された予測画像と、動き予測・補償部115により生成された予測画像のいずれか一方を選択する。
なお、予測画像の選択方式の例として、JM(Joint Model)と呼ばれるAVC方式の参照ソフトウエア(http://iphome.hhi.de/suehring/tml/index.htm において公開されている)に実装されている方法を挙げることが出来る。
JMにおいては、以下に述べる、High Complexity Modeと、Low Complexity Modeの2通りのモード判定方法を選択することができる。どちらも、それぞれの予測モードに関するコスト関数値を算出し、これを最小にする予測モードを当該サブマクロブロック、または、当該マクロブロックに対する最適モードとして選択する。
High Complexity Modeにおけるコスト関数は、以下の式(9)のように示される。
Cost(Mode∈Ω) = D + λ*R ・・・(9)
ここで、Ωは、当該ブロック乃至マクロブロックを符号化するための候補モードの全体集合、Dは、当該予測モードで符号化した場合の、復号画像と入力画像の差分エネルギーである。λは、量子化パラメータの関数として与えられるLagrange未定乗数である。Rは、直交変換係数を含んだ、当該モードで符号化した場合の総符号量である。
つまり、High Complexity Modeでの符号化を行うには、上記パラメータD及びRを算出するため、全ての候補モードにより、一度、仮エンコード処理を行う必要があり、より高い演算量を要する。
Low Complexity Modeにおけるコスト関数は、以下の式(10)のように示される。
Cost(Mode∈Ω) = D + QP2Quant(QP) * HeaderBit ・・・(10)
ここで、Dは、High Complexity Modeの場合と異なり、予測画像と入力画像の差分エネルギーとなる。QP2Quant(QP)は、量子化パラメータQPの関数として与えられ、HeaderBitは、直交変換係数を含まない、動きベクトルや、モードといった、Headerに属する情報に関する符号量である。
すなわち、Low Complexity Modeにおいては、それぞれの候補モードに関して、予測処理を行う必要があるが、復号画像までは必要ないため、符号化処理まで行う必要はない。このため、High Complexity Modeより低い演算量での実現が可能である。
図15に戻り、ステップS106において、演算部103は、ステップS102の処理により並び替えられた画像と、ステップS105の処理により選択された予測画像との差分を演算する。差分データは元の画像データに較べてデータ量が低減される。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
ステップS107において、直交変換部104は、ステップS106の処理により生成された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。
ステップS108において、量子化部105は、レート制御部117からの量子化パラメータを用いて、ステップS107の処理により得られた直交変換係数を量子化する。
ステップS108の処理により量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS109において、逆量子化部108は、ステップS108の処理により生成された量子化された直交変換係数(量子化係数とも称する)を量子化部105の特性に対応する特性で逆量子化する。ステップS110において、逆直交変換部109は、ステップS109の処理により得られた直交変換係数を、直交変換部104の特性に対応する特性で逆直交変換する。
ステップS111において、演算部110は、予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像(演算部103への入力に対応する画像)を生成する。ステップS112においてデブロックフィルタ111は、ステップS111の処理により得られた局部的な復号画像に対して、デブロックフィルタ処理を適宜行う。
ステップS113において、フレームメモリ112は、ステップS112の処理によりデブロックフィルタ処理が施された復号画像を記憶する。なお、フレームメモリ112にはデブロックフィルタ111によりフィルタ処理されていない画像も演算部110から供給され、記憶される。
ステップS114において、可逆符号化部106は、ステップS108の処理により量子化された変換係数を符号化する。すなわち、差分画像に対して、可変長符号化や算術符号化等の可逆符号化が行われる。
また、このとき、可逆符号化部106は、ステップS105の処理により選択された予測画像の予測モードに関する情報を符号化し、差分画像を符号化して得られる符号化データに付加する。つまり、可逆符号化部106は、イントラ予測部114から供給される最適イントラ予測モード情報、または、動き予測・補償部115から供給される最適インター予測モードに応じた情報なども符号化し、符号化データに付加する。
なお、ステップS105の処理によりインター予測モードの予測画像が選択された場合には、ステップS104において算出された差分動きベクトルの情報や予測動きベクトルのインデックスを示すフラグも符号化される。
ステップS115において蓄積バッファ107は、ステップS114の処理により得られた符号化データを蓄積する。蓄積バッファ107に蓄積された符号化データは、適宜読み出され、伝送路や記録媒体を介して復号側に伝送される。
ステップS116においてレート制御部117は、ステップS115の処理により蓄積バッファ107に蓄積された符号化データの符号量(発生符号量)に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。また、レート制御部117は、量子化パラメータに関する情報を、量子化部105に供給する。
ステップS116の処理が終了すると、符号化処理が終了される。
[インター動き予測処理の流れ]
次に、図16のフローチャートを参照して、図15のステップS104において実行されるインター動き予測処理の流れの例を説明する。
ステップS131において、動き予測・補償部115は、各インター予測モードについて動き探索を行う。動き予測・補償部115により探索された当該PUの動きベクトル情報は、コスト関数値算出部143に供給される。
ステップS132において、動きベクトル符号化部131は、図5または図7を参照して上述したAMVPまたはマージモードによる方法に基づいて、当該PUの予測動きベクトルを生成する。この予測動きベクトル生成処理の詳細は、図17を参照して後述される。
ステップS132の処理により、空間隣接動きベクトル共有バッファ132からの左隣接PUの隣接動きベクトル情報を参照して、当該PUの候補となる空間候補予測動きベクトルが生成される。隣接動きベクトル情報設定部122の制御のもと供給される、空間隣接動きベクトル内蔵バッファ141からの上隣接PUの隣接動きベクトル情報を参照して、当該PUの候補となる空間候補予測動きベクトルが生成される。さらに、時間隣接動きベクトル共有バッファ132からの時間隣接動きベクトル情報を参照して、当該PUの候補となる時間候補予測動きベクトルが生成される。
生成された予測動きベクトルの情報は、候補予測動きベクトル情報として供給され、その候補予測動きベクトルに関するコスト関数値が算出されて、当該PUに対する最適予測動きベクトルが決定され、決定された情報が、動き予測・補償部115に供給される。
動き予測・補償部115は、ステップS133において、最適予測動きベクトル決定部144からの最適予測動きベクトル情報を用い、動きベクトルとの差分である差分動きベクトルを生成して、各インター予測モードに関するコスト関数値を算出する。なお、コスト関数としては、上述した式(9)または式(10)が用いられる。
ステップS134において、動き予測・補償部115は、各予測モードのうち、コスト関数値を最小とする予測モードを、最適インター予測モードに決定する。動き予測・補償部115は、ステップS135において、最適インター予測モードの予測画像を生成し、予測画像選択部116に供給する。なお、このとき、最適インター予測モードの動きベクトル情報が、次のPUの予測動きベクトルの生成のため、時間隣接動きベクトル共有バッファ132、空間隣接動きベクトル共有バッファ133、空間隣接動きベクトル内蔵バッファ141に供給される。
ステップS136において、動き予測・補償部115は、最適インター予測モードに関する情報を、可逆符号化部106に供給し、最適インター予測モードに関する情報を符号化させる。
なお、最適インター予測モードに関する情報は、例えば、最適インター予測モードの情報、最適インター予測モードの差分動きベクトル情報、最適インター予測モードの参照ピクチャ情報、および予測動きベクトルのインデックスを示すフラグなどである。
ステップS136の処理に対応して、供給されたこれらの情報は、図15のステップS114において、符号化される。
[予測動きベクトル生成処理の流れ]
次に、図17のフローチャートを参照して、図16のステップS132において実行されるインター動き予測処理の流れの例を説明する。なお、図17の例においては、パイプラインによる処理であることを明示するため、動きベクトル符号化部131−1による処理と動きベクトル符号化部131−2による処理とが分けて示されている。ただし、ステップS156の処理は、時間隣接動きベクトル共有バッファ132および空間隣接動きベクトル共有バッファ133の処理なので、まとめて示されている。
すなわち、図17の例においては、動きベクトル符号化部131−1により実行される、PU-2、PU0、…に対する予測動きベクトル生成処理が左側に示されている。一方、動きベクトル符号化部131−2により実行される、PU-1、PU1、…に対する予測動きベクトル生成処理が右側に示されている。
また、図17の例においては、どのステップで格納された動きベクトル情報が、どのステップで用いられるのかを明示するための点線が示されている。
ステップS151−1において、候補予測動きベクトル生成部142−1は、当該PU-2のtop(上)に位置する空間予測動きベクトルを決定する。すなわち、後述するステップS155−1において空間隣接動きベクトル内蔵バッファ141−1に、処理済みの上隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル内蔵バッファ141−1から、隣接動きベクトル情報設定部122の制御のもと、当該PU-2の上に隣接する上隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル内蔵バッファ141−1から、図10のB1、B2、B3の動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−1に供給される。
候補予測動きベクトル生成部142−1は、上隣接PUの動きベクトル情報を用いて、図8を参照して上述したように、例えば、図10のB1、B3、B2の順にスキャンを行い、当該PU-2のtop(上)に位置する空間予測動きベクトルを決定する。決定された空間予測動きベクトル情報は、コスト関数値算出部143−1に供給される。
ステップS152−1において、候補予測動きベクトル生成部142−1は、当該PU-2のleft(左)に位置する空間予測動きベクトルを決定する。すなわち、後述するステップS156において空間隣接動きベクトル共有バッファ133に、処理済みの左隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル共有バッファ133から、当該PU-2の左に隣接する左隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル共有バッファ133から、図10のA0、A1の動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−1に供給される。
候補予測動きベクトル生成部142−1は、左隣接PUの動きベクトル情報を用いて、図8を参照して上述したように、例えば、図10のA0、A1の順にスキャンを行い、当該PU-2のleft(左)に位置する空間予測動きベクトルを決定する。決定された空間予測動きベクトル情報は、コスト関数値算出部143−1に供給される。
ステップS153−1において、候補予測動きベクトル生成部142−1は、当該PU-2に時間的に隣接する時間予測動きベクトルを決定する。すなわち、後述するステップS156において時間隣接動きベクトル共有バッファ132に、処理済みの時間隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、時間隣接動きベクトル共有バッファ132から、所定のPUの動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−1に供給される。
候補予測動きベクトル生成部142−1は、時間隣接PUの動きベクトル情報を用いて、当該PU-2の時間予測動きベクトルを決定する。決定された時間予測動きベクトル情報は、コスト関数値算出部143−1に供給される。
コスト関数値算出部143−1は、各候補予測動きベクトル情報についてコスト関数値を算出し、算出したコスト関数値と、候補予測動きベクトル情報とを、最適予測動きベクトル決定部144−1に供給する。なお、コスト関数値の算出には、図16のステップS131において動き予測・補償部115から供給された当該PUの動きベクトル情報が用いられる。また、コスト関数としては、例えば、上述した式(9)または式(10)が用いられる。
ステップS154−1において、最適予測動きベクトル決定部144−1は、コスト関数値算出部143−1からのコスト関数値を最小とする候補予測動きベクトルを、当該PU-2に対する最適予測動きベクトルに決定する。最適予測動きベクトル決定部144−1は、当該PU-2に対する最適予測動きベクトルの情報を、動き予測・補償部115に供給する。
これに対応して、動き予測・補償部115は、対象領域の動きベクトルと、最適予測動きベクトル決定部144−1からの対象領域の予測動きベクトルとの差分である差分動きベクトルを生成する。また、動き予測・補償部115は、画面並べ替えバッファ102からの入力画像や差分動きベクトルの情報などを用いて、上述した図16のステップS133において各予測画像のコスト関数値を評価し、ステップS134において最適なモードを選択する。そして、動き予測・補償部115は、最適なモードの動きベクトル情報を、時間隣接動きベクトル共有バッファ132、空間隣接動きベクトル共有バッファ133、空間隣接動きベクトル内蔵バッファ141−1に供給してくる。
ステップS155−1において、空間隣接動きベクトル内蔵バッファ141−1は、当該PU-2の動きベクトル情報を、次のPUのための空間隣接動きベクトル情報として格納する。
ステップS156において、時間隣接動きベクトル共有バッファ132は、当該PU-2の動きベクトル情報を、次以降のPUのための時間隣接動きベクトル情報として格納する。同様に、空間隣接動きベクトル共有バッファ133は、当該PU-2の動きベクトル情報を、次以降のPUのための空間隣接動きベクトル情報として格納する。
一方、ステップS151−2において、候補予測動きベクトル生成部142−2は、当該PU-1のtop(上)に位置する空間予測動きベクトルを決定する。すなわち、後述するステップS155−2において空間隣接動きベクトル内蔵バッファ141−2に、処理済みの上隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル内蔵バッファ141−2から、隣接動きベクトル情報設定部122の制御のもと、当該PU-1の上に隣接する上隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル内蔵バッファ141−2から、図10のB1、B2、B3の動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−2に供給される。
候補予測動きベクトル生成部142−2は、上隣接PUの動きベクトル情報を用いて、図8を参照して上述したように、例えば、図10のB1、B3、B2の順にスキャンを行い、当該PU-1のtop(上)に位置する空間予測動きベクトルを決定する。決定された空間予測動きベクトル情報は、コスト関数値算出部143−2に供給される。
ステップS152−2において、候補予測動きベクトル生成部142−2は、当該PU-1のleft(左)に位置する空間予測動きベクトルを決定する。すなわち、後述するステップS156において空間隣接動きベクトル共有バッファ133に、処理済みの左隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル共有バッファ133から、当該PU-1の左に隣接する左隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル共有バッファ133から、図10のA0、A1の動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−2に供給される。
候補予測動きベクトル生成部142−2は、左隣接PUの動きベクトル情報を用いて、図8を参照して上述したように、例えば、図10のA0、A1の順にスキャンを行い、当該PU-1のleft(左)に位置する空間予測動きベクトルを決定する。決定された空間予測動きベクトル情報は、コスト関数値算出部143−2に供給される。
ステップS153−2において、候補予測動きベクトル生成部142−2は、当該PU-1に時間的に隣接する時間予測動きベクトルを決定する。すなわち、後述するステップS156において時間隣接動きベクトル共有バッファ132に、処理済みの時間隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、時間隣接動きベクトル共有バッファ132から、所定のPUの動きベクトル情報が読み出され、読み出された動きベクトル情報が、候補予測動きベクトル生成部142−2に供給される。
候補予測動きベクトル生成部142−2は、時間隣接PUの動きベクトル情報を用いて、当該PU-1の時間予測動きベクトルを決定する。決定された時間予測動きベクトル情報は、コスト関数値算出部143−2に供給される。
コスト関数値算出部143−2は、各候補予測動きベクトル情報についてコスト関数値を算出し、算出したコスト関数値と、候補予測動きベクトル情報とを、最適予測動きベクトル決定部144−2に供給する。なお、コスト関数値の算出には、図16のステップS131において動き予測・補償部115から供給された当該PUの動きベクトル情報が用いられる。また、コスト関数としては、上述した式(9)または式(10)が用いられる。
ステップS154−2において、最適予測動きベクトル決定部144−2は、コスト関数値算出部143−2からのコスト関数値を最小とする候補予測動きベクトルを、当該PU-1に対する最適予測動きベクトルに決定する。最適予測動きベクトル決定部144−2は、当該PU-1に対する最適予測動きベクトルの情報を、動き予測・補償部115に供給する。
これに対応して、動き予測・補償部115は、対象領域の動きベクトルと、最適予測動きベクトル決定部144−2からの対象領域の予測動きベクトルとの差分である差分動きベクトルを生成する。また、動き予測・補償部115は、画面並べ替えバッファ102からの入力画像や差分動きベクトルの情報などを用いて、上述した図16のステップS133において各予測画像のコスト関数値を評価し、ステップS134において最適なモードを選択する。そして、動き予測・補償部115は、最適なモードの動きベクトル情報を、時間隣接動きベクトル共有バッファ132、空間隣接動きベクトル共有バッファ133、空間隣接動きベクトル内蔵バッファ141−2に供給してくる。
ステップS155−2において、空間隣接動きベクトル内蔵バッファ141−2は、当該PU-1の動きベクトル情報を、次のPUのための空間隣接動きベクトル情報として格納する。
ステップS156において、時間隣接動きベクトル共有バッファ132は、当該PU-1の動きベクトル情報を、次以降のPUのための時間隣接動きベクトル情報として格納する。同様に、空間隣接動きベクトル共有バッファ133は、当該PU-1の動きベクトル情報を、次以降のPUのための空間隣接動きベクトル情報として格納する。
以上のように、当該PUの動きベクトルの符号化のために用いられる、予測動きベクトルの生成処理において、当該PUの右上に位置するPUの動きベクトル情報の使用を禁止するようにした。
これにより、ステップS155−1の処理の後、動きベクトル符号化部131−1は、ステップS155−2の動きベクトル符号化部131−2によるPU-1に対する処理が終わってなくても、すぐに、次のPU0に対する処理を行うことができる。すなわち、図13を参照して上述したように、パイプラインによる処理を行うことが可能になる。
<2.第2の実施の形態>
[画像復号装置]
次に、以上のように符号化された符号化データ(符号化ストリーム)の復号について説明する。図18は、図1の画像符号化装置100に対応する画像復号装置の主な構成例を示すブロック図である。
図18に示される画像復号装置200は、画像符号化装置100が生成した符号化データを、その符号化方法に対応する復号方法で復号する。なお、画像復号装置200は、画像符号化装置100と同様に、プレディクションユニット(PU)毎にインター予測を行うものとする。
図18に示されるように画像復号装置200は、蓄積バッファ201、可逆復号部202、逆量子化部203、逆直交変換部204、演算部205、デブロックフィルタ206、画面並べ替えバッファ207、およびD/A変換部208を有する。また、画像復号装置200は、フレームメモリ209、選択部210、イントラ予測部211、動き予測・補償部212、および選択部213を有する。
さらに、画像復号装置200は、動きベクトル復号部221、および隣接動きベクトル情報設定部222を有する。
蓄積バッファ201は、伝送されてきた符号化データを受け取る受け取り部でもある。蓄積バッファ201は、伝送されてきた符号化データを受け取って、蓄積し、所定のタイミングにおいてその符号化データを可逆復号部202に供給する。符号化データには、予測モード情報、動きベクトル差分情報、予測動きベクトルのインデックスなどの復号に必要な情報が付加されている。可逆復号部202は、蓄積バッファ201より供給された、図1の可逆符号化部106により符号化された情報を、可逆符号化部106の符号化方式に対応する方式で復号する。可逆復号部202は、復号して得られた差分画像の量子化された係数データを、逆量子化部203に供給する。
また、可逆復号部202は、最適な予測モードにイントラ予測モードが選択されたかインター予測モードが選択されたかを判定し、その最適な予測モードに関する情報を、イントラ予測部211および動き予測・補償部212の内、選択されたと判定したモードの方に供給する。つまり、例えば、画像符号化装置100において最適な予測モードとしてインター予測モードが選択された場合、その最適な予測モードに関する情報が動き予測・補償部212に供給される。
逆量子化部203は、可逆復号部202により復号されて得られた量子化された係数データを、図1の量子化部105の量子化方式に対応する方式で逆量子化し、得られた係数データを逆直交変換部204に供給する。
逆直交変換部204は、図1の直交変換部104の直交変換方式に対応する方式で逆量子化部203から供給される係数データを逆直交変換する。逆直交変換部204は、この逆直交変換処理により、画像符号化装置100において直交変換される前の残差データに対応する復号残差データを得る。
逆直交変換されて得られた復号残差データは、演算部205に供給される。また、演算部205には、選択部213を介して、イントラ予測部211若しくは動き予測・補償部212から予測画像が供給される。
演算部205は、その復号残差データと予測画像とを加算し、画像符号化装置100の演算部103により予測画像が減算される前の画像データに対応する復号画像データを得る。演算部205は、その復号画像データをデブロックフィルタ206に供給する。
デブロックフィルタ206は、供給された復号画像に対して、デブロックフィルタ処理を適宜施し、それを画面並べ替えバッファ207に供給する。デブロックフィルタ206は、ループフィルタ206は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。
デブロックフィルタ206は、フィルタ処理結果(フィルタ処理後の復号画像)を画面並べ替えバッファ207およびフレームメモリ209に供給する。なお、演算部205から出力される復号画像は、デブロックフィルタ206を介さずに画面並べ替えバッファ207やフレームメモリ209に供給することができる。つまり、デブロックフィルタ206によるフィルタ処理は省略することができる。
画面並べ替えバッファ207は、画像の並べ替えを行う。すなわち、図1の画面並べ替えバッファ102により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部208は、画面並べ替えバッファ207から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
フレームメモリ209は、供給される復号画像を記憶し、所定のタイミングにおいて、若しくは、イントラ予測部211や動き予測・補償部212等の外部の要求に基づいて、記憶している復号画像を参照画像として、選択部210に供給する。
選択部210は、フレームメモリ209から供給される参照画像の供給先を選択する。選択部210は、イントラ符号化された画像を復号する場合、フレームメモリ209から供給される参照画像をイントラ予測部211に供給する。また、選択部210は、インター符号化された画像を復号する場合、フレームメモリ209から供給される参照画像を動き予測・補償部212に供給する。
イントラ予測部211には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報等が可逆復号部202から適宜供給される。イントラ予測部211は、図1のイントラ予測部114において用いられたイントラ予測モードで、フレームメモリ209から取得した参照画像を用いてイントラ予測を行い、予測画像を生成する。イントラ予測部211は、生成した予測画像を選択部213に供給する。
動き予測・補償部212は、ヘッダ情報を復号して得られた情報(最適予測モード情報、参照画像情報等)を可逆復号部202から取得する。
動き予測・補償部212は、可逆復号部202から取得された最適予測モード情報が示すインター予測モードで、フレームメモリ209から取得した参照画像を用いてインター予測を行い、予測画像を生成する。なお、このとき、動き予測・補償部212は、動きベクトル復号部221により再構築された動きベクトル情報を用いて、インター予測を行う。
選択部213は、イントラ予測部211からの予測画像または動き予測・補償部212からの予測画像を、演算部205に供給する。そして、演算部205においては、動きベクトルが用いられて生成された予測画像と逆直交変換部204からの復号残差データ(差分画像情報)とが加算されて元の画像が復号される。すなわち、動き予測・補償部212、可逆復号部202、逆量子化部203、逆直交変換部204、演算部205は、動きベクトルを用いて、符号化データを復号し、元の画像を生成する復号部でもある。
動きベクトル復号部221は、ヘッダ情報を復号して得られた情報のうち、予測動きベクトルのインデックスの情報と差分動きベクトルの情報を可逆復号部202から取得する。ここで、予測動きベクトルのインデックスとは、それぞれのPUに対して、時空間に隣接する隣接領域のうち、どの隣接領域の動きベクトルにより動きベクトルの予測処理(予測動きベクトルの生成)が行われているかを示す情報である。差分動きベクトルに関する情報は、差分動きベクトルの値を示す情報である。
動きベクトル復号部221は、予測動きベクトルのインデックスが示すPUの動きベクトルを用いて、予測動きベクトルを再構築する。特に、予測動きベクトルのインデックスが示すPUが空間的に対象領域に隣接する空間隣接領域の場合、動きベクトル復号部221は、隣接動きベクトル情報設定部222により使用が禁止されていない隣接領域の動きベクトルを用いて、空間予測動きベクトルを生成する。動きベクトル復号部221は、また、再構築した予測動きベクトルと、可逆復号部202からの差分動きベクトルを加算することで、動きベクトルを再構築し、再構築した動きベクトルの情報を、動き予測・補償部212に供給する。
隣接動きベクトル情報設定部222は、対象領域に空間的に隣接する隣接領域のうち、どの隣接領域の動きベクトルを使用するか、あるいは、どの隣接領域の動きベクトルの使用を禁止するかを設定する。具体的には、隣接動きベクトル情報設定部222は、対象領域に対して右上に隣接して位置する隣接領域の動きベクトルの使用を禁止する。
なお、動きベクトル復号部221および隣接動きベクトル情報設定部222における、本技術に関連する基本的な動作原理は、図1の動きベクトル符号化部121および隣接動きベクトル情報設定部122と同様である。ただし、図1に示された画像符号化装置100においては、候補予測動きベクトル情報から、それぞれのPUに最適なものを選択する際、空間予測動きベクトルに対して、本技術が適用される。
一方、図18に示される画像復号装置200においては、それぞれのPUに対して、どの予測動きベクトルを用いた符号化処理がなされているかに関する情報(予測動きベクトルのインデックス)が符号化側から送られている。したがって、画像復号装置200においては、空間予測動きベクトルによる符号化が行われている場合に、本技術が適用される。
[動きベクトル復号部の構成例]
図19は、動きベクトル復号部221の主な構成例を示すブロック図である。なお、図19の例において、動きベクトル復号部221に含まれない部については、点線で示されている。
図19の例の動きベクトル復号部221は、動きベクトル復号部231−1および231−2、時間隣接動きベクトル共有バッファ232、並びに空間隣接動きベクトル共有バッファ233を含むように構成される。
動きベクトル復号部231−1は、例えば、図12に示される、PU-2、PU0、…の予測動きベクトル生成(再構築)処理を含む動きベクトル再構築処理を行う。動きベクトル復号部231−2は、例えば、図12に示される、PU-1、PU1、…の予測動きベクトル生成(再構築)処理を含む動きベクトル再構築処理を行う。すなわち、動きベクトル復号部231−1および231−2は、処理対象のPUが異なるだけであり、基本的に同様に構成される。なお、以下、動きベクトル復号部231−1および231−2は、個々に区別する必要がない場合、動きベクトル復号部231と称する。
動きベクトル復号部231−1は、予測動きベクトル情報バッファ241−1、差分動きベクトル情報バッファ242−1、予測動きベクトル再構築部243−1、および動きベクトル再構築部244−1を含むように構成される。動きベクトル復号部231−1は、さらに、空間隣接動きベクトル内蔵バッファ245−1も含むように構成される。
動きベクトル復号部231−2は、予測動きベクトル情報バッファ241−2、差分動きベクトル情報バッファ242−2、予測動きベクトル再構築部243−2、および動きベクトル再構築部244−2を含むように構成される。動きベクトル復号部231−2は、さらに、空間隣接動きベクトル内蔵バッファ245−2も含むように構成される。
なお、以下、予測動きベクトル情報バッファ241−1および241−2を個々に区別する必要がない場合、予測動きベクトル情報バッファ241と称する。差分動きベクトル情報バッファ242−1および241−2を個々に区別する必要がない場合、差分動きベクトル情報バッファ242と称する。予測動きベクトル再構築部243−1および243−2を個々に区別する必要がない場合、予測動きベクトル再構築部243と称する。動きベクトル再構築部244−1および244−2を個々に区別する必要がない場合、動きベクトル再構築部244と称する。空間隣接動きベクトル内蔵バッファ245−1および245−2を個々に区別する必要がない場合、空間隣接動きベクトル内蔵バッファ245と称する。
時間隣接動きベクトル共有バッファ232は、メモリで構成され、動きベクトル復号部231−1および231−2により共有される。時間隣接動きベクトル共有バッファ232は、動きベクトル再構築部244からの動きベクトル情報を、時間的に隣接する時間隣接領域の動きベクトルの情報として蓄積する。なお、時間的に隣接する領域とは、時間軸上異なるピクチャにおいて、当該領域と同じ空間上のアドレスにある領域のことである。
時間隣接動きベクトル共有バッファ232は、当該PUに時間的に隣接する時間隣接PUに対して求められた動きベクトルを示す情報を読み出し、読み出した情報(時間隣接動きベクトル情報)を、予測動きベクトル再構築部244に供給する。
空間隣接動きベクトル共有バッファ233は、ラインバッファで構成され、動きベクトル復号部231−1および231−2により共有される。空間隣接動きベクトル共有バッファ233は、動きベクトル再構築部244からの動きベクトル情報を、空間的に隣接する空間隣接領域の動きベクトルの情報として蓄積する。空間隣接動きベクトル共有バッファ233は、当該PUに空間的に隣接する空間隣接PUのうち、左に隣接する左隣接PU(例えば、図9のA0、A1)に対して求められた動きベクトルを示す情報を読み出す。空間隣接動きベクトル共有バッファ233は、読み出した情報(空間隣接動きベクトル情報)を、予測動きベクトル再構築部244に供給する。
予測動きベクトル情報バッファ241は、可逆復号部202により復号された対象領域(PU)の予測動きベクトルのインデックスを示す情報(以下、予測動きベクトルの情報と称する)を蓄積する。予測動きベクトル情報バッファ241は、当該PUの予測動きベクトルの情報を読み出し、予測動きベクトル再構築部243に供給する。
差分動きベクトル情報バッファ242は、可逆復号部202により復号された対象領域(PU)の差分動きベクトルの情報を蓄積する。差分動きベクトル情報バッファ242は、当該PUの差分動きベクトルの情報を読み出し、動きベクトル再構築部244に供給する。
予測動きベクトル再構築部243は、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが示す予測動きベクトルを、AMVPまたはマージモードによる方法に基づき、再構築する。予測動きベクトル再構築部243は、再構築した予測動きベクトルの情報を、動きベクトル再構築部244に供給する。
すなわち、予測動きベクトル再構築部243は、当該PUの予測動きベクトルのインデックスが上隣接PUの空間予測動きベクトルを示す場合、空間隣接動きベクトル内蔵バッファ245からの当該PUに空間的に隣接する上隣接PUの空間隣接動きベクトル情報を用いて、当該PUの空間予測動きベクトルを生成する。なお、空間隣接動きベクトル内蔵バッファ245において、上隣接PUの空間隣接動きベクトル情報は、隣接動きベクトル情報設定部222により読み出しが制御されている。
予測動きベクトル再構築部243は、当該PUの予測動きベクトルのインデックスが左隣接PUの空間予測動きベクトルを示す場合、空間隣接動きベクトル共有バッファ233からの当該PUに空間的に隣接する左隣接PUの空間隣接動きベクトル情報を用いて、当該PUの空間予測動きベクトルを生成する。さらに、予測動きベクトル再構築部243は、当該PUの予測動きベクトルのインデックスが時間予測動きベクトルを示す場合、時間隣接動きベクトル共有バッファ232からの当該PUに時間的に隣接する時間隣接動きベクトル情報を用いて、当該PUの時間予測動きベクトルを生成する。
動きベクトル再構築部244は、差分動きベクトル情報バッファ242からの情報が示す当該PUの差分動きベクトルと、再構築された当該PUの予測動きベクトルとを加算することで、動きベクトルを再構築する。動きベクトル再構築部244は、再構築された動きベクトルを示す情報を、動き予測・補償部212、空間隣接動きベクトル内蔵バッファ245、空間隣接動きベクトル共有バッファ233、および時間隣接動きベクトル共有バッファ232に供給する。
空間隣接動きベクトル内蔵バッファ245は、ラインバッファで構成されている。空間隣接動きベクトル内蔵バッファ245は、動きベクトル再構築部244により再構築された動きベクトル情報を、同じピクチャ内の以降のPUの予測動きベクトル情報のための空間隣接動きベクトル情報として蓄積する。
空間隣接動きベクトル内蔵バッファ245は、当該PUに空間的に隣接する空間隣接PUのうち、上に隣接する上隣接PU(例えば、図10のB1、B2、B3)に対して求められた動きベクトルを示す情報を読み出す。その際、空間隣接動きベクトル内蔵バッファ245は、当該PUの情報を、隣接動きベクトル情報設定部222に供給する。それに対応して隣接動きベクトル情報設定部222から読み出しを禁止するPUの情報が供給されるので、空間隣接動きベクトル内蔵バッファ245は、上隣接PUのうち、隣接動きベクトル情報設定部222により禁止されているPU(例えば、図8のB0)の動きベクトルを読み出さない。空間隣接動きベクトル内蔵バッファ245は、読み出した情報(空間隣接動きベクトル情報)を、予測動きベクトル再構築部243に供給する。なお、例えば、図10のB3の動きベクトルを読み出す指示も、隣接動きベクトル情報設定部222が行うようにしてもよい。
隣接動きベクトル情報設定部222は、空間隣接動きベクトル内蔵バッファ245から当該PUの情報を受け取ると、当該PUの上隣接PUのうち、動きベクトルの使用を禁止するPUのアドレスの情報を、空間隣接動きベクトル内蔵バッファ245に供給する。なお、このとき、必要に応じて(例えば、図10または図11の場合)、当該PUの上隣接PUのうち、動きベクトルの使用を許可するPUのアドレスの情報も、空間隣接動きベクトル内蔵バッファ245に供給されるようにしてもよい。
なお、動き予測・補償部212は、この動きベクトル再構築部244により再構築された当該PUの動きベクトルを用いて、可逆復号部202から取得された最適予測モード情報が示すインター予測モードで、参照画像を用いて予測画像を生成する。
[復号処理の流れ]
次に、以上のような画像復号装置200により実行される各処理の流れについて説明する。最初に、図20のフローチャートを参照して、復号処理の流れの例を説明する。
復号処理が開始されると、ステップS201において、蓄積バッファ201は、伝送されてきたコードストリームを蓄積する。ステップS202において、可逆復号部202は、蓄積バッファ201から供給されるコードストリーム(符号化された差分画像情報)を復号する。すなわち、図1の可逆符号化部106により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。
このとき、ヘッダ情報などのコードストリームに含められた差分画像情報以外の各種情報も復号される。可逆復号部202は、例えば、予測モード情報、差分動きベクトルの情報、および予測動きベクトルのインデックスを示すフラグなどを取得する。可逆復号部202は、取得した情報を、対応する部に供給する。
ステップS203において、逆量子化部203は、ステップS202の処理により得られた、量子化された直交変換係数を逆量子化する。ステップS204において逆直交変換部204は、ステップS203において逆量子化された直交変換係数を逆直交変換する。
ステップS205において、可逆復号部202は、ステップS202において復号した最適な予測モードに関する情報に基づいて、処理対象の符号化データがイントラ符号化されているか否かを判定する。イントラ符号化されていると判定された場合、処理は、ステップS206に進む。
ステップS206において、イントラ予測部211は、イントラ予測モード情報を取得する。ステップS207において、イントラ予測部211は、ステップS206において取得したイントラ予測モード情報を用いてイントラ予測を行い、予測画像を生成する。
また、ステップS206において、処理対象の符号化データがイントラ符号化されていない、すなわち、インター符号化されていると判定された場合、処理は、ステップS208に進む。
ステップS208において、動きベクトル復号部221、および隣接動きベクトル情報設定部222は、動きベクトル再構築処理を行う。この動きベクトル再構築処理についての詳細は、図21を参照して後述する。
ステップS208の処理により、復号された予測動きベクトルに関する情報が参照されて、パイプライン処理により、当該PUの予測動きベクトルが生成される。すなわち、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが示す予測動きベクトルが再構築される。そして、再構築された当該PUの予測動きベクトルが用いられて、動きベクトルが再構築され、再構築された動きベクトルは、動き予測・補償部212に供給される。
より具体的には、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが、左の空間予測動きベクトルを示す場合、空間隣接動きベクトル共有バッファ233からの左隣接PUの隣接動きベクトル情報を参照して、当該PUの予測動きベクトルが再構築される。予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが、上の空間予測動きベクトルを示す場合、隣接動きベクトル情報設定部222の制御のもと供給される、空間隣接動きベクトル内蔵バッファ245からの上隣接PUの隣接動きベクトル情報を参照して、当該PUの予測動きベクトルが再構築される。さらに、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが、時間予測動きベクトルを示す場合、時間隣接動きベクトル共有バッファ232からの時間隣接動きベクトル情報を参照して、当該PUの予測動きベクトルが再構築される。
ステップS209において、動き予測・補償部212は、ステップS208の処理により再構築された動きベクトルを用いて、インター動き予測処理を行い、予測画像を生成する。生成した予測画像は、選択部213に供給される。
ステップS210において、選択部213は、ステップS207またはステップS209において生成された予測画像を選択する。ステップS211において、演算部205は、ステップS204において逆直交変換されて得られた差分画像情報に、ステップS210において選択された予測画像を加算する。これにより元の画像が復号される。すなわち、動きベクトルが用いられて、予測画像が生成され、生成された予測画像と逆直交変換部204からの差分画像情報とが加算されて元の画像が復号される。
ステップS212において、デブロックフィルタ206は、ステップS211において得られた復号画像に対して、デブロックフィルタ処理を適宜行う。
ステップS213において、画面並べ替えバッファ207は、ステップS212においてフィルタ処理された画像の並べ替えを行う。すなわち画像符号化装置100の画面並べ替えバッファ102により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS214において、D/A変換部208は、ステップS213においてフレームの順序が並べ替えられた画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
ステップS215において、フレームメモリ209は、ステップS212においてフィルタ処理された画像を記憶する。
ステップS215の処理が終了すると、復号処理が終了される。
[動きベクトル再構築処理の流れ]
次に、図21のフローチャートを参照して、図20のステップS208において実行される動きベクトル再構築処理の流れの例を説明する。なお、この動きベクトル再構築処理は、符号化側から送信されて可逆復号部202により復号された情報を用いて、動きベクトルを復号する処理である。
また、図21の例においては、パイプラインによる処理であることを明示するため、動きベクトル復号部231−1による処理と動きベクトル復号部231−2による処理とが分けて示されている。ただし、ステップS237の処理は、時間隣接動きベクトル共有バッファ232および空間隣接動きベクトル共有バッファ233の処理なので、まとめて示されている。
すなわち、図21の例においては、動きベクトル復号部231−1により実行される、PU-2、PU0、…に対する動きベクトル再構築処理が左側に示されている。一方、動きベクトル復号部231−2により実行される、PU-1、PU1、…に対する動きベクトル再構築処理が右側に示されている。
また、図21の例においては、どのステップで格納された動きベクトル情報が、どのステップで用いられるのかを明示するための点線が示されている。
図20のステップS202において、可逆復号部202は、復号されたパラメータの情報などを対応する部に供給してくる。
ステップS231−1において、予測動きベクトル情報バッファ241−1は、復号されたパラメータの情報のうち、予測動きベクトルに関するインデックスを示す情報(予測動きベクトル情報)を取得し、取得した情報を蓄積する。そして、予測動きベクトル情報バッファ241−1は、所定のタイミングで、予測動きベクトル情報を、予測動きベクトル再構築部243−1に供給する。
なお、このとき、差分動きベクトル情報バッファ242−1は、復号されたパラメータの情報のうち、差分動きベクトルの情報を取得し、取得した情報を蓄積する。そして、差分動きベクトル情報バッファ242−1は、差分動きベクトルの情報を、動きベクトル再構築部244−1に供給する。
ステップS232−1において、予測動きベクトル再構築部243−1は、図5または図7を参照して上述したMVPまたはマージモードによる方法に基づいて、当該PU-2の時間予測動きベクトルを再構築する。すなわち、後述するステップS237において時間隣接動きベクトル共有バッファ232に、処理済みの時間隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、時間隣接動きベクトル共有バッファ232から、所定のPUの動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−1に供給される。
予測動きベクトル再構築部243−1は、時間隣接動きベクトル共有バッファ232からの当該PU-2に時間的に隣接する時間隣接動きベクトル情報を用いて、当該PU-2の時間予測動きベクトルを生成する。
ステップS233−1において、予測動きベクトル再構築部243−1は、AMVPまたはマージモードによる方法に基づいて、当該PU-2のTop(上)の予測動きベクトルを再構築する。すなわち、後述するステップS236−1において空間隣接動きベクトル内蔵バッファ245−1に、処理済みの上隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル内蔵バッファ245−1から、隣接動きベクトル情報設定部222の制御のもと、当該PU-2の上に隣接する上隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル内蔵バッファ245−1から、図10のB1、B2、B3の動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−1に供給される。
予測動きベクトル再構築部243−1は、空間隣接動きベクトル内蔵バッファ245−1からの当該PUに空間的に隣接する上隣接PUの空間隣接動きベクトル情報を用いて、当該PU-2の空間予測動きベクトルを生成する。
なお、空間隣接動きベクトル内蔵バッファ245−1において、上隣接PUの空間隣接動きベクトル情報の読み出しは、隣接動きベクトル情報設定部222により制御されている。
具体的には、空間隣接動きベクトル内蔵バッファ245−1は、当該PU-2に空間的に隣接する空間隣接PUのうち、上に隣接する上隣接PU(例えば、図10のB1、B2、B3)に対して求められた動きベクトルを示す情報を読み出す。その際、空間隣接動きベクトル内蔵バッファ245−1は、当該PU-2の情報を、隣接動きベクトル情報設定部222に供給し、それに対応して供給される上隣接PUのうち、禁止されているPU(例えば、図8のB0)の動きベクトルを読み出さない。空間隣接動きベクトル内蔵バッファ245−1は、以上のようにして読み出した情報(空間隣接動きベクトル情報)を、予測動きベクトル再構築部243−1に供給している。
ステップS234−1において、予測動きベクトル再構築部243−1は、AMVPまたはマージモードによる方法に基づいて、当該PU-2のleft(左)の予測動きベクトルを再構築する。すなわち、後述するステップS237において空間隣接動きベクトル共有バッファ233に、処理済みの左隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル共有バッファ233から、当該PU-2の左に隣接する左隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル共有バッファ233から、図10のA0、A1の動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−1に供給される。
予測動きベクトル再構築部243−1は、空間隣接動きベクトル共有バッファ233からの当該PUに空間的に隣接する左隣接PUの空間隣接動きベクトル情報を用いて、当該PU-2の空間予測動きベクトルを生成する。
なお、ステップS232−1乃至ステップS234−1の処理は、予測動きベクトル情報バッファ241−1からの当該PU-2の予測動きベクトルのインデックスに基づいて行われる処理であり、実際には、そのうちの1つのステップの処理のみが実行される。なお、ステップS232−1乃至S234−1の処理は、図22を参照して詳しく後述される。予測動きベクトル再構築部243−1は、再構築した予測動きベクトルの情報を、動きベクトル再構築部244−1に供給する。
ステップS235−1において、動きベクトル再構築部244−1は、動きベクトルを再構築する。すなわち、動きベクトル再構築部244−1は、差分動きベクトル情報バッファ242−1からの情報が示す当該PU-2の差分動きベクトルと、再構築された当該PU-2の予測動きベクトルとを加算することで、動きベクトルを再構築する。動きベクトル再構築部244−1は、再構築された動きベクトルを示す情報を、動き予測・補償部212、空間隣接動きベクトル内蔵バッファ245−1、空間隣接動きベクトル共有バッファ233、並びに時間隣接動きベクトル共有バッファ232に供給する。
ステップS236−1において、空間隣接動きベクトル内蔵バッファ245−1は、当該PU-2の動きベクトル情報を、次のPUのための空間隣接動きベクトル情報として格納する。
ステップS237において、時間隣接動きベクトル共有バッファ232は、当該PU-2の動きベクトル情報を、次以降のPUのための時間隣接動きベクトル情報として格納する。同様に、空間隣接動きベクトル共有バッファ233は、当該PU-2の動きベクトル情報を、次以降のPUのための空間隣接動きベクトル情報として格納する。
一方、ステップS231−2において、予測動きベクトル情報バッファ241−2は、復号されたパラメータの情報のうち、予測動きベクトルに関するインデックスを示す情報(予測動きベクトル情報)を取得し、取得した情報を蓄積する。そして、予測動きベクトル情報バッファ241−2は、所定のタイミングで、予測動きベクトル情報を、予測動きベクトル再構築部243−2に供給する。
なお、このとき、差分動きベクトル情報バッファ242−2は、復号されたパラメータの情報のうち、差分動きベクトルの情報を取得し、取得した情報を蓄積する。そして、差分動きベクトル情報バッファ242−2は、差分動きベクトルの情報を、動きベクトル再構築部244−2に供給する。
ステップS232−2において、予測動きベクトル再構築部243−2は、AMVPまたはマージモードによる方法に基づいて、当該PU-1の時間予測動きベクトルを生成する。すなわち、後述するステップS237において時間隣接動きベクトル共有バッファ232に、処理済みの時間隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、時間隣接動きベクトル共有バッファ232から、所定のPUの動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−2に供給される。
予測動きベクトル再構築部243−2は、時間隣接動きベクトル共有バッファ232からの当該PU-1に時間的に隣接する時間隣接動きベクトル情報を用いて、当該PU-1の時間予測動きベクトルを生成する。
ステップS233−2において、予測動きベクトル再構築部243−2は、AMVPまたはマージモードによる方法に基づいて、当該PU-1のTop(上)の予測動きベクトルを生成する。すなわち、後述するステップS236−2において空間隣接動きベクトル内蔵バッファ245−2に、処理済みの上隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル内蔵バッファ245−2から、隣接動きベクトル情報設定部222の制御のもと、当該PU-1の上に隣接する上隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル内蔵バッファ245−2から、図10のB1、B2、B3の動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−2に供給される。
予測動きベクトル再構築部243−2は、空間隣接動きベクトル内蔵バッファ245−2からの当該PUに空間的に隣接する上隣接PUの空間隣接動きベクトル情報を用いて、当該PU-1の空間予測動きベクトルを生成する。
なお、空間隣接動きベクトル内蔵バッファ245−2において、上隣接PUの空間隣接動きベクトル情報の読み出しは、隣接動きベクトル情報設定部222により制御されている。
具体的には、空間隣接動きベクトル内蔵バッファ245−2は、当該PU-1に空間的に隣接する空間隣接PUのうち、上に隣接する上隣接PU(例えば、図10のB1、B2、B3)に対して求められた動きベクトルを示す情報を読み出す。その際、空間隣接動きベクトル内蔵バッファ245−2は、当該PU-1の情報を、隣接動きベクトル情報設定部222に供給し、それに対応して供給される上隣接PUのうち、禁止されているPU(例えば、図8のB0)の動きベクトルを読み出さない。空間隣接動きベクトル内蔵バッファ245−2は、以上のようにして読み出した情報(空間隣接動きベクトル情報)を、予測動きベクトル再構築部243−2に供給している。
ステップS234−2において、予測動きベクトル再構築部243−2は、AMVPまたはマージモードによる方法に基づいて、当該PU-1のleft(左)の予測動きベクトルを生成する。すなわち、後述するステップS237において空間隣接動きベクトル共有バッファ233に、処理済みの左隣接PUの動きベクトル情報が格納されている。点線矢印で示されるように、空間隣接動きベクトル共有バッファ233から、当該PU-1の左に隣接する左隣接PUのうち、所定のPUの動きベクトル情報が読み出される。例えば、空間隣接動きベクトル共有バッファ233から、図10のA0、A1の動きベクトル情報が読み出され、読み出された動きベクトル情報が、予測動きベクトル再構築部243−2に供給される。
予測動きベクトル再構築部243−2は、空間隣接動きベクトル共有バッファ233からの当該PUに空間的に隣接する左隣接PUの空間隣接動きベクトル情報を用いて、当該PU-1の空間予測動きベクトルを生成する。
なお、ステップS232−2乃至ステップS234−2の処理は、予測動きベクトル情報バッファ241−2からの当該PU-1の予測動きベクトルのインデックスに基づいて行われる処理であり、実際には、そのうちの1つのステップの処理のみが実行される。なお、ステップS232−2乃至S234−2の処理は、図22を参照して詳しく後述される。予測動きベクトル再構築部243−2は、再構築した予測動きベクトルの情報を、動きベクトル再構築部244−2に供給する。
ステップS235−2において、動きベクトル再構築部244−2は、動きベクトルを再構築する。すなわち、動きベクトル再構築部244−2は、差分動きベクトル情報バッファ242−2からの情報が示す当該PU-1の差分動きベクトルと、再構築された当該PU-1の予測動きベクトルとを加算することで、動きベクトルを再構築する。動きベクトル再構築部244−2は、再構築された動きベクトルを示す情報を、動き予測・補償部212、空間隣接動きベクトル内蔵バッファ245−2、空間隣接動きベクトル共有バッファ233、および時間隣接動きベクトル共有バッファ232に供給する。
ステップS236−2において、空間隣接動きベクトル内蔵バッファ245−2は、当該PU-1の動きベクトル情報を、次のPUのための空間隣接動きベクトル情報として格納する。
ステップS237において、時間隣接動きベクトル共有バッファ232は、当該PU-1の動きベクトル情報を、次以降のPUのための時間隣接動きベクトル情報として格納する。同様に、空間隣接動きベクトル共有バッファ233は、当該PU-1の動きベクトル情報を、次以降のPUのための空間隣接動きベクトル情報として格納する。
なお、マージモードの場合、差分動きベクトル情報は符号化側から送られず、再構築された予測動きベクトルが動きベクトルとなるので、ステップS235−1およびステップS235−2の動きベクトルの再構築処理は、スキップされる。
[予測動きベクトル再構築処理の流れ]
次に、図22のフローチャートを参照して、図21のステップS232−1乃至ステップS234−1、およびステップS232−2乃至ステップS234−2において実行される予測動きベクトル再構築処理の流れの例をまとめて説明する。
予測動きベクトル再構築部243は、ステップS251において、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが示すものが、時間予測動きベクトルであるか否かを判定する。
ステップS251において、時間予測動きベクトルであると判定された場合、処理は、ステップS252に進む。
ステップS252において、予測動きベクトル再構築部243は、時間予測動きベクトルを再構築する。なお、ステップS252の処理は、上述した図21のステップS232−1およびステップS232−2の処理と同じ処理であるので、詳細な説明は省略される。
ステップS251において、時間予測動きベクトルではないと判定された場合、処理は、ステップS253に進む。予測動きベクトル再構築部243は、ステップS253において、予測動きベクトル情報バッファ241からの当該PUの予測動きベクトルのインデックスが示すものが、Topの空間予測動きベクトルであるか否かを判定する。
ステップS253において、Topの空間予測動きベクトルであると判定された場合、処理は、ステップS254に進む。
ステップS254において、予測動きベクトル再構築部243は、Topの空間予測動きベクトルを再構築する。なお、ステップS254の処理は、上述した図21のステップS233−1およびステップS233−2の処理と同じ処理であるので、詳細な説明は省略される。
ステップS253において、Topの空間予測動きベクトルではないと判定された場合、処理は、ステップS255に進む。ステップS255において、予測動きベクトル再構築部243は、leftの空間予測動きベクトルを再構築する。なお、ステップS255の処理は、上述した図21のステップS234−1およびステップS234−2の処理と同じ処理であるので、詳細な説明は省略される。
以上のように、当該PUの動きベクトルの復号処理、すなわち、予測動きベクトルの再構築処理において、当該PUの右上に位置するPUの動きベクトル情報の使用を禁止するようにした。
これにより、例えば、ステップS236−1の処理の後、動きベクトル復号部231−1は、ステップS236−2の動きベクトル復号部231−2によるPU-1に対する処理が終わってなくても、すぐに、次のPU0に対する処理を行うことができる。すなわち、図13を参照して上述したように、パイプラインによる処理を行うことが可能になる。
以上のように各処理を行うことにより、画像復号装置200は、画像符号化装置100が符号化した符号化データを正しく復号することができ、符号化効率の向上を実現させることができる。
すなわち、画像復号装置200においては、当該PUの動きベクトルの復号処理、すなわち、予測動きベクトルの再構築処理において、当該PUの右上に位置するPUの動きベクトル情報の使用が禁止される。
これにより、パイプラインによる処理を効率よく行うことが可能となり、処理効率を向上させることができる。
<3.第3の実施の形態>
[LCU単位の制御]
なお、上記説明においては、PUを制御の単位として説明してきたが、PUではなく、LCUを制御の単位とすることもできる。すなわち、最大符号化単位であるLCU単位で、LCUの右上に位置するPU(図8のB0)の使用を禁止するようにしてもよい。
再度、図8を参照して説明すると、当該PUの上および右の境界がLCU境界となる場合のみ、B0の使用が禁止される。すなわち、当該PUを含むLCUにおいて、当該PUがLCUの右上に位置するPUである場合のみ、B0の使用が禁止される。
これにより、LCU単位でパイプライン処理を行うことが可能となる。
なお、LCU単位の場合、当該PUの境界がLCUの境界であるか否かを判定する判定部は、隣接動きベクトル情報設定部122および222内に構成されてもよいし、動きベクトル符号化部131および動きベクトル復号部231内に構成されてもよい。また、当該PUの境界がLCUの境界であるか否かを判定する処理を、空間隣接動きベクトル内蔵バッファ141および245が判定するようにしてもよい。
再度、図13を参照して説明する。図13に示された例は、PUが同じサイズである場合の例であるが、実際には、PUは、様々なサイズで設定される可能性が高い。したがって、PU単位で制御を行う場合、各PUの処理時間の長さ、例えば、図13に示されたPU-2の処理時間の長さ(t0乃至t2)、PU-1の処理時間の長さ(t1乃至t5)、およびPU0の処理時間の長さ(t4乃至t8)にばらつき(変動)が生じる恐れがある。
これに対して、LCU単位で制御を行う場合、LCUの処理時間の長さは、同じになる(ばらつきがなくなる)。したがって、LCU単位で処理を制御する場合には、PU単位で処理を制御する場合より、パイプライン処理のコントロールが容易になる。
なお、典型的な例として、LCUを用いて上述したが、上述した処理時間の長さにばらつきがなくなる単位であれば、LCU以外の単位でも、本技術は適用可能である。
また、右上領域の動きベクトルの使用を禁止する処理を、予測単位(PU単位)で行うか、または最大符号化単位(LCU単位)で行うかを識別する識別情報を設定することも可能である。
この識別情報は、符号化側において、コントロール(制御)したい単位で設定され、符号化ストリームとともに伝送される。例えば、スライス単位でコントロールしたい場合は、スライスヘッダにこの識別情報が設定される。例えば、ピクチャ単位でコントロールしたい場合には、ピクチャパラメータセットにこの識別情報が設定される。シーケンス単位でコントロールしたい場合には、シーケンスパラメータセットにこの識別情報が設定される。
そして、復号側において、符号化ストリームとともにその識別情報が受け取られて、受け取られた識別情報に従って、右上領域の動きベクトルの使用が禁止される。
以上のように、予測動きベクトルの再構築処理において、対象領域(PUまたはLCU)の右上に位置するPUの動きベクトル情報の使用が禁止される。
これにより、パイプラインによる処理を効率よく行うことが可能となり、処理効率を向上させることができる。
なお、上記説明においては、HEVCに準ずる場合を例に説明してきたが、本技術は、AMVPやマージモードによる動きベクトル情報の符号化処理および復号処理を行う装置であれば、他の符号化方式を用いる装置でも適用することができる。
また、本技術は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本技術は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本技術は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
<4.第4の実施の形態>
[多視画像点符号化・多視点画像復号への適用]
上述した一連の処理は、多視点画像符号化・多視点画像復号に適用することができる。図23は、多視点画像符号化方式の一例を示す。
図23に示されるように、多視点画像は、複数の視点の画像を含み、その複数の視点のうちの所定の1つの視点の画像が、ベースビューの画像に指定されている。ベースビューの画像以外の各視点の画像は、ノンベースビューの画像として扱われる。
図23のような多視点画像符号化を行う場合、各ビュー(同一ビュー)において、予測ベクトルの生成または再構築における所定の領域(すなわち、上述した対象領域の右上に位置する右上領域)の動きベクトル情報の使用禁止を設定することができる。また、各ビュー(異なるビュー)において、他のビューで設定された所定の領域の動きベクトル情報の使用禁止を適用することもできる。
この場合、ベースビューにおいて設定された動きベクトルの使用禁止が、少なくとも1つのノンベースビューで適用される。あるいは、例えば、ノンベースビュー(view_id=i)において設定された動きベクトルの使用禁止が、ベースビューおよびノンベースビュー(view_id=j)の少なくともどちらか一方で適用される。
さらに、各ビュー(同一ビュー)において、所定の領域の動きベクトルの使用を禁止する処理を、予測単位で行うか、または最大符号化単位で行うかを識別する識別情報を設定することもできる。また、各ビュー(異なるビュー)において、他のビューで設定された所定の領域の動きベクトルの使用を禁止する処理を、予測単位で行うか、または最大符号化単位で行うかを識別する識別情報を共有することもできる。
この場合、ベースビューにおいて設定された識別情報が、少なくとも1つのノンベースビューで用いられる。あるいは、例えば、ノンベースビュー(view_id=i)において設定された識別情報が、ベースビューおよびノンベースビュー(view_id=j)の少なくともどちらか一方で用いられる。
これにより、パイプラインによる処理を効率よく行うことが可能となり、処理効率を向上させることができる。
[多視点画像符号化装置]
図24は、上述した多視点画像符号化を行う多視点画像符号化装置を示す図である。図24に示されるように、多視点画像符号化装置600は、符号化部601、符号化部602、および多重化部603を有する。
符号化部601は、ベースビュー画像を符号化し、ベースビュー画像符号化ストリームを生成する。符号化部602は、ノンベースビュー画像を符号化し、ノンベースビュー画像符号化ストリームを生成する。多重化部603は、符号化部601において生成されたベースビュー画像符号化ストリームと、符号化部602において生成されたノンベースビュー画像符号化ストリームとを多重化し、多視点画像符号化ストリームを生成する。
この多視点画像符号化装置600の符号化部601および符号化部602に対して、画像符号化装置100(図1)を適用することができる。この場合、多視点画像符号化装置600は、符号化部601が設定した識別情報と、符号化部602が設定した識別情報とを設定して伝送させる。
なお、上述したように符号化部601が設定した識別情報を、符号化部601および符号化部602で共有して用いるように設定して伝送させるようにしてもよい。逆に、符号化部602が設定した識別情報を、符号化部601および符号化部602で共有して用いるように設定して伝送させるようにしてもよい。
[多視点画像復号装置]
図25は、上述した多視点画像復号を行う多視点画像復号装置を示す図である。図25に示されるように、多視点画像復号装置610は、逆多重化部611、復号部612、および復号部613を有する。
逆多重化部611は、ベースビュー画像符号化ストリームとノンベースビュー画像符号化ストリームとが多重化された多視点画像符号化ストリームを逆多重化し、ベースビュー画像符号化ストリームと、ノンベースビュー画像符号化ストリームとを抽出する。復号部612は、逆多重化部611により抽出されたベースビュー画像符号化ストリームを復号し、ベースビュー画像を得る。復号部613は、逆多重化部611により抽出されたノンベースビュー画像符号化ストリームを復号し、ノンベースビュー画像を得る。
この多視点画像復号装置610の復号部612および復号部613に対して、画像復号装置200(図18)を適用することができる。この場合、多視点画像復号装置610は、符号化部601が設定し、復号部612が復号した識別情報と、符号化部602が設定し、復号部613が復号した識別情報を用いて処理を行う。
なお、上述したように符号化部601(または、符号化602)が設定した識別情報を、符号化部601および符号化部602で共有して用いるように設定して伝送されている場合がある。この場合、多視点画像復号装置610においては、符号化部601(または、符号化602)が設定し、復号部612(または復号部613)が復号した識別情報を用いて処理が行われる。
<5.第5の実施の形態>
[階層画像点符号化・階層画像復号への適用]
上述した一連の処理は、階層画像符号化・階層画像復号に適用することができる。図26は、多視点画像符号化方式の一例を示す。
図26に示されるように、階層画像は、複数の階層(解像度)の画像を含み、その複数の解像度のうちの所定の1つの階層の画像が、ベースレイヤの画像に指定されている。ベースレイヤの画像以外の各階層の画像は、ノンベースレイヤの画像として扱われる。
図26のような階層画像符号化(空間スケーラビリティ)を行う場合、各レイヤ(同一レイヤ)において、予測ベクトルの生成または再構築における所定の領域の動きベクトル情報の使用禁止を設定することができる。また、各レイヤ(異なるレイヤ)において、他のレイヤで設定された所定の領域の動きベクトル情報の使用禁止を適用することができる。
この場合、ベースレイヤにおいて設定された動きベクトルの使用禁止が、少なくとも1つのノンベースレイヤで用いられる。あるいは、例えば、ノンベースレイヤ(layer_id=i)において設定された動きベクトルの使用禁止が、ベースレイヤおよびノンベースレイヤ(layer_id=j)の少なくともどちらか一方で用いられる。
さらに、各レイヤ(同一レイヤ)において、所定の領域の動きベクトルの使用を禁止する処理を、予測単位で行うか、または最大符号化単位で行うかを識別する識別情報を設定することもできる。また、各レイヤ(異なるレイヤ)において、他のビューで設定された所定の領域の動きベクトルの使用を禁止する処理を、予測単位で行うか、または最大符号化単位で行うかを識別する識別情報を共有することもできる。
この場合、ベースレイヤにおいて設定された識別情報が、少なくとも1つのノンベースレイヤで用いられる。あるいは、例えば、ノンベースレイヤ(layer_id=i)において設定された識別情報が、ベースレイヤおよびノンベースレイヤ(layer_id=j)の少なくともどちらか一方で用いられる。
これにより、パイプラインによる処理を効率よく行うことが可能となり、処理効率を向上させることができる。
[階層画像符号化装置]
図27は、上述した階層画像符号化を行う階層画像符号化装置を示す図である。図27に示されるように、階層画像符号化装置620は、符号化部621、符号化部622、および多重化部623を有する。
符号化部621は、ベースレイヤ画像を符号化し、ベースレイヤ画像符号化ストリームを生成する。符号化部622は、ノンベースレイヤ画像を符号化し、ノンベースレイヤ画像符号化ストリームを生成する。多重化部623は、符号化部621において生成されたベースレイヤ画像符号化ストリームと、符号化部622において生成されたノンベースレイヤ画像符号化ストリームとを多重化し、階層画像符号化ストリームを生成する。
この階層画像符号化装置620の符号化部621および符号化部622に対して、画像符号化装置100(図1)を適用することができる。この場合、階層画像符号化装置620は、符号化部621が設定した識別情報と、符号化部622が設定した識別情報とを設定して伝送させる。
なお、上述したように符号化部621が設定した識別情報を、符号化部621および符号化部622で共有して用いるように設定して伝送させるようにしてもよい。逆に、符号化部622が設定した識別情報を、符号化部621および符号化部622で共有して用いるように設定して伝送させるようにしてもよい。
[階層画像復号装置]
図28は、上述した階層画像復号を行う階層画像復号装置を示す図である。図28に示されるように、階層画像復号装置630は、逆多重化部631、復号部632、および復号部633を有する。
逆多重化部631は、ベースレイヤ画像符号化ストリームとノンベースレイヤ画像符号化ストリームとが多重化された階層画像符号化ストリームを逆多重化し、ベースレイヤ画像符号化ストリームと、ノンベースレイヤ画像符号化ストリームとを抽出する。復号部632は、逆多重化部631により抽出されたベースレイヤ画像符号化ストリームを復号し、ベースレイヤ画像を得る。復号部633は、逆多重化部631により抽出されたノンベースレイヤ画像符号化ストリームを復号し、ノンベースレイヤ画像を得る。
この階層画像復号装置630の復号部632および復号部633に対して、画像復号装置200(図18)を適用することができる。この場合、階層画像復号装置630は、符号化部621が設定し、復号部632が復号した識別情報と、符号化部622が設定し、復号部633が識別情報を用いて処理を行う。
なお、上述したように符号化部621(または、符号化622)が設定した識別情報を、符号化部621および符号化部622で共有して用いるように設定して伝送されている場合がある。この場合、階層画像復号装置630においては、符号化部621(または、符号化622)が設定し、復号部632(または、復号部633)が復号した識別情報を用いて処理が行われる。
<6.第6の実施の形態>
[コンピュータ]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
図29において、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータ800において、CPU(Central Processing Unit)801,ROM(Read Only Memory)802,RAM(Random Access Memory)803は、バス804により相互に接続されている。
バス804には、さらに、入出力インタフェース805が接続されている。入出力インタフェース805には、入力部806、出力部807、記憶部808、通信部809、及びドライブ810が接続されている。
入力部806は、キーボード、マウス、マイクロホンなどよりなる。出力部807は、ディスプレイ、スピーカなどよりなる。記憶部808は、ハードディスクや不揮発性のメモリなどよりなる。通信部809は、ネットワークインタフェースなどよりなる。ドライブ810は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア811を駆動する。
以上のように構成されるコンピュータでは、CPU801が、例えば、記憶部808に記憶されているプログラムを、入出力インタフェース805及びバス804を介して、RAM803にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ800(CPU801)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア811に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア811をドライブ810に装着することにより、入出力インタフェース805を介して、記憶部808にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部809で受信し、記憶部808にインストールすることができる。その他、プログラムは、ROM802や記憶部808に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本技術は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
上述した実施形態に係る画像符号化装置及び画像復号装置は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、4つの応用例について説明する。
<7.応用例>
[第1の応用例:テレビジョン受像機]
図30は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置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の応用例:携帯電話機]
図31は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機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の応用例:記録再生装置]
図32は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置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の応用例:撮像装置]
図33は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置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) 前記予測動きベクトル生成部は、前記カレントブロックの空間隣接ブロックであって、前記カレントブロックの上部に面で接する上部ブロックを対象として、右端に位置する第1のブロックの動きベクトルを用いて、前記カレントブロックの空間予測ベクトルを生成する
前記(1)または(2)に記載の画像処理装置。
(4) 前記予測動きベクトル生成部は、前記カレントブロックの空間隣接ブロックであって、前記カレントブロックの上部に面で接する上部ブロックを対象として、右端に位置する第1のブロックの動きベクトルと、前記上部ブロックを対象として、前記第1のブロック以外の第2のブロックの動きベクトルとを用いて、前記カレントブロックの空間予測ベクトルを生成する
前記(1)または(2)に記載の画像処理装置。
(5) 前記第2のブロックは、前記上部ブロックを対象として、前記第1のブロックの左隣に位置するブロックである
前記(4)に記載の画像処理装置。
(6) 前記第2のブロックは、前記上部ブロックを対象として、前記カレントブロックの水平方向の長さの中央付近に位置するブロックである
前記(4)に記載の画像処理装置。
(7) 前記隣接動きベクトル情報設定部は、最大符号化単位で、前記右上ブロックの動きベクトルの使用を禁止する
前記(1)乃至(6)のいずれかに記載の画像処理装置。
(8) 前記カレントブロックの境界が最大符号化単位の境界であるかを判定する境界判定部を
さらに備え、
前記隣接動きベクトル情報設定部は、前記境界判定部により最大符号化単位の境界であるとされた場合のみ、前記右上ブロックの動きベクトルの使用を禁止する
前記(7)に記載の画像処理装置。
(9) 前記隣接動きベクトル情報設定部は、前記右上ブロックの動きベクトルの使用を予測単位で禁止するか、または前記右上ブロックの動きベクトルの使用を最大符号化単位で禁止するかを識別する識別情報に従って、前記右上ブロックの動きベクトルの使用を禁止する
前記(7)に記載の画像処理装置。
(10) 画像処理装置が、
画像のカレントブロックの動きベクトルの復号に用いられる予測動きベクトルを対象として、空間予測動きベクトルを生成する際に、前記カレントブロックの右上に隣接して位置する右上ブロックの動きベクトルの使用を禁止し、
前記カレントブロックの空間的に隣接して位置する空間隣接ブロックの動きベクトルを対象として、使用が禁止された前記右上ブロックの動きベクトル以外の動きベクトルを用いて、前記カレントブロックの空間予測ベクトルを生成し、
前記カレントブロックの予測動きベクトルを用いて、前記カレントブロックの動きベクトルを復号する
画像処理方法。
(11) 画像のカレントブロックの動きベクトルの符号化に用いられる予測動きベクトルを対象として、空間予測動きベクトルを生成する際に、前記カレントブロックの右上に隣接して位置する右上ブロックの動きベクトルの使用を禁止する隣接動きベクトル情報設定部と、
前記カレントブロックの空間的に隣接して位置する空間隣接ブロックの動きベクトルを対象として、前記隣接動きベクトル情報設定部により使用が禁止された前記右上ブロックの動きベクトル以外の動きベクトルを用いて、前記カレントブロックの空間予測ベクトルを生成する予測動きベクトル生成部と、
前記カレントブロックの予測動きベクトルを用いて、前記カレントブロックの動きベクトルを符号化する動きベクトル符号化部と
を備える画像処理装置。
(12) 前記予測動きベクトル生成部は、前記カレントブロックに対する空間予測ベクトルの生成処理と、前記カレントブロックのスキャン順に次のブロックに対する空間予測ベクトルの生成処理とをパイプラインにより行う
前記(11)に記載の画像処理装置。
(13) 前記予測動きベクトル生成部は、前記カレントブロックの空間隣接ブロックであって、前記カレントブロックの上部に面で接する上部ブロックを対象として、右端に位置する第1のブロックの動きベクトルを用いて、前記カレントブロックの空間予測ベクトルを生成する
前記(11)または(12)に記載の画像処理装置。
(14) 前記予測動きベクトル生成部は、前記カレントブロックの空間隣接ブロックであって、前記カレントブロックの上部に面で接する上部ブロックを対象として、右端に位置する第1のブロックの動きベクトルと、前記上部ブロックを対象として、前記第1のブロック以外の第2のブロックの動きベクトルとを用いて、前記カレントブロックの空間予測ベクトルを生成する
前記(11)または(12)に記載の画像処理装置。
(15) 前記第2のブロックは、前記上部ブロックを対象として、前記第1のブロックの左隣に位置するブロックである
前記(14)に記載の画像処理装置。
(16) 前記第2のブロックは、前記上部ブロックを対象として、前記カレントブロックの水平方向の長さの中央付近に位置するブロックである
前記(14)に記載の画像処理装置。
(17) 前記隣接動きベクトル情報設定部は、最大符号化単位で、前記右上ブロックの動きベクトルの使用を禁止する
前記(11)乃至(16)のいずれかに記載の画像処理装置。
(18) 前記カレントブロックの境界が最大符号化単位の境界であるかを判定する境界判定部を
さらに備え、
前記隣接動きベクトル情報設定部は、前記境界判定部により最大符号化単位の境界であるとされた場合のみ、前記右上ブロックの動きベクトルの使用を禁止する
前記(17)に記載の画像処理装置。
(19) 前記右上ブロックの動きベクトルの使用を予測単位で禁止するか、または前記右上ブロックの動きベクトルの使用を最大符号化単位で禁止するかを識別する識別情報を設定する識別情報設定部と、
前記識別情報設定部により設定された識別情報と、符号化ストリームとを伝送する伝送部と
をさらに備える前記(17)に記載の画像処理装置。
(20) 画像処理装置が、
画像のカレントブロックの動きベクトルの符号化に用いられる予測動きベクトルを対象として、空間予測動きベクトルを生成する際に、前記カレントブロックの右上に隣接して位置する右上ブロックの動きベクトルの使用を禁止し、
前記カレントブロックの空間的に隣接して位置する空間隣接ブロックの動きベクトルを対象として、使用が禁止された前記右上ブロックの動きベクトル以外の動きベクトルを用いて、前記カレントブロックの空間予測ベクトルを生成し、
前記カレントブロックの予測動きベクトルを用いて、前記カレントブロックの動きベクトルを符号化する
画像処理方法。