(57)【要約】ビットストリームで運ばれる圧縮フレームストリームを受信し、フレームストリームで送信されるフレームの一部を量子化するか、および／または閾値化するかどうかを選択的に決定するランレベルの領域トランスコーダにおけるレート制御装置。レート制御装置は、フレームの入力サイズを決定し、少なくとも希望のサイズの少なくとも一部を基本に、フレームの出力サイズがおよそ希望のサイズであるようなフレームを再量子化および／または閾値化する。
2007501577.tif 000002
【特許請求の範囲】
【請求項１】
圧縮されたフレームのデジタルストリームをトランスコードするためのネットワーク装置であって、
ランレベル領域に含まれるコンテンツ情報と非コンテンツ情報を持つフレームを解凍するように適合されたデコーダであり、前記フレームにより運ばれるコンテンツ情報が、ランレベル領域で表される、デコーダと、
前記フレームから削り取るビット数（Ｎｓ）を決定するように適合されて、およそＮｓだけ前記フレームの圧縮ビットサイズを削減するために前記ランレベル領域で前記フレームを処理するように適合されたプロセッサであり、前記フレームのコンテンツ情報が初期コンテンツ情報から最終コンテンツ情報に変更される、プロセッサと、
前記フレームを圧縮するように適合されたエンコーダと
を備える、ネットワーク装置。
【請求項２】
前記プロセッサは
（ａ）前記フレームの少なくとも指定された部分を再量子化するかどうかを決定し、
（ｂ）前記フレームの少なくとも前記指定された部分を再量子化するかどうかの決定に応答して、前記ランレベル領域で前記フレームの少なくとも前記指定された部分を再量子化し、
（ｃ）前記フレームの少なくとも前記指定された部分を閾値化するかどうかを決定し、
（ｄ）前記フレームの少なくとも前記指定された部分を閾値化するかどうかの決定に応答して、前記ランレベル領域で前記フレームの少なくとも前記指定された部分を閾値化する
ようにさらに適合されている、請求項１に記載の装置。
【請求項３】
前記フレームは、順番に並べられた複数のブロックから構成され、各ブロックは、ランレベルペアの少なくとも１つのセットにより表され、前記フレームの前記指定された部分は、ランレベルペアの少なくとも１つのセットにより表される、請求項２に記載の装置。
【請求項４】
前記フレームの前記指定された部分はフレームのスライスであり、前記スライスのブロックを表すランレベルペアの各セットは並列に処理される、請求項３に記載の装置。
【請求項５】
前記プロセッサは
前記フレームの前記指定された部分から削り取るビット数（ＮＳＨＡＶＥ）を決定し、
前記指定された部分に対して、前記フレームの指定された部分の初期コンテンツ情報が圧縮されたときに、前記指定の部分を表すビット数として定義される、前記フレームの部分の初期コンテンツサイズ（ＳＩＮＴ）を決定し、
削減閾値（ＲＴ）を決定する（ここで、前記削減閾値は、ＲＴ＝ＮＳＨＡＶＥ／ＳＩＮＴとして定義され、再量子化するかどうかの決定は、削減閾値の少なくとも一部を基本にする）
ようにさらに適合されている、請求項２に記載の装置。
【請求項６】
前記プロセッサは、前記フレームのコンテンツサイズ合計（ＣＴ）を決定するように更に適合され、前記コンテンツサイズ合計（ＣＴ）は、コンテンツ情報が圧縮されたときに、前記コンテンツ情報のビット数として定義され、前記指定された部分から削り取られるビット数（ＮＳＨＡＶＥ）は、前記初期コンテンツサイズ（ＳＩＮＴ）に、前記フレームから削り取るビット数（ＮＳ）をフレームのコンテンツサイズ合計（ＣＴ）で除算したものを乗じた積に関与する、請求項５に記載の装置。
【請求項７】
前記プロセッサは、
前記フレームを複数のＮ部分に解析し（ここで前記フレームの前記指定部分は処理されるフレームのｋ番目の部分である）、
累積削減エラー（Ｅ）を決定する（ここで、前記累積削減エラーは、所望ビット削減と、前記フレームの処理済の各部分実際のビット削減との差との和として定義され、前記処理済部分の各前記所望ビット削減は、前記処理済部分から削り取るビット数（ＮＳＨＡＶＥ）として定義され、各処理済部分の実際のビット削減は処理済部分の最終圧縮コンテンツサイズから処理済部分の初期圧縮コンテンツサイズを差し引いた差として定義され、指定部分から削り取るビット数（ＮＳＨＡＶＥ）は、ＮＳＨＡＶＥ＝（ＳＩＮＴ×Ｎｓ／ＣＴ）＋Ｅ／（Ｎ＋１−ｋ）の方程式により与えられる）
ようにさらに適合されている、請求項６に記載の装置。
【請求項８】
前記プロセッサは、
前記指定された部分のために、前記フレームの前記指定部分の最終コンテンツ情報が圧縮されたときの前記指定部分を表すビット数として定義される、前記フレームの指定された部分の最終コンテンツサイズ（ＳＦＮＬ）を決定し、
瞬間削減エラー（ｅ）を決定する（ここで、前記瞬間削減エラーは、最終コンテンツサイズ（ＳＦＮＬ）と指定部分から削り取るビット数（ＮＳＨＡＶＥ）を加算して、初期コンテンツサイズ（ＳＩＮＴ）を差し引いた式、ｅ＝ＳＦＮＬ＋ＮＳＨＡＶＥ−ＳＩＮＴとして定義され、前記瞬間削減エラー（ｅ）は累積削減エラー（Ｅ）に追加される）
ようにさらに適合されている、請求項７に記載の装置。
【請求項９】
前記プロセッサは、前記指定部分の閾値レベルにより、ゼロに設定するレベルの目標数（ＮＴＨＲＥＳＨ）を決定するようにさらに適合され、ここで、前記フレームは、順に並べられた複数のブロックから構成され、各ブロックは、ランレベルペアの少なくとも１つのセットにより表され、前記フレームの前記指定部分はランレベルペアの少なくとも１つのセットを含む、請求項５に記載の装置。
【請求項１０】
前記レベルの目標数（ＮＴＨＲＥＳＨ）は、前記フレームの指定部分のレベル数と前記削減パラメータ（ＲＴ）に関与する、請求項９に記載の装置。
【請求項１１】
前記プロセッサは、前記指定された部分に、前記フレームの指定部分の初期コンテンツ情報が圧縮されたときに前記指定部分を表すビット数として定義される、前記フレームの部分の初期コンテンツサイズ（ＳＩＮＴ）を決定するようにさらに適合され、前記レベルの目標数（ＮＴＨＲＥＳＨ）は、前記フレームの指定部分のレベル数に、削減パラメータの指数（ＲＴ）を初期部分コンテンツサイズ（ＳＩＮＴ）で除算したものを乗じた積に関与する、請求項９に記載の装置。
【請求項１２】
前記フレームの前記指定部分は、ランレベルペアの複数のセットを含み、前記プロセッサは、
スキャン位置を前記指定部分の各レベルに関連付け、
所定の広さと高さのプロフィールを持つ閾値関数の下のレベル数（ＣＮＴ）を決定し（ここで特定レベルは、特定のスキャン位置より大きい特定レベルのスキャン位置に応答するとともに、特定高さより小さい特定レベルの大きさに応答する閾値関数の下である）、
目標数（ＮＴＨＲＥＳＨ）の所定の範囲内にある閾値関数の下にあるレベル数（ＣＮＴ）に応答して、前記閾値関数の下のレベルの大きさをゼロに設定し、
目標数（ＮＴＨＲＥＳＨ）の所定の範囲の外側にある閾値関数の下にあるレベル数（ＣＮＴ）に応答して、前記閾値関数を調整する
ようにさらに適合されている、請求項９に記載の装置。
【請求項１３】
前記プロセッサは、前記閾値関数の高さプロフィールを変更することにより、前記閾値関数を調整する、請求項１２に記載の装置。
【請求項１４】
前記高さプロフィールは増加する、請求項１３に記載の装置。
【請求項１５】
前記高さプロフィールは減少する、請求項１３に記載の装置。
【請求項１６】
前記閾値関数は、スキャン位置の１番目の範囲に拡張し、前記プロセッサは、前記閾値関数がスキャン位置の２番目の範囲に拡張するように、前記閾値関数の相対的位置を変えることにより、前記閾値関数を調整する、請求項１２に記載の装置。
【請求項１７】
スキャン位置の１番目の範囲に含まれる最大スキャン位置は、スキャン位置の２番目の範囲に含まれる最大スキャン位置より小さい、請求項１６に記載の装置。
【請求項１８】
スキャン位置の１番目の範囲に含まれる最大スキャン位置は、スキャン位置の２番目の範囲に含まれる最大スキャン位置より大きい、請求項１６に記載の装置。
【請求項１９】
前記閾値関数は、スキャン位置の１番目の範囲に拡張し、前記閾値関数を調整するために、前記プロセッサは、
前記指定部分のレベルを１番目のグループと２番目のグループのレベルに区切り、
２番目の閾値関数を２番目のレベルのグループに関連付け、前記２番目の閾値関数はスキャン位置の２番目の範囲に拡張し、
（ａ）１番目の閾値関数の下のレベル数（ＣＮＴ１）を決定し（ここで、１番目の特定レベルは、スキャン位置の１番目の範囲にある１番目の特定レベルのスキャン位置に応答して、１番目の特定高さより小さい１番目の特定レベルの大きさに応答する前記１番目の閾値関数の下にある）、
（ｂ）２番目の閾値関数の下位のレベル数（ＣＮＴ２）を決定し、（ここで、２番目の特定レベルは、スキャン位置の２番目の範囲にある２番目の特定レベルのスキャン位置に応答して、２番目の特定の高さより小さい２番目の特定のレベルの大きさに応答する前記２番目の閾値関数の下にある）、
（ｃ）目標数（ＮＴＨＲＥＳＨ）の所定の範囲内にあるＣＮＴ１とＣＮＴ２の和に応答して、前記１番目と２番目の閾値関数の下位レベルの大きさをゼロに設定し、
（ｄ）目標数（ＮＴＨＲＥＳＨ）の所定の範囲外にあるＣＮＴ１とＣＮＴ２の和に応答して、１番目と２番目のグループから所定のレベル数を移す
ようにさらに適合され、
目標数（ＮＴＨＲＥＳＨ）の範囲外にあるＣＮＴ１とＣＮＴ２の和に応答して、前記プロセッサは、ＣＮＴ１とＣＮＴ２の和が目標数（ＮＴＨＲＥＳＨ）の所定の範囲内にあるまで、（ａ）、（ｂ）、（ｃ）、（ｄ）を繰り返す論理を含む、請求項１２に記載の装置。
【請求項２０】
前記プロセッサは、
前記フレームの前記指定位置から削り取るビット数（ＮＳＨＡＶＥ）を決定し、
前記指定された位置に、フレームの指定された位置のコンテンツ情報が圧縮された場合に指定された位置を表すビット数として定義される、前記フレームの位置の初期コンテンツサイズ（ＳＩＮＴ）を決定し、
前記指定された位置に、前記フレームの指定された部分のコンテンツ情報が圧縮された場合に与えられた部分を表すビット数として定義される、前記フレームの部分の最終コンテンツサイズ（ＳＦＮＬ）を決定し、
前記フレームの前記指定された部分の削減エラー（ｅ）を決定し（前記削減エラー（ｅ）はｅ＝ＳＦＮＬ＋ＮＳＨＡＶＥ−ＳＩＮＴとして定義される）、
前記フレームの処理済部分の削減エラーにより削減エラーを累積する（ここで、前記累積削減エラーは、前記フレームの次の部分の処理に使用される）
ようにさらに適合されている、請求項２に記載の装置。
【請求項２１】
前記フレームから削り取るビット数（Ｎｓ）を決定するために、前記プロセッサは、
前記フレームの合計サイズ（ＮＴ）を決定する（ここで、前記合計サイズ（ＮＴ）は、前記フレームが圧縮されたときのフレームのビット数であり、削り取るビット数（Ｎｓ）は、合計サイズ（ＮＴ）と所望サイズ（ＮＤ）の差、Ｎｓ＝ＮＴ−ＮＤとして定義される）
ようにさらに適合されている、請求項１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の開示）
本出願書は、２００２年３月２７日に申請した出願番号６０／３６８，０６８を持つＵＳ仮申請への優先権を申請した、２００３年３月２６日提出のＵＳ申請出願番号１０／３９７，６５８の一部継続出願であり、これらは双方とも参照することにより本出願書に全体が組み込まれる。
【０００２】
本発明は、概して、ブロードバンド通信システムに関連し、特に、ブロードバンド通信システムの情報圧縮ストリームのトランスコーディングに関連する。
【背景技術】
【０００３】
現代の加入者テレビシステム（ＳＴＳ）は、ヘッドエンドから加入者へとパケット化されるデジタルコンテンツを送信する。デジタルコンテンツは、一般的に、ＭＰＥＧあるいは当業者には周知のその他のパケットフォーマットのフォーマットで提供される。ＳＴＳの運用者は、デジタルプログラムの方が優れた品質を提供することや、デジタルプログラムは圧縮されているのでアナログプログラムに比べて使用する帯域幅が一般的に少ないことから、一般的にデジタルフォーマットでプログラムを提供する方を好む。デジタルプログラムは、部分的に量子化パラメータを使用して圧縮されている。
【０００４】
頻繁に、ＳＴＳの運用者は、量子化パラメータを変更する従来のトランスコーダを使用して、指定ビットレートの圧縮済みデジタル信号を低ビットレートの圧縮デジタル信号に変換する場合がある。このような目的で使用される従来のトランスコーダは、デコーダとエンコーダをカスケードして構成される。この組み合わせは比較的複雑で高価である。ビデオ信号に限る場合、その他の側面もいくつか考慮しなければならない。コード化されたビデオ信号は、エンコードされたビデオフレームの連続から構成されるが、各ビデオフレームは、マクロブロックの２次元配列に分割されており、各マクロブロックはブロックより構成されている。ビデオフレームは、空間領域にある場合、ピクセル領域であり、空間領域にあるビデオフレームの離散コサイン変換（ＤＣＴ）により、周波数あるいは変換領域で変換される。さらに、ビデオフレームは、ビデオフレームの奇数ラインにより形成されるトップフィールドと、ビデオフレームの偶数ラインにより形成されるボトムフィールドの２つのフィールドに分ける場合がある。マクロブロックは、飛び越し走査形式と順次走査形式の２つの異なる形式で伝達される場合がある。飛び越し走査ビデオフレーム形式では、マクロブロックは、２つのフィールドが交互に交差したラインから構成され、マクロブロックの各ＤＣＴブロックは２つのフィールドのデータにより形成される。順次走査形式では、マクロブロックは、２つのフィールドからのラインから構成され、マクロブロックの各ＤＣＴブロックは、２つのフィールドのうち１つだけのデータから形成される。ビデオフレームの各ＤＣＴブロックはスキャンされてエンコードされる。
【０００５】
従来のピクセル領域トランスコーダがビットストリームを再量子化できる前に、トランスコーダのデコーダ部分がビットストリームをピクセル領域値に変換する。その後、トランスコーダのエンコーダ部分がピクセル領域値を量子化して変換しＤＣＴドメイン値に変換し直す。
【０００６】
従来のピクセル領域のトランスコーダに加えて、ＤＣＴブロック領域で操作する従来のＤＣＴブロック領域トランスコーダが存在する。このようなトランスコーダはビットストリームを受信して、そのビットストリームをランレベルペアのセットに変換するが、ランレベルペアのセットは、ＤＣＴブロックの圧縮されたものであり、その後、ランレベルペアのセットをＤＣＴブロックに変換する。トランスコーダは、ＤＣＴブロック領域の情報を操作してから、ＤＣＴブロックを変換してランレベルペアのセットに戻し、その後、変換されて圧縮済みビットストリームに戻る。ＤＣＴブロック領域トランスコーダに関する詳細は、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｖｉｄｅｏ  Ｔｅｃｈｎｏｌｏｇｙ８巻８号１９９８年１２月号の９５３〜９６７ページの「Ａ  Ｆｒｅｑｕｅｎｃｙ−Ｄｏｍａｉｎ  Ｔｒａｎｓｃｏｄｅｒ  Ｆｏｒ  Ｄｙｎａｍｉｃ  Ｂｉｔ−Ｒａｔｅ  Ｒｅｄｕｃｔｉｏｎ  ｏｆ  ＭＰＥＧ−２  Ｂｉｔ  Ｓｔｒｅａｍｓ」（Ａｓｓｕｎｃａｏ  ｅｔ．ａｌ．）に記されており、参照することで本出願書に全体が組み込まれる。また、ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｎ  Ｓｅｌｅｃｔｅｄ  Ａｒｅａｓ  Ｉｎ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ１３巻１号１９９５年の１〜１１ページの「Ｍａｎｉｐｕｌａｔｉｏｎ  ａｎｄ  Ｃｏｍｐｏｓｉｔｉｎｇ  ｏｆ  ＭＣ−ＤＣＴ  Ｃｏｍｐｒｅｓｓｅｄ  Ｖｉｄｅ」（Ｃｈａｎｇ  ｅｔ．ａｌ．）にも記されており、参照することで全体が本出願書に組み込まれる。
【０００７】
ピクセル領域とＤＣＴブロック領域どちらのトランスコーダも、８×８ブロック全体のデータを操作する。ＤＣＴ領域では、ＤＣＴブロックは、ブロックの要素のほとんどがゼロであるため、あまり更新されない。典型的に、ブロックの６４要素のうち、６以下の要素がゼロである。従って、求められるのは、拡張ピクセルあるいはＤＣＴブロック領域よりもさらに圧縮されたランレベル領域でトランスコーダを操作することにより大量の計算を削減するために、ランレベル領域で操作し、情報のフレームを適切な希望のサイズに圧縮できるトランスコーダである。
【発明を実施するための最良の形態】
【０００８】
本発明の好ましい実施形態は、以下の図面を参照することにより更に理解される。図面の要素は必ずしも縮尺比に従って縮小拡大されておらず、本発明の原理を明確に図解するために記載することを重要視している。さらに、図面では、参照番号などは、いくつかの図面で対応するパーツを指定する。
【０００９】
本発明の好ましい実施形態に関し、添付の図面を参照して、以下に詳細を記述する。図面では番号などはいくつかの図面を通じて要素などを表す。ここには本発明のいくつかの模範的実施形態が示されている。本発明は、しかしながら、多くの異なる形式で実施される場合があり、ここに示した実施形態に限定されると解釈されるべきではない。ここに示される例は、限定されない例であり、その他の可能な例のうちの例にすぎない。
【００１０】
フローチャートの処理の説明やブロックは、いずれも、モジュール、セグメント、コード部分として理解されるべきであり、特定の論理関数あるいは処理の手順を実装するために１つ以上の実行命令を含む。また、別の実装は、本発明の好ましい実施形態の範囲に含まれ、この中の関数は、本発明の優れた当業者により理解されるように、関与する機能に応じて、実質的に同時あるいは逆順など、示されたあるいは検討された順序から順序を変えて実行される場合がある。
【００１１】
本発明の好ましい実施形態を理解する一つの方法は、加入者テレビシステム（ＳＴＳ）の状況内で、これらを見ることである。このように、本発明の好ましい実施形態は、特に、ビデオ情報のランレベル領域ブロックで再量子化を行うことにより、ＳＴＳにより運ばれるトランスポートストリームのサイズを削減するシステムと方法を含む。
【００１２】
本発明の好ましい実施形態は加入者テレビスステム環境の状況において理解できるので、加入者テレビシステム（ＳＴＳ）の説明がまず提供され、その後に加入者テレビシステムのヘッドエンド内に含まれる選択構成要素の説明が続く。また、本発明の好ましい実施形態を実装し、ヘッドエンドでヘッドエンドに含まれるランレベル領域のトランスコーダも説明される。
【００１３】
本発明の好ましい実施形態は、しかしながら、多くのさまざまな形式で実施されてよく、ここに示される実施形態に限定して解釈されるべきではない。むしろ、これらの実施形態は、本開示が詳細で完全であり、本発明の範囲を同業者に完全に伝えられるために提供されている。さらに、ここに示されたすべての「例」は限定を目的としておらず、意図されるが示されていないその他の多くの例における、模範的リストとして提供される。
【００１４】
さらに、本発明の好ましい実施形態の論理は、ハードウェア、ソフトウェア、ファームウェア、それらを組み合わせたものに実装することが可能であることが注目されるべきである。好ましい実施形態では、論理は、メモリに保管されたソフトウェアまたはファームウェアに実装され、適切な命令実行システムにより実行される。ハードウェアに実装された場合、別の実施形態のように、論理は、当業者には周知の、データ信号の論理関数を実装するための論理ゲートを持つ個別論理回路、適切な組み合わせ論理ゲートを持つアプリケーション特定統合回路（ＡＳＩＣ）、プログラム可能ゲート配列（ＰＧＡ）、フィールドプログラム可能ゲート配列（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）などの技術のいずれかにより、あるいは組み合わせにより実施される。さらに、本発明の範囲には、ハードウェアあるいはソフトウェアが設定されたメディアに実施された論理に本発明の好ましい実施形態の機能を実施する場合を含む。
【００１５】
加入者テレビシステム
図１は、加入者テレビシステム（ＳＴＳ）１００の制限を意図しない例を示す構成図である。この例では、ＳＴＳ１００は、ヘッドエンド１０２、ネットワーク１０４、複数のデジタル加入者通信端末（ＤＳＣＴ）１０６を含み、加入者の施設１０５に設置されている。
【００１６】
図１に示されているＳＴＳ１００は、具体例であることが理解されるであろう。また、本発明の好ましい実施形態の範囲のいかなる制限をも暗示すると解釈されるべきではない。例えば、ＳＴＳ１００は、説明されている構成要素のいずれか１つを複数持つことが可能であり、または、個々の構成要素のいずれか１つのために別の実施形態により、あるいは、上に列挙したその他の追加の構成要素により構成される場合がある。また、本発明の好ましい実施形態の範囲内に含まれる加入者テレビシステムは、サテライトシステムのような、しかしこれに限定されない通信のための物理的ケーブル構造を利用するシステムや利用しないシステムを含む。
【００１７】
加入者の施設１０５にあるＤＳＣＴ１０６は、特に、ＳＴＳ１００のヘッドエンド１０２と加入者間の二方向のインターフェイスを提供する。ＤＳＣＴ１０６は、特に、テレビセット（ＴＶ）１０７やコンピュータモニタのような表示装置上に表示する信号をデコードして、さらに処理する。当業者は、別の実施形態で、信号の１番目のデコードとさらなる処理のための機器を、特に、コンピュータ、ＴＶ、モニタ、ＭＰＥＧデコーダなど、しかしこれらに限定されない様々な機器に置くことが可能であることを理解する。
【００１８】
少なくとも１つのコンテンツプロバイダ１０８が、ＭＰＥＧなど、しかしこれに限定されないプロトコルにフォーマットされたデジタルコンテンツをＳＴＳ１００に提供する。特に、コンテンツプロバイダ１０８は、「ライブ」あるいは「記録された」プログラミングを提供するテレビ局であってよい。テレビ局は、カメラ１１０とエンコーダ１１２を含む。エンコーダ１１２は、カメラ１１０からコンテンツを受信し、コンテンツをＭＰＥＧ形式へと処理して、コンテンツは、ＳＴＳ１００のヘッドエンド１０２へと提供される。
【００１９】
ヘッドエンド１０２は、コンテンツプロバイダ１０８からプログラミング信号を受信し、ここに記述されるメカニズムに従って、コンテンツプロバイダ１０８からのコンテンツを処理後、ヘッドエンド１０２は、プログラミング信号を加入者施設１０５のＤＳＣＴ１０６へと送信する。典型的に、ヘッドエンド１０２は、本書では検討されない従来のアナログ信号や、デジタル信号を送信する。
【００２０】
ある実施形態では、デジタル信号はＭＰＥＧ形式で送信され、本発明の実施形態はその条件で検討される。具体的には、本発明の実施形態は、ＭＰＥＧビデオフレームとビデオフィールドの条件で記述される。しかしながら、ＭＰＥＧビデオフレームとビデオフィールドを採用する本発明の実施形態を記述することは、具体例や目的を明確にするためだけのものであり、本発明の範囲を限定するものではないことが理解されるべきである。本発明の範囲は、少なくとも量子化された情報のすべてのストリームに拡張することを目的とする。本開示の目的のために、情報のフレームは、ビデオフレーム、トップビデオフィールド、ボトムビデオフィールドやその他の所定のブロックの情報を含む。
【００２１】
図１に示されているように、例のヘッドエンド１０２の選択された構成要素は、通信インターフェイス１１４、デジタルネットワーク制御システム（ＤＮＣＳ）１１６、条件付アクセス（ＣＡ）サーバー１１８、ビデオオンデマンド（ＶＯＤ）サーバー１２０、伝送ストリーム送信機１２２、直角位相偏移変調（ＱＰＳＫ）モデム１２４、ルータ１２６、ＶＯＤポンプ１２８、ランレベル領域トランスコーダ１３４を含み、これらはイーサネット（登録商標）１３０により接続されている。当業者は、具体例のヘッドエンド１０２は、特に、追加のサーバー、スイッチ、マルチプレクサ、伝送ストリーム送信機を含むことができること、あるいは、表示の選択された構成要素のいくつかを省略できることを理解する。
【００２２】
特に、ＤＮＣＳ１１６は、ユーザーに提供されるサービスのネットワーク要素やブロードキャストを管理、監視、制御する。ＤＮＣＳ１１６は、モジュールの中でも、特に請求情報やアンケートデータのような目的のために、加入者に関する情報を含む加入者データベース１３２を含む。また、ＤＮＣＳ１１６は、ヘッドエンド１０２からＤＳＣＴ１０６へのセキュアなコンテンツ伝送を提供するために、条件付アクセスサーバー１１８とも通信する。
【００２３】
ＣＡサーバー１１８は、ＳＴＳ１００のサービスやプログラミングのためにＤＳＣＴ１０６に選択的に「権利」を提供する。つまり、特に、ＣＡサーバー１１８は、ＳＴＳ１００のどのＤＳＣＴ１０６がサービスあるいはプログラムの指定のインスタンスにアクセスすることができるかを決定し、サービスの指定のインスタンスにアクセスするために、特に、必要なキーや認証を選択されたＤＳＣＴ１０６に提供する。さらに、ＣＡサーバー１１８は、各加入者が正しく請求されるように、ＳＴＳ１００のそれぞれのＤＳＣＴ１０６の権利をＤＮＣＳ１１６に通知する。その上に、ＣＡサーバー１１８は、特に、ＤＳＣＴ１０６の長期のキー、公共キーや、ＣＡサーバー１１８のプライベートキーを含むデータベース（示されていない）を含む。ＣＡサーバーは、長期キー、公共およびプライベートキーを採用して、ＤＳＣＴ１０６と安全に通信する。
【００２４】
また、ＣＡサーバー１１８は、伝送ストリーム送信機１２２や選択したＤＳＣＴ１０６に暗号情報も提供する。伝送ストリーム送信機１２２は、暗号情報を採用して、プログラムのコンテンツを暗号化し、ネットワーク１０４から、特に、モジュール化されたプログラミングをＤＳＣＴ１１０へ送信する。
【００２５】
ＱＰＳＫモデム１２４は、ヘッドエンド１０２とＤＳＣＴ１０６の間の帯域外のＩＰ（インターネットプロトコル）データグラムトラフィックの伝送を受け持つ。ＱＰＳＫモデム１２４により伝送されたデータあるいは受信されたデータは、ヘッドエンドルータ１２６によりルートされる場合がある。特に、アップストリームデータをＶＯＤサーバー１２０のようなさまざまなサーバーに送るために、ヘッドエンドルータ１２６が使用される場合もある。
【００２６】
ランレベル領域トランスコーダ１３４は、ＭＰＥＧ伝送パケットのストリームを送信し、ビットストリーム１３８を出力するビットストリーム１３６を受信する。出力ビットストリームのビットサイズは、入力ビットストリーム１３６より低い。ランレベル領域トランスコーダ１３４は、オペレータ入力を受け取り、特に、入力ビットストリーム１３６により運ばれるプログラムのフレーム上にハイブリッド再量子化閾値方法を適用するように適合される。ハイブリッドの再量子化と閾値化方法は、ランレベル領域で実施され、フレームがビットサイズに減少されるなどして実行される。
【００２７】
ＭＰＥＧ圧縮
ランレベル領域トランスコーダ１３４を詳細に説明する前に、ＭＰＥＧビデオ圧縮の簡単な説明を提供する。ＭＰＥＧ圧縮と一般的なＭＰＥＧに関する詳細情報は、参照することで本書に組み込まれるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ文書ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１  Ｎ（ＭＰＥＧ−１は１９９６年６月、ＭＰＥＧ−２は１９９６年７月、ＭＰＥＧ−４は１９９８年１０月）で説明されているＭＰＥＧ−１標準（ＩＳＯ／ＩＥＣ１１１７２）、ＭＰＥＧ−２標準（ＩＳＯ／ＩＥＣ１３８１８）、ＭＰＥＧ−４標準（ＩＳＯ／ＩＥＣ１４４９６）にある。
【００２８】
典型的に、ビデオフレームは、水平方向のスライスに分割され、フレームの幅あるいはその一部まで拡張できる。各スライスは、サイズが１６×１６ピクセルのマクロブロックから構成される。フレームがエンコードされると、画像ヘッダー、スライスヘッダー、マクロブロックヘッダーのようなヘッダーが、フレームやフレームの処理方法に関する情報を運ぶために使用される。各マクロブロックのピクセル情報は、空間コード化あるいは一時的圧縮のいずれかを使用して、処理され、圧縮される。
【００２９】
ＭＰＥＧ−２は、Ｉ画像、Ｂ画像、Ｐ画像の３つの種類の画像を採用する。Ｉ画像は、内部コード化された画像で、つまり、ビデオフレームから空間圧縮だけを使用して圧縮されているので、その他のビデオフレームへ参照しなくても解凍される。Ｂ画像とＰ画像は相互コード化された画像で、つまり、Ｉ画像やＰ画像のような参照画像からの情報を使用して圧縮されており、空間的にも圧縮されている。Ｐ画像は、前の参照画像からの情報を使用している「予測」画像で、Ｂ画像は、前の参照画像と次の参照画像からの情報を使用している「双方向予測」画像である。実際には、Ｂ画像あるいはＰ画像は、厳密には相互コード化された画像ではなく、相互コード化されたマクロブロックと内部コード化されたマクロブロックの組み合わせである。参照画像から予測できるマクロブロックは相互コード化され、予測できない画像は内部コード化されている。各マクロブロックは、それに関連付けられたマクロブロックヘッダを持っており、マクロブロックヘッダは、マクロブロックを相互コード化あるいは内部コード化されたマクロブロックとして定義する。
【００３０】
表示順になっているビデオ画像の典型的な順序は、Ｉ（１）、Ｂ（２）、Ｂ（３）、Ｐ（４）、Ｂ（５）、Ｂ（６）、Ｐ（７）、Ｂ（８）、Ｂ（９）、Ｐ（１０）、…Ｐ（Ｎ）、Ｉ（Ｎ＋１）である。Ｐ画像Ｐ（４）は、Ｉ画像Ｉ（１）からの情報を使用する。Ｂ画像Ｂ（２）とＢ（３）は、Ｉ画像Ｉ（１）とＰ画像Ｐ（４）からの情報を使用する。Ｐ画像Ｐ（７）はＰ画像Ｐ（４）からの情報を使用する。Ｂ画像Ｂ（５）とＢ（６）はＰ画像Ｐ（４）とＰ（７）の情報を使用する。Ｉ（１）からＰ（Ｎ）までの画像は、画像グループ（ＧＯＰ）として知られ、典型的に１２から１６までの番号である。ビデオ画像は画像順序で送信されない。そうではなく、各相互コード化された画像は、その参照画像がすべて送信された後で送信される。このため、ＧＯＰの送信順序はＩ（１）、Ｐ（４）、Ｂ（２）、Ｂ（３）、Ｐ（７）、Ｂ（５）、Ｂ（６）、Ｐ（１０）、Ｂ（８）、Ｂ（９）、…Ｐ（Ｎ）、Ｂ（Ｎ−２）、Ｂ（Ｎ−１）である。
【００３１】
テレビに表示される典型的な画像では、Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ（ＮＴＳＣ）の高品質のフレームは、およそ１３５０のマクロブロックから構成される。通常のＭＰＥＧ−２標準は、４：２：０と４：２：２を含む。４：２：０標準では、１６×１６のマクロブロックは、４つの８×８発光ブロックと２つの８×８の色差ブロックにより表され、これは、各軸を２の因数によりダウンサンプルすることにより生成される。４：２：２標準では、色度はダウンサンプルされず、従って、最大２倍の色度情報がある。このように、４：２：０標準では、１６×１６マクロブロックは６つの８×８ブロックにより表され、４：２：２標準では、１６×１６マクロブロックは８つの８×８マクロブロックにより表される。マクロブロックのすべての８×８ブロックは、共通の運動ベクトルにより、参照画像（Ｉ画像あるいはＰ画像）から一時的に圧縮された画像（Ｐ画像あるいはＢ画像）に向けられる。
【００３２】
ＭＰＥＧ−２の空間圧縮は、それぞれの８×８ブロックの２次元の離散コサイン変換（ＤＣＴ）を使用する各マクロブロックの変換を基本に、ピクセル領域から、ＤＣＴ領域とも呼ばれる周波数領域へ変換される。エンコーダ１１２のようなフレームを空間圧縮するＭＰＥＧエンコーダの手順は、図２に示される。エンコーダ１１２は、送信機２０２、量子化器２０４、スキャナ２０６、バイナリエンコーダ２０８を含む。送信機２０２は、離散コサイン変換を使用して、画像の画像情報２１０の各ブロックをＤＣＴ領域ブロック２１２に変換する。ピクセル領域ブロック２１０は、要素がｂ（ｎ，ｍ）として指定される行列ｂとして書かれる。この場合、ｎとｍは０から７までの範囲である。ＤＣＴ領域ブロック２１２は、要素がＢ（ｋ，ｊ）として指定される行列Ｂとして書かれる。この場合ｋとｊは０から７までの範囲である。伝送機２０２は、次の式を使用して、ピクセル領域からＤＣＴ領域へと返還する。
【００３３】
【数１】
2007501577.tif 000003
ここで、ｃ（０）＝１／√２、および、ｎ＞０の場合、Ｃ（ｎ）＝１である。
【００３４】
ゼロ周波数（ＤＣ）要素のＢ（０，０）は、ＤＣＴ領域行列２１２の左上隅にあり、最高周波数の係数Ｂ（７，７）は、ＤＣＴ領域行列２１２の右下隅にある。
【００３５】
人間の目は低周波数より高周波数に応答しないので、ＤＣＴ係数は同じように取り扱われない。従って、量子化器２０４は、量子化するとき、ＤＣＴ係数のそれぞれに重み因子を適用する。量子化によりＤＣＴ係数は有理数から整数に変換され、通常、量子化された係数の空間表示となり、つまり、ほとんどあるいは高い割合の係数の振幅の数はゼロに等しくなる。ある実施形態では、量子化器２０４は次の重み量子化方法を採用する。
相互コード化されたブロックでは、
Ｂ’（ｋ，ｊ）  ＝  ｉｎｔ（［２Ｂ（ｋ，ｊ）＋１］・Ｑ・ｗ（ｋ，ｊ）／１６，                                              （２ａ）
内部コード化されたブロックでは
Ｂ’（ｋ，ｊ）＝ｉｎｔ（２Ｂ（ｋ，ｊ）・Ｑ・ｗ（ｋ，ｊ）／１６，                                          （２ｂ）
この場合、ｉｎｔ（）は整数関数、ｗ（ｋ，ｊ）は要素（ｋ，ｊ）の重み因子、Ｑは量子化パラメータである。その後、ＭＰＥＧデコーダは次の逆数重み量子化方法を採用し、
Ｂ（ｋ，ｊ）＝ｎｉｎｔ（Ｂ’（ｋ，Ｊ）・１６・Ｑ／ｗ（ｋ，ｊ）），                                                （３）
この場合、ｎｉｎｔ（）は近似の整数関数である。当業者は、本書で検討されないが、本発明の範囲を意図するその他の量子化方法も使用できることを認識する。
【００３６】
スキャナ２０６は、量子化されたＤＣＴ行列（Ｂ’）２１４でジグザグスキャンを実施し、（Ｎ＋１）×２の次元を持つランレベル領域行列（ＲＬ）２１６を作成する。この場合、Ｎは量子化されたＤＣＴ行列（Ｂ’）２１４のゼロ以外の係数の数である。最後に、バイナリエンコーダ２０８は、Ｈｕｆｆｍａｎコーディングを使用して、ランレベル領域行列（ＲＬ）２１６のランレベルペアをビットストリームに変換する。本発明の好ましい実施形態は、Ｈｕｆｆｍａｎコーディングを使用するＭＰＥＧ標準の条件で説明されていることに注意する。しかしながら、本発明は、ＭＰＥＧ標準だけに限定することを意図せず、当業者に知られているその他のコーディング技法がその他の好ましい実施形態で使用できる。
【００３７】
図３Ａと３Ｂは、スキャンしているＭＰＥＧフレームで使用される可能性のあるスキャン順序を２つ示す。その他のプロトコルは別のスキャン順序を採用するかもしれず、このようなスキャン順序は、本発明の範囲内であることを目的とする。図３Ａに示されたスキャン順序は、典型的に、ＤＣＴ行列が順次走査式ビデオフレームの一部を表す場合、量子化されたＤＣＴ行列（Ｂ’）２１４をスキャンするために、スキャナ２０６により実施される。図３Ｂは、ＤＣＴ行列が飛び越し走査式のビデオフィールドの一部を示す場合に典型的に実装されるスキャンパターンを示す。
【００３８】
図４Ａは、典型的な量子化ＤＣＴ領域行列（Ｂ’）２１４を示し、図４Ｂは、スキャナ２０６が図３Ａに示されたスキャンパターンを典型的なＤＣＴ領域行列２１４で採用した後、対応するランレベル領域行列（ＲＬ）２１６を示す。ランレベル領域では、「ラン」は、ゼロ以外の係数に先行するゼロの値を持つ連続的なスキャンされた係数の数を意味し、「レベル」はゼロ以外の係数の振幅を意味する。ゼロ周波数（Ｄ．Ｃ．）係数（Ｂ（０，０）＝ａ）に先行するゼロの値を持つ係数の数は、ゼロであるので、Ｄ．Ｃ．係数のランレベルペアは（０，ａ）である。Ｂ（０，０）とＢ（１，０）の間に介入する唯一のゼロ係数はＢ（０，１）であるので、Ｂ（１，０）のランレベルペアは（１，ｂ）により与えられる。次のＢ（４，１）係数（Ｂ（４，１）＝ｈ）の係数のすべてはゼロであり、ランレベルペア（０，０）により意味される、ブロックの終わりのマーカーにより表される。このように、量子化２０４とスキャナ２０６による処理後、ＤＣＴ領域行列（Ｂ）２１２の６４の係数は、こうして、９つのペアのランとレベルにより表される（１８の整数）。６４の数字から１８の整数（レベル）への変換は、典型的なＤＣＴ領域行列２１４を表すために必要なビット数を削減する。
【００３９】
図４Ｃは、ランレベルペア２１６のセットの別の実施形態を示す。内部コード化されたマクロブロックでは、ＭＰＥＧ−２は、高周波レベルとは異なって、ＤＣレベルである行列２１４のＢ（０，０）要素を処理する。内部ブロックのＤＣレベルは、人間の目は低い周波数にもっと応答するためＤＣ係数はブロックからブロックで異なってコード化されているので、ＡＣ係数とは別にコード化されている。従って、ランがゼロにならなくてはいけないという定義により、ＤＣレベルに関連付けられたラン値はない。相互コード化されたブロックのＤＣレベルはその他のレベルと同じく扱われる。
【００４０】
ＤＣＴ１０６のようなＭＰＥＧデコーダは、ビットストリームをフレームに変換するために逆算を実施する。ＭＰＥＧデコーダは、特に、ビットストリームをランレベルペアのセットに変換するバイナリデコーダ（非表示）を持つ。この場合、ランレベルペアのセットは８×８ブロックのピクセルを表す。逆スキャナ（非表示）は、ランレベルペアのセットをＤＣＴ量子化係数の８×８行列に変換する。逆量子化器（非表示）は、レベルを、
量子化因子Ｑを各レベルの重み因子で除算した商で乗算する。最後に、逆変圧器（非表示）が、レベルをピクセル領域値に変換し直す。このように、ＭＰＥＧのエンコード化とデコード化は、特に行列演算やＤＣＴ変換や逆変換などにより、多くの計算の複雑性が関与する。
【００４１】
前述したように、Ｐ画像とＢ画像は、少なくとも１つの参照フレームの情報を使用することにより、部分的に圧縮される。連続した画像では、通常、１つの画像から次の画像では顕著に変化しない冗長情報が多くある。参照フレーム部分を相互コード化されたフレームにマップするために使用された動画情報を送信して、修正あるいは残余を追加することにより、帯域幅は削減される。内部コード化の概念は図５と６に示される。
【００４２】
図５Ａと５Ｂは、それぞれ、連続した画面の画像５０２Ａと５０２Ｂを示す。画像５０２Ａと５０２Ｂのそれぞれは、１〜２５の番号が付けられたブロック５０４に分割される。画像５０２Ａでは、上昇している飛行機５０６が、１、２、６、７のラベルされたブロック５０４にあり、雲５０８は、８、９、１３、１４のラベルのブロック５０４にあり、空（非表示）は、２５ブロックすべての背景である。画像５０２Ｂでは、飛行機５０６は雲５０８の前面を通過する。背景の空のような画像５０２Ｂの情報のほとんどは、画像５０２Ａに含まれており、画像５０２Ｂは、参照フレームから部分画像へブロックを適切に変換することにより、ほぼ生成できる。
【００４３】
図５Ｂでは、図５Ａのブロック１、２、６、７の情報が飛行機５０６を生成するために使用されているので、ブロック１３、１４、１５、２０は、相互コード化ブロックの例である。また、図５Ｂは、ブロック５に入ってくる２番目の飛行機５１０の先端部分も表示する。ブロック５は、画像５０２Ａのどのブロックからも予想できないので、内部コード化ブロックの例である。
【００４４】
図６Ａは、部分画像６０２を示す。部分画像６０２では、飛行機５０６は、フレーム５０２Ａを参照して、飛行機５０６のブロック１、２、６、７をブロック１３、１４、１５、２０に変換するために運動ベクトルを使用することにより生成される。破線の欄６０４は、フレーム５０２Ａのブロック１、２、６、７を表し、フレーム５０２Ａを参照する運動情報により、どのように飛行機５０６を再作成できるかを示す。
【００４５】
エンコーダが画像５０２Ｂの部分表示を生成した後、図６Ｂに示されている残余フレーム６０６が生成される。残余フレーム６０６は、実際の画像５０２Ｂと部分画像６０２の違いである。飛行機の破線の輪郭６０８が、フレーム５０２Ｂの実際の飛行機５０６と部分画像６０２の変換された飛行機５０６の相違を表す。相違は、照明や遠近感の変化のような要素を補う。このように、画像５０２Ｂは、参照フレーム、この場合、５０２Ａや残余フレーム６０６からの特定のブロック５０４を変換する運動ベクトルを送信することにより、一時的に圧縮される。残余フレーム６０６は、上記に説明した空間圧縮技法を使用して圧縮される。
【００４６】
ランレベル領域トランスコード化
図７を参照すると、ランレベル領域トランスコーダ１３４は、入力バッファ７０２、ベクター長デコーダ（ＶＬＤ）７０４、プロセッサ７０６、メモリ７０８、ベクター長エンコーダ（ＶＬＥ）７１０、出力バッファ７１２を含む。入力バッファ７０２は、ビットストリーム１３６を受信し、ビットストリームをＶＬＤ７０４に提供する。特に、ＶＬＤ７０４は、画像ヘッダー、スライスヘッダー、運動ベクトルを含むマクロブロックヘッダーなど、ビットストリームからのヘッダーを解析して、ヘッダーをメモリ７０８に提供する。
【００４７】
さらに、ＶＬＤ７０４は、ビデオ以外の情報のフレームも解析して、ビデオ以外のフレームをメモリ７０８に提供し、ビットストリームからのランレベルペアを解析してランレベルペアをメモリ７０８に提供する。メモリ７０８は、ヘッダーバッファ７１４、ランバッファ７１６、レベルバッファ７１８、インデックスバッファ７２０、ビデオ以外のフレームバッファ７２２を含む。ヘッダーバッファ７１４は、画像ヘッダー、スライスヘッダー、マクロヘッダーのような、しかしこれらに限定されない、ＭＰＥＧパケットのヘッダーからの情報を含む。ランバッファ７１６は、そこに保管されたランのセットを持ち、レベルバッファ７１８は、そこに保管されたランのセットに関連付けられたレベルのセットを持つ。この開示の目的のために、ランレベルペアのセットは、ＤＣＴ係数の８×８ブロックを表し、結果として、ピクセル値のブロックに関連する。インデックスバッファ７２０に保管されるのは、以下に説明するスキャン位置配列である。
【００４８】
プロセッサ７０６は、特に、処理されたフレームが少ないビットで表すことができるように、ランレベル領域でフレームを処理する。好ましい実施形態では、プロセッサ７０６は、ランレベルペアの複数のセットを並列処理する。
【００４９】
本発明のある好ましい実施形態では、プロセッサ７０６は汎用プロセッサである。別の実施形態では、プロセッサ７０６は、デジタル信号プロセッサ（ＤＳＰ）、ＦＰＧＡ、ＡＳＩＣ、これら処理要素などのいかなる組み合わせにすることが可能であるが、これらに限定されない。
【００５０】
ランレベル領域の情報のフレームを処理後、プロセッサ７０６は、処理したフレームをＶＬＥ７１０に送信する。当業者が認識するように、プロセッサ７０６は、入力バッファ７０２により受信されたフレームと同じ順序のＶＬＥが受信したビデオやビデオ以外のフレームのようなフレームの処理を制御する。
【００５１】
特に、ＶＬＥ７１０は、処理されたフレームをバイナリ情報へ変換して、バイナリ情報を複数のＭＰＥＧパケットにカプセル化する。ＶＬＥ７１０は、これに限定されるものではないが、Ｈｕｆｆｍａｎコーディングなどの周知の技法を使用して、整数値のペアからのランレベルペアをバイナリ順序に変換する。
【００５２】
出力バッファ７１２は、ＶＬＥ７１０からＭＰＥＧパケットを受信して、バイナリストリーム１３８のＭＰＥＧパケットを送信する。
【００５３】
強調すべきことは、本発明の好ましい実施形態は、従来のトランスコーダの改善であり、改善には、特に、従来のトランスコーダがフレームを拡張するので、フレームを処理する演算がもっと必要だということである。ＭＰＥＧストリームをトランスコードする従来型のトランスコーダは、特に、一般的に、カスケード式ＭＰＥＧデコーダ−エンコーダのペアである。従来のトランスコーダのＭＰＥＧデコーダ部分は、ビットストリームを受信して、ＶＬＤは、特に、ランレベルペアのセットからリカバリするためにそのビットストリームを処理する。各セットのレベルは、その後、逆量子化、つまり、最初の量子化パラメータ（Ｑ１）を重み因子により除算した商により乗算される。次に、ランレベルペアの各セットは逆スキャンされる。つまり、Ｎ×２行列からレベル（ＤＣＴ係数）の８×８行列に変換される。次に、逆ＤＣＴ演算は、ＤＣＴ係数をピクセル領域値に変換し直す。ピクセル領域表示の参照フレームは、相互コード化されて圧縮されたフレームの完全なピクセル領域フレームを生成するために使用できるように、保管される。ピクセル領域フレームは、従来のトランスコーダのＭＰＥＧデコーダ部分から、従来のトランスコーダのＭＰＥＧエンコーダ部分へと送られる。
【００５４】
従来のトランスコーダのＭＰＥＧエンコーダ部分では、加算回路が、残余フレームを生成するために相互コード化されたフレームからピクセル領域参照フレームの部分を抽出する。ピクセル領域参照フレームと残余フレームはＤＣＴモジュールによりＤＣＴ係数に変換される。８×８ＤＣＴ係数の各ブロックは、その後、新しい量子化パラメータＱ２を使用して、実数を整数、つまりレベルに変換することにより再量子化される。次に、レベルの各８×８ブロックがスキャンされて、ランレベルペアのセットに変換される。ＶＬＥモジュールは、特に、ヘッダー情報とランレベルペアを受け取り、その入力をＭＰＥＧパケットに処理する。
【００５５】
さらに、参照フレームが再量子化された後、再量子化されたフレームは、ピクセル領域情報とへ変換し直されて、次の相互コード化フレームの生成に役立つようにバッファ化される。具体的には、再量子化されたレベルは、逆量子化モジュールにも送信されて、その後、適切な重み因子によりＱ２パラメータを除算した商でレベルを乗算する。逆ＤＣＴモジュールは、レベルのブロックを受信して、レベルのブロックをピクセル領域値に変換し直す。参照フレームが内部コードフレーム、例えばＩ画像であれば、参照画像はバッファに保管される。参照フレームが相互コードフレーム、例えばＰ画像であれば、運動補償が適用されて、以前の参照フレームから取られたピクセル値に残余フレームのピクセルが追加されて、実際の相互コード参照フレームを生成し、その後、バッファに保管する。このように、従来のトランスコーダを使用するビットストリームの再量子化は、多くの演算や逆演算、初期化演算が関与する。例えば、逆スキャン演算を実施する前に、６４の要素のあるＤＣＴブロック全体を、ブロックに新しいデータを書き込む準備をするために、初期化、つまり、ゼロに設定する必要がある。４：２：０ビデオ標準では、逆スキャン演算の初期化だけでも、高解像度のＮＴＳＣフレームでは一秒あたりおよそ１５．５×１０６の演算が必要である。秒当たりの演算数は、次の式を使用して計算される。
Ｎｏｐ＝Ｎｂｌｏｃｋ×ＮＭＢ×６４×ｆ＝１５．５×１０６                      （４）
この場合、Ｎｂｌｏｃｋｓは６に等しく、ＮＭＢ＝１，３５０、フレーム当たりのマクロブロック数で、秒当たりｆ＝３０フレームである。
【００５６】
図８は、受信したＭＰＥＧストリームの再量子化を実装するためのランレベル領域トランスコーダ１３４により実施される手順のフローチャートである。手順８０２では、ＶＬＤ７０４は、特に、ヘッダー情報、運動情報、ビデオ以外のフレームをＭＰＥＧパケットから解析して、解析した情報をメモリ７０８に提供する。また、ＶＬＤ７０４は、ランレベルペアのセットのバイナリ表示をランレベルペアの整数セットにデコードして、セットのランとレベルをメモリ７０８に提供し、そこで、バッファ７１６と７１８にそれぞれバッファ化される。
【００５７】
手順８０４では、プロセッサは、Ｑ１／Ｑ２の比により量子化されたレベルを乗じることにより、現在のフレームのランレベルペアのセットを再量子化する。この場合、Ｑ１は古い量子化因子で、Ｑ２は新しい量子化因子である。また、プロセッサは、現在のフレームのマクロブロックヘッダーとスライスヘッダーも更新する。マクロブロックヘッダーは、特に、コード化ブロックパターン（ＣＢＰ）、マクロブロックタイプ（ＭＢＴＹＰＥ）、マクロブロックアドレス増加（ＭＢＩＮＣ）、量子化スケールコード（ＱＳＣ）などの再量子化後に更新されるフィールドを含む。ＱＳＣは、常にスライスヘッダーにあり、オプションで、マクロブロックヘッダーに存在する場合もある。量子化スケールが変更されると、スライスヘッダーあるいはマクロブロックヘッダーの場合もある適切なヘッダーを更新することが必要である。再量子化が、ランレベルペアのセットベースによりランレベルペアのセットに実施されると、量子化スケールは、マクロブロックヘッダーで変更される。ところが、再量子化がブロックのスライスで実行されると、量子化スケールはスライスヘッダーで変更される。
【００５８】
手順８０６では、ＶＬＥ７１０は、ランレベルペアをエンコードして、ＭＰＥＧパケットのフレームをカプセル化する。
【００５９】
図９は、手順８０４のプロセッサ７０６により実装される典型的な手順を示す。手順９０２では、プロセッサ７０６は、少なくとも１つのランとレベルのセットをバッファ７１６と７１８からそれぞれ抽出する。
【００６０】
手順９０４では、プロセッサ７０６は、スキャン位置配列を各抽出したランレベルペアのセットに関連付ける。スキャン位置配列は、最高で６４要素の次元を持ち、ランレベルペアのセットのペアにあるレベルの最高サイズに対応する。スキャン位置配列の要素は、ゼロ以外のレベル、つまりＤＣＴ係数のスキャン位置である。
【００６１】
手順９０６では、プロセッサは、再量子化技法をレベルに適用する。再量子化技法の例は、次の式により与えられる。
ｌ２＝ＮＩＮＴ（ｌ１×Ｑ１／Ｑ２），                                      （５）
この場合、ＮＩＮＴ（）は、近似整数演算、Ｑ１は初期量子化パラメータ、Ｑ２は新しい量子化パラメータであり、ｌｌは、再量子化前のレベルの値である。
【００６２】
手順９０８では、プロセッサ７０６は、再量子化されたレベルに対するランを決定する。レベルの中にはゼロに変化したものがあり、従って、新しいラン値を決定する必要がある。しかしながら、強調すべきことは、新しいラン値は、更新されたレベルを８×８行列あるいは同等の６４×１行列に拡張することなく決定されるということである。
【００６３】
ランレベルペアのセットのその関連付けられたスキャン位置配列は図１０Ａに、ラン配列１００２、レベル配列１００４、スキャン位置配列１００６として示される。ラン配列１１０２とレベル配列１１０４は、図４Ａに示されたＤＣＴ行列に対応する。配列要素のそれぞれの添字は、その特定の配列のその要素の位置を与える。スキャン位置配列にあるゼロ以外の各要素の値は、ゼロから開始するジグザグスキャン順序で関連付けられたレベルの位置である。ＶＬＤ７０４は、次の式を使用して、スキャン位置配列の各要素のスキャン位置を計算する。
ｎ＞０の場合、
ｉｎ＝ｒｎ＋ｉｎ−１＋１，                                                 （６ａ）
ｎ＝０の場合、
ｉｎ＝ｒｎ，                                                             （６ｂ）
図１０Ｂは、再量子化後の一時ラン配列１００８、一時レベル配列１０１０、スキャン位置配列１００６を示すが、削除されたランは、ゼロに設定されたレベルに関連づけられている。プロセッサ７０６は、次の式を使用して一時ラン配列１００８の新しいラン値を計算する。ｋ（ｎ）＜ｎの場合、
ｒｎ’＝ｉｎ−ｉｎ−ｋ（ｎ）−１−１，                                        （７ａ）
ｋ（ｎ）＝ｎの場合、
ｒｎ’＝ｉｎ，                                                            （７ｂ）
ここで、ｋ（ｎ）は、ｎ番目の要素と１番目の先行するゼロ以外の要素の間に介入する一時レベル配列１０１０でゼロになったレベルの数である。例えば、レベルｌ１はゼロではなく、レベルｌ２とｌ３はゼロに設定されているので、ｋ（４）＝２である。再量子化によりゼロになったレベルに対応するランは無視される。
【００６４】
図１０Ｃは、更新ラン配列１０１２、更新レベル配列１０１４、ランレベルペアの対応するセット１０１６を示す。更新ラン配列１０１２は、図１０Ｂに示された新しいラン値に対応して、更新レベル配列１０１４は図１０Ｂに示されたゼロ以外の再量子化後のレベルに対応する。
【００６５】
ある好ましい実施形態では、ランレベルペアの更新されたセット１０１６を受信する代わりに、ＶＬＥ７１０は、一時ラン配列１００８と一時レベル配列１０１０を受信する。ＶＬＥ７１０は、ゼロに設定されたレベルに関連付けられたランを無視するように変更される。このように、図１０Ｂに示された典型的な配列では、ＶＬＥ７１０では、Ｈｕｆｆｍａｎだけが、ランレベルペア（ｒ０、ｌ０）、（ｒ１、ｌ１）、（ｒ４、ｌ４）、（ｒ６、ｌ６）をエンコードする。この実施形態は、更新ラン配列１０１２と更新レベル配列１０１４のためのバッファのサイズを再形成する必要がない。
【００６６】
新しいラン値の計算において、スキャン位置配列を使用することにより、大量の計算能率性が持たれることに注意すべきである。更新されたランはプログラム可能のデジタル信号プロセッサ（ＤＳＰ）において、単独命令複数データ技法（並列処理）を使用して計算される。
【００６７】
ピクセル領域やＤＣＴブロック領域ではなく、ランレベル領域で作業することにより、計算の能率向上が提供される。前述のように、逆ＤＣＴ行列を初期化するだけでも、高品質ＮＴＳＣフレームには秒当たり１５．５×１０６演算が必要である。ピクセル領域ではなくランレベル領域で作業しているので、これらの初期化演算は実施する必要がない。能率が向上する別の例として、量子化のための演算を考える。例えば、画像あたり３０，０００のＤＣＴ係数の平均数を持つ秒当たり３メガビットの（ｍｂｉｔｓ／ｓ）ＮＴＳＣ  ＭＰＥＧ−２ビットストリームを取り上げる。５の方程式で再量子化された係数当たり演算を２つと想定すると、再量子化は、秒当たり、３０，０００×２×３０＝１．８×１０６回の演算が必要である。ところが、従来のトランスコーダでは、逆量子化あるいは再量子化の秒当たりの演算数は６×６４×１，３５０×３０×ｎｑ＝１５，５５２，０００ｎｑ演算である。ここでｎｑは、係数の量子化のための演算の数である。量子化あるいは逆量子化の演算の数は、実装されている量子化／逆量子化方法に依存するが、２の式の量子化方法が実装されると、ｎｑはおよそ３か４であり、従って、従来のトランスコーダでは、再量子化はおよそ４７ｘ１０６から６２ｘ１０６の演算が必要である。
【００６８】
ランレベル領域閾値
ある好ましい実施形態では、フレームのビットサイズは、ランレベルペアのセットのレベルを再量子化によりゼロにするのではなく、選択的にゼロにすることにより、減少する。この実施形態では、プロセッサ７０６は、ランレベルペアのセットのどのレベルがゼロになるか、そして、レベルがその後ゼロに設定するかを決定する。それらのレベルをゼロに設定後、プロセッサ７０６は、式７を使用して新しいラン値を決定する。プロセッサ７０６は、レベルの規模や周波数などの条件を使用して、どのレベルを選択的にゼロに設定するかを決定するように変更される。プロセッサ７０６は、振幅や周波数両方を基本にレベルを選択的にゼロにする閾値関数を使用して、ランレベルペアのセットのレベルを選択的にゼロにする。人間の目は高周波数よりも低周波数により応答するので、高周波数レベルをゼロにする閾値は、高周波数レベルがもっと多くゼロになるように、低周波数レベルの閾値とは異なる。
【００６９】
ランレベル領域レート制御
図１１を参照すると、ある好ましい実施形態では、プロセッサ７０６は、レート制御装置１１０２を含む。ランバッファ７１６に加えて、レベルバッファ７１８、インデックスバッファ７２０、ビデオ以外のバッファ７２２は上記に説明されたように、また、メモリ７０８も、画像添字バッファ１１０４、スライス添字バッファ１１０６、マクロブロック添字バッファ１１０８、ベクター長コード（ＶＬＣ）テーブルバッファ１１１０、Ｎビットバッファ１１１２を含む。ＶＬＣテーブルバッファ１１１０に保管されているのは、ランとレベルの特定のペアを表す特定のコードである。Ｎビットバッファ１１１２に保管されているのは、ＶＬＣテーブル１１１０に保管された特定コードのそれぞれのサイズである。プロセッサ７０６がビデオフレームを受け取ると、プロセッサ７０６はフレームを解析し、画像ヘッダーや、それぞれのバッファ１１０４、１１０６、１１０８のマクロブロックヘッダーをバッファ化する。さらに、プロセッサ７０６は、スライスヘッダーやマクロブロックヘッダーを処理して、スライスに含まれていたレベルを量子化するために最後に使用された最大量子化パラメータ（Ｑ１ＭＡＸ）や、スライスに含まれていたレベルを量子化するために最後に使用された平均量子化パラメータ（Ｑ１ＡＶＧ）などのさまざまな数量を決定する。さらに、プロセッサ７０６は、各スライスのランレベルペアのセットを処理して、ランの平均（Ｒｕｎ−ａｖｇ）やレベルの絶対値平均（ＬＡＶＧ）などのさまざまな数量を計算する。各スライスに対して、プロセッサ７０６は、インデックスバッファ７２０も使用して、スキャン位置平均を計算する（ＩＡＶＧ）。
【００７０】
レート制御装置１１０２は、削減されたフレームのビットサイズがおよそ希望のビットサイズ（ＮＤに等しくなるように、フレームのビットサイズを変更するためのハイブリッド型再量子化／閾値方法の論理を実装する。通常、希望のビットサイズ（ＮＤ）は、ＤＮＣＳ１１６により、あるいはユーザーインターフェイス（非表示）を使用しているオペレータにより、また、オペレータにより設定された目標のビットレートを基本に、各画像フレームのビット数を決定するフレーム層レート制御アルゴリズムによりトランスコーダ１３４に提供される。
【００７１】
図１２は、プロセッサ７０６により実装された典型的な再量子化閾値化論理を示す。手順１２０２では、フレームは、プロセッサ７０６により受信される。フレームは解析されてメモリ７０８にバッファ化される。レート制御装置１１０２は、個々のスライドベースでハイブリッド型の再量子化閾値方法を実装し、また、アル好ましい実施形態では、スライスにあるランレベルペアのセットは、並列に処理される。典型的に、プロセッサ７０６は、メモリ７０８のスライスの初期の値を維持しながら、作業バッファ（非表示）でスライスを処理する。当業者が認識するように、スライスは、画像の任意部分であり、画像の小部分や大部分を利用する場合があり、本発明の範囲内である。例えば、メディアプロセッサやデジタル信号プロセッサは、以下の技法を使用して処理できる画像の部分を制限する内部キャッシュを持つ場合もある。
【００７２】
レート制御装置１１０２は、なかでも累積された削減エラー（Ｅ）、画像タイプ（Ｐ＿Ｔ）などのようなフレーム全体を処理する場合に使用されるパラメータを初期化する。Ｉ画像、Ｐ画像、Ｂ画像の画像タイプは、画像ヘッダーから決定されるが、画像記述子バッファ１１０４に保管されている。特に、また、レート制御装置１１０２は、フレームのスライス数（ＮＳＬＩＣＥ）やフレームのサイズ合計（ＮＴ）やフレームのコンテンツサイズ合計（ＣＴ）も決定する。本開示の目的として、フレームは、コンテンツ情報と非コンテンツ情報の２種類の情報から構成されると考える。コンテンツ情報は、フレームのランレベルペアのセットの集合で、非コンテンツ情報は、画像ヘッダー、スライスヘッダー、ミクロブロックヘッダー、運動ベクトルなどその他すべてである。さらに、本開示の目的として、フレームのサイズ合計（ＮＴ）は、フレームが圧縮されたときのフレームのサイズとして定義され、フレームのコンテンツサイズ合計（ＣＴ）は、コンテンツ情報の圧縮ビットサイズ、つまり、すべてのランレベルペアと定義される。また、レート制御装置１１０２は、フレーム（Ｎｓ）を削り取るために必要なビット数を決定する。この場合、削り取る量は、希望のビットサイズ（ＮＤ）とビットサイズ合計（ＮＴ）の差、Ｎｓ＝ＮＴ−ＮＤとして定義される。
【００７３】
手順１２０４では、レート制御装置１１２０は、スライスコンテンツサイズＳＳＩＺＥ（Ｋ）や削減閾値ＲＴのような数量を決定し、以下に説明するＮＳＡＶＥＤ（Ｋ）のようなスライス量を初期化する。本開示の目的として、コンテンツサイズであるＳＳＩＺＥ（Ｋ）は、フレームのＫ番目のスライスに対するすべてのランレベルペアの圧縮されたビットサイズとして定義される。ＳＳＩＺＥ（Ｋ）を決定するために、レート制御装置１１０２は、スライスの各ランレベルペア（Ｊ）に対してＶＬＣテーブルバッファ１１１０を確認して、ＶＬＣテーブルバッファ１１１０がそのペアに対応する特定のコードを含むかどうかを決定し、もし含む場合は、レート制御装置１１０２は、Ｎビットバッファ１１１２を使用して、その特定のコードの圧縮ビットサイズ（ＶＬＣＪ）を決定する。考えられるランレベルペアには、ＶＬＣテーブルバッファ１１１０に含まれていないものがあり、このようなランレベルペアは、２４ビット、６ビットエスケープシーケンス、その後に、ラン用の６ビットとレベル用の１２ビットが続く。このように、スライスコンテンツサイズＳＳＩＺＥ（Ｋ）は，次の式により与えられる。
【００７４】
【数２】
2007501577.tif 000004
この場合、Ｎｃｏｅｆ（Ｋ）はスライスのレベル数、ＶＬＣＪはｊ番目のランレベルペアの圧縮されたビットサイズである。ＶＬＣＪは、ｊ番目のランレベルペアが、ＶＬＣテーブルバッファ１１１０にある特定コードの一つでなく、ＮＥＳＣＡＰＥが、ＶＬＣテーブルバッファ１１１０にはないスライスのランレベルペア数である場合にはゼロである。
【００７５】
また、レート制御装置１１０２は、Ｋ番目のスライスであるＮＳＨＡＶＥ（Ｋ）から削減するビット量も決定し、次の式により与えられる。
【００７６】
【数３】
2007501577.tif 000005
この場合、ＮＳＬＩＣＥは、フレームのスライス数、ＫはゼロからＮＳＬＩＣＥ−１までの範囲で、累積削減エラー（Ｅ）は、希望のビット削減と前のスライスに対する実際のビット削減との累積さである。
【００７７】
削減閾値（ＲＴ）は、次の式により与えられる。
【００７８】
【数４】
2007501577.tif 000006
手順１２０６では、レート制御装置１１０２は、スライスを再量子化するかどうかを決定する。一般的に、再量子化をするかどうかの決定は、少なくと部分的に再量子化閾値パラメータ（Ｔ）と削減閾値（ＲＴ）を基本とする。再量子化閾値パラメータ（Ｔ）は、ＤＮＣＳ１１６、あるいは、オペレータによりトランスポンダー１３４へと提供される、あるいは、フレーム層レート制御アルゴリズムにより計算される。典型的に、ＲＴがＴよりも大きければ、スライスは再量子化される。特に、画像タイプおよび／またはスライスを量子化する場合に使用される初期量子化パラメータのようなその他の因子も、再量子化するかどうかの決定で使用される場合がある。決定が再量子化するものでなければ、レート制御装置１１０２は手順１２１２へ進み、そうでなければ、レート制御装置は手順１２０８へと進む。
【００７９】
手順１２０８では、レート制御装置１１０２は、現在のスライスのランレベルペアのセットを再量子化する。ある好ましい実施形態では、スライスのランレベルペアのセットは、本明細で前述された技法を使用して並列に再量子化される。
【００８０】
手順１２１０では、スライスが再量子化された後、レート制御装置１１０２は、再量子化により削減されるビット数を決定する。レート制御装置１１０２は、再量子化されたランレベルペアの新しいコードを決定するＶＬＣテーブルバッファ１１１０と、そのコードのビット数を決定するＮビットバッファ１１１２を使用する。現在のフレームのＫ番目のスライスでは、削減されるビット数は次の式により与えられる。
【００８１】
【数５】
2007501577.tif 000007
この場合、ＶＬＣ＿ＮＥＷＪは、新しいｊ番目のランレベルペアの圧縮されたビットサイズで、新しいｊ番目のランレベルペアが、ＶＬＣテーブルバッファ１１１０にある特定のコードの一つではなく、Ｎ＿ｅｓｃａｐｅｎｅｗが、ＶＬＣテーブルバッファ１１１０にはないスライスのランレベルペアの新しい番号である場合に、ゼロとなる。
【００８２】
次に、手順１２１２では、レート制御装置１１０２は、スライスを閾値するかどうかを決定する。典型的に、閾値の決定は、手順１２０４でゼロに初期化されて、手順１２１０で計算された、削減されたビット数であるＮ＿ｓａｖｅｄ（Ｋ）を少なくとも基本とする。削減されたビット数、Ｎ＿ｓａｖｅｄ（Ｋ）がフライスから削り取るビット数、Ｎ＿ｓｈａｖｅ（Ｋ）以上であれば、レート制御装置１１０２は、手順１２１８へ進む。一方で、Ｎ＿ｓａｖｅｄ（Ｋ）がＮ＿ｓｈａｖｅ（Ｋ）未満であれば、レート制御装置１１０２は手順１２１４へ進み、スライスを閾値化する。閾値化の詳細は以下に提供される。
【００８３】
次に、手順１２１６では、レート制御装置１１０２は、削減されたビット量、Ｎ＿ｓａｖｅｄ（Ｋ）を決定する。削減されたビット量は、例えばＨｕｆｆｍａｎコードのような圧縮形式でスライスを表すために使用されるビット数と、圧縮形式のスライスの初期サイズとの差である。典型的に、削減されたビット量は、スライスから削り取られる希望のビット数には一致しないので、２つの値の差は、Ｅ＝Ｅ＋Ｎ＿ｓｈａｖｅ（Ｋ）−Ｎ＿ｓａｖｅｄ（Ｋ）のように計算されて、累積削減エラー（Ｅ）に追加される。累積削減エラーＥは、次のスライスから削り取られるビット数を計算する方程式で使用される。
【００８４】
手順１２１８では、レート制御装置１１０２は、フレームのすべてのスライスが処理されるかどうかを決定し、すべてを処理する場合は、手順１２０２に戻る。そうでなければ、手順１２０４に戻って、現在のフレームの次のスライスを処理する。上記に説明された処理は、フレームのスライスを処理する観点から説明された。しかしながら、当業者は、別の実施形態では、フレームのスライスを定義しないランレベルのペアのセットは並列処理可能であること、あるいは、ランレベルペアのセットは順次処理可能であることを認識する。このようなすべての実施形態は、本発明の範囲内であることを意図する。
【００８５】
閾値化を詳細に検討する前に、再量子化パラメータの決定方法の記述が決定される。図１３は、χと再量子化パラメータＱ２のグラフであり、χは再量子化後の典型的フレームの合計サイズを、再量子化前の表示フレームの合計サイズで除算した商として定義される。ゾーン１とラベルされた領域では、Ｑ２の規模は最初の量子化パラメータＱ１から、およそα増加するが、画像に直線量子化スケールが使用された場合は３１に等しくなり、非直線量子化スケールが使用された場合は１１２に等しくなる。Ｑ２（ｄχ／ｄＱ２）に関するχの変化率は、Ｑ２＝α、β、δ、εで不連続であり、それぞれの不連続の間でおよそ一定である。Ｑ２＝Ｑ１からＱ２＝αまでの領域は、ゾーン１として定義され、この領域を通じて、再量子化されたフレームのサイズはおよそ１５％の削減しかない。Ｑ２＝βからＱ２＝δまで拡張するゾーン２として定義された領域では、再量子化されたフレームはおよそ６０〜７０％まで削減され、Ｑ２＝εから外側へ拡張するゾーン３として定義された領域では、再量子化されたフレームは、少なくともおよそ７５％まで削減する。図１３に示された結果は、典型的フレームのためのものである。実際の削減量は、フレームのコンテンツ、画像タイプなどその他の変数に応じて変えることができる。その場合も、図１３は、ゾーン１の再量子化はサイズを顕著に削減しないため、ゾーン１ではなくゾーン２（またはゾーン３）の再量子化パラメータを通常使用することが好ましいことを示す。
【００８６】
当業者が認識するように、再量子化パラメータＱ２が増加すると、再量子化により情報が失われ、視聴者には画像の品質低下を招く。このように、画像品質とサイズの間のバランスが、再量子化パラメータＱ２の選択により実現されなければならない。再量子化パラメータＱ２は、このようなパラメータは、再量子化されたフレームのサイズを最大でおよそ１５％削減するだけであるので、ゾーン１から選択しないことが好ましい。代わりに、フレームのサイズのこのような小さい削減のためには閾値化を使用することが好ましい。再量子化が実施されると、ある好ましい実施形態では、再量子化は現在のフレームのサイズをおよそ所望サイズＮＤまで削減して、その後、フレームの合計サイズが望ましいサイズにもっと近づくように、サイズを更に削減するために閾値化が実施される。
【００８７】
表１に、ＤＮＣＳ１１６、あるいは、オペレータにより提供され、再量子化するかどうかを決定する場合にレート制御装置１１０２により使用される調整可能なパラメータをリストする。調整可能なパラメータは、好ましい実施形態では配列である再量子化閾値パラメータ（Ｔ）、画像タイプ（Ｐ＿Ｔ）の関数である量子化閾値配列ＱＴ、スライスのレベルの絶対値平均に関連付けられたパラメータであるＬＭＩＮを含む。
【００８８】
【表１】
2007501577.tif 000008
図１４は、さらに、手順１２０６でレート制御装置１１０２により実装される現在のフレームを再量子化するかどうかを決定するための典型的手順１４００を示す。手順１４０２では、再量子化フラグが、「偽」のデフォルト位置に設定されて、カウンタ「Ｊ」がゼロに初期化される。次の手順１４０４では、レート制御装置１１０２は、Ｊ＝０の場合、削減閾値ＲＴが再量子化閾値パラメータＴ（Ｊ）より小さいかどうかを決定する。条件ＲＴ＜Ｔ（０）が真であれば、レート制御装置１１０２は、手順１４１８に入って、終了するが、この場合には、削減閾値が小さいので、現在のフレームは閾値化だけによりおよそ希望のサイズまで削減されるので、再量子化が実施されないことを意味する。一方で、条件ＲＴ＜Ｔ（０）が偽であれば、レート制御装置１１０２は手順１４０６に進む。
【００８９】
手順１４０６では、レート制御装置１１０２は、カウンタＪを増加させて、手順１４０８では、レート制御装置１１０２は、（ｉ）ＲＴ＜Ｔ（Ｊ）、（ｉｉ）Ｑ１ＭＡＸ＜Ｑ２（Ｊ，Ｐ＿Ｔ）、（ｉｉｉ）ＬＡＶＧ＞ＬＭＩＮの条件のすべてが真であるかどうかを決定する。この場合、Ｑ１ＭＡＸは、スライスを構成するランレベルペアのセットに対応するＤＣＴブロックを量子化するために使用された最大量子化パラメータで、ＬＡＶＧは、スライスを構成するレベルの絶対値平均である。スライスの絶対値平均ＬＡＶＧが１に等しい場合、これは、スライスの少なくとも半分のレベルが絶対レベル１を持つことを意味する。従って、２Ｑ１の因子による再量子化が、スライスの半分以上のレベルをゼロにすることが必要になる。従って、この状況では、代わりに、スライスのサイズを削減するために再量子化の閾値化を使用することが好ましい。３つすべての条件が真である場合にだけ、制御装置１１０２は手順１４１６に進む。一方で、３つの条件のうち少なくとも１つが偽であれば、レート制御装置１１０２は手順１４１０に進み、カウンタ「Ｊ」を増加させる。手順１４１２では、レート制御装置１１０２は、カウンタＪが４未満であるかどうかを決定する。レート制御装置１１０２は、手順１４０８のすべての条件が真になるまで、あるいはＪ＝４になるまで、手順１４０８、１４１０、１４１２をループする。
【００９０】
Ｊ＝４の場合に到達する手順１４１２では、レート制御装置１１０２は、削減閾値ＲＴが再量子化閾値パラメータＴ（４）より大きいかどうかを決定する。大きければ、レート制御装置１１０２は、手順１４１６に進み、再量子化フラッグを「真」に設定する。条件ＲＴ＞Ｔ（４）が満たされなければ、レート制御装置１１０２は最後の手順１４１８に入って、再量子化フラッグをまたデフォルトの「偽」に設定して終了する。しかし、レート制御装置１１０２が、手順１４０８あるいは１４１４のいずれかから手順１４１６に到達したら、再量子化フラッグは「真」に設定されて、レート制御装置１１０２は最後の手順１４１８に入って終了する。
【００９１】
手順１４０８に戻ると、手順１４０８の３つの条件は、再量子化するかどうかを決定するための典型的条件である。３つの条件は、最大初期量子化パラメータや画像タイプなどのさまざまな要素が、決定において、削減閾値やスライスのレベルの絶対値平均などと一緒に含まれるように使用される。当業者は、上記に挙げた条件は制限されないリストであり、再量子化するかどうかを選択的に決定するために、上記に挙げた条件以外にその他の条件やもっと多くの条件あるいはもっと少ない条件も使用できること認識する。
【００９２】
ある好ましい実施形態では、ランレベルペアのセットの再量子化パラメータＱ２は、典型的に、２Ｑ１または４Ｑ１が選択されるが、この場合、Ｑ１はランレベルペアのセットのための初期量子化パラメータである。再量子化パラメータＱ２を２Ｑ１または４Ｑ１に選択することは、計算の能率性のために実行され、２Ｑ１または４Ｑ１を使用するかどうかの決定は、少なくとも部分的には、再量子化されたフレームの所望サイズを基本とする。しかしながら、２Ｑ１または４Ｑ１の選択は実装の問題であり、別の実施形態では、再量子化パラメータＱ２は、任意の量子化パラメータにできることに注意する。典型的に、Ｑ２のデフォルト位置は２Ｑ１に等しいが、条件ＲＴ＞Ｔ（４）またはその他の所定の値が真であれば、Ｑ２の値はＱ２＝４Ｑ１のように選択される。再量子化パラメータＱ２を２Ｑ１または４Ｑ１に選択することにより、再量子化パラメータＱ２は、それぞれ、図１３のゾーン２または３から選択される。さらに、現在のスライスのランレベルペアの各セットは、同じ初期量子化パラメータにより量子化されない場合もあり、この場合には、ランレベルペアの各セットは、初期量子化パラメータの倍数である再量子化パラメータ、できれば、Ｑ２＝２Ｑ１または４Ｑ１を使用して再量子化されることを記憶する。あるいは、スライス全体は、Ｑ２＝２Ｑ１ｍａｘのように、共通の再量子化パラメータを使用して、再量子化できる。
【００９３】
図１５は、Ｉ（０）からＩ（２）までラベルされたスキャンインデックス閾値１５０８とＬ（０）からＬ（２）までラベルされたレベル閾値１５１０を持つ階段関数である典型的な閾値関数１５０２を示す。レート制御装置１１０２は、閾値関数１５０２のしたにあるレベルをゼロにする。１５０６Ａとラベルされたレベルは、スキャン位置がスキャンインデックス閾値Ｉ（０）とＩ（１）の間にあり、絶対値が、スキャンインデックス閾値Ｉ（０）とＩ（１）の間であるレベル閾値Ｌ（０）未満であるため、ゼロにされる。一方で、レベル１５０４Ａは、絶対値がレベル閾値Ｌ（０）を超えるため、ゼロにはされない。同様に、１５０４Ｂとラベルされたレベルは、ゼロにはされず、１５０６Ｂと１５０６Ｃとラベルされたレベルはゼロにされる。ある好ましい実施形態では、レート制御装置１１０２は、スライスのレベルを並列で閾値化する。この実施形態では、スライスを構成するランレベルペアのすべてのセットは、同じ閾値関数により、それぞれ閾値化される。概念上、以下に詳細を述べるように、レート制御装置１１０２は、適切なレベル数がゼロになり、スライスのサイズがおよそ適切量だけ削減されるように、閾値関数１５０２を水平方向と横方向に移動する。
【００９４】
図１６を参照すると、手順１６００は、スライスのレベルを閾値化する典型的な方法を示す。方法は手順１６０２で開始する。手順１６０４では、レート制御装置１１０２は、スライスのサイズが閾値後およそ所望サイズになるように、ゼロにすることが必要な適切なレベル数（Ｎ＿ｔｈｒｅｓｈ（Ｋ））を決定する。現在のフレームのＫ番目のスライスでＮ＿ｔｈｒｅｓｈ（Ｋ）を決定するために、次の式が使用される。
【００９５】
【数６】
2007501577.tif 000009
この場合、Ｎｃｏｅｆ（Ｋ）はＫ番目のスライスにあるレベル数、ＲＫは再量子化によりゼロになったレベル数、Ｒｕｎ＿ａｖｇ（Ｋ）はＫ番目のスライスの平均ラン値、Ａ（）は、Ｒｕｎ＿ａｖｇ（Ｋ）を引数とする重み関数である。ＲＫは手順１２０４でゼロに初期化され、再量子化が実施されれば、ＲＫは、手順１２０８で表化されることに注意する。重み関数Ａ（）は、スライスのラン平均の関数として、ビットからレベルへの関係を強化する。典型的に、ランの平均が増加すると、適用される重みが変化する。例えば、平均ランがゼロでは、ランレベルペアはＶＬＣを使用して能率的にコード化され、従って、Ａ（０）はおよそ１．２の範囲であるように実験的に決定される。ところが、ラン平均が４であれば、ランレベルペアはＶＬＣを使用して能率的にコード化されず、この場合には、Ａ（４）はおよそ０．８の範囲であるように実験的に決定される。
【００９６】
ある好ましい実施形態では、重み関数Ａ（）は、閾値化により削減される実際のビットを基本に手順１２１６で調整される。これにより、ラン平均関数として、重み関数Ａ（）のオンライン学習／フィードバックが可能になる。
【００９７】
次に、手順１６０６では、閾値化パラメータが初期化され、スライスのレベルがバッファ化される。
【００９８】
手順１６０８では、レート制御装置１１０２は、閾値関数の現在の位置を基本に、スライスのレベルの閾値化を実施する。レート制御装置１１０２は、現在のスライスのどのレベルが閾値化関数の下にあるかを決定して、それらのレベルをゼロにする。
【００９９】
手順１６１０では、レート制御装置１１０２は、ゼロになったレベル数がＮ＿ｔｈｒｅｓｈ（Ｋ）に近くなるように、水平方向あるいは横方向に移動させることにより、閾値関数を調整する。あるいは、レート制御装置１１０２は閾値関数を調整しないことを決定する。
【０１００】
手順１６１２では、レート制御装置１１０２は、閾値化を実行したかどうかを決定する。レート制御装置１１０２が終了していれば、メソッドは手順１６１４で終了する。そうでなければ、メソッドは手順１６０８にループして戻る。手順１６０８に入るたびに、スライスのレベルは手順１６０６のバッファ化されたレベルに応じてリセットされる。
【０１０１】
典型的に、閾値化によりゼロに設定されたレベル数は、正確には、Ｎ＿ｔｈｒｅｓｈ（Ｋ）の所望値には等しくならない、あるいは、Ｎ＿ｔｈｒｅｓｈ（Ｋ）の所望値の所定の範囲内にはならない。このように、ある好ましい実施形態では、レート制御装置１１０２は、ランレベルペアのセットを１番目のグループと２番目のグループに区切る。その後、レート制御装置１１０２は、各グループ個別に閾値化関数を調整する。１番目と２番目のグループのゼロになったレベル数合計が、まだ、Ｎ＿ｔｈｒｅｓｈ（Ｋ）の所定の範囲内でなければ、レート制御装置１１０２は、レベルの所定数を２番目のグループから１番目のグループに転送する。レート制御装置１１０２は、２番目のグループから１番目のグループへのレベルの転送を続けて、閾値レベル数を決定し、閾値化レベル数がＮ＿ｔｈｒｅｓｈ（Ｋ）の所定の範囲内になければ、ゼロになったレベルの合計数が所定の範囲内になるまで、２番目のグループから１番目のグループにレベルをさらに転送する。
【０１０２】
ある好ましい実施形態では、レート制御装置１１０２は、状態機械を実装するが、図１７に示されている状態は、閾値化関数のインデックスと閾値レベルを調整するためのものである。状態機械は、途中の状態により、レベル閾値検索の後にスキャンインデックス閾値検索を通過すると考えることができる。当業者は、図１５に示された閾値関数は、３つのレベルを持つ典型的な閾値関数であったこと、および、異なるレベル数を持つ閾値関数は、本発明の範囲内であることを目的とすることを認識する。例えば、以下に説明するように、レート制御装置１１０２は、４つのレベル閾値関数を実装する。状態機械により使用されるパラメータは、手順１６０６で初期化され、表２に示される。
【０１０３】
【表２】
2007501577.tif 000010
パラメータは次のように定義される。
Ｌ（０）：図１５で１５１０Ａとラベルされたインデックスセグメント０のレベル閾値
Ｉ（０）：図１５で１５０８Ａとラベルされたインデックスセグメント０のスキャンインデックス閾値
ＳｐｌｉｔＩｎｄｅｘＶａｌ：分割インデックスが実施されたときに１番目のグループのレベル数
Ф：閾値枠を決定するための調整可能パラメータ
ＵＬ：ゼロにするレベル数の閾値の上限
ＬＬ：ゼロにするレベル数の閾値の下限
α（Ｋ）：α（Ｋ）＝１＋５／／ＱＡＶＧ（Ｋ）、この場合、／／は、切り捨てる整数の除算、ＱＡＶＧ（Ｋ）はスライスの初期量子化パラメータ（Ｑ１）の平均を意味し、パラメータα（Ｋ）は０を超えるインデックスのレベル閾値を設定するために使用される。
ｏｆｆｓｅｔ（１，２，３）：０を超えるインデックスにインデックス閾値を設定するために使用される調整可能パラメータ。
ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ：Ｂフレームには０、Ｐフレームには１
閾値関数のインデックスセグメントゼロの閾値レベル（Ｌ）は２に初期化され、閾値関数の残りの閾値レベルは次のように与えられる。
Ｌ（ｎ）＝Ｌ（ｎ−１）＋α（Ｋ）（１３）
この場合、ｎは１から３の範囲である。レベルは増加されたα（Ｋ）である。α（Ｋ）はＱＡＶＧ（Ｋ）の関数であるので、スライスの初期量子化パラメータ（Ｑ１）の平均、つまり、あるインデックスセグメントから次のセグメントへのレベル閾値の増加は、量子化器スケールに微妙に応答する。
【０１０４】
閾値関数のスキャンインデックス閾値Ｉ（０）が初期化されて、レベル検索（ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳとＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態）の間ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ（Ｉ（０）＝ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ）で保持され、ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ状態に入ると、インデックス検索の開始時にＩＳＴＡＲＴに初期化されるが、この場合ＩＳＴＡＲＴは次のように与えられる。
ＩＳＴＡＲＴ＝γ×（１−ＲＴ）×１ＡＶＧ（Ｋ）                           （１４）
ここで、ＩＡＶＧ（Ｋ）はＫ番目のスライスのレベルの平均スキャン位置で、γは調整可能パラメータでおよそ２．７５である。
【０１０５】
ｎ＝１から３までの残りのスキャンインデックス閾値では、Ｉ（ｎ）は次のように与えられる。
Ｉ（ｎ）＝Ｉ（ｎ−１）＋ｏｆｆｓｅｔｎ
ここでｏｆｆｓｅｔｎは表２で指定される。
【０１０６】
ｎ＝０から３までのすべてのスキャンインデックス閾値Ｉ（ｎ）は、スキャン位置は６３に実行するだけなので、６３以下であることを確認される。Ｉ（ｎ）が６３より大きければ、６３に設定するだけである。
【０１０７】
図１７を参照すると、条件式が破線の楕円の内側に示されており、状態機械により実施される動作に下線が付けられている。状態機械はＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳである初期状態１７０２で開始する。
ＳＴＡＴＥＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳ：
初期化状態１７０２の目的は、閾値レベルのカウント（ｃｎｔ）が目標のカウント（Ｎ＿ｔｈｒｅｓｈ（Ｋ））を超えるまでレベル閾値Ｌ（０）を増やすことであるが、ここで、ｃｎｔはゼロにされたレベル数である。この状態では、状態機械がｃｎｔ＞Ｎ＿ｔｈｒｅｓｈ（Ｋ）を満足する最低閾値レベルを決定しようとするので、閾値関数は水平方向に移動しない。代わりに、Ｉ（０）はｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎで保持されて、最低レベル閾値Ｌ（０）がα（Ｋ）だけ増やされる。レベル閾値Ｌ（１）、Ｌ（２）、Ｌ（３）は、条件ｃｎｔ＞Ｎ＿ｔｈｒｅｓｈ（Ｋ）を満たすまで、ｎ＝１、２、３に対してＬ（ｎ）＝Ｌ（ｎ−１）＋α（Ｋ）として再計算される。典型的に、ランレベルペアのセットのレベルは、小さいスキャン位置の周囲で最も密集して更新されるので、インデックス検索中、ｃｎｔは、例えば、Ｉ（０）＞ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎにしてＩ（１）−Ｉ（３）を再計算するというように、閾値関数を右側にずらすことにより、後退する（少なくなる）。
【０１０８】
この状態で反復する回数を制限するには、成功しない反復の所定回数（ＩＴ）後にα（Ｋ）よりも高い増加を使用する場合があるが、ここで、ＩＴは例えばＩＴ＝５などの調整可能パラメータである。例えば、反復回数がＩＴより大きい場合、インデックスセグメントゼロの閾値レベル（Ｌ（０））は次のように与えられる。
Ｌ（０）＝Ｌ（０）＋２×ｉｔｅｒａｔｉｏｎｓ                            （１６）
あるいは、バイナリ検索を採用できる。ほとんどの場合、特にランレベルペアのセットが残余情報を含むＢ画像やＰ画像では、最終レベル閾値はしばしば、最初に予測したＬ（０）＝２である。
【０１０９】
閾値関数のレベルが大きくなった後、条件ｃｎｔ＞Ｎ＿ｔｈｒｅｓｈ（Ｋ）が満たされることなどが必要であれば、閾値レベルＬ（０）の高さは最後の増加がα（Ｋ）であった場合に、最低と考えられる。この場合、レベル閾値は最終で、状態機械はＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＲＡＲＣＨ状態１７０６へ移動する。
【０１１０】
しかしながら、代わりにこの状態により反復の大きい回数を取ってＬ（０）を検索して、最後の増加がα（Ｋ）によるものでなければ、閾値レベルＬ（０）は最低ではない。この場合、状態機械はＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１７０４へ進む。
ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ：
ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳ状態１７０２がＮ＿ｔｈｒｅｓｈ（Ｋ）レベルよりも多くゼロになり、最後の増加数がα（Ｋ）よりも大きくなった後に、ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１７０４に入る。典型的に、この状況は、反復数が大きく、レベルの増加が方程式１６により与えられるときに発生する。
【０１１１】
この状況では、閾値レベルＬ（０）は最低ではなく、インデックス閾値をｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎで保持している間、条件ｃｎｔ＜Ｎ＿ｔｈｒｅｓｈ（Ｋ）が満たされるまで、あるいは、閾値レベルＬ（０）が初期値に戻るまで、ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１７０４はＬ（０）をα（Ｋ）だけ減少させる。条件ｃｎｔ＜Ｎ＿ｔｈｒｅｓｈ（Ｋ）が満たされると、閾値レベルは小さくなりすぎているので、閾値レベルはα（Ｋ）だけ増加される。
【０１１２】
ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ：
ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ状態１７０６の目的は、例えば、β＝４のように、増加によりスキャンインデックス閾値を増加あるいは減少させることにより、最終スキャンインデックス閾値がある近似を迅速に見つける。初期スキャンインデックス閾値Ｉ（ｎ）（ｎ＝０…３）は手順１６０６で設定された。ｃｎｔがインデックス枠、ＬＬの下限よりも小さく、状態機械の最後の反復のｃｎｔの値（ｌａｓｔ＿ｃｎｔ）がＬＬ以下であった場合、インデックス閾値Ｉ（０）はβだけ増やされる。一方で、ｃｎｔが上限ＵＬよりも大きく、前のｃｎｔの値（ｌａｓｔ＿ｃｎｔ）がＵＬ以上であった場合、インデックス閾値Ｉ（０）はβだけ増やされる。ｎ＝１から３までのその他のインデックス閾値Ｉ（ｎ）は、前述の式（１５）に指定されたように、Ｉ（０）の新しい値の関数として設定される。
【０１１３】
ｃｎｔがＵＬより先行するｃｎｔ（ｌａｓｔ＿ｃｎｔ）がＵＬより小さい場合、高速インデックス検索が左に行き過ぎた（低周波数）。この場合、インデックス閾値Ｉ（０）は、β−１だけ増加させられて、状態は、ＭＯＶＩＮＧ＿ＬＥＦＴ状態１７１０に変更される。
【０１１４】
ｃｎｔがＬＬより小さいが、先行するｃｎｔ（ｌａｓｔ＿ｃｎｔ）がＬＬを超えた場合は、高速インデックス検索が右に行き過ぎた（高周波数）。この場合、インデックス閾値Ｉ（０）はβ―１だけ減らされて、状態はＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１７０８に変更される。
【０１１５】
ＭＯＶＩＮＧ＿ＲＩＧＨＴ：
ＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１７０８で、ｃｎｔはＵＬに対して確認される。ｃｎｔ＞ＵＬであれば、スキャンインデックス閾値Ｉ（０）は１だけ増やされる。ｃｎｔがＬＬ未満になれば、ＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１７０８はインデックス１つ分行き過ぎた。この場合、スキャンインデックス閾値Ｉ（０）は１だけ減らされて、状態機械はＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２に進み、ここで、ＳｐｌｉｔＩｎｄｅｘＶａｌが８に設定される。
【０１１６】
上記いずれの条件も満たされない場合、つまり、ＬＬ≦ｃｎｔ≦ＵＬの場合は、状態機械はＤＯＮＥ状態１７１４に進み、ここで、状態機械は「実行終了」状態に戻り、停止する。
【０１１７】
ＭＯＶＩＮＧ＿ＬＥＦＴ：
ＭＯＶＩＮＧ＿ＬＥＦＴ状態１７１０では、ｃｎｔはＵＬに対して確認される。ｃｎｔ＞ＵＬであれば、スキャンインデックス閾値Ｉ（０）は１だけ増やされる。ｃｎｔがＬＬ未満になれば、ＭＯＶＩＮＧ＿ＬＥＦＴ状態１７１０はインデックス１つ分行き過ぎた。この場合、インデックス閾値Ｉ（０）は１だけ減らされて、状態機械はＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２に進み、ここでＳｐｌｉｔＩｎｄｅｘＶａｌが８に設定される。
【０１１８】
上記いずれの条件も満たされない場合、つまり、ＬＬ≦ｃｎｔ≦ＵＬの場合は、状態機械はＤＯＮＥ状態１７１４に進み、ここで、状態機械は「実行終了」状態に戻り、停止する。
【０１１９】
ＳＰＬＩＴ＿ＩＮＤＥＸ：
ＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２は、スライスのすべてのレベルが同等に処理されないように、ＳｐｌｉｔＩｎｄｅｘＶａｌにより指定されているように、スライスのレベルを２つのセグメントに分ける（あるいはセグメント化する）。状態機械がＳＰＬＩＴ＿ＩＮＤＥＸ状態に入るまで有効な閾値演算は、ＳｐｌｉｔＩｎｄｅｘＶａｌ＝０を持っているので、この時点まで、分割インデックス閾値はない。
【０１２０】
ＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２の１つの理由は、Ｉ（０）＝ｔの特定の値で閾値化すると、ｃｎｔ＞ＵＬになり、Ｉ（０）＝ｔ＋１による閾値化はｃｎｔ＜ＬＬになることである。この場合、ｔはＭＯＶＩＮＧ＿ＬＥＦＴ状態１７１０あるいはＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１７０８により決定される。この場合、枠内にあるｃｎｔ（ＬＬ＜ｃｎｔＵＬ）には、インデックス閾値Ｉ（０）のスキャン位置を見つけることが不可能である。従って、レベルの１番目のセグメントでは、インデックス閾値Ｉ（０）がｔに設定され、２番目のセグメントでは、インデックス閾値Ｉ（０）がｔ＋１に設定される。両方のセグメントのｃｎｔ合計がＵＬ未満であれば、状態機械はＤＯＮＥ状態１７１４に進み、ここで、状態機械は「実行終了」状態に戻り、停止する。一方で、両方のセグメントのｃｎｔ合計がＵＬ未満でなければ、もっと多くのレベルが１番目のセグメントから２番目のセグメントに移動するように、ＳｐｌｉｔＩｎｄｅｘＶａｌが増やされる。ｃｎｔが状態（ｃｎｔ＜ＵＬ）に到達すると、状態機械はＤＯＮＥ状態１７１４に進み、ここで、状態機械は「実行終了」状態に戻り、停止する。２つのパーティションで分割インデックスを実施するための典型的コードを以下に示す。１番目のパーティションは０からＮｃｏｅｆｆ（Ｋ）−ＳｐｌｉｔＩｎｄｅｘＶａｌ−１まで実行し、２番目のパーティションはＮｃｏｅｆｆ（Ｋ）−ＳｐｌｉｔＩｎｄｅｘＶａｌからＮｃｏｅｆｆ（Ｋ）−１まで実行する。パラメータＳｐｌｉｔＩｎｄｅｘＶａｌは、パーティションの間の分割線を置く場所を制御する。これは、閾値係数のカウントがあるスキャンインデックス閾値で大きすぎる（ＵＬを超える）が、１つ隣のインデックスで小さすぎる（ＬＬ未満）であるとき、微調整を効果的に与える。従って、ＳｐｌｉｔＩｎｄｅｘＶａｌがゼロ以外に設定されていると、閾値化は、１番目のパーティションに対してスキャンインデックスＩ（０）で開始し、２番目のパーティションに対してスキャンインデックスＩ（０）＋１で開始する閾値関数により実行される。
【０１２１】
ＳｐｌｉｔＩｎｄｅｘＶａｌは、スライス閾値化の開始時点でゼロに初期化されて、状態機械により、ＬＬとＵＬにより定義される枠内の閾値係数のカウントを移動するように変更される。
残りのレベルとインデックス閾値を設定：
Ｌ（ｎ）＝Ｌ（ｎ−１）＋α（Ｋ）        （１≦ｎ≦３）
Ｉ（ｎ）＝Ｉ（ｎ−１）＋ｏｆｆｓｅｔｎ（１≦ｎ≦３）
レベル（レベル（ｊ）を最初の値にリセット
Ｌｏｏｐ  ｗ  ｏｖｅｒ  ４  ｔｈｒｅｓｈｏｌｄｓ  ［Ｌ（０）Ｉ（０）］ｔｏ［Ｌ（３）Ｉ（３）］
｛
Ｌｏｏｐ  ｉ  ｆｒｏｍ  ０  ｔｏ  Ｎｃｏｅｆｆ（Ｋ）−ＳｐｌｉｔＩｎｄｅｘＶａｌ−１
｛
ｉｆ  ａｂｓ（Ｌｅｖｅｌ（ｉ）  ＞Ｌ（ｎ）  ＡＮＤ  Ｓｃａｎ−Ｐｏｓｉｔｉｏｎ（ｉ）＞Ｉ（ｎ）−１
｛
Ｌｅｖｅｌ（ｉ）＝０
｝
｝
｝
Ｌｏｏｐ  ｗ  ｏｖｅｒ  ４  ｔｈｒｅｓｈｏｌｄｓ  ［Ｌ（０），Ｉ（０）］ｔｏ［Ｌ（３）Ｉ（３）］
｛
Ｌｏｏｐ  ｉ  ｆｒｏｍ  Ｎｃｏｅｆｆ（Ｋ）−ＳｐｌｉｔＩｎｄｅｘＶａｌ  ｔｏ  Ｎｃｏｅｆｆ（Ｋ）−１
｛
Ｉｆ  ａｂｓ（Ｌｅｖｅｌ（ｉ）  ＞Ｌ（ｎ）  ＡＮＤ  Ｓｃａｎ−Ｐｏｓｉｔｉｏｎ（ｉ）＞Ｉ（ｎ）
｛
Ｌｅｖｅｌ（ｉ）＝０
｝
｝
｝
【０１２２】
ランレベル領域運動補償
別の好ましい実施形態では、ランレベル領域トランスコーダ１３４は、ランレベル領域のレベルを再量子化および／またはレベルを選択的にゼロにするだけでなく、ランレベル領域で、運動補償を相互コード化フレーム似て起用する。図１８は、ＶＬＤ７０４とＶＬＥ７１０を示し、その機能構成要素のいくつかはプロセッサ７０６に含まれる。プロセッサ７０６は、メモリ７０８、逆量子化器１８０２、ドリフト制御装置１８０４、量子化器１８０６を含む。
【０１２３】
逆量子化器１８０２は、ＶＬＤ７０２からランレベルペアのセットを受信する。セットの中のレベルは、アップストリームＭＰＥＧエンコーダにより、量子化Ｑ１に量子化されている。逆量子化器１８０２は、ＭＰＥＧ−２のようなＭＰＥＧ標準に応じて、式（３）が与えるように量子化パラメータＱ１により、セットの中のレベルを乗算する。
【０１２４】
ドリフト制御装置１８０４は、各セットは｛ｒ，ｌ｝により意味される量子化されていないランレベルペアのセットを受信し、以下に詳細を説明するランレベル領域の便宜的な運動制御のための論理を実装する。
【０１２５】
メモリ７０８は、ＤＣＴ領域運動補償行列（Ｇ）、現在のフレームバッファ、参照フレームバッファを含む。現在のフレームバッファと参照フレームバッファは、フレームをバッファ化するために使用されるが、この場合、フレームは、ランレベルペアのセットのグループから構成され、ランレベルペアのセットはピクセルのブロックを表すＤＣＴ係数のブロックを表す。プロセッサ７０４は、特に、更新されたランレベルペアのセットを作成する必要に応じて、参照フレームとＤＣＴ領域運動補償行列（Ｇ）を使用して、現在のフレームを処理する。量子化器１８０６は、新しい量子化パラメータＱ２を使用して更新されたランレベルペアのセットを量子化して、ドリフト制御装置１８０４は、ランレベルペアの再量子化されたセットのための新しいランを計算する。好ましい実施形態では、ドリフト制御装置１８０４は、方程式７を使用して、ランレベル領域の再量子化されたランレベルペアのセットの欄を計算する。ドリフト制御装置１８０４は、ＶＬＥ７１０に更新された再量子化されたランレベルペアのセットを提供し、前述のようにエンコードする。
【０１２６】
前述のように、相互コード化されたフレームは、参照フレームのブロックからのピクセル情報を残余フレームのピクセルに追加することにより、ＭＰＥＧデコーダで生成される。ＭＰＥＧデコーダは、相互コード化されたフレームのヘッダーに含まれる運動ベクトルを使用して、参照フレームからのピクセル値のブロックを相互コード化されたフレームニ変換する。典型的に、１つ以上の参照フレームから検索された情報にある運動補償ブロックは、１つ以上の参照ブロックの部分から構成される。図１９は、運動ベクトルの両方の構成要素がブロックサイズの整数倍、例えば、８ピクセルではない場合に発生する一般的な状況を示す。運動補償ブロック１９０２は、１−４にラベルされた４つのサブブロック１９０４と残余ブロック（非表示）から構成される。各サブブロック１９０４は、参照ブロック１９０６の部分である。サブブロック１９０４（１）は、「Ａ」をピクセルの列、「Ｂ」をピクセルの行とした場合、サイズが（ＡｘＢ）であり、参照ブロック１９０６（１）の右下隅に対応する。サブブロック１９０４（２）は、サイズが（Ａ×（８‐Ｂ））であり、参照ブロック１９０６（２）の左下隅に対応する。サブブロック１９０４（３）は、サイズが（（８‐Ａ）×Ｂ））であり、参照ブロック１９０６（３）の右上隅に対応する。サブブロック１９０４（４）は、サイズが（（８−Ａ）×（８−Ｂ））であり、参照ブロック１９０６（４）の左上隅に対応する。運動ベクトルｒ１−ｒ４は、サブブロック１９０４（１）−１９０４（４）が適切に配置されるように、１９０６（１）−１９０６（４）のような参照ブロックを変換する。
【０１２７】
行列形式では、運動補償ブロック１９０２は、ｄｍｃにより表示されて、次の方程式により与えられる。
【０１２８】
【数７】
2007501577.tif 000011
この場合、ｄｉは、次の方程式により与えられる８ｘ８の行列である。
ｄｉ＝ｈｉｎｒｂｉｗｉｎｃ   （１８）
この場合、ｂｉはｉ番目の参照ブロック１９０６で、ｎｒとｎｃはサブブロック１９０４（ｉ）のそれぞれ行と列数で、ｈｉｎｒとｗｉｎｃは、定義サブマトリックスを持つ上下斜めの行列の形式である。４つのサブブロック１９０４のｈ行列は次のようになる。
【０１２９】
【数８】
2007501577.tif 000012
ｗ行列は次のようになる。
【０１３０】
【数９】
2007501577.tif 000013
方程式１８に離散余弦変換を適用すると、以下のようになる。
【０１３１】
【数１０】
2007501577.tif 000014
ｈｉｎｒとｗｉｎｃ行列はユニタリ直交であるので、ＤＣＴ演算は配分する。方程式１７から１９のすべての行列はサイズが８×８であるので、Ｄ、Ｄｉ、Ｂｉ行列の要素を所定の順序に配列することにより、方程式１９ｂの各構成要素である図３Ａに示されたこのようなスキャン順序は、次のように書き換えることができる。
【０１３２】
Ｄ’ｉ＝Ｇｉ（Ｈｉｎｒ，Ｗｉｎｃ）Ｂ’ｉ       （２０）
ここで、プライム化された行列はサイズが６４×１で、ＨｉとＷｉの行列関数であるＧはＨｉとＷｉ行列から計算される６４×６４行列で、添え字「ｉ」はｉ番目の参照ブロックを意味する。図１９に示されているように、「ｉ」は通常１から４である。しかし、明確にするために、添え字「ｉ」が落とされ、参照フレームから現在のフレームまで広がる運動ベクトルの構成要素の範囲は、ブロックのそれぞれの整数を意味する。
【０１３３】
すべてサイズが同じ（Ｎ×Ｎ）である行列ａ、ｂ、ｃ、ｄ、ｅを考えると、
ａ＝ｃｂｄ＝（ｃｂ）ｄ＝ｅｄ            （２１）
ここで、行列ａの構成要素（ｎ，ｍ）が次の式で与えられる。
【０１３４】
【数１１】
2007501577.tif 000015
ａとｂ行列の各要素は、スキャン順列に１対１にマップされており、スキャン順列（ａ０＝ａ０，０）の１番目の要素は次のとおりである。
【０１３５】
【数１２】
2007501577.tif 000016
ｆの各要素は、スキャン順序に応じて、項ごとに項で決定される。例えば、スキャン順序の使用は図３Ａに示されており、Ｎ＝８、ｂ０＝ｂ０，０、ｂ１＝ｂ０，１、ｂ２＝ｂ１，０、…ｂ６３＝ｂ７，７となり、ｆ０，０＝ｃ０，０ｄ０，０、ｆ０，１＝ｃ０，０ｄ１，０、ｆ０，２＝ｃ０，１ｄ０，０、…ｆ０，６３＝ｃ０，７ｄ７，０である。
【０１３６】
同様な方法で、本開示の目的ではＤＣＴ領域運動補償（ＭＣ）行列と呼ばれているＧ行列の要素は、見つかる。ある好ましい実施形態では、メモリ７０８は、運動保証ブロック内のすべての可能性ある整数ピクセルサブブロック配置を考えて、Ｇ行列の完全なセットを含む。当業者がよく理解するように、ＭＰＥＧ−２は、整数ピクセル変換の一次結合により実現される、サブブロックの半分のピクセル変換を許可する。明確にするために、参照フレームから相互コード化されたフレームにピクセルのブロックを変換する運動ベクトルは、整数変換と見なされるが、当業者は、半整数変換を理解し、このような変換は本発明の範囲と考えられる。
【０１３７】
別の好ましい実施形態では、メモリ７０８は、Ｇ’として表示される部分行列の完全なセットを含む。この実施形態では、部分行列Ｇ’は、完全な６４×６４行列Ｇの削り取られたバージョンである。Ｇ’は完全なＧ行列の低周波構成要素を含む。Ｇ’の使用は、ある高い周波数の運動補償が失われることになるが、人間の目は高周波の変化にはあまり応答しないので、利用者のためのサービスの品質は実質的には影響されない。もちろん、サービスの品質は、Ｇ’の削減量により、Ｇ’のサイズはＳＴＳ１００のオペレータにより決定される。
【０１３８】
方程式２０は、ＤＣＴ領域運動補償の実施の基本を提供する。しかしながら、ＶＬＤ７０４の出力は、ランレベル（ＲＬ）ペア２１６のセットを含み、スキャン順序の中のゼロとゼロ以外の係数から構成される６４要素配列の簡略形式である［ｒ０、ｌ０、ｒ１、ｌ１、…ｒｎ−１、ｌｎ−１、ｒｎ、ｌｎ］Ｔの形式である。このように、方程式１３を使用するためには、ランレベルペアのセットは、６４要素配列に拡張される必要がある。ランレベルペアのセットを拡張して行列の乗算をする代わりに、指定のランレベルペアのセットからの情報を使用して、指定のランレベルペアのセットの運動補償を計算する計算的に能率的な方法が、採用できる。まず、Ｇ（Ｈｎｒ，Ｗｎｃ）行列が行配列ｇｎ（Ｈｎｒ，Ｗｎｃ）を定義する。つまり、
【０１３９】
【数１３】
2007501577.tif 000017
ここで、ｇｎ（Ｈｎｒ，Ｗｎｃ）は、Ｇ（Ｈｎｒ，Ｗｎｃ）のｎ番目の行である。指定のランレベルペアのセットでは、スキャン位置配列は、方程式６により与えられるランレベルペアのセットとスキャン位置配列の要素に関連付けられる。変更されたサブ行列Ｇ’は、Ｇ（Ｈｎｒ，Ｗｎｃ）行列の選択した行から構成されるが、スキャン位置を基本に決定される。選択した行は、次の方程式から決定される。１番目に選択した行は
ｎ＝r0  （２５ａ）
で、以降の行は
ｎ＝ｉｎ−１＋ｒｎ＋１    （２５ｂ）
この場合、「ｉｎ」はスキャン位置配列のｎ番目の要素で、ｒｎはラン配列のｎ番目の要素である。例えば、図４Ｂに示された典型的なランレベルペアのセットを考えると、図１０Ａに示された対応するラン配列１００２、レベル配列１００４、スキャン位置配列１００６である。この例では、変更されたサブ行列Ｇ’は次のようになる。
【０１４０】
Ｇ’＝［ｇ０，ｇ２，ｇ６，ｇ７，ｇ９，ｇ１０，ｇ１３，ｇ１９］ （２６）
この場合、レベル配列１００４の値に対応する選択した行であり、
Ｄ＝Ｇ’Ｌ      （２７）
この場合、Ｌはレベル配列行列１００４である。
【０１４１】
ランレベル領域運動補償
図２０から２２は、ランレベル領域トランスコーダ１３４により実装された、ランレベル領域の運動補償をトランスコードされたフレームに適用するための典型的論理を示す。図２０では、手順２０００は、特に、再量子化または閾値化、あるいは再量子化と閾値化両方を使用して、フレームのビットサイズを選択的に削減するトランスコーダ１３４に応答して、トランスコーダ１３４内で運動補償方法を適用するためのある実施形態を示す。図２１では、制限のない典型的手順２１００は、運動補償方法のある実施形態を示す。図２２では、無制限の典型的手順２２００は、再量子化や閾値化、あるいは再量子化と閾値化両方により導入されて、図２１で示された運動補償方法で使用されるドリフトを累積するある実施形態を示す。図２０から２２では、再量子化パラメータがＱ１からＱ２に変更された場合の再量子化により処理されたレベルや、閾値化により処理されたレベルは、例えばｌ’のようにプライムにより表示されるが、再量子化されていない（量子化パラメータの変更）、あるいは閾値化されていないレベルは、例えばｌのようにプライムされない。
【０１４２】
図２０を参照すると、手順２００２では、プロセッサ７０６は、ＶＬＤ７０４から現在のフレームを受信する。現在のフレームは、特に、ヘッダー、｛ｒ，ｌ（Ｑ１）｝により表示される量子化されたランレベルペアのセットを含む。現在のフレームが相互コード化されていれば、特に運動ベクトルも含む。再量子化および／または閾値化の順序は、相互コード化されたフレームのレベル内のドリフトである。従来のフレームをピクセル領域値に変換し直すトランスコーダでは、ドリフトは、トランスコード前とトランスコード後の参照フレームの差に標準運動補償を実施して、結果のＤＣＴを実施することにより、補償される。累積ドリフト（Ｄ）は、累積されたドリフトのセットから構成され、各セットは、ピクセルのマクロブロックに対応し、累積されたドリフトのセットはランレベル領域にある。累積したドリフトの各セットは、それに関連付けられたスキャン意思配列を持つ。ＧＯＰの１番目の画像であるＩ画像が受信されると、累積ドリフト（Ｄ）はゼロに設定される。Ｉ画像が再量子化および／または閾値化により処理されると、ランレベルペアの各セットのドリフト、つまり、受信レベルと処理後のレベルの差が決定されて、その後、ドリフトのスキャン位置が決定される。あるいは、受信レベルのスキャン位置が、ドリフトのスキャン位置に使用できる。この場合、特定のドリフトセットの場合、特定のスキャン位置に関連付けられたドリフトは、受信レベルと処理後のレベルに変化がなければ、ゼロになる。累積ドリフト（Ｄ）はバッファ化されて、相互コード化されたフレームの修正に使用される。
【０１４３】
手順２００４では、ドリフト制御装置１８０４は、現在のフレームのスライスの処理に使用されたパラメータを初期化する。特に、ドリフト制御装置１８０４は、現在のフライスの削減するビット量を決定し、量子化パラメータと閾値化パラメータを初期化する。手順２００６では、ド絵リフト制御装置１８０４は、現在のフレームがＩ画像であるかどうかを決定する。現在のフレームがＩ画像であれば、ドリフト制御装置１８０４は手順２００８に進み、運動補償を現在のフレームの現在のスライスに適用する。典型的に、Ｐ画像とＢ画像も運動補償の一部として再量子化されるので、以下で検討する。現在のフレームがＩ画像であると決定後、あるいは、現在のフレームがＩ画像ではないと決定して現在のフレームの現在のスライスに運動補償を適用後、ドリフト制御装置１８０４は手順２０１０に進み、スライスを再量子化するかどうか、現在のフレームがＩ画像かどうかを決定する。ドリフト制御装置１８０４は、両方の条件が満たされた場合のみ、つまり、現在のフレームがＩ画像で、再量子化されるべき場合に、手順２０１２に進む。前述したように、再量子化するかどうかの決定は、削減閾値（ＲＴ）、画像タイプ、最大初期量しかパラメータやその他のパラメータなど、これらに限定されないが、このような複数のパラメータを基本にすることが好ましい。以下に検討するように、現在のフレームがＢ画像あるいはＰ画像であれば、手順２００８で実施された運動補償の一部として、ドリフト制御装置１８０４は、現在のスライスを再量子化するかどうかを決定し、再量子化する場合は、現在のスライスを再量子化する。
【０１４４】
手順２０１４では、ドリフト制御装置１８０４は、現在のスライスを閾値化するかどうかを決定する。典型的には、前述したように、閾値化するかどうかの決定は、削減閾値（ＲＴ）、再量子化により削減されるビット数、レベルの絶対値平均など、部分的にパラメータを基本にする。しかしながら、もっと少ないパラメータ、別のパラメータ、もっと多いパラメータなどその他のパラメータも閾値化の決定に使用できる。
【０１４５】
レート制御装置１８０４が、現在のフライスを閾値化することを決定すると、ドリフト制御装置１８０４は手順２０１６に進み、現在のスライスを閾値化する。ある好ましい実施形態では、閾値化は、図１６に示された閾値化論理を図１７に示された状態機械といっしょに使用して実施される。閾値化後のレベルはＬ’（Ｑ）と表示されることに注意する（この場合、Ｑは初期量子化パラメータのＱ１、あるいは最終量子化パラメータのＱ２）。現在のスライスのレベルが再量子化されていなければ、Ｑ１の関数であり、再量子化されていれば、Ｑ２の関数である。
【０１４６】
閾値化後、あるいは閾値化をしない後、ドリフト制御装置１８０４は手順２０１８に進み、現在のフレームがＢ画像であるかどうかを決定し、Ｂ画像であれば、手順２０２０に進み、再量子化および／または閾値化により発生したレベルのドリフトを累積する。ドリフトは、画像のグループ全体で累積され、画像の新しいグループの開始時にゼロにリセットされる。
【０１４７】
手順２０２２では、ドリフト制御装置１８０４は、現在のフライスが現在のフレームの最後のスライスであったかどうかを決定し、最後であった場合は手順２０２４に進む。一方で、現在のスライスが現在のフレームの最後のスライスでなければ、ドリフト制御装置１８０４は手順２００４に戻って、終了するまで現在のフレームのスライスを処理する。
【０１４８】
手順２０２４では、ドリフト制御装置１８０４は、ラランレベルペアの処理後のセット｛ｒ，ｌ’（Ｑ）  ｝のランを更新して、｛ｒ’，ｌ’（Ｑ）｝で表示される処理後のランレベルペアの新しいセットを作成し、現在のフレームが参照フレーム、つまりＩ画像かＰ画像であれば累積ドリフトを更新する。累積ドリフトの更新は、手順２０２０で計算された現在の累積ドリフト（Ｔ）を累積ドリフト（Ｄ）にバッファ化することにより実行される。ある好ましい実施形態では、再量子化と閾値化は並列で実行され、処理後のレベル（再量子化および／または閾値化されたレベル）に関連付けられた新しいランの計算は並列で実行される。ある好ましい実施形態では、ドリフト制御装置１８０４は、新しいランの計算に方程式６と７を採用する。
【０１４９】
手順２０２６では、プロセッサ７０６は、処理するために、現在のフレームの処理後のランレベルペア｛ｒ’，ｌ’（Ｑ）｝をＶＬＥ７１０に送信する。ある好ましい実施形態では、処理後のランレベルペア｛ｒ’，ｌ’（Ｑ）｝は、ゼロ以外の値を持つレベルに関連付けられた更新後のラン値（ｒ’）とゼロの値を持つレベルに関連付けられた最初のラン値（ｒ）を含む。この場合、ＶＬＥ７１０は、レベルがゼロのランレベルペア、つまり、（ｒ，０）として表示されるランレベルペアを無視するように変更される。
【０１５０】
図２１を参照すると、手順２１００は、ランレベル領域で運動補償を適用する典型的方法を示す。手順２１０２では、ドリフト制御装置１８０４は、スライスのレベルを逆量子化して、ｌとして表示される未量子化レベルを作成する。図２２に示されている運動補償とドリフト累積は、未量子化レベルで実施される。
【０１５１】
手順２１０４では、ドリフト制御装置１８０４は、メモリ７０８からＤＣＴ領域ＭＣ行列（Ｇ）と累積ドリフト（Ｄ）の選択したセットを抽出する。メモリ７０８にあるＤＣＴ領域ＭＣ行列のそれぞれは、運動ベクトルに関連付けられて、ドリフト制御装置１８０４は、現在のスライスのマクロブロックの運動ベクトルを使用して、抽出するＤＣＴ領域ＭＣ行列（Ｇ）を決定する。累積されたドリフトの選択したセットは、現在のフレームの運動補償されたブロックに対する参照フレームに対応して、ドリフト制御装置１８０４は、現在のフレームのヘッダー情報を使用して、抽出する累積されたドリフトのセット（Ｄｉ）を決定する。ここで、「ｉ」は累積されたドリフトのセットが参照フレームの「ｉ番目」のブロックに対応することを表す。現在のフレームの運動ベクトルは、累積されたドリフトのセットを現在のフレームのランレベルペアのセットにマップする。現在のフレームがＰ画像である場合、累積されたドリフトのセットは、Ｉ画像あるいはＰ画像のような先行する参照フレームからである。現在のフレームがＢ画像である場合、累積されたドリフトのセットは、Ｉ画像あるいはＰ画像のような先行する参照フレームからや次のＰ画像参照フレームから選択される。好ましい実施形態では、ドリフト制御装置１８０４は、累積されたドリフトの各抽出されたセットに関連付けられたスキャン位置配列１００６を抽出する。
【０１５２】
手順２１０６では、累積されたドリフトの各抽出セット、Ｄｉに対して、ドリフト制御装置１８０４は関連付けられたスキャン位置配列を使用して、変更したサブ行列（Ｇ’）を作成するために、その関連付けられたＤＣＴ領域ＭＣ行列（Ｇ）から選択した行を抽出する。変更したサブ行列Ｇ’の行は、スキャン位置配列から決定される。また、ドリフト制御装置１８０４は、スキャン位置配列を現在のスライスのランレベルペア｛ｒ，ｌ｝に関連付ける。スキャン位置配列の要素は、ランレベルペアの各セットのゼロ以外のＤＣＴ係数のスキャン位置である。現在のフレームのスキャンパターンが参照スキャンパターンでなければ、スキャン位置は現在のフレームのスキャン位置にマップされる。つまり、図３Ａに示されたスキャン位置のような特別なスキャンパターンは、参照、あるいはデフォルトのスキャンパターンであり、スキャンパターンが変更すれば、スキャンパターンは、参照スキャンパターンに対応するようにもう一度マップされる。
【０１５３】
手順２１０８では、現在のスライスのランレベルペア｛ｒ，ｌ｝の各セットに対して、ドリフト制御装置１８０４は、累積されたドリフトＤの関連付けられたセットで変更されたサブ行列Ｇ’の行列乗算により、累積されたドリフトに対して運動補償を計算して、積（Ｇ’Ｄ）を数量化されていないレベルに追加する。積（Ｇ’Ｄ）と量子化されていないレベルは、その後、メモリ７０８にバッファ化される。典型的に、図１９に示されているように、現在のフレームのブロックは、参照フレームの４つのブロックから情報を受け取り、従って、レベル
【０１５４】
【数１４】
2007501577.tif 000018
の各セットに対して、受け取る。概念的には、変更されたサブ行列Ｇ’は、参照フレームにあるブロックに関連付けられた累積されたドリフトを現在のフレームの運動補償ブロックにマップする。
【０１５５】
ある好ましい実施形態では、ランレベルペア｛ｒ，ｌ｝の指定されたセットがランレベルペア｛ｒ、ｌ｝の指定されたセットに運動補償累積ドリフトを加えたものに等しいというような便宜的な方法が採用されるが、この場合、運動補償累積ドリフトのスキャン位置だけが現在のランレベルペア｛ｒ，ｌ｝の指定されたセットに追加される。便宜的な加算は、運動補償ドリフト（Ｇ’Ｄ）をレベルに追加するために、ランレベルペアのセットが完全な長さの配列、つまり６４の要素の配列に拡張されないように、実施される。
【０１５６】
手順２１１０では、ドリフト制御装置１８０４は、現在のスライスが再量子化されるかどうかを決定する。典型的に、再量子化するかどうかの決定は、上記ですでに説明された論理を使用して実施される。
【０１５７】
手順２１１２は、量子化器１８０６が量子化パラメータＱ２を使用して現在のスライスのレベルを再量子化する。ランレベルペアの再量子化されたセットは、｛ｒ，ｌ’（Ｑ２）｝により表示される。一方で、ドリフト制御装置１８０４が現在のスライスを再量子化しないことを決定した場合、手順２１１４では、量子化器１８０６は量子化パラメータＱ１を使用して現在のスライスのレベルを再量子化する。量子化されていないレベルが量子化レベルｌ（Ｑ）に変換しなおされた後、ドリフト制御装置１８０４は、運動補償により終了する。
【０１５８】
図２２は、ドリフトを累積するドリフト制御装置１８０４により実施される典型的な手順を示す。手順２２０２では、ドリフト制御装置１８０４は、処理されたレベル（ｌ’（Ｑ））を逆量子化して、現在のスライスのレベルの各セットに量子化されていない処理済みレベル（ｌ’）を作成する。現在のフレームがＩ画像であれば、ドリフト制御装置１８０４は初期量子化レベル（ｌ’（Ｑ１））を逆量子化して、現在のスライスのレベルの各セットに量子化されていない未処理レベル（ｌ）を作成する。しかしながら、現在のフレームがＩ画像でなければ、運動補償が手順２１０８で適用されたときに量子化されていない未処理レベル（ｌ）が作成されてバッファ化される。この場合、現在のスライスの量子化されていない未処理レベル（ｌ）はメモリ７０８から抽出される。
【０１５９】
手順２２０４では、ドリフト制御装置１８０４は、現在のスライスのランレベルペアの各セットに関連付けられた現在の累積ドリフトを計算して、一時配列（Ｔ）の現在の累積ドリフトをバッファ化する。現在のスライスのレベルの指定されたセットに対して、現在の累積ドリフトは、前の参照フレームからの累積ドリフトの運動補償（Ｇ’Ｄ）の和に、瞬間的なドリフトである量子化されていない未処理レベル（ｌ）と量子化されていない処理レベル（ｌ’）の差、つまり
【０１６０】
【数１５】
2007501577.tif 000019
となる。前の参照フレームの累積ドリフト（Ｄ）は、現在のフレーム全体が処理されるまで更新されないので、累積ドリフトは現在のフレームの結果を含まない。
【０１６１】
ある好ましい実施形態では、メモリ７０８は、Ｂ画像を適切に処理するために直前の参照フレーム（Ｉ画像あるいはＰ画像）と現在の参照フレーム（Ｐ画像）の両方を含むことができるように、少なくとも２つのフレーム分のドリフトを含む。
【０１６２】
ある好ましい実施形態では、ビデオフレーム、トップビデオフィールド、ボトムビデオフィールドのようなフレームの別のタイプのドリフトがメモリ７０８に個別に累積される。この実施形態では、プロセッサ７０６は、現在のフレームのヘッダー情報を使用して、現在のフレームがビデオフレーム、つまり順次走査式、あるいはトップビデオフィールドあるいはボトムビデオフィールトであるかどうかを決定して、運動補償のためにメモリ７０８からのドフィルとの適切なセットを抽出してドリフトの適切なセットを更新する。
【０１６３】
強調しておかなければならないのは、明確にするために、運動補償の手順は順番に説明されたことである。しかしながら、当業者が認識するように、手順は違う順序および／または並列で実装可能である。ある好ましい実施形態では、量子化、逆量子化、新しいラン値の計算、行列の一次演算のような、しかしこれらに限定されない手順が、計算効率強化のために並列に実行される。さらに、運動補償は、ランレベルペアのセットがＤＣＴ領域行列に拡張されないので、ランレベル領域で実施されることに注意する。このように、計算の能率性は、ランレベルペアのセットをＤＣＴ行列に逆スキャンせず、処理後、ＤＣＴ領域行列をランレベルペアにスキャンし直すことにより持たれる。
【０１６４】
ある好ましい実施形態では、運動補償は、サイズが６４×１の拡張レベル配列を使用して実装される。この実施形態では、量子化ランレベルペア｛ｒ，ｌ（Ｑ１）｝のセット、量子化されないランレベルペア｛ｒ，ｌ｝のセット、再量子化されたランレベルペア｛ｒ，ｌ’（Ｑ２）｝のセット、量子化されず再量子化されたランレベルペア｛ｒ’，ｌ’｝のセットが拡張されて、レベルがスキャン順序にある。ランレベルペアのさまざまなセットが拡張されるので、手順２０１４、２０２６、２０３４の行列演算はスキャン順序に応じて各レベルで実行される。
【０１６５】
ある好ましい実施形態では、Ｂ画像は運動補償なしで処理される。つまり、Ｂ画像では手順２１００がとばされる。Ｂ画像の運動補償は、Ｂ画像は参照画像として使用されず、Ｂ画像のドリフトエラーは累積されないので、次の画像の運動補償で使用されるので、とばすことができる。多くのＭＰＥＧ−２ストリームはほとんどのＢ画像を含むので、Ｂ画像の運動補償を実行しないことにより、計算の能率性が強化される。
【０１６６】
本発明の典型的な好ましい実施形態が示され、説明されたが、当業者には、記述されたように、発明に多くの変更、修正、代替が行われる場合があること、いずれも本発明の精神から外れるものではないことが認識される。従って、変更、修正、代替は、本発明の範囲内として見なされる。また、本発明の上記実施形態、特に「好ましい実施形態」は、実装の可能性のある、制限を意図しない例にすぎないこと、発明の本質を明確に理解するために設定されているにすぎないことが強調されなければならない。
【図面の簡単な説明】
【０１６７】
【図１】図１は、本発明の好ましい実施形態が実装される可能性のある加入者テレビシステムのようなブロードバンド通信システムの構成図である。
【図２】図２は、エンコーダの構成図である。
【図３】図３Ａと３Ｂは、ジグザグスキャン順序の図である。
【図４】図４Ａは、量子化行列の図であり、図４Ｂは、図４Ａで示した量子化行列のランレベルペアのセットの図であり、図４Ｃは、図４Ａで示した量子化行列のランレベルペアのセットの図である。
【図５】図５Ａと５Ｂは、一連画像の具体例の画像である。
【図６】図６Ａは、図５Ｂで示した画像の部分画像であり、図６Ｂは、残像である。
【図７】図７は、トランスコーダの構成図である。
【図８】図８は、デジタルストリームの処理で実施する手順のフローチャートである。
【図９】図９は、デジタルストリームの再量子化で実施する手順のフローチャートである。
【図１０Ａ】図１０Ａは、ラン配列、レベル配列、スキャン位置配列の構成図を示す。
【図１０Ｂ】図１０Ｂは、図１０Ａで示したラン配列、レベル配列、スキャン位置配列の再量子化後の構成図を示す。
【図１０Ｃ】図１０Ｃは、更新されたラン配列、更新されたレベル配列、更新されたスキャン位置配列の構成図を示す。
【図１１】図１１は、トランスコーダのプロセッサの構成図である。
【図１２】図１２は、再量子化／閾値化の実装に実施する手順のフローチャートである。
【図１３】図１３は、ビット削減と再量子化パラメータのグラフである。
【図１４】図１４は、再量子化の決定に実施する手順のフローチャートである。
【図１５】図１５は、閾値関数の図である。
【図１６】図１６は、閾値化を実施する手順のフローチャートである。
【図１７】図１７は、閾値状態機械の状態の構成図である。
【図１８】図１８は、トランスコーダの一部要素の構成図である。
【図１９】図１９は、動画圧縮ブロックの構成図である。
【図２０】図２０は、デジタルストリームの再量子化と閾値化を実施する手順のフローチャートである。
【図２１】図２１は、動画圧縮で実施する手順のフローチャートである。
【図２２】図２２は、ドリフトの累積で実施する手順のフローチャートである。
【図１】
2007501577.tif 000020
【図２】
2007501577.tif 000021
【図３】
2007501577.tif 000022
【図４】
2007501577.tif 000023
【図５】
2007501577.tif 000024
【図６】
2007501577.tif 000025
【図７】
2007501577.tif 000026
【図８】
2007501577.tif 000027
【図９】
2007501577.tif 000028
【図１０Ａ】
2007501577.tif 000029
【図１０Ｂ】
2007501577.tif 000030
【図１０Ｃ】
2007501577.tif 000031
【図１１】
2007501577.tif 000032
【図１２】
2007501577.tif 000033
【図１３】
2007501577.tif 000034
【図１４】
2007501577.tif 000035
【図１５】
2007501577.tif 000036
【図１６】
2007501577.tif 000037
【図１７】
2007501577.tif 000038
【図１８】
2007501577.tif 000039
【図１９】
2007501577.tif 000040
【図２０】
2007501577.tif 000041
【図２１】
2007501577.tif 000042
【図２２】
2007501577.tif 000043
【国際調査報告】
2007501577.tif 000044
2007501577.tif 000045
2007501577.tif 000046