(57)【特許請求の範囲】
【請求項１】
複数のコーディングブロックレベルの中から、画像データを処理するためのコーディングブロックレベルを決定し；複数のブロック編成の中から、前記決定されたコーディングブロックレベルに従って前記画像データのモーションコーディングのためのブロック編成を決定するように構成されたモーションコーディングモジュールと、
複数のブロックサイズの中から、前記決定されたブロック編成に従って前記画像データのテクスチャコーディングのためのブロックサイズを決定し、それによりコード化ビットストリームを生成するように構成されたテクスチャコーディングモジュールとを備える符号化デバイス。
【請求項２】
前記モーションコーディングモジュールは、前記モーションコーディングモジュールにより決定された前記ブロック編成の単位でモーション推定（ＭＥ）動作を実行し、それによりモーション情報を出力するようにさらに構成される請求項１に記載の符号化デバイス。
【請求項３】
前記モーション情報および前記コード化ビットストリームを多重化するように構成されたＭＵＸをさらに備える請求項２に記載の符号化デバイス。
【請求項４】
前記モーションコーディングモジュールは、前記画像データを１つまたは複数の基本画像処理単位に分割し、各基本画像処理単位をサブブロックに四等分して、前記サブブロックの各々の前記コーディングブロックレベルを決定するようにさらに構成される請求項１に記載の符号化デバイス。
【請求項５】
前記モーションコーディングモジュールは、前記サブブロックの各々について、第１の単位で第１のＭＥ動作、および第２の単位で第２のＭＥ動作を実行するようにさらに構成される請求項４に記載の符号化デバイス。
【請求項６】
前記モーションコーディングモジュールは、前記第１の単位の前記第１のＭＥ動作のメトリックと、前記第２の単位の前記第２のＭＥ動作のメトリックとを比較し、それにより、前記メトリックの前記比較結果に基づいて、前記サブブロックの各々の前記コーディングブロックレベルが第１のブロックレベルにおけるものであるかどうかを決定するようにさらに構成される請求項５に記載の符号化デバイス。
【請求項７】
前記モーションコーディングモジュールが、前記コーディングブロックレベルは前記第１のブロックレベルにおけるものであると決定する場合、前記モーションコーディングモジュールは、前記ブロック編成が、３２×３２スーパーブロック編成、３２×１６サブスーパーブロック編成、および１６×３２サブスーパーブロック編成のうちの１つであると決定するように構成される請求項６に記載の符号化デバイス。
【請求項８】
前記モーションコーディングモジュールが、前記ブロック編成は３２×３２スーパーブロック編成であると決定する場合、前記テクスチャコーディングモジュールは、３２×３２スーパーブロック編成の前記画像データに対して３２×３２ＤＣＴコーディングおよび１６×１６ＤＣＴコーディングを実行するように構成される請求項７に記載の符号化デバイス。
【請求項９】
前記テクスチャコーディングモジュールは、３２×３２ＤＣＴコーディングにより生成される第１のビットストリームの量と１６×１６ＤＣＴコーディングにより生成される第２のビットストリームの量を比較して、前記３２×３２スーパーブロック編成の前記画像データについて前記テクスチャコーディングのためのブロックサイズを決定するようにさらに構成される請求項８に記載の符号化デバイス。
【請求項１０】
前記モーションコーディングモジュールが、前記ブロック編成は前記３２×１６サブスーパーブロック編成および前記１６×３２サブスーパーブロック編成のうちの１つであると決定する場合、前記テクスチャコーディングは、前記決定されたブロック編成の前記画像について１６×１６ＤＣＴコーディングを実行するように構成される請求項７に記載の符号化デバイス。
【請求項１１】
前記モーションコーディングモジュールが、前記サブブロックの各々の前記コーディングブロックレベルは前記第１のブロックレベルにおけるものではないと決定する場合、前記モーションコーディングモジュールは、前記サブブロックの各々をマクロブロックに四等分し、各マクロブロックについてマクロブロックの単位、およびミディアムブロックの単位でＭＥ動作を実行して、各マクロブロックの前記コーディングブロックレベルがマクロブロックレベルにおけるものであるかどうかを決定するように構成される請求項６に記載の符号化デバイス。
【請求項１２】
少なくとも１つの画像フレームを有する入力ビデオを受信するように構成され、前記画像フレームを画像データに変換するように構成された入力モジュールと、
エンコーダであって、
複数のコーディングブロックレベルの中から、前記画像データを処理するためのコーディングブロックレベルを決定し；複数のブロック編成の中から、前記決定されたコーディングブロックレベルに従って前記画像データのモーションコーディングのためのブロック編成を決定するように構成されたモーションコーディングモジュールと、
複数のブロックサイズの中から、前記決定されたブロック編成に従って前記画像データのテクスチャコーディングのためのブロックサイズを決定し、それによりコード化ビットストリームを生成するように構成されたテクスチャコーディングモジュールとを備えるエンコーダと、
前記入力モジュールおよび前記エンコーダの動作を制御するように構成されたコントローラと、
前記画像データを格納するように構成されたメモリとを備える画像処理システム。
【請求項１３】
前記コード化ビットストリームを、有線または無線通信プロトコルを介して少なくとも１つの外部デバイスに伝送するように構成された通信モジュールをさらに備える請求項１２に記載の画像処理システム。
【請求項１４】
画像データを受信することと、
前記画像データを１つまたは複数の基本画像処理単位に分割し、各基本画像処理単位をサブブロックに分割して、複数のコーディングブロックレベルの中から、前記サブブロックの各々を処理するためのコーディングブロックレベルを決定することと、
複数のブロック編成の中から、前記決定されたコーディングブロックレベルに従って前記サブブロックの各々の前記画像データのモーションコーディングのためのブロック編成を決定することと、
複数のブロックサイズの中から、前記決定されたブロック編成に従って前記サブブロックの各々の前記画像データのテクスチャコーディングのためのブロックサイズを決定することとを備える方法。
【請求項１５】
前記決定されたブロック編成の単位でＭＥ動作を実行し、それによりモーション情報を出力することをさらに備える請求項１４に記載の方法。
【請求項１６】
コーディングブロックレベルを決定することは、前記サブブロックの各々について、第１の単位および第２の単位でＭＥ動作を実行して、それにより前記サブブロックの各々の前記コーディングブロックレベルが第１のブロックレベルにおけるものであるかどうかを決定することを含む請求項１４に記載の方法。
【請求項１７】
前記コーディングブロックレベルが前記第１のブロックレベルとして決定される場合、前記ブロック編成は、３２×３２スーパーブロック編成、３２×１６サブスーパーブロック編成、および１６×３２サブスーパーブロック編成から決定される請求項１６に記載の方法。
【請求項１８】
前記ブロック編成が３２×３２スーパーブロック編成として決定される場合、ブロックサイズを決定することは、前記３２×３２スーパーブロック編成の前記画像データに対して３２×３２ＤＣＴコーディングおよび１６×１６ＤＣＴコーディングを実行することをさらに備える請求項１７に記載の方法。
【請求項１９】
ブロックサイズを決定することは、前記３２×３２ＤＣＴコーディングにより生成される第１のビットストリームの量と１６×１６ＤＣＴコーディングにより生成される第２のビットストリームの量とを比較することを備える請求項１８に記載の方法。
【請求項２０】
前記ブロック編成が前記３２×１６サブスーパーブロック編成および前記１６×３２サブスーパーブロック編成のうちの１つとして決定される場合、前記方法は、前記決定されたブロック編成の前記画像に１６×１６ＤＣＴコーディングを実行することをさらに備える請求項１７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
近年、没入型感覚を求める消費者の要求およびディスプレイの技術革新により、大型ウォールサイズのテレビ（約７９〜１２０インチ）、いわゆるＵＤＴＶ（超高精細デジタル映像テレビ：Ｕｌｔｒａ  Ｄｅｆｉｎｉｔｉｏｎ  ＴＶ）、が業界で大きな注目を集めている。通常、ＵＤＴＶは、たとえば３８４０ピクセル×２１６０ライン（４Ｋ−ＵＤＴＶ）または７６８０ピクセル×４３２０ライン（８Ｋ−ＵＤＴＶ）である相対的超高解像度を有し、通信媒体（有線／無線）またはブロードキャストラインを通じてＵＤＴＶビデオを伝送するために膨大量の帯域幅を必要とする。ＵＤＴＶビデオをコード化するためのそのような広帯域またはデータの大量ブロックは、モーションのミスマッチの可能性を高めるおそれもあり、その結果、ＵＤＴＶビデオの空間的および時間的なコード化の効率を増大させながらも、過剰な量のコード化データを作り出すことになる。したがって、ＵＤＴＶビデオのコード化のために最適化された可変ブロックサイズを有する適応コーディング方式を開発することに関心が寄せられている。
【発明の概要】
【０００２】
ＵＤＴＶビデオの符号化に関連する技法が提供される。１つの実施形態において、符号化デバイスは、画像データを処理するためのコーディングブロックレベルを決定するように構成され、コーディングブロックレベルに従って画像データのモーションコーディングのためのブロック編成を決定するようにさらに構成されたモーションコーディングモジュールと、ブロック編成に従って画像データのテクスチャコーディングのためのブロックサイズを決定し、それによりコード化ビットストリームを生成するように構成されたテクスチャコーディングモジュールとを含む。
【０００３】
前述の要約は、例示的なものに過ぎず、限定的であることを全く意図されていない。上記で説明される例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および後段の詳細な説明を参照することにより明らかとなろう。
【図面の簡単な説明】
【０００４】
【図１】画像処理デバイスの例示的な実施形態を示す概略ブロック図である。
【図２】図１に示されるエンコーダの例示的な実施形態を示す概略ブロック図である。
【図３】ビデオ画像データの可変サイズのモーションコーディングのためのコーディングブロックレベルにおけるブロック編成の例示的な実施形態を示す図である。
【図４】ビデオ画像データの可変サイズのテクスチャコーディングのためのコーディングブロックサイズの例示的な実施形態を示す図である。
【図５】図３のコーディング編成と図４のコーディングブロックサイズの関係の例を示す図である。
【図６】コーディング構造を決定するための方法の例示的な実施形態を示す例示の流れ図である。
【図７】図６の第１のブロックレベル決定のための操作の例示的な実施形態を示す詳細な流れ図である。
【図８】図６の第２のブロックレベル決定のための操作の例示的な実施形態を示す詳細な流れ図である。
【図９】図６の第３のブロックレベル決定のための操作の例示的な実施形態を示す詳細な流れ図である。
【発明を実施するための形態】
【０００５】
以下の詳細な説明において、本明細書の一部を形成する付属の図面が参照される。図面において、文脈に特に指示がない限り、類似する符号は通常、類似するコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲において説明される例示の実施形態は、限定的であることを意図していない。本明細書において提示される主題の趣旨または範囲を逸脱することなく、その他の実施形態が使用されてもよく、その他の変更が行われてもよい。本明細書において概ね説明され、図面に示される本開示の態様が、多岐にわたるさまざまな構成において配置され、代替され、組み合わされ、分離され、設計されてもよく、それらすべては明示的に企図されることは容易に理解されよう。
【０００６】
本開示の例示的な実施形態による装置および方法が、ハードウェア、ソフトウェア、ファームウェア、特殊用途プロセッサ、またはそれらの組み合わせを含むさまざまな形式で実施されてもよいことが理解されたい。たとえば、本開示の１つまたは複数の実施形態は、プログラムストレージデバイス（たとえば、ハードディスク、磁気フロッピーディスク、ＲＡＭ、ＲＯＭ、ＣＤ−ＲＯＭなど）のような少なくとも１つのコンピュータ可読媒体上で明白に具現され、適切な構成を有する、コンピュータおよびコンピュータシステムを含む任意のデバイスまたはマシンにより実行可能なプログラムまたはその他の適切なコンピュータ実行可能命令を有するアプリケーションとして実施されてもよい。一般に、プログラムモジュールの形態であってもよいコンピュータ実行可能命令は、特定のタスクを実行するかまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、さまざまな実施形態において要望に応じて組み合わされるか、または分散されてもよい。さらに、添付の図面に示される構成システムコンポーネントおよびプロセスオペレーションの一部がソフトウェアにおいて実施されうるため、システムユニット／モジュール（または方法オペレーションの論理フロー）間の接続は、本開示のさまざまな実施形態がプログラムされる方法に応じて異なる場合もあることを理解されたい。
【０００７】
図１は、画像処理デバイス１００の例示的な実施形態を示す概略ブロック図である。１つの実施形態において、画像処理デバイス１００は、入力ビデオを受信することができる入力モジュール１１０を含むことができ、各ビデオは、カメラ、カムコーダーなどのような画像取り込みデバイス（図示せず）により取り込まれた少なくとも１つの画像フレームを有する。入力モジュール１１０は、受信したビデオの画像フレーム（複数可）をデジタル画像データに変換することができる。入力モジュール１１０は、ビデオの画像フレーム（複数可）をデジタル画像データに変換するためのアナログデジタル変換、量子化などのような、さまざまなよく知られたデータ処理技法のいずれかを使用することができる。デジタル画像データは、画像フレームのさまざまなピクセル位置における、強度、カラー、輝度などのような画像フレームの特徴を表すことができる。
【０００８】
一部の実施形態において、入力モジュール１１０は、オプションでインターフェイス（図示せず）を含むことができる。インターフェイスは、画像処理デバイス１００のオペレータが、命令をエンターまたは入力できるようにすることができる。インターフェイスを介して入力されうる命令の一部の非限定的なタイプは、ビデオ（複数可）を入力として受信するための命令、以前入力されたビデオを表示するための命令、１つまたは複数の操作結果を表示するための命令、または画像処理デバイス１００を別の方法で操作するための命令を含むことができる。適切なインターフェイスの例は、キーパッド、キーボード、マウス、タッチパッド、タッチスクリーン、ポインティングデバイス、トラックボール、ライトペン、ジョイスティック、音声認識デバイス、スタイラスデバイス、眼球および頭部運動トラッカー、離散化タブレット、バーコードリーダーなどを含むが、これらに限定されることはない。
【０００９】
画像処理デバイス１００は、画像処理デバイス１００のコンポーネントまたはユニット／モジュールの動作を制御するように構成されるコントローラ１２０をさらに含むことができる。コントローラ１２０は、所定の処理シーケンス／フローに従って、１つまたは複数の画像取り込みデバイス（たとえば、カメラ、カムコーダーなど）から画像フレームを有するビデオを受信するように入力モジュール１１０を操作することができる。１つの実施形態において、コントローラ１２０は、プロセッサ、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラなどを含むことができる。コントローラ１２０は、オペレーティングシステム、少なくとも１つのアプリケーションプログラム、およびその他のプログラムモジュールを含むソフトウェアアプリケーションを格納して操作するための少なくとも１つの内蔵システムメモリを含むことができる。コントローラ１２０は、画像処理デバイス１００の動作を管理して制御するように構成された適切なオペレーティングシステムの実行を容易にする。それらの動作は、関連するソフトウェアアプリケーションプログラム／モジュールとの間のデータの入力および出力を含むことができる。オペレーティングシステムは、コントローラ１２０上で実行されているソフトウェアアプリケーションプログラム／モジュールと、たとえば画像処理デバイス１００のハードウェアコンポーネントとの間のインターフェイスを提供することができる。適切なオペレーティングシステムの例は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（「ＭａｃＯＳ」）、ＵＮＩＸ（登録商標）オペレーティングシステム、ＬＩＮＵＸ（登録商標）オペレーティングシステムなどを含む。
【００１０】
画像処理デバイス１００は、画像処理デバイス１００のコンポーネントまたはユニット／モジュール間で通信されるデータ（たとえばデジタル画像データ）を格納するために使用されうるメモリ１３０をさらに含むことができる。画像処理デバイス１００のさまざまなコンポーネントまたはユニット／モジュールは、データ処理のためにメモリ１３０（揮発性および不揮発性を含む）を使用することができる。たとえば、メモリ１３０は、エンコーダ１４０による処理のために入力モジュール１１０を介して取得されるデジタル画像データを格納することができる。エンコーダ１４０は、メモリ１３０からデジタル画像データを取り出して処理することができる。
【００１１】
メモリ１３０は、読み取り専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（消去可能ＲＯＭ）、ＥＥＰＲＯＭ（電気的ＥＰＲＯＭ）などのような、任意のコンピュータ可読媒体を含むことができる。加えて、メモリ１３０は、必要な場合および／または必要に応じて（たとえば、満杯になるとき）、交換を可能にするように、取り外し可能に着脱式のメモリであってもよい。したがって、メモリ１３０はまた、ＳｍａｒｔＭｅｄｉａ（登録商標）カード、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）カード、ＭｅｍｏｒｙＳｔｉｃｋ（登録商標）、ＭｕｌｔｉＭｅｄｉａＣａｒｄ（登録商標）、ＤａｔａＰｌａｙ（登録商標）ディスク、および／またはＳｅｃｕｒｅＤｉｇｉｔａｌ（登録商標）カードのような、１つまたは複数のその他のタイプのストレージデバイスを含むこともできる。
【００１２】
画像処理デバイス１００は、エンコーダ１４０をさらに含むことができる。１つの実施形態において、エンコーダ１４０は、たとえば、カメラのような画像取り込みデバイスにより取り込まれた画像フレームから入力モジュール１１０によって生成されたデジタル画像データなど、入力モジュール１１０によって生成または形成されたデジタル画像データを処理することができる。たとえば、デジタル画像データの処理の一部として、エンコーダ１４０は、可変サイズのコーディング方式（たとえば、可変サイズのモーションコーディングおよび可変サイズのテクスチャコーディング）の使用を通じてデジタル画像データを圧縮することができる。
【００１３】
エンコーダ１４０は、画像データを１つまたは複数の基本処理単位（たとえば、６４×６４ウルトラブロック）にさらに分割することができる。各基本処理単位は、バッチとして格納され処理されるべき画像データのグループを含む。エンコーダ１４０は、基本画像処理単位の各々をサブブロック（たとえば、３２×３２スーパーブロック）に四等分して、各サブブロックに含まれる画像データを処理するためのコーディングブロックレベルを決定することができる。コーディングブロックレベルは、たとえば画像データを符号化するために使用されるコーディング情報（たとえば、関連技術で知られているモーションコーディング技法におけるモーションコーディングのためのブロック編成、およびテクスチャコーディングのためのブロックサイズ）を指示するレベルインデックスなどとして定義されてもよい。コーディングブロックレベルは、スーパーブロックレベル、マクロブロックレベル、およびミディアムブロックレベルを含むことができる。各サブブロックに対して、エンコーダ１４０は、画像データのサブブロックのコーディングブロックレベルを決定するために、サブブロック内の２単位以上の画像データにおいてモーション推定を実行することができる（「第１のブロックレベル決定」）。たとえば、３２×３２のスーパーブロックについて、エンコーダ１４０は、画像データの第１の単位（たとえば、３２×３２スーパーブロック）においてモーション推定を実行して第１のメトリック（たとえば、差分絶対値和（ＳＡＤ：ｓｕｍ  ｏｆ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅ）、平均絶対差（ＭＡＤ：ｍｅａｎ  ａｂｓｏｌｕｔｅ  ｄｉｆｆｅｒｅｎｃｅ）、または平均二乗誤差（ＭＳＥ：ｍｅａｎ  ｓｑｕａｒｅ  ｅｒｒｏｒ））を生成し、画像データの第２の単位（たとえば、３２×３２スーパーブロック内の１６×１６マクロブロックのうちの１つ）においてモーション推定を実行して第２のメトリックを生成することができる。
【００１４】
エンコーダ１４０はさらに、第１および第２のメトリックをさらに比較して、それによりサブブロック（すなわち、３２×３２スーパーブロック）の画像データを処理（たとえば、圧縮、符号化など）するかどうかを決定することができる。エンコーダ１４０が、サブブロックは処理されるべきではない（たとえば、第２のメトリックが第１のメトリックよりも小さい場合）と決定する場合、エンコーダ１４０は、前述の第１のブロックレベル決定と類似する方法でサブブロック内の４つの１６×１６マクロブロックの各々について第２のブロックレベル決定を実行することができる。エンコーダ１４０が、サブブロックは処理されるべきである（たとえば、第１のメトリックが第２のメトリックよりも小さいかまたは等しい場合）と決定する場合、エンコーダ１４０は、スーパーブロックレベルをコーディングブロックレベルとして決定し、３２×３２スーパーブロック内の画像データを処理することができる。
【００１５】
決定されたコーディングブロックレベルに従って、エンコーダ１４０は、ブロックレベルが決定されるブロック内の画像データのモーションコーディングのためのブロック編成（たとえば、３２×３２ブロック編成、３２×１６ブロック編成、１６×３２ブロック編成など）を決定することができる。ブロック編成は、たとえばモーションコーディングを実行するために使用されうるブロックのタイプとして、定義されてもよい。次いで、エンコーダ１４０は、ブロック編成に従って画像データのテクスチャコーディングのためのブロックサイズを決定することができる。エンコーダ１４０は、ブロック編成に従って、モーションコーディング（たとえば、モーション推定、モーション補正など）を実行し、それによりモーションベクトル、残余画像、ブロック編成などのようなモーション情報を出力することができる。エンコーダ１４０は、ブロックサイズに従って離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）のようなテクスチャコーディングを実行して、コード化されたビットストリームを生成することができる。一部の実施形態において、エンコーダ１４０は、ソフトウェア、ハードウェア、ファームウェア、またはその任意の組み合わせにより実施されてもよい。エンコーダ１４０は図１においてコントローラ１３０とは別個のユニットとして示されているが、一部の実施形態において、エンコーダ１４０は、コントローラ１３０上で実行されるアプリケーションの１つにより実施されてもよいことに留意されたい。
【００１６】
画像処理デバイス１００はオプションで、たとえばオペレータが見るために、ビデオおよび／またはデジタル画像データの処理の結果のようなビジュアル出力を提供するディスプレイ（図示せず）を含むことができる。ディスプレイは、ＣＲＴディスプレイを含むフラットパネルディスプレイ、およびその他の適切な出力デバイスを含むことができるが、これらに限定されることはない。画像処理デバイス１００はまた、オプションで、スピーカまたはプリンタのような、その他の周辺出力デバイス（図示せず）を含むこともできる。
【００１７】
一部の実施形態において、画像処理デバイス１００はオプションで、通信モジュール１５０をさらに含むことができる。通信モジュール１５０は、コード化ビットストリーム（たとえば、テクスチャビットストリーム）およびモーション情報を、有線または無線通信プロトコルを介して、少なくとも１つの外部デバイス（図示せず）に伝送することができる。通信プロトコル（有線または無線のいずれか）は、シリアルポート、パラレルポート、ＰＳ／２ポート、ユニバーサルシリアルバス（ＵＳＢ）リンク、ファイアワイヤまたはＩＥＥＥ１３９４リンクのようなデジタルインターフェイスプロトコル、または赤外線インターフェイス、ブルートゥース（登録商標）、ＺｉｇＢｅｅ、高精細度マルチメディアインターフェイス（ＨＤＭＩ：ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）、広帯域デジタルコンテンツ保護（ＨＤＣＰ：ｈｉｇｈ−ｂａｎｄｗｉｄｔｈ  ｄｉｇｉｔａｌ  ｃｏｎｔｅｎｔ  ｐｒｏｔｅｃｔｉｏｎ）、ｗｉｒｅｌｅｓｓ  ｆｉｄｅｌｉｔｙ（Ｗｉ−Ｆｉ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）などのような無線インターフェイス接続を採用することにより実施されてもよい。一部の実施形態において、通信モジュール１５０は、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＧＳＭ）、全地球測位システム（ＧＰＳ：Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）、Ｄｉｇｉｔａｌ  Ｍｏｂｉｌｅ  Ｍｕｌｔｉｍｅｄｉａ（ＤＭＢ）、符号分割多重アクセス（ＣＤＭＡ）、高速ダウンリンクパケットアクセス（ＨＳＤＰＡ：Ｈｉｇｈ−Ｓｐｅｅｄ  Ｄｏｗｎ  Ｌｉｎｋ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ）、Ｗｉｒｅｌｅｓｓ  Ｂｒｏａｄｂａｎｄ（Ｗｉ−ＢＲＯ）などのような、移動通信システムを通じて通信するためのモデム（図示せず）を含むことができる。本開示において説明される接続方法は例に過ぎず、デバイス／コンピュータ間の通信リンクを確立する他の方法が使用されてもよいことが理解されよう。
【００１８】
図１の画像処理デバイス１００は、適切なオペレーティング環境の一例に過ぎず、限定的であることは意図されていない。本明細書において説明される画像処理に適切となりうるその他のよく知られているコンピュータシステム、環境、および／または構成は、パーソナルコンピュータ、携帯電話のようなポータブルデバイス、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家庭用電化製品、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、図１に示されるユニットまたはデバイスのいずれかを含む分散コンピューティング環境を含むが、これらに限定されることはない。
【００１９】
図２は、図１に示されるエンコーダ１４０の例示的な実施形態を示す概略ブロック図である。１つの実施形態において、エンコーダ１４０は、ビデオの画像フレーム（複数可）から形成または生成されたデジタル画像データをメモリ１３０から取り出すことができる。エンコーダ１４０は、デジタル画像データに画像データ圧縮（たとえば、モーションコーディング、テクスチャコーディングなど）を実行することができる。図２に示されるように、エンコーダ１４０は、モーションコーディングモジュール２１０、およびテクスチャコーディングモジュール２２０を含むことができる。一部の実施形態において、エンコーダ１４０はオプションで、マルチプレクサ（ＭＵＸ）２３０を含むことができる。モーションコーディングモジュール２１０は、画像データを処理するためのコーディングブロックレベルを決定することができ、さらに、コーディングブロックレベルに従って画像データのモーションコーディング（たとえば、モーション推定、モーション補正など）のためのブロック編成を決定し、それによりモーションベクトルのようなモーション情報を生成することができる。テクスチャコーディングモジュール２２０は、ブロック編成に従ってモーションコード化画像データのテクスチャコーディング（たとえば、ＤＣＴ）を実行するためのブロックサイズを決定して、コード化ビットストリームを生成することができる。示されているように、ＭＵＸ２３０は、モーション情報およびコード化ビットストリームを多重化して、デコーダ（図示せず）に伝送されるべきビットストリームを生成することができる。
【００２０】
１つの実施形態において、モーションコーディングモジュール２１０は、入力モジュール１００からデジタル画像データ（たとえば、ピクセル値）を受信し、画像データ単位でデジタル画像データを処理することができる。たとえば、モーションコーディングモジュール２１０は、デジタル画像データを、基本画像処理単位として６４×６４（ピクセル×ライン）のサイズを有する１つまたは複数のウルトラブロックに分割することができる。モーションコーディングモジュール２１０は、基本画像処理単位を、３２×３２スーパーブロックのような、１つまたは複数のサブブロックに分割することができる。たとえば、モーションコーディングモジュール２１０は、６４×６４ウルトラブロックを、４つの３２×３２スーパーブロックに四等分することができる。モーションコーディングモジュール２１０は、基本画像処理単位（たとえば、６４×６４ウルトラブロック）のサブブロックの各々についてコーディングブロックレベルを決定することができる。３２×３２スーパーブロック（すなわち、６４×６４ウルトラブロックの４つの３２×３２スーパーブロックの各々）について、モーションコーディングモジュール２１０は、画像データの３２×３２スーパーブロックがスーパーブロックレベルで処理される（たとえば、圧縮される、符号化されるなど）べきかどうかを決定することができ、その決定では、スーパーブロックサイズまたはマクロブロックサイズが、ブロック編成、推定されるビットストリームなどのような要因に応じて画像データを処理（たとえば、テクスチャコーディング）するために使用されることができる。たとえば、ブロック編成が３２×３２ブロック編成であると決定される場合、スーパーブロックサイズが使用されてもよいか、またはブロック編成が１６×３２または３２×１６ブロック編成であると決定される場合、マクロブロックサイズが使用されてもよい。各３２×３２スーパーブロックについて、モーションコーディングモジュール２１０は、１つの３２×３２スーパーブロック単位（スーパーブロックベースのＭＥ）、および４つの１６×１６マクロブロック（すなわち、３２×３２スーパーブロックの４つの象限）のうちの１つ（マクロブロックベースのＭＥ）でモーション推定（ＭＥ）動作を実行して、それぞれ、スーパーブロックベースのＭＥの１つまたは複数のメトリック（たとえば、ＳＡＤ、ＭＡＤ、ＭＳＥ）およびマクロブロックベースのＭＥの対応するメトリックを生成するように動作可能である。当技術分野においてよく知られた任意のさまざまなＭＥ技法が、スーパーブロックレベルの決定を行うために使用されてもよいことを理解されたい。モーションコーディングモジュール２１０は、スーパーブロックベースのＭＥのメトリックをマクロブロックベースのＭＥの対応するメトリックと比較して、画像データの３２×３２スーパーブロックがスーパーブロックレベルで処理されるべきかどうかを決定することができる。モーションコーディングモジュール２１０が、スーパーブロックベースのＭＥのＳＡＤはマクロブロックベースのＭＥのＳＡＤよりも小さいと決定する場合、モーションコーディングモジュール２１０は、画像データの３２×３２スーパーブロックがス���パーブロックレベルで処理されるべきであると決定する。
【００２１】
そうではなく、モーションコーディングモジュール２１０が、３２×３２スーパーブロックベースはスーパーブロックレベルで処理されるべきではないと決定する場合（たとえば、マクロブロックベースのＭＥのＳＡＤがスーパーブロックベースのＭＥのＳＡＤよりも大きいかまたはこれと等しい場合）、モーションコーディングモジュール２１０は、１６×１６マクロブロックが処理されるべきであるかどうかをさらに決定することができる。モーションコーディングモジュール２１０は、３２×３２スーパーブロックを、３２×３２スーパーブロックの１つまたは複数のサブブロックに分割することができる。たとえば、モーションコーディングモジュール２１０は、３２×３２スーパーブロックを、４つの１６×１６マクロブロックに四等分することができる。各１６×１６マクロブロックについて、モーションコーディングモジュール２１０は、画像データのマクロブロックがマクロブロックレベルで処理されるべきかどうかを決定することができ、その決定では、マクロブロックサイズまたはミディアムブロックサイズが、ブロック編成、推定されるビットストリームなどのような要因に応じて画像データを処理（たとえば、テクスチャコーディング）するために使用されることができる。たとえば、ブロック編成が１６×１６ブロック編成であると決定される場合、マクロブロックサイズが使用されてもよいか、またはブロック編成が８×１６または１６×８ブロック編成であると決定される場合、ミディアムブロックサイズが使用されてもよい。スーパーブロックレベルで処理されるべきではないと決定された３２×３２スーパーブロックの各象限（１６×１６マクロブロック）について、モーションコーディングモジュール２１０は、１６×１６マクロブロック単位（マクロブロックベースのＭＥ）、および４つの８×８ミディアムブロック（すなわち、１６×１６マクロブロックの４つの象限）のうちの１つの単位（ミディアムブロックベースのＭＥ）でＭＥ動作を実行して、マクロブロックがマクロブロックレベルで処理されるべきかどうかを決定することができる。モーションコーディングモジュール２１０は、マクロブロックベースのＭＥのメトリックの１つ（たとえば、ＳＡＤ）と、ミディアムブロックベースのＭＥの対応するメトリックを比較することができる。比較結果に基づいて、モーションコーディングモジュール２１０は、コーディングブロックレベルがマクロブロックレベルにおけるものであるかどうかを決定することができる。モーションコーディングモジュール２１０が、マクロブロックベースのＭＥのＳＡＤはミディアムブロックベースのＭＥのＳＡＤよりも小さいと決定する場合、モーションコーディングモジュール２１０は、マクロブロックがマクロブロックレベルで処理されるべきであると決定する。
【００２２】
そうではなく、モーションコーディングモジュール２１０が、１６×１６マクロブロックはマクロブロックレベルで処理されるべきではない（すなわち、１６×１６マクロブロックは処理されるべきではない）と決定する場合、モーションコーディングモジュール２１０は、ミディアムブロックが処理されるべきであるとさらに決定することができる。モーションコーディングモジュール２１０は、１６×１６マクロブロックを４つの８×８ミディアムブロックに分割し、各８×８ミディアムブロックについて、８×８ミディアムブロック単位、および４つの４×４マイクロブロック（すなわち、８×８マイクロブロックの４つの象限）でＭＥ動作を実行して、ミディアムブロックが処理されるべきであるかどうかを決定することができる。モーションコーディングモジュール２１０は、ミディアムブロックベースのＭＥのＳＡＤとマイクロブロックベースのＭＥのＳＡＤを比較して、それによりミディアムブロックがミディアムブロックレベルまたはマクロブロックレベルのいずれかで処理されるべきかどうかを決定する（すなわち、８×８ミディアムブロックまたは４×４マイクロブロックが処理されるべきであるかどうかを決定する）ことができる。モーションコーディングモジュール２１０が、ミディアムブロックベースのＭＥのＳＡＤはマイクロブロックベースのＭＥのＳＡＤよりも小さいと決定する場合、モーションコーディングモジュール２１０は、コーディングブロックレベルがミディアムブロックレベルにおけるものであると決定する。それ以外の場合、モーションコーディングモジュール２１０は、コーディングブロックレベルがマクロブロックレベルにおけるものであると決定する。
【００２３】
上記で決定されたコーディングブロックレベルに従って、モーションコーディングモジュール２１０は、ブロックレベルが決定された画像データのブロックのモーションコーディングのためのブロック編成を決定するように動作可能であってもよい。コーディングブロックレベルの各々は、１つまたは複数のブロック編成に関連付けられてもよく、モーションコーディングモジュール２１０は決定されたブロック編成で画像データのモーションコーディングを実行することができる。図３は、画像データの可変サイズのモーションコーディングのためのそれぞれのコーディングブロックレベルに対するブロック編成の例示的な実施形態を示す。図３ａに示されるように、（ｉ）スーパーブロックレベルは、３２×３２、３２×１６、１６×３２ブロック編成という、３つのブロック編成を含むブロック編成のグループ３０１に関連付けられ、（ｉｉ）マクロブロックレベルは、１６×１６、１６×８、８×１６ブロック編成という、３つのブロック編成を含むブロック編成のグループ３０２に関連付けられ、（ｉｉｉ）ミディアムブロックレベルは、８×８、８×４、４×８ブロック編成という、３つのブロック編成を含むブロック編成のグループ３０３に関連付けられ、（ｉｖ）マイクロブロックレベルは、４×４ブロック編成を含むブロック編成のグループ３０４に関連付けられる。このようにして、モーションコーディングモジュール２１０は、ブロックレベルの決定に従って、画像データのモーションコーディングのためのブロック編成の１つを決定することができる。たとえば、モーションコーディングモジュール２１０が、コーディングブロックレベルはスーパーブロックレベルにおけるものであると決定する場合、モーションコーディングモジュール２１０は、３２×３２スーパーブロック編成、３２×１６サブスーパーブロック編成、および１６×３２サブスーパーブロック編成からブロック編成を決定することができる。
【００２４】
図３ｂは、モーションコーディングモジュール２１０により決定されたブロックレベルに従ってブロック編成がマップされるウルトラブロックの例を示す。モーションコーディングモジュール２１０は、ウルトラブロック３０５のサブブロックのブロックレベルを決定することができる。たとえば、モーションコーディングモジュール２１０は、ウルトラブロック３０５の左上象限３０６、左下象限３０７、および右下象限３０８がスーパーブロックレベルにおけるものであり、右上象限３０９がスーパーブロックレベルよりも下のブロックレベルにおけるものであると決定することができる。示されているように、コーディングブロックレベルのそのような決定に基づいて、モーションコーディングモジュール２１０は、スーパーブロックレベル３０１（図３ａ）に含まれるブロック編成から左上象限３０６の３２×３２ブロック編成を決定する。ウルトラブロック３０５の左下象限３０７について、モーションコーディングモジュール２１０は、２つの１６×３２ブロック編成を決定する。ウルトラブロック３０５の右下象限３０８について、モーションコーディングモジュール２１０は、２つの３２×１６ブロック編成を決定する。ウルトラブロック３０５の右上象限３０９について、モーションコーディングモジュール２１０は、ブロックレベル決定の前述のプロセスを通じてブロック編成を決定する。たとえば、モーションコーディングモジュール２１０は、スーパーブロック（すなわち、右上象限３０９）の左上象限、左下象限、および右下象限がマクロブロックレベルにおけるものであり、右上象限がマクロブロックレベルよりも下のブロックレベルにおけるものであると決定することができる。前述のブロックレベルおよびブロック編成がほんの一例に過ぎず、その他のブロックレベルおよびブロック編成が設計要件に応じて使用されてもよいことを理解されたい。
【００２５】
モーションコーディングモジュール２１０は、上記で決定されたコーディングブロックレベルおよびブロック編成に基づいて画像データにモーションの推定および補正を行うさまざまなよく知られたモーションコーディングアルゴリズムのいずれかを使用することができる。たとえば、モーションコーディングモジュール２１０は、ＭＰＥＧ２、ＭＰＥＧ４、Ｈ．２６３、Ｈ．２６４などのようなビデオ関連の規格で規定されたモーション推定（ＭＥ）およびモーション補正（ＭＣ）アルゴリズムを実行するために上記で決定されたブロック編成を適用することができる。このようにして、モーションコーディングモジュール２１０は、モーション補正済み画像データを生成するように（たとえば、残余画像データを生成するように）、および図２に示されるようにモーションベクトル、コーディングブロックレベル、ブロック編成などのようなモーション情報を出力するように動作可能であってもよい。
【００２６】
１つの実施形態において、テクスチャコーディングモジュール２２０は、モーションコーディングモジュール２１０からモーション補正済み画像データおよびモーション情報を受信し、モーションコーディングモジュール２０１により決定されるコーディングブロックレベルおよびブロック編成に従って画像データのテクスチャコーディング（たとえば、ＤＣＴ）のためのブロックサイズ（たとえば、ＤＣＴブロックサイズ）を決定することができる。図４ａは、画像データの可変ブロックサイズのテクスチャコーディングのためのコーディングブロックサイズの例示的な実施形態を示す。ブロックレベルおよびブロック編成に応じて、テクスチャコーディングモジュール２２０は、画像データの可変サイズのテクスチャコーディングのためのコーディングブロックサイズ（たとえば、３２×３２、１６×１６、８×８、および４×４のＤＣＴブロック）の１つを選択することができる。
【００２７】
図５は、図３のコーディングブロック編成と図４ａのコーディングブロックサイズとの関係の例を示す。示されているように、（ｉ）モーションコーディングモジュール２１０が、ブロックレベルは５０２によって指示されるようにスーパーブロックレベルであると決定する場合、テクスチャコーディングモジュール２２０は、テクスチャコーディング（たとえば、ＤＣＴ変換）に３２×３２ブロックサイズ（たとえば、ＤＣＴブロックサイズ）または１６×１６ブロックサイズを選択することができ、（ｉｉ）モーションコーディングモジュール２１０が、ブロックレベルは５０４によって指示されるようにマクロブロックレベルであると決定する場合、テクスチャコーディングモジュール２２０は、１６×１６ブロックサイズまたは８×８ブロックサイズを選択することができ、（ｉｉｉ）モーションコーディングモジュール２１０が、ブロックレベルは５０６によって指示されるようにミディアムまたはマイクロブロックレベルであると決定する場合、テクスチャコーディングモジュール２２０は、８×８ブロックサイズまたは４×４ブロックサイズを選択することができる。
【００２８】
テクスチャコーディングモジュール２２０は、コーディング編成をさらに参照して、コーディングブロックサイズを決定することができる。ブロックレベルがスーパーブロックレベルであるとき、モーションコーディングモジュール２１０がブロック編成は３２×３２スーパーブロックであると決定する場合、テクスチャコーディングモジュール２２０は、モーションコーディングモジュール２１０により決定される３２×３２スーパーブロックの画像データのテクスチャコーディング（たとえば、ＤＣＴ）に３２×３２および１６×１６のブロックサイズのうちの１つを決定する。そうではなく、モーションコーディングモジュール２１０が、ブロック編成は３２×１６または１６×３２サブスーパーブロックであると決定する場合、テクスチャコーディングモジュール２２０は、テクスチャコーディングに１６×１６ブロックサイズを決定する。ブロックレベルの各々についてブロックサイズを決定するために、上記のコーディング編成が参照されてもよいことを理解されたい。
【００２９】
図４ｂは、図５に示されるようなブロック編成とブロックサイズの関係を図３ｂのブロック編成に適用することにより、ウルトラブロック（たとえば、図３ｂのウルトラブロック３０５）にマップされたブロックサイズの例を示す。図４ｂに示されるように、図３ｂのウルトラブロック３０５の左上象限３０６（３２×３２ブロック編成）について、３２×３２ブロックサイズは、３２×３２ブロックサイズおよび１６×１６ブロックサイズの候補ブロックサイズから決定される。ウルトラブロック３０５の左下および右下の象限３０７および３０８（それぞれ、１６×３２ブロック編成および３２×１６ブロック編成）について、１６×１６ブロックサイズが決定される。右上象限３０９について、ブロックサイズは、１６×１６、１６×８、８×１６、８×８、８×４、４×８、４×４ブロック編成の各々に従ってマップされる。
【００３０】
テクスチャコーディングモジュール２２０が、上記で決定されたブロックサイズを使用して、画像データ（たとえば、基準フレーム内のモーション補正済み画像データとターゲットフレーム内の画像データとの差に対応する残余画像データ）を圧縮するためにさまざまなよく知られたテクスチャコーディングアルゴリズムのいずれかを使用することができることを理解されたい。たとえば、テクスチャコーディングモジュール２２０は、ＭＰＥＧ２、ＭＰＥＧ４、Ｈ．２６３、Ｈ．２６４などのようなビデオ関連の規格で規定されたテクスチャコーディングアルゴリズムに上記で決定されたブロックサイズを適用することができる。
【００３１】
図１、図２、図６、図７、図８、および図９を参照すると、コーディング構造を決定するための方法の例示的な実施形態が説明される。図６は、コーディング構造を決定するための方法の例示的な実施形態を示す例示の流れ図である。エンコーダ１４０は、入力モジュール１１０を通じて画像データを受信することができる（ブロック６２０）。エンコーダ１４０は、たとえば画像取り込みデバイスを使用して取り込まれた、ビデオの画像フレーム（複数可）から形成または生成されたデジタル画像データをメモリ１３０から取り出すことができる。エンコーダ１４０のモーションコーディングモジュール２１０は、デジタル画像データ（たとえば、ピクセル値）を１つまたは複数の基本画像処理単位に分割することができるが、これはグループとして処理されるべき画像データのブロックである。たとえば、モーションコーディングモジュール２１０は、デジタル画像データを、６４ピクセル×６４ラインのサイズを有するウルトラブロック単位に分割することができる。モーションコーディングモジュール２１０は、各基本画像処理単位をサブブロック（たとえば、３２×３２スーパーブロック）にさらに分割することができる。
【００３２】
モーションコーディングモジュール２１０は、各サブブロックを処理するためのコーディングブロックレベルを決定するために第１のブロックレベル決定を実行することができる（ブロック６４０）。モーションコーディングモジュール２１０は、基本画像処理単位（たとえば、６４×６４ウルトラブロック）の各サブブロック（たとえば、６４×６４ウルトラブロックの象限である３２×３２スーパーブロック）が第１のブロックレベル（たとえば、スーパーブロックレベル）で処理されるべきかどうかを決定することができる。１つの実施形態において、各３２×３２スーパーブロックについて、モーションコーディングモジュール２１０は、スーパーブロックベースのＭＥの１つまたは複数のメトリック（たとえば、ＳＡＤ、ＭＡＤ、ＭＳＥ）を生成するために、第１の単位（たとえば３２×３２スーパーブロック単位）でＭＥ動作を実行することができる。モーションコーディングモジュール２１０は、マクロブロックベースのＭＥのメトリックを生成するために、第２の単位（たとえば４つの１６×１６マクロブロックの単位）でＭＥ動作を実行することができる。モーションコーディングモジュール２１０は、スーパーブロックベースのＭＥのメトリックを、マクロブロックベースのＭＥの対応するメトリックと比較することができる。モーションコーディングモジュール２１０が、スーパーブロックベースのＭＥのメトリック（たとえば、ＳＡＤ）がマクロブロックベースのＭＥのメトリックよりも小さいと決定する場合、モーションコーディングモジュール２１０は、スーパーブロックがスーパーブロックレベルで処理されるべきであると決定する。モーションコーディングモジュール２１０が、スーパーブロックはスーパーブロックレベルで処理されるべきであると決定する場合、モーションコーディングモジュール２１０は、ブロック６４２に進み、決定されたコーディングブロックレベルに従ってサブブロックの各々の画像データのモーションコーディングのためのブロック編成を決定する。モーションコーディングモジュール２１０は、図３ａに示されるように、第１のブロックレベル（スーパーブロックレベル）に含まれるブロック編成（たとえば、３２×３２、３２×１６、１６×３２ブロック編成）のうちの１つを選択することができる。テクスチャコーディングモジュール２２０は、ブロック６４２（ブロック６４４）で決定されたブロック編成に従って、サブブロックの各々の画像データのテクスチャコーディングのためのブロックサイズを決定することができる。テクスチャコーディングモジュール２２０は、図５に示されるブロック編成とブロックサイズとの関係を参照して、テクスチャコーディング（たとえば、ＤＣＴ変換）のために３２×３２ブロックサイズまたは１６×１６ブロックサイズを選択することができる。
【００３３】
モーションコーディングモジュール２１０が、ブロック６４０においてスーパーブロックがスーパーブロックレベルで処理されるべきではないと決定する場合（たとえば、マクロブロックベースのＭＥのＳＡＤがスーパーブロックベースのＭＥのＳＡＤよりも大きい場合）、モーションコーディングモジュール２１０は、ブロック６６０に進み、画像データのコーディングブロックレベルが第２のブロックレベル（たとえば、マクロブロックレベル）であるかどうかを決定するために第２のブロックレベル決定を実行する。モーションコーディングモジュール２１０が、コーディングブロックレベルはマクロブロックレベルであると決定する場合、モーションコーディングモジュール２１０は、ブロック６６２に進み、決定されたコーディングブロックレベルに従って画像データのモーションコーディングのためにブロック編成を決定する。モーションコーディングモジュール２１０は、図３ａに示されるように、第２のブロックレベル（マクロブロックレベル）に含まれるブロック編成（１６×１６、１６×８、および６×１６ブロック編成）のうちの１つを選択することができる。テクスチャコーディングモジュール２２０は、ブロック６６２（ブロック６６４）で決定されたブロック編成に従って、画像データのテクスチャコーディングのためにブロックサイズを決定することができる。テクスチャコーディングモジュール２２０は、図５に示される関係を参照して、テクスチャコーディングのために１６×１６ブロックサイズまたは８×８ブロックサイズを選択することができる。
【００３４】
モーションコーディングモジュール２１０が、ブロック６６０においてマクロブロックがマクロブロックレベルで処理されるべきではないと決定する場合、モーションコーディングモジュール２１０は、ブロック６８０に進み、画像データのコーディングブロックレベルが第３のブロックレベル（たとえば、ミディアムブロックレベル）であるかどうかを決定するために第３のブロックレベル決定を実行する。モーションコーディングモジュール２１０が、コーディングブロックレベルはミディアムブロックレベルであると決定する場合、モーションコーディングモジュール２１０は、ブロック６８２に進み、コーディングブロックレベルに従って画像データのモーションコーディングのためにブロック編成を決定する。モーションコーディングモジュール２１０は、図３ａに示されるように、第１のブロックレベル（スーパーブロックレベル）に含まれるブロック編成（１６×１６、１６×８、および８×１６ブロック編成）のうちの１つを選択することができる。テクスチャコーディングモジュール２２０は、ブロック６８２（ブロック６８４）で決定されたブロック編成に従って、画像データのテクスチャコーディングのためにブロックサイズを決定することができる。テクスチャコーディングモジュール２２０は、図５に示される関係を参照して、テクスチャコーディングのために８×８ブロックサイズまたは４×４ブロックサイズを選択することができる。モーションコーディングモジュール２１０が、ブロック６８０においてコーディングブロックレベルはミディアムブロックレベルではないと決定する場合、モーションコーディングモジュール２１０は、ブロック６８６に進み、モーションコーディングのために４×４ブロック編成を選択し、テクスチャコーディングモジュール２２０は、テクスチャコーディングのために４×４ブロックサイズを選択することができる。
【００３５】
このようにして、モーションコーディングモジュール２１０は、（ｉ）スーパーブロックレベル、マクロブロックレベル、およびミディアムブロックレベルの中からコーディングブロックレベル、（ｉｉ）画像データのモーションコーディングのためのブロック編成、および（ｉｉｉ）画像データのテクスチャコーディングのためのブロックサイズ、を決定することができる。モーションコーディングモジュール２１０は、決定されたブロック編成の画像データでＭＥ動作を実行し、それによりモーションベクトルのようなモーション情報を出力することができる。テクスチャコーディングモジュール２２０は、決定されたブロックサイズに従ってテクスチャコーディングを実行して、コード化ビットストリームを生成することができる。前述のコーディングブロックレベル、ブロック編成、およびブロックサイズが、コーディング構造の形成の一例に過ぎず、限定的であることを意図されないことを理解されたい。上記のコーディング構造形成の方法は３つのコーディングレベルを使用して説明されるが、さまざまなコーディングレベルが、コーディング形式および構造の実施形態／適応要件に応じて検討されてもよいことを理解されたい。さまざまなコーディング編成およびコーディングブロックサイズが、異なるコーディングレベルに対して考慮されてもよい。当技術分野においてよく知られた任意のさまざまなＭＥ技法が、ブロックレベルの決定を行うために使用されてもよいことを理解されたい。また、本開示に従って準備されるエンコーダは、さまざまな用途に使用されてもよいことも理解されたい。
【００３６】
図７は、図６の第１のブロックレベル決定のための操作の例示的な実施形態を示す詳細な流れ図である。６４×６４ウルトラブロックの各象限について、モーションコーディングモジュール２１０は、３２×３２スーパーブロック単位、および４つの１６×１６マクロブロックの単位でＭＥ動作を実行して、６４×６４ウルトラブロックの象限（３２×３２スーパーブロック）がスーパーブロックレベルで処理されるべきかどうかを決定することができる（ブロック７１０）。モーションコーディングモジュール２１０は、スーパーブロックベースのＭＥのメトリック（たとえば、ＳＡＤ、ＭＡＤ、ＭＳＥ）のうちの１つと、マクロブロックベースのＭＥの対応するメトリックの１つとを比較して、それによりコーディングブロックレベルがスーパーブロックレベルにおけるものかどうかを決定することができる（ブロック７２０）。モーションコーディングモジュール２１０が、スーパーブロックベースのＭＥのＳＡＤはマクロブロックベースのＭＥのＳＡＤよりも小さいと決定する場合、モーションコーディングモジュール２１０は、３２×３２スーパーブロックがスーパーブロックレベルで処理されるべきであると決定して、ブロック７４０に進む。それ以外の場合、モーションコーディングモジュール２１０は、図８のブロック８１０に進み、図６の第２のブロックレベル決定を実行する（ブロック７３０）。
【００３７】
モーションコーディングモジュール２１０は、２つの３２×１６サブスーパーブロックを含む単位、および２つの１６×３２サブスーパーブロックを含む単位でＭＥ動作を実行して、それぞれ、３２×１６サブスーパーブロックベースのＳＡＤ、および１６×３２サブスーパーブロックベースのＳＡＤを生成することができる（ブロック７４０）。モーションコーディングモジュール２１０は、（ｉ）３２×１６サブスーパーブロックベースのＳＡＤ、および（ｉｉ）ブロック７４０で生成される１６×３２サブスーパーブロックベースのＳＡＤ、および（ｉｉｉ）ブロック７１０で生成される３２×３２サブスーパーブロックベースのＳＡＤという３つのＳＡＤの比較に基づいてモーションコーディングのためのブロック編成を決定することができる（ブロック７５０）。モーションコーディングモジュール２１０は、最小のＳＡＤを生成する３２×３２ブロック編成、３２×１６ブロック編成、または１６×３２ブロック編成を選択することができる。モーションコーディングモジュール２１０が、３２×３２スーパーブロックベースのＳＡＤは上記の３つのＳＡＤの中で最小であると決定する場合、モーションコーディングモジュール２１０は、３２×３２ブロック編成をモーションコーディングに使用されるべきブロック編成として決定することができる。それ以外の場合、モーションコーディングモジュール２１０は、２つのサブスーパーブロックベースのＳＡＤのいずれがもう一方よりも小さいかに応じて、３２×１６ブロック編成または１６×３２ブロック編成をブロック編成として選択することができる。
【００３８】
ブロック７６０において３２×３２ブロック編成がブロック編成として決定されるかどうかを確認し、ブロック編成として決定される場合、テクスチャコーディングモジュール２２０は、ブロック７７０に進み、決定された３２×３２ブロック編成に従ってテクスチャコーディングのためのブロックサイズを決定する。テクスチャコーディングモジュール２２０は、３２×３２ブロック編成が決定された３２×３２スーパーブロックの画像データに対して３２×３２テクスチャコーディングおよび１６×１６テクスチャコーディングを実行することができる。テクスチャコーディングは、ＤＣＴ変換、アダマール変換などの実行を含むことができるが、これらに限定されることはない。テクスチャコーディングモジュール２２０は、任意のさまざまなエントロピーコーディング操作を実行して、３２×３２テクスチャコーディングおよび１６×１６テクスチャコーディングの推定ビットストリームを生成することができる。１つの実施形態において、テクスチャコーディングモジュール２２０は、効率および操作速度を高めるためにシミュレートされたエントロピーコーディングを実行することができる。テクスチャコーディングモジュール２２０は、推定ビットストリームの量の比較に従って、３２×３２ブロックサイズまたは１６×１６ブロックサイズのいずれを使用するかを決定することができる（ブロック７７０）。テクスチャコーディングモジュール２２０は、３２×３２テクスチャコーディングおよび１６×１６テクスチャコーディングのビットストリームの量を比較して、それにより３２×３２ブロックサイズまたは１６×１６ブロックサイズのいずれかを選択することができる。テクスチャコーディングモジュール２２０は、たとえばＲＤ最適化（レート歪み最適化：Ｒａｔｅ  Ｄｉｓｔｏｒｔｉｏｎ  Ｏｐｔｉｍｉｚａｔｉｏｎ）およびビットストリームのシミュレートされた試行に基づいて、最小量のビットストリームを生成することができるブロックサイズを決定することができる。３２×３２テクスチャコーディングが、１６×１６テクスチャコーディングの場合よりも小さい量のビットストリームを生成する場合、テクスチャコーディングモジュール２２０は、テクスチャコーディングに３２×３２ブロックサイズを選択する。テクスチャコーディングモジュール２２０が、１６×１６ブロック編成がブロック７６０においてブロック編成として決定されると決定する場合、テクスチャコーディングモジュール２２０は、ブロック７８０に進み、実テクスチャコーディング（たとえば、ＤＣＴ変換）のブロックサイズとして１６×１６ブロックサイズを選択する。テクスチャコーディングモジュール２２０は、決定されたブロックサイズに基づいて実テクスチャコーディングを実行し、エントロピーコーディング（たとえば、ハフマンコーディング、ランレングスコーディングなど）を実行して、伝送されるべき実ビットストリームを生成することができる。当技術分野においてよく知られた任意のさまざまなテクスチャコーディング技法が、上記のテクスチャコーディングを実行するために使用されてもよいことを理解されたい。
【００３９】
図８は、図６の第２のブロックレベル決定のための操作の例示的な実施形態を示す詳細な流れ図である。前述のように、図７のブロック７２０において、モーションコーディングモジュール２１０が、３２×３２スーパーブロックについてスーパーブロックベースのＭＥのＳＡＤはマクロブロックベースのＭＥのＳＡＤよりも小さくないと決定する場合、モーションコーディングモジュール２１０は、図８のブロック８１０に進む。モーションコーディングモジュール２１０は、図７を参照して上記で説明されるスーパーブロックレベル決定と類似した方法で、スーパーブロックレベルにおいて処理されるべきではないと決定された３２×３２スーパーブロックのマクロブロックレベル決定を実行することができる（ブロック８１０）。モーションコーディングモジュール２１０は、３２×３２スーパーブロックを、４つの１６×１６マクロブロックに四等分することができる。各１６×１６マクロブロックについて、モーションコーディングモジュール２１０は、１６×１６マクロブロックの単位、および４つの８×８ミディアムブロック（すなわち、１６×１６マクロブロックの４つの象限）の単位でＭＥ動作を実行して、１６×１６マクロブロックのコーディングブロックレベルがマクロブロックレベルにおけるものであるかどうかを決定することができる。モーションコーディングモジュール２１０は、マクロブロックベースのＭＥのＳＡＤと、ミディアムブロックベースのＭＥのＳＡＤとを比較することができる（ブロック８２０）。マクロブロックベースのＭＥのＳＡＤがミディアムブロックベースのＭＥのＳＡＤよりも小さい場合、モーションコーディングモジュール２１０は、ブロック８４０に進み、２つのサブマクロブロックベースのＭＥを実行する（１６×８および８×１６）。モーションコーディングモジュール２１０は、（ｉ）１６×８サブマクロブロックベースのＳＡＤ、および（ｉｉ）ブロック８４０で生成される８×１６サブマクロブロックベースのＳＡＤ、および（ｉｉｉ）ブロック８１０で決定される１６×１６マクロブロックベースのＳＡＤという３つのＳＡＤを比較することができる（ブロック８５０）。ブロック８５０の比較結果に基づいて、モーションコーディングモジュール２１０は、モーションコーディングのためのブロック編成を決定することができる（ブロック８６０）。モーションコーディングモジュール２１０は、最小のＳＡＤを有する１６×１６ブロック編成、１６×８ブロック編成、または８×１６ブロック編成を選択することができる。テクスチャコーディングモジュール２２０が、ブロック８６０において１６×１６ブロック編成をモーションコーディングのためのブロック編成として選択する場合、テクスチャコーディングモジュール２２０は、ブロック８７０に進み、１６×１６テクスチャコーディングおよび８×８テクスチャコーディングを実行して、１６×１６テクスチャコーディングおよび８×８テクスチャコーディングの各々に対して推定ビットストリームを生成する。テクスチャコーディングモジュール２２０は、図７のブロック７７０を参照して上記で説明される方法と類似の方法でテクスチャコーディングに１６×１６ブロックサイズまたは８×８ブロックサイズのいずれを使用するかを決定することができる（ブロック８７０）。テクスチャコーディングモジュール２２０が、ブロック８６０において１６×８ブロック編成または８×１６ブロック編成をブロック編成として選択する場合、テクスチャコーディングモジュール２２０は、ブロック８８０に進み、テクスチャコーディング（たとえば、ＤＣＴ変換）のブロックサイズとして８×８ブロックサイズを選択する。テクスチャコーディングモジュール２２０は、決定されたブロックサイズに基づいて実テクスチャコーディングを実行し、エントロピーコーディング（たとえば、ハフマンコーディング、ランレングスコーディングなど）を実行して、伝送されるべき実ビットストリームを生成することができる。
【００４０】
１６×１６マクロブロックに対してブロック８２０においてマクロブロックベースのＭＥのＳＡＤがミディアムブロックベースのＭＥのＳＡＤよりも小さくない場合、モーションコーディングモジュール２１０は、図９のブロック９１０に進む（ブロック８３０）。モーションコーディングモジュール２１０は、図７を参照して上記で説明されるスーパーブロックレベル決定と類似した方法で、マクロブロックレベルにおいて処理されるべきではないと決定される１６×１６マクロブロックのミディアムブロックレベル決定を実行することができる（ブロック９１０）。モーションコーディングモジュール２１０は、１６×１６マクロブロックを、１つまたは複数のサブブロック（たとえば、各象限が８×８ミディアムブロックである、１６×１６マクロブロックの４つの象限）に分割することができる。モーションコーディングモジュール２１０は、８×８ミディアムブロックの単位、および４つの４×４マイクロブロックの単位でＭＥ動作を実行して、８×８ミディアムブロックがミディアムブロックレベルで処理されるべきかどうかを決定することができる。モーションコーディングモジュール２１０は、８×８ミディアムブロックベースのＭＥのＳＡＤと、４×４マイクロブロックベースのＭＥのＳＡＤとを比較することができる（ブロック９２０）。ミディアムブロックベースのＭＥのＳＡＤがマイクロブロックベースのＭＥのＳＡＤよりも小さい場合、モーションコーディングモジュール２１０は、ブロック９４０に進み、２つのサブミディアムブロックベースのＭＥを実行する（８×４および４×８）。それ以外の場合、モーションコーディングモジュール２１０は、ブロック９３０に進み、４×４ブロック編成となるようにモーション編成を選択して、４×４ブロックサイズとなるようにブロックサイズを選択する。モーションコーディングモジュール２１０は、（ｉ）８×４サブミディアムブロックベースのＳＡＤ、および（ｉｉ）ブロック９４０で生成される４×８サブミディアムブロックベースのＳＡＤ、および（ｉｉｉ）ブロック９１０で決定される８×８ミディアムブロックベースのＳＡＤという３つのＳＡＤを比較することができる（ブロック９５０）。ブロック９５０の比較結果に基づいて、モーションコーディングモジュール２１０は、モーションコーディングのためのブロック編成を決定することができる（ブロック９６０）。モーションコーディングモジュール２１０は、最小のＳＡＤを有する８×８ブロック編成、８×４ブロック編成、または４×８ブロック編成を選択することができる。テクスチャコーディングモジュール２２０が、ブロック９６０において８×８ブロック編成をモーションコーディングのためのブロック編成として選択する場合、テクスチャコーディングモジュール２２０は、ブロック９７０に進み、８×８シミュレートテクスチャコーディングおよび４×４シミュレートテクスチャコーディングを実行して、８×８テクスチャコーディングおよび４×４テクスチャコーディングの各々に対して推定ビットストリームを生成する。テクスチャコーディングモジュール２２０は、図７のブロック７７０を参照して上記で説明される方法と類似の方法でテクスチャコーディングに８×８ブロッ��サイズまたは４×４ブロックサイズのいずれを使用するかを決定することができる（ブロック９７０）。テクスチャコーディングモジュール２２０が、ブロック９６０において８×４ブロック編成または４×８ブロック編成をブロック編成として選択する場合、テクスチャコーディングモジュール２２０は、ブロック９８０に進み、テクスチャコーディング（たとえば、ＤＣＴ変換）のブロックサイズとして４×４ブロックサイズを選択する。テクスチャコーディングモジュール２２０は、決定されたブロックサイズに基づいて実テクスチャコーディングを実行し、エントロピーコーディング（たとえば、ハフマンコーディング、ランレングスコーディングなど）を実行して、伝送されるべき実ビットストリームを生成することができる。
【００４１】
当業者であれば、本明細書において開示されるさまざまなプロセスおよび方法について、プロセスおよび方法で実行される機能が、異なる順序で実施されもよいことを理解するであろう。さらに、概説されるステップおよび操作は、例として提示されているに過ぎず、ステップおよび操作の一部は、開示される実施形態の本質を逸脱することなく、オプションであるか、より少ないステップおよび操作に結合されるか、または追加のステップおよび操作に拡張されてもよい。
【００４２】
本開示は、本出願において説明される特定の実施形態に関して限定されるべきではなく、実施形態はさまざまな態様を例示することが意図されている。当業者には明らかであるように、その趣旨および範囲を逸脱することなく多くの変更および変形が行われてもよい。本明細書において列挙される方法および装置に加えて、本開示の範囲内の機能的に等価の方法および装置は、上記の説明から当業者には明らかとなるであろう。そのような変更および変形は、添付の特許請求の範囲内に含まれることが意図される。本開示は、添付の特許請求の範囲の条項、ならびにそのような特許請求の範囲が権利を有する等価物の全範囲によってのみ限定されるものとする。本開示が、当然変化しうるものである特定の方法、試薬、化合物組成、または生態系に限定されないことを理解されたい。さらに、本明細書において使用される用語は、特定の実施形態を説明することを目的としており、限定的であることを意図していないことも理解されたい。
【００４３】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００４４】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステ���を含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００４５】
加えて、本開示の特徴または態様がマーカッシュグループに関して説明される場合、それにより本開示はまた、マーカッシュグループの構成要素の任意の個々の構成要素または構成要素のサブグループに関しても説明されることを当業者は理解するであろう。
【００４６】
書面による説明を行うことに関してなど、任意およびすべての目的のため、当業者によって理解されるであろうように、本明細書において開示されるあらゆる範囲はまた、任意およびすべての可能な下位範囲およびその下位範囲の組み合わせを網羅する。任意の一覧される範囲は、同範囲が少なくとも等価の２分の１、３分の１、４分の１、５分の１、１０分の１などに分割されることを十分に説明および可能にするものと容易に理解されてもよい。非限定的な例として、本明細書において説明される各範囲は、下３分の１、中３分の１、および上３分の１に容易に分解されてもよい。当業者によって理解されるであろうように、「最大（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」などのようなすべての表現は、列挙される数を含み、引き続き上記で説明されている下位範囲に分解されてもよい範囲を示す。最後に、当業者に理解されるであろうように、範囲は個々の構成要素を含む。したがって、たとえば、１〜３個のセルを有するグループは、１個、２個、または３個のセルを有するグループを示す。同様に、１〜５個のセルを有するグループは、１個、２個、３個、４個、または５個のセルを有するグループを示し、以下同様である。
【００４７】
以上の記述から、本開示のさまざまな実施形態は本明細書において例示の目的で説明されており、本開示の範囲および趣旨を逸脱することなくさまざまな変更が行われてもよいことが理解されよう。したがって、本明細書において開示されるさまざまな実施形態は、限定的であることを意図されておらず、真の範囲および趣旨は後段の特許請求の範囲により示される。
【図１】
0005578743.tif 000002
【図２】
0005578743.tif 000003
【図３ａ】
0005578743.tif 000004
【図３ｂ】
0005578743.tif 000005
【図４】
0005578743.tif 000006
【図５】
0005578743.tif 000007
【図６】
0005578743.tif 000008
【図７】
0005578743.tif 000009
【図８】
0005578743.tif 000010
【図９】
0005578743.tif 000011