(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
特定の実装形態において、ビデオ復号器が現在のブロックについてビットストリームから復号される初期動きベクトル予測因子を精緻化させることができる。シグナリングのオーバヘッドを減らすために、復号器は既に利用可能な情報に基づいて、例えば動きフィールドが現在のブロックの周りで均一かどうかや隣接ブロック内に一定レベルのテクスチャネスがあるかどうかに基づいて動き精緻化を使用するかどうかを決定することができる。ビットストリーム内で明確なシグナリングを受信することなしに動き精緻化を自動的に活性化し又は非活性化するために、ビットストリームから復号される動きベクトル差を使用することができる。例えば動きベクトル差が或る閾値を下回る場合は動き精緻化を自動的に活性化し、動きベクトル差が別の閾値を上回る場合は動き精緻化を自動的に非活性化する。対応するビデオ符号器が、符号器の決定に基づいて動き精緻化を使用するかどうか及びシグナリングするかどうかを決めることができる。
ビデオの現在のブロックに関する動きベクトル予測因子及び動きベクトル差にアクセスすること(1110)であって、前記動きベクトル予測因子は第1の動き分解能に関連する、アクセスすること、及び
前記動きベクトル差に基づいて前記動きベクトル予測因子を精緻化するかどうかを判定すること(1125、1130)を含む、ビデオを復号するための方法(1100)であって、
前記動きベクトル予測因子を精緻化すること(1170)が、
動き探索に基づいて精緻化された動きベクトル予測因子を形成することであって、前記精緻化された動きベクトル予測因子は第2の動き分解能に関連し、前記第2の動き分解能は前記第1の動き分解能よりも高い、形成すること、及び
前記精緻化された動きベクトル予測因子及び前記動きベクトル差に基づいて前記現在のブロックに関する動きベクトルを形成すること(1170)であって、前記現在のブロックは前記形成される動きベクトルに基づいて復号される、形成すること(1170)
を含む、方法(1100)。
前記動きベクトル差の大きさが第2の閾値を上回る場合は前記動きベクトル予測因子を精緻化しないと判定し、前記動きベクトル予測因子及び前記動きベクトル差に基づいて前記現在のブロックを復号することを更に含む、請求項1若しくは3に記載の方法又は請求項2若しくは3に記載の機器。
前記動きベクトル差の大きさが第1の閾値を上回る場合、ビットストリームからフラグを復号することを更に含み、前記動きベクトル予測因子を精緻化するかどうかは前記復号されるフラグに基づく、請求項1及び3乃至4の何れか一項に記載の方法又は請求項2乃至4の何れか一項に記載の機器。
隣接する復号済みブロックの少なくとも1つの動きベクトルにアクセスすることであって、前記現在のブロックに関する前記動きベクトル予測因子と前記少なくとも1つの動きベクトルとの差が第3の閾値を下回る場合は前記動きベクトル予測因子を精緻化すると判定する、アクセスすること
を更に含む、請求項1及び3乃至5の何れか一項に記載の方法又はそれを行うように前記1個又は複数個のプロセッサが更に構成された、請求項2乃至5の何れか一項に記載の機器。
隣接する復号済みブロックの複数のピクセルにアクセスすることであって、前記複数のピクセルのテクスチャレベルが第4の閾値を上回る場合は前記動きベクトル予測因子を精緻化すると判定する、アクセスすること
を更に含む、請求項1及び3乃至6の何れか一項に記載の方法又はそれを行うように前記1個又は複数個のプロセッサが更に構成された、請求項2乃至6の何れか一項に記載の機器。
前記動きベクトル差の大きさが第1の閾値を下回る場合は前記動きベクトル予測因子の前記精緻化を明確にシグナリングしない、請求項8に記載の方法又は請求項9に記載の機器。
前記動きベクトル差の大きさが第2の閾値を上回る場合、前記動きベクトル予測因子の前記精緻化を明確なシグナリングなしに非活性化する、請求項8若しくは10に記載の方法又は請求項9若しくは10に記載の機器。
前記動きベクトル差の大きさが第1の閾値を上回る場合、前記動きベクトル予測因子を精緻化するかどうかを明確にシグナリングするためにビットストリーム内にフラグを符号化することを更に含む、請求項8及び10乃至11の何れか一項に記載の方法又は請求項9乃至11の何れか一項に記載の機器。
隣接する再構築済みブロックの少なくとも1つの動きベクトルにアクセスすることであって、前記現在のブロックに関する前記動きベクトル予測因子と前記少なくとも1つの動きベクトルとの差が第3の閾値を下回る場合は前記動きベクトル予測因子を精緻化すると判定する、アクセスすること
を更に含む、請求項8及び10乃至12の何れか一項に記載の方法又はそれを行うように前記1個又は複数個のプロセッサが更に構成された、請求項9乃至12の何れか一項に記載の機器。
隣接する再構築済みブロックの複数のピクセルにアクセスすることであって、前記複数のピクセルのテクスチャレベルが第4の閾値を上回る場合は前記動きベクトル予測因子を精緻化すると判定する、アクセスすること
を更に含む、請求項8及び10乃至13の何れか一項に記載の方法又はそれを行うように前記1個又は複数個のプロセッサが更に構成された、請求項9乃至13の何れか一項に記載の機器。
【発明を実施するための形態】
【0015】
詳細な説明
図1は、例示的なHEVC(High Efficiency Video Coding)符号器100を示す。1つ又は複数のピクチャを有するビデオシーケンスを符号化するためにピクチャが1つ又は複数のスライスに分割され、各スライスは1つ又は複数のスライスセグメントを含み得る。スライスセグメントは、コード化単位、予測単位、及び変換単位で構成される。
【0016】
HEVC仕様は「ブロック」と「単位」とを区別し、「ブロック」はサンプルアレイ内の特定の領域(例えばルマ、Y)を扱い、「単位」は全ての符号化済み色成分(Y、Cb、Cr、又はモノクロ)、構文要素、及びブロックに関連する予測データ(例えば動きベクトル)のコロケーテッドブロックを含む。
【0017】
コード化するために、構成可能なサイズを有する正方形のコード化ツリーブロック(CTB)へとピクチャが分割され、1組の連続したコード化ツリーブロックがスライスへとグループ化される。コード化ツリー単位(CTU)は符号化済みの色成分のCTBを含む。CTBはコード化ブロック(CB)への4分木分割の根であり、コード化ブロックは1つ又は複数の予測ブロック(PB)へと分割され、変換ブロック(TB)への4分木分割の根を形成する。コード化ブロック、予測ブロック、及び変換ブロックに対応して、コード化単位(CU)は予測単位(PU)及び1組の木構造の変換単位(TU)を含み、PUは全ての色成分に関する予測情報を含み、TUは色成分ごとの残差コード化構文構造を含む。ルマ成分のCB、PB、及びTBのサイズは対応するCU、PU、及びTUに当てはまる。本願では、「ブロック」という用語はCTU、CU、PU、TU、CB、PB、及びTBの何れかを指すために使用され得る。加えて「ブロック」は、H.264/AVC又は他のビデオコード化規格内で規定されるマクロブロック、パーティション、及びサブブロックを指すために、より広くは様々なサイズのデータのアレイを指すために使用することもできる。
【0018】
例示的な符号器100では、以下で説明するようにピクチャが符号器の要素によって符号化される。符号化されるピクチャはCUの単位で処理される。各CUはイントラモード又はインターモードを使用して符号化される。CUがイントラモードを使用して符号化される場合、符号器はイントラ予測(160)を行う。インターモードでは、動き推定(175)及び動き補償(170)が行われる。符号器は、CUを符号化するためにイントラモード又はインターモードのどちらを使用するのかを決定し(105)、イントラ/インターの決定を予測モードフラグによって示す。元の画像ブロックから予測済みブロックを減算すること(110)によって予測残差を計算する。
【0019】
イントラモードでのCUは、同じスライス内の再構築済みの隣接サンプルから予測される。HEVCでは、DC、planar、及び33個のangular予測モードを含む35個のイントラ予測モードの組を利用することができる。現在のブロックに隣接する行及び列からイントラ予測の参照が再構築される。過去に再構築されたブロックからの使用可能なサンプルを使用し、この参照は水平方向及び垂直方向にブロックサイズの2倍に及ぶ。イントラ予測にangular予測モードが使用される場合、angular予測モードによって示される方向に沿って参照ピクセルを複製することができる。
【0020】
現在のブロックに関する適用可能なルマイントラ予測モードは2つの異なる選択肢を使用してコード化することができる。適用可能なモードが3つの最確モード(MPM)の構築リスト内に含まれる場合、モードはMPMリスト内のインデックスによってシグナリングされる。さもなければ、モードはモードインデックスの固定長の2値化によってシグナリングされる。3つの最確モードは上の隣接ブロック及び左の隣接ブロックのイントラ予測モードから導出される。
【0021】
インターCUでは、対応するコード化ブロックが1つ又は複数の予測ブロックに更に分割される。インター予測はPBレベルで行われ、対応するPUはインター予測がどのように行われるのかに関する情報を含む。
【0022】
動き情報(即ち動きベクトル及び参照インデックス)は2つの方法、つまり「マージモード」及び「高度動きベクトル予測(AMVP)」によってシグナリングすることができる。
【0023】
マージモードでは、ビデオ符号器又は復号器が既にコード化されたブロックに基づいて候補リストをアセンブルし、候補リスト内の候補の1つに関するインデックスをビデオ符号器がシグナリングする。復号器側では、シグナリングされる候補に基づいて動きベクトル(MV)及び参照ピクチャインデックスが再構築される。
【0024】
マージモード内の1組のあり得る候補は、空間的隣接候補、時間的候補、及び生成される候補で構成される。
図2Aは、現在のブロック210に関する5個の空間的候補{a
1、b
1、b
0、a
0、b
2}の位置を示す。候補位置ごとにa
1、b
1、b
0、a
0、b
2の順に従って可用性を確認し、次いで候補の冗長性を除去する。
【0025】
マージ候補の最大数Nはスライスヘッダ内で規定される。マージ候補の数がNを上回る場合、最初のN−1個の空間的候補及び時間的候補だけを使用する。そうではなくマージ候補の数がNを下回る場合、最大数Nまで候補の組を埋める。
【0026】
AMVPでは、ビデオ符号器又は復号器が既にコード化されたブロックから決定される動きベクトルに基づいて候補リストをアセンブルする。次いでビデオ符号器が、動きベクトル予測因子(MVP)を識別するための候補リスト内のインデックスをシグナリングし、動きベクトル差(MVD)をシグナリングする。復号器側で、動きベクトル(MV)がMVP+MVDとして再構築される。
【0027】
AMVPでは空間的動き候補が2つしか選択されない。2つの組の中で示される探索順序を保ちながら、第1の空間的動き候補が左の位置{a
0、a
1}から選択され、第2の空間的動き候補が上の位置{b
0、b
1、b
2}から選択される。動きベクトル予測因子の数が2に等しくない場合、時間的なMV予測候補が含まれ得る。時間的候補を入手できない場合、ゼロ動きベクトルを使用して候補の組を埋める。
【0028】
図2Bは、AMVPを使用する例示的な動きベクトル表現を示す。符号化される現在のブロック(240)に関して、動き推定によって動きベクトル(MV
current)を得ることができる。左のブロック(230)からの動きベクトル(MV
left)及び上のブロック(220)からの動きベクトル(MV
above)を使用し、動きベクトル予測因子をMVP
currentとして選択することができる。次いで、動きベクトル差をMVD
current=MV
current−MVP
currentとして計算することができる。
【0029】
HEVCでは、動き補償のための動き情報の精度はルマ成分では4分の1サンプル(4分の1pel又は1/4pelとも呼ばれる)であり、クロマ成分では8分の1サンプル(1/8pelとも呼ばれる)である。分数サンプルピクセル位置を補間するために7タップ又は8タップ補間フィルタが使用され、即ちルマに関して水平方向及び垂直方向の両方で最大ピクセル位置の1/4、1/2、及び3/4を扱うことができる。
【0030】
次いで予測残差を変換し(125)、量子化する(130)。量子化した変換係数、並びに動きベクトル及び他の構文要素をエントロピー符号化して(145)ビットストリームを出力する。符号器は変換をスキップし、非変換残差信号に対して4x4TUベースで量子化を直接適用することもできる。符号器は変換及び量子化の両方をバイパスすることもでき、即ち変換プロセス又は量子化プロセスを適用することなしに残差が直接コード化される。直接のPCMコード化では予測が適用されず、コード化単位サンプルがビットストリーム内に直接コード化される。
【0031】
符号器は符号化済みブロックを復号して更なる予測のための参照を提供する。予測残差を復号するために量子化済みの変換係数を逆量子化し(140)、逆変換する(150)。復号済みの予測残差と予測済みブロックとを結合し(155)、画像ブロックを再構築する。例えばデブロッキング/SAO(サンプル適応オフセット)フィルタリングを実行して濃淡のむらがあるアーティファクトを減らすために、再構築したピクチャにフィルタ(165)を適用する。フィルタ済みの画像を参照ピクチャバッファ(180)に記憶する。
【0032】
図3は、例示的なHEVCビデオ復号器300のブロック図を示す。例示的な復号器300では、以下で説明するようにビットストリームが復号器の要素によって復号される。ビデオ復号器300は、ビデオデータを符号化する一環としてビデオの復号を行う、
図1に示した符号化経路と逆の復号経路を概して実行する。
【0033】
具体的には、復号器の入力はビデオ符号器100によって生成され得るビデオビットストリームを含む。変換係数、動きベクトル、及び他のコード化情報を得るためにこのビットストリームを最初にエントロピー復号する(330)。予測残差を復号するために変換係数を逆量子化し(340)、逆変換する(350)。復号した予測残差と予測済みブロックとを結合し(355)、画像ブロックを再構築する。予測済みブロックはイントラ予測(360)又は動き補償予測(即ちインター予測)(375)から得ることができる(370)。上記のように、参照ブロックのサブ整数ピクセルのための補間値を計算するために補間フィルタを使用する場合がある動き補償のための動きベクトルを導出するために、AMVP及びマージモード技法が使用され得る。再構築した画像にフィルタ(365)を適用する。フィルタ済みの画像を参照ピクチャバッファ(380)に記憶する。
【0034】
ビデオ圧縮では、インター予測モードは、過去に再構築され/復号されたピクチャからの少なくとも1つの動き補償ブロックを使用して1つのブロック(例えば予測単位)を予測することを可能にする。例えば
図2Cに示すように、現在のブロック(255)がインター予測モードを使用して符号化され、ブロック225及び245は参照ピクチャ内のコロケーテッドブロックであり、ブロック215及び235は動き補償予測に使用されるブロックである。復号器において少なくとも1つの動きベクトル(MV、例えばmv0)を再構築できるようにするために、復号済みピクチャバッファ(DPB)内の再構築済みピクチャを識別する少なくとも1つの参照インデックス(例えばrefIdx0)及び1つの動き情報(動きベクトル差、MVD)を符号化する。双方向予測を使用する場合、動きベクトル(例えばmv0およびmv1)を再構築するために追加参照インデックス(例えばrefIdx1)及び動き情報を符号化する。一部の事例では、過去に復号されたデータから動きベクトルを推論することができる(例えばHEVCのマージモード)。
【0035】
MV値の再構築は次式:
MV
X=MVP
X+MVD
X、MV
Y=MVP
Y+MVD
Y (1)
のように行うことができ、但しMV
X及びMV
Yはそれぞれ水平の及び垂直の動きベクトル成分であり、MVP(MVP
X、MVP
Y)は過去に再構築されたデータから構築される動きベクトル予測因子であり、MVD(MVD
X、MVD
Y)は符号化されビットストリーム内で伝送される動きベクトル差である。
【0036】
MVD値は通常、復号されるMV値に対応する精度で符号化される。例えばHEVCは、動きベクトル分解能として4分の1ピクセル(即ち1/4pel)を使用する。
【0037】
MV分解能を例えば1/4pelから1/8pelに高めることは予測を全般的に改善することができる。しかし低ビットレートでは、MVDデータのコード化がブロックごとに符号化される他のデータに対して相対的に高いビットレートコストを有し得る。従って、MV分解能に比例して全体的な圧縮効率が改善するとは限らない可能性がある。
【0038】
圧縮効率を改善するために、適応動き分解能を使用すること、例えば動き分解能を整数pel又は1/4pelの中から選択すること、または1/4pel及び1/6pelの中から選択することに関する幾つかの既存の研究がある。しかし、ビットストリーム内で送信する必要がある追加のサイド情報が原因で、どの動きベクトル分解能を使用するのかを示すことは圧縮効率の低下を引き起こす可能性がある。
【0039】
オーバヘッドを減らすために、「Conditional motion vector refinement for improved prediction」Picture Coding Symposium (PCS), 2012. IEEEと題されたLakshman, Haricharanらによる論文(以下「Lakshman」)は、如何なるブロックごとの明確なフォワードシグナリングもなしに4分の1サンプルMV分解能と1/6サンプルMV分解能との間でMV分解能を推論するために符号器及び復号器の両方に知られている1組の規則を定める。高分解能のMVは、4分の1サンプル分解能からサンプルの6分の1まで動きベクトルの分解能を高める精緻化情報によって増強される規則的な4分の1サンプルMVとして伝送される。整数又は2分の1サンプル位置を示す再構築済みMV成分は変えられないままにされる。4分の1又は4分の3の位置を示すMV成分では、復号器は以下の条件を使用して精緻化の有無を推論する:
−Pスライスの場合、MV精緻化情報を常に送信する。
−双方向予測の場合、高テクスチャを含む参照ピクチャからのサンプルにアクセスする予測についてMV精緻化を送信する。
−高テクスチャの参照ピクチャにアクセスしない双方向予測の場合、既定の参照ピクチャリストからのピクチャについてのみMV精緻化を送信する。
−Bスライスにおける単一仮説予測ではMV精緻化を使用しない。
【0040】
「Further improvements to HMKTA-1.0」VCEG-AZ07, ITU-T/SG16 Video Coding Experts Group (VCEG) 52nd Meeting: 19-26 June 2015, Warsaw, Polandと題されたChen, Jianleらによる論文(以下「Chen」)は、高度動きベクトル分解能(AMVR)モードについて記載する。具体的には、PUの動きベクトルと予測動きベクトルとの間のMVDは4分の1pelの分解能又は整数pelの分解能でコード化することができる。MVDの分解能はコード化単位(CU)レベルで制御され、少なくとも1つの非ゼロMVD成分を有するCUごとに整数MVD分解能フラグが条件付きでシグナリングされる。整数MVD分解能フラグが偽の場合、又はCUについてコード化されない場合、CUに属する全てのPUについて既定の4分の1pelMV分解能を使用する。さもなければ、CUに属するAMVPモードでコード化される全てのPUが整数のMV分解能を使用する一方、マージモードでコード化されるPUは引き続き4分の1pelMV分解能を使用する。PUが整数のMV分解能を使用する場合、4分の1pelMVを整数pelMVに丸めることによりAMVP候補リストが整数のMVで埋められる。
【0041】
本原理は、ビデオの符号化及び復号における動きベクトルの精緻化を対象とする。一実施形態では、第1の分解能のMVD(例えば1/4pel)がビットストリーム内で受信され、復号器がそのMVDに基づいて初期動きベクトルを取得し、既に復号されている隣接サンプルを使用して初期動きベクトルを精緻化して第1の分解能よりも高い第2の動き分解能(例えば1/8pel)を得る。不一致を避けるために、動き情報の精緻化は符号器においても行われる。動き精緻化が符号器及び復号器の両方で行われるので、動き精緻化を指示するための追加情報がビットストリーム内で伝送されず、例えば1/4pelから1/8pelへの動きベクトルの精緻化を指示するための明確なシグナリングが使用されない。改変形態では、現在のブロックについてマージモードが使用され(即ちビットストリーム内でMVDが受信されず)、第2の動き分解能を得るために(ことによると第1の分解能に丸められる)候補リスト内の動きベクトル予測因子が精緻化されるとき初期動きベクトルが得られる。
【0042】
動き情報の精緻化は、符号器又は復号器における動き推定を使用して行われ得る。動き分解能の精緻化なしに第1の動き分解能(例えば1/4pel)を使用する手法と比較し、提案する実施形態は精緻化動き情報を伝送するオーバヘッドなしに動き精度を改善することができる。復号器における動き分解能の精緻化なしに第2の動き分解能(例えば1/8pel)を使用する手法と比較し、提案する実施形態は動き精緻化情報を伝送するオーバヘッドを減らすことができる。本原理による復号器は動き探索も行うことができ、従って動き探索を必要としない復号器よりも複雑であり得ることに留意すべきである。
【0043】
図4は、本原理の一実施形態による、復号器において動きベクトルの精緻化を行うための例示的方法400を示す。この例では、復号器が動きベクトル分解能を1/4pelから1/8pelに精緻化させることができると想定する。本原理は他の動き分解能間の精緻化、例えばこれだけに限定されないが整数pelから1/4pelへの精緻化、1/4pelから1/6pelへの精緻化に適用できることに留意すべきである。
【0044】
復号されるブロックについて、復号器は例えば上記のようにビットストリーム内のフラグを使用して又は既存の方法を使用して適応動きベクトル分解能が有効にされているかどうかを確認する(410)。適応動きベクトル分解能が有効である場合、復号器は例えばHEVCのAMVPモードを使用してMV予測因子(MVP)を1/4pelの分解能で生成する(420)。予測因子が1/8pelの場合は1/4pelに丸める。次いで復号器は1/4pelの分解能でMVDを復号する(430)。初期動きベクトルをMV
0=MVP+MVDとして得ることができる(440)。次いで、初期動きベクトル(MV
0)を1/8pelの分解能に精緻化させ(450)、動き補償予測に使用することができる。
【0045】
420で、MV予測因子を1/8pelで生成することもできる。MV予測因子を1/4pelで生成するのか1/8pelで生成するのかは、符号器が何を使用したのかと一致すべきである。
【0046】
動き補償予測ブロックのサンプルは、参照ピクチャインデックスによって識別される参照ピクチャ内の動きベクトルによって変位される位置における対応するブロックのものから得られる。動きベクトルが整数ではない場合、予測サンプルを生成するために分数サンプル補間を使用する。
【0047】
HEVCは1/4pelにおける動きベクトルをサポートする。動きベクトルをMV=iMV+sMVとして表し、但しiMVはMVの整数部分であり、sMVは1/4pel部分(第1の動き分解能)であり、sMV=p/4、p=0、1、2、3とすると、補間サンプル値は
【数1】
として計算することができ、但しxはピクセル位置であり、c[p][i]、i=0,...,N−1はp/4pel位置に対応するフィルタ係数であり、Nはフィルタタップ数である。HEVCにおける1/4pel補間のためのフィルタ係数は以下の通りである:
c[p=0][]={0,0,0,64,0,0,0,0}、整数位置に対応しスケーリングだけがある
c[p=1][]={−1,4,−10,58,17,−5,1,0}、1/4pel位置及び7タップフィルタに対応する
c[p=2][]={−1,4,−11,40,40,−11,4,−1}、1/2pel位置及び8タップフィルタに対応する
c[p=3][]={0,1,−5,17,58,−10,4,−1}、1/4pel位置及び7タップフィルタに対応する
【0048】
更に高分解能の1/8pelを使用する場合、sMV=p/8、p=0、1、2、3、4、5、6、7、8を含む1/8pel部分を補間するために1/8pel補間フィルタを使用する。例えば以下の1/8pel補間フィルタ(N=4)を使用することができる:
c[p=0][]={0,64,0,0}
c[p=1][]={−2,58,10,−2}
c[p=2][]={−4,54,16,−2}
c[p=3][]={−6,46,28,−4}
c[p=4][]={−4,36,36,−4}
c[p=5][]={−4,28,46,−6}
c[p=6][]={−2,16,54,−4}
c[p=7][]={−2,10,58,−2}
【0049】
動き精緻化プロセスは、精緻化前の動き分解能に関係する範囲を有する動き推定と見なすことができる。例えば、1/4pelの第1の分解能から1/8pelの第2の分解能に動きベクトルを精緻化させる場合、動き探索の範囲は初期動きベクトルあたりの候補を含む。より広くは、動き精緻化のための探索候補は、水平方向及び垂直方向それぞれにMVX
0−ΔMVX〜MVX
0+ΔMVX、MVY
0−ΔMVY〜MVY
0+ΔMVYとすることができ、但しMVX
0及びMVY
0はそれぞれ初期動きベクトルMV
0の水平成分及び垂直成分であり、ΔMVX及びΔMVYは水平方向及び垂直方向それぞれの探索範囲を定める。
【0050】
例えば水平方向の精緻化候補は(MVX
0−k×step2、MVX
0+k×step2とすることができ、但しkは整数であり
−step1<(k
*step2)<step1 (3)
として定められ、step1は第1の分解能であり、step2は第2の分解能である。step1=1/4であり且つstep2=1/8である場合、−2<k<2が成立する。
図5は、整数のピクセル、2分の1のピクセル、4分の1のピクセル、及び8分の1のピクセルのピクセル位置を示す。表記を簡単にするために、それらの候補を動き精緻化候補と呼ぶ場合もあり、動き精緻化候補と共に動き補償によって構築される予測済みブロックを動き精緻化予測済みブロックとして示し、動き精緻化予測済みブロック内のサンプルを動き精緻化予測サンプルとして示す。
【0051】
(MVX
0,MVY
0)が位置510に対応する場合、探索候補の例示的な組はボックス520内の位置を含む。探索範囲、より広くは1組の探索候補は
図5に示すものと異なり得る。符号器及び復号器において同じ探索候補の組が使用されるべきである。
【0052】
適応動きベクトル分解能が有効ではない場合、復号器は復号済みの動きベクトルに使用される動き分解能においてMVP及びMVDを取得し、復号器における動き精緻化は行われない。
図4に示すように、復号器はMVP及びMVDの両方を1/8pelの分解能で取得し(460、470)、MV=MVP+MVDとして動きベクトルを1/8pelの分解能で復号することができる(480)。改変形態では、復号器はMVP及びMVDの両方を1/4pelの分解能で取得し(460、470)、MV=MVP+MVDとして動きベクトルを1/4pelの分解能で復号することができる(480)。
【0053】
以下、動きベクトルの精緻化(450)を行うために使用することができる幾つかの実施形態を更に詳細に説明する。
【0054】
動きベクトルを復号器において精緻化させるために、ピクチャ信号が通常は平滑且つ連続的であるという特性を使用する。従って復号器側において、動きベクトルが正確である場合、復号済みブロックは典型的には隣接ブロックに対して連続的になるべきである。一実施形態では、再構築済みの隣接サンプルを使用してMVを精緻化させる。具体的には、動き精緻化候補と共に動き補償によって構築される予測済みブロックと過去に再構築されたサンプル、例えば
図6Aに示す上の隣接ブロック及び左の隣接ブロックのサンプルとの間の不連続性を測定することによって上記の1組の探索候補を評価する。
【0055】
図6Aは、復号される例示的なPU(650)を示す。現在のPUの上の又は左の他のPU(610、620、630、640)は既に復号されており、現在のPUを復号するために使用することができる。具体的には、現在のPU(650)に関する動きベクトルを精緻化させるために隣接ブロック(610、620、640)内のL字型の1組の復号済みサンプル(670)を使用することができる。PUは
図6Aに示すのと異なるサイズ又は形状でも良く、現在のPUに関する動きベクトルを精緻化させるために隣接する再構築済みサンプルの更に大きい又は小さい組を使用できることに留意すべきである。本願では、L字型の1組のサンプルを動き精緻化のために使用する。より広くは、動き精緻化のために様々な組のサンプルを使用することができ、精緻化はブロックに適用され得る。
【0056】
一実施形態では、隣接ブロック内のL字型の1組の復号済みサンプル(「隣接するL字型」と呼ぶ)及び現在の予測ブロック内のL字型の1組のサンプル(680)に基づく不連続性を使用する。不連続性は、
図6Bに示す再構築済みサンプル(n)と最も近い動き精緻化予測サンプル(p)とのSAD(Sum of Absolute Difference)として測定することができる。数学的に、精緻化された動きベクトル差は:
【数2】
として計算することができ、但しpは(x
p,y
p)における位置を有するPUのL字型の中の動き精緻化予測サンプルであり、Σ
p||はPUのL字型の組にわたる合計であり、MV
0=MVP+MVDは精緻化させる動きベクトルであり、nは(x
n,y
n)における位置を有するpの隣のL字型の中の再構築済みサンプルであり(例えばpがPUの左の境界に属する場合はx
n=x
p−1、y
n=y
pであり、pがPUの上の境界に属する場合はx
n=x
p、y
n=y
p−1であり)、I
rec(n)は現在のピクチャの再構築済み(又は復号済み)サンプル値であり、I
ref(p+MVP+MVD+MVD
refine)はMVD
refinedが選択される場合の動き補償予測値である。
【0057】
改変形態では、残差と動き補償予測ブロックとの和を検討し、I
ref(p+MV
0+MVD
refine)+Res(p)はMVD
refineが選択される場合のサンプルpの再構築済みの値になる。すると精緻化された動きベクトル差を:
【数3】
として計算することができ、但しRes(p)はサンプルpにおける残差である。
【0058】
本原理による動きベクトルの精緻化を含むようにHEVC復号器が修正される場合、MV
0はAMVPではMVD+MVPに又はマージモードでは候補リスト内でシグナリングされるものに設定することができ、MVD及びMVPはHEVCで規定されるように得られる。概して、MV
0は復号器における動き探索を行うことなしに復号器が得た動きベクトルである。
【0059】
動き精緻化は、初期動きベクトルあたりから選択されるより高い動き分解能の1組の候補動きベクトルを伴う、復号器における動き探索と見なすことができる。最良の動きベクトルの選択は一定の基準、例えば等式(4)又は(5)に記載の不連続性の測度を最小化するものであり得る。つまり、初期動きベクトルMV
0を得た後、初期動きベクトルを精緻化させるために動き探索を更に行う。初期動きベクトルあたりのごく少数の探索候補の組しか確認する必要がないので、復号器内の追加の複雑さは通常少ない。
【0060】
数学的に、導出される精緻化されたMVは:
【数4】
として表すことができる。次いで、例えば上記のように補間フィルタを使用しPUを復号するための予測ブロックとして参照ピクチャ内の精緻化されたMVに対応するブロックを使用する。典型的には、動き精緻化は符号器が低分解能でMVDを符号化することを可能にし、従って最大分解能でMVDを符号化することと比較して動き情報を符号化するコストを減らす一方、復号器は依然として最大分解能でMVを回復することができる。
【0061】
本願では、様々な実施形態で差の測度としてSADを使用する。それ以外の差の測度、例えばこれだけに限定されないが誤差平方和(SSE)をSADの代わりに使用しても良いことに留意すべきである。
【0062】
別の実施形態では、隣接ピクセルにおける勾配が通常は同様である特性を使用し、不連続性を測定するために位置(n)及び(p)における局所勾配を計算する。信号(即ちピクチャサンプル)が空間的に固定されていると仮定し、線形項に切り捨てされたテイラー級数として信号を局所的にモデリングすることができ:
I(x+d)=I(x)+g(x).d (7)
但しI(x)は位置xにおけるピクチャサンプル値であり、gは局所勾配と共に推定される2x2行列である。
【0063】
等式(7)を使用し、隣接する再構築済みサンプルR(x)と動き精緻化予測ブロックP(x)との間の関係は:
R(n)=P(p)+g(p).(n−p) (8)
になり、P(p)=I
ref(p+MV
0+MVD
refine)であり、R(n)=I
rec(n)である。改変形態では、P(p)を計算する際に残差を含めることができる。位置p=(x
p,y
p)における局所勾配は
図7Aに示すように表すことができる:
G11(p)=R(n)−P(p)、但しn=(x
p−1,y
p−1)
G12(p)=R(n)−P(p)、但しn=(x
p−1,y
p)
G13(p)=R(n)−P(p)、但しn=(x
p−1,y
p+1)
【0064】
次いで、不連続性を計算するために局所勾配の絶対値の和を使用することができ、不連続性を最小化する動きベクトルの精緻化が選ばれる:
【数5】
【0065】
位置p=(x
p,y
p)における二次モーメントを
図7Bに示すように表すことができる(n及びpがL字型の垂直方向の左の境界に位置する場合):
G21(p)=R(n2)−R(n)−G11、但しn=(x
p−1,y
p−1)及びn2=(x
p−2,y
p−2)
G22(p)=R(n2)−R(n)−G12、但しn=(x
p−1,y
p)及びn2=(x
p−2,y
p)
G23(p)=R(n2)−R(n)−G13、但しn=(x
p−1,y
p+1)及びn2=(x
p−2,y
p+2)
G24(p)=R(n2)−R(n)−P(p)+P(p2)、但しn=(x
p−1,y
p)、n2=(x
p−1,y
p+1)、及びp2=(x
p,y
p+1)
サンプルpがPUの上の境界にある場合も勾配を同様に導出することができる。左上角では、サンプルpは左の境界若しくは上の境界にあるものとして処理することができ、又は2回(境界として1回、上方として1回)処理することができる。
【0066】
次いで、不連続性を計算するために勾配の二次モーメントの絶対値の和を使用することができ、不連続性を最小化する動きベクトルの精緻化が選ばれる:
【数6】
【0067】
不連続性は、局所勾配及び二次モーメントの絶対値の和としても計算することができる:
【数7】
本原理は他の形式の勾配計算にも適用できることに留意すべきである。
【0068】
図8は、本原理の一実施形態による、符号器において動きベクトルの精緻化を行うための例示的方法800を示す。方法800の出力は方法400への入力ビットストリームとして使用することができる。初期設定ステップ(805)で、符号器は符号化されるビデオシーケンスに入力としてアクセスすることができる。加えて、符号器はパラメータを初期値に設定する、例えばBest_flag=1に設定し、Best_RDcostを大きい値に設定することができる。
【0069】
動き推定(810)を1/8の分解能で実行して動きベクトル(MV)を得る。次いで符号器は、適応動き精緻化を使用して動きベクトルを符号化した方が効率的かどうかを確認する。ステップ820〜840で、符号器は例えばRD(レート歪み)コストを使用して動き精緻化ありのMV符号化コストを確認する。ステップ845〜875で、符号器は動き精緻化なしのMV符号化コストを確認する。次いで最終的なMV(Best_MV)に基づいて動き補償を実行し、残差を計算することができる(885)。残差、最終的なMVD(Best_MVD)、及び適応動き精緻化フラグ(Best_flag)をビットストリーム内に符号化する(890)。
【0070】
より具体的には、ステップ815で、対応する復号器が動きベクトル予測因子のリストをどのように構築するのかと一致して、例えばAMVPからの動きベクトル予測因子の候補リスト、1/8pelの初期動きベクトル予測因子の丸められたバージョン、又は隣接する動きベクトルの平均を使用し、動きベクトル予測因子のリストを1/4pelの分解能で構築する。分解能を下げることは動きベクトル予測因子をより「相関性がある」ものにし(即ち予測する動きベクトルを正確に予測することができ、そのため動きベクトル予測因子を示すためにインデックスだけを伝送することができる)、動き精緻化が高分解能の部分(即ちより「相関性がない」部分)を得ることを可能にし得る。一部の事例では、MVPリストがMVPを1つしか含まない場合がある。MVPリスト内のMVPごとに、動きベクトル差(MVD)をMVD=MV−MVPとして計算し(820)、初期動きベクトルをMV
0=MVP+MVDとして計算することができる。
【0071】
改変形態では、ステップ815で動きベクトル予測因子の候補リストを1/8pelの分解能で構築することができ、ステップ820で、動きベクトル差MVDを1/4pelに丸める。MVP又はMVDに適用される丸めにより、MV
0はMVと異なり得ることに留意されたい。
【0072】
精緻化を行い(825)、MVD
refineを例えば等式(4)又は(5)に記載したように取得し、精緻化された動きベクトルをMV
*=MV
0+MVD
refineとして得る。次いで、MV
*に基づいて残差を計算することができる(827)。ステップ830で、RD(レート歪み)コストを使用して調節済みの動きベクトル(MV
*)の符号化コストを推定することができる。ステップ835で、現在の調節済みの動きベクトルが現在のBest_RDcostよりも小さいRDコストを有するかどうかを符号器が確認する。現在の調節済みの動きベクトルが現在のBest_RDcostよりも小さいRDコストを有する場合、パラメータBest_RDcost、Best_MV、Best_MVDを現在のRDコスト、現在の調節済みの動きベクトル、及び現在のMVDに設定し、他の幾らかの関連する符号化情報も記憶することができる。
【0073】
ステップ845で、例えばAMVPからの動きベクトル予測因子の候補リストを使用して動きベクトル予測因子のリストを1/8pelの分解能で構築する。ステップ845は、符号器が動き分解能を1/4pelに調節しないことを除いてステップ815と同様である。MVPリスト内のMVPごとに、1/8pelの分解能におけるMVPに基づいてMVDを計算する(850)。動きベクトルMV
1=MVP+MVDについて残差を計算することができ(852)、ステップ855で、RDコストを使用して動きベクトルMV
1の符号化コストを推定することができる。ステップ865で、現在の動きベクトルが現在のBest_RDcostよりも小さいRDコストを有するかどうかを符号器が確認する。現在の動きベクトルが現在のBest_RDcostよりも小さいRDコストを有する場合、パラメータBest_RDcost、Best_MV、及びBest_MVDを現在のRDコスト、現在の動きベクトル、及び現在のMVDに設定し、適応動き精緻化フラグを偽(0)に設定する。他の関連する符号化情報も記憶することができる。
【0074】
MVDが0の場合、例えばマージモードが使用される場合、ステップ820及び850が不要であり、ステップ840及び875においてBest_MVDを計算する必要がなく、ステップ890でBest_MVDを符号化する必要がない。
【0075】
動き精緻化は動きベクトル予測因子に対応する全ての動きベクトルに適用することができ、又はサブセットに適用することができる。例えば動き精緻化は、AMVPの動きベクトル予測因子にだけ使用され、又はマージモードにだけ使用される。
【0076】
方法800では、符号器が符号化コストに基づいて適応動き精緻化を使用するかどうかを決定し、ビットストリーム内のフラグによって選択をシグナリングする。例えば以下で更に説明するように又はLakshman及びChenの中で説明されているように、他の実施形態では、符号器が符号化コストを確認することなしにビデオ特性に基づいて適応動き精緻化を使用するかどうかを決定し得る。その結果、符号器は方法800の一部(例えば動き精緻化ありの部分または動き精緻化なしの部分)だけを実行すれば良い場合がある。
【0077】
方法800に従って追加の構文要素Best_flagを送信する必要があり得ることに留意されたい。但し、Best_flagを送信することは1/8pelの分解能においてMVDを送信するよりも依然として効率的である場合があり、それは動きベクトルの高分解能部分が通常は無作為であり符号化するコストが高いからである。
【0078】
動きベクトルを精緻化させることにより、動きベクトル差MVDが1/4pelの動き分解能においてビットストリーム内で伝送される一方、符号器は1/8pelの動き分解能に達することができる。従って、MVDは一層少ないビットが符号化されることを必要とし得る。例えば表1に示すように、動き推定(810)からの現在のブロックに関する動きベクトル(MV)は3.625であり、動きベクトル予測因子のリストは{3.0,...}を含む。動きベクトル予測因子MVP
0=3.0では、動き精緻化が有効にされない場合、MVD(850)はMV−MVP=0.625である(1/8pelにおいてコード化される)。他方で動き精緻化が有効にされる場合、MVDは0.5(1/4pel)に丸められ、初期動きベクトル(820)MV
0=MVP+MVD=3.5になる。次いで、動きベクトルMV
0をMV
*=3.625に精緻化させる(825)。この例では、精緻化済みの動きが動き推定から得られるMVと同じであり、MVDが1/4pelにおいて伝送され、従って動き精緻化を使用しない(即ちMVDが1/8pelにおいて伝送される)場合よりも少ないビットが必要とされ得る。その結果、符号器は動き精緻化を有効にすることに決める可能性が高い。
【0080】
上記の例では、精緻化済みの動きベクトルが動き推定からの動きベクトルと同じである。精緻化済みの動きベクトルは、動き推定から得られる動きベクトルと異なっても良いことに留意すべきである。
【0081】
MVPの精緻化
上記では、動きベクトル予測因子MVP及び動きベクトル差MVDに基づいて生成される初期動きベクトルに対する精緻化を解説した。別の実施形態では、(MVDを含むことなしに)動きベクトル予測因子に対して精緻化を行うことができる。再び
図6を参照し、例えばHEVCによって規定されているようにAMVPを使用して初期動きベクトル予測因子(MVP
0)を得た後、再構築済みのL字型を使用して動きベクトル予測因子を精緻化させることができる(670)。
【0082】
具体的には、復号器は初期動きベクトル予測因子の周りの動きベクトル予測因子に対応するMC L字型(680)を形成することができ、例えば次式:
【数8】
が成立する。次いで復号器は再構築済みのL字型(670)と別のMC L字型(680)との差、例えば上記の不連続性または勾配を比較し、最も小さい差をもたらす動き精緻化(ΔMV
*)を初期動きベクトル予測因子に対する精緻化として選択することができ、つまり精緻化された動きベクトル予測因子をMVP
*=MVP
0+ΔMV
*として計算することができる。再構築済みのL字型(670)及びMC L字型(680)の両方が復号済みサンプルに基づき、そのため符号器側及び復号器側の両方で同じプロセスを実行できることに留意されたい。
【0083】
概して、動きベクトル予測因子に関する動き精緻化は、最大動き分解能における幾つかのサブサンプルの変位を初期動きベクトル予測因子の周りで探索範囲が含む動き探索と見なすことができる。例えば
図5に示すように、510にある動きベクトル予測因子MVP
0は520内の探索候補を使用して精緻化させることができる。動きベクトルを(MVDを用いて)精緻化させるのと同様に、
図5に示したのと異なる探索候補の組を使用することができる。
【0084】
改変形態では、初期動きベクトル予測因子の丸められたバージョン(round(MVP
0))に対して動き精緻化を行うことができ、動き精緻化の探索範囲は丸められた動きベクトル予測因子の周りの最大動き分解能におけるサブサンプルの変位を含む。例えば精緻化された動き分解能が1/8pelである場合、MVP
0の丸められたバージョンは整数pel、2分の1pel、又は4分の1pelの分解能にあり得る。その理由は、実際の動きベクトルが低分解能の動きベクトルのあたりに集中する可能性が高く、初期動きベクトル予測因子の丸められたバージョンは探索を行うためのより優れた開始点を提供し得るからである。
【0085】
別の改変形態では、MVP候補リスト内で使用される隣接する動きベクトルの平均値に対して動き精緻化を行うことができる。例えば動き精緻化は、初期動きベクトル予測因子として左の動きベクトルと上の動きベクトルとの平均(MV
left+MV
above)/2を使用し、その初期動きベクトル予測因子のあたりの動き探索を行うことができる。動き精緻化は通常、ほぼ又は相対的に均一な動き領域内で選択されることが観察される。現在のブロックに隣接する動きベクトルを平均することによって探索を行うためのより優れた開始点を提供することができる。動き精緻化が選択される場合、即ち動きフィールドが均一な場合、リスト内の候補を1つだけ(左又は上)使用するように予測因子の候補リストを減じることができ、従ってあり得る候補の数が減る。AMVPリストのインデックスをビットストリーム内に符号化し又はビットストリーム内で伝送する必要がないので、そのことは圧縮効率を改善し得る。
【0086】
図9は、本原理の一実施形態による、復号器において動きベクトル予測因子の精緻化を行うための例示的方法900を示す。この例では、復号器が動きベクトル予測因子の分解能を1/4pelから1/8pelに精緻化させることができると想定する。
【0087】
ブロックについて、復号器は例えば上記のようにビットストリーム内のフラグを使用して又は既存の方法を使用して適応動きベクトル分解能が有効にされているかどうかを確認する(910)。適応動きベクトル分解能が有効である場合、復号器はMV予測因子(MVP)を1/4pelの分解能で生成する(920)。初期動きベクトル予測因子は、例えばこれだけに限定されないがHEVCのAMVPモードを使用して、隣接する動きベクトルの平均を使用して、又は動きベクトル予測因子の丸められたバージョンを使用して生成することができる。次いで、例えば上記の実施形態を使用して動きベクトル予測因子を1/8pelの分解能に精緻化させることができる(930)。復号器がMVDを1/8pelの分解能において復号する(940)。次いで、動きベクトルをMV=MVP
*+MVDとして取得し(950)、動き補償予測に使用することができる。
【0088】
適応動きベクトル分解能が有効ではない場合、復号器は復号済みの動きベクトルに使用される動き分解能においてMVP及びMVDを取得し、復号器における動き精緻化は行われない。
図9に示すように、復号器はMVP及びMVDの両方を1/8pelの分解能で取得し(960、970)、MV=MVP+MVDとして動きベクトルを1/8pelの分解能で復号することができる(980)。改変形態では、復号器がMVP及びMVDの両方を1/4pelの分解能で取得し(960、970)、MV=MVP+MVDとして動きベクトルを1/4pelの分解能で復号することができる(980)。
【0089】
図10は、本原理の一実施形態による、符号器において動きベクトル予測因子の精緻化を行うための例示的方法1000を示す。方法1000の出力は方法900への入力ビットストリームとして使用することができる。初期設定ステップ(1005)で、符号器は符号化されるビデオシーケンスに入力としてアクセスすることができる。加えて、符号器はパラメータを初期値に設定する、例えばBest_flag=1に設定し、Best_RDcostを大きい値に設定することができる。
【0090】
動き推定(1010)を1/8の分解能で実行して動きベクトルMVを得る。次いで符号器は、適応動き精緻化を使用して動きベクトルを符号化した方が効率的かどうかを確認する。ステップ1020〜1040で、符号器は例えばRD(レート歪み)コストを使用して動き精緻化ありのMV符号化コストを確認する。ステップ1045〜1075で、符号器は動き精緻化なしのMV符号化コストを確認する。次いで最終的なMV(Best_MV)に基づいて動き補償を実行し、残差を計算することができる(1085)。残差、最終的なMVD(Best_MVD)、及び適応動き精緻化フラグ(Best_flag)をビットストリーム内に符号化する(1090)。
【0091】
より具体的には、ステップ1015で、対応する復号器が動きベクトル予測因子のリストをどのように構築するのかと一致して、例えばAMVPからの動きベクトル予測因子の候補リスト、初期動きベクトル予測因子の(例えば所望の分解能においてクロゼット整数に)丸められたバージョン、又は隣接する動きベクトルの平均を使用し、動きベクトル予測因子のリストを1/4pelの分解能で構築する。一部の事例では、MVPリストがMVPを1つしか含まない場合がある。ステップ1015では、動きベクトル予測因子のリストを1/8pelの分解能で構築することもできる。但し、低分解能(1/4pel)を使用する1つの利点は、1/8pelの分解能又は1/4pelの分解能におけるMVをRDの最適化が区別できない平らな領域内のドリフトを回避できることである。引き下げた分解能を使用することは、MV予測因子の或る程度の平滑化を可能にし、そのことはMVの雑音を減らし得る。更に、精緻化のための探索窓のサイズが相対的に小さい場合(1/8の精緻化では±1/4)、探索窓のための開始/中心MVの精度が結果を変える可能性がある。
【0092】
例えば復号器に関して上記で説明したように、MVPリスト内のMVPごとにMVPの精緻化を行う(1020)。精緻化されたMVP(MVP
*)に基づいてMVDを計算し(1025)、動き補償に使用することができる調節済みの動きベクトル(MV
*)(MV
*=MVD+MVP
*)も計算することができる。ステップ1030で、RDコストを使用して調節済みの動きベクトル(MV
*)の符号化コストを推定することができる。ステップ1035で、現在の調節済みの動きベクトルが現在のBest_RDcostよりも小さいRDコストを有するかどうかを符号器が確認する。現在の調節済みの動きベクトルが現在のBest_RDcostよりも小さいRDコストを有する場合、パラメータBest_RDcost、Best_MV、及びBest_MVDを現在のRDコスト、現在の調節済みの動きベクトル、及び現在のMVDに設定し(1040)、Best_flagは真(1)のままになる。
【0093】
ステップ1045で、例えばAMVPからの動きベクトル予測因子の候補リストを使用して動きベクトル予測因子のリストを1/8pelの分解能で構築する。MVPリスト内のMVPごとに、1/8pelの分解能におけるMVPに基づいてMVDを計算する(1050)。ステップ1055で、RDコストを使用して動きベクトル(MV)の符号化コストを推定することができる。ステップ1065で、現在の動きベクトルが現在のBest_RDcostよりも小さいRDコストを有するかどうかを符号器が確認する。現在の動きベクトルが現在のBest_RDcostよりも小さいRDコストを有する場合、パラメータBest_RDcost、Best_MV、及びBest_MVDを現在のRDコスト、現在の動きベクトル、及び現在のMVDに設定し(1075)、適応動き精緻化フラグ(Best_flag)を偽(0)に設定する。
【0094】
方法1000では、符号器が符号化コストに基づいて適応動き精緻化を使用するかどうかを決定し、ビットストリーム内のフラグによって選択をシグナリングする。例えば以下で更に説明するように又はLakshman及びChenの中で説明されているように、他の実施形態では、符号器が符号化コストを確認することなしにビデオ特性に基づいて適応動き精緻化を使用するかどうかを決定し得る。その結果、符号器は方法1000の一部(例えば動き精緻化ありの部分または動き精緻化なしの部分)だけを実行すれば良い場合がある。
【0095】
動きベクトル予測因子を精緻化させることにより、MV予測因子がより正確になり得る。従ってMVDが統計的に低い値を有することができ、コード化のコストを減らすことができる。例えば表2に示すように、動き推定(1010)からの現在のブロックに関する動きベクトル(MV)は3.625であり、動きベクトル予測因子のリスト(1015)は{3.0,...}を含む。動きベクトル予測因子MVP
0=3.0では、動きベクトル予測因子MVP
0を動き精緻化によってMVP
*=3.5に精緻化させる(1020)。その後、動きベクトル差はMVD=MV−MVP
*=0.125である。動き精緻化を使用しない動きベクトル差MV−MVP
0=0.625と比較し、符号化されるMVDがより小さく、一層少ないビットが符号化されることを必要とし得る。この例では、動き精緻化を使用することが圧縮効率を改善することができ、従って符号器は適応動き精緻化を有効にすることに決める可能性が高い。動き補償に使用される動きベクトルはMVP
*+MVD=3.625である。
【0097】
MVDが0の場合、例えばマージモードが使用される場合、ステップ1025及び1050が不要であり、ステップ1040及び1075においてBest_MVDを計算する必要がなく、ステップ1090でBest_MVDを符号化する必要がない。MVDが0の場合、方法1000は方法800と同じになり得ることに留意されたい。動き精緻化は動きベクトル予測因子に対応する全ての動きベクトルに適用することができ、又はサブセットに適用することができる。例えば動き精緻化は、AMVPの動きベクトル予測因子にだけ使用され、又はマージモードにだけ使用される。
【0098】
自動的な動き精緻化の活性化
上記の実施形態では、適応動きベクトル分解能が有効にされているかどうかを示すためにフラグ(例えば
図8又は
図10に示すBest_flag)を使用できると説明した。以下、動きベクトル分解能の精緻化を自動的に活性化し又は非活性化する様々な実施形態を説明する。従って、符号器は適応動きベクトル分解能が有効にされているかどうかを明確なフラグなしに示すことができ、復号器も明確なフラグを参照することなしに適応動きベクトル分解能かどうかを決定することができる。
【0099】
一実施形態では、以下の基準の1つ又は複数に基づいて適応動き精緻化を自動的に活性化することを提案する:
−動きの類似性:現在のブロックの動きが周囲のブロックの動きと同様であり、そのため符号器又は復号器は周囲のブロックの動きベクトルを動き精緻化に使用することができる。
−テクスチャネス(又はテクスチャレベル):ロバストなサブピクセル動き精緻化を可能にし得る幾らかのテクスチャを現在のブロック及び周囲のブロックが含む。
−動きベクトル差(MVD):MVDは符号器及び復号器の両方で得ることができ、自動的な適応動き精緻化を使用するか、または適応動き精緻化を明確にシグナリングするかを決定するために使用することができる。
【0100】
動きの類似性の基準は以下の条件の1つ又は複数を使用して測定することができる:
1)MVP
left及びMVP
above(任意選択的にMVP
above−left)が存在し、つまり現在のブロックの周りに動きフィールドが存在する。より広くは、動きベクトルを有する1つ又は複数の隣接ブロックがある。
2)|MVP
left−MVP
current|<T2、|MVP
above−MVP
current|<T2、及び|MVP
leftabove−MVP
current|<T2。この条件は、これらの3つのサブコンビネーション、つまり|MVP
left−MVP
current|<T2、|MVP
above−MVP
current|<T2、及び|MVP
leftabove−MVP
current|<T2の異なる論理的な組合せとすることもできる。つまり周囲のブロックの動きベクトルが同様であり、現在のブロックの周りの動きフィールドが或る程度均一である。ここでは、MVP
leftとMVP
currentとの差、MVP
aboveとMVP
currentとの差、及びMVP
leftaboveとMVP
currentとの差を確認するために同じT2を使用する。これらの差について異なる閾値を使用できることに留意すべきである。
【0101】
テクスチャネスの基準は以下の条件の1つ又は複数を使用して測定することができる:
1)Texture(L)>T3、但しLは動き精緻化を行うのに使用される隣接領域、例えば
図6Aに示す670であり、texture(X)はテクスチャリング、例えばXの輝度のバリアンスの測度である。つまり、隣接領域が幾らかのテクスチャを有する。
2)Err(mc(L,MVP,Iref),L)<Err(mc(L,MVP+MVr,Iref),L)+T4、但しMVPはビットストリーム内でシグナリングされるMVDに対応する選択された動きベクトル予測因子であり、そのため符号器及び復号器の両方がこの条件を確認するために同じMVPを使用することができ、Err(X,Y)はピクセル群Xとピクセル群Yとの間の誤りの測度、例えばSAD、HAD、又はSSEであり、mc(X,v,I)は参照画像I内の動きベクトルvを用いたピクセル群Xの動き補償であり、Irefは動きベクトル予測因子MVPに関連する参照画像であり、T4は誤りの類似性に関する閾値であり、MVP+MVrは精緻化後の動きベクトル予測因子である。先に説明したように、MVPは例えば整数に丸められた低い動き分解能にあり得る。
【0102】
自動的な動き精緻化の活性化は、動きの類似性又はテクスチャネス基準の両方の下で全ての条件に基づくことができ、又は条件のサブセットを使用することもできる。動き精緻化の活性化又は非活性化をシグナリングするかどうかは動きベクトル差(MVD)に基づき得る。|MVD|≦T1が成立し、MVDがビットストリーム内で指示される動きベクトル差でありT1が動き閾値である場合、典型的な例ではT1=
【数9】
であり、明確なシグナリングなしに動きベクトルの精緻化を活性化することに決めることができる。つまり動きベクトル差が小さく、現在の動きベクトルが現在の動きベクトル予測因子に近い場合、符号器及び復号器が動き精緻化を自動的に活性化することができる。加えて、符号器及び復号器の両方がMVDを入手することができ、符号器と復号器とを同期させるためにMVDを使用して動き精緻化の活性化を同じやり方で決定することができる。他方で、|MVD|が大きくなる場合、符号器及び復号器は明確なシグナリングなしに動き精緻化を自動的に非活性化することができる。
【0103】
別の例では、動きベクトル予測因子のリストを構築するために時間的候補が使用される場合、つまりMVP
left及びMVP
aboveが同時に存在しない又は同じである場合、動きの類似性の基準の条件1)及び2)は使用されない。符号器は自動精緻化に時間的候補を使用するかどうかを決めることができる。
【0104】
図11は、本原理の一実施形態による、復号器における自動的な動き精緻化の活性化又は非活性化を用いて動きベクトル予測因子の精緻化を行うための例示的方法1100を示す。
【0105】
復号されるブロックについて、復号器はMV予測因子(MVP
current)を生成し(1110)、MV差(MVD)を復号する(1120)。|MVD|≦T1(1125)が真の場合、復号器は他の条件を確認して動き精緻化を活性化すべきかどうかを確かめる。そうではなく|MVD|>T1の場合、復号器は
【数10】
が成立するかどうかを確認する。一例ではS=1/2であり、精緻化のための動き探索が[−1/2,1/2]の中にあることを示す。
【数11】
が成立する場合、復号器はビットストリームから復号されるフラグ(1140)に基づいて動き精緻化を使用するかどうかを決定する。そうではなく
【数12】
が成立する場合、復号器は動き精緻化を行わず(即ち動き精緻化が自動的に非活性化され)、MVP及びMVDに基づいて動きベクトルを復号する(1180)(即ちMV=MVP+MVD)。
【0106】
より具体的には、復号器は|MVP
left−MVP
current|<T2、且つ|MVP
above−MVP
current|<T2が成立するかどうかを確認する(1155)。成立する場合、復号器はTexture(L)>T3が成立するかどうかを確認する(1165)。1155及び1165における両方の条件が満たされる場合、復号器は例えば上記の様々な実施形態を使用して動きベクトル予測因子の精緻化を行い、精緻化された動きベクトル予測因子(MVP
*)及びMVDに基づいて動きベクトルを復号する(1170)(即ちMV=MVP
*+MVD)。ここでは動き精緻化がフラグなしに自動的に活性化される。
【0107】
【数13】
が成立する場合、復号器は動き精緻化を使用できるかどうかを示すフラグ(例えばRefine_flag)を復号する(1140)。フラグが真の場合(1145)、復号器はステップ1155に進む。そうではなくフラグが偽の場合(1145)、MVP及びMVDに基づいて動きベクトルを得る(1180)。
【0108】
図11では、復号器が幾つかの条件において動き精緻化を自動的に非活性化し又は活性化し、他の条件では動き精緻化を非活性化し又は活性化するためにフラグを利用する。符号器と復号器との間の同期を確実にするために対応する符号器によって同じ条件が使用される。
【0109】
MVDが0の場合、例えばマージモードが使用される場合、ステップ1125における条件は常に真であり、除去することができ、ステップ1120、1130、1140、1145、及び1180は必要ない。或いはマージモードでは、マージによって推論される動きベクトル予測因子に対して雑音を加えるのを避けるために動き精緻化を無効にすることができる。
【0110】
図11に示している内容と異なり、方法1100はステップ1130〜1145を飛ばすこともできる。つまり|MVD|>T1が成立する場合、復号器は動き精緻化なしにステップ1180を実行する。他の改変形態、例えばこれだけに限定されないがステップ1155及び/又はステップ1165を飛ばすこと、またはステップ1155において2つの条件のうちの一方を確認することを実装することもできる。
【0111】
図12は、本原理の一実施形態による、符号器における自動的な動き精緻化を行うための例示的方法1200を示す。方法1200の出力は方法1100への入力ビットストリームとして使用することができる。初期設定ステップ(1205)で、符号器は符号化されるビデオシーケンスに入力としてアクセスすることができる。加えて、符号器はパラメータを初期値に設定する、例えばBest_RDcostを大きい値に設定することができる。
【0112】
動き推定(1210)を1/8pelの分解能で実行して動きベクトルMVを得る。ステップ1220で、例えばAMVPからの動きベクトル予測因子の候補リストを使用して動きベクトル予測因子のリストを構築する。対応する復号器が動きベクトル予測因子のリストをどのように構築するのかと一致して、初期動きベクトル予測因子の(例えば所望の分解能においてクロゼット整数に)丸められたバージョン又は隣接する動きベクトルの平均を使用することができる。一部の事例では、MVPリストがMVPを1つしか含まない場合がある。ステップ1220では、動きベクトル予測因子のリストを他の分解能で構築することもできる。
【0113】
ステップ1225で、特定のMVPについて、符号器は適応動き精緻化を使用して動きベクトルを符号化した方が効率的かどうかを確認し、Refine_flagを0または1に設定する。動き精緻化の方が効率的である場合、Refine_flagを1に設定し、そうでなければ0に設定する。ステップ1225では対応するMVDも計算する。
【0114】
図13は、本原理の一実施形態による、特定のMVPについて適応動き精緻化を使用するかどうかを判定するための例示的方法1300を示す。方法1300は、方法1200のステップ1225を実装するために使用することができる。
【0115】
具体的には、復号器は|MVP
left−MVP
current|<T2、|MVP
above−MVP
current|<T2、且つTexture(L)>T3が成立するかどうかを確認する(1305)。1305における条件が満たされる場合、符号器は例えば上記の様々な実施形態を使用して動きベクトル予測因子の精緻化を行い(1330)、精緻化された動きベクトル予測因子(MVP
*)に基づいて動きベクトル差を計算する(1340)(即ちMVD=MV−MVP
*)。動き精緻化が使用される場合はRDコスト(RDCost1)を推定する(1350)。符号器は、精緻化された動きベクトル予測因子なしの動きベクトル差も計算する(1360)(即ちMVD=MV−MVP)。動き精緻化が使用されない場合はRDコスト(RDCost2)を推定する(1370)。動き精緻化ありのRDコストと動き精緻化なしのRDコストとを比較する(1375)。RDCost1の方が小さい場合はRefine_flagを1に設定し(1380)、MVDをMV−MVP
*に設定する。さもなければRefine_flagを0に設定し(1390)、MVDをMV−MVPに設定する。
【0116】
1305における条件が満たされない場合、動きベクトル予測因子(MVP)に基づいて動きベクトル差を計算し(1310)(即ちMVD=MV−MVP)、Refine_flagを0に設定する(1320)。
【0117】
ステップ1225でMVD及びRefine_flagを決定した後、ステップ1230で符号器は|MVD|≦T1が成立するかどうかを確認する。成立する場合、符号器はRefine_flagが1に等しいかどうかを更に確認する(1235)。Refine_flagが1に設定される場合、符号器はRDコストを推定する(1270)。RDコストが現在のBest_RDCostよりも小さい場合(1275)、パラメータBest_RDcost及びBest_MVDを現在のRDコスト及び現在のMVDに設定し(1280)、Write_flagをいいえに設定する(適応動き精緻化を指示するために明確なシグナリングを使用しないことを示す)。つまり、符号化のために現在のMVPが選択される場合、フラグを送信する必要なしに動き精緻化が自動的に活性化される。
【0118】
|MVD|>T1が成立する場合(1230)、符号器がRDコストを推定する(1240)。RDコストがBest_RDCostよりも小さい場合(1245)、パラメータBest_RDcost及びBest_MVDを現在のRDコスト及び現在のMVDに設定する(1250)。次いで、符号器は
【数14】
が成立するかどうかを確認する(1255)。成立する場合、Write_flagをはい、に設定する。ここで条件付き分岐1260に対応する動きベクトル予測因子が選択される場合、動き精緻化を活性化させるかどうかはRefine_flagに基づいて明確にシグナリングされる。
【0119】
そうではなく1255における条件が満たされない場合、Write_flagをいいえに設定する(1265)。つまり条件付き分岐1265に対応する動きベクトル予測因子が選択される場合、フラグを送信する必要なしに動き精緻化が自動的に非活性化される。
【0120】
符号器はMVPリストの終わりに達したかどうかを確認する(1285)。MVPリストの終わりに達している場合、符号器はBest_MVD、選択されたMVPのインデックス、及びもしある場合は対応する残差を符号化する。Write_flagがはいに設定される場合、Refine_flagも符号化される。そうではなく1285における条件が満たされない場合、制御がステップ1225に返される。マージモードが選択される場合、ステップ1290でBest_MVDを符号化する必要がない。方法1100に対応して、方法1200も
図12に示す内容から変えることができ、例えばステップ1240〜1260を飛ばすことができる。
【0121】
上記では、動き精緻化の非活性化の自動的な活性化について動きベクトル予測因子に関して論じた。自動的な活性化又は非活性化は他の種類の動き情報、例えばこれだけに限定されないが動きベクトル差を既に含む動きベクトルに適用できることに留意すべきである。
【0122】
本願では、例えば閾値に基づいて動きの類似性またはテクスチャネスを決定するために様々な数値を使用した。それらの具体的な値は例示目的であり、本原理はそれらの具体的な値に限定されないことに留意すべきである。
【0123】
上記では様々な実施形態をHEVC規格に関して説明した。例えば上記の様々な動き精緻化または自動的な活性化の方法は、
図1に示すHEVC符号器の動き推定モジュール(175)又は
図3に示すHEVC復号器の動き補償モジュール(375)を修正するために使用することができる。但し、本原理はHEVCに限定されず、他の規格、勧告、及びその拡張に適用することができる。
【0124】
上記では1/4pelから1/8pelへの動き精緻化について論じた。本原理は他の動き分解能間の精緻化、例えばこれだけに限定されないが整数pelから1/4pelへの精緻化、1/4pelから1/6pelへの精緻化に適用できることに留意すべきである。
【0125】
図14は、本原理の例示的実施形態の様々な側面を実装することができる例示的システムのブロック図を示す。システム1400は、以下に記載の様々なコンポーネントを含む装置として実装することができ、上記のプロセスを実行するように構成される。かかる装置の例は、これだけに限定されないが、パーソナルコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、デジタルマルチメディアセットトップボックス、デジタルテレビ受信機、パーソナルビデオ録画システム、接続された家庭用電化製品、及びサーバを含む。上記の例示的ビデオシステムを実装するために、システム1400は
図14に示し且つ当業者によって知られている通信チャネルを介して他の同様のシステム及びディスプレイに通信可能に結合され得る。
【0126】
システム1400は、上記の様々なプロセスを実施するために自らの中にロードされた命令を実行するように構成される少なくとも1個のプロセッサ1410を含み得る。プロセッサ1410は、内蔵メモリ、入出力インタフェース、及び当技術分野で知られている他の様々な回路を含み得る。システム1400は、少なくとも1つのメモリ1420(例えは揮発性メモリ装置、不揮発性メモリ装置)も含み得る。システム1400は、これだけに限定されないが、EEPROM、ROM、PROM、RAM、DRAM、SRAM、フラッシュ、磁気ディスクドライブ、及び/又は光ディスクドライブを含む不揮発性メモリを含み得る記憶装置1440を追加で含むことができる。記憶装置1440は、非限定的な例として内蔵記憶装置、付加記憶装置、及び/又はネットワークアクセス可能記憶装置を含み得る。システム1400は、符号化済みビデオ又は復号済みビデオを提供するためにデータを処理するように構成される符号器/復号器モジュール1430も含み得る。
【0127】
符号器/復号器モジュール1430は、符号化及び/又は復号機能を実行するために装置内に含まれ得るモジュールを表す。知られているように、装置は符号化モジュール及び復号モジュールの一方又は両方を含み得る。加えて、符号器/復号器モジュール1430はシステム1400の別個の要素として実装することができ、又は当業者に知られているようにハードウェアとソフトウェアとの組合せとしてプロセッサ1410内に組み込まれても良い。
【0128】
上記の様々なプロセスを実行するためにプロセッサ1410上にロードされるプログラムコードは記憶装置1340内に記憶され、その後プロセッサ1410によって実行するためにメモリ1420上にロードされ得る。本原理の例示的実施形態によれば、プロセッサ1410、メモリ1420、記憶装置1440、及び符号器/復号器モジュール1430の1つ又は複数が、上記で論じたプロセスの実行中にこれだけに限定されないが入力ビデオ、ビットストリーム、等式、公式、行列、変数、演算、及び演算ロジックを含む様々なアイテムの1つ又は複数を記憶し得る。
【0129】
システム1400は、通信チャネル1460を介して他の装置と通信することを可能にする通信インタフェース1450も含み得る。通信インタフェース1450は、これだけに限定されないが、通信チャネル1460からのデータを送受信するように構成されるトランシーバを含み得る。通信インタフェースは、これだけに限定されないがモデム又はネットワークカードを含むことができ、通信チャネルは有線媒体及び/又は無線媒体内に実装することができる。システム1400の様々なコンポーネントは、これだけに限定されないが内部バス、配線、及びプリント回路基板を含む様々な適切な接続を使用して接続し又は通信可能に結合することができる。
【0130】
本原理による例示的実施形態は、プロセッサ1410により実装されるコンピュータソフトウェアによって、ハードウェアによって、又はハードウェアとソフトウェアとの組合せによって実行することができる。非限定的な例として、本原理による例示的実施形態は1つ又は複数の集積回路によって実装され得る。メモリ1420は技術的環境に適した任意の種類のものとすることができ、非限定的な例として光メモリ装置、磁気メモリ装置、半導体ベースのメモリ装置、固定メモリ、脱着可能メモリ等、任意の適切なデータ記憶技術を使用して実装することができる。プロセッサ1410は技術的環境に適した任意の種類のものとすることができ、非限定的な例としてマイクロプロセッサ、汎用コンピュータ、専用コンピュータ、及びマルチコアアーキテクチャに基づくプロセッサのうちの1つ又は複数を包含し得る。
【0131】
本明細書に記載した実装形態は、例えば方法またはプロセス、機器、ソフトウェアプログラム、データストリーム、又は信号によって実装することができる。単一形式の実装形態の脈絡でしか論じられていなくても(例えば方法としてしか論じられていなくても)、論じられた特徴の実装形態は他の形式(例えば機器またはプログラム)でも実装することができる。機器は、例えば適切なハードウェア、ソフトウェア、及びファームウェアによって実装することができる。方法は例えばプロセッサ等の機器によって実装することができ、プロセッサは例えばコンピュータ、マイクロプロセッサ、集積回路、プログラム可能論理装置を含む処理装置全般を指す。プロセッサは、例えばコンピュータ、携帯電話、ポータブル/携帯情報端末(「PDA」)、エンドユーザ間の情報の通信を助ける他の装置等の通信装置も含む。
【0132】
本原理の「一実施形態」、「或る実施形態」、「一実装形態」、又は「或る実装形態」並びにそれらの他の異体に言及することは、実施形態に関連して記載される特定の特徴、構造、特性等が本原理の少なくとも1つの実施形態に含まれることを意味する。従って、本明細書の全体を通して様々な場所に登場する「一実施形態では」、「或る実施形態では」、「一実装形態では」、又は「或る実装形態では」という語句並びに他の任意の異体の登場は必ずしも全て同じ実施形態を指すものではない。
【0133】
加えて本願又は本願の特許請求の範囲は、様々な情報片を「決定すること」に言及する場合がある。情報を決定することは、例えば情報を推定すること、情報を計算すること、情報を予測すること、又は情報をメモリから取り出すことの1つ又は複数を含み得る。
【0134】
更に本願又は本願の特許請求の範囲は、様々な情報片に「アクセスすること」に言及する場合がある。情報にアクセスすることは、例えば情報を受信すること、(例えばメモリから)情報を取り出すこと、情報を記憶すること、情報を処理すること、情報を伝送すること、情報を移動すること、情報を複製すること、情報を消去すること、情報を計算すること、情報を決定すること、情報を予測すること、又は情報を推定することの1つ又は複数を含み得る。
【0135】
加えて本願又は本願の特許請求の範囲は、様々な情報片を「受信すること」に言及する場合がある。受信することは、「アクセスすること」と同様に広義語であることを意図する。情報を受信することは、例えば情報にアクセスすること、又は情報を(例えばメモリから)取り出すことの1つ又は複数を含み得る。更に、「受信すること」は、典型的には例えば情報を記憶する操作、情報を処理する操作、情報を伝送する操作、情報を移動する操作、情報を複製する操作、情報を消去する操作、情報を計算する操作、情報を決定する操作、情報を予測する操作、情報を推定する操作等の操作中に何らかの形で関与する。
【0136】
当業者に明らかなように、実装形態は例えば記憶され又は伝送され得る情報を運ぶようにフォーマットされる多岐にわたる信号を作り出し得る。かかる情報は、例えば方法を実行するための命令または、記載した実装形態の1つによって作り出されるデータを含み得る。例えば信号は、記載した実施形態のビットストリームを運ぶようにフォーマットされ得る。かかる信号は、例えば電磁波として(例えばスペクトルの無線周波数部分を用いて)、又はベースバンド信号としてフォーマットされ得る。フォーマットすることは、例えばデータストリームを符号化し、符号化データストリームで搬送波を変調することを含み得る。信号が運ぶ情報は、例えばアナログ情報又はデジタル情報とすることができる。信号は、知られているように様々な異なる有線リンク又は無線リンク上で伝送され得る。信号はプロセッサ可読媒体上に記憶され得る。