(57)【要約】  本開示は、ビットストリームから画像フレーム内の変換ブロックを復号する方法１２００を提供する。この方法は、ビットストリームから単一の切り捨てられた単項の二値化を復号することを有し、単一の切り捨てられた単項の二値化は、画像フレームの変換ブロックの水平変換および垂直変換に使用される。次に、この方法は、復号された単一の切り捨てられた単項の二値化に基づいて、水平および垂直変換のタイプを決定し、決定されたタイプの水平および垂直変換を画像の変換ブロックに適用することによって、画像フレーム内の変換ブロックを復号する。
2021530124.tif 000002
【特許請求の範囲】
【請求項１】
ビットストリームから画像フレーム内の変換ブロックを復号する方法であって、
前記ビットストリームから単一の切り捨てられた単項の二値化を復号することと、該単一の切り捨てられた単項の二値化は、前記画像フレームの変換ブロックの水平変換および垂直変換のために使用され、
前記復号された単一の切り捨てられた単項の二値化に基づいて、水平および垂直変換のタイプを決定することと、
前記決定されたタイプの水平および垂直変換を、画像の前記変換ブロックに適用することによって、前記画像フレーム内の前記変換ブロックを復号することと
を有することを特徴とする方法。
【請求項２】
前記水平および垂直変換のタイプは、変換設定と変換インデックスとの間のマッピングにより決定され、前記変換設定および前記変換インデックスは、前記復号された単一の切り捨てられた単項の二値化に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項３】
前記決定された変換設定は、変換タイプＤＳＴ−ＶＩＩおよびＤＳＴ−ＶＩＩＩを含む変換設定０であることを特徴とする請求項２に記載の方法。
【請求項４】
前記単一の切り捨てられた単項の二値化は、前記画像フレームの前記変換ブロックの前記水平変換および前記垂直変換をそれぞれ選択するための水平変換選択および垂直変換選択を符号化することを特徴とする請求項１に記載の方法。
【請求項５】
前記単一の切り捨てられた単項の二値化における前記水平変換選択および前記垂直変換選択は、前記水平および垂直変換選択が発生する可能性に基づいて符号化されることを特徴とする請求項４に記載の方法。
【請求項６】
前記水平および垂直変換のタイプの決定は、
前記ビットストリームからイントラ予測モードを復号することと、
前記復号されたイントラ予測モードに基づいて、前記水平および垂直変換選択を決定することと
を有することを特徴とする請求項１に記載の方法。
【請求項７】
前記水平変換は、前記垂直変換の前に前記画像フレームの前記変換ブロックに適用されることを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータアプリケーションプログラムを含む非一時的なコンピュータ可読媒体であって、前記プログラムは、ビットストリームから画像フレーム内の変換ブロックを復号する方法をコンピュータに実行させるためにコンピュータ装置によって実行可能であり、前記方法は、
前記ビットストリームから単一の切り捨てられた単項の二値化を復号することと、該単一の切り捨てられた単項の二値化は、前記画像フレームの変換ブロックの水平変換および垂直変換のために使用され、
前記復号された単一の切り捨てられた単項の二値化に基づいて、水平および垂直変換のタイプを決定することと、
前記決定されたタイプの水平および垂直変換を、画像の前記変換ブロックに適用することによって、前記画像フレーム内の前記変換ブロックを復号することと
を有することを特徴とする、非一時的なコンピュータ可読媒体。
【請求項９】
前記水平および垂直変換のタイプは、変換設定と変換インデックスとの間のマッピングにより決定され、前記変換設定および前記変換インデックスは、前記復号された単一の切り捨てられた単項の二値化に基づいて決定されることを特徴とする請求項８に記載の非一時的なコンピュータ可読媒体。
【請求項１０】
前記決定された変換設定は、変換タイプＤＳＴ−ＶＩＩおよびＤＳＴ−ＶＩＩＩを含む変換設定０であることを特徴とする請求項９に記載の非一時的なコンピュータ可読媒体。
【請求項１１】
前記単一の切り捨てられた単項の二値化は、前記画像フレームの前記変換ブロックの前記水平変換および前記垂直変換をそれぞれ選択するための水平変換選択および垂直変換選択を符号化することを特徴とする請求項８に記載の非一時的なコンピュータ可読媒体。
【請求項１２】
前記単一の切り捨てられた単項の二値化における前記水平変換選択および前記垂直変換選択は、前記水平および垂直変換選択が発生する可能性に基づいて符号化されることを特徴とする請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記水平および垂直変換のタイプの決定は、
前記ビットストリームからイントラ予測モードを復号することと、
前記復号されたイントラ予測モードに基づいて、前記水平および垂直変換選択を決定することと
を有することを特徴とする請求項８に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記水平変換は、前記垂直変換の前に前記画像フレームの前記変換ブロックに適用されることを特徴とする請求項８に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、デジタルビデオ信号処理に関し、特に、ビデオサンプルの変換されたブロックを符号化及び復号するための方法、装置及びシステムに関する。本発明はまた、ビデオサンプルの変換されたブロックを符号化および復号するためのコンピュータプログラムが記録されたコンピュータ可読媒体を含むコンピュータプログラム製品に関する。
【背景技術】
【０００２】
ビデオデータの送信及び記憶のためのアプリケーションを含む、ビデオ符号化のための多くのアプリケーションが現在存在する。多くのビデオ符号化規格も開発されており、他の規格も現在開発中である。ビデオ符号化標準化における最近の開発は、「Joint Video Experts Team」（JVET）と呼ばれるグループの形成をもたらした。Joint Video Experts Team（JVET）は、「Video Coding Experts Group」(VCEG)として知られる国際電気通信連合（ＩＴＵ）の電気通信標準化セクタ（ＩＴＵ−Ｔ）のStudy Group 16、Question6(SG16／Q6)のメンバー、および「Moving Picture Experts group」（MPEG）としても知られる国際標準化機構／国際電気技術委員会合同技術委員会１／小委員会２９／作業グループ１１(ISO／IEC JTC１／ＳＣ２９／ＷＧ１１）のメンバーを含む。
【０００３】
Joint Video Experts Team（JVET）は、米国サンディエゴで開催された１０回目の会議でレスポンスを分析し、Call for Proposals（CfP）を発行した。提出されたレスポンスは、現在の最新技術のビデオ圧縮規格、すなわち「高効率ビデオ符号化」（ＨＥＶＣ）のものを著しく上回るビデオ圧縮能力を実証した。このアウトパフォーマンスに基づいて、「versatile video coding」（ＶＶＣ）と命名される新しいビデオ圧縮規格を開発するプロジェクトを開始することが決定された。ＶＶＣは特に、ビデオフォーマットが（例えば、より高い解像度およびより高いフレームレートで）能力を増加させ、帯域幅コストが比較的高いＷＡＮ上のサービス配信に対する市場需要の増加に対処することにつれて、絶えずより高い圧縮性能に対する継続的な需要に対処することが予想される。同時に、ＶＶＣは、現代のシリコンプロセスで実施可能でなければならず、達成された性能対実施コスト（例えば、シリコン面積、ＣＰＵプロセッサ負荷、メモリ使用量、および帯域幅に関して）の間の許容可能なトレードオフを提供しなければならない。
【０００４】
ビデオデータは、画像データのフレームのシーケンスを含み、各フレームは、１つまたは複数のカラーチャネルを含む。一般に、１つの一次色チャネル（primary colour channel）と２つの二次色チャネル（secondary colour channel）がある。一次色チャネルは一般に「輝度」チャネルと呼ばれ、二次色チャネルは一般に「クロマ」チャネルと呼ばれる。ビデオデータは典型的にはＲＧＢ(赤−緑−青）色空間で表示されるが、色空間は３つのそれぞれの要素間に高度の相関を有する。エンコーダまたはデコーダによって見られるビデオデータ表現はしばしば、ＹＣｂＣｒなどの色空間を使用する。ＹＣｂＣｒは、Ｙ（一次）チャネルに輝度を集中させ、ＣｂおよびＣｒ（二次）チャネルに彩度を集中させる。さらに、ＣｂおよびＣｒチャネルは「４：２：０クロマフォーマット」として知られる、輝度チャネルと比較してより低いレート、例えば、水平方向に半分および垂直方向に半分でサンプリングされてもよい。
【０００５】
ＶＶＣは、フレームがブロックに分割され、ブロックが特定の順序で処理される「ブロックベース」コーデックである。各ブロックについて、ブロックのコンテンツの予測が生成され、予測とエンコーダへの入力として見られる実際のブロックコンテンツとの間の差分（または空間領域における「残差」）の表現が形成される。差分は、離散コサイン変換（ＤＣＴ）または他の変換などのフォワード一次変換を残差値のブロックに適用することから得られる、残差係数のシーケンスとして符号化され得る。この一次変換は、残差サンプルのブロックに分離可能に適用され、すなわち、二次元変換は２つのパスで実行され、最初に、行は各行に一次元変換を適用することによって変換され、次に、各列に一次元変換を適用することによってこの結果を変換して、残差サンプルを実質的に非相関化する残差係数のブロックを生成する。さらに、この行および列処理で使用するために複数の変換が利用可能であり、どの変換が使用されるべきかを示すためにシグナリングを必要とする。ブロック内で異なる変換を使用するオプションは圧縮の利点を与えるが、これはどの変換を水平方向および垂直方向に使用すべきかを選択するためにインデックスを符号化する必要性によってわずかに低減される。このシグナリングの効率的な符号化は、このシグナリングオーバーヘッドの影響に有益である。
【発明の概要】
【０００６】
本発明の目的は、既存の構成の１つまたは複数の欠点を実質的に克服するか、または少なくとも改善することである。
【０００７】
本開示の一態様は、ビットストリームから、画像フレーム内の変換ブロックを復号する方法を提供し、該方法は、該ビットストリームからの単一の切り捨て不整合バイナレーションを復号するステップであって、該単一切り捨て不整合バイナレーションは該画像フレームの変換ブロックの水平変換および垂直変換に使用される、ステップと、該復号された単一切り捨て不整合バイナリバイナリに基づいて、該水平および垂直変換のタイプを決定するステップと、該画像の該変換ブロックに、該決定されたタイプの水平および垂直変換を適用することによって、該画像フレーム内の該変換ブロックを復号するステップと、を含む。
【０００８】
本開示の別の態様は、コンピュータアプリケーションプログラムを含む非遷移型コンピュータ可読媒体を提供し、該プログラムはコンピュータ装置によって実行可能であり、該コンピュータはビットストリームから、画像フレーム内の変換ブロックを復号する方法を実行し、該方法は該ビットストリームから生じる単一の切断された未だバイナレーションを復号するステップであって、該単一の切断された未だバイナレーションは該画像フレームの変換ブロックの水平変換および垂直変換に使用される、ステップと、該復号された単一の切断された未だバイナリバイナリに基づいて、該水平および垂直変換のタイプを決定するステップと、該決定されたタイプの水平および垂直変換を該画像の該変換ブロックに適用することによって、該画像フレーム内の該変換ブロックを復号するステップと、を含む。
【０００９】
他の態様も開示される。
【図面の簡単な説明】
【００１０】
ここで、本発明の少なくとも１つの実施形態を、以下の図面および付録を参照して説明する。
【図１】図１は、ビデオ符号化及び復号システムを示す概略ブロック図である。
【図２Ａ】図２Ａは、図１のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
【図２Ｂ】図２Ｂは、図１のビデオ符号化および復号システムの一方または両方を実施することができる汎用コンピュータシステムの概略ブロック図を形成する。
【図３】図３は、ビデオエンコーダの機能モジュールを示す概略ブロック図である。
【図４】図４は、ビデオデコーダの機能モジュールを示す概略ブロック図である。
【図５】図５は、汎用ビデオ符号化のツリー構造における１つ以上のブロックへのブロックの利用可能な分割を示す概略ブロック図である。
【図６】図６は、汎用ビデオ符号化のツリー構造における１つ以上のブロックへのブロックの許可された分割を達成するためのデータフローの概略図である。
【図７】図７は、符号化ツリーユニット（ＣＴＵ）をいくつかの符号化ユニット（ＣＵ）に分割する例である。
【図８Ａ】図８Ａは、イントラ予測モードを示す図である。
【図８Ｂ】図８Ｂは、変換インデックスによる変換設定から特定の変換へのマッピングを示す表である。
【図８Ｃ】図８Ｃは、イントラ予測モードから、変換ブロックの水平方向および垂直方向の変換設定へのマッピングを示す表である。
【図９】図９は、図３のビデオエンコーダまたは図４のビデオデコーダの逆変換モジュールを示す概略ブロック図である。
【図１０Ａ】図１０Ａは、水平方向および垂直方向にインデックスを付ける変換のための、切り捨てられた単項構文要素と変換インデックスとの間の関係を示す図である。
【図１０Ｂ】図１０Ｂは、水平方向および垂直方向にインデックスを付ける変換のための、切り捨てられた単項構文要素と変換インデックスとの間の代替的な関係を示す図である。
【図１１】図１１は、残差係数の変換ブロックをビットストリームに符号化するために、明示的変換選択に従って一次変換を実行する方法のフローチャート図である。
【図１２】図１２は、明示的変換選択に従って一次逆変換によってビットストリームから残差係数の変換ブロックを復号する方法のフローチャート図である。
【発明を実施するための形態】
【００１１】
添付の図面のうち何れか１つ以上において、同一の参照符号を有するステップ及び／又は特徴を参照する場合、それらのステップ及び／又は特徴は本説明の目的のために、反対の意図が現れない限り、同一の機能又は動作を有する。
【００１２】
図１は、ビデオ符号化及び復号システム１００の機能モジュールを示す概略ブロック図である。システム１００は圧縮効率を改善し、かつ／または実装コストの低減を達成するために、係数走査方法を利用することができる。システム１００は、ソース装置１１０と宛先装置１３０とを含む。通信チャネル１２０は、符号化されたビデオ情報をソース装置１１０から宛先装置１３０に通信するために使用される。いくつかの構成では、ソース装置１１０および宛先装置１３０がそれぞれの携帯電話ハンドセットまたは「スマートフォン」のいずれかまたは両方を備えることができ、その場合、通信チャネル１２０はワイヤレスチャネルである。他の構成では、ソース装置１１０および宛先装置１３０がビデオ会議機器を備えることができ、その場合、通信チャネル１２０は通常、インターネット接続などの有線チャネルである。さらに、ソース装置１１０および宛先装置１３０は、無線テレビ放送、ケーブルテレビアプリケーション、インターネットビデオアプリケーション（ストリーミングを含む）、およびファイルサーバ内のハードディスクドライブなどの何らかのコンピュータ可読記憶媒体上に符号化ビデオデータが取り込まれるアプリケーションをサポートする装置を含む、広範囲の装置のうちの任意のものを備えることができる。
【００１３】
図１に示すように、ソース装置１１０は、ビデオソース１１２と、ビデオエンコーダ１１４と、送信機１１６と、を含む。ビデオソース１１２は、典型的には撮像センサ等の、撮像されたビデオフレームデータ（１１３として示されている）のソース、非一時的記録媒体上に格納された前に撮像されたビデオシーケンス、又はリモート撮像センサからのビデオ、を有する。ビデオソース１１２はまた、コンピュータグラフィックスカードの出力であってもよく、例えば、タブレットコンピュータなどのコンピューティングデバイスで実行されているオペレーティングシステムとさまざまなアプリケーションのビデオ出力を表示する。ビデオソース１１２として撮像センサを含み得るソース装置１１０の例は、スマートフォン、ビデオカメラ、業務用ビデオカメラ、およびネットワークビデオカメラを含む。ビデオエンコーダ１１４は、図３を参照してさらに説明されるように、ビデオソース１１２からの撮像されたフレームデータ（矢印１１３によって示される）をビットストリーム（矢印１１５によって示される）に変換（または「符号化」）する。ビットストリーム１１５は、符号化されたビデオデータ（または「符号化されたビデオ情報」）として通信チャネル１２０を介して送信機１１６によって送信される。ビットストリーム１１５は後に通信チャネル１２０を介して送信されるまで、または通信チャネル１２０を介した送信の代わりに、「フラッシュ」メモリまたはハードディスクドライブなどの非一時的記憶装置１２２に記憶されることも可能である。
【００１４】
宛先装置１３０は、受信機１３２と、ビデオデコーダ１３４と、表示装置１３６と、を含む。受信機１３２は、通信チャネル１２０から符号化されたビデオデータを受信し、受信されたビデオデータをビットストリームとしてビデオデコーダ１３４に渡す（矢印１３３によって示される）。そして、ビデオデコーダ１３４は、矢印１３５で示す復号フレームデータを表示装置１３６に出力する。表示装置１３６の例には、陰極線管、スマートフォン、タブレットコンピュータ、コンピュータモニタ、またはスタンドアロンテレビセットなどの液晶ディスプレイが含まれる。また、ソース装置１１０および宛先装置１３０の各々の機能性が単一の装置で実現されることも可能であり、その例は、携帯電話ハンドセットおよびタブレットコンピュータを含む。
【００１５】
上記の例示的なデバイスにもかかわらず、ソース装置１１０および宛先装置１３０のそれぞれは、一般にハードウェアおよびソフトウェア構成要素の組合せを介して、汎用コンピューティングシステム内で構成され得る。図２Ａは、コンピュータモジュール２０１と、キーボード２０２、マウスポインタデバイス２０３、スキャナ２２６、ビデオソース１１２として構成することができるカメラ２２７、およびマイクロフォン２８０などの入力デバイスと、プリンタ２１５、表示装置１３６として構成することができるディスプレイデバイス２１４、およびスピーカ２１７を含む出力デバイスと、を含む、そのようなコンピュータシステム２００を示す。外部変復調器（モデム）トランシーバ装置２１６は、接続２２１を介して通信ネットワーク２２０との間で通信するためにコンピュータモジュール２０１によって使用され得る。通信チャネル１２０を表すことができる通信ネットワーク２２０は、インターネット、セルラ電気通信ネットワーク、またはプライベートＷＡＮなどの広域ネットワーク（ＷＡＮ）であってもよい。接続２２１が電話回線である場合、モデム２１６は従来の「ダイヤルアップ」モデムであってもよい。あるいは接続２２１が大容量（例えば、ケーブルまたは光）接続である場合、モデム２１６はブロードバンドモデムであってもよい。無線モデムはまた、通信ネットワーク２２０への無線接続のために使用されてもよい。トランシーバ装置２１６は、送信機１１６及び受信機１３２の機能性を提供することができ、通信チャネル１２０は、接続２２１内に具現化することができる。
【００１６】
コンピュータモジュール２０１は、典型的には少なくとも１つのプロセッサユニット２０５と、メモリユニット２０６とを含む。例えば、メモリユニット２０６は、半導体ランダムアクセスメモリ（ＲＡＭ）及び半導体リードオンリーメモリ（ROM）を有することができる。コンピュータモジュール２０１はまた、ビデオディスプレイ２１４、スピーカ２１７、およびマイクロフォン２８０に結合するオーディオビデオインターフェース２０７、キーボード２０２、マウス２０３、スキャナ２２６、カメラ２２７、およびオプションとしてジョイスティックまたは他のヒューマンインターフェースデバイス（図示せず）に結合するＩ／Ｏインターフェース２１３、ならびに外部モデム２１６およびプリンタ２１５のためのインターフェース２０８を含む、いくつかの入出力（Ｉ／Ｏ）インターフェースを含む。オーディオビデオインターフェース２０７からコンピュータモニタ２１４への信号は一般に、コンピュータグラフィックスカードの出力である。いくつかの実装では、モデム２１６が、例えばインターフェース２０８内のコンピュータモジュール２０１内に組み込まれてもよい。コンピュータモジュール２０１はまた、ローカルネットワークインターフェース２１１を有し、これは、接続２２３を介して、ローカルエリアネットワーク（ＬＡＮ）として知られるローカルエリア通信ネットワーク２２２への、コンピュータシステム２００の結合を可能にする。図２Ａに示すように、ローカル通信ネットワーク２２２は、通常、いわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む接続２２４を介してワイドネットワーク２２０に結合することもできる。ローカルネットワークインターフェース２１１は、イーサネットTM回路カード、ブルートゥースTMワイヤレス構成又はＩＥＥＥ８０２．１１ワイヤレス構成を含むことができるが、インターフェース２１１のために多くの他のタイプのインターフェースが実施されてもよい。ローカルネットワークインターフェース２１１は、また、送信機１１６の機能を提供することができ、受信機１３２および通信チャネル１２０はまた、ローカル通信ネットワーク２２２において具現化することができる。
【００１７】
Ｉ／Ｏインターフェース２０８および２１３は、シリアルコネクティビティおよびパラレルコネクティビティのいずれかまたは両方を提供することができ、前者は、典型的にはユニバーサルシリアルバス（ＵＳＢ）規格に従って実施され、対応するＵＳＢコネクタ（図示せず）を有する。記憶装置２０９が提供され、典型的にはハードディスクドライブ（ＨＤＤ）２１０を含む。フロッピーディスクドライブおよび磁気テープドライブ（図示せず）などの他の記憶装置も使用することができる。光ディスクドライブ２１２は、典型的にはデータの不揮発性ソースとして機能するために設けられる。例えば、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ、Blu ray DiscTM)、ＵＳＢ−ＲＡＭ、ポータブル、外部ハードドライブ、およびフロッピーディスクなどのポータブルメモリデバイスは、コンピュータシステム２００に対するデータの適切なソースとして使用することができる。典型的にはＨＤＤ２１０、光ドライブ２１２、ネットワーク２２０及び２２２のいずれかはビデオソース１１２として、又はディスプレイ２１４を介して再生するために記憶されるべき復号されたビデオデータのための宛先として動作するように構成されてもよい。システム１００のソース装置１１０および宛先装置１３０、またはシステム１００のソース装置１１０および宛先装置１３０は、コンピュータシステム２００において具現化されてもよい。
【００１８】
コンピュータモジュール２０１の構成要素２０５〜２１３は、典型的には相互接続バス２０４を介して、当業者に知られているコンピュータシステム２００の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ２０５は、接続２１８を用いてシステムバス２０４に結合される。同様に、メモリ２０６および光ディスクドライブ２１２は、接続２１９によってシステムバス２０４に結合される。上記の構成が実行可能なコンピュータの例には、ＩＢＭ−ＰＣおよび互換機、Sun SPARCステーション、Apple MacTMまたは同様のコンピュータシステムが含まれる。
【００１９】
適切または必要な場合、ビデオエンコーダ１１４およびビデオデコーダ１３４、ならびに以下で説明する方法は、コンピュータシステム２００を使用して実施することができ、ビデオエンコーダ１１４、ビデオデコーダ１３４、および説明される方法は、コンピュータシステム２００内で実行可能な１つまたは複数のソフトウェアアプリケーションプログラム２３３として実施することができる。具体的にはビデオエンコーダ１１４、ビデオデコーダ１３４、および説明する方法のステップは、コンピュータシステム２００内で実行されるソフトウェア２３３内の命令２３１（図２Ｂ参照）によって実行される。ソフトウェア命令２３１は、それぞれが１つ以上の特定のタスクを実行するための１つ以上のコードモジュールとして形成されてもよい。ソフトウェアはまた、２つの別個の部分に分割されてもよく、その場合、第１の部分と対応するコードモジュールは説明される方法を実行し、第２の部分と対応するコードモジュールは、第１の部分とユーザとの間のユーザインターフェースを管理する。
【００２０】
ソフトウェアは例えば、以下に説明する記憶装置を含むコンピュータ可読媒体に記憶することができる。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、その後、コンピュータシステム２００によって実行される。このようなソフトウェア又はコンピュータ可読媒体に記録されたコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム２００におけるコンピュータプログラム製品の使用は、ビデオエンコーダ１１４、ビデオデコーダ１３４、および説明される方法を実施するための有利な装置をもたらすことが好ましい。
【００２１】
ソフトウェア２３３は、典型的にはＨＤＤ２１０またはメモリ２０６に記憶される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム２００にロードされ、コンピュータシステム２００によって実行される。したがって、例えば、ソフトウェア２３３は、光ディスクドライブ２１２によって読み取られる光学的に読み取り可能なディスク記憶媒体（例えば、ＣＤ−ＲＯＭ）２２５に記憶することができる。
【００２２】
場合によっては、アプリケーションプログラム２３３が１つ以上のＣＤ−ＲＯＭ２２５上で符号化されたユーザに供給され、対応するドライブ２１２を介して読み出されてもよく、あるいはネットワーク２２０または２２２からユーザによって読み出されてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム２００にロードすることもできる。コンピュータ可読記憶媒体は、実行および／または処理のために記録された命令および／またはデータをコンピュータシステム２００に提供する任意の非一時的な有形の記憶媒体を指す。このような記憶媒体の例としては、フロッピーディスク、磁気テープ、ＣＤ−ＲＯＭ、ＤＶＤ、Blu-ray DiscTM、ハードディスクドライブ、ＲＯＭまたは集積回路、ＵＳＢメモリ、光磁気ディスク、またはＰＣＭＣＩＡカードなどのコンピュータ可読カードを含み、そのような装置がコンピュータモジュール２０１の内部または外部であるか否かは問わない。コンピュータモジュール４０１へのソフトウェア、アプリケーションプログラム、命令および／またはビデオデータまたは符号化されたビデオデータの提供にも参加し得る一時的なまたは非有形のコンピュータ可読伝送媒体の例には、無線または赤外線伝送チャネル、ならびに別のコンピュータまたはネットワーク接続された装置へのネットワーク接続、ならびにウェブサイトなどに記録された電子メール伝送および情報を含むインターネットまたはイントラネットが含まれる。
【００２３】
アプリケーションプログラム２３３の第２の部分および上記の対応するコードモジュールは、ディスプレイ２１４上でレンダリングされるかまたは他の方法で表される１つ以上のグラフィカルユーザインタフェース（ＧＵＩ）を実装するために実行されてもよい。典型的にはキーボード２０２およびマウス２０３の操作を通して、アプリケーションおよびコンピュータシステム２００のユーザは機能的に適応可能な方法でインターフェースを操作し、ＧＵＩに関連するアプリケーションに制御コマンドおよび／または入力を提供することができる。スピーカ２１７を介して出力されるスピーチプロンプトおよびマイクロフォン２８０を介して入力されるユーザ音声コマンドを利用するオーディオインターフェースなど、他の形態の機能的に適応可能なユーザインターフェースを実装することもできる。
【００２４】
図２Ｂは、プロセッサ２０５および「メモリ」２３４の詳細な概略ブロック図である。メモリ２３４は、図２Ａのコンピュータモジュール２０１がアクセス可能な全てのメモリモジュール（ＨＤＤ２０９及び半導体メモリ２０６を含む）の論理集合体を表す。
【００２５】
最初にコンピュータモジュール２０１の電源が入ると、パワーオン自己テスト（ＰＯＳＴ）プログラム２５０が実行される。ＰＯＳＴプログラム２５０は、典型的には図２Ａの半導体メモリ２０６のＲＯＭ２４９に記憶される。ソフトウェアを記憶するＲＯＭ２４９などのハードウェアデバイスは、ファームウェアと呼ばれることもある。ＰＯＳＴプログラム２５０は、コンピュータモジュール２０１内のハードウェアを検査して、適切に機能することを確認し、通常、正しい動作のために、プロセッサ２０５、メモリ２３４（２０９、２０６）、および基本入出力システムソフトウェア（ＢＩＯＳ）モジュール２５１（通常はＲＯＭ２４９にも格納される）をチェックする。ＰＯＳＴプログラム２５０が正常に実行されると、ＢＩＯＳ２５１は、図２Ａのハードディスクドライブ２１０を起動する。ハードディスクドライブ２１０を起動すると、ハードディスクドライブ２１０上に常駐するブートストラップローダプログラム２５２がプロセッサ２０５を介して実行される。これにより、オペレーティングシステム２５３がＲＡＭメモリ２０６にロードされ、その上でオペレーティングシステム２５３が動作を開始する。オペレーティングシステム２５３は、プロセッサ２０５によって実行可能なシステムレベルアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース、および汎用ユーザインタフェースを含む様々な高レベルの機能を満たす。
【００２６】
オペレーティングシステム２５３は、メモリ２３４（２０９、２０６）を管理して、コンピュータモジュール２０１上で実行される各プロセスまたはアプリケーションが別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、図２Ａのコンピュータシステム２００で利用可能な異なるタイプのメモリは、各プロセスが効果的に実行できるように、適切に使用されなければならない。したがって、集約メモリ２３４は、メモリの特定のセグメントが（特に明記されていない限り）どのように割り当てられるかを示すことを意図するものではなく、むしろ、コンピュータシステム２００によってアクセス可能なメモリの一般的なビューと、そのようなセグメントがどのように使用されるかを提供することを意図するものである。
【００２７】
図２Ｂに示すように、プロセッサ２０５は、制御部２３９、演算論理ユニット（ＡＬＵ）２４０、時にはキャッシュメモリと呼ばれるローカルまたは内部メモリ２４８、を含む多数の機能モジュールを含む。キャッシュメモリ２４８は、典型的にはレジスタセクション内に多数の記憶レジスタ２４４〜２４６を含む。１つ以上の内部バス２４１は、これらの機能モジュールを機能的に相互接続する。プロセッサ２０５はまた、典型的には、接続２１８を使用して、システムバス２０４を介して外部装置と通信するための１つ以上のインターフェース２４２を有する。メモリ２３４は、接続２１９を使用してバス２０４に結合される。
【００２８】
アプリケーションプログラム２３３は、条件分岐およびループ命令を含み得る命令のシーケンス２３１を含む。プログラム２３３はまた、プログラム２３３の実行に使用されるデータ２３２を含んでもよい。命令２３１およびデータ２３２は、それぞれメモリ位置２２８、２２９、２３０および２３５、２３６、２３７に格納される。命令２３１とメモリ位置２２８〜２３０の相対的なサイズに応じて、メモリ位置２３０に示される命令によって示されるように、特定の命令を単一のメモリ位置に記憶することができる。あるいは、命令がメモリ位置２２８および２２９に示される命令セグメントによって示されるように、各々が別個のメモリ位置に記憶されるいくつかの部分にセグメント化されてもよい。
【００２９】
一般に、プロセッサ２０５には、その中で実行される命令のセットが与えられる。プロセッサ２０５は後続の入力を待ち、この入力に対してプロセッサ２０５は、別の命令セットを実行することによって反応する。各入力は入力装置２０２、２０３のうちの１つまたは複数によって生成されたデータ、ネットワーク２２０、２０２のうちの１つを介して外部ソースから受信されたデータ、記憶装置２０６、２０９のうちの１つから取り出されたデータ、または対応するリーダ２１２に挿入された記憶媒体２２５から取り出されたデータを含む、いくつかのソースのうちの１つまたは複数から提供することができ、すべて図２Ａに示されている。命令のセットを実行すると、データが出力される場合がある。実行には、データまたは変数をメモリ２３４に記憶することも含まれ得る。
【００３０】
ビデオエンコーダ１１４、ビデオデコーダ１３４、および説明される方法は、メモリ２３４内の対応するメモリ位置２５５、２５６、２５７に格納されている入力変数２５４を使用することができる。ビデオエンコーダ１１４、ビデオデコーダ１３４、および説明される方法は、出力変数２６１を生成し、これらは、メモリ２３４内の対応するメモリ位置２６２、２６３、２６４に格納される。中間変数２５８は、メモリ位置２５９、２６０、２６６および２６７に格納され得る。
【００３１】
図２Ｂのプロセッサ２０５を参照すると、レジスタ２４４、２４５、２４６、演算論理ユニット（ＡＬＵ）２４０、および制御部２３９は、プログラム２３３を構成する命令セット内のすべての命令に対して「フェッチ、デコード、および実行」サイクルを実行するのに必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、デコード、および実行サイクルは
（ａ）メモリ位置２２８、２２９、２３０から命令２３１をフェッチまたは読出すフェッチ動作
（ｂ）制御部２３９が、どの命令がフェッチされたかを判定するデコード動作
（ｃ）制御部２３９及び／又はＡＬＵ２４０が命令を実行する動作を実行する
を有する。
【００３２】
その後、次の命令のフェッチ、デコード、および実行サイクルをさらに実行することができる。同様に、制御部２３９がメモリ位置２３２に値を格納または書き込む格納サイクルを実行することができる。
【００３３】
後述する図１２および図１３の方法における各ステップまたはサブプロセスは、プログラム２３３の１つまたは複数のセグメントに関連付けられ、典型的にはプロセッサ２０５内のレジスタセクション２４４、２４５、２４７、ＡＬＵ２４０、および制御部２３９が協働して、プログラム２３３の注記されたセグメントに対する命令セット内のすべての命令に対してフェッチ、デコード、および実行サイクルを実行することによって実行される。
【００３４】
図３は、ビデオエンコーダ１１４の機能モジュールを示す概略ブロック図である。図４は、ビデオデコーダ１３４の機能モジュールを示す概略ブロック図である。一般に、データは、固定サイズのサブブロックへのブロックの分割などのサンプルまたは係数のグループで、または配列として、ビデオエンコーダ１１４内の機能モジュールとビデオデコーダ１３４との間を通過する。ビデオエンコーダ１１４およびビデオデコーダ１３４は図２Ａおよび図２Ｂに示すように、汎用コンピュータシステム２００を使用して実施することができ、様々な機能モジュールは、ハードディスクドライブ２０５上に常駐し、プロセッサ２０５によってその実行中に制御されるソフトウェアアプリケーションプログラム２３３の１つ以上のソフトウェアコードモジュールなど、コンピュータシステム２００内で実行可能なソフトウェアによって、コンピュータシステム２００内の専用ハードウェアによって実現することができる。あるいは、ビデオエンコーダ１１４およびビデオデコーダ１３４は、コンピュータシステム２００内で実行可能なソフトウェアおよび専用ハードウェアの組合せによって実装されてもよい。ビデオエンコーダ１１４、ビデオデコーダ１３４、および説明される方法は、代替として、説明される方法の機能またはサブ機能を実行する１つまたは複数の集積回路などの専用ハードウェアで実装され得る。そのような専用ハードウェアは、グラフィック処理ユニット（ＧＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け標準製品（ＡＳＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または１つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。特に、ビデオエンコーダ１１４は、モジュール３２２〜３８６を含み、ビデオデコーダ１３４は、ソフトウェアアプリケーションプログラム２３３の１つ以上のソフトウェアコードモジュールとしてそれぞれ実装され得るモジュール４２０〜４９６を含む。
【００３５】
図３のビデオエンコーダ１１４は汎用ビデオ符号化（ＶＶＣ）ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックを使用することもできる。ビデオエンコーダ１１４は、一連のフレームなどの、撮像されたフレームデータ１１３を受信し、各フレームは１つ以上のカラーチャネルを含む。ブロックパーティショナ３１０は最初に、フレームデータ１１３を、一般に「符号化ツリーユニット」（ＣＴＵ）と呼ばれる領域に分割し、この領域は一般に形状が正方形であり、ＣＴＵのための特定のサイズが使用されるように構成される。符号化ツリーユニットのサイズは、例えば、６４×６４、１２８×１２８、または２５６×２５６輝度サンプルとすることができる。ブロックパーティショナ３１０はさらに、各ＣＴＵを１つまたは複数の符号化ユニット（ＣＵ）に分割し、ＣＵは、二乗および非二乗アスペクト比の両方を含むことができる様々なサイズを有する。したがって、現在のブロック３１２、「符号化ユニット」（ＣＵ）が、ブロックパーティショナ３１０から出力され、ＣＴＵの１つまたは複数のブロックにわたる反復に従って進行する。しかしながら、ＣＵの概念は、ブロックパーティショナ３１０から生じるブロックパーティショニングに限定されない。ビデオデコーダ１３４はまた、損失の多い圧縮技術の使用のために、典型的にはブロックパーティショナ３１０からのブロックの近似であるＣＵを生成すると言うことができる。さらに、ビデオエンコーダ１１４は、ビデオデコーダ１３４で見られるのと同じ近似を有するＣＵを生成し、ビデオデコーダ１３４でブロック予測方法に利用可能なサンプルデータの正確な知識を可能にする。ＣＴＵをＣＵに分割するためのオプションは、図５および図６を参照して以下でさらに説明される。
【００３６】
フレームデータ１１３の最初の分割から生じる符号化ツリーユニット（ＣＴＵ）は、ラスタスキャン順にスキャンされ、１つ以上の「スライス」にグループ化される。フレームデータ１１３は通常、複数のカラーチャネルを含むので、ＣＴＵおよびＣＵは、ブロックパーティショナ３１０の動作から定義されるブロック領域と重複するすべてのカラーチャネルからのサンプルに関連付けられる。ＣＵは１つまたは複数のコードブロック（ＣＢ）を含むと言うことができ、各ＣＢはＣＵと同じブロック領域を占有するが、フレームデータ１１３のカラーチャネルのそれぞれに関連付けられる。輝度チャネルと比較してクロマチャネルのサンプリングレートが潜在的に異なるために、クロマチャネルのＣＢの寸法は、輝度チャネルのＣＢの寸法とは異なり得る。４：２：０クロマフォーマットを使用する場合、ＣＵのクロマチャネルのＣＢは、ＣＵの輝度チャネルのためのＣＢの幅および高さの半分の寸法を有する。
【００３７】
ブロックパーティショナ３１０から得られるすべてのＣＵにわたって反復する際に、ビデオエンコーダ１１４は、ブロック、たとえばブロック３１２ごとに、矢印３２０によって示される「予測ユニット」（ＰＵ）を生成する。ＰＵ３２０は、関連するＣＵ３１２のコンテンツの予測である。減算器モジュール３２２は、ＰＵ３２０とＣＵ３１２との間に、３２４（または「残差」、空間領域内にある差を指す）として示される差を生成する。差３２４は、ＰＵ３２０およびＣＵ３１２における対応するサンプル間のブロックサイズの差である。差３２４は、変換され、量子化され、矢印３３６によって示される変換ユニット（ＴＵ）として表される。ＰＵ３２０は、典型的には多くの可能な候補ＰＵのうちの「最良の」結果として得られるものとして選択される。候補ＰＵは、ビデオエンコーダ１１４に利用可能な予測モードの１つから生じるＰＵである。各候補ＰＵは、対応する変換ユニットをもたらす。変換ユニット３３６は、差３２４の量子化され、変換された表現である。デコーダ１１４において予測されたＰＵと組み合わされると、変換ユニット３３６は、ビットストリームにおける追加のシグナリングを犠牲にして、復号されたＣＵと元のブロック３１２との間の差を低減する。
【００３８】
したがって、各候補ＰＵは、関連する符号化コスト（レート）および関連する差（または「歪み」）を有する。符号化率（コスト）は、典型的にはビットで測定される。ブロックの符号化歪みは典型的には絶対差の和（ＳＡＤ）又は二乗差の和（ＳＳＤ）などの、サンプル値の差として推定される。各候補ＰＵから得られる推定は、差３２４を使用してモードセレクタ３８６によって決定され、イントラ予測モード（矢印３８８によって表される）を決定する。各候補予測モードと対応する残差符号化に関連する符号化コストの推定は、残差のエントロピー符号化よりもかなり低いコストで実行できる。従って、レート歪み検知における最適モードを決定するために、多数の候補モードを評価することができる。
【００３９】
最適モードの決定は、典型的にはラグランジュ最適化のバラツキを用いて達成される。イントラ予測モード３８８の選択は、典型的には特定のイントラ予測モードの適用から生じる残差データのための符号化コストを決定することを含む。符号化コストは「変換された差の和」を使用することによって近似することができ、それによって、アダマール変換などの比較的単純な変換を使用して、推定される変換される残差コストを得る。比較的単純な変換を使用する実施では、単純化された推定方法から得られるコストがさもなければ完全な評価から決定されるのであろう実際のコストに単調に関係する場合、単純化された推定方法を使用して、ビデオエンコーダ１１４の複雑さを低減しながら、同じ決定（すなわち、イントラ予測モード）を行うことができる。推定されたコストと実際のコストとの間の関係における可能な非単調性を可能にするために、おそらく残差データの符号化のために利用可能なさらなるモード決定から生じる、簡略化された推定方法は、最良の候補のリストを生成するために使用され得る。最良の候補のリストは、任意の数であってもよい。最良の候補を使用して、より完全な探索を実行して、候補のそれぞれについて残差データを符号化するための最適なモード選択を確立することができ、他のモード決定と共にイントラ予測モードの最終選択を可能にする。
【００４０】
その他のモードの決定には、「transform skip」として知られている、一次変換および二次変換をスキップする機能が含まれる。変換をスキップすることは、変換基底関数としての表現を介して削減された符号化コストのための適切な相関を欠く残差データに適している。比較的単純なコンピュータ生成グラフィックスなどの特定のタイプのコンテンツは、同様の挙動を示すことがある。
【００４１】
モードセレクタモジュール３８６に関連する別のモード決定は、（矢印３９０によって表される）明示的な多重変換インデックスの選択である。明示的な多重変換インデックス３９０は、４つの可能な値を有する。これらの４つの可能な値は２つのインデックス（図１０Ａの列１０４６および１０４８に示される）の組合せであり、ここで、各インデックスは、０〜１の範囲にある。第１のインデックスは水平変換インデックスＨに関連し、第２のインデックスは垂直変換インデックスＶに関連する。水平変換インデックスＨは水平変換選択としても知られ、垂直変換インデックスＶは垂直変換選択として知られる。明示的な多重変換インデックス３９０の選択および符号化は、図１０を参照して説明される。
【００４２】
ラグランジュまたは類似の最適化処理を採用して、ＣＴＵのＣＵへの最適分割（ブロックパーティショナ３１０による）と、複数の可能性からの最良予測モードの選択の両方を選択することができる。モードセレクタモジュール３８６における候補モードのラグランジュ最適化処理の適用を通して、最低コスト測定を有するイントラ予測モードが最良のモードとして選択される。最良のモードは、選択されたイントラ予測モード３８８であり、エントロピーエンコーダ３３８によってビットストリーム１１５に符号化される。モードセレクタモジュール３８６の動作によるイントラ予測モード３８８の選択は、ブロックパーティショナ３１０の動作に拡張する。例えば、イントラ予測モード３８８の選択のための候補は、所与のブロックに適用可能なモードと、さらに、所与のブロックと一緒に集合的に配置される複数のより小さいブロックに適用可能なモードとを含むことができる。このような場合、候補を暗黙的に選択するプロセスは、ＣＴＵのＣＵへの最良の階層分解を決定するプロセスでもある。
【００４３】
エントロピーエンコーダ３３８は、構文要素の可変長符号化と構文要素の算術符号化の両方をサポートする。算術符号化は、コンテキスト適応２進算術符号化処理を使用してサポートされる。算術的に符号化された構文要素は１つ以上の’ｂｉｎｓ’のシーケンスからなる。ビンはビットと同様に、「０」または「１」の値を持つ。しかし、ビンは、ビットストリーム１１５には離散ビットとして符号化されていない。ビンは、「コンテキスト」として知られる、関連する可能性のある値および関連する確率を有する。符号化される実際のビンが可能性のある値と一致する場合、「最確シンボル（most probable symbol）」（ＭＰＳ）が符号化される。最確シンボルを符号化することは、消費されるビットに関して比較的安価である。符号化される実際のビンが可能性のある値と一致しない場合、「最低確率シンボル（least probable symbol）」（ＬＰＳ）が符号化される。最低確率シンボルを符号化することは、消費されるビットに関して比較的高いコストを有する。ビン符号化技術は、「０」対「１」の確率がスキューされるビンの効率的な符号化を可能にする。２つの可能な値（すなわち「ｆｌａｇ」）を持つ構文要素に対しては、単一のビンで十分である。可能な値が多い構文要素の場合は、一連のビンが必要である。次に、シーケンス内のより後のビンの存在は、シーケンス内のより前のビンの値に基づいて決定されてもよい。さらに、各ビンは構文要素内のより前のビン、隣接する構文要素のビン値（すなわち、隣接するブロックからのもの）などに依存する特定のコンテキストの選択と共に、複数のコンテキストに関連付けられてもよい。ビンが符号化されるたびに、コンテキストは新しいビン値に適応するように更新される。このように、２進算術符号化方式は適応型であると言われている。
【００４４】
また、エンコーダ１１４は、コンテキストを欠くビン（「bypass bins」）をサポートしている。バイパスビンは、「０」と「１」との間の等確率分布を仮定して符号化される。コンテキストがないと、メモリが節約され、複雑さが軽減される。したがって、特定のビンの値の分布が偏っていない場合は、バイパスビンが使用される。コンテキストおよび適応を使用するエントロピーコーダの一例は、ＣＡＢＡＣ（コンテキスト適応バイナリ算術コーダ）として当技術分野で知られており、このコーダの多くの変形がビデオ符号化に使用されている。
【００４５】
エントロピーエンコーダ３３８は、コンテキスト符号化ビンと（任意選択で）バイパス符号化ビンとの組合せを使用してイントラ予測モード３８８を符号化する。典型的には、「最確モード」のリストがビデオエンコーダ１１４において生成される。最確モードのリストは、典型的には３つまたは６つのモードなどの固定長であり、以前のブロックで発生したモードを含むことができる。コンテキスト符号化ビンは、イントラ予測モードが最確モードの１つかどうかを示すフラグを符号化する。イントラ予測モード３８８が最確モードの１つである場合、どの最確モードがイントラ予測モード３８８に対応するかを示すさらなるシグナリングが例えば、切り捨てられた単項ビンストリングを使用して符号化される。そうではない場合、イントラ予測モード３８８は、固定長コードなどの代替構文を使用して、「残りのモード」として符号化され、最確モードリストに存在するもの以外のイントラ予測モードを表す。
【００４６】
エントロピーエンコーダ３３８はまた、図１０を参照して説明されるように、特定の符号化ユニットまたは変換ブロックのための明示的多重変換インデックス３９０を符号化する。特に、明示的多重変換インデックス３９０は、垂直変換インデックスＶおよび水平変換インデックスＨを含む。垂直変換インデックスＶおよび水平変換インデックスＨの両方が、（上述のように）モードセレクタ３８６によって選択される。垂直変換インデックスＶと水平変換インデックスＨ（図１０Ａ参照）との組み合わせに基づいて、エントロピーエンコーダ３３８は、対応するビンストリング（図１０Ａの列１０４２に示す）をビットストリーム１１５に符号化する。
【００４７】
マルチプレクサモジュール３８４は、テストされた候補予測モードから選択して、決定された最良のイントラ予測モード３８８に従ってＰＵ３２０を出力する。候補予測モードは、ビデオエンコーダ１１４によってサポートされるすべての考えられる予測モードを含む必要はない。予測モードは大きく二つのカテゴリに分類される。第１のカテゴリは「イントラフレーム予測」（または「イントラ予測」）である。イントラフレーム予測では、現在のフレームから引き出された他のサンプルを使用して、ブロックに対する予測が生成される。第２のカテゴリは、「フレーム間予測」（または「インター予測」）である。フレーム間予測では、ブロックの予測が、ビットストリーム内のフレームを符号化する順序で、現在のフレームに先行するフレームからのサンプルを使用して生成される（これは撮像または表示されるときにフレームの順序とは異なる場合がある）。各カテゴリ（すなわち、イントラ予測およびインター予測）内で、異なる技法を適用して、ＰＵを生成することができる。例えば、イントラ予測は、所定のフィルタリング処理に従ってＰＵを生成する方向と組み合わせて、以前に再構成されたサンプルの隣接する行および列からの値を使用することができる。あるいは、ＰＵが少数のパラメータを使用して記述されてもよい。インター予測方法は、動きパラメータの数とその精度が異なる場合がある。動きパラメータは典型的には、参照フレームオフセットと、１つまたは２つの参照フレームに対する変換とを含むが、より多くのフレーム、専用のフレーム、またはスケーリングおよび回転などの複素アフィンパラメータを含むことができる。さらに、参照サンプルブロックに基づいて高密度動き推定を生成するために、所定の動き精緻化処理を適用することができる。
【００４８】
最良のＰＵ３２０を決定および選択し、減算器３２２で元のサンプルブロックからＰＵ３２０を減算すると、最低の符号化コストを有する残差３２４が得られ、非可逆圧縮を受ける。非可逆圧縮処理は、変換、量子化、およびエントロピー符号化のステップを含む。変換モジュール３２６は、差３２４に第１の変換を適用し、差３２４を周波数領域に変換し、矢印３２８で表される中間変換係数を生成する。第１の変換は、典型的には、分離可能であり、各ブロックの行のセットを変換し、次いで、各ブロックの列のセットを変換する。行および列の各セットの変換は、ブロックの各行および列に繰り返される１次元変換を適用することによって実行される。変換はブロック全体に及ぶ。
【００４９】
特に、イントラ予測モード３８８および明示的多重変換インデックス３９０は、変換モジュール３２６によって実行される一次変換を集合的に形成する水平１次元変換および垂直１次元変換を選択するために使用される。水平１次元変換と垂直１次元変換のそれぞれは分離可能な変換である。水平１次元変換と垂直１次元変換を変換ブロック全体にわたって行い、残差サンプルを実質的に無相関化する。
【００５０】
変換モジュール３２６に利用可能な変換タイプには、ＤＳＴ−ＶＩＩ、ＤＳＴ−ＶＩＩＩ、ＤＣＴ−ＶＩＩＩ、ＤＳＴ−Ｉ、およびＤＣＴ−Ｖが含まれる。この変換設定から、図８Ｂを参照して説明されるように、３つの「変換設定（transform sets）」８４２が定義される。水平方向または垂直方向のいずれかにおける各方向に対して、変換設定８４２が図８Ｃを参照して説明されるように、イントラ予測モード３８８に従って選択される。各変換設定８４２から、図１１を参照して説明されるように、１つの変換タイプが選択され、適用される。中間変換係数３２８は、二次変換モジュール３３０に渡される。
【００５１】
二次変換モジュール３３０は、ブロック全体の左上４×４または８×８エリアを占める中間変換係数などの中間変換係数３２８のサブセットに対して動作する。中間変換係数３２８内の他の変換係数は、変更されずにモジュール３３０を通過する。二次変換モジュール３３０は、中間変換係数３２８のサブセットに対して種々の変換のうちの１つを適用して、矢印３３２によって表される変換係数を生成する。二次変換モジュール３３０は、逆二次変換モジュール３４４と類似の方法で選択された順方向二次変換を適用する。二次変換モジュール３３０に利用可能な変換は通常、分離不能であり、したがって、変換モジュール３２６の場合のように、２つのステージ（すなわち、行および列）で実行することができない。二次変換のより高い複雑さ、および一次変換のより早い非相関化のために、変換ブロックの左上の領域上でのみ二次変換を実行することで十分である。二次変換モジュール３３０によって実行される変換は、予測モードに少なくとも部分的に依存して選択され得る。加えて、ビデオエンコーダ１１４は、レート／歪コスト評価に基づく選択のためのさらなる候補のテストとして、モジュール３３０における適用された変換の選択を考慮することができる。
【００５２】
変換係数３３２は、量子化器モジュール３３４に渡される。モジュール３３４では、「量子化パラメータ」による量子化が実行され、矢印３３６によって表される残差係数が生成される。量子化パラメータは、所与の変換ブロックに対して一定であり、従って変換ブロックに対する残差係数の生成に対して一様なスケーリングをもたらす。「量子化マトリクス」を適用することによって、不均一なスケーリングも可能であり、それによって、各残差係数に適用されるスケーリングファクタは、量子化パラメータと、典型的には変換ブロックのサイズに等しいサイズを有するスケーリングマトリクス内の対応するエントリとの組合せから導出される。したがって、量子化マトリクスは信号化するのにコストがかかり、ビットストリーム１１５において（仮にあったとしても）まれにしか符号化されない。量子化マトリクスの符号化は、スケーリングファクタの２次元マトリクスを、ビットストリーム１１５にエントロピー符号化されるスケーリングファクタのリストに変換することを必要とする。既存のＺオーダスキャンは、この目的のために再使用されてもよく、量子化マトリクスを符号化するまれに実行される動作のための追加のスキャンパターンをサポートすることに関連するオーバヘッドを回避する。残差係数３３６は、ビットストリーム１１５に符号化するためにエントロピーエンコーダ３３８に供給される。典型的には、変換ブロックの残差係数がスキャンパターンに従って、値の順序付けられたリストを生成するためにスキャンされる。スキャンパターンは一般に、４×４の「サブブロック」のシーケンスとして変換ブロックをスキャンし、残差係数の４×４セットの粒度で規則的なスキャン動作を提供し、サブブロックの配置は、変換ブロックのサイズに依存する。さらに、予測モードおよび対応するブロック分割もビットストリーム１１５に符号化される。上述したように、ビデオエンコーダ１１４は、ビデオデコーダ１３４に見られるフレーム表現に対応するフレーム表現にアクセスする必要がある。従って、残差係数３３６も逆量子化器モジュール３４０によって逆量子化され、矢印３４２によって表される逆変換係数を生成する。逆変換係数３４２は、逆二次変換モジュール３４４を通過する。逆二次変換モジュール３４４は、矢印３４６によって表されるように、選択された二次変換を適用して、中間逆変換係数を生成する。中間逆変換係数３４６は、逆変換モジュール３４８に供給されて、変換ユニットの、矢印３５０で表される残差サンプルを生成する。加算モジュール３５２は、残差サンプル３５０とＰＵ３２０とを加算して、ＣＵの再構成サンプル（矢印３５４によって示される）を生成する。再構成サンプル３５４は、参照サンプルキャッシュ３５６およびループ内フィルタモジュール３６８に渡される。参照サンプルキャッシュ３５６は、一般にＡＳＩＣ上のスタティックＲＡＭを使用して実現され（したがって、コストのかかるオフチップメモリアクセスを回避する）、フレーム内の後続のＣＵに対するイントラフレーム予測ブロックを生成するための依存性を満たすために必要な最小限のサンプル記憶装置を提供する。最小依存性は典型的には、ＣＴＵの行の最下部に沿ったサンプルの「ラ��ンバッファ」を含み、ＣＴＵの次の行および列バッファリングによって使用され、その範囲はＣＴＵの高さによって設定される。参照サンプルキャッシュ３５６は、参照サンプルフィルタ３６０に参照サンプル（矢印３５８で示す）を供給する。サンプルフィルタ３６０は、平滑化動作を適用して、フィルタリングされた参照サンプル（矢印３６２によって示される）を生成する。フィルタリングされた参照サンプル３６２は、イントラフレーム予測モジュール３６４によって使用され、矢印３６６によって表されるサンプルのイントラ予測ブロックを生成する。各候補イントラ予測モードについて、イントラフレーム予測モジュール３６４は、サンプルのブロック、すなわち３６６を生成する。
【００５３】
ループ内フィルタモジュール３６８は、再構成されたサンプル３５４にいくつかのフィルタリングステージを適用する。フィルタリングステージは、不連続性から生じるアーチファクトを低減するために、ＣＵ境界に合わせて平滑化を適用する「デブロッキングフィルタ」（ＤＢＦ）を含む。ループ内フィルタモジュール３６８に存在する別のフィルタリングステージは、「適応ループフィルタ」（ＡＬＦ）であり、これは、歪みをさらに低減するためにウィナーベースの適応フィルタを適用する。ループ内フィルタモジュール３６８における更なる利用可能なフィルタリングステージは、「サンプル適応オフセット」（ＳＡＯ）フィルタである。ＳＡＯフィルタは最初に、再構成されたサンプルを１つまたは複数のカテゴリに分類し、割り当てられたカテゴリに従って、サンプルレベルでオフセットを適用することによって動作する。フィルタリングされたサンプル３７０は、ループ内フィルタモジュール３６８から出力される。フィルタリングされたサンプル３７０は、フレームバッファ３７２に格納される。フレームバッファ３７２は典型的には幾つかの（例えば、１６までの）ピクチャを記憶する容量を有し、従って、メモリ２０６に記憶される。したがって、フレームバッファ３７２へのアクセスは、メモリ帯域幅に関してコストがかかる。フレームバッファ３７２は、参照フレーム（矢印３７４によって表される）を動き推定モジュール３７６および動き補償モジュール３８０に提供する。
【００５４】
動き推定モジュール３７６は、いくつかの「動きベクトル」（３７８として示される）を推定し、各々は現在のＣＵの位置からのデカルト空間オフセットであり、フレームバッファ３７２内の参照フレームのうちの１つにおけるブロックを参照する。参照サンプルのフィルタリングされたブロック（３８２として表される）は、各動きベクトルに対して生成される。フィルタリングされた参照サンプル３８２は、モードセレクタ３８６による潜在的な選択に利用可能なさらなる候補モードを形成する。さらに、所与のＣＵについて、ＰＵ３２０は、１つの参照ブロック（「ｕｎｉ−ｐｒｅｄｉｃｔｅｄ」）を使用して形成され得るか、または２つの参照ブロック（「ｂｉ−ｐｒｅｄｉｃｔｅｄ」）を使用して形成され得る。選択された動きベクトルに対して、動き補償モジュール３８０は、動きベクトル内のサブピクセル精度をサポートするフィルタリング処理に従って、ＰＵ３２０を生成する。したがって、動き推定モジュール３７６（多くの候補動きベクトルに対して動作する）は低減された計算の複雑さを達成するために、（選択された候補のみに対して動作する）動き補償モジュール３８０のフィルタリング処理と比較して、簡略化されたフィルタリング処理をおそらく実行することができる。
【００５５】
図３のビデオエンコーダ１１４は汎用ビデオ符号化（ＶＶＣ）を参照して説明されるが、他のビデオ符号化規格または実装はモジュール３１０〜３８６の処理ステージを使用することもできる。フレームデータ１１３（およびビットストリーム１１５）は、メモリ２０６、ハードディスクドライブ２１０、ＣＤ−ＲＯＭ、Ｂｌｕ−ｒａｙディスクＴＭ、または他のコンピュータ可読記憶媒体から読み取る（または、に書き込む）こともできる。さらに、フレームデータ１１３（およびビットストリーム１１５）は、通信ネットワーク２２０または無線周波数受信機に接続されたサーバなどの外部ソースから受信（または、に送信）されてもよい。
【００５６】
ビデオデコーダ１３４を図４に示す。図４のビデオデコーダ１３４は汎用ビデオ符号化（ＶＶＣ）ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックを使用することもできる。図４に示すように、ビットストリーム１３３はビデオデコーダ１３４に入力される。ビットストリーム１３３は、メモリ２０６、ハードディスクドライブ２１０、ＣＤ−ＲＯＭ、Ｂｌｕ−ｒａｙディスクＴＭ、または他の非一時的なコンピュータ可読記憶媒体から読み取ることができる。あるいは、ビットストリーム１３３は、通信ネットワーク２２０に接続されたサーバまたは無線周波数受信機などの外部ソースから受信されてもよい。ビットストリーム１３３は、復号されるべき撮像フレームデータを表す符号化された構文要素を含む。
【００５７】
ビットストリーム１３３は、エントロピーデコーダモジュール４２０に入力される。エントロピーデコーダモジュール４２０は、ビットストリーム１３３から構文要素を抽出し、構文要素の値をビデオデコーダ１３４内の他のモジュールに渡す。エントロピーデコーダモジュール４２０は、ビットストリーム１３３から構文要素を復号するためにＣＡＢＡＣアルゴリズムを適用する。復号された構文要素は、ビデオデコーダ１３４内のパラメータを再構成するために使用される。パラメータは、残差係数（矢印４２４によって表される）と、イントラ予測モード４５８および明示的多重変換インデックス４５４などのモード選択情報と、を含む。モード選択情報は、動きベクトル、および各ＣＴＵの１つまたは複数のＣＵへの分割などの情報も含む。パラメータは、典型的には以前に復号されたＣＵからのサンプルデータと組み合わせて、ＰＵを生成するために使用される。
【００５８】
ビットストリーム１３３はまた、ビンストリング列１０４２からのビンストリングを含む（図１０Ａ参照）。エントロピーデコーダモジュール４２０は、ビンストリングを抽出し、垂直変換設定インデックス（垂直変換設定インデックス列１０４６から）および水平変換設定インデックス（水平変換設定インデックス列１０４８から）を生成する。
【００５９】
残差係数４２４は、逆量子化器モジュール４２８に入力される。逆量子化器モジュール４２８は、量子化パラメータに従って、再構成された中間変換係数（矢印４３２によって表される）を生成するために、残差係数４２４に対して逆スケーリングを実行する。不均一な逆量子化マトリクスの使用がビットストリーム１３３に示される場合、ビデオデコーダ１３４は、スケーリングファクタのシーケンスとしてビットストリーム１３３から量子化マトリクスを読み取り、残差係数の符号化に使用されるＺオーダスキャンに従って、スケーリングファクタをマトリクスに配置する。次に、逆スケーリングは、量子化パラメータと組み合わせて量子化マトリクスを使用して、再構成された中間変換係数を生成する。量子化マトリクススケーリングファクタをスキャンするために残差係数のためのＺオーダスキャンを使用することは、追加のスキャンパターンおよび関連するメモリの存在、ならびに頻繁に実行されないスキャンの複雑さの負担を回避する。再構成された中間変換係数４３２は、逆二次変換モジュール４３６に渡される。逆二次モジュール４３６は、「二次逆変換」を実行して、矢印４４０によって表される、再構成された変換係数を生成する。二次変換は、決定された変換ブロックサイズに従って実行される。再構成された変換係数４４０は、図９を参照して説明するように、逆変換モジュール４４４に渡される。モジュール４４４は、係数を周波数領域から空間領域に戻すように変換する。変換ブロックは、有効残差係数値および非有効残差係数値に効果的に基づいている。モジュール４４４の動作の結果は、矢印４４８によって表される残差サンプルのブロックである。残差サンプル４４８は、対応するＣＵにサイズが等しい。残差サンプル４４８は、加算モジュール４５０に供給される。加算モジュール４５０において、残差サンプル４４８は矢印４５６によって表される再構成サンプルのブロックを生成するために、復号されたＰＵ４５２に加算される。再構成サンプル４５６は、再構成サンプルキャッシュ４６０およびループ内フィルタリングモジュール４８８に供給される。ループ内フィルタリングモジュール４８８は、４９２として表されるフレームサンプルの再構成されたブロックを生成する。フレームサンプル４９２は、フレームバッファ４９６に書き込まれる。
【００６０】
再構成サンプルキャッシュ４６０は、ビデオエンコーダ１１４の再構成サンプルキャッシュ３５６と同様に動作する。再構成サンプルキャッシュ４６０は（例えば、典型的にはオンチップメモリであり、データ２３２を代わりに使用することによって）メモリ２０６を介さずに後続のＣＵをイントラ予測するために必要とされる再構成サンプルのための記憶装置を提供する。矢印４６４によって表される参照サンプルは、再構成サンプルキャッシュ４６０から得られ、参照サンプルフィルタ４６８に供給されて、矢印４７２によって示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル４７２は、イントラフレーム予測モジュール４７６に供給される。モジュール４７６は、ビットストリーム１３３でシグナリングされ、エントロピーデコーダ４２０によって復号されたイントラ予測モードパラメータ４５８に従って、矢印４８０によって表されるイントラ予測サンプルのブロックを生成する。
【００６１】
イントラ予測が現在のＣＵのためのビットストリーム１３３において示されるとき、イントラ予測サンプル４８０は、マルチプレクサモジュール４８４を介して復号されたＰＵ４５２を形成する。
【００６２】
現在のＣＵについてビットストリーム１３３内にインター予測が示されると、動き補償モジュール４３４は、フレームバッファ４９６からサンプルのブロックを選択してフィルタリングするために、動きベクトルおよび参照フレームインデックスを使用して、インター予測サンプル４３８のブロックを生成する。サンプル４９８のブロックは、フレームバッファ４９６に記憶された以前に復号されたフレームから得られる。双方向予測の場合、２つのサンプルブロックが生成され、一緒にブレンドされて、復号されたＰＵ４５２のためのサンプルが生成される。フレームバッファ４９６には、ループ内フィルタリングモジュール４８８からのフィルタリングされたブロックデータ４９２が入力される。ビデオエンコーダ１１４のループ内フィルタリングモジュール３６８と同様に、ループ内フィルタリングモジュール４８８は、ＤＢＦ、ＡＬＦ、およびＳＡＯフィルタリング動作のいずれか、少なくとも、またはすべてを適用する。ループ内フィルタリングモジュール３６８は、再構成サンプル４５６からフィルタリングされたブロックデータ４９２を生成する。
【００６３】
図５は、汎用ビデオ符号化のツリー構造内の１つまたは複数のブロックへのブロックの利用可能な分割または分割の集合５００を示す概略ブロック図である。集合５００に示される分割は、図３を参照して説明されるように、ラグランジュ最適化に従って、各ＣＴＵを１つまたは複数のＣＵに分割するために、エンコーダ１１４のブロックパーティショナ３１０に利用可能である。
【００６４】
集合５００は、他の、おそらくは正方形でないブロックに分割されている正方形ブロックのみを示しているが、図５００は潜在的な分割を示しているが、包含ブロックが正方形であることを制約していないことを理解されるべきである。含有ブロックが非正方形の場合、分割から生じるブロックの寸法は含有ブロックの縦横比に従ってスケールされる。ブロックパーティショナ３１０によるＣＴＵの１つまたは複数のＣＵへの特定のサブ分割は、ＣＴＵの「符号化ツリー」と呼ばれる。本開示の文脈では、リーフノードが細分化のプロセスが終了するノードである。リーフノードに対応する領域が最小符号化単位サイズに等しい場合、細分化のプロセスは終了しなければならない。最小サイズの符号化ユニットをもたらすリーフノードは、符号化ツリーの分解の最も深いレベルに存在する。再分割のプロセスは、最深レベルの分解の前に終了することもでき、その結果、符号化ユニットが最小符号化単位サイズよりも大きくなる。
【００６５】
符号化ツリーのリーフノードには、それ以上の細分化のないＣＵが存在する。例えば、リーフノード５１０は、１つのＣＵを含む。符号化ツリーの非リーフノードには２つ以上のさらなるノードへの分割が存在し、各ノードは１つのＣＵを含むか、またはより小さな領域へのさらなる分割を含むことができる。
【００６６】
四分木分割５１２は図５に示すように、包含領域を４つの等しいサイズの領域に分割する。ＨＥＶＣと比較して、汎用ビデオ符号化は、水平２分割５１４および垂直２分割５１６を追加することにより、さらなる柔軟性を達成する。分割５１４および５１６の各々は、包含領域を２つの等しいサイズの領域に分割する。分割は、含有ブロック内の水平境界（５１４）または垂直境界（５１６）に沿っている。
【００６７】
水平３分割５１８および垂直３分割５２０を追加することにより、汎用ビデオ符号化においてさらなる柔軟性が達成される。３分割５１８および５２０は、ブロックを、包含領域の幅または高さの１／４および３／４に沿って水平方向（５１８）または垂直方向（５２０）のいずれかで境界をつけられた３つの領域に分割する。４分木、２分木、および３分木の組合せは、「ＱＴＢＴＴＴ」または代替的にマルチツリー（ＭＴ）と呼ばれる。
【００６８】
四分木のみをサポートし、したがって正方形ブロックのみをサポートするＨＥＶＣと比較して、ＱＴＢＴＴＴは、特に２分木および／または３分木分割の可能な再帰的適用を考慮すると、より多くの可能なＣＵサイズをもたらす。異常な（例えば、非正方形の）ブロックサイズの可能性は、ブロック幅または高さが４サンプル未満であるか、または４サンプルの倍数ではないかのいずれかになる分割を排除するように分割オプションを制約することによって低減され得る。一般に、この制約は、輝度サンプルを考慮する際に適用される。しかしながら、この制約はクロマチャネルのブロックに別々に適用することもでき、例えば、フレームデータが４：２：０クロマフォーマットである場合に、輝度対クロマの最小ブロックサイズが異なることになる可能性がある。
【００６９】
図６は、汎用ビデオ符号化で使用されるＱＴＢＴＴＴ(または「符号化ツリー」）構造のデータフロー６００を示す概略フロー図である。ＱＴＢＴＴＴ構造は、ＣＴＵを１つまたは複数のＣＵに分割することを定義するために、各ＣＴＵに対して使用される。各ＣＴＵのＱＴＢＴＴＴ構造は、ビデオエンコーダ１１４内のブロックパーティショナ３１０によって決定され、ビットストリーム１１５に符号化されるか、またはビデオデコーダ１３４内のエントロピーデコーダ４２０によってビットストリーム１３３から復号される。データフロー６００はさらに、図５に示される分割に従って、ＣＴＵを１つまたは複数のＣＵに分割するためにブロックパーティショナ３１０に利用可能な許容可能な組合せを特徴付ける。
【００７０】
階層の最上位レベル、すなわちＣＴＵから始めて、ゼロまたはそれ以上の四分木分割が最初に実行される。具体的には、四分木（ＱＴ）分割決定６１０がブロックパーティショナ３１０によって行われる。’１’シンボルを返す６１０での決定は、四分木分割５１２に従って現在のノードを４つのサブノードに分割する決定を示す。その結果、６２０などの、４つの新しいノードが生成され、各新しいノードについて、ＱＴ分割決定６１０に戻る。各新しいノードは、ラスタ（またはＺスキャン）順序で考慮される。あるいは、ＱＴ分割決定６１０がさらなる分割が実行されるべきでないことを示す（「０」シンボルを返す）場合、四分木分割は停止し、マルチツリー（ＭＴ）分割がその後考慮される。
【００７１】
まず、ＭＴ分割決定６１２がブロックパーティショナ３１０によって行われる。６１２において、ＭＴ分割を実行する決定が示される。決定６１２で「０」のシンボルを返すことは、ノードのサブノードへのそれ以上の分割が実行されないことを示す。ノードのそれ以上の分割が実行されない場合、ノードは符号化ツリーのリーフノードであり、符号化ユニット（ＣＵ）に対応する。リーフノードは６２２で出力される。あるいは、ＭＴ分割６１２がＭＴ分割を実行する決定を示す（「１」シンボルを返す）場合、ブロックパーティショナ３１０は方向決定６１４に進む。
【００７２】
方向決定６１４は、水平（「Ｈ」または「０」）または垂直（「Ｖ」または「１」）のいずれかとしてＭＴ分割の方向を示す。ブロックパーティショナ３１０は、判定６１４が水平方向を示す「０」を返す場合、判定６１６に進む。ブロックパーティショナ３１０は、判定６１４が垂直方向を示す「１」を返す場合、判定６１８に進む。
【００７３】
決定６１６および６１８のそれぞれにおいて、ＭＴ分割のパーティション数は、ＢＴ／ＴＴ分割で２つ（２分割または’ＢＴ’ノード）または３つ（３分割または’ＴＴ’）のいずれかとして示される。すなわち、ＢＴ／ＴＴ分割決定６１６は、６１４からの指示された方向が水平であるときにブロックパーティショナ３１０によって行われ、ＢＴ／ＴＴ分割決定６１８は、６１４からの指示された方向が垂直であるときにブロックパーティショナ３１０によって行われる。
【００７４】
ＢＴ／ＴＴ分割決定６１６は、水平分割が「０」を返すことによって示される２分割５１４であるか、「１」を返すことによって示される３分割５１８であるかを示す。ＢＴ／ＴＴ分割決定６１６が２分割を示す場合、HBT CTUノード生成ステップ６２５において、水平２分割５１４に従って、２つのノードがブロックパーティショナ３１０によって生成される。ＢＴ／ＴＴ分割６１６が３分割を示す場合、HTT CTUノード生成ステップ６２６において、水平３分割５１８に従って、ブロックパーティショナ３１０によって３つのノードが生成される。
【００７５】
ＢＴ／ＴＴ分割決定６１８は、垂直分割が「０」を返すことによって示される２分割５１６であるか、「１」を返すことによって示される３分割５２０であるかを示す。ＢＴ／ＴＴ分割６１８が２分割を示す場合、VBT CTUノード生成ステップ６２７では、垂直２分割５１６に従って、ブロックパーティショナ３１０によって２つのノードが生成される。ＢＴ／ＴＴ分割６１８が３分割を示す場合、VTT CTUノード生成ステップ６２８において、垂直３分割５２０に従って、ブロックパーティショナ３１０によって３つのノードが生成される。ステップ６２５〜６２８から生じる各ノードについて、ＭＴ分割決定６１２に戻るデータフロー６００の再帰が、方向６１４に応じて、左から右へ、または上から下への順序で適用される。その結果、２分木および３分木分割を適用して、様々なサイズを有するＣＵを生成することができる。
【００７６】
図７Ａおよび７Ｂは、ＣＴＵ７１０のいくつかの符号化ユニット（ＣＵ）への分割例７００を提供する。ＣＵ７１２の一例を図７Ａに示す。図７Ａは、ＣＴＵ７１０におけるＣＵの空間配置を示す。分割例７００は、図７Ｂに符号化ツリー７２０としても示されている。
【００７７】
図７ＡのＣＴＵ７１０内の各非リーフノード、例えばノード７１４、７１６および７１８において、収容されたノード（さらに分割されていてもよいし、ＣＵであってもよい）は、ノードのリストを作成するために「Ｚオーダー」でスキャンまたは走査され、符号化ツリー７２０内のカラムとして表される。４分木分割の場合、Ｚオーダースキャンは、左上から右に続いて左下から右の順序になる。水平分割および垂直分割の場合、Ｚオーダースキャン（トラバーサル）は、それぞれ、上から下へ、および左から右へのスキャンに単純化する。図７Ｂの符号化ツリー７２０は、適用されたスキャンオーダーに従って、すべてのノードおよびＣＵをリストする。各分割は、リーフノード（ＣＵ）に到達するまで、ツリーの次のレベルで２、３、または４個の新しいノードのリストを生成する。
【００７８】
ブロックパーティショナ３１０によって画像をＣＴＵに分解し、さらにＣＵに分解し、図３を参照して説明されるように、各残差ブロック（３２４）を生成するためにＣＵを用いて、残差ブロックは、エンコーダ１１４によって順変換および量子化される。結果として得られる変換ブロック（ＴＢ）３３６は、その後、エントロピー符号化モジュール３３８の動作の一部として、残差係数の順次リストを形成するためにスキャンされる。同等のプロセスがビットストリーム１３３から変換ブロックを得るために、ビデオデコーダ１３４内で実行される。
【００７９】
図８Ａは、イントラ予測モード３８８および４５８を使用して示され得る変換ブロックのためのイントラ予測モードのセット８００を示す。図８Ａでは、６７個のイントラ予測モードが定義されている。モード０は「平面」イントラ予測モードであり、モード１は「ＤＣ」イントラ予測モードであり、モード２〜６６は「角度」イントラ予測モードである。平面イントラ予測モード（モード０）は面に応じたサンプル、すなわち、水平方向および垂直方向にオフセットおよび勾配を有するサンプルを予測ブロックに入力する。平面パラメータは、利用可能であれば、隣接する参照サンプルから得られる。同様に、ＤＣイントラ予測モード（モード１）は、隣接する参照サンプル（利用可能な場合）も使用して、予測ブロックにオフセットを入力する。
【００８０】
角度イントラ予測モード（モード２〜６６）は、６５方向または「角度」のうちの１つに整列されたテクスチャを生成することによってブロックを設定する。明確にするために、６５個の角度のサブセットが図８Ａに示されており、モード２、１８、３４、５０、および６６である。各モードについて、隣接する参照サンプルを使用して、角度イントラ予測モードについて矢印によって示される方向に予測ブロックを設定するテクスチャを生成する。図８Ａには明示的に示されていない追加の角度は、中間位置（すなわち、モード３〜１７、１９〜３３、３５〜４９、および５１〜６５）にある。第１の対称性は、図８Ａから、角度モード３４に沿って、かつ予測ブロックの左上から右下までの対角方向に明らかである。第１の対称性から、モード２〜３４は、モード６６〜３４までに対応し、この対角軸に沿って転置されている、ことが示される。
【００８１】
図８Ｂは、変換インデックス８４４による、各変換設定８４２から特定の変換タイプへのマッピング８４０を示す。３つの変換設定８４２は、０、１、および２のそれぞれの変換設定インデックスによって定義され、識別される。各変換設定８４２は、変換インデックス８４４によって選択可能な２つの変換タイプを含む。結果として、マッピング８４０は、変換設定８４２の変換設定インデックスおよび変換インデックス８４４に基づいて、所与の変換タイプが選択されることを可能にする。選択された変換は、１次元変換である。水平方向と垂直方向に対して、変換タイプの別々の選択が行われる。変換のサイズ（点の数）は、変換ブロックの寸法に対応する。すなわち、変換のサイズは、垂直変換を選択するときの変換ブロックの高さに対応し、変換のサイズは、水平変換を選択するときの変換ブロックの幅に対応する。
【００８２】
図８Ｃは、変換ブロックが水平方向（「Ｈ」）にあるか垂直方向（「Ｖ」）にあるかに基づいて、変換ブロックのための変換設定８４２の変換設定インデックスへのイントラ予測モードからのマッピング８８０を示す表である。各イントラ予測モードに対して、３つの変換設定８４２に関連付けられた変換設定インデックスのうちの１つが水平方向Ｈに対して選択され、３つの変換設定８４２に関連付けられた変換設定インデックスのうちの１つが垂直方向Ｖに対して選択される。
【００８３】
例えば、イントラ予測モード１４は、垂直方向の変換ブロックに対する変換設定インデックス０にマッピングされ、イントラ予測モード１４は、水平方向の変換ブロックに対する変換設定インデックス２にマッピングされる。図８Ｂのマッピング８４０に示すように、変換設定インデックス０は、変換インデックス８４４に応じて選択可能なＤＳＴ−ＶＩＩまたはＤＣＴ−ＶＩＩＩのいずれかにマッピングされる。また、図８Ｂのマッピング８４０に示されるように、変換設定インデックス２は、変換インデックス８４４に応じて選択可能なＤＳＴ−ＶＩＩまたはＤＣＴ−Ｖのいずれかにマッピングされる。従って、垂直方向の変換ブロックに対して、イントラ予測モード１４は、変換インデックス８４４に応じて、ＤＳＴ−ＶＩＩ変換またはＤＣＴ−ＶＩＩＩ変換のいずれかを使用する。従って、水平方向の変換ブロックに対して、イントラ予測モード１４は、変換インデックス８４４に応じて、ＤＳＴ−ＶＩＩ変換またはＤＣＴ−Ｖ変換のいずれかを使用する。変換インデックス８４４は、明示的多重変換インデックス３９０または４５４に基づく。上述のように、明示的多重変換インデックス３９０は、モードセレクタ３０６によって選択され、明示的多重変換インデックス４５４は、エントロピーエンコーダ４２０によってビットストリーム１３３から導出される。
【００８４】
図９は、ビデオエンコーダ１１４の逆変換モジュール３４８又はビデオデコーダ１３４の逆変換モジュール４４４を示す概略ブロック図である。両方のモジュール３４８および４４４の動作は同一であり、ビデオエンコーダ１１４がビデオデコーダ１３４で実行される残差係数の逆量子化および逆変換をモデル化する必要性を反映している。
【００８５】
逆変換モジュール３４８および４４４のそれぞれは、変換設定テーブルモジュール９１０、変換インデックス導出器モジュール９２０、水平変換セレクタモジュール９４０、垂直変換セレクタモジュール９４５、水平変換モジュール９６０、および垂直変換モジュール９８０を含む。
【００８６】
変換設定テーブルモジュール９１０は、イントラ予測モード３８８または４５８を受信する。逆変換モジュール３４８として実装される場合、変換設定テーブルモジュール９１０は、モードセレクタ３８６（図３参照）からイントラ予測モード３８８を受信する。逆変換モジュール４４４として実装される場合、変換設定テーブルモジュール９１０は、エントロピーエンコーダ４２０（図４参照）からイントラ予測モード４５８を受信する。
【００８７】
変換設定テーブルモジュール９１０は、イントラ予測モード３８８または４５８から、水平変換設定インデックス（矢印９１５として表される）および垂直変換設定インデックス（矢印９１７として表される）を決定する。水平変換設定インデックス９１５および垂直変換設定インデックス９１７は、マッピング８８０（図８Ｃ参照）に従って決定される。
【００８８】
変換インデックス導出器９２０は、明示的多重変換インデックス３９０または４５４を受け取る。逆変換モジュール３４８として実装される場合、変換インデックス導出器９２０は、モードセレクタ３８６（図３参照）から明示的多重変換インデックス３９０を受信する。逆変換モジュール４４４として実装される場合、変換インデックス導出器９２０は、エントロピーエンコーダ４２０（図４参照）から明示的多重変換インデックス４５４を受信する。
【００８９】
変換インデックス導出器９２０は、明示的多重変換インデックス３９０または４５４から、水平変換インデックス９２０および垂直変換インデックス９２５を抽出する。水平変換インデックス９２０および垂直変換インデックス９２５は、それぞれ０から１の範囲にある。
【００９０】
水平変換セレクタモジュール９４０は、水平変換設定インデックス９１５（変換設定テーブルモジュール９１０から）および水平変換インデックス９２０（変換インデックス導出器９２０から）を受け取る。水平変換セレクタ９４０は、マッピング８４０（図８Ｂ参照）に従って、水平変換設定インデックス９１５および水平変換インデックス９２０から、選択された水平変換（矢印９５０として表される）を生成する。水平変換設定インデックス９１５は、変換設定８４２のうちの１つを選択するために使用され、水平変換インデックス９２０は、変換インデックス８４４のうちの１つを選択するために使用される。
【００９１】
垂直変換セレクタモジュール９４５は、垂直変換設定インデックス９１７（変換設定テーブルモジュール９１０から）および垂直変換インデックス９２５（変換インデックス導出器９２０から）を受け取る。垂直変換セレクタモジュール９４５は、マッピング８４０（図８Ｂ参照）に従って、垂直変換設定インデックス９１７および垂直変換インデックス９２５から、選択された垂直変換９５５を生成する。垂直変換設定インデックス９１７は、変換設定８４２のうちの１つを選択するために使用され、垂直変換インデックス９２５は、変換インデックス８４４のうちの１つを選択するために使用される。
【００９２】
水平変換モジュール９６０は、選択された水平変換９５０を中間逆変換係数３４６又は再構成された変換係数４４０に適用する。中間逆変換係数３４６は、逆二次変換モジュール３４４（図３参照）からのものである。再構成された変換係数４４０は、逆二次変換モジュール４３６（図４参照）からのものである。
【００９３】
変換係数３４６または４４０は、選択された水平変換９５０に従って変換される。すなわち、１次元変換のセットを有する選択された水平変換９５０が、変換係数３４６または４４０のアレイの各行に適用される。各１次元変換は、変換ブロックの幅にまたがる。水平変換モジュール９６０は、水平変換された変換係数９７０を、現在の変換ブロックと等しいサイズを有するアレイとして出力する。変換係数９７０は、垂直変換モジュール９８０に供給される。説明を容易にするために、変換係数９７０は、水平変換された変換係数３４６および４４０の両方を参照する。
【００９４】
垂直変換モジュール９８０は、一次元変換のセットを有する選択された垂直変換９５５を、水平変換された変換係数９７０の各列に適用する。垂直変換モジュール９８０は、垂直選択変換９５５を使用して、それぞれの水平変換された変換係数３４６または４４０から残差サンプル３５０または４４８を生成する。
【００９５】
図１０Ａは、切り捨てられた単項構文要素（truncated unary syntax element：トランケーテッド・ユーナリー・シンタックス・エレメント）と変換選択のための変換インデックスとの間の関係を示す表１０００を示す。変換インデックスは、水平変換インデックスＨ（列１０４８に示す）および垂直変換インデックスＶ（列１０４６に示す）である。テーブル１０００は、ビンストリング列１０４２と、二値化列１０４４と、垂直変換インデックス列１０４６と、水平変換インデックス列１０４８とを含む。
【００９６】
ビンストリング列１０４２は、４つの可能なビンストリングを有し、それらは最大値３（すなわち、０から３の範囲）を有する切り捨てられた単項二値化（truncated unary binarisation：トランケーテッド・ユーナリー・バイナライゼーション）からである。エンコーダ１１４については、列１０４２に示されているビンストリングは、エントロピーエンコーダ３３８がビットストリーム１１５に符号化するビンストリングである。ビットストリーム１１５に符号化されるビンストリングは、モードセレクタ３８６によって選択された水平変換インデックスＨおよび垂直変換インデックスＶに基づいて選択される。
【００９７】
デコーダ１３４の場合、列１０４２に示されるビンストリングは、ビットストリーム１３３からエントロピーデコーダ４２０によってデコードされるビンストリングである。そして、エントロピーデコーダ４２０は、復号したビンストリングに基づいて、水平変換インデックスＨ及び垂直変換インデックスＶを出力する。
【００９８】
二値化列１０４４は、ビンストリング列１０４２内の各ビンストリングに対する組成を含む。この命名法では、「Ｃｔｘ０」および「Ｃｔｘ１」がビンストリング列１０４２内の対応するビンを符号化するために使用される２つの別個のＣＡＢＡＣコンテンツを指している。用語「Ｂｙｐ」は、ビンストリング列１０４２内の対応するビンを符号化するために使用されるバイパス符号化ビンを指す。
【００９９】
垂直変換インデックス列１０４６は、垂直１Ｄ変換のための変換設定から変換を選択するためのインデックス値（０または１のいずれか）を含む。水平変換インデックス列１０４８は、水平１Ｄ変換のための変換設定から変換を選択するためのインデックス値（０または１のいずれか）を含む。表１０００では、最短のビンストリングが垂直インデックス「０」および水平インデックス「０」の場合に割り当てられる。最短のビンストリングは、モードセレクタ３８６によって最も頻繁に選択された場合に対応している。そして、次に短いビンストリングは、垂直インデックス「１」および水平インデックス「１」の場合に割り当てられる。これは、モードセレクタ３８６によって２番目に頻繁に選択された場合に対応している。その後、垂直変換インデックスと水平変換インデックスとの組合せに対するインデックス値の組合せ「０１」または「１０」の場合は等しくあり得ず、列１０４４内の最長のビンストリングが割り当てられる。さらに、これら２つの場合の間の区別は、モードセレクタ３８６によるこれら２つの選択の間のほぼ等しい発生確率を反映して、バイパス符号化ビンを使用して実行される。説明される統計的性質は、変換サイズに概ね不変であることが判明し、したがって、切り捨てられた単項ビンストリング（truncated unary bin string：トランケーテッド・ユーナリー・ビン・ストリングス）におけるそれらの位置に従って選択されたこれらのコンテキストの存在は、ビン値の非対称確率分布をとらえるのに適切である。
【０１００】
図１０Ｂは、切り捨てられた単項構文要素と、水平および垂直変換インデックス化のための変換インデックスとの間の代替関係を示す表１０５０であり、切り捨てられた単項二値化の第３のビンは、バイパス符号化ではなく、コンテキスト符号化を使用する。
【０１０１】
図１１は、残差係数の変換ブロックをビットストリーム１１５に符号化するために、明示的な変換選択に従って一次変換を実行するための方法１１００のフローチャート図である。方法１１００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰなどの装置によって実施され得る。さらに、方法１１００は、プロセッサ２０５の実行下でビデオエンコーダ１１４によって実行されてもよい。そのようなものとして、方法１１００は、コンピュータ読み取り可能な記憶媒体および／またはメモリ２０６に記憶することができる。方法１１００は、イントラ予測モード決定ステップ１１１０でプロセッサ２０５で開始する。
【０１０２】
方法１１００は、イントラ予測モードステップ１１１０で開始する。イントラ予測モードステップ１１１０において、モードセレクタ３８６は、プロセッサ２０５の実行下で、現在の符号化ユニットに関連する予測ユニットのためのイントラ予測モード３８８を選択する。選択は一般に、２つのパスで実行される。最初のパスでは、輝度予測ブロックのすべてのイントラ予測モードがテストされる。各モードについて、残差コストは例えば、アダマール変換等の「絶対変換差の和」方法を用いて近似される。このテストから、「最良」（最低歪み）候補予測モードのリストが導出される。次に、残差コードの完全なテストが、候補予測モードのリストに対して実行される。フルテストの結果として、１つのイントラ予測モード３８８が現在の符号化ユニットに対して選択される。イントラ予測モード３８８は、エントロピーエンコーダ３３８によってビットストリーム１１５に符号化される。次に、プロセッサ２０５における制御は、イントラ予測モードステップ１１１０から、変換設定決定ステップ１１２０に進む。
【０１０３】
変換設定決定ステップ１１２０において、逆変換モジュール３４８は、プロセッサ２０５の実行下で、決定されたイントラ予測モード３８８を使用して、マッピング８８０（図８Ｃ参照）に従って、水平変換設定インデックス９１５（図９に関して上述したように）および垂直変換設定インデックス９１７（図９に関して上述したように）を決定する。水平変換設定インデックス９１５から、マッピング８４０に従って、水平変換のための変換の設定が決定される。垂直変換設定インデックス９１７から、マッピング８４０に従って、垂直変換のための変換の設定が決定される。
【０１０４】
上述の例で説明したように、イントラ予測モード３８８がモード１４である場合、垂直変換についての可能な変換はＤＳＴ−ＶＩＩまたはＤＣＴ−ＶＩＩＩであり、水平変換についての可能な変換は、ＤＳＴ−ＶＩＩまたはＤＣＴ−Ｖである。
【０１０５】
次に、プロセッサ２０５内の制御は、変換設定決定ステップ１１２０から変換ステップ１１３０をテストするまで進む。
【０１０６】
変換ステップ１１３０をテストすることにおいて、変換モジュール３２６および逆変換モジュール３４８は、プロセッサ２０５の実行下で、ステップ１１２０からの垂直変換のための変換の設定および水平変換のための変換の設定からの変換の各組合せをテストする。イントラ予測モード３８８がモード１４の場合の例では、ＤＳＴ−ＶＩＩとＤＣＴ−ＶＩＩＩの変換を垂直変換に対してテストし、ＤＳＴ−ＶＩＩまたはＤＣＴ−Ｖの変換を水平変換に対してテストする。
【０１０７】
上述のように、テストは、変換モジュール３２６および逆変換モジュール３４８によって実行される。各設定における特定の変換は、（水平変換のための）水平変換インデックス９２０および（垂直変換のための）垂直変換インデックス９２５を使用して参照される。残差を符号化するための歪を決定するために、垂直変換と水平変換の各組合せがテストされる。
【０１０８】
テスト中、変換モジュール３２６および逆変換モジュール３４８は、モジュールの「通常動作」を実行する。したがって、逆変換モジュール３４８によって実行されるすべての逆変換動作について、変換モジュール３２６は、対応する順方向変換動作を実行する。テスト処理は、完全な変換を実行する場合と比較して複雑さを低減したテストを実行するために、近似の方法を使用してもよい。
【０１０９】
次に、プロセッサ２０５内の制御は、変換設定ステップ１１３０のテストから変換選択１１４０に進む。
【０１１０】
変換選択ステップ１１４０では、残差の符号化のための最低歪みとなる垂直変換と水平変換の組合せが選択される。イントラ予測モード３８８がモード１４である例では、最も低い歪みを提供する組合せは、垂直変換に対してはＤＣＴ−ＶＩＩＩであり、水平変換に対してはＤＳＴ−ＶＩＩであり得る。次に、プロセッサ２０５における制御は、変換選択ステップ１１４０から水平変換適用１１５０に進む。
【０１１１】
水平変換適用ステップ１１５０において、逆変換モジュール３４８は、水平変換を実行する。特に、水平変換モジュール９６０は、選択された水平変換９５０を実行する。イントラ予測モード３８８がモード１４である例では、ＤＳＴ−ＶＩＩが水平変換に使用される。次に、プロセッサ２０５における制御は、水平変換適用１１５０から垂直変換適用１１６０に進む。
【０１１２】
垂直変換適用ステップ１１６０において、逆変換モジュール３４８は、垂直変換を実行する。特に、垂直変換モジュール９８０は、選択された垂直変換９５５を実行する。イントラ予測モード３８８がモード１４である例では、ＤＣＴ−ＶＩＩＩが垂直変換に使用される。水平変換適用ステップ１１５０および垂直変換適用ステップ１１６０の結果として、二次変換を任意に適用した後（すなわち、モジュール３３０の動作）、変換係数３３２が生成される。次に、プロセッサ２０５における制御は、垂直変換適用ステップ１１６０から残差係数量子化ステップ１１７０に進む。
【０１１３】
残差係数量子化ステップ１１７０において、量子化器モジュール３３４は、プロセッサ２０５の実行下で、量子化パラメータに従って、残差係数３３６を生成するために変換係数３３２を量子化する。次に、プロセッサ２０５における制御は、残差係数量子化ステップ１１７０から残差係数符号化ステップ１１８０に進む。
【０１１４】
残差係数符号化ステップ１１８０において、エントロピーエンコーダ３３８は、プロセッサ２０５の実行下で、残差係数３３６をビットストリーム１１５に符号化する。所与の変換ブロックに対する残差係数３３６は、係数の２次元アレイをリストにスキャンすることによって符号化される。スキャンは一般に、変換ブロックを、各々がサイズ４×４の１つまたは複数のサブブロックに分割する（ただし、他のサイズも可能である）。各サブブロック内の有意係数の存在は、「符号化されたサブブロックフラグ」で信号伝達され、少なくとも１つの有意係数が存在する場合、サブブロック内の残差係数当たり１つの有意フラグが信号伝達される。符号化されたサブブロックフラグと有意性フラグは、コンテキスト符号化ビンを使用する。「１より大きいフラグ」や「２より大きいフラグ」などの大きさの追加表示も、コンテキスト符号化ビンを使用して符号化される。最後に、大きさのさらなる指示は一般に、バイパス符号化ビンを用いたゴロムライス符号化を使用して符号化される。残差係数３３６を符号化する際のビットのコストは、その大きさによって大きく影響される。最適なＥＭＴインデックスの選択の結果として、これらの大きさはわずかに減少し、圧縮効率の改善につながる。ステップ１１９０で実行されるこれらのインデックスの２値化は、圧縮効率をさらに改善する。次に、プロセッサ２０５における制御は、残差係数符号化ステップ１１８０からＥＭＴビンストリング符号化ステップ１１９０に進む。
【０１１５】
ＥＭＴビンストリング符号化ステップ１１９０では、エントロピーエンコーダ３３８がプロセッサ２０５の実行下で、図１０Ａを参照して説明されるように、切り捨てられた単項二値化（最大値３）、コンテキストモデリング、およびビンストリングのインデックス値へのマッピングを使用して、水平変換インデックス９２０および垂直変換インデックス９２５をビットストリーム１１５に符号化する。最も頻繁に選択されるインデックスのペア（「０」水平方向および「０」垂直方向）は、最短ビンストリング（「０」）を使用して符号化されるので、各インデックスに対して１つのビンを使用する単純な場合よりも符号化効率が高い。２番目に頻繁に選択されるインデックスのペア（「１」水平方向および「１」垂直方向）は、２番目に短いビンストリング、すなわち「１０」を使用して符号化され、２つのほぼ等しく最低可能性の組み合わせ（「１」および「０」、「０」および「１」）は最長ビンストリング（「１１０」および「１１１」）を使用して符号化される。第３のビンは、コンテキスト符号化を使用する利用に利用可能な統計的非対称性がないので、バイパス符号化を使用する。次に、方法１１００は、ステップ１１９０の終了時に終了する。
【０１１６】
図１２は、ビットストリーム１３３から残差係数の変換ブロックを復号するための方法１２００のフローチャート図である。方法１２００の復号は、明示的な変換選択に従って選択された一次逆変換によって実行される。方法１２００は、構成されたＦＰＧＡ、ＡＳＩＣ、またはＡＳＳＰなどの装置によって実施され得る。さらに、方法１２００は、プロセッサ２０５の実行下でビデオデコーダ１３４によって実行されてもよい。そのようなものとして、方法１２００は、コンピュータ読み取り可能な記憶媒体および／またはメモリ２０６に記憶することができる。方法１２００は、イントラ予測モード復号ステップ１２１０においてプロセッサ２０５から開始する。
【０１１７】
イントラ予測モード復号ステップ１２１０において、エントロピーデコーダ４２０は、プロセッサ２０５の実行下で、ビットストリーム１３３からイントラ予測モード４５８を復号する。エントロピーデコーダ４２０は、モードセレクタ３８６によって選択された可能性が最も高いと考えられるモードを含む、最も確率の高いモードのリストを生成する。コンテキスト符号化されたビンは、最も確率の高いモードまたは最も確率の高いモードリストにない他のモード（「残りのモード」）のいずれか１つの使用を示すために復号される。次に、どの最も確率の高いモードが使用中であるか、またはどの残りのモードが使用中であるかを識別するために、さらなるビンが復号される。次に、プロセッサ２０５における制御は、イントラ予測モード復号ステップ１２１０から残差係数復号ステップ１２２０に進む。
【０１１８】
残差係数復号ステップ１２２０において、エントロピーデコーダ４２０は、プロセッサ２０５の実行下で、残差係数のリストを復号し、残差係数を変換ブロックのためのアレイにアセンブルする。アセンブリはスキャンパターンに従い、通常、残差係数を４ｘ４サブブロックにグループ化する。残差係数のリストは、一般に逆方向にスキャンされ、これは「最後の」有意残差係数から左上の残差係数に向かって戻ってくる（「ＤＣ」残差係数であるが、これはコサイン関数に基づいていない変換のためのブロックオフセットには対応していない可能性がある）。コンテキスト符号化ビンは、各サブブロック内の有意な残差係数の存在を示すために復号され、示される場合、追加のコンテキスト符号化ビンはサブブロック内の各残差係数の有意性を示すために復号される。各残差係数の大きさは、「１より大きい」または「２より大きい」フラグを復号することによってさらに特徴付けることができる。最後に、その大きさが先行するコンテキスト符号化ビンによって決定されない残差係数について、「残りの大きさ」は、バイパス符号化ビンを有するゴロムライス符号化を使用して復号される。この復号の結果として、変換ブロックの残差係数４２４がビットストリーム１３３から復号される。次に、プロセッサ２０５における制御は、残差係数復号ステップ１２２０から残差係数逆量子化ステップ１２３０に進む。
【０１１９】
残差係数逆量子化ステップ１２３０において、逆量子化器モジュール４２８は、プロセッサ２０５の実行下で、量子化パラメータに従って残差係数４２４をスケーリングすることによって中間変換係数４３２を生成する。中間変換係数４３２は、一般に変換ブロックの左上領域のみに適用される、分離不可能な二次変換の適用によって変換されて、中間変換係数４３２を生成することができる。このスケーリング動作の結果として、中間変換係数４３２はビデオエンコーダにおける量子化前のもの（すなわち、変換係数３３２）とほぼ同じ大きさを有する。逆非分離二次変換（すなわち、逆二次変換モジュール４３６）の任意のアプリケーションを通して、再構成された変換係数４４０は、中間変換係数４３２から得られる。次に、プロセッサ２０５における制御は、残差係数逆量子化ステップ１２３０からＥＭＴビンストリング復号ステップ１２４０に進む。
【０１２０】
ＥＭＴビンストリング復号ステップ１２４０において、エントロピーデコーダ４２０は、プロセッサ２０５の実行下で、ビットストリーム１３３から切り捨てられた単項ビンストリングを復号する。切り捨てられた単項ビンストリングは、図１０Ａの列１０４２に列挙されているビンストリングの１つである。図１０Ａに示され、上述されたように、単項ビンストリングは、長さが３つのビン（０から３までの範囲にある）に制限される。切り捨てられた単項ビンストリングの長さは１〜３ビンで、最初のビンはコンテキスト符号化され、２番目のビン（存在する場合）は異なるコンテキストでコンテキスト符号化され、３番目のビン（存在する場合）はバイパス符号化される。この二値化は、図１０を参照して説明される。次に、プロセッサ２０５内の制御は、ＥＭＴビンストリング復号ステップ１２４０からＥＭＴインデックス決定ステップ１２５０に進む。
【０１２１】
ＥＭＴインデックス決定ステップ１２５０において、ビデオデコーダ１３４内の変換インデックス導出器９２０は、プロセッサ２０５の実行下で、図１０Ａのテーブル１０００に従って、水平変換インデックス９２０および垂直変換インデックス９２５を決定する。次に、プロセッサ２０５における制御はＥＭＴインデックス決定ステップ１２５０から、変換設定決定ステップ１２６０に進む。
【０１２２】
変換設定決定ステップ１２６０において、逆変換モジュール４４４は、プロセッサ２０５の実行下で、マッピング８４０内のどの変換設定が一次逆変換の水平および垂直変換のために使用されるべきかを決定する。特に、イントラ予測モード４５８を使用して、変換設定テーブル９１０は、水平変換設定９１５および垂直変換設定９１７を決定するために使用される。次に、プロセッサ２０５内の制御は、変換設定決定ステップ１２６０から変換選択ステップ１２７０に進む。
【０１２３】
変換選択ステップ１２７０において、逆変換モジュール４４４は、プロセッサ２０５の実行下で、水平変換９５０および垂直変換９５５を決定する。水平変換９５０および垂直変換９５５の決定は、水平変換セレクタ９４０および垂直変換セレクタ９４５それぞれによって行われる。モジュールは図９に示すように、水平変換設定インデックス９１５、垂直変換設定インデックス９１７、水平変換インデックス９２０、および垂直変換インデックス９２５を入力として取り込み、図８Ｂに従って、選択された水平変換９５０および選択された垂直変換９６０を生成する。次に、プロセッサ２０５における制御は、変換選択ステップ１２７０から水平変換適用ステップ１２８０に進む。
【０１２４】
水平変換適用ステップ１２８０において、逆変換モジュール４４４は、プロセッサ２０５の実行下で、水平変換モジュール９６０を使用して、選択された水平変換９５０を適用する。選択された水平変換９５０は、再構成された変換係数４４０の各行に適用され、水平に変換された変換係数９７０を生成する。水平変換された変換係数９７０は、垂直変換モジュール９８０に供給される。次に、垂直変換モジュール９８０は、選択された垂直変換９５５を適用することによって残差サンプル４４８を生成する。残差サンプル９５０は図４を参照して説明されるように、再構成サンプルを生成するために、イントラ予測ＰＵとの加算にさらに使用される。その後、方法１２００は終了する。
【０１２５】
方法１１００および１２００の別の構成では、切り捨てられた単項ビンストリングの二値化（binarisation）を、１つのコンテキスト符号化ビンのみが使用されるように修正する。特に、図１０Ａを参照すると、二値化１０４４の第１のビンはコンテキスト符号化されたままであるが、二値化１０４４の第２のビンはコンテキスト符号化の代わりにバイパス符号化ビンを使用する。ただ１つのコンテキスト符号化ビンを使用する構成は、圧縮効率のわずかな低下を犠牲にして実装コストを節約する。しかしながら、１つのコンテキスト符号化ビンのみを使用する配置は、わずかにより高いスループットを達成することができる。より高いスループットは、エントロピーエンコーダ３３８およびエントロピーデコーダ４２０におけるＣＡＢＡＣ処理が少なくともコンテキスト状態更新がないために、コンテキスト符号化ビンよりも高いレートでバイパス符号化ビンを処理することができるからである。
【０１２６】
図１０Ａを参照して述べたように、それぞれ「０」および「１」、またはそれぞれ「１」および「０」の値を有する水平変換インデックスＨおよび垂直変換インデックスＶの選択の確率は、ほぼ等しい。したがって、図１０Ａに示すものとは別の２値化は第３のバイパス符号化ビンの使用を反転する。第３のビンの使用を反転する構成が、それぞれの垂直変換インデックスおよび水平変換インデックスについて「０」、「１」にマッピングされた「１１１」のビンストリングと、それぞれの垂直変換インデックスおよび水平変換インデックスについて「１」、「０」にマッピングされた「１１０」のビンストリングとを有する。これら２つの選択の間のほぼ等しい確率のために、同等の圧縮利点が達成される。
【０１２７】
水平方向および垂直方向の明示的多重変換選択の二値化の結果として、特に、それらが各インデックス値の選択のそれらの予想される確率に従って共同で符号化される態様として、符号化効率は水平および垂直インデックス（例えば、それぞれ１つのコンテキスト符号化ビン）のためにそれぞれ独立したシンタックス要素が使用される場合と比較して改善される。
【０１２８】
産業上の利用可能性
説明された構成は、コンピュータ及びデータ処理産業に適用可能であり、特に、ビデオ及び画像信号などの信号の復号を符号化するためのデジタル信号処理に適用可能であり、残差係数の非局所的なスキャンによるメモリ帯域幅に関して過度のコストなしに高い圧縮効率を達成する。
【０１２９】
上記は本発明のいくつかの実施形態のみを説明し、本発明の範囲および精神から逸脱することなく、本発明に修正および／または変更を加えることができ、実施形態は例示的であり、限定的ではない。
【０１３０】
本明細書の文脈において、用語「含む（comprising）」は「主に含むが、必ずしも単独ではない」または「有する（having）」または「含む（including）」を意味しており、「のみからなる」ではない。「含む（comprise）」および「含む（comprises）」などの用語「含む（comprising）」の変形は、対応して変化する意味を有する。
本発明を定義する請求項は以下の通りである。
【図１】
2021530124.tif 000003
【図２Ａ】
2021530124.tif 000004
【図２Ｂ】
2021530124.tif 000005
【図３】
2021530124.tif 000006
【図４】
2021530124.tif 000007
【図５】
2021530124.tif 000008
【図６】
2021530124.tif 000009
【図７Ａ】
2021530124.tif 000010
【図７Ｂ】
2021530124.tif 000011
【図８Ａ】
2021530124.tif 000012
【図８Ｂ】
2021530124.tif 000013
【図８Ｃ】
2021530124.tif 000014
【図９】
2021530124.tif 000015
【図１０Ａ】
2021530124.tif 000016
【図１０Ｂ】
2021530124.tif 000017
【図１１】
2021530124.tif 000018
【図１２】
2021530124.tif 000019
【国際調査報告】
2021530124.tif 000020
2021530124.tif 000021
2021530124.tif 000022