(57)【要約】本開示は、イメージデータを縮小サイズに圧縮するために、データを符号化するための技術を説明する。本技術は、送信のためにイメージを縮小サイズにトランスコードすることにおいて、特に効果的であることができる。符号化デバイスは、イメージをトランスコードするために一様に全体のイメージに影響を及ぼすビットレート制御技術を使用して、許容ファイルサイズにイメージをトランスコードすることができる。例えば、符号化デバイスは、全体のイメージにわたってファイルサイズを一様に縮小するために、ビットレート（Ｒ）と０値量子化変換係数の数との間のほぼ直線関係の関数(function of the near linear relationship between bitrate (R) and the number of zero-valued quantized transform coefficients)として、１つまたは複数の量子化テーブルを修正することができる。代替的に、あるいは、さらに、符号化デバイスは、イメージの特定の局在化された領域だけに影響を及ぼすビットレート制御技術を使用して、イメージをトランスコードすることができる。
2010529748.tif 000002
【特許請求の範囲】
【請求項１】
デジタルイメージデータを処理する方法であって、
計算されたスケーリングファクタの関数として１つまたは複数の量子化テーブルをスケーリングすることと、
前記１つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化することと、
前記デジタルイメージデータの前記複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成する前記ｎ番目ブロックにおいて理想的に符号化されるべきビットの数との間の差異をトラッキングすることと、
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除くことと、
を備えている方法。
【請求項２】
初期で符号化された前記イメージデータのビットレートに基づいて前記ターゲットビットレートを達成する０値量子化変換係数の望ましい数と、初期で符号化された前記イメージデータの０値量子化変換係数の数と、前記ターゲットビットレートと、を識別することと、
前記０値量子化変換係数の望ましい数に基づいて前記１つまたは複数の量子化テーブルをスケーリングすることにおいて使用される、前記スケーリングファクタを計算することと、
をさらに備えている、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の量子化テーブルをスケーリングすることは、輝度量子化テーブルと色度量子化テーブルをスケーリングすることを備えており、なお、前記色度量子化テーブルは、前記輝度量子化テーブルよりも多くスケーリングされている、請求項１に記載の方法。
【請求項４】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングすることは、
前記計算されたスケーリングファクタによって前記輝度量子化テーブルの第１の部分をスケーリングすることと；
第２のスケーリングファクタによって前記輝度量子化テーブル及び前記色度量子化テーブルの第２の部分をスケーリングすることと、なお、前記第２のスケーリングファクタは、前記計算されたスケーリングファクタの関数として決定される；
を備えており、前記計算されたスケーリングファクタと第２のスケーリングファクタは、１よりも大きくあるいは１に等しく、さらには、前記計算されたスケーリングファクタは、前記第２のスケーリングファクタよりも小さい、請求項３に記載の方法。
【請求項５】
前記輝度量子化テーブル及び前記色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり、前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、その後で前記色度量子化テーブルの高周波数量子化エントリ、が続く単独シーケンスに順序づけることと；
前記計算されたスケーリングファクタによって、前記シーケンスの最初のｋ量子化エントリをスケーリングすることと；
前記第２のスケーリングファクタによって、前記シーケンスの残りのＮ−ｋ量子化エントリをスケーリングすることと、なお、Ｎは、前記シーケンスの量子化エントリの合計数である；
をさらに備えている請求項４に記載の方法。
【請求項６】
前記１つまたは複数のビットを取り除くことは、
２乗に等しいあるいは２乗に近い値を有する１つまたは複数の量子化変換係数を選択することと、
前記選択された量子化変換係数が前記のそれぞれの２乗よりも少なくなるまで、前記１つまたは複数の選択された量子化変換係数をデクリメントすることと、
を備えている、請求項１に記載の方法。
【請求項７】
２乗に等しいあるいは２乗に近い１つまたは複数の量子化変換係数を選択することは、前記のそれぞれの２乗より下の値にデクリメントするとき、０と等しくないであろう１つまたは複数の量子化変換係数を選択することを備えている、請求項６に記載の方法。
【請求項８】
前記１つまたは複数のビットを取り除くことは、
１つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される、複数のビットを含む少なくとも１つのビットシーケンスを識別することと、
前記ビットシーケンスが前記マーカとしてもはや作用しないように剰余に対応する前記ビットシーケンスの前記複数のビットのうちの少なくとも１つを変更することと、
を備えている、請求項１に記載の方法。
【請求項９】
前記差異が前記スレッシュホールドより下にあるとき、前記１つまたは複数の追加ビットを取り除くことなく、前記１つまたは複数のスケーリングされた量子化テーブルを使用して前記イメージデータの前記ブロックを符号化すること、をさらに備えている請求項１に記載の方法。
【請求項１０】
デジタルイメージデータを処理するための装置であって、
前記デジタルイメージデータの複数のブロックのピクセルを符号化することにおいて使用される１つまたは複数の量子化テーブルを保存するメモリと、
計算されたスケーリングファクタの関数として前記１つまたは複数の量子化テーブルをスケーリングし、前記１つまたは複数のスケーリングされた量子化テーブルを使用して前記デジタルイメージデータの複数のブロックのピクセルを符号化し、前記デジタルイメージデータの前記複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数と、ターゲットビットレートを達成する前記ｎ番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除く、符号化モジュールと、
を備えている装置。
【請求項１１】
前記符号化モジュールは、輝度量子化テーブルと色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり、前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、そして、前記色度量子化テーブルの高周波数量子化エントリ、が続く単独のシーケンスに順序づけ、前記計算されたスケーリングファクタによって、前記シーケンスの最初のｋ量子化エントリをスケーリングし、前記計算されたスケーリングファクタの関数として決定される第２のスケーリングファクタによって、前記シーケンスの残りのＮ−ｋ量子化エントリをスケーリングしており、
ここにおいて、Ｎは、前記シーケンスの量子化エントリの合計数であり、前記計算されたスケーリングファクタ及び第２のスケーリングファクタは、１よりも大きいあるいは１に等しく、前記計算されたスケーリングファクタは、前記第２のスケーリングファクタよりも小さい、請求項１０に記載の装置。
【請求項１２】
前記符号化モジュールは、２乗に等しいあるいは２乗に近い値を有する１つまたは複数の量子化変換係数を選択し、前記の１つまたは複数の選択された量子化変換係数を、前記の選択された量子化変換係数が前記のそれぞれの２乗よりも少なくなるまで、デクリメントする、請求項１０に記載の装置。
【請求項１３】
前記符号化モジュールは、１つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される複数のビットを含む少なくとも１つのビットシーケンスを識別し、前記ビットシーケンスが前記マーカとしてもはや作用しないように前記ビットシーケンスの前記複数のビットのうちの少なくとも１つを変更する、請求項１０に記載の装置。
【請求項１４】
前記符号化モジュールは、前記差異が前記スレッシュホールドより下になるとき、前記１つまたは複数の追加ビットを取り除くことなく、前記スケーリングされた量子化テーブルを使用して前記イメージデータの前記ブロックの符号化を再開する、請求項１０に記載の装置。
【請求項１５】
前記装置は、無線通信デバイスハンドセット内で組み込まれており、前記無線通信デバイスハンドセットは、前記の符号化された前記の符号化されたブロックのピクセルを送信するための送信機をさらに備えている、請求項１０に記載の装置。
【請求項１６】
デジタルイメージデータを処理するための装置であって、
計算されたスケーリングファクタの関数として１つまたは複数の量子化テーブルをスケーリングするための手段と; 
前記１つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化するための手段と;
前記デジタルイメージデータの前記複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成する前記ｎ番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするための手段と；
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除くための手段と；
を備えている装置。
【請求項１７】
インストラクションを有しているコンピュータ可読媒体、を備えているデジタルイメージデータを処理するためのコンピュータプログラムプロダクトであって、前記インストラクションは、
計算されたスケーリングファクタの関数として１つまたは複数の量子化テーブルをスケーリングするためのコードと; 
前記１つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化するためのコードと;
前記デジタルイメージデータの前記複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数と、ターゲットビットレートを達成する前記ｎ番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするためのコードと；
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除くためのコードと；
を備えている、
コンピュータプログラムプロダクト。
【請求項１８】
前記インストラクションは、
初期で符号化された前記イメージデータのビットレートに基づいて、前記ターゲットビットレートを達成する０値量子化変換係数の望ましい数と、初期で符号化された前記イメージデータの０値量子化変換係数の数と、前記ターゲットビットレートと、を識別するためのコードと、
前記の０値量子化変換係数の望ましい数に基づいて、前記１つまたは複数の量子化テーブルをスケーリングすることにおける使用のための前記スケーリングファクタを計算するためのコードと、
をさらに備えている、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記１つまたは複数の量子化テーブルをスケーリングするためのコードは、輝度量子化テーブルと色度量子化テーブルをスケーリングするためのコードを備えており、前記色度量子化テーブルは、前記輝度量子化テーブルよりも多くスケーリングされている、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２０】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングするためのコードは、
前記計算されたスケーリングファクタによって前記輝度量子化テーブルの第１の部分をスケーリングするためのコードと；
第２のスケーリングファクタによって前記輝度量子化テーブル及び前記色度量子化テーブルの第２の部分をスケーリングするためのコードと、なお、前記第２のスケーリングファクタは、前記計算されたスケーリングファクタの関数として決定される；
を備えており、前記の計算されたスケーリングファクタと第２のスケーリングファクタは、１よりも大きくあるいは１に等しく、さらには、前記の計算されたスケーリングファクタは、前記第２のスケーリングファクタよりも小さい、請求項１９に記載のコンピュータプログラムプロダクト。
【請求項２１】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングするためのコードは、
前記輝度量子化テーブル及び前記色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、その後で前記色度量子化テーブルの高周波数量子化エントリ、が続く単独シーケンスに順序づけるためのコードと；
前記の計算されたスケーリングファクタによって、前記シーケンスの最初のｋ量子化エントリをスケーリングするためのコードと；
前記第２のスケーリングファクタによって、前記シーケンスの残りのＮ−ｋ量子化エントリをスケーリングするためのコードと、なお、Ｎは、前記シーケンスの量子化エントリの合計数である；
を備えている、請求項２０に記載のコンピュータプログラムプロダクト。
【請求項２２】
前記１つまたは複数のビットを取り除くためのコードは、
２乗に等しいあるいは２乗に近い値を有する１つまたは複数の量子化変換係数を選択するためのコードと、
前記１つまたは複数の選択された量子化変換係数を、前記の選択された量子化変換係数が前記のそれぞれの２乗よりも少なくなるまで、デクリメントするためのコードと、
を備えている、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２３】
２乗に等しいあるいは２乗に近い１つまたは複数の量子化変換係数を選択するためのコードは、前記のそれぞれの２乗より下の値にデクリメントするとき、０と等しくないであろう１つまたは複数の量子化変換係数を選択するためのコードを備えている、請求項２２に記載のコンピュータプログラムプロダクト。
【請求項２４】
前記１つまたは複数のビットを取り除くためのコードは、
１つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される複数のビットを含む少なくとも１つのビットシーケンスを識別するためのコードと、
前記ビットシーケンスが前記マーカとしてもはや作用しないように、前記ビットシーケンスの前記複数のビットのうちの少なくとも１つを変更するためのコードと、
を備えている、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２５】
前記差異が前記スレッシュホールドよりも下にあるとき、前記１つまたは複数の追加ビットを取り除くことなく、前記１つまたは複数のスケーリングされた量子化テーブルを使用して、前記イメージデータの前記ブロックの前記符号化を再開するためのコード、をさらに備えている請求項１７に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【優先権主張】
【０００１】
本願は、２００７年５月３１日に出願された、米国の仮出願６０／９４１，０４１号の利益を主張し、その全体の内容は、参照により、ここに組み込まれている。
【技術分野】
【０００２】
本開示は、圧縮(compression)に関し、特にイメージ(images)の圧縮に関する。
【背景技術】
【０００３】
送信及び保存のためのイメージファイルへのイメージの圧縮は、様々な応用において不可欠となっており、そして、それは、イメージのインターネット伝送(Internet transmission of images)、デジタルイメージング(digital imaging)、ピクチャメッセージング(picture messaging)、及び同様なものを含む。ジョイントフォトグラフィックエキスパートグループ(Joint Photographic Experts Group)（ＪＰＥＧ）のような、イメージ圧縮技術は、解像度の高いイメージが比較的小さいイメージファイルにおいて保存されることを可能にする。デジタルカメラ及びワイヤレス通信デバイスの収束で、これらのイメージファイルは、今や、無線ネットワーク上で共有されることができる。しかしながら、この共有は、時間及び帯域幅のようなネットワークリソースの点から、損失が大きい可能性がある(may be costly)。これらの損害(cost)を減らすあるいは制限することを目指して、無線ネットワークのプロバイダは、ときどき、ネットワーク上で送信されることができるイメージファイルのファイルサイズに制限を課す。これらのファイルサイズ制約を満たすために、課されたファイルサイズ制限に対するイメージ圧縮は、イメージの質において重大な損失を結果としてもたらす可能性がある。
【発明の概要】
【０００４】
本開示は、イメージデータを縮小サイズに圧縮するために、データを符号化するための技術を説明する。本技術は、送信のためにイメージを縮小サイズにイメージをトランスコードする(transcoding)ときに、特に効果的であることができる。ここにおいて説明されるトランスコード技術は、多くの応用で利用されることができる。本技術が使用されることができるそのような１つの応用は、無線ネットワーク上の送信にある。例えば、ユーザは、デジタルピクチャ(digital picture)を撮るために、イメージキャプチャ性能(image capture capability)を備えたモバイル電話、例えば、いわゆるカメラ付き電話あるいはテレビ電話、を使用することができる。一般的に、キャプチャされたデジタルピクチャは、高解像度イメージ、例えば高解像度のＪＰＥＧイメージ、である。しかしながら、別の電話にキャプチャされたイメージを送信するために、高解像度イメージのイメージファイルは、無線ネットワークサービスプロバイダの送信要件を満たすために、あるいは、受信デバイスのスクリーンサイズ及び色制限にうまく合わせるために、より小さいファイルサイズ、例えばより低い解像度、にトランスコードされる必要があるかもしれない。
【０００５】
一態様においては、方法は、デジタルイメージデータを処理することを備えており、そしてそれは、計算されたスケーリングファクタの関数(a function of a computed scaling factor)として１つまたは複数の量子化テーブル(one or more quantization tables)をスケーリングすることと、１つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセル（a plurality of blocks of pixels）を符号化することと、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数(a number of bits encoded at an nth block of the plurality of blocks of pixels of the digital image data)とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数(a number of bits that ideally should be encoded at the nth block to achieve a target bitrate)との間の差異をトラッキングすることと、そして差異がスレッシュホールド(threshold)よりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用される１つまたは複数のビットを取り除くことと、を備えている。
【０００６】
別の態様において、デジタルイメージデータを処理するための装置(apparatus)は、デジタルイメージデータの複数のブロックのピクセルを符号化することにおいて使用される１つまたは複数の量子化テーブルを保存するメモリと、計算されたスケーリングファクタの関数として１つまたは複数の量子化されたテーブルをスケーリングし、１つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除く、符号化モジュールと、を備えている。
【０００７】
別の態様では、デジタルイメージデータを処理する装置は、計算されたスケーリングファクタの関数として１つまたは複数の量子化テーブルをスケーリングするための手段と、１つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセルを符号化するための手段と、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするための手段と、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用される１つまたは複数のビットを取り除くための手段と、を備えている。
【０００８】
別の態様では、デジタルイメージデータを処理するためのコンピュータプログラムプロダクト(computer-program product)は、インストラクション(instructions)を有しているコンピュータ可読媒体(computer readable medium)を備えている。インストラクションは、計算されたスケーリングファクタの関数として１つまたは複数の量子化テーブルをスケーリングするためのコードと、１つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセルを符号化するためのコードと、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするためのコードと、差異がスレッシュホールドよりも大きいあるいは等しいとき、複数のブロックのイメージデータの部分を符号化するために使用された１つまたは複数のビットを取り除くためのコードと、を備えている。
【０００９】
別の態様では、デジタルイメージデータを処理するための無線通信デバイスハンドセット(wireless communication device handset)は、計算されたスケーリングファクタの関数として１つまたは複数の量子化されたテーブルをスケーリングし、１つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除く、符号化モジュールと、符号化されたブロックのピクセル(encoded blocks of pixels)を送信する送信機と、を備えている。
【００１０】
別の態様では、デジタルイメージデータを処理するための集積回路のデバイス(integrated circuit device)は、計算されたスケーリングファクタの関数として１つまたは複数の量子化されたテーブルをスケーリングし、１つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのｎ番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するｎ番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された１つまたは複数のビットを取り除くように構成された、少なくとも１つのプロセッサを備えている。
【００１１】
別の態様では、デジタルイメージデータを処理する方法は、ターゲットビットレートを達成する０値量子化変換係数の望ましい数を識別することと(identifying a desired number of zero-valued quantized transform coefficients to achieve a target bitrate)、０値量子化変換係数の望ましい数に基づいて、１つまたは複数の量子化テーブルのスケーリングに使用するためのスケーリングファクタを決定することと(determining a scaling factor for use in scaling one or more quantization tables based on the desired number of zero-valued quantized transform coefficients)、決定されたスケーリングファクタの関数として輝度量子化テーブルと色度量子化テーブルをスケーリングすることと(scaling a luma quantization table and a chroma quantization table as a function of the determined scaling factor)、なお、色度量子化テーブルは、輝度量子化テーブルよりも多くスケーリングされており、及び、スケーリングされた輝度及び色度量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセルを符号化することと(encoding a plurality of blocks of pixels of the digital image data using the scaled luma and chroma quantization tables)、を備えている。
【００１２】
別の態様では、デジタルイメージデータを処理する方法は、デジタルイメージデータの少なくとも１ブロックのピクセルについて複数の量子化された変換係数を得ることと、２乗の値(a value that is a power of two)を有する複数の量子化された変換係数のうち少なくとも１つを選択することと、１つまたは複数の選択された量子化された変換係数の値から、１の値を差し引くことと、そして、複数の量子化された変換係数を符号化することと、を備えている。
【００１３】
別の態様では、デジタルイメージデータを処理する方法は、ビットシーケンスを得るためにデジタルイメージデータの少なくとも１ブロックのピクセルで符号化することと、１ゼロバイトの付加を必要とするマーカとして作用する方法で配列されるビットシーケンスの複数のビットを識別することと、ビットシーケンスがマーカシーケンス(marker sequence)のようにはもはや作用しないようにビットシーケンスのビットのうちの１つを変更することと、そして、ビットシーケンスを送信することと、を備えている。
【００１４】
本開示で説明された技術は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらのいずれの組み合わせで、インプリメントされることができる。ソフトウェアでインプリメントされる場合には、ソフトウェアは、プロセッサで実行されることができ、そしてそれは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいはデジタルシグナルプロセッサ（ＤＳＰ）、あるいは、他の同等な集積あるいはディスクリート論理回路を指すことができる。技術を実行するソフトウェアは、コンピュータ可読媒体に最初に(initially)保存され、プロセッサによってロードされ、実行されることができる。したがって、本開示はまた、本開示で説明されているようにプロセッサに様々な技術のうちいずれかを実行させるインストラクションを備えているコンピュータ可読媒体を熟考する。いくつかのケースにおいては、コンピュータ可読媒体は、コンピュータプログラムプロダクトの一部分を形成することができ、そしてそれは、製造者に販売される、及び／または、デバイスにおいて使用されることができる。コンピュータプログラムプロダクトは、コンピュータ可読媒体を含むことができ、あるケースにおいては、パッケージング材料(packaging materials)もまた含むことができる。
【００１５】
１つまたは複数の例の詳細は、添付図面において、また、下記の詳細な説明において、説明されている。他の特徴、目的および利点は、詳細な説明、図面、および添付の特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】図１は、ここにおいて説明される符号化技術をインプリメントする例示的なシステム、を図示しているブロック図である。
【図２】図２は、例示的な符号化モジュールをさらに詳細に図示しているブロック図である。
【図３】図３は、ここにおいて説明されているマクロスケールビットレート縮小技術にしたがってイメージをトランスコードする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図４】図４は、マクロスケールビットレート縮小技術とマイクロスケールビットレート縮小技術との組み合わせを使用して、イメージをトランスコードする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図５】図５は、イメージのビットレートをさらに縮小するために、マイクロスケールビットレート制御をインプリメントする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図６】図６は、イメージのビットレートをさらに縮小するために、別のタイプのマイクロスケールビットレート制御をインプリメントする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【詳細な説明】
【００１７】
本開示は、縮小サイズにイメージデータを圧縮するためにデータを符号化するための技術を説明する。本技術は、送信のためにイメージを縮小サイズにトランスコードすることにおいて、特に効果的であることができる。ここにおいて説明されているトランスコード技術は、多くの応用で利用されることができる。技術が利用されることができる１つのそのような応用は、無線ネットワーク上の送信にある。例えば、ユーザは、デジタルピクチャを撮るために、イメージキャプチャ性能を備えたモバイル電話、例えばいわゆるカメラ付電話あるいはテレビ電話、を使用することができる。一般的に、キャプチャされたデジタルピクチャは、高解像度ＪＰＥＧイメージのような高解像度イメージである。しかしながら、キャプチャされたイメージを別の電話に送信するために、高解像度のイメージのイメージファイルは、無線ネットワークサービスプロバイダの送信要件を満たすために、あるいは、受信デバイスのスクリーンサイズ及び色制限をよりよく合わせるために、より小さいファイルサイズ、例えばより低い解像度、にトランスコードされる必要がある可能性がある。
【００１８】
キャプチャされたイメージは、イメージをトランスコードするために一様に全体のイメージに影響を及ぼすビットレート制御技術を使用して、許容ファイルサイズにトランスコードされることができる。そのような一様のビットレート制御技術は、ここにおいて、マクロスケールビットレート制御技術(macroscale bitrate control techniques)と呼ばれる。マクロスケールビットレート制御技術は、マクロスケールビットレート制御を達成する第一手段としての、ビットレートと０値量子化変換係数の数との間のほぼ直線関係の関数(a function of the near linear relationship between bitrate and the number of zero-valued quantized transform coefficients)として、例えば、１つまたは複数の量子化テーブルの修正を含むことができる。
【００１９】
代替的に、あるいは、さらに、キャプチャされたイメージは、イメージの特定の局在化された領域だけに影響を及ぼすビットレート制御技術を使用して、トランスコードされることができる。これらの局在化されたビットレート制御技術は、ここにおいては、マイクロスケールビットレート制御技術(microscale bitrate control techniques)と呼ばれる。この場合、トランスコード技術は、イメージの１サブセットのブロック(a subset of blocks of the image)、のようなイメージの一部分だけに影響する。一態様では、マイクロスケール技術は、より小さい数のビットを備えた係数を表すために係数の値を選択的に減らすことを含んでいる。別の態様では、マイクロスケール技術は、マーカを示すビットシーケンスを調節することによってバイトを詰める(padding)必要をなくすことを含んでいる。
【００２０】
図１は、ここにおいて説明されている符号化技術をインプリメントする例示的なシステム２を図示しているブロック図である。システム２は、ネットワーク８によって接続された、符号化デバイス４と復号デバイス６を含んでいる。符号化デバイス４は、ネットワーク８上の復号デバイス６に対する送信のためにイメージのサイズを縮小するために、あるいは、符号化デバイス４のメモリ内の保存のために、下記で説明されている技術にしたがって、ソースからイメージを得て、イメージを符号化する。符号化デバイス４と復号デバイス６は、パーソナルコンピュータ、モバイル無線電話、サーバ、ネットワーク装置(network appliances)、乗り物に搭載されたコンピュータ、ビデオゲーミングプラットフォーム、ポータブルビデオゲームデバイス、コンピュータワークステーション、コンピュータキオスク、デジタル信号、メインフレームコンピュータ、テレビセットトップボックス(television set-top boxes)、ネットワーク電話、携帯情報端末（ＰＤＡｓ）、モバイルメディアプレイヤー、ホームメディアプレイヤー、デジタルビデオプロジェクター、あるいは、他のタイプの電子デバイス、のような、いずれのワイヤードあるいはワイヤレスデバイス、を備えることができる。一例として、符号化デバイス４あるいは復号デバイス６は、受信、送信、及び他の適切なコンポーネントと一緒に、上記で説明されるようなモバイル電話のような無線通信デバイスハンドセット内で提供されることができる。
【００２１】
符号化デバイス４は、イメージデータを生成するためにメディアソース１０を含むことができる。メディアソース１０は、例えば、対象のシーンのイメージデータをキャプチャするデジタルビデオあるいは静止写真のカメラ、であってもよい。いくつかの態様では、メディアソース１０は、符号化デバイス４内で、統合されてもよい。一例として、メディアソース１０は、いわゆるカメラ付電話あるいはテレビ電話を形成するために、モバイル電話において統合されることができる。代替的に、メディアソース１０は、ワイヤードあるいはワイヤレスリンクを介して、符号化デバイス４に結合された、スタンドアロンデジタルカメラ(stand-alone digital camera)のようなスタンドアロンデバイス(stand-alone device)であってもよい。メディアソース１０の他の例は、イメージアーカイブ(image archive)、あるいは、コンテンツプロバイダからのイメージあるいはビデオのストリーム(a stream of images or video from a content provider)、を含んでいる。
【００２２】
メディアソース１０は、対象のシーンのイメージデータをキャプチャする。キャプチャされたイメージデータは、静止イメージあるいは多分フルモーションビデオシーケンス(possibly full motion video sequences)であってもよく、その場合には、イメージ処理は、生成されたビデオシーケンスの１つまたは複数のイメージフレーム上で実行されることができる。本開示で説明された符号化技術はキャプチャされたデジタルビデオに対して一般的に適用可能であってもよいが、デジタル静止イメージに対するそのような技術の適用は、説明の目的のために記載されるであろう。メディアソース１０は、符号化モジュール１２に対してキャプチャされたイメージデータを提供する。いくつかの態様において、例えば、符号化デバイス４がスタンドアロンメディアソースに結合されるとき、符号化モジュール１２に対してメディアソース１０によって提供されるイメージは、すでに圧縮されてもよい。例えば、スタンドアロンメディアソースは、例えばイメージをキャプチャする際に、イメージを最初に圧縮することができる。代替的に、メディアソース１０は、生イメージデータ(raw image data)を、符号化モジュール１２に提供することができる。
【００２３】
メディアソース１０が符号化モジュール１２に生イメージデータを提供するとき、符号化モジュール１２は、保存及び／または送信のために特定のイメージ圧縮フォーマットにイメージを圧縮するようにキャプチャされたイメージを符号化する。符号化モジュール１２は、ＪＰＥＧ、タグされたイメージファイルフォーマット(Tagged Image File Format)（ＴＩＦＦ）、ビットマップ（ＢＭＰ）、あるいは他のイメージ圧縮フォーマットを含んでいる、多数のイメージ圧縮フォーマットのうちのいずれかを使用してイメージを圧縮することができる。ビデオ(video)の場合には、符号化モジュール１２は、モーションピクチャエキスパートグループ(Motion Pictures Expert Group)（ＭＰＥＧ）、国際電気通信連合（ＩＴＵ）Ｈ．２６４、及び同様なもの、のような任意の数のビデオ圧縮フォーマットを使用してビデオを圧縮することができる。しかしながら、例示的な目的のために、本技術はＪＰＥＧのコンテキストにおいて説明されるだろう。
【００２４】
特に、符号化モジュール１２は、係数のマトリクスの形で周波数ドメイン表示(a frequency domain representation)を生成するために、生のイメージデータに対して、８×８の整数変換あるいは離散コサイン変換（ＤＣＴ）のような整数変換(integer transform)を実行することができる。符号化モジュール１２は、そのあとで、高い周波数係数に関連づけられた情報の量を減らすために、係数のマトリクスの係数を量子化することができる。符号化モジュール１２は、エントロピ符号化のような圧縮符号化アルゴリズムあるいはラン−長さ符号化アルゴリズム(run-length coding algorithm)を使用して、量子化された係数を符号化する。符号化されたイメージは、符号化デバイス４のメモリ（図１で示されていない）に保存されることができる。
【００２５】
符号化モジュール１２は、イメージを複数のサブセットのピクセルに区分することによってイメージを圧縮し、また、個別にサブセットを符号化することによってサブセットのピクセルのそれぞれを圧縮するように、さらに構成されることができる。これらのサブセットのピクセル(subsets of pixels)は、ブロック(blocks)と呼ばれることができる。ＪＰＥＧ規格の場合、例えば、符号化モジュール１２は、８×８ブロックにイメージを区分し、８×８ブロックのそれぞれを別々に圧縮することができる。８個の列あるいは行よりも多いあるいは少ないブロックもまた可能である。
【００２６】
上記で説明されるように、符号化デバイス４のユーザは、複号デバイス６に対し、ネットワーク８上で圧縮されたイメージを送信することを望んでもよい。ネットワーク８は、１つまたは複数のワイヤードあるいはワイヤレス通信ネットワーク、あるいはそれらの組み合わせ、を備えることができる。いくつかの態様において、ネットワーク８のサービスプロバイダは、ネットワーク８上で送信されたイメージに対してファイルサイズ制限を課すことができる。一例として、サービスプロバイダは、３００キロバイト（ＫＢ）の最大ファイルサイズ送信能力を課すことができる。他方で、典型的な５メガピクセルイメージの場合、ファイルサイズは、符号化モジュール４あるいはメディアソース１０のいずれかによって最初に圧縮されるとき、大体１−２メガバイト（ＭＢ）であってもよい。したがって、ネットワーク８のサービスプロバイダの送信要件を満たすために、符号化デバイス４は、より小さいイメージファイルを生成するために、保存されたイメージをトランスコードする必要があるかもしれない。
【００２７】
キャプチャされたイメージを許容ファイルサイズにトランスコードするために、符号化デバイス４は、コーディングビットレートを減らすために、したがって、ファイルサイズを減らすために、ここにおいて説明された技術のうちの１つまたは複数を使用することができる。いくつかの態様では、符号化モジュール１２は、イメージをトランスコードするために、一様に全体のイメージに影響を及ぼすビットレート制御技術を利用することができる。そのような一様のビットレート制御技術は、ここにおいては、マクロスケールビットレート制御と呼ばれる。符号化モジュール１２は、例えば、マクロスケールビットレート制御を達成する第１の手段としてイメージを符号化するために使用された、１つまたは複数の量子化テーブルを修正することができる。下記で詳細に説明されるように、符号化モジュール１２は、ビットレート（Ｒ）と０値量子化変換係数の数との間のほぼ直線関係(the near linear relationship)の関数として、量子化テーブルを修正することができる。ほぼ直線関係は、例えば、いずれのブロックベースの変換コーディングシステムに適用することができる。
【００２８】
代替的に、あるいは、さらに、符号化モジュール１２は、許容ファイルサイズにイメージをトランスコードするために、イメージの特定の局在化された領域だけに影響を及ぼすビットレート制御技術を使用することができる。これらの局在化されたビットレート制御技術は、ここにおいて、マイクロスケールのビットレートの制御(microscale bitrate control)と呼ばれる。この場合、トランスコード技術は、一様に全体のイメージに影響を与えないが、イメージの一部分のみに影響を与える。例えば、マイクロスケールのビットレート制御技術は、イメージの１サブセットのブロックにのみ適用することができる。一態様では、符号化モジュール１２は、２剰である１つまたは複数の量子化された変換係数を識別し、識別された係数の値を１だけ減らすことができる。これは、イメージの品質にあまり影響を与えずに、符号化モジュール１２がより小さい数のビットを備えた係数を表すことを可能にする。別の態様では、符号化モジュール１２は、パディングバイト(padding bytes)を必要とするビットシーケンスの発生を識別し、そしてパディングバイトがもはや必要ではないように、ビットのシーケンスのうちの少なくとも１つを変更することができる。
【００２９】
いくつかの態様では、符号化モジュール１２は、マクロスケールビットレート制御技術と独立して、１つまた複数のマイクロスケールのビットレート制御技術を利用することができる。例えば、符号化モジュール１２は、より小さなファイルサイズにイメージをトランスコードするために、ビットレートを減らすマイクロスケールビットレート制御技術のみを利用することができる。別の例において、符号化モジュール１２は、生イメージデータの初期の符号化の間に、マイクロスケールビットレート制御技術を利用することができる。したがって、マイクロスケールビットレート制御技術は、イメージのファイルサイズを縮小するために、初期の圧縮(initial compression)の間に、使用されることができる。
【００３０】
代替的に、符号化モジュール１２は、必要であれば、ターゲットビットレートを満たすために、更なるビットレート縮小を行なうマクロスケールビットレート制御技術と共にマイクロスケールビットレート制御技術を使用することができる。言い換えると、符号化モジュール１２は、イメージをトランスコードするために２層のビットレート制御、すなわち、マクロスケールレベルの第１層のビットレート制御と、なお、技術は、全体のイメージに均一にそして一様に、グローバルに影響を与える、マイクロスケールレベルの第２層のビットレート制御と、なお、技術は、イメージの特定の局在化された領域に影響を与える、をインプリメントすることができる。この２層の戦略(two-tiered strategy)は、符号化モジュール１２に、ターゲットファイルサイズにアプローチするために、ビットレートを粗く最初に縮小させ、そのあとで、必要に応じて、ビットレートに対する微調整を行わせることを可能にする。このように、マクロスケールビットレート制御技術は、マクロスケールビットレート制御技術が十分ではないとき、さらなる調整を行うことのみできる。例えば、マイクロスケールビットレート制御は、トランスコードプロセスの間に符号化されたビットの数がスレッシュホールドを超えるとき、さらなるビットレート縮小を行なうことのみできる。
【００３１】
より小さいファイルサイズを生成するためにイメージデータのビットレートを減らした後で、送信機１４、あるいは他のネットワークインタフェースは、復号デバイス６に対して、ネットワーク８上でイメージを送信する。復号デバイス６は、受信機１６を介して符号化されたイメージを受信し、復号モジュール１８で符号化されたイメージデータを復号する。復号デバイス６は、多分、メディア表示ユニット２０を介して復号デバイス６のユーザに対して復号されたイメージを提示しており、そしてそれは、適用可能であれば、ディスプレイデバイスとオーディオデバイスを含むことができる。
【００３２】
本開示で説明された技術は、いくつかの利益を提供することができる。特に、トランスコード技術は、十分な品質を維持しながら、イメージのファイルサイズを縮小する。さらに、トランスコード技術は、ネットワークサービスプロバイダによって課された特定のファイルサイズ要件を満たすファイルサイズを縮小するために使用されることができる。このように、符号化デバイス４は、最適な解決法に達するためにイメージを通じて、いくつかの再符号化あるいはいくつかのパスを実行する代わりに、１パスのトランスコードで(in one pass of transcoding)、正しいサイズにイメージをトランスコードすることができる。さらに、イメージをトランスコードする技術を使用することは、符号化デバイス４が最初により高い品質を備えたイメージを圧縮し、そして、送信のために必要なときにはイメージの品質を減らすことだけをすることを可能にする。このように、ファイルサイズの制限は、ユーザによって作成された、あるいは、保存された高品質のイメージを抑制しない。代わりに、ファイルサイズの制限は、送信を必要とするイメージのみを抑制する。しかしながら、本技術はまた、圧縮保存のためにイメージを抑制することに有用でありうる。
【００３３】
図２は、さらに詳細に、図１の符号化モジュール１２のような、例示的な符号化モジュールを図示しているブロック図である。符号化モジュール１２は、イメージ処理モジュール２４、変換モジュール２６、量子化モジュール２８、エントロピ符号化モジュール３０、エントロピ復号モジュール３２、逆量子化モジュール３４、トランスコードモジュール３６、及びメモリ３７、を含んでいる。さらに詳細にここに説明されるように、符号化モジュール１２のコンポーネントは、符号化されたイメージデータのサイズを縮小するために、生イメージデータを最初に符号化することと、前に符号化されたイメージデータをトランスコードすることの両方のために使用されることができる。いくつかの態様においては、符号化モジュール１２は、無線ネットワーク上の別の無線通信デバイスへの送信のためにイメージ及び／またはビデオを符号化するように無線通信デバイスハンドセット内で常駐することができる。
【００３４】
イメージ処理モジュール２４は、メディアソース１８（図１）からイメージデータを受信する。メディアソース１８から受信されたイメージデータは、複数のイメージセンサから直接の生イメージデータであってもよく、あるいは、最初に圧縮されたイメージデータの符号化されたイメージファイルであってもよい(The image data received from media source 18 may be raw image data directly from a plurality of image sensors or encoded an image file of initially compressed image data)。生のイメージデータの場合には、イメージ処理モジュール２４は、ＹＣｂＣｒ色空間(YCbCr color space)に生のイメージデータを変換することができる。ＹＣｂＣｒ色空間のイメージデータは、イメージの明るさ(brightness)を表す輝度コンポーネントＹと、青軸と赤軸に沿った色(color along the blue axis and red axis)をそれぞれ表す２つの色度コンポーネントＣｂ及びＣｒと、を含む。ＹＣｂＣｒ色空間への変換は、追加色度情報、すなわちＣｂ及びＣｒ情報を廃棄することによって、符号化モジュール１２はより多くの輝度情報、すなわち、多くのＹコンポーネント(more of the Y component)、を保持するので、有利であってもよい。このことは、人の視覚システムが青あるいは赤軸（クロミナンスＣｂ及びＣｒ）に沿った色よりも明るさ（輝度Ｙ）によりセンシティブであるので、有利であってもよい。しかしながら、同様の技術は、ＲＧＢ色空間のような他の色空間で利用されることができる。
【００３５】
イメージ処理モジュール２４は、１つまたは複数の色コンポーネントを、追加的にダウンサンプルすることができる。ダウンサンプリング(downsampling)は、水平方向(horizontal direction)(例、行に沿って)と垂直方向(vertical direction)(例、列に沿って)のうちのいずれか、あるいは両方で、２つのファクタによって大抵行なわれる。共通のダウンサンプリング比は、１つのＹサンプルが各１つのセットのＣｂ及びＣｒサンプルについて符号化されるＨ１Ｖ１(ダウンサンプリングなし)、２つのＹサンプルが各１つのセットＣｂ及びＣｒサンプルについて符号化されるＨ２Ｖ１（行に沿って水平方向にダウンサンプルされた色度）、そして、４つのＹサンプルが各１つのセットのＣｂ及びＣｒサンプルについて符号化されるＨ２Ｖ２（列に沿って垂直方向、また、行に沿って水平方向、の両方でダウンサンプルされた色度）、として表される。いくつかの場合においては、符号化モジュール１２は、色度コンポーネントをダウンサンプルすることのみできる。他の場合では、符号化モジュール１２は、輝度及び色度コンポーネントの両方をダウンサンプルすることができるが、人の視覚システムにあまり認知しないので、輝度コンポーネントよりも多く色度コンポーネントをダウンサンプルすることができる。
【００３６】
イメージデータが生のイメージデータである、あるいは以前に圧縮されたイメージデータであるかどうかにかかわらず、イメージ処理モジュール２４は、ブロックのピクセルにイメージデータを分割し、独立してブロックのそれぞれを処理することができる。ＪＰＥＧ規格にしたがって、イメージ処理モジュール２４は、８ｘ８ブロックにイメージデータを分割することができる。しかしながら、８つの列あるいは行よりも多いあるいは少ないブロックもまた、可能である。ブロックにイメージデータを分割し、独立してブロックのそれぞれを処理することは、メモリスペースの量と、イメージを符号化し、及び／またはトランスコードするのに必要とする時間を減らすことができる。
【００３７】
メディアソース１８から受信されたイメージデータが、センサのアレイからの生イメージデータであるとき、符号化モジュール１２は、イメージの初期圧縮を実行することができる。符号化モジュール１２は、標準イメージ圧縮技術を使用して、イメージを初期で圧縮することができる。代替的に、符号化モジュール１２は、イメージデータを初期で圧縮するために、ここにおいて説明された、１つまたは複数の技術を使用することができる。いずれの場合も、変換モジュール２４は、変換係数のマトリクスの形で、周波数ドメイン表示を生成するためにイメージデータのブロックに対して、整数変換を適用する。変換は、例えば８ｘ８の整数変換あるいはＤＣＴであってもよい。上記で説明されるように、変換の結果は、係数のマトリックスである。ＪＰＥＧ規格の場合、例えば、８×８ブロックのそれぞれは、１つのＤＣコンポーネント及び６３のＡＣコンポーネントを含む６４の係数のマトリクスに対応する。
【００３８】
変換の後、量子化モジュール２８は、変換された係数を量子化する。量子化モジュール２８は、使用されているコーディング標準に依存して様々な方法で係数を量子化することができる。量子化モジュール２８は、例えば、係数を量子化するために、変換係数に対して、量子化テーブルを適用することができる。量子化は、実際の値自体と対立するものとして、係数の「レベル」の符号化を可能にするために、変換係数をスケーリングする。より大きい値を有する量子化テーブルは、下記で説明されるように、変換係数の大きなスケーリングを結果としてもたらす。人間の目は低い周波数コンポーネントにセンシティブであるので、典型的な量子化テーブルは、高い周波数のより多くのレベルよりも、低い周波数のより多くのレベルを提供する。いくつかの態様では、量子化モジュール２８は、Ｙコンポーネントについては輝度量子化テーブル３８、そして、Ｃｂ及びＣｒコンポーネントのうちの１つあるいは両方については色度量子化テーブル３９、を適用することができる。色度量子化テーブル３９は、符号化モジュール１２がより多くの輝度情報を保持することを可能にするために、より多くの色度情報を廃棄して、量子化モジュール２８を結果としてもたらす、より大きいスケーリングステップサイズをしばしば有する。量子化テーブルについてのデフォルト値は、使用される特定の圧縮標準によって推奨されてもよい。代替的に、特定のデバイス、例えばデジタルカメラおよび／またはイメージソフトウェア、はそれ自体のカスタム量子化テーブルを使用することができる。
【００３９】
エントロピ符号化モジュール３０は、エントロピ符号化スキームを使用して、量子化された変換係数を符号化する。エントロピ符号化スキームを使用して、量子化された係数を圧縮するために、エントロピ符号化モジュール３０は、スキャンの始めに低周波数係数がグループ化され、スキャンの終わりに高周波数コンポーネントがグループ化されるように、係数のジグザクパターンを取ることによって、量子化された係数を、ベクトルに、組織化することができる。言い換えると、エントロピ符号化モジュール３０は、量子化された係数の２次元マトリクスにおいて量子化された係数のすべてを、量子化された係数の１次元ベクトルに、配列することができる。
【００４０】
エントロピ符号化モジュール３０は、そのあとで、量子化された係数のベクトルに対して、ハフマン符号化(Huffman coding)あるいは算術符号化のようなエントロピ符号化スキームを適用することができる。一例としてハフマン符号化を使用して、エントロピ符号化モジュール３０は、ハフマンコード(Huffman code)と、ハフマンコードの後でアペンドされた剰余(residue)として各量子化された係数を符号化する。ＤＣ係数については、ハフマンコードは、現在のＤＣ値と前のイメージのＤＣ値の間の差異の大きさのサイズを、ビットで、示す。言い換えると、ハフマンコードは、特定の数のビットによって表わされることができるＤＣの差異の大きさを示す。ＤＣの差が例えば−６である場合、６の値、すなわち大きさ、を表すのに３ビットかかるので、ハフマンコードはサイズ３を示す。しかしながら、サイズ３を示すハフマンコードはまた、複数の他の大きさ、すなわち−７、−５、−４、４、５、７、を表わす。したがって、エントロピ符号化モジュール３０は、そのサイズの複数のＤＣ差異のうちの１つのどれがＤＣ差異と対応するかを固有に識別するために剰余をアペンドする。エントロピ符号化モジュール３０は、３ビット剰余「０１０」によって数字−６を識別しており、そしてそれは、−６がサイズ３の第２に最も低い差異であるので、２についてバイナリである。ＤＣ差異−６を符号化するために、エントロピ符号化モジュール３０は、サイズ３のハフマンコードを出力し、そのあとで、３ビット「０１０」を送る。
【００４１】
ＡＣ係数の場合、ハフマンコードは、「ラン(run)」および「サイズ(size)」の連結(concatenation)を示す。「ラン(run)」は、ＡＣ係数のジグザグ順序(zig-zag order)における連続的な０の数(number of consecutive zeros)であり、「サイズ(size)」は、後続のゼロでない係数のビットにおけるサイズ(size in bits of the subsequent nonzero coefficient)である。剰余(residue)は、ＤＣ係数に関して(as with DC coefficients)、ゼロでない係数のサイズに対応している複数の可能のある値のうちの１つを識別する、固有の識別子を表わす。シーケンス「０００３」を含んでいるジグザグスキャンについては、エントロピ符号化モジュール３０は、ラン３と剰余「１１」を備えたサイズ２とを作る。エントロピ符号化モジュール３０は、ラン／サイズが３／２であるハフマンコードを送り(emits)、そのときに(then)、２つの剰余のビット(residual bits)「１１」を送る。
【００４２】
ＪＰＥＧ規格によると、エントロピ符号化モジュール３０は、ＡＣラン長さの符号化(encoding of AC run-lengths)のために２つの特別なシンボルを有する。第１の特別シンボルは、ブロックの残りが０のみから成り、ランサイズ０／０と指定されていることを示す、エンドオブブロック(end-of-block)（ＥＯＢ）シンボルである。サイズが０であるので、いずれの剰余も符号化されない。第２の特別なシンボルは、ゼロ−ラン−長さ(zero-run-length)（ＺＲＬ）値であり、そしてそれは、ジグザグスキャンにおいて１６の連続的な０があるということを意味する。ランおよびサイズが各々４ビットまで表わされているので、ランの最大値は１５である。そうすると、ＺＲＬラン／サイズシンボルが１５／０（すなわち、１５個のゼロのあとに１つの０が続く）ということがわかる。再び、サイズが０であるので、いずれの剰余も符号化されない。
【００４３】
４つの標準ハフマン表がＪＰＥＧ規格に定義されており、また、それぞれは、ＤＣ輝度コンポーネント、ＤＣ色度コンポーネント、ＡＣ輝度コンポーネント、そしてＡＣ色度コンポーネントについてである。これらの標準表は、すべての可能のあるシンボル、例えば、ＪＰＥＧの場合１６２の別個の可能な値、についてハフマンコードを定義する。エントロピ符号化モジュール３０は、ＪＰＥＧ規格によって定義された標準ハフマン表を使用することができる。代替的に、エントロピ符号化モジュール３０は、カスタムハフマン表を定義することができる。いくつかの例では、これらのカスタムハフマン表は、減らされた数のハフマンコードを含むことができる。例えば、カスタムハフマン表は、可能な１６２の値からの１００だけのコードを含むことができる。
【００４４】
いくつかの態様では、符号化スキームは、マーカとして作用する特定のビットシーケンスを含むことができる。マーカは、例えばメタデータ(metadata)の領域を識別するために、使用されることができる。メタデータは、例えば、次元、ダウンサンプリング比、量子化テーブル、及びハフマン表のような、イメージについての情報を保存する。ＪＰＥＧ規格では、エントロピ符号化モジュール３０は、続くメタデータのタイプを示しているバイトが続くメタデータの領域を識別するためにバイト０ｘＦＦで始まる２バイトのマーカを使用することができる。係数のエントロピ符号化が、バイトアラインされた０ｘＦＦ(byte-aligned 0xFF)を作るように起きるケースでは、エントロピ符号化モジュール３０は、係数ビットストリーム(coefficient bitstream)をマーカと明確にするために、０バイト０ｘ００をビットストリームに詰め込む。
【００４５】
最初に圧縮したイメージデータが、サービスプロバイダあるいは復号デバイスのディスプレイの伝送要件を満たすのに大きすぎるとき、符号化モジュール１２はより小さいイメージファイルを生成するためにイメージをトランスコードする必要がある可能性がある。言い換えると、符号化デバイス１２は、サービスプロバイダ、あるいは、復号デバイスのディスプレイの必要要件を満たすためにイメージデータを再圧縮することができる。イメージ処理モジュール２４は、メディアソース１８（図１）から符号化されたイメージデータを受信する。上記で説明されるように、メディアソース１８は、デジタルカメラのような、メモリ３８あるいは外部デバイスであることができる。いくつかの態様においては、イメージ処理モジュール２４は、ピクセルのブロックに符号化されたイメージデータを分割することができ、符号化モジュール１２は、別々に、ブロックのそれぞれをトランスコードすることができる。ブロックのそれぞれを個別にトランスコードすることは、スピードとメモリ使用の点から、増大された効率を結果としてもたらすことができる。
【００４６】
イメージデータをトランスコードするために、エントロピ復号モジュール３２は、ハフマン復号を使用して、符号化されたイメージデータを復号する。エントロピ復号モジュール３２は、イメージデータを符号化するエントロピ符号化モジュール３０によって使用される、符号化されたイメージデータ、を復号する同じハフマンコード表を使用することができる。ハフマンコード表は、例えばメモリ３８内で保存されることができる。逆量子化モジュール３４は、イメージデータについての変換係数を生成するために、逆量子化を実行する。一態様では、トランスコードモジュール３６は、周波数ドメインにおいてイメージデータをトランスコードすることができる。言い換えると、符号化モジュール１２は、生イメージデータを得るために逆変換を実行する代わりに、変換係数上でトランスコードを実行することができる。しかしながら、他の態様では、符号化モジュール１２は、生イメージデータを得て、イメージを、生イメージデータを使用してトランスコードする逆変換モジュールを含むことができる。周波数ドメインにおいてイメージデータをトランスコードすることは、変換係数に逆変換関数を適用する必要性を削除することによって処理時間の量を減らすことができる。
【００４７】
トランスコードモジュール３６は、イメージデータのサイズを縮小するために、マクロスケールビットレート縮小技術、すなわち全体のイメージに一様に影響を与えるビットレート縮小技術、を利用することができる。例えば、トランスコードモジュール３６は輝度量子化テーブル３８、色度量子化テーブル３９、あるいは両方をスケーリングすることができ、そして、スケーリングされた量子化テーブルを使用してイメージデータを再符号化することができる。一態様においては、トランスコードモジュール３６は、ビットレート(Ｒ)とρ、すなわち０値量子化変換係数の割合、との間のほぼ直線関係(the near linear relationship)を使用するρドメイン分析の関数として、輝度量子化テーブル３８及び／または色度量子化テーブル３９をスケーリングすることができる。特に、トランスコードモジュール３６は、ρとビットレートＲの直線関係を見つけることができる。ビットレートＲは、
Ｒ＝θ（１−ρ）,                                                          （１）
として、ρ−ドメインにおいてモデル化されることができ、なお、θは、一定の傾きであり、イメージコンテンツによって決定される。
【００４８】
計算を単純にするために、ρはｚと置換されることができ、そしてそれは、比としてよりもむしろ整数の形で、０値量子化変換係数の数を表す。
【００４９】
したがって、式（１）は、
Ｒ−Ｒmin=θ（ｚｍａｘ−ｚ）,                                                 （２）
と書き直されることができ、なお、zｍａｘは、イメージのブロックにおけるＡＣ係数の合計数であり、Ｒminは、ブロックを表すことができる、ＡＣビットの最小の数である。式（２）は、ＡＣ量子化コンポーネントのスケーリングによって影響されるビットを反映のみさせるべきなので、ＥＯＢシンボルは、考慮されなくてもよい。したがって、Ｒminは、もし、イメージの各ブロックがすべて０、あるいは、同様に、ＥＯＢシンボルだけ、を含む場合には、値Ｒを表す。
【００５０】
トランスコードモジュール３６は、ターゲットビットレートＲＴ、オリジナルに符号化されたイメージのビットレートＲ０、及びオリジナルに符号化されたイメージの０値量子化変換係数ｚ０の数、を使用して、０値量子化変換係数（ｚＴ）のターゲット数を計算することができる。一態様では、トランスコードモジュール３６は、式（３）−（５）で示されるように、ｚＴを計算する。
【数１】
2010529748.tif 000003
【数２】
2010529748.tif 000004
【数３】
2010529748.tif 000005
【００５１】
トランスコードモジュール３６は、最初に符号化されたイメージから、例えばイメージの最初の符号化の間に、Ｒｏとｚｏを得ることができる。トランスコードモジュール３６は、ユーザによって指定された、あるいは、ネットワークサービスプロバイダから得られた、ターゲットファイルサイズ（ＦＴ）に基づいてＲＴを計算することができる。ターゲットファイルサイズＦＴは、例えば、バイトで規定されることができ、また、ヘッダ情報とＤＣビットとＡＣバイトと、を含む。ターゲットビットレートＲＴを計算するために、ターゲットファイルサイズＦＴは、定数で乗算され、また、ヘッダ情報（Ｈ）及びＤＣ情報（ＤＣ）に使用されたビットの数は、差し引かれる、すなわち、ＲＴ＝８＊ＦＴ−Ｈ−ＤＣである。
【００５２】
トランスコードモジュール３６は、量子化された変換係数の値をカウントするヒストグラムを使用して、イメージのために、０値係数(z)の数を計算することができる。量子化された変換係数のヒストラグラムは、次のように定義されることができる、すなわち、Ｈ（ｑ，ｉ，ｖ）＝量子化テーブルｑ（０−インデクス化）を使用して、ジグザグスキャンエントリi（０−インデクス化）における、絶対量子化係数値｜ｖ｜の発生の数、である。したがって、トランスコードモジュール３６は、量子化テーブルのいずれのスケーリングについて、イメージのためにｚを再計算することができる。例えば、オリジナルに符号化されたイメージの０値量子化変換係数の数は、
【数４】
2010529748.tif 000006
【００５３】
と対応する。別の例として、第１の量子化テーブルの１７番目エントリは、４によってスケーリングされると仮定する。そのときに、第１テーブルの１７番目のエントリにおいて４よりも少ない大きさを備えたすべての量子化された係数は、０に再び量子化されるであろうため、値ｚは、
【数５】
2010529748.tif 000007
【００５４】
ごとに確実に増える。ヒストグラムに基づいて、トランスコードモジュール３６は、輝度量子化テーブル３８と色度量子化テーブル３９のスケーリングがｚＴを超えないｚをもたらすように、スケーリングファクタｓを選択することができる。一例として、イメージのヒストグラムは、値１を備えた１０００係数と、値２を備えた２０００係数があるということを示すと仮定する。さらに、ターゲット０値係数(ｚＴ)の数が１５００であると仮定する。トランスコードモジュール３６は、スケーリングファクタ２を選択し、そしてそれは、ｚＴを超えないｚを結果としてもたらさない、最大スケーリングファクタである。より具体的には、スケーリングファクタ２を選択することは、ｚＴよりも小さい、０値となる１０００係数を結果としてもたらす。他方で、スケーリングファクタ３は、０値となる３０００係数、すなわちすべての「１」係数とすべての「２」係数、を結果としてもたらすであろう、そしてそれは、ｚＴを超える。ｚＴをオーバーシュート(overshoot)しないスケーリングファクタを選択することによって、トランスコードモジュール３６は、さらに必要とするよりも、イメージのサイズを縮小しない。
【００５５】
しかしながら、いくつかのケースでは、トランスコードモジュール３６は、０値係数の数をさらに減らす必要があるかもしれない。上記で説明された例において、トランスコードモジュール３６は、さらに５００の係数(500 more coefficients)だけ、０値係数の数をさらに減らす必要があるかもしれない。この目的のために、トランスコードモジュール３６は、第１のスケーリングファクタよりも大きい第２のスケーリングファクタを、量子化テーブルのうちの１つあるいは両方の一部に適用することができる。選択されたスケーリングファクタｓを使用して、トランスコードモジュール３６は、ポジションインデクスｋを選択することができるので、
【数６】
2010529748.tif 000008
【００５６】
となる。特に、いったんトランスコードモジュール３６はスケーリングファクタｓを選択すると、ｓよりも小さい値を備えたすべての係数は、量子化の結果、０となる。上記で説明された例において、値「１」を備えたすべての係数は、「０」となるであろう。しかしながら、結果として生じる数の０がターゲット数のゼロよりも小さいので、トランスコードモジュール３６は、シーケンスの最後の係数から開始して、ｓから０に等しい値を有するそれらの係数を強要すること(force)を始める。言い換えると、トランスコードモジュール３６は、スケーリングファクタｓ＋１個によって、係数の少なくとも一部分をスケーリングする。トランスコードモジュール３６は、例えば、１２７に等しくｋを設定し、そして、０の数字がターゲットを満たすまで、ｋをゆっくりデクリメントさせる(decrements)。このように、第１のｋ係数は、ファクタｓによってスケーリングされるが、残りの（１２７−ｋ）係数は、ファクタｓ＋１によってスケーリングされる。上記で説明されるように、スケーリングファクタｓおよびｓ＋１は、１よりも大きい、あるいは、１と等しい、値を取る。さらに、スケーリングファクタｓは、スケーリングファクタｓ＋１よりも小さい。下記で詳細に説明されるように、シーケンスの係数の最後の部分、すなわちファクタｓ＋１によってスケーリングされる係数は、クロミナンス係数(chrominance coefficients)と一致する。
【００５７】
トランスコードモジュール３６は、輝度量子化テーブル３８および色度量子化テーブル３９の量子化エントリを、単独シーケンスに、順序づけ、そして、シーケンスを使用してｋを決定することができる。いくつかの態様では、量子化テーブルの量子化エントリは、シーケンスは、輝度量子化テーブル３８の低周波数量子化エントリで始め、輝度量子化テーブル３８の高い周波数量子化エントリがつづき、そのあとで、色度量子化テーブル３９の低い周波数量子化エントリがつづき、そして最後に、色度量子化テーブル３９の高い周波数量子化エントリがつづくように、順序づけられることができる。したがって、トランスコードモジュール３６は、輝度量子化テーブル３８と色度量子化テーブル３９の両方のＡＣ量子化エントリを、輝度エントリの最後にアペンドされた色度エントリが最初に続く、ジグザグスキャンで順序づけられた輝度エントリを備えた１つの長いシーケンスへと、連結しているものとして見られることができる。トランスコードモジュール３６は、他の順序づけ技術(other ordering techniques)を使用して、量子化テーブルのエントリを順序づけることができる。例えば、トランスコードモジュール３６は、低い周波数輝度エントリで開始し、１つまたは複数の低い周波数色度エントリが続き、そのあとで、高い周波数の輝度エントリ及び高い周波数の色度エントリが続く、１シーケンスのエントリを生成することができる。輝度量子化テーブル３８および色度量子化テーブル３９の両方のＤＣのコンポーネントは、スキャンに含まれていない。したがって、輝度量子化テーブル３８および色度量子化テーブル３９のＤＣのコンポーネントはスケーリングされない。
【００５８】
したがって、トランスコードモジュール３６は、スケーリングファクタｓによって第１のｋエントリをスケーリングすることができ、また、大きなスケーリングファクタ、例えばｓ＋１によって、残りのエントリ（例、上記の例の１２８−ｋ）をスケーリングすることができる。上記で説明されるように、スケーリングファクタｓおよびｓ＋１のスケーリングは両方とも、１よりも大きいあるいは１に等しい、したがって、０値変換係数の増大された数を結果としてもたらす。下記の２つのマトリクスは、この技術にしたがって、それぞれの量子化テーブルに、スケールファクタを適用するマトリクスの例である。第１のスケーリングファクタマトリクスは、輝度量子化テーブル３８に適用され、また、第２のマトリックスは、色度量子化テーブル３９に適用される。
【表１】
2010529748.tif 000009
【表２】
2010529748.tif 000010
【００５９】
このように、トランスコードモジュール３６は、輝度量子化テーブル３８よりも色度量子化テーブル３９をスケーリングし、したがって、よりよく、イメージの明るさを保存している。さらに、異なるスケーリングファクタによって、量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする可能性を減らす、すなわち、過剰によって(by too much)、ビットレートを減らし、したがって、不必要なときにはイメージの品質を減らしている。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする可能性もまた減らす、すなわち、十分によって(by enough)ビットレートを減らせない。オーバーシューティング(overshooting)は、トランスコードモジュール３６がｓ＋１によって両方の量子化テーブルの各エントリでスケーリングされる場合に、生じるかもしれない。アンダーシューティング(undershooting)は、トランスコードモジュール３６が、ｓによって両方の量子化テーブルの各エントリでスケーリングされる場合に、生じるかもしれない。インデクスｋによって決定される分割に作用する２つのスケーリングファクタｓ及びｓ＋１の本スキームは、新しい量子化テーブルによって生成される０の数にわたって、微調整を提供する。
【００６０】
トランスコードモジュール３６はまた、イメージの特定の局在化された領域だけに影響を及ぼすトランスコード技術、すなわち、マイクロスケールビットレート制御、を使用することができる。上記で説明されるように、マイクロスケールビットレート制御技術は、全体のイメージに一様に影響を与えないが、イメージの一部分（例えば、イメージの１サブセットのブロック）のみ影響を与える。マイクロスケールビットレート制御技術は、必要なときにイメージのサイズをさらに減らすために、マクロスケールビットレート制御技術と共に使用されることができる。このように、トランスコードモジュール３６は、イメージをトランスコードする２層のビットレート制御をインプリメントすることができ、第1層のビットレート制御は、グローバルトランスコード技術が全体のイメージに等しく、そして一様に影響を与える場合、マクロスケールに関しており、第２層のビットレート制御は、トランスコードオペレーションの影響がイメージの特定領域に局在化される場合、マイクロスケールに関する。この２層の戦略は、トランスコードモジュール３６が、第一に粗くターゲットビットレートにアプローチし、そしてその後で、必要なときに微調整を行うことを可能にする。代替的に、マイクロスケールのレート制御技術は、マクロスケールのレート制御技術と独立して利用されることができる。
【００６１】
イメージデータのトランスコードの間に、トランスコードモジュール３６は、トランスコードが、ターゲットビットレートＲＴに到達するコース上にあるかどうかを決定するためにトランスコードされたビットの数をトラッキングする。トランスコードモジュール３６は、いつさらなるビットレート縮小が必要であるかを決定し、そしてさらなるビットレート縮小が必要とされるとき、マイクロビットレート制御をアクティブ化する。オリジナルビットレートＲｏを備えたイメージの場合、トランスコードモジュール３０は、オリジナルイメージＲｄ（ｎ）のために復号されたビットの数と、トランスコードされたＲｅ（ｎ）のために符号化されたビットの数との比が、オリジナルビットレートとターゲットビットレートとの比、すなわちＲｏ：ＲＴに等しいかどうかを決定することができる。理想的には、復号されたオリジナルイメージＲｄ（ｎ）のビット対符号化された新しいイメージＲｅ（ｎ）のビットの比は、ｎ番目ブロックの係数におけるＲｏ：ＲＴに等しく、すなわち、
【数７】
2010529748.tif 000011
【００６２】
である。ここにおいては、Ｒｄ（ｎ）とＲｅ（ｎ）は、ｎ番目ブロックにおいて、それぞれ、すでに復号され、符号化されたビットの数を示しており、Ｒｏは、オリジナルイメージビットレートであり、そしてそれは、イメージがＮブロックの合計を有する場合、Ｒｄ（ｎ）に等しく、また、ＲＴは、トランスコードされたイメージのターゲットビットレートである。
【００６３】
式（７）の比率(proportions)は、以下の式を得るために、式（２）のρ-ドメイン分析のケースのように、最小数のビットの定数オフセット(constant offset)が取り除かれる場合、より正確であることができる：
【数８】
2010529748.tif 000012
【００６４】
トランスコードモジュール３６が、この比を拒絶するためにｎ番目ブロックにおいてターゲットビットレートを制御するように設計されるので、式（８）において、ターゲットビットレート、ｎ番目ブロックにおいてＲｅ（ｎ）の代わりにＲｔ（ｎ）、を代替することは可能であり、Ｒｔ（ｎ）を解く。結果は、式（９）で示されている。トランスコードモジュール３６は、式（１０）にしたがって、Ｒｅ（ｎ）とＲｔ（ｎ）との間の差異（Δ）を計算する。この差異は、誤り（ε）、すなわち、イメージのトランスコードの間にｎ番目ブロックにおいて実際に符号化されるビットの数と、理想的にはｎ番目ブロックにおいて符号化されるべきであるビットの数との差異を表す。
【数９】
2010529748.tif 000013
【数１０】
2010529748.tif 000014
【００６５】
トランスコードモジュール３６は、ビットの数をさらに減らすために、マイクロスケール技術のうちの１つまたは複数をアクティブ化するかどうかを決定するトランスコード処理の間に、差異Δをモニタすることができる。特に、トランスコードモジュール３６は、Δがスレッシュホールドよりも大きいあるいは等しいとき、１つまたは複数のマイクロスケールビットレート制御技術をアクティブ化することができる。スレッシュホールドは、例えば、ターゲットビットレートの関数、例えば、ターゲットビットレートの５％、であってもよい。このように、トランスコードモジュール３６は、マイクロスケール技術が起動されるべきかどうかのインジケータとしてΔを使用する。トランスコードモジュール３６は、適切な制限内でΔをもたらすために、ビットストリームから取り除かれる必要があるビットの数を決定するΔの大きさをさらに使用することができる。
【００６６】
トランスコードモジュール３６は、１つまたは複数の係数を選択的に減らすことによってビットストリームのビットの数をさらに減らすことができる。上記で説明されるように、イメージの符号化されたビットストリームは、ほとんどハフマンコードと、ＡＣ係数について剰余文字列と、で構成されている。１つまたは複数の係数の値を選択的に縮小することによって、トランスコードモジュール３６は、縮小された係数について、ハフマンコードの長さを縮小することができる。これは、より小さい係数の値は、より大きい係数値よりも頻繁であり、したがって大抵より短いハフマンコードを割り当てられている、からである。さらに、トランスコードモジュール３０は、係数値のうち１つまたは複数を選択的に減らすことによって、剰余のビットをセーブすることができる。上記で説明されているように、エントロピ符号化モジュール３０は、０のラン−長さ(run-length of zeroes)と係数のバイナリサイズとに基づいて、ＡＣ係数についての符号を割り当てる。トランスコードモジュール３６は、ブロックを根本的に変更せずに、０のラン−長さを変更できないが、係数のバイナリサイズを微細に変更することができる。それをするためには、トランスコードモジュール３６は、２乗に等しいあるいは２乗に少なくとも近い値で係数を識別し、２乗よりも小さいように、それらの係数を縮小することができる。例えば、符号化される係数値が２乗である場合、トランスコードモジュール３６は、１だけ係数値をデクリメントする。係数値８の場合、例えば、トランスコードモジュール３６は、４ビットで剰余の長さを符号化する。トランスコードモジュール３６は、係数値８を１だけデクリメントし、新しい係数値７を結果としてもたらす。係数値７は、３ビット剰余によって表わされ、それによって、１ビットだけビットストリームを縮小する。さらに、ランサイズを表わすハフマンコードはまたおそらく短く、追加ビットセービングを結果としてもたらす。同様に、２だけ係数値９を減らすことは、新しい係数値７を結果としてもたらし、そしてそれは、縮小された数のビットとより短いハフマンコードによって表わされることができる。しかしながら、２だけ係数値を縮小することは、さらなるひずみを結果としてもたらす。したがって、値が縮小されることができるビットの数は、許容と考えられるひずみの量に左右する。
【００６７】
いくつかの態様においては、トランスコードモジュール３６は、減らされたときに０に等しいであろう係数値を選択することを省略することができる。例えば、２乗である係数を選択する場合には、トランスコードモジュール３６は、係数値１（２乗である）を選択することを省略することができる。トランスコードモジュール３６が値１を有する係数を選択し、値０にそれらの係数をデクリメントする場合には、変換のその特定コンポーネントは、全体的に削除される。このことは、望んでいるよりも、より多くのひずみ及び／または乱れが生じることをもたらす。したがって、トランスコードモジュール３６は、値１で係数を縮小できない。
【００６８】
代替的に、あるいは、さらに、トランスコードモジュール３６は、パディングバイトの数を減らすことによって、ビットストリームのビットの数をさらに減らすことができる。上記で説明されているように、トランスコードモジュール３６は、メタデータについてのマーカに対応する１ビットシーケンスのあとに続いて、パディングバイトを挿入することができる。ＪＰＥＧ規格の場合、例えば、０バイト０ｘ００は、実際の係数ビットストリームをマーカと区別するためにエントロピ符号化ビットストリームにおける０ｘＦＦの発生の後で、挿入されることができる。トランスコードモジュール３６は、８バイトのバイトアラインされたシーケンス(a byte-aligned sequence of eight ones)をマーカから区別するのに必要とされたパディングバイトを削除することによって、１バイト（８ビット）だけビットストリームのビットの数を減らすことができる。パディングバイトの使用を回避するために、トランスコードモジュール３６は、マーカを表わすビットシーケンスがある場合、ビットストリームの位置を識別する。ＪＰＥＧ規格では、例えば、トランスコードモジュール３６は、０ｘＦＦがある（すなわち、８連続のバイト）、ビットストリームにおける位置を識別することができる。
【００６９】
一態様では、トランスコードモジュール３６は、ビットストリームに書き込まれた次のバイトを備える一番左のビットを保存するビットバッファを含むことができる。ハフマンコードおよび剰余は、一番左のビットである最上位ビットで、右に、交互にアペンドされる。一番左の８ビットは、次のシーケンスのうちのいずれかを含むことができる：（１）ハフマンコードからのビットのみ（Ｈ）、（２）剰余からのビットのみ(Ｒ)、（３）ハフマンコードの終わり及び剰余の始めのビット(ＨＲ)、（４）剰余の終わりとハフマンコードの始めのビット（ＲＨ）、（５）ハフマンコードの終わりのビットと全体剰余のビットと次のハフマンコードの開始のビット（ＨＲＨ）、（６）剰余の終わりと全体ハフマンコードと、次の剰余の開始（ＲＨＲ）、あるいは（７）シーケンスの途中で挿入されたＨＲあるいはＲＨペアを備えた項目（２）−（６）のいずれか。
【００７０】
トランスコードモジュール３６は、剰余を表わす８ビットのうちの１つまたは複数ビットを変更することができる。剰余を変更するとき、トランスコードモジュール３６は、ビットストリームへの０ｘＦＦの書き込みを防ぐ、剰余の最下位ビットを変更することができる。このような方法で、トランスコードモジュール３６は、ハフマンコードが保存され、剰余の変更が最小であるように、８ビットのうちのどれが変更するか、決定する。上記の７つの可能のあるケースのリストにおいて、ケース（１）は、ハフマンコードを変更することは望ましくないので、修正可能（modifiable）ではない。しかしながら、ＪＰＥＧ規格は、より長いコードワードについてプリフィックス(a prefix)としてリザーブされるので、すべて１ビットであるハフマンコードを定義しない。この情報を使用して、ケース（１）、（６）および（７）は、ＪＰＥＧの場合において０ｘＦＦを作らないだろう。すべてのケース（２）−（５）において、トランスコードモジュール３６は、ビットバッファの一番左の８ビット内にまだある、剰余の最下位ビットを変更する。このビットを変更すると、ビットシーケンスは、マーカをもはや表わしておらず、パディングバイトは必要ではない。このような方法で、トランスコードモジュール３６は、最小量のひずみでビットレートにおける最大の縮小を達成することを試みる。
【００７１】
トランスコードモジュール３２は、イメージのトランスコードの間にｎ番目ブロックにおいて実際に符号化されるビットの数と、ｎ番目ブロックにおいて理想的に符号化されるべきビットの数との差異Δがスレッシュホールドよりも下になるまで、現在トランスコードされているピクセルの個別ブロックについて、マイクロスケールビットレート制御の１つまたは両方のいずれかをインプリメントすることを続ける。いくつかの場合において、Δは、マイクロスケールビットレート制御技術を使用して現在のブロックにおいてビットを縮小すると、スレッシュホールドより下になることができる。しかしながら、他の場合においては、マイクロスケールビットレート制御技術は、Δがスレッシュホールドより下にある前に、イメージの複数のブロックにわたって、使用されることができる。スレッシュホールドより下にあると、トランスコードモジュール３２は、エラーがスレッシュホールドより上に再び増加しない限り、マイクロスケールビットレート制御技術をインプリメントすることをやめ、そして、マクロスケールビットレーット制御技術をインプリメントすることだけする。
【００７２】
本開示のトランスコードフレームワークは、オブザーバ設計パターンを使用することができる。オブザーバ設計パターンにおいて、物体(object)がその状態を変更するとき、それは、イベントをあげ(raises)、特定のイベントについてリスニングしているいずれのソフトウェアオブザーバに通知する。物体は、その加入者に対してイベントを発行する。各加入者は、その後、イベントに含まれる情報に関する動作を実行する。何人かの加入者は、同じイベントに応答することができ、それぞれは、完全に異なる機能性を備えており、関連機能は、１つのモジュールにパッケージングされることができる。さらに、オブザーバ設計パターンは、メモリに状態(state)をたくさん保持しないで、オンライン方法で進めるトランスコードを可能にする。ブロックが復号されるとすぐに、加入したエンコーダ(subscribed encoder)は、それを直ちに符号化することができる。
【００７３】
図２で図示された例においては、トランスコードフレームワークにおいて４つの基本モジュールがあり、それらは、エントロピ復号モジュール３２、トランスコードモジュール３６、量子化モジュール２８、エントロピモジュール３０、である。復号モジュール３２は、操作のために、オリジナルビットストリームを読み取り、データを作る。復号モジュール３２は、加入者に対する情報のメイン発行者である。他の３つのモジュールは、復号モジュール３２のイベントに対して加入することができる。第１のパス復号の間に、トランスコードモジュール３６は、復号モジュール３２に加入し、そして、グローバルなイメージの統計を集める。トランスコードは、第２のパスで生じる。第２のパスの間に、トランスコードモジュール３６は、復号モジュール３２に加入し、符号化モジュール３０は、トランスコードモジュール３６に加入する。トランスコードモジュール３６はまた、符号化統計をトラッキングするために符号化モジュール３０に加入する。したがって、復号モジュール３２は２度実行され(is run twice)、加入(subscriptions)だけが変更される。メインプログラムのための偽コードは下記で提供されている。
【００７４】
オリジナルファイルから復号モジュールを作る
トランスコードモジュールを作る
トランスコードモジュールを復号モジュールにリンクさせる
全体のイメージを復号する(統計を集める)
復号モジュールをリセットする
トランスコードモジュールをリセットする
符号化モジュールを作る
トランスコードモジュールを復号モジュールと符号化モジュールにリンクさせる
全体のイメージを復号する(新しいイメージをトランスコードし、書き込む)
復号モジュールをデストロイする
符号化モジュールをデストロイする
トランスコードモジュールをデストロイする
別の設計パターンは、戦略パターンと呼ばれるトランスコードモジュール３６においてインプリメントされることができる。このパターンは、いくつかのアルゴリズム（あるいは戦略）が１つの関数をインプリメントすることができるということを単に意味している。実際のビットレート制御を達成するそれらの効率性について異なるアルゴリズムを評価し、比較するとき、戦略パターンは、有用になる。フレームワークは、問題のすべてのアルゴリズムをインプリメントし、メインプログラムは、正しいアルゴリズムにプラグで接続するスイッチを単に必要とする。
【００７５】
前述の技術は個々にインプリメントされることができ、あるいは、そのような技術の２つ、あるいは、そのような技術のすべて、は符号化モジュール１２において一緒にインプリメントされることができる。符号化モジュール１２におけるコンポーネントは、ここにおいて説明される技術をインプリメントすることが適用可能なそれらの例示である。しかしながら、符号化モジュール１２は、多くの他のコンポーネントを含むことができ、望まれれば、上記で説明される１つまたは複数のモジュールの機能性を組み合わせるより少ないコンポーネントも含むことができる。符号化モジュール１２におけるコンポーネントは、１つ以上のプロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路（ＡＳＩＣｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェアあるいはそれの任意の組み合わせとしてインプリメントされることができる。モジュールとしての異なる特徴の描写は、符号化モジュール１２の異なる機能性の態様を強調するように意図されており、そのようなモジュールは、個別のハードウェアあるいはソフトウェアコンポーネントによって実現されなくてはならないということを必ずしも示唆していません。むしろ、１つまたは複数のモジュールに関連づけられた機能性は、共通のあるいは別々のハードウェアあるいはソフトウェアコンポーネント内で、統合されることができる。
【００７６】
図３は、図２の符号化モジュール１２のような符号化モジュールの例示的なオペレーションを図示しているフロー図であり、ここにおいて説明されたマクロスケールビットレート縮小技術にしたがってイメージをトランスコードする。最初に、符号化モジュール１２は、符号化されたイメージを得る（４０）。いくつかの態様では、符号化モジュール１２は、メディアソース１８から符号化されたイメージを得ることができる。代替的に、符号化モジュール１２は、生イメージデータを得て、符号化されたイメージを得るために、イメージデータの初期符号化を実行することができる。
【００７７】
符号化モジュール１２は、符号化されたイメージを復号する（４２）。エントロピ復号モジュール３２は、量子化された変換係数を得るために、イメージに関連づけられたコード表を使用して、符号化されたイメージを、復号することができ、逆量子化モジュール３４は、イメージのための変換係数を生成するために逆量子化を実行する。
【００７８】
符号化モジュール１２は、オリジナルに符号化されたイメージのための、ビットレート及び０値量子化変換係数の数、すなわち、Ｒｏ及びｚｏを決定する（４４）。ビットレートは、符号化されたイメージのファイルサイズに基づいて、計算されることができる。０値量子化変換係数の数は、復号の間に得られた量子化係数のマトリクスを分析することによって決定されることができる。一態様では、トランスコードプロセスは、オブザーバ設計パターンにしたがって操作することができる。その場合においては、０値係数の数、と他の統計は、下記で説明された第１のパスの復号の間に計算されることができ、下記で説明されたトランスコードは、第２のパスの間に生じることができる。
【００７９】
符号化モジュール１２はターゲットビットレートを得る（４６）。符号化モジュール１２は、例えば、デバイスのユーザ、あるいは、ネットワークサービスプロバイダから、ターゲットビットレートを得ることができる。代替的に、符号化モジュール１２は、ユーザによって指定された、あるいは、ネットワークサービスプロバイダから得た、ターゲットファイルサイズ（ＦＴ）に基づいて、ターゲットビットレートＲＴを計算することができる。ターゲットファイルサイズＦＴは、例えば、バイトで指定されることができ、また、ヘッダ情報と、ＡＣビットと、ＤＣビットと、を含むことができる。一態様では、符号化モジュール１２は、ターゲットビットレートＲＴを、式ＲＴ＝８＊ＦＴ−Ｈ−ＤＣにしたがって、計算することができ、なお、Ｈは、ヘッダビットの数であり、ＤＣは、イメージのＤＣコンポーネントを表わすビットの数である。
【００８０】
符号化モジュール１２は、ターゲットビットレート（ｚＴ）を達成するのに必要な０値量子化変換係数の数を決定する（４８）。例えば、トランスコードモジュール３６は、ターゲットビットレートＲＴ、オリジナルに符号化されたイメージのビットレートＲｏ、そしてオリジナルに符号化されたイメージの０値量子化変換係数ｚｏの数を使用して、０値量子化変換係数ｚＴのターゲット数を計算することができる。一態様では、トランスコードモジュール３６は、上記の式（３）−（５）で示されているようにｚＴを計算する。
【００８１】
符号化モジュール１２は、０値量子化変換係数のターゲット数に基づいて、スケーリングファクタｓとポジションインデクスｋを決定する（５０）。トランスコードモジュール３６は、輝度量子化テーブル３８と色度量子化テーブル３９のスケーリングから生じる０値係数の数がｚＴを超えないように、スケーリングファクタｓを選択するために、係数値のヒストグラムを使用することができる。一例として、イメージのヒストグラムは、値１を備えた１０００の係数と、値２を備えた２０００係数があるということを示す、と仮定する。さらに、ターゲット０値係数（ｚＴ）の数が１５００であると仮定する。トランスコードモジュール３６は、スケーリングファクタ２を選択しており、そしてそれは、ｚＴを超えているｚをもたらさない最大スケーリングファクタである。トランスコードモジュール３６は、ポジションインデクスｋが望ましい数の０値係数を結果としてもたらした後で、係数に対する第２のより大きなスケーリングファクタの適用において、ポジションインデクスｋをさらに決定することができる。
【００８２】
符号化モジュール１２は、スケーリングファクタｓとポジションインデクスｋの関数として、輝度量子化テーブル３８と色度量子化テーブル３９をスケーリングする（５２）。トランスコードモジュール３６は、輝度量子化テーブル３８及び色度量子化テーブル３９の量子化エントリを、単独シーケンスのエントリに順序づけ、ファクタｓをスケーリングすることによって第１のシーケンスのｋエントリを、より大きなスケーリングファクタ、例えばｓ＋１、によってシーケンスのエントリの残りを、スケーリングすることができる。この方法で、色度量子化テーブル３９は、イメージの明るさをよりよく保存する輝度量子化テーブル３８よりも多くスケーリングされる。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする、あるいは、ターゲットビットレートをアンダーシュートする可能性を減らす。
【００８３】
符号化モジュール１２は、スケーリングされた量子化テーブルを使用して、イメージを再符号化する（５４）。例えば、量子化モジュール２８は、スケーリングされた量子化テーブルを使用して、変換係数を量子化し、エントロピ符号化モジュール３０は、符号化されたビットストリームを生成するために量子化された係数を符号化する。図３のフロー図に説明された一例においては、符号化モジュール１２は、周波数ドメインにおいて、すなわち変換係数を使用して、イメージをトランスコードする。周波数ドメインにおいてイメージデータをトランスコードすることは、変換係数に、逆変換関数を適用する必要性をなくすことによって処理時間を縮小することができる。しかしながら、他の態様では、符号化モジュール１２は、生イメージデータを得る逆変換モジュールを含み、そして、生イメージデータを使用して、イメージをトランスコードすることができる。
【００８４】
図４は、マクロスケールビットレート縮小技術とマイクロスケールビットレート縮小技術の組み合わせを使用してイメージをトランスコードする、図２の符号化モジュール１２のような符号化モジュールの例示的なオペレーションを図示しているフロー図である。最初に、符号化モジュール１２は、符号化されたイメージを得る（６０）。符号化モジュール１２は、メディアソース１８から前に符号化されたイメージを得て、あるいは、メディアソース１８から生イメージデータを得て、符号化されたイメージを得るためにイメージデータの初期符号化を実行することができる。
【００８５】
符号化モジュール１２は、符号化されたイメージを復号する（６２）。符号化モジュール１２は、オリジナルで符号化されたイメージのために、ビットレートと０値量子化変換係数の数と、すなわち、それぞれＲｏとｚｏと、を決定する（６４）。ビットレートは、符号化されたイメージのファイルサイズに基づいて計算されることができる。０値量子化変換係数の数は、復号の間に決定されることができる。符号化モジュール１２は、ターゲットビットレートを得る（６６）。符号化モジュール１２は、例えば、デバイスのユーザあるいはネットワークサービスプロバイダからターゲットビットレートを得ることができる。代替的に、符号化モジュール１２は、ユーザによって指定された、あるいはネットワークサービスプロバイダから得られた、ターゲットファイルサイズ (ＦＴ)に基づいて、ターゲットビットレートＲＴを計算することができる。
【００８６】
符号化モジュール１２は、ターゲットビットレートを達成するために必要な、０値量子化変換係数ｚＴのターゲット数を決定する（６８）。例えば、トランスコードモジュール３６は、ターゲットビットレートＲＴ、オリジナルに符号化されたイメージのビットレートＲＯ、そしてオリジナルに符号化されたイメージの０値量子化変換係数zＯの数を使用して、０値量子化変換係数(ｚＴ)のターゲット数を計算することができる。一態様では、トランスコードモジュール３６は、上記の式（３）−（５）で示されるようなｚＴを計算する。
【００８７】
符号化モジュール１２は、０値量子化変換係数のターゲット数に基づいて、スケーリングファクタｓとポジションインデクスｋを決定する（７０）。トランスコードモジュール３６は、以下の式を満たすように、スケーリングファクタｓ及びポジションインデクスｋを計算することができる。
【数１１】
2010529748.tif 000015
【００８８】
符号化モジュール１２は、スケーリングファクタｓ及びポジションインデクスｋの関数として、輝度量子化テーブル３８及び色度量子化テーブル３９をスケーリングする（７２）。トランスコードモジュール３６は、例えば、輝度量子化テーブル３８と色度量子化テーブル３９の量子化エントリを単独シーケンスのエントリに順序づけ、スケーリングファクタｓによって第１のｋエントリを、より大きなスケーリングファクタ、例えばｓ＋１、によってエントリの残りを、スケーリングすることができる。より大きなスケーリングファクタは、０に量子化されているより多くの変換係数を結果としてもたらす。このように、色度量子化テーブル３９は、イメージの明るさをよりよく保存するために、輝度量子化テーブル３８よりも多くスケーリングされる。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートするあるいはターゲットビットレートをアンダーシュートする可能性を縮小する。
【００８９】
符号化モジュール１２は、スケーリングされた量子化テーブルを使用して、イメージのブロックを再符号化する（７４）。例えば、量子化モジュール２８は、スケーリングされた量子化テーブルを使用してブロックの変換係数を量子化し、そして、エントロピ符号化モジュール３０は、ブロックについて符号化されたビットストリームを生成するためにブロックの量子化された係数を符号化する。符号化モジュール１２は、イメージのｎブロックＲｅ（ｎ）を再符号化するために使用されたビットの数の合計を決定する（７６）。言い換えると、符号化モジュール１２は、イメージのブロックを再符号化するために使用されたビットの実行合計の数(a running total of the number of bits)を維持する。例えば、トランスコードモジュール３６は、特定のブロックについてトランスコードされたビットの数をトラッキングすることができ、他のブロックについての合計にそれを加える。トランスコードモジュール３６は、ブロックＲｅ（ｎ）を再符号化するために使用されたビットの数の合計数と、ｎ番目ブロックにおいてＲｔ（ｎ）で符号化されるべき理想的な数のビットとの差異（Δ）を計算する（７８）。
【００９０】
トランスコードモジュール３６は、Δがスレッシュホールドよりも大きいあるいは等しいかを決定する（８０）。スレッシュホールドは、ターゲットビットレート、例えば５％のターゲットビットレート、の関数であってもよい。トランスコードモジュール３６が、Δがスレッシュホールドよりも大きいあるいは等しいと決定するとき、トランスコードモジュール３６は、１つまたは複数のマイクロスケールビットレート制御技術を使用して、現在のブロックから取り除かれることができるビットがあるかどうかを決定する（８２）。上記で詳細に説明されるように、トランスコードモジュール３６は、現在のブロックは２乗であるいずれの量子化変換係数を有するかどうか、あるいは、ブロックのビットシーケンスはマーケットを表わすビットシーケンスを有するかどうか、を決定することができる。
【００９１】
トランスコードモジュール３６は、現在のブロックのビットストリームから取り除かれることができるビットがあると決定するとき、トランスコードモジュール３６は、ビットストリームのビットの数をさらに減らす（８４）。リムーバブル(removable)と識別されたビットが、２乗である、あるいは２乗に近い係数である、量子化された変換係数である場合には、トランスコードモジュール３６は、係数値が対応する２乗以下になり、縮小された係数を再符号化するように、１値ごとに、係数のうち１つまたは複数をデクリメントすることができる。上記で説明されているように、値１ごとに、２乗である係数を縮小することは、係数を表わすために必要とされたビットの数を減らす。特に、１つのビットセービングがある。リムーバブルと識別されるビットが、マーカを表わすブロックの１ビットシーケンスの一部分である場合、トランスコードモジュール３６は、パディングバイトの数を縮小することによって、ビットストリームのビットの数を縮小することができる。上記で説明されるように、トランスコードモジュール３６は、メタデータについてマーカに対応する１ビットシーケンスの次にパディングバイトを挿入することができる。ＪＰＥＧ規格のケースでは、例えば、０バイト０ｘ００は、実際の係数ビットストリームをマーカと区別するために、エントロピ符号化ビットストリームにおける０ｘＦＦの発生の後で挿入されることができる。トランスコードモジュール３６は、ビットが剰余に対応するとき、マーカを表わすシーケンスのうち少なくとも１ビットを変更することができる。例えば、トランスコードモジュール３６は、係数ビットストリームに対してのマーカに対応するシーケンスの書き込みを防ぐ剰余の最下位ビットを変更することができる。このビットを変更すると、ビットシーケンスはもはやマーカを表わさず、いかなるパディングバイトも必要ではない。
【００９２】
ビットストリームのビットの数を減らした後で、トランスコードモジュール３６は、調節されたΔ、すなわち取り除かれた多数のビットによって縮小されるもの、をスレッシュホールドと比較する（８０）。Δがスレッシュホールドをまだ超える場合には、トランスコードモジュール３６は、現在のブロックから取り除かれることができるビットがまだあるかどうかを決定する（８２）。適切な質を維持しながら取り除かれることができる現在のブロックの追加ビットがある場合には、トランスコードモジュール３６は、ブロックのビットの数をさらに減らす。適切な質を維持しながら現在のブロックから取り除くビットがない、あるいは、Δがスレッシュホールドを超えない場合には、トランスコードモジュール３６は、トランスコードされたブロックを送信する（８６）。しかしながら、いくつかのケースにおいては、トランスコードモジュール３６は、トランスコードされたブロックを送信することができないが、イメージのすべてのブロックが符号化されるのを待機し、そのあとで全体のイメージを送信する。
【００９３】
トランスコードモジュール３６は、符号化されるべき追加ブロックがあるかどうか決定する（８８）。符号化されるべき追加ブロックがあるとき、トランスコードモジュール３６は、調節された量子化テーブルを使用して、また、必要であれば、マイクロスケールのビットレート制御技術を使用して、ブロックを再符号化し続ける。この方法で、トランスコードモジュール３６は、イメージをトランスコードするために２層のビットレート制御をインプリメントすることができ、マクロスケール上の第１層のビットレート制御と、なお、グローバルなトランスコード技術は、均等に且つ一様に全体のイメージに影響を与え、そして、マイクロスケール上の第２層のビットレート制御とがあり、なお、トランスコードオペレーションの影響は、イメージの特定領域に局在化されている。この２層の戦略(two-tiered strategy)は、トランスコードモジュール３６が、初めに粗くターゲットビットレートにアプローチし、そしてそのあとで、必要なときに微調整を行うことを可能にする。
【００９４】
図５は、イメージのビットレートをさらに縮小するためにマイクロスケールビットレート制御をインプリメントして、図２の符号化モジュール１２のような、符号化モジュールの例示的なオペレーションを図示しているフロー図である。上記で説明されるように、エントロピ符号化モジュール３０は、０ｓのラン−長さと係数のバイナリサイズとに基づいてＡＣ係数のコードを割り当てる。トランスコードモジュール３６は、ブロックを根本的に変更せずに、０ｓのラン−長さを変更することができないが、係数のバイナリサイズを微妙に変更することができる。特に、トランスコードモジュールは、２乗であるブロックの係数を識別することができる（９０）。
【００９５】
トランスコードモジュール３６は、識別された係数が１に等しいかどうかを決定する（９２）。識別された係数が１と等しくない場合には、トランスコードモジュール３６は、１で識別された係数をデクリメントする（９４）。トランスコードモジュール３６は、係数の新しい値を符号化する（９６）。係数値８の場合は、例えば、トランスコードモジュール３６は、４つのビットで剰余の長さを符号化する。トランスコードモジュール３６は、たったの３ビットで、縮小された係数値７の剰余の長さを符号化することができ、それによって、１ビットごとにビットストリームを縮小する。さらに、ラン−サイズを表わすハフマンコードはまた短い可能性があり、追加ビットセービング(additional bit savings)を結果としてもたらす。
【００９６】
しかしながら、識別された係数が１に等しい場合、トランスコードモジュール３６は、２乗であるブロックの係数のうち異なる１つを選択する。値１を備えた係数をデクリメントすることは、新しい係数値０を結果としてもたらすであろう。言い換えると、変換の特定のコンポーネントは完全に除去され、そしてそれは、望んでいるよりも、より大きなひずみ及び／または乱れ(artifacts)をもたらす。したがって、トランスコードモジュール３６は、値１で係数を縮小することができない。
【００９７】
このように、トランスコードモジュール３６は、１つまたは複数の係数の値を選択的に縮小することによって、ビットストリームのビットの数をさらに縮小することができる。上記で説明されているように、イメージの符号化されたビットストリームは、ほとんど、ホフマンコードと、ＡＣ係数についての剰余文字列(residue strings)から成る。１つまたは複数の係数の値を選択的に減らすことによって、トランスコードモジュール３６は、縮小された係数についてホフマンコードの長さを縮小することができる。より小さい係数の値は、より大きい係数の値よりも、しばしば、頻繁であるからであり、したがって、より短いホフマンコードがしばしば割り当てられる。さらに、トランスコードモジュール３０は、１つまたは複数の係数値を選択的に縮小することによって、剰余におけるビットを節約することができる。図５は、２乗に等しい係数を縮小する観点で説明されているが、技術は、２乗に等しい値を有する係数に適用するために拡張されることができる。例えば、係数値９は、新しい係数値７を結果としてもたらす２によって、縮小されることができ、そしてそれは、縮小された数のビットとより短いハフマンコードによって表されることができる。係数値が２乗に対してどれくらい接近してなければならないかは、許容(acceptable)と考えられるひずみの量による。
【００９８】
図５で説明されるマイクロビットレート制御技術は、必要なときにイメージのサイズをさらに縮小するマクロスケールビットレート制御技術とともに使用されることができる。代替的に、マイクロスケールレート制御技術は、すでに符号化されたイメージをトランスコードするために、あるいは、イメージの初期符号化を実行するために、マクロスケールレート制御技術から独立して使用されることができる。
【００９９】
図６は、イメージのビットレートをさらに縮小するためにマイクロスケールビットレートをインプリメントしている、図２の符号化モジュール１２のような符号化モジュールの例示的なオペレーション、を図示しているフロー図である。トランスコードモジュール３６は、マーカと対応するビットシーケンスがある、ビットストリームにおいて位置を識別する（１００）。上記で説明されるように、イメージ圧縮技術は、メタデータの領域を識別するマーカとして、特定のビットシーケンスを使用することが出来る。ＪＰＥＧ規格において、ｂｙｔｅ ０ｘＦＦで始まる２バイトのマーカは、続くメタデータのタイプを示しているバイトが続くメタデータの領域を識別するために使用される。係数の符号化がマーカ０ｘＦＦと対応するビットシーケンスを導入するとき、エントロピ符号化モジュール３０は、係数ビットストリームをマーカと明確にするために、ゼロバイト０ｘ００をビットストリームに詰める(stuffs)。したがって、トランスコードモジュール３６は、ビットストリームに書き込まれた次のバイトを備える一番左のビットを保存するビットバッファを含んでもよく、例えばＪＰＥＧ規格の場合では０ｘＦＦのようなマーカと対応するビットシーケンスのためにバッファをモニタしてもよい。
【０１００】
トランスコードモジュール３６は、ビットシーケンスが剰余を表わす少なくとも１つのビットを含むかどうかを決定する（１０２）。ビットシーケンスが剰余を表わす少なくとも１ビットを含むとき、トランスコードモジュール３６は、剰余を表わす、８ビットのうちの１つまたは複数のビットを変更することができる（１０４）。例えば、トランスコードモジュール３６は、剰余を表わすビットの最下位ビットを変更することができる。このことは、代わりに、マーカを表わし、剰余の値を最小にのみ変更する、ビットシーケンスの発生を防ぐ。トランスコードモジュール３６は、そのあとで、パディングビットを挿入することなく、ビットシーケンスを符号化する（１０６）。いくつかのケースにおいては、トランスコードモジュール３６は、パディングバイトを典型的に挿入することができる。その場合には、８つのビットが保存される。
【０１０１】
ビットシーケンスが剰余を表わす少なくとも１ビットを含まないとき、トランスコードモジュール３６は、いずれのビットも変更せず（１０８）、パディングビットが挿入された状態でシーケンスを符号化する（１１０）。ハフマンコードのビットを変更することは、そのあとで復号デバイスにおいて誤りを結果としてもたらすであろう、ハフマンコードにおける変更を結果としてもたらすであろう。
【０１０２】
図６で説明されるマイクロスケールビットレート制御技術は、必要なときに、イメージのサイズをさらに縮小するマクロスケールビットレート制御とともに使用されることができる。代替的に、マイクロスケールレート制御技術は、すでに符号化されたイメージをトランスコードするために、あるいは、イメージの初期符号化を実行するために、マクロスケールレート制御技術と独立して使用されることができる。
【０１０３】
ここにおいて説明されている技術は、ハードウェア、ソフトウェア、ファームウェアあるいはそれらの任意の組み合わせで、インプリメントされることができる。モジュールあるいはコンポーネントとして説明されるいずれの特徴も、集積論理回路において一緒に、ディスクリートとして別々だが、相互運用が可能な論理デバイスをインプリメントされることができる。ソフトウェアでインプリメントされる場合には、本技術は、実行されるときに、上記で説明される１つまたは複数の方法を実行する、インストラクションを備えているコンピュータ可読媒体、によって少なくとも部分的に実現されることができる。コンピュータ可読媒体は、コンピュータプログラムプロダクトの一部を形成することができ、そしてそれは、パッケージング材料を含むことができる。コンピュータ可読媒体は、シンクロナス動的ランダムアクセスメモリ（ＳＤＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電子的消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、ＦＬＡＳＨメモリ、磁気あるいは光学データ保存メディア、及び同様なもの、のようなランダムアクセスメモリ（ＲＡＭ）を備えることができる。技術は、さらに、あるいは、代替的に、インストラクションあるいはデータストラクチャの形で復号を搬送するあるいは通信する、そして、コンピュータによってアクセスされ、読み取られ、及び／または実行されることができる、コンピュータ可読通信媒体によって少なくとも部分的に実現されることができる。
【０１０４】
コードは、ＤＳＰｓ、汎用マイクロプロセッサ、ＡＳＩＣｓ、フィールドプログラマブル論理アレイＦＰＧＡｓ、あるいは、他の同等の、集積あるいはディスクリートロジック回路構成(other equivalent integrated or discrete logic circuitry)のような、１つまたは複数のプロセッサによって実行されることができる。したがって、ここにおいて使用されるように、用語「プロセッサ(processor)」は、いずれの前述の構造、あるいはここにおいて説明される技術のインプリメンテーションに適切ないずれの他の構造を指すことができる。さらに、いくつかの態様では、ここにおいて説明されている機能性は、符号化及び復号のために構成された専用ソフトウェアモジュールあるいはハードウェアモジュール内で提供されてもよく、あるいは、組み込まれたビデオエンコーダ−デコーダ（ＣＯＤＥＣ）に組み込まれてもよい。したがって、本開示はまた、本開示で説明される技術の１つまたは複数をインプリメントする回路構成を含む様々な集積回路デバイスのいずれも熟考する。そのような回路構成は、単一の集積回路チップにおいて、あるいは、マルチプルで相互運用可能な集積回路チップにおいて、提供されることができる。
【０１０５】
様々な例が説明されている。これらおよび他の例は、添付された特許請求の範囲内にある。
【図１】
2010529748.tif 000016
【図２】
2010529748.tif 000017
【図３】
2010529748.tif 000018
【図４】
2010529748.tif 000019
【図５】
2010529748.tif 000020
【図６】
2010529748.tif 000021
【国際調査報告】
2010529748.tif 000022
2010529748.tif 000023
2010529748.tif 000024