(57)【特許請求の範囲】
【請求項１】
処理ユニットとメモリとを含むコンピューティングデバイスであって、
複数の候補ブロックのうちのそれぞれの候補ブロックについて、前記候補ブロックが複雑度基準を満たしているかどうかを評価するステップと、
前記候補ブロックが前記複雑度基準を満たしていない場合に、前記候補ブロックが均質選択基準を満たしているかどうかを評価するステップと、
前記候補ブロックが前記均質選択基準を満たしている場合に、前記候補ブロックのブロックハッシュ値を判定し、前記ブロックハッシュ値をハッシュテーブルに追加するステップと、
前記候補ブロックが前記均質選択基準を満たしていない場合に、前記候補ブロックを前記ハッシュテーブルから省くステップと
を含む動作を実行するように構成され、前記候補ブロックのサンプル値が水平方向又は垂直方向に均質でない場合に、前記複雑度基準は満たされていると判断され、
前記候補ブロックの位置がグリッドに整列している場合に、前記均質選択基準は満たされていると判断される、コンピューティングデバイス。
【請求項２】
前記動作が、
前記候補ブロックが前記複雑度基準を満たしている場合に、
前記候補ブロックのブロックハッシュ値を判定するステップと、
前記ブロックハッシュ値を前記ハッシュテーブルに追加するステップと
をさらに含む、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記均質選択基準が、前記候補ブロックの開始座標に基づく、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記候補ブロックのｘ開始座標とｙ開始座標のうちの少なくとも一方が所定の値で均等に割り切れるとき、前記候補ブロックは前記均質選択基準を満たしている、請求項１に記載のコンピューティングデバイス。
【請求項５】
前記候補ブロックのｘ開始座標が第１の所定の値で均等に割り切れるとともに、前記候補ブロックのｙ開始座標が第２の所定の値で均等に割り切れるとき、前記候補ブロックは前記均質選択基準を満たしている、請求項１に記載のコンピューティングデバイス。
【請求項６】
前記第１の所定の値が前記候補ブロックの幅であり、前記第２の所定の値が前記候補ブロックの高さである、請求項５に記載のコンピューティングデバイス。
【請求項７】
前記第１の所定の値が１６であり、前記第２の所定の値が１６である、請求項５に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
技術者は、圧縮（ソース符号化又はソースエンコーディングとも呼ばれる）を使用して、デジタル映像のビットレートを低減させる。圧縮は、情報をより低いビットレートの形態に変換することによって、映像情報を記憶及び伝送するコストを下げる。圧縮解除（復号とも呼ばれる）は、圧縮された形態から、元の情報のバージョンを再構成する。「コーデック」は、エンコーダ／デコーダシステムである。
【０００２】
この２０年の間に、ＩＴＵ−Ｔ  Ｈ．２６１、Ｈ．２６２（ＭＰＥＧ−２又はＩＳＯ／ＩＥＣ  １３８１８−２）、Ｈ．２６３、及びＨ．２６４（ＭＰＥＧ−４  ＡＶＣ又はＩＳＯ／ＩＥＣ  １４４９６−１０）規格、ＭＰＥＧ−１（ＩＳＯ／ＩＥＣ  １１１７２−２）、及びＭＰＥＧ−４ビジュアル（ＩＳＯ／ＩＥＣ  １４４９６−２）規格、並びにＳＭＰＴＥ  ４２１Ｍ（ＶＣ−１）規格を含む、さまざまな映像コーデック規格が採用された。より最近には、Ｈ．２６５／ＨＥＶＣ規格（ＩＴＵ−Ｔ  Ｈ．２６５又はＩＳＯ／ＩＥＣ  ２３００８−２）が承認された。現在、Ｈ．２６５／ＨＥＶＣ規格の（例えば、スケーラブルな映像符号化／復号、サンプルビット深度若しくは彩度サンプリングレートに関してより高い忠実度を有する映像の符号化／復号、スクリーンキャプチャ内容、又はマルチビュー符号化／復号に関する）拡張が開発中である。映像コーデック規格は通常、エンコーディング及びデコーディング（decoding：復号）において特定の特徴が使用されるときのビットストリーム中のパラメータを詳細に記述した、エンコードされた映像ビットストリームの構文に対するオプションを定義する。多くの場合、映像コーデック規格は、準拠した復号結果を達成するためにデコーダが実行すべき復号演算についての詳細も提供する。コーデック規格以外にも、さまざまな独自仕様のコーデックフォーマットが、エンコードされた映像ビットストリームの構文及び対応する復号演算に対する他のオプションを定義している。
【０００３】
一般に、映像圧縮技術は「イントラピクチャ」圧縮及び「インターピクチャ」圧縮を含む。イントラピクチャ圧縮技術は個々のピクチャを圧縮し、インターピクチャ圧縮技術は、先行する１つ若しくは複数のピクチャ及び／又は後続の１つ若しくは複数のピクチャ（しばしば参照ピクチャ又はアンカーピクチャと呼ばれる）を参照してピクチャを圧縮する。
【０００４】
インターピクチャ圧縮技術はしばしば動き推定及び動き補償を使用し、映像シーケンスの時間的冗長性を利用することによって、ビットレートを低減させる。動き推定は、ピクチャ間の動きを推定するプロセスである。一般的な１つの技法では、動き推定を使用するエンコーダが、カレントピクチャ内のサンプル値のカレントブロックを、別のピクチャ、すなわち参照ピクチャの探索エリア内の同じサイズの候補ブロックと照合することを試みる。参照ピクチャは一般に、他のピクチャの復号プロセスでの予測に使用することができるサンプル値を含むピクチャである。
【０００５】
カレントブロックに関して、参照ピクチャの探索エリア内において、エンコーダが、厳密な一致又は「十分に近い」一致を見つけたとき、エンコーダは、カレントブロックと候補ブロックとの間の位置変化を、動きベクトル（「ＭＶ」）などの動きデータとしてパラメータ化する。ＭＶは、従来、左又は右の空間変位を示す水平ＭＶ成分と、上又は下の空間変位を示す垂直ＭＶ成分とを有する２次元値である。動き補償は一般に、動きデータを使用して（複数の）参照ピクチャからピクチャを再構成するプロセスである。
【０００６】
いくつかのエンコーディング技法では、カレントピクチャのブロックが、１つ又は複数の参照ピクチャのブロックと照合される。しかしながら、そのような照合技法は、多数のブロックを記憶又は照合する必要があるときに性能が低下するという欠点を有することがある。他のエンコーディング技法には、動きベクトル精度を（例えば、ピクチャごとに）変更できるものがあるが、動きベクトル精度をいつ変更するかについての判断は難しい作業となり得る。さらに他のエンコーディング技法では、シーン変化検出が実行される。しかしながら、そのような検出技術は、スクリーン内容を含むシーン変化を効率的に又は正確に検出することができないことがある。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要を述べると、「発明を実施するための形態」は、エンコーディング中にさまざまなタスク及び演算を実行する際にハッシュベースブロックマッチングの結果を使用する、エンコーダ側判断における技術革新を提示する。例えば、それらの技術革新のうちのいくつかは、いくつかの（しかし全てではない）一様なブロックを含むハッシュテーブルを構築する方式に関する。他の技術革新は、ハッシュベースブロックマッチングに基づいて動きベクトル分解能を判定することに関する。例えば、ピクチャのブロックを複数のカテゴリに分類することができ、それぞれのカテゴリに割り当てられたブロックの数を、どの動きベクトル精度を使用するのかを判定する際に使用することができる。他の技術革新は、少なくとも部分的にハッシュベースブロックマッチング情報を使用したシーン変化検出に関する。例えば、シーン変化のさまざまな段階で（例えば、安定したシーン中に、シーン変化の直前に、シーン遷移中に、及び新たなシーンの開始時に）ピクチャを識別することができる。シーン変化情報を、長期参照ピクチャを選択する際に、及び／又はエンコーディング中にピクチャの品質を調整するときに使用することができる。
【０００８】
本発明の上記の目的、特徴及び利点、並びに他の目的、特徴及び利点は、添付図面を参照して説明された下記の「発明を実施するための形態」から、より明白になる。
【図面の簡単な説明】
【０００９】
【図１】いくつかの説明された実施例を実施することができる例示的なコンピューティングシステムの図である。
【図２ａ】いくつかの説明された実施例を実施することができる例示的なネットワーク環境の図である。
【図２ｂ】いくつかの説明された実施例を実施することができる例示的なネットワーク環境の図である。
【図３】いくつかの説明された実施例を実施することができる例示的なエンコーダシステムの図である。
【図４ａ】いくつかの説明された実施例を実施することができる例示的な映像エンコーダを例示する図である。
【図４ｂ】いくつかの説明された実施例を実施することができる例示的な映像エンコーダを例示する図である。
【図５】スクリーンキャプチャ用の入力を提供することができる内容を含むコンピュータデスクトップ環境を例示する図である。
【図６】自然映像内容と人工的に作成された映像内容とを含む複合映像を例示する図である。
【図７】ハッシュベースブロックマッチングにおける候補ブロックに関するハッシュ値を例示する表である。
【図８ａ】ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図８ｂ】ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図８ｃ】ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図９ａ】反復ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図９ｂ】反復ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図９ｃ】反復ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造を例示する表である。
【図１０ａ】候補ブロックのパターンを例示する図である。
【図１０ｂ】候補ブロックのパターンを例示する図である。
【図１０ｃ】候補ブロックのパターンを例示する図である。
【図１１】ハッシュテーブル構築中に均質選択基準を使用して均質なブロックを選択する技法を例示する流れ図である。
【図１２ａ】整数サンプル空間変位を有するＭＶ値を用いた動き補償を例示する図である。
【図１２ｂ】分数サンプル空間変位を有するＭＶ値を用いた動き補償を例示する図である。
【図１３】ブロック分類の結果に応じてＭＶ精度を選択する技法を例示する流れ図である。
【図１４】ＭＶ精度を選択するときに使用されるブロック分類を実行する技法を例示する流れ図である。
【図１５】映像エンコーディング中にシーン変化を検出する技法を例示する流れ図である。
【発明を実施するための形態】
【００１０】
「発明を実施するための形態」は、ハッシュベースマッチング技法を使用してさまざまなタイプの演算の性能を向上させる、エンコーダ側判断における技術革新を提示する。例えば、それらの技術革新のうちのいくつかは、いくつかの（しかし全てではない）一様なブロックを含む（例えば、選択基準を満たす均質なブロックだけを含む）ハッシュテーブルを構築する方式に関する。他の技術革新は、ハッシュベースブロックマッチングに基づいて動きベクトル分解能を判定することに関する。例えば、ピクチャのブロックを複数のカテゴリに分類することができ、それぞれのカテゴリに割り当てられたブロックの数を、どの動きベクトル精度を使用するのかを判定する際に使用することができる。他の技術革新は、少なくとも部分的にハッシュベースブロックマッチング情報を使用したシーン変化検出に関する。例えば、シーン変化のさまざまな段階で（例えば、安定したシーン中に、シーン変化の直前に、シーン遷移中に、及び新たなシーンの開始時に）ピクチャを識別することができる。シーン変化情報を、長期参照ピクチャを選択する際に、及び／又はエンコーディング中にピクチャの品質を調整するときに使用することができる。
【００１１】
これらの技術革新は特に、スクリーンキャプチャ内容などの人工的に作成された映像内容のエンコーディング中にパラメータを設定する計算的に効率的な方式を提供することができる。
【００１２】
本明細書で説明された演算は映像エンコーダによって実行されると所々に記載されているが、多くの場合、それらの演算は、別のタイプのメディア処理ツール（例えば、画像エンコーダ）によって実行されることができる。
【００１３】
本明細書で説明された技術革新のいくつかは、Ｈ．２６５／ＨＥＶＣ規格に固有の構文要素及び演算を参照して例示される。例えば、Ｈ．２６５／ＨＥＶＣ規格の草案ＪＣＴＶＣ−Ｐ１００５「高効率映像符号化（ＨＥＶＣ）範囲拡張テキスト仕様書：草案６」、ＪＣＴＶＣ−Ｐ１００５＿ｖ１、２０１４年２月が参照される。本明細書で説明された技術革新は、他の規格又は他のフォーマットに対しても実施されることができる。
【００１４】
本明細書で説明される技術革新の多くは、スクリーンキャプチャモジュールからのスクリーンキャプチャ内容などの特定の人工的に作成された映像内容をエンコードするときの判断プロセスを改善することができる。スクリーンキャプチャ内容は通常、繰り返された構造（例えば、グラフィック、テキストキャラクタ）を含む。スクリーンキャプチャ内容は普通、高い彩度サンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：４：４又はＲＧＢ４：４：４）でエンコードされるが、スクリーンキャプチャ内容を、より低い彩度サンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：２：０）でエンコードすることもできる。スクリーンキャプチャ内容をエンコード／デコード（decode：復号）する一般的なシナリオは、リモートデスクトップ会議、及び自然映像又は他の「混合内容」映像上のグラフィカルオーバーレイのエンコーディング／デコーディング（decoding：復号）を含む。これらの技術革新を自然映像内容に対して使用することもできるが、それらの技術革新が有効でないこともある。
【００１５】
より一般的には、本明細書で説明された実例に対するさまざまな代替例が可能である。例えば、説明された方法動作の順序を変更することによって、又はある種の方法動作の分割、繰り返し若しくは省略などによって、本明細書で説明された方法のうちのいくつかの方法を変更することができる。開示された技術のそれらのさまざまな態様は、組み合わせて、又は別々に使用されることができる。異なる実施例は、説明された技術革新のうちの１つ又は複数の技術革新を使用する。本明細書で説明された技術革新のいくつかは、「背景技術」の項に示された課題のうちの１つ又は複数の課題に対処する。通常、所与の技法／ツールがそのような課題の全てを解決することはない。
【００１６】
Ｉ．例示的なコンピューティングシステム
図１は、説明された技術革新のうちのいくつかの技術革新を実施することができる適当なコンピューティングシステム（１００）の一般化された実例を例示する。コンピューティングシステム（１００）は、説明された技術革新が多種多様な汎用又は専用コンピューティングシステムで実施されることができるので、使用又は機能の範囲に関するあらゆる限定を示唆することを意図されていない。
【００１７】
図１を参照すると、コンピューティングシステム（１００）は、１つ又は複数の処理ユニット（１１０、１１５）及びメモリ（１２０、１２５）を含む。処理ユニット（１１０、１１５）は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（「ＣＰＵ」）、特定用途向け集積回路（「ＡＳＩＣ」）内のプロセッサ、又はあらゆる他のタイプのプロセッサとすることができる。マルチプロセッシングシステムでは、処理パワーを増大させるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。例えば、図１は、中央処理ユニット（１１０）及びグラフィックス処理ユニット又はコプロセッシングユニット（１１５）を示している。有形メモリ（１２０、１２５）は、処理ユニットによってアクセス可能な揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）又はこれらの２つのメモリのある組み合わせとすることができる。メモリ（１２０、１２５）は、ハッシュベースブロックマッチングの結果に基づいてエンコーダが判断する（例えば、ハッシュテーブルを構築し、ＭＶ精度を選択し、シーン変化を検出し、シーン変化に基づいて判断する）１つ又は複数の技術革新を実施するソフトウェア（１８０）を、処理ユニットによって実行するのに適したコンピュータ実行可能命令の形態で記憶している。
【００１８】
コンピューティングシステムは追加の特徴を有することができる。例えば、コンピューティングシステム（１００）は、記憶装置（１４０）、１つ又は複数の入力デバイス（１５０）、１つ又は複数の出力デバイス（１６０）、及び１つ又は複数の通信接続（１７０）を含む。バス、コントローラ又はネットワークなどの相互接続機構（図示せず）が、コンピューティングシステム（１００）のこれらの構成要素を相互接続している。通常は、オペレーティングシステムソフトウェア（図示せず）が、コンピューティングシステム（１００）内で実行中の他のソフトウェアに動作環境を提供し、コンピューティングシステム（１００）の構成要素の活動を調整する。
【００１９】
有形記憶装置（１４０）は、取外し可能な記憶装置であっても、又は取外しが不可能な記憶装置であってもよい。有形記憶装置（１４０）は、情報を記憶する目的に使用されることができるとともに、コンピューティングシステム（１００）内でアクセスされることできる、磁気ディスク、磁気テープ若しくは磁気カセット、ＣＤ−ＲＯＭ、ＤＶＤ、又はあらゆる他の媒体を含む。記憶装置（１４０）は、ハッシュベースブロックマッチングの結果に基づいてエンコーダが判断する１つ又は複数の技術革新を実施するソフトウェア（１８０）のための命令を記憶している。
【００２０】
入力デバイス（１５０）は、キーボード、マウス、ペン若しくはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、又はコンピューティングシステム（１００）に入力を提供する他のデバイスとすることができる。映像向けには、入力デバイス（１５０）は、カメラ、ビデオカード、ＴＶチューナカード、スクリーンキャプチャモジュール、又はアナログ形態若しくはデジタル形態の映像入力を受け取る同種のデバイス、或いはコンピューティングシステム（１００）への映像入力を読み取るＣＤ−ＲＯＭ若しくはＣＤ−ＲＷとすることができる。出力デバイス（１６０）は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、又はコンピューティングシステム（１００）からの出力を提供する他のデバイスとすることができる。
【００２１】
通信接続（１７０）は、通信媒体を介した別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令、音声若しくは映像の入力若しくは出力、又は他のデータなどの情報を、変調されたデータ信号の形で伝達する。変調されたデータ信号は、信号に情報をエンコードするような態様で、その特性のうちの１つ又は複数の特性が設定又は変更された信号である。一例として、通信媒体は、これらに限定されないが、電気キャリア、光学キャリア、ＲＦキャリア又は他のキャリアを使用することができる。
【００２２】
これらの技術革新を、コンピュータ読み取り可能な記憶媒体の一般的な文脈で記述することができる。コンピュータ読み取り可能な記憶媒体は、コンピューティング環境内でアクセスされることができる使用可能な有形媒体である。一例として、コンピューティングシステム（１００）の場合は、コンピュータ読み取り可能な媒体は、メモリ（１２０、１２５）及び／又は記憶装置（１４０）を含む。コンピュータ読み取り可能な記憶媒体という用語は信号及び搬送波を含まない。加えて、コンピュータ読み取り可能な記憶媒体という用語は通信接続（例えば、１７０）を含まない。
【００２３】
これらの技術革新を、コンピューティングシステムにおいて実際の又は仮想のターゲットプロセッサ上で実行されている、プログラムモジュールに含まれているものなどの、コンピュータ実行可能命令の一般的な文脈で記述することができる。一般に、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実施するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、さまざまな実施例において所望されるように、プログラムモジュール間で組み合わされても又は分割されてもよい。プログラムモジュールのためのコンピュータ実行可能命令は、局所コンピューティングシステム内又は分散コンピューティングシステム内で実行されることができる。
【００２４】
本明細書では、用語「システム」と用語「デバイス」とが同義で使用される。そうではないことを文脈が明らかに示していない限り、どちらの用語も、コンピューティングシステム又はコンピューティングデバイスのタイプの限定を暗示しない。一般に、コンピューティングシステム又はコンピューティングデバイスは、局所型若しくは分散型とすることができ、専用ハードウェア及び／又は汎用ハードウェアと本明細書で説明された機能を実施するソフトウェアとのあらゆる組み合わせを含むことができる。
【００２５】
開示された方法のうちのいずれかの方法を実行するように構成された専用コンピューティングハードウェアを使用して、開示された方法を実施することもできる。例えば、開示された方法のうちのいずれかの方法を実施するように特に設計又は構成された集積回路（例えば、ＡＳＩＣ（例えば、ＡＳＩＣデジタル信号プロセッサ（「ＤＳＰ」）、グラフィックス処理ユニット（「ＧＰＵ」）、又はプログラマブルロジックデバイス（「ＰＬＤ」）など、例えばフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）など）によって、開示された方法を実施することができる。
【００２６】
提示のため、「発明を実施するための形態」は、「判定する」及び「使用する」のような用語を使用して、コンピューティングシステムにおけるコンピュータ動作を記述する。これらの用語は、コンピュータによって実行される操作に対する高水準の抽象概念であり、人間によって実行される行為と混同されるべきではない。これらの用語に対応する実際のコンピュータ動作は、実施態様によって異なる。
【００２７】
ＩＩ．例示的なネットワーク環境
図２ａ及び図２ｂは、映像エンコーダ（２２０）及び映像デコーダ（２７０）を含む例示的なネットワーク環境（２０１、２０２）を示す。エンコーダ（２２０）及びデコーダ（２７０）は、ネットワーク（２５０）を介して、適切な通信プロトコルを使用して接続されている。ネットワーク（２５０）は、インターネット又は別のコンピュータネットワークを含むことができる。
【００２８】
図２ａに示されたネットワーク環境（２０１）では、それぞれのリアルタイム通信（「ＲＴＣ」）ツール（２１０）が、両方向通信のために、エンコーダ（２２０）とデコーダ（２７０）の両方を含む。所与のエンコーダ（２２０）は、Ｈ．２６５／ＨＥＶＣ規格、ＳＭＰＴＥ  ４２１Ｍ規格、ＩＳＯ−ＩＥＣ  １４４９６−１０規格（Ｈ．２６４又はＡＶＣとしても知られている）、他の規格、又は独自仕様のフォーマットの変形若しくは拡張に準拠した出力を生成することができ、対応するデコーダ（２７０）は、エンコードされたデータをエンコーダ（２２０）から受け取る。両方向通信は、テレビ会議、テレビ電話通話、又は他の２パーティ若しくは複数パーティ通信シナリオの一部分とすることができる。図２ａのネットワーク環境（２０１）は２つのリアルタイム通信ツール（２１０）を含んでいるが、ネットワーク環境（２０１）は、その代わりに、複数パーティ通信に参加する３つ以上のリアルタイム通信ツール（２１０）を含むこともできる。
【００２９】
リアルタイム通信ツール（２１０）は、エンコーダ（２２０）によるエンコーディングを管理する。図３は、リアルタイム通信ツール（２１０）に含めることができる例示的なエンコーダシステム（３００）を示す。或いは、リアルタイム通信ツール（２１０）は別のエンコーダシステムを使用する。リアルタイム通信ツール（２１０）は、デコーダ（２７０）によるデコーディング（decoding：復号）も管理する。
【００３０】
図２ｂに示されたネットワーク環境（２０２）では、エンコーディングツール（２１２）が、複数の再生ツール（２１４）に送達する映像をエンコードするエンコーダ（２２０）を含み、再生ツール（２１４）が、デコーダ（２７０）を含む。単方向通信は、映像サーベイランスシステム、Ｗｅｂカメラ監視システム、リモートデスクトップ会議プレゼンテーション、又は映像が、エンコードされ、そして１つの場所から別の１つ若しくは複数の場所に送信される他のシナリオ用に提供されることができる。図２ｂのネットワーク環境（２０２）は２つの再生ツール（２１４）を含んでいるが、ネットワーク環境（２０２）は、これよりも多いか、又はこれよりも少ない再生ツール（２１４）を含むことができる。一般に、再生ツール（２１４）は、エンコーディングツール（２１２）と通信して、再生ツール（２１４）が受け取る映像のストリームを判定する。再生ツール（２１４）は、ストリームを受け取り、受け取ったエンコードされたデータを、適切な期間の間、バッファリングし、復号及び再生を開始する。
【００３１】
図３は、エンコーディングツール（２１２）に含めることができる例示的なエンコーダシステム（３００）を示す。或いは、エンコーディングツール（２１２）は別のエンコーダシステムを使用する。エンコーディングツール（２１２）はさらに、１つ又は複数の再生ツール（２１４）との接続を管理するサーバ側コントローラロジックを含むことができる。再生ツール（２１４）はさらに、エンコーディングツール（２１２）との接続を管理するクライアント側コントローラロジックを含むことができる。
【００３２】
ＩＩＩ．例示的なエンコーダシステム
図３は、いくつかの説明された実施例を実施することができる例示的なエンコーダシステム（３００）のブロック図である。エンコーダシステム（３００）は、リアルタイム通信用の低待ち時間エンコーディングモード、トランスコーディングモード、ファイル若しくはストリームから再生用のメディアを生成するより高待ち時間のエンコーディングモードなどの複数のエンコーディングモードのうちの任意のエンコーディングモードで動作することができる汎用エンコーディングツールとすることができるか、又は、エンコーダシステム（３００）は、１つのそのようなエンコーディングモードに対して適合された専用エンコーディングツールとすることができる。エンコーダシステム（３００）を、特定のタイプの内容（例えば、スクリーンキャプチャ内容）をエンコーディングするように適合させることができる。エンコーダシステム（３００）は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部分として、又は独立型アプリケーションとして実施されることができる。全体として、エンコーダシステム（３００）は、ソース映像フレーム（３１１）のシーケンスを映像源（３１０）から受け取り、エンコードされたデータを、チャネル（３９０）への出力として生成する。チャネルに出力されるエンコードされたデータは、本明細書で説明されたエンコーダ側判断を使用してエンコードされた内容を含むことができる。
【００３３】
映像源（３１０）は、カメラ、チューナカード、記憶媒体、スクリーンキャプチャモジュール、又は他のデジタル映像源とすることができる。映像源（３１０）は、映像フレームのシーケンスを、例えば毎秒３０フレームのフレームレートで生成する。本明細書で使用されるとき、用語「フレーム」は一般に、符号化又は再構成されたソース画像データを指す。プログレッシブスキャン映像に関して、フレームは、プログレッシブスキャン映像フレームである。インターレース映像に関して、例示的な実施例では、エンコーディングの前に、インターレース映像フレームは、インターレース解除を実行されることができる。或いは、２つの相補的なインターレース映像フィールドは、単一の映像フレームとして一緒にエンコードされるか、又は、別々にエンコードされた２つのフィールドとしてエンコードされる。プログレッシブスキャン映像フレーム又はインターレーススキャン映像フレームを示す以外に、用語「フレーム」又は「ピクチャ」は、対をなしていない単一の映像フィールド、相補的な一対の映像フィールド、所与の時における映像オブジェクトを表す映像オブジェクト平面、又はより大きい画像内の関心領域を示し得る。映像オブジェクト平面又は領域は、１つのシーンの複数のオブジェクト又は領域を含む、より大きい画像の一部分であり得る。
【００３４】
到着したソースフレーム（３１１）は、複数のフレームバッファ記憶エリア（３２１、３２２、．．．、３２ｎ）を含むソースフレーム一時メモリ記憶エリア（３２０）に記憶される。ソースフレーム記憶エリア（３２０）内で、フレームバッファ（３２１、３２２など）は１つのソースフレームを保持する。ソースフレーム（３１１）のうちの１つ又は複数のソースフレームがフレームバッファ（３２１、３２２など）に記憶された後、フレームセレクタ（３３０）が、ソースフレーム記憶エリア（３２０）から個々のソースフレームを選択する。エンコーダ（３４０）に入力するためにフレームセレクタ（３３０）によってフレームが選択される順序は、映像源（３１０）によってフレームが生成された順序とは異なることがある。例えば、いくつかの後のフレームが最初にエンコードされることを可能にするため、したがって時間的後方予測を容易にするために、いくつかのフレームのエンコーディングの順序を遅らせることができる。エンコーダ（３４０）の前に、エンコーダシステム（３００）は、選択されたフレーム（３３１）の前処理（例えば、フィルタリング）をエンコーディング前に実行するプリプロセッサ（図示せず）を含むことができる。前処理は、１次（例えば、輝度）成分及び２次（例えば、赤方向及び青方向への彩度差）成分への色空間変換、並びにエンコーディングのための再サンプリング処理（例えば、彩度成分の空間分解能を低減させるため）を含むことができる。エンコーディングの前に、映像は通常、ＹＵＶなどの色空間に変換されている。ＹＵＶ色空間では、輝度（Ｙ）成分のサンプル値が輝度値又は強度値を表し、彩度（Ｕ、Ｖ）成分のサンプル値が色差値を表す。色差値（並びにＹＵＶ色空間への変換演算、及びＹＵＶ色空間からＲＧＢなどの別の色空間への変換演算）の正確な定義は実施態様に依存する。本明細書で使用されるとき、用語ＹＵＶは一般に、輝度（又はルミナンス）成分と１つ又は複数の彩度（又はクロミナンス）成分とを有する任意の色空間を示し、この任意の色空間は、Ｙ’ＵＶ、ＹＩＱ、Ｙ’ＩＱ及びＹＤｂＤｒ、並びにＹＣｂＣｒ、ＹＣｏＣｇなどの変形形態を含む。彩度サンプル値は、（例えば、ＹＵＶ４：２：０フォーマット用に）より低い彩度サンプリングレートにサブサンプリングされることができるか、又は、彩度サンプル値は、（例えば、ＹＵＶ４：４：４フォーマット用に）輝度サンプル値と同じ分解能を有することができる。又は、映像は、別のフォーマット（例えば、ＲＧＢ４：４：４フォーマット、ＧＢＲ４：４：４フォーマット若しくはＢＧＲ４：４：４フォーマット）でエンコードされることもできる。
【００３５】
エンコーダ（３４０）は、選択されたフレーム（３３１）をエンコードして、符号化されたフレーム（３４１）を生成し、さらに、メモリ管理制御操作（「ＭＭＣＯ」）信号（３４２）又は参照ピクチャセット（「ＲＰＳ」）情報を生成する。ＲＰＳは、カレントフレーム又は後続のフレームに対する動き補償において参照する目的に使用されることができるフレームのセットである。カレントフレームが、エンコードされた最初のフレームではない場合、エンコーダ（３４０）は、カレントフレームのエンコーディングプロセスを実行するときに、復号済みフレーム一時メモリ記憶エリア（３６０）に記憶されていた以前にエンコード／デコード（decode：復号）された１つ又は複数のフレーム（３６９）を使用することができる。そのような復号され記憶されたフレーム（３６９）が、カレントソースフレーム（３３１）の内容のインターフレーム予測のための参照フレームとして使用される。ＭＭＣＯ／ＲＰＳ情報（３４２）は、どの再構成されたフレームを参照フレームとして使用することができるのか、したがってどの再構成されたフレームをフレーム記憶エリアに記憶すべきであるのかを、デコーダに示す。どの参照ピクチャをＲＰＳ内に保持するのかについての判断を下す例示的な方式は、下記で説明される。
【００３６】
エンコーダ（３４０）は一般に、タイルへのパーティション分割、イントラ推定及び予測、動き推定及び補償、周波数トランスフォーム、量子化並びにエントロピー符号化などのエンコーディングタスクを実行する複数のエンコーディングモジュールを含む。エンコーダ（３４０）によって実行される厳密な演算は、圧縮フォーマットによって変わり得る。出力されるエンコードされたデータのフォーマットは、Ｈ．２６５／ＨＥＶＣフォーマット、ウィンドウズ（登録商標）メディアビデオフォーマット、ＶＣ−１フォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２若しくはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又はその他のフォーマットの変形又は拡張とすることができる。
【００３７】
エンコーダ（３４０）は、フレームを、同じサイズ又は異なるサイズの複数のタイルにパーティション分割することができる。例えば、エンコーダ（３４０）は、タイル行及びタイル列に沿ってフレームを分割する。タイル行及びタイル列は、フレーム境界とともに、そのフレーム内のタイルの水平境界及び垂直境界を画定する。それぞれのタイルは長方形の領域である。タイルはしばしば、並列処理のためのオプションを提供する目的に使用される。フレームを、１つ又は複数のスライスとして編成することもでき、スライスは、フレーム全体又はフレームの領域とすることができる。スライスは、フレーム内の他のスライスから独立して復号されることができ、これにより誤り耐性を向上させる。スライス又はタイルの内容は、エンコーディング及びデコーディング（decoding：復号）のために、サンプル値のブロック又は他のセットにさらにパーティション分割される。
【００３８】
Ｈ．２６５／ＨＥＶＣ規格に基づく構文に関して、エンコーダは、フレーム（又はスライス若しくはタイル）の内容を符号化ツリー単位に分割する。符号化ツリー単位（「ＣＴＵ」）は、輝度符号化ツリーブロック（「ＣＴＢ」）として編成された輝度サンプル値と、２つの彩度ＣＴＢとして編成された対応する彩度サンプル値とを含む。ＣＴＵ（及びそのＣＴＢ）のサイズは、エンコーダによって選択され、例えば６４×６４、３２×３２又は１６×１６サンプル値とすることができる。ＣＴＵは、１つ又は複数の符号化単位を含む。符号化単位（「ＣＵ」）は、輝度符号化ブロック（「ＣＢ」）及び２つの対応する彩度ＣＢを有する。例えば、６４×６４輝度ＣＴＢと２つの６４×６４彩度ＣＴＢとを含むＣＴＵ（ＹＵＶ４：４：４フォーマット）を、それぞれが３２×３２輝度ＣＢと２つの３２×３２彩度ＣＢとを含む４つのＣＵに分割することができ、場合によっては、それぞれのＣＵは、より小さいＣＵにさらに分割される。又は、別の例として、６４×６４輝度ＣＴＢと２つの３２×３２彩度ＣＴＢとを含むＣＴＵ（ＹＵＶ４：２：０フォーマット）を、それぞれが３２×３２輝度ＣＢと２つの１６×１６彩度ＣＢとを含む４つのＣＵに分割することができ、場合によっては、それぞれのＣＵは、より小さいＣＵにさらに分割される。ＣＵの許容される最小サイズ（例えば、８×８、１６×１６）をビットストリームでシグナリングすることができる。
【００３９】
ＣＵは一般に、インター予測、イントラ予測などの予測モードを有する。ＣＵは、（予測モード詳細、変位値などの）予測情報のシグナリング及び／又は予測処理を目的とした１つ又は複数の予測単位を含む。予測単位（「ＰＵ」）は、輝度予測ブロック（「ＰＢ」）と２つの彩度ＰＢとを有する。イントラ予測されたＣＵに関して、ＣＵが最小サイズ（例えば、８×８）を有しない限り、ＰＵはＣＵと同じサイズを有する。その場合、ＣＵは、より小さい（例えば、最小ＣＵサイズが８×８である場合にはそれぞれ４×４の）４つのＰＵに分割されることができるか、又は、ＰＵは、ＣＵに対する構文要素によって示される最小ＣＵサイズを有することができる。ＣＵはさらに、残余符号化／復号を目的とした１つ又は複数のトランスフォーム単位を有し、トランスフォーム単位（「ＴＵ」）は、トランスフォームブロック（「ＴＢ」）と２つの彩度ＴＢとを有する。イントラ予測されたＣＵ内のＰＵは、（ＰＵとサイズが等しい）単一のＴＵ、又は複数のＴＵを含むことができる。エンコーダは、映像をどのようにＣＴＵ、ＣＵ、ＰＵ、ＴＵなどにパーティション分割するのかを判断する。
【００４０】
Ｈ．２６５／ＨＥＶＣ実施態様では、スライスは、単一のスライスセグメント（独立したスライスセグメント）を含むことができるか、又は、複数のスライスセグメント（独立スライスセグメント及び１つ若しくは複数の従属スライスセグメント）に区分されることができる。スライスセグメントは、単一のネットワーク抽象化層（「ＮＡＬ」）単位に含まれる、タイルスキャンにおいて連続して順序付けられた整数個のＣＴＵである。独立スライスセグメントに関して、スライスセグメントヘッダは、独立スライスセグメントに適用される構文要素の値を含む。従属スライスセグメントに関して、トランケートされたスライスセグメントヘッダは、従属スライスセグメントに適用される構文要素のわずかな値を含み、従属スライスセグメントに対する残りの構文要素の値が、復号順序において先行する独立スライスセグメントに対する値から推測される。
【００４１】
本明細書で使用されるとき、用語「ブロック」は、文脈に応じて、マクロブロック、予測単位、残余データ単位、又はＣＢ、ＰＢ若しくはＴＢ、或いはいくつかの他のサンプル値のセットを示し得る。
【００４２】
図３に戻ると、エンコーダは、ソースフレーム（３３１）のイントラ符号化されたブロックを、フレーム（３３１）内の他の以前に再構成されたサンプル値からの予測に関して表す。イントラブロックコピー（「ＢＣ」）予測に関して、イントラピクチャ推定器又は動き推定器は、同じフレーム内の他の以前に再構成されたサンプル値に対するブロックの変位を推定する。イントラフレーム予測参照領域は、ブロックのＢＣ予測値を生成するために使用される、フレーム内のサンプル値の領域である。イントラフレーム予測領域は、ブロックベクトル（「ＢＶ」）値を用いて示されることができ、ＢＶ値は、ビットストリームにおいて、動きベクトル（「ＭＶ」）値として表すことができる。ブロックに対するイントラ空間予測に関して、イントラピクチャ推定器は、近傍の再構成されたサンプル値のブロック内への外挿を推定する。（イントラＢＣ予測のためのＢＶ／ＭＶ値又はイントラ空間予測のための予測モード（方向）などの）予測情報は、エントロピー符号化されて、出力されることができる。イントラフレーム予測予測器（又はＢＶ／ＭＶ値のための動き補償器）は、予測情報を適用してイントラ予測値を判定する。
【００４３】
エンコーダ（３４０）は、インターフレーム符号化された、ソースフレーム（３３１）の予測されるブロックを、１つ又は複数の参照フレーム（３６９）からの予測に関して表す。動き推定器は、１つ又は複数の参照フレーム（３６９）に対するブロックの動きを推定する。動き推定器は、ＭＶ精度（例えば、整数サンプルＭＶ精度、１／２サンプルＭＶ精度、又は１／４サンプルＭＶ精度）を、例えば本明細書で説明された手法を使用して選択することができ、次いで、選択されたＭＶ精度を、動き推定中に使用することができる。複数の参照フレームが使用されるとき、複数の参照フレームは、異なる時間方向又は同じ時間方向からの参照フレームとすることができる。動き補償された予測参照領域は、カレントフレームのサンプル値のブロックに関する動き補償された予測値を生成するために使用される、参照フレーム内のサンプル値の領域である。動き推定器は、エントロピー符号化されたＭＶ情報などの動き情報を出力する。動き補償器は、参照フレーム（３６９）にＭＶを適用して、インターフレーム予測のための動き補償された予測値を判定する。
【００４４】
エンコーダは、（もしあれば）ブロックの予測値（イントラ予測値又はインター予測値）と対応する元の値との間の差を判定することができる。これらの予測残余値は、周波数トランスフォーム、量子化及びエントロピーエンコーディングを使用してさらにエンコードされる。例えば、エンコーダ（３４０）は、ピクチャ、タイル、スライス及び／又は映像の他の部分に対する量子化パラメータ（「ＱＰ」）に関する値を設定し、それに応じてトランスフォーム係数を量子化する。エンコーダ（３４０）のエントロピー符号化器は、量子化されたトランスフォーム係数値、及びある種の副次的情報（例えば、ＭＶ情報、選択されたＭＶ精度、ＳＡＯフィルタリングパラメータ、ＲＰＳ更新情報、ＱＰ値、モード判断、他のパラメータ選択）を圧縮する。典型的なエントロピー符号化技法は、指数−ゴロム符号化、ゴロム−ライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、可変長ツー可変長（「Ｖ２Ｖ」）符号化、可変長ツー固定長（「Ｖ２Ｆ」）符号化、レンペル−ジブ（「ＬＺ」）符号化、辞書符号化、確率区間区分エントロピー符号化（「ＰＩＰＥ」）、及び上記の符号化の組み合わせを含む。エントロピー符号化器は、異なる種類の情報に対して異なる符号化技法を使用することができ、複数の技法を（例えば、ゴロム−ライス符号化を適用し、続いて算術符号化を適用することにより）組み合わせて適用することができ、特定の符号化技法内の複数の符号テーブルの中から選ぶことができる。
【００４５】
復号されたフレームにおけるブロック境界行及び／又はブロック境界列を横切る不連続を平滑化するために、エンコーダ（３４０）内の動き補償ループには、適応非ブロック化フィルタが含まれている。その代わりに又はそれに加えて、（デリンギングフィルタリング、適応ループフィルタリング（「ＡＬＦ」）又はＳＡＯフィルタリングなどの）他のフィルタリングが、インループフィルタリング演算として適用されることもできる。
【００４６】
エンコーダ（３４０）によって生成されたエンコードされたデータは、ビットストリーム構文のさまざまな層のための構文要素を含む。例えばＨ．２６５／ＨＥＶＣ規格に基づく構文に関して、ピクチャパラメータセット（「ＰＰＳ」）は、ピクチャに関連づけられることができる構文要素を含む構文構造である。ＰＰＳは、単一のピクチャに対して使用されることができるか、又は、ＰＰＳは、シーケンス内の複数のピクチャに対して再使用されることができる。ＰＰＳは通常、ピクチャに関するエンコードされたデータとは別にシグナリングされる（例えば、ＰＰＳ用の１つのＮＡＬ単位と、ピクチャに関するエンコードされたデータ用の１つ又は複数の別のＮＡＬ単位）。ピクチャに関するエンコードされたデータ内の構文要素は、ピクチャに対してどのＰＰＳを使用するのかを示す。同様に、Ｈ．２６５／ＨＥＶＣ規格に基づく構文に関して、シーケンスパラメータセット（「ＳＰＳ」）は、ピクチャのシーケンスに関連づけられることができる構文要素を含む構文構造である。ビットストリームは、単一のＳＰＳ又は複数のＳＰＳを含むことができる。ＳＰＳは通常、シーケンスに関する他のデータとは別にシグナリングされ、他のデータ内の構文要素は、どのＳＰＳを使用するのかを示す。
【００４７】
符号化されたフレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）（又は、エンコーダ（３４０）ではフレームに対する依存性及び順序付け構造が既に分かっているので、ＭＭＣＯ／ＲＰＳ情報（３４２）と等価の情報）は、復号プロセスエミュレータ（３５０）によって処理される。復号プロセスエミュレータ（３５０）は、デコーダのいくつかの機能、例えば参照フレームを再構成するための復号タスク、を実施する。ＭＭＣＯ／ＲＰＳ情報（３４２）と矛盾しない形で、復号プロセスエミュレータ（３５０）は、エンコードされる後続のフレームのインターフレーム予測における参照フレームとして使用する目的で、所与の符号化されたフレーム（３４１）を再構成して記憶する必要があるかどうかを判定する。符号化されたフレーム（３４１）を記憶する必要がある場合、復号プロセスエミュレータ（３５０）は、符号化されたフレーム（３４１）を受け取るデコーダによって実行されるであろう復号プロセスをモデル化し、対応する復号されたフレーム（３５１）を生成する。その際、復号済みフレーム記憶エリア（３６０）に記憶されていた復号されたフレーム（３６９）をエンコーダ（３４０）が使用したときに、復号プロセスエミュレータ（３５０）も、記憶エリア（３６０）からの復号されたフレーム（３６９）を、復号プロセスの一部分として使用する。
【００４８】
復号済みフレーム一時メモリ記憶エリア（３６０）は、複数のフレームバッファ記憶エリア（３６１、３６２、．．．、３６ｎ）を含む。参照フレームとして使用するためにエンコーダ（３４０）がもはや必要としていないフレームを含むあらゆるフレームバッファ（３６１、３６２など）を識別するために、復号プロセスエミュレータ（３５０）は、ＭＭＣＯ／ＲＰＳ情報（３４２）と矛盾しない形で記憶エリア（３６０）の内容を管理する。復号プロセスをモデル化した後、復号プロセスエミュレータ（３５０）は、新たに復号されたフレーム（３５１）を、このようにして識別されたフレームバッファ（３６１、３６２など）に記憶する。
【００４９】
符号化されたフレーム（３４１）及びＭＭＣＯ／ＲＰＳ情報（３４２）は、一時符号化済みデータエリア（３７０）にバッファリングされる。符号化済みデータエリア（３７０）に集められた符号化されたデータは、基本符号化済み映像ビットストリームの構文の一部分として、１つ又は複数のピクチャに関するエンコードされたデータを含む。符号化済みデータエリア（３７０）に集められた符号化されたデータはさらに、符号化された映像データに関するメディアメタデータを（例えば、１つ又は複数の付加拡張情報（「ＳＥＩ」）メッセージ又は映像ユーザビリティ情報（「ＶＵＩ」）メッセージ内の１つ又は複数のパラメータとして）含むことができる。
【００５０】
一時符号化済みデータエリア（３７０）からの集約データ（３７１）は、チャネルエンコーダ（３８０）によって処理される。チャネルエンコーダ（３８０）は、集約データをパケット化及び／又は多重化して、（例えば、ＩＴＵ−Ｔ  Ｈ．２２２．０｜ＩＳＯ／ＩＥＣ  １３８１８−１などのメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又はＩＥＴＦ  ＲＦＣ  ３５５０などのインターネットリアルタイムトランスポートプロトコルフォーマットに基づく）メディアストリームとして伝送又は記憶することができる。その場合、チャネルエンコーダ（３８０）は、メディア伝送ストリームの構文の一部分として構文要素を追加することができる。又は、チャネルエンコーダ（３８０）は、集約データを編成して、（例えば、ＩＳＯ／ＩＥＣ  １４４９６−１２などのメディアコンテナフォーマットに基づく）ファイルとして記憶することができる。その場合、チャネルエンコーダ（３８０）は、メディア記憶ファイルの構文の一部分として構文要素を追加することができる。又は、より一般的には、チャネルエンコーダ（３８０）は、１つ若しくは複数のメディアシステム多重化プロトコル又はトランスポートプロトコルを実施することができ、その場合、チャネルエンコーダ（３８０）は、プロトコルの構文の一部分として構文要素を追加することができる。チャネルエンコーダ（３８０）は、チャネル（３９０）に出力を提供する。チャネル（３９０）は、出力のための記憶チャネル、通信接続チャネル又は他のチャネルを表す。チャネルエンコーダ（３８０）又はチャネル（３９０）はさらに、他の要素（図示せず）、例えば前方誤り訂正（「ＦＥＣ」）エンコーディング用及びアナログ信号変調用の他の要素（図示せず）を含むことができる。
【００５１】
ＩＶ．例示的な映像エンコーダ
図４ａ及び図４ｂは、いくつかの説明された実施例を実施することができる一般化された映像エンコーダ（４００）のブロック図である。エンコーダ（４００）は、カレントピクチャを含む映像ピクチャのシーケンスを入力映像信号（４０５）として受け取り、符号化された映像ビットストリーム（４９５）の形のエンコードされたデータを出力として生成する。
【００５２】
エンコーダ（４００）はブロックベースであり、実施態様に応じたブロックフォーマットを使用する。ブロックは、さまざまな段階で、例えば予測段階、周波数トランスフォーム段階及び／又はエントロピーエンコーディング段階でさらに再区分されることができる。例えば、ピクチャは、６４×６４個のブロック、３２×３２個のブロック又は１６×１６個のブロックに区分されることができ、それらのブロックは、符号化及び復号のために、サンプル値のより小さいブロックに区分されることができる。Ｈ．２６５／ＨＥＶＣ規格用のエンコーディングの実施態様では、エンコーダは、ピクチャをＣＴＵ（ＣＴＢ）、ＣＵ（ＣＢ）、ＰＵ（ＰＢ）及びＴＵ（ＴＢ）にパーティション分割する。
【００５３】
エンコーダ（４００）は、イントラピクチャ符号化及び／又はインターピクチャ符号化を使用してピクチャを圧縮する。エンコーダ（４００）の構成要素の多くが、イントラピクチャ符号化とインターピクチャ符号化の両方に対して使用される。それらの構成要素によって実行される厳密な演算は、圧縮されている情報のタイプによって変わり得る。
【００５４】
任意選択で、タイリングモジュール（４１０）は、ピクチャを、同じサイズ又は異なるサイズの複数のタイルにパーティション分割する。例えば、タイリングモジュール（４１０）は、タイル行及びタイル列に沿ってピクチャを分割する。タイル行及びタイル列は、ピクチャ境界とともに、ピクチャ内のタイルの水平境界及び垂直境界を画定する。それぞれのタイルは長方形の領域である。Ｈ．２６５／ＨＥＶＣ実施態様では、エンコーダ（４００）は、ピクチャを、１つ又は複数のスライスにパーティション分割する。それぞれのスライスは、１つ又は複数のスライスセグメントを含む。
【００５５】
総合エンコーディング制御（４２０）は、入力映像信号（４０５）についてのピクチャを受け取るとともに、エンコーダ（４００）のさまざまなモジュールからフィードバック（図示せず）を受け取る。全体として、総合エンコーディング制御（４２０）は、制御信号（図示せず）を、他のモジュール（タイリングモジュール（４１０）、トランスフォーマ／スケーラ／量子化器（４３０）、スケーラ／逆トランスフォーマ（４３５）、イントラピクチャ推定器（４４０）、動き推定器（４５０）、フィルタリング制御（４６０）、及びイントラ／インタースイッチなど）に提供して、エンコーディング中に符号化パラメータを設定及び変更する。例えば、総合エンコーディング制御（４２０）は、エンコーディング中に、ハッシュテーブル作成についての判断、ＭＶ精度についての判断、及び、どの参照ピクチャをＲＰＳ内に保持するのかについての判断を管理することができる。総合エンコーディング制御（４２０）はさらに、エンコーディング中に中間結果を評価すること、例えばレート歪み解析を実行することができる。対応するデコーダが一貫した判断を下すことができるように、総合エンコーディング制御（４２０）は、エンコーディング中に実行された判断を示す総合制御データ（４２２）を生成する。総合制御データ（４２２）は、ヘッダフォーマッタ／エントロピー符号化器（４９０）に提供される。
【００５６】
カレントピクチャがインターピクチャ予測を使用して予測される場合には、動き推定器（４５０）は、入力映像信号（４０５）のカレントピクチャのサンプル値のブロックの、１つ又は複数の参照ピクチャに対する動きを推定する。復号済みピクチャバッファ（「ＤＰＢ」）（４７０）は、１つ又は複数の再構成された、以前に符号化されたピクチャを、参照ピクチャとして使用するためにバッファリングする。複数の参照ピクチャが使用されるとき、複数の参照ピクチャは、異なる時間方向からの参照ピクチャとすることも、又は同じ時間方向からの参照ピクチャとすることもできる。
【００５７】
動き推定器（４５０）は、総合エンコーディング制御（４２０）及びブロックハッシュ辞書（４５１）ととともに機能して、ＭＶ精度（例えば、整数サンプルＭＶ精度、１／２サンプルＭＶ精度、又は１／４サンプルＭＶ精度）を、本明細書で説明された手法を使用して選択することができ、次いで、選択されたＭＶ精度を、動き推定中に使用することができる。動き推定中のハッシュベースブロックマッチングのため、動き推定器（４５０）は、ブロックハッシュ辞書（４５１）を使用して、カレントブロックに関するＭＶ値を見つけることができる。ブロックハッシュ辞書（４５１）は、ハッシュベースブロックマッチングのための候補ブロックを編成するデータ構造である。ブロックハッシュ辞書（４５１）はハッシュテーブルの例である。図４ｂでは、ブロックハッシュ辞書（４５１）は、入力サンプル値に基づいて構築されている。或いは、ブロックハッシュ辞書は、再構成されたサンプル値に基づいて構築されることができ、新たな候補ブロックがハッシュベースブロックマッチングで使用するために使用可能になると、新たな候補ブロックに関する情報を記憶するためにエンコーディング中に更新されることができる。
【００５８】
動き推定器（４５０）は、副次的情報として、ＭＶデータ、マージモードインデックス値及び参照ピクチャ選択データなどの動きデータ（４５２）、並びに選択されたＭＶ精度を生成する。これらのデータは、ヘッダフォーマッタ／エントロピー符号化器（４９０）及び動き補償器（４５５）に提供される。
【００５９】
動き補償器（４５５）は、ＤＰＢ（４７０）からの再構成された参照ピクチャにＭＶを適用する。動き補償器（４５５）は、カレントピクチャに関する動き補償された予測を生成する。
【００６０】
エンコーダ（４００）内の別の経路では、イントラピクチャ推定器（４４０）が、入力映像信号（４０５）のカレントピクチャのサンプル値のブロックに対するイントラピクチャ予測をどのように実行するのかを判定する。カレントピクチャは、イントラピクチャ符号化を使用して、完全に又は部分的に符号化されることができる。カレントピクチャの再構成（４３８）の値をイントラ空間予測に対して使用して、イントラピクチャ推定器（４４０）は、カレントピクチャのカレントブロックのサンプル値を、カレントピクチャの、近傍の以前に再構成されたサンプル値から、どのように空間的に予測するのかを判定する。イントラピクチャ推定器（４４０）は、カレントブロックに対して使用する空間的予測の方向を判定することができる。
【００６１】
又は、ＢＶ／ＭＶ値を使用したイントラＢＣ予測のため、イントラピクチャ推定器（４４０）若しくは動き推定器（４５０）は、参照ピクチャとしてのカレントピクチャ内の異なる候補参照領域に対する、カレントブロックのサンプル値の変位を推定する。ハッシュベースブロックマッチングのため、イントラピクチャ推定器（４４０）又は動き推定器（４５０）は、ブロックハッシュ辞書（図示せず）を使用して、カレントブロックに関するＢＶ／ＭＶ値を見つけることができる。又は、イントラピクチャ辞書符号化モードのため、辞書若しくは他の場所に記憶された以前のサンプル値を使用して、ブロックの画素がエンコードされる。画素は、同一位置サンプル値のセット（例えば、ＲＧＢトリプレット若しくはＹＵＶトリプレット）である。
【００６２】
イントラピクチャ推定器（４４０）は、副次的情報として、モード情報、（イントラ空間予測に関する）予測モード方向、（辞書モードに関する）オフセット及び長さなどのイントラ予測データ（４４２）を生成する。イントラ予測データ（４４２）は、ヘッダフォーマッタ／エントロピー符号化器（４９０）及びイントラピクチャ予測器（４４５）に提供される。
【００６３】
イントラ予測データ（４４２）に従って、イントラピクチャ予測器（４４５）は、カレントピクチャのカレントブロックのサンプル値を、カレントピクチャの、近傍の以前に再構成されたサンプル値から、空間的に予測する。又は、イントラＢＣ予測に関して、イントラピクチャ予測器（４４５）若しくは動き補償器（４５５）は、カレントブロックに関するＢＶ／ＭＶ値によって示される、イントラピクチャ予測参照領域の以前に再構成されたサンプル値を使用して、カレントブロックのサンプル値を予測する。又は、イントラピクチャ辞書モードに関して、イントラピクチャ予測器（４４５）は、オフセット及び長さを使用して画素を再構成する。
【００６４】
イントラ／インタースイッチは、所与のブロックに対する予測（４５８）を、動き補償された予測とするのか又はイントラピクチャ予測とするのかを選択する。
【００６５】
（もしあれば）予測（４５８）のブロックと入力映像信号（４０５）の元のカレントピクチャの対応する部分との間の差は、非スキップモードブロックに関する残余（４１８）の値を提供する。カレントピクチャの再構成中に、非スキップモードブロックについて、再構成された残余値が予測（４５８）と結合されて、映像信号（４０５）からの元の内容のおおよその又は厳密な再構成（４３８）を生成する。（損失性の圧縮では、映像信号（４０５）から一部の情報が失われる。）
【００６６】
トランスフォーマ／スケーラ／量子化器（４３０）では、周波数トランスフォーマが、空間ドメイン映像情報を、周波数ドメイン（すなわちスペクトル、トランスフォーム）データに変換する。ブロックベース映像符号化のために、周波数トランスフォーマは、離散的コサイントランスフォーム（「ＤＣＴ」）、その整数近似値、又は他のタイプのフォワードブロックトランスフォーム（例えば、離散的サイントランスフォーム、又はその整数近似値）を、予測残余データ（又は予測（４５８）がヌルの場合にはサンプル値データ）のブロックに適用し、周波数トランスフォーム係数のブロックを生成する。トランスフォーマ／スケーラ／量子化器（４３０）は、可変ブロックサイズを用いたトランスフォームを適用することができる。場合によっては、エンコーダ（４００）は、トランスフォームステップをスキップすることもできる。
【００６７】
スケーラ／量子化器は、トランスフォーム係数をスケーリング及び量子化する。例えば、量子化器は、ピクチャごと、タイルごと、スライスごと、若しくはブロックごとに異なるか、又は周波数などによって異なる量子化ステップサイズを有する不感帯スカラ量子化を、周波数ドメインデータに適用する。量子化されたトランスフォーム係数データ（４３２）は、ヘッダフォーマッタ／エントロピー符号化器（４９０）に提供される。
【００６８】
スケーラ／逆トランスフォーマ（４３５）では、スケーラ／逆量子化器が、量子化されたトランスフォーム係数に対して逆スケーリング及び逆量子化を実行する。トランスフォーム段階がスキップされなかったときには、逆周波数トランスフォーマが逆周波数トランスフォームを実行し、再構成された予測残余値又はサンプル値のブロックを生成する。非スキップモードブロックに対して、エンコーダ（４００）は、再構成された残余値を予測（４５８）の値（例えば、動き補償された予測値、イントラピクチャ予測値）と結合して、再構成（４３８）を形成する。スキップモードブロック又は辞書モードブロックに対して、エンコーダ（４００）は、予測（４５８）の値を再構成（４３８）として使用する。
【００６９】
空間イントラピクチャ予測のために、再構成（４３８）の値は、イントラピクチャ推定器（４４０）及びイントラピクチャ予測器（４４５）にフィードバックされることができる。イントラＢＣ予測のために、再構成（４３８）の値は、同様にフィードバックされて、再構成されたサンプル値を提供することができる。さらに、再構成（４３８）の値は、後続のピクチャの動き補償された予測に対して使用されることもできる。
【００７０】
再構成（４３８）の値は、さらにフィルタリングされることができる。フィルタリング制御（４６０）は、映像信号（４０５）の所与のピクチャに関して、再構成（４３８）の値に対する非ブロック化フィルタリングをどのように実行するのかを判定する。フィルタリング制御（４６０）は、フィルタ制御データ（４６２）を生成する。フィルタ制御データ（４６２）は、ヘッダフォーマッタ／エントロピー符号化器（４９０）及びマージャ／フィルタ（４６５）に提供される。
【００７１】
マージャ／フィルタ（４６５）では、エンコーダ（４００）が、異なるタイルからの内容を、ピクチャの再構成されたバージョンにマージする。エンコーダ（４００）は、フィルタ制御データ（４６２）に従って、非ブロック化フィルタリングを選択的に実行する。その代わりに又はそれに加えて、（デリンギングフィルタリング又はＡＬＦなどの）他のフィルタリングを適用することもできる。エンコーダ（４００）の設定に応じて、タイル境界をフィルタリングするのか、又は全くフィルタリングしないのかを選択することができ、エンコーダ（４００）は、このようなフィルタリングが適用されたのか、又は適用されなかったのかを示す構文を、符号化されたビットストリーム中に提供することができる。
【００７２】
ＤＰＢ（４７０）は、再構成されたカレントピクチャを、後続の動き補償された予測で使用するためにバッファリングする。特に、ＲＰＳ内の参照ピクチャは、ＤＰＢ（４７０）内にバッファリングされることができる。しかしながら、ＤＰＢ（４７０）は、限られたメモリ空間を有する。再構成されたカレントピクチャが参照ピクチャとして使用するためにＤＰＢ（４７０）内に保持される場合には、別のピクチャがＤＰＢ（４７０）から除去されること（及びＲＰＳから削除されること）がある。総合エンコーディング制御（４２０）は、どのピクチャをＲＰＳ内に保持し、ＤＰＢ（４７０）内にバッファリングするのかを判断する。下記で説明するように、総合エンコーディング制御（４２０）は、ブロックハッシュ辞書（４５１）を使用して、どの参照ピクチャをＲＰＳ内に保持するのかについての判断を下すことができる。
【００７３】
ヘッダフォーマッタ／エントロピー符号化器（４９０）は、総合制御データ（４２２）、量子化されたトランスフォーム係数データ（４３２）、イントラ予測データ（４４２）、動きデータ（４５２）、及びフィルタ制御データ（４６２）をフォーマットし、且つ／又はエントロピー符号化する。動きデータ（４５２）に関して、ヘッダフォーマッタ／エントロピー符号化器（４９０）は、マージモードインデックス値を選択し、エントロピー符号化することができるか、又は、デフォルトのＭＶ予測器が、使用されることができる。場合によっては、ヘッダフォーマッタ／エントロピー符号化器（４９０）はさらに、（ＭＶ予測器に対する）ＭＶ値に関するＭＶ差分を判定し、次いで、ＭＶ差分を、例えばコンテキスト適応バイナリ算術符号化を使用してエントロピー符号化する。
【００７４】
ヘッダフォーマッタ／エントロピー符号化器（４９０）は、エンコードされたデータを、符号化された映像ビットストリーム（４９５）の中に提供する。符号化された映像ビットストリーム（４９５）のフォーマットは、Ｈ．２６５／ＨＥＶＣフォーマット、ウィンドウズ（登録商標）メディアビデオフォーマット、ＶＣ−１フォーマット、ＭＰＥＧ−ｘフォーマット（例えば、ＭＰＥＧ−１、ＭＰＥＧ−２若しくはＭＰＥＧ−４）、Ｈ．２６ｘフォーマット（例えば、Ｈ．２６１、Ｈ．２６２、Ｈ．２６３、Ｈ．２６４）、又はその他のフォーマットの変形又は拡張とすることができる。
【００７５】
所望の実施態様及び圧縮のタイプに応じて、エンコーダ（４００）のモジュールを追加し、省略し、複数のモジュールに分割し、他のモジュールと結合し、且つ／又は似たモジュールで置き換えることができる。代替実施例では、異なるモジュール及び／又は別の構成のモジュールを含むエンコーダが、説明された技法のうちの１つ又は複数の技法を実行する。エンコーダの特定の実施例は通常、エンコーダ（４００）の変形形態又は補足されたバージョンを使用する。エンコーダ（４００）内のモジュール間に示された関係は、エンコーダ内の情報の大まかな流れを示し、単純にするため他の関係は示されていない。
【００７６】
Ｖ．映像のタイプ
ハッシュテーブルを作成し、ＭＶ精度を選択し、シーン変化を判定する本明細書で説明された手法は、任意のタイプの映像をエンコードするときに適用されることができる。しかしながら、これらの手法は特に、スクリーンキャプチャ内容などの人工的に作成されたある種の映像内容をエンコードするときの性能を向上させることができる。
【００７７】
一般に、スクリーンキャプチャ内容は、コンピュータスクリーン又は他のディスプレイの出力を表す。図５は、スクリーンキャプチャ用の入力を提供することができる内容を含むコンピュータデスクトップ環境（５１０）を示す。例えば、スクリーンキャプチャ内容の映像は、コンピュータデスクトップ（５１１）全体の一連の画像を表し得る。又は、スクリーンキャプチャ内容の映像は、ゲーム内容を含むアプリケーションウィンドウ（５１３）、Ｗｅｂページ内容を含むブラウザウィンドウ（５１２）、若しくはワードプロセッサ内容を含むウィンドウ（５１４）など、コンピュータデスクトップ環境のウィンドウのうちの１つのウィンドウの一連の画像を表し得る。
【００７８】
コンピュータによって生成された人工的に作成された映像内容として、スクリーンキャプチャ内容は、ビデオカメラを使用してキャプチャされた自然映像内容に比べて相対的に少ない離散サンプル値を有する傾向がある。例えば、スクリーンキャプチャ内容の領域はしばしば、単一の一様な色を含み、自然映像内容における領域は、徐々に変化する色を含む可能性が高い。さらに、スクリーンキャプチャ内容は通常、たとえその内容が（例えば、スクローリングによって）空間的に変位することがあるとしても、フレーム間で厳密に繰り返されるはっきりと識別可能な構造（例えば、グラフィック、テキストキャラクタ）を含む。スクリーンキャプチャ内容は普通、高い彩度サンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：４：４又はＲＧＢ４：４：４）でエンコードされるが、スクリーンキャプチャ内容を、より低い彩度サンプリング分解能を有するフォーマット（例えば、ＹＵＶ４：２：０、ＹＵＶ４：２：２）でエンコードすることもできる。
【００７９】
図６は、自然映像内容（６２１）と人工的に作成された映像内容とを含む複合映像（６２０）を示す。人工的に作成された映像内容は、自然映像内容（６２１）の横のグラフィック（６２２）と、自然映像内容（６２１）の下に延びるティッカ（ticker）（６２３）とを含む。図５に示されたスクリーンキャプチャ内容と同様に、図６に示された人工的に作成された映像内容も、比較的少ない離散サンプル値を有する傾向を有する。図６に示された人工的に作成された映像内容も、フレーム間で厳密に繰り返されるか、又は（例えば、スクローリングによって）フレーム間で徐々にオフセットされる、はっきりと識別可能な構造（例えば、グラフィック、テキストキャラクタ）を有する傾向がある。
【００８０】
ＶＩ．ハッシュベースブロックマッチングの例
本明細書で説明されるさまざまな技術革新では、映像エンコーダは、エンコーディング中にパラメータについての判断を下すときに、ハッシュベースブロックマッチングの結果を使用する。この項は、ハッシュベースブロックマッチングの例を説明する。
【００８１】
Ａ．ハッシュベースブロックマッチング
ハッシュベースブロックマッチングをエンコーダが使用するとき、エンコーダは、１つ又は複数の参照ピクチャの複数の候補ブロックのうちのそれぞれの候補ブロックについてハッシュ値を判定する。ハッシュテーブルは、それらの候補ブロックに関するハッシュ値を記憶する。エンコーダはさらに、同じハッシング手法によってカレントブロックに関するハッシュ値を判定し、次いで、一致するハッシュ値に関してハッシュテーブルを探索する。２つのブロックが全く同じである場合、それらの２つのブロックのハッシュ値は同じである。ハッシュ値を使用すると、エンコーダは、迅速且つ効率的に、カレントブロックと同じハッシュ値を有する候補ブロックを識別し、異なるハッシュ値を有する候補ブロックを除外することができる。ハッシュベースブロックマッチングの実施態様及び目標に応じて、エンコーダは次いで、カレントブロックと同じハッシュ値を有するそれらの候補ブロックをさらに評価することができる。（異なるブロックが同じハッシュ値を有することがあり得る。そのため、エンコーダは、同じハッシュ値を有する候補ブロックの中から、カレントブロックと一致する候補ブロックをさらに識別することができる。）
【００８２】
例示的ないくつかの実施態様では、候補ブロックに関するハッシュ値は、候補ブロックを含むピクチャ（参照ピクチャ）に関する入力サンプル値から判定される。ハッシュベースブロックマッチング中に、エンコーダは、カレントブロックに関するハッシュ値を、入力サンプル値を使用して判定する。エンコーダは、そのハッシュ値を、候補ブロックに関する入力サンプル値から判定されたハッシュ値と比較する（又は、ハッシュ値を、候補ブロックに関する入力サンプル値から判定されたハッシュ値に対して他の方法で使用する）。それでも、マッチングブロックから再構成されたサンプル値が、カレントブロックを表すために使用される。したがって、予測演算は、依然として、再構成されたサンプル値を使用する。
【００８３】
或いは、ハッシュベースブロックマッチングにおいて考慮される候補ブロックは、再構成されたサンプル値を含む。すなわち、候補ブロックは、ピクチャにおける以前にエンコードされ次いで再構成された内容の一部分である。候補ブロックに関するハッシュ値は、再構成されたサンプル値から判定される。ハッシュベースブロックマッチング中に、エンコーダは、カレントブロックに関するハッシュ値を、入力サンプル値を使用して判定する。エンコーダは、そのハッシュ値を、候補ブロックに関する再構成されたサンプル値から判定されたハッシュ値と比較する（又は、ハッシュ値を、候補ブロックに関する再構成されたサンプル値から判定されたハッシュ値に対して他の方法で使用する）。
【００８４】
図７は、ハッシュベースブロックマッチングにおける候補ブロックＢ（ｘ，ｙ）に関するハッシュ値（７００）を例示する。ｘ及びｙはそれぞれ、所与の候補ブロックの左上位置に対する水平座標及び垂直座標を示す。候補ブロックは、ハッシュ関数ｈ（）を使用して判定されたハッシュ値を有する。参照ピクチャ内の候補ブロックＢ（ｘ，ｙ）について、エンコーダは、候補ブロックに関するハッシュ値ｈ（Ｂ）を、参照ピクチャに関する入力サンプル値から判定する。エンコーダは、参照ピクチャ内の全ての候補ブロックに関するハッシュ値を判定することができる。又は、エンコーダは、いくつかの候補ブロックを除外することができる。
【００８５】
ハッシュ関数ｈ（）は一般に、ｈ０からｈｎ−１で示されるｎ個の可能なハッシュ値を与える。所与のハッシュ値について、そのハッシュ値を有する候補ブロックがグループ分けされる。例えば、図７では、候補ブロックＢ（１２６６，２６３）、Ｂ（１３５７，３６５）、Ｂ（１４２９，４０１）、Ｂ（５０２、４６４）、．．．がハッシュ値ｈ０を有する。グループは、異なる数の候補ブロックを含み得る。例えば、図７では、ハッシュ値ｈ４のグループは単一の候補ブロックを含み、一方、ハッシュ値ｈ０のグループは４つより多い候補ブロックを含む。
【００８６】
このようにして、可能な候補ブロックは、ｎ個のカテゴリに分配される。例えば、ハッシュ関数ｈ（）が１２ビットのハッシュ値を生成する場合、候補ブロックは、２１２＝４，０９６個のカテゴリに分割される。そのハッシュ値を有する全く同じ冗長なブロックを排除することによって、又はサンプル値のあるパターンを有する候補ブロックを除外することによって、ハッシュ値当たりの候補ブロック数をさらに低減させることができる。さらに、エンコーダは、異なるハッシュ関数を使用して繰り返し選り分け、候補ブロックの数を減らすことができる。
【００８７】
ハッシュベースブロックマッチングに対して使用されるハッシュ関数は、実施態様に依存する。ハッシュ関数は、８ビット、１２ビット、１６ビット、２４ビット、３２ビット、又は他のあるビット数のハッシュ値を生成することができる。ハッシュ値がより少数のビットを有する場合、そのデータ構造はより少数のカテゴリを含むが、それぞれのカテゴリは、より多くの候補ブロックを含む可能性がある。一方、より多くのビットを有するハッシュ値を使用することは、候補ブロックを編成するデータ構造のサイズを増大させる傾向を有する。ハッシュ値がより多くのビットを有する場合、そのデータ構造はより多くのカテゴリを含むが、それぞれのカテゴリは、より少数の候補ブロックを含む可能性がある。ハッシュ関数ｈ（）は、暗号ハッシュ関数、暗号ハッシュ関数の一部分、巡回冗長検査（「ＣＲＣ」）関数、ＣＲＣの一部分、又は（例えば、平均算出演算及びＸＯＲ演算を使用して候補ブロック若しくはカレントブロックのシグナチャを判定する）別のハッシュ関数とすることができる。いくつかのタイプのハッシュ関数（例えば、ＣＲＣ関数）は、類似のブロックを異なるハッシュ値にマッピングする。このことは、カレントブロックに厳密に対応する一致ブロックを捜すときに効率的であることがある。他のタイプのハッシュ関数（例えば、局所性鋭敏型ハッシュ関数）は、類似のブロックを同じハッシュ値にマッピングする。
【００８８】
ハッシュベースブロックマッチング中に、ハッシュ関数ｈ（）を用いて、エンコーダは、カレントブロックＢｃｕｒｒｅｎｔに関するハッシュ値を判定する。図７では、ハッシュ値ｈ（Ｂｃｕｒｒｅｎｔ）はｈ３である。カレントブロックのハッシュ値を使用して、エンコーダは、同じハッシュ値を有する候補ブロック（図７の線で囲った枠内に示されている）を識別し、残りの候補ブロックを除外することができる。ハッシュ関数が同様のブロックを異なるハッシュ値にマッピングするとき、識別された候補ブロック（カレントブロックと同じハッシュ値）は、カレントブロックと全く同じである可能性があるブロックを含む。ハッシュ関数が同様のブロックを同じハッシュ値にマッピングするとき、識別された候補ブロック（カレントブロックと同じハッシュ値）は、カレントブロックと全く同じである可能性があるブロック、又はカレントブロックに非常に近い可能性があるブロックを含む。いずれの方式でも、エンコーダは、これらの識別された候補ブロックの中から、カレントブロックに対する一致ブロックを（例えば、サンプルによるブロックマッチング演算を使用して、第２のハッシュ関数を使用して）さらに識別することができる。
【００８９】
全体として、ハッシュ値比較は、サンプルによるブロックマッチングよりもはるかに単純であるため、ハッシュベースブロックマッチングは、参照ピクチャ内の候補ブロックを評価するプロセスをはるかに効率的にすることができる。さらに、エンコーディング中のピクチャ内の異なるブロックに対するハッシュベースブロックマッチングにおいて、候補ブロックに関するハッシュ値は、再使用されることができる。この場合、候補ブロックに関するハッシュ値を計算するコストを、ピクチャ全体、同じ参照ピクチャを使用する他のピクチャ、及びハッシュ値を使用する他のエンコーダ側判断に対するハッシュベースブロックマッチング演算の全体で償却することができる。
【００９０】
Ｂ．ハッシュベースブロックマッチングのためのデータ構造
例示的ないくつかの実施態様では、エンコーダは、候補ブロックのハッシュ値に従って候補ブロックを編成するデータ構造を使用する。このデータ構造は、ハッシュベースブロックマッチングを計算的により効率的にするのに役立ち得る。このデータ構造は例えば、本明細書で説明されたブロックハッシュ辞書又はハッシュテーブルを実施する。
【００９１】
図８ａは、ハッシュベースブロックマッチングのための候補ブロックを編成する例示的なデータ構造（８００）を例示する。ハッシュ関数ｈ（）に関して、ｎ個の可能なハッシュ値は、ｈ０からｈｎ−１である。同じハッシュ値を有する候補ブロックは、同じ候補ブロックリストに分類される。所与の候補ブロックリストは、ゼロ又はそれより多いエントリを含むことができる。例えば、ハッシュ値ｈ２に関する候補ブロックリストはエントリを含まず、ハッシュ値ｈ６に関するリストは２つのエントリを有し、ハッシュ値ｈ１に関するリストは４つより多いエントリを有する。
【００９２】
エントリ（ｈｉ，ｋ）は、ハッシュ値ｈｉを有するｋ番目の候補ブロックに関する情報を含む。図８ｂに示されているように、候補ブロックリスト内のエントリは、ブロックのアドレスＢ（ｘ，ｙ）（例えば、ブロックの左上位置に対する水平座標及び垂直座標）を含むことができる。又は、図８ｃに示されているように、候補ブロックリスト内のエントリは、ブロックのアドレスＢ（ｘ，ｙ）と、反復ハッシュベースブロックマッチングに使用されることができる、第２のハッシュ関数によるハッシュ値とを含むことができる。
【００９３】
カレントブロックに対するハッシュベースブロックマッチング中に、エンコーダは、カレントブロックに関するハッシュ値ｈ（Ｂｃｕｒｒｅｎｔ）を判定する。エンコーダは、同じハッシュ値を有する候補ブロックリストを保持し、残りのｎ−１個のリストを除外する。保持された候補ブロックリスト内に候補ブロックがある場合には、一致するブロックを選択するため、エンコーダは、カレントブロックを候補ブロックと比較することができる。したがって、ハッシュ値ｈ（Ｂｃｕｒｒｅｎｔ）を使用した単純なルックアップ操作によって、エンコーダは、（平均で）（ｎ−１）／ｎ個の候補ブロックを排除することができ、保持されたリスト内の残りの（平均で）１／ｎ個の候補ブロックに集中することができ、それによって、サンプルによるブロックマッチング演算の数をかなり低減させることができる。
【００９４】
異なる参照ピクチャに対して異なるデータ構造が使用されることができる。或いは、データ構造内の候補ブロックに関するエントリが、候補ブロックを含む参照ピクチャを示す情報を記憶し、その情報が、ハッシュベースブロックマッチングにおいて使用されることができる。
【００９５】
異なるサイズのブロックに対して異なるデータ構造が使用されることもできる。例えば、１つのデータ構造は、８×８個の候補ブロックに関するハッシュ値を含み、第２のデータ構造は、１６×１６個の候補ブロックに関するハッシュ値を含み、第３のデータ構造は、３２×３２個の候補ブロックに関するハッシュ値を含み、これ以降も同様である。ハッシュベースブロックマッチング中に使用されるデータ構造は、カレントブロックのサイズに依存する。或いは、異なるサイズのブロックに対して、単一の、統一されたデータ構造が使用されることもできる。ハッシュ関数は、ｎビットのハッシュ値を生成することができ、ｎビットのハッシュ値のｍ個のビットは、所与のブロックサイズの可能なブロックの中のｍビットハッシュ関数に応じたハッシュ値を示し、ｎビットのハッシュ値の残りのｎ−ｍ個のビットは、所与のブロックサイズを示す。例えば、１４ビットのハッシュ値の最初の２ビットはブロックサイズを示すことができ、残りの１２ビットは、１２ビットハッシュ関数に応じたハッシュ値を示す。又は、ハッシュ関数は、ブロックのサイズに関わらずｍビットハッシュ値を生成することができ、データ構造内の候補ブロックのエントリは、候補ブロックのブロックサイズを示す情報を記憶し、その情報は、ハッシュベースブロックマッチングで使用されることができる。
【００９６】
高解像度ピクチャに対しては、データ構造が、非常に多数の候補ブロックを表す情報を記憶することができる。データ構造に対して使用されるメモリの量を低減させるため、エンコーダは、冗長な値を排除することができる。例えば、エンコーダは、全く同じブロックをデータ構造に追加することをスキップすることができる。一般に、全く同じブロックを排除することによってデータ構造のサイズを低減させることは、符号化効率に害を与え得る。したがって、全く同じブロックを排除するかどうかを判断することによって、エンコーダは、データ構造のためのメモリサイズと符号化効率とをトレードオフすることができる。エンコーダは、ブロックの内容に応じて候補ブロックを除外することもできる。
【００９７】
Ｃ．反復ハッシュベースブロックマッチング
エンコーダが、ｎ個の可能なハッシュ値を有する単一のハッシュ関数を使用するとき、エンコーダは、カレントブロックのハッシュ値に基づいて候補ブロックのｎ−１個のリストを除外することができるが、一致するハッシュ値を有するリストに関して候補ブロックが残っている場合、エンコーダは、残っている候補ブロックに対して、サンプルによるブロックマッチング演算を実行する必要が依然としてあることがある。候補ブロックを編成するデータ構造を更新するときにも、エンコーダは、サンプルによるブロックマッチング演算を実行して、全く同じブロックを識別する必要があることがある。おしなべて、これらのサンプルによるブロックマッチング演算は計算集約的となり得る。
【００９８】
したがって、いくつかの例示的な実施態様では、エンコーダは、反復ハッシュベースブロックマッチングを使用する。反復ハッシュベースブロックマッチングは、ブロックマッチングプロセスを加速させることができ、候補ブロックを編成するデータ構造を更新するプロセスも加速させることができる。
【００９９】
反復ハッシュベースブロックマッチングは、異なるハッシュ関数を用いて判定された複数のハッシュ値を使用する。ブロックＢ（カレントブロック又は候補ブロック）に対して、エンコーダは、ハッシュ値ｈ（Ｂ）に加えて、別のハッシュ値ｈ’（Ｂ）を、異なるハッシュ関数ｈ’（）を使用して判定する。エンコーダは、カレントブロックに関する第１のハッシュ値ｈ（Ｂｃｕｒｒｅｎｔ）を用いて、第１のハッシュ関数ｈ（）に関して同じハッシュ値を有する候補ブロックを識別する。識別されたこれらの候補ブロックのうちの一部をさらに除外するため、エンコーダは、異なるハッシュ関数を使用して判定される、カレントブロックに関する第２のハッシュ値ｈ’（Ｂｃｕｒｒｅｎｔ）を使用する。候補ブロックをさらに除外するため、エンコーダは、第２のハッシュ値ｈ’（Ｂｃｕｒｒｅｎｔ）を、（同じ第１のハッシュ値を有する）以前に識別された候補ブロックに関する第２のハッシュ値と比較する。ハッシュテーブルは、異なるハッシュ関数に従って、候補ブロックに関するハッシュ値を追跡する。
【０１００】
図８ａの例では、ｈ（Ｂｃｕｒｒｅｎｔ）＝ｈ３である場合、さらなる改善のため、エンコーダは、エントリ（３，０）、エントリ（３，１）、エントリ（３，２）、エントリ（３，３）、．．．を有する候補ブロックを選択する。図８ｃに示されているように、候補ブロックＢに関して、エントリは、ブロックアドレスと、ハッシュ関数ｈ’（）による第２のハッシュ値ｈ’（Ｂ）とを含む。エンコーダは、カレントブロックに関する第２のハッシュ値ｈ’（Ｂｃｕｒｒｅｎｔ）を、エントリ（３，０）、エントリ（３，１）、エントリ（３，２）、エントリ（３，３）、．．．を有するそれぞれの候補ブロックに関する第２のハッシュ値ｈ’（Ｂ）と比較する。第２のハッシュ値比較の結果に基づいて、エンコーダは、候補ブロックをさらに除外することができ、ｈ（Ｂｃｕｒｒｅｎｔ）と一致する第１のハッシュ値及びｈ’（Ｂｃｕｒｒｅｎｔ）と一致する第２のハッシュ値を有する候補ブロックがあれば、それらの候補ブロックを残すことができる。エンコーダは、あらゆる残った候補ブロックに対してサンプルによるブロックマッチングを実行して、一致するブロックを選択することができる。
【０１０１】
図９ａ〜９ｃは、異なるデータ構造を使用する反復ハッシュベースブロックマッチングの別の例を示す。図９ａのデータ構造（９００）は、第１のハッシュ関数ｈ（）による第１のハッシュ値によって候補ブロックを編成する。第１のハッシュ関数ｈ（）はｎ１個の可能なハッシュ値を有する。データ構造（９００）は、ハッシュ値ｈ０．．．ｈｎ１−１に対するリストを含む。この例では、エンコーダは、カレントブロックに関する第１のハッシュ値ｈ（Ｂｃｕｒｒｅｎｔ）＝ｈ２を判定し、ｈ２に対するリストを構造（９００）から選択する。
【０１０２】
図９ｂに示されているように、ｈ２に対するリスト（９１０）は、残った候補ブロックを、第２のハッシュ関数ｈ’（）による第２のハッシュ値によってさらに編成する複数のリストを含む。第２のハッシュ関数ｈ’（）はｎ２個の可能なハッシュ値を有する。リスト（９１０）は、ハッシュ値ｈ’０．．．ｈ’ｎ２−１に対するリストを含み、それらのリストはそれぞれ、図９ｃのエントリ（９２０）に関して示されているように、ブロックアドレス（例えば、それぞれの候補ブロックの左上位置に対する水平座標及び垂直座標）を有するエントリを含む。この例では、エンコーダは、カレントブロックに関する第２のハッシュ値ｈ’（Ｂｃｕｒｒｅｎｔ）＝ｈ’０を判定し、ｈ’０に対するリストをリスト（９１０）から選択する。エンコーダは、ｈ’０に対するリスト中の候補ブロックに対して、サンプルによるブロックマッチングを実行して、一致するブロックを選択することができる。この例では、第２のハッシュ値に対するリストは、第１のハッシュ値に対する所与のリストに対して固有である。或いは、第２のハッシュ値に対する一組のリストがあり、エンコーダは、（１）第１のハッシュ値に対する一致するリスト内の任意の候補ブロックを識別し、さらに（２）第２のハッシュ値に対する一致するリスト内の任意の候補ブロックを識別する。
【０１０３】
ハッシュベースブロックマッチングとは別に、第２のハッシュ関数ｈ’（）を使用して、候補ブロックを編成するデータ構造を更新するプロセスを単純にすることもできる。例えば、新たな候補ブロックが、データ構造内に既に表されている候補ブロックと全く同じであるかどうかをエンコーダがチェックするとき、エンコーダは、異なるハッシュ関数を用いた複数のハッシュ値を使用して、全く同じブロックではないブロックを除外することができる。エンコーダは、残った候補ブロックに対して、サンプルによるブロックマッチングを実行して、あらゆる全く同じブロックを識別することができる。
【０１０４】
上記の例では、反復ハッシュベースブロックマッチング及び更新は、２つの異なるハッシュ関数を使用する。或いは、エンコーダは、３つ、４つ、又は更に多いハッシュ関数を使用して、ハッシュベースブロックマッチングをさらに加速させるか、又は全く同じブロックではないブロックを除外し、それによって、サンプルによるブロックマッチング演算の数を低減させる。さらに、複雑度の低いエンコーダのために、又はより高速の判断プロセスのために、エンコーダは、ハッシュ値が一致するときに、サンプルによるブロックマッチング演算をスキップすることができる。多数の可能なハッシュ値を有するハッシュ関数については、２つのブロックに関するハッシュ値が一致している場合、２つのブロックは全く同じである確率が高い。特に、下記で説明されるエンコーダ側判断の例示的ないくつかの実施態様では、エンコーダは、ハッシュベースブロックマッチングの結果として、ハッシュ値が一致しているかどうかを考慮するが、サンプルによるブロックマッチング演算を全く実行しない。
【０１０５】
ＶＩＩ．ハッシュテーブルサイズの管理
この項は、ハッシュベースブロックマッチングで使用されるハッシュテーブルのサイズを管理するさまざまな手法を提示する。いくつかの解決策では、サンプル値のあるパターンを有する候補ブロックを除外する（省く）ことによって（例えば、均質なブロックを除外することによって）、ハッシュテーブルのサイズを低減させる。特定の実施態様では、（例えば、参照ピクチャ内の）複数の候補ブロックのうちのそれぞれの候補ブロックについて、エンコーダは、候補ブロックが複雑度基準を満たしているかどうかを評価する。候補ブロックが複雑度基準を満たしている場合、エンコーダは、候補ブロックのブロックハッシュ値を判定し、ブロックハッシュ値をハッシュテーブルに追加する。ブロックハッシュ値は、元のサンプル値又は再構成されたサンプル値を使用して計算されることができる。候補ブロックが複雑度基準を満たしていない場合、エンコーダは、候補ブロックのブロックハッシュ値を判定しない。例えば、所与の候補ブロックについて、（ａ）所与の候補ブロックの少なくとも１つの行が一様でないサンプル値を有しており、且つ／又は（ｂ）所与の候補ブロックの少なくとも１つの列が一様でないサンプル値を有している場合に、複雑度基準は満たされ得る。この基準を用いて、エンコーダは、一様なブロック（均質なブロック）、一様なサンプル値の行を有するブロック（水平方向に均質なブロック）、及び一様なサンプル値の列を有するブロック（垂直方向に均質なブロック）を除外することができる。より一般的には、所与の候補ブロックが複雑度基準を満たしているかどうかを評価するときに、エンコーダは、候補ブロックに関する複雑度指標を計算し、複雑度指標をしきい値と比較することができる。
【０１０６】
図１０ａ〜１０ｃは、ハッシュテーブル構築中に、候補ブロックに関するブロックハッシュ値がハッシュテーブルに追加される前に、エンコーダが除外することができる候補ブロックのパターンを示す。図１０ａは、一様なサンプル値を有するブロック（１０００）を示す。図１０ｂは、そのそれぞれの行は一様なサンプル値を有するが（水平方向に均質なブロック）、それらのサンプル値は行ごとに異なり得るブロック（１０１０）を示す。図１０ｃは、そのそれぞれの列は一様なサンプル値を有するが（垂直方向に均質なブロック）、それらのサンプル値は列ごとに異なり得るブロック（１０２０）を示す。例えば、候補ブロックのこれらのパターンを識別するために、エンコーダは、候補ブロックのそれぞれの行又はそれぞれの列が一様なサンプル値を有するかどうかをチェックすることができる。
【０１０７】
しかしながら、均質なブロック（例えば、全ての均質なブロック）を、ハッシュテーブル内の候補から排除することは、ある種の状況において、ハッシュベースマッチングの利益に負の影響を与え得る。例えば、いくつかのエンコーディングアルゴリズムは、厳密な一致が見つかったときに、（例えば、ハッシュの一致が見つかったら照合プロセスを終了することにより）より効率的に機能する。加えて、均質なブロックを候補から排除することは、厳密な一致の可能性を低減させ得る。したがって、少なくともいくつかの均質なブロックをハッシュテーブル内に保持することによって、エンコーディング効率の向上を実現することができる。
【０１０８】
この項に提示されている手法では、いくつかの均質なブロックがハッシュテーブルに含められ（このことは例えば、ハッシュの一致及び／又は厳密な一致を見つける可能性を向上させることができ、その結果としてエンコーディング効率を向上させることができる）、同時に、他の均質なブロックが依然として排除されるような態様で、ハッシュテーブルサイズが管理される。例えば、いくつかの均質なブロックだけ（例えば、所与のピクチャ内の比較的小さい割合の均質なブロックだけ）を含めることは、エンコーディング効率を向上させるという利益を依然として提供することができ、同時に、ハッシュテーブルをより小さくするという利益も保持することができる。
【０１０９】
いくつかの実施態様では、均質選択基準を満たしている均質なブロックだけがハッシュテーブルに含められる。均質選択基準は、所与の均質なブロックの座標がピクチャの特定の区分と整列しているかどうかをチェックすることを含むことができる。例えば、参照ピクチャは、水平方向及び垂直方向の特定の間隔を有するグリッド（例えば、１６×１６画素グリッド、１６×８画素グリッドなど）に区分されることができる。均質なブロックがグリッドと整列している場合（例えば、ブロックの開始画素座標が水平方向及び／又は垂直方向に整列している場合）には、そのブロックは、基準と一致しているブロックとして選択されることができる。言い方を変えて説明する。座標（ｘ，ｙ）から始まる幅×高さ（Ｗ×Ｈ）寸法を有するブロックを考える。均質選択基準は、下記のように定義されることができる。
ｘ％Ｍ＝＝０＆＆ｙ％Ｎ＝＝０
上式で、Ｍ及びＮは、予め定義された数（例えば、同じ数又は異なる数）である。この選択基準を記述する別の方式は、
ｘ＆（Ｍ−１）＝＝０＆＆Ｙ＆（Ｎ−１）＝＝０
である。上式で、Ｍ及びＮはともに２の累乗である。いくつかの実施態様では、Ｍ及びＮはともに１６である。例えば、均質なブロックの座標が３２，３２である場合、値Ｍ＝１６及びＮ＝１６値を使用したときに、そのブロックは選択され（０，０及び３２，０及び６４，０及び０，３２及び０，６４などにおけるブロックも同様である）、一方、座標が３５，３２である均質なブロックは選択されないであろう。いくつかの実施態様では、Ｍは、ブロックの幅（Ｗ）に設定され、Ｎは、ブロックの高さ（Ｈ）に設定される。
【０１１０】
図１１は、ハッシュテーブル構築中に特定の均質なブロックを選択する技法（１１００）を示す。図３又は図４ａ〜４ｂを参照して説明したものなどの画像エンコーダ又は映像エンコーダは、この技法（１１００）を実行することができる。
【０１１１】
エンコーダは、次の候補ブロックを取得し（１１１０）、候補ブロックが複雑度基準を満たしているかどうかを評価する（１１２０）。例えば、例示的ないくつかの実施態様では、（ａ）所与の候補ブロックの少なくとも１つの行が一様でないサンプル値を有しており、且つ／又は（ｂ）所与の候補ブロックの少なくとも１つの列が一様でないサンプル値を有している場合に、複雑度基準は満たされており、（ａ）そのブロックが、一様なサンプル値の行を有しており（水平方向に均質なブロック）、且つ／又は（ｂ）そのブロックが、一様なサンプル値の列を有している（垂直方向に均質なブロック）場合、複雑度基準は満たされていない。又は、より一般的には、エンコーダは、候補ブロックに関する複雑度指標を計算し、次いで、複雑度指標をしきい値と比較することができる。例えば、複雑度指標は、周波数トランスフォーム（例えば、ＤＣＴ）後の、候補ブロックに関する非ゼロ水平位置及び／又は非ゼロ垂直位置における非ゼロＡＣ係数のカウントであり、しきい値はゼロである。候補ブロックに関して、ＡＣ係数の最上位行の外側及びＡＣ係数の左列の外側に任意の非ゼロＡＣ係数がある場合、複雑度基準は満たされている。或いは、エンコーダは、別の複雑度指標を考慮する。複雑度基準は、候補ブロックの一部分（例えば、行、列、サブブロック）のハッシュ値を比較することによって、少なくとも部分的に評価されることができる。
【０１１２】
候補ブロックが複雑度基準を満たしている場合、エンコーダは、候補ブロックに関するブロックハッシュ値を判定し（１１３０）、ブロックハッシュ値をハッシュテーブルに追加する（１１４０）。ブロックハッシュ値は、任意のハッシング手法を使用して判定されることができる。
【０１１３】
候補ブロックが複雑度基準を満たしていない場合（例えば、候補ブロックが水平方向に均質であり、且つ／又は垂直方向に均質である場合）には、候補ブロックが均質選択基準を満たしているかどうかを判定する（１１６０）ために、候補ブロックがチェックされる。候補ブロックが均質選択基準を満たしている場合、エンコーダは、候補ブロックに関するブロックハッシュ値を判定し（１１３０）、ブロックハッシュ値をハッシュテーブルに追加する（１１４０）。ブロックハッシュ値は、任意のハッシング手法を使用して判定されることができる。そうでない場合（候補ブロックが均質選択基準を満たしていない場合）、候補ブロックのブロックハッシュ値はハッシュテーブルに追加されない。
【０１１４】
いくつかの実施態様では、候補ブロックのｘ開始座標とｙ開始座標（例えば、左上の画素の座標）のうちの少なくとも一方の開始座標が所定の値で均等に割り切れるときに、候補ブロックは均質選択基準を満たしている。例えば、所定の値が１６である場合、０、１６、３２、４８などのｘ座標値は条件を満たすであろう。所定の値は、ｘ座標及びｙ座標に対して異なることができる。いくつかの実施態様では、ｘ座標に対する所定の値が候補ブロックの幅に設定され、ｙ座標に対する所定の値が候補ブロックの高さに設定される。
【０１１５】
エンコーダは、次の候補ブロックに進むかどうかを判定する（１１５０）。次の候補ブロックに進む場合、エンコーダは続けて、次の候補ブロックを取得し（１１１０）、次の候補ブロックが複雑度基準を満たしているかどうかを評価する（１１２０）。このように、エンコーダは、それぞれの候補ブロックが複雑度基準及び均質選択基準を満たしているかどうかに応じて、複数の候補ブロックに関する（例えば、参照ピクチャなどのピクチャの候補ブロックに関する）ブロックハッシュ値を選択的に判定することができる。
【０１１６】
ＶＩＩＩ．ＭＶ分解能の判定
この項は、エンコーディング中に、動きベクトル（「ＭＶ」）分解能を、（例えば、ハッシュ値を照合する）ハッシュベースブロックマッチングの結果に応じて適応的に判定するさまざまな手法を提示する。エンコーディング中にＭＶ分解能に対する適切なＭＶ精度値を選択することによって、これらの手法は、エンコーディング及びデコーディング（decoding：復号）のレート歪み性能及び／又は計算効率に関して有効な圧縮を容易にすることができる。ＭＶ精度は、ピクチャ、ブロック、スライスなどに対して判定されることができる。
【０１１７】
Ａ．異なるＭＶ精度
人工的に作成された映像内容をエンコードするとき、ＭＶ値は普通、整数サンプル空間変位（整数ＭＶ精度）を表し、非常に少数のＭＶ値が、分数サンプル空間変位（分数ＭＶ精度）を表す。このことは、ＭＶ精度を効率的に判定して（例えば、ピクチャ全体に対して一度に判定するか、又はピクチャの一部分に対して判定して）全体的な性能を向上させる機会を提供する。
【０１１８】
図１２ａは、整数サンプル空間変位を有するＭＶ（１２２０）を用いた動き補償を示す。ＭＶ（１２２０）は、カレントブロックに関する参照ピクチャ内の同一位置（１２１０）を基準とした左へ４サンプル、上へ１サンプルの空間変位を示す。例えば、カレントピクチャ内の位置（６４，９６）にある４×４カレントブロックに対して、ＭＶ（１２２０）は、４×４予測領域（１２３０）を示し、その位置は、参照ピクチャ内の（６０，９５）である。予測領域（１２３０）は、参照ピクチャ内の整数サンプル位置に、再構成されたサンプル値を含む。予測領域（１２３０）の値を判定するのに、エンコーダ又はデコーダが補間を実行する必要はない。
【０１１９】
図１２ｂは、分数サンプル空間変位を有するＭＶ（１２２１）を用いた動き補償を示す。ＭＶ（１２２１）は、カレントブロックに関する参照ピクチャ内の同一位置（１２１０）を基準とした左へ３．７５サンプル、上へ０．５サンプルの空間変位を示す。例えば、カレントピクチャ内の位置（６４，９６）にある４×４カレントブロックに対して、ＭＶ（１２２１）は、４×４予測領域（１２３１）を示し、その位置は、参照ピクチャ内の（６０．２５，９５．５）である。予測領域（１２３１）は、参照ピクチャ内の分数サンプル位置に、補間されたサンプル値を含む。エンコーダ又はデコーダは、補間を実行して、予測領域（１２３１）のサンプル値を判定する。分数サンプル空間変位が許されているときには、カレントブロックと一致する可能性があるより多くの候補予測領域が存在し、したがって、少なくともあるタイプの映像内容（例えば、自然映像内容）について、動き補償された予測の質は普通向上する。
【０１２０】
Ｂ．ＭＶ値の表現
ＭＶ値は通常、整数値を使用して表現され、その整数値の意味はＭＶ精度に依存する。例えば、整数サンプルＭＶ精度では、整数値１が１サンプルの空間変位を示し、整数値２が２サンプルの空間変位を示し、これ以降も同様である。例えば１／４サンプルＭＶ精度では、整数値１が０．２５サンプルの空間変位を示す。整数値２、３、４、及び５はそれぞれ、０．５、０．７５、１．０、及び１．２５サンプルの空間変位を示す。ＭＶ精度に関わらず、整数値は、空間変位の大きさを示すことができ、別個のフラグ値が、変位が負であるのか又は正であるのかを示すことができる。所与のＭＶ値の水平ＭＶ成分及び垂直ＭＶ成分は、２つの整数値を使用して表されることができる。したがって、ＭＶ値を表す２つの整数値の意味は、ＭＶ精度に依存する。例えば、２サンプルの水平変位を有し、垂直変位を持たないＭＶ値については、ＭＶ精度が１／４サンプルＭＶ精度である場合、ＭＶ値は（８，０）として表される。しかしながら、ＭＶ精度が整数サンプルＭＶ精度である場合、ＭＶ値は（２，０）として表される。
【０１２１】
エンコードされた映像データのビットストリーム中のＭＶ値は通常、（例えば、ＭＶ成分ベースで）エントロピー符号化される。ＭＶ値を、予測ＭＶ値に対して（例えば、ＭＶ成分ベースで）差分エンコードすることもできる。多くの場合に、ＭＶ値は予測ＭＶ値に等しく、そのため差分ＭＶ値はゼロとなり、非常に効率的にエンコードすることができる。指数−ゴロム符号化、コンテキスト適応バイナリ算術符号化又は他の形態のエントロピー符号化を使用して、差分ＭＶ値（又はＭＶ予測が使用されない場合にはＭＶ値）をエントロピー符号化することができる。ＭＶ値（又は差分ＭＶ値）とエンコードされたビットとの間の厳密な関係は、使用されるエントロピー符号化の形態に依存するが、一般に、小さい値ほどより共通であるため、小さい値ほどより効率的に（すなわちより少数のビットを使用して）エンコードされ、より大きい値ほどより共通でなくなるため、大きい値ほど、より低い効率で（すなわちより多くのビットを使用して）エンコードされる。
【０１２２】
Ｃ．適応ＭＶ精度−導入
前の２項を要約すると、整数サンプルＭＶ精度を有するＭＶ値の使用は、ＭＶ値のシグナリングに関連したビットレートを低減させ、（参照ピクチャ内の分数サンプル位置におけるサンプル値の補間を回避することによって）エンコーディング及びデコーディング（decoding：復号）の計算の複雑度を低減させる傾向を有するが、少なくともいくつかのタイプの映像内容については、動き補償された予測の質を低減させることがある。一方、分数サンプルＭＶ精度を有するＭＶ値の使用は、ＭＶ値のシグナリングに関連したビットレートを増大させ、（参照ピクチャ内の分数サンプル位置におけるサンプル値の補間を含むことによって）エンコーディング及びデコーディング（decoding：復号）の計算の複雑度を増大させる傾向を有するが、少なくともいくつかのタイプの映像内容については、動き補償された予測の質を向上させることがある。一般に、計算の複雑度、ＭＶ値をシグナリングするビットレート、及び動き補償された予測の質は、ＭＶ精度が（例えば、整数サンプルから１／２サンプルへ、又は１／２サンプルから１／４サンプルへ）増大するにつれて、収穫逓減点まで増大する。
【０１２３】
人工的に作成された映像内容をエンコードするときには、分数サンプルＭＶ精度の（ビットレート及び計算の複雑度に関する）追加されるコストが正当化されないことがある。例えば、大部分のＭＶ値が整数サンプル空間変位を表し、非常に少数のＭＶ値が分数サンプル空間変位を表す場合、分数サンプルＭＶ精度の追加されるコストは正当化されない。エンコーダは、動き推定中に、分数サンプル位置における探索（及びそれらの位置においてサンプル値を判定する補間演算）をスキップすることができる。このような内容については、整数サンプルＭＶ精度を有するＭＶ値を使用することによって、動き補償された予測の質に対する重大な不利益なしに、ビットレート及び計算の複雑度を低減させることができる。
【０１２４】
他のタイプの映像内容（例えば、カメラによってキャプチャされた自然映像）に対しては、分数サンプルＭＶ精度が依然として有効であることがあるため、ＭＶ精度間の切替えを行うようにエンコーダ及びデコーダを適合させることができる。例えば、エンコーダ及びデコーダは、人工的に作成された映像内容に対しては整数サンプルＭＶ精度を使用することができるが、自然映像内容に対しては（１／４サンプルＭＶ精度などの）分数サンプルＭＶ精度を使用することができる。ＭＶ精度を選択するときにエンコーダが従うことができる手法が次の項で説明される。エンコーダは、ビットストリーム中の１つ又は複数の構文要素を使用して、選択されたＭＶ精度をデコーダにシグナリングすることができる。
【０１２５】
ＭＶ精度をシグナリングする１つの手法では、ＭＶ精度の適応選択が使用可能であるときに、エンコーダは、スライスごとにＭＶ精度を選択する。シーケンスパラメータセット（「ＳＰＳ」）、ピクチャパラメータセット（「ＰＰＳ」）又は他の構文構造中のフラグ値が、ＭＶ精度の適応選択が使用可能であるのかどうかを示す。ＭＶ精度の適応選択が使用可能である場合には、所与のスライスのスライスヘッダ内の１つ又は複数の構文要素が、そのスライスのブロックに関する選択されたＭＶ精度を示す。例えば、フラグ値０が１／４サンプルＭＶ精度を示し、フラグ値１が整数サンプルＭＶ精度を示す。
【０１２６】
ＭＶ精度をシグナリングする別の手法では、エンコーダは、ピクチャごと又はスライスごとにＭＶ精度を選択する。ＰＰＳ中の構文要素は、３つのＭＶ精度モードのうちの１つ、すなわち（０）ＰＰＳに関連づけられたピクチャのスライスのＭＶ値に対する１／４サンプルＭＶ精度モード、（１）ＰＰＳに関連づけられたピクチャのスライスのＭＶ値に対する整数サンプルＭＶ精度モード、又は（２）スライスヘッダごとにシグナリングされるフラグ値に依存するスライス適応ＭＶ精度モードを示し、ここで、スライスヘッダ内のフラグ値は、スライスのＭＶ値に関して、１／４サンプルＭＶ精度なのか又は整数サンプルＭＶ精度なのかを示すことができる。
【０１２７】
ＭＶ精度をシグナリングする別の手法では、ＭＶ精度の適応選択が使用可能であるときに、エンコーダは、ＣＵごとにＭＶ精度を選択する。所与のＣＵの構造中の１つ又は複数の構文要素は、ＣＵのブロックに対する選択されたＭＶ精度を示す。例えば、ＣＵに関するＣＵ構文構造中のフラグ値が、ＣＵに関連づけられた全てのＰＵに関するＭＶ値が、整数サンプルＭＶ精度を有するのか、又は１／４サンプルＭＶ精度を有するのかを示す。
【０１２８】
これらのどの手法においても、エンコーダ及びデコーダは、水平ＭＶ成分と垂直ＭＶ成分に対して異なるＭＶ精度を使用することができる。このことは、（例えば、スケーリングされていない次元では整数サンプルＭＶ精度を使用し、スケーリングされた次元では分数サンプルＭＶ精度を使用して）水平方向又は垂直方向にスケーリングされた人工的に作成された映像内容をエンコードするときに有効であり得る。いくつかの例示的な実施態様では、ＱＰ値の調整だけではレート制御を達成することができない場合、エンコーダは、映像のサイズを水平方向又は垂直方向に変更してビットレートを低減させ、次いで、サイズが変更された映像をエンコードすることができる。デコーダ側では、復号後に、映像が元の寸法に再びスケーリングされる。エンコーダは、デコーダに、水平ＭＶ成分に関するＭＶ精度をシグナリングし、さらに、垂直ＭＶ成分に関するＭＶ精度をシグナリングすることができる。
【０１２９】
より一般的には、ＭＶ精度の適応選択が使用可能であるとき、エンコーダは、ＭＶ精度を選択し、選択されたＭＶ精度を何らかの方式でシグナリングする。例えば、ＳＰＳ、ＰＰＳ又は他の構文構造中のフラグ値は、ＭＶ精度の適応選択が使用可能であるのかどうかを示す。適応ＭＶ精度が使用可能であるときには、シーケンス層構文構造、ＧＯＰ層構文構造、ピクチャ層構文構造、スライス層構文構造、タイル層構文構造、ブロック層構文構造、又は他の構文構造中の１つ又は複数の構文要素が、ＭＶ値の水平及び垂直成分に対する選択されたＭＶ精度を示すことができる。又は、シーケンス層構文構造、ＧＯＰ層構文構造、ピクチャ層構文構造、スライスヘッダ層構文構造、スライスデータ層構文構造、タイル層構文構造、ブロック層構文構造、若しくは他の構文構造中の１つ若しくは複数の構文要素が、異なるＭＶ成分に対するＭＶ精度を示すこともできる。２つの使用可能なＭＶ精度があるときには、フラグ値は、２つのＭＶ精度の間の選択を示すことができる。より多くの使用可能なＭＶ精度がある場合には、整数値は、それらのＭＶ精度の間の選択を示すことができる。
【０１３０】
選択されたＭＶ精度を示す構文要素をシグナリング／解析するための変更とは別に、シグナリングされたＭＶ値がどのように解釈されるのかを、選択されたＭＶ精度に応じて変更するように、復号を変更することもできる。ＭＶ値が、どのようにエンコードされ、そして再構成されるのかの詳細は、ＭＶ精度によって異なり得る。例えば、ＭＶ精度が整数サンプル精度であるときには、予測ＭＶ値を最も近い整数に丸めることができ、差分ＭＶ値は、整数サンプルオフセットを示すことができる。又は、ＭＶ精度が１／４サンプル精度であるときには、予測ＭＶ値を最も近い１／４サンプルオフセットに丸めることができ、差分ＭＶ値は、１／４サンプルオフセットを示すことができる。又は、ＭＶ値は、他のある方式でシグナリングされることもできる。ＭＶ値が整数サンプルＭＶ精度を有し、映像が４：２：２又は４：２：０の彩度サンプリングを使用するときには、彩度ＭＶ値は、スケーリングなどによって導出されることができ、このことは、彩度に対する１／２サンプル変位をもたらすことがある。又は、彩度ＭＶ値を整数値に丸めることもできる。
【０１３１】
或いは、エンコーダが、ＭＶ値がどのように予測されるのか、又は、ＭＶ差がビットストリーム中でどのようにシグナリングされるのかを変更せず、デコーダも、ＭＶ値がどのように予測されるのか、又はＭＶ差がどのように再構成されるのかを変更しないが、選択されたＭＶ精度次第で、再構成されたＭＶ値の解釈が変わる。選択されたＭＶ精度が整数サンプル精度である場合には、（４分の１サンプル精度で演算する）動き補償プロセスで使用される前に、再構成されたＭＶ値は４倍にスケーリングされる。選択されたＭＶ精度が４分の１サンプル精度である場合には、動き補償プロセスで使用される前に、再構成されたＭＶ値はスケーリングされない。
【０１３２】
Ｄ．カテゴリを使用したＭＶ分解能の判定
映像エンコーディング中にＭＶ分解能を適応させることができるとき、エンコーダは、映像の単位に対するＭＶ精度（例えば、その単位に関するＭＶ値の一方又は両方の成分に対するＭＶ精度）を選択する。エンコーダは、使用するＭＶ精度を、ブロックを複数のカテゴリに分類した結果に応じて選択することができ、この分類は、（例えば、ハッシュ値を照合する）ハッシュベースブロックマッチングを、分類演算のうちの１つ又は複数の分類演算内に含むことができる。ＭＶ精度の選択は、一様なブロック（例えば、水平方向及び／又は垂直方向に均質なブロック）としてのブロックの分類など、他の因子にも依存し得る。これらの手法は、適切なＭＶ精度を選択する計算的に効率的な方式を提供することができる。
【０１３３】
１．ＭＶ精度を選択する例示的な技法
図１３は、ブロック分類の結果に応じてＭＶ精度を選択する一般化された技法（１３００）を示す。技法（１３００）は、図３若しくは図４ａ及び図４ｂを参照して説明したものなどのエンコーダによって、又は他のエンコーダによって実行されることができる。
【０１３４】
エンコーダは、映像をエンコードしてエンコードされたデータを生成し、次いで、エンコードされたデータをビットストリームの形で出力する。エンコーディングの一部分として、エンコーダは、映像の単位を複数のブロックに分割する（例えば、映像のピクチャ、スライス又は他の単位を分割する）（１３１０）。次いで、それぞれのブロックについて、エンコーダは、ブロックを、複数のカテゴリのうちの１つのカテゴリに分類する（１３２０）。カテゴリは、均質分類基準を使用した均質カテゴリ、及び／又はハッシュベースマッチング分類基準を使用したハッシュ一致カテゴリを含むことができる。分類（例えば、前記複数のカテゴリのうちの１つ又は複数のカテゴリにあるブロックのカウント）に基づいて、エンコーダは、映像の単位に関するＭＶ精度を判定する（１３３０）。例えば、エンコーダは、整数ＭＶ精度を使用するのか又は分数ＭＶ精度（例えば、１／４サンプルＭＶ精度）を使用するのかを判定することができる。
【０１３５】
図１４は、ＭＶ精度を選択するときに使用されるブロック分類を実行する技法（１４００）を示す。技法（１４００）は、図３若しくは図４ａ及び図４ｂを参照して説明したものなどのエンコーダによって、又は他のエンコーダによって実行されることができる。技法（１４００）を使用して、図１３に関して上記で論じたブロック分類（１３２０）を実施することができる。
【０１３６】
ブロックを分類するために、技法（１４００）は最初に、ブロックを全ブロックカテゴリに割り当てる（１４１０）。ブロックを全ブロックカテゴリに割り当てることは、全ブロックカテゴリに関連づけられたブロックカウントを１増やすことによって実行されることができる。
【０１３７】
技法（１４００）は次に、ブロックが、参照ピクチャ内の同一位置ブロックと一致している（例えば、ブロックによって使用される１つ又は複数の参照ピクチャのうちの少なくとも１つの参照ピクチャ内のブロックと一致している）かどうかを判定し（１４２０）、ブロックが参照ピクチャ内の同一位置ブロックと一致している場合には、ブロックを、同一位置一致カテゴリに割り当てる（１４３０）。ブロックを同一位置一致カテゴリに割り当てることは、同一位置一致カテゴリに関連づけられたブロックカウントを１増やすことによって実行されることができる。
【０１３８】
ブロックが参照ピクチャ内の同一位置ブロックと一致していない場合、技法（１４００）は次いで、ブロックが均質なブロックであるかどうか（例えば、ブロックが水平方向に均質であるか且つ／又は垂直方向に均質である場合に満たされ得る均質分類基準を、ブロックが満たしているかどうか）をチェックし（１４４０）、ブロックが均質なブロックである場合には、ブロックを均質カテゴリに割り当てる（１４５０）。ブロックを均質カテゴリに割り当てることは、均質カテゴリに関連づけられたブロックカウントを１増やすことによって実行されることができる。
【０１３９】
ブロックが均質なブロックでない場合、技法（１４００）は次いで、ブロックが、ハッシュベースマッチング分類基準を満たしているかどうか（例えば、１つ又は複数の参照ピクチャの候補ブロックから生成されたハッシュテーブル内でブロックに関するハッシュ値が見つかるかどうか）をチェックし（１４６０）、ブロックがハッシュベースマッチング分類基準を満たしている場合には、ブロックを、ハッシュ一致カテゴリに割り当てる（１４７０）。ブロックを、ハッシュ一致カテゴリに割り当てることは、ハッシュ一致カテゴリに関連づけられたブロックカウントを１増やすことによって実行されることができる。
【０１４０】
ブロックが分類された後、ブロックが残っている場合に、技法（１４００）は続いて、（例えば、映像の単位の全てのブロックを分類するために）次のブロックを分類する（１４８０）。
【０１４１】
技法（１４００）は、ブロックがカテゴリに割り当てられたときに、それぞれのカテゴリに関連づけられたカウンタを増加させることによって、映像単位の複数のブロックを複数のカテゴリに分類するように、実行されることができる。
【０１４２】
いくつかの実施態様では、カレントピクチャのブロックが分類される。カレントピクチャは、重なっていない幅（Ｗ）×高さ（Ｈ）のブロックに分割されることができる。一実施態様では、Ｗ＝Ｈ＝８である。エンコーダは、カレントピクチャ内の全てのブロックに対してハッシュベースブロックマッチングを実行することができる。探索範囲は、カレントピクチャに対する１つ（又は複数）の参照ピクチャとすることができる。一実施態様では、参照ピクチャリスト０内の最初の参照ピクチャを使用して、ハッシュマッチングを実行する。
【０１４３】
いくつかの実施態様では、ブロックは、下記の４つのカテゴリを使用して分類される。第１のカテゴリは「Ｔ」（例えば、全ブロックカテゴリ）と呼ばれる。全てのブロックは、「Ｔ」カテゴリに割り当てられる。
【０１４４】
第２のカテゴリは「Ｃ」（例えば、同一位置一致カテゴリ）と呼ばれる。参照ピクチャ内の同一位置ブロックと一致しているブロックは、「Ｃ」カテゴリに割り当てられる。２つ以上の参照ピクチャが使用される場合には、ブロックが参照ピクチャのうちの少なくとも１つの参照ピクチャ内の同一位置ブロックと一致している場合、ブロックは割り当てられる。
【０１４５】
第３のカテゴリは「Ｓ」（例えば、均質カテゴリ又は「平滑」カテゴリ）と呼ばれる。「Ｃ」カテゴリに割り当てられていない均質な（例えば、水平方向及び／又は垂直方向に均質な）ブロックは、「Ｓ」カテゴリに割り当てられる。
【０１４６】
第４のカテゴリは「Ｍ」（例えば、ハッシュ一致カテゴリ）と呼ばれる。「Ｃ」カテゴリにも又は「Ｓ」カテゴリにも割り当てられていないが、１つ又は複数の参照ピクチャの候補ブロックから生成されたハッシュテーブル内で見つかるハッシュ値を有するブロックは、「Ｍ」カテゴリに割り当てられる。
【０１４７】
「Ｔ」、「Ｃ」、「Ｓ」及び「Ｍ」カテゴリを使用する実施態様では、下記式のＣＳＭ率（例えば、比率値）が算出されることができる。
ＣＳＭ率＝（Ｃ＋Ｓ＋Ｍ）／Ｔ
ＣＳＭ率は、ピクチャ（又は映像の他の単位）内の「Ｃ」、「Ｓ」及び「Ｍ」ブロックの割合を示す。さらに、カレントピクチャに関するＣＳＭ率及び「Ｎｃｓｍ」個の以前の符号化されたピクチャのＣＳＭ率の平均値である平均ＣＳＭ率が算出されることができる。さらに、Ｍ率が算出されることができ、Ｍ率＝Ｍ／Ｔ（「Ｍ」ブロックの割合）である。平均Ｍ率は、カレントピクチャに関するＭ率及び「Ｎｍ」個の以前の符号化されたピクチャのＭ率の平均値である。
【０１４８】
ＭＶ精度を判定する（例えば、整数ＭＶ精度を使用するのか、又は１／４ペル（pel）精度などの分数ＭＶ精度を使用するのかを判断する）ために、上述のカテゴリ並びに「Ｔ」、「Ｃ」、「Ｓ」及び「Ｍ」カテゴリから算出された値を使用して、下記のルールのうちの１つ又は複数のルールが（個別に又は組み合わせて）適用されることができる。
【０１４９】
ルール１：ＣＳＭ率がしきい値よりも大きい場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（カレントピクチャのマッチング率（matching  rate）があまりに低い場合には分数精度ＭＶを使用する。）
【０１５０】
ルール２：平均ＣＳＭ率がしきい値よりも大きい場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（スライディングウィンドウ内のピクチャのマッチング率があまりに低い場合には分数精度ＭＶを使用する。）
【０１５１】
ルール３：Ｍ率がしきい値よりも大きい場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（非同一位置非平滑ブロックのマッチング率がしきい値よりも高い場合には整数精度ＭＶを使用する）。
【０１５２】
ルール４：平均Ｍ率がしきい値よりも大きい場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（スライディングウィンドウ内のピクチャの非同一位置非平滑ブロックの平均マッチング率がしきい値よりも高い場合には整数精度ＭＶを使用する）。
【０１５３】
ルール５：Ｃ＝＝Ｔである場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（カレントピクチャ内の全てのブロックが参照ピクチャ内の同一位置ブロックと一致している（２つのピクチャが全く同じである）場合には整数精度ＭＶを使用する。いくつかの実施態様では、このことは、符号化効率に対して重大な影響を持たないかもしれないが、エンコーディング時間を節約するのに役立つこともある。これは、エンコーディングプロセスにおいて整数精度ＭＶを使用することが、分数画素に対する動き推定など、分数画素に対するいくつかの演算をスキップすることができるためである。）
【０１５４】
ルール６：Ｍ＞（Ｔ−Ｃ−Ｓ）／比率１である場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（全ての非同一位置非平滑ブロックの中の一致したブロックの割合がしきい値よりも高い場合には整数精度ＭＶを使用する。）
【０１５５】
ルール７：ＣＳＭ率＞しきい値１且つＭ率＞しきい値２である場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（ＣＳＭブロックの割合がしきい値よりも大きく（大部分のブロックが整数精度ＭＶを使用するのに適していることを保証するために、いくつかの実施態様ではこのしきい値は１に近い）、且つ（例えば、非同一位置非平滑ブロックに対するいくつかの一致を見つけることができることを保証するために）Ｍブロックの割合がしきい値より大きい場合には、整数精度ＭＶを使用する）。
【０１５６】
ルール８：平均ＣＳＭ率＋平均Ｍ率＞しきい値３である場合には整数ＭＶ精度を使用する。そうでない場合には１／４ペル精度を使用する。（ルール７に似た条件であるが、スライディングウィンドウ内のピクチャを考慮する。）
【０１５７】
例示的な実施態様では、下記の設定が適用される。ブロックサイズは８×８である。ハッシュマッチングが実行されるのは、参照ピクチャリスト０内の最初の参照ピクチャに対してだけである。ＮｃｓｍとＮｍはともに３１に設定される（カレントピクチャを含めて合計３２ピクチャ）。この例示的な実施態様では、動きベクトル精度が下記の順序で判断される（満たされた最初の「場合には（if）」条件がそのＭＶ精度を設定し、「場合には」条件がいずれも満たされていない場合には、「そうでない場合には（otherwise）」条件が１／４ペル精度を設定する）。
ＣＳＭ率＜０．８の場合には１／４ペル精度を使用する。
Ｔ＝＝Ｃの場合には整数精度を使用する。
平均ＣＳＭ率＜０．９５の場合には１／４ペル精度を使用する。
Ｍ＞（Ｔ−Ｃ−Ｓ）／３の場合には整数精度を使用する。
ＣＳＭ率＞０．９９＆＆Ｍ率＞０．０１の場合には整数精度を使用する。
平均ＣＳＭ率＋平均Ｍ率＞１．０１の場合には整数精度を使用する。
そうでない場合には１／４ペル精度を使用する。
【０１５８】
この項において説明された技法では、エンコーダは、１／４サンプルＭＶ精度の使用と整数サンプルＭＶ精度の使用との間で選択を実行することができる。より一般的には、エンコーダは、複数の使用可能なＭＶ精度の間で選択を実行する。複数の使用可能なＭＶ精度は、整数サンプルＭＶ精度、１／２サンプルＭＶ精度、１／４サンプルＭＶ精度及び／又は他のＭＶ精度を含むことができる。選択されたＭＶ精度は、映像の単位に関するＭＶ値の水平成分及び／又は垂直成分に対して適用されることができる。
【０１５９】
この項において説明された技法では、ハッシュベースブロックマッチングは、単位の入力サンプル値から判定されたハッシュ値及び（候補ブロックのために）１つ又は複数の参照ピクチャに対する入力サンプル値から判定されたハッシュ値を使用する。或いは、ハッシュテーブル中に表された候補ブロックに対して、ハッシュベースブロックマッチングは、再構成されたサンプル値から判定されたハッシュ値を使用することができる。
【０１６０】
この項において説明された技法では、映像の単位に対するＭＶ精度を判定するときに、エンコーダは、次の項で説明されるように、一致していないブロックが、かなりの量の自然映像内容（カメラによってキャプチャされた映像）を含むかどうかなど、他の因子も考慮することができる。
【０１６１】
２．代替形態及び変形形態
エンコーダが、ピクチャが変わってもタイルの同じパターンを使用するとき、エンコーダは、ピクチャが変わっても、タイルごとのＭＶ精度を繰り返すことができる。同一位置タイルは、ピクチャが変わっても同じＭＶ精度を使用することができる。同様に、同一位置スライスも、ピクチャが変わっても同じＭＶ精度を使用することができる。例えば、映像がコンピュータデスクトップを表しており、デスクトップの一部分が、自然映像内容を表示しているウィンドウを有しているとする。テキスト又は他のレンダリングされた内容を示している他のエリアが整数サンプルＭＶ精度を使用してエンコードされるかどうかに関わらず、デスクトップのその領域内においては、ピクチャが変わっても、分数サンプルＭＶ精度を使用することができる。
【０１６２】
エンコーダは、整数サンプルＭＶ精度が適切であることの確実性の程度に少なくとも部分的に基づいて、整数サンプルＭＶ精度に向かうバイアス（bias）の量又は整数サンプルＭＶ精度から離れるバイアスの量を調整することができる。エンコーダは、エンコーディング及び／又はデコーディング（decoding：復号）の目標の計算の複雑度に少なくとも部分的に基づいて、整数サンプルＭＶ精度に向かうバイアスの量又は整数サンプルＭＶ精度から離れるバイアスの量を調整することもできる（計算の複雑度を低減させるためには整数サンプルＭＶ精度の方が好ましい）。例えば、エンコーダは、比較演算で使用されるしきい値を、整数サンプルＭＶ精度が選択される可能性がより高くなるか、又はより低くなるように調整することができる。
【０１６３】
選択されたＭＶ精度は、映像の単位内のブロックのＭＶ値の水平ＭＶ成分用及び／又は垂直ＭＶ成分用とすることができ、水平ＭＶ成分と垂直ＭＶ成分は異なるＭＶ精度を有することが許される。又は、選択されたＭＶ精度は、映像の単位内のブロックのＭＶ値の水平ＭＶ成分と垂直ＭＶ成分の両方の成分用とすることができ、水平ＭＶ成分と垂直ＭＶ成分は同じＭＶ精度を有する。
【０１６４】
ＭＶ精度の選択の前述の例のうちの大部分の例では、ビットストリーム中のエンコードされた映像は、映像の単位に対する選択されたＭＶ精度を示す１つ又は複数の構文要素を含む。デコーダは、選択されたＭＶ精度を示す構文要素を解析し、選択されたＭＶ精度に従ってＭＶ値を解釈する。或いは、ビットストリーム中のエンコードされた映像は、選択されたＭＶ精度を示す構文要素を含まないことも可能である。例えば、ビットストリームが、分数サンプルＭＶ精度を有するＭＶ値のシグナリングをサポートしている場合であっても、エンコーダは、小数部がゼロのＭＶ値だけを使用するように、映像の単位に対する動き推定を拘束することができ、動き補償では、整数サンプルオフセットを示すＭＶ値だけが使用される。デコーダは、（ＭＶ値が整数サンプルオフセットを示す場合）分数サンプルＭＶ精度でＭＶ値を再構成して適用する。このことは、補間演算を回避することにより、復号の計算の複雑度を低減させることができる。
【０１６５】
ＩＸ．ハッシュマッチングを使用したシーン変化の検出
この項は、ハッシュマッチングに基づいてシーン変化を検出するさまざまな手法を提示する。シーン変化は、映像エンコーディング中に検出されることができる。例えば、シーン変化ピクチャとして識別されたピクチャを使用して、符号化効率を向上させることができる（例えば、所与のピクチャがシーン変化ピクチャであるかどうかに少なくとも部分的に基づいて参照ピクチャを判定することができる）。
【０１６６】
Ａ．シーン変化ピクチャの検出
シーン変化は、カレントピクチャのいくつのブロックがハッシュテーブル内にハッシュ一致を有するのかを示す情報（一般に「一致率（match  rate）」、「一致比率」又は「Ｒ」と呼ばれる）を、以前のピクチャに関して少なくとも部分的に使用して検出される。いくつかの実施態様では、一致率がＲ＝（Ｃ＋Ｓ＋Ｍ）／Ｔとして算出される。或いは、一致率は、Ｒ＝（Ｃ＋Ｍ）／Ｔ又はＲ＝Ｍ／Ｔとして算出されることもできる。カレントピクチャの一致率は「Ｒｃｕｒｒ」と表示される。加えて、（カレントピクチャの前の）以前のピクチャから平均一致率が算出されることもできる。例えば、全ての以前の符号化されたピクチャの平均を維持することができるか、又は（例えば、スライディングウィンドウを使用して）いくつかの以前のピクチャの平均を維持することができる。平均一致率は「Ｒａｖｇ」と表示される。
【０１６７】
いくつかの実施態様では、ＲｃｕｒｒがＲａｖｇよりも小さい（例えば、かなり小さい）場合、カレントピクチャは、シーン変化ピクチャとして識別されることができる。いくつかの実施態様では、Ｒｃｕｒｒ＜ａ×Ｒａｖｇである場合に、カレントピクチャは、シーン変化ピクチャとして検出される。特定の実施態様では、「ａ」の値（重み値）は０．５に設定される。
【０１６８】
Ｂ．長期参照ピクチャ選択
映像符号化では、参照ピクチャからの動き補償を使用して時間的冗長性を除去する。したがって、参照ピクチャは、符号化効率にとって非常に重要となり得る。いくつかの実施態様では、短期参照ピクチャと長期参照ピクチャの両方が使用される。短期参照ピクチャは普通、カレント符号化ピクチャからあまり遠くに離れていないいくつかのピクチャである。長期参照ピクチャは、比較的長い時間にわたり、復号済みピクチャバッファ（「ＤＰＢ」）に記憶されていることがある。長期参照ピクチャは、映像シーケンス中のより後の方で、複製されたシーンが生じることがあるか又は複製されたウィンドウが生じることがある、いくつかのスクリーン内容に対する符号化効率を向上させるのに役立つ。いくつかの実施態様では、シーン変化の前の（例えば、シーン変化の直前の）ピクチャが長期参照ピクチャとして保持され、シーン変化中のピクチャは保持されない。
【０１６９】
長期参照ピクチャ選択のさまざまな実例を例示するために、ピクチャの下記の例示的なシーケンスが使用される。
ｆ０（ｓ０）、ｆ１（ｓ０）、ｆ２（ｓ０）、ｆ３（ｓ０）、ｆ４（ｓ０）、ｆ５（ｓ０）、ｆ６（ｓ０）、ｆ７（ｓ０−＞１）、ｆ８（ｓ０−＞１）、ｆ９（ｓ０−＞１）、ｆ１０（ｓ０−＞１）、ｆ１１（ｓ１）、ｆ１２（ｓ１）
この例示的なシーケンスには、１３個のピクチャ（「ｆ０」から「ｆ１２」と表示される）及び２つのシーン（「ｓ０」及び「ｓ１」と表示される）がある。第１のシーンと第２のシーンとの間の遷移は「ｓ０−＞１」と表示される。例示的なシーケンスに示されているとおり、ピクチャｆ０からｆ６は第１のシーンｓ０に属し、ピクチャｆ７からｆ１０は、第１のシーンｓ０から第２のシーンｓ１への遷移ピクチャであり、ピクチャｆ１１及びｆ１２は第２のシーンｓ１に属する。ピクチャの例示的なシーケンスがスクリーン内容を含む場合、ｆ０、ｆ１、ｆ２、ｆ３、ｆ４、ｆ５及びｆ６に関する一致率は比較的高いことが見込まれ、ｆ７、ｆ８、ｆ９、ｆ１０及びｆ１１に関する一致率は比較的低いことが見込まれ、ｆ１２に関する一致率は比較的高いことが見込まれる。
【０１７０】
さまざまなエンコーディング状況の結果によれば、直前のシーンの最後のピクチャを保持することは、符号化効率を向上させるのに役立ち得る。したがって、上記の例示的なシーケンスでは、ｆ６が、長期参照ピクチャとして保持されるであろう。いくつかの実施態様では、所与のピクチャを長期参照ピクチャとして保持するかどうかの判断が、カレントピクチャをエンコードするときになされる。例えば、ｆｎ−１を長期参照ピクチャとして保持するかどうかの判断は、ｆｎ（カレントピクチャ）をエンコードするときになされる。特定の実施態様では、下記の２つの条件が満たされている場合に、ｆｎ−１は長期参照ピクチャとして保持される。
１．マッチング率Ｒｎ（カレントピクチャｆｎに対してはＲｃｕｒｒ）がしきい値よりも低い（ｆｎがシーン変化ピクチャとして検出されることを示す）。
２．直前のＸ個の全てのピクチャ（Ｒｎ−１、Ｒｎ−２、．．．Ｒｎ−Ｘ）のマッチング率がしきい値よりも高い（安定したシーンを示し、ｆ７、ｆ８、ｆ９などのシーン変化中のピクチャを除外することができる）。
上記の２つの条件を使用して、Ｘ個のピクチャからなる安定したシーンの直後に起こるシーン変化の始まりを検出することができる。上記の例示的なシーケンスを使用すると、カレントピクチャｆ７をエンコードするときに２つの条件が適用された場合に、ｆ７の一致率がしきい値よりも低いことが分かる場合があり（ｆ７がシーン変化ピクチャであることを示す）、一方、直前のＸ個のピクチャ（例えば、ｆ６、ｆ５、ｆ４など）がしきい値よりも高いことが分かる場合がある。その結果、２つの条件が満たされている場合、ｆ６が、長期参照ピクチャとして保持されることができる。
【０１７１】
Ｃ．ピクチャ品質調整
上記の例示的なシーケンスにおいて、第２のシーンｓ１内に（ピクチャ間の変化が極めて小さい）多くのピクチャがある場合、ｓ１内の最初の少数のピクチャをより良好な品質でエンコードすることが符号化効率を向上させるのに役立つことがある。いくつかの実施態様では、ＱＰＩ及びラムダＩを使用して、イントラピクチャをエンコードし、別のＱＰ値及びラムダ値（例えば、普通はＱＰＩ及びラムダＩよりも大きく、異なるＰピクチャ及びＢピクチャに対して異なっていてもよい）を使用して、Ｐピクチャ及びＢピクチャをエンコードする。
【０１７２】
いくつかの実施態様では、ハッシュベースのブロック一致によって、カレントピクチャが新たなシーンの開始（又は始まりに近い）ピクチャであることが検出された場合に、カレントピクチャが、より良好な品質でエンコードされる（例えば、ＱＰＩ及びラムダＩを使用してエンコードされる）。例えば、安定したシーンの始まりのピクチャ又は安定したシーンの始まりに近いピクチャをより高い品質でエンコードすることによって、同じ安定したシーン内の後続のピクチャのエンコーディング効率及び／又は品質を向上させることができる。
【０１７３】
事前解析が許されている場合、カレントピクチャが新たな安定したシーンの始まりのピクチャであるかどうかを検出することは、簡単なタスクであり得る。例えば、カレントピクチャの後の次のＸ個のピクチャをチェックすることができる。カレントピクチャが比較的低い一致率を有し、次のＸ個のピクチャが比較的高い一致率を有する場合、エンコーダは、カレントピクチャを、比較的高い品質でエンコードすることができる。例えば、上記の例示的なシーケンスを使用すると、エンコーダは、ｆ１１の一致率が比較的低く、一方、ｆ１２、ｆ１３及びｆ１４の一致率が比較的高いことを見出すことができる。この状況では、ｆ１１は、新たな安定したシーンの始まりのピクチャであると判定することができ、したがって、ｆ１１を、より良好な品質でエンコードすることができる。特定の実施態様では、下記の２つの条件が満たされている場合に、カレントピクチャｆｎは、より良好な品質で符号化される（例えば、ＱＰＩ及びラムダＩを用いてエンコードされる）。
１．マッチング率Ｒｎがしきい値よりも低い（ｆｎが新たなシーンの開始として検出されることを示す）。
２．全ての将来のＸ個のピクチャのマッチング率（Ｒｎ＋１、Ｒｎ＋２、．．．Ｒｎ＋Ｘ）がしきい値よりも高い（安定したシーンを示す）。
【０１７４】
事前解析が許されていない場合には、エンコーダは、新たな安定したシーンの始まりであると判断できないことがあり、エンコーダは、その代わりに、新たな安定したシーンが確認されることができるまで、少数のピクチャの到来を待たなければならない。例えば、エンコーダは、いくつかのピクチャＸの到来を待って、新たな安定したシーンに到達したことを確認することができ、次いで、向上した品質でカレントピクチャをエンコードすることができる。例えば、上記の例示的なシーケンスを参照すると、ｆ１２、ｆ１３、ｆ１４及びｆ１５（Ｘ＝４の場合）が比較的高い一致率を有する場合（及び、例えばｆ１１が比較的低い一致率を有する場合）には、ｆ１５を、向上した品質でエンコードすることができる。特定の実施態様では、下記の２つの条件が満たされている場合に、カレントピクチャｆｎがより良好な品質で符号化される（例えば、ＱＰＩ及びラムダＩを用いてエンコードされる）。
１．カレントピクチャ及び以前のＸ個のピクチャのマッチング率（Ｒｎ、Ｒｎ−１、Ｒｎ−２、．．．Ｒｎ−Ｘ）がしきい値よりも高い。
２．ピクチャｎ−Ｘ−１のマッチング率（Ｒｎ−Ｘ−１）がしきい値よりも低い。
【０１７５】
Ｄ．例示的な実施態様
ハッシュベースブロックマッチングを使用してシーン変化を検出するさまざまな方法を提供することができる。加えて、シーン変化情報の結果を、エンコーディング中に、長期参照ピクチャ選択及びピクチャ品質設定などの他の目的に使用することもできる。
【０１７６】
図１５は、ハッシュベースブロックマッチングの結果を少なくとも部分的に使用して、映像エンコーディング中にシーン変化を検出する一般化された技法（１５００）を示す。技法（１５００）は、図３若しくは図４ａ及び図４ｂを参照して説明したものなどのエンコーダ、又は他のエンコーダによって実行されることができる。
【０１７７】
エンコーダは、映像をエンコードして、エンコードされたデータを生成し、エンコーダは、エンコードされたデータを、ビットストリームの一部分として出力する。エンコーディング中に、エンコーダは、カレントピクチャに関する一致率を算出する（１５１０）。一致率は、（１つ又は複数の参照ピクチャに関して）カレントピクチャに対するハッシュベースブロックマッチングを少なくとも部分的に使用して算出される。いくつかの実施態様では、一致率は、カレントピクチャのブロックを複数のカテゴリに分類することによって算出される。いくつかの実施態様では、一致率は、Ｒ＝（Ｃ＋Ｓ＋Ｍ）／Ｔとして、又はＲ＝（Ｃ＋Ｍ）／Ｔとして、又はＲ＝Ｍ／Ｔとして算出される。
【０１７８】
エンコーダは次いで、複数の以前のピクチャに関する平均一致率を算出する（１５２０）。平均一致率は、以前のピクチャのそれぞれに関する個々の一致率を算出し、個々の一致率を平均することによって算出されることができる。いくつかの実施態様では、一致率は、所与の以前のピクチャのブロックを複数のカテゴリに分類することによって算出される。いくつかの実施態様では、一致率は、Ｒ＝（Ｃ＋Ｓ＋Ｍ）／Ｔとして、又はＲ＝（Ｃ＋Ｍ）／Ｔとして、又はＲ＝Ｍ／Ｔとして算出される。
【０１７９】
エンコーダは次いで、重み付き平均一致率を算出する（１５３０）。例えば、エンコーダは、平均一致率に、１．０よりも小さい重み値を乗じることができる。特定の実施態様では、重み値０．５が使用される。
【０１８０】
エンコーダは次いで、カレントピクチャに関する一致率及び重み付き平均一致率に基づいて、カレントピクチャがシーン変化ピクチャであるのかどうかを判定する（１５４０）。例えば、カレントピクチャに関する一致率が重み付き平均一致率よりも小さい場合に、カレントピクチャは、シーン変化ピクチャであると判定されることができる。
【０１８１】
カレントピクチャがシーン変化ピクチャであると検出されたときには、さまざまな判断をすることができる。例えば、カレントピクチャの直前のピクチャを、長期参照ピクチャとして選択することができる。加えて、１つのピクチャ（又は複数のピクチャ）がいつシーン変化に関わったのかについての情報を、エンコーディング中にピクチャ品質パラメータを判定するときに使用することができる。
【０１８２】
開示された本発明の原理を適用することができる多くの可能な実施例があることを考えれば、例示された実施例は単に本発明の好ましい実例でしかなく、それらの実施例を、本発明の範囲を限定するものと解釈すべきではないことを認識すべきである。むしろ、本発明の範囲は添付の請求項によって定義される。したがって、本出願人は、これらの請求項の範囲及び趣旨に含まれる全てのものを、本出願人の発明として主張する。
【図１】
0006462119.tif 000002
【図２ａ】
0006462119.tif 000003
【図２ｂ】
0006462119.tif 000004
【図３】
0006462119.tif 000005
【図４ａ】
0006462119.tif 000006
【図４ｂ】
0006462119.tif 000007
【図５】
0006462119.tif 000008
【図６】
0006462119.tif 000009
【図７】
0006462119.tif 000010
【図８ａ】
0006462119.tif 000011
【図８ｂ】
0006462119.tif 000012
【図８ｃ】
0006462119.tif 000013
【図９ａ】
0006462119.tif 000014
【図９ｂ】
0006462119.tif 000015
【図９ｃ】
0006462119.tif 000016
【図１０ａ】
0006462119.tif 000017
【図１０ｂ】
0006462119.tif 000018
【図１０ｃ】
0006462119.tif 000019
【図１１】
0006462119.tif 000020
【図１２ａ】
0006462119.tif 000021
【図１２ｂ】
0006462119.tif 000022
【図１３】
0006462119.tif 000023
【図１４】
0006462119.tif 000024
【図１５】
0006462119.tif 000025