【文献】
Test Model under Consideration Output Document (draft007),Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,2nd Meeting: Geneva, CH,2010年10月,JCTVC-B205_draft007,pp.1-6, 83-89
【文献】
Joonyoung Park et al.,Improvements on median motion vectors of AMVP,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,4th Meeting: Daegu, KR,2011年 1月,JCTVC-D095,pp.1-5
【文献】
Jian-Liang Lin et al.,Improved Advanced Motion Vector Prediction,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,4th Meeting: Daegu, KR,2011年 1月,JCTVC-D125_r2,pp.1-8
【文献】
Akira Fujibayashi and Frank Bossen,CE9 3.2d Simplified Motion vector prediction,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,4th Meeting: Daegu, Korea,2011年 1月,JCTVC-D231,pp.1-5
【文献】
Yusuke Itani et al.,Improvement to AMVP/Merge process,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,5th Meeting: Geneva, CH,2011年 3月18日,JCTVC-E064_r1,pp.1-8
【文献】
Minhua Zhou,CE9: Simplified upper/left MVP calculation based on JCTVC-D055,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,5th Meeting: Geneva, CH,2011年 3月 9日,JCTVC-E116,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0030】
本発明は、多様な変更を加えることができ、様々な実施例を有することができ、特定の実施例を図面に例示して詳細に説明する。しかし、これは本発明を特定の実施形態に限定するものではない。本明細書で使用する用語は、単に特定の実施例を説明するために使われたものであり、本発明の技術的思想を限定するために使われるものではない。単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含む。本明細書において、“含む”又は“有する”などの用語は、明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はそれらを組合せたものが存在することを指定するものであり、一つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品又はそれらを組合せたものの存在又は付加の可能性を予め排除しないと理解しなければならない。
【0031】
一方、本発明で説明される図面上の各構成は、映像エンコーディング/デコーディング装置で互いに異なる特徴的な機能に対する説明の便宜のために独立して図示したものであり、各構成が互いに別個のハードウェアや別個のソフトウェアで具現されるということを意味しない。例えば、各構成のうち二つ以上の構成が統合されて一つの構成になることもあり、一つの構成が複数の構成に分けられることもある。各構成が統合及び/又は分離された実施例も本発明の本質を逸しない限り本発明の権利範囲に含まれる。
【0032】
以下、添付図面を参照して、本発明について詳細に説明する。
【0033】
図1は、本発明の一実施例に係る映像エンコーディング装置(エンコーダ)を概略的に示すブロック図である。
図1を参照すると、映像エンコーディング装置100は、ピクチャ分割部105、予測部110、変換部115、量子化部120、再整列部125、エントロピエンコーディング部130、逆量子化部135、逆変換部140、フィルタ部145及びメモリ150を有する。
【0034】
ピクチャ分割部105は、入力されたピクチャを少なくとも一つの処理単位に分割することができる。このとき、処理単位は、予測ユニット(Prediction Unit、以下、「PU」という)であってもよく、変換ユニット(Transform Unit、以下、「TU」という)であってもよく、コーディングユニット(Coding Unit、以下、「CU」という)であってもよい。ただし、本明細書において、説明の便宜のために、予測ユニットを予測ブロックで表現し、変換ユニットを変換ブロックで表現し、エンコーディングユニットをエンコーディングブロックで表現することがある。
【0035】
予測部110は、インター予測(inter prediction、画面間予測)を実行するインター予測部とイントラ予測(intra prediction、画面内予測)を実行するイントラ予測部とを有することができる。コーディング効率を上げるために、映像信号をそのままエンコーディングするものではなく、既にエンコーディングされた領域を利用して映像を予測し、元来の映像と予測映像との間の残差値を予測映像に加えて映像を復元できるようにエンコーディングする。
【0036】
予測に利用される既にエンコーディングされた領域を有するピクチャとして、Iピクチャ(Iスライス)、Pピクチャ(Pスライス)、Bピクチャ(Bスライス)などがある。Iスライスは、イントラ予測によってのみデコーディングされるスライスである。Pスライスは、各ブロックのサンプル値を予測するために、少なくとも一つの動きベクトル及び参照ピクチャインデックスを利用したインター予測又はイントラ予測を利用してデコーディングされることができるスライスである。Bスライスは、各ブロックのサンプル値を予測するために、少なくとも二つの動きベクトル及び参照ピクチャインデックスを利用したインター予測又はイントラ予測を利用してデコーディングされることができるスライスである。
【0037】
予測部110は、ピクチャの処理単位に対して予測を実行することで、予測されたサンプルで構成される予測ブロックを生成する。予測部110でピクチャの処理単位は、CUであってもよく、TUであってもよく、PUであってもよい。また、該当処理単位に対して実行される予測がインター予測かイントラ予測かを決定し、各予測方法の具体的な内容(例えば、予測モード等)を決定することができる。このとき、予測が実行される処理単位と予測方法及び具体的な内容が決定される処理単位とは異なってもよい。例えば、予測方法及び予測モードなどはPU単位で決定されてもよく、予測の実行はTU単位で実行されてもよい。
【0038】
インター予測を介しては現在ピクチャの前のピクチャ及び/又は後のピクチャのうち少なくとも一つのピクチャの情報に基づいて予測を実行することで、予測ブロックを生成することができる。また、イントラ予測を介しては現在ピクチャ内の画素情報に基づいて予測を実行することで、予測ブロックを生成することができる。
【0039】
インター予測において、現在ブロックに対し、参照ピクチャを選択し、現在ブロックと同じ大きさの参照ブロックを選択することで、現在ブロックに対する予測ブロックを生成することができる。例えば、インター予測において、現在ブロックとの残差(residual)信号が最小化され、動きベクトルの大きさも最小となるように予測ブロックを生成することができる。インター予測方法として、スキップ(skip)モード、マージ(merge)モード、アドバンスド動きベクトル予測子(Advanced Motion Vector Prediction:AMVP)などを利用することができる。予測ブロックは、1/2画素サンプル単位及び1/4画素サンプル単位などのように整数未満のサンプル単位で生成されることもできる。このとき、動きベクトルも整数未満の画素単位で表現されることができる。例えば、輝度(luma)画素に対しては1/4画素単位で表現され、色差(chroma)画素に対しては1/8画素単位で表現されることができる。
【0040】
インター予測を介して選択された参照ピクチャのインデックス、動きベクトル予測子、残差信号などの情報は、エントロピエンコーディングされ、デコーディング装置に伝達される。
【0041】
イントラ予測を実行する場合にも、予測が実行される処理単位と予測方法及び具体的な内容が決定される処理単位とは互いに異なってもよい。例えば、PU単位で予測モードが決定されてPU単位で予測が実行されてもよく、PU単位で予測モードが決定されてTU単位でイントラ予測がされてもよい。
【0042】
イントラ予測において、予測モードは、33個の方向性予測モードと少なくとも2個の非方向性モードとを有することができる。非方向性モードは、DC予測モード及びプラナーモード(Planar mode)などを有することができる。
【0043】
イントラ予測では、参照サンプルにフィルタを適用した後、予測ブロックを生成することができる。このとき、参照サンプルにフィルタを適用するかどうかは、現在ブロックのイントラ予測モード及び/又はサイズによって決定されることもできる。
【0044】
PUは、それ以上分割されないCUから多様なサイズ/形態で決定されることができる。例えば、インター予測の場合、PUは、2N×2N、2N×N、N×2N、又はN×Nなどの大きさを有することができる。イントラ予測の場合、PUは、2N×2N又はN×N(Nは、整数)などの大きさを有することができる。このとき、N×N大きさのPUは、特定の場合にのみ適用するように設定することもできる。例えば、N×NのPUを、最小の大きさのコーディングユニットに対してのみ利用するように設定したり、イントラ予測に対してのみ利用するように設定したりすることができる。また、前述した大きさのPU以外に、N×mN、mN×N、2N×mN又はmN×2N(m<1)などの大きさを有するPUをさらに定義して使用することもできる。
【0045】
生成された予測ブロックと原本ブロックとの間の残差値(残差ブロック又は残差信号)は、変換部115に入力される。また、予測のために使用した予測モード情報、動きベクトル情報などは、残差値と共にエントロピエンコーディング部130でエンコーディングされ、デコーディング装置に伝達される。
【0046】
変換部115は、変換単位で残差ブロックに対する変換を実行し、変換係数を生成する。変換部115での変換単位は、TUであってもよく、クワッドツリー(quad tree)構造を有することができる。このとき、変換単位の大きさは、所定の最大及び最小の大きさの範囲内で決定されることができる。変換部115は、残差ブロックを離散コサイン変換(Discrete Cosine Transform:DCT)又は離散サイン変換(Discrete Sine Transform:DST)を利用して変換することができる。
【0047】
量子化部120は、変換部115で変換された残差値を量子化することで、量子化係数を生成することができる。量子化部120で算出された値は、逆量子化部135及び再整列部125に提供される。
【0048】
再整列部125は、量子化部120から提供された量子化係数を再整列する。量子化係数を再整列することによってエントロピエンコーディング部130でのエンコーディングの効率を上げることができる。再整列部125は、係数スキャニング(Coefficient Scanning)方法を介して2次元ブロック形態の量子化係数を1次元の形態に再整列することができる。再整列部125では、量子化部で送信された係数の確率統計に基づいて係数スキャニングの順序を変更することによって、エントロピエンコーディング部130でのエントロピエンコーディング効率を上げることもできる。
【0049】
エントロピエンコーディング部130は、再整列部125により再整列された量子化係数に対するエントロピエンコーディングを実行することができる。エントロピエンコーディングには、例えば、指数ゴロム(Exponential Golomb)、コンテキストベース適応型可変長コーディング(Context-Adaptive Variable Length Coding:CAVLC)、コンテキストベース適応型二進算術符号化(Context-Adaptive Binary Arithmetic Coding:CABAC)などのエンコーディング方法を使用することができる。エントロピエンコーディング部130は、再整列部125及び予測部110から伝達を受けたCUの量子化係数情報及びブロックタイプ情報、予測モード情報、分割単位情報、PU情報及び送信単位情報、動きベクトル情報、参照ピクチャ情報、ブロックの補間情報、フィルタリング情報など、多様な情報をエンコーディングすることができる。
【0050】
また、エントロピエンコーディング部130は、必要な場合、送信するパラメータセット又はシンタックスに一定の変更を加えることもできる。
【0051】
逆量子化部135は、量子化部120で量子化された値を逆量子化し、逆変換部140は、逆量子化部135で逆量子化された値を逆変換する。逆量子化部135及び逆変換部140で生成された残差値を、予測部110で予測された予測ブロックとマージして復元ブロック(Reconstructed Block)を生成することができる。
【0052】
フィルタ部145は、デブロッキングフィルタ、適応ループフィルタ(Adaptive Loop Filter:ALF)、サンプル適応オフセット(Sample Adaptive Offset:SAO)を復元されたピクチャに適用することができる。
【0053】
デブロッキングフィルタは、復元されたピクチャでブロック間の境界に発生したブロック歪曲を除去することができる。適応ループフィルタ(Adaptive Loop Filter:ALF)は、デブロッキングフィルタを介してブロックがフィルタリングされた後、復元された映像と元来の映像とを比較した値に基づいてフィルタリングを実行することができる。ALFは、高効率を適用する場合にのみ実行されることもできる。SAOは、デブロッキングフィルタが適用された残差ブロックに対し、画素単位で原本映像とのオフセット差を復元し、バンドオフセット(Band Offset)、エッジオフセット(Edge Offset)などの形態で適用される。
【0054】
一方、インター予測に使われる復元ブロックに対してフィルタ部145は、フィルタリングを適用しなくてもよい。
【0055】
メモリ150は、フィルタ部145を介して算出された復元ブロック又はピクチャを格納することができる。メモリ150に格納された復元ブロック又はピクチャは、インター予測を実行する予測部110に提供されることができる。
【0056】
図2は、本発明の一実施例に係る映像デコーディング装置(デコーダ)を概略的に示すブロック図である。
図2を参照すると、映像デコーディング装置200は、エントロピデコーディング部210、再整列部215、逆量子化部220、逆変換部225、予測部230、フィルタ部235、メモリ240を有することができる。
【0057】
エンコーディング装置から映像ビットストリームが入力された場合、入力されたビットストリームは、エンコーディング装置で映像情報が処理された手順の逆の過程によってデコーディングされることができる。
【0058】
例えば、映像エンコーディング装置でエントロピエンコーディングを実行するためにCAVLCなどの可変長エンコーディング(Variable Length Coding:VLC、以下、「VLC」という)が使われた場合、エントロピデコーディング部210もエンコーディング装置で使用したVLCテーブルと同じVLCテーブルを具現してエントロピデコーディングを実行することができる。また、映像エンコーディング装置でエントロピエンコーディングを実行するために、CABACを利用した場合、エントロピデコーディング部210は、これに対応してCABACを利用したエントロピデコーディングを実行することができる。
【0059】
エントロピデコーディング部210でデコーディングされた情報のうち予測ブロックを生成するための情報は、予測部230に提供され、エントロピデコーディング部でエントロピデコーディングが実行された残差値は、再整列部215に入力されることができる。
【0060】
再整列部215は、エントロピデコーディング部210でエントロピデコーディングされたビットストリームを映像エンコーディング器で再整列した方法に基づいて再整列することができる。再整列部215は、1次元ベクトル形態に表現された係数を再び2次元のブロック形態の係数に復元して再整列することができる。再整列部215は、エンコーディング装置で実行された係数スキャニングに関連した情報の提供を受け、エンコーディング装置で実行されたスキャニング順序に基づいて逆にスキャニングする方法を介して再整列を実行することができる。
【0061】
逆量子化部220は、エンコーディング装置で提供された量子化パラメータと再整列されたブロックの係数値とに基づいて逆量子化を実行することができる。
【0062】
逆変換部225は、映像エンコーディング装置で実行された量子化の結果に対し、エンコーディング装置の変換部が実行したDCT又はDSTに対して逆DCT又は逆DSTを実行することができる。逆変換は、エンコーディング装置で決定された送信単位又は映像の分割単位に基づいて実行されることができる。エンコーディング装置の変換部では、予測方法、現在ブロックの大きさ及び予測方向など、複数の情報によってDCT又はDSTが選択的に実行されることができ、デコーディング装置の逆変換部225は、エンコーディング装置の変換部で実行された変換に関する情報に基づいて逆変換を実行することができる。
【0063】
予測部230は、エントロピデコーディング部210から提供された予測ブロック生成関連情報と、メモリ240から提供された以前にデコーディングされたブロック及び/又はピクチャ情報と、に基づいて予測ブロックを生成することができる。復元ブロックは、予測部230で生成された予測ブロックと、逆変換部225で提供された残差ブロックと、を利用して生成されることができる。
【0064】
予測部230で実行する具体的な予測方法は、エンコーディング装置の予測部で実行される予測方法と同様である。
【0065】
現在ブロックに対する予測モードがイントラ予測(intra prediction)モードである場合、現在ピクチャ内の画素情報に基づいて予測ブロックを生成するイントラ予測を実行することができる。
【0066】
イントラ予測において、予測モードは、33個の方向性予測モードと少なくとも2個の非方向性モードとを有することができる。非方向性モードは、DC予測モード及びプラナーモード(Planar mode)などを有することができる。
【0067】
イントラ予測では、参照サンプルにフィルタを適用した後、予測ブロックを生成することができる。このとき、参照サンプルにフィルタを適用するかどうかは、現在ブロックのイントラ予測モード及び/又はサイズによって決定することもできる。
【0068】
現在ブロックに対する予測モードがインター予測(inter prediction)モードである場合、現在ピクチャの前のピクチャ又は後のピクチャのうち少なくとも一つを参照ピクチャにし、参照ピクチャが有する情報に基づいて現在ブロックに対するインター予測を実行することができる。具体的に、インター予測では、現在ブロックに対し、参照ピクチャを選択し、現在ブロックと同じ大きさの参照ブロックを選択することで、現在ブロックに対する予測ブロックを生成することができる。例えば、インター予測では、現在ブロックとの残差(residual)信号が最小化され、動きベクトルの大きさも最小となるように予測ブロックを生成することができる。このとき、参照ピクチャの情報を利用するために、現在ピクチャの周辺ブロックの情報を利用することができる。例えば、スキップ(skip)モード、マージ(merge)モード、アドバンスド動きベクトル予測子(Advanced Motion Vector Prediction:AMVP)等の使用を介して、周辺ブロックの情報に基づいて現在ブロックに対する予測ブロックを生成することができる。
【0069】
予測ブロックは、1/2画素サンプル単位と1/4画素サンプル単位のように整数未満のサンプル単位で生成されることもできる。このとき、動きベクトルも整数未満の画素単位で表現されることができる。例えば、輝度画素に対しては1/4画素単位で表現され、色差画素に対しては1/8画素単位で表現されることができる。
【0070】
現在ブロックのインター予測に必要な動き情報、例えば、動きベクトル、参照ピクチャインデックスなどに関する情報は、エンコーディング装置から受信したスキップフラグ、マージフラグなどを確認し、これに対応して導出されることができる。
【0071】
予測が実行される処理単位と予測方法及び具体的な内容が決定される処理単位とは異なってもよい。例えば、PU単位で予測モードが決定されてPU単位で予測が実行されてもよく、PU単位で予測モードが決定されてTU単位でイントラ予測が実行されてもよい。
【0072】
予測部230から出力された予測ブロックに逆変換部225から出力された残差ブロックが加えられて原本映像を復元することができる。
【0073】
復元されたブロック及び/又はピクチャは、フィルタ部235に提供されることができる。フィルタ部235は、復元されたブロック及び/又はピクチャにデブロッキングフィルタリング、サンプル適応オフセット(Sample Adaptive Offset:SAO)及び/又は適応ループフィルタリングなどを適用する。
【0074】
メモリ240は、復元されたピクチャ又はブロックを格納して参照ピクチャ又は参照ブロックとして使用するようにすることができ、また、復元されたピクチャを出力部に提供することができる。
【0075】
ここでは説明の便宜のために省略したが、デコーディング装置に入力されるビットストリームは、パージングステップを経てエントロピデコーディング部に入力されることもできる。また、エントロピデコーディング部でパージング過程を実行するようにすることもできる。
【0076】
本明細書で、コーディングは、場合によって、エンコーディング又はデコーディングと解釈されることができ、情報(information)は、値(values)、パラメータ(parameter)、係数(coefficients)、成分(elements)などを全部含むと理解されることができる。
【0077】
「画面」又は「ピクチャ(picture)」は、一般に特定時間帯の一つの映像を示す単位を意味し、「スライス(slice)」、「フレーム(frame)」などは、実際のビデオ信号のコーディングにおいてピクチャの一部を構成する単位であり、必要によっては、ピクチャと互いに混用されて使用されることもできる。
【0078】
「ピクセル(pixel)」、「画素」又は「pel」は、一つの映像を構成する最小の単位を意味する。また、特定のピクセルの値を示す用語として「サンプル(sample)」を使用することができる。サンプルは、輝度(Luma)及び色差(Chroma)成分に分けることができるが、一般には両方ともを含む用語として使うことができる。上記色差成分は、定められた色相間の差を示すものであり、一般的にCb及びCrで構成される。
【0079】
「ユニット(unit)」は、前述した符号化ユニット(CU)、予測ユニット(PU)、変換ユニット(TU)などの映像処理の基本単位又は映像の特定の位置を示し、場合によっては、「ブロック(block)」又は「領域(area)」などの用語と互いに混用して使われてもよい。また、ブロックは、M個の列とN個の行で構成されたサンプル又は変換係数(transform coefficient)の集合を示す用語として使うこともできる。
【0080】
一方、インター予測モードの場合、エンコーディング装置又はデコーディング装置は、現在ブロックの動き情報を導出し、導出された動き情報に基づいて現在ブロックに対するインター予測を実行することができる。
【0081】
現在ブロックの予測に利用される映像を参照ピクチャ(reference picture)又は参照フレーム(reference frame)という。参照ピクチャ内の領域は、参照ピクチャを指示する参照ピクチャインデックス(refIdx)及び動きベクトル(motion vector)などを利用して示すことができる。
【0082】
現在ピクチャに対し、予測のために使われるピクチャに参照ピクチャリストを構成することができ、参照ピクチャインデックスは、参照ピクチャリストにおける特定の参照ピクチャを指示することができる。Pピクチャの場合には一つの参照ピクチャリスト、例えば、参照リスト0を必要とし、Bピクチャの場合には二つの参照ピクチャリスト、例えば、参照リスト0及び参照リスト1を必要とする。
【0083】
具体的には、Iピクチャは、イントラ予測によってエンコーディング/デコーディングされるピクチャである。Pピクチャは、各ブロックのサンプル値を予測するために少なくとも一つの動きベクトル及び参照ピクチャインデックスを利用したインター予測又はイントラ予測を利用してエンコーディング/デコーディングされることができるピクチャである。Bピクチャは、各ブロックのサンプル値を予測するために少なくとも二つの動きベクトル及び参照ピクチャインデックスを利用したインター予測又はイントラ予測を利用してエンコーディング/デコーディングされることができるピクチャである。
【0084】
Pピクチャでは一つの参照ピクチャリストを必要とし、これを参照ピクチャリスト0(reference picture list0:L0)という。
【0085】
Bピクチャは、例えば二つの参照ピクチャを利用して順方向、逆方向又は両方向インター予測により符号化されることができるピクチャである。Bピクチャは、二つの参照ピクチャリストを必要とし、二つの参照ピクチャリストは、各々、参照ピクチャリスト0(reference picture list0:L0)及び参照ピクチャリスト1(reference picture list1:L1)という。
【0086】
L0から選択された参照ピクチャを使用するインター予測をL0予測といい、L0予測は、主に順方向予測に使われる。L1から選択された参照ピクチャを使用するインター予測をL1予測といい、L1予測は、主に逆方向予測に使われる。また、L0及びL1から各々選択された二つの参照ピクチャを使用するインター予測を双方向予測(bi prediction)ともいう。
【0087】
上記Iピクチャ、Pピクチャ、Bピクチャの特徴は、ピクチャ単位ではなくスライス単位で定義されることもできる。例えば、スライス単位でIピクチャの特徴を有するIスライスが定義され、Pピクチャの特徴を有するPスライスが定義され、Bピクチャの特徴を有するBスライスが定義されることができる。
【0088】
例えば、現在ブロックに対するスライスタイプがBでありL0からcolPicが選択される場合、又は、現在ブロックに対するスライスタイプがPである場合、colPicはL0から選択されることができる。
【0089】
一方、遅延(low delay)を防止するために、一般化PおよびB(Generalized P and B:GPB)スライスを利用することもできる。GPBにおいては、参照リスト0及び参照リスト1が互いに同じである。
【0090】
インター予測において、スキップモードの場合には周辺ブロックの情報をそのまま現在ブロックに利用することができる。したがって、スキップモードの場合には、現在ブロックの動き情報としていずれのブロックの動き情報を利用するかを指示する情報以外に残差などのシンタックス情報を送信しない。
【0091】
また、マージモードの場合には、周辺ブロックの動き情報をそのまま利用して現在ブロックに対する予測ブロックを生成することができる。エンコーディング装置は、マージモードを適用するか否かに関する情報、いずれのブロックの動き情報を利用するかに関する情報、及び残差情報などを送信することができる。デコーディング装置は、予測ブロックにエンコーディング装置から送信される残差を加えて現在ブロックを復元することができる。
【0092】
マージモードでいずれのブロックの情報を利用するかを指示する方法などをスキップモード及び一般的なインター予測モードの場合に適用することもできる。例えば、マージモードで現在ブロックの動き情報として利用される情報を有する候補ブロックを他のインター予測モードと共通して利用することもでき、いずれの周辺ブロックの動き情報を利用するかを指示する方法を同様に利用することもできる。
【0093】
このとき、スキップモード及び一般的なインター予測モードでは、周辺ブロックの参照ピクチャインデックスや予測方向(参照ピクチャリスト)が現在ブロックの参照ピクチャインデックスや予測方向(参照ピクチャリスト)に適合する場合にのみ利用可能な動き情報を有すると判断し、現在ブロックに対する動きベクトル予測子の候補として該当ブロックの動きベクトルを利用するようにすることもできる。または、周辺ブロックの動きベクトルを後述するようにスケーリングして現在ブロックに対する動きベクトル予測子の候補として利用するようにすることもできる。
【0094】
AMVPの場合、エンコーディング装置は、周辺ブロックの動き情報を利用して現在ブロックの動きベクトルを予測し、現在ブロックの動きベクトルと予測された動きベクトルとの間の差を参照ピクチャを指示する参照ピクチャインデックスと共に送信することができる。デコーディング装置は、周辺ブロックの動き情報を利用して現在ブロックの動きベクトルを予測し、エンコーディング装置から受信した残差を利用して現在ブロックに対する動きベクトルを導出することができる。デコーディング装置は、導出した動きベクトルとエンコーディング装置から受信した参照ピクチャインデックス情報とに基づいて現在ブロックに対する予測ブロックを生成することができる。
【0095】
図3は、インター予測モードでアドバンスド動きベクトル予測子(Advanced Motion Vector Predictor:AMVP)が適用される場合、動きベクトルを導出する方法に関する一実施例を概略的に説明する流れ図である。
【0096】
図3を参照すると、エンコーディング装置又はデコーディング装置は、現在ブロックに対する動きベクトル予測子(Motion Vector Predictor:MVP)の候補リストを生成することができる(S310)。動きベクトル予測子は、現在ブロックの動きベクトルに対する予測値を示すことができる。
【0097】
エンコーディング装置又はデコーディング装置は、現在ブロックに隣接して利用可能な(available)周辺ブロック(説明の便宜のために「周辺ブロック」という)及び/又は現在ブロックに対応する位置にある(co-located)各参照ピクチャのブロックのうち利用可能な(available)ブロック(説明の便宜のために「Colブロック」(co-located block)という)の動きベクトルを利用してMVP候補リストを生成することができる。
【0098】
エンコーディング装置又はデコーディング装置は、MVP候補リストが有するMVP候補のうち現在ブロックに対するMVPを選択することができる(S320)。
【0099】
エンコーディング装置は、MVP候補リストが有するMVP候補に対して動きベクトル競合(Motion Vector Competition:MVC)を適用し、現在ブロックに対する最適のMVPを選択することができる。エンコーディング装置は、ビットストリームを介して選択されたMVPインデックス、動きベクトル差(Motion Vector Difference:MVD、又はDifference of Motion Vector:DMVともいう)、そして、参照ピクチャインデックスをデコーディング装置に送信することができる。MVPインデックスは、現在ブロックのMVPを指示するインデックスであり、MVP候補リストが有するMVP候補のうちいずれか一つを指示することができる。また、参照ピクチャインデックスは、現在ブロックの参照ピクチャを指示するインデックスであり、参照ピクチャリストが有する参照ピクチャの候補のうちいずれか一つを指示することができる。MVDは、現在ブロックの動きベクトルと選択されたMVPとの差であり、MVDの値が少ないほど送信される情報量を減らすことができる。
【0100】
デコーディング装置は、エンコーディング装置からMVPインデックス及び参照ピクチャインデックスを受信することができる。受信したMVPインデックスを利用し、デコーディング装置は、MVP候補リストが有するMVP候補のうち現在ブロックに対するMVPを選択することができる。受信した参照ピクチャインデックスを利用し、デコーディング装置は、参照ピクチャリストが有する参照ピクチャ候補の中から現在ブロックに対する参照ピクチャを選択することができる。
【0101】
デコーディング装置は、選択されたMVP及び参照ピクチャを受信したMVDと共に利用して現在ブロックの動きベクトルを導出することができる(S330)。例えば、デコーディング装置は、MVPに受信したMVDを加えて現在ブロックの動きベクトルを復元することができる。
【0102】
図4は、MVP候補リストの生成方法に対する一実施例を概略的に説明する概念図である。
【0103】
説明の便宜のために、現在ブロック400左下側コーナーの周辺ブロックである左下側周辺ブロックA
0410及び現在ブロック400の左側周辺ブロックA
1420を有する候補グループを左側候補グループという。このとき、エンコーディング装置又はデコーディング装置は、左側ブロック420の中から特定の位置のブロックのみを利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、左側周辺ブロック420のうち最下端のブロック420−1を左側ブロックA
1に設定することができる。
【0104】
また、現在ブロック400右上側コーナーの周辺ブロックである右上側周辺ブロックB
0430、現在ブロック400の上側周辺ブロックB
1440及び現在ブロック400の左上側コーナーの周辺ブロックB
2450を有する候補グループを上側候補グループという。このとき、エンコーディング装置又はデコーディング装置は、上側ブロック440のうち特定の位置のブロックのみを利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、上側周辺ブロックのうち最右側のブロック440−1を上側ブロックB
1に設定することができる。
【0105】
エンコーディング装置又はデコーディング装置は、左側候補グループ(A
0,A
1)から一つのMVP候補を選択することができる。左側候補グループから選択されたMVP候補をMV
Aという。例えば、エンコーディング装置又はデコーディング装置は、左側候補グループが有するブロックをA
0→A
1の順序でスキャンしながら、現在ブロックと、参照ピクチャインデックスが同一か否か、参照ピクチャリストが同一か否かなどを判断し、利用可能な1番目のブロックの動きベクトルを現在ブロックのMVP候補MV
Aとして選択することができる。
【0106】
また、エンコーディング装置又はデコーディング装置は、上側候補グループB
0,B
1,B
2から一つのMVP候補を選択することができる。上側候補グループから選択されたMVP候補をMV
Bという。例えば、エンコーディング装置又はデコーディング装置は、上側候補グループが有するブロックをB
0→B
1→B
2の順序でスキャンしながら、現在ブロックと、参照ピクチャインデックスが同一か否か、参照ピクチャリストが同一か否かなどを判断し、利用可能な1番目のブロックの動きベクトルを現在ブロックのMVP候補MV
Bとして選択することができる。
【0107】
また、エンコーディング装置又はデコーディング装置は、参照ピクチャ内のColブロックCOL460の動きベクトルを現在ブロックのMVP候補として選択することもできる。ここで、Colブロック460の動きベクトルは、mvColで表すことができる。このとき、エンコーディング装置又はデコーディング装置は、MV
AとMV
Bを検索する過程で必要な数の空間候補(spatial candidate)を確保することができない場合、Colブロックの動きベクトルを候補に設定するようにすることもできる。
【0108】
前述した実施例において、左側候補グループから選択されたMVP候補及び上側候補グループから選択されたMVP候補は、空間MVP(Spatial Motion Vector Predictor:SMVP)ということができる。また、参照ピクチャ内のColブロックを利用して選択されたMVP候補は、時間MVP(Temporal Motion Vector Predictor:TMVP)ということができる。したがって、MVP候補リストは、SMVP及び/又はTMVPを有することができる。
【0109】
エンコーディング装置又はデコーディング装置は、前述した方法により選択されたMVP候補のうち重複する候補がある場合、重複する候補の中から最も高い順位の候補を除いた残りの候補を除去することができる。
【0110】
ここでは、左側候補グループ(A
0,A
1)、上側候補グループ(B
0,B
1,B
2)に分けて説明したが、候補グループはこれに限定されずに設定することもできる。例えば、左側候補グループはA
1のみを有し、上側候補グループはB
1のみを有し、A
0、B
0、B
2を有するコーナー候補グループを構成することもできる。左側候補グループ、上側候補グループ、コーナー候補グループに分ける場合にも、グループ別に、現在ブロックと、参照ピクチャインデックスが同一か否か、参照ピクチャリストが同一か否かなどを判断して、現在ブロックのMVP候補を所定個数選択することもできる。
【0111】
このとき、より正確に現在ブロックの動きベクトルを予測するために、周辺ブロックから選択される動きベクトル(隣接の動きベクトル)をスケーリング(scaling)することができる。
【0112】
例えば、現在ブロックの動きベクトルMV
Cの参照フレーム(参照ピクチャ)に対応する参照フレーム(参照ピクチャ)を有する周辺ブロックがない場合、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子(Predictor of Motion Vector:PMV又はMotion Vector Predictor:MVP)を生成することができる。
【0113】
図5は、本発明によるスケーリングの方法を説明するための図面であり、現在ブロックと周辺ブロックとの関係を概略的に示している。
図5では説明の便宜のために現在ブロック510に対して左側周辺ブロックと上側周辺ブロック、そしてコーナー周辺ブロックのうち各々一つずつを考慮して動きベクトルをスケーリングする方法の一例を説明する。
図5では、コーナーブロックのうち現在ブロックの上右側コーナーブロックを周辺コーナーブロックを代表するブロックとして説明する。
図5について以下で説明する内容は、他の周辺コーナーブロックについても同様に適用されることができる。
【0114】
図5を参照すると、現在ブロック510の上側(upper)ブロック530、上右側(upper-right)ブロック540、左側(left)ブロック520に対し、MV
Cは現在ブロック510の動きベクトルであり、MV
Uは上側ブロック530の動きベクトルであり、MV
URは上右側ブロック540の動きベクトルであり、MV
Lは左側ブロック520の動きベクトルである。また、現在ブロック510の上側ブロック530の参照ピクチャインデックスは1(Ref.#1)であり、現在ブロック510の上右側ブロック540の参照ピクチャインデックスも1(Ref.#1)であり、現在ブロック510の左側ブロック520の参照ピクチャインデックスは0(Ref.#0)と仮定する。参照ピクチャインデックスは、各ブロックの動きベクトルが示す参照フレーム(参照ピクチャ)インデックスを意味する。
【0115】
図5において、メモリ(バッファ)に格納された、参照ピクチャリストにおける0番目の参照フレーム(参照ピクチャ)が動き推定(motion estimation)に利用される場合、動きベクトルMV
Lが0番目の参照フレームの動きベクトル予測子の生成に利用されることができる。また、参照ピクチャリストにおける1番目の参照フレームが動き推定に利用される場合、三つの動きベクトルMV
L、MV
U、MV
ULの全てが1番目の参照フレームの動きベクトル予測子の生成に利用されることができる。参照ピクチャリストで2番目乃至4番目の参照フレームに対する動きベクトル予測子は、1番目の参照フレームの動きベクトル予測子と同じ値を有することができる。
【0116】
生成された動きベクトル予測子に基づいて、現在ブロックに対して推定された動きベクトルMV
Cと動きベクトル予測子との差分値が算出されることができ、MVDは、デコーディング装置に送信される。
【0117】
図5の例において、周辺ブロックの参照フレーム(参照ピクチャ)と同じ参照フレームである、参照ピクチャリストの0番目又は1番目の参照フレームが動き推定に利用される場合、適正な動きベクトル予測子を生成することができる。しかし、周辺ブロックの参照フレーム(参照ピクチャ)と異なる参照フレームが動き推定に利用される場合、生成される動きベクトル予測子は、現在ブロックの動きベクトルMV
Cと大きな差を示すことができる。その理由は、現在ブロックの動きベクトルMV
Cに対する参照フレームに対応する参照フレームを有する周辺ブロックがないため、周辺ブロックの情報を利用して現在ブロックの動きベクトルを効果的に予測しにくいためである。
【0118】
この場合、現在ブロックの周辺ブロックが有する動きベクトルに対するアップスケーリング又はダウンスケーリングを介して、現在ブロックの動きベクトルMV
Cにより近い動きベクトル予測子を生成することができ、符号化されて送信されるMVDのビット量を減らすことができる。
【0119】
例えば、現在ブロック510の周辺ブロックである上側ブロック530、上右側ブロック540、左側ブロック520の参照ピクチャの全てが現在ブロックの参照ピクチャと異なると仮定する場合、周辺ブロック520、530、540の動きベクトルは、数式1の例のように、線形補間(linear interpolation)によりアップスケーリングされ(up-scaled)又はダウンスケーリングされる(down-scaled)ことができる。
【0121】
数式1において、f
Lは現在ブロックの左側ブロックの参照フレームナンバ(又は、参照ピクチャインデックス)を表し、f
Uは現在ブロックの上側ブロックの参照フレームナンバを表し、f
URはコーナーブロックのうち現在ブロックの右上側ブロックの参照フレームナンバを表し、f
MEは動き推定された参照フレームナンバであり、f
Cは現在フレームナンバである。
【0122】
数式1のような線形補間により、現在ブロックの周辺ブロックの動きベクトルがアップスケーリング又はダウンスケーリングされることができる。スケーリングされた周辺ブロックの動きベクトルを利用して動きベクトル予測子を生成することができる。このとき、エンコーディング装置又はデコーディング装置は、多様な方法により動きベクトル予測子を生成することができる。例えば、周辺ブロックの動きベクトルのうちいずれか一つを選択して動きベクトル予測子として利用することもでき、周辺ブロックの動きベクトルを平均した値を動きベクトル予測子として利用することもでき、周辺ブロックの動きベクトルをメディアンフィルタリングした値を動きベクトル予測子として利用することもできる。
【0123】
図6は、本発明によるスケーリングの方法を概略的に説明する流れ図である。
【0124】
図6を参照すると、エンコーディング装置又はデコーディング装置は、n番目の参照フレームを利用して動き推定を実行する(S610)。n番目の参照フレームは、参照ピクチャリストにおけるn番目の参照ピクチャ(参照フレーム)であり、現在ブロックの参照フレーム(参照ピクチャ)である。
【0125】
エンコーディング装置又はデコーディング装置は、周辺ブロックの参照フレームナンバ(参照ピクチャの場合には参照ピクチャインデックス)がnと異なるかどうかを判断する(S620)。例えば、周辺ブロックとして現在ブロックの左側ブロック、現在ブロックの上側ブロック、そしてコーナーブロックのうち、現在ブロックの上右側コーナーブロックを考慮する場合、エンコーディング装置又はデコーディング装置は、左側ブロックの参照フレームナンバf
L、上側ブロックの参照フレームナンバf
U、上右側ブロックの参照フレームナンバf
URの値がnと異なるかどうかを判断する。
【0126】
エンコーディング装置又はデコーディング装置は、周辺ブロックの参照フレームナンバがnと異なる場合、周辺ブロックの動きベクトルをスケーリングすることができる(S630)。例えば、前述したように現在ブロックの左側、上側、上右側ブロックを周辺ブロックとして考慮するとき、エンコーディング装置又はデコーディング装置は、f
L、f
U、f
URの値がnと異なる場合、対応するブロックの動きベクトル、即ち、現在ブロックの左側ブロックの動きベクトルMV
L、現在ブロックの上側ブロックの動きベクトルMV
U、現在ブロックの上右側ブロックの動きベクトルMV
URをスケーリングすることができる。
【0127】
エンコーディング装置又はデコーディング装置は、現在ブロックに対する動きベクトル予測子を生成する(S640)。エンコーディング装置又はデコーディング装置は、周辺ブロックのうちいずれか一つが現在ブロックの参照フレームと同じ参照フレームナンバを有する場合、該当ブロックの動きベクトルを利用して現在ブロックに対する動きベクトル予測子を生成することができる。例えば、f
L、f
U、f
URの値のうち少なくとも一つがnの値を有する場合、nの参照フレームナンバを有する周辺ブロックの動きベクトルを利用して現在ブロックに対する動きベクトル予測子を生成することができる。また、エンコーディング装置又はデコーディング装置は、f
L、f
U、f
URの値の全てがnと異なる値を有する場合、周辺ブロックの動きベクトルを前述したようにスケーリングして現在ブロックに対する動きベクトル予測子を生成することができる。スケーリング方法としては前述した数式1を利用することができる。
【0128】
このとき、エンコーディング装置又はデコーディング装置は、周辺ブロックのスケーリングされた動きベクトル又はスケーリングされない動きベクトルに対してメディアン値を求めて現在ブロックに対する動きベクトル予測子を生成することができる。または、エンコーディング装置又はデコーディング装置は、周辺ブロックのスケーリングされた動きベクトル又はスケーリングされない動きベクトルに対して平均値を求めて現在ブロックに対する動きベクトル予測子を生成することもできる。または、エンコーディング装置又はデコーディング装置は、周辺ブロックのスケーリングされた動きベクトル又はスケーリングされない動きベクトルのうちいずれか一つを現在ブロックに対する動きベクトル予測子として利用することもできる。
【0129】
ここでは説明の便宜のために、現在ブロックの周辺ブロックとして、現在ブロックの左側に位置する周辺ブロックを代表する左側ブロック520、現在ブロックの上側に位置する周辺ブロックを代表する上側ブロック530、現在ブロックの周辺コーナーに位置するブロックを代表する右上側ブロック540を例示したが、周辺ブロックを全部考慮し、又は周辺ブロックのうち他の位置のブロックを考慮して前述した方法を適用することもできる。
【0130】
例えば、
図4に示すように、コーナーブロック3個410、430、450、左側ブロック420のうちいずれか一つ、そして上側ブロック440のうちいずれか一つを利用して動きベクトル予測子を生成することもできる。この場合、左側ブロック420のうち特定の位置のブロック420−1を利用したり、上側ブロック440のうち特定の位置のブロック440−1を利用したりすることもできる。
【0131】
また、現在ブロックの参照フレーム(参照ピクチャ)と同じ参照フレームを有するブロックがあるかどうかを左側候補グループ(A
0,A
1)に対して判断し、上側候補グループ(B
0,B
1,B
2)に対して判断し、一つずつの候補を選択することもできる。左側候補グループのブロックのうち、現在ブロックの参照フレーム(参照ピクチャ)と同じ参照フレーム(ピクチャ)を有するブロックがない場合には、左側候補ブロック又は左側候補ブロックの中から選択されたブロックの動きベクトルをスケーリングすることができる。また、上側候補グループのブロックのうち、現在ブロックの参照フレーム(参照ピクチャ)と同じ参照フレーム(ピクチャ)を有するブロックがない場合には、上側候補ブロック又は上側候補ブロックの中から選択されたブロックの動きベクトルをスケーリングすることができる。
【0132】
図7は、本発明によって、現在ピクチャ(現在フレーム)内の現在ブロックの周辺ブロックが有する動きベクトルをスケーリングする方法を概略的に説明する図面である。
【0133】
図7を参照すると、現在ピクチャ700内の現在ブロック740の周辺ブロック730の参照ピクチャは、現在ブロック740の参照ピクチャと同じであってもよく、異なってもよい。
【0134】
現在ブロック740の参照ピクチャと周辺ブロック730の参照ピクチャが参照ピクチャ710で互いに同一である場合、周辺ブロック730の動きベクトル750は、スケーリングせずに現在ブロックの動きベクトル予測子の生成に利用することができる。このとき、周辺ブロック730は、現在ブロック740と同じ参照ピクチャリストを有することもでき、異なる参照ピクチャリストを有することもできる。例えば、現在ブロック740の参照ピクチャが参照リストL0のN番目の参照ピクチャであり、周辺ブロック730が現在ブロック740と同じ参照ピクチャ及び同じ参照ピクチャリストを有する場合、周辺ブロック730の動きベクトル750は、mvL0Nのように表現されることができる。
【0135】
一方、現在ブロック740の参照ピクチャが参照ピクチャ710であり、周辺ブロック730の参照ピクチャが参照ピクチャ720である場合、即ち、互いに異なる場合、周辺ブロック730の動きベクトル760をスケーリングして現在ブロックの動きベクトル予測子の生成に利用されることができる。このとき、周辺ブロック730は、現在ブロック740と同じ参照ピクチャリストを有することもでき、異なる参照ピクチャリストを有することもできる。例えば、現在ブロック740の参照ピクチャが参照リストL0のN番目の参照ピクチャであり、周辺ブロック730が現在ブロック740と異なる参照ピクチャを有し、参照ピクチャリストは同じ場合、周辺ブロック730の動きベクトル760をスケーリングした動きベクトルをmvL0N_scaledで表現することができる。
【0136】
周辺ブロックの動きベクトルは、現在ブロックの参照ピクチャと現在ピクチャとの間の距離、tb、そして周辺ブロックの参照ピクチャと現在ピクチャとの間の距離、tdの大きさを考慮して実行されることができる。周辺ブロックの動きベクトルをスケーリングする方法の一例として、数式2の方法を利用することができる。
【0138】
ここで、DistScaleFactorは、前述したように、二つの距離、tbとtdの大きさを考慮して決定されるスケーリングファクタである。このとき、切り上げの場合には数式2のように定数128を利用し、切り捨ての場合には定数128の代わりに定数127を利用することもできる。例えば、1/4画素ブロック(Quarter Pel Unit)でスケーリングを実行した結果が1.5の場合、定数128を適用する場合には2にラウンディングされ、定数127を適用する場合には1にラウンディングされる結果を得ることができる。ただし、切り捨ての場合、0を指向する切り捨てを適用することもできる。例えば、−1.5の値に対して切り捨てを適用する場合、−2ではなく−1の値になるように切り捨てを適用することもできる。
【0139】
DistScaleFactorは、多様な方法により決定されることができ、数式3及び数式4は、DistScaleFactorを決定する互いに異なる方法の例である。
【0142】
このとき、数式3及び数式4におけるtxは、H.264/MPEG−4AVCの時間動きベクトル候補の導出と同様に、tx=(16384+(Abs(td)/2))/tdに設定することができる(H.264標準8.4.1.2.3参照)。
【0143】
一方、動きベクトル予測子の生成に利用する周辺ブロックは、動きベクトル競合(Motion Vector Competition)を介して選択されることができる。動きベクトル競合は、複数個の動きベクトル候補の中から最適の動きベクトルを選択して予測値として使用することを意味する。この場合、現在ブロックの空間の(Spatial)隣接ブロックだけでなく、時間の(temporal)隣接ブロックであるcolブロックまで考慮されることができる。
【0144】
図8は、本発明の一実施例によって動きベクトル競合を実行する方法を概略的に説明する図面である。
図8では、現在ブロック800の周辺ブロックのうち、空間周辺ブロックを示している。
【0145】
図8を参照すると、
図8の空間周辺ブロックは、現在ブロック800の上側にあるna(naは、1以上の整数)個の上側グループブロック(a
0,a
1,...,a
na)、現在ブロック800の左側にあるnb(nbは、1以上の整数)個の左側グループブロック(b
0,b
1,...,b
nb)、そして、現在ブロック800の右上側、左下側、左上側コーナーにあるコーナーグループブロック(c,d,e)を有する。
【0146】
図8の例において、アドバンスド動きベクトル予測子(Advanced Motion Vector Prediction:AMVP)における動きベクトル候補は、数式5の例のように求めることができる。
【0148】
数式5において、三つの空間動きベクトルa′、b′、c′は、各グループ(現在ブロックの上側にあるブロック、現在ブロックの左側にあるブロック、現在ブロックのコーナーにあるブロック)で現在ブロック800と同じ参照リスト、同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルを意味する。エンコーディング装置又はデコーディング装置は、数式5の動きベクトル候補の全部又は一部を利用して
図3で説明した動きベクトル予測子の候補リストを生成することができる。
【0149】
エンコーディング装置又はデコーディング装置は、数式5の動きベクトル候補の中から所定の候補を現在ブロックの動きベクトル予測子として選定することができる。このとき、エンコーディング装置又はデコーディング装置は、数式5の動きベクトルのうち一部又は全部を考慮して現在ブロックのMVPを選択することができる。例えば、エンコーディング装置は、数式5の動きベクトル候補のうち現在ブロックの動きベクトルとの残差が最小となる候補を現在ブロックに対するMVPとして選択し、これに関する情報をデコーディング装置に送信することもできる。また、エンコーディング装置は、数式5の動きベクトルのうち一部の動きベクトル、例えば、a′、b′、c′のみを考慮して利用可能な動きベクトルを選択し、a′、b′、c′が考慮の対象にならない場合(利用可能でない場合)には、追加として時間予測子を考慮することもできる。
【0150】
数式5において、median(a′,b′,c′)は、a′、b′、c′のメディアン(median)ベクトルであり、メディアンベクトルを算出する方法の一例として以下の1)乃至4)を利用することができる。
【0151】
1)a′、b′、c′の全てが利用可能(available)な場合にはそのままa′、b′、c′の値を計算してメディアンベクトルを算出する。
【0152】
2)a′、b′、c′のうち、2個のみ利用可能な場合には、利用できない(not available)動きベクトルの値を0に設定してメディアンベクトルを算出する。
【0153】
3)a′、b′、c′のうち、1個のみ利用可能な場合には、利用可能な動きベクトルをメディアンベクトルとして利用する。
【0154】
4)1)乃至3)以外の場合にはメディアンベクトルの値を0に設定する。
【0155】
このとき、a′、b′、c′の各々の動きベクトルのうち利用可能でない動きベクトルは、動きベクトル候補に含まれない。また、時間動きベクトル予測子は、現在ピクチャ(フレーム)とは異なるピクチャ(フレーム)における現在ブロックに対応する位置にある(co-located)動きベクトルを意味する。
【0156】
一方、現在ブロック800の上側にあるna(naは、1以上の整数)個の上側グループブロック(a
0,a
1,...,a
na)のうち、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルを求めるための疑似コード(pseudo code)の一例は、表1の通りである。
【0158】
表1ではをa
0からa
naの順序で検索する場合を例示して説明したが、これに限定するものではなく、a
naからa
0の順序で検索し、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルを求めることもできる。
【0159】
一方、表1の例とは違って、参照ピクチャリストと参照ピクチャインデックスに関係なく、上側グループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてa′の値として割り当てることもできる。この場合、動きベクトルa′を求めるための疑似コードの一例は、表2の通りである。
【0161】
表2でもa
0からa
naの順序で検索する場合を例示して説明したが、これに限定するものではなく、a
naからa
0の順序で検索し、現在ブロック800と同じ参照ピクチャリスト、同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0162】
現在ブロック800の左側にあるnb(nbは、1以上の整数)個の左側グループブロック(b
0,b
1,...,b
nb)のうち、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルb′も表1と同様に得ることができる。b′を求めるための疑似コード(pseudo code)の一例は、表3の通りである。
【0164】
表3ではb
0からb
nbの順序で検索する場合を例示して説明したが、これに限定するものではなく、b
nbからb
0の順序で検索し、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルを求めることもできる。
【0165】
一方、表3の例とは違って、参照ピクチャリストと参照ピクチャインデックスに関係なく、左側グループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてb′の値として割り当てることもできる。この場合、動きベクトルb′を求めるための疑似コードの一例は、表4の通りである。
【0167】
表4でもb
0からb
nbの順序で検索する場合を例示して説明したが、これに限定するものではなく、b
nbからb
0の順序で検索し、現在ブロック800と同じ参照ピクチャリスト、同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0168】
現在ブロック800のコーナーにある3個のコーナーグループブロック(c,d,e)のうち、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルc′も表1と同様に得ることができる。c′を求めるための疑似コード(pseudo code)の一例は、表5の通りである。表5では説明の便宜のために、c
0=c、c
1=d、c
2=eと記載する。
【0170】
表5ではc
0からc
2の順序で検索する場合を例示して説明したが、これに限定するものではなく、c
2からc
0の順序で検索したり、c
1→c
2→c
0又はc
1→c
0→c
2の順序で検索したりし、現在ブロック800と同じ参照ピクチャリスト及び同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルを求めることもできる。
【0171】
一方、表5の例とは違って、参照ピクチャリストと参照ピクチャインデックスに関係なく、コーナーグループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてc′の値として割り当てることもできる。この場合、動きベクトルc′を求めるための疑似コードの一例は、表6の通りである。
【0173】
表6でもc
0からc
2の順序で検索する場合を例示して説明したが、これに限定するものではなく、c
2からc
0の順序で検索したり、c
1→c
2→c
0又はc
1→c
0→c
2の順序で検索したりし、現在ブロック800と同じ参照ピクチャリスト、同じ参照ピクチャインデックスを有する1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0174】
一方、動きベクトルが利用可能でない場合にのみ、参照ピクチャリスト、参照ピクチャインデックスに関係なく該当周辺ブロックグループ内で最初に検索されたインターモードブロックの動きベクトルをスケーリングして動きベクトル候補として割り当てることもできる。
【0175】
表1〜表6では現在ブロックと参照ピクチャ及び参照ピクチャリストが同じブロックを利用可能なブロックに設定する。ただし、表2、4、6では、現在ブロックと参照ピクチャ及び参照ピクチャリストが異なる場合でも、インター予測モードのブロックである場合にスケーリングにより該当ブロックの動きベクトルを利用することができる。
【0176】
以下、表7乃至表12でも、現在ブロックと参照ピクチャ及び参照ピクチャリストが異なる場合、インター予測モードのブロックである場合にスケーリングにより該当ブロックの動きベクトルを利用することを説明している。
【0177】
表7は、上側グループブロックの動きベクトルが利用可能でない場合、上側グループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてa′を求めるための疑似コードの一例である。
【0179】
表7ではa
0からa
naの順序で検索する場合を例示して説明したが、これに限定するものではなく、a
naからa
0の順序で検索して1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0180】
表8は、左側グループブロックの動きベクトルが利用可能でない場合、左側グループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてb′を求めるための疑似コードの一例である。
【0182】
表8でもb
0からb
nbの順序で検索する場合を例示して説明したが、これに限定するものではなく、b
nbからb
0の順序で検索して1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0183】
表9は、左側グループブロックの動きベクトルが利用可能でない場合、左側グループブロックのうち、最初に検索されたインターモードブロックの動きベクトルをスケーリングしてc′を求めるための疑似コードの一例である。
【0185】
表9でもc
0からc
2の順序で検索する場合を例示して説明したが、これに限定するものではなく、c
2からc
0の順序で検索したり、c
1→c
2→c
0又はc
1→c
0→c
2の順序で検索したりし、1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0186】
一方、前述した方法と類似するが、現在ブロックの周辺ブロックの動きベクトルが利用可能でない場合、下記のような優先順位によってスケーリングの対象となる動きベクトルを決定することもできる。
【0187】
<優先順位>
1)現在ブロックと同じ参照ピクチャを参照するブロック(リスト0(L0)とリスト1(L1)が同じ参照ピクチャを有する場合に発生することができる)。
2)1)の検討後にも、周辺ブロックの動きベクトルのうち、利用可能な動きベクトルがない場合には、同じ参照ピクチャリストを有するブロック。
3)2)の検討後にも、周辺ブロックの動きベクトルのうち、利用可能な動きベクトルがない場合には、残りのインターモードブロック。
【0188】
したがって、エンコーディング装置又はデコーディング装置は、1)乃至3)の優先順位によって現在ブロックの周辺ブロックのうちいずれか一つのブロックを決定し、該当ブロックの動きベクトルをスケーリングすることができる。
【0189】
表10は、前述した優先順位に基づいて、上側グループブロックのうちいずれか一つのブロックを選択し、該当ブロックの動きベクトルをスケーリングしてa′を求めるための疑似コードの一例である。
【0191】
表10ではa
0からa
naの順序で検索する場合を例示して説明したが、これに限定するものではなく、a
naからa
0の順序で検索して1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0192】
表11は、前述した優先順位に基づいて、左側グループブロックのうちいずれか一つのブロックを選択し、該当ブロックの動きベクトルをスケーリングしてb′を求めるための疑似コードの一例である。
【0194】
表11でもb
0からb
nbの順序で検索する場合を例示して説明したが、これに限定するものではなく、b
nbからb
0の順序で検索して1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0195】
表12は、前述した優先順位に基づいて、左側グループブロックのうちいずれか一つのブロックを選択し、該当ブロックの動きベクトルをスケーリングしてc′を求めるための疑似コードの一例である。
【0197】
表12でもc
0からc
2の順序で検索する場合を例示して説明したが、これに限定するものではなく、c
2からc
0の順序で検索したり、c
1→c
2→c
0又はc
1→c
0→c
2の順序で検索したりして1番目の利用可能なブロックの動きベクトルをスケーリングして求めることもできる。
【0198】
表10乃至表12では前述したような優先順位にしたがって、スケーリング対象を選択して利用可能な動きベクトル候補を算出することを説明したが、優先順位は前述に限定されず、必要によって多様に変更して適用することができる。
【0199】
一方、前述した優先順位を条件として整理すると、下記のような検討条件に表現されることができる。
【0200】
<検討条件>
スキャン(scan)する対象ブロックの動き情報(参照ピクチャ、参照ピクチャインデックス)が、
(1)現在ブロックと同じ参照ピクチャであり、同じ参照ピクチャリスト。
(2)現在ブロックと同じ参照ピクチャであり、異なる参照ピクチャリスト。
(3)現在ブロックと異なる参照ピクチャであり、同じ参照ピクチャリスト。
(4)現在ブロックと異なる参照ピクチャであり、異なる参照ピクチャリスト。
【0201】
上記検討条件と関連して、エンコーディング装置又はデコーディング装置は、動きベクトル予測(motion vector prediction)のための、一つの空間動きベクトル候補を決定するために、所定の個数、例えば、n個のブロックを定められた順序に従ってスキャンする。このとき、エンコーディング装置又はデコーディング装置は、現在ブロックの周辺のn個のブロックを順にスキャンしながら、上記検討条件に該当するブロックであるかどうかを判断することもでき、現在ブロックの周辺ブロックをグループ別に、例えば、上側グループ、左側グループ、コーナーグループ別にスキャンしながら、スキャンする各グループについて上記検討条件に該当するブロックがあるかどうかを判断することもできる。また、上側グループ、左側グループ、コーナーグループに分ける代わりに、左上側コーナーブロックと右上側コーナーブロックを有する上側グループと、左下側コーナーブロックを有する左側ブロックと、に現在ブロックの周辺ブロックを分け、二つのグループに対してグループ別にスキャンしながら、スキャンするグループに上記検討条件を満たすブロックがあるかどうかを判断することもできる。
【0202】
上記検討条件に対し、エンコーディング装置又はデコーディング装置は、より低い番号の検討条件により高い優先順位を与えることができる。その理由は、より低い番号の検討条件を満たす周辺ブロックであるほど現在ブロックとより類似した動き情報を有するためである。
【0203】
以下、まず、現在ブロック周辺のn個のブロックを上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックの動きベクトルを予測するための動きベクトル予測子の候補として使用する方法を表を参照して説明する。
【0204】
ここで、利用可能なブロックとは、現在ブロックのインター予測に利用することができるブロックを意味する。
【0205】
スケーリングは、前述したように、現在ブロックの参照ピクチャと現在ピクチャとの間の時間的距離及び周辺ブロックの参照ピクチャと現在ピクチャとの間の時間的距離を考慮して実行されることができる。
【0206】
以下の表に記載された1〜12の数字は、スキャン(確認)の順序を示す。ここでは説明の便宜のために、現在ブロックの周辺ブロックとしてブロック0、ブロック1、ブロック2を考慮する。ブロック0〜ブロック2は、空間動きベクトル候補を求めるための候補ブロックの位置を示す。ブロック0〜ブロック2は、各々、現在ブロックの周辺の左側、上側、コーナーのうちいずれか一つに位置する。説明の便宜のために、ブロック0〜ブロック2は、スキャン順序に従って順に位置すると仮定する。
【0207】
表13は、現在ブロックの周辺のブロック0〜ブロック2を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の一例を示す。
【0209】
表13の例では、ブロック0で検討条件1を満たす動き情報があるかどうかを検索し、検討条件1を満たす動き情報がブロック0にある場合にはブロック0の動きベクトル(mv)を現在ブロックに対する空間動きベクトル予測子の候補として使用し、検討条件1を満たす動き情報がブロック0にない場合にはスキャン順序で2番目であるブロック1を検索し、検討条件1を満たす動き情報がブロック1にあるかどうかを確認する方式で現在ブロックの空間動きベクトル予測子の候補を決定する。
【0210】
表14は、現在ブロックの周辺のブロック0〜ブロック2を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0212】
表14の例では、ブロック0で検討条件1を満たす動き情報があるかどうかを検索し、検討条件1を満たす動き情報がブロック0にある場合にはブロック0の動きベクトル(mv)を現在ブロックに対する空間動きベクトル予測子の候補として利用し、検討条件1を満たす動き情報がブロック0にない場合にはブロック0に検討条件2を満たす動き情報があるかどうかをスキャン(確認)する。ブロック0に検討条件1〜4を満たす動き情報がない場合には、ブロック1に対して検討条件1から検討条件4まで順に検討しながら、該当条件を満たす動き情報があるかどうかをスキャンする方式によって、現在ブロックに対する空間動きベクトル予測子の候補を決定する。
【0213】
表15は、現在ブロックの周辺のブロック0〜ブロック2を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0215】
表15の例では、ブロック0で検討条件1を満たす動き情報があるかどうかを検索し、検討条件1を満たす動き情報がブロック0にある場合にはブロック0の動きベクトル(mv)を現在ブロックに対する空間動きベクトル予測子の候補として利用する。検討条件1を満たす動き情報がブロック0にない場合にはブロック1とブロック2に検討条件1を満たす動き情報があるかどうかを順にスキャンする。ブロック0〜2に検討条件1を満たす動き情報がない場合には、ブロック0に対して検討条件2から検討条件4まで順に検討しながら、該当条件を満たす動き情報があるかどうかをスキャンし、ブロック0に検討条件2〜検討条件4を満たす動き情報がない場合にはブロック1に対して順に検討条件2から検討条件4まで順に検討する方式によって、現在ブロックに対する空間動きベクトル予測子の候補を決定する。
【0216】
表16は、現在ブロックの周辺のブロック0〜ブロック2を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0218】
表16の例では、ブロック0で検討条件1から検討条件4まで、該当条件を満たす動きベクトルがあるかどうかを順に確認する。例えば、検討条件1を満たす動き情報がある場合、該当動きベクトルを現在ブロックに対する動きベクトル予測子の候補として利用する。検討条件1を満たす動き情報がない場合、検討条件2を満たす動き情報があるかどうかを確認する。ブロック0に検討条件1〜検討条件4を満たす動き情報がない場合にはブロック1とブロック2に検討条件1を満たす動き情報があるかどうかを順にスキャンする。ブロック0〜2に検討条件1を満たす動き情報がない場合には、ブロック1とブロック2に対して検討条件2を満たす動き情報があるかどうかを順に確認する方式によって、現在ブロックに対する空間動きベクトル予測子の候補を決定する。
【0219】
前述した表13の例は、例えば、ブロックの位置より検討条件を優先するスキャン順序である。一方、表14は、検討条件よりブロックの位置を優先するスキャン順序の例である。
【0220】
表15及び表16は、検討条件とブロックの位置の優先順位を適切に混合したスキャン順序の例である。表15は、前述したように、検討条件1を最優先にし、検討条件1を満たすブロックがない場合、ブロックの位置を考慮するスキャン順序の例である。また、表16は、ブロック0で各検討条件の利用可能性(availability)を検討した後、利用可能な動き情報がない場合に、条件を順に考慮するスキャン順序の例である。
【0221】
前述した方法によりスケーリングされた動きベクトル(例えば、a′、b′、c′)は、a′、b′、c′のメディアンベクトル値に影響を与えることができる。また、候補の動きベクトルを決定するとき、考慮する動きベクトルの個数などに影響を与えることもできる。例えば、スケーリングにより利用可能な動きベクトルに分類される周辺ブロックの動きベクトルが新たに生成されることができる。
【0222】
前述した方法は、AMVP技術を直接適用しない場合にも利用することができる。例えば、前述したa′、b′、c′を求め、a′、b′、c′からメディアン(median)を求める過程などを介して現在ブロックの動きベクトル予測を実行することもできる。
【0223】
このとき、a′、b′、c′を求める過程は、AMVPでa′、b′、c′を求める過程と同様に前述した方法を利用することもできる。
【0224】
一方、AMVP方法を
図9のように変形して適用することもできる。
【0225】
図9は、本発明の一実施例によってAMVPを適用する他の方法を概略的に説明する図面である。
図9を参照すると、動きベクトル候補として
図8に示す現在ブロックの周辺ブロックのうち一部を利用することができる。例えば、
図9の例では、現在ブロック900の左側にあるM個の左側ブロックA
0,A
1,...,A
mのうち、現在ブロックの左側の最下側に位置するブロックA
m、現在ブロック900の左下側コーナーブロックA
m+1、現在ブロック900の左上側コーナーブロックB
-1、現在ブロック900の上側にあるN個の上側ブロックのうち、現在ブロック上側の最右側に位置するブロックB
n、現在ブロック900の上右側コーナーブロックB
n+1をAMVPの候補ブロックとして利用することができる。
【0226】
この場合、各コーナーブロック、左下側ブロック420−1及び右上側ブロック440−1を利用する
図4の場合と同様に、現在ブロックの周辺ブロックA
m、A
m+1、B
-1、B
n、B
n+1を利用する。
図9の例では、左側ブロックA
m、A
m+1をA
m+1→A
mの順序910でスキャン(又は、確認)し、上側ブロックB
-1、B
n、B
n+1をB
n+1→B
n→B
-1の順序920でスキャン(又は、確認)する。
【0227】
このとき、現在ブロックに対する動きベクトルの候補として数式6のような動きベクトル(動きベクトル予測子:MVP)を考慮することができる。
【0229】
数式6は、
図9の例において、現在ブロックに対する動きベクトル予測子として利用されることができる動きベクトルの候補を示す。エンコーディング装置又はデコーディング装置は、数式6の動きベクトル候補の全部又は一部を利用して
図3で説明した動きベクトル予測子の候補リストを生成することができる。
【0230】
数式6を参照すると、
図9の例では現在ブロックの動きベクトルを予測するために、現在ブロックの空間周辺ブロックのうち2ブロックの動きベクトルを考慮する。エンコーディング装置又はデコーディング装置は、数式6に示す現在ブロックの二つの空間周辺ブロックの動きベクトルと現在ブロックの一つの時間周辺ブロックの動きベクトル(時間予測子)との両方ともを考慮することができる。また、エンコーディング装置又はデコーディング装置は、数式6に示す二つの空間周辺ブロックの動きベクトルをまず考慮し、二つの空間周辺ブロックの動きベクトルのうち利用することができない(unavailable)動きベクトルがある場合に時間予測子を考慮することもできる。
【0231】
数式6において、a′は、現在ブロックの左側ブロックA
m、A
m+1をA
m+1→A
mの順序910でスキャン(検討)するとき、利用可能であるとして最初に検索されたブロックの動きベクトルであり、現在ブロックに対する動きベクトル予測子の候補である。a′を左側動きベクトル予測子(left mv predictor)ということもできる。
【0232】
また、数式6において、b′は、現在ブロックの上側ブロック(B
-1、B
n、B
n+1をB
n+1→B
n→B
-1の順序920でスキャン(検討)するとき、利用可能であるとして最初に検索されたブロックの動きベクトルであり、現在ブロックに対する動きベクトル予測子の候補である。b′を上側動きベクトル予測子(top mv predictor)ということもできる。
【0233】
利用可能であるとして選択された周辺ブロックの参照ピクチャインデックスが現在ブロックの参照ピクチャインデックスと同じ場合、即ち、選択された周辺ブロックの参照ピクチャが現在ブロックの参照ピクチャと同じ場合、該当ブロックの動きベクトルは、スケーリングせずに現在ブロックに対する動きベクトル予測子として利用されることができる。この場合は、上記検討条件1又は検討条件2の場合に該当する。
【0234】
利用可能であるとして選択された周辺ブロックの参照ピクチャインデックスが現在ブロックの参照ピクチャインデックスと異なる場合、即ち、選択された周辺ブロックの参照ピクチャが現在ブロックの参照ピクチャと異なる場合、該当ブロックの動きベクトルは、スケーリングを介して現在ブロックに対する動きベクトル予測子として利用されることができる。この場合は、上記検討条件3又は検討条件4の場合に該当する。
【0235】
図9の場合にも上記4ステップの検討条件及び周辺ブロックの位置を考慮して多様な順序に従って現在ブロックの周辺ブロックに対する動きベクトルのスキャンが可能である。このとき、エンコーディング装置又はデコーディング装置は、左側ブロックA
m、A
m+1から求められる動きベクトル予測子の候補、例えば、左側動きベクトル予測子と、上側ブロックB
-1、B
n、B
n+1から求められる動きベクトル予測子の候補、例えば、上側動きベクトル予測子とを別個に決定することができる。
【0236】
図8の場合と同様に、
図9の場合にも以下の表で定められた順序に従ってスキャンをしながら検討条件を満たすかどうかを確認し、検討条件を満たす場合にはスキャンを中止し、検討条件を満たすブロックの動きベクトルをそのまま又はスケーリングして現在ブロックの動きベクトルを予測するための動きベクトル予測子(MVP)の候補として利用する。
【0237】
エンコーディング装置又はデコーディング装置は、選択された動きベクトル予測子の候補に基づいて動きベクトル予測子(MVP)リストを構成することができる。エンコーディング装置は、MVPリストで現在ブロックの予測に利用される動きベクトル予測子を動きベクトル予測子インデックスなどを介して指示することができる。デコーディング装置は、エンコーディング装置から受信した動きベクトル予測子インデックスが動きベクトル予測子リストにおいて指示する動きベクトル予測子を利用して現在ブロックの動きベクトルを導出することができる。
【0238】
以下、左側動きベクトル予測子を選択する方法と上側動きベクトル予測子を選択する方法とを順に説明する。以下の表でも1〜8の数字はスキャンの順序を示す。
【0239】
表17は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の一例を示す。
【0241】
表17の例では、ブロックA
mが上記検討条件のうち一つを満たすかどうかを確認する。ブロックA
mが検討条件1を満たさない場合、ブロックA
mが検討条件2を満たすかどうかを確認する。このような方式によってスキャンし、ブロックA
mが検討条件1〜検討条件4を満たさない場合にはスキャン順序に従ってブロックA
m+1が検討条件1〜検討条件4のうち一つを満たすかどうかを順に確認する。
【0242】
スキャン過程で該当ブロックが検討条件を満たす場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0243】
表18は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0245】
表18の例では、ブロックA
mが検討条件1を満たすかどうかを確認する。ブロックA
mが検討条件1を満たさない場合には、ブロックA
m+1が検討条件1を満たすかどうかを確認する。ブロックA
m+1も検討条件1を満たさない場合には、ブロックA
mが検討条件2〜検討条件4のうち一つを満たすかどうかを順に確認する。ブロックA
mが検討条件2〜検討条件4を満たさない場合、スキャン順序に従ってブロックA
m+1が検討条件2〜検討条件4のうち一つを満たすかどうかを順に確認する。
【0246】
スキャン過程で該当ブロックが検討条件を満たす場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0247】
表19は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0249】
表19の例では、表17のスキャン順序とは違って、ブロックA
m+1が検討条件1〜検討条件4を満たすかどうかを順に確認し、ブロックA
m+1が検討条件1〜検討条件4を満たさない場合、ブロックA
mが検討条件1〜検討条件4を満たすかどうかを順に確認する。
【0250】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0251】
表20は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0253】
表20の例では、表18の例で適用したスキャン順序を、表18の例とは違って、ブロックA
m+1に優先順位をおいて適用する。例えば、表20の例では、ブロックA
m+1が条件1を満たすかどうかを確認する。ブロックA
m+1が検討条件1を満たさない場合には、スキャン順序に従ってブロックA
mが検討条件1を満たすかどうかを確認する。ブロックA
mも検討条件1を満たさない場合にはスキャン順序に従って、ブロックA
m+1が検討条件2〜検討条件4のうちいずれか一つを満たすかどうかを順に確認する。ブロックA
m+1が検討条件2〜検討条件4を満たさない場合、スキャン順序に従ってブロックA
mが検討条件2〜検討条件4のうちいずれか一つを満たすかどうかを確認する。
【0254】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0255】
表21は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0257】
表21の例では、ます、ブロックA
m+1が検討条件1を満たすかどうかを確認する。ブロックA
m+1が検討条件1を満たさない場合には、スキャン順序に従ってブロックA
mが検討条件1を満たすかどうかを確認する。ブロックA
mも検討条件1を満たさない場合には、スキャン順序に従って、ブロックA
m+1が検討条件2を満たすかどうかを確認する。ブロックA
m+1が検討条件2を満たさない場合、スキャン順序に従ってブロックA
mが検討条件2を満たすかどうかを確認する。ブロックA
mが検討条件2を満たさない場合、ブロックA
m+1が検討条件3〜検討条件4のうち一つを満たすかどうかを順に確認し、ブロックA
mが検討条件3〜検討条件4のうち一つを満たすかどうかを順に確認する。
【0258】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0259】
表22は、
図9において現在ブロック900の左側周辺ブロックA
m、A
m+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0261】
表22では各ブロック別に検討条件を2つずつ順に確認する。具体的には、まず、エンコーディング装置又はデコーディング装置は、ブロックA
m+1が検討条件1を満たすかどうかを確認する。ブロックA
m+1が検討条件1を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
m+1が検討条件2を満たすかどうかを確認する。ブロックA
m+1が検討条件2を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
mが検討条件1を満たすかどうかを確認する。ブロックA
mが検討条件1を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
mが検討条件2を満たすかどうかを確認する。ブロックA
mが検討条件2を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
m+1が検討条件3を満たすかどうかを確認する。ブロックA
m+1が検討条件3を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
m+1が検討条件4を満たすかどうかを確認する。ブロックA
m+1が検討条件4を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
mが検討条件3を満たすかどうかを確認する。ブロックA
mが検討条件3を満たさない場合、エンコーディング装置又はデコーディング装置は、ブロックA
mが検討条件4を満たすかどうかを確認する。
【0262】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0263】
上記表17〜表22の例のように、現在ブロックの左側周辺ブロックA
m及びA
m+1から現在ブロックに対する動きベクトル予測子の候補、即ち、左側動きベクトル候補(left mv candidate)を求めるために多様なスキャン順序を適用することができる。
【0264】
このとき、スキャンを実行する場合の数を減らして複雑さにおける利得を得るために一部のスキャンを省略又は除去することもできる。例えば、表17の例において、順序1〜5までのスキャンのみを実行し、順序6〜8に該当するスキャンは,省略することもできる。同様に、表18〜表22の例でも、後方の順位(例えば、5〜8、6〜8、7〜8又は8等)のスキャンは、プロセスの複雑さを軽減するために省略することもできる。
【0265】
また、検討条件に該当するか否かを確認する手順を検討条件別にグルーピングして実行することによって複雑さにおける利得を得ることもできる。例えば、表22の場合、各ブロック別に2個ずつの検討条件を順に確認する。
【0266】
また、表21の例と表22の例とは、検討条件1及び検討条件2を優先する方法である。前述したように、検討条件1及び検討条件2の場合に該当するブロックは、現在ブロックと同じ参照ピクチャを有するため、スケーリングせずに該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として利用することができる。したがって、スケーリングの頻度を減らし、複雑さを軽減することができる。
【0267】
以下、現在ブロックの上側周辺ブロックB
-1、B
n、B
n+1から現在ブロックに対する動きベクトル予測子の候補、即ち、上側動きベクトル予測子を選択する方法を説明する。上側周辺ブロックから現在ブロックに対する動きベクトル予測子の候補を選択する方法は、スキャン対象ブロックが3個という点を除外すると、左側周辺ブロックから現在ブロックに対する動きベクトル予測子の候補を選択する方法と基本的に同様である。以下の表において、1〜12の数字はスキャンの順序を意味する。
【0268】
表23は、
図9において現在ブロック900の上側周辺ブロックB
-1、B
n、B
n+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の一例を示す。
【0270】
表23の例では、ブロックB
n+1が上記検討条件のうち一つを満たすかどうかを確認する。ブロックB
n+1が検討条件1を満たさない場合、次にブロックB
n+1が検討条件2を満たすかどうかを確認する。このような方式によってスキャンし、ブロックB
n+1が検討条件1〜検討条件4を満たさない場合にはブロックB
nが検討条件1〜検討条件4のうち一つを満たすかどうかを順に確認する。また、ブロックB
nが検討条件1〜検討条件4を満たさない場合には、ブロックB
-1が検討条件1〜検討条件4のうち一つを満たすかどうかを順に確認する。
【0271】
スキャン過程で該当ブロックが検討条件を満たす場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0272】
表24は、
図9において、現在ブロック900の上側周辺ブロックB
-1、B
n、B
n+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0274】
表24の例では、ブロックB
n+1が検討条件1を満たすかどうかを確認する。ブロックB
n+1が検討条件1を満たさない場合には、ブロックB
nが検討条件1を満たすかどうかを確認する。ブロックB
nが検討条件1を満たさない場合には、ブロックB
-1が検討条件1を満たすかどうかを確認する。ブロックB
-1が検討条件1を満たさない場合、再びブロックB
n+1からB
-1の順序で、検討条件2を満たすかどうかを確認する。ブロックB
n+1、B
n、B
-1が検討条件2を満たさない場合、再びB
n+1からB
-1の順序で、検討条件3を満たすかどうかを確認する。このような方法によって、ブロックB
n+1、B
n、B
-1のうち検討条件1〜検討条件4のうち一つを満たすブロックがあるかどうかをスキャン順序に従って順に確認する。
【0275】
スキャン過程で検討条件を満たす周辺ブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0276】
表25は、
図9において現在ブロック900の上側周辺ブロックB
-1、B
n、B
n+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認した1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0278】
表25の例では、検討条件1を満たすかどうかをブロックB
n+1、B
n、B
-1の順序で確認する。検討条件1を満たす上側周辺ブロックがない場合には、ブロックB
n+1に対して検討条件2〜検討条件4のうち一つを満たすかどうかを順に確認する。ブロックB
n+1が検討条件2〜検討条件4を満たさない場合には、ブロックB
nが検討条件2〜検討条件4のうち一つを満たすかどうかを順に確認する。ブロックB
nが検討条件2〜検討条件4を満たさない場合には、ブロックB
-1が検討条件2〜検討条件4のうち一つを満たすかどうかを順に確認する。
【0279】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0280】
表26は、
図9において現在ブロック900の上側周辺ブロックB
-1、B
n、B
n+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0282】
表26の例では、表25の例とは違って、検討条件1及び2に対しては、各検討条件をブロックB
n+1、B
n、B
-1が満たすかどうかを順に確認し、検討条件3及び4については各ブロック別に満たすかどうかを順に判断する。例えば、まず、検討条件1を満たすかどうかをブロックB
n+1、B
n、B
-1の順序で確認し、検討条件1を満たす上側周辺ブロックがない場合には、検討条件2を満たすかどうかをブロックB
n+1、B
n、B
-1の順序で確認する。検討条件1及び検討条件2のうち一つを満たす上側ブロックがない場合には、ブロックB
n+1が検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認し、ブロックB
n+1が検討条件3及び検討条件4を満たさない場合には、ブロックB
nが検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認する。ブロックB
nが検討条件3及び検討条件4を満たさない場合には、ブロックB
-1が検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認する。
【0283】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0284】
表27は、
図9において現在ブロック900の上側周辺ブロックB
-1、B
n、B
n+1を上記検討条件の優先順位に従ってスキャンしながら、利用可能であると確認された1番目のブロックの動きベクトルをそのまま又はスケーリングして現在ブロックに対する空間動きベクトル予測子の候補として使用する方法の他の例を示す。
【0286】
表27の例では、表22の例と同様に、各ブロック当たり2個ずつの検討条件を確認する。具体的には、エンコーディング装置又はデコーディング装置は、ブロックB
n+1が検討条件1又は検討条件2のうち一つを満たすかどうかを順に確認する。ブロックB
n+1が検討条件1及び検討条件2を満たさない場合には、ブロックB
nが検討条件1又は検討条件2のうち一つを満たすかどうかを順に確認する。ブロックB
nが検討条件1及び検討条件2を満たさない場合には、ブロックB
-1が検討条件1又は検討条件2のうち一つを満たすかどうかを順に確認する。上側ブロックが検討条件1及び検討条件2を満たさない場合、ブロックB
n+1が検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認する。ブロックB
n+1が検討条件3及び検討条件4を満たさない場合、ブロックB
nが検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認する。ブロックB
nが検討条件3及び検討条件4を満たさない場合、ブロックB
-1が検討条件3又は検討条件4のうち一つを満たすかどうかを順に確認する。
【0287】
スキャン過程で検討条件を満たすブロックを探し出した場合、エンコーディング装置又はデコーディング装置は、スキャンを中止し、該当ブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択する。エンコーディング装置又はデコーディング装置は、必要によって、周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することもできる。例えば、エンコーディング装置又はデコーディング装置は、周辺ブロックと現在ブロックとの参照ピクチャが異なる場合には、該当周辺ブロックの動きベクトルをスケーリングして動きベクトル予測子の候補として利用することができる。このとき、スケーリング方法として、前述した数式1又は数式2の方法を利用することもできる。
【0288】
表23〜表27に示すように、現在ブロックの左側ブロックから現在ブロックに対する動きベクトル予測子の候補を求めるのと同様に、現在ブロックの上側ブロックから現在ブロックに対する動きベクトル予測子の候補を求めるためにも多様なスキャン順序を適用することができる。
【0289】
上側ブロックから現在ブロックに対する動きベクトル予測子の候補、即ち、上側動きベクトルの候補(top mv candidate)を求める方法においても、複雑さを軽減するために、スキャンを実行する場合の数を減らすこともできる。例えば、検討条件1を満たすかどうかを確認するスキャンの場合又は各検討条件別に1番目のスキャンの場合にのみスキャンを実行するようにすることができる。この場合、表23の例では順序6、7、8、10、11、12のスキャンを省略することができる。
【0290】
また、表26及び表27の例は、表21及び表22の例と同様に、検討条件1及び検討条件2を優先する方法である。検討条件1及び検討条件2に該当するブロックは、現在ブロック(例えば、現在予測ユニット)と同じ参照ピクチャを参照するため、動きベクトルをスケーリングせずに、そのまま現在ブロックに対する動きベクトル予測子の候補として利用することができる。したがって、動きベクトルのスケーリングによる複雑さを軽減することができる。
【0291】
一方、前述したスキャン方法外に多様な検討条件の組合せ及び検討条件の順序、ブロック位置の順序を適用することが可能である。また、前述したスキャン方法を組合せて適用することも可能である。
【0292】
また、本明細書では動きベクトル予測子という表現を利用したが、これは説明の便宜のためのものであり、動きベクトル予測子は、予測動きベクトル(Predicted Motion Vector:PMV)などと呼ばれることもある。
【0293】
図4、
図5、
図7、
図8、
図9において、現在ブロック及び現在ブロックの周辺ブロックは、予測ユニットであってもよい。それだけでなく、
図4、
図5、
図7、
図8、
図9において、現在ブロック及び現在ブロックの周辺ブロックは、変換ユニットであってもよい。したがって、
図4、
図5、
図7、
図8、
図9で説明した内容は、現在ブロック及び現在ブロックの周辺ブロックが符号化ユニット又は変換ユニットである場合にも同様に適用されることができる。
【0294】
一方、本明細書では、動きベクトル予測子の候補を選択し、選択された動きベクトル予測子の候補を利用して現在ブロックに対する予測を実行する過程がエンコーディング装置又はデコーディング装置で行われると説明したが、これは説明の便宜のためのものであり、本発明はこれに限定されるものではない。動きベクトル予測子の候補を選択し、選択された動きベクトル予測子の候補を利用して現在ブロックに対する予測を実行する過程は、エンコーディング装置又はデコーディング装置における所定のモジュール又はユニットで実行されてもよい。例えば、動きベクトル予測子の候補を選択し、選択された動きベクトル予測子の候補を利用して現在ブロックに対する予測を実行する過程をエンコーディング装置又はデコーディング装置における予測部で実行することができる。
【0295】
図10は、本発明によって現在ブロックに対する動きベクトル予測子を選択する方法を概略的に説明する流れ図である。
図10の各ステップは、エンコーディング装置又はデコーディング装置が実行することができる。また、エンコーディング装置又はデコーディング装置の予測部が
図10の各ステップを実行することもできる。ここでは説明の便宜のためにエンコーディング装置又はデコーディング装置における予測部が
図10の各ステップを実行すると想定して説明する。
【0296】
図10を参照すると、予測部は、現在ブロックに対する動きベクトル予測子の候補を選択する(S1010)。予測部は、現在ブロックの周辺ブロックから利用可能であるとして検索された1番目のブロックの動きベクトルを現在ブロックに対する動きベクトル予測子の候補として選択することができる。このとき、予測部は、現在ブロックの周辺ブロックを所定のグループに分けて検索を実行し、各グループ別に現在ブロックに対する動きベクトル予測子の候補を選択することもできる。
【0297】
このとき、利用可能なブロックは、インター予測モードでエンコーディング/デコーディングされるブロックであり、前述した検討条件を満たすブロックである。現在ブロックの周辺ブロックをグループに分ける方法は前述した通りである。
【0298】
また、予測部は、利用可能であるとして検索された1番目のブロックの動きベクトルをスケーリングして、現在ブロックに対する動きベクトル予測子の候補として選択することもできる。例えば、予測部は、利用可能であるとして検索された1番目のブロックが前述した検討条件3又は検討条件4に該当する場合には、該当ブロックの動きベクトルをスケーリングすることができる。スケーリングの具体的な方法は、前述した通りである。
【0299】
予測部は、空間の周辺ブロックから求めることができる動きベクトル予測子の候補の個数が所定の個数に達しない場合には、時間の周辺ブロックから動きベクトル予測子の候補を求めることもできる。
【0300】
予測部は、動きベクトル予測子の候補の中から現在ブロックに対する動きベクトル予測子を選択することができる(S1020)。予測部は、選択した動きベクトル予測子の候補で動きベクトル予測子リストを構成することができる。エンコーディング装置の予測部は、送信情報量を最小にする動きベクトル予測子を、動きベクトル予測子リストから選択することができる。デコーディング装置の予測部は、エンコーディング装置から送信された動きベクトル予測子に関する情報(例えば、動きベクトル予測子インデックス)が指示する動きベクトル予測子を動きベクトル予測子リストから選択し、現在ブロックに対する予測を実行することができる。
【0301】
前述した例示的なシステムにおいて、方法は一連のステップ又は流れ図に基づいて説明されているが、本発明は、このステップの順序に限定されるものではなく、あるステップは、前述と異なるステップと異なる順序で又は同時に実行することができる。また、前述した実施例は、多様な態様の例を含む。
【0302】
したがって、本発明は、前述した実施例を同時に適用したり、組合せて適用したりする実施形態を含む。