説明

イメージトランスコードのためのビットレート縮小技術

【課題】イメージデータを縮小サイズに圧縮するためにのトランスコーディング技術を提供する。
【解決手段】符号化デバイスは、全体のイメージにわたってファイルサイズを一様に縮小するために、ビットレート(R)と0値量子化変換係数の数との間のほぼ直線関係の関数として、1つまたは複数の量子化テーブルをスケーリングする。次にスケーリングされた量子化テーブルを使用して、複数のブロックのピクセルを符号化する。このとき、複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成する前記n番目ブロックにおいて理想的に符号化されるべきビットの数との間の差異をトラッキングし、差異がスレッシュホールドよりも大きいあるいは等しいとき、複数のブロックの部分を符号化するために使用された1つ以上のビットを取り除く。

【発明の詳細な説明】
【優先権主張】
【0001】
本願は、2007年5月31日に出願された、米国の仮出願60/941,041号の利益を主張し、その全体の内容は、参照により、ここに組み込まれている。
【技術分野】
【0002】
本開示は、圧縮(compression)に関し、特にイメージ(images)の圧縮に関する。
【背景技術】
【0003】
送信及び保存のためのイメージファイルへのイメージの圧縮は、様々な応用において不可欠となっており、そして、それは、イメージのインターネット伝送(Internet transmission of images)、デジタルイメージング(digital imaging)、ピクチャメッセージング(picture messaging)、及び同様なものを含む。ジョイントフォトグラフィックエキスパートグループ(Joint Photographic Experts Group)(JPEG)のような、イメージ圧縮技術は、解像度の高いイメージが比較的小さいイメージファイルにおいて保存されることを可能にする。デジタルカメラ及びワイヤレス通信デバイスの収束で、これらのイメージファイルは、今や、無線ネットワーク上で共有されることができる。しかしながら、この共有は、時間及び帯域幅のようなネットワークリソースの点から、損失が大きい可能性がある(may be costly)。これらの損害(cost)を減らすあるいは制限することを目指して、無線ネットワークのプロバイダは、ときどき、ネットワーク上で送信されることができるイメージファイルのファイルサイズに制限を課す。これらのファイルサイズ制約を満たすために、課されたファイルサイズ制限に対するイメージ圧縮は、イメージの質において重大な損失を結果としてもたらす可能性がある。
【発明の概要】
【0004】
本開示は、イメージデータを縮小サイズに圧縮するために、データを符号化するための技術を説明する。本技術は、送信のためにイメージを縮小サイズにイメージをトランスコードする(transcoding)ときに、特に効果的であることができる。ここにおいて説明されるトランスコード技術は、多くの応用で利用されることができる。本技術が使用されることができるそのような1つの応用は、無線ネットワーク上の送信にある。例えば、ユーザは、デジタルピクチャ(digital picture)を撮るために、イメージキャプチャ性能(image capture capability)を備えたモバイル電話、例えば、いわゆるカメラ付き電話あるいはテレビ電話、を使用することができる。一般的に、キャプチャされたデジタルピクチャは、高解像度イメージ、例えば高解像度のJPEGイメージ、である。しかしながら、別の電話にキャプチャされたイメージを送信するために、高解像度イメージのイメージファイルは、無線ネットワークサービスプロバイダの送信要件を満たすために、あるいは、受信デバイスのスクリーンサイズ及び色制限にうまく合わせるために、より小さいファイルサイズ、例えばより低い解像度、にトランスコードされる必要があるかもしれない。
【0005】
一態様においては、方法は、デジタルイメージデータを処理することを備えており、そしてそれは、計算されたスケーリングファクタの関数(a function of a computed scaling factor)として1つまたは複数の量子化テーブル(one or more quantization tables)をスケーリングすることと、1つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセル(a plurality of blocks of pixels)を符号化することと、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数(a number of bits encoded at an nth block of the plurality of blocks of pixels of the digital image data)とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数(a number of bits that ideally should be encoded at the nth block to achieve a target bitrate)との間の差異をトラッキングすることと、そして差異がスレッシュホールド(threshold)よりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用される1つまたは複数のビットを取り除くことと、を備えている。
【0006】
別の態様において、デジタルイメージデータを処理するための装置(apparatus)は、デジタルイメージデータの複数のブロックのピクセルを符号化することにおいて使用される1つまたは複数の量子化テーブルを保存するメモリと、計算されたスケーリングファクタの関数として1つまたは複数の量子化されたテーブルをスケーリングし、1つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除く、符号化モジュールと、を備えている。
【0007】
別の態様では、デジタルイメージデータを処理する装置は、計算されたスケーリングファクタの関数として1つまたは複数の量子化テーブルをスケーリングするための手段と、1つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセルを符号化するための手段と、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするための手段と、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用される1つまたは複数のビットを取り除くための手段と、を備えている。
【0008】
別の態様では、デジタルイメージデータを処理するためのコンピュータプログラムプロダクト(computer-program product)は、インストラクション(instructions)を有しているコンピュータ可読媒体(computer readable medium)を備えている。インストラクションは、計算されたスケーリングファクタの関数として1つまたは複数の量子化テーブルをスケーリングするためのコードと、1つまたは複数のスケーリングされた量子化テーブルを使用して、デジタルイメージデータの複数のブロックのピクセルを符号化するためのコードと、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするためのコードと、差異がスレッシュホールドよりも大きいあるいは等しいとき、複数のブロックのイメージデータの部分を符号化するために使用された1つまたは複数のビットを取り除くためのコードと、を備えている。
【0009】
別の態様では、デジタルイメージデータを処理するための無線通信デバイスハンドセット(wireless communication device handset)は、計算されたスケーリングファクタの関数として1つまたは複数の量子化されたテーブルをスケーリングし、1つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除く、符号化モジュールと、符号化されたブロックのピクセル(encoded blocks of pixels)を送信する送信機と、を備えている。
【0010】
別の態様では、デジタルイメージデータを処理するための集積回路のデバイス(integrated circuit device)は、計算されたスケーリングファクタの関数として1つまたは複数の量子化されたテーブルをスケーリングし、1つまたは複数のスケーリングされた量子化テーブルを使用してデジタルイメージデータの複数のブロックのピクセルを符号化し、デジタルイメージデータの複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成するn番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、差異がスレッシュホールドよりも大きいあるいは等しいとき、イメージデータの複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除くように構成された、少なくとも1つのプロセッサを備えている。
【0011】
別の態様では、デジタルイメージデータを処理する方法は、ターゲットビットレートを達成する0値量子化変換係数の望ましい数を識別することと(identifying a desired number of zero-valued quantized transform coefficients to achieve a target bitrate)、0値量子化変換係数の望ましい数に基づいて、1つまたは複数の量子化テーブルのスケーリングに使用するためのスケーリングファクタを決定することと(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)、を備えている。
【0012】
別の態様では、デジタルイメージデータを処理する方法は、デジタルイメージデータの少なくとも1ブロックのピクセルについて複数の量子化された変換係数を得ることと、2乗の値(a value that is a power of two)を有する複数の量子化された変換係数のうち少なくとも1つを選択することと、1つまたは複数の選択された量子化された変換係数の値から、1の値を差し引くことと、そして、複数の量子化された変換係数を符号化することと、を備えている。
【0013】
別の態様では、デジタルイメージデータを処理する方法は、ビットシーケンスを得るためにデジタルイメージデータの少なくとも1ブロックのピクセルで符号化することと、1ゼロバイトの付加を必要とするマーカとして作用する方法で配列されるビットシーケンスの複数のビットを識別することと、ビットシーケンスがマーカシーケンス(marker sequence)のようにはもはや作用しないようにビットシーケンスのビットのうちの1つを変更することと、そして、ビットシーケンスを送信することと、を備えている。
【0014】
本開示で説明された技術は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらのいずれの組み合わせで、インプリメントされることができる。ソフトウェアでインプリメントされる場合には、ソフトウェアは、プロセッサで実行されることができ、そしてそれは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいはデジタルシグナルプロセッサ(DSP)、あるいは、他の同等な集積あるいはディスクリート論理回路を指すことができる。技術を実行するソフトウェアは、コンピュータ可読媒体に最初に(initially)保存され、プロセッサによってロードされ、実行されることができる。したがって、本開示はまた、本開示で説明されているようにプロセッサに様々な技術のうちいずれかを実行させるインストラクションを備えているコンピュータ可読媒体を熟考する。いくつかのケースにおいては、コンピュータ可読媒体は、コンピュータプログラムプロダクトの一部分を形成することができ、そしてそれは、製造者に販売される、及び/または、デバイスにおいて使用されることができる。コンピュータプログラムプロダクトは、コンピュータ可読媒体を含むことができ、あるケースにおいては、パッケージング材料(packaging materials)もまた含むことができる。
【0015】
1つまたは複数の例の詳細は、添付図面において、また、下記の詳細な説明において、説明されている。他の特徴、目的および利点は、詳細な説明、図面、および添付の特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0016】
【図1】図1は、ここにおいて説明される符号化技術をインプリメントする例示的なシステム、を図示しているブロック図である。
【図2】図2は、例示的な符号化モジュールをさらに詳細に図示しているブロック図である。
【図3】図3は、ここにおいて説明されているマクロスケールビットレート縮小技術にしたがってイメージをトランスコードする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図4】図4は、マクロスケールビットレート縮小技術とマイクロスケールビットレート縮小技術との組み合わせを使用して、イメージをトランスコードする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図5】図5は、イメージのビットレートをさらに縮小するために、マイクロスケールビットレート制御をインプリメントする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【図6】図6は、イメージのビットレートをさらに縮小するために、別のタイプのマイクロスケールビットレート制御をインプリメントする符号化モジュールの例示的なオペレーションを図示しているフロー図である。
【発明を実施するための形態】
【0017】
本開示は、縮小サイズにイメージデータを圧縮するためにデータを符号化するための技術を説明する。本技術は、送信のためにイメージを縮小サイズにトランスコードすることにおいて、特に効果的であることができる。ここにおいて説明されているトランスコード技術は、多くの応用で利用されることができる。技術が利用されることができる1つのそのような応用は、無線ネットワーク上の送信にある。例えば、ユーザは、デジタルピクチャを撮るために、イメージキャプチャ性能を備えたモバイル電話、例えばいわゆるカメラ付電話あるいはテレビ電話、を使用することができる。一般的に、キャプチャされたデジタルピクチャは、高解像度JPEGイメージのような高解像度イメージである。しかしながら、キャプチャされたイメージを別の電話に送信するために、高解像度のイメージのイメージファイルは、無線ネットワークサービスプロバイダの送信要件を満たすために、あるいは、受信デバイスのスクリーンサイズ及び色制限をよりよく合わせるために、より小さいファイルサイズ、例えばより低い解像度、にトランスコードされる必要がある可能性がある。
【0018】
キャプチャされたイメージは、イメージをトランスコードするために一様に全体のイメージに影響を及ぼすビットレート制御技術を使用して、許容ファイルサイズにトランスコードされることができる。そのような一様のビットレート制御技術は、ここにおいて、マクロスケールビットレート制御技術(macroscale bitrate control techniques)と呼ばれる。マクロスケールビットレート制御技術は、マクロスケールビットレート制御を達成する第一手段としての、ビットレートと0値量子化変換係数の数との間のほぼ直線関係の関数(a function of the near linear relationship between bitrate and the number of zero-valued quantized transform coefficients)として、例えば、1つまたは複数の量子化テーブルの修正を含むことができる。
【0019】
代替的に、あるいは、さらに、キャプチャされたイメージは、イメージの特定の局在化された領域だけに影響を及ぼすビットレート制御技術を使用して、トランスコードされることができる。これらの局在化されたビットレート制御技術は、ここにおいては、マイクロスケールビットレート制御技術(microscale bitrate control techniques)と呼ばれる。この場合、トランスコード技術は、イメージの1サブセットのブロック(a subset of blocks of the image)、のようなイメージの一部分だけに影響する。一態様では、マイクロスケール技術は、より小さい数のビットを備えた係数を表すために係数の値を選択的に減らすことを含んでいる。別の態様では、マイクロスケール技術は、マーカを示すビットシーケンスを調節することによってバイトを詰める(padding)必要をなくすことを含んでいる。
【0020】
図1は、ここにおいて説明されている符号化技術をインプリメントする例示的なシステム2を図示しているブロック図である。システム2は、ネットワーク8によって接続された、符号化デバイス4と復号デバイス6を含んでいる。符号化デバイス4は、ネットワーク8上の復号デバイス6に対する送信のためにイメージのサイズを縮小するために、あるいは、符号化デバイス4のメモリ内の保存のために、下記で説明されている技術にしたがって、ソースからイメージを得て、イメージを符号化する。符号化デバイス4と復号デバイス6は、パーソナルコンピュータ、モバイル無線電話、サーバ、ネットワーク装置(network appliances)、乗り物に搭載されたコンピュータ、ビデオゲーミングプラットフォーム、ポータブルビデオゲームデバイス、コンピュータワークステーション、コンピュータキオスク、デジタル信号、メインフレームコンピュータ、テレビセットトップボックス(television set-top boxes)、ネットワーク電話、携帯情報端末(PDAs)、モバイルメディアプレイヤー、ホームメディアプレイヤー、デジタルビデオプロジェクター、あるいは、他のタイプの電子デバイス、のような、いずれのワイヤードあるいはワイヤレスデバイス、を備えることができる。一例として、符号化デバイス4あるいは復号デバイス6は、受信、送信、及び他の適切なコンポーネントと一緒に、上記で説明されるようなモバイル電話のような無線通信デバイスハンドセット内で提供されることができる。
【0021】
符号化デバイス4は、イメージデータを生成するためにメディアソース10を含むことができる。メディアソース10は、例えば、対象のシーンのイメージデータをキャプチャするデジタルビデオあるいは静止写真のカメラ、であってもよい。いくつかの態様では、メディアソース10は、符号化デバイス4内で、統合されてもよい。一例として、メディアソース10は、いわゆるカメラ付電話あるいはテレビ電話を形成するために、モバイル電話において統合されることができる。代替的に、メディアソース10は、ワイヤードあるいはワイヤレスリンクを介して、符号化デバイス4に結合された、スタンドアロンデジタルカメラ(stand-alone digital camera)のようなスタンドアロンデバイス(stand-alone device)であってもよい。メディアソース10の他の例は、イメージアーカイブ(image archive)、あるいは、コンテンツプロバイダからのイメージあるいはビデオのストリーム(a stream of images or video from a content provider)、を含んでいる。
【0022】
メディアソース10は、対象のシーンのイメージデータをキャプチャする。キャプチャされたイメージデータは、静止イメージあるいは多分フルモーションビデオシーケンス(possibly full motion video sequences)であってもよく、その場合には、イメージ処理は、生成されたビデオシーケンスの1つまたは複数のイメージフレーム上で実行されることができる。本開示で説明された符号化技術はキャプチャされたデジタルビデオに対して一般的に適用可能であってもよいが、デジタル静止イメージに対するそのような技術の適用は、説明の目的のために記載されるであろう。メディアソース10は、符号化モジュール12に対してキャプチャされたイメージデータを提供する。いくつかの態様において、例えば、符号化デバイス4がスタンドアロンメディアソースに結合されるとき、符号化モジュール12に対してメディアソース10によって提供されるイメージは、すでに圧縮されてもよい。例えば、スタンドアロンメディアソースは、例えばイメージをキャプチャする際に、イメージを最初に圧縮することができる。代替的に、メディアソース10は、生イメージデータ(raw image data)を、符号化モジュール12に提供することができる。
【0023】
メディアソース10が符号化モジュール12に生イメージデータを提供するとき、符号化モジュール12は、保存及び/または送信のために特定のイメージ圧縮フォーマットにイメージを圧縮するようにキャプチャされたイメージを符号化する。符号化モジュール12は、JPEG、タグされたイメージファイルフォーマット(Tagged Image File Format)(TIFF)、ビットマップ(BMP)、あるいは他のイメージ圧縮フォーマットを含んでいる、多数のイメージ圧縮フォーマットのうちのいずれかを使用してイメージを圧縮することができる。ビデオ(video)の場合には、符号化モジュール12は、モーションピクチャエキスパートグループ(Motion Pictures Expert Group)(MPEG)、国際電気通信連合(ITU)H.264、及び同様なもの、のような任意の数のビデオ圧縮フォーマットを使用してビデオを圧縮することができる。しかしながら、例示的な目的のために、本技術はJPEGのコンテキストにおいて説明されるだろう。
【0024】
特に、符号化モジュール12は、係数のマトリクスの形で周波数ドメイン表示(a frequency domain representation)を生成するために、生のイメージデータに対して、8×8の整数変換あるいは離散コサイン変換(DCT)のような整数変換(integer transform)を実行することができる。符号化モジュール12は、そのあとで、高い周波数係数に関連づけられた情報の量を減らすために、係数のマトリクスの係数を量子化することができる。符号化モジュール12は、エントロピ符号化のような圧縮符号化アルゴリズムあるいはラン−長さ符号化アルゴリズム(run-length coding algorithm)を使用して、量子化された係数を符号化する。符号化されたイメージは、符号化デバイス4のメモリ(図1で示されていない)に保存されることができる。
【0025】
符号化モジュール12は、イメージを複数のサブセットのピクセルに区分することによってイメージを圧縮し、また、個別にサブセットを符号化することによってサブセットのピクセルのそれぞれを圧縮するように、さらに構成されることができる。これらのサブセットのピクセル(subsets of pixels)は、ブロック(blocks)と呼ばれることができる。JPEG規格の場合、例えば、符号化モジュール12は、8×8ブロックにイメージを区分し、8×8ブロックのそれぞれを別々に圧縮することができる。8個の列あるいは行よりも多いあるいは少ないブロックもまた可能である。
【0026】
上記で説明されるように、符号化デバイス4のユーザは、複号デバイス6に対し、ネットワーク8上で圧縮されたイメージを送信することを望んでもよい。ネットワーク8は、1つまたは複数のワイヤードあるいはワイヤレス通信ネットワーク、あるいはそれらの組み合わせ、を備えることができる。いくつかの態様において、ネットワーク8のサービスプロバイダは、ネットワーク8上で送信されたイメージに対してファイルサイズ制限を課すことができる。一例として、サービスプロバイダは、300キロバイト(KB)の最大ファイルサイズ送信能力を課すことができる。他方で、典型的な5メガピクセルイメージの場合、ファイルサイズは、符号化モジュール4あるいはメディアソース10のいずれかによって最初に圧縮されるとき、大体1−2メガバイト(MB)であってもよい。したがって、ネットワーク8のサービスプロバイダの送信要件を満たすために、符号化デバイス4は、より小さいイメージファイルを生成するために、保存されたイメージをトランスコードする必要があるかもしれない。
【0027】
キャプチャされたイメージを許容ファイルサイズにトランスコードするために、符号化デバイス4は、コーディングビットレートを減らすために、したがって、ファイルサイズを減らすために、ここにおいて説明された技術のうちの1つまたは複数を使用することができる。いくつかの態様では、符号化モジュール12は、イメージをトランスコードするために、一様に全体のイメージに影響を及ぼすビットレート制御技術を利用することができる。そのような一様のビットレート制御技術は、ここにおいては、マクロスケールビットレート制御と呼ばれる。符号化モジュール12は、例えば、マクロスケールビットレート制御を達成する第1の手段としてイメージを符号化するために使用された、1つまたは複数の量子化テーブルを修正することができる。下記で詳細に説明されるように、符号化モジュール12は、ビットレート(R)と0値量子化変換係数の数との間のほぼ直線関係(the near linear relationship)の関数として、量子化テーブルを修正することができる。ほぼ直線関係は、例えば、いずれのブロックベースの変換コーディングシステムに適用することができる。
【0028】
代替的に、あるいは、さらに、符号化モジュール12は、許容ファイルサイズにイメージをトランスコードするために、イメージの特定の局在化された領域だけに影響を及ぼすビットレート制御技術を使用することができる。これらの局在化されたビットレート制御技術は、ここにおいて、マイクロスケールのビットレートの制御(microscale bitrate control)と呼ばれる。この場合、トランスコード技術は、一様に全体のイメージに影響を与えないが、イメージの一部分のみに影響を与える。例えば、マイクロスケールのビットレート制御技術は、イメージの1サブセットのブロックにのみ適用することができる。一態様では、符号化モジュール12は、2剰である1つまたは複数の量子化された変換係数を識別し、識別された係数の値を1だけ減らすことができる。これは、イメージの品質にあまり影響を与えずに、符号化モジュール12がより小さい数のビットを備えた係数を表すことを可能にする。別の態様では、符号化モジュール12は、パディングバイト(padding bytes)を必要とするビットシーケンスの発生を識別し、そしてパディングバイトがもはや必要ではないように、ビットのシーケンスのうちの少なくとも1つを変更することができる。
【0029】
いくつかの態様では、符号化モジュール12は、マクロスケールビットレート制御技術と独立して、1つまた複数のマイクロスケールのビットレート制御技術を利用することができる。例えば、符号化モジュール12は、より小さなファイルサイズにイメージをトランスコードするために、ビットレートを減らすマイクロスケールビットレート制御技術のみを利用することができる。別の例において、符号化モジュール12は、生イメージデータの初期の符号化の間に、マイクロスケールビットレート制御技術を利用することができる。したがって、マイクロスケールビットレート制御技術は、イメージのファイルサイズを縮小するために、初期の圧縮(initial compression)の間に、使用されることができる。
【0030】
代替的に、符号化モジュール12は、必要であれば、ターゲットビットレートを満たすために、更なるビットレート縮小を行なうマクロスケールビットレート制御技術と共にマイクロスケールビットレート制御技術を使用することができる。言い換えると、符号化モジュール12は、イメージをトランスコードするために2層のビットレート制御、すなわち、マクロスケールレベルの第1層のビットレート制御と、なお、技術は、全体のイメージに均一にそして一様に、グローバルに影響を与える、マイクロスケールレベルの第2層のビットレート制御と、なお、技術は、イメージの特定の局在化された領域に影響を与える、をインプリメントすることができる。この2層の戦略(two-tiered strategy)は、符号化モジュール12に、ターゲットファイルサイズにアプローチするために、ビットレートを粗く最初に縮小させ、そのあとで、必要に応じて、ビットレートに対する微調整を行わせることを可能にする。このように、マクロスケールビットレート制御技術は、マクロスケールビットレート制御技術が十分ではないとき、さらなる調整を行うことのみできる。例えば、マイクロスケールビットレート制御は、トランスコードプロセスの間に符号化されたビットの数がスレッシュホールドを超えるとき、さらなるビットレート縮小を行なうことのみできる。
【0031】
より小さいファイルサイズを生成するためにイメージデータのビットレートを減らした後で、送信機14、あるいは他のネットワークインタフェースは、復号デバイス6に対して、ネットワーク8上でイメージを送信する。復号デバイス6は、受信機16を介して符号化されたイメージを受信し、復号モジュール18で符号化されたイメージデータを復号する。復号デバイス6は、多分、メディア表示ユニット20を介して復号デバイス6のユーザに対して復号されたイメージを提示しており、そしてそれは、適用可能であれば、ディスプレイデバイスとオーディオデバイスを含むことができる。
【0032】
本開示で説明された技術は、いくつかの利益を提供することができる。特に、トランスコード技術は、十分な品質を維持しながら、イメージのファイルサイズを縮小する。さらに、トランスコード技術は、ネットワークサービスプロバイダによって課された特定のファイルサイズ要件を満たすファイルサイズを縮小するために使用されることができる。このように、符号化デバイス4は、最適な解決法に達するためにイメージを通じて、いくつかの再符号化あるいはいくつかのパスを実行する代わりに、1パスのトランスコードで(in one pass of transcoding)、正しいサイズにイメージをトランスコードすることができる。さらに、イメージをトランスコードする技術を使用することは、符号化デバイス4が最初により高い品質を備えたイメージを圧縮し、そして、送信のために必要なときにはイメージの品質を減らすことだけをすることを可能にする。このように、ファイルサイズの制限は、ユーザによって作成された、あるいは、保存された高品質のイメージを抑制しない。代わりに、ファイルサイズの制限は、送信を必要とするイメージのみを抑制する。しかしながら、本技術はまた、圧縮保存のためにイメージを抑制することに有用でありうる。
【0033】
図2は、さらに詳細に、図1の符号化モジュール12のような、例示的な符号化モジュールを図示しているブロック図である。符号化モジュール12は、イメージ処理モジュール24、変換モジュール26、量子化モジュール28、エントロピ符号化モジュール30、エントロピ復号モジュール32、逆量子化モジュール34、トランスコードモジュール36、及びメモリ37、を含んでいる。さらに詳細にここに説明されるように、符号化モジュール12のコンポーネントは、符号化されたイメージデータのサイズを縮小するために、生イメージデータを最初に符号化することと、前に符号化されたイメージデータをトランスコードすることの両方のために使用されることができる。いくつかの態様においては、符号化モジュール12は、無線ネットワーク上の別の無線通信デバイスへの送信のためにイメージ及び/またはビデオを符号化するように無線通信デバイスハンドセット内で常駐することができる。
【0034】
イメージ処理モジュール24は、メディアソース18(図1)からイメージデータを受信する。メディアソース18から受信されたイメージデータは、複数のイメージセンサから直接の生イメージデータであってもよく、あるいは、最初に圧縮されたイメージデータの符号化されたイメージファイルであってもよい(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)。生のイメージデータの場合には、イメージ処理モジュール24は、YCbCr色空間(YCbCr color space)に生のイメージデータを変換することができる。YCbCr色空間のイメージデータは、イメージの明るさ(brightness)を表す輝度コンポーネントYと、青軸と赤軸に沿った色(color along the blue axis and red axis)をそれぞれ表す2つの色度コンポーネントCb及びCrと、を含む。YCbCr色空間への変換は、追加色度情報、すなわちCb及びCr情報を廃棄することによって、符号化モジュール12はより多くの輝度情報、すなわち、多くのYコンポーネント(more of the Y component)、を保持するので、有利であってもよい。このことは、人の視覚システムが青あるいは赤軸(クロミナンスCb及びCr)に沿った色よりも明るさ(輝度Y)によりセンシティブであるので、有利であってもよい。しかしながら、同様の技術は、RGB色空間のような他の色空間で利用されることができる。
【0035】
イメージ処理モジュール24は、1つまたは複数の色コンポーネントを、追加的にダウンサンプルすることができる。ダウンサンプリング(downsampling)は、水平方向(horizontal direction)(例、行に沿って)と垂直方向(vertical direction)(例、列に沿って)のうちのいずれか、あるいは両方で、2つのファクタによって大抵行なわれる。共通のダウンサンプリング比は、1つのYサンプルが各1つのセットのCb及びCrサンプルについて符号化されるH1V1(ダウンサンプリングなし)、2つのYサンプルが各1つのセットCb及びCrサンプルについて符号化されるH2V1(行に沿って水平方向にダウンサンプルされた色度)、そして、4つのYサンプルが各1つのセットのCb及びCrサンプルについて符号化されるH2V2(列に沿って垂直方向、また、行に沿って水平方向、の両方でダウンサンプルされた色度)、として表される。いくつかの場合においては、符号化モジュール12は、色度コンポーネントをダウンサンプルすることのみできる。他の場合では、符号化モジュール12は、輝度及び色度コンポーネントの両方をダウンサンプルすることができるが、人の視覚システムにあまり認知しないので、輝度コンポーネントよりも多く色度コンポーネントをダウンサンプルすることができる。
【0036】
イメージデータが生のイメージデータである、あるいは以前に圧縮されたイメージデータであるかどうかにかかわらず、イメージ処理モジュール24は、ブロックのピクセルにイメージデータを分割し、独立してブロックのそれぞれを処理することができる。JPEG規格にしたがって、イメージ処理モジュール24は、8x8ブロックにイメージデータを分割することができる。しかしながら、8つの列あるいは行よりも多いあるいは少ないブロックもまた、可能である。ブロックにイメージデータを分割し、独立してブロックのそれぞれを処理することは、メモリスペースの量と、イメージを符号化し、及び/またはトランスコードするのに必要とする時間を減らすことができる。
【0037】
メディアソース18から受信されたイメージデータが、センサのアレイからの生イメージデータであるとき、符号化モジュール12は、イメージの初期圧縮を実行することができる。符号化モジュール12は、標準イメージ圧縮技術を使用して、イメージを初期で圧縮することができる。代替的に、符号化モジュール12は、イメージデータを初期で圧縮するために、ここにおいて説明された、1つまたは複数の技術を使用することができる。いずれの場合も、変換モジュール24は、変換係数のマトリクスの形で、周波数ドメイン表示を生成するためにイメージデータのブロックに対して、整数変換を適用する。変換は、例えば8x8の整数変換あるいはDCTであってもよい。上記で説明されるように、変換の結果は、係数のマトリックスである。JPEG規格の場合、例えば、8×8ブロックのそれぞれは、1つのDCコンポーネント及び63のACコンポーネントを含む64の係数のマトリクスに対応する。
【0038】
変換の後、量子化モジュール28は、変換された係数を量子化する。量子化モジュール28は、使用されているコーディング標準に依存して様々な方法で係数を量子化することができる。量子化モジュール28は、例えば、係数を量子化するために、変換係数に対して、量子化テーブルを適用することができる。量子化は、実際の値自体と対立するものとして、係数の「レベル」の符号化を可能にするために、変換係数をスケーリングする。より大きい値を有する量子化テーブルは、下記で説明されるように、変換係数の大きなスケーリングを結果としてもたらす。人間の目は低い周波数コンポーネントにセンシティブであるので、典型的な量子化テーブルは、高い周波数のより多くのレベルよりも、低い周波数のより多くのレベルを提供する。いくつかの態様では、量子化モジュール28は、Yコンポーネントについては輝度量子化テーブル38、そして、Cb及びCrコンポーネントのうちの1つあるいは両方については色度量子化テーブル39、を適用することができる。色度量子化テーブル39は、符号化モジュール12がより多くの輝度情報を保持することを可能にするために、より多くの色度情報を廃棄して、量子化モジュール28を結果としてもたらす、より大きいスケーリングステップサイズをしばしば有する。量子化テーブルについてのデフォルト値は、使用される特定の圧縮標準によって推奨されてもよい。代替的に、特定のデバイス、例えばデジタルカメラおよび/またはイメージソフトウェア、はそれ自体のカスタム量子化テーブルを使用することができる。
【0039】
エントロピ符号化モジュール30は、エントロピ符号化スキームを使用して、量子化された変換係数を符号化する。エントロピ符号化スキームを使用して、量子化された係数を圧縮するために、エントロピ符号化モジュール30は、スキャンの始めに低周波数係数がグループ化され、スキャンの終わりに高周波数コンポーネントがグループ化されるように、係数のジグザクパターンを取ることによって、量子化された係数を、ベクトルに、組織化することができる。言い換えると、エントロピ符号化モジュール30は、量子化された係数の2次元マトリクスにおいて量子化された係数のすべてを、量子化された係数の1次元ベクトルに、配列することができる。
【0040】
エントロピ符号化モジュール30は、そのあとで、量子化された係数のベクトルに対して、ハフマン符号化(Huffman coding)あるいは算術符号化のようなエントロピ符号化スキームを適用することができる。一例としてハフマン符号化を使用して、エントロピ符号化モジュール30は、ハフマンコード(Huffman code)と、ハフマンコードの後でアペンドされた剰余(residue)として各量子化された係数を符号化する。DC係数については、ハフマンコードは、現在のDC値と前のイメージのDC値の間の差異の大きさのサイズを、ビットで、示す。言い換えると、ハフマンコードは、特定の数のビットによって表わされることができるDCの差異の大きさを示す。DCの差が例えば−6である場合、6の値、すなわち大きさ、を表すのに3ビットかかるので、ハフマンコードはサイズ3を示す。しかしながら、サイズ3を示すハフマンコードはまた、複数の他の大きさ、すなわち−7、−5、−4、4、5、7、を表わす。したがって、エントロピ符号化モジュール30は、そのサイズの複数のDC差異のうちの1つのどれがDC差異と対応するかを固有に識別するために剰余をアペンドする。エントロピ符号化モジュール30は、3ビット剰余「010」によって数字−6を識別しており、そしてそれは、−6がサイズ3の第2に最も低い差異であるので、2についてバイナリである。DC差異−6を符号化するために、エントロピ符号化モジュール30は、サイズ3のハフマンコードを出力し、そのあとで、3ビット「010」を送る。
【0041】
AC係数の場合、ハフマンコードは、「ラン(run)」および「サイズ(size)」の連結(concatenation)を示す。「ラン(run)」は、AC係数のジグザグ順序(zig-zag order)における連続的な0の数(number of consecutive zeros)であり、「サイズ(size)」は、後続のゼロでない係数のビットにおけるサイズ(size in bits of the subsequent nonzero coefficient)である。剰余(residue)は、DC係数に関して(as with DC coefficients)、ゼロでない係数のサイズに対応している複数の可能のある値のうちの1つを識別する、固有の識別子を表わす。シーケンス「0003」を含んでいるジグザグスキャンについては、エントロピ符号化モジュール30は、ラン3と剰余「11」を備えたサイズ2とを作る。エントロピ符号化モジュール30は、ラン/サイズが3/2であるハフマンコードを送り(emits)、そのときに(then)、2つの剰余のビット(residual bits)「11」を送る。
【0042】
JPEG規格によると、エントロピ符号化モジュール30は、ACラン長さの符号化(encoding of AC run-lengths)のために2つの特別なシンボルを有する。第1の特別シンボルは、ブロックの残りが0のみから成り、ランサイズ0/0と指定されていることを示す、エンドオブブロック(end-of-block)(EOB)シンボルである。サイズが0であるので、いずれの剰余も符号化されない。第2の特別なシンボルは、ゼロ−ラン−長さ(zero-run-length)(ZRL)値であり、そしてそれは、ジグザグスキャンにおいて16の連続的な0があるということを意味する。ランおよびサイズが各々4ビットまで表わされているので、ランの最大値は15である。そうすると、ZRLラン/サイズシンボルが15/0(すなわち、15個のゼロのあとに1つの0が続く)ということがわかる。再び、サイズが0であるので、いずれの剰余も符号化されない。
【0043】
4つの標準ハフマン表がJPEG規格に定義されており、また、それぞれは、DC輝度コンポーネント、DC色度コンポーネント、AC輝度コンポーネント、そしてAC色度コンポーネントについてである。これらの標準表は、すべての可能のあるシンボル、例えば、JPEGの場合162の別個の可能な値、についてハフマンコードを定義する。エントロピ符号化モジュール30は、JPEG規格によって定義された標準ハフマン表を使用することができる。代替的に、エントロピ符号化モジュール30は、カスタムハフマン表を定義することができる。いくつかの例では、これらのカスタムハフマン表は、減らされた数のハフマンコードを含むことができる。例えば、カスタムハフマン表は、可能な162の値からの100だけのコードを含むことができる。
【0044】
いくつかの態様では、符号化スキームは、マーカとして作用する特定のビットシーケンスを含むことができる。マーカは、例えばメタデータ(metadata)の領域を識別するために、使用されることができる。メタデータは、例えば、次元、ダウンサンプリング比、量子化テーブル、及びハフマン表のような、イメージについての情報を保存する。JPEG規格では、エントロピ符号化モジュール30は、続くメタデータのタイプを示しているバイトが続くメタデータの領域を識別するためにバイト0xFFで始まる2バイトのマーカを使用することができる。係数のエントロピ符号化が、バイトアラインされた0xFF(byte-aligned 0xFF)を作るように起きるケースでは、エントロピ符号化モジュール30は、係数ビットストリーム(coefficient bitstream)をマーカと明確にするために、0バイト0x00をビットストリームに詰め込む。
【0045】
最初に圧縮したイメージデータが、サービスプロバイダあるいは復号デバイスのディスプレイの伝送要件を満たすのに大きすぎるとき、符号化モジュール12はより小さいイメージファイルを生成するためにイメージをトランスコードする必要がある可能性がある。言い換えると、符号化デバイス12は、サービスプロバイダ、あるいは、復号デバイスのディスプレイの必要要件を満たすためにイメージデータを再圧縮することができる。イメージ処理モジュール24は、メディアソース18(図1)から符号化されたイメージデータを受信する。上記で説明されるように、メディアソース18は、デジタルカメラのような、メモリ38あるいは外部デバイスであることができる。いくつかの態様においては、イメージ処理モジュール24は、ピクセルのブロックに符号化されたイメージデータを分割することができ、符号化モジュール12は、別々に、ブロックのそれぞれをトランスコードすることができる。ブロックのそれぞれを個別にトランスコードすることは、スピードとメモリ使用の点から、増大された効率を結果としてもたらすことができる。
【0046】
イメージデータをトランスコードするために、エントロピ復号モジュール32は、ハフマン復号を使用して、符号化されたイメージデータを復号する。エントロピ復号モジュール32は、イメージデータを符号化するエントロピ符号化モジュール30によって使用される、符号化されたイメージデータ、を復号する同じハフマンコード表を使用することができる。ハフマンコード表は、例えばメモリ38内で保存されることができる。逆量子化モジュール34は、イメージデータについての変換係数を生成するために、逆量子化を実行する。一態様では、トランスコードモジュール36は、周波数ドメインにおいてイメージデータをトランスコードすることができる。言い換えると、符号化モジュール12は、生イメージデータを得るために逆変換を実行する代わりに、変換係数上でトランスコードを実行することができる。しかしながら、他の態様では、符号化モジュール12は、生イメージデータを得て、イメージを、生イメージデータを使用してトランスコードする逆変換モジュールを含むことができる。周波数ドメインにおいてイメージデータをトランスコードすることは、変換係数に逆変換関数を適用する必要性を削除することによって処理時間の量を減らすことができる。
【0047】
トランスコードモジュール36は、イメージデータのサイズを縮小するために、マクロスケールビットレート縮小技術、すなわち全体のイメージに一様に影響を与えるビットレート縮小技術、を利用することができる。例えば、トランスコードモジュール36は輝度量子化テーブル38、色度量子化テーブル39、あるいは両方をスケーリングすることができ、そして、スケーリングされた量子化テーブルを使用してイメージデータを再符号化することができる。一態様においては、トランスコードモジュール36は、ビットレート(R)とρ、すなわち0値量子化変換係数の割合、との間のほぼ直線関係(the near linear relationship)を使用するρドメイン分析の関数として、輝度量子化テーブル38及び/または色度量子化テーブル39をスケーリングすることができる。特に、トランスコードモジュール36は、ρとビットレートRの直線関係を見つけることができる。ビットレートRは、
R=θ(1−ρ), (1)
として、ρ−ドメインにおいてモデル化されることができ、なお、θは、一定の傾きであり、イメージコンテンツによって決定される。
【0048】
計算を単純にするために、ρはzと置換されることができ、そしてそれは、比としてよりもむしろ整数の形で、0値量子化変換係数の数を表す。
【0049】
したがって、式(1)は、
R−Rmin=θ(zmax−z), (2)
と書き直されることができ、なお、zmaxは、イメージのブロックにおけるAC係数の合計数であり、Rminは、ブロックを表すことができる、ACビットの最小の数である。式(2)は、AC量子化コンポーネントのスケーリングによって影響されるビットを反映のみさせるべきなので、EOBシンボルは、考慮されなくてもよい。したがって、Rminは、もし、イメージの各ブロックがすべて0、あるいは、同様に、EOBシンボルだけ、を含む場合には、値Rを表す。
【0050】
トランスコードモジュール36は、ターゲットビットレートR、オリジナルに符号化されたイメージのビットレートR、及びオリジナルに符号化されたイメージの0値量子化変換係数zの数、を使用して、0値量子化変換係数(z)のターゲット数を計算することができる。一態様では、トランスコードモジュール36は、式(3)−(5)で示されるように、zを計算する。
【数1】

【数2】

【数3】

【0051】
トランスコードモジュール36は、最初に符号化されたイメージから、例えばイメージの最初の符号化の間に、Rとzを得ることができる。トランスコードモジュール36は、ユーザによって指定された、あるいは、ネットワークサービスプロバイダから得られた、ターゲットファイルサイズ(F)に基づいてRを計算することができる。ターゲットファイルサイズFは、例えば、バイトで規定されることができ、また、ヘッダ情報とDCビットとACバイトと、を含む。ターゲットビットレートRを計算するために、ターゲットファイルサイズFは、定数で乗算され、また、ヘッダ情報(H)及びDC情報(DC)に使用されたビットの数は、差し引かれる、すなわち、R=8*F−H−DCである。
【0052】
トランスコードモジュール36は、量子化された変換係数の値をカウントするヒストグラムを使用して、イメージのために、0値係数(z)の数を計算することができる。量子化された変換係数のヒストラグラムは、次のように定義されることができる、すなわち、H(q,i,v)=量子化テーブルq(0−インデクス化)を使用して、ジグザグスキャンエントリi(0−インデクス化)における、絶対量子化係数値|v|の発生の数、である。したがって、トランスコードモジュール36は、量子化テーブルのいずれのスケーリングについて、イメージのためにzを再計算することができる。例えば、オリジナルに符号化されたイメージの0値量子化変換係数の数は、
【数4】

【0053】
と対応する。別の例として、第1の量子化テーブルの17番目エントリは、4によってスケーリングされると仮定する。そのときに、第1テーブルの17番目のエントリにおいて4よりも少ない大きさを備えたすべての量子化された係数は、0に再び量子化されるであろうため、値zは、
【数5】

【0054】
ごとに確実に増える。ヒストグラムに基づいて、トランスコードモジュール36は、輝度量子化テーブル38と色度量子化テーブル39のスケーリングがzを超えないzをもたらすように、スケーリングファクタsを選択することができる。一例として、イメージのヒストグラムは、値1を備えた1000係数と、値2を備えた2000係数があるということを示すと仮定する。さらに、ターゲット0値係数(z)の数が1500であると仮定する。トランスコードモジュール36は、スケーリングファクタ2を選択し、そしてそれは、zを超えないzを結果としてもたらさない、最大スケーリングファクタである。より具体的には、スケーリングファクタ2を選択することは、zよりも小さい、0値となる1000係数を結果としてもたらす。他方で、スケーリングファクタ3は、0値となる3000係数、すなわちすべての「1」係数とすべての「2」係数、を結果としてもたらすであろう、そしてそれは、zを超える。zをオーバーシュート(overshoot)しないスケーリングファクタを選択することによって、トランスコードモジュール36は、さらに必要とするよりも、イメージのサイズを縮小しない。
【0055】
しかしながら、いくつかのケースでは、トランスコードモジュール36は、0値係数の数をさらに減らす必要があるかもしれない。上記で説明された例において、トランスコードモジュール36は、さらに500の係数(500 more coefficients)だけ、0値係数の数をさらに減らす必要があるかもしれない。この目的のために、トランスコードモジュール36は、第1のスケーリングファクタよりも大きい第2のスケーリングファクタを、量子化テーブルのうちの1つあるいは両方の一部に適用することができる。選択されたスケーリングファクタsを使用して、トランスコードモジュール36は、ポジションインデクスkを選択することができるので、
【数6】

【0056】
となる。特に、いったんトランスコードモジュール36はスケーリングファクタsを選択すると、sよりも小さい値を備えたすべての係数は、量子化の結果、0となる。上記で説明された例において、値「1」を備えたすべての係数は、「0」となるであろう。しかしながら、結果として生じる数の0がターゲット数のゼロよりも小さいので、トランスコードモジュール36は、シーケンスの最後の係数から開始して、sから0に等しい値を有するそれらの係数を強要すること(force)を始める。言い換えると、トランスコードモジュール36は、スケーリングファクタs+1個によって、係数の少なくとも一部分をスケーリングする。トランスコードモジュール36は、例えば、127に等しくkを設定し、そして、0の数字がターゲットを満たすまで、kをゆっくりデクリメントさせる(decrements)。このように、第1のk係数は、ファクタsによってスケーリングされるが、残りの(127−k)係数は、ファクタs+1によってスケーリングされる。上記で説明されるように、スケーリングファクタsおよびs+1は、1よりも大きい、あるいは、1と等しい、値を取る。さらに、スケーリングファクタsは、スケーリングファクタs+1よりも小さい。下記で詳細に説明されるように、シーケンスの係数の最後の部分、すなわちファクタs+1によってスケーリングされる係数は、クロミナンス係数(chrominance coefficients)と一致する。
【0057】
トランスコードモジュール36は、輝度量子化テーブル38および色度量子化テーブル39の量子化エントリを、単独シーケンスに、順序づけ、そして、シーケンスを使用してkを決定することができる。いくつかの態様では、量子化テーブルの量子化エントリは、シーケンスは、輝度量子化テーブル38の低周波数量子化エントリで始め、輝度量子化テーブル38の高い周波数量子化エントリがつづき、そのあとで、色度量子化テーブル39の低い周波数量子化エントリがつづき、そして最後に、色度量子化テーブル39の高い周波数量子化エントリがつづくように、順序づけられることができる。したがって、トランスコードモジュール36は、輝度量子化テーブル38と色度量子化テーブル39の両方のAC量子化エントリを、輝度エントリの最後にアペンドされた色度エントリが最初に続く、ジグザグスキャンで順序づけられた輝度エントリを備えた1つの長いシーケンスへと、連結しているものとして見られることができる。トランスコードモジュール36は、他の順序づけ技術(other ordering techniques)を使用して、量子化テーブルのエントリを順序づけることができる。例えば、トランスコードモジュール36は、低い周波数輝度エントリで開始し、1つまたは複数の低い周波数色度エントリが続き、そのあとで、高い周波数の輝度エントリ及び高い周波数の色度エントリが続く、1シーケンスのエントリを生成することができる。輝度量子化テーブル38および色度量子化テーブル39の両方のDCのコンポーネントは、スキャンに含まれていない。したがって、輝度量子化テーブル38および色度量子化テーブル39のDCのコンポーネントはスケーリングされない。
【0058】
したがって、トランスコードモジュール36は、スケーリングファクタsによって第1のkエントリをスケーリングすることができ、また、大きなスケーリングファクタ、例えばs+1によって、残りのエントリ(例、上記の例の128−k)をスケーリングすることができる。上記で説明されるように、スケーリングファクタsおよびs+1のスケーリングは両方とも、1よりも大きいあるいは1に等しい、したがって、0値変換係数の増大された数を結果としてもたらす。下記の2つのマトリクスは、この技術にしたがって、それぞれの量子化テーブルに、スケールファクタを適用するマトリクスの例である。第1のスケーリングファクタマトリクスは、輝度量子化テーブル38に適用され、また、第2のマトリックスは、色度量子化テーブル39に適用される。
【表1】

【表2】

【0059】
このように、トランスコードモジュール36は、輝度量子化テーブル38よりも色度量子化テーブル39をスケーリングし、したがって、よりよく、イメージの明るさを保存している。さらに、異なるスケーリングファクタによって、量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする可能性を減らす、すなわち、過剰によって(by too much)、ビットレートを減らし、したがって、不必要なときにはイメージの品質を減らしている。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする可能性もまた減らす、すなわち、十分によって(by enough)ビットレートを減らせない。オーバーシューティング(overshooting)は、トランスコードモジュール36がs+1によって両方の量子化テーブルの各エントリでスケーリングされる場合に、生じるかもしれない。アンダーシューティング(undershooting)は、トランスコードモジュール36が、sによって両方の量子化テーブルの各エントリでスケーリングされる場合に、生じるかもしれない。インデクスkによって決定される分割に作用する2つのスケーリングファクタs及びs+1の本スキームは、新しい量子化テーブルによって生成される0の数にわたって、微調整を提供する。
【0060】
トランスコードモジュール36はまた、イメージの特定の局在化された領域だけに影響を及ぼすトランスコード技術、すなわち、マイクロスケールビットレート制御、を使用することができる。上記で説明されるように、マイクロスケールビットレート制御技術は、全体のイメージに一様に影響を与えないが、イメージの一部分(例えば、イメージの1サブセットのブロック)のみ影響を与える。マイクロスケールビットレート制御技術は、必要なときにイメージのサイズをさらに減らすために、マクロスケールビットレート制御技術と共に使用されることができる。このように、トランスコードモジュール36は、イメージをトランスコードする2層のビットレート制御をインプリメントすることができ、第1層のビットレート制御は、グローバルトランスコード技術が全体のイメージに等しく、そして一様に影響を与える場合、マクロスケールに関しており、第2層のビットレート制御は、トランスコードオペレーションの影響がイメージの特定領域に局在化される場合、マイクロスケールに関する。この2層の戦略は、トランスコードモジュール36が、第一に粗くターゲットビットレートにアプローチし、そしてその後で、必要なときに微調整を行うことを可能にする。代替的に、マイクロスケールのレート制御技術は、マクロスケールのレート制御技術と独立して利用されることができる。
【0061】
イメージデータのトランスコードの間に、トランスコードモジュール36は、トランスコードが、ターゲットビットレートRに到達するコース上にあるかどうかを決定するためにトランスコードされたビットの数をトラッキングする。トランスコードモジュール36は、いつさらなるビットレート縮小が必要であるかを決定し、そしてさらなるビットレート縮小が必要とされるとき、マイクロビットレート制御をアクティブ化する。オリジナルビットレートRを備えたイメージの場合、トランスコードモジュール30は、オリジナルイメージR(n)のために復号されたビットの数と、トランスコードされたR(n)のために符号化されたビットの数との比が、オリジナルビットレートとターゲットビットレートとの比、すなわちR:Rに等しいかどうかを決定することができる。理想的には、復号されたオリジナルイメージR(n)のビット対符号化された新しいイメージR(n)のビットの比は、n番目ブロックの係数におけるR:Rに等しく、すなわち、
【数7】

【0062】
である。ここにおいては、R(n)とR(n)は、n番目ブロックにおいて、それぞれ、すでに復号され、符号化されたビットの数を示しており、Rは、オリジナルイメージビットレートであり、そしてそれは、イメージがNブロックの合計を有する場合、R(n)に等しく、また、Rは、トランスコードされたイメージのターゲットビットレートである。
【0063】
式(7)の比率(proportions)は、以下の式を得るために、式(2)のρ-ドメイン分析のケースのように、最小数のビットの定数オフセット(constant offset)が取り除かれる場合、より正確であることができる:
【数8】

【0064】
トランスコードモジュール36が、この比を拒絶するためにn番目ブロックにおいてターゲットビットレートを制御するように設計されるので、式(8)において、ターゲットビットレート、n番目ブロックにおいてR(n)の代わりにR(n)、を代替することは可能であり、R(n)を解く。結果は、式(9)で示されている。トランスコードモジュール36は、式(10)にしたがって、R(n)とR(n)との間の差異(Δ)を計算する。この差異は、誤り(ε)、すなわち、イメージのトランスコードの間にn番目ブロックにおいて実際に符号化されるビットの数と、理想的にはn番目ブロックにおいて符号化されるべきであるビットの数との差異を表す。
【数9】

【数10】

【0065】
トランスコードモジュール36は、ビットの数をさらに減らすために、マイクロスケール技術のうちの1つまたは複数をアクティブ化するかどうかを決定するトランスコード処理の間に、差異Δをモニタすることができる。特に、トランスコードモジュール36は、Δがスレッシュホールドよりも大きいあるいは等しいとき、1つまたは複数のマイクロスケールビットレート制御技術をアクティブ化することができる。スレッシュホールドは、例えば、ターゲットビットレートの関数、例えば、ターゲットビットレートの5%、であってもよい。このように、トランスコードモジュール36は、マイクロスケール技術が起動されるべきかどうかのインジケータとしてΔを使用する。トランスコードモジュール36は、適切な制限内でΔをもたらすために、ビットストリームから取り除かれる必要があるビットの数を決定するΔの大きさをさらに使用することができる。
【0066】
トランスコードモジュール36は、1つまたは複数の係数を選択的に減らすことによってビットストリームのビットの数をさらに減らすことができる。上記で説明されるように、イメージの符号化されたビットストリームは、ほとんどハフマンコードと、AC係数について剰余文字列と、で構成されている。1つまたは複数の係数の値を選択的に縮小することによって、トランスコードモジュール36は、縮小された係数について、ハフマンコードの長さを縮小することができる。これは、より小さい係数の値は、より大きい係数値よりも頻繁であり、したがって大抵より短いハフマンコードを割り当てられている、からである。さらに、トランスコードモジュール30は、係数値のうち1つまたは複数を選択的に減らすことによって、剰余のビットをセーブすることができる。上記で説明されているように、エントロピ符号化モジュール30は、0のラン−長さ(run-length of zeroes)と係数のバイナリサイズとに基づいて、AC係数についての符号を割り当てる。トランスコードモジュール36は、ブロックを根本的に変更せずに、0のラン−長さを変更できないが、係数のバイナリサイズを微細に変更することができる。それをするためには、トランスコードモジュール36は、2乗に等しいあるいは2乗に少なくとも近い値で係数を識別し、2乗よりも小さいように、それらの係数を縮小することができる。例えば、符号化される係数値が2乗である場合、トランスコードモジュール36は、1だけ係数値をデクリメントする。係数値8の場合、例えば、トランスコードモジュール36は、4ビットで剰余の長さを符号化する。トランスコードモジュール36は、係数値8を1だけデクリメントし、新しい係数値7を結果としてもたらす。係数値7は、3ビット剰余によって表わされ、それによって、1ビットだけビットストリームを縮小する。さらに、ランサイズを表わすハフマンコードはまたおそらく短く、追加ビットセービングを結果としてもたらす。同様に、2だけ係数値9を減らすことは、新しい係数値7を結果としてもたらし、そしてそれは、縮小された数のビットとより短いハフマンコードによって表わされることができる。しかしながら、2だけ係数値を縮小することは、さらなるひずみを結果としてもたらす。したがって、値が縮小されることができるビットの数は、許容と考えられるひずみの量に左右する。
【0067】
いくつかの態様においては、トランスコードモジュール36は、減らされたときに0に等しいであろう係数値を選択することを省略することができる。例えば、2乗である係数を選択する場合には、トランスコードモジュール36は、係数値1(2乗である)を選択することを省略することができる。トランスコードモジュール36が値1を有する係数を選択し、値0にそれらの係数をデクリメントする場合には、変換のその特定コンポーネントは、全体的に削除される。このことは、望んでいるよりも、より多くのひずみ及び/または乱れが生じることをもたらす。したがって、トランスコードモジュール36は、値1で係数を縮小できない。
【0068】
代替的に、あるいは、さらに、トランスコードモジュール36は、パディングバイトの数を減らすことによって、ビットストリームのビットの数をさらに減らすことができる。上記で説明されているように、トランスコードモジュール36は、メタデータについてのマーカに対応する1ビットシーケンスのあとに続いて、パディングバイトを挿入することができる。JPEG規格の場合、例えば、0バイト0x00は、実際の係数ビットストリームをマーカと区別するためにエントロピ符号化ビットストリームにおける0xFFの発生の後で、挿入されることができる。トランスコードモジュール36は、8バイトのバイトアラインされたシーケンス(a byte-aligned sequence of eight ones)をマーカから区別するのに必要とされたパディングバイトを削除することによって、1バイト(8ビット)だけビットストリームのビットの数を減らすことができる。パディングバイトの使用を回避するために、トランスコードモジュール36は、マーカを表わすビットシーケンスがある場合、ビットストリームの位置を識別する。JPEG規格では、例えば、トランスコードモジュール36は、0xFFがある(すなわち、8連続のバイト)、ビットストリームにおける位置を識別することができる。
【0069】
一態様では、トランスコードモジュール36は、ビットストリームに書き込まれた次のバイトを備える一番左のビットを保存するビットバッファを含むことができる。ハフマンコードおよび剰余は、一番左のビットである最上位ビットで、右に、交互にアペンドされる。一番左の8ビットは、次のシーケンスのうちのいずれかを含むことができる:(1)ハフマンコードからのビットのみ(H)、(2)剰余からのビットのみ(R)、(3)ハフマンコードの終わり及び剰余の始めのビット(HR)、(4)剰余の終わりとハフマンコードの始めのビット(RH)、(5)ハフマンコードの終わりのビットと全体剰余のビットと次のハフマンコードの開始のビット(HRH)、(6)剰余の終わりと全体ハフマンコードと、次の剰余の開始(RHR)、あるいは(7)シーケンスの途中で挿入されたHRあるいはRHペアを備えた項目(2)−(6)のいずれか。
【0070】
トランスコードモジュール36は、剰余を表わす8ビットのうちの1つまたは複数ビットを変更することができる。剰余を変更するとき、トランスコードモジュール36は、ビットストリームへの0xFFの書き込みを防ぐ、剰余の最下位ビットを変更することができる。このような方法で、トランスコードモジュール36は、ハフマンコードが保存され、剰余の変更が最小であるように、8ビットのうちのどれが変更するか、決定する。上記の7つの可能のあるケースのリストにおいて、ケース(1)は、ハフマンコードを変更することは望ましくないので、修正可能(modifiable)ではない。しかしながら、JPEG規格は、より長いコードワードについてプリフィックス(a prefix)としてリザーブされるので、すべて1ビットであるハフマンコードを定義しない。この情報を使用して、ケース(1)、(6)および(7)は、JPEGの場合において0xFFを作らないだろう。すべてのケース(2)−(5)において、トランスコードモジュール36は、ビットバッファの一番左の8ビット内にまだある、剰余の最下位ビットを変更する。このビットを変更すると、ビットシーケンスは、マーカをもはや表わしておらず、パディングバイトは必要ではない。このような方法で、トランスコードモジュール36は、最小量のひずみでビットレートにおける最大の縮小を達成することを試みる。
【0071】
トランスコードモジュール32は、イメージのトランスコードの間にn番目ブロックにおいて実際に符号化されるビットの数と、n番目ブロックにおいて理想的に符号化されるべきビットの数との差異Δがスレッシュホールドよりも下になるまで、現在トランスコードされているピクセルの個別ブロックについて、マイクロスケールビットレート制御の1つまたは両方のいずれかをインプリメントすることを続ける。いくつかの場合において、Δは、マイクロスケールビットレート制御技術を使用して現在のブロックにおいてビットを縮小すると、スレッシュホールドより下になることができる。しかしながら、他の場合においては、マイクロスケールビットレート制御技術は、Δがスレッシュホールドより下にある前に、イメージの複数のブロックにわたって、使用されることができる。スレッシュホールドより下にあると、トランスコードモジュール32は、エラーがスレッシュホールドより上に再び増加しない限り、マイクロスケールビットレート制御技術をインプリメントすることをやめ、そして、マクロスケールビットレーット制御技術をインプリメントすることだけする。
【0072】
本開示のトランスコードフレームワークは、オブザーバ設計パターンを使用することができる。オブザーバ設計パターンにおいて、物体(object)がその状態を変更するとき、それは、イベントをあげ(raises)、特定のイベントについてリスニングしているいずれのソフトウェアオブザーバに通知する。物体は、その加入者に対してイベントを発行する。各加入者は、その後、イベントに含まれる情報に関する動作を実行する。何人かの加入者は、同じイベントに応答することができ、それぞれは、完全に異なる機能性を備えており、関連機能は、1つのモジュールにパッケージングされることができる。さらに、オブザーバ設計パターンは、メモリに状態(state)をたくさん保持しないで、オンライン方法で進めるトランスコードを可能にする。ブロックが復号されるとすぐに、加入したエンコーダ(subscribed encoder)は、それを直ちに符号化することができる。
【0073】
図2で図示された例においては、トランスコードフレームワークにおいて4つの基本モジュールがあり、それらは、エントロピ復号モジュール32、トランスコードモジュール36、量子化モジュール28、エントロピモジュール30、である。復号モジュール32は、操作のために、オリジナルビットストリームを読み取り、データを作る。復号モジュール32は、加入者に対する情報のメイン発行者である。他の3つのモジュールは、復号モジュール32のイベントに対して加入することができる。第1のパス復号の間に、トランスコードモジュール36は、復号モジュール32に加入し、そして、グローバルなイメージの統計を集める。トランスコードは、第2のパスで生じる。第2のパスの間に、トランスコードモジュール36は、復号モジュール32に加入し、符号化モジュール30は、トランスコードモジュール36に加入する。トランスコードモジュール36はまた、符号化統計をトラッキングするために符号化モジュール30に加入する。したがって、復号モジュール32は2度実行され(is run twice)、加入(subscriptions)だけが変更される。メインプログラムのための偽コードは下記で提供されている。
【0074】
オリジナルファイルから復号モジュールを作る
トランスコードモジュールを作る
トランスコードモジュールを復号モジュールにリンクさせる
全体のイメージを復号する(統計を集める)
復号モジュールをリセットする
トランスコードモジュールをリセットする
符号化モジュールを作る
トランスコードモジュールを復号モジュールと符号化モジュールにリンクさせる
全体のイメージを復号する(新しいイメージをトランスコードし、書き込む)
復号モジュールをデストロイする
符号化モジュールをデストロイする
トランスコードモジュールをデストロイする
別の設計パターンは、戦略パターンと呼ばれるトランスコードモジュール36においてインプリメントされることができる。このパターンは、いくつかのアルゴリズム(あるいは戦略)が1つの関数をインプリメントすることができるということを単に意味している。実際のビットレート制御を達成するそれらの効率性について異なるアルゴリズムを評価し、比較するとき、戦略パターンは、有用になる。フレームワークは、問題のすべてのアルゴリズムをインプリメントし、メインプログラムは、正しいアルゴリズムにプラグで接続するスイッチを単に必要とする。
【0075】
前述の技術は個々にインプリメントされることができ、あるいは、そのような技術の2つ、あるいは、そのような技術のすべて、は符号化モジュール12において一緒にインプリメントされることができる。符号化モジュール12におけるコンポーネントは、ここにおいて説明される技術をインプリメントすることが適用可能なそれらの例示である。しかしながら、符号化モジュール12は、多くの他のコンポーネントを含むことができ、望まれれば、上記で説明される1つまたは複数のモジュールの機能性を組み合わせるより少ないコンポーネントも含むことができる。符号化モジュール12におけるコンポーネントは、1つ以上のプロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェアあるいはそれの任意の組み合わせとしてインプリメントされることができる。モジュールとしての異なる特徴の描写は、符号化モジュール12の異なる機能性の態様を強調するように意図されており、そのようなモジュールは、個別のハードウェアあるいはソフトウェアコンポーネントによって実現されなくてはならないということを必ずしも示唆していません。むしろ、1つまたは複数のモジュールに関連づけられた機能性は、共通のあるいは別々のハードウェアあるいはソフトウェアコンポーネント内で、統合されることができる。
【0076】
図3は、図2の符号化モジュール12のような符号化モジュールの例示的なオペレーションを図示しているフロー図であり、ここにおいて説明されたマクロスケールビットレート縮小技術にしたがってイメージをトランスコードする。最初に、符号化モジュール12は、符号化されたイメージを得る(40)。いくつかの態様では、符号化モジュール12は、メディアソース18から符号化されたイメージを得ることができる。代替的に、符号化モジュール12は、生イメージデータを得て、符号化されたイメージを得るために、イメージデータの初期符号化を実行することができる。
【0077】
符号化モジュール12は、符号化されたイメージを復号する(42)。エントロピ復号モジュール32は、量子化された変換係数を得るために、イメージに関連づけられたコード表を使用して、符号化されたイメージを、復号することができ、逆量子化モジュール34は、イメージのための変換係数を生成するために逆量子化を実行する。
【0078】
符号化モジュール12は、オリジナルに符号化されたイメージのための、ビットレート及び0値量子化変換係数の数、すなわち、Ro及びzoを決定する(44)。ビットレートは、符号化されたイメージのファイルサイズに基づいて、計算されることができる。0値量子化変換係数の数は、復号の間に得られた量子化係数のマトリクスを分析することによって決定されることができる。一態様では、トランスコードプロセスは、オブザーバ設計パターンにしたがって操作することができる。その場合においては、0値係数の数、と他の統計は、下記で説明された第1のパスの復号の間に計算されることができ、下記で説明されたトランスコードは、第2のパスの間に生じることができる。
【0079】
符号化モジュール12はターゲットビットレートを得る(46)。符号化モジュール12は、例えば、デバイスのユーザ、あるいは、ネットワークサービスプロバイダから、ターゲットビットレートを得ることができる。代替的に、符号化モジュール12は、ユーザによって指定された、あるいは、ネットワークサービスプロバイダから得た、ターゲットファイルサイズ(F)に基づいて、ターゲットビットレートRを計算することができる。ターゲットファイルサイズFは、例えば、バイトで指定されることができ、また、ヘッダ情報と、ACビットと、DCビットと、を含むことができる。一態様では、符号化モジュール12は、ターゲットビットレートRを、式R=8*F−H−DCにしたがって、計算することができ、なお、Hは、ヘッダビットの数であり、DCは、イメージのDCコンポーネントを表わすビットの数である。
【0080】
符号化モジュール12は、ターゲットビットレート(z)を達成するのに必要な0値量子化変換係数の数を決定する(48)。例えば、トランスコードモジュール36は、ターゲットビットレートR、オリジナルに符号化されたイメージのビットレートR、そしてオリジナルに符号化されたイメージの0値量子化変換係数zの数を使用して、0値量子化変換係数zのターゲット数を計算することができる。一態様では、トランスコードモジュール36は、上記の式(3)−(5)で示されているようにzを計算する。
【0081】
符号化モジュール12は、0値量子化変換係数のターゲット数に基づいて、スケーリングファクタsとポジションインデクスkを決定する(50)。トランスコードモジュール36は、輝度量子化テーブル38と色度量子化テーブル39のスケーリングから生じる0値係数の数がzを超えないように、スケーリングファクタsを選択するために、係数値のヒストグラムを使用することができる。一例として、イメージのヒストグラムは、値1を備えた1000の係数と、値2を備えた2000係数があるということを示す、と仮定する。さらに、ターゲット0値係数(z)の数が1500であると仮定する。トランスコードモジュール36は、スケーリングファクタ2を選択しており、そしてそれは、zを超えているzをもたらさない最大スケーリングファクタである。トランスコードモジュール36は、ポジションインデクスkが望ましい数の0値係数を結果としてもたらした後で、係数に対する第2のより大きなスケーリングファクタの適用において、ポジションインデクスkをさらに決定することができる。
【0082】
符号化モジュール12は、スケーリングファクタsとポジションインデクスkの関数として、輝度量子化テーブル38と色度量子化テーブル39をスケーリングする(52)。トランスコードモジュール36は、輝度量子化テーブル38及び色度量子化テーブル39の量子化エントリを、単独シーケンスのエントリに順序づけ、ファクタsをスケーリングすることによって第1のシーケンスのkエントリを、より大きなスケーリングファクタ、例えばs+1、によってシーケンスのエントリの残りを、スケーリングすることができる。この方法で、色度量子化テーブル39は、イメージの明るさをよりよく保存する輝度量子化テーブル38よりも多くスケーリングされる。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートする、あるいは、ターゲットビットレートをアンダーシュートする可能性を減らす。
【0083】
符号化モジュール12は、スケーリングされた量子化テーブルを使用して、イメージを再符号化する(54)。例えば、量子化モジュール28は、スケーリングされた量子化テーブルを使用して、変換係数を量子化し、エントロピ符号化モジュール30は、符号化されたビットストリームを生成するために量子化された係数を符号化する。図3のフロー図に説明された一例においては、符号化モジュール12は、周波数ドメインにおいて、すなわち変換係数を使用して、イメージをトランスコードする。周波数ドメインにおいてイメージデータをトランスコードすることは、変換係数に、逆変換関数を適用する必要性をなくすことによって処理時間を縮小することができる。しかしながら、他の態様では、符号化モジュール12は、生イメージデータを得る逆変換モジュールを含み、そして、生イメージデータを使用して、イメージをトランスコードすることができる。
【0084】
図4は、マクロスケールビットレート縮小技術とマイクロスケールビットレート縮小技術の組み合わせを使用してイメージをトランスコードする、図2の符号化モジュール12のような符号化モジュールの例示的なオペレーションを図示しているフロー図である。最初に、符号化モジュール12は、符号化されたイメージを得る(60)。符号化モジュール12は、メディアソース18から前に符号化されたイメージを得て、あるいは、メディアソース18から生イメージデータを得て、符号化されたイメージを得るためにイメージデータの初期符号化を実行することができる。
【0085】
符号化モジュール12は、符号化されたイメージを復号する(62)。符号化モジュール12は、オリジナルで符号化されたイメージのために、ビットレートと0値量子化変換係数の数と、すなわち、それぞれRとzと、を決定する(64)。ビットレートは、符号化されたイメージのファイルサイズに基づいて計算されることができる。0値量子化変換係数の数は、復号の間に決定されることができる。符号化モジュール12は、ターゲットビットレートを得る(66)。符号化モジュール12は、例えば、デバイスのユーザあるいはネットワークサービスプロバイダからターゲットビットレートを得ることができる。代替的に、符号化モジュール12は、ユーザによって指定された、あるいはネットワークサービスプロバイダから得られた、ターゲットファイルサイズ (F)に基づいて、ターゲットビットレートRを計算することができる。
【0086】
符号化モジュール12は、ターゲットビットレートを達成するために必要な、0値量子化変換係数zのターゲット数を決定する(68)。例えば、トランスコードモジュール36は、ターゲットビットレートR、オリジナルに符号化されたイメージのビットレートR、そしてオリジナルに符号化されたイメージの0値量子化変換係数zの数を使用して、0値量子化変換係数(z)のターゲット数を計算することができる。一態様では、トランスコードモジュール36は、上記の式(3)−(5)で示されるようなzを計算する。
【0087】
符号化モジュール12は、0値量子化変換係数のターゲット数に基づいて、スケーリングファクタsとポジションインデクスkを決定する(70)。トランスコードモジュール36は、以下の式を満たすように、スケーリングファクタs及びポジションインデクスkを計算することができる。
【数11】

【0088】
符号化モジュール12は、スケーリングファクタs及びポジションインデクスkの関数として、輝度量子化テーブル38及び色度量子化テーブル39をスケーリングする(72)。トランスコードモジュール36は、例えば、輝度量子化テーブル38と色度量子化テーブル39の量子化エントリを単独シーケンスのエントリに順序づけ、スケーリングファクタsによって第1のkエントリを、より大きなスケーリングファクタ、例えばs+1、によってエントリの残りを、スケーリングすることができる。より大きなスケーリングファクタは、0に量子化されているより多くの変換係数を結果としてもたらす。このように、色度量子化テーブル39は、イメージの明るさをよりよく保存するために、輝度量子化テーブル38よりも多くスケーリングされる。さらに、異なるスケーリングファクタによって量子化テーブルのエントリの部分をスケーリングすることは、我々のターゲットビットレートをオーバーシュートするあるいはターゲットビットレートをアンダーシュートする可能性を縮小する。
【0089】
符号化モジュール12は、スケーリングされた量子化テーブルを使用して、イメージのブロックを再符号化する(74)。例えば、量子化モジュール28は、スケーリングされた量子化テーブルを使用してブロックの変換係数を量子化し、そして、エントロピ符号化モジュール30は、ブロックについて符号化されたビットストリームを生成するためにブロックの量子化された係数を符号化する。符号化モジュール12は、イメージのnブロックR(n)を再符号化するために使用されたビットの数の合計を決定する(76)。言い換えると、符号化モジュール12は、イメージのブロックを再符号化するために使用されたビットの実行合計の数(a running total of the number of bits)を維持する。例えば、トランスコードモジュール36は、特定のブロックについてトランスコードされたビットの数をトラッキングすることができ、他のブロックについての合計にそれを加える。トランスコードモジュール36は、ブロックR(n)を再符号化するために使用されたビットの数の合計数と、n番目ブロックにおいてR(n)で符号化されるべき理想的な数のビットとの差異(Δ)を計算する(78)。
【0090】
トランスコードモジュール36は、Δがスレッシュホールドよりも大きいあるいは等しいかを決定する(80)。スレッシュホールドは、ターゲットビットレート、例えば5%のターゲットビットレート、の関数であってもよい。トランスコードモジュール36が、Δがスレッシュホールドよりも大きいあるいは等しいと決定するとき、トランスコードモジュール36は、1つまたは複数のマイクロスケールビットレート制御技術を使用して、現在のブロックから取り除かれることができるビットがあるかどうかを決定する(82)。上記で詳細に説明されるように、トランスコードモジュール36は、現在のブロックは2乗であるいずれの量子化変換係数を有するかどうか、あるいは、ブロックのビットシーケンスはマーケットを表わすビットシーケンスを有するかどうか、を決定することができる。
【0091】
トランスコードモジュール36は、現在のブロックのビットストリームから取り除かれることができるビットがあると決定するとき、トランスコードモジュール36は、ビットストリームのビットの数をさらに減らす(84)。リムーバブル(removable)と識別されたビットが、2乗である、あるいは2乗に近い係数である、量子化された変換係数である場合には、トランスコードモジュール36は、係数値が対応する2乗以下になり、縮小された係数を再符号化するように、1値ごとに、係数のうち1つまたは複数をデクリメントすることができる。上記で説明されているように、値1ごとに、2乗である係数を縮小することは、係数を表わすために必要とされたビットの数を減らす。特に、1つのビットセービングがある。リムーバブルと識別されるビットが、マーカを表わすブロックの1ビットシーケンスの一部分である場合、トランスコードモジュール36は、パディングバイトの数を縮小することによって、ビットストリームのビットの数を縮小することができる。上記で説明されるように、トランスコードモジュール36は、メタデータについてマーカに対応する1ビットシーケンスの次にパディングバイトを挿入することができる。JPEG規格のケースでは、例えば、0バイト0x00は、実際の係数ビットストリームをマーカと区別するために、エントロピ符号化ビットストリームにおける0xFFの発生の後で挿入されることができる。トランスコードモジュール36は、ビットが剰余に対応するとき、マーカを表わすシーケンスのうち少なくとも1ビットを変更することができる。例えば、トランスコードモジュール36は、係数ビットストリームに対してのマーカに対応するシーケンスの書き込みを防ぐ剰余の最下位ビットを変更することができる。このビットを変更すると、ビットシーケンスはもはやマーカを表わさず、いかなるパディングバイトも必要ではない。
【0092】
ビットストリームのビットの数を減らした後で、トランスコードモジュール36は、調節されたΔ、すなわち取り除かれた多数のビットによって縮小されるもの、をスレッシュホールドと比較する(80)。Δがスレッシュホールドをまだ超える場合には、トランスコードモジュール36は、現在のブロックから取り除かれることができるビットがまだあるかどうかを決定する(82)。適切な質を維持しながら取り除かれることができる現在のブロックの追加ビットがある場合には、トランスコードモジュール36は、ブロックのビットの数をさらに減らす。適切な質を維持しながら現在のブロックから取り除くビットがない、あるいは、Δがスレッシュホールドを超えない場合には、トランスコードモジュール36は、トランスコードされたブロックを送信する(86)。しかしながら、いくつかのケースにおいては、トランスコードモジュール36は、トランスコードされたブロックを送信することができないが、イメージのすべてのブロックが符号化されるのを待機し、そのあとで全体のイメージを送信する。
【0093】
トランスコードモジュール36は、符号化されるべき追加ブロックがあるかどうか決定する(88)。符号化されるべき追加ブロックがあるとき、トランスコードモジュール36は、調節された量子化テーブルを使用して、また、必要であれば、マイクロスケールのビットレート制御技術を使用して、ブロックを再符号化し続ける。この方法で、トランスコードモジュール36は、イメージをトランスコードするために2層のビットレート制御をインプリメントすることができ、マクロスケール上の第1層のビットレート制御と、なお、グローバルなトランスコード技術は、均等に且つ一様に全体のイメージに影響を与え、そして、マイクロスケール上の第2層のビットレート制御とがあり、なお、トランスコードオペレーションの影響は、イメージの特定領域に局在化されている。この2層の戦略(two-tiered strategy)は、トランスコードモジュール36が、初めに粗くターゲットビットレートにアプローチし、そしてそのあとで、必要なときに微調整を行うことを可能にする。
【0094】
図5は、イメージのビットレートをさらに縮小するためにマイクロスケールビットレート制御をインプリメントして、図2の符号化モジュール12のような、符号化モジュールの例示的なオペレーションを図示しているフロー図である。上記で説明されるように、エントロピ符号化モジュール30は、0sのラン−長さと係数のバイナリサイズとに基づいてAC係数のコードを割り当てる。トランスコードモジュール36は、ブロックを根本的に変更せずに、0sのラン−長さを変更することができないが、係数のバイナリサイズを微妙に変更することができる。特に、トランスコードモジュールは、2乗であるブロックの係数を識別することができる(90)。
【0095】
トランスコードモジュール36は、識別された係数が1に等しいかどうかを決定する(92)。識別された係数が1と等しくない場合には、トランスコードモジュール36は、1で識別された係数をデクリメントする(94)。トランスコードモジュール36は、係数の新しい値を符号化する(96)。係数値8の場合は、例えば、トランスコードモジュール36は、4つのビットで剰余の長さを符号化する。トランスコードモジュール36は、たったの3ビットで、縮小された係数値7の剰余の長さを符号化することができ、それによって、1ビットごとにビットストリームを縮小する。さらに、ラン−サイズを表わすハフマンコードはまた短い可能性があり、追加ビットセービング(additional bit savings)を結果としてもたらす。
【0096】
しかしながら、識別された係数が1に等しい場合、トランスコードモジュール36は、2乗であるブロックの係数のうち異なる1つを選択する。値1を備えた係数をデクリメントすることは、新しい係数値0を結果としてもたらすであろう。言い換えると、変換の特定のコンポーネントは完全に除去され、そしてそれは、望んでいるよりも、より大きなひずみ及び/または乱れ(artifacts)をもたらす。したがって、トランスコードモジュール36は、値1で係数を縮小することができない。
【0097】
このように、トランスコードモジュール36は、1つまたは複数の係数の値を選択的に縮小することによって、ビットストリームのビットの数をさらに縮小することができる。上記で説明されているように、イメージの符号化されたビットストリームは、ほとんど、ホフマンコードと、AC係数についての剰余文字列(residue strings)から成る。1つまたは複数の係数の値を選択的に減らすことによって、トランスコードモジュール36は、縮小された係数についてホフマンコードの長さを縮小することができる。より小さい係数の値は、より大きい係数の値よりも、しばしば、頻繁であるからであり、したがって、より短いホフマンコードがしばしば割り当てられる。さらに、トランスコードモジュール30は、1つまたは複数の係数値を選択的に縮小することによって、剰余におけるビットを節約することができる。図5は、2乗に等しい係数を縮小する観点で説明されているが、技術は、2乗に等しい値を有する係数に適用するために拡張されることができる。例えば、係数値9は、新しい係数値7を結果としてもたらす2によって、縮小されることができ、そしてそれは、縮小された数のビットとより短いハフマンコードによって表されることができる。係数値が2乗に対してどれくらい接近してなければならないかは、許容(acceptable)と考えられるひずみの量による。
【0098】
図5で説明されるマイクロビットレート制御技術は、必要なときにイメージのサイズをさらに縮小するマクロスケールビットレート制御技術とともに使用されることができる。代替的に、マイクロスケールレート制御技術は、すでに符号化されたイメージをトランスコードするために、あるいは、イメージの初期符号化を実行するために、マクロスケールレート制御技術から独立して使用されることができる。
【0099】
図6は、イメージのビットレートをさらに縮小するためにマイクロスケールビットレートをインプリメントしている、図2の符号化モジュール12のような符号化モジュールの例示的なオペレーション、を図示しているフロー図である。トランスコードモジュール36は、マーカと対応するビットシーケンスがある、ビットストリームにおいて位置を識別する(100)。上記で説明されるように、イメージ圧縮技術は、メタデータの領域を識別するマーカとして、特定のビットシーケンスを使用することが出来る。JPEG規格において、byte 0xFFで始まる2バイトのマーカは、続くメタデータのタイプを示しているバイトが続くメタデータの領域を識別するために使用される。係数の符号化がマーカ0xFFと対応するビットシーケンスを導入するとき、エントロピ符号化モジュール30は、係数ビットストリームをマーカと明確にするために、ゼロバイト0x00をビットストリームに詰める(stuffs)。したがって、トランスコードモジュール36は、ビットストリームに書き込まれた次のバイトを備える一番左のビットを保存するビットバッファを含んでもよく、例えばJPEG規格の場合では0xFFのようなマーカと対応するビットシーケンスのためにバッファをモニタしてもよい。
【0100】
トランスコードモジュール36は、ビットシーケンスが剰余を表わす少なくとも1つのビットを含むかどうかを決定する(102)。ビットシーケンスが剰余を表わす少なくとも1ビットを含むとき、トランスコードモジュール36は、剰余を表わす、8ビットのうちの1つまたは複数のビットを変更することができる(104)。例えば、トランスコードモジュール36は、剰余を表わすビットの最下位ビットを変更することができる。このことは、代わりに、マーカを表わし、剰余の値を最小にのみ変更する、ビットシーケンスの発生を防ぐ。トランスコードモジュール36は、そのあとで、パディングビットを挿入することなく、ビットシーケンスを符号化する(106)。いくつかのケースにおいては、トランスコードモジュール36は、パディングバイトを典型的に挿入することができる。その場合には、8つのビットが保存される。
【0101】
ビットシーケンスが剰余を表わす少なくとも1ビットを含まないとき、トランスコードモジュール36は、いずれのビットも変更せず(108)、パディングビットが挿入された状態でシーケンスを符号化する(110)。ハフマンコードのビットを変更することは、そのあとで復号デバイスにおいて誤りを結果としてもたらすであろう、ハフマンコードにおける変更を結果としてもたらすであろう。
【0102】
図6で説明されるマイクロスケールビットレート制御技術は、必要なときに、イメージのサイズをさらに縮小するマクロスケールビットレート制御とともに使用されることができる。代替的に、マイクロスケールレート制御技術は、すでに符号化されたイメージをトランスコードするために、あるいは、イメージの初期符号化を実行するために、マクロスケールレート制御技術と独立して使用されることができる。
【0103】
ここにおいて説明されている技術は、ハードウェア、ソフトウェア、ファームウェアあるいはそれらの任意の組み合わせで、インプリメントされることができる。モジュールあるいはコンポーネントとして説明されるいずれの特徴も、集積論理回路において一緒に、ディスクリートとして別々だが、相互運用が可能な論理デバイスをインプリメントされることができる。ソフトウェアでインプリメントされる場合には、本技術は、実行されるときに、上記で説明される1つまたは複数の方法を実行する、インストラクションを備えているコンピュータ可読媒体、によって少なくとも部分的に実現されることができる。コンピュータ可読媒体は、コンピュータプログラムプロダクトの一部を形成することができ、そしてそれは、パッケージング材料を含むことができる。コンピュータ可読媒体は、シンクロナス動的ランダムアクセスメモリ(SDRAM)、読み取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電子的消去可能なプログラマブル読み取り専用メモリ(EEPROM)、FLASHメモリ、磁気あるいは光学データ保存メディア、及び同様なもの、のようなランダムアクセスメモリ(RAM)を備えることができる。技術は、さらに、あるいは、代替的に、インストラクションあるいはデータストラクチャの形で復号を搬送するあるいは通信する、そして、コンピュータによってアクセスされ、読み取られ、及び/または実行されることができる、コンピュータ可読通信媒体によって少なくとも部分的に実現されることができる。
【0104】
コードは、DSPs、汎用マイクロプロセッサ、ASICs、フィールドプログラマブル論理アレイFPGAs、あるいは、他の同等の、集積あるいはディスクリートロジック回路構成(other equivalent integrated or discrete logic circuitry)のような、1つまたは複数のプロセッサによって実行されることができる。したがって、ここにおいて使用されるように、用語「プロセッサ(processor)」は、いずれの前述の構造、あるいはここにおいて説明される技術のインプリメンテーションに適切ないずれの他の構造を指すことができる。さらに、いくつかの態様では、ここにおいて説明されている機能性は、符号化及び復号のために構成された専用ソフトウェアモジュールあるいはハードウェアモジュール内で提供されてもよく、あるいは、組み込まれたビデオエンコーダ−デコーダ(CODEC)に組み込まれてもよい。したがって、本開示はまた、本開示で説明される技術の1つまたは複数をインプリメントする回路構成を含む様々な集積回路デバイスのいずれも熟考する。そのような回路構成は、単一の集積回路チップにおいて、あるいは、マルチプルで相互運用可能な集積回路チップにおいて、提供されることができる。
【0105】
様々な例が説明されている。これらおよび他の例は、添付された特許請求の範囲内にある。

【特許請求の範囲】
【請求項1】
デジタルイメージデータを処理する方法であって、
計算されたスケーリングファクタの関数として1つまたは複数の量子化テーブルをスケーリングすることと、
前記1つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化することと、
前記デジタルイメージデータの前記複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成する前記n番目ブロックにおいて理想的に符号化されるべきビットの数との間の差異をトラッキングすることと、
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除くことと、
を備えている方法。
【請求項2】
初期で符号化された前記イメージデータのビットレートに基づいて前記ターゲットビットレートを達成する0値量子化変換係数の望ましい数と、初期で符号化された前記イメージデータの0値量子化変換係数の数と、前記ターゲットビットレートと、を識別することと、
前記0値量子化変換係数の望ましい数に基づいて前記1つまたは複数の量子化テーブルをスケーリングすることにおいて使用される、前記スケーリングファクタを計算することと、
をさらに備えている、請求項1に記載の方法。
【請求項3】
前記1つまたは複数の量子化テーブルをスケーリングすることは、輝度量子化テーブルと色度量子化テーブルをスケーリングすることを備えており、なお、前記色度量子化テーブルは、前記輝度量子化テーブルよりも多くスケーリングされている、請求項1に記載の方法。
【請求項4】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングすることは、
前記計算されたスケーリングファクタによって前記輝度量子化テーブルの第1の部分をスケーリングすることと;
第2のスケーリングファクタによって前記輝度量子化テーブル及び前記色度量子化テーブルの第2の部分をスケーリングすることと、なお、前記第2のスケーリングファクタは、前記計算されたスケーリングファクタの関数として決定される;
を備えており、前記計算されたスケーリングファクタと第2のスケーリングファクタは、1よりも大きくあるいは1に等しく、さらには、前記計算されたスケーリングファクタは、前記第2のスケーリングファクタよりも小さい、請求項3に記載の方法。
【請求項5】
前記輝度量子化テーブル及び前記色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり、前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、その後で前記色度量子化テーブルの高周波数量子化エントリ、が続く単独シーケンスに順序づけることと;
前記計算されたスケーリングファクタによって、前記シーケンスの最初のk量子化エントリをスケーリングすることと;
前記第2のスケーリングファクタによって、前記シーケンスの残りのN−k量子化エントリをスケーリングすることと、なお、Nは、前記シーケンスの量子化エントリの合計数である;
をさらに備えている請求項4に記載の方法。
【請求項6】
前記1つまたは複数のビットを取り除くことは、
2乗に等しいあるいは2乗に近い値を有する1つまたは複数の量子化変換係数を選択することと、
前記選択された量子化変換係数が前記のそれぞれの2乗よりも少なくなるまで、前記1つまたは複数の選択された量子化変換係数をデクリメントすることと、
を備えている、請求項1に記載の方法。
【請求項7】
2乗に等しいあるいは2乗に近い1つまたは複数の量子化変換係数を選択することは、前記のそれぞれの2乗より下の値にデクリメントするとき、0と等しくないであろう1つまたは複数の量子化変換係数を選択することを備えている、請求項6に記載の方法。
【請求項8】
前記1つまたは複数のビットを取り除くことは、
1つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される、複数のビットを含む少なくとも1つのビットシーケンスを識別することと、
前記ビットシーケンスが前記マーカとしてもはや作用しないように剰余に対応する前記ビットシーケンスの前記複数のビットのうちの少なくとも1つを変更することと、
を備えている、請求項1に記載の方法。
【請求項9】
前記差異が前記スレッシュホールドより下にあるとき、前記1つまたは複数の追加ビットを取り除くことなく、前記1つまたは複数のスケーリングされた量子化テーブルを使用して前記イメージデータの前記ブロックを符号化すること、をさらに備えている請求項1に記載の方法。
【請求項10】
デジタルイメージデータを処理するための装置であって、
前記デジタルイメージデータの複数のブロックのピクセルを符号化することにおいて使用される1つまたは複数の量子化テーブルを保存するメモリと、
計算されたスケーリングファクタの関数として前記1つまたは複数の量子化テーブルをスケーリングし、前記1つまたは複数のスケーリングされた量子化テーブルを使用して前記デジタルイメージデータの複数のブロックのピクセルを符号化し、前記デジタルイメージデータの前記複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数と、ターゲットビットレートを達成する前記n番目ブロックにおいて理想的には符号化されるべきビットの数との差異をトラッキングし、そして、前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除く、符号化モジュールと、
を備えている装置。
【請求項11】
前記符号化モジュールは、輝度量子化テーブルと色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり、前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、そして、前記色度量子化テーブルの高周波数量子化エントリ、が続く単独のシーケンスに順序づけ、前記計算されたスケーリングファクタによって、前記シーケンスの最初のk量子化エントリをスケーリングし、前記計算されたスケーリングファクタの関数として決定される第2のスケーリングファクタによって、前記シーケンスの残りのN−k量子化エントリをスケーリングしており、
ここにおいて、Nは、前記シーケンスの量子化エントリの合計数であり、前記計算されたスケーリングファクタ及び第2のスケーリングファクタは、1よりも大きいあるいは1に等しく、前記計算されたスケーリングファクタは、前記第2のスケーリングファクタよりも小さい、請求項10に記載の装置。
【請求項12】
前記符号化モジュールは、2乗に等しいあるいは2乗に近い値を有する1つまたは複数の量子化変換係数を選択し、前記の1つまたは複数の選択された量子化変換係数を、前記の選択された量子化変換係数が前記のそれぞれの2乗よりも少なくなるまで、デクリメントする、請求項10に記載の装置。
【請求項13】
前記符号化モジュールは、1つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される複数のビットを含む少なくとも1つのビットシーケンスを識別し、前記ビットシーケンスが前記マーカとしてもはや作用しないように前記ビットシーケンスの前記複数のビットのうちの少なくとも1つを変更する、請求項10に記載の装置。
【請求項14】
前記符号化モジュールは、前記差異が前記スレッシュホールドより下になるとき、前記1つまたは複数の追加ビットを取り除くことなく、前記スケーリングされた量子化テーブルを使用して前記イメージデータの前記ブロックの符号化を再開する、請求項10に記載の装置。
【請求項15】
前記装置は、無線通信デバイスハンドセット内で組み込まれており、前記無線通信デバイスハンドセットは、前記の符号化された前記の符号化されたブロックのピクセルを送信するための送信機をさらに備えている、請求項10に記載の装置。
【請求項16】
デジタルイメージデータを処理するための装置であって、
計算されたスケーリングファクタの関数として1つまたは複数の量子化テーブルをスケーリングするための手段と;
前記1つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化するための手段と;
前記デジタルイメージデータの前記複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数とターゲットビットレートを達成する前記n番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするための手段と;
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除くための手段と;
を備えている装置。
【請求項17】
インストラクションを有しているコンピュータ可読媒体、を備えているデジタルイメージデータを処理するためのコンピュータプログラムプロダクトであって、前記インストラクションは、
計算されたスケーリングファクタの関数として1つまたは複数の量子化テーブルをスケーリングするためのコードと;
前記1つまたは複数のスケーリングされた量子化テーブルを使用して、前記デジタルイメージデータの複数のブロックのピクセルを符号化するためのコードと;
前記デジタルイメージデータの前記複数のブロックのピクセルのn番目ブロックにおいて符号化されるビットの数と、ターゲットビットレートを達成する前記n番目ブロックにおいて理想的には符号化されるべきビットの数との間の差異をトラッキングするためのコードと;
前記差異がスレッシュホールドよりも大きいあるいは等しいとき、前記イメージデータの前記複数のブロックの部分を符号化するために使用された1つまたは複数のビットを取り除くためのコードと;
を備えている、
コンピュータプログラムプロダクト。
【請求項18】
前記インストラクションは、
初期で符号化された前記イメージデータのビットレートに基づいて、前記ターゲットビットレートを達成する0値量子化変換係数の望ましい数と、初期で符号化された前記イメージデータの0値量子化変換係数の数と、前記ターゲットビットレートと、を識別するためのコードと、
前記の0値量子化変換係数の望ましい数に基づいて、前記1つまたは複数の量子化テーブルをスケーリングすることにおける使用のための前記スケーリングファクタを計算するためのコードと、
をさらに備えている、請求項17に記載のコンピュータプログラムプロダクト。
【請求項19】
前記1つまたは複数の量子化テーブルをスケーリングするためのコードは、輝度量子化テーブルと色度量子化テーブルをスケーリングするためのコードを備えており、前記色度量子化テーブルは、前記輝度量子化テーブルよりも多くスケーリングされている、請求項17に記載のコンピュータプログラムプロダクト。
【請求項20】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングするためのコードは、
前記計算されたスケーリングファクタによって前記輝度量子化テーブルの第1の部分をスケーリングするためのコードと;
第2のスケーリングファクタによって前記輝度量子化テーブル及び前記色度量子化テーブルの第2の部分をスケーリングするためのコードと、なお、前記第2のスケーリングファクタは、前記計算されたスケーリングファクタの関数として決定される;
を備えており、前記の計算されたスケーリングファクタと第2のスケーリングファクタは、1よりも大きくあるいは1に等しく、さらには、前記の計算されたスケーリングファクタは、前記第2のスケーリングファクタよりも小さい、請求項19に記載のコンピュータプログラムプロダクト。
【請求項21】
前記輝度量子化テーブル及び前記色度量子化テーブルをスケーリングするためのコードは、
前記輝度量子化テーブル及び前記色度量子化テーブルの量子化エントリを、前記輝度量子化テーブルの低周波数量子化エントリで始まり前記輝度量子化テーブルの高周波数量子化エントリ、前記色度量子化テーブルの低周波数量子化エントリ、その後で前記色度量子化テーブルの高周波数量子化エントリ、が続く単独シーケンスに順序づけるためのコードと;
前記の計算されたスケーリングファクタによって、前記シーケンスの最初のk量子化エントリをスケーリングするためのコードと;
前記第2のスケーリングファクタによって、前記シーケンスの残りのN−k量子化エントリをスケーリングするためのコードと、なお、Nは、前記シーケンスの量子化エントリの合計数である;
を備えている、請求項20に記載のコンピュータプログラムプロダクト。
【請求項22】
前記1つまたは複数のビットを取り除くためのコードは、
2乗に等しいあるいは2乗に近い値を有する1つまたは複数の量子化変換係数を選択するためのコードと、
前記1つまたは複数の選択された量子化変換係数を、前記の選択された量子化変換係数が前記のそれぞれの2乗よりも少なくなるまで、デクリメントするためのコードと、
を備えている、請求項17に記載のコンピュータプログラムプロダクト。
【請求項23】
2乗に等しいあるいは2乗に近い1つまたは複数の量子化変換係数を選択するためのコードは、前記のそれぞれの2乗より下の値にデクリメントするとき、0と等しくないであろう1つまたは複数の量子化変換係数を選択するためのコードを備えている、請求項22に記載のコンピュータプログラムプロダクト。
【請求項24】
前記1つまたは複数のビットを取り除くためのコードは、
1つまたは複数のビットのスタッフィングを必要とするマーカとして作用する方法で配列される複数のビットを含む少なくとも1つのビットシーケンスを識別するためのコードと、
前記ビットシーケンスが前記マーカとしてもはや作用しないように、前記ビットシーケンスの前記複数のビットのうちの少なくとも1つを変更するためのコードと、
を備えている、請求項17に記載のコンピュータプログラムプロダクト。
【請求項25】
前記差異が前記スレッシュホールドよりも下にあるとき、前記1つまたは複数の追加ビットを取り除くことなく、前記1つまたは複数のスケーリングされた量子化テーブルを使用して、前記イメージデータの前記ブロックの前記符号化を再開するためのコード、をさらに備えている請求項17に記載のコンピュータプログラムプロダクト。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−42509(P2013−42509A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−201802(P2012−201802)
【出願日】平成24年9月13日(2012.9.13)
【分割の表示】特願2010−510473(P2010−510473)の分割
【原出願日】平成20年5月28日(2008.5.28)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】