(57)【要約】【課題】  イントラブロックコピー予測を行うことである。【解決手段】  イントラブロックコピー（ＢＣ）予測における革新技術並びにエンコーダ側の検索パターン及び分割のためのアプローチにおける革新技術。例えば、一部の革新技術は、イントラＢＣ予測のための非対称パーティションの使用に関連している。その他の革新技術は、エンコーダがブロックベクトル推定時（イントラＢＣ予測の場合）又は動き推定時に使用する検索パターン又はアプローチに関連している。さらに、その他の革新技術は、ＢＶ推定時の水平バイアス又は垂直バイアスを含むＢＶ検索範囲の使用に関連している。【選択図】図１０
2020039167.tif 000002
【特許請求の範囲】
【請求項１】
スクリーンキャプチャコンテンツをエンコードするように構成されたビデオエンコーダを実施する計算装置において、
スクリーンキャプチャコンテンツのフレームを受け取ることと、
前記スクリーンキャプチャコンテンツのフレームを複数の２Ｎ×２Ｎブロックに分割することであって、前記複数の２Ｎ×２Ｎブロックは前記スクリーンキャプチャコンテンツのフレームの現在の２Ｎ×２Ｎブロックを含む、分割することと、
前記スクリーンキャプチャコンテンツのフレームの前記現在の２Ｎ×２Ｎブロックをエンコードして、エンコードデータを生成することであって、前記現在の２Ｎ×２Ｎブロックは前記スクリーンキャプチャコンテンツのフレームのスライス内にあり、前記スクリーンキャプチャコンテンツのフレームのタイル内にあり、前記現在の２Ｎ×２Ｎブロックは６４×６４、３２×３２、又は１６×１６のサイズを有する、エンコードすることであって、前記エンコードすることは、
イントラブロックコピー（ＢＣ）予測のベクトル値を制約して、整数サンプル精度を有し、前記スライス内にあり、前記タイル内にあり、前記スクリーンキャプチャコンテンツのフレーム内の前記現在の２Ｎ×２Ｎブロックとオーバーラップしない参照領域を示すようにすることと、
前記現在の２Ｎ×２Ｎブロックを第１および第２のパーティションに水平または垂直に分割することによって、前記現在の２Ｎ×２ＮブロックをイントラＢＣ予測用の第１と第２のパーティションに対称にパーティションすることであって、前記第１と第２のパーティションは、次のサイズ：
（ａ）前記現在の２Ｎ×２Ｎブロックのサイズが６４×６４であるとき、それぞれ６４×１６及び６４×４８、又はそれぞれ１６×６４及び４８×６４、
（ｂ）前記現在の２Ｎ×２Ｎブロックのサイズが３２×３２であるとき、それぞれ３２×８及び３２×２４、又はそれぞれ８×３２及び２４×３２、及び
（ｃ）前記現在の２Ｎ×２Ｎブロックのサイズが１６×１６であるとき、それぞれ１６×４及び１６×１２、又はそれぞれ４×１６及び１２×１６、
を有する、対称にパーティションすることと、
前記第１のパーティションに対してイントラＢＣ予測を実行することと、
前記第２のパーティションに対してイントラＢＣ予測を実行することと、を含む、エンコードすることと、
エンコードデータをビットストリームの一部として出力することとを含む、
方法。
【請求項２】
エンコードすることはさらに、イントラＢＣ予測のために対照的にパーティションされた他の２Ｎ×２Ｎブロックに対して前記イントラＢＣ予測を実行することを含み、前記他の２Ｎ×２Ｎブロックは、各々が２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらにパーティションされ得る（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックにパーティションされる、
請求項１に記載の方法。
【請求項３】
計算装置であって、
一以上のプロセッサユニットと、
揮発性メモリと、
不揮発性メモリ及び／又は記憶装置であって、前記不揮発性メモリ及び／又は記憶装置は、前記計算装置に、プログラムされると、スクリーンキャプチャコンテンツをデコードするように構成されたビデオデコーダの動作を実行させるコンピュータ実行可能命令を記憶し、前記動作は、
エンコードデータをビットストリームの一部として受け取ることと、
前記エンコードデータをデコードして、スクリーンキャプチャコンテンツのフレームを再構成することであって、前記スクリーンキャプチャコンテンツのフレームの現在の２Ｎ×２Ｎブロックの第１と第２のパーティションに対してイントラブロックコピー（ＢＣ）を実行することを含み、前記現在の２Ｎ×２Ｎブロックは、前記スクリーンキャプチャコンテンツのフレームのスライス内にあり、前記スクリーンキャプチャコンテンツのフレームのタイル内にあり、前記イントラＢＣ予測のベクトル値は、整数サンプル精度を有し、前記スライス内にあり、前記タイル内にあり、前記スクリーンキャプチャコンテンツのフレーム内の前記現在の２Ｎ×２Ｎブロックとオーバーラップしない参照領域を示すように制約され、前記現在の２Ｎ×２Ｎブロックは前記イントラＢＣ予測のために対照的にパーティションされ、前記現在の２Ｎ×２Ｎブロックの大きさは６４×６４、３２×３２、又は１６×１６であり、前記現在の２Ｎ×２Ｎブロックは前記第１及び第２のパーティションに水平に又は垂直に分割されており、前記第１と第２のパーティションの大きさは：
（ａ）前記現在の２Ｎ×２Ｎブロックのサイズが６４×６４であるとき、それぞれ６４×１６及び６４×４８、又はそれぞれ１６×６４及び４８×６４、
（ｂ）前記現在の２Ｎ×２Ｎブロックのサイズが３２×３２であるとき、それぞれ３２×８及び３２×２４、又はそれぞれ８×３２及び２４×３２、及び
（ｃ）前記現在の２Ｎ×２Ｎブロックのサイズが１６×１６であるとき、それぞれ１６×４及び１６×１２、又はそれぞれ４×１６及び１２×１６である、
計算装置。
【請求項４】
デコードすることはさらに、イントラＢＣ予測のために対照的にパーティションされた他の２Ｎ×２Ｎブロックに対して前記イントラＢＣ予測を実行することを含み、前記他の２Ｎ×２Ｎブロックは、各々が２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらにパーティションされ得る（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックにパーティションされている、
請求項３に記載の計算装置。
【請求項５】
エンコードすることはさらに、前記現在の２Ｎ×２Ｎブロックに対して、
前記スクリーンキャプチャコンテンツのフレームの第１の参照領域への第１の変位を示す第１のベクトルを決定することと、
前記第１のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第１のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第１の参照領域において以前に再構成されたサンプル値から前記第１のパーティションの予測サンプル値を決定することと、
前記スクリーンキャプチャコンテンツのフレームの第２の参照領域への第２の変位を示す第２のベクトルを決定することと、
前記第２のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第２のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第２の参照領域において以前に再構成されたサンプル値から前記第２のパーティションの予測サンプル値を決定することと、を有する、
請求項１に記載の方法。
【請求項６】
デコードすることは、前記現在の２Ｎ×２Ｎブロックに対して、
前記スクリーンキャプチャコンテンツのフレームの第１の参照領域への第１の変位を示す第１のベクトルを再構成することと、
前記スクリーンキャプチャコンテンツのフレームの第２の参照領域への第２の変位を示す第２のベクトルを再構成することと、
前記第１のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第１のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第１の参照領域において以前に再構成されたサンプル値から前記第１のパーティションの予測サンプル値を決定することと、
前記第２のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第２のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第２の参照領域において以前に再構成されたサンプル値から前記第２のパーティションの予測サンプル値を決定することと、を有する、
請求項３に記載の計算装置。
【請求項７】
スクリーンキャプチャコンテンツをデコードするように構成されたビデオデコーダを実施する計算装置において、
エンコードデータをビットストリームの一部として受け取ることと、
前記エンコードデータをデコードして、スクリーンキャプチャコンテンツのフレームを再構成することであって、前記スクリーンキャプチャコンテンツのフレームの現在の２Ｎ×２Ｎブロックの第１と第２のパーティションに対してイントラブロックコピー（ＢＣ）を実行することを含み、前記現在の２Ｎ×２Ｎブロックは、前記スクリーンキャプチャコンテンツのフレームのスライス内にあり、前記スクリーンキャプチャコンテンツのフレームのタイル内にあり、前記イントラＢＣ予測のベクトル値は、整数サンプル精度を有し、前記スライス内にあり、前記タイル内にあり、前記スクリーンキャプチャコンテンツのフレーム内の前記現在の２Ｎ×２Ｎブロックとオーバーラップしない参照領域を示すように制約され、前記現在の２Ｎ×２Ｎブロックは前記イントラＢＣ予測のために対照的にパーティションされ、前記現在の２Ｎ×２Ｎブロックの大きさは６４欠ける６４、３２×３２、又は１６×１６であり、前記現在の２Ｎ×２Ｎブロックは前記第１及び第２のパーティションに水平又は垂直に分割され、前記第１と第２のパーティションの大きさは：
（ａ）前記現在の２Ｎ×２Ｎブロックのサイズが６４×６４であるとき、それぞれ６４×１６及び６４×４８、又はそれぞれ１６×６４及び４８×６４、
（ｂ）前記現在の２Ｎ×２Ｎブロックのサイズが３２×３２であるとき、それぞれ３２×８及び３２×２４、又はそれぞれ８×３２及び２４×３２、及び
（ｃ）前記現在の２Ｎ×２Ｎブロックのサイズが１６×１６であるとき、それぞれ１６×４及び１６×１２、又はそれぞれ４×１６及び１２×１６である、
方法。
【請求項８】
デコードすることは、前記現在の２Ｎ×２Ｎブロックに対して、
前記スクリーンキャプチャコンテンツのフレームの第１の参照領域への変位を示す第１のベクトルを再構成することと、
前記第１のパーティションに対してイントラＢＣ予測の一部として、前記第１のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第１の参照領域において以前に再構成されたサンプル値から前記第１のパーティションの予測サンプル値を決定することと、
前記スクリーンキャプチャコンテンツのフレームの第２の参照領域への変位を示す第２のベクトルを決定することと、
前記第２のパーティションに対してイントラＢＣ予測の一部として、前記第２のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第２の参照領域において以前に再構成されたサンプル値から前記第２のパーティションの予測サンプル値を決定することと、を有する、
請求項７に記載の方法。
【請求項９】
前記現在の２Ｎ×２Ｎブロックは水平に分割され、
前記第１と第２のパーティションはそれぞれトップおよびボトムパーティションであり、または
前記第１と第２のパーティションはそれぞれボトムおよびトップパーティションである、
請求項７に記載の方法。
【請求項１０】
前記現在の２Ｎ×２Ｎブロックは垂直に分割され、
前記第１と第２のパーティションはそれぞれレフトおよびライトパーティションであり、または
前記第１と第２のパーティションはそれぞれライトおよびレフトパーティションである、
請求項７に記載の方法。
【請求項１１】
前記現在の２Ｎ×２Ｎブロックは水平に分割され、
前記第１と第２のパーティションはそれぞれトップおよびボトムパーティションであり、または
前記第１と第２のパーティションはそれぞれボトムおよびトップパーティションである、
請求項１に記載の方法。
【請求項１２】
前記現在の２Ｎ×２Ｎブロックは垂直に分割され、
前記第１と第２のパーティションはそれぞれレフトおよびライトパーティションであり、または
前記第１と第２のパーティションはそれぞれライトおよびレフトパーティションである、
請求項１に記載の方法。
【請求項１３】
前記現在の２Ｎ×２Ｎブロックは水平に分割され、
前記第１と第２のパーティションはそれぞれトップおよびボトムパーティションであり、または
前記第１と第２のパーティションはそれぞれボトムおよびトップパーティションである、
請求項３に記載の計算装置。
【請求項１４】
前記現在の２Ｎ×２Ｎブロックは垂直に分割され、
前記第１と第２のパーティションはそれぞれレフトおよびライトパーティションであり、または
前記第１と第２のパーティションはそれぞれライトおよびレフトパーティションである、
請求項３に記載の計算装置。
【請求項１５】
計算装置であって、
一以上のプロセッサユニットと、
揮発性メモリと、
不揮発性メモリ及び／又は記憶装置であって、前記不揮発性メモリ及び／又は記憶装置は、前記計算装置に、プログラムされると、スクリーンキャプチャコンテンツをエンコードするように構成されたビデオエンコーダの動作を実行させるコンピュータ実行可能命令を記憶し、前記動作は、
スクリーンキャプチャコンテンツのフレームを受け取ることと、
前記スクリーンキャプチャコンテンツのフレームを複数の２Ｎ×２Ｎブロックに分割することであって、前記複数の２Ｎ×２Ｎブロックは前記スクリーンキャプチャコンテンツのフレームの現在の２Ｎ×２Ｎブロックを含む、分割することと、
前記スクリーンキャプチャコンテンツのフレームの前記現在の２Ｎ×２Ｎブロックをエンコードして、エンコードデータを生成することであって、前記現在の２Ｎ×２Ｎブロックは前記スクリーンキャプチャコンテンツのフレームのスライス内にあり、前記スクリーンキャプチャコンテンツのフレームのタイル内にあり、前記現在の２Ｎ×２Ｎブロックは６４×６４、３２×３２、又は１６×１６のサイズを有する、エンコードすることであって、前記エンコードすることは、
イントラブロックコピー（ＢＣ）予測のベクトル値を制約して、整数サンプル精度を有し、前記スライス内にあり、前記タイル内にあり、前記スクリーンキャプチャコンテンツのフレーム内の前記現在の２Ｎ×２Ｎブロックとオーバーラップしない参照領域を示すようにすることと、
前記現在の２Ｎ×２Ｎブロックを第１および第２のパーティションに水平または垂直に分割することによって、前記現在の２Ｎ×２ＮブロックをイントラＢＣ予測用の第１と第２のパーティションに対称にパーティションすることであって、前記第１と第２のパーティションは、次のサイズ
（ａ）前記現在の２Ｎ×２Ｎブロックのサイズが６４×６４であるとき、それぞれ６４×１６及び６４×４８、又はそれぞれ１６×６４及び４８×６４、
（ｂ）前記現在の２Ｎ×２Ｎブロックのサイズが３２×３２であるとき、それぞれ３２×８及び３２×２４、又はそれぞれ８×３２及び２４×３２、及び
（ｃ）前記現在の２Ｎ×２Ｎブロックのサイズが１６×１６であるとき、それぞれ１６×４及び１６×１２、又はそれぞれ４×１６及び１２×１６、
を有する、対称にパーティションすることと、
前記第１のパーティションに対してイントラＢＣ予測を実行することと、
前記第２のパーティションに対してイントラＢＣ予測を実行することと、を含むエンコードすることと、
エンコードデータをビットストリームの一部として出力することとを含む、
方法。
【請求項１６】
前記現在の２Ｎ×２Ｎブロックは水平に分割され、
前記第１と第２のパーティションはそれぞれトップおよびボトムパーティションであり、または
前記第１と第２のパーティションはそれぞれボトムおよびトップパーティションである、
請求項１５に記載の方法。
【請求項１７】
前記現在の２Ｎ×２Ｎブロックは垂直に分割され、
前記第１と第２のパーティションはそれぞれレフトおよびライトパーティションであり、または
前記第１と第２のパーティションはそれぞれライトおよびレフトパーティションである、
請求項１５に記載の方法。
【請求項１８】
エンコードすることはさらに、イントラＢＣ予測のために対照的にパーティションされた他の２Ｎ×２Ｎブロックに対して前記イントラＢＣ予測を実行することを含み、前記他の２Ｎ×２Ｎブロックは、各々が２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらにパーティションされ得る（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックにパーティションされる、
請求項１５に記載の方法。
【請求項１９】
エンコードすることはさらに、前記現在の２Ｎ×２Ｎブロックに対して、
前記スクリーンキャプチャコンテンツのフレームの第１の参照領域への第１の変位を示す第１のベクトルを決定することと、
前記第１のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第１のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第１の参照領域において以前に再構成されたサンプル値から前記第１のパーティションの予測サンプル値を決定することと、
前記スクリーンキャプチャコンテンツのフレームの第２の参照領域への第２の変位を示す第２のベクトルを決定することと、
前記第２のパーティションに対してイントラＢＣ予測を実行することの一部として、前記第２のベクトルを用いて、前記スクリーンキャプチャコンテンツのフレームの前記第２の参照領域において以前に再構成されたサンプル値から前記第２のパーティションの予測サンプル値を決定することと、を有する、
請求項１５に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
エンジニアは、圧縮（ソース符号化又はソースエンコーディングとも呼ばれる）を使用してデジタルビデオのビットレートを削減する。圧縮は、情報をより低いビットレートの形態に変換することによって、ビデオ情報の格納及び送信のコストを低減する。復元（デコーディングとも呼ばれる）は、圧縮された形態から元の情報のバージョンを再構成する。「コーデック」は、エンコーダ／デコーダシステムである。
【０００２】
この２０年にわたり、ＩＴＵ−Ｔ  Ｈ．２６１、Ｈ．２６２（ＭＰＥＧ−２又はＩＳＯ／ＩＥＣ  １３８１８−２）、Ｈ．２６３及びＨ．２６４（ＭＰＥＧ−４  ＡＶＣ又はＩＳＯ／ＩＥＣ  １４４９６−１０）規格、ＭＰＥＧ−１（ＩＳＯ／ＩＥＣ  １１１７２−２）及びＭＰＥＧ−４  Ｖｉｓｕａｌ（ＩＳＯ／ＩＥＣ  １４４９６−２）規格、並びにＳＭＰＴＥ  ４２１Ｍ（ＶＣ−１）規格を含むさまざまなビデオコーデック規格が採用されてきた。最近では、Ｈ．２６５／ＨＥＶＣ規格（ＩＴＵ−Ｔ  Ｈ．２６５又はＩＳＯ／ＩＥＣ  ２３００８−２）が承認されている。Ｈ．２６５／ＨＥＶＣ規格の拡張（例えば、スケーラブルビデオ符号化／デコーディング用、サンプルビット深度又は彩度（ｃｈｒｏｍａ）サンプリングレートに関してより忠実度の高いビデオの符号化／デコーディング用、スクリーンキャプチャコンテンツ用、又はマルチビュー符号化／デコーディング用）が現在開発中である。通常、ビデオコーデック規格は、エンコード済みビデオビットストリームの構文のオプションを定義し、エンコーディング及びデコーディングにおいて特定の機能が使用される場合のビットストリーム内のパラメータを詳述する。多くの場合、ビデオコーデック規格は、デコーディングにおいて結果の適合を実現するためにデコーダが実行する必要のあるデコーディング処理に関する詳細も提供する。コーデック規格の他に、さまざまな独自のコーデック形式が、エンコード済みビデオビットストリームの構文のその他のオプション及び対応するデコーディング処理を定義している。
【０００３】
イントラブロックコピー（ｂｌｏｃｋ  ｃｏｐｙ：ＢＣ）は、ＨＥＶＣ拡張用に開発中の予測モードである。イントラＢＣ予測モードでは、画像の現在のブロックのサンプル値が、同じ画像内で以前に再構成されたサンプル値を使用して予測される。ブロックベクトル（ｂｌｏｃｋ  ｖｅｃｔｏｒ：ＢＶ）は、現在のブロックから、予測に使用される以前に再構成されたサンプル値を含む画像の領域までの変位を示す。ＢＶは、ビットストリーム内で信号伝達される。イントラＢＣ予測は、イントラ画像予測の一形態である。画像のブロックに対するイントラＢＣ予測は、同じ画像内のサンプル値以外のサンプル値を使用しない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＨＥＶＣ規格で現在規定され、ＨＥＶＣ規格の一部の参照ソフトウェアで実装されているように、イントラＢＣ予測モードには、いくつかの問題がある。具体的には、イントラＢＣ予測のブロックサイズのオプションは、多くのシナリオにおいて制限が厳しすぎ、ブロックサイズに関するエンコーダ側の決定及びイントラＢＣ予測の使用方法は、多くのシナリオにおいて効率的に行われていない。
【課題を解決するための手段】
【０００５】
発明の概要では、イントラブロックコピー（ＢＣ）予測における革新技術、並びにエンコーダ側の検索パターン、検索範囲、及び分割のためにアプローチにおける革新技術について詳細に説明する。例えば、革新技術の一部は、イントラＢＣ予測のための非対称パーティション（「ＡＭＰ」と呼ばれる場合もある）の使用に関連している。その他の革新技術は、エンコーダが（イントラＢＣ予測のための）ブロックベクトル（ＢＶ）推定時又は動き推定時に使用する検索パターン又はアプローチに関連している。さらにその他の革新技術は、ＢＶ推定時に水平バイアス又は垂直バイアスを伴うＢＶ検索範囲の使用に関連している。
【０００６】
本明細書に記載された革新技術の第１の態様によれば、画像エンコーダ又はビデオエンコーダは、画像又はビデオをエンコードしてエンコード済みデータを生成し、エンコード済みデータをビットストリームの一部として出力する。エンコーディングの一部として、エンコーダは、イントラＢＣ予測のために非対称に分割された現在のブロックに対して、イントラＢＣ予測を実行する。例えば、現在のブロックが２Ｎ×２Ｎブロックであり、現在のブロックは（１）２Ｎ×Ｎ／２ブロック及び２Ｎ×３Ｎ／２ブロック、又は（２）２Ｎ×３Ｎ／２ブロック及び２Ｎ×Ｎ／２ブロックに分割される。又は、別の例として、現在のブロックが２Ｎ×２Ｎブロックであり、現在のブロックは（１）Ｎ／２×２Ｎブロック及び３Ｎ／２×２Ｎブロック、又は（２）３Ｎ／２×２Ｎブロック及びＮ／２×２Ｎブロックに分割される。さらに一般的には、非対称分割では、現在のブロックを異なる大きさを持つ２つのパーティションに分割することができる。エンコーディングの一部として、エンコーダは、イントラＢＣ予測のために対称に分割された他のブロックに対して、イントラＢＣ予測を実行することもできる。例えば、前記他のブロックが、（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックに分割された２Ｎ×２Ｎブロックであり、これらはそれぞれ、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる。さらに一般的には、対称分割では、前記他のブロックを、同じ大きさを持つパーティションに分割できる。
【０００７】
本明細書に記載された革新技術の第２の態様によれば、画像デコーダ又はビデオデコーダは、エンコード済みデータをビットストリームの一部として受信し、エンコード済みデータをデコードして画像又はビデオを再構成する。デコーディングの一部として、デコーダは、イントラＢＣ予測のために非対称に分割された現在のブロックに対して、イントラＢＣ予測を実行する。例えば、現在のブロックが２Ｎ×２Ｎブロックであり、現在のブロックは（１）２Ｎ×Ｎ／２ブロック及び２Ｎ×３Ｎ／２ブロック、又は（２）２Ｎ×３Ｎ／２ブロック及び２Ｎ×Ｎ／２ブロックに分割される。又は、別の例として、現在のブロックが２Ｎ×２Ｎブロックであり、現在のブロックは（１）Ｎ／２×２Ｎブロック及び３Ｎ／２×２Ｎブロック、又は（２）３Ｎ／２×２Ｎブロック及びＮ／２×２Ｎブロックに分割される。さらに一般的には、非対称分割では、現在のブロックを異なる大きさを持つ２つのパーティションに分割することができる。デコーディングの一部として、デコーダは、イントラＢＣ予測のために対称に分割された他のブロックに対して、イントラＢＣ予測を実行することもできる。例えば、前記他のブロックが、（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックに分割された２Ｎ×２Ｎブロックであり、これらはそれぞれ、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる。さらに一般的には、対称分割では、前記他のブロックを、同じ大きさを持つパーティションに分割できる。
【０００８】
本明細書に記載された革新技術の第３の態様によれば、画像エンコーダ又はビデオエンコーダは、画像又はビデオをエンコードしてエンコード済みデータを生成し、エンコード済みデータをビットストリームの一部として出力する。エンコーディングの一部として、エンコーダは、現在の画像の現在のブロック（例えば、予測ユニットの予測ブロック）に対する予測を計算する。予測は、動き推定用又はイントラＢＣ予測のためのＢＶ推定用とすることができる。いずれの場合も、予測の計算では、現在のブロックのパーティションを識別するために、ボトムアップアプローチを使用する。一般に、現在のブロックのパーティションは、異なる大きさを持つ２つ以上のパーティションを含む。例えば、現在のブロックが２Ｎ×２Ｎブロックであり、ボトムアップアプローチは、（ａ）２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードをチェックすることと、（ｂ）各Ｎ×Ｎブロックに対して最適なモードを選択することと、（ｃ）各Ｎ×Ｎブロックのベクトル値をキャッシュすることと、（ｄ）キャッシュされたベクトル値を使用することを含む、２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つモードをチェックすることと、（ｅ）２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つ最適なモードを選択することと、（ｆ）２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つ最適なモードと、２Ｎ×２Ｎブロックの各Ｎ×Ｎブロックに対して選択された最適なモードとの間で選択することとを含む。又は、別の例として、現在のブロックが２Ｎ×２Ｎブロックであり、ボトムアップアプローチは、（ａ）２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードのサブセットをチェックすることと、（ｂ）各Ｎ×Ｎブロックのベクトル値をキャッシュすることと、（ｃ）キャッシュされたベクトル値を使用することを含む、２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つモードのサブセットをチェックすることと、（ｄ）２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つ最適なモードを選択することと、（ｅ）２Ｎ×２Ｎブロックに対して２Ｎの大きさを持つ最適なモードと、各Ｎ×Ｎブロックに対して最適なモードとの間で選択することとを含む。
【０００９】
本明細書に記載された革新技術の第４の態様によれば、画像エンコーダ又はビデオエンコーダは、画像又はビデオをエンコードしてエンコード済みデータを生成し、エンコード済みデータをビットストリームの一部として出力する。エンコーディングの一部として、エンコーダは、現在の画像の現在のブロックに対する予測を計算する。予測は、動き推定用又はイントラＢＣ予測のためのＢＶ推定用とすることができる。いずれの場合も、予測の計算は、（ａ）現在の最適な位置を囲む小さい近傍領域（例えば、現在の最適な位置に水平又は垂直に直接隣接する位置）内の反復評価によって、予測のための現在の最適な位置を識別することと、（ｂ）現在の最適な位置を囲む連続するより大きい近傍領域（例えば、小さい近傍領域の外側にあるリング内の位置）内の反復評価によって、現在の最適な位置を確認することとを含む。例えば、現在の最適な位置が、より大きい近傍領域のいずれかに含まれる位置よりも悪い場合、エンコーダは、現在の最適な位置を置き換え、識別と確認を繰り返す。連続するより大きい近傍領域内での評価の反復回数のしきい値に達した場合、確認段階を停止できる。
【００１０】
本明細書に記載された革新技術の第５の態様によれば、画像エンコーダ又はビデオエンコーダは、画像の現在のブロックに対してＢＶを決定し、ＢＶを使用して現在のブロックに対してイントラＢＣ予測を実行し、ＢＶをエンコードする。ＢＶは、画像内の領域への変位を示す。エンコーダは、ＢＶを決定する場合、領域が水平バイアス又は垂直バイアスを伴うＢＶ検索範囲内にあるという制約をチェックする。エンコーダは、ＢＶ検索範囲を、複数の使用可能なＢＶ検索範囲から（例えば、ヒストグラムデータ構造内で追跡できる１つ以上の以前のブロックの少なくとも一部のＢＶ値に応じて）選択できる。
【００１１】
本明細書に記載された革新技術の第６の態様によれば、画像エンコーダ又はビデオエンコーダは、イントラＢＣ予測を使用して画像のデータをエンコードし、エンコード済みデータをビットストリームの一部として出力する。エンコーディングの一部として、エンコーダは、水平バイアス又は垂直バイアスを伴うＢＶ検索範囲を使用してＢＶ推定処理を実行する。エンコーダは、ＢＶ検索範囲を、複数の使用可能なＢＶ検索範囲から（例えば、ヒストグラムデータ構造内で追跡できる１つ以上の以前のブロックの少なくとも一部のＢＶ値に応じて）選択できる。
【００１２】
各革新技術は、方法の一部として、方法を実行するのに適したコンピューティングデバイスの一部として、又はコンピューティングデバイスに方法を実行させるためのコンピュータ実行可能命令を格納する具体的なコンピュータ可読媒体の一部として実装できる。さまざまな革新技術を組み合わせて、又は別々に使用できる。
【００１３】
本発明の前述及びその他の対象、機能、及び利点は、添付の図を参照しながら、以下の詳細な説明でさらに明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】記載された一部の実施形態を実装できるコンピューティングシステムの例の図である。
【図２ａ】記載された一部の実施形態を実装できるネットワーク環境の例の図である。
【図２ｂ】記載された一部の実施形態を実装できるネットワーク環境の例の図である。
【図３】記載された一部の実施形態と併せて実装できるエンコーダシステムの例の図である。
【図４】記載された一部の実施形態と併せて実装できるデコーダシステムの例の図である。
【図５ａ】記載された一部の実施形態と併せて実装できるビデオエンコーダの例を説明する図である。
【図５ｂ】記載された一部の実施形態と併せて実装できるビデオエンコーダの例を説明する図である。
【図６】記載された一部の実施形態と併せて実装できるビデオデコーダの例を説明する図である。
【図７】画像のブロックに対するイントラＢＣ予測、及びブロックマッチングにおけるブロックに対する候補ブロックの例を説明する図である。
【図８】画像のブロックに対するイントラＢＣ予測、及びブロックマッチングにおけるブロックに対する候補ブロックの例を説明する図である。
【図９】いくつかの非対称パーティション及びいくつかの対称パーティションを含む、イントラＢＣ予測のブロックサイズの例を説明する図である。
【図１０】非対称パーティションを使用するイントラＢＣ予測を含む、エンコーディングのための一般化手法である。
【図１１】非対称パーティションを使用するイントラＢＣ予測を含む、デコーディングのための一般化手法である。
【図１２】画像のブロックに対する動き推定を説明する図である。
【図１３】イントラＢＣ予測対象のブロックを分割するためのトップダウンアプローチを説明するフローチャート及びそれに付随する図である。
【図１４】分割のためのボトムアップアプローチを使用するための一般化手法を説明するフローチャートである。
【図１５】イントラＢＣ予測対象のブロックを分割するためのボトムアップアプローチを説明するフローチャート及びそれに付随する図である。
【図１６】イントラＢＣ予測対象のブロックを分割するための、さらに高速なボトムアップアプローチを説明するフローチャート及びそれに付随する図である。
【図１７】小さい近傍領域内の位置の反復評価及びより大きい近傍領域内の位置の反復確認を使用してブロックに対するＢＶ値又はＭＶ値を検索するための一般化手法を説明するフローチャートである。
【図１８ａ】ブロックに対してＢＶ値又はＭＶ値を検索する場合の、小さい近傍領域内の位置の反復評価を説明する図である。
【図１８ｂ】ブロックに対してＢＶ値又はＭＶ値を検索する場合の、小さい近傍領域内の位置の反復評価を説明する図である。
【図１９】ブロックに対してＢＶ値又はＭＶ値を検索する場合の、１つ以上のより大きい近傍領域内の位置の反復確認を説明する図である。
【図２０】小さい近傍領域内の位置の反復評価及びより大きい近傍領域域内の位置の反復確認を使用してブロックに対してＢＶ値又はＭＶ値を検索するための手法の例を説明するフローチャートである。
【図２１ａ】ＢＶ値の検索範囲に対する制約の例を説明する図である。
【図２１ｂ】ＢＶ値の検索範囲に対する制約の例を説明する図である。
【図２１ｃ】ＢＶ値の検索範囲に対する制約の例を説明する図である。
【図２１ｄ】ＢＶ値の検索範囲に対する制約の例を説明する図である。
【図２１ｅ】ＢＶ値の検索範囲に対する制約の例を説明する図である。
【図２２】ＢＶ値の選択に対する１つ以上の制約の下でイントラＢＣ予測モードを使用してエンコードするための一般化手法を説明するフローチャートである。
【図２３】画像のブロックに対するＺスキャンの順序の例を説明する図である。
【発明を実施するための形態】
【００１５】
イントラブロックコピー（ＢＣ）予測における革新技術、並びにエンコーダ側の検索パターン、検索範囲、及び分割のためのアプローチにおける革新技術について詳細に説明する。例えば、革新技術の一部は、エンコード及び／又はデコード時のイントラＢＣ予測のための非対称パーティション（「ＡＭＰ」と呼ばれる場合もある）の使用に関連している。その他の革新技術は、エンコーダが（イントラＢＣ予測のための）ブロックベクトル（ＢＶ）推定時又は動き推定時に使用する検索パターン又はアプローチに関連している。さらにその他の革新技術は、ＢＶ推定時に水平バイアス又は垂直バイアスを伴うＢＶ検索範囲の使用に関連している。
【００１６】
本明細書に記載された処理は、ビデオエンコーダ又はビデオデコーダで実行されていると説明されているが、多くの場合、処理は、別の種類の媒体処理ツール（例えば、画像エンコーダ又は画像デコーダ）によって実行できる。
【００１７】
本明細書に記載された革新技術の一部は、Ｈ．２６５／ＨＥＶＣ規格に固有の構文要素及び処理を参照して説明されている。例えば、Ｈ．２６５／ＨＥＶＣ規格の草案バージョンＪＣＴＶＣ−Ｐ１００５（「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｒａｎｇｅ  Ｅｘｔｅｎｓｉｏｎｓ  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：Ｄｒａｆｔ  ６」、ＪＣＴＶＣ−Ｐ１００５＿ｖ１、２０１４年２月）が参照される。本明細書に記載された革新技術は、他の規格又は形式でも実装できる。
【００１８】
本明細書に記載された革新技術の多くは、スクリーンキャプチャコンテンツなどの特定の「人工的に作成された」ビデオコンテンツをエンコードする場合のレート歪み性能を改善できる。一般に、スクリーンキャプチャビデオ（スクリーンコンテンツビデオとも呼ばれる）は、カメラのみによって捕捉されるビデオコンテンツとは対照的に、描画されたテキスト、コンピュータグラフィックス、アニメーションによって生成されたコンテンツ、又はコンピュータディスプレイに描画されたときに捕捉されたその他の同様の種類のコンテンツを含むビデオである。通常、スクリーンキャプチャコンテンツは、繰り返し構造（例えば、グラフィックス、テキスト文字）を含む。通常、スクリーンキャプチャコンテンツは、高彩度サンプリング解像度の形式（例えば、ＹＵＶ  ４：４：４又はＲＧＢ  ４：４：４）でエンコードされるが、より低い彩度サンプリング解像度の形式（例えば、ＹＵＶ  ４：２：０）でエンコードされる場合もある。スクリーンキャプチャコンテンツのエンコーディング／デコーディングの一般的シナリオは、リモートデスクトップ会議及び自然なビデオ又はその他の「混合コンテンツ」ビデオ上のグラフィックオーバーレイのエンコーディング／デコーディングを含む。本明細書に記載された革新技術のいくつかは、スクリーンコンテンツビデオ又はその他の人工的に作成されたビデオのエンコーディングに適している。それらの革新技術は、自然なビデオにも使用できるが、効果的ではない可能性がある。本明細書に記載されたその他の革新技術は、自然なビデオ又は人工的に作成されたビデオのエンコーディングにおいて効果的である。
【００１９】
さらに一般的には、本明細書に記載された例に対するさまざまな代替が可能である。例えば、本明細書に記載された方法の一部は、記載された方法の動作の順序を変更すること、特定の方法の動作を分割、反復、又は省略することなどによって、変えることができる。開示された技術のさまざまな態様を組み合わせて、又は単独で使用できる。さまざまな実施形態は、記載された革新技術の１つ以上を使用する。本明細書に記載された革新技術の一部は、背景技術に示された問題の１つ以上に対処する。通常、特定の技術／ツールが、そのような問題をすべて解決することはない。
【００２０】
Ｉ．コンピューティングシステムの例
図１は、記載された革新技術のいくつかを実装できる適切なコンピューティングシステム（１００）の一般化された例を示す。それらの革新技術は、さまざまな汎用コンピューティングシステム又は専用コンピューティングシステムで実装できるため、コンピューティングシステム（１００）は、使用範囲又は機能に関するどのような制限も示唆することを意図していない。
【００２１】
図１を参照すると、コンピューティングシステム（１００）は、１つ以上のプロセッシングユニット（１１０、１１５）及びメモリ（１２０、１２５）を含んでいる。プロセッシングユニット（１１０、１１５）は、コンピュータ実行可能命令を実行する。プロセッシングユニットは、汎用セントラルプロセッシングユニット（「ＣＰＵ」）、特定用途向け集積回路（「ＡＳＩＣ」）内のプロセッサ、又は任意のその他の種類のプロセッサにすることができる。マルチプロセッシングシステムでは、処理能力を向上するために、複数のプロセッシングユニットがコンピュータ実行可能命令を実行する。例えば、図１は、セントラルプロセッシングユニット（１１０）及びグラフィックプロセッシングユニット又はコプロセッシングユニット（１１５）を示している。具体的なメモリ（１２０、１２５）は、プロセッシングユニットがアクセスできる揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、又はこれら２つの組み合わせにすることができる。メモリ（１２０、１２５）は、非対称パーティションを使用するイントラＢＣ予測に関する１つ以上の革新技術並びに／或いはエンコーダ側の検索パターン、水平バイアス又は垂直バイアスを伴う検索範囲、及び／又は分割のためのアプローチに関する１つ以上の革新技術を実装するソフトウェア（１８０）を、プロセッシングユニットによる実行に適したコンピュータ実行可能命令の形態で格納する。
【００２２】
コンピューティングシステムは、その他の機能を備えることができる。例えば、コンピューティングシステム（１００）は、記憶装置（１４０）、１つ以上の入力デバイス（１５０）、１つ以上の出力デバイス（１６０）、及び１つ以上の通信接続（１７０）を含む。バス、コントローラ、又はネットワークなどの相互接続機構（示されていない）は、コンピューティングシステム（１００）のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア（示されていない）は、コンピューティングシステム（１００）で実行するその他のソフトウェアの動作環境を提供し、コンピューティングシステム（１００）のコンポーネントの動作を調整する。
【００２３】
具体的な記憶装置（１４０）は、取り外し可能又は取り外し不可にすることができ、磁気ディスク、磁気テープ又は磁気カセット、ＣＤ−ＲＯＭ、ＤＶＤ、或いは、情報の格納に使用することができ、コンピューティングシステム（１００）内でアクセスできる任意のその他の媒体を含む。記憶装置（１４０）は、非対称パーティションを使用するイントラＢＣ予測に関する１つ以上の革新技術並びに／或いはエンコーダ側の検索パターン、検索範囲、及び／又は分割のためのアプローチに関する１つ以上の革新技術を実装するソフトウェア（１８０）の命令を格納する。
【００２４】
入力デバイス（１５０）は、キーボード、マウス、ペン、又はトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャンデバイス、或いはコンピューティングシステム（１００）に入力を提供するその他のデバイスにすることができる。ビデオの場合、入力デバイス（１５０）は、カメラ、ビデオカード、ＴＶチューナカード、スクリーンキャプチャモジュール、又はビデオ入力をアナログ又はデジタルの形態で受け取る同様のデバイス、或いはビデオ入力をコンピューティングシステム（１００）に読み込むＣＤ−ＲＯＭ又はＣＤ−ＲＷにすることができる。出力デバイス（１６０）は、ディスプレイ、プリンタ、スピーカ、ＣＤライター、又はコンピューティングシステム（１００）からの出力を提供する別のデバイスにすることができる。
【００２５】
通信接続（１７０）は、通信媒体を介した別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令、音声入力又はビデオ入力、音声出力又はビデオ出力、或いは変調データ信号内のその他のデータなどの情報を伝達する。変調データ信号は、信号内の情報をエンコードするような方法で設定又は変更された１つ以上の特性を持つ信号である。制限ではなく例として、通信媒体は電気、光、ＲＦ、又はその他の搬送波を使用できる。
【００２６】
各革新技術は、一般的なコンピュータ可読媒体を背景において説明できる。コンピュータ可読媒体は、コンピューティング環境内でアクセスできる任意の使用可能な具体的媒体である。制限ではなく例として、コンピューティングシステム（１００）では、コンピュータ可読媒体はメモリ（１２０、１２５）、記憶装置（１４０）、及びこれらの任意の組み合わせを含む。
【００２７】
各革新技術は、プログラムモジュールに含められ、現実のターゲットプロセッサ又は仮想的ターゲットプロセッサ上のコンピューティングシステムで実行されるコンピュータ実行可能命令などの、一般的なコンピュータ実行可能命令を背景において説明できる。一般に、プログラムモジュールは、特定のタスクを実行する、又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、さまざまな実施形態での必要に応じて、結合するか、又はプログラムモジュール間で分割することができる。プログラムモジュールのコンピュータ実行可能命令は、ローカルコンピューティングシステム又は分散コンピューティングシステム内で実行できる。
【００２８】
本明細書では、「システム」及び「デバイス」という用語は、相互に置き換え可能なように使用される。特に文脈によって明確に示していない限り、これらの用語は、コンピューティングシステム又はコンピューティングデバイスの種類に対するどのような制限も意味していない。一般に、コンピューティングシステム又はコンピューティングデバイスは、ローカルにするか、又は分散することができ、専用ハードウェア及び／又は汎用ハードウェアと、本明細書に記載された機能を実装するソフトウェアとの任意の組み合わせを含むことができる。
【００２９】
開示された方法は、開示された方法のいずれかを実行するように構成された特殊なコンピューティングハードウェアを使用して実装することもできる。例えば、開示された方法は、開示された方法のいずれかを実装するように特別に設計又は構成された集積回路（例えば、ＡＳＩＣ（ＡＳＩＣデジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）など）、グラフィックプロセッシングユニット（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＧＰＵ）、又はフィールドプログラマブルゲートアレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）などのプログラマブルロジックデバイス（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ：ＰＬＤ））によって実装できる。
【００３０】
説明の目的で、詳細な説明では、コンピューティングシステムにおけるコンピュータの処理を説明するために、「決定する」及び「使用する」のような用語を使用する。これらの用語は、コンピュータによって実行される処理の高度な抽象化であり、人間によって実行される行動と混同するべきではない。これらの用語に対応する実際のコンピュータの処理は、実装に応じて変わる。本明細書で符号化オプションを説明するために使用されているように、「最適」という用語（「最適な位置」、分割のための「最適なモード」、「最適な組み合わせ」など）は、推定された符号化効率又は実際の符号化効率に関して、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせの観点から、その他の符号化オプションと比較して優先される符号化オプションを示す。任意の使用可能な歪み指標を、歪みコストに使用できる。任意の使用可能なビットレート指標を、ビットレートコストに使用できる。その他の要因（アルゴリズム的な符号化の複雑さ、アルゴリズム的なデコーディングの複雑さ、リソース使用量、及び／又は遅延など）も、どの符号化オプションが「最適」であるかに関する決定に影響を与える可能性がある。
【００３１】
ＩＩ．ネットワーク環境の例
図２ａ及び２ｂは、ビデオエンコーダ（２２０）及びビデオデコーダ（２７０）を含むネットワーク環境（２０１、２０２）の例を示す。エンコーダ（２２０）及びデコーダ（２７０）は、適切な通信プロトコルを使用してネットワーク（２５０）を介して接続される。ネットワーク（２５０）は、インターネット又は別のコンピュータネットワークを含むことができる。
【００３２】
図２ａに示されたネットワーク環境（２０１）において、各リアルタイム通信（ｒｅａｌ−ｔｉｍｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ：ＲＴＣ）ツール（２１０）は、双方向通信用のエンコーダ（２２０）及びデコーダ（２７０）の両方を含む。特定のエンコーダ（２２０）は、Ｈ．２６５／ＨＥＶＣ規格の変形又は拡張、ＳＭＰＴＥ  ４２１Ｍ規格、ＩＳＯ／ＩＥＣ  １４４９６−１０規格（Ｈ．２６４又はＡＶＣとも呼ばれる）、別の規格、又は独自の形式に準拠する出力を生成することができ、対応するデコーダ（２７０）は、エンコーダ（２２０）からエンコード済みデータを受け取る。双方向通信は、ビデオ会議、ビデオ電話、或いはその他の二者又は多者通信のシナリオの一部とすることができる。図２ａのネットワーク環境（２０１）は２つのリアルタイム通信ツール（２１０）を含んでいるが、代わりにネットワーク環境（２０１）は、多者通信に参加する３つ以上のリアルタイム通信ツール（２１０）を含むことができる。
【００３３】
リアルタイム通信ツール（２１０）は、エンコーダ（２２０）によるエンコーディングを管理する。図３は、リアルタイム通信ツール（２１０）に含めることができるエンコーダシステム（３００）の例を示している。或いは、リアルタイム通信ツール（２１０）は、別のエンコーダシステムを使用する。リアルタイム通信ツール（２１０）は、デコーダ（２７０）によるデコーディングも管理する。図４は、リアルタイム通信ツール（２１０）に含めることができるデコーダシステム（４００）の例を示している。或いは、リアルタイム通信ツール（２１０）は、別のデコーダシステムを使用する。
【００３４】
図２ｂに示されたネットワーク環境（２０２）において、エンコーディングツール（２１２）は、デコーダ（２７０）を含む複数の再生ツール（２１４）に配信するためにビデオをエンコードするエンコーダ（２２０）を含む。一方向通信は、ビデオ調査システム、Ｗｅｂカメラ監視システム、スクリーンキャプチャモジュール、リモートデスクトップ会議のプレゼンテーション、又はビデオがエンコードされて１つの場所から１つ以上の他の場所に送信されるその他のシナリオに提供可能である。図２ｂにおけるネットワーク環境（２０２）は２つの再生ツール（２１４）を含んでいるが、ネットワーク環境（２０２）は、さらに多い又は少ない再生ツール（２１４）を含むことができる。一般に再生ツール（２１４）は、再生ツール（２１４）が受信するためのビデオのストリームを決定するために、エンコーディングツール（２１２）と通信する。再生ツール（２１４）は、ストリームを受信し、受信したエンコード済みデータを適切な期間バッファリングし、デコーディング及び再生を開始する。
【００３５】
図３は、エンコーディングツール（２１２）に含めることができるエンコーダシステム（３００）の例を示している。或いは、エンコーディングツール（２１２）は、別のエンコーダシステムを使用する。エンコーディングツール（２１２）は、１つ以上の再生ツール（２１４）との接続を管理するためのサーバ側コントローラロジックも含むことができる。図４は、再生ツール（２１４）に含めることができるデコーダシステム（４００）の例を示している。或いは、再生ツール（２１４）は、別のデコーダシステムを使用する。再生ツール（２１４）は、エンコーディングツール（２１２）との接続を管理するためのクライアント側コントローラロジックも含むことができる。
【００３６】
ＩＩＩ．エンコーダシステムの例
図３は、記載された一部の実施形態と併せて実装できるエンコーダシステム（３００）の例のブロック図である。エンコーダシステム（３００）は、リアルタイム通信用の低レイテンシエンコーディングモード、トランスコーディングモード、及びファイル又はストリームからの再生用の媒体を製造するための高レイテンシエンコーディングモードなど、複数のエンコーディングモードのいずれでも動作できる汎用エンコーディングツールにするか、又はそのようなエンコーディングモードのいずれかに適した専用エンコーディングツールにすることができる。エンコーダシステム（３００）は、特定の種類のコンテンツ（例えば、スクリーンキャプチャコンテンツ）のエンコーディングに適応させることができる。エンコーダシステム（３００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして実装できる。全体として、エンコーダシステム（３００）は、一連のソースビデオフレーム（３１１）をビデオソース（３１０）から受信し、チャネル（３９０）への出力としてエンコード済みデータを生成する。チャネルへのエンコード済みデータ出力は、イントラＢＣ予測モードを使用してエンコードされたコンテンツを含むことができる。
【００３７】
ビデオソース（３１０）は、カメラ、チューナカード、記憶媒体、スクリーンキャプチャモジュール、又はその他のデジタルビデオソースにすることができる。ビデオソース（３１０）は、一連のビデオフレームを、一定のフレームレート（例えば、１秒当たり３０フレーム）で生成する。本明細書で使用されているように、「フレーム」という用語は、符号化又は再構成されたソース画像データを一般に指す。順次走査ビデオの場合、フレームは順次走査ビデオフレームになる。インターレースビデオの場合、実施形態例では、インターレースビデオフレームが、エンコーディングの前にインターレース解除される場合がある。或いは、２つの補完的なインターレースビデオフィールドは、１つのビデオフレームとして一緒にエンコードされるか、又は２つの別々にエンコードされるフィールドとしてエンコードされる。「フレーム」又は「画像」という用語は、順次走査ビデオフレーム又はインターレース走査ビデオフレームを示すことの他に、対になっていない単一のフィールド、ビデオフィールドの補完的な対、特定の時間でのビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きい画像内の対象領域を示すことができる。ビデオオブジェクトプレーン又は領域は、シーンの複数のオブジェクト又は領域を含むより大きい画像の一部になることがでる。
【００３８】
受信ソースフレーム（３１１）は、複数のフレームバッファ記憶領域（３２１、３２２、．．．、３２ｎ）を含む一時的ソースフレームメモリ記憶領域（３２０）に格納される。フレームバッファ（３２１、３２２など）は、ソースフレーム記憶領域（３２０）内の１つのソースフレームを保持する。１つ以上のソースフレーム（３１１）がフレームバッファ（３２１、３２２など）に格納された後に、フレームセレクタ（３３０）が個々のソースフレームをソースフレーム記憶領域（３２０）から選択する。エンコーダ（３４０）の入力のフレームセレクタ（３３０）によってフレームが選択される順序は、ビデオソース（３１０）によってフレームが生成される順序とは異なる場合がある。例えば、一部の後のフレームのエンコードを先に行い、それによって一時的な後方予測を容易にするために、一部のフレームのエンコードの順序が遅れる場合がある。エンコーダ（３４０）の前に、エンコーダシステム（３００）は、エンコーディングの前に選択されたフレーム（３３１）の前処理（例えば、フィルタリング）を実行するプリプロセッサ（示されていない）を含むことができる。前処理は、一次成分（例えば、輝度）と二次成分（赤色及び青色へ向かう彩度の差異）への色空間変換、及びエンコーディングのため（例えば、彩度成分の空間解像度を減らすため）のリサンプリング処理を含むことができる。通常、エンコーディングの前に、ビデオがＹＵＶなどの色空間に変換される。ＹＵＶでは、輝度（Ｙ）成分のサンプル値は明るさ又は明度の値を表し、彩度（Ｕ、Ｙ）成分のサンプル値は色差の値を表す。色差の値（及びＹＵＶ色空間とＲＧＢなどの別の色空間との間の変換処理）の正確な定義は、実装によって異なる。一般に、本明細書で使用されているように、ＹＵＶという用語は、輝度成分及び１つ以上の彩度成分を含む任意の色空間（Ｙ’ＵＶ、ＹＩＱ、Ｙ’ｌＱ、及びＹＤｂＤｒ、並びにＹＣｂＣｒ及びＹＣｏＣｇなどの変形を含む）を示す。彩度サンプル値は、より低い彩度サンプリングレートにサブサンプリングされる場合がある（例えば、ＹＵＶ  ４：２：０形式の場合）。又は、彩度サンプル値は、輝度サンプル値と同じ解像度を持つ場合がある（例えば、ＹＵＶ  ４：４：４形式の場合）。又は、ビデオは、別の形式（例えば、ＲＧＢ  ４：４：４形式、ＧＢＲ  ４：４：４形式、又はＢＧＲ  ４：４：４形式）でエンコードできる。
【００３９】
エンコーダ（３４０）は、選択されたフレーム（３３１）をエンコードして符号化フレーム（３４１）を生成し、メモリ管理制御操作（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌ  ｏｐｅｒａｔｉｏｎ：ＭＭＣＯ）信号（３４２）又は参照画像セット（ｒｅｆｅｒｅｎｃｅ  ｐｉｃｔｕｒｅ  ｓｅｔ：ＲＰＳ）情報も生成する。ＲＰＳは、現在のフレーム又は任意のその後のフレームの動き補償において参照に使用できる一連のフレームである。現在のフレームが、エンコードされた最初のフレームではない場合、そのエンコーディング処理を実行するときに、エンコーダ（３４０）は、一時的デコード済みフレームメモリ記憶領域（３６０）に格納された１つ以上の以前にエンコード／デコードされたフレーム（３６９）を使用できる。そのような格納されたデコード済みフレーム（３６９）は、現在のソースフレーム（３３１）のコンテンツのインターフレーム予測の参照フレームとして使用される。ＭＭＣＯ／ＲＰＳ情報（３４２）は、デコーダに対して、どの再構成済みフレームを参照フレームとして使用できるか、したがって、どの再構成済みフレームをフレーム記憶領域に格納する必要があるかを示す。
【００４０】
一般に、エンコーダ（３４０）は、タイルへの分割、イントラ推定及びイントラ予測、動き推定及び動き補償、周波数変換、量子化、並びにエントロピー符号化などのエンコーディングタスクを実行する複数のエンコーディングモジュールを含む。エンコーダ（３４０）によって実行される正確な処理は、圧縮形式に応じて変わる場合がある。出力エンコード済みデータの形式は、Ｈ．２６５／ＨＥＶＣ形式の変形又は拡張、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ形式、ＶＣ−１形式、ＭＰＥＧ−ｘ形式（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、又はＭＰＥＧ−４）、Ｈ．２６ｘ形式（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別の形式にすることができる。
【００４１】
エンコーダ（３４０）は、フレームを同じサイズ又は異なるサイズの複数のタイルに分割できる。例えば、エンコーダ（３４０）は、フレームをタイル行及びタイル列に沿って分割する。タイル行及びタイル列は、フレーム境界と共に、フレーム内のタイルの水平境界及び垂直境界を定義する。ここで、各タイルは長方形領域である。タイルは、多くの場合、並列処理のオプションを提供するために使用される。フレームは、１つ以上のスライスとして編成することもできる。ここで、スライスはフレーム全体又はフレームの領域にすることができる。スライスは、フレーム内のその他のスライスとは独立してデコードすることができ、これによって誤り耐性を改善する。スライス又はタイルのコンテンツは、エンコーディング及びデコーディングの目的で、ブロック又はその他の一連のサンプル値にさらに分割される。
【００４２】
Ｈ．２６５／ＨＥＶＣ規格に従う構文の場合、エンコーダはフレーム（或いは、スライス又はタイル）のコンテンツを符号化ツリーユニットに分割する。符号化ツリーユニット（ｃｏｄｉｎｇ  ｔｒｅｅ  ｕｎｉｔ：ＣＴＵ）は、輝度符号化ツリーブロック（ｃｏｄｉｎｇ  ｔｒｅｅ  ｂｌｏｃｋ：ＣＴＢ）として編成された輝度サンプル値、及び２つの彩度ＣＴＢとして編成された対応する彩度サンプル値を含む。ＣＴＵ（及びそのＣＴＢ）のサイズは、エンコーダによって選択される。輝度ＣＴＢは、例えば６４×６４、３２×３２、又は１６×１６輝度サンプル値を含むことができる。ＣＴＵは、１つ以上の符号化ユニットを含む。符号化ユニット（ｃｏｄｉｎｇ  ｕｎｉｔ：ＣＵ）は、輝度符号化ブロック（ｃｏｄｉｎｇ  ｂｌｏｃｋ：ＣＢ）及び２つの対応する彩度ＣＢを含む。例えば、１つの６４×６４輝度ＣＴＢ及び２つの６４×６４彩度ＣＴＢ（ＹＵＶ  ４：４：４形式）を含むＣＴＵを４つのＣＵに分割することができ、それぞれのＣＵは、１つの３２×３２輝度ＣＢ及び２つの３２×３２彩度ＣＢを含み、それぞれのＣＵは、場合によってはさらに小さいＣＵに分割される。又は、別の例として、１つの６４×６４輝度ＣＴＢ及び２つの３２×３２彩度ＣＴＢ（ＹＵＶ  ４：２：０形式）を含むＣＴＵを４つのＣＵに分割することができ、それぞれのＣＵは、１つの３２×３２輝度ＣＢ及び２つの１６×１６彩度ＣＢを含み、それぞれのＣＵは、場合によってはさらに小さいＣＵに分割される。ＣＵの許容できる最小サイズ（例えば、８×８、１６×１６）は、ビットストリーム内で信号伝達できる。
【００４３】
一般に、ＣＵは、インター又はイントラなどの予測モードを含む。ＣＵは、予測情報（予測モードの詳細、変位値など）の信号伝達及び／又は予測処理の目的で、１つ以上の予測ユニットを含む。予測ユニット（ｐｒｅｄｉｃｔｉｏｎ  ｕｎｉｔ：ＰＵ）は、１つの輝度予測ブロック（ｐｒｅｄｉｃｔｉｏｎ  ｂｌｏｃｋ：ＰＢ）及び２つの彩度ＰＢを含む。Ｈ．２６５／ＨＥＶＣ規格によれば、イントラ予測対象のＣＵの場合、ＣＵが最小サイズ（例えば、８×８）でない限り、ＰＵのサイズはＣＵと同じになる。その場合、ＣＵを４つのさらに小さいＰＵ（例えば、イントラ予測で、最小のＣＵサイズが８×８の場合はそれぞれ４×４）に分割するか、又はＰＵが、ＣＵの構文要素で示されている最小のＣＵサイズを持つことができる。ただし、イントラＢＣ予測で使用される非対称パーティションの場合、図９に示されるように、ＣＵを複数のＰＵに分割できる。その場合、さらに大きいＣＵ（例えば、６４×６４、３２×３２、又は１６×１６）又は最小サイズのＣＵ（例えば、８×８）を複数のＰＵに分割できる。
【００４４】
ＣＵは、残差符号化／デコーディングの目的で、１つ以上の変換ユニットを含むこともできる。ここで、変換ユニット（ｔｒａｎｓｆｏｒｍ  ｕｎｉｔ：ＴＵ）は１つの輝度変換ブロック（ｔｒａｎｓｆｏｒｍ  ｂｌｏｃｋ：ＴＢ）及び２つの彩度ＴＢを含む。イントラ予測対象のＣＵ内のＰＵは、１つのＴＵ（サイズがＰＵに等しい）又は複数のＴＵを含むことができる。エンコーダは、ビデオをＣＴＵ、ＣＵ、ＰＵ、ＴＵなどに分割する方法を決定する。
【００４５】
Ｈ．２６５／ＨＥＶＣの実装では、スライスは１つのスライスセグメント（独立スライスセグメント）を含むか、又は複数のスライスセグメント（独立スライスセグメント及び１つ以上の依存スライスセグメント）に分割することができる。スライスセグメントは、タイルスキャン内で連続して順序付けられた整数個のＣＴＵであり、１つのネットワーク抽象化層（ｎｅｔｗｏｒｋ  ａｂｓｔｒａｃｔｉｏｎ  ｌａｙｅｒ：ＮＡＬ）ユニットに含まれる。独立スライスセグメントの場合、スライスセグメントのヘッダは、独立スライスセグメントに適用される構文要素の値を含む。依存スライスセグメントの場合、切り詰められたスライスセグメントのヘッダは、依存スライスセグメントに適用される構文要素の数個の値を含む。依存スライスセグメントのその他の構文要素の値は、デコーディング順序内の先行する独立スライスセグメントの値から推測される。
【００４６】
本明細書で使用されているように、「ブロック（ｂｌｏｃｋ）」という用語は、マクロブロック、予測ユニット、残差データユニット、又はＣＢ、ＰＢ、又はＴＢ、或いは文脈に応じてその他の一連のサンプル値を示すことができる。
【００４７】
図３に戻ると、エンコーダは、ソースフレーム（３３１）のイントラ符号化ブロックを、フレーム（３３１）内の他の以前に再構成されたサンプル値からの予測の観点から表す。イントラＢＣ予測の場合、イントラ画像推定部が、他の以前に再構成されたサンプル値に対するブロックの変位を推定する。イントラフレーム予測参照領域は、ブロックに対するＢＣ予測値の生成に使用されるフレーム内のサンプル値の領域である。イントラフレーム予測領域は、ブロックベクトル（ＢＶ）値（ＢＶ推定で決定される）を使用して示すことができる。以下では、イントラ画像エンコード時に決定を行うためのアプローチの例について説明する。実装に応じて、エンコーダは、入力サンプル値又は再構成されたサンプル値（同じ画像内で以前にエンコードされたサンプル値）を使用してブロックに対してＢＶ推定を実行できる。その他の詳細については、セクションＶのＢＶ推定の説明を参照のこと。
【００４８】
ブロックに対するイントラ空間予測の場合、イントラ画像推定部が、近傍の再構成済みサンプル値のブロックへの外挿を推定する。イントラ画像推定部は、エントロピー符号化された予測情報（イントラＢＣ予測のためのＢＶ値、又はイントラ空間予測のための予測モード（方向）など）を出力できる。イントラフレーム予測予測部が、予測情報を適用してイントラ予測値を決定する。
【００４９】
エンコーダ（３４０）は、参照フレームからの予測の観点から、ソースフレーム（３３１）の予測されたイントラフレーム符号化ブロックを表す。動き推定部は、１つ以上の参照フレーム（３６９）に対するブロックの動きを推定する。複数の参照フレームが使用される場合、複数の参照フレームを、異なる時間方向又は同じ時間方向からのフレームにすることができる。動き補償予測参照領域は、現在のフレームのサンプル値のブロックに対する動き補償予測値の生成に使用される、参照フレーム内のサンプル値の領域である。動き推定部は、エントロピー符号化された動きベクトル（ｍｏｔｉｏｎ  ｖｅｃｔｏｒ：ＭＶ）情報などの動き情報を出力する。動き補償部は、ＭＶを参照フレーム（３６９）に適用して、イントラフレーム予測のための動き補償予測値を決定する。以下では、インター画像エンコード時に決定を行うためのアプローチの例について説明する。
【００５０】
エンコーダは、ブロックの予測値（イントラ又はインター）と、対応する元の値との間の差分を（もしあれば）決定できる。これらの予測残差値は、周波数変換（周波数変換がスキップされない場合）、量子化、及びエントロピーエンコーディングを使用してさらにエンコードされる。例えば、エンコーダ（３４０）は、ビデオの画像、タイル、スライス、及び／又はその他の部分に対して量子化パラメータ（ｑｕａｎｔｉｚａｔｉｏｎ  ｐａｒａｍｅｔｅｒ：ＱＰ）の値を設定し、それに応じて変換係数を量子化する。エンコーダ（３４０）のエントロピー符号化部は、量子化変換係数値及び特定のサイド情報（例えば、ＭＶ情報、ＢＶ予測部のインデックス値、ＢＶ差分、ＱＰ値、モード決定、パラメータ選択）を圧縮する。標準的なエントロピー符号化手法は、指数ゴロム（Ｅｘｐｏｎｅｎｔｉａｌ−Ｇｏｌｏｍｂ）符号化、ゴロム・ライス（Ｇｏｌｏｍｂ−Ｒｉｃｅ）符号化、差異符号化、算術符号化、ハフマン符号化、ランレングス符号化、可変長／可変長（「Ｖ２Ｖ」）符号化、可変長／固定長（「Ｖ２Ｆ」）符号化、レンペル・ジブ（Ｌｅｍｐｅｌ−Ｚｉｖ）（ＬＺ）符号化、辞書符号化、確率間隔分割エントロピー符号化（ｐｒｏｂａｂｉｌｉｔｙ  ｉｎｔｅｒｖａｌ  ｐａｒｔｉｔｉｏｎｉｎｇ  ｅｎｔｒｏｐｙ  ｃｏｄｉｎｇ：ＰＩＰＥ）、及びこれらの組み合わせを含む。エントロピー符号化部は、多種多様な情報に対してさまざまな符号化手法を使用することができ、複数の手法を組み合わせて適用する（例えば、ゴロム・ライス（Ｇｏｌｏｍｂ−Ｒｉｃｅ）符号化の後に算術符号化を適用する）ことができ、特定の符号化手法内の複数のコード表から選択できる。一部の実装では、周波数変換をスキップできる。その場合、予測残差値を量子化し、エントロピー符号化できる。
【００５１】
デコード済みフレーム内のブロック境界の行及び／又は列間の不連続性を滑らかにするために、適応型デブロックフィルタが、エンコーダ（３４０）の動き補償ループ内（つまり、「インループ」フィルタリング）に含まれている。その他のフィルタリング（デリンギングフィルタリング、適応型ループフィルタリング（ａｄａｐｔｉｖｅ  ｌｏｏｐ  ｆｉｌｔｅｒｉｎｇ：ＡＬＦ）、又はサンプル適応型オフセット（ｓａｍｐｌｅ−ａｄａｐｔｉｖｅ  ｏｆｆｓｅｔ：ＳＡＯ）フィルタリング（示されていない）など）を、インループフィルタリング処理として選択的又は追加的に適用できる。
【００５２】
エンコーダ（３４０）によって生成されたエンコード済みデータは、ビットストリーム構文のさまざまな層の構文要素を含む。Ｈ．２６５／ＨＥＶＣ規格に従う構文の場合、例えば、画像パラメータセット（ｐｉｃｔｕｒｅ  ｐａｒａｍｅｔｅｒ  ｓｅｔ：ＰＰＳ）は、画像に関連付けることができる構文要素を含む構文構造である。ＰＰＳを１つの画像に使用することができ、又はＰＰＳを一連の複数の画像で再利用することができる。ＰＰＳは、通常、画像のエンコード済みデータとは別に信号伝達される（例えば、ＰＰＳ用の１つのＮＡＬユニット、及び画像のエンコード済みデータ用の１つ以上のその他のＮＡＬユニット）。画像のエンコード済みデータ内で、構文要素が、どのＰＰＳを画像に使用するべきかを示す。同様に、Ｈ．２６５／ＨＥＶＣ規格に従う構文の場合、シーケンスパラメータセット（ｓｅｑｕｅｎｃｅ  ｐａｒａｍｅｔｅｒ  ｓｅｔ：ＳＰＳ）は、一連の画像に関連付けることができる構文要素を含む構文構造である。ビットストリームは、１つのＳＰＳ又は複数のＳＰＳを含むことができる。ＳＰＳは、通常、シーケンスの他のデータとは別に信号伝達され、他のデータ内の構文要素が、どのＳＰＳを使用するべきかを示す。
【００５３】
符号化フレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）（又は、フレームの依存性と順序構造がエンコーダ（３４０）ですでに知られているため、ＭＭＣＯ／ＲＰＳ情報（３４２）に相当する情報）は、デコーディング処理エミュレータ（３５０）によって処理される。デコーディング処理エミュレータ（３５０）は、デコーダの機能の一部（例えば、参照フレームを再構成するためのデコーディングタスク）を実装する。デコーディング処理エミュレータ（３５０）は、ＭＭＣＯ／ＲＰＳ情報（３４２）に一致する方法で、エンコードされるその後のフレームのインターフレーム予測における参照フレームとして使用するために、特定の符号化フレーム（３４１）を再構成して格納する必要があるかどうかを決定する。符号化フレーム（３４１）を格納する必要がある場合、デコーディング処理エミュレータ（３５０）は、符号化フレーム（３４１）を受信して対応するデコーダされたフレーム（３５１）を生成するデコーダによって実行されるデコーディング処理をモデル化する。モデル化の実行において、エンコーダ（３４０）がデコード済みフレーム記憶領域（３６０）に格納されたデコード済みフレーム（３６９）を使用した場合、デコーディング処理エミュレータ（３５０）も、デコーディング処理の一部として、記憶領域（３６０）からのデコード済みフレーム（３６９）を使用する。
【００５４】
一時的デコード済みフレームメモリ記憶領域（３６０）は、複数のフレームバッファ記憶領域（３６１、３６２、．．．、３６ｎ）を含む。デコーディング処理エミュレータ（３５０）は、ＭＭＣＯ／ＲＰＳ情報（３４２）に一致する方法で、参照フレームとして使用するためにエンコーダ（３４０）によって必要とされなくなったフレームを含むフレームバッファ（３６１、３６２など）を識別するために、記憶領域（３６０）のコンテンツを管理する。デコーディング処理エミュレータ（３５０）は、デコーディング処理をモデル化した後、新たにデコードされたフレーム（３５１）を、この方法で識別されたフレームバッファ（３６１、３６２など）に格納する。
【００５５】
符号化フレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）は、一時的符号化データ領域（３７０）内でバッファリングされる。符号化データ領域（３７０）に集約された符号化データは、基本的な符号化ビデオビットストリームの構文の一部として、１つ以上の画像のエンコード済みデータを含む。符号化データ領域（３７０）に集約された符号化データは、符号化ビデオデータに関連する媒体のメタデータも（例えば、１つ以上の付加拡張情報（ｓｕｐｐｌｅｍｅｎｔａｌ  ｅｎｈａｎｃｅｍｅｎｔ  ｉｎｆｏｒｍａｔｉｏｎ：ＳＥＩ）メッセージ又はビデオユーザビリティ情報（ｖｉｄｅｏ  ｕｓａｂｉｌｉｔｙ  ｉｎｆｏｒｍａｔｉｏｎ：ＶＵＩ）メッセージ内の１つ以上のパラメータとして）含むことができる。
【００５６】
一時的符号化データ領域（３７０）から集約されたデータ（３７１）は、チャネルエンコーダ（３８０）によって処理される。チャネルエンコーダ（３８０）は、媒体ストリームとして送信又は格納するために集約されたデータを（例えば、ＩＴＵ−Ｔ  Ｈ．２２２．０  ｜  ＩＳＯ／ＩＥＣ  １３８１８−１などの媒体プログラムストリーム形式又はトランスポートストリーム形式、或いはＩＥＴＦ  ＲＦＣ  ３５５０などのインターネットリアルタイムトランスポートプロトコル形式に従って）パケット化及び／又は多重化することができる。その場合、チャネルエンコーダ（３８０）は、媒体送信ストリームの構文の一部として構文要素を追加できる。又は、チャネルエンコーダ（３８０）は、ファイルとして格納するために集約されたデータを（例えば、ＩＳＯ／ＩＥＣ  １４４９６−１２などの媒体コンテナ形式に従って）編成できる。その場合、チャネルエンコーダ（３８０）は、媒体格納ファイルの構文の一部として構文要素を追加できる。又は、さらに一般的には、チャネルエンコーダ（３８０）は、１つ以上の媒体システム多重化プロトコル又はトランスポートプロトコルを実装できる。その場合、チャネルエンコーダ（３８０）は、プロトコルの構文の一部として構文要素を追加できる。チャネルエンコーダ（３８０）は、出力用の記憶装置、通信接続、又は別のチャネルを表すチャネル（３９０）に出力を提供する。チャネルエンコーダ（３８０）又はチャネル（３９０）は、その他の要素（示されていない）（例えば、順方向誤り訂正（ｆｏｒｗａｒｄ−ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ：ＦＥＣ）エンコーディング及びアナログ信号変調）を含むこともできる。
【００５７】
ＩＶ．デコーダシステムの例
図４は、記載された一部の実施形態と併せて実装できるデコーダシステムの例（４００）のブロック図である。デコーダシステム（４００）は、リアルタイム通信用の低レイテンシデコーディングモード及びファイル又はストリームからの媒体再生用の高レイテンシデコーディングモードなど、複数のデコーディングモードのいずれでも動作できる汎用デコーディングツールにするか、又はそのようなデコーディングモードのいずれかに適した専用デコーディングツールにすることができる。デコーダシステム（４００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして実装できる。全体として、デコーダシステム（４００）は、符号化データをチャネル（４１０）から受信し、再構成されたフレームを出力先（４９０）への出力として生成する。
【００５８】
デコーダシステム（４００）は、符号化データのための記憶装置、通信接続、又は別のチャネルを入力として表すことができるチャネル（４１０）を含む。チャネル（４１０）は、チャネル符号化された符号化データを生成する。チャネルデコーダ（４２０）は、符号化データを処理できる。例えば、チャネルデコーダ（４２０）は、媒体ストリームとして送信又は格納するために集約されたデータに対して、（例えば、ＩＴＵ−Ｔ  Ｈ．２２２．０  ｜  ＩＳＯ／ＩＥＣ  １３８１８−１などの媒体プログラムストリーム形式又はトランスポートストリーム形式、或いはＩＥＴＦ  ＲＦＣ  ３５５０などのインターネットリアルタイムトランスポートプロトコル形式に従って）パケット化の解除及び／又は逆多重化を行う。その場合、チャネルデコーダ（４２０）は、媒体送信ストリームの構文の一部として追加された構文要素を構文解析できる。又は、チャネルデコーダ（４２０）は、ファイルとして格納するために集約された符号化ビデオデータを（例えば、ＩＳＯ／ＩＥＣ  １４４９６−１２などの媒体コンテナ形式に従って）分離する。その場合、チャネルデコーダ（４２０）は、媒体格納ファイルの構文の一部として追加された構文要素を構文解析できる。又は、さらに一般的には、チャネルデコーダ（４２０）は、１つ以上の媒体システムの逆多重化プロトコル又はトランスポートプロトコルを実装できる。その場合、チャネルデコーダ（４２０）は、プロトコルの構文の一部として追加された構文要素を構文解析できる。チャネル（４１０）又はチャネルデコーダ（４２０）は、例えばＦＥＣデコーディング及びアナログ信号復調のための、その他の要素（示されていないい）を含むこともできる。
【００５９】
チャネルデコーダ（４２０）から出力された符号化データ（４２１）は、受信されたそのようなデータが十分な量になるまで、一時的符号化データ領域（４３０）に格納される。符号化データ（４２１）は、符号化フレーム（４３１）及びＭＭＣＯ／ＲＰＳ情報（４３２）を含む。符号化データ領域（４３０）内の符号化データ（４２１）は、基本的な符号化ビデオビットストリームの構文の一部として、１つ以上の画像の符号化データを含む。符号化データ領域（４３０）内の符号化データ（４２１）は、エンコード済みビデオデータに関連する媒体のメタデータも（例えば、１つ以上のＳＥＩメッセージ又はＶＵＩメッセージ内の１つ以上のパラメータとして）含むこともできる。
【００６０】
一般に、符号化データ領域（４３０）は、符号化データ（４２１）を、そのような符号化データ（４２１）がデコーダ（４５０）によって使用されるまで、一時的に格納する。この時点で、符号化フレーム（４３１）の符号化データ及びＭＭＣＯ／ＲＰＳ情報（４３２）が、符号化データ領域（４３０）からデコーダ（４５０）に転送される。デコーディングが続行されると、新しい符号化データが符号化データ領域（４３０）に追加され、符号化データ領域（４３０）に残っている最も古い符号化データが、デコーダ（４５０）に転送される。
【００６１】
デコーダ（４５０）は、符号化フレーム（４３１）をデコードして、対応するデコード済みフレーム（４５１）を生成する。必要に応じて、デコーダ（４５０）は、デコーディング処理を実行するときに、１つ以上の以前にデコードされたフレーム（４６９）をインターフレーム予測のための参照フレームとして使用できる。デコーダ（４５０）は、そのような以前にデコードされたフレーム（４６９）を一時的デコード済みフレームメモリ記憶領域（４６０）から読み取る。一般に、デコーダ（４５０）は、エントロピーデコーディング、イントラフレーム予測、動き補償イントラフレーム予測、逆量子化、逆周波数変換（スキップされない場合）、及びタイルのマージなどのデコーディングタスクを実行する複数のデコーディングモジュールを含む。デコーダ（４５０）によって実行される正確な処理は、圧縮形式に応じて変わる場合がある。
【００６２】
例えば、デコーダ（４５０）は、圧縮済みフレーム又は一連のフレームのエンコード済みデータを受信し、デコード済みフレーム（４５１）を含む出力を生成する。デコーダ（４５０）において、バッファが圧縮済みフレームのエンコード済みデータを受信し、適切なタイミングで、受信したエンコード済みデータをエントロピーデコーダで使用できるようにする。エントロピーデコーダは、通常は、エンコーダで実行されたエントロピーエンコーディングの逆の処理を適用して、エントロピー符号化された量子化データ及びエントロピー符号化されたサイド情報をエントロピーデコードする。動き補償部は、動き情報を１つ以上の参照フレームに適用し、再構成されているフレームのインター符号化ブロックに対する動き補償予測値を形成する。イントラフレーム予測モジュールは、現在のブロックのサンプル値を、近隣の以前に再構成されたサンプル値から空間的に予測するか、又は、イントラＢＣ予測の場合、現在のブロックのサンプル値を、フレーム内のイントラフレーム予測領域の以前に再構成されたサンプル値を使用して予測することができる。イントラフレーム予測領域は、ＢＶ値を使用して示すことができる。デコーダ（４５０）は、予測残差値も再構成する。逆量子化部は、エントロピーデコードされたデータを逆量子化する。例えば、デコーダ（４５０）は、ビットストリーム内の構文要素に基づいて、ビデオの画像、タイル、スライス及び／又はその他の部分に対してＱＰの値を設定し、それに応じて変換係数を逆量子化する。逆周波数変換部は、量子化された周波数領域データを空間領域データに変換する。一部の実装では、周波数変換をスキップできる。その場合、逆周波数変換もスキップされる。その場合、予測残差値をエントロピーデコードし、逆量子化することができる。インターフレーム予測対象のブロックの場合、デコーダ（４５０）は、再構成された予測残差値を、動き補償予測値と組み合わせる。同様にデコーダ（４５０）は、予測残差値を、イントラ予測からの予測値と組み合わせることができる。デコード済みフレーム（４５１）内のブロック境界の行及び／又は列間の不連続性を滑らかにするために、適応型デブロックフィルタが、ビデオデコーダ（４５０）の動き補償ループ内に含まれている。その他のフィルタリング（デリンギングフィルタリング、ＡＬＦ、又はＳＡＯフィルタリング（示されていない）など）を、インループフィルタリング処理として選択的又は追加的に適用できる。
【００６３】
一時的デコード済みフレームメモリ記憶領域（４６０）は、複数のフレームバッファ記憶領域（４６１、４６２、．．．、４６ｎ）を含む。デコード済みフレーム記憶領域（４６０）は、デコード済み画像バッファの例である。デコーダ（４５０）は、ＭＭＣＯ／ＲＰＳ情報（４３２）を使用して、デコード済みフレーム（４５１）を格納できるフレームバッファ（４６１、４６２など）を識別する。デコーダ（４５０）は、デコード済みフレーム（４５１）を、このフレームバッファに格納する。
【００６４】
出力シーケンサ（４８０）は、出力順序内で次に生成されるフレームが、デコード済みフレーム記憶領域（４６０）内で使用可能になったことを識別する。出力順序内で次に生成されるフレーム（４８１）が、デコード済みフレーム記憶領域（４６０）内で使用可能になると、そのフレームは出力シーケンサ（４８０）によって読み取られ、出力先（４９０）（例えば、ディスプレイ）に出力される。一般に、フレームが出力シーケンサ（４８０）によってデコード済みフレーム記憶領域（４６０）から出力される順序は、フレームがデコーダ（４５０）によってデコードされる順序とは異なる場合がある。
【００６５】
Ｖ．ビデオエンコーダの例
図５ａ及び５ｂは、記載された一部の実施形態と併せて実装できる、一般化されたビデオエンコーダ（５００）のブロック図である。エンコーダ（５００）は、現在の画像を含む一連のビデオ画像を入力ビデオ信号（５０５）として受信し、エンコード済みデータを符号化ビデオビットストリーム（５９５）内に出力として生成する。
【００６６】
エンコーダ（５００）は、ブロックベースであり、実装に依存するブロック形式を使用する。ブロックは、さまざまな段階（例えば、予測、周波数変換、及び／又はエントロピーエンコーディング段階）で、さらに細かく分割できる。例えば、画像を６４×６４ブロック、３２×３２ブロック、又は１６×１６に分割し、その後、符号化及びデコーディングのために、サンプル値のさらに小さいブロックに分割できる。Ｈ．２６５／ＨＥＶＣ規格のエンコーディングの実装では、エンコーダは画像をＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）に分割する。ブロック（例えば、ＣＵ）は、図９に示すように、イントラＢＣ予測の目的で、さらに小さいブロック（例えば、ＰＵ）に非対称に分割できる。
【００６７】
エンコーダ（５００）は、イントラ画像符号化及び／又はインター画像符号化を使用して画像を圧縮する。エンコーダ（５００）のコンポーネントの多くは、イントラ画像符号化及びインター画像符号化の両方に使用される。これらのコンポーネントによって実行される正確な処理は、圧縮対象の情報の種類に応じて変わる場合がある。
【００６８】
タイルモジュール（５１０）は、必要に応じて画像を、同じサイズ又は異なるサイズの複数のタイルに分割する。例えば、タイルモジュール（５１０）は、画像をタイル行及びタイル列に沿って分割する。タイル行及びタイル列は、画像境界と共に、画像内のタイルの水平境界及び垂直境界を定義する。ここで、各タイルは長方形領域である。Ｈ．２６５／ＨＥＶＣの実装において、エンコーダ（５００）は画像を１つ以上のスライスに分割する。ここで、各スライスは１つ以上のスライスセグメントを含む。
【００６９】
一般的エンコーディング制御（５２０）は、入力ビデオ信号（５０５）の画像及びエンコーダ（５００）のさまざまなモジュールからのフィードバック（示されていない）を受信する。全体として、一般的エンコーディング制御（５２０）は、制御信号（示されていない）を他のモジュール（タイルモジュール（５１０）、変換部／スケーラ／量子化部（５３０）、スケーラ／逆変換部（５３５）、イントラ画像推定部（５４０）、動き推定部（５５０）、及びイントラ／インタースイッチなど）に供給して、エンコード時に符号化パラメータを設定及び変更する。具体的には、一般的エンコーディング制御（５２０）は、エンコード時の分割に関する決定を管理できる。さらに一般的には、一般的エンコーディング制御（５２０）は、エンコード時にイントラＢＣ予測を使用するかどうか、及びその使用方法を決定できる。一般的エンコーディング制御（５２０）は、エンコード時（例えば、レート歪み解析の実行時）に中間結果を評価することもできる。一般的エンコーディング制御（５２０）は、対応するデコーダが一貫した決定を行えるようにするために、エンコード時に行われた決定を示す一般的制御データ（５２２）を生成する。一般的制御データ（５２２）は、ヘッダフォーマッタ／エントロピー符号化部（５９０）に提供される。
【００７０】
現在の画像が、インター画像予測を使用して予測される場合、動き推定部（５５０）は、１つ以上の参照画像に対して、入力ビデオ信号（５０５）の現在の画像のサンプル値のブロックの動きを推定する。デコード済み画像バッファ（５７０）は、参照画像として使用するために、１つ以上の以前に再構成された符号化画像をバッファリングする。動き推定部（５５０）は、動き推定のためのブロックの分割方法を決定する際に、下で説明されているようにトップダウンアプローチ又はボトムアップアプローチを適用できる。動き推定部（５５０）は、下で説明されているような検索パターン又はその他の検索パターンを使用できる。複数の参照画像が使用される場合、複数の参照画像を、異なる時間方向又は同じ時間方向からのフレームにすることができる。動き推定部（５５０）は、サイド情報として、ＭＶデータ、マージモードインデックス値、及び参照画像選択データなどの動きデータ（５５２）を生成する。動きデータ（５５２）は、ヘッダフォーマッタ／エントロピー符号化部（５９０）及び動き補償部（５５５）に提供される。
【００７１】
動き補償部（５５５）は、ＭＶを、デコード済み画像バッファ（５７０）からの再構成済み参照画像に適用する。動き補償部（５５５）は、現在の画像に対する動き補償予測を生成する。
【００７２】
エンコーダ（５００）内の別の経路では、イントラ画像推定部（５４０）は、入力ビデオ信号（５０５）の現在の画像のサンプル値のブロックに対するイントラ画像予測の実行方法を決定する。現在の画像を、イントラ画像符号化を使用して、全体的又は部分的に符号化できる。現在の画像の再構成（５３８）の値を使用するイントラ空間予測の場合、イントラ画像推定部（５４０）は、現在の画像の現在のブロックのサンプル値を、現在の画像の近隣の以前に再構成されたサンプル値から空間的に予測する方法を決定する。
【００７３】
又は、ＢＶ値を使用するイントラＢＣ予測の場合、イントラ画像推定部（５４０）は、現在の画像内の異なる候補参照領域に対する現在のブロックのサンプル値の変位を推定する。イントラ画像推定部（５４０）は、ＢＶ推定（及びイントラＢＣ予測）のためのブロック分割方法を決定する際に、下で説明されているように、トップダウンアプローチ又はボトムアップアプローチを適用できる。イントラ画像推定部（５４０）は、下で説明されているような検索パターン又はその他の検索パターンを使用できる。イントラＢＣ予測の場合、イントラ画像推定部（５４０）は、下で説明されている１つ以上の制約を使用してＢＶ選択処理を制約できる。
【００７４】
実装に応じて、エンコーダは、入力サンプル値、インループフィルタリング前の再構成済みサンプル値、又はインループフィルタリング後の再構成済みサンプル値を使用して現在のブロックに対してＢＶ推定を実行できる。一般に、入力サンプル値又はフィルタリングされていない再構成済みサンプル値をＢＶ推定に使用することで、エンコーダは逐次処理のボトルネックを防ぐことができる（このボトルネックは、ＢＶ推定／イントラＢＣ予測の前に参照領域の再構成済みサンプル値をフィルタリングすることから生じる場合がある）。一方、フィルタリングされていない再構成済みサンプル値の格納では、追加メモリを使用する。また、インループフィルタリングが、ＢＶ推定の前に適用される場合、現在のブロック領域がデコードされた後に適用されるフィルタリング処理と、ＢＶ推定／イントラＢＣ予測に使用される領域との間で重なり合う影響領域が存在する場合がある。そのような場合、ＢＶ推定／イントラＢＣ予測は、このようなフィルタリング処理の側面の前に適用される。一部の実装では、エンコーダはＢＶ推定／イントラＢＣ予測の前にインループフィルタリング処理をある程度適用し、後の処理段階で追加的又は選択的なフィルタリングを実行できる。
【００７５】
又は、イントラ画像辞書符号化モードの場合、辞書又はその他の場所に格納された以前のサンプル値を使用して、ブロックのピクセルがエンコードされる。ここで、ピクセルは、同じ場所にあるサンプル値のセット（例えば、ＲＧＢトリプレット又はＹＵＶトリプレット）である。例えば、エンコーダ（５００）は、以前に再構成されたサンプル値（例えば、１ピクセル、２ピクセル、４ピクセル、８ピクセルなどのグループ）のハッシュ値を計算し、それらのハッシュ値を、エンコードされている現在のピクセルのセットのハッシュ値と比較できる。ハッシュの比較に基づいて、１つ以上の長さの一致が、以前に再構成されたサンプル値において識別される場合がある。現在のピクセル（又はサンプル値）は、以前のピクセル内（例えば、辞書内）の位置を識別するオフセット、及びそのオフセットからの予測されるピクセルの数を示す長さを使用して、さまざまな１−Ｄ又は疑似２−Ｄ辞書モードでエンコードできる。通常、イントラ画像辞書符号化モードでエンコードされたブロックに対して、残差は計算されない。
【００７６】
イントラ画像推定部（５４０）は、サイド情報として、イントラ予測が空間予測、イントラＢＣ予測又は辞書モード、予測モード方向（イントラ空間予測の場合）、ＢＶ値（イントラＢＣ予測の場合）、及びオフセットと長さ（辞書モードの場合）を使用するかどうかを示す情報などの、イントラ予測データ（５４２）を生成する。イントラ予測データ（５４２）が、ヘッダフォーマッタ／エントロピー符号化部（５９０）及びイントラ画像予測部（５４５）に提供される。
【００７７】
イントラ予測データ（５４２）に従って、イントラ画像予測部（５４５）は、現在の画像の現在のブロックのサンプル値を、現在の画像の近隣の以前に再構成されたサンプル値から空間的に予測する。又は、イントラＢＣ予測の場合、イントラ画像予測部（５４５）は、現在のブロックに対するＢＶ値によって示されたイントラ画像予測参照領域の以前に再構成されたサンプル値を使用して、現在のブロックのサンプル値を予測する。場合によっては、ＢＶ値をＢＶ予測部（予測されたＢＶ値）にすることができる。その他の場合では、ＢＶ値を、予測されたＢＶ値とは異なる値にすることができる。その場合、ＢＶ差分が、予測されたＢＶ値とＢＶ値の間の差を示す。又は、イントラ画像辞書モードの場合、イントラ画像予測部（５４５）は、オフセットと長さを使用してピクセルを再構成する。
【００７８】
イントラ／インタースイッチは、特定のブロックの予測（５５８）が動き補償予測なのか、それともイントラ画像予測なのかを選択する。
【００７９】
非辞書モードでは、残差符号化がスキップされない場合、予測（５５８）のブロックと、入力ビデオ信号（５０５）の元の現在の画像の対応する部分との間の差が（もしあれば）、残差（５１８）の値を提供する。現在の画像の再構成時に、残差値がエンコード／信号伝達されている場合、再構成された残差値は、予測（５５８）と結合されて、ビデオ信号（５０５）から元のコンテンツの近似的又は正確な再構成（５３８）を生成する。（不可逆圧縮では、一部の情報がビデオ信号（５０５）から失われる。）
【００８０】
変換部／スケーラ／量子化部（５３０）において、非辞書モードで周波数変換がスキップされない場合、周波数変換部は空間領域ビデオ情報を周波数領域（すなわち、スペクトル、変換）データに変換する。ブロックベースのビデオ符号化の場合、周波数変換部は、離散コサイン変換（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ：ＤＣＴ）、その整数近似、又は別の種類の前方ブロック変換（例えば、離散サイン変換又はその整数近似）を予測残差データ（又は、予測（５５８）がＮＵＬＬの場合はサンプル値データ）のブロックに適用し、周波数変換係数のブロックを生成する。変換部／スケーラ／量子化部（５３０）は、可変ブロックサイズを使用して変換を適用できる。その場合、変換部／スケーラ／量子化部（５３０）は、現在のブロックに対して、残差値に使用するべき変換のブロックサイズを決定できる。スケーラ／量子化部は、変換係数のスケーリング及び量子化を行う。例えば、量子化部は、画像ごと、タイルごと、スライスごと、ブロックごと、周波数ごと、又はその他の単位ごとに変化する量子化ステップサイズを使用して、デッドゾーンスカラー量子化を周波数領域データに適用する。量子化変換係数データ（５３２）が、ヘッダフォーマッタ／エントロピー符号化部（５９０）に提供される。周波数変換がスキップされた場合、スケーラ／量子化部は、予測残差データのブロック（又は、予測（５５８）がＮＵＬＬの場合はサンプル値データ）をスケーリング及び量子化することができ、ヘッダフォーマッタ／エントロピー符号化部（５９０）に提供される量子化値を生成する。
【００８１】
スケーラ／逆変換部（５３５）において、非辞書モードの場合、スケーラ／逆量子化部は、量子化変換係数に対して逆スケーリング及び逆量子化を実行する。変換段階がスキップされなかった場合、逆周波数変換部は、逆周波数変換を実行し、再構成された予測残差値又はサンプル値のブロックを生成する。変換段階がスキップされている場合、逆周波数変換もスキップされる。その場合、スケーラ／逆量子化部は、予測残差データ（又はサンプル値データ）のブロックに対して逆スケーリング及び逆量子化を実行し、再構成された値を生成できる。残差値がエンコード／信号伝達されている場合、エンコーダ（５００）は再構成された残差値を予測（５５８）の値（例えば、動き補償予測値、イントラ画像予測値）と結合して、再構成（５３８）を形成する。残差値がエンコード／信号伝達されなかった場合、エンコーダ（５００）は予測（５５８）の値を再構成（５３８）として使用する。
【００８２】
イントラ画像予測の場合、再構成（５３８）の値をイントラ画像推定部（５４０）及びイントラ画像予測部（５４５）にフィードバックできる。再構成（５３８）の値は、その後の画像の動き補償予測に使用できる。再構成（５３８）の値は、さらにフィルタリングすることができる。フィルタリング制御（５６０）は、ビデオ信号（５０５）の特定の画像に関して、再構成（５３８）の値に対するデブロックフィルタリング及びＳＡＯフィルタリングの実行方法を決定する。フィルタリング制御（５６０）は、ヘッダフォーマッタ／エントロピー符号化部（５９０）及びマージ部／フィルタ（５６５）に提供されるフィルタ制御データ（５６２）を生成する。
【００８３】
マージ部／フィルタ（５６５）において、エンコーダ（５００）は、異なるタイルからのコンテンツを画像の再構成済みバージョンにマージする。エンコーダ（５００）は、画像内の境界間の不連続性を適応的に滑らかにするために、フィルタ制御データ（５６２）に従ってデブロックフィルタリング及びＳＡＯフィルタリングを選択的に実行する。その他のフィルタリング（デリンギングフィルタリング又はＡＬＦ（示されていない）など）を、選択的又は追加的に適用できる。タイル境界を選択的にフィルタリングできるか、それとも全くフィルタリングできないかは、エンコーダ（５００）の設定によって決まり、エンコーダ（５００）は、そのようなフィルタリングが適用されたかどうかを示すために、符号化ビットストリーム内で構文を提供できる。デコード済み画像バッファ（５７０）は、今後の動き補償予測で使用するために、再構成済みの現在の画像をバッファリングする。
【００８４】
ヘッダフォーマッタ／エントロピー符号化部（５９０）は、一般的制御データ（５２２）、量子化変換係数データ（５３２）、イントラ予測データ（５４２）、動きデータ（５５２）、及びフィルタ制御データ（５６２）をフォーマット及び／又はエントロピー符号化する。動きデータ（５５２）の場合、ヘッダフォーマッタ／エントロピー符号化部（５９０）は、マージモードインデックス値を選択及びエントロピー符号化することができ、又はデフォルトのＭＶ予測部を使用することができる。場合によっては、ヘッダフォーマッタ／エントロピー符号化部（５９０）は、（ＭＶ値のＭＶ予測部に対する）ＭＶ値のＭＶ差分も決定し、その後（例えば、コンテキスト適応型バイナリ算術符号化を使用して）ＭＶ差分をエントロピー符号化する。イントラ予測データ（５４２）の場合、ＢＶ予測を使用してＢＶ値をエンコードできる。ＢＶ予測は、デフォルトのＢＶ予測部を（例えば、１つ以上の近隣のブロックから）使用できる。複数のＢＶ予測部が可能な場合、ＢＶ予測部インデックスは、複数のＢＶ予測部のうちのどれをＢＶ予測に使用するべきかを示すことができる。ヘッダフォーマッタ／エントロピー符号化部（５９０）は、ＢＶ予測部インデックス値を選択してエントロピー符号化することができ（イントラＢＣ予測の場合）、又はデフォルトのＢＶ予測部を使用できる。場合によっては、ヘッダフォーマッタ／エントロピー符号化部（５９０）は、（ＢＶ値のＢＶ予測部に対して）ＢＶ値のＢＶ差分も決定し、その後（例えば、コンテキスト適応型バイナリ算術符号化を使用して）ＢＶ差分をエントロピー符号化する。
【００８５】
ヘッダフォーマッタ／エントロピー符号化部（５９０）は、エンコード済みデータを符号化ビデオビットストリーム（５９５）内で提供する。符号化ビデオビットストリーム（５９５）の形式は、Ｈ．２６５／ＨＥＶＣ形式の変形又は拡張、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ形式、ＶＣ−１形式、ＭＰＥＧ−ｘ形式（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、又はＭＰＥＧ−４）、Ｈ．２６ｘ形式（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別の形式にすることができる。
【００８６】
実装及び目的の圧縮の種類に応じて、エンコーダ（５００）のモジュールの追加、省略、複数のモジュールへの分割、他のモジュールとの結合、及び／又は類似するモジュールへの置き換えを行うことができる。代替の実施形態では、異なるモジュール及び／又はモジュールのその他の構成を含むエンコーダが、記載された手法の１つ以上を実行する。エンコーダの具体的な実施形態は、通常、エンコーダ（５００）の変形又は補完されたバージョンを使用する。エンコーダ（５００）内のモジュール間で示された関係は、エンコーダ内の情報の一般的なフローを示しており、その他の関係は簡略化の目的で示されていない。
【００８７】
ＶＩ．ビデオデコーダの例
図６は、記載された一部の実施形態と併せて実装できる、一般化されたデコーダ（６００）のブロック図である。デコーダ（６００）は、符号化ビデオビットストリーム（６０５）においてエンコード済みデータを受信し、再構成済みビデオ（６９５）の画像を含む出力を生成する。符号化ビデオビットストリーム（６０５）の形式は、ＨＥＶＣ形式の変形又は拡張、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ  Ｖｉｄｅｏ形式、ＶＣ−１形式、ＭＰＥＧ−ｘ形式（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、又はＭＰＥＧ−４）、Ｈ．２６ｘ形式（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又は別の形式にすることができる。
【００８８】
デコーダ（６００）は、ブロックベースであり、実装に依存するブロック形式を使用する。ブロックは、さまざまな段階で、さらに細かく分割できる。例えば、画像を６４×６４ブロック、３２×３２ブロック、又は１６×１６ブロックに分割し、その後、サンプル値のさらに小さいブロックに分割できる。ＨＥＶＣ規格のデコーディングの実装では、画像はＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）、及びＴＵ（ＴＢ）に分割される。ブロック（例えば、ＣＵ）は、図９に示すように、イントラＢＣ予測の目的で、さらに小さいブロック（例えば、ＰＵ）に非対称に分割できる。
【００８９】
デコーダ（６００）は、イントラ画像デコーディング及び／又はインター画像デコーディングを使用して画像を復元する。デコーダ（６００）のコンポーネントの多くは、イントラ画像デコーディング及びインター画像デコーディングの両方に使用される。これらのコンポーネントによって実行される正確な処理は、復元される情報の種類に応じて変わる場合がある。
【００９０】
バッファは、符号化ビデオビットストリーム（６０５）においてエンコード済みデータを受信し、受信したエンコード済みデータを構文解析部／エントロピーデコーダ（６１０）で使用できるようにする。構文解析部／エントロピーデコーダ（６１０）は、エンコーダ（５００）で実行されたエントロピー符号化の逆の処理（例えば、コンテキスト適応型バイナリ算術デコーディング）を通常は適用して、エントロピー符号化データをエントロピーデコードする。構文解析及びエントロピーデコードの結果として、構文解析部／エントロピーデコーダ（６１０）は、一般的制御データ（６２２）、量子化変換係数データ（６３２）、イントラ予測データ（６４２）、動きデータ（６５２）、及びフィルタ制御データ（６６２）を生成する。イントラ予測データ（６４２）に関して、ＢＶ予測部インデックス値が信号伝達された場合、構文解析部／エントロピーデコーダ（６１０）は、ＢＶ予測部インデックス値を（例えば、コンテキスト適応型バイナリ算術デコーディングを使用して）エントロピーデコードできる。場合によっては、構文解析／エントロピーデコーダ（６１０）は、（例えば、コンテキスト適応型バイナリ算術デコーディングを使用して）ＢＶ値のＢＶ差分もエントロピーデコードし、その後ＢＶ差分を対応するＢＶ予測部と結合して、ＢＶ値を再構成する。その他の場合、ＢＶ差分はビットストリームから省略され、ＢＶ値は単に（例えば、ＢＶ予測部インデックス値で示された）ＢＶ予測部になる。
【００９１】
一般的デコーディング制御（６２０）は、一般的制御データ（６２２）を受信し、制御信号（示されていない）をその他のモジュール（スケーラ／逆変換部（６３５）、イントラ画像予測部（６４５）、動き補償部（６５５）、及びイントラ／インタースイッチ）に供給して、デコード時にデコーディングパラメータを設定及び変更する。
【００９２】
現在の画像がインター画像予測を使用して予測され、動き補償部（６５５）が、ＭＶデータ、参照画像選択データ、及びマージモードインデックス値などの動きデータ（６５２）を受信する。動き補償部（６５５）は、ＭＶを、デコード済み画像バッファ（６７０）からの再構成済み参照画像に適用する。動き補償部（６５５）は、現在の画像のインター符号化ブロックに対する動き補償予測を生成する。デコード済み画像バッファ（６７０）は、参照画像として使用するために、１つ以上の以前に再構成された画像を格納する。
【００９３】
デコーダ（６００）内の別の経路では、イントラフレーム予測予測部（６４５）が、イントラ予測が空間予測、イントラＢＣ予測又は辞書モード、及び予測モード方向（イントラ空間予測の場合）、ＢＶ値（イントラＢＣ予測の場合）、又はオフセットと長さ（辞書モードの場合）を使用するかどうかを示す情報などのイントラ予測データ（６４２）を受信する。イントラ空間予測の場合、現在の画像の再構成（６３８）の値を使用して、予測モードデータに従って、イントラ画像予測部（６４５）は、現在の画像の現在のブロックのサンプル値を、現在の画像の近隣の以前に再構成されたサンプル値から空間的に予測する。又は、ＢＶ値を使用するイントラＢＣ予測の場合、イントラ画像予測部（６４５）は、現在のブロックのＢＶ値によって示されたイントラフレーム予測領域の以前に再構成されたサンプル値を使用して、現在のブロックのサンプル値を予測する。又は、イントラ画像辞書モードの場合、イントラ画像予測部（６４５）は、オフセットと長さを使用してピクセルを再構成する。
【００９４】
イントラ／インタースイッチが、特定のブロックに対する予測（６５８）として使用するために、動き補償予測又はイントラ画像予測の値を選択する。例えば、ＨＥＶＣ構文に従う場合、イントラ予測対象のＣＵ及びインター予測対象のＣＵを含むことができる画像のＣＵに対してエンコードされた構文要素に基づいて、イントラ／インタースイッチを制御できる。残差値がエンコード／信号伝達されている場合、デコーダ（６００）は予測（６５８）を再構成済み残差値と結合して、ビデオ信号からのコンテンツの再構成（６３８）を生成する。残差値がエンコード／信号伝達されなかった場合、デコーダ（６００）は予測（６５８）の値を再構成（６３８）として使用する。
【００９５】
残差値がエンコード／信号伝達された場合に残差を再構成するために、スケーラ／逆変換部（６３５）が量子化変換係数データ（６３２）を受信して処理する。スケーラ／逆変換部（６３５）において、スケーラ／逆量子化部が量子化変換係数に対して逆スケーリング及び逆量子化を実行する。逆周波数変換部が、逆周波数変換を実行して、再構成済み予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換部が逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆ＤＣＴ、その整数近似、又は別の種類の逆周波数変換（例えば、逆離散サイン変換又はその整数近似）にすることができる。エンコード時に周波数変換がスキップされた場合、逆周波数変換もスキップされる。その場合、スケーラ／逆量子化部は、予測残差データ（又はサンプル値データ）のブロックに対して逆スケーリング及び逆量子化を実行し、再構成された値を生成できる。
【００９６】
イントラ画像予測の場合、再構成（６３８）の値を、イントラ画像予測部（６４５）にフィードバックできる。インター画像予測の場合、再構成（６３８）の値をさらにフィルタリングできる。マージ部／フィルタ（６６５）において、デコーダ（６００）は、異なるタイルからのコンテンツを画像の再構成済みバージョンにマージする。デコーダ（６００）は、フレーム内の境界間での不連続性を適応的に滑らかにするために、フィルタ制御データ（６６２）及びフィルタ適応のルールに従ってデブロックフィルタリング及びＳＡＯフィルタリングを選択的に実行する。その他のフィルタリング（デリンギングフィルタリング又はＡＬＦ（示されていない）など）を、選択的又は追加的に適用できる。デコーダ（６００）の設定又はエンコード済みビットストリームデータ内の構文の指示に応じて、タイル境界を選択的にフィルタリングするか、又は全くフィルタリングしないことができる。デコード済み画像バッファ（６７０）は、今後の動き補償予測で使用するために、再構成済みの現在の画像をバッファリングする。
【００９７】
デコーダ（６００）は、後処理フィルタを含むこともできる。後処理フィルタ（６０８）は、デブロックフィルタリング、デリンギングフィルタリング、適応型Ｗｉｅｎｅｒフィルタリング、フィルム粒子再構成フィルタリング、ＳＡＯフィルタリング、又はその他の種類のフィルタリングを含むことができる。「インループ」フィルタリングは動き補償ループ内のフレームの再構成済みサンプル値に対して実行され、参照フレームのサンプル値に影響を与えるが、後処理フィルタ（６０８）は、ディスプレイに出力される前に、動き補償ループ外の再構成済みサンプル値に適用される。
【００９８】
実装及び目的の復元の種類に応じて、デコーダ（６００）のモジュールの、追加、省略、複数のモジュールへの分割、他のモジュールとの結合、及び／又は類似するモジュールへの置き換えを行うことができる。代替の実施形態では、異なるモジュール及び／又はモジュールのその他の構成を含むデコーダが、記載された手法の１つ以上を実行する。デコーダの具体的な実施形態は、通常、デコーダ（６００）の変形又は補完されたバージョンを使用する。デコーダ（６００）内のモジュール間で示された関係は、デコーダ内の情報の一般的なフローを示しており、その他の関係は簡略化の目的で示されていない。
【００９９】
ＶＩＩ．非対称パーティションを使用するイントラブロックコピー予測
このセクションでは、イントラＢＣ予測対象のブロックの非対称パーティションの例を示す。非対称パーティションを使用すると、エンコーダは、ブロック内の明確に定義されているが不規則な画像パターンにパーティションを適応させることができる。そのような不規則な画像パターンは、スクリーンキャプチャビデオ及びその他の人工的に作成されたビデオのテキスト、Ｗｅｂページ、及びその他の部分では一般的である。
【０１００】
Ａ．イントラＢＣ予測モード及びＢＶ値−概要
イントラＢＣ予測では、画像の現在のブロックのサンプル値は、同じ画像内のサンプル値を使用して予測される。ＢＶ値は、現在のブロックから、予測に使用されるサンプル値を含む画像の領域（「参照領域」）までの変位を示す。参照領域は、現在のブロックに対する予測値を提供する。予測に使用されるサンプル値は、以前に再構成されたサンプル値であり、そのためエンコード時にエンコーダで使用することができ、デコード時にデコーダで使用することができる。ＢＶ値はビットストリーム内で信号伝達され、デコーダはＢＶ値を使用して、予測に使用するための画像の参照領域を決定できる。この参照領域は、デコーダでも再構成される。イントラＢＣ予測は、イントラ画像予測の一形態である。画像のブロックに対するイントラＢＣ予測は、同じ画像内のサンプル値以外のサンプル値を使用しない。
【０１０１】
図７に、現在の画像（７１０）の現在のブロック（７３０）に対するイントラＢＣ予測を示す。現在のブロックは、符号化ユニット（ＣＵ）の符号化ブロック（ＣＢ）、予測ユニット（ＰＵ）の予測ブロック（ＰＢ）、変換ユニット（ＴＵ）の変換ブロック（ＴＢ）、又はその他のブロックにすることができる。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又はその他のサイズにすることができる。さらに一般的には、現在のブロックのサイズはｍ×ｎである。ここで、ｍとｎはそれぞれ整数であり、ｍとｎを同じ値にするか、又は異なる値にすることができる。そのため、現在のブロックを、正方形又は長方形にすることができる。或いは、現在のブロックを他の形状にすることができる。
【０１０２】
ＢＶ（７４０）は、現在のブロック（７３０）から、予測に使用されるサンプル値を含む画像の参照領域（７５０）までの変位（又はオフセット）を示す。ＢＶ（７４０）によって示される参照領域（７５０）は、現在のブロック（７３０）に対する「マッチングブロック」と呼ばれる場合もある。マッチングブロックは、現在のブロック（７３０）と同一である場合もあれば、現在のブロック（７３０）の近似である場合もある。現在のブロックの左上の位置が現在の画像内の位置（ｘ０、ｙ０）にあると仮定し、参照領域の左上の位置が現在の画像内の位置（ｘ１、ｙ１）にあると仮定する。ＢＶは、変位（ｘ１−ｘ０、ｙ１−ｙ０）を示す。例えば、現在のブロックの左上の位置が位置（２５６、１２８）にあり、参照領域の左上の位置が位置（１２６、１０４）にある場合、ＢＶ値は（−１３０、−２４）になる。この例では、負の水平変位は、現在のブロックの左側の位置を示し、負の垂直変位は、現在のブロックの上側の位置を示す。
【０１０３】
イントラＢＣ予測は、ＢＣ処理を使用して冗長性（画像内の繰り返しパターンなど）を利用することによって、符号化効率を向上できる。しかし、現在のブロックに対するマッチングブロックの検索は、エンコーダが評価できる候補ブロックの数を考えると、複雑な計算になり、時間がかかる可能性がある。図８に、ブロックマッチング処理における現在の画像（８１０）の現在のブロック（８３０）に対する候補ブロックの一部を示す。４つのＢＶ（８４１、８４２、８４３、８４４）は、４つの候補ブロックに対する変位を示す。候補ブロックは、現在の画像（８１０）の再構成されたコンテンツ内のいずれかの位置に存在する可能性がある。（ブロックは、一般に、左から右に符号化され、その後、上から下に符号化される。）候補ブロックは、ＢＶ（８４３、８４４）によって示された候補ブロックで示されているように、他の候補ブロックに重なる場合がある。
【０１０４】
一部の実装例では、イントラ予測対象領域（８５０）は、現在のブロック（８３０）と同じスライス及びタイル内に存在するように制約される。そのようなイントラＢＣ予測は、その他のスライス又はタイル内のサンプル値を使用しない。イントラ予測対象領域（８５０）の位置は、１つ以上の他の制約（例えば、検索範囲、インター符号化ブロックの再構成済みサンプル値の使用に関する制約）を受ける場合がある。或いは、イントラ予測対象領域（８５０）の位置は、現在の画像（８１０）の再構成済みコンテンツ内で制約されない（つまり、検索範囲全体）。
【０１０５】
イントラＢＣ予測の予測モードを伴うブロックは、ＣＢ、ＰＢ、又はその他のブロックにすることができる。ブロックがＣＢである場合、ブロックに対するＢＶは、ＣＵレベルで信号伝達できる（且つ、ＣＵ内のその他のＣＢは同じＢＶ又はそれのスケーリングされたバージョンを使用する）。又は、ブロックがＰＢである場合、ブロックに対するＢＶは、ＰＵレベルで信号伝達できる（且つ、ＰＵ内のその他のＰＢは同じＢＶ又はそれのスケーリングされたバージョンを使用する）。さらに一般的には、イントラＢＣ予測ブロックに対するＢＶは、そのブロックに適した構文レベルで信号伝達される。
【０１０６】
イントラＢＣ予測モードに従う予測のブロックコピー処理は、ＣＢ（ＢＶがＣＢごとに信号伝達される場合）又はＰＢ（ＢＶがＰＢごとに信号伝達される場合）のレベルで実行できる。例えば、１６×１６  ＣＢに１つの１６×１６  ＰＢが含まれていると仮定する。ＢＶ（ＰＢに対する）は、１６×１６領域をブロックコピーするために適用される。イントラ予測領域が、予測対象の１６×１６ブロックと重複しないように制約されている場合、ＢＶは、少なくとも水平又は垂直に１６の大きさ（絶対値）を持つ。
【０１０７】
或いは、ブロックコピー処理は、ＰＢ又はＣＢに関してＢＶが信号伝達される場合でも、ＰＢ又はＣＢ内のＴＢのレベルで実行できる。このようにして、ＴＢに適用されるＢＶは、同じＰＢ又はＣＢ内の他のＴＢの位置を参照できる。例えば、１６×１６  ＣＢが１つの１６×１６  ＰＢを含むが、残差符号化／デコーディングの目的で１６個の４×４  ＴＢに分割されると仮定する。ＢＶ（ＰＢに対する）が、ラスタースキャン順序内の１番目のＴＢの４×４領域をブロックコピーするために適用され、次に、同じＢＶが、ラスタースキャン順序内の２番目のＴＢの４×４領域をブロックコピーするために適用され、３番目以降にも同様に適用される。残差値を以前に再構成されたＴＢに対する予測値と結合した後に、ＴＢに対するＢＣ処理で使用される４×４領域は、同じＣＢ内の以前に再構成されたＴＢ内の位置を含むことができる。（それでもＢＶは、予測対象の同じＴＢ内の位置を参照しない。）ＢＣ処理をＴＢレベルで適用することで、相対的に小さい大きさでのＢＶの使用が促進される。
【０１０８】
ＴＢレベルの重複によって、ＰＵ内のＴＵに対する再構成において、暗黙的に逐次依存性が生じる。これによって、並列計算の機会が減り、ハードウェアレベルでのスループットが低下する可能性がある。ＰＵレベルの重複は、ＴＢ間のそのような逐次依存性を取り除くことができる。その場合、ブロックコピー処理は、重複が可能なＰＢのレベルで実行される。このようにして、ＰＢに適用されるＢＶは、同じＣＢ内の他のＰＢの位置を参照できる。イントラＢＣ予測の目的で、１６×１６  ＣＢが２つのＰＢ（例えば、２つの１６×８  ＰＢ、又は２つの８×１６  ＰＢ、又は４×１６  ＰＢと１２×１６  ＰＢなど）に分割されると仮定する。１つのＰＢに対するＢＶが適用されて、そのＰＢの領域をブロックコピーし、次に、他のＰＢに対するＢＶが適用されて、他のＰＢの領域をブロックコピーする。残差値を１番目のＰＢに対する予測値と結合した後に、２番目のＰＢに対するＢＣ処理で使用される領域は、同じＣＢ内の以前に再構成された１番目のＰＢ内の位置を含むことができる。（それでもＢＶは、予測対象の同じＰＢ内の位置を参照しない。）ＢＣ処理をＰＢレベルで適用することで、（ＣＢレベルでのＢＣ処理の適用と比較して）相対的に小さい大きさでのＢＶの使用が促進される。また、ＢＣ処理がＰＢレベルで適用される場合でも、ＴＵレベルの並列処理が依然としてＰＢ内のＴＢに対して可能である。
【０１０９】
ＣＵの彩度ブロックに対するイントラＢＣ予測処理は、通常、ＣＵの輝度ブロックに対するイントラＢＣ予測処理に対応する。通常、ＣＵにおいて、彩度ＰＢ及び彩度ＴＢのセグメンテーションは、輝度ＰＢ及び輝度ＴＢのセグメンテーションに直接対応する。ビデオの形式がＹＵＶ  ４：４：４である場合、彩度ＰＢ及びＴＢのサイズは、対応する輝度ＰＢ及びＴＢのサイズに一致する。ビデオの形式がＹＵＶ  ４：２：０である場合、彩度ＰＢ及びＴＢの幅と高さは、対応する輝度ＰＢ及びＴＢの幅と高さの半分になる。ただし、輝度ＴＢが最小変換サイズである場合、その最小変換サイズを持っている１つの彩度ＴＢが使用される。ビデオの形式がＹＵＶ  ４：２：２である場合、彩度ＰＢ及びＴＢの幅は、対応する輝度ＰＢ及びＴＢの幅の半分になる。
【０１１０】
一部の実装では、イントラＢＣ予測対象のＣＵに関して、ＰＵ内の彩度ブロックに対するイントラＢＣ予測は、恐らくは彩度データの解像度が輝度データよりも低い場合にスケーリング及び丸め処理を行った後に（例えば、形式がＹＵＶ  ４：２：０形式である場合に、ＢＶ値が水平成分及び垂直成分に関して２つに分割される、又は形式がＹＵＶ  ４：２：２形式である場合に、ＢＶ値が水平成分関して２つに分割される）、ＰＵ内の輝度ブロックに対するイントラＢＣ予測と同じＢＶ値を使用する。或いは、ＰＵの輝度ブロック及び彩度ブロックに関して、異なるＢＶ値を信号伝達できる。
【０１１１】
一部の実装では、エンコーダは、ＢＶ推定時又はＭＶ推定時にＢＶ値又はＭＶ値を識別する場合に、輝度サンプル値を考慮する。例えば、エンコーダは、現在のブロック（例えば、ＰＵのＰＢ）の輝度サンプル値を、再構成済み輝度サンプル値に一致させようとする。ただし、得られたＢＶ値又はＭＶ値は、対応する彩度ブロックの彩度サンプル値にも適用できる。或いは、エンコーダは、ＢＶ推定時又はＭＶ推定時にＢＶ値又はＭＶ値を識別する場合に、輝度サンプル値及び対応する彩度サンプル値を考慮する。
【０１１２】
一部の実装では、ＰＵの輝度ブロックの予測モードがイントラＢＣ予測である場合、ＰＵの彩度ブロックの予測モードもイントラＢＣ予測である。例えば、ＰＵに関する予測モードが信号伝達される。或いは、ＰＵの輝度ブロック又は彩度ブロック（ただし、両方ではない）に対する予測モードをイントラＢＣ予測にすることができる。
【０１１３】
Ｂ．非対称パーティション
図９に、一部の実装例におけるイントラＢＣ予測のブロックのパーティションの例（９００）を示す。２Ｎ×２Ｎブロックが、イントラＢＣ予測を使用してエンコードされる。例えば、２Ｎ×２Ｎブロックは、６４×６４ブロック、３２×３２ブロック、１６×１６ブロック、又は８×８ブロックである。２Ｎ×２Ｎブロックには、分割を行わないイントラＢＣ予測を適用できる。又は、２Ｎ×２Ｎブロックは、図９に示すように、さまざまな方法で分割できる。
【０１１４】
２Ｎ×２Ｎブロックは、水平に分割して２つのパーティションにすることができる。対称分割の場合、２つのパーティションの大きさを同じ（２つの２Ｎ×Ｎブロック）にすることができる。又は、２つのパーティションを非対称にすることができる。例えば、上側パーティションを２Ｎ×Ｎ／２ブロックにし、下側パーティションを２Ｎ×３Ｎ／２ブロックにする。又は、別の例として、上側パーティションを２Ｎ×３Ｎ／２ブロックにし、下側パーティションを２Ｎ×Ｎ／２ブロックにする。したがって、６４×６４ブロックを２つの６４×３２ブロック、６４×１６ブロックと６４×４８ブロック、又は６４×４８ブロックと６４×１６ブロックに分割することができる。３２×３２、１６×１６、又は８×８ブロックを、同様に水平に分割できる。
【０１１５】
代わりに、２Ｎ×２Ｎブロックを垂直に分割して２つのパーティションにすることができる。対称分割の場合、２つのパーティションの大きさを同じ（２つのＮ×２Ｎブロック）にすることができる。又は、２つのパーティションを非対称にすることができる。例えば、左側パーティションをＮ／２×２Ｎブロックにし、右側パーティションを３Ｎ／２×２Ｎブロックにする。又は、別の例として、左側パーティションを３Ｎ／２×２Ｎブロックにし、右側パーティションをＮ／２×２Ｎブロックにする。したがって、６４×６４ブロックを２つの３２×６４ブロック、１６×６４ブロックと４８×６４ブロック、又は４８×６４ブロックと１６×６４ブロックに分割することができる。３２×３２、１６×１６、又は８×８ブロックを、同様に垂直に分割できる。
【０１１６】
又は、２Ｎ×２Ｎブロックを４つのＮ×Ｎパーティションに分割し、それらをさらに細かく分割することができる。例えば、図９に示すように、特定のＮ×Ｎパーティションを、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる。したがって、６４×６４ブロックを４つの３２×３２ブロックに分割することができ、それらの各ブロックを、２つの３２×１６ブロック、２つの１６×３２ブロック、又は４つの１６×１６ブロックにさらに分割できる。３２×３２、１６×１６、又は８×８ブロックを、四分木分割によって４つのパーティションに同様に分割できる。
【０１１７】
本明細書で使用されているように、「Ｎ×Ｎ」パーティションという用語は、ほとんどの場合、２Ｎ×２Ｎパーティションと見なすこともできる。Ｈ．２６５／ＨＥＶＣの実装において、Ｎ×Ｎという用語は、通常、ＣＵ又はＣＢではなく、ＰＵ又はＰＢを説明するために使用される。本明細書で使用されているように、「Ｎ×Ｎパーティション」又は「Ｎ×Ｎブロック」という用語は、２Ｎ×２Ｎの現在のブロックのパーティションを（例えば、パーティションモードのトップダウン評価又はパーティションモードのボトムアップ評価の一部として）示す。この文脈において、Ｎ×Ｎパーティション又はＮ×Ｎブロックは、Ｎ×Ｎパーティション又はＮ×Ｎブロックが最小サイズで、さらに細かく分割されない場合を除き、それ自体２Ｎ×２Ｎブロックと見なすことができ、さらに細かい分割においてもそのように扱うことができる。Ｎ×Ｎパーティション又はＮ×Ｎブロック内のパーティションの表記法は、同様に調整できる。
【０１１８】
非対称パーティションのサイズをＮ／２の倍数に制限することで、エンコード時にどのパーティションモードを使用するかを評価する場合の複雑さを軽減できる。或いは、エンコーダは、その他のパーティションサイズ（例えば、Ｎ／４の倍数、又はさらに一般的には、ｍ×ｎのパーティションサイズ）を検討できる。その他のパーティションサイズ検討することで、符号化利得がわずかに向上する場合があるが、エンコード時の検索処理の複雑さも増大し、信号伝達のオーバーヘッドが増える可能性がある。
【０１１９】
Ｃ．非対称パーティションを使用するイントラＢＣ予測を含むエンコーディング又はデコーディングのための手法の例
図１０は、非対称パーティションを使用するイントラＢＣ予測を含むエンコーディングのための一般化手法（１０００）を示す。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、手法（１０００）を実行できる。図１１は、非対称パーティションを使用するイントラＢＣ予測を含むデコーディングのための一般化手法（１１００）を示す。図４又は図６を参照して説明されているような画像エンコーダ又はビデオエンコーダは、手法（１１００）を実行できる。
【０１２０】
図１０を参照すると、エンコーダは画像又はビデオをエンコードして（１０１０）エンコード済みデータを生成する。エンコーディングの一部として、エンコーダは、イントラＢＣ予測のために非対称に分割された現在のブロックに対して、イントラＢＣ予測を実行する。具体的には、現在のブロックを、異なる大きさを持つ２つのパーティションに分割できる。エンコーダは、エンコード済みデータをビットストリームの一部として出力する（１０２０）。
【０１２１】
図１１を参照すると、デコーダはエンコード済みデータをビットストリームの一部として受信する（１１１０）。デコーダは、エンコード済みデータをデコードして（１１２０）画像又はビデオを再構成する。デコーディングの一部として、デコーダは、イントラＢＣ予測のために非対称に分割された現在のブロックに対して、イントラＢＣ予測を実行する。具体的には、現在のブロックを、異なる大きさを持つ２つのパーティションに分割できる。
【０１２２】
例えば、現在の２Ｎ×２Ｎブロックが水平に分割されて、（１）２Ｎ×Ｎ／２ブロック及び２Ｎ×３Ｎ／２ブロック、又は（２）２Ｎ×３Ｎ／２ブロック及び２Ｎ×Ｎ／２ブロックになる。又は、現在の２Ｎ×２Ｎブロックが垂直に分割されて、（１）Ｎ／２×２Ｎブロック及び３Ｎ／２×２Ｎブロック、又は（２）３Ｎ／２×２Ｎブロック及びＮ／２×２Ｎブロックになる。或いは、現在のブロックを、他の何らかの方法で非対称に分割する。
【０１２３】
他のブロックを、イントラＢＣ予測のために、対称に分割できる。例えば、前記他のブロックが、（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックに分割された２Ｎ×２Ｎブロックであり、これらはそれぞれ、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる。さらに一般的には、対称分割では、前記他のブロックを、同じ大きさを持つパーティションに分割できる。
【０１２４】
ＶＩＩＩ．分割するためのエンコーダ側のアプローチ
このセクションでは、動き推定時又はブロックベクトル推定時（イントラＢＣ予測の場合）にパーティションを識別するためのエンコーダ側のさまざまなアプローチを示す。
【０１２５】
例えばセクションＶ、ＶＩＩ．Ａ、ＩＸ、及びＸにおいて、イントラＢＣ予測及びＢＶ推定の例が示されている。ＢＶ推定は、現在のブロックに対して可能な多数の候補ブロックを考えると、計算が複雑になる場合がある。ＢＶ推定の計算の複雑さは、ＢＶ値の検索範囲が画像の以前に再構成されたすべての領域を包含している場合、現在のブロックと比較される候補ブロックが大量になるため、特に問題になる。フレーム全体の候補ブロックについては、処理の数がさらに多くなる。エンコーダが非対称パーティションを評価する場合、ＢＶ推定の複雑さはさらに増大する。
【０１２６】
動き推定の計算の複雑さも、以下のセクションで説明されているように、非常に大きくなる場合がある。
【０１２７】
Ａ．動き推定及びＭＶ値−概要
動き推定では、現在の画像の現在のブロックのサンプル値は、参照画像と呼ばれる別の画像のサンプル値を使用して予測される。動きベクトル（ｍｏｔｉｏｎ  ｖｅｃｔｏｒ：ＭＶ）値は、参照画像内の現在のブロックの位置から、予測に使用されるサンプル値を含む参照画像の領域（「参照領域」）までの変位を示す。参照領域は、現在のブロックに対する予測値を提供する。予測に使用されるサンプル値は、以前に再構成されたサンプル値であり、そのためエンコード時にエンコーダで使用することができ、デコード時にデコーダで使用することができる。ＭＶ値はビットストリーム内で信号伝達され、デコーダはＭＶ値を使用して、予測に使用するための参照画像の参照領域を決定できる。この参照領域は、デコーダでも再構成される。複数の参照画像を使用できる場合、ビットストリームは、どの参照画像を参照領域の検索に使用するかの指示を含むこともできる。
【０１２８】
図１２は、現在の画像（１２１０）の現在のブロック（１２３０）に対する動き推定を示す。現在のブロックは、符号化ユニット（ＣＵ）の符号化ブロック（ＣＢ）、予測ユニット（ＰＵ）の予測ブロック（ＰＢ）、変換ユニット（ＴＵ）の変換ブロック（ＴＢ）、又はその他のブロックにすることができる。現在のブロックのサイズは、６４×６４、３２×３２、１６×１６、８×８、又はその他のサイズにすることができる。さらに一般的には、現在のブロックのサイズはｍ×ｎである。ここで、ｍとｎはそれぞれ整数であり、ｍとｎを同じ値にするか、又は異なる値にすることができる。そのため、現在のブロックを、正方形又は長方形にすることができる。或いは、現在のブロックを他の形状にすることができる。
【０１２９】
ＭＶ値（１２４０）は、現在のブロック（１２３０）の位置から、予測に使用されるサンプル値を含む参照画像（１２５０）内の参照領域（参照ブロックと呼ばれる場合もある）までの変位（又はオフセット）を示す。ＭＶ値（１２４０）によって示される参照領域は、現在のブロック（１２３０）に対する「マッチングブロック」と呼ばれる場合もある。マッチングブロックは、現在のブロック（１２３０）と同一である場合もあれば、現在のブロック（１２３０）の近似である場合もある。現在のブロック（１２３０）の左上の位置が現在の画像（１２１０）の位置（ｘ０、ｙ０）にあると仮定し、参照領域の左上の位置が参照画像（１２５０）内の位置（ｘ１、ｙ１）にあると仮定する。ＭＶ値（１２４０）は、変位（ｘ１−ｘ０、ｙ１−ｙ０）を示す。例えば、現在のブロックの左上の位置が位置（２５６、１２８）にあり、参照領域の左上の位置が位置（１２６、１０４）にある場合、ＭＶ値は（−１３０、−２４）になる。この例では、負の水平変位は、現在のブロックの左側の位置を示し、負の垂直変位は、現在のブロックの上側の位置を示す。
【０１３０】
現在のブロック（１２３０）に対する参照領域は、動き推定時に複数の候補ブロックから選択される。図１２に、動き推定における現在の画像（１２１０）の現在のブロック（１２３０）に対する候補ブロックの一部も示す。４つのＭＶ値（１２４１、１２４２、１２４３、１２４４）は、４つの候補ブロックに対する変位を示す。一般に、候補ブロックは、参照画像（１２５０）内のいずれかの位置に存在する可能性がある。候補ブロックは、ＭＶ値（１２４３、１２４４）によって示された候補ブロックで示されているように、他の候補ブロックに重なる場合がある。動き推定の計算の複雑さは、ＭＶ値の検索範囲が参照画像をすべて包含している場合、現在のブロックと比較される候補ブロックが大量になるため、特に問題になる。この計算の複雑さは、動き推定が複数の参照画像に対して実行される場合に悪化する。
【０１３１】
Ｂ．ＢＶ値及びＭＶ値の精度
本明細書に記載された例の多くにおいて、ＢＶ値は整数のサンプル精度を持つ。そのようなＢＶ値は、整数のサンプルオフセットを示す。イントラＢＣ予測は、人工的に作成されたビデオ（スクリーンコンテンツビデオ）をエンコードする場合にしばしば使用される。そのような場合、分数のサンプルの変位はまれであるため、ＢＶ値には整数のサンプル精度で十分である。或いは、ＢＶ値は分数のサンプルオフセットを示すことができる。例えば、１／２のサンプル精度を持つＢＶ値は、１／２のサンプルオフセット（１．５サンプル、２．５サンプルなど）を使用して水平及び／又は垂直変位を示すことができる。又は、１／４のサンプル精度を持つＢＶ値は、１／４、１／２、又は３／４のサンプルオフセットを使用して水平及び／又は垂直変位を示すことができる。又は、１／８のサンプル精度を持つＢＶ値は、１／８、１／４、３／８、１／２、５／８、３／４、又は７／８のサンプルオフセットを使用して水平及び／又は垂直変位を示すことができる。又は、ＢＶ値は、その他の精度を持つことができる。
【０１３２】
一方、ＭＶ値は、自然なビデオをエンコードする場合には分数のサンプルの変位が一般的であるため、通常は分数のサンプル精度を持つ。例えば、ＭＶ値は、１／２のサンプル精度、１／４のサンプル精度、１／８のサンプル精度、又はその他の精度を持つことができる。或いは、ＭＶ値は整数のサンプル精度を持つ。
【０１３３】
Ｃ．パーティションを識別するためのアプローチ
一般に、エンコーダは、動き推定時又はＢＶ推定時（イントラＢＣ予測の場合）にパーティションを識別する場合、トップダウンアプローチ又はボトムアップアプローチを使用できる。ボトムアップアプローチは、最初に最小サイズのパーティションのオプションを評価し、その後、その初期評価の結果を使用して、連続的にサイズが大きいパーティションのオプションを評価する。ボトムアップアプローチは、計算コストが高くなる可能性がある。一方、トップダウンアプローチは、より大きいサイズのパーティションのオプションを最初に評価し、その後、その初期評価の結果を使用して、連続的にサイズが小さいパーティションのオプションを評価する。トップダウンアプローチは、ブロックを分割するための最適な方法を識別する可能性が低いが、通常はボトムアップアプローチよりも計算が単純である。
【０１３４】
分割アプローチに関する詳細については、次を参照のこと。すなわち、（１）Ｓｕｌｌｉｖａｎ他、「Ｅｆｆｉｃｉｅｎｔ  Ｑｕａｄｔｒｅｅ  Ｃｏｄｉｎｇ  ｏｆ  Ｉｍａｇｅｓ  ａｎｄ  Ｖｉｄｅｏ」、プロシーディング、ＩＥＥＥ  Ｉｎｔ．  Ｃｏｎｆ．  ｏｎ  Ａｃｏｕｓｔ．，Ｓｐｅｅｃｈ，ａｎｄ  Ｓｉｇｎａｌ  Ｐｒｏｃ．（ＩＣＡＳＳＰ）、カナダ、トロント、第４巻、２６６１〜２６６４ページ、１９９１年５月、（少なくとも一部の環境の下での）ツリー構造符号化のためのレート歪み検出における最適なツリーの識別方法についての説明、（２）Ｓｕｌｌｉｖａｎ他、「Ｒａｔｅ−Ｄｉｓｔｏｒｔｉｏｎ  Ｏｐｔｉｍｉｚｅｄ  Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ  ｆｏｒ  Ｖｉｄｅｏ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｕｓｉｎｇ  Ｆｉｘｅｄ  ｏｒ  Ｖａｒｉａｂｌｅ  Ｓｉｚｅ  Ｂｌｏｃｋｓ」、プロシーディング、ＩＥＥＥ  Ｇｌｏｂａｌ  Ｔｅｌｅｃｏｍ．Ｃｏｎｆ．（ＧＬＯＢＥＣＯＭ）、アリゾナ州、フェニックス、８５〜９０ページ、１９９１年１２月、（ツリーを使用する又は使用しない）動き補償へのレート歪み最適化の適用方法についての説明、及び（３）Ｓｕｌｌｉｖａｎ他、「Ｅｆｆｉｃｉｅｎｔ  Ｑｕａｄｔｒｅｅ  Ｃｏｄｉｎｇ  ｏｆ  Ｉｍａｇｅｓ  ａｎｄ  Ｖｉｄｅｏ」、ＩＥＥＥ  Ｔｒａｎｓ，ｏｎ  Ｉｍａｇｅ  Ｐｒｏｃ．、第ＩＰ−３巻３号、３２７〜３３１ページ、１９９４年５月、ツリー構造符号化のためのレート歪み検出における最適なツリーの識別方法についての詳細な説明。
【０１３５】
一部の実装形態では、エンコーダは、下で説明されているトップダウンアプローチ又はボトムアップアプローチのいずれかを適用して、ＰＵに対するパーティションを識別する。エンコーダは、ＰＵの輝度ＰＢの解析に基づいてＰＵに対するパーティションを設定できる。或いは、エンコーダは、ＰＵの輝度ＰＢ及び彩度ＰＢの両方の解析に基づいてＰＵに対するパーティションを設定できる。いずれの場合も、ＰＵごとに設定されたパーティションがＰＵのＰＢに適用される。或いは、エンコーダは、別の種類のユニット又はブロックに対してパーティションを識別する。
【０１３６】
１．パーティションを識別するためのトップダウンアプローチ
エンコーダは、ＢＶ推定時（イントラＢＣ予測の場合）又は動き推定時に現在のブロックのパーティションを識別する際に、トップダウンアプローチを使用できる。現在のブロックは、ＰＵのＰＢ又はその他の種類のブロックにすることができる。図１３は、イントラＢＣ予測対象のブロックを分割するためのトップダウンアプローチを説明するフローチャート及びそれに付随する図である。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、アプローチ（１３００）を使用できる。図１３に示されている例では、エンコーダは、非対称分割を使用してイントラＢＣ予測対象の２Ｎ×２Ｎブロックの少なくとも一部のパーティションを識別する。
【０１３７】
エンコーダは、２Ｎの大きさを使用するモードをチェックする（１３１０）。例えば、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つの２Ｎ×Ｎブロックのモード、２つのＮ×２Ｎブロックのモード、１つのＮ／２×２Ｎブロックと１つの３Ｎ／２×２Ｎブロックのモード（図１３に示された、左又は右に狭いブロックを含む２つのオプション）、及び１つの２Ｎ×Ｎ／２ブロックと１つの２Ｎ×３Ｎ／２ブロック（図１３に示された、上又は下に短いブロックを含む２つのオプション）のモードをチェックする。１６×１６  ＣＵの場合、例えば、エンコーダは１６×Ｐのサイズを持つすべてのＰＵ及びＰ×１６のサイズを持つすべてのＰＵをチェックする。ここで、Ｐは、許容される組み合わせにおいて４、８、１２、及び１６にすることができる。
【０１３８】
現在の２Ｎ×２Ｎブロックの特定のモードについて、エンコーダは、モードに従って現在の２Ｎ×２Ｎブロックのブロックに対するＢＶ値を決定する。現在の２Ｎ×２Ｎブロックのブロックに対して、エンコーダは、例えば（１）現在の画像内の近隣のブロックによって使用されたＢＶ値、（２）以前の画像の同一の位置にあるブロックによって使用されたＢＶ値、又は（３）以前の動き推定において現在の２Ｎ×２Ｎブロックのブロックに対して識別されたＭＶ値に基づいて、開始ＢＶ値を選択できる。その後、エンコーダは、現在の２Ｎ×２Ｎブロックのブロックに対する適切なＢＶ値を検出する。
【０１３９】
エンコーダは、２Ｎの大きさを使用する最適なモードを選択する（１３２０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。例えば、図１３において、エンコーダは、左Ｎ／２×２Ｎブロック及び右３Ｎ／２×２Ｎブロックを使用するモードを選択する。
【０１４０】
四分木としての２Ｎ×２Ｎブロックの分割後、エンコーダは、２Ｎ×２ＮブロックのＮ×Ｎブロックごとのモードもチェックする（１３３０）。例えば、エンコーダは、特定のＮ×Ｎブロックについて、１つのＮ×Ｎブロックのモード、２つのＮ×Ｎ／２ブロックのモード、２つのＮ／２×Ｎブロックのモード、及び４つのＮ／２×Ｎ／２ブロックのモードをチェックする。エンコーダは、各Ｎ×Ｎブロックを別々にチェックできる。８×８  ＣＵについては、例えば、エンコーダは１つの８×８  ＰＵ、２つの８×４  ＰＵ、２つの４×８  ＰＵ、及び４つの４×４  ＰＵをチェックする。
【０１４１】
特定のＮ×Ｎブロックの特定のモードについて、エンコーダは、モードに従って特定のＮ×Ｎブロックのブロックに対してＢＶ値を決定する。エンコーダは、例えば現在の２Ｎ×２Ｎブロックに対して識別されたＢＶ値に基づいて、開始ＢＶ値を選択できる。その後、エンコーダは、モードに従って特定のＮ×Ｎブロックのブロックに対する適切なＢＶ値を検出する。
【０１４２】
エンコーダは、各Ｎ×Ｎブロックのモードの最適な組み合わせを選択する（１３４０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。図１３に示されているように、異なるＮ×Ｎブロックが同じモード又は異なるモードを持つことができる。
【０１４３】
その後エンコーダは、２Ｎ×２Ｎブロックについて、２Ｎの大きさを使用する最適なモードと、各Ｎ×Ｎブロックの最適なモードの組み合わせとの間で選択する（１３５０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。
【０１４４】
２．パーティションを識別するためのボトムアップアプローチ
エンコーダは、トップダウンアプローチを使用する代わりに、ＢＶ推定時（イントラＢＣ予測の場合）又は動き推定時に現在のブロックのパーティションを識別する際に、ボトムアップアプローチを使用できる。図１４は、分割のためのボトムアップアプローチを使用するための一般化手法を説明するフローチャートである。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、手法（１４００）を実行できる。
【０１４５】
エンコーダは、画像又はビデオをエンコードして（１４１０）エンコード済みデータを生成する。エンコーディングの一部として（例えば、動き推定の一部として、又はイントラＢＣ予測のためのブロックベクトル推定の一部として）、エンコーダは現在の画像の現在のブロックに対して予測を計算する。現在のブロックは、ＰＵのＰＢ又はその他の種類のブロックにすることができる。予測を計算する場合、エンコーダはボトムアップアプローチを使用して現在のブロックのパーティションを識別する。エンコーダは、現在のブロックのパーティションが異なる大きさを持つ２つのパーティションになるように、現在のブロックを非対称に分割するか、又は現在のブロックのパーティションが同じ大きさを持つように、現在のブロックを対称に分割することができる。
【０１４６】
一般に、ボトムアップアプローチの場合、エンコーダは、現在のブロックについて、現在のブロック内のより小さいブロックに対して少なくとも一部のパーティションモードをチェックする。エンコーダは、より小さいブロックに対するＢＶ値又はＭＶ値などの結果をキャッシュする。その後、エンコーダは、現在のブロックに対するパーティションモードのチェックの計算の複雑さを低減するために、（より小さいブロックから）キャッシュされた結果を使用して現在のブロックに対して少なくとも一部のパーティションモードをチェックする。例えば、エンコーダは、より小さいブロックからキャッシュされた結果を使用して、現在のブロックに対してパーティションモードの（ＢＶ推定時の）開始ＢＶ値又は（動き推定時の）開始ＭＶ値を識別する。多くの場合、開始ＢＶ値（又はＭＶ値）が現在のブロックに対して使用され、検索処理を大幅に短縮する。図１５及び１６は、現在のブロックに対してパーティションを識別するためのボトムアップアプローチの例を示す。或いは、エンコーダは別のボトムアップアプローチを使用する。
【０１４７】
その後、エンコーダは、ビットストリームの一部としてエンコード済みデータを出力する（１４２０）。
【０１４８】
図１５は、イントラＢＣ予測対象のブロックを分割するためのボトムアップアプローチ（１５００）を説明するフローチャート及びそれに付随する図である。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、アプローチ（１５００）を使用できる。
【０１４９】
エンコーダは、四分木として分割された２Ｎ×２Ｎブロックについて、２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードをチェックする（１５１０）。例えば、エンコーダは、特定のＮ×Ｎブロックについて、１つのＮ×Ｎブロックのモード、２つのＮ×Ｎ／２ブロックのモード、２つのＮ／２×Ｎブロックのモード、及び４つのＮ／２×Ｎ／２ブロックのモードをチェックする。エンコーダは、各Ｎ×Ｎブロックを別々にチェックできる。例えば、エンコーダは、８×８  ＣＵについて、１つの８×８  ＰＵ、２つの８×４  ＰＵ、２つの４×８  ＰＵ、及び４つの４×４  ＰＵのモードをチェックする。
【０１５０】
特定のＮ×Ｎブロックの特定のモードについて、エンコーダは、モードに従って特定のＮ×Ｎブロックのブロックに対してＢＶ値を決定する。特定のＮ×Ｎブロックのブロックに対して、エンコーダは、例えば（１）現在の画像内の近隣のブロックによって使用されたＢＶ値、（２）以前の画像の同一の位置にあるブロックによって使用されたＢＶ値、又は（３）以前の動き推定において特定のＮ×Ｎブロックのブロックに対して識別されたＭＶ値に基づいて、開始ＢＶ値を選択できる。その後、エンコーダは、特定のＮ×Ｎブロックのブロックに対する適切なＢＶ値を検出する。
【０１５１】
エンコーダは、各Ｎ×Ｎブロックのモードの最適な組み合わせを選択する（１５２０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。図１５に示されているように、異なるＮ×Ｎブロックが同じモード又は異なるモードを持つことができる。
【０１５２】
エンコーダは、２Ｎ×２ＮブロックのＮ×Ｎブロックごとに、ベクトル値、パーティションモード情報、及び／又はモードのチェック（１５１０）のその他の結果をキャッシュする（１５３０）。例えば、エンコーダは、ＢＶ推定時のＢＶ値、及び２Ｎ×２ＮブロックのＮ×Ｎブロックに対するパーティションモード選択をキャッシュする。
【０１５３】
エンコーダは、多くの場合に検索処理を短縮することによって計算の複雑さを低減するために、キャッシュされた情報を使用して、２Ｎの大きさを使用するモードをチェックする（１５４０）。エンコーダは、キャッシュされた結果を使用して、２Ｎ×２Ｎブロックに対して（ＢＶ推定時に）開始ＢＶ値を識別できる。多くの場合、２Ｎ×２Ｎブロックの２Ｎの大きさのパーティションモードに対して開始ＢＶ値が使用され、検索処理を大幅に短縮する。
【０１５４】
例えば、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つの２Ｎ×Ｎブロックのモード、２つのＮ×２Ｎブロックのモード、１つのＮ／２×２Ｎブロックと１つの３Ｎ／２×２Ｎブロックのモード（図１５に示された、左又は右に狭いブロックを含む２つのオプション）、及び１つの２Ｎ×Ｎ／２ブロックと１つの２Ｎ×３Ｎ／２ブロック（図１５に示された、上又は下に短いブロックを含む２つのオプション）のモードをチェックする。例えば、エンコーダは、１６×１６  ＣＵについて、１６×１６  ＣＵの４つの８×８  ＣＵに対してパーティションモードをチェックした後にキャッシュされた情報を再利用する。多くの場合、１６×１６  ＣＵのパーティションモードは、８×８  ＣＵからキャッシュされたＢＶ値を最終的に使用し、検索処理を大幅に短縮する。
【０１５５】
エンコーダは、２Ｎの大きさを使用する最適なモードを選択する（１５５０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。例えば、図１５において、エンコーダは、左Ｎ／２×２Ｎブロック及び右３Ｎ／２×２Ｎブロックを使用するモードを選択する。
【０１５６】
その後エンコーダは、２Ｎ×２Ｎブロックについて、２Ｎの大きさを使用する最適なモードと、各Ｎ×Ｎブロックのモードの組み合わせとの間で選択する（１５６０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。
【０１５７】
図１５を参照して説明されている手法（１５００）は、インター符号化ブロックのボトムアップ分割にも使用できる。その場合、Ｎ×ＮブロックからのＭＶ値及びその他の結果がキャッシュされる。エンコーダは、キャッシュされた結果を使用して、２Ｎ×２Ｎブロックに対して（動き推定時に）開始ＭＶ値を識別できる。多くの場合、２Ｎ×２Ｎブロックの２Ｎの大きさのパーティションモードに対して開始ＭＶ値が使用され、検索処理を大幅に短縮する。
【０１５８】
図１６は、イントラＢＣ予測対象のブロックを分割するための、さらに高速なボトムアップアプローチ（１６００）を説明するフローチャート及びそれに付随する図である。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、アプローチ（１６００）のいずれかを使用できる。図１６のアプローチ（１６００）は、図１５のアプローチ（１５００）に類似しているが、検索処理をさらに短縮するために、複数の箇所が変更されている。
【０１５９】
エンコーダは、四分木として分割された２Ｎ×２Ｎブロックについて、２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードのサブセットをチェックする（１６１０）。つまり、エンコーダは、Ｎ×Ｎブロックごとに、モードの全部ではなく一部をチェックする。例えば、エンコーダは、特定のＮ×Ｎブロックについて、２つのＮ×Ｎ／２ブロックを使用するモードのみをチェックする。又は、別の例として、エンコーダは、２つのＮ／２×Ｎブロックを使用するモードのみをチェックする。エンコーダは、各Ｎ×Ｎブロックを別々にチェックできる。ただし、チェックするモードが少ないほど、検索処理が短縮される。或いは、エンコーダは、Ｎ×Ｎブロックごとに、その他及び／又は追加のモードをチェックする。
【０１６０】
複数のモードがチェックされた場合（１６１０）、エンコーダは、各Ｎ×Ｎブロックのモードの最適な組み合わせを選択する（１６２０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。１つのモードのみがチェックされた場合（１６１０）、エンコーダは単にＮ×Ｎブロックごとにそのモードを使用する。
【０１６１】
エンコーダは、２Ｎ×２ＮブロックのＮ×Ｎブロックごとに、ベクトル値、パーティションモード情報、及び／又はモードのチェック（１６１０）のその他の結果をキャッシュする（１６３０）。例えば、エンコーダは、ＢＶ推定時のＢＶ値、及び２Ｎ×２ＮブロックのＮ×Ｎブロックに対するパーティションモード選択をキャッシュする。
【０１６２】
エンコーダは、計算の複雑さを低減するために、キャッシュされた情報を使用して、２Ｎの大きさを使用するモードのサブセットをチェックする（１６４０）。例えば、エンコーダがＮ×ＮブロックのＮ×Ｎ／２ブロックのみをチェックした場合（１６１０）、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つの２Ｎ×Ｎブロックのモード、及び１つの２Ｎ×Ｎ／２ブロックと１つの２Ｎ×３Ｎ／２ブロックのモード（図１６に示された、上又は下に短いブロックを含む２つのオプション）をチェックする。又は、エンコーダがＮ×ＮブロックのＮ／２×Ｎブロックのみをチェックした場合（１６１０）、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つのＮ×２Ｎブロックのモード、及び１つのＮ／２×２Ｎブロックと１つの３Ｎ／２×２Ｎブロックのモード（図１６に示された、左又は右に狭いブロックを含む２つのオプション）をチェックする。
【０１６３】
又は、別の例として（図１６に示されていない）、エンコーダは、２Ｎ×２ＮブロックのＮ×ＮブロックごとにＮ×Ｎパーティションのみをチェックする（１６１０）。２Ｎ×２Ｎブロックがイントラ符号化ブロックである場合、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つのＮ×２Ｎブロックのモード、及び１つのＮ／２×２Ｎブロックと１つの３Ｎ／２×２Ｎブロック（左又は右に狭いブロックを含む）のモードをチェックする（１６４０）。２Ｎ×２Ｎブロックがインター符号化ブロックである場合、エンコーダは、１つの２Ｎ×２Ｎブロックのモード、２つの２Ｎ×Ｎブロックのモード、及び１つの２Ｎ×Ｎ／２ブロックと１つの２Ｎ×３Ｎ／２ブロック（上又は下に短いブロックを含む）のモードをチェックする（１６４０）。
【０１６４】
エンコーダは、２Ｎの大きさを使用する最適なモードを選択する（１６５０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。その後エンコーダは、２Ｎ×２Ｎブロックについて、２Ｎの大きさを持つ最適なモードと、各Ｎ×Ｎブロックのモードの組み合わせとの間で選択する（１６６０）。選択基準は、歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせにすることができ、又は選択基準は、その他の指標を使用できる（例えば、差異しきい値又はエッジ検出部を使用する）。
【０１６５】
図１６を参照して説明されている手法（１６００）は、インター符号化ブロックのボトムアップ分割にも使用できる。その場合、Ｎ×ＮブロックからのＭＶ値及びその他の結果がキャッシュされる。エンコーダは、キャッシュされた結果を使用して、２Ｎ×２Ｎブロックに対して（動き推定時に）開始ＭＶ値を識別できる。多くの場合、２Ｎ×２Ｎブロックの２Ｎの大きさのパーティションモードに対して開始ＭＶ値が使用され、検索処理を大幅に短縮する。
【０１６６】
図１５及び１６に示されたアプローチ（１５００、１６００）では、エンコーダはキャッシュされるＢＶ値又はＭＶ値の数を制限できる。例えば、エンコーダは、２Ｎ×２ＮブロックのＮ×Ｎブロックごとに、最適なパーティションモードのＢＶ値又はＭＶ値のみを格納する。或いは、エンコーダは、その他のＢＶ値又はＭＶ値も格納する。エンコーダの制約は、エンコーダが格納するＢＶ値又はＭＶ値の数を制御できる。
【０１６７】
ＩＸ．検索パターン
このセクションでは、動き推定又はイントラＢＣ予測で使用できるさまざまな検索パターンを示す。具体的には、検索パターンは、スクリーンキャプチャビデオ又はその他の人工的に作成されたビデオ内の一般的な種類の動きを利用する。そのようなビデオでは、ブロックの動きは、多くの場合、純粋に水平な動き又は純粋に垂直な動きである（例えば、コンピュータデスクトップ環境におけるＷｅｂページのコンテンツ又はアプリケーションのコンテンツのスクロール、或いは混合コンテンツビデオ内のティッカーグラフィックのスクロール）。このような意味において、検索パターンは、スクリーンキャプチャビデオ又はその他の人工的に作成されたビデオに適しているが、自然なビデオをエンコードする場合にも使用できる。
【０１６８】
図１７は、小さい近傍領域内の位置の反復評価及びより大きい近傍領域内の位置の反復確認を使用してブロックに対するＢＶ値又はＭＶ値を検索するための一般化手法（１７００）を説明するフローチャートである。図３又は図５ａ〜５ｂを参照して説明されているような画像エンコーダ又はビデオエンコーダは、手法（１７００）を実行できる。
【０１６９】
エンコーダは、画像又はビデオをエンコードしてエンコード済みデータを生成し、ビットストリームの一部としてエンコード済みデータを出力する。エンコード時に、エンコーダは現在の画像の現在のブロックの予測を（例えば、ＢＶ推定又は動き推定を使用して）計算する。エンコーダは、予測を計算する際に、予測のための現在の最適な位置を囲む小さい近傍領域内での反復評価によって、予測のための現在の最適な位置を識別する（１７１０）。例えば、小さい近傍領域は、現在の最適な位置に水平又は垂直に直接隣接している位置を含む。小さい近傍領域内の位置のいずれかが現在の最適な位置よりも良い結果を提供する場合、現在の最適な位置は、小さい近傍領域内のより良い位置に置き換えられ、その新しい位置が、それを囲む小さい近傍領域内でチェックされる。このようにして、小さい近傍パターンを使用する検索処理は、現在の最適な位置が、それを囲む小さい近傍領域内で最も良い位置になるまで、反復することができる。この近傍領域内で最も良い位置の検出は、反復の１回目で、又は複数回の反復の後に発生する場合がある。
【０１７０】
図１８ａ及び１８ｂは、ブロックに対してＢＶ値又はＭＶ値を検索する場合の小さい近傍領域内の位置の反復評価を説明している。図１８ａにおいて、現在の最適な位置は、黒い円で示されている。ダイヤ形パターン内の隣接位置（灰色の円で示される）が評価される。４つの隣接位置の結果が、（歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせに関して）現在の最適な位置の結果とそれぞれ比較される。図１８ａ及び１８ｂの例では、図１８ａ内の現在の最適な位置の下の位置が最も良い結果を提供し、現在の最適な位置になる。図１８ｂに示す次の反復では、新しい現在の最適な位置を囲むダイヤ形パターン内の隣接位置が評価される。或いは、小さい近傍領域を、別の形状にすることができる。
【０１７１】
エンコーダは、識別（１７１０）段階において反復回数を制限するために、しきい値を使用できる。しきい値は、実装によって変わり、例えば４回の反復になる。反復回数のしきい値に達した場合、エンコーダは、別の検索処理（例えば、完全な検索処理又はハッシュ処理）を実行して、予測のための最適な位置を決定できる。
【０１７２】
図１７に戻ると、エンコーダは、小さい近傍領域内で（反復回数のしきい値以内で）現在の最適な位置を識別した後に、予測のための現在の最適な位置を囲む連続するより大きい近傍領域内での反復評価によって、予測のための現在の最適な位置を確認する（１７２０）。例えば、より大きい近傍領域のそれぞれが、小さい近傍領域の外側のリング内にある位置を含む。連続するより大きい近傍領域は、各辺で１サンプルずつ、２サンプルずつ、又はその他の数分増やして拡大することができる。又は、連続するより大きい近傍領域は、何らかの係数によって拡大することができる。例えば、より大きい近傍領域の半径が、１回目の後の各反復において、２倍に拡大される。
【０１７３】
より大きい近傍領域内のいずれかの位置が、現在の最適な位置よりも良い結果を提供する場合、現在の最適な位置は、より大きい近傍領域内のより良い位置に置き換えられ、エンコーダは新しい現在の最適な位置で処理を再開する。そうでない場合（より大きい近傍領域内の位置が現在の最適な位置よりも良い結果を提供しない場合）、エンコーダは、確認（１７２０）処理の反復回数のしきい値に達するまで、次に大きい近傍領域で確認処理を繰り返す。しきい値は、実装によって変わり、例えば、連続するより大きい近傍領域に対する４〜７段階のチェックになる。
【０１７４】
最も大きい近傍領域が正常にチェックされた後に、エンコーダは検索処理を終了する。そうでない場合（判定１７３０に示されるように）、エンコーダは新しい現在の最適な位置で処理を再開する。
【０１７５】
図１９は、ブロックに対してＢＶ値又はＭＶ値を検索する場合の１つ以上のより大きい近傍領域内の位置の反復確認を示す。図１９では、現在の最適な位置が黒い円で示されている。エンコーダは、現在の最適な位置を囲む正方形（内側の正方形）の角及び中点にある８つの位置をチェックする。８つの位置は、図１９では灰色の円で示されている。８つの位置の結果はそれぞれ、（歪みコスト、ビットレートコスト、又は歪みコストとビットレートコストの組み合わせに関して）現在の最適な位置の結果と比較される。内側の正方形の８つの位置のいずれも、現在の最適な位置よりも良くない場合、エンコーダは、さらに大きい正方形（図１９の外側の正方形）の８つの位置（角及び中点）をチェックする。或いは、より大きい近傍領域は、別の形状（例えば、位置の円形）を持ち、さらに少ない評価対象の位置（例えば、角のみ）を含むか、又はさらに多い評価対象の位置（例えば、形状の外周にある位置）を含むことができる。
【０１７６】
第１しきい値（小さい近傍領域の反復回数）のカウンタは、識別（１７１０）段階が開始又は再開されるたびに、リセットすることができる。又は、エンコーダは、第１しきい値のカウンタを、処理（１７００）の開始時に１回だけリセットできる。同様に、第２しきい値（大きい近傍領域の反復回数）のカウンタは、確認（１７２０）段階が開始又は再開されるたびに、リセットすることができる。又は、エンコーダは、第２しきい値のカウンタを、処理（１７００）の開始時に１回だけリセットできる。処理（１７００）内でカウンタがリセットされた場合、エンコーダは別の制約を使用して、検索処理の継続時間を制限し、検索を妥当な時間内に確実に終了させることができる。
【０１７７】
図２０は、小さい近傍領域内の位置の反復評価及びより大きい近傍領域域内の位置の反復確認を使用してブロックに対してＢＶ値又はＭＶ値を検索するための手法の例を説明するフローチャートである。
【０１７８】
エンコーダは、第１カウンタ及び第２カウンタをリセットする（２０１０）。エンコーダは、現在の最適な位置を設定して（２０２０）評価する（現在の最適な位置の結果が、以前の評価からまだ使用できない場合）。次にエンコーダは、現在の最適な位置を囲む小さい近傍領域内の隣接位置を評価する（２０３０）（隣接位置の結果が、以前の評価からまだ使用できない場合）。エンコーダは、新しい最適な位置が検出されたかどうかを（結果を比較して）チェックする（２０４０）。新しい最適な位置が検出された場合、エンコーダは、第１カウンタを使用して第１しきい値に達したかどうかをチェックする（２０４２）。新しい最適な位置が検出されなかった場合、エンコーダは第１カウンタをインクリメントし（示されていない）、現在の最適な位置を、（隣接位置からの）新しい最適な位置になるように設定し（２０１０）、その位置から処理を続行する。このようにして、エンコーダは現在の最適な位置を囲む隣接位置の小さい近傍領域を反復的にチェックできる。
【０１７９】
第１しきい値に達した場合、エンコーダは完全な検索を実行する（２０８０）。或いは、エンコーダは、ハッシュ処理などの別の検索処理を使用する。
【０１８０】
新しい最適な位置が（判定２０４０で）検出されなかった場合、エンコーダは、現在の最適な位置を囲む位置のリングを評価する（２０５０）。エンコーダは、新しい最適な位置が検出されたかどうかを（結果を比較して）チェックする（２０６０）。新しい最適な位置が検出された場合、エンコーダは第１カウンタ及び第２カウンタをリセットし（２０９０）、現在の最適な位置を、（隣接位置からの）新しい最適な位置になるように設定し（２０１０）、その位置から処理を続行する。このようにして、エンコーダは処理を再開する（２０００）。
【０１８１】
そうでない場合（新しい最適な位置が判定（２０６０）で検出されなかった場合）、エンコーダは、第２カウンタを使用して第２しきい値に達したかどうかをチェックする（２０６２）。第２しきい値に達した場合、エンコーダは検索処理を（正常に）終了する。第２しきい値に達しなかった場合、エンコーダは第２カウンタをインクリメントして（示されていない）位置のリングを拡大し（２０７０）、現在の最適な位置を囲む（拡大された）位置のリングを評価する（２０５０）。
【０１８２】
このセクションで説明された例では、ＢＶ値及びＭＶ値は整数のサンプルオフセットを示す。或いは、ＢＶ値及び／又はＭＶ値は分数のサンプルオフセットを示すことができる。分数のサンプルオフセットが許容される場合、エンコーダは、図１７〜２０を参照して説明されているように、整数のサンプルオフセットを含むＢＶ値又はＭＶ値を識別できる。次にエンコーダは、整数のサンプルＢＶ値又はＭＶ値を囲む近傍領域内（例えば、整数のサンプルＢＶ値又はＭＶ値から１サンプルオフセットの範囲内）のＢＶ値又はＭＶ値を識別できる。
【０１８３】
或いは、分数のサンプルオフセットが許容される場合、エンコーダは、図１７〜２０を参照して説明されている各段階で許容される精度を使用して、分数のサンプルオフセットを含むＢＶ値又はＭＶ値を識別できる（つまり、小さい近傍領域内で分数のサンプルオフセットを含むＢＶ値又はＭＶ値を識別し、より大きい近傍領域内で分数のサンプルオフセットを含むＢＶ値又はＭＶ値を識別する、などである）。
【０１８４】
Ｘ．イントラＢＣ予測のためのＢＶ検索範囲の制約
一部の実装例では、エンコーダはＢＶ推定で完全な検索範囲を使用する。現在のブロックに対するＢＶ値を識別するために、再構成済みサンプル値の領域全体が検索される。完全な検索範囲の使用は、イントラＢＣ予測で使用するための最適なＢＶ値の識別に役立つ場合があるが、ＢＶ推定の複雑さを増す可能性もある。
【０１８５】
その他の実装例では、エンコーダは１つ以上の制約に従ってＢＶ検索範囲を制限する。ＢＶ検索範囲を制限することで、エンコード時及びデコード時にイントラＢＣ予測のために高速メモリアクセスによって参照される再構成済みサンプル値の領域を削減することができ、それによって実装コストが低下する傾向がある。
【０１８６】
このセクションの例では、エンコーダは、ＢＶ推定時にＢＶ値を識別する際に、現在の輝度ブロックの輝度サンプル値を考慮する。エンコーダは、現在のブロックの輝度サンプル値を、以前の輝度ブロックの再構成済み輝度サンプル値に一致させようとする。ただし、得られたＢＶ値は、対応する彩度ブロックの彩度サンプル値にも適用できる。
【０１８７】
図２１ａは、ＢＶ値の検索範囲に対する制約の例を示す。図２１ａは、現在のフレーム（２１１０）の現在のブロック（２１３０）に加えて、２つのＣＴＢ（２１２０、２１２２）によって定義された検索範囲を示している。現在のＣＴＢ（２１２０）は、現在のＣＴＵの一部であり、現在のブロック（２１３０）を含む。現在のＣＴＢ（２１２０）は、その左にあるＣＴＢ（２１２２）と共に、現在のブロック（２１３０）に対して許容できるＢＶを検出できる検索範囲を定義する。ＢＶ（２１４２、２１４４）は、検索範囲の外部にある領域を参照している。そのため、これらのＢＶ値（２１４２、２１４４）は許容されない。
【０１８８】
一部の実装例では、現在のブロックに対するＢＶ値の検索範囲は、現在のＣＴＢ及びその左にあるＣＴＢである。例えば、ＣＴＢのサイズは、６４×６４、３２×３２、又は１６×１６サンプル値にすることができ、これによって１２８×６４、６４×３２、又は３２×１６サンプル値の検索範囲が得られる。現在のＣＴＢ及びその左のＣＴＢのサンプル値のみが、現在のブロックに対するイントラＢＣ予測に使用される。これによって検索処理を制約することで、エンコーダの実装を簡略化する。これによって、デコーダがイントラ予測のために高速メモリ内でバッファリングするサンプル値の数を制限することで、デコーダの実装も簡略化する。（さらに小さいＣＴＵ／ＣＴＢサイズが選択された場合でも、デコーダは、可能性のある最大の大きさを持つ２つのＣＴＢのサンプル値を格納するために十分なバッファ能力を持つ。）別の制約は、イントラ予測が別のスライス又はタイルからのサンプル値を参照できないということである。現在のｍ×ｎブロックの左上の位置が（ｘ０、ｙ０）にあり、各ＣＴＢの大きさがＣＴＢｓｉｚｅＹ×ＣＴＢｓｉｚｅＹである場合、エンコーダは、水平成分ＢＶ［０］及び垂直成分ＢＶ［１］を持つ二次元のＢＶに関する以下のような制約をチェックできる。
・  Ｂ  Ｖ［０］  ≧  −（（Ｘ０  ％  ＣＴＢｓｉｚｅＹ）  ＋  ＣＴＢｓｉｚｅＹ）
・  ＢＶ［１］  ≧  −（ｙ０  ％  ＣＴＢｓｉｚｅＹ）
・  位置（ｘ０、ｙ０）、（ｘ０＋ＢＶ［０］、ｙ０＋ＢＶ［１］）、及び（ｘ０＋ＢＶ［０］＋ｍ−１、ｙ０＋ＢＶ［１］＋ｎ−１）でのサンプル値は、同じスライス内に存在しなければならない。
・  位置（ｘ０、ｙ０）、（ｘ０＋ＢＶ［０］、ｙ０＋ＢＶ［１］）、及び（ｘ０＋ＢＶ［０］＋ｍ−１、ｙ０＋ＢＶ［１］＋ｎ−１）でのサンプル値は、同じタイル内に存在しなければならない。
【０１８９】
実際は、最適なＢＶ値が水平又は垂直のいずれかの向きになる傾向がある場合、大きい正方形の検索範囲（ＳがＣＴＢｓｉｚｅＹであるＳ×Ｓ検索範囲など）又は大きい長方形の検索範囲（ＳがＣＴＢｓｉｚｅＹである２Ｓ×Ｓ検索範囲など）内の候補ＢＶ値を評価することは意味がない。代わりに、エンコーダは、可能性の高い候補ＢＶ値をまだ含んでいる、さらに小さい検索範囲を使用できる。ここで、さらに小さいＢＶ検索範囲は水平方向を向いている（例えば、２Ｓ×１／４Ｓ又は２Ｓ×３／４Ｓの大きさを持つ）か、垂直方向を向いている（例えば、１／４Ｓ×２Ｓ又は３／４Ｓ×２Ｓの大きさを持つ）。ほとんどのシナリオでは、エンコーダはＢＶ推定時にさらに少ないＢＶ値をチェックするが、それでも、大部分の適切なＢＶ値を検出する。
【０１９０】
水平バイアス（又は水平方向）を伴うＢＶ検索範囲は、垂直ＢＶ成分値よりも水平ＢＶ成分値の範囲が広い候補ＢＶ値を含む。反対に、垂直バイアス（又は垂直方向）を伴うＢＶ検索範囲は、水平ＢＶ成分値よりも垂直ＢＶ成分値の範囲が広い候補ＢＶ値を含む。
【０１９１】
ＢＶ検索範囲は、その他の制約を受けることもできる。例えば、ＢＶ検索範囲は、現在のブロックに対するいずれのＢＶ値が、現在のＣＴＢ及び／又は現在のＣＴＢの左にあるＣＴＢの内部に存在する領域を参照するという制約を受けることができる。つまり、ＢＶ検索範囲は、現在のＣＴＢ及びその左にあるＣＴＢの内部に収まる。又は、別の例として、ＢＶ検索範囲は、現在のブロックに対するいずれのＢＶ値が、現在のＣＴＢ及び／又は現在のＣＴＢの上にあるＣＴＢの内部に存在する領域を参照するという制約を受けることができる。つまり、ＢＶ検索範囲は、現在のＣＴＢ及びその上にあるＣＴＢの内部に収まる。ＢＶ検索範囲は、現在の画像の内部に収まるように制約することもできる。一部の実装では、ＢＶ検索範囲は、現在のスライス及び／又は現在のタイルの内部に収まるようにさらに制約される。
【０１９２】
ＢＶ検索範囲の遠い境界（現在のブロックから遠い）での制約に加えて、ＢＶ検索範囲は、近い境界（現在のブロックに近い）で制約することができる。例えば、一部の実装例では、ＣＵのサイズが２Ｎ×２Ｎの場合、ＰＵパーティションのサイズはＮ×Ｎ及び２Ｎ×Ｎ又はＮ×２Ｎになることができる。ここで、各ＰＵには独自のＢＶ又はその他のパーティションサイズが存在する。ただし、ＰＵのＢＶは、同じＣＵ内のその他のＰＵ領域を参照することを許容されない。ＢＶ検索範囲に対するこの制約によって、ＰＵレベルの重複の許容に関連する性能がやや低下するが、各ＰＵが独自のＢＶを持つことができるようになり、各ＣＵ内のＰＵを並列に再構成できるようになり、効率的なデコーディングを促進できる。
【０１９３】
或いは、ＣＢと、対応するイントラ予測領域との間の重複が許容される場合、エンコーダは重複処理を実行できる。その場合、水平バイアス又は垂直バイアスを伴うＢＶ検索範囲を、現在のＣＵに拡大できる。
【０１９４】
図２１ｂは、水平バイアス（水平方向）を伴う第１の代替検索範囲（２１８１）を示す。検索範囲（２１８１）は、最大２Ｓ×１／４Ｓの大きさを持つ。この検索範囲（２１８１）は、検索範囲（２１８１）のクロスハッチング部分及びハッチング部分で示されるように、現在のＣＴＢ及びその左にあるＣＴＢの内部に収まるように切り詰めることができる。又は、検索範囲（２１８１）を、現在のＣＴＢ内のいずれの部分（図２１ｂの検索範囲（２１８１）のハッチング部分で示される）も含まないように、さらに制約することができる。
【０１９５】
図２１ｃは、水平バイアスを伴う第２の代替検索範囲（２１８２）を示す。検索範囲（２１８２）は、最大２Ｓ×３／４Ｓの大きさを持つ。この検索範囲（２１８２）は、検索範囲（２１８２）のクロスハッチング部分及びハッチング部分で示されるように、現在のＣＴＢ及びその左にあるＣＴＢの内部に収まるように切り詰めることができる。又は、検索範囲（２１８２）を、現在のＣＴＢ内のいずれの部分（図２１ｃの検索範囲（２１８２）のハッチング部分で示される）も含まないように、さらに制約することができる。
【０１９６】
図２１ｄは、垂直バイアス（垂直方向）を伴う第３の代替検索範囲（２１８３）を示す。検索範囲（２１８３）は、最大１／４Ｓ×２Ｓの大きさを持つ。この検索範囲（２１８３）は、検索範囲（２１８３）のクロスハッチング部分及びハッチング部分で示されるように、現在のＣＴＢ及びその上にあるＣＴＢの内部に収まるように切り詰めることができる。又は、検索範囲（２１８３）を、現在のＣＴＢ内のいずれの部分（図２１ｄの検索範囲（２１８３）のハッチング部分で示される）も含まないように、さらに制約することができる。
【０１９７】
図２１ｅは、垂直バイアスを伴う第４の代替検索範囲（２１８４）を示す。検索範囲（２１８４）は、最大３／４Ｓ×２Ｓの大きさを持つ。この検索範囲（２１８４）は、検索範囲（２１８４）のクロスハッチング部分及びハッチング部分で示されるように、現在のＣＴＢ及びその上にあるＣＴＢの内部に収まるように切り詰めることができる。又は、検索範囲（２１８４）を、現在のＣＴＢ内のいずれの部分（図２１ｅの検索範囲（２１８４）のハッチング部分で示される）も含まないように、さらに制約することができる。
【０１９８】
ＢＶ推定時に、ビデオエンコーダ又は画像エンコーダは、以下のようなＢＶ推定を含むエンコーディングを実行できる。
【０１９９】
エンコーダは、画像の現在のブロックに対してＢＶを決定する。ＢＶは、画像内の領域への変位を示す。現在のブロックは、サイズＳを持つ現在のＣＴＢ内にある。エンコーダは、ＢＶの決定の一部として、領域が水平バイアス又は垂直バイアスを伴うＢＶ検索範囲内にあるという制約をチェックする。エンコーダは、ＢＶを使用して現在のブロックに対してイントラＢＣ予測を実行する。エンコーダは、ＢＶもエンコードする。例えば、エンコーダ、本願書の他の場所で説明されているように、ＢＣ予測を実行し、ＢＶをエンコードする。
【０２００】
さらに一般的には、エンコーダはイントラＢＣ予測を使用して画像のデータをエンコードする。エンコーディングは、水平バイアス又は垂直バイアスを伴うＢＶ検索範囲を使用してＢＶ推定処理を実行することを含む。エンコーダは、画像のエンコード済みデータを出力する。
【０２０１】
ＢＶ検索範囲は、水平バイアスを伴い、２Ｓ×１／４Ｓ又は２Ｓ×３／４Ｓの大きさを持つことができる。又は、さらに一般的には、水平にバイアスされたＢＶ検索範囲は、Ｓ〜２Ｓの範囲内の幅を持ち、１／４Ｓ〜３／４Ｓの範囲内の高さを持つ。又は、ＢＶ検索範囲は、垂直バイアスを伴い、１／４Ｓ×２Ｓ又は３／４Ｓ×２Ｓの大きさを持つことができる。又は、さらに一般的には、垂直にバイアスされたＢＶ検索範囲は、Ｓ〜２Ｓの範囲内の高さを持ち、１／４Ｓ〜３／４Ｓの範囲内の幅を持つ。
【０２０２】
エンコーダは、複数の使用可能なＢＶ検索範囲からＢＶ検索範囲を選択できる。例えば、エンコーダは、水平バイアスを伴う複数の検索範囲（２Ｓ×１／４Ｓ及び２Ｓ×３／４Ｓ検索範囲など）から選択する。又は、エンコーダは、垂直バイアスを伴う複数の検索範囲（１／４Ｓ×２Ｓ及び３／４Ｓ×２Ｓ検索範囲など）から選択する。又は、エンコーダは、水平バイアス又は垂直バイアスのいずれかを伴う複数の検索範囲から選択する。
【０２０３】
エンコーダは、１つ以上の以前のブロックの少なくとも一部のＢＶ値に基づいて、ＢＶ検索範囲を選択できる。例えば、以前のブロックは現在の画像内にある。又は、以前のブロックは１つ以上の以前の画像内にある。又は、以前のブロックは現在の画像又は１つ以上の以前の画像内にある。エンコーダは、以前のブロックのＢＶ値を考慮することによって、ＢＶ値の傾向（例えば、ほとんどのＢＶ値が強い水平ＢＶ成分を備えているが、垂直ＢＶ成分をほとんど又は全く備えていないといった傾向）を識別し、適切なＢＶ検索範囲を選択できる。ＢＶ検索範囲の選択は、その他の要因（例えば、ユーザ設定）によって変わる場合もある。
【０２０４】
以前のブロックのＢＶ値を、追跡できる。例えば、ＢＶ値のさまざまな範囲に対応し、カテゴリ／ビンごとに数を格納する異なるカテゴリ（又は「ビン」）でＢＶ値をヒストグラムとして整理するデータ構造を使用して追跡する。したがって、ヒストグラムデータ構造は、さまざまなＢＶ値の使用頻度に関する統計情報を提供できる。又は、ＢＶ値をその他の方法で追跡できる。例えば、エンコーダは現在の画像のブロックに対するＢＶ値を追跡し、その後、どのＢＶ検索範囲を使用するかを決定するために、現在のブロックを囲む近傍領域内の以前のブロックのＢＶ値を評価する。
【０２０５】
水平バイアス又は垂直バイアスを伴うより小さいＢＶ検索範囲を使用すると、より大きいＳ×Ｓ又は２Ｓ×Ｓ検索範囲を使用するよりも（レート歪み性能に関して）わずかに効率が低下する場合がある。多くのエンコーディングのシナリオでは、ＢＶ推定の計算の複雑さの軽減が、この不利益を正当化している。
【０２０６】
図２２は、ＢＶ値の選択に対する１つ以上の制約の下でイントラＢＣ予測モードを使用してエンコードするための手法（２２００）を示している。図３又は図５ａ〜５ｂを参照して説明されているようなエンコーダは、手法（２２００）を実行できる。
【０２０７】
開始するために、エンコーダは画像の現在のブロックに対してＢＶを決定する（２２１０）。現在のブロックは、ＣＢ、ＰＢ、又はその他の種類のブロックにすることができる。ＢＶは、画像内の領域への変位を示す。エンコーダは、ＢＶの決定において、１つ以上の制約をチェックする。
【０２０８】
エンコーダは、１つの可能な制約に従って、イントラＢＣ予測で使用されるサンプル値の範囲をチェックする。エンコーダは、候補イントラ予測領域が、現在のＣＴＢ及び１つ以上のその他のＣＴＢ（例えば、現在のＣＴＢの左にあるＣＴＢ）によって定義された範囲内にあることをチェックできる。例えば、ＢＶが第１成分ＢＶ［０］及び第２成分ＢＶ［１］を持ち、現在のブロックの左上の位置が位置（ｘ０、ｙ０）にあり、各ＣＴＢの幅がＣＴＢｗｉｄｔｈ、高さがＣＴＢｈｅｉｇｈｔである場合、ＢＶ［０］  ＞＝  −（（ｘ０  ％  ＣＴＢｗｉｄｔｈ）  ＋  ＣＴＢｗｉｄｔｈ）及びＢＶ［１］  ＞＝  −（ｙ０  ％  ＣＴＢｈｅｉｇｈｔ）の場合に制約が満たされる。エンコーダは、検索範囲内のＢＶ［０］及びＢＶ［１］の値に対する次の上限を同様にチェックできる：ＢＶ［０］  ＜  （ＣＴＢｗｉｄｔｈ  −  ｍ  −  （ｘ０  ％  ＣＴＢｗｉｄｔｈ））及びＢＶ［１］  ＜  （ＣＴＢｈｅｉｇｈｔ  −ｎ  −  （ｙ０  ％  ＣＴＢｈｅｉｇｈｔ））。或いは、検索範囲はさらに多い又は少ないＣＴＢを含むか、又は検索範囲はその他の方法で定義される。
【０２０９】
エンコーダは、別の可能な制約に従って、検索を現在のスライス及びタイルに制限する（すなわち、現在のブロック及び領域は、画像の１つ以下のスライス、及び画像の１つ以下のタイルの一部になる）。エンコーダは、現在のブロックの左上の位置、候補イントラ予測領域の左上の位置、及び候補イントラ予測領域の右下の位置が、１つのスライス及び１つのタイルの一部であることをチェックできる。例えば、（ｘ０、ｙ０）、（ｘ０  ＋  ＢＶ［０］、ｙ０  ＋  ＢＶ［１］）、及び（ｘ０  ＋  ＢＶ［０］  ＋  ｍ  −  １、ｙ０  ＋  ＢＶ［１］  ＋  ｎ  −  １）が１つのスライス及び１つのタイルの一部である場合に制約が満たされる。
【０２１０】
或いは、エンコーダはその他及び／又は追加の制約をチェックする。
【０２１１】
エンコーダは、ＢＶを使用して現在のブロックに対してイントラＢＣ予測を実行する（２２２０）。例えば、エンコーダは現在のブロック全体に対してイントラＢＣ予測を実行する。又は、エンコーダは、現在のブロックに関連付けられている複数のブロックに対してイントラＢＣ予測を実行する（例えば、複数のＴＢに対してＴＢごとに実行する。ここで、各ＴＢはＢＶを含む現在のＰＢに関連付けられている）。
【０２１２】
エンコーダは、ＢＶをエンコードする（２２３０）。エンコーダは、別のイントラＢＣ予測モードブロックに対して手法（２２００）を繰り返すことができる。
【０２１３】
イントラＢＣ予測の場合、エンコーダ及びデコーダは、再構成済みサンプル値を使用する。再構成されていないサンプル値が、まだエンコード及び再構成されていない画像の一部に存在する場合がある。再構成されていないサンプル値をイントラＢＣ予測に使用するのを防ぐために、エンコーダは、ＢＶの許容できる値に対して制約を設定し、実際の以前に再構成されたサンプル値のみがＢＶに従ってイントラＢＣ予測に使用されるようにする。
【０２１４】
一部の実装例では、エンコーダは、現在のブロック及び候補イントラ予測領域の右下の位置を含むブロックのＺスキャン順序を考慮することによって、ＢＶ値をチェックする。さらに具体的には、エンコーダは、位置（ｘ０＋ＢＶ［０］＋ｍ−１、ｙ０＋ＢＶ［１］＋ｎ−１）を含むブロックのＺスキャン順序が（ｘ０、ｙ０）を含むブロックのＺスキャン順序よりも小さいことをチェックする。この条件が成り立つ場合、イントラ予測領域の右下の位置を含むブロックがすでに再構成されている（したがって、残りのイントラ予測領域も構成されている）。ＢＶは、ＢＶ［０］＋ｍ  ≦  ０及びＢＶ［１］＋ｎ  ≦  ０の条件のうちの少なくとも１つも満足し、イントラ予測領域が現在のブロックと重複しないことを保証する。
【０２１５】
Ｚスキャン順序は、画像を分割するブロックの連続的に指定された順序に従う。図２３は、現在のブロック（２３３０）及び候補ＢＶのイントラ予測領域の右下位置を含んでいる可能性のあるブロックのＺスキャン順序（２３００）の例を示す。現在のブロック（２３３０）は、ＣＢ、ＰＢ、又はその他のブロックにすることができる。Ｚスキャン順序は、通常、左から右の順に１列にブロックに割り当てられ、連続する複数の行で上から下に繰り返される。ブロックが分割されると、Ｚスキャン順序は、分割されたブロック内で再帰的に割り当てられる。ＨＥＶＣ規格でのエンコーディング／デコーディングの実装の場合、Ｚスキャン順序は、ＣＴＢラスタースキャンパターン（１つのＣＴＢ行内では左から右に、連続する複数のＣＴＢ行では上から下に繰り返す）に従ってＣＴＢ間を進む。ＣＴＢが分割されると、Ｚスキャン順序は、分割されたＣＴＢ内の四分木のＣＢのラスタースキャンパターンに従う。また、ＣＢが（例えば、複数のＣＢ又は複数のＰＢに）分割されると、Ｚスキャン順序は、分割されたＣＢ内のブロックのラスタースキャンパターンに従う。
【０２１６】
或いは、イントラＢＣ予測をＴＢごとに実行できる場合、エンコーダ及びデコーダは、イントラ予測領域と現在のブロック（ＴＢ）との間で発生する可能性のある重複をチェックし、その後、そのチェック結果を使用して、イントラＢＣ予測処理のアプリケーションのために、現在のＴＢをさらに小さいＴＢに分割する必要があるかどうかを決定できる。現在のＴＢのサイズがｍ×ｎであると仮定する。ここで、ｍとｎを同じ値にするか、又は異なる値にすることができる。ＢＶ［０］  ＞  −ｍ及びＢＶ［１］  ＞  −ｎの場合、イントラ予測領域は現在のｍ×ｎ  ＴＢと重複している。これは、イントラＢＣ予測処理のアプリケーションのために、現在のｍ×ｎ  ＴＢをさらに小さいＴＢに分割しない限り、問題になる。したがって、ＢＶ［０］  ＞  −ｍ及びＢＶ［１］  ＞  −ｎの場合、エンコーダ及びデコーダは現在のＴＢをさらに小さいＴＢに分割する。さらに小さいＴＢに対して、同じ条件がチェックされる（例えば、再帰的にチェックされる）。これらのＴＢは、分割後のさらに小さいｍ及びｎの値についてもＢＶ［０］  ＞  −ｍ及びＢＶ［１］  ＞  −ｎであれば、さらに分割される場合がある。
【０２１７】
例えば、ＰＢのＢＶが（−９、−５）であり、現在のＴＢが３２×３２ブロックであると仮定する。エンコーダ及びデコーダは、−９  ＞  −３２及び−５  ＞  −３２であると判定し、イントラ予測領域（この領域の左上隅が−９、−５だけ変位する）が現在の３２×３２  ＴＢに重なることを示す。エンコーダ及びデコーダは、３２×３２  ＴＢを４つの１６×１６  ＴＢに分割する。１６×１６  ＴＢごとに、エンコーダ及びデコーダは、−９  ＞  −１６及び−５  ＞  −１６であると判定し、イントラ予測領域（この領域の左上隅が−９、−５だけ変位する）が現在の１６×１６  ＴＢに重なることを示す。エンコーダ及びデコーダは、各１６×１６  ＴＢを連続して４つの８×８  ＴＢに分割する。８×８  ＴＢの場合、（−９、−５）のＢＶが問題にならないため、８×８  ＴＢはさらに分割されることを強制されない。
【０２１８】
このシナリオでは、ＢＶ値及びＴＢのサイズのためにＴＢが分割された場合、エンコーダは、現在のＴＢをさらに小さいＴＢに分割するかどうかを伝えるフラグ値の信号伝達をスキップできる。その場合、エンコード済みデータのビットストリームは、デコーダに対して現在のＴＢをさらに小さいＴＢに分割するように指示するフラグを含まない。代わりにデコーダは、ＢＶ値及びＴＢのサイズのためにＴＢを分割する必要があるかどうかを推測できる。これにより、ＴＢの分割に関する情報を伝えるのに消費されるビットを省くことができる。
【０２１９】
ＢＶ推定の一部として、エンコーダは複数のアプローチのいずれかを使用できる。エンコーダは、完全な検索を使用して、検索範囲内で許容されるすべての候補ＢＶ値を評価できる。又は、エンコーダは、部分的検索を使用して、検索範囲内で許容される一部の候補ＢＶ値のみを評価できる。例えば、エンコーダは、現在のブロックに対して予測されたＢＶ値（例えば、１つ以上の近隣ブロックのＢＶ値に基づいて予測されたＢＶ値）で部分的検索を開始できる。エンコーダは、部分的検索の開始位置で候補ＢＶ値を評価した後、開始位置から距離を延長した位置で、１つ以上のその他の候補ＢＶ値を（例えば、らせん状の検索パターン又はその他のパターンに従って）評価できる。又は、エンコーダは、前のセクションで説明されているように、検索パターンを使用できる。特定の候補ＢＶ値を評価する場合、エンコーダはイントラ予測領域及び現在のブロック内のすべてのサンプル値を比較できる。又は、エンコーダはサンプル値のサブセット（つまり、値が評価されるサブサンプル）を評価できる。エンコーダは、イントラ予測領域と現在のブロックとの間でサンプル値を比較して歪みコストを決定する際に、平均二乗誤差、差の二乗の合計（ｓｕｍ  ｏｆ  ｓｑｕａｒｅｄ  ｄｉｆｆｅｒｅｎｃｅｓ：ＳＳＤ）、絶対差の合計（ｓｕｍ  ｏｆ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅｓ：ＳＡＤ）、又はその他の歪みの評価基準を計算できる。エンコーダは、候補ＢＶ値のエンコーディングに関連付けられたビットレートコストを決定することもできる。
【０２２０】
ＸＩ．代替及び変形
本明細書に記載された多くの例において、イントラＢＣ予測及び動き補償は別々のコンポーネント又は処理で実装され、ＢＶ推定及び動き推定は別々のコンポーネント又は処理で実装される。或いは、イントラＢＣ予測を動き補償の特殊ケースとして実装することができ、ＢＶ推定を動き推定の特殊ケースとして実装することができ、その場合、現在の画像が参照画像として使用される。そのような実装では、ＢＶ値はＭＶ値として信号伝達できるが、インター画像予測ではなく（現在の画像内の）イントラＢＣ予測に使用される。本明細書で使用されているように、「イントラＢＣ予測」という用語は、イントラ画像予測モジュール、動き補償モジュール、又はその他のモジュールのどれが使用されて予測が提供されるかにかかわらず、現在の画像内での予測を示す。同様に、ＢＶ値を、ＭＶ値を使用して、又は異なる種類のパラメータ又は構文要素を使用して表現することができ、ＢＶ推定を、イントラ画像推定モジュール、動き推定モジュール、又はその他のモジュールを使用して提供できる。
【０２２１】
開示された発明の原理を適用できる多くの可能な実施形態を考慮して、説明された実施形態が本発明の単なる望ましい例であり、本発明の範囲を制限していると見なしてはならないと認識されるべきである。むしろ、本発明の範囲は、以下の特許請求の範囲によって定義される。したがって、これらの特許請求の範囲及び精神に含まれるすべてのものを、本発明として請求する。
【０２２２】
上記の実施形態について、次の付記を記す。
（付記１）
画像又はビデオのエンコーダを実装するコンピューティングデバイスにおいて、
画像又はビデオをエンコードしてエンコード済みデータを生成するステップであって、イントラブロックコピー（ＢＣ）予測のために非対称に分割された現在のブロックに対してイントラＢＣ予測を実行するステップを含む、エンコードするステップと、
前記エンコード済みデータをビットストリームの一部として出力するステップと、
を含む方法。
（付記２）
前記エンコードするステップが、イントラＢＣ予測のために対称に分割された他のブロックに対して前記イントラＢＣ予測を実行するステップをさらに含み、前記他のブロックが２Ｎ×２Ｎブロックであり、前記他のブロックが（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックに分割され、これらのブロックをそれぞれ、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる、付記１に記載の方法。
（付記３）
画像又はビデオのデコーダを実装するコンピューティングデバイスにおいて、
エンコード済みデータをビットストリームの一部として受信するステップと、
前記エンコード済みデータをデコードして画像又はビデオを再構成するステップであって、イントラブロックコピー（ＢＣ）予測のために非対称に分割された現在のブロックに対して前記イントラＢＣ予測を実行するステップを含む、デコードするステップと、
を含む方法。
（付記４）
前記デコードするステップが、イントラＢＣ予測のために対称に分割された他のブロックに対して前記イントラＢＣ予測を実行するステップをさらに含み、前記他のブロックが２Ｎ×２Ｎブロックであり、前記他のブロックが（１）２つの２Ｎ×Ｎブロック、（２）２つのＮ×２Ｎブロック、又は（３）４つのＮ×Ｎブロックに分割され、これらのブロックをそれぞれ、２つのＮ×Ｎ／２ブロック、２つのＮ／２×Ｎブロック、又は４つのＮ／２×Ｎ／２ブロックにさらに分割できる、付記３に記載の方法。
（付記５）
前記現在のブロックが２Ｎ×２Ｎブロックであり、前記現在のブロックが（１）２Ｎ×Ｎ／２ブロック及び２Ｎ×３Ｎ／２ブロック、又は（２）２Ｎ×３Ｎ／２ブロック及び２Ｎ×Ｎ／２ブロックに分割される、付記１又は３に記載の方法。
（付記６）
前記現在のブロックが２Ｎ×２Ｎブロックであり、前記現在のブロックが（１）Ｎ／２×２Ｎブロック及び３Ｎ／２×２Ｎブロック、又は（２）３Ｎ／２×２Ｎブロック及びＮ／２×２Ｎブロックに分割される、付記１又は３に記載の方法。
（付記７）
前記現在のブロックが６４×６４ブロック、３２×３２ブロック、１６×１６ブロック、又は８×８ブロックである、付記１から６のいずれか一項に記載の方法。
（付記８）
前記ビデオが人工的に作成されたビデオである、付記１から７のいずれか一項に記載の方法。
（付記９）
コンピュータ実行可能命令によってプログラムされたコンピューティングデバイスに方法を実行させるための前記コンピュータ実行可能命令を格納する１つ又は複数のコンピュータ可読媒体であって、前記方法が、
画像又はビデオをエンコードしてエンコード済みデータを生成するステップであって、現在の画像の現在のブロックに対して予測を計算するステップを含み、前記予測を計算するステップがボトムアップアプローチを使用して前記現在のブロックのパーティションを識別する、ステップと、
前記エンコード済みデータをビットストリームの一部として出力するステップと、
を含む、１つ又は複数のコンピュータ可読媒体。
（付記１０）
前記予測が動き推定の一部であるか、又はイントラブロックコピー予測のためのブロックベクトル推定の一部である、付記９に記載の１つ又は複数のコンピュータ可読媒体。
（付記１１）
前記現在のブロックの前記パーティションが異なる大きさを持つ２つのパーティションである、付記９に記載の１つ又は複数のコンピュータ可読媒体。
（付記１２）
前記現在のブロックが２Ｎ×２Ｎブロックであり、前記ボトムアップアプローチが、
前記２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードをチェックするステップと、
前記２Ｎ×２Ｎブロックの前記Ｎ×Ｎブロックそれぞれに対して最適なモードを選択するステップと、
前記２Ｎ×２Ｎブロックの前記Ｎ×Ｎブロックそれぞれのベクトル値をキャッシュするステップと、
前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用するモードをチェックするステップであって、前記キャッシュされたベクトル値を使用するステップを含む、ステップと、
前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用する最適なモードを選択するステップと、
前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用する前記最適なモードと前記２Ｎ×２Ｎブロックの前記Ｎ×Ｎブロックそれぞれに対して選択された前記最適なモードとの間で選択するステップとを含む、付記９又は１０に記載の１つ又は複数のコンピュータ可読媒体。
（付記１３）
前記現在のブロックが２Ｎ×２Ｎブロックであり、前記ボトムアップアプローチが、
前記２Ｎ×２ＮブロックのＮ×Ｎブロックごとにモードのサブセットをチェックするステップと、
前記２Ｎ×２Ｎブロックの前記Ｎ×Ｎブロックそれぞれのベクトル値をキャッシュするステップと、
前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用するモードのサブセットをチェックするステップであって、前記キャッシュされたベクトル値を使用するステップを含む、ステップと、
前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用する最適なモードを選択するステップと、前記２Ｎ×２Ｎブロックに対して２Ｎの大きさを使用する前記最適なモードと前記２Ｎ×２Ｎブロックの前記Ｎ×Ｎブロックそれぞれに対する最適なモードとの間で選択するステップとを含む、付記９又は１０に記載の１つ又は複数のコンピュータ可読媒体。
（付記１４）
Ｎ×Ｎブロックごとのモードの前記サブセットが２つのＮ×Ｎ／２ブロックを使用するモードであり、２Ｎの大きさを使用するモードの前記サブセットが２Ｎ×２Ｎブロックを使用するモード、２つの２Ｎ×Ｎブロックを使用するモード、２Ｎ×Ｎ／２ブロックと２Ｎ×３Ｎ／２ブロックを使用するモード、及び２Ｎ×３Ｎ／２ブロックと２Ｎ×Ｎ／２ブロックを使用するモードである、付記１３に記載の１つ又は複数のコンピュータ可読媒体。
（付記１５）
Ｎ×Ｎブロックごとのモードの前記サブセットが２つのＮ／２×Ｎブロックを使用するモードであり、２Ｎの大きさを使用するモードの前記サブセットが２Ｎ×２Ｎブロックを使用するモード、２つのＮ×２Ｎブロックを使用するモード、Ｎ／２×２Ｎブロックと３Ｎ／２×２Ｎブロックを使用するモード、及び３Ｎ／２×２ＮブロックとＮ／２×２Ｎブロックを使用するモードである、付記１３に記載の１つ又は複数のコンピュータ可読媒体。
【図１】
2020039167.tif 000003
【図２ａ】
2020039167.tif 000004
【図２ｂ】
2020039167.tif 000005
【図３】
2020039167.tif 000006
【図４】
2020039167.tif 000007
【図５ａ】
2020039167.tif 000008
【図５ｂ】
2020039167.tif 000009
【図６】
2020039167.tif 000010
【図７】
2020039167.tif 000011
【図８】
2020039167.tif 000012
【図９】
2020039167.tif 000013
【図１０】
2020039167.tif 000014
【図１１】
2020039167.tif 000015
【図１２】
2020039167.tif 000016
【図１３】
2020039167.tif 000017
【図１４】
2020039167.tif 000018
【図１５】
2020039167.tif 000019
【図１６】
2020039167.tif 000020
【図１７】
2020039167.tif 000021
【図１８ａ】
2020039167.tif 000022
【図１８ｂ】
2020039167.tif 000023
【図１９】
2020039167.tif 000024
【図２０】
2020039167.tif 000025
【図２１ａ】
2020039167.tif 000026
【図２１ｂ】
2020039167.tif 000027
【図２１ｃ】
2020039167.tif 000028
【図２１ｄ】
2020039167.tif 000029
【図２１ｅ】
2020039167.tif 000030
【図２２】
2020039167.tif 000031
【図２３】
2020039167.tif 000032
【外国語明細書】
2020039167000001.pdf