(57)【要約】  スクリーンコンテンツおよび非自然コンテンツのコーディングのための動き推定の方法が開示される。一態様では、方法は、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択するステップと、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するステップと、第1の部分的なマッチングコストに少なくとも一部基づいて、候補ブロックが現在のブロックに対して最小のマッチングコストを有するかどうかを決定するステップとを備える。
2017513329.tif 000002
【特許請求の範囲】
【請求項１】
非自然ビデオデータの動き推定のための方法であって、
前記ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択するステップと、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するステップと、
前記第1の部分的なマッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有するかどうかを決定するステップとを含む、方法。
【請求項２】
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算するステップと、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを計算するステップとをさらに含み、
前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを前記決定するステップが、前記総マッチングコストに少なくとも一部基づく、請求項1に記載の方法。
【請求項３】
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なコストを計算するステップと、
前記候補ブロックのサンプルの前記第2のサブセットを除去することによって、前記候補ブロックの前記残りのサンプルを更新するステップと、
前記候補ブロックの前記更新された残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化するステップと、
前記第1の部分的なコスト、前記第2の部分的なコスト、および前記精緻化された推定値を加算することを介して、前記総マッチングコストを精緻化するステップと、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するステップとをさらに含む、請求項2に記載の方法。
【請求項４】
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの以前の候補ブロックを選択するステップと、
前記以前の候補ブロックを前記現在のブロックにマッチングするための以前の総マッチングコストを計算するステップと、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより大きいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有しないと決定するステップと、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するステップとをさらに含む、請求項3に記載の方法。
【請求項５】
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算するステップをさらに含み、前記総マッチングコストを計算する前記ステップがさらに、前記第1の部分的なコスト、前記推定値、および前記動きベクトルビットコストを加算するステップを含む、請求項2に記載の方法。
【請求項６】
前記現在のブロックとマッチングするための前記第1のフレームの後続の候補ブロックを、
前記候補ブロックを囲む第1の菱型パターンから第1の後続の候補ブロックを選択することと、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから第2の後続の候補ブロックを選択することと
を介して選択するステップをさらに含む、請求項1に記載の方法。
【請求項７】
修正された初期探索を実行するステップをさらに含み、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項6に記載の方法。
【請求項８】
前記最小のマッチングコストを有する前記候補と前記現在のブロックとの間の第1の距離を決定するステップと、
予測子と前記現在のブロックとの間の第2の距離を決定するステップと、
前記第1の距離と前記第2の距離との間の差分に基づいて、精緻化探索または誤差近似を伴う完全探索を実行するかどうかを決定するステップとをさらに含む、請求項6に記載の方法。
【請求項９】
統合動きベクトルの残差だけに基づいて、動き推定をスキップするかどうかを決定するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
非自然ビデオデータの動き推定のためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリと通信しているプロセッサとを備え、前記プロセッサが、
前記ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択し、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算し、
前記第1の部分的なマッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有するかどうかを決定する
ように構成される、デバイス。
【請求項１１】
前記プロセッサがさらに、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算し、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを計算するように構成され、
前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを前記決定するステップが、前記総マッチングコストに少なくとも一部基づく、請求項10に記載のデバイス。
【請求項１２】
前記プロセッサがさらに、
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なコストを計算し、
前記候補ブロックのサンプルの前記第2のサブセットを除去することによって、前記候補ブロックの前記残りのサンプルを更新し、
前記候補ブロックの前記更新された残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化し、
前記第1の部分的なコスト、前記第2の部分的なコスト、および前記精緻化された推定値を加算することを介して、前記総マッチングコストを精緻化し、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するように構成される、請求項11に記載のデバイス。
【請求項１３】
前記プロセッサがさらに、
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの以前の候補ブロックを選択し、
前記以前の候補ブロックを前記現在のブロックにマッチングするための以前の総マッチングコストを計算し、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより大きいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有しないと決定し、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するように構成される、請求項12に記載のデバイス。
【請求項１４】
前記プロセッサがさらに、
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算し、
前記第1の部分的なコスト、前記推定値、および前記動きベクトルビットコストを加算することを介して、前記総マッチングコストを計算するように構成される、請求項11に記載のデバイス。
【請求項１５】
前記プロセッサがさらに、
前記候補ブロックを囲む第1の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第1の後続の候補ブロックを選択し、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第2の後続の候補ブロックを選択するように構成される、請求項10に記載のデバイス。
【請求項１６】
前記プロセッサがさらに、修正された初期探索を実行するように構成され、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項15に記載のデバイス。
【請求項１７】
ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択するための手段と、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するための手段と、
前記第1の部分的なマッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有するかどうかを決定するための手段とを備える、装置。
【請求項１８】
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算するための手段と、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを計算するための手段とをさらに備え、
前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するための前記手段が、前記総マッチングコストに少なくとも一部基づく、請求項17に記載の装置。
【請求項１９】
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なコストを計算するための手段と、
前記候補ブロックのサンプルの前記第2のサブセットを除去することによって、前記候補ブロックの前記残りのサンプルを更新するための手段と、
前記候補ブロックの前記更新された残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化するための手段と、
前記第1の部分的なコスト、前記第2の部分的なコスト、および前記精緻化された推定値を加算することを介して、前記総マッチングコストを精緻化するための手段と、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するための手段とをさらに備える、請求項18に記載の装置。
【請求項２０】
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの以前の候補ブロックを選択するための手段と、
前記以前の候補ブロックを前記現在のブロックにマッチングするための以前の総マッチングコストを計算するための手段と、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより大きいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有しないと決定するための手段と、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するための手段とをさらに備える、請求項19に記載の装置。
【請求項２１】
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算するための手段をさらに備え、前記総マッチングコストを計算するための前記手段がさらに、前記第1の部分的なコスト、前記推定値、および前記動きベクトルビットコストを加算するための手段を備える、請求項18に記載の装置。
【請求項２２】
前記現在のブロックとマッチングするための前記第1のフレームの後続の候補ブロックを選択するための手段をさらに備え、前記手段が、
前記候補ブロックを囲む第1の菱型パターンから第1の後続の候補ブロックを選択するための手段と、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから第2の後続の候補ブロックを選択するための手段とを備える、請求項17に記載の装置。
【請求項２３】
修正された初期探索を実行するための手段をさらに備え、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項22に記載の装置。
【請求項２４】
実行されると、デバイスのプロセッサに、
ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択させ、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算させ、
前記第1の部分的なマッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有するかどうかを決定させる命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項２５】
実行されると、前記プロセッサに、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算させ、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを計算させる命令をさらに記憶しており、
前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを前記決定するステップが、前記総マッチングコストに少なくとも一部基づく、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
実行されると、前記プロセッサに、
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なコストを計算させ、
前記候補ブロックのサンプルの前記第2のサブセットを除去することによって、前記候補ブロックの前記残りのサンプルを更新させ、
前記候補ブロックの前記更新された残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化させ、
前記第1の部分的なコスト、前記第2の部分的なコスト、および前記精緻化された推定値を加算することを介して、前記総マッチングコストを精緻化させ、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定させる命令をさらに記憶した、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
実行されると、前記プロセッサに、
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの以前の候補ブロックを選択させ、
前記以前の候補ブロックを前記現在のブロックにマッチングするための以前の総マッチングコストを計算させ、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより大きいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有しないと決定させ、
前記精緻化された総マッチングコストが前記以前の総マッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定させる命令をさらに記憶した、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
実行されると、前記プロセッサに、
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算させ、
前記第1の部分的なコスト、前記推定値、および前記動きベクトルビットコストを加算することを介して、前記総マッチングコストを計算させる命令をさらに記憶した、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
実行されると、前記プロセッサに、
前記候補ブロックを囲む第1の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第1の後続の候補ブロックを選択させ、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第2の後続の候補ブロックを選択させる命令をさらに記憶した、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
実行されると、前記プロセッサに、修正された初期探索を実行させる命令をさらに記憶しており、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項29に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオコーディングおよびビデオ圧縮の分野に関し、より具体的には、非自然ビデオコンテンツの動き推定のための方法に関する。
【背景技術】
【０００２】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、Moving Picture Experts Group-2(MPEG-2)、MPEG-4、International Telegraph Union-Telecommunication Standardization Sector(ITU-T) H.263、ITU-T H.264/MPEG-4、Part 10、Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)規格、およびそのような規格の拡張によって定義される規格に記載されるような、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、かつ/または記憶することができる。
【０００３】
ビデオコーディングにおいて使用されるリソースの大部分は、動き推定に割り振られる。動き推定は通常、ビデオデータ中の2つの画像の間でのピクセルまたはブロックの動きを示すために、動きベクトルを割り当てることを含む。動き推定は、画像の2つのそれぞれのブロックの間の誤差または差分の決定と、それらのブロックが2つのそれぞれのブロックの間の最小の誤差または最小の差分を有するときに互いに一致するものとしてそれらのブロックを選択することとを含み得る。したがって、ビデオコーディングアルゴリズムの効率は、動き推定の計算の複雑さを下げることによって改善され得る。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】文書JCTVC-L1003、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜2013年1月23日
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示のシステム、方法、およびデバイスは、いくつかの革新的態様をそれぞれ有し、それらの態様のいずれの1つも、本明細書で開示される望ましい属性を単独では担わない。
【０００６】
一態様では、非自然ビデオデータの動き推定のための方法は、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択するステップと、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するステップと、第1の部分的なマッチングコストに少なくとも一部基づいて、候補ブロックが現在のブロックに対して最小のマッチングコストを有するかどうかを決定するステップとを含む。
【０００７】
別の態様では、非自然ビデオデータの動き推定のためのデバイスは、ビデオデータを記憶するように構成されるメモリと、メモリと通信しているプロセッサとを備え、このプロセッサは、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択し、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算し、第1の部分的なマッチングコストに少なくとも一部基づいて、候補ブロックが現在のブロックに対して最小のマッチングコストを有するかどうかを決定するように構成される。
【０００８】
別の態様では、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択するための手段と、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するための手段と、第1の部分的なマッチングコストに少なくとも一部基づいて、候補ブロックが現在のブロックに対して最小のマッチングコストを有するかどうかを決定するための手段とを備える、装置が提供される。
【０００９】
さらに別の態様では、実行されると、デバイスのプロセッサに、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択させ、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算させ、第1の部分的なマッチングコストに少なくとも一部基づいて、候補ブロックが現在のブロックに対して最小のマッチングコストを有するかどうかを決定させる命令を記憶した、非一時的コンピュータ可読記憶媒体が提供される。
【図面の簡単な説明】
【００１０】
【図１Ａ】本開示で説明される態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図１Ｂ】本開示で説明される態様による技法を実行し得る別の例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】本開示で説明される態様による技法を実装し得るビデオエンコーダの例を示すブロック図である。
【図３】本開示で説明される態様による技法を実装し得るビデオデコーダの例を示すブロック図である。
【図４】本開示で説明される態様による加速された動き推定のための方法を示すフローチャートである。
【図５】本開示で説明される態様による加速された動き推定のための別の方法を示すフローチャートである。
【図６】本開示の態様による、複数の段階において現在のブロックにマッチングされる候補ブロックの部分的なサンプルを示すブロック図である。
【図７】本開示の態様による修正された初期探索を示す図である。
【図８】本開示の態様による動き推定のための方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
一般に、本開示は、非自然ビデオデータの動き推定のための方法に関する。動き推定は通常、ビデオデータ中の2つの画像の間でのピクセルまたはブロックの動きを示すために、動きベクトルを割り当てることを含む。動き推定は、画像の2つのそれぞれのブロックの間の誤差または差分の決定と、それらのブロックが2つのそれぞれのブロックの間の最小の誤差または最小の差分を有するときに互いに一致するものとしてそれらのブロックを選択することとを含み得る。従来の動き推定は、ビデオデータのコンテンツのタイプと関連付けられるいくつかの仮定に基づき得る。たとえば、「自然」ビデオデータ、たとえば光学系を有するカメラを通じて撮られたビデオデータは、撮られたビデオデータの被写体の性質および光学系によりもたらされるノイズにより、比較的スムーズであり得る。本明細書で使用される場合、「スムーズ」という用語は一般に、ピクセル間の鋭い遷移を有しない画像を指し、すなわち、ピクセル間の色の変化が相対的に漸進的である。したがって、従来の動き推定は、最小の誤差を有する候補ブロック、すなわちベストマッチ候補ブロックに近付くにつれて、候補ブロックと関連付けられる誤差が減少すると仮定することができる。本明細書で使用される場合、候補ブロックは一般に、候補ブロックが現在のブロックと一致するかどうかを決定するためにビデオデータの第2のフレームの現在のブロックと比較されるビデオデータの第1のフレームのブロックを指す。通常、候補ブロックのセットの中からベストマッチ候補ブロックを決定するために、候補ブロックのセットが探索される。しかしながら、これらの仮定は、「非自然」ビデオデータに対しては必ずしも当てはまるとは限らない。非自然ビデオデータは一般に、限定はされないが、スクリーンコンテンツおよび/またはテキストの多いビデオデータのような、コンピュータにより生成されたビデオデータを指し得る。非自然ビデオデータでは、候補ブロックと関連付けられる誤差は、ベストマッチ候補ブロックに近付くにつれて減少しないことがある。したがって、自然ビデオデータのために設計された動き推定技法は、非自然ビデオデータの動き推定には効率的ではないことがある。
【００１２】
本開示のいくつかの実施形態は、従来の動き推定が非自然ビデオデータに適用されるときにもたらし得る、上で示された問題に対処する。たとえば、非自然ビデオデータでは、候補ブロックを現在のブロックにマッチングするための誤差の大部分は、候補ブロックの数サンプルに集中し得る。したがって、少なくとも1つの実施形態では、候補ブロックの数サンプルだけに基づいて誤差を近似することによって、早期退出機構(Early Exit Mechanism)を伴う多段階の近似された誤差コスト計算が実施される。別の実施形態では、修正された初期探索が移動菱型パターンにて実行され、それは、非自然ビデオデータでは、候補ブロックと関連付けられる誤差は、ベストマッチ候補ブロックに近付くにつれて減少しないことがあるからである。さらに別の実施形態では、修正された早期スキップ検出が実行され、それは、従来の試験が非自然ビデオデータに対して強力すぎることがあるからである。したがって、少なくとも1つの実施形態によれば、高速な動き推定が、従来の方法と比較してより高速および効率的に、非自然ビデオに対して実施され得る。
【００１３】
以下の説明では、いくつかの実施形態に関するH.264/Advanced Video Coding(AVC)技法が説明され、HEVC規格および関連する技法も説明される。いくつかの実施形態が、本明細書でHEVC規格および/またはH.264規格の文脈において説明されるが、当業者は、本明細書で開示されるシステムおよび方法が、任意の適切なビデオコーディング規格に適用可能であり得ることを了解するであろう。たとえば、本明細書で開示される実施形態は、以下の規格、すなわち、国際電気通信連合(ITU) Telecommunication Standardization Sector(ITU-T) H.261、国際標準化機構/国際電気標準会議(ISO/IEC) MPEG-1 Visual、ITU-T H.262、またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、および範囲の拡張を含む、(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264の1つまたは複数に適用可能であり得る。
【００１４】
HEVCは全般に、多くの点で、前のビデオコーディング規格のフレームワークに従う。HEVCにおける予測のユニットは、いくつかの前のビデオコーディング規格における予測のユニット(たとえば、マクロブロック)とは異なる。実際、いくつかの前のビデオコーディング規格において理解されているようなマクロブロックの概念は、HEVCに存在しない。マクロブロックは、4分木方式に基づく階層構造と置き換えられ、このことは、あり得る利点の中でもとりわけ、高い柔軟性を実現し得る。たとえば、HEVC方式では、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)という3つのタイプのブロックが定義される。CUは、領域分割の基本単位を指し得る。CUはマクロブロックの概念に類似すると見なされることがあるが、HEVCは、CUの最大サイズを制限せず、コンテンツ適応性を改善するために4つの等しいサイズのCUへの再帰的分割を許容し得る。PUはインター/イントラ予測の基本単位と見なされることがあり、単一のPUは、不規則な画像パターンを効果的にコーディングするために、複数の任意の形状区分を含むことがある。TUは、変換の基本単位と見なされることがある。TUは、PUとは無関係に定義され得るが、TUのサイズは、TUが属するCUのサイズに制限され得る。3つの異なる概念へのブロック構造のこの分離により、各ユニットをユニットのそれぞれの役割に従って最適化することが可能になり、このことはコーディング効率の改善をもたらし得る。
【００１５】
《ビデオコーディング規格》
ビデオ画像、TV画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像のようなデジタル画像は、水平な線および垂直な線に並べられたピクセルまたはサンプルを含み得る。単一の画像中のピクセルの数は、一般に数万個である。各ピクセルは、一般に、ルミナンス情報とクロミナンス情報とを含む。圧縮がなければ、画像エンコーダから画像デコーダに搬送されるべき著しい量の情報により、リアルタイムの画像送信は実行不可能になるであろう。送信されるべき情報の量を減らすために、JPEG、MPEG、およびH.263規格のような、いくつかの異なる圧縮方法が開発された。
【００１６】
ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、および、 (ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264、ならびに、範囲の拡張を含むHEVCを含む。
【００１７】
加えて、ビデオコーディング規格、すなわち、HEVCが、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC MPEGのJoint Collaboration Team on Video Coding(JCT-VC)によって開発された。HEVC Draft 10の完全な引用は、文書JCTVC-L1003、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜2013年1月23日である。HEVCの範囲の拡張も、JCT-VCによって開発されている。
【００１８】
《ビデオコーディングシステム》
添付の図面を参照して、新規のシステム、装置、および方法の様々な態様が以下でより十分に説明される。しかしながら、本開示は、多くの異なる形態で具現化されてよく、本開示全体を通じて示される任意の特定の構造または機能に限定されるものと解釈されるべきでない。そうではなく、これらの態様は、本開示が十分なものであり、完全であるように、また本開示の範囲を当業者に十分伝えるように提供される。本明細書の教示に基づいて、本開示の範囲は、本開示の他の態様と無関係に実装されるか、または本開示の他の態様と組み合わせて実装されるかにかかわらず、本明細書で開示される新規のシステム、装置、および方法の任意の態様を包含することを、当業者は了解されたい。たとえば、本明細書に記載される任意の数の態様を使用して、装置が実装されてよく、または方法が実践されてよい。さらに、本開示の範囲は、本明細書に記載される本開示の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実践されるような装置または方法を包含するものとする。本明細書で開示される任意の態様は、特許請求の範囲の1つまたは複数の要素により具現化され得ることを理解されたい。
【００１９】
特定の態様が本明細書で説明されるが、これらの態様の多数の変形および置換が、本開示の範囲内にある。好ましい態様のいくつかの利益および利点が説明されるが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、その一部が例として図面および好ましい態様の以下の説明において示される、異なるワイヤレス技術と、システム構成と、ネットワークと、伝送プロトコルとに幅広く適用可能であることが意図されている。詳細な説明および図面は、限定的ではなく本開示の例示にすぎず、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００２０】
添付の図面は例を示している。添付の図面中の参照番号によって示される要素は、以下の説明における同様の参照番号によって示される要素に対応する。本開示では、序数語(たとえば、「第1の」、「第2の」、「第3の」など)で始まる名前を有する要素は、必ずしもそれらの要素が特定の順序を有することを暗示するとは限らない。むしろ、そのような序数語は、同じまたは同様のタイプの、異なる要素を指すために使用されるにすぎない。
【００２１】
図1Aは、本開示で説明される態様による技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用され説明される場合、「ビデオコーダ」または「コーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化とビデオ復号とを総称的に指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本出願で説明される態様は、トランスコーダ(たとえば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス)およびミドルボックス(たとえば、ビットストリームを修正し、変換し、かつ/または別様に操作することができるデバイス)のような、他の関連するデバイスに拡張され得る。
【００２２】
図1Aに示されるように、ビデオコーディングシステム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。図1Aの例では、ソースデバイス12および宛先デバイス14は、別個のデバイスを構成する。しかしながら、ソースデバイス12および宛先デバイス14は、図1Bの例に示されるように、同じデバイス上にあるかまたは同じデバイスの一部であり得ることに留意されたい。
【００２３】
もう一度図1Aを参照すると、ソースデバイス12および宛先デバイス14は、それぞれ、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを含み得る。様々な実施形態では、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
【００２４】
宛先デバイス14は、復号されるべき符号化されたビデオデータを、リンク16を介して受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。図1Aの例では、リンク16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで宛先デバイス14に送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、高周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路のような、任意のワイヤレスまたは有線の通信媒体を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークのようなパケットベースネットワーク、またはインターネットのようなグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を支援するのに有用であり得る任意の他の機器を含み得る。
【００２５】
代替的に、符号化されたデータは、出力インターフェース22から(任意選択で存在する)記憶デバイス31に出力され得る。同様に、符号化されたデータは、たとえば、宛先デバイス14の入力インターフェース28によって記憶デバイス31からアクセスされ得る。記憶デバイス31は、ハードドライブ、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる例では、記憶デバイス31は、ソースデバイス12によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイス31から記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、ワイヤレスローカルエリアネットワーク(WLAN)接続)、有線接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイス31からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００２６】
本開示の技法は、ワイヤレスの適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信(たとえば、ハイパーテキスト転送プロトコル(HTTP)上での動的適応ストリーミングなど)、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例のような、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
【００２７】
図1Aの例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの場合、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、図1Bの例に示されているように、いわゆる「カメラ電話」または「ビデオ電話」を形成し得る。しかしながら、本開示で説明される技法は、ビデオコーディング全般に適用可能であってよく、ワイヤレスおよび/または有線の適用例に適用され得る。
【００２８】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に送信され得る。符号化されたビデオデータはさらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス31に記憶され得る。図1Aおよび図1Bに示されるビデオエンコーダ20は、図2に示されるビデオエンコーダ20、または本明細書で説明される任意の他のビデオエンコーダを含み得る。
【００２９】
図1Aの例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの場合、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を通じて、および/または記憶デバイス31から、符号化されたビデオデータを受信し得る。リンク16を通じて通信され、または記憶デバイス31上に与えられた、符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、またはファイルサーバに記憶される、符号化されたビデオデータとともに含まれ得る。図1Aおよび図1Bに示されるビデオデコーダ30は、図3に示されるビデオデコーダ30、または本明細書で説明される任意の他のビデオデコーダを含んでよい。
【００３０】
ディスプレイデバイス32は、宛先デバイス14と一体化されるか、またはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型のディスプレイデバイスを含むことがあり、外部ディスプレイデバイスとインターフェースするように構成されることもある。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのいずれかを含み得る。
【００３１】
関連する態様では、図1Bは例示的なビデオコーディングシステム10'を示し、ソースデバイス12および宛先デバイス14はデバイス11上にあるかまたはデバイス11の一部である。デバイス11は、「スマート」フォンなどのような電話ハンドセットであり得る。デバイス11は、ソースデバイス12および宛先デバイス14と動作可能に通信している(任意選択で存在する)コントローラ/プロセッサデバイス13を含み得る。図1Bのビデオコーディングシステム10'およびそのコンポーネントは、その他の点では図1Aのビデオコーディングシステム10およびそのコンポーネントと同様である。
【００３２】
ビデオエンコーダ20およびビデオデコーダ30は、HEVCのようなビデオ圧縮規格に従って動作することができ、HEVCテストモデル(HM)に準拠することができる。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part 10、AVCと呼ばれるITU-T H.264規格のような、他のプロプライエタリ規格もしくは業界規格、またはそのような規格の拡張に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例には、MPEG-2およびITU-T H.263がある。
【００３３】
図1Aおよび図1Bの例には示されていないが、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
【００３４】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアのような、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダの一部として統合されてよい。
【００３５】
《ビデオコーディング処理》
上で簡単に述べられたように、ビデオエンコーダ20はビデオデータを符号化する。ビデオデータは、1つまたは複数のピクチャを含み得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャはビデオ「フレーム」と呼ばれ得る。ビデオエンコーダ20がビデオデータを符号化するとき、ビデオエンコーダ20はビットストリームを生成し得る。ビットストリームは、ビデオデータのコーディングされた表現を形成するビットのシーケンスを含み得る。ビットストリームは、コーディングされたピクチャと関連データとを含み得る。コーディングされたピクチャは、ピクチャのコーディングされた表現である。
【００３６】
ビットストリームを生成するために、ビデオエンコーダ20は、ビデオデータ中の各ピクチャに対して符号化動作を実行し得る。ビデオエンコーダ20がピクチャに対して符号化動作を実行するとき、ビデオエンコーダ20は、一連のコーディングされたピクチャと関連データとを生成し得る。関連データは、ビデオパラメータセット(VPS)と、シーケンスパラメータセット(SPS)と、ピクチャパラメータセット(PPS)と、適応パラメータセット(APS)と、他のシンタックス構造とを含み得る。SPSは、0個以上のピクチャのシーケンスに適用可能なパラメータを含み得る。PPSは、0個以上のピクチャに適用可能なパラメータを含み得る。APSは、0個以上のピクチャに適用可能なパラメータを含み得る。APS中のパラメータは、PPS中のパラメータよりも変化する可能性が高いパラメータであり得る。
【００３７】
コーディングされたピクチャを生成するために、ビデオエンコーダ20は、ピクチャを等しいサイズのビデオブロックに区分し得る。ビデオブロックは、サンプルの2次元アレイであり得る。ビデオブロックの各々は、ツリーブロックと関連付けられる。いくつかの事例では、ツリーブロックは、最大コーディングユニット(LCU)と呼ばれ得る。HEVCのツリーブロックは、H.264/AVCのような、以前の規格のマクロブロックに広い意味で類似し得る。しかしながら、ツリーブロックは、特定のサイズに必ずしも限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。ビデオエンコーダ20は、4分木区分を使用して、ツリーブロックのビデオブロックを、CUと関連付けられたビデオブロックに区分することができ、したがって「ツリーブロック」という名前がある。
【００３８】
いくつかの例では、ビデオエンコーダ20はピクチャを複数のスライスに区分し得る。スライスの各々は、整数個のCUを含み得る。いくつかの事例では、スライスは整数個のツリーブロックを含む。他の事例では、スライスの境界はツリーブロック内にあり得る。
【００３９】
ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実行し得る。ビデオエンコーダ20がスライスに対して符号化動作を実行するとき、ビデオエンコーダ20は、スライスと関連付けられた符号化されたデータを生成し得る。スライスと関連付けられた符号化されたデータは「コーディングされたスライス」と呼ばれ得る。
【００４０】
コーディングされたスライスを生成するために、ビデオエンコーダ20は、スライス中の各ツリーブロックに対して符号化動作を実行し得る。ビデオエンコーダ20がツリーブロックに対して符号化動作を実行するとき、ビデオエンコーダ20はコーディングされたツリーブロックを生成し得る。コーディングされたツリーブロックは、ツリーブロックの符号化されたバージョンを表すデータを含み得る。
【００４１】
ビデオエンコーダ20がコーディングされたスライスを生成するとき、ビデオエンコーダ20は、ラスター走査順序に従って、スライス中のツリーブロックに対して符号化動作を実行し得る(たとえば、そのツリーブロックを符号化し得る)。たとえば、ビデオエンコーダ20は、スライス中のツリーブロックの一番上の行にわたって左から右に進み、次いでツリーブロックの次の下の行にわたって左から右に進み、以下同様に進む順序で、ビデオエンコーダ20がスライス中のツリーブロックの各々を符号化するまで、スライスのツリーブロックを符号化し得る。
【００４２】
ラスター走査順序に従ってツリーブロックを符号化した結果として、所与のツリーブロックの上および左のツリーブロックは符号化されていることがあるが、所与のツリーブロックの下および右のツリーブロックはまだ符号化されていない。したがって、ビデオエンコーダ20は、所与のツリーブロックを符号化するとき、所与のツリーブロックの上および左のツリーブロックを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ20は、所与のツリーブロックを符号化するとき、所与のツリーブロックの下および右のツリーブロックを符号化することによって生成された情報にアクセスすることが不可能であり得る。
【００４３】
コーディングされたツリーブロックを生成するために、ビデオエンコーダ20は、ツリーブロックのビデオブロックに対して4分木区分を再帰的に実行して、ビデオブロックを徐々により小さくなるビデオブロックに分割し得る。より小さなビデオブロックの各々は、異なるCUと関連付けられ得る。たとえば、ビデオエンコーダ20は、ツリーブロックのビデオブロックを4つの等しいサイズのサブブロックに区分し、サブブロックの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。区分されたCUは、そのビデオブロックが他のCUと関連付けられるビデオブロックに区分された、CUであり得る。区分されていないCUは、そのビデオブロックが他のCUと関連付けられたビデオブロックに区分されていない、CUであり得る。
【００４４】
ビットストリーム中の1つまたは複数のシンタックス要素は、ビデオエンコーダ20がツリーブロックのビデオブロックを区分し得る最大の回数を示し得る。CUのビデオブロックは、形状が正方形であり得る。CUのビデオブロックのサイズ(たとえば、CUのサイズ)は、8×8のピクセルから、最大で64×64以上のピクセルをもつツリーブロックのビデオブロックのサイズ(たとえば、ツリーブロックのサイズ)にまで及び得る。
【００４５】
ビデオエンコーダ20は、z走査順序に従って、ツリーブロックの各CUに対して符号化動作を実行し得る(たとえば、各CUを符号化し得る)。言い換えれば、ビデオエンコーダ20は、左上のCUと、右上のCUと、左下のCUと、次いで右下のCUとを、その順序で符号化し得る。ビデオエンコーダ20が、区分されたCUに対して符号化動作を実行するとき、ビデオエンコーダ20は、z走査順序に従って、区分されたCUのビデオブロックのサブブロックと関連付けられたCUを符号化し得る。言い換えれば、ビデオエンコーダ20は、左上のサブブロックと関連付けられたCUと、右上のサブブロックと関連付けられたCUと、左下のサブブロックと関連付けられたCUと、次いで右下のサブブロックと関連付けられたCUとを、その順序で符号化し得る。
【００４６】
z走査順序に従ってツリーブロックのCUを符号化した結果として、所与のCUの上、左上、右上、左、および左下のCUは符号化されていることがある。所与のCUの下および右のCUはまだ符号化されていない。したがって、ビデオエンコーダ20は、所与のCUを符号化するとき、所与のCUに隣接するいくつかのCUを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ20は、所与のCUを符号化するとき、所与のCUに隣接する他のCUを符号化することによって生成された情報にアクセスすることが不可能であり得る。
【００４７】
ビデオエンコーダ20が区分されていないCUを符号化するとき、ビデオエンコーダ20は、CUのために1つまたは複数の予測ユニット(PU)を生成し得る。CUのPUの各々は、CUのビデオブロック内の異なるビデオブロックと関連付けられ得る。ビデオエンコーダ20は、CUの各PUのための予測されたビデオブロックを生成し得る。PUの予測されたビデオブロックは、サンプルのブロックであり得る。ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測されたビデオブロックを生成し得る。
【００４８】
ビデオエンコーダ20がイントラ予測を使用してPUの予測されたビデオブロックを生成するとき、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号されたサンプルに基づいて、PUの予測されたビデオブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してCUのPUの予測されたビデオブロックを生成する場合、CUはイントラ予測されたCUである。ビデオエンコーダ20がインター予測を使用してPUの予測されたビデオブロックを生成するとき、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測されたビデオブロックを生成し得る。ビデオエンコーダ20がインター予測を使用してCUのPUの予測されたビデオブロックを生成する場合、CUはインター予測されたCUである。
【００４９】
さらに、ビデオエンコーダ20がインター予測を使用してPUのための予測されたビデオブロックを生成するとき、ビデオエンコーダ20はPUの動き情報を生成し得る。PUの動き情報は、PUの1つまたは複数の参照ブロックを示し得る。PUの各参照ブロックは、参照ピクチャ内のビデオブロックであり得る。参照ピクチャは、PUと関連付けられたピクチャ以外のピクチャであり得る。いくつかの事例では、PUの参照ブロックは、PUの「参照サンプル」と呼ばれることもある。ビデオエンコーダ20は、PUの参照ブロックに基づいて、PUのための予測されたビデオブロックを生成し得る。
【００５０】
ビデオエンコーダ20がCUの1つまたは複数のPUのための予測されたビデオブロックを生成した後、ビデオエンコーダ20は、CUのPUのための予測されたビデオブロックに基づいて、CUの残差データを生成し得る。CUの残差データは、CUのPUのための予測されたビデオブロック中のサンプルと、CUの元のビデオブロック中のサンプルとの間の差を示し得る。
【００５１】
さらに、区分されていないCUに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、CUの残差データに対して再帰的な4分木区分を実行して、CUの残差データを、CUの変換ユニット(TU)と関連付けられた残差データの1つまたは複数のブロック(たとえば、残差ビデオブロック)に区分し得る。CUの各TUは、異なる残差ビデオブロックと関連付けられ得る。
【００５２】
ビデオエンコーダ20は、TUと関連付けられた変換係数ブロック(たとえば、変換係数のブロック)を生成するために、TUと関連付けられた残差ビデオブロックに1つまたは複数の変換を適用し得る。概念的に、変換係数ブロックは変換係数の2次元(2D)行列であり得る。
【００５３】
変換係数ブロックを生成した後、ビデオエンコーダ20は、変換係数ブロックに対して量子化処理を実行し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。量子化処理は、変換係数の一部またはすべてと関連付けられるビット深度を低減することができる。たとえば、量子化中にnビットの変換係数がmビットの変換係数へと切り捨てられることがあり、ただしnはmよりも大きい。
【００５４】
ビデオエンコーダ20は、各CUを量子化パラメータ(QP)値と関連付け得る。CUと関連付けられたQP値は、ビデオエンコーダ20が、CUと関連付けられた変換係数ブロックをどのように量子化するかを決定し得る。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。
【００５５】
ビデオエンコーダ20が変換係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数ブロック中で変換係数を表すシンタックス要素のセットを生成し得る。ビデオエンコーダ20は、これらのシンタックス要素のうちのいくつかに、コンテキスト適応型バイナリ算術コーディング(CABAC)動作のようなエントロピー符号化動作を適用し得る。コンテキスト適応型可変長コーディング(CALVC)、確率間隔区分エントロピー(PIPE)コーディング、または他のバイナリ算術コーディングのような、他のエントロピーコーディング技法も使用され得る。
【００５６】
ビデオエンコーダ20によって生成されるビットストリームは、一連のネットワーク抽象化レイヤ(NAL)ユニットを含み得る。NALユニットの各々は、NALユニット中のデータのタイプの指示と、データを含むバイトとを含む、シンタックス構造であり得る。たとえば、NALユニットは、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、コーディングされたスライス、SEI、アクセスユニットデリミタ、フィラーデータ、または別のタイプのデータを表すデータを含み得る。NALユニット中のデータは、様々なシンタックス構造を含み得る。
【００５７】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。ビットストリームは、ビデオエンコーダ20によって符号化されたビデオデータのコーディングされた表現を含み得る。ビデオデコーダ30がビットストリームを受信するとき、ビデオデコーダ30は、ビットストリームに対して解析動作を実行し得る。ビデオデコーダ30が解析動作を実行するとき、ビデオデコーダ30は、ビットストリームからシンタックス要素を抽出し得る。ビデオデコーダ30は、ビットストリームから抽出されたシンタックス要素に基づいて、ビデオデータのピクチャを再構築し得る。シンタックス要素に基づいてビデオデータを再構築するための処理は、一般に、シンタックス要素を生成するためにビデオエンコーダ20によって実行される処理とは逆であり得る。
【００５８】
ビデオデコーダ30がCUと関連付けられたシンタックス要素を抽出した後、ビデオデコーダ30は、シンタックス要素に基づいて、CUのPUのための予測されたビデオブロックを生成し得る。加えて、ビデオデコーダ30は、CUのTUと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、変換係数ブロックに対して逆変換を実行して、CUのTUと関連付けられた残差ビデオブロックを再構築し得る。予測されたビデオブロックを生成し、残差ビデオブロックを再構築した後、ビデオデコーダ30は、予測されたビデオブロックと残差ビデオブロックとに基づいてCUのビデオブロックを再構築し得る。このようにして、ビデオデコーダ30は、ビットストリーム中のシンタックス要素に基づいて、CUのビデオブロックを再構築し得る。
【００５９】
《ビデオエンコーダ》
図2は、本開示で説明される態様による技法を実装し得るビデオエンコーダ20の例を示すブロック図である。ビデオデコーダ20は、HEVCの場合のように、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオエンコーダ20は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオエンコーダ20の様々なコンポーネント間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示されず)が、本開示で説明される技法のいずれかまたはすべてを実行するように構成され得る。
【００６０】
説明の目的で、本開示は、HEVCコーディングの状況においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図2に示される例は、シングルレイヤコーデックのためのものである。しかしながら、いくつかの実施形態では、ビデオエンコーダ20の一部またはすべてが、マルチレイヤコーデックの処理のために複製され得る。
【００６１】
ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、空間的予測を利用して、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去する。インターコーディングは、時間的予測を利用して、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオの時間的冗長性を低減または除去する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)のようなインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
【００６２】
図2の例では、ビデオエンコーダ20は複数の機能コンポーネントを含む。ビデオエンコーダ20の機能コンポーネントは、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換ユニット110と、再構築ユニット112と、フィルタユニット113と、復号ピクチャバッファ114と、エントロピー符号化ユニット116とを含む。予測処理ユニット100は、インター予測ユニット121と、動き推定ユニット122と、動き補償ユニット124と、イントラ予測ユニット126と、レイヤ間予測ユニット128とを含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。さらに、動き推定ユニット122および動き補償ユニット124は、高度に統合され得るが、図2の例では、説明の目的で別々に表されている。
【００６３】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、様々なソースからビデオデータを受信し得る。たとえば、ビデオエンコーダ20は、(たとえば、図1Aまたは図1Bに示された)ビデオソース18、または別のソースからビデオデータを受信し得る。ビデオデータは、一連のピクチャを表し得る。ビデオデータを符号化するために、ビデオエンコーダ20は、ピクチャの各々に対して符号化動作を実行し得る。ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実行し得る。スライスに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、スライス中のツリーブロックに対して符号化動作を実行し得る。
【００６４】
ツリーブロックに対して符号化動作を実行することの一部として、予測処理ユニット100は、ツリーブロックのビデオブロックに対して4分木区分を実行して、ビデオブロックを徐々により小さくなるビデオブロックに分割し得る。より小さなビデオブロックの各々は、異なるCUと関連付けられ得る。たとえば、予測処理ユニット100は、ツリーブロックのビデオブロックを4つの等しいサイズのサブブロックに区分し、サブブロックの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【００６５】
CUと関連付けられたビデオブロックのサイズは、8×8のサンプルから、最大で64×64以上のサンプルをもつツリーブロックのサイズにまで及び得る。本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのサンプルの寸法、たとえば、16×16(16x16)のサンプルまたは16×16(16 by 16)のサンプルを指すために交換可能に使用され得る。一般に、16×16のビデオブロックは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×Nのブロックは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負の整数値を表す。
【００６６】
さらに、ツリーブロックに対して符号化動作を実行することの一部として、予測処理ユニット100は、ツリーブロックのための階層的な4分木データ構造を生成し得る。たとえば、ツリーブロックは、4分木データ構造のルートノードに対応し得る。予測処理ユニット100がツリーブロックのビデオブロックを4つのサブブロックに区分する場合、ルートノードは、4分木データ構造中に4つの子ノードを有する。子ノードの各々は、サブブロックの1つと関連付けられたCUに対応する。予測処理ユニット100がサブブロックの1つを4つのサブサブブロックに区分する場合、サブブロックと関連付けられたCUに対応するノードは、サブサブブロックの1つと関連付けられたCUに各々が対応する、4つの子ノードを有し得る。
【００６７】
4分木データ構造の各ノードは、対応するツリーブロックまたはCUのシンタックスデータ(たとえば、シンタックス要素)を含み得る。たとえば、4分木の中のノードは、そのノードに対応するCUのビデオブロックが4つのサブブロックに区分(たとえば、分割)されているかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義されてよく、CUのビデオブロックがサブブロックに分割されているかどうかに依存し得る。ビデオブロックが区分されていないCUは、4分木データ構造におけるリーフノードに対応し得る。コーディングされたツリーブロックは、対応するツリーブロックのための4分木データ構造に基づくデータを含み得る。
【００６８】
ビデオエンコーダ20は、ツリーブロックの区分されていない各々のCUに対して符号化動作を実行し得る。ビデオエンコーダ20が、区分されていないCUに対して符号化動作を実行するとき、ビデオエンコーダ20は、区分されていないCUの符号化された表現を表すデータを生成する。
【００６９】
CUに対して符号化動作を実行することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの中で、CUのビデオブロックを区分し得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なPUサイズをサポートし得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、2N×2NまたはN×NというPUサイズと、2N×2N、2N×N、N×2N、N×N、2N×nU、nL×2N、nR×2N、または同様の対称なPUサイズでのインター予測とをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30は、2N×nU、2N×nD、nL×2N、およびnR×2NというPUサイズに対する非対称区分もサポートし得る。いくつかの例では、予測処理ユニット100は、CUのビデオブロックの辺と直角に交わらない境界に沿ってCUのPUの間でCUのビデオブロックを区分するように、幾何学的な区分を実行し得る。
【００７０】
インター予測ユニット121は、CUの各PUに対してインター予測を実行し得る。インター予測は、時間圧縮を実現し得る。PUに対してインター予測を実行するために、動き推定ユニット122は、PUのための動き情報を生成し得る。動き補償ユニット124は、PUベースの動き情報およびCUと関連付けられたピクチャ以外のピクチャ(たとえば、参照ピクチャ)の復号されたサンプルのための、予測されたビデオブロックを生成し得る。本開示では、動き補償ユニット124によって生成される予測されたビデオブロックは、インター予測されたビデオブロックと呼ばれることがある。
【００７１】
スライスは、Iスライス、Pスライス、またはBスライスであり得る。動き推定ユニット122および動き補償ユニット124は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUのために異なる動作を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、動き推定ユニット122および動き補償ユニット124は、PUに対してインター予測を実行しない。
【００７２】
PUがPスライス中にある場合、PUを含むピクチャは、「リスト0」と呼ばれる参照ピクチャのリストと関連付けられる。リスト0中の参照ピクチャの各々は、他のピクチャのインター予測に使用され得るサンプルを含む。動き推定ユニット122が、Pスライス中のPUに関して動き推定動作を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0中の参照ピクチャを探索し得る。PUの参照ブロックは、PUのビデオブロック中のサンプルに最も密接に対応するサンプルのセット、たとえば、サンプルのブロックであり得る。動き推定ユニット122は、参照ピクチャ中のサンプルのセットがどの程度密接にPUのビデオブロック中のサンプルに対応するかを決定するために、様々な尺度を使用し得る。たとえば、動き推定ユニット122は、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分尺度によって、参照ピクチャ中のサンプルのセットがどの程度密接にPUのビデオブロック中のサンプルに対応するかを決定し得る。
【００７３】
Pスライス中のPUの参照ブロックを識別した後、動き推定ユニット122は、参照ブロックを含むリスト0中の参照ピクチャを示す参照インデックスと、PUと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。様々な例において、動き推定ユニット122は、動きベクトルを変化する精度で生成し得る。たとえば、動き推定ユニット122は、1/4サンプル精度、1/8サンプル精度、または他の分数のサンプル精度で動きベクトルを生成し得る。分数のサンプル精度の場合、参照ブロック値は、参照ピクチャ中の整数位置のサンプル値から補間され得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動き情報によって識別された参照ブロックに基づいて、PUの予測されるビデオブロックを生成し得る。
【００７４】
PUがBスライス中にある場合、PUを含むピクチャは、「リスト0」および「リスト1」と呼ばれる参照ピクチャの2つのリストと関連付けられ得る。いくつかの例では、Bスライスを含むピクチャは、リスト0およびリスト1の組合せである、リストの組合せと関連付けられ得る。
【００７５】
さらに、PUがBスライス中にある場合、動き推定ユニット122は、PUのための単方向予測または双方向予測を実行し得る。動き推定ユニット122がPUのための単方向予測を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0またはリスト1の参照ピクチャを探索し得る。動き推定ユニット122は次いで、参照ブロックを含む、リスト0またはリスト1中の参照ピクチャを示す参照インデックスと、PUと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと、予測方向インジケータと、動きベクトルとを出力し得る。予測方向インジケータは、参照インデックスがリスト0中の参照ピクチャを示すのかまたはリスト1中の参照ピクチャを示すのかを示し得る。動き補償ユニット124は、PUの動き情報によって示された参照ブロックに基づいて、PUの予測されたビデオブロックを生成し得る。
【００７６】
動き推定ユニット122がPUのための双方向予測を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0中の参照ピクチャを探索することができ、また、PUのための別の参照ブロックについて、リスト1中の参照ピクチャを探索することができる。動き推定ユニット122は次いで、参照ブロックを含む、リスト0およびリスト1中の参照ピクチャを示す参照インデックスと、参照ブロックとPUとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット122は、PUの動き情報として、PUの参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動き情報によって示された参照ブロックに基づいて、PUの予測されるビデオブロックを生成し得る。
【００７７】
いくつかの事例では、動き推定ユニット122は、PUのための動き情報の完全なセットをエントロピー符号化ユニット116に出力しない。そうではなく、動き推定ユニット122は、別のPUの動き情報を参照して、PUの動き情報をシグナリングし得る。たとえば、動き推定ユニット122は、PUの動き情報が、隣接PUの動き情報と十分に類似していると決定し得る。この例では、動き推定ユニット122は、PUと関連付けられたシンタックス構造において、PUが隣接PUと同じ動き情報を有することをビデオデコーダ30に示す値を示し得る。別の例では、動き推定ユニット122は、PUと関連付けられたシンタックス構造において、隣接PUと動きベクトル差分(MVD)とを識別し得る。動きベクトル差分は、PUの動きベクトルと、示される隣接PUの動きベクトルとの差分を示す。ビデオデコーダ30は、示される隣接PUの動きベクトルと、動きベクトルの差分とを使用して、PUの動きベクトルを決定し得る。第2のPUの動き情報をシグナリングするときに第1のPUの動き情報を参照することによって、ビデオエンコーダ20は、より少数のビットを使用して、第2のPUの動き情報をシグナリングすることが可能であり得る。
【００７８】
CUに対して符号化動作を実行することの一部として、イントラ予測ユニット126は、CUのPUに対してイントラ予測を実行し得る。イントラ予測は、空間圧縮を実現し得る。イントラ予測ユニット126がPUに対してイントラ予測を実行するとき、イントラ予測ユニット126は、同じピクチャ中の他のPUの復号されたサンプルに基づいて、PUのための予測データを生成し得る。PUのための予測データは、予測されるビデオブロックと様々なシンタックス要素とを含み得る。イントラ予測ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実行し得る。
【００７９】
PUに対してイントラ予測を実行するために、イントラ予測ユニット126は、PUのための予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測ユニット126がイントラ予測モードを使用してPUのための予測データのセットを生成するとき、イントラ予測ユニット126は、イントラ予測モードと関連付けられる方向および/または勾配で、隣接PUのビデオブロックからPUのビデオブロックにわたってサンプルを延ばし得る。PU、CU、およびツリーブロックについて左から右、上から下の符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左にあり得る。イントラ予測ユニット126は、PUのサイズに応じて、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。
【００８０】
予測処理ユニット100は、PUについて動き補償ユニット124によって生成された予測データ、またはPUについてイントラ予測ユニット126によって生成された予測データの中から、PUのための予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみの尺度に基づいて、PUのための予測データを選択する。
【００８１】
予測処理ユニット100が、イントラ予測ユニット126によって生成された予測データを選択する場合、予測処理ユニット100は、PUの予測データを生成するために使用されたイントラ予測モード、たとえば、選択されたイントラ予測モードをシグナリングし得る。予測処理ユニット100は、選択されたイントラ予測モードを様々な方法でシグナリングし得る。たとえば、選択されたイントラ予測モードは、隣接PUのイントラ予測モードと同じである可能性があり得る。言い換えれば、隣接PUのイントラ予測モードは、現在のPUに対して最も可能性のあるモードであり得る。したがって、予測処理ユニット100は、選択されたイントラ予測モードが隣接PUのイントラ予測モードと同じであることを示すための、シンタックス要素を生成し得る。
【００８２】
上で説明されたように、ビデオエンコーダ20は、レイヤ間予測ユニット128を含み得る。レイヤ間予測ユニット128は、SHVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して、現在のブロック(たとえば、EL中の現在のブロック)を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれることがある。レイヤ間予測ユニット128は、レイヤ間の冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソースの要件を下げる。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測を含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤの中で併置されているブロックの再構築を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。
【００８３】
予測処理ユニット100がCUのPUのための予測データを選択した後、残差生成ユニット102は、CUのビデオブロックからCUのPUの予測されたビデオブロックを差し引くこと(たとえば、マイナス符号によって示される)によって、CUの残差データを生成し得る。CUの残差データは、CUのビデオブロック中のサンプルの異なるサンプル成分に対応する、2D残差ビデオブロックを含み得る。たとえば、残差データは、CUのPUの予測されるビデオブロック中のサンプルのルミナンス成分と、CUの元のビデオブロック中のサンプルのルミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。加えて、CUの残差データは、CUのPUの予測されるビデオブロック中のサンプルのクロミナンス成分と、CUの元のビデオブロック中のサンプルのクロミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。
【００８４】
予測処理ユニット100は、4分木区分を実行して、CUの残差ビデオブロックをサブブロックに区分し得る。分割されていない各残差ビデオブロックは、CUの異なるTUと関連付けられ得る。CUのTUと関連付けられる残差ビデオブロックのサイズおよび位置は、CUのPUと関連付けられたビデオブロックのサイズおよび位置に基づいてよく、または基づかなくてよい。「残差4分木」(RQT)と呼ばれる4分木構造は、残差ビデオブロックの各々と関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
【００８５】
変換処理ユニット104は、TUと関連付けられた残差ビデオブロックに1つまたは複数の変換を適用することによって、CUの各TUのための1つまたは複数の変換係数ブロックを生成し得る。変換係数ブロックの各々は、変換係数の2D行列であり得る。変換処理ユニット104は、TUと関連付けられた残差ビデオブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を、TUと関連付けられた残差ビデオブロックに適用し得る。
【００８６】
変換処理ユニット104が、TUと関連付けられた変換係数ブロックを生成した後、量子化ユニット106は、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット106は、CUと関連付けられたQP値に基づいて、CUのTUと関連付けられた変換係数ブロックを量子化し得る。
【００８７】
ビデオエンコーダ20は、様々な方法でQP値をCUと関連付け得る。たとえば、ビデオエンコーダ20は、CUと関連付けられたツリーブロックに対してレートひずみ分析を実行し得る。レートひずみ分析では、ビデオエンコーダ20は、ツリーブロックに対して符号化動作を複数回実行することによって、ツリーブロックの複数のコーディングされた表現を生成し得る。ビデオエンコーダ20がツリーブロックの異なる符号化された表現を生成するとき、ビデオエンコーダ20は、異なるQP値をCUと関連付け得る。ビデオエンコーダ20は、最小のビットレートおよびひずみの尺度を有するツリーブロックのコーディングされた表現において所与のQP値がCUと関連付けられるとき、所与のQP値がCUと関連付けられることをシグナリングし得る。
【００８８】
逆量子化ユニット108および逆変換ユニット110は、変換係数ブロックから残差ビデオブロックを再構築するために、それぞれ、逆量子化と逆変換とを変換係数ブロックに適用し得る。再構築ユニット112は、TUと関連付けられる再構築されたビデオブロックを生成するために、再構築された残差ビデオブロックを、予測処理ユニット100によって生成された1つまたは複数の予測されたビデオブロックからの対応するサンプルに追加し得る。このようにCUの各TUのためのビデオブロックを再構築することによって、ビデオエンコーダ20は、CUのビデオブロックを再構築し得る。
【００８９】
再構築ユニット112がCUのビデオブロックを再構築した後、フィルタユニット113は、CUと関連付けられたビデオブロックにおけるブロッキングアーティファクトを低減するために、デブロッキング動作を実行し得る。1つまたは複数のデブロッキング動作を実行した後、フィルタユニット113は、CUの再構築されたビデオブロックを復号ピクチャバッファ114に記憶し得る。動き推定ユニット122および動き補償ユニット124は、再構築されたビデオブロックを含む参照ピクチャを使用して、後続のピクチャのPUに対してインター予測を実行し得る。加えて、イントラ予測ユニット126は、復号ピクチャバッファ114の中の再構築されたビデオブロックを使用して、CUと同じピクチャ中の他のPUに対してイントラ予測を実行し得る。
【００９０】
エントロピー符号化ユニット116は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット116は、量子化ユニット106から変換係数ブロックを受け取ることができ、予測処理ユニット100からシンタックス要素を受け取ることができる。エントロピー符号化ユニット116がデータを受信するとき、エントロピー符号化ユニット116は、1つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化されたデータを生成し得る。たとえば、ビデオエンコーダ20は、CALVC動作、CABAC動作、変数間(V2V)レングスコーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。エントロピー符号化ユニット116は、エントロピー符号化されたデータを含むビットストリームを出力し得る。
【００９１】
データに対してエントロピー符号化動作を実行することの一部として、エントロピー符号化ユニット116は、コンテキストモデルを選択し得る。エントロピー符号化ユニット116がCABAC動作を実行している場合、コンテキストモデルは、特定の値を有する特定のビンの確率の推定値を示し得る。CABACの状況では、「ビン」という用語は、シンタックス要素の2値化されたバージョンのビットを指すために使用される。
【００９２】
《ビデオデコーダ》
図3は、本開示で説明される態様による技法を実装し得るビデオデコーダ30の例を示すブロック図である。ビデオデコーダ30は、HEVCの場合のように、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオデコーダ30は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオデコーダ30の様々なコンポーネント間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示されず)が、本開示で説明される技法のいずれかまたはすべてを実行するように構成され得る。
【００９３】
説明の目的で、本開示は、HEVCコーディングの状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図3に示される例は、シングルレイヤコーデックのためのものである。しかしながら、いくつかの実施形態では、ビデオデコーダ30の一部またはすべてが、マルチレイヤコーデックの処理のために複製され得る。
【００９４】
図3の例では、ビデオデコーダ30は複数の機能コンポーネントを含む。ビデオデコーダ30の機能コンポーネントは、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換ユニット156と、再構築ユニット158と、フィルタユニット159と、復号ピクチャバッファ160とを含む。予測処理ユニット152は、動き補償ユニット162と、イントラ予測ユニット164と、レイヤ間予測ユニット166とを含む。いくつかの例では、ビデオデコーダ30は、図2のビデオエンコーダ20に関して説明された符号化経路とは全般に逆の復号経路を実行し得る。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【００９５】
ビデオデコーダ30は、符号化されたビデオデータを含むビットストリームを受信し得る。ビットストリームは、複数のシンタックス要素を含み得る。ビデオデコーダ30がビットストリームを受信するとき、エントロピー復号ユニット150は、ビットストリームに対して解析動作を実行し得る。ビットストリームに対して解析動作を実行した結果として、エントロピー復号ユニット150は、ビットストリームからシンタックス要素を抽出し得る。解析動作を実行することの一部として、エントロピー復号ユニット150は、ビットストリーム中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換ユニット156、再構築ユニット158、およびフィルタユニット159は、ビットストリームから抽出されたシンタックス要素に基づいて復号されたビデオデータを生成する、再構築動作を実行し得る。
【００９６】
上で論じられたように、ビットストリームは、一連のNALユニットを含み得る。ビットストリームのNALユニットは、ビデオパラメータセットNALユニット、シーケンスパラメータセットNALユニット、ピクチャパラメータセットNALユニット、SEI NALユニットなどを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号ユニット150は、シーケンスパラメータセットNALユニットからのシーケンスパラメータセット、ピクチャパラメータセットNALユニットからのピクチャパラメータセット、SEI NALユニットからのSEIデータなどを抽出しエントロピー復号する、解析動作を実行し得る。
【００９７】
さらに、ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからコーディングされたスライスを抽出しエントロピー復号する、解析動作を実行し得る。コーディングされたスライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたピクチャパラメータセットを識別するシンタックス要素を含み得る。エントロピー復号ユニット150は、コーディングされたスライスヘッダ中のシンタックス要素に対してCABAC復号動作のようなエントロピー復号演算を実行して、スライスヘッダを復元し得る。
【００９８】
コーディングされたスライスNALユニットからスライスデータを抽出することの一部として、エントロピー復号ユニット150は、スライスデータ中のコーディングされたCUからシンタックス要素を抽出する解析動作を実行し得る。抽出されたシンタックス要素は、変換係数ブロックと関連付けられるシンタックス要素を含み得る。エントロピー復号ユニット150は次いで、シンタックス要素のいくつかに対してCABAC復号動作を実行し得る。
【００９９】
エントロピー復号ユニット150が区分されていないCUに対して解析動作を実行した後、ビデオデコーダ30は、区分されていないCUに対して再構築動作を実行し得る。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30はCUの各TUに対して再構築動作を実行し得る。CUの各TUについて再構築動作を実行することによって、ビデオデコーダ30は、CUと関連付けられた残差ビデオブロックを再構築し得る。
【０１００】
TUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた変換係数ブロックを逆量子化(inverse quantize)、たとえば、逆量子化(de-quantize)し得る。逆量子化ユニット154は、HEVCのために提案された、またはH.264復号規格によって定義された逆量子化処理と同様の方式で、変換係数ブロックを逆量子化し得る。逆量子化ユニット154は、変換係数ブロックのCUのためにビデオエンコーダ20によって計算される量子化パラメータQPを使用して、量子化の程度を決定し、同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定し得る。
【０１０１】
逆量子化ユニット154が変換係数ブロックを逆量子化した後、逆変換ユニット156は、変換係数ブロックと関連付けられたTUのための残差ビデオブロックを生成し得る。逆変換ユニット156は、変換係数ブロックに逆変換を適用して、TUのための残差ビデオブロックを生成し得る。たとえば、逆変換ユニット156は、変換係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を適用し得る。いくつかの例では、逆変換ユニット156は、ビデオエンコーダ20からのシグナリングに基づいて、変換係数ブロックに適用すべき逆変換を決定し得る。そのような例では、逆変換ユニット156は、変換係数ブロックと関連付けられたツリーブロックの4分木のルートノードにおけるシグナリングされた変換に基づいて、逆変換を決定し得る。他の例では、逆変換ユニット156は、ブロックサイズ、コーディングモードなどのような、1つまたは複数のコーディング特性から逆変換を推測し得る。いくつかの例では、逆変換ユニット156はカスケード逆変換を適用し得る。
【０１０２】
いくつかの例では、動き補償ユニット162は、補間フィルタに基づく補間を実行することによって、PUの予測されるビデオブロックを改良し得る。サブサンプル精度を有する動き補償のために使用されるべき補間フィルタのための識別子は、シンタックス要素に含まれ得る。動き補償ユニット162は、PUの予測されたビデオブロックの生成の間にビデオエンコーダ20によって使用されたのと同じ補間フィルタを使用して、参照ブロックのサブ整数サンプルのための補間された値を計算し得る。動き補償ユニット162は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測されたビデオブロックを生成し得る。
【０１０３】
PUが、イントラ予測を使用して符号化される場合、イントラ予測ユニット164は、イントラ予測を実行して、PUのための予測されたビデオブロックを生成し得る。たとえば、イントラ予測ユニット164は、ビットストリーム中のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。ビットストリームは、PUのイントラ予測モードを決定するためにイントラ予測ユニット164が使用し得るシンタックス要素を含み得る。
【０１０４】
いくつかの事例では、シンタックス要素は、イントラ予測ユニット164が現在のPUのイントラ予測モードを決定するために別のPUのイントラ予測モードを使用すべきであることを、示し得る。たとえば、現在のPUのイントラ予測モードが隣接PUのイントラ予測モードと同じであることが起こり得る。言い換えれば、隣接PUのイントラ予測モードは、現在のPUに対して最も可能性のあるモードであり得る。したがって、この例では、ビットストリームは、PUのイントラ予測モードが隣接PUのイントラ予測モードと同じであることを示す、小さいシンタックス要素を含み得る。イントラ予測ユニット164は次いで、イントラ予測モードを使用して、空間的に隣接するPUのビデオブロックに基づいてPUのための予測データ(たとえば、予測されるサンプル)を生成し得る。
【０１０５】
上で説明されたように、ビデオデコーダ30もレイヤ間予測ユニット166を含み得る。レイヤ間予測ユニット166は、SHVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して、現在のブロック(たとえば、エンハンスメントレイヤ中の現在のブロック)を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれることがある。レイヤ間予測ユニット166は、レイヤ間の冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソースの要件を下げる。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測を含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤの中で併置されているブロックの再構築を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。レイヤ間予測方式の各々が、以下でより詳細に説明される。
【０１０６】
再構築ユニット158は、適用可能なとき、CUのTUと関連付けられた残差ビデオブロックとCUのPUの予測されたビデオブロックとを使用して、たとえば、イントラ予測データまたはインター予測データのいずれかを使用して、CUのビデオブロックを再構築し得る。したがって、ビデオデコーダ30は、ビットストリーム中のシンタックス要素に基づいて、予測されたビデオブロックと残差ビデオブロックとを生成することができ、予測されたビデオブロックと残差ビデオブロックとに基づいて、ビデオブロックを生成することができる。
【０１０７】
再構築ユニット158がCUのビデオブロックを再構築した後、フィルタユニット159は、デブロッキング動作を実行して、CUと関連付けられるブロッキングアーティファクトを低減し得る。フィルタユニット159が、デブロッキング動作を実行してCUと関連付けられたブロッキングアーティファクトを低減した後、ビデオデコーダ30はCUのビデオブロックを復号ピクチャバッファ160に記憶し得る。復号ピクチャバッファ160は、後続の動き補償、イントラ予測、および図1Aまたは図1Bのディスプレイデバイス32のようなディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ160中のビデオブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。
【０１０８】
《動き推定》
動き推定は、通常はビデオシーケンス中の時間的に前のフレームから、ある2D画像から別の2D画像への変換を記述する動きベクトルを決定する処理である。動きベクトルは、画像全体に関することがあり(グローバル動き推定と呼ばれる)、または、長方形のブロック、任意の形状の区画、またさらにはピクセルごとのように、画像の特定の部分に関することがある。例示的な実施形態では、動き推定および動きベクトルは、2つの画像のブロックに基づく(一般にブロックマッチングとも呼ばれる)。しかしながら、説明される技術は、画像内のあらゆる任意の形状に拡張され得る(すなわち、適用され得る)。動き補償は、決定された動きベクトルに基づいて2つの画像に対して実行され得る。動き補償は、動きベクトルを前の画像に適用して次の画像への変換を合成することによって、実行され得る。動き推定および動き補償の組合せは、MPEG-1、MPEG-2、MPEG-4、H.264/AVC、HEVC、さらには多くの他のビデオコーデックによって使用されるようなビデオ圧縮の重要な部分である。
【０１０９】
動きベクトルを計算する際に使用されるブロックベースの動き推定は、ブロックマッチングを使用することによって行われてよく、これによりマッチング誤差の尺度が最小になる。現在の画像中の第1の位置(x, y)にあるブロック(現在のブロックとも呼ばれる)Itと、参照画像中の位置(x+u, y+u)にある候補ブロックIt-1との間のマッチング誤差は、現在のブロックと候補ブロックとの間の絶対値差分和(SAD)として計算され得る。
【０１１０】
いくつかの実装形態では、現在のブロックおよび候補ブロックは、B×Bピクセルのブロックサイズを有する。B×Bのブロックサイズでは、SADは次のように計算され得る。
【０１１１】
【数１】
2017513329.tif 000003
【０１１２】
ここで、Bはブロックサイズであり、Itは現在のブロックであり、It-1は候補ブロックである。
【０１１３】
総コストは、動きベクトルをビットストリームへとコーディングするために必要とされるコストを考慮して計算され得る。たとえば、候補ブロックを現在のブロックにマッチングする総コストは、動きベクトルをコーディングするために必要とされるビットコストをSADに加算することによって、次のように計算され得る。
【０１１４】
【数２】
2017513329.tif 000004
【０１１５】
上の総コストの計算では、λは(ブロックの量子化パラメータに基づく)定数値であってよく、mvbitsは符号化されたビットストリームにおいて動きベクトルを表すために必要とされるビットの数であってよい。
【０１１６】
動き推定は、通常のビデオエンコーダにおいて最も高コストな道具の1つであり、ビデオエンコーダのリソースの70〜80%以上を消費し得る。したがって、動き推定の加速は、ビデオエンコーダの全体の効率にかなりの影響を及ぼし得る。動き推定を加速するための技法は一般に、a)探索空間を減らすこと、b)各探索位置に対するマッチング誤差の計算コストを減らすこと、およびc)これらの2つの技法の組合せという、3つのカテゴリーに分類され得る。探索空間を減らす際に、得られるマッチング誤差の最小値、たとえば、減らされた探索空間中の候補ブロックの間の最小のSADは、探索空間内の局所的な最小値でしかないことがある。各探索位置に対するマッチング誤差の計算コストを減らす際に、使用される計算および比較のタイプが、候補ブロックの全体的な最小値が特定され得るかどうかを決定し得る。
【０１１７】
完全探索、すなわちすべての可能性のある候補の力づくの探索と比較すると、上で言及された技法の間にはトレードオフが存在する。動き推定加速技法を実施することにより得られる具体的なトレードオフは、ビデオデータの特性、ビデオデータ内での動きの分布、および技法がどのように設計されるかに依存する。動き推定加速技法を設計する際に考慮すべき1つの要因は、技法を実行することの複雑さと、技法を実行することにより得られるコーデックの効率との間のトレードオフである。
【０１１８】
図4は、加速された動き推定のための従来の方法を示すフローチャートである。図4の方法400は、動き推定のためのHM範囲の拡張によって実施され得る。さらに、図4の方法400は、動き推定が自然ビデオデータに対して実行されるという仮定に基づいて開発されている。したがって、方法400は、ビデオデータがスムーズであり、最小の誤差を有する候補ブロックに近付くにつれて候補ブロックと関連付けられる誤差が減少するという仮定に基づいて開発されている。図4に示されるステップは、ビデオエンコーダ(たとえば、ビデオエンコーダ20)または任意の他のコンポーネントによって実行され得る。便宜的に、方法400は、ビデオエンコーダ20、ビデオデコーダ30、または別のコンポーネントであり得る、ビデオコーダ(単にコーダとも呼ばれる)によって実行されるものとして説明される。
【０１１９】
方法400は判断ブロック405において開始し、ここで、コーダは動きベクトル推定をスキップするかどうかを決定する。ステップ405においてコーダが動き推定をスキップすると決定すると、方法400は、コーダが動き推定をスキップするステップ435に続く。方法はブロック450において終了する。判断ブロック405においてコーダが動き推定を実行すると決定すると、方法は判断ブロック410へと続く。判断ブロック410において、コーダは、統合動きベクトル推定を実行するかどうかを決定する。コーダが統合ベクトル推定を実行すると決定するとき、方法はブロック445に進む。ブロック445において、コーダは、統合動きベクトル推定を実行する。ブロック410においてコーダが統合動きベクトル推定を実行しないと決定するとき、方法400はブロック415に続く。
【０１２０】
ブロック415において、コーダは予測子の周囲で初期探索を実行する。予測子は、現在のブロックに対して最小のマッチングコストまたは最小の総マッチングコストを有するマッチであると予測される候補ブロックである。初期探索が、予測子を中心として指数関数的に広がる菱型によって覆われるサンプルに対して、予測子の周囲で実行される。2つ以上の予測子があるとき、初期探索は各予測子に対して実行され得る。コーダは次いで、ベストマッチ、すなわち現在のブロックに対して最小のマッチングコストまたは最小の総マッチングコストを有する候補ブロックから現在のブロックまでの距離が、予測子から現在のブロックまでの距離よりも大きいかどうかを決定する。判断ブロック418において、ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が、閾値と比較される。ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が閾値より大きいとき、方法400はブロック425に続く。ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が閾値以下であるとき、方法400はブロック420に続く。
【０１２１】
ブロック420において、コーダは精緻化探索を実行する。精緻化探索の後で、方法はブロック440に進み、そこでコーダは高度な動きベクトル予測(AMVP)を実行する。ブロック425において、コーダは探索領域全体にわたってサブサンプリングされた探索を実行する。ブロック430において、コーダは精緻化探索を実行する。精緻化探索の後で、方法はブロック440において終了し、そこでコーダはAMVPを実行する。方法はブロック450において終了する。
【０１２２】
いくつかの高速な動き推定方法は、カメラにより撮られた自然なシーケンスのために設計されている。自然ビデオデータは、高周波を減衰するビデオカメラに含まれる光学系が原因で非自然ビデオデータよりもスムーズであることがあり、また、光学系のレンズひずみによりもたらされるノイズが原因でよりノイズが多いことがある。自然ビデオデータのために設計された高速な動き推定方法は、非自然コンテンツまたは非自然ビデオデータ(たとえば、スクリーンコンテンツ、合成画像など)に対しては良好に機能しないことがある。本明細書で使用される非自然ビデオデータとは一般に、光学系を介して撮られたのではなく、たとえばコンピュータにより生成されたビデオデータを指す。非自然ビデオデータの例は、限定はされないが、モニタ(たとえば、グラフィックユーザインターフェース(GUI))を介してコンピュータとインターフェースするために生成されるスクリーンコンテンツ、ビデオデータ、または他のコンピュータにより生成された画像を含む。非自然ビデオデータは、コンピュータのデスクトップ画面をキャプチャすることによって作成され得るので、エッジが鋭いことがあり、ノイズがないことがあり、スペクトル活動および空間周波数(たとえば、テキストおよびグラフィックス)が異なることがある。高速な動き推定のための方法は、非自然ビデオデータの特性を考慮すると、効率を向上させ、かつ計算的な複雑さを低くし得る。さらに、完全探索は計算的に高コストであり、かついくつかの用途では実現可能ではないことがある。
【０１２３】
図5は、本開示で説明される態様による加速された動き推定のための方法を示すフローチャートである。図5の方法500は、非自然ビデオの高速な動き推定の性能が向上している可能性がある。具体的には、動き推定方法500は、非自然ビデオデータの空間的および時間的な特性を捉えるのにより適している可能性がある。非自然ビデオデータは、自然ビデオデータのために設計された高速な動き推定アルゴリズムの通常の仮定とは反対に、単調ではない誤差面および高空間周波数の特性を示し得る。
【０１２４】
図5に示されるステップは、ビデオエンコーダ(たとえば、ビデオエンコーダ20)または任意の他のコンポーネントによって実行され得る。便宜的に、方法500は、ビデオエンコーダ20、ビデオデコーダ30、または別のコンポーネントであり得る、ビデオコーダ(単にコーダとも呼ばれる)によって実行されるものとして説明される。
【０１２５】
方法500は判断ブロック505において開始し、ここで、コーダは動きベクトル推定をスキップするかどうかの修正された決定を実行する。ブロック505の動きベクトル推定をスキップするかどうかの修正された決定は、図4の従来の方法400のブロック405に対して修正される。判断ブロック505においてコーダが動き推定をスキップすると決定すると、方法500は、コーダが動き推定をスキップするブロック530に進む。ブロック545において、方法500は終了する。動きベクトル推定をスキップするかどうかの修正された決定が、以下でより詳細に説明される。
【０１２６】
判断ブロック505においてコーダが動き推定を実行すると決定すると、方法は判断ブロック510へと続く。判断ブロック510において、コーダは、統合動きベクトル推定を実行するかどうかを決定する。コーダが統合ベクトル推定を実行すると決定するとき、方法500はブロック540に進む。ブロック540において、コーダは、統合動きベクトル推定を実行する。方法は次いで、ブロック545において終了する。判断ブロック510においてコーダが統合動きベクトル推定を実行しないと決定すると、方法500はブロック515に続く。
【０１２７】
ブロック515において、コーダは誤差近似を伴う修正された初期探索を実行する。ブロック515の誤差近似を伴う修正された初期探索は、図4の方法400のブロック415に対して修正される。ブロック515において、修正された初期探索は、予測子に基づいて実行されてよく、ベストマッチとしてある候補ブロックを特定し、すなわちその候補ブロックは現在のブロックに対する最小のマッチングコストまたは最小の総マッチングコストを有する。コーダは次いで、ベストマッチから現在のブロックまでの距離が、予測子から現在のブロックまでの距離より大きいかどうかを決定する。修正された初期探索のより詳細な説明が、以下でより詳細に行われる。判断ブロック518において、ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が、閾値と比較される。ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が閾値より大きいとき、方法500はブロック525に続く。ベストマッチから現在のブロックまでの距離と、予測子から現在のブロックまでの距離との差分が閾値以下であるとき、方法500はブロック520に続く。
【０１２８】
ブロック520において、コーダは精緻化探索を実行する。精緻化探索の後で、方法500はブロック535に進み、そこでコーダはAMVPを実行する。ブロック525において、コーダは誤差近似を伴う完全探索を実行する。誤差近似を伴う完全探索のより詳細な説明が、以下でより詳細に行われる。完全探索の後で、方法はブロック535において終了し、そこでコーダはAMVPを実行する。ブロック535の後で、方法500はブロック545において終了する。
【０１２９】
《各段階において早期退出を伴う多段階の近似されたコスト計算》
前に論じられたように、非自然ビデオデータは、自然ビデオデータと比較して、エッジが鋭く空間周波数が高い。したがって、ブロックマッチングのためのコスト計算における誤差の大部分は、数サンプルの周囲に集中する可能性が高い。したがって、候補ブロックは、その候補ブロックと現在のブロックとの間のマッチの部分的なサンプルから計算された近似された誤差に基づいて、現在のブロックのためのベストマッチとして拒絶され得る。
【０１３０】
図6は、本開示の態様による、複数の段階において現在のブロックにマッチングされる候補ブロックの部分的なサンプルを示すブロック図である。多段階の近似されたコスト計算の異なる段階における候補ブロック610A、610B、610C、および610Dの部分的なサンプルが、図6においてハッチングにより示されている。候補ブロック610Aは、近似されたコスト計算の第1の段階において採用された候補ブロック610Aの部分的なサンプルを示す。図6の実施形態では、候補ブロック610Aの部分的なサンプルは、候補ブロック610Aの2本の線として示されるが、他の実施形態では、部分的なサンプルは、単一の線であってよく、複数の線であってよく、または候補ブロック610Aの1本の線よりも粒度が高くてよい。同様に、候補ブロック610B、610C、および610Dは、近似されたコスト計算の第2、第3、および第4の段階において採用される候補ブロック610Aの部分的なサンプルを示す。図6の候補ブロック610Aから610Dにおいて8本の線が示されているが、本明細書で説明される近似されたコスト計算方法は、様々なサイズのブロックをマッチングするように適合され得る。さらに、図6に関連して開示された方法は、近似されたコスト計算として本明細書において言及されるが、候補ブロック610Aから610Dを現在のブロックにマッチングするための誤差の近似と、ビットストリーム中の候補ブロックの動きベクトルをシグナリングするための関連するコストの両方を含む、総コストが計算され得る。
【０１３１】
いくつかの実施形態では、候補ブロック605を現在のブロックにマッチングする総コストは、候補ブロック605の部分的なサンプルに基づいて近似され、この近似されたコストは、最良の候補を決めるために使用される。ブロックの総コストを近似するために使用される部分的なサンプルの数は、適用例および実装形態での余裕に従って変化し得る。一実装形態では、図6においてクロスハッチングにより示される、候補ブロック605の2本の線のための部分的なサンプルが使用される。候補ブロック605を現在のブロックにマッチングするコストの推定値が、候補ブロック605を現在のブロックにマッチングするための総コストを生成するために部分的なサンプルへ加算される。
【０１３２】
他の実装形態では、総コストは複数の段階において計算され、各段階が使用される部分的なサンプルの数を精緻化する。たとえば、第1の段階は、候補ブロック605においてハッチングによって示されるような2本の線のサンプルを含み得る。第2の段階では、別の2本の線のためのサンプルが、候補ブロック610に示されるような第1の段階において使用されるサンプルに加算される。さらなる精緻化が、候補ブロック615および620によって示されるような第3の段階および第4の段階において実行され得る。各段階において計算されるような中間コストが、次の段階の計算を実行することによって候補ブロック605から620を現在のブロックにマッチングするための近似されたコストのさらなる精緻化を実行するかどうかを決めるために使用されてよく、これにより、早期退出機構を実現する。いくつかの実装形態では、近似されたコスト計算の任意の段階における近似されたコストが、前に特定された最良のコストの総コストよりも大きいとき、候補ブロック605から620は拒絶される。
【０１３３】
たとえば、第1の近似された総コストが16個のサンプルにより計算されることがあり、第1の計算されたコストが前に特定された最良のコストよりも小さい場合、次の段階において32個のサンプルに基づいてコストが計算され得る。近似されたコストを計算する際に使用される部分的なサンプルの数が増えるにつれて、近似の精度も同様に上がる。
【０１３４】
さらなる実施形態では、総コストを得るために、動きベクトルビットコスト(たとえば、λ*mvbits)が近似されたコストに加算される。これは、近似された総コストが、部分的なサンプルに基づいてコストを計算し候補ブロックの総コストを表さない従来の方法とは対照的に、候補ブロックの総コストを表すので可能になる。
【０１３５】
B×Bのブロックサイズでは、ブロックのための「l」個のピクセルに基づく近似された総コストは、次の式によって表され得る。
【０１３６】
【数３】
2017513329.tif 000005
【０１３７】
ここで、i(m)、j(m)|m = 0, 1,…B2-1は、候補ブロック中のすべてのピクセルのインデックスセットである。
【０１３８】
以下の擬似コードは、早期退出を伴う部分的な誤差近似の例示的な実装形態を示す。
【数４】
2017513329.tif 000006
【０１３９】
《修正された初期探索》
前に論じられたように、非自然ビデオデータは非単調な誤差パターンを含み得る。したがって、従来の動き推定技法において一般に使用されるような指数関数的に広がる菱型は、最良の候補の1つを逃すことがあるか、最良の候補を最良の予測子の近くにあるものとして誤って推測することがあるかのいずれであるので、効率的ではないことがある。少なくとも1つの実施形態によれば、より小さな探索エリアでは一様な移動菱型パターンが利用される。
【０１４０】
図7は、本開示の態様による修正された初期探索を示す図である。図7に示されるように、例示的な完全探索空間705は、64×64のサイズの探索空間であり得る。修正された初期探索において、探索は、約16×16のサイズを有する初期探索空間710内で実行される。菱型715は、初期空間710を水平方向および/または垂直方向に横断する固定されたサイズを有し得る。これにより、非自然ビデオデータの局所的な最小値をより良好に捉えることができる。図7に関して説明された探索空間のサイズは例にすぎず、説明された技術はそれに限定されない。
【０１４１】
いくつかの実装形態では、固定された菱型715が横断する初期探索空間710は、完全探索空間705よりも小さく、またはその一部分である。図7の実施形態では、固定された菱型715は、4という固定されたステップサイズを伴って初期探索空間710を横断する。したがって、初期探索空間710の一部分だけが、修正された初期探索に含まれる。いくつかの実施形態では、初期探索からの最良の候補と最良の予測子との距離が、図5に関して上で論じられたように精緻化探索または誤差近似を伴う完全探索を実行するかどうかを決定する際に使用される。
【０１４２】
《修正された早期スキップ検出》
いくつかの実施形態では、HM範囲の拡張の場合のように、スキップ検出は、統合動きベクトルの残差信号がいつ0になるか、または、水平方向および垂直方向の動きベクトルの絶対値の和がいつ0になるかに基づく。しかしながら、水平方向および垂直方向の動きベクトルの絶対値の合計がいつ0になるかに基づいて動きベクトル推定をスキップすると決めることは、非自然ビデオデータに対しては強力すぎることがあり、自然ビデオデータにより近い非自然ビデオデータに含まれる動いている画像に対しては効率的ではないことがある。
【０１４３】
したがって、いくつかの実装形態では、早期スキップ検出、たとえば動きベクトル推定をスキップするかどうかの決定が、統合動きベクトルの残差信号だけに基づいて実行される。統合動きベクトルの残差信号が0であるとき、候補ブロックは高い周波数を有しないことがあり、したがってスキップされるのに適している可能性が非常に高い。
【０１４４】
非自然ビデオデータの動き推定のための例示的なフローチャート
図8を参照すると、非自然ビデオデータの動き推定のための例示的な手順が説明される。図8は、本開示の態様による動き推定のための方法800を示すフローチャートである。図8に示されるステップは、ビデオエンコーダ(たとえば、ビデオエンコーダ20)または任意の他のコンポーネントによって実行され得る。便宜的に、方法800は、ビデオエンコーダ20、または別のコンポーネントであり得る、ビデオコーダ(単にコーダとも呼ばれる)によって実行されるものとして説明される。
【０１４５】
方法800は、ブロック801において開始する。ブロック805において、コーダは、ビデオデータの第2のフレームの現在のブロックとマッチングするためのビデオデータの第1のフレームの候補ブロックを選択する。候補ブロックは、初期探索エリアの修正された初期探索に従って選択され得る。
【０１４６】
ブロック810において、コーダは、候補ブロックのサンプルの第1のサブセットを現在のブロックにマッチングするための第1の部分的なマッチングコストを計算する。第1の部分的なマッチングコストは、候補ブロックのサンプルのサブセットを現在のブロックにマッチングするためのマッチングコストであり得る。第1の部分的なマッチングコストは、候補ブロックの残りのサンプルを現在のブロックにマッチングするためのコストの推定値にも第1の部分的なマッチングコストを加算することによって総マッチングコストを計算するために使用され得る。
【０１４７】
ブロック815において、コーダは、第1の部分的なマッチングコストに少なくとも一部基づいて、現在のブロックに対して最小のマッチングコストを候補ブロックが有するかどうかを決定する。たとえば、コーダは、ベストマッチ候補ブロック、たとえば、現在のブロックに対して最小のマッチングコストを有する候補ブロックを保持し得る。いくつかの実装形態では、候補ブロックが、現在のブロックに対して、ベストマッチの候補ブロックよりも低い第1の部分的なマッチングコストまたは総マッチングコストを有するとき、コーダは、ベストマッチ候補ブロックをその候補ブロックへと更新する。方法はブロック820において終了する。
【０１４８】
方法800において、図8に示されるブロックの1つまたは複数は除去されてよく(たとえば、実行されなくてよく)、かつ/または、方法が実行される順序は切り替えられてよい。いくつかの実施形態では、追加のブロックが方法800に追加され得る。本開示の実施形態は、図8に示される例に限定されず、または例によって限定されず、他の変形が、本開示の趣旨から逸脱することなく実装され得る。
【０１４９】
《他の考慮事項》
本明細書で開示される情報および信号は、多種多様な技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【０１５０】
本明細書で開示された実施形態に関して説明された様々な例示的な論理ブロック、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、およびステップが、全般にそれらの機能に関して上で説明された。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課されるおよび設計上の制約に依存する。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じさせるものと解釈されるべきではない。
【０１５１】
本明細書で説明された技術は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスのような、様々なデバイスのいずれかにおいて実装され得る。デバイスまたはコンポーネントとして説明された任意の特徴が、集積論理デバイス内で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装された場合、本技法は、実行されると上で説明された方法の1つまたは複数を実行する命令を含むプログラムコードを含むコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などのような、メモリまたはデータ記憶媒体を含み得る。本技法は、追加または代替として、伝搬される信号または波のような、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１５２】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価の集積回路もしくはディスクリート論理回路を含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明される技法の実装に適した他の構造もしくは装置のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のソフトウェアもしくはハードウェア内で提供されてよく、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれてよい。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【０１５３】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々なコンポーネント、またはユニットは、開示された技法を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、様々なハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられ、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１５４】
上記は様々な異なる実施形態に関連して説明されてきたが、1つの実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わされ得る。しかしながら、それぞれの実施形態の間での特徴の組合せは、必ずしもそれに限定されない。本開示の様々な実施形態が説明されてきた。これらおよび他の実施形態は、以下の特許請求の範囲内に入る。
【符号の説明】
【０１５５】
10  ビデオコーディングシステム
11  デバイス
12  ソースデバイス
13  コントローラ/プロセッサデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
31  記憶デバイス
32  ディスプレイデバイス
100  予測処理ユニット
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換ユニット
112  再構築ユニット
113  フィルタユニット
114  復号ピクチャバッファ
116  エントロピー符号化ユニット
121  インター予測ユニット
122  動き推定ユニット
124  動き補償ユニット
126  イントラ予測ユニット
128  レイヤ間予測ユニット
150  エントロピー復号ユニット
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換ユニット
158  再構築ユニット
159  フィルタユニット
160  復号ピクチャバッファ
162  動き補償ユニット
164  イントラ予測ユニット
166  レイヤ間予測ユニット
400  方法
705  完全探索空間
710  初期探索空間
715  菱型
800  方法
【図１Ａ】
2017513329.tif 000007
【図１Ｂ】
2017513329.tif 000008
【図２】
2017513329.tif 000009
【図３】
2017513329.tif 000010
【図４】
2017513329.tif 000011
【図５】
2017513329.tif 000012
【図６】
2017513329.tif 000013
【図７】
2017513329.tif 000014
【図８】
2017513329.tif 000015
【手続補正書】
【提出日】平成28年9月21日(2016.9.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータの動き推定のための方法であって、
前記ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択するステップと、
前記第1のフレームの以前の候補ブロックを前記現在のブロックとマッチングするための以前の最小マッチングコストを取得するステップであって、各マッチングコストが前記ビデオデータの2つのブロック間のマッチング誤差を示す、ステップと、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するステップと、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算するステップと、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを近似するステップと、
前記候補ブロックの前記近似された総マッチングコストを前記以前の候補ブロックの前記以前の最小のマッチングコストと比較するステップと、
前記候補ブロックの前記近似された総マッチングコストと前記以前の候補ブロックの前記以前の最小のマッチングコストとの前記比較に基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有しないかどうかを決定するステップとを含む、方法。
【請求項２】
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なマッチングコストを計算するステップと、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化するステップと、
前記第1の部分的なマッチングコスト、前記第2の部分的なマッチングコスト、および前記精緻化された推定値を加算することを介して、前記近似された総マッチングコストを精緻化するステップと、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するステップとをさらに含む、請求項1に記載の方法。
【請求項３】
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの前記以前の候補ブロックを選択するステップと、
前記以前の候補ブロックを前記現在のブロックにマッチングするための前記以前の最小のマッチングコストを計算するステップと、
前記精緻化された総マッチングコストが前記以前の最小のマッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するステップとをさらに含む、請求項2に記載の方法。
【請求項４】
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算するステップをさらに含み、前記動きベクトルビットコストが、前記現在のブロックから前記候補ブロックまでの動きベクトルを表すために必要とされるビットの数を含み、前記近似された総マッチングコストを計算する前記ステップがさらに、前記第1および第2の部分的なマッチングコスト、前記推定値、ならびに前記動きベクトルビットコストを加算するステップを含む、請求項1に記載の方法。
【請求項５】
前記現在のブロックとマッチングするための前記第1のフレームの後続の候補ブロックを、
前記候補ブロックを囲む第1の菱型パターンから第1の後続の候補ブロックを選択することと、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから第2の後続の候補ブロックを選択することと
を介して選択するステップをさらに含む、請求項1に記載の方法。
【請求項６】
修正された初期探索を実行するステップをさらに含み、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項5に記載の方法。
【請求項７】
前記最小のマッチングコストを有する前記候補と前記現在のブロックとの間の第1の距離を決定するステップと、
予測子と前記現在のブロックとの間の第2の距離を決定するステップと、
前記第1の距離と前記第2の距離との間の差分に基づいて、精緻化探索または誤差近似を伴う完全探索を実行するかどうかを決定するステップとをさらに含む、請求項5に記載の方法。
【請求項８】
統合動きベクトルの残差だけに基づいて、動き推定をスキップするかどうかを決定するステップをさらに含む、請求項1に記載の方法。
【請求項９】
ビデオデータの動き推定のためのデバイスであって、
前記ビデオデータを記憶するように構成されるメモリと、
前記メモリと通信しているプロセッサとを備え、前記プロセッサが、
前記ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択し、
前記第1のフレームの以前の候補ブロックを前記現在のブロックとマッチングするための以前の最小マッチングコストを取得し、各マッチングコストが前記ビデオデータの2つのブロック間のマッチング誤差を示し、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算し、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算し、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを近似し、
前記候補ブロックの前記近似された総マッチングコストを前記以前の候補ブロックの前記以前の最小のマッチングコストと比較し、
前記候補ブロックの前記近似された総マッチングコストと前記以前の候補ブロックの前記以前の最小のマッチングコストとの前記比較に基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有しないかどうかを決定する
ように構成される、デバイス。
【請求項１０】
前記プロセッサがさらに、
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なマッチングコストを計算し、
前記候補ブロックの残りのサンプルをマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化し、
前記第1の部分的なマッチングコスト、前記第2の部分的なマッチングコスト、および前記精緻化された推定値を加算することを介して、前記近似された総マッチングコストを精緻化し、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するように構成される、請求項9に記載のデバイス。
【請求項１１】
前記プロセッサがさらに、
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの前記以前の候補ブロックを選択し、
前記以前の候補ブロックを前記現在のブロックにマッチングするための前記以前の最小のマッチングコストを計算し、
前記精緻化された総マッチングコストが前記以前の最小のマッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するように構成される、請求項10に記載のデバイス。
【請求項１２】
前記プロセッサがさらに、
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算し、前記動きベクトルビットコストが、前記現在のブロックから前記候補ブロックまでの動きベクトルを表すために必要とされるビットの数を含み、
前記第1および第2の部分的なマッチングコスト、前記推定値、ならびに前記動きベクトルビットコストを加算することを介して、前記近似された総マッチングコストを計算するように構成される、請求項9に記載のデバイス。
【請求項１３】
前記プロセッサがさらに、
前記候補ブロックを囲む第1の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第1の後続の候補ブロックを選択し、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第2の後続の候補ブロックを選択するように構成される、請求項9に記載のデバイス。
【請求項１４】
前記プロセッサがさらに、修正された初期探索を実行するように構成され、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項13に記載のデバイス。
【請求項１５】
ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択するための手段と、
前記第1のフレームの以前の候補ブロックを前記現在のブロックとマッチングするための以前の最小マッチングコストを取得するための手段であって、各マッチングコストが前記ビデオデータの2つのブロック間のマッチング誤差を示す、手段と、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算するための手段と、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算するための手段と、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを近似するための手段と、
前記候補ブロックの前記近似された総マッチングコストを前記以前の候補ブロックの前記以前の最小のマッチングコストと比較するための手段と、
前記候補ブロックの前記近似された総マッチングコストと前記以前の候補ブロックの前記以前の最小のマッチングコストとの前記比較に基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有しないかどうかを決定するための手段とを備える、装置。
【請求項１６】
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なマッチングコストを計算するための手段と、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化するための手段と、
前記第1の部分的なマッチングコスト、前記第2の部分的なマッチングコスト、および前記精緻化された推定値を加算することを介して、前記近似された総マッチングコストを精緻化するための手段と、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定するための手段とをさらに備える、請求項15に記載の装置。
【請求項１７】
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの前記以前の候補ブロックを選択するための手段と、
前記以前の候補ブロックを前記現在のブロックにマッチングするための前記以前の最小のマッチングコストを計算するための手段と、
前記精緻化された総マッチングコストが前記以前の最小のマッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定するための手段とをさらに備える、請求項16に記載の装置。
【請求項１８】
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算するための手段をさらに備え、前記動きベクトルビットコストが、前記現在のブロックから前記候補ブロックまでの動きベクトルを表すために必要とされるビットの数を含み、前記近似された総マッチングコストを計算するための前記手段がさらに、前記第1および第2の部分的なマッチングコスト、前記推定値、ならびに前記動きベクトルビットコストを加算するための手段を備える、請求項15に記載の装置。
【請求項１９】
前記現在のブロックとマッチングするための前記第1のフレームの後続の候補ブロックを選択するための手段をさらに備え、前記手段が、
前記候補ブロックを囲む第1の菱型パターンから第1の後続の候補ブロックを選択するための手段と、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから第2の後続の候補ブロックを選択するための手段とを備える、請求項15に記載の装置。
【請求項２０】
修正された初期探索を実行するための手段をさらに備え、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項19に記載の装置。
【請求項２１】
実行されると、デバイスのプロセッサに、
ビデオデータの第2のフレームの現在のブロックとマッチングするための前記ビデオデータの第1のフレームの候補ブロックを選択することと、
前記第1のフレームの以前の候補ブロックを前記現在のブロックとマッチングするための以前の最小マッチングコストを取得することであって、各マッチングコストが前記ビデオデータの2つのブロック間のマッチング誤差を示す、ことと、
前記候補ブロックのサンプルの第1のサブセットを前記現在のブロックにマッチングするための第1の部分的なマッチングコストを計算することと、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするためのマッチングコストの推定値を計算することと、
前記第1の部分的なマッチングコストおよび前記推定値を加算することを介して、前記候補ブロックを前記現在のブロックにマッチングするための総マッチングコストを近似することと、
前記候補ブロックの前記近似された総マッチングコストを前記以前の候補ブロックの前記以前の最小のマッチングコストと比較することと、
前記候補ブロックの前記近似された総マッチングコストと前記以前の候補ブロックの前記以前の最小のマッチングコストとの前記比較に基づいて、前記候補ブロックが前記現在のブロックに対して最小のマッチングコストを有しないかどうかを決定することと
を行わせる命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項２２】
実行されると、前記プロセッサに、
前記候補ブロックの前記サンプルの第2のサブセットを前記現在のブロックにマッチングするための第2の部分的なマッチングコストを計算させ、
前記候補ブロックの残りのサンプルを前記現在のブロックにマッチングするための精緻化された推定値を計算することを介して、前記推定値を精緻化させ、
前記第1の部分的なマッチングコスト、前記第2の部分的なマッチングコスト、および前記精緻化された推定値を加算することを介して、前記近似された総マッチングコストを精緻化させ、
前記精緻化された総マッチングコストに少なくとも一部基づいて、前記候補ブロックが前記現在のブロックに対して前記最小のマッチングコストを有するかどうかを決定させる命令をさらに記憶した、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
実行されると、前記プロセッサに、
前記現在のブロックとマッチングするための前記ビデオデータの前記第1のフレームの前記以前の候補ブロックを選択させ、
前記以前の候補ブロックを前記現在のブロックにマッチングするための前記以前の最小のマッチングコストを計算させ、
前記精緻化された総マッチングコストが前記以前の最小のマッチングコストより小さいとき、前記候補ブロックが前記現在のブロックに対する前記最小のマッチングコストを有すると決定させる命令をさらに記憶した、請求項22に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
実行されると、前記プロセッサに、
前記候補ブロックを前記現在のブロックにマッチングするための動きベクトルビットコストを計算することであって、前記動きベクトルビットコストが、前記現在のブロックから前記候補ブロックまでの動きベクトルを表すために必要とされるビットの数を含む、ことと、
前記第1および第2の部分的なマッチングコスト、前記推定値、ならびに前記動きベクトルビットコストを加算することを介して、前記近似された総マッチングコストを計算することと
を行わせる命令をさらに記憶した、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
実行されると、前記プロセッサに、
前記候補ブロックを囲む第1の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第1の後続の候補ブロックを選択させ、
前記第1の菱型パターンから水平方向および/または垂直方向にずれている第2の菱型パターンから、前記現在のブロックとマッチングするための前記第1のフレームの第2の後続の候補ブロックを選択させる命令をさらに記憶した、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
実行されると、前記プロセッサに、修正された初期探索を実行させる命令をさらに記憶しており、前記第1の菱型パターンおよび第2の菱型パターンが、探索エリア全体の一部分である初期探索エリア内に位置する、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2017513329.tif 000016
2017513329.tif 000017
2017513329.tif 000018
2017513329.tif 000019
2017513329.tif 000020