(57)【要約】【課題】ビデオ・マクロブロックの時空解析。【解決手段】動き推定およびレート歪み効率の計算を実行する対象となるモード数を減らすためにマクロブロックの時間特性および／または空間特性を分析する。一つの実施例において、マクロブロックの平均特性および分散特性を分析してマクロブロック内でサブブロックをマージさせる。こうしたマージ後のサブブロックを用いてマクロブロックのインタモード並びにイントラモードを識別することができる。【選択図】図２
2007174648.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ・マクロブロックを符号化するためのインターモードを選択する方法であって、この方法は、
マクロブロックの空間的分散を分析するステップと、
マクロブロックの空間的分散に基づいて第１のインターモード部分集合を識別するステップと、
マクロブロックの周囲の時間的分散を分析するステップと、
マクロブロックの周囲の時間的分散に基づいて第２のインターモード部分集合を識別するステップと、
第１および第２の部分集合間の関係に従って第３のインターモード部分集合を定義するステップと、
マクロブロックを符号化するインターモードを第３インターモード部分集合から選択するステップを含む。
【請求項２】
前記空間的分散を分析するステップは、
マクロブロックと対応付けられたSKIPモードのレート歪みコストを計算するステップと、
SKIPモードのレート歪みコストをしきい値と比較するステップを含み、
前記しきい値に対するSKIPモードレート歪みコストの比較結果に基づいて前記第１部分集合が識別される、請求項１に記載の方法。
【請求項３】
前記SKIPモードのレート歪みコストがしきい値よりも低い場合には、前記第１部分集合は１６x１６モード、１６x８モード、８x１６モード、８x８モードを含む、請求項２に記載の方法。
【請求項４】
前記SKIPモードのレート歪みコストがしきい値よりも高い場合には、前記第１部分集合は８x８モード、８x４モード、４x８モード、４x４モードを含む、請求項２に記載の方法。
【請求項５】
前記時間的分散を分析するステップは、
マクロブロックに連結している少なくとも２つのブロックを符号化する複数のモードを識別するステップと、
複数のモードの平均を取るステップと、
複数のモードの平均値をしきい値と比較するステップを含み、
前記しきい値に対する複数のモードの平均値の比較結果に基づいて前記第２部分集合が識別される、請求項１に記載の方法。
【請求項６】
前記比較結果が大型ブロックモードを示唆していれば、前記第２部分集合は１６x１６モード、８x１６モード、１６x８モード、８x８モードを含む、請求項５に記載の方法。
【請求項７】
前記比較結果が小型ブロックモードを示唆していれば、前記第２部分集合は８x８モード、８x４モード、４x８モード、４x４モードを含む、請求項５に記載の方法。
【請求項８】
前記第３インターモード部分集合は前記第２インターモード部分集合に対する前記第１インターモード部分集合のオーバーラップを識別することによって定義される、請求項１に記載の方法。
【請求項９】
前記第３インターモード部分集合は前記第１インターモード部分集合と前記第２インターモード部分集合の両方に共通するモードを含む、請求項８に記載の方法。
【請求項１０】
請求項１に記載の方法を実行するための命令を有するコンピュータ可読媒体。
【請求項１１】
ビデオ・マクロブロックを符号化するためのエンコーダであって、
マクロブロックを受け取るようにつながれた、マクロブロックの周囲の時間的分散を分析し、その分析結果に基づいて第１のインターモード部分集合を定義する、マクロブロック時間モード予測器と、
マクロブロックを受け取るようにつながれた、マクロブロック内の空間的分散を分析し、その分析結果に基づいて第２のインターモード部分集合を定義する、マクロブロック空間モード予測器と、
第１および第２のインターモード部分集合を受け取るようにつながれた、第１および第２のインターモード部分集合に基づいて第３のインターモード部分集合を定義する、モード予測器と、
第３のインターモード部分集合を受け取るようにつながれた、マクロブロックを符号化するためのインターモードを第３のインターモード部分集合から選択する、インターモード・セレクタとを含む、エンコーダ。
【請求項１２】
前記空間モード予測器はマクロブロックのSKIPモードレート歪みコスト計算を実行して空間的分散を分析する、請求項１１に記載のエンコーダ。
【請求項１３】
前記時間モード予測器はマクロブロックに連結している少なくとも２つのブロックを符号化する複数のモードを識別して時間的分散を分析する、請求項１１に記載のエンコーダ。
【請求項１４】
前記第３のインターモード部分集合は前記第１および前記第２のインターモード部分集合の共通モードを識別することによって定義される、請求項１１に記載のエンコーダ。
【請求項１５】
ビデオ・マクロブロックのための符号化モードを前処理および選択するための方法であって、この方法は、
マクロブロックを複数のサブブロックにセグメント化するステップと、
複数のサブブロック内で各サブブロック毎に計算された平均値および分散値に従って、複数のサブブロック内で少なくとも２つのサブブロックをマージするステップと、
マージ後のサブブロックに対応するインターモードを選択するステップをを含む。
【請求項１６】
前記マージ後のサブブロックに基づいて前記マクロブロックの１６x１６ルーマコーディング・ブロックを識別するステップと、
接触しているブロック内のエッジのサブブロックに対してマクロブロック内のエッジのサブブロックを分析して、マクロブロック内のエッジのサブブロックおよび接触しているブロック内のエッジのサブブロック間の類似性を判定するステップと、
エッジのサブブロックの分析結果に基づいてルーマ符号化モードを選択するステップとをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記マージ後のサブブロックに基づいて前記マクロブロックの４x４ルーマコーディング・ブロックを識別するステップと、
マクロブロック内の少なくとも一つの接触しているコーディング・ブロックに対して各４x４ルーマコーディング・ブロックを分析して、少なくとも一つの接触している４x４コーディング・ブロックでの各４x４ルーマコーディング・ブロック間の類似性を判定するステップと、
４x４コーディング・ブロックの分析結果に基づいてルーマ符号化モードを選択するステップをさらに含む、請求項１５に記載の方法。
【請求項１８】
（１）第１の４x４サブブロックの平均値と第２の４x４サブブロックの平均値との差が第１しきい値よりも低く、且つ
（２）第１の４x４サブブロックの分散値と第２の４x４サブブロックの分散値との差が第２しきい値よりも低ければ、
第１の４x４サブブロックを第２の４x４サブブロックとマージさせる、請求項１５に記載の方法。
【請求項１９】
符号化モードはH.264規格によって定義される、請求項１５に記載の方法。
【請求項２０】
請求項１５に記載の方法を実行するための命令を有するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には通信リンクで送信するデータの符号化に関し、より具体的には符号化に先立つビデオ・マクロブロックの時空解析に関するものである。
【背景技術】
【０００２】
ボイスやビデオなど、ネットワークにかかる高バンド幅アプリケーションの負担は増え続けている。こうしたバンド幅集約型アプリケーションを使い易くために、こうしたアプリケーションをネットワークでもっと効果的にクライアントに通信できるように圧縮テクノロジーおよび規格が進展している。ビデオ信号の符号化や復号化に関するそうした規格の一つがMPEG-4/AVC（Advanced Video Coding Standard）と呼ばれるMPEG-4の最新のコーディング規格で、これは一般にH.264という国際電気通信連合（International Telecommunication Union）の規格名で呼ばれている。コーディング効率を高めるために、MPEG-4/AVCはビデオ・マクロブロックを符号化するための可変ブロックサイズ動き補償予測のツールを提供する。
【０００３】
この規格はデータを符号化する方法を概して向上させるけれども、エンコーダ自体の処理リソースに有意な負担をかけることもある。ビデオデータの送受信にはタイムセンシティブな性質があるために、エンコーダはビデオフレームのしかるべき符号化方法を選び、そのビデオフレームを符号化してネットワークで送信する時間が限られる。エンコーダがビデオ信号を符号化して送信するのに必要となることのある符号化の計算を全て所要時間内に完了できないと、ビデオ信号の品質が危うくなることがある。
【０００４】
図１は、符号化されたビデオ信号を通信できる典型的な通信リンク１２０を示す図である。図に示すように、ビデオカメラ１１０がビデオ信号を生成し、それはエンコーダ１１５に送られる。このエンコーダ１１５は通信リンク１２０に接続されたコンピュータまたはサーバ上にあるソフトウェアで構わない。エンコーダ１１５はビデオフレームを受け取り、ビデオフレームは符号化のために普通はマクロブロックに分割される。こうしたマクロブロックにおけるコンテントいかんによっては、符号化プロセスの精度を高めるためにさらに小さなブロックに分割されることがある。
【０００５】
こうしたマクロブロックの各々、および一つのマクロブロック内のサブブロックは、同じビデオフレーム内にあるもう一つのブロックに対して、あるいはビデオ信号内のこれより前のまたはこれより後の基準フレームにおける一つのブロックに対して、符号化されることがある。この符号化は通信リンク１２０で送信されるデータの冗長量を減らすことにある。
【０００６】
マクロブロックを符号化できるモードには、普通、インターモードとイントラモードという２つのタイプのモードがある。イントラモードとは、同じビデオフレーム内のブロックに対して符号化が発生することである。インターモードとは、現行のビデオフレーム以外の一つ以上の基準フレームに対して符号化が発生することである。マクロブロックは符号化された後、通信リンク１２０を介して受信側デコーダ１２５に送信される。デコーダ１２５は、表示デバイス１３０上に表示できるようにビデオ信号内のマクロブロックを再構築する。
【０００７】
【特許文献１】米国特許出願公開2005/0025236号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
先に述べたように、インターモード符号化を行うとき、マクロブロック（例えば、あるビデオフレーム内の１６x１６の一ブロック）は別の基準フレームのマクロブロックに対して符号化される。エンコーダはある特定のマクロブロックを符号化するのに数ある異なったモードから選択することができる。
【０００９】
しかるべき符号化モードの解析および最終的な選択のための処理および時間的要件がエンコーダに有意な負担をかけることがある。 可変ブロックサイズ動き補償予測を行うH.264など現在の規格はしかるべき符号化モードを選択するプロセスをさらに込み入ったものにすることがある。
【課題を解決するための手段】
【００１０】
本発明はビデオ・マクロブロックを符号化するためのインターモードを選択するときの処理要件を軽減する可能性をもっている。一つの実施例において、動き推定を含み、単一のモードを選択するにあたり実行されるさらなる解析の対象となるモード数を初期に減らすために、マクロブロックの時空間的分散値（spatial and temporal variances）が分析される。
【００１１】
空間的分散は、（0,0）の動きベクトルに対してマクロブロック内の空間的歪み量を量子化するマクロブロックSKIPモードのレート歪み（RD）コストを行うことを含む様々なテクニックおよび方法を用いて分析することができる。この空間的歪みはマクロブロックを符号化するのに必要となる複雑性を示していることがある。従って、空間的歪みのレベルに基づいて、しかるべきインターモードの選択時に、特定のモードは解析されないでフィルタされることがある。
【００１２】
時間的分散は、前のフレームで隣接した（接触している場合を含む）マクロブロックのインターモードを解析することを含む様々なテクニックおよび方法を用いて分析することができる。この時間的歪みは解析されるべき特定のインターモードを示していることがある。これはなぜならば、モードは概して連結された（collocated）マクロブロック間で大きく変化しないからである。従って、前のフレーム内の隣接するブロックに対して用いた選択されたインターモードの解析は、解析すべきインターモードの部分集合を示していることが多い。
【００１３】
発明の一つの実施例において、動き推定およびRD効率の計算を行う対象となるインターモード数を減らすために時空間的分散分析が比較される。例えば、両分析がある特定のインターモード部分集合を解析すべきであると示していれば、その部分集合以外のインターモードはもう考慮に入れない。しかし、インターモード部分集合に関して解析が異なっていれば、もっと徹底したインターモードの解析が行われる。インターモード部分集合はインターモードのどんな分類を含んでいても構わない。さらに、当業者ならば、マクロブロックの時空属性は異なったテクニックおよび方法を用いて様々な異なったモードの部分集合と対応付けることができることを認識するだろう。
【００１４】
発明のもう一つの実施例においては、マクロブロック内だけでなくそのマクロブロックに接触している他のブロックに対してサブブロックの平均値および分散値を分析するのにフレーム・プリプロセッサを用いる。この分析により、符号化するためのモードを一つ選択する前に解析するイントラモードおよびインターモードの数を減らすことができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を図面に基づいて説明する。
【実施例１】
【００１６】
動き推定を行う対象となるインターモード数を減らし、ビデオ・マクロブロックを符号化するためのシステム、装置ならびに方法を説明する。発明の一つの実施例において、符号化モードの解析に先立ってマクロブロックの空間および／または時間的歪みの解析が行われる。空間的歪みはマクロブロックの均質性を表しており、マクロブロックと（0,0）の動きベクトルを有する基準ブロックとの間の歪みの量に関係している。時間的歪みはマクロブロックのその隣接ブロックに対する連続性を表しており、とりわけマクロブロックとその隣接ブロックとの間の時間的分散の量に関係している。こうした２つの解析結果に基づいて、マクロブロックを符号化する複雑性を推測することができ、後続の動き推定を行う対象となるインターモードの部分集合を定義することができる。この部分集合から、インターモードを選択して最終的にマクロブロックを符号化するのに用いることができる。
【００１７】
下記の明細書においては、説明のために、発明を提供するために具体的な詳細を述べている。しかし、当業者ならば、こうした詳細を知らなくても発明を実施できることは明白であろう。当業者ならば、以下に一部を説明した本発明の実施例は、パーソナルコンピュータおよびネットワーク・サーバなど異なった数多くのデバイスの中に組み入れることができることを認識するだろう。本発明の実施例はソフトウェア、ハードウェア、またはファームウェアとしても実施できる。以下にブロック図に表示した構造およびデバイスは発明の模式的な実施例を示すもので、発明を曖昧にしないようにするためのものである。さらに、図の中のコンポーネントおよび／またはモジュール間の接続は直接接続に限定しようとしているものではない。むしろ、こうしたコンポーネントおよびモジュール間のデータは中間コンポーネントおよびモジュールによって修正、リフォーマット、あるいはその他のやり方で変更が可能である。
【００１８】
明細書で「一つの実施例」または「実施例」と称しているのは、その実施例に関して説明したある特定の特徴、構造、特性、または機能が発明の少なくとも一つの実施例の中に含まれていることを意味する。明細書のいろいろな個所に「一つの実施例において」という表現が出てくるが、これは必ずしも全て同じ実施例を指しているとは限らない。
【００１９】
A.概要
本発明は、インターモードを一つだけ識別してマクロブロックを符号化するために用いるインターモードの数を減らすことができる。発明の一つの実施例においては、マクロブロックの空間および／または時間特性の分析が行われる。この分析結果に基づいて、インターモードの部分集合が識別される。マクロブロックを符号化するのに使用できるインターモードを一つだけ識別するためにこの部分集合に対して動き推定およびRD効率の計算が行われる。
【００２０】
ある特定のインターモードの選択はモードのRD効率に有意に左右されることがある。選択したモードいかんによっては、マクロブロックを様々なサブブロックに分割することができる。普通は、符号化プロセスの計算の複雑性および所要計算数はマクロブロックを分割したサブブロック数に比例して増加する。従って、マクロブロックをサブブロックに分割した場合のサブブロック数が増えると、マクロブロックを符号化するモードの複雑性が増し、多量の歪みを有効に補償する能力が増す。
【００２１】
上述のごとく、しかるべきモードを選択する際に使用できる一つの因子はモード毎に計算されるRDコストである。各モードのRDコストの分析によって、ある特定のブロックのしかるべき予測モードの選択が可能になる。しかし、こうしたレート歪み計算はプロセッサ集約型でビデオ信号をタイミングよく符号化するにはエンコーダに負担がかかる。レート歪みコスト関数Jは次のように定義される。
J(s, c, m | QP, λm) = SSD (s, c, m | QP) + λm * R(s, c, m | QP)
【００２２】
ここで、QPはマクロブロック量子化パラメータ、λmはモード決定のためのラグランジュの乗数、SSDはオリジナルブロックと再構築されたブロックとの間の二乗差の和で、sはオリジナルブロック、cは再構築されたブロック、mはモードで、そしてRはモードと対応付けられたビット数を表す。
【００２３】
レート歪み計算の複雑性および計算を行う回数はマクロブロックの予測モードを識別するのに要する時間およびリソースに直接に影響を及ぼす。エンコーダいかんによっては、またエンコーダが動作するシステムによっては、こうした計算がエンコーダをオーバーロードし、そのために符号化システムの性能の劣化になることがある。
【００２４】
本発明は、可能性のあるインターモードをマクロブロックの空間および時間特性に基づいてインターモードの部分集合にする（reduce）ことによって、インターモードの選択時に実行される計算の総数を減らすことができる。一つの実施例においては、マクロブロックの均質性を分析することによって空間特性の分析が行われる。別の実施例においては、前の単数または複数のフレームに入っている隣接したブロックにおけるマクロブロックの周囲のモード分散を分析することによって時間特性の分析が行われる。時間および／または空間特性の分析から考えてマクロブロックを符号化するのは複雑になりそうということであれば、しかるべきインターモードの部分集合が識別される。それに対して、マクロブロックを符号化するのは比較的に単純そうであれば、別のインターモード部分集合が識別される。
【００２５】
こうしたインターモード毎に対応する基準ブロックおよび動きベクトルを識別するべくインターモード部分集合に対して動き推定が行われる。その後、部分集合内のモード毎にRDコスト計算を行うなどして、モード毎にRD効率が計算される。インターモードRD効率に基づいて、好ましいインターモードが選択される。
【００２６】
B.エンコーダ
図２に、発明の一つの実施例による、モードセレクタ２５０を含んだエンコーダ２００を示す。ビデオ信号２０５内のフレームは直接コサイン変換（‘DCT’）を用いて変換モジュール２１０で空間周波数係数の集合に変換される。このDCTは時間ドメイン信号から周波数ドメイン信号への変換に類似している。周波数係数は次に、スカラーを周波数係数に適用する量子化モジュール２１５によって量子化される。実際には、量子化プロセスは打ち切り信号を結果として生じる整数スケーリング因子で周波数係数を分割する。ビデオフレームを変換および量子化するこのプロセスによってデータ損失といったエラーがビデオ信号に導入される。
【００２７】
エンコーダ２００はモードセレクタ２５０も含んでおり、モードセレクタ２５０はフレームに入っている各マクロブロックを符号化する単数または複数のモードを識別する。このモードセレクタ２５０は、逆量子化および逆変換モジュール２３５、イントラフレーム予測モジュール２２０、および動き補償モジュール２２５を含んでいる。モードセレクタ２５０は、複数の動き基準フレーム２４０を格納するメモリデバイスおよび動き推定モジュール２３０とインタフェースをとるか、またはそれらを含むことができる。
【００２８】
逆量子化および逆変換モジュール２３５は、符号化処理でビデオ信号の中に導入されたエラーの量を識別できるように、以前に変換および量子化されたマクロブロックを再構築する。再構築はビデオ信号を逆量子化することによって起き、その結果としてリスケーリングされた信号を生じる。このリスケーリングされた信号は次に、逆離散コサイン変換によって逆変換されて再構築されたフレームが生じる。この再構築されたフレームは符号化プロセスで導入されたエラーを識別するべくオリジナルビデオフレーム２２５と比較される。ビデオ信号２０５内の各マクロブロックを複数の異なったインター予測モードまたはイントラ予測モードのうちの一つで符号化することができる。こうした予測モードは各々がある特定の対応付けられたエラー値を有している。
【００２９】
イントラフレーム予測モジュール２２０はマクロブロックに対して可能性のある予測イントラモードを識別する。上述のごとく、イントラモード符号化はイントラフレームの中のある特定のブロックを予測するのに同じビデオフレーム内の他のブロックを用いる。この識別されたイントラモードは、マクロブロックをインターモードを使って符号化すべきかイントラモードを使って符号化すべきか判定するべく、インターモードと比較される。先に特定した “Prediction Mode Selection in an Encoder” と題する米国特許出願に説明されているものを含む数多くの異なった方法およびデバイスを用いてイントラモードを選択できる。
【００３０】
動き推定モジュール２３０は、基準ブロックを識別するとともに基準ブロックとイントラモードで符号化する対象となるブロックとの間の空間変位を表す動きベクトルを識別する。基準ブロックは単一のビデオ基準フレーム内にあることもあるし、あるいは単数または複数の基準フレーム内の複数のブロックから生成されることもある。動きベクトルは、インター符号化の対象となっているブロックの位置に対して２次元グリッド内の基準ブロックの動きを表している。
【００３１】
動き補償モジュール２２５はインターコーディング・プロセスで使用できるそれより前のフレームの中の以前に復号化された他のブロックからマクロブロックを予測する。この予測は、インター符号化の対象となっている特定のブロックに対して動きベクトルおよび基準ブロックと対応付けられたエラーまたは歪みレベルを識別することによって行われる。このエラーは、特定のブロックを基準ブロックおよび動きベクトルデータから再構築できるように符号化され、受信側に供給される。上述のごとく、各インターモードには特定のブロックに対して対応付けられたエラー値がある。このエラー値はモードそれぞれのレート歪み性能における有意なコンポーネントであり、特定のブロックに対して単一のインター符号化モードを選択する際に重要な考慮事項となることがある。上に特定した“Motion Estimation and Inter Mode Prediction”と題する米国特許出願に説明されているものを含む数多くの異なった方法およびデバイスを用いてインターモードを選択することができる。
【００３２】
符号化モード（インターモードかイントラモードかのどちらか）を選択したら、それに従ってマクロブロックが符号化され、通信リンクに送られる。この符号化されたデータはマクロブロックを再構築および表示するのに使用される。
【００３３】
C.模式的予測インターモード（H.264規格）
図３に、発明の一つの実施例に従って使用できる模式的な予測インターモードを示す。これらのモードはH.264仕様で定義され、１６x１６のマクロブロックをサブブロックに分割できる７つの異なったインターモードを含む。１６x１６モード３１０はマクロブロックを分割せずに、マクロブロック全体を単一のブロックとして符号化する。１６x８ブロック３２０はマクロブロックを水平方向に２つの１６x８ブロックに分割し、各ブロックは個々に符号化される。８x１６モード３３０はマクロブロックを垂直方向に２つの８x１６ブロックに分割し、各ブロックは個々に符号化される。８x８モード３４０はマクロブロックを４つの８x８ブロックに分割し、各ブロックは個々に符号化される。８x４モード３５０はマクロブロックを８つの８x４ブロックに分割し、各ブロックは個々に符号化される。４x８モード３６０はマクロブロックを８つの４x８ブロックに分割し、各ブロックは個々に符号化される。４x４モード３７０はマクロブロックを１６個の４x４ブロックに分割し、各ブロックは個々に符号化される。
【００３４】
概して、複雑性のレベルおよび符号化の正確さはマクロブロックが分割および符号化されるブロックの数に比例して高くなる。従って、マクロブロックが有意な量の歪みを含んでいる（つまり、基準ブロックに対してのエラー）場合には、４x４モード３７０のような分割ブロック数の多いモードを用いてマクロブロック内の歪みをより正確に伝えることができる。しかし、４x４モードで符号化するのに必要なプロセッサリソースおよびバンド幅の所要量は上述の他のモードと比べて比較的に大きくなる。従って、マクロブロック内に歪みがほとんどない場合には、他のマクロブロックを符号化するためのリソースを保存するために、１６x１６モード３１０のようなより負担のかからないモードを用いることができる。
【００３５】
D.マクロブロックの時空解析
図４は、発明の一つの実施例による、マクロブロックの時空解析を含むインターモード選択のブロック図である。マクロブロックを符号化するのに要する相対的な複雑性を示唆できるマクロブロックの特定の特性を分析することができる。こうした特性の２つがマクロブロックの時空特性である。マクロブロックの時間特性は複数のフレームにわたっている連結（collocated）マクロブロックの一致性（consistency）を示す。マクロブロックの空間特性はマクロブロック内のコンテントの均質性を示す。
【００３６】
本発明は、動き推定を行う対象となっているインターモードの数を減らせるかどうか判定するために、マクロブロック時空特性のいずれかまたはその両方を分析する。動き推定の前にインターモード数を有意に減らすことによって符号化モードを選択する際にエンコーダが行う計算数を大きく減らすことができる。
【００３７】
一つの実施例においては、マクロブロック空間モード予測器４２０とマクロブロック時間モード予測器４３０にマクロブロックが供給される。マクロブロック空間モード予測器４２０はマクロブロックの均質性を分析し、マクロブロックの均質性は（0,0）の動きベクトルに対してのマクロブロック内での歪み量に関係している。マクロブロックの均質性を定量化できる一つのやり方はマクロブロックSKIPモードのRDコストを計算することによるものである。上述のごとく、マクロブロックの均質性はマクロブロックを符号化するのに要する複雑性のレベルを示唆していることがある。従って、マクロブロックの均質性に対応する第１のインターモード部分集合を識別し、符号化の複雑性の要件を推測することができる。当業者ならば、マクロブロックの均質性を分析するのに様々な方法を実行できることを認識するであろう。
【００３８】
マクロブロック時間モード予測器４３０は、それより前のフレームに入っている隣接した他のブロックに対してのマクロブロック内での時間的分散量を分析する。複数のフレームにわたって連結ブロックは類似した時間特性を共有している場合が多い。とりわけ、隣接したマクロブロックのロケーションにおけるモードは多くの場合複数のフレームを横切って伝搬していく傾向がある。この関係により隣接ブロックでのインターモード解析が可能になるのでマクロブロックにとって可能性のあるインターモードの部分集合を推測することができる。このように、発明の一つの実施例においては、マクロブロック時間モード予測器４３０は前の単数または複数のフレームにまたがる隣接したブロックでのインターモードを解析して第２のインターモード部分集合を識別する。当業者ならば、マクロブロックおよび隣接したブロック（マクロブロックに接触したブロックを含む）の時間特性を分析するのに様々な方法を実行できることを認識するだろう。
【００３９】
モード予測比較器４４０は、マクロブロック空間モード予測器４２０から第１のインターモード部分集合を受け取り、そしてマクロブロック時間モード予測器４３０から第２のインターモード部分集合を受け取る。モード予測比較器４４０はこれらの部分集合を分析してしかるべきインターモード部分集合がマクロブロックの時空解析から識別できるかどうか判定する。
【００４０】
発明の一つの実施例において、モード予測比較器４４０は多数の定義済み部分集合からしかるべきインターモード部分集合を一つ選択することができる。例えば、複雑性の高い符号化に関係する部分集合を４x４モード、４x８モード、８x４モード、８x８モードを含むとして定義することができる。複雑性の低い符号化に関係する部分集合を１６x１６モード、１６x８モード、８x１６モード、８x８モードを含むとして定義することができる。発明の別の実施例においては、モード予測比較器４４０は第１部分集合と第２部分集合との間でのモードのオーバーラップに対応するしかるべきモードを選択することができる。さらに、モード予測比較器４４０はしかるべきインターモード部分集合の選択の際に役立つマクロブロックの特性に関する他の情報を受け取ることができる。当業者ならば、マクロブロックの時空間的分散特性に基づいてしかるべきインターモード部分集合を判定する際に様々な方法を使用できることを認識するだろう。
【００４１】
識別されたしかるべきインターモード部分集合が比較的に単純な符号化モードに関していれば、大型ブロックインターモード・アナライザ４５０がインターモード部分集合を解析する。一つの実施例において、大型ブロックインターモード・アナライザ４５０は１６x１６モード、８x１６モード、１６x８モード、８x８モードを解析する。この解析は動き推定およびRD効率（例えば、RDコスト）の両計算を含んでいることがある。解析に基づいて、インターモードセレクタ４８０がしかるべきインターモード部分集合からマクロブロックを符号化できる好適なインターモードを一つ選択する。
【００４２】
識別されたしかるべきインターモード部分集合が比較的に複雑な符号化モードに関係していれば、小型ブロックインターモード・アナライザ４６０がインターモード部分集合を解析する。一つの実施例において、小型ブロックインターモード・アナライザ４６０は４x４モード、８x４モード、４x８モード、８x８モードを解析する。この解析は動き推定およびRD効率（例えば、RDコスト）の両計算を含んでいることがある。解析結果に基づいて、インターモード・セレクタ４８０はしかるべきインターモード部分集合からマクロブロックを符号化できる好適なインターモードを一つ選択する。
【００４３】
モード予測比較器４４０がしかるべきインターモード部分集合を識別できない場合には、インターモード・アナライザ４７０があらゆる可能性のあるインターモードを解析する。ここでも、この解析は動き推定およびRD効率（例えば、RDコスト）の両計算を含んでいることがある。解析結果に基づいて、インターモード・セレクタ４８０はマクロブロックを符号化できる好ましいインターモードを可能性のある全てのインターモードから一つ選択する。
【００４４】
上に述べた可能性のあるインターモードの分割は本発明の一つの実施例の典型例にしかすぎない。当業者ならば、部分集合を数多くの異なったやり方で定義することができ、本発明の範囲内に入る様々な異なった方法を用いて部分集合をマクロブロック空間モード予測器４２０および／またはマクロブロック時間モード予測器４３０と対応付けることができることを認識するだろう。
【００４５】
a)マクロブロック空間モード予測器
図５は、発明の一つの実施例によるマクロブロック空間モード予測器４２０を示すブロック図である。上述のごとく、マクロブロック空間モード予測器４２０は、可能なインターモード数をモードを一つだけ選択できるより少数のインターモード部分集合（一つのより小さなインターモード部分集合に？）にすることができるかどうか識別するためにマクロブロックの均質性を分析する。
【００４６】
一つの実施例において、マクロブロック均質性アナライザ５１０はマクロブロックと対応付けられたSKIPモードのRDコストを計算する。このSKIPモードは（0,0）の動きベクトルに対してマクロブロック内の均質性レベルを表す。計算されたSKIPモードのRDコストは均質性しきい値５２０と比較されてしかるべきインターモード部分集合が判定される。マクロブロックの均質性がしきい値５２０を超えていれば、それは比較的に単純な符号化モードが選択される可能性が高いことを示唆しており、その場合には大型ブロック部分集合セレクタ５３０がしかるべきインターモード部分集合を選択する。一つの実施例において、大型サブブロック・インターモード部分集合は１６x１６モード、１６x８モード、８x１６モード、８x８モードを含んでいることがある。
【００４７】
マクロブロックの均質性がしきい値５２０より低ければ、それは比較的に複雑な符号化モードを選択する可能性が高いことを示唆しており、その場合には小型サブブロック部分集合セレクタ５４０がしかるべきインターモード部分集合を選択する。一つの実施例において、小型サブブロック・インターモード部分集合は、８x８モード、８x４モード、４x８モード、４x４モードを含んでいることがある。
【００４８】
マクロブロック空間モード予測器４２０からの選択インターモード部分集合（例えば、大型サブブロック部分集合または小型サブブロック部分集合）はさらなる解析のためにモード予測比較器４４０に供給される。
【００４９】
b)マクロブロック時間モード予測器
図６は、発明の一つの実施例によるマクロブロック時間モード予測器４３０のブロック図である。上述のごとく、マクロブロック時間モード予測器４３０は、可能な数あるインターモードを一つの小型インターモード部分集合にできるかどうか識別するためにマクロブロックの周囲の時間的歪みを解析する。その部分集合からモードを一つだけ選択することができる。
【００５０】
隣接マクロブロックモードアナライザ６１０は現行フレーム（k）におけるマクロブロックとその前のフレーム（k-1）におけるマクロブロックとを受け取る。現行フレーム（k）においてマクロブロックと同居している（collocated with）ブロックのための複数のモードが識別および解析される。連結（collocated）ブロックでの小型モードは複数のフレームを横切って伝播する傾向があるから、連結モード間のこの関係を用いて、マクロブロックを符号化するのに可能性の高いインターモードの候補を含んだインターモード部分集合を識別することができる。
【００５１】
図７は、発明の一つの実施例に従って連結モードを解析できる一つの方法を表している。図示されているように、現行フレーム（k）７１０内のマクロブロック７１５には４つの連結ブロック７２０〜７２３があり、そのモードはすでに識別されている。さらに、マクロブロック７１５にはその前のフレーム（k-1）７５０において対応する（0,0）の動きベクトルブロック７６０があり、そのモードはすでに識別されている。連結マクロブロックモードアナライザ６１０は連結ブロック７２０〜７２３および前のフレーム（k-1）７５０におけるブロック７６０に対応するモードの平均表現（average representation）を生成する。
【００５２】
この平均値は様々な方法を用いて生成することができる。例えば、４x４モード、４x８モード、８x４モード、または８x８モードのどれかである連結モードには値Xが割り当てられる。８x１６モード、１６x８モード、１６x１６モード、またはSKIPモードのどれかである連結モードには値Yが割り当てられる。XおよびY間のあるいはXおよびYに等しい平均値が４つの連結ブロック７２０〜７２３および前のフレーム７５０におけるブロック７６０に対して生成される。別の例では、５つのモードについて加重および和をとって平均値を生み出すことができる。当業者ならば、連結ブロックの平均モード値を表すのに様々な方法を使用できることを認識するだろう。
【００５３】
なお、連結ブロックによっては上記の実施例におけるモード解析に含まれていないものがある。しかし、マクロブロックの周囲の平均値を識別する際にそうした連結ブロックおよび他のブロックを含めることができる。
【００５４】
マクロブロックの周囲の時間的分散に関する平均モード値が識別されたら、その平均モード値をしきい値６２０と比較してインターモードの部分集合を識別する。マクロブロックの時間的分散が大型のサブブロック・モードを解析するべきであることを示唆していれば、大型サブブロック部分集合セレクタ６３０が解析の対象となるしかるべき大型サブブロック・インターモードを含んだインターモード・サブブロックを選択する。例えば、この大型のサブブロック・モードの部分集合はSKIPモード、１６x１６モード、８x１６モード、１６x８モードを含んでいることがある。マクロブロックの時間的分散が小型のサブブロックを解析するべきであることを示唆してれば、小型のサブブロック部分集合セレクタ６４０が解析の対象となるしかるべき小型のサブブロック・インターモードを含んだインターモード部分集合を選択する。この小型のサブブロック・モードの集合は４x４モード、４x８モード、８x４モード、８x８モードを含んでいることがある。
【００５５】
当業者ならば、大型および小型のサブブロック部分集合についてはマクロブロックの時間的分散に関係する数多くの異なったパラメータに従って定義することができ、様々な組み合わせのインターモードを含むことができることを認識するだろう。
【００５６】
マクロブロック時間モード予測器４３０からの選択されたインターモード部分集合（例えば、大型サブブロック部分集合または小型サブブロック部分集合）はさらなる解析のためにモード予測比較器４４０に供給される。
【００５７】
上述のごとく、モード予測比較器４４０は、マクロブロックの動き推定計算に先立って、インターモード数を減らすのが適切かどうか判定するために、マクロブロック空間モード予測器４２０からの部分集合とマクロブロック時間モード予測器からの部分集合とを比較する。この部分集合の比較および選択の一つの実施例を以下に説明する。
【００５８】
E.インターモード部分集合を選択する方法
図８は、発明の一つの実施例による、インターモード部分集合を識別しその部分集合からインターモードを一つ選択するための、構造とは無関係の方法を示すフローチャートである。
【００５９】
マクロブロックの空間的分散の符号化要件に対応しそうなしかるべきインターモード部分集合を識別できるかどうか判定するためにマクロブロックの均質性が分析される８１０。この分析結果に従って、インターモード部分集合が識別される８３０。例えば、マクロブロックの空間的分散がマクロブロックは複雑な符号化を必要とする可能性が高いことを示唆していれば、小型のサブブロック・インターモードを過半数含んだ部分集合が識別される。しかし、マクロブロックの空間的分散がマクロブロックは比較的単純な符号化を必要とする可能性が高いことを示唆していれば、大型のサブブロック・インターモードを過半数含んだ部分集合が識別される。
【００６０】
マクロブロックとその連結ブロックとの間の時間的分散に対応するしかるべきインターモード部分集合を識別できるようにマクロブロックに連結するブロックのインターモードが解析される８２０。この解析結果に基づいて、インターモード部分集合が識別される８４０。例えば、連結ブロックの過半数が大型サブブロック・インターモードを用いて符号化されている場合には、対応する大型サブブロック部分集合が識別される。これに対して、連結ブロックの過半数が小型サブブロック・インターモードを用いて符号化されている場合には、対応する小型サブブロックが識別される。上記の連結モードに加えて、前のフレームにおけるモードを解析に含めることもできる。とりわけ、前のフレームにおける（0,0）の動きベクトルでのブロックに対応するモードをこの時間的分散の解析に用いることもできる。
【００６１】
マクロブロックの時空間的分散から識別された部分集合は、可能性のあるインターモードのインターモード部分集合へのしかるべき縮小（reduction）が妥当かどうか識別するために比較される。一つの実施例において、マッチするかどうか識別するために部分集合が比較される８５０。２つの部分集合間に一致があれば、そのマッチした部分集合内のインターモードに対して動き推定およびRD効率の計算が行われる８６０。一致がなければ、可能性のある全てのインターモードに対して動き推定およびRD効率の計算が行われる８７０。
【００６２】
動き推定およびRD効率の計算に基づいて、インターモード部分集合か可能性のある全てのインターモードかのどちらかからインターモードが選択される８８０。
【００６３】
F.平均特性および分散特性に関するマクロブロックの内部分析
図９に示すのは、発明の一つの実施例によるフレーム・プリプロセッサを有するモード予測器である。モード予測器９００はイントラ予測補償器９１０、インター予測補償器９２０、および動き推定器９３０を有し、動き推定器９３０はインターモードおよびイントラモードを解析するとともにマクロブロックのしかるべき予測モードを選択する。モード予測器９００はフレーム・プリプロセッサ９０５も有し、フレーム・プリプロセッサ９０５はマクロブロックの予測モード選択を助成するべくマクロブロックを解析するとともにマクロブロックを部分集合にセグメント化することができる。その上、フレーム・プリプロセッサ９０５は、ビデオソースが符号化される前に画像の静止領域および動領域を識別するだけでなく何らかのビデオソースのノイズ・クリーニングを実行できることによって、動き推定器９３０内でのプロセスを制御することもできる。
【００６４】
発明の一つの実施例において、プリプロセッサ９０５はマクロブロックをサブブロックにセグメント化し、これらのサブブロックを画素の平均値および分散値（pixel mean and variance values）に従ってマージする。この実施例において、各マクロブロックはオーバーラップしない４x４のサブブロックに分割され、その平均値（m）および分散値（σ2）計算が行われる。これらの計算に基づいて、４x４サブブロックはマージされてマクロブロック内に大型のサブブロックを形成することができる。
【００６５】
図１０に示すのは、この初期マクロブロックの４x４サブブロック分割およびその後のマージの例である。マクロブロック１０００は１６個の４x４サブブロック１０１０〜１０２５に分割される。行と列の両方に対して平均値および分散値計算が行われ、比較されて、類似した平均値および分散値をもつ４x４の連結サブブロックが識別される。この特定の例においては、４個の連結サブブロック１０１０、１０１１、１０１４、１０１５の平均値および分散値は十分に類似しているので一つの８x８のサブブロックにマージされる。
【００６６】
発明の一つの実施例において、４x４のルーマブロックは次の判定基準を満たす場合にはマージされる。
【００６７】
T1およびT2は平均値および分散値に関するしきい値であるとして、 |m1 - m2| < T1 で |σ12 - σ22| < T2のとき。
【００６８】
４x４のサブブロックのマージの結果、４x８ブロック、８x４ブロック、８x８ブロック、８x１６ブロック、１６x８ブロック、または１６x１６ブロックを含む多様な異なったサブブロックをマクロブロック内に生じることができる。
【００６９】
a)１６x１６ルーマ符号化
マクロブロックのセグメント化およびサブブロックのマージ結果がマクロブロックを１６x１６の一つのブロックとしてセグメント化すべきであることを示唆していれば、その４x４のサブブロックはルーマ符号化の対象と考える必要はない。フレーム・プリプロセッサ９１０はもう一つの類似性テストを行うことによってそのマクロブロックにはどの１６x１６モードが好ましいか識別することができる。この類似性テストではマクロブロックのエッジにあるサブブロックがマクロブロックとの連結ブロックにおけるエッジブロックと比較される。
【００７０】
図１１について言えば、マクロブロック１１００には４個の４x４サブブロック１１２０、１１２４〜１１２６があり、これらのサブブロックは左エッジを境としてマクロブロック１１００のすぐ左にあるブロック１１３０と接触している。４個の４x４サブブロック１１２０、１１２４〜１１２６とブロック１１３０内の接触しているブロックL1〜L2との間の類似性テストを行い、接触したブロック間の垂直方向の類似性を識別することができる。４個の４x４サブブロック１１２０〜１１２３とブロック１１４０内の接触したブロックT1〜T4との間の類似性テストを行い、接触したブロック間の水平方向の類似性を識別することもできる。
【００７１】
マクロブロック１１００と連結ブロック１１３０、１１４０との間の垂直および水平方向の類似性を分析してしかるべきルーマ符号化モードを識別することができる。例えば、次の判定基準はこの識別が発生することのある例である。
【００７２】
（１）垂直および水平方向の類似性の値が同じならば、モード３を選択、
（２）水平方向の類似性の値が垂直方向の類似性の値よりも大きければ、モード０を選択、そして
（３）水平方向の類似性の値が垂直方向の類似性の値よりも小さければ、モード１を選択。
【００７３】
モード２はデフォルトとして用いることができるし、モード２の予測エラーが上記の選択されたモードに満たなければモード０、１、３の代わりに選択することができる。
【００７４】
b)４x４ルーマ符号化
マクロブロックのセグメント化およびサブブロックのマージ結果がマクロブロックを４x４のサブブロックとしてセグメント化するべきであることを示唆していれば、１６x１６のブロックはルーマ符号化の対象と考える必要はない。４x４の各サブブロックに対して９つの予測モードがある。
【００７５】
発明の一つの実施例において、４x４の各サブブロックはその左側で接触している４x４のサブブロックおよび上方で接触している４x４のサブブロックと比較される。この比較結果に基づいて、可能性のある９つのモードから小型の予測モード部分集合が識別される。
【００７６】
この比較を実行できる一つの例は次の通り。
【００７７】
４x４のサブブロック毎に、サブブロックがその上方にあるブロックと十分に類似していれば STOP=1、さもなければ STOP=0 を定義する。
【００７８】
同様に、４x４のサブブロックがその左側で接触しているブロックに十分に類似していれば SLEFT=1、さもなければ SLEFT=0 を定義する。
【００７９】
可能性のある予測モード数を次に下記の判定基準に従って減らすことができる。
STOP=1 で且つ SLEFT=0 ならば、モード２を選択、
STOP=1 で且つ SLEFT=0 ならば、モード０、３、７を選択、
STOP=0 で且つ SLEFT=1 ならば、モード１、８を選択、
STOP=1 で且つ SLEFT=1 ならば、モード４、５、６を選択、
予測モードの部分集合をそれからさらに解析し、部分集合からモードを一つだけ選択することができる。
【００８０】
c)インターモード選択
インターモード選択の場合、初期のセグメント化および４x４ブロックのマージ結果によってしかるべきセグメント化が直接に提供され、他のモードが除去される。従って、セグメント化がインターモード符号化に関してある特定のサブブロックを示唆していれば、対応するモードに対してRD計算を実行し、その後に分析を行うことができる。例えば、４x４サブブロックの一つのモードと対応付けられたRDコストがNならば、１６x１６マクロブロックの最悪の場合はRDコストは64Nである。というのは、１６x１６マクロブロックを４つの８x８ブロックにセグメント化したときに最悪のセグメント化が発生し、そして８x８の各サブブロックは一つの８x８ブロック、２つの８x４ブロック、２つの４x８ブロック、または４つの４x４ブロックとして取り扱うことができるからである。
【産業上の利用可能性】
【００８１】
発明を特定の模式的な実施例に関して説明してきたが、当業者ならば様々な修正変更が可能なことを認識するだろう。よって、発明の範囲は下記の特許請求の範囲によってのみ限定されるものである。
【図面の簡単な説明】
【００８２】
【図１】データを符号化および復号化できる通信リンクの図。
【図２】発明の一つの実施例によるエンコーダの概略ブロック図。
【図３】発明の一つの実施例によるインターモード符号化に使用可能なモードのブロック図。
【図４】発明の一つの実施例によるマクロブロック・インターモード・セレクタを示すブロック図。
【図５】発明の一つの実施例によるマクロブロック空間モード予測器のブロック図。
【図６】発明の一つの実施例によるマクロブロック時間モード予測器のブロック図。
【図７】発明の一つの実施例によるマクロブロックの時間的分散を説明する図。
【図８】発明の一つの実施例による、マクロブロックの時空歪みに対する予測インターモード数を減らすための方法を例証するフローチャート。
【図９】発明の一つの実施例によるフレーム・プリプロセッサを有するエンコーダの図。
【図１０】発明の一つの実施例による、サブブロックをグループ化するためのマクロブロックのサブブロック平均および分散分析を説明する図。
【図１１】発明の一つの実施例による、エッジの４x４のサブブロックを含むマクロブロックとそのマクロブロックに接触している上と左のブロックを示す図。
【符号の説明】
【００８３】
110  ビデオカメラ
115  エンコーダ
120  通信リンク
125  デコーダ
130  ディスプレイ
205  ビデオ信号
210  変換
215  量子化
220  イントラフレーム予測
225  動き補償
230  動き推定
235  逆量子化および逆変換
240  動き基準フレーム
250  モードセレクタ／デコーダ
420  マクロブロック空間モード予測器
430  マクロブロック時間モード予測器
440  モード予測補償器
450  動き推定およびレート歪み（大型ブロックインターモード）
460  動き推定およびレート歪み（小型ブロックインターモード）
470  動き推定およびレート歪み（全インターモード）
480  インターモード・セレクタ
420  マクロブロック空間モード予測器
510  マクロブロック均質性アナライザ
520  均質性しきい値
530  大型サブブロック部分集合セレクタ
540  小型サブブロック部分集合セレクタ
610  隣接マクロブロック・モードアナライザ
620  隣接モードしきい値
630  大型サブブロック部分集合セレクタ
640  小型サブブロック部分集合セレクタ
750  フレーム（k-1）
710  フレーム（k）
810  マクロブロックの均質性を分析（空間予測）
820  マクロブロックに隣接するインターモードを分析（時間予測）
830  マクロブロックの均質性に基づいてインターモード部分集合を識別
840  隣接インターモードに基づいてインターモード部分集合を識別
850  識別されたインターモード部分集合はマッチするか？
860  インターモード部分集合に動き推定計算およびRD効率計算を実行
870  インターモードに動き推定計算およびRD効率計算を実行
880  動き推定計算およびRD効率計算に基づいてインターモードを選択
900  エンコーダ
905  フレーム・プリプロセッサ
910  イントラ予測および補償器
920  インター予測および補償器
930  動き推定器
【図１】
2007174648.tif 000003
【図２】
2007174648.tif 000004
【図３】
2007174648.tif 000005
【図４】
2007174648.tif 000006
【図５】
2007174648.tif 000007
【図６】
2007174648.tif 000008
【図８】
2007174648.tif 000009
【図９】
2007174648.tif 000010
【図１１】
2007174648.tif 000011
【図７】
2007174648.tif 000012
【図１０】
2007174648.tif 000013