(57)【要約】【解決手段】本開示は、ビデオ処理に関連する。これら様々なビデオ処理技術は、ビデオのフレームのための情報のブロックを生成することと、ビットバジェットからブロックの各々へビットを割り当てることと、ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数であることと、ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すこととを含む。【選択図】      図２
2008541569.tif 000002
【特許請求の範囲】
【請求項１】
ビデオシステムであって、
ビデオのフレームのための情報のブロックを生成するように構成されたビデオプロセッサと、
ビットバジェットから前記ブロックの各々へビットを割り当てるように構成されたコントローラとを備え、
前記ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数であり、前記ビデオプロセッサは更に、前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すように構成されたビデオシステム。
【請求項２】
前記ブロックの各々における情報を、動作情報に変換するように構成された動作推定器を更に備え、前記コントローラによって前記ブロックの各々に割り当てられたビットの数は、ブロックに含まれる前記動作情報の関数である請求項１に記載のビデオシステム。
【請求項３】
前記ブロックの各々における動作情報は、絶対差合計（ＳＡＤ）値を備える請求項２に記載のビデオシステム。
【請求項４】
前記コントローラは更に、割り当てられたビットに関連するブロックの各々のためのパラメータを導出するように構成され、前記ビデオプロセッサは更に、前記パラメータを用いて、前記割り当てられたビット数を用いて、ブロックの各々における情報を表示するように構成された請求項１に記載のビデオシステム。
【請求項５】
前記ビデオプロセッサは、前記ブロックの各々における情報を、差分情報に変換するように構成されたテクスチャエンジンを備え、前記ビデオプロセッサは更に、前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる差分情報を表すように構成された請求項４に記載のビデオシステム。
【請求項６】
前記テクスチャエンジンは、前記パラメータに基づいて、前記ブロック内の差分情報を量子化するように構成された量子化器を備える請求項５に記載のビデオシステム。
【請求項７】
前記コントローラは更に、ρ領域内のパラメータを導出するように構成された請求項６に記載のビデオシステム。
【請求項８】
前記コントローラは更に、前記ブロック内の情報からρ−ＱＰテーブルを生成し、前記ρ−ＱＰテーブルを用いて前記パラメータを導出することによって、前記パラメータを導出するように構成された請求項７に記載のビデオシステム。
【請求項９】
前記テクスチャエンジンに前記情報のブロックを渡して前記ρ−ＱＰテーブルを生成し、かつ、前記テクスチャエンジンに前記情報のブロックを再び渡して、前記ρ−ＱＰテーブルを用いて、個々のブロックにビットを割り当てるように構成された請求項８に記載のビデオシステム。
【請求項１０】
前記コントローラは更に、前記テクスチャエンジンに前記情報のブロックを再び渡すことをイネーブル及びディセーブルするように構成された請求項９に記載のビデオシステム。
【請求項１１】
前記コントローラは更に、前記フレームを複数のスライスに分割し、前記スライスの各々についてρを計算し、各スライスについて計算されたρに基づいて、前記ブロックの各々のパラメータを導出することによって、前記パラメータを導出するように構成された請求項７に記載のビデオシステム。
【請求項１２】
前記ビデオプロセッサは、前記ブロックの各々における情報を、動作情報に変換するように構成された動作推定器を更に備え、前記コントローラによって導出されたパラメータの各々は、各ブロックに含まれる前記動作情報である請求項７に記載のビデオシステム。
【請求項１３】
前記ブロックの各々の動作情報は、絶対差合計（ＳＡＤ）値を備える請求項１２に記載のビデオシステム。
【請求項１４】
前記コントローラは更に、前記ブロックの各々のρを計算することによって前記パラメータを導出するように構成され、前記ρ計算の各々は、各ブロックのＳＡＤを用いる請求項１３に記載のビデオシステム。
【請求項１５】
ビデオのフレームのための情報のブロックを生成するように構成されたビデオシステムであって、
ビットバジェットから前記ブロックの各々へビットを割り当てる手段を備え、
前記ブロックの各々に割り当てられるビットの数は、そこに含まれる情報の関数であり、
前記ビデオシステムは更に、前記割り当てられたビットを用いて、前記ブロックの各々に含まれる情報を表す手段を備えるビデオシステム。
【請求項１６】
前記ブロックの各々における情報を、動作情報に変換する手段を更に備え、前記ブロックの各々に割り当てられるビットの数は、ブロックに含まれる前記動作情報の関数である請求項１５に記載のビデオシステム。
【請求項１７】
前記ブロックの各々における動作情報は、絶対差合計（ＳＡＤ）値を備える請求項１６に記載のビデオシステム。
【請求項１８】
前記ビットバジェットからビットを割り当てる手段は、割り当てられたビットに関連するブロックの各々のパラメータを導出するように構成され、
前記情報を表す手段は、前記パラメータに応答する量子化器を備える請求項１５に記載のビデオシステム。
【請求項１９】
前記ブロックの各々における情報を、差分情報に変換する手段を更に備え、前記量子化器は更に、前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる差分情報を表すように構成された請求項１８に記載のビデオシステム。
【請求項２０】
前記コントローラは更に、ρ領域内のパラメータを導出するように構成された請求項１８に記載のビデオシステム。
【請求項２１】
ビデオを処理する方法であって、
ビデオのフレームのための情報のブロックを生成することと、
ビットバジェットから前記ブロックの各々へビットを割り当てることとを備え、
前記ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数であり、
前記方法は更に、前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すことを備える方法。
【請求項２２】
前記ブロックの各々における情報を、動作情報に変換することを更に備え、前記コントローラによって前記ブロックの各々に割り当てられたビットの数は、ブロックに含まれる前記動作情報の関数である請求項２１に記載の方法。
【請求項２３】
前記ブロックの各々における動作情報は、絶対差合計（ＳＡＤ）値を備える請求項２２に記載の方法。
【請求項２４】
前記ビットバジェットからビットを割り当てることは、割り当てられたビットに関連するブロックの各々のためのパラメータを導出することを備え、前記パラメータは、前記割り当てられたビット数を用いて、ブロックの各々における情報を表示するために使用される請求項２１に記載の方法。
【請求項２５】
前記ブロックの各々における情報を、差分情報に変換することを更に備え、前記ブロックの各々に割り当てられたビットは、ブロックに含まれる差分情報を表すために使用される請求項２４に記載の方法。
【請求項２６】
前記ブロック内の各々における差分情報は、前記差分情報を前記パラメータを用いて量子化することによって、前記割り当てられたビット数を用いて表される請求項２５に記載の方法。
【請求項２７】
前記パラメータは、ρ領域内で導出される請求項２６に記載の方法。
【請求項２８】
前記パラメータは、前記ブロック内の情報からρ−ＱＰテーブルを生成し、前記ρ−ＱＰテーブルを用いて前記パラメータを導出することによって導出される請求項２７に記載の方法。
【請求項２９】
前記パラメータは、前記フレームを複数のスライスに分割し、前記スライスの各々についてρを計算し、各スライスについて計算されたρに基づいて、前記ブロックの各々のパラメータを導出することによって、導出される請求項２７に記載の方法。
【請求項３０】
前記ブロックの各々における情報を、動作情報に変換することを更に備え、前記パラメータの各々を導出は、各ブロックに含まれる前記動作情報に基づく請求項２７に記載の方法。
【請求項３１】
前記ブロックの各々の動作情報は、絶対差合計（ＳＡＤ）値を備える請求項３０に記載の方法。
【請求項３２】
前記パラメータは、前記ブロックの各々のρを計算することによって導出され、前記ρ計算の各々は、各ブロックのＳＡＤを用いる請求項３１に記載の方法。
【請求項３３】
ビデオのフレームのための情報のブロックを生成するように構成されたビデオプロセッサを用いてビデオを処理する方法であって、
前記ビデオプロセッサはテクスチャエンジンを含み、
前記方法は、
前記テクスチャエンジンに前記フレーム内の情報のブロックを最初に渡して、前記フレームの統計量を生成することと、
前記テクスチャエンジンに前記フレーム内の情報のブロックを再び渡して、前記統計量に基づいて、ビットバジェットからブロックの各々にビットを割り当てることと、
前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すこととを備える方法。
【請求項３４】
前記テクスチャエンジンに最初に渡された場合に生成される統計量は、ρ−ＱＰテーブルを備える請求項３３に記載の方法。
【請求項３５】
前記テクスチャエンジンに最初に渡すことは更に、前記ブロックの各々の絶対差合計（ＳＡＤ）値を生成することを備え、
前記テクスチャエンジンに再び渡すことは、各ＳＡＤを用いて前記ブロックの各々のρを計算することと、前記ブロックの各々のρをＱＰにマップすることと、前記ブロックの各々について、ＱＰを用いて、ブロックに含まれる情報を量子化することとを備える請求項３４に記載の方法。
【請求項３６】
コンピュータによって実行可能な、ビデオ処理方法を実行する方法のプログラムを組み込んだコンピュータ読取可能媒体であって、
前記方法は、
ビデオのフレームのための情報のブロックを生成することと、
ビットバジェットから前記ブロックの各々へビットを割り当てることとを備え、
前記ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数であり、
前記方法は更に、前記ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すことを備えるコンピュータ読取可能媒体。
【請求項３７】
前記方法は更に、前記ブロックの各々における情報を、動作情報に変換することを備え、
前記コントローラによって前記ブロックの各々に割り当てられるビットの数は、ブロックに含まれる前記動作情報の関数である請求項３６に記載のコンピュータ読取可能媒体。
【請求項３８】
前記ブロックの各々における動作情報は、絶対差合計（ＳＡＤ）値を備える請求項３７に記載のコンピュータ読取可能媒体。
【請求項３９】
前記ビットバジェットからビットを割り当てることは、割り当てられたビットに関連するブロックの各々のためのパラメータを導出することを備え、
前記パラメータは、前記割り当てられたビット数を用いて、ブロックの各々における情報を表示するために用いられる請求項３６に記載のコンピュータ読取可能媒体。
【請求項４０】
前記方法は更に、前記ブロックの各々における情報を、差分情報に変換することを備え、
前記ブロックの各々に割り当てられたビットは、ブロックに含まれる差分情報を表すために使用される請求項３９に記載のコンピュータ読取可能媒体。
【請求項４１】
前記ブロック内の各々における差分情報は、前記差分情報を前記パラメータを用いて量子化することによって、割り当てられたビット数を用いて表される請求項４０に記載のコンピュータ読取可能媒体。
【請求項４２】
前記パラメータは、ρ領域内で導出される請求項４１に記載のコンピュータ読取可能媒体。
【請求項４３】
前記パラメータは、前記ブロック内の情報からρ−ＱＰテーブルを生成し、前記ρ−ＱＰテーブルを用いて前記パラメータを導出することによって導出される請求項４２に記載のコンピュータ読取可能媒体。
【請求項４４】
前記パラメータは、前記フレームを複数のスライスに分割し、前記スライスの各々についてρを計算し、各スライスについて計算されたρに基づいて、前記ブロックの各々のパラメータを導出する、ことによって導出される請求項４３に記載のコンピュータ読取可能媒体。
【請求項４５】
前記方法は更に、前記ブロックの各々における情報を、動作情報に変換することを備え、
前記パラメータの各々を導出は、各ブロックに含まれる前記動作情報に基づく請求項４２に記載のコンピュータ読取可能媒体。
【請求項４６】
前記ブロックの各々の動作情報は、絶対差合計（ＳＡＤ）値を備える請求項４５に記載のコンピュータ読取可能媒体。
【請求項４７】
前記パラメータは、前記ブロックの各々のρを計算することによって導出され、前記ρ計算の各々は、各ブロックのＳＡＤを用いる請求項４６に記載のコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、電気通信に関し、特に、ビデオシステムに関する。
【背景技術】
【０００２】
帯域幅が割増価格となる電気通信の世界において、ビデオ圧縮は、マルチメディアアプリケーションにおいて重要な役割を果たす。ビデオ圧縮は、ビデオシーケンスにおける２つの隣接フレーム間でほとんど相違がないという事実を活用することによって、イメージを再構築するために要求される情報を劇的に減少するために使用される。これは、現在のフレームをマクロブロックに分割し、かつ、それぞれのマクロブロックがどこから来たかを判定するために前のフレームを探索することにより達成されうる。現在のフレーム内のマクロブロックのイメージコンテンツが、前のフレーム内に位置できる場合、それを再生する必要はない。イメージコンテンツは、前のフレーム内の位置からの現在のフレーム内の変位を示す「動作ベクトル」によって表わすことができる。現在のフレームと前のフレームとの間のイメージコンテンツにおけるあらゆる変化が存在する程度まで、相違すなわち「差分情報」のみが、動作ベクトルと共に送信される必要がある。この技術はしばしば「時間圧縮」と呼ばれる。
【０００３】
「空間圧縮」は、ビデオ圧縮システムでしばしば適用される別の技術である。空間圧縮は、各マクロブロック内の、冗長な非本質的なマテリアルを除去するために使用される。空間圧縮は、まず、空間領域及び時間領域から周波数領域へと、離散コサイン変換（ＤＣＴ）方法を用いて、マクロブロック内の差分情報を変換し、次に、量子化及び可変長符号化技術を適用することによって達成される。この量子化処理は、目がさほど敏感ではない高周波数係数へ、ピクセル当たり少ないビットを割り当て、重要な低周波数係数へ、ピクセル当たり多くのビットを割り当てることに重みを置く。量子化パラメータ（ＱＰ）は、高周波係数の数をゼロに設定し、これによって、マクロブロックの周波数係数を表すために必要なビット数を低減するために使用される。ＱＰは、フレームに対してビットバジェットが満足されることを保証するために使用される。幾つかの従来の画像圧縮システムでは、同じＱＰが各マクロブロックに使用される。このアプローチは簡単だが、必ずしも、最良のピクチャ品質になるとは限らない。好適には、多くの情報を持つマクロブロックが、ビットバジェットからより多くのビットが割り当てられるように、ＱＰは、フレームにわたって変えられるべきである。
【発明の開示】
【０００４】
ビデオシステムの１つの局面が開示される。このビデオシステムは、ビデオのフレームのための情報のブロックを生成するように構成されたビデオプロセッサと、ビットバジェットからブロックの各々にビットを割り当てるように構成されたコントローラとを含む。ブロックの各々に割り当てられるビットの数は、そこに含まれる情報の関数である。このビデオプロセッサは更に、ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すように構成される。
【０００５】
ビデオシステムの別の局面が開示される。このビデオシステムは、ビデオのフレームのための情報のブロックを生成するように構成される。このビデオシステムは、ビットバジェットからブロックの各々にビットを割り当てる手段を含む。ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数である。このビデオシステムは更に、割り当てられたビットを用いて、ブロックの各々内の情報を表示する手段を含む。
【０００６】
ビデオを処理する方法の１つの局面が開示される。この方法は、ビデオのフレームのための情報のブロックを生成することと、ビットバジェットからブロックの各々にビットを割り当てることと、ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表示することとを含む。ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数である。
【０００７】
ビデオプロセッサを用いてビデオを処理する方法の別の局面が開示される。ビデオプロセッサは、ビデオのフレームのための情報のブロックを生成するように構成されており、テクスチャエンジンを含んでいる。この方法は、ブロックの各々における情報に関する統計量を作成するために、フレーム内に情報のブロックを、最初にテクスチャエンジンに渡すことと、フレーム内の情報のブロックを、再びテクスチャエンジンに渡して、この統計量に基づき、ビットバジェットからブロックの各々にビットを割り当てることと、ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表示することとを含む。
【０００８】
コンピュータによって実行可能な、ビデオ処理方法を実行する命令のプログラムを組み込んだコンピュータ読取可能媒体が開示される。この方法は、ビデオのフレームのための情報のブロックを生成することと、ビットバジェットからブロックの各々にビットを割り当てることと、ブロックの各々に割り当てられたビットを用いて、ブロックに含まれる情報を表すこととを含む。ブロックの各々に割り当てられるビットの数は、ブロックに含まれる情報の関数である。
【発明を実施するための最良の形態】
【０００９】
ビデオプロセッサの様々な局面が、添付図面において、一例として、限定することなく例示される。
【００１０】
添付図面に関連して後述する詳細記述は、ビデオプロセッサの様々な実施形態の説明として意図されており、ビデオプロセッサが実現される唯一の実施形態を表すことは意図されていない。この詳細記述は、ビデオプロセッサの完全な理解を提供することを目的とした具体的詳細を含んでいる。しかしながら、ビデオプロセッサは、これら具体的な詳細がなくても実現されうることが当業者に明らかになるであろう。幾つかのインスタンスでは、周知の構成及びコンポーネントが、本ビデオプロセッサの概念を不明瞭にしないために、ブロック図形式で示される。
【００１１】
図１は、電気通信デバイスへ組み込むのに適切なビデオシステムの例を図示する概念ブロック図である。電気通信デバイスは、有線電話又は無線電話、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、デスクトップコンピュータ、モデム、カメラ、ゲーム機、ビデオ会議装置又はブロードキャスト装置、又は、ビデオアプリケーションをサポート可能なその他任意の適切なデバイスでありうる。
【００１２】
ビデオシステム１００は、センサ１０４上にイメージの焦点を合わせるレンズ１０２を含みうる。センサ１０４は、電荷結合素子（ＣＣＤ）、相補性金属酸化膜半導体（ＣＭＯＳ）イメージセンサ、あるいはその他任意の適切なセンサでありうる。ビデオフロントエンド（ＶＦＥ）１０６は、センサ１０４によって捕らえられたイメージを処理するために使用されうる。ＶＦＥ１０６によって行なわれる処理は、ホワイトバランス、色補正、ガンマ調節、及び／又はその他の処理機能を含みうる。処理されたビデオイメージは、表示のためにディスプレイ１１０へ提供されうるか、あるいは、圧縮するためにビデオプロセッサ１１２へ提供されうる。圧縮されたビデオ画像は、メモリ１１４内にアーカイブ収納されるか、あるいは、ネットワークや電気通信リンクを介して送信するために送信機１１６に提供される。
【００１３】
コントローラ１１８は、ビデオシステム１００の動作を制御するために使用されうる。コントローラ１１８は、スタンドアロンコンポーネントとして実施されるか、あるいは、ビデオシステム１００及び／又は電気通信デバイス内の１又は複数のコンポーネントにわたって分散されうる。コントローラ１１８は、ハードウェア、ファームウェア、ソフトウェア、あるいはそれらの任意の組合せとして実現されうる。一例として、コントローラ１１８は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けＩＣ（ＡＳＩＣ）、プログラマブルロジック、専用ハードウェア、あるいは、その他任意の適切な方法で実現されうる。説明の目的で、コントローラ１１８は、その機能の観点から説明される。コントローラが実現される方式は、特定の用途と、システム全体に課せられる設計制約とに依存するだろう。当業者であれば、これらの環境の下で、ハードウェア構成、ファームウェア構成、及びソフトウェア構成の相互置換性と、各特定のアプリケーションのために、機能をどのようにして最良に実現するかを認識するだろう。
【００１４】
図２は、コントローラと通信するビデオシステムの一例を図示する概念ブロック図である。動作推定器２０２は、現在のフレームにおける各マクロブロックの動作ベクトルを判定し、そのマクロブロックの前のフレームの場所からの変位を表すために用いられる。動作推定器２０２は、現在のフレームにおける各マクロブロックについて、メモリ２０４に格納された前のフレームを探索し、そして、その変位量を計算することによってこの機能を実行する。この探索処理は、定められた探索空間内の前のフレームからのピクセルブロックと、現在のフレーム内のマクロブロックとの最良の一致を見つけるアルゴリズムを利用する。この探索アルゴリズムは、一般に、当該技術で周知である絶対差合計（ＳＡＤ：Sum of Absolute Difference）計算を用いて行なわれる。特に、動作推定器２０２は、現在のフレーム内の各ブロックと、前のフレーム内の周辺領域とを比較して、最小ＳＡＤによって示される一致を探索することを試みる。
【００１５】
テクスチャエンジン２０５は、フレーム内の差分情報の時間及び空間圧縮のために、動作推定器２０２によって生成された動作ベクトルを使用しうる。差分情報は、前のフレームの対応するマクロブロック内のピクセル情報から、各マクロブロック内のピクセル情報を引くことにより生成されうる。動作補償器２０６は、動作ベクトルを用いて、メモリ２０４に格納された前のフレームから対応するマクロブロックを位置決めし、それらを、減算器２０８の入力に与える。
【００１６】
ＤＣＴ２１０は、減算器２０８からの差分情報を、空間及び時間領域から周波数領域へ変換するために使用される。この変換演算は、１次元の信号ではなく、２次元のブロックについて行うという点を除けば、高速フーリエ変換（ＦＦＴ）を用いて時間領域信号を周波数領域信号へ変換することに類似している。ＤＣＴ２１０は、一般に、６４の周波数係数を生成する８×８ブロックのマクロブロックについて実行される。量子化器２１２は、変換器２１０によって生成された周波数係数を低減するために使用されうる。これは、ゼロの近傍の多くの高周波数係数がゼロに設定されるように、変換係数の精度を下げることによって達成される。これによって、低周波数のゼロではないほんの少数の係数のみが残る。これは、コントローラ１１８から、各周波数係数ＱＰで除し、その結果を切り詰めることによって実行されうる。ＱＰがより高くなると、ゼロに設定される高周波数係数がより多くなる。
【００１７】
デブロッカ２１４は、再構築されたイメージにおけるブロック境界上のエッジアーティファクトを取り除くために使用されうる。これは、ブロック境界間のビジュアル的により満足する遷移を生成する補間処理によって達成される。エッジアーティファクトを取り除くために、その他の周知の処理が使用されても良い。
【００１８】
符号器２１６は、量子化された変換係数を、メモリ１１４（図１参照）内に情報を収納する前か、あるいは、ネットワークや電気通信リンクを介して送信する前に圧縮するために使用されうる。使用可能な多くの周知の圧縮アルゴリズムが存在する。よく用いられる一般的な方法は、頻繁に生じる係数を、ショートバイナリ符号と交換することと、滅多に生じない係数を、ロングバイナリ符号と交換することとを含む。その結果、可変長バイナリ符号のシーケンスとなる。これら符号は、同期情報及び制御情報と結合され、符合化ビットストリームが生成される。制御情報は、受信機においてイメージを再構築するために必要な動作ベクトルを含んでいる。
【００１９】
次のフレームが符号化される場合、基準フレームとしてそれを使用できるように、現在のフレームが格納されねばならない。現在のフレームを単純にメモリにコピーする代わりに、量子化された変換係数が逆量子化２１８され、逆変換器２２０によって逆変換され、動作補償フレームへ追加２２２され、再構築フレームが生成される。再構築フレームはメモリ２０４に格納される。この処理は、メモリ２０４に格納されたフレームのコンテンツが、受信機によって再構築されたフレームと一致することを保証する。次のフレームが符号化される場合、動作推定器２０２は、メモリ２０４に格納されたフレームのコンテンツを前のフレームとして用い、動作補償のために最も一致する領域を判定する。
【００２０】
コントローラ１１８は、フレームのための符合化されたビットストリームが、ビットバジェット、すなわち、符合化ビットレートを超えないことを保証する役目を負う。これは、フレームの目標符合化ビットレート（Ｒｔ）を達成するために、マクロブロックレベルにおいて適切なＱＰを選択することによって達成される。この目標符合化ビットレートＲｔは、電気通信デバイス内の中央処理装置（ＣＰＵ）又はその他の処理エンティティからコントローラへ与えられうる。目標符合化レートＲｔからマクロブロックレベルＱＰを計算するために、今日、多くのレート制御アルゴリズムが存在する。しかしながら、ρ領域内で動作するレート制御アルゴリズムが、より正確であると考えられている。“ρ”は、量子化された変換係数のうち、ゼロではないデータの割合を示す。典型的な変換符合化システムでは、ρｂｕｄｇｅｔと目標符合化ビットレートＲｔとの間に線形関係がある。ここで、ρｂｕｄｇｅｔは、ビットバジェットを満足するために必要なフレーム内の量子化変換係数のうち、ゼロではないデータの数である。これら２つの間の線形関係は、以下の式によって表される。  
【数１】
2008541569.tif 000003
【００２１】
ここで、ＡとＢとは、電気通信デバイス内のＣＰＵ又はその他の処理エンティティによって生成される定数である。これら定数は、ピクチャ内の異なる動作アクティビティレベルから生じる同期情報及び制御情報における変化を説明するために調節されうる。
【００２２】
コントローラ１１８は、フレームレベルにおいて、ＱＰにρをマップするルックアップテーブル（図示せず）を含みうる。このρ−ＱＰテーブルは経験的に導出され、動作に先立ってコントローラ１１８へプログラムされうる。あるいは、このρ−ＱＰテーブルは、動作中に直ちに調節されうる。何れの場合も、このρ−ＱＰテーブルは、式（１）から計算されるρｂｕｄｇｅｔから、スキャンライン方式で、各マクロブロックのためのＱＰを導出するために、コントローラ１１８によって使用される。この計算は、多くの方法で実行されうる。一例として、コントローラ１１８は、フレームレベルＱＰ選択アルゴリズムを実施しうる。これは、フレーム内の各マクロブロックへ同じＱＰを割り当てる。ＱＰは、式（１）からρｂｕｄｇｅｔを計算し、かつ、ρ−ＱＰテーブルを用いてρｂｕｄｇｅｔをＱＰにマップすることによって導出されうる。このＱＰは、その後、量子化器２１２に提供され、各マクロブロックのための量子化変換係数が生成される。あるいは、Greedyアルゴリズムや、その他の任意の適切なレート制御アルゴリズムが、マクロブロック−レベルＱＰを導出するために使用されうる。Greedyアルゴリズムは、当該技術において周知である。
【００２３】
コントローラが、フレームレベルＱＰ選択アルゴリズム、Greedyアルゴリズム、あるいはその他任意のタイプのレート制御アルゴリズムの何れを適用しようとも、テクスチャエンジン２０５に再び渡す（パスする）ことによって、改善される性能が達成されうる。この２度渡すデュアルパス構成では、テクスチャエンジン２０５によって、１度目のパスにおいて様々な統計量が生成され、これら統計量が、２度目のパスにおいてピクチャ品質を改善するために使用される。特に、テクスチャエンジン２０５への１度目のパスでは、フレームの真のイメージ条件を反映するために、ρ−ＱＰテーブルが更新される。そして、以下に詳述するように、テクスチャエンジン２０５への２度目のパスにおいて、量子化変換係数が、より高い精度で生成される。更に、テクスチャエンジン２０５への１度目のパスにおいて、各マクロブロックについて動作推定器２０２によって生成されたＳＡＤが、２度目のパスにおいて、マクロブロックレベルのＱＰを導出するために使用される。これによって、より多くの差分情報を持つマクロブロックに、より多くの量子化変換係数が割り当てられる。
【００２４】
コントローラ１１８は、２ステップの処理を用いて、マクロブロックレベルのＱＰを導出するように構成されうる。第１に、コントローラ１１８が、ＳＡＤからρを計算する。第２に、計算されたρをＱＰにマップするために、更新されたρ−ＱＰテーブルが使用される。ρとＳＡＤとの関係は、以下の式を用いてモデル化することができる。  
【数２】
2008541569.tif 000004
【００２５】
ここでρｓｌｉｃｅ  ｉは、Ｍｉ個のマクロブロックを含むフレームのｉ番目のスライスのρバジェットであり、Ｋは、フレーム内のスライス数であり、  
【数３】
2008541569.tif 000005
【００２６】
は差分情報の標準偏差、すなわち、平方誤差の合計の平方根である。
【００２７】
スライスにわたるマクロブロック分散  
【数４】
2008541569.tif 000006
【００２８】
が相対的に類似していると仮定すると、スライス内の各マクロブロックのρは、以下の式によって表される。  
【数５】
2008541569.tif 000007
【００２９】
ＳＡＤは、標準偏差  
【数６】
2008541569.tif 000008
【００３０】
の良好な推定値を提供する。この推定値は、スライス内のマクロブロックの数Ｍが増加すると、より正確になる。従って、フレームにわたった適切なスライス分割スキームを用いて、テクスチャエンジン２０５への１度目のパスにおいて動作推定器２０２によって計算されたＳＡＤは、無視できる誤差を持つ分散について、式（２）に直接的に置き換えられる。
【００３１】
ＳＡＤがビデオプロセッサの幾つかの実施形態で使用されうる理由は２つある。第１に、ＳＡＤの計算は一般に、ハードウェア実装に関して、分散ほど複雑ではない。第２に、ＳＡＤ計算は、動作推定器から利用可能であり、従って、いかなる追加処理も必要としない。
【００３２】
フレームがスライスされる方法は、特定のアプリケーション、要求性能、及び、全体的な設計制約に依存して変わりうる。例示のみの目的で一例を以下に示す。本開示を通じて説明した様々な概念を実施するために、その他の分割スキームが使用されうることが、当業者によって理解されるであろう。
【００３３】
このスライス分割スキームの例では、テクスチャエンジン２０５への１度目のパスから、中間範囲のＳＡＤ値が識別される。中間範囲は、ここでは、フルＳＡＤ範囲の２０〜８０％であると定められるが、実際の実装では、任意範囲でありうる。中間範囲のＳＡＤ値を識別することに加えて、フレームの平均ＳＡＤもまた計算されうる。フレームの中間範囲ＳＡＤ値及び平均ＳＡＤは、以下の手順に基づいて、合計Ｎ個のマクロブロックを、可変スライス長（Ｌｉ）を有するＭ個のスライスに分割するために使用されうる。
【００３４】
（１）フレーム内のｊ番目のマクロブロックから数えてｉ番目のスライスが識別される。フレームの開始において、ｉ＝０かつｊ＝０である。アルゴリズムはステップ（２）に進む。
【００３５】
（２）ｊ番目のマクロブロックが閾値より大きい場合、アルゴリズムはステップ（６）に分岐する。そうでない場合、アルゴリズムはステップ（３）に進む。この例における閾値は（Ｎ−８）であるが、実際の実装では任意の値でありうる。
【００３６】
（３）フレーム内のｊ番目のマクロブロックが、閾値以下であると仮定すると、アルゴリズムは、中間範囲のＳＡＤ値を持つｊ＋２乃至ｊ＋５にインデクスされた各マクロブロックをマークする。これらマクロブロックのうち１又は複数がマークされると、アルゴリズムはステップ（４）に進む。そうでない場合、アルゴリズムはステップ（５）に分岐する。
【００３７】
（４）アルゴリズムは、その平均ＳＡＤがフレームの平均ＳＡＤに近い、マークされたマクロブロックを識別する。各マクロブロックの平均ＳＡＤは、その左側及び右側の近隣マクロブロックを用いて計算される平均でありうる。識別されたマクロブロックは、新たなスライスを開始するために、すなわち、識別されたマクロブロックがステップ（１）におけるｊ番目のマクロブロックになるために使用される。
【００３８】
（５）アルゴリズムは、ｊの後にインデクスされる中間範囲ＳＡＤ値を有する第１のマクロブロックを決定する。このマクロブロックは、ｋ番目のマクロブロックと指定されうる。（ｋ−ｊ）＞１０である場合、アルゴリズムはステップ（１）にループして戻り、ｊ＋５にインデクスされた開始マクロブロックを用いて新たなスライスを開始する。そうでない場合には、アルゴリズムがステップ（１）にループして戻り、（ｊ＋ｋ）／２にインデクスされた開始マクロブロックを用いて新たなスライスを開始する。
【００３９】
（６）残りのマクロブロックの数≧６である場合、アルゴリズムは、フレーム平均ＳＡＤに最も近い平均ＳＡＤを持つマクロブロックにおいて、それらを２つのスライスに分割する。そうでない場合、残り全てのマクロブロックが最後のスライスに含められる。
【００４０】
一旦フレームが適切にスライスされると、各スライスのρｉ’が、以下の式を用いて決定される。  
【数７】
2008541569.tif 000009
【００４１】
ここでρｕｓｅｄは、現在実際に使用されているρであり、ρｓｌｉｃｅ  ｉは、式（２）によって計算されたスライスｉのρバジェットである。
【００４２】
ｉ番目のスライス内では、マクロブロックが、スキャンライン順に処理される。ｍ番目のマクロブロック（ｍ＝１，…，Ｌｉ）のρは、以下の式から得られる。  
【数８】
2008541569.tif 000010
【００４３】
各マクロブロックの対応するＱＰ（ｑｉ、ｍ）は、ρ−ＱＰテーブルから見つけることができる。
【００４４】
各マクロブロックのＱＰ（ｑｉ、ｍ）は、フレーム内のスライス境界間のスムーズな遷移を保証するように調節されうる。ＱＰ（ｑｉ、ｍ）が調節される例が、実際の実装では、他の方法も使用されうるという理解とともに以下に与えられる。
【００４５】
このアルゴリズムは、スライス内の第１のマクロブロック（ｍ＝１）を以下のように処理する。すなわち、ｑｉ，ｍの場合、ｑｉ，ｍ＝ｑｆｒａｍｅ＋１であり、それ以外の場合は、ｑｉ，ｍ＝ｍａｘ（ｑｆｒａｍｅ−１，ｑｉ，ｍ）である。ここで、ｑｆｒａｍｅは、フレームの平均ＱＰである。
【００４６】
このアルゴリズムは、次の３つの条件を満たすように、スライス内の残りのマクロブロックを処理する。
【００４７】
（１）ｑｉ，ｍは、［ｑｆｒａｍｅ−１−２（Ｌｉ−ｍ＋１），ｑｆｒａｍｅ＋１＋２（Ｌｉ−ｍ＋１）］の範囲内になければならない。
【００４８】
（２）前のマクロブロックのＱＰとｑｉ，ｍとの差は、［−２，２］の範囲内になければならない。
【００４９】
（３）ｑｉ，ｍの値は、［１，３１］の範囲内になければならない。
【００５０】
ビデオシステムの少なくとも１つの実施形態では、コントローラ１１８は、２度渡すデュアルパスモードで動作することによるピクチャ品質の期待される改善と、利用可能な処理リソースとに依存して、テクスチャエンジン２０５を１度渡すシングルパスモード又は２度渡すデュアルパスモードで動作させるように構成されうる。モード間を動的に切り換えるためにコントローラ１１８によって用いられる基準は、具体的なアプリケーション、設計者の設定、及び設計全体の制約に依存して変わりうる。一例として、コントローラ１１８は、フレームにわたってＳＡＤにおける変化をモニタするように構成されうる。コントローラ１１８が、ほとんど変化がないと判定すると、フレーム全体にわたって同じＱＰを使用するテクスチャエンジン２０５への１度のパスで十分かもしれない。一方、フレームにわたってＳＡＤに大きな変化があるとコントローラ１１８が判定すると、テクスチャエンジン２０５へ２度渡すことによって、より多くのビットがビットバジェットから与えられることが保証される。
【００５１】
図３は、シングルパスモード及びデュアルパスモードで動作可能なビデオシステムの動作を図示するフローチャートである。ステップ３０２では、マクロブロックがメモリから取得される。マクロブロックは、ステップ３０４において、動作推定器に供給される。動作推定器は、マクロブロックについて、前のフレームにおける位置からの、現在のフレームにおける変位を表す動作ベクトルを計算する。更に、動作ベクトルを計算するために使用されたＳＡＤが、テクスチャエンジンへの２度目のパスで後に使用されるために格納される。
【００５２】
マクロブロックの動作ベクトルは、ステップ３０６においてテクスチャエンジンに供給される。上記で詳述したように、テクスチャエンジンは、メモリ内における前のフレームの対応するマクロブロックを位置決めし、かつ、２つの間の差を計算するために動作ベクトルを用いる。この相違、すなわち差分情報は、その後、コントローラによってテクスチャエンジンへ与えられるＱＰに基づいて、テクスチャエンジンによって、量子化変換係数に変換される。フレームレベルにおいて、ρ−ＱＰテーブルを構築するために要求される情報もまたメモリ内に格納される。
【００５３】
ステップ３０８では、コントローラが、テクスチャエンジンから出力された量子化変換係数が、現在のフレーム内の最後のマクロブロックに属するかを判定する。属しない場合、コントローラはステップ３０２にループして戻り、フレーム内の次のマクロブロックがメモリから取得される。一方、テクスチャエンジンから出力された量子化変換係数が、フレーム内の最後のマクロブロックに属するのであれば、テクスチャエンジンへの１度目のパスが終了する。そして、コントローラは、ステップ３１０で、２度目のパスが必要であるかを判定する。２度目のパスは必要ではないとコントローラが判定すると仮定すると、フレームは、ステップ３１２においてデブロックされ、ステップ３１４において符合化される。そうでない場合、コントローラは、テクスチャエンジンへの２度目のパスのためにビデオプロセッサを設定する。これは、テクスチャエンジンへの１度目のパスの間に格納された情報から、フレームのρ−ＱＰテーブルを構築することを含む。
【００５４】
２度目のパスでは、ステップ３１６において、現在のフレーム内のマクロブロックが再びメモリから取得され、動作推定器に提供される。動作推定器は、ステップ３１８において、マクロブロックの動作ベクトルを計算し、この動作ベクトルをテクスチャエンジンに提供する。
【００５５】
テクスチャエンジンは、ステップ３２０において、マクロブロックのコンテンツをより良く表現するＱＰを用いて量子化変換係数を計算する。ＱＰは、先ず、式（５）を用いてρを計算し、次に、この計算したρを、テクスチャエンジンへの１度目のパスの間に作成されたフレームレベルのρ−ＱＰテーブルを用いてＱＰ値にマップし、最後に、フレーム内のスライス境界間でのスムーズな遷移を保証するようにＱＰを調節することにより、コントローラによって導出される。この処理は、フレーム内の全てのマクロブロックが、テクスチャエンジンへ２度渡されるまで続く。ステップ３２２では、コントローラは、テクスチャエンジンから出力された量子化変換係数が、フレーム内の最後のマクロブロックのものかを判定する。そうでない場合には、コントローラはステップ３１６にループして戻り、フレーム内の次のマクロブロックを取得する。最後のマクロブロックのものである場合には、フレームはステップ３１２においてデブロックされ、ステップ３１４において符合化される。
【００５６】
図４は、ビデオプロセッサが、シングルパス動作とデュアルパス動作との両方をサポートするように動作する別の方法を例示するフローチャートである。この構成では、動作推定処理は一度だけ行なわれる。各マクロブロックについて計算されたＳＡＤ及び動作ベクトルは、デュアルパスモードにおいて、テクスチャエンジンを介した両方のパスの間使用される。
【００５７】
図４に示すように、マクロブロックは、ステップ４０２において、メモリから取得される。マクロブロックは、ステップ４０４において、動作推定器に供給される。動作推定器は、マクロブロックのＳＡＤを計算し、ＳＡＤから動作ベクトルを計算する。動作ベクトルとＳＡＤとは共に、テクスチャエンジンによる後の使用のために格納される。この処理は、フレーム内の各マクロブロックについて繰り返される。ステップ４０６では、コントローラが、各マクロブロックについて、それがフレーム内の最後のマクロブロックであるかを判定する。それが最後のマクロブロックでなければ、コントローラは、ステップ４０２にループして戻り、フレーム内の次のマクロブロックを取得する。最後のマクロブロックであれば、各マクロブロックの動作ベクトルがテクスチャエンジンに提供される。
【００５８】
テクスチャエンジンは、ステップ４０８において、コントローラによってテクスチャエンジンに提供されたＱＰに基づいて、マクロブロック内の差分情報のための量子化変換係数を計算する。フレームレベルにおいてρ−ＱＰテーブルを構築するために必要な情報もまたメモリに格納される。
【００５９】
コントローラは、ステップ４１０において、テクスチャエンジンから出力された量子化変換係数が、現在のフレームの最後のマクロブロックに属するかを判定する。属しないのであれば、コントローラはステップ４０８にループして戻り、フレーム内の次のマクロブロックの次の動作ベクトルがテクスチャエンジンに提供される。一方、テクスチャエンジンから出力された量子化変換係数が、フレーム内の最後のマクロブロックに属する場合、テクスチャエンジンへの１度目のパスは終了する。その後、コントローラは、ステップ４１２において、テクスチャエンジンへの２度目のパスが必要であるかを判定する。コントローラが、２度目のパスは必要ではないと判定したと仮定すると、フレームは、ステップ４１４においてデブロックされ、ステップ４１６において符合化される。一方、必要であると判定した場合、コントローラは、テクスチャエンジンへの１度目のパスの間にメモリに格納された情報から、フレームのρ−ＱＰテーブルを構築し、テクスチャエンジンへの２度目のパスのためにステップ４１８に進む。
【００６０】
２度目のパスでは、テクスチャエンジンが、ステップ４０４で計算された動作ベクトルを用いて量子化変換係数と、より正確なＱＰとを計算する。ＱＰは、先ず、式（５）を用いてρを計算し、次に、この計算したρを、テクスチャエンジンへの１度目のパスの間に作成されたフレームレベルのρ−ＱＰテーブルを用いてＱＰ値にマップし、最後に、フレーム内のスライス境界間でのスムーズな遷移を保証するようにＱＰを調節することにより、コントローラによって導出される。この処理は、フレーム内の全てのマクロブロックが、テクスチャエンジンへ２度渡されるまで続く。ステップ４２０では、コントローラは、テクスチャエンジンから出力された量子化変換係数が、フレーム内の最後のマクロブロックのものかを判定する。最後のマクロブロックのものでない場合には、コントローラはステップ４１８にループして戻り、フレーム内の次のマクロブロックを処理する。最後のマクロブロックである場合には、フレームはステップ４１４においてデブロックされ、ステップ４１６において符合化される。
【００６１】
ここで開示された実施形態に関連して記述された様々の説明的論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、アプリケーションに固有の集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）あるいはその他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、又は上述された機能を実現するために設計された上記何れかの組み合わせを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、たとえばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ以上のマイクロプロセッサ、またはこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【００６２】
ここで開示された実施形態に関連して記述された方法やアルゴリズムは、ハードウェアや、プロセッサによって実行されるソフトウェアモジュールや、これらの組み合わせによって直接的に具現化される。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、あるいは当該技術分野で知られているその他の型式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合される。または、記憶媒体はプロセッサに統合されうる。
【００６３】
上述の記載は、当該技術分野におけるいかなる人であっても、本発明に記載された様々な実施形態を実現可能とするように提供される。これらの実施形態への様々な変形例もまた、当該技術分野における熟練者に対しては明らかであって、ここで定義された一般的な原理は、他の実施形態にも適用されうる。従って、特許請求の範囲は、ここに示す実施形態に限定されることは意図されておらず、特許請求の範囲に一致した全範囲に相当することが意図されており、単数形の要素に対する参照は、「１又は複数」と具体的に明示されていないのであれば、「１又は１のみ」を意味するとは意図されていない。当業者に周知であるか、あるいは後に周知になるであろう本開示を通じて説明された様々な実施形態の要素に対する全ての構造的及び機能的な等価物は、参照によって本明細書に明らかに組み込まれ、特許請求の範囲に含まれることが意図される。更に、本明細書で開示した何れも、その開示が、特許請求の範囲で明示的に引用されているか否かに関わらず、公衆に放棄されることを意図していない。もしも請求項の要素が、「〜する手段」（means for）というフレーズ、あるいは方法請求項の場合には、「〜するステップ」（step for）というフレーズを用いて明確に引用されていないのであれば、何れの請求項の要素も、３５Ｕ．Ｓ．Ｃ第１１２条、第６パラグラフの規定の下で解釈されるものではない。
【図面の簡単な説明】
【００６４】
【図１】図１は、ビデオシステムの例を図示する概念ブロック図である。
【図２】図２は、ビデオプロセッサ内のビデオプロセッサ及びコントローラの例を図示する概念ブロック図である。
【図３】図３は、シングルパスモード及びデュアルパスモードで動作可能なビデオプロセッサケーブルの動作を例示するフロー図である。
【図４】図４は、シングルパスモード及びデュアルパスモードで動作可能なビデオプロセッサを動作させる別の方法を例示するフロー図である。
【図１】
2008541569.tif 000011
【図２】
2008541569.tif 000012
【図３】
2008541569.tif 000013
【図４】
2008541569.tif 000014
【国際調査報告】
2008541569.tif 000015
2008541569.tif 000016
2008541569.tif 000017
2008541569.tif 000018