(57)【要約】      （修正有）【課題】元のイメージをさらに圧縮するイメージ再圧縮システムを提供する。【解決手段】イメージ再圧縮システムによる方法は、圧縮イメージデータを復号することで、離散コサイン変換（ＤＣＴ）係数の少なくともひとつのブロックを取得することと、ＤＣＴ係数のうち複数のＡＣ係数の各ＡＣ係数を、ＤＣＴ係数のブロックのＡＣ係数のうちの上エッジ行、ＤＣＴ係数のブロックのＡＣ係数のうちの左エッジ列又はＤＣＴ係数のブロックのＡＣ係数のサブブロックのうちの多くてひとつの一部として分類することに少なくとも部分的に基づいて、複数のＡＣ係数の二値化表現の二値シンボルについての推定確率を決定することと、推定確率に少なくとも部分的に基づいて二値シンボルを算術符号化することと、算術符号化に少なくとも部分的に基づいて、圧縮イメージデータに対して無損失で、より少ないバイトで格納することと、と備える。【選択図】図３
2020174374.tif 000002
【特許請求の範囲】
【請求項１】
ひとつ以上のプロセッサとストレージ媒体とを備える計算システムによって実行される方法であって、
デジタルイメージの符号化表現である圧縮イメージデータを取得することと、
前記圧縮イメージデータを復号することで、前記デジタルイメージのサンプルブロックを表す離散コサイン変換（ＤＣＴ）係数の少なくともひとつのブロックを取得することであって、ＤＣＴ係数の前記ブロックがＤＣ係数と複数のＡＣ係数とを含む、取得することと、
前記複数のＡＣ係数の各ＡＣ係数を、（ａ）ＤＣＴ係数の前記ブロックのＡＣ係数のうちの上エッジ行、（ｂ）ＤＣＴ係数の前記ブロックのＡＣ係数のうちの左エッジ列、または（ｃ）ＤＣＴ係数の前記ブロックのＡＣ係数のサブブロックのうちの多くてひとつの一部として分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の二値化表現の二値シンボルについての推定確率を決定することと、
前記推定確率に少なくとも部分的に基づいて前記二値シンボルを算術符号化することと、
前記算術符号化に少なくとも部分的に基づいて、前記デジタルイメージの符号化表現であるさらに圧縮されたイメージデータを格納することであって、前記さらに圧縮されたイメージデータが前記圧縮イメージデータに対して無損失であり、前記さらに圧縮されたイメージデータをストレージ媒体に格納するために、前記圧縮イメージデータによって要求されるよりも少ないバイトが要求される、格納することと、を含む方法。
【請求項２】
前記方法はさらに前記さらに圧縮されたイメージデータに少なくとも部分的に基づいて、前記圧縮イメージデータを再生成することを含む請求項１に記載の方法。
【請求項３】
前記さらに圧縮されたイメージデータを格納することは複数のセグメントを格納することに少なくとも部分的に基づき、前記複数のセグメントの各セグメントが前記さらに圧縮されたイメージデータの一部を含み、前記複数のセグメントの各セグメントが前記圧縮イメージデータの一部に対応し、
前記方法はさらに、前記複数のセグメントのうちの要求セグメントに対する要求を受信することを含み、
前記方法はさらに、前記さらに圧縮されたイメージデータの前記一部であって前記要求セグメントに対応する前記一部に少なくとも部分的に基づいて、前記圧縮イメージデータの前記一部であって前記要求セグメントに対応する前記一部を再生成することを含み、
前記方法はさらに、前記要求に対する応答であって前記要求セグメントに対応する前記圧縮イメージデータの前記一部を含む応答を送信することを含む請求項１に記載の方法。
【請求項４】
前記分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルについての前記推定確率を決定することはさらに、前記複数のＡＣ係数のうちの所与のＡＣ係数の二値化形態を生成することに少なくとも部分的に基づき、
前記二値化形態が、前記所与のＡＣ係数の長さを表す係数指数と、前記所与のＡＣ係数の符号を表す符号ビットと、前記所与のＡＣ係数の二値の値をあらわす残差と、を含む請求項１に記載の方法。
【請求項５】
前記分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルについての前記推定確率を決定することはさらに、所与のＡＣ係数の前記二値化形態の所与の二値シンボルについての推定確率を、前記所与の二値シンボルが（ａ）前記係数指数の一部、（ｂ）前記符号ビット、または（ｃ）前記残差の一部であるか否かに少なくとも部分的に基づいて、決定することに少なくとも部分的に基づく請求項４に記載の方法。
【請求項６】
前記所与のＡＣ係数がＡＣ係数の前記サブブロックの一部であり、
前記所与の二値シンボルが前記係数指数の一部である場合、前記所与の二値シンボルについての前記推定確率を決定することはさらに、
（ａ）以下に少なくとも部分的に基づき算出された重み付け平均：
（ａ１）前記デジタルイメージの左サンプルブロックを表すＤＣＴ係数の左ブロック内の、前記所与のＡＣ係数に対応するＡＣ係数、
（ａ２）前記デジタルイメージの上サンプルブロックを表すＤＣＴ係数の上ブロック内の、前記所与のＡＣ係数に対応するＡＣ係数、
（ａ３）前記デジタルイメージの左上サンプルブロックを表すＤＣＴ係数の左上ブロック内の、前記所与のＡＣ係数に対応するＡＣ係数、
（ｂ）ＡＣ係数の前記サブブロック内の前記所与のＡＣブロックのインデクス、および
（ｃ）既に算術符号化された前記係数指数の二値シンボルの数、に少なくとも部分的に基づき、
前記所与の二値シンボルが前記符号ビットである場合、前記所与の二値シンボルについての前記推定確率を決定することはさらに、ＤＣＴ係数の前記ブロックに対応する色成分に少なくとも部分的に基づき、
前記所与の二値シンボルが前記残差の一部である場合、前記所与の二値シンボルについての前記推定確率を決定することはさらに、ＡＣ係数の前記サブブロック内の前記所与のＡＣブロックのインデクスとＤＣＴ係数の前記ブロックに対応する色成分とに少なくとも部分的に基づく請求項５に記載の方法。
【請求項７】
前記分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルについての前記推定確率を決定することはさらに、所与のＡＣ係数の二値化形態の所与の二値シンボルについての推定確率を、前記所与のＡＣ係数の予測に少なくとも部分的に基づいて、決定することに少なくとも部分的に基づき、
前記所与のＡＣ係数がＡＣ係数の前記左エッジ列の一部であり、
前記予測が：
（ａ）ＤＣＴ係数の前記ブロックのある行にある前記複数のＡＣ係数のうちの前記所与のＡＣ係数に対応する残存ＡＣ係数、および
（ｂ）前記デジタルイメージの左サンプルブロックを表すＤＣＴ係数の左ブロックのうち、前記所与のＡＣ係数に対応するＡＣ係数の行全体、
に少なくとも部分的に基づき算出される請求項１に記載の方法。
【請求項８】
前記分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルについての前記推定確率を決定することはさらに、所与のＡＣ係数の二値化形態の所与の二値シンボルについての推定確率を、前記所与のＡＣ係数の予測に少なくとも部分的に基づいて、決定することに少なくとも部分的に基づき、
前記所与のＡＣ係数がＡＣ係数の前記上エッジ行の一部であり、
前記予測が：
（ａ）ＤＣＴ係数の前記ブロックのある列にある前記複数のＡＣ係数のうちの前記所与のＡＣ係数に対応する残存ＡＣ係数、および
（ｂ）前記デジタルイメージの上サンプルブロックを表すＤＣＴ係数の上ブロックのうち、前記所与のＡＣ係数に対応するＡＣ係数の列全体
に少なくとも部分的に基づき算出される請求項１に記載の方法。
【請求項９】
前記方法はさらに、
前記ＤＣ係数の予測を生成することと、
前記予測と前記ＤＣ係数との間の差を表す誤差項を算出することと、
前記誤差項の二値化形態の二値シンボルについての推定確率を決定することと、
前記誤差項の前記二値化形態の前記二値シンボルについての前記推定確率に少なくとも部分的に基づいて、前記誤差項の前記二値化形態の前記二値シンボルを算術符号化することと、を含み、
前記さらに圧縮されたイメージデータを格納することはさらに、前記誤差項の前記二値化形態の前記二値シンボルを算術符号化することに少なくとも部分的に基づく請求項１に記載の方法。
【請求項１０】
前記ＤＣ係数の前記予測を生成することは：（ａ）前記サンプルブロックの上行のサンプル値と、前記デジタルイメージの上サンプルブロックの下行の対応するサンプル値と、の間の差を最小化すること、および（ｂ）前記サンプルブロックの左エッジ列のサンプル値と、前記デジタルイメージの左サンプルブロックの右エッジ列の対応するサンプル値と、の間の差を最小化することに少なくとも部分的に基づく請求項９に記載の方法。
【請求項１１】
前記ＤＣ係数の前記予測を生成することは：（ａ）前記サンプルブロックの上の二つの行のサンプル値に少なくとも部分的に基づいて算出された勾配、（ｂ）前記デジタルイメージの上サンプルブロックの下の二つの行のサンプル値に少なくとも部分的に基づいて算出された勾配、（ｃ）前記サンプルブロックの最も左の二つの列のサンプル値に少なくとも部分的に基づいて算出された勾配、および（ｄ）前記デジタルイメージの左サンプルブロックの最も右の二つの列のサンプル値に少なくとも部分的に基づいて算出された勾配に少なくとも部分的に基づく請求項９に記載の方法。
【請求項１２】
前記誤差項の前記二値化形態が：
前記誤差項の長さを表す係数指数と、
符号ビットと、
前記誤差項の二値の値を表す残差と、を含む請求項９に記載の方法。
【請求項１３】
前記複数のＡＣ係数が、（ａ）ＡＣ係数の上エッジ行の全てのＡＣ係数、（ｂ）ＡＣ係数の前記左エッジ列の全てのＡＣ係数、および（ｃ）ＡＣ係数の前記サブブロックの全てではないＡＣ係数からなる請求項１に記載の方法。
【請求項１４】
複数のビンをメモリに格納することであって、前記複数のビンの各ビンが０シンボルカウンタと１シンボルカウンタとを含む、格納することと、
前記複数のビンのなかから、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの各二値シンボルに対するビンを選択することと、をさらに含み、
前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの二値シンボルに対して前記複数のビンのなかから選択ビンが選択されると、前記選択ビンが前記０シンボルカウンタの現在値と前記１シンボルカウンタの現在値とを有し、
前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの各二値シンボルが前記複数のＡＣ係数のうちのひとつのＡＣ係数に対応し、
前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの各二値シンボルに対するビンを選択することは、前記二値シンボルが対応するところの前記ＡＣ係数を、ＡＣ係数のうちの前記上エッジ行、ＡＣ係数のうちの前記左エッジ列、またはＤＣＴ係数の前記ブロックのＡＣ係数の前記サブブロック、のうちの多くてひとつの一部として分類することに少なくとも部分的に基づき、
前記複数のＡＣ係数の前記二値化表現の前記二値シンボルについての前記推定確率を決定することは、前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの各二値シンボルについての推定確率に少なくとも部分的に基づき、
前記複数のＡＣ係数の前記二値化表現の前記二値シンボルの各二値シンボルについての前記推定確率は、前記二値シンボルに対する前記選択ビンの前記０シンボルカウンタの前記現在値と前記１シンボルカウンタの前記現在値とに少なくとも部分的に基づく請求項１に記載の方法。
【請求項１５】
前記複数のＡＣ係数の各ＡＣ係数が量子化される請求項１に記載の方法。
【請求項１６】
前記圧縮イメージデータがハフマン符号化に基づく前記複数のＡＣ係数のエントロピー符号化を含む請求項１に記載の方法。
【請求項１７】
ひとつ以上のプロセッサとストレージ媒体とを備えるシステムによる実行用のひとつ以上のプログラムを保持するひとつ以上のコンピュータ可読ストレージ媒体であって、前記ひとつ以上のプログラムが請求項１から１６のいずれか一項に記載の方法を実行するよう構成されたインストラクションを含む、ひとつ以上のコンピュータ可読ストレージ媒体。
【請求項１８】
ひとつ以上のプロセッサと、
ストレージ媒体と、
前記ひとつ以上のプロセッサによる実行用に構成され、前記ストレージ媒体に保持されるひとつ以上のプログラムであって、前記ひとつ以上のプログラムが請求項１から１６のいずれか一項に記載の方法を実行するよう構成されたインストラクションを含む、ひとつ以上のプログラムと、を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実装は主にイメージ圧縮に関する。開示の実装は特に、イメージ再圧縮の技術に関する。
【背景技術】
【０００２】
ここ数十年に亘り、非接続動作を伴う中央ホストネットワークファイルシステムが発展し、数百万ものユーザを担当するようになってきている。これらのサービスは、SugarSync（登録商標）、Dropbox（登録商標）、Box（登録商標）、Google Drive（登録商標）、Microsoft OneDrive（登録商標）、およびAmazon Cloud Drive（登録商標）を含む。
【０００３】
経済的には、これらのシステムは典型的には、フラット月次料金の代わりに、または全くの無料で、ユーザに最大ストレージ割り当てを提供する。一方、そのようなシステムを運用するためのコストは保持されるユーザデータの量に比して増大する。したがって、オペレータは、保持されるユーザデータの総量を低減する技術から恩恵を受ける。
【０００４】
これらのファイルシステムは急速に巨大化しうる。例えば、上述のサービスのうちのひとつは、現在、おおよそ１エクサバイトのユーザデータを保持し、そのユーザデータのうちのおおよそ４０％はベースライン圧縮ＪＰＥＧイメージからなる。
【０００５】
ベースラインジョイントフォトグラフィックエキスパートグループ（ＪＰＥＧ）イメージ圧縮は、離散コサイン変換（ＤＣＴ）に基づく損失性符号化処理を包含する。その符号化処理では、ソースイメージデータはサンプルの８×８ブロックにグループ化される。各サンプルブロックは、フォワードＤＣＴにより、ＤＣＴ係数と称される６４の値の集合へと変換される。その６４の値のなかで、そのような値のうちのひとつはＤＣ係数と称され、他の６３の値はＡＣ係数と称される。６４の係数のそれぞれは量子化テーブルからの６４の対応する値のうちのひとつを用いて量子化される。
【０００６】
量子化の後、量子化ＤＣ係数および６３の量子化ＡＣ係数はエントロピー符号化される。それを行う際、以前の量子化ＤＣ係数を用いることで、現在の量子化ＤＣ係数を予測し、その差分を符号化する。６３の量子化ＡＣ係数はジグザグシーケンスへと変換される。量子化ＤＣＴ係数は、次いで、データをさらに圧縮するハフマン符号化手順に渡される。
【０００７】
圧縮ＪＰＥＧイメージデータを復号するために、基本的には符号化ステップの逆が行われる。エントロピー復号器は量子化ＤＣＴ係数のジグザグシーケンスを復号する。逆量子化の後、ＤＣＴ係数は逆ＤＣＴ（ＩＤＣＴ）によりサンプルの８×８ブロックへと変換される。
【０００８】
上述のような大規模中央ホストネットワークファイルシステムは、ベースラインＪＰＥＧに対してより大きな圧縮効率を提供する技術をありがたいと思うであろう。そのような技術を用いることで、保持されるユーザデータ集合の全サイズを低減し、それにより運用コストを低減することができる。
【０００９】
ベースラインＪＰＥＧに対して改善されたイメージ圧縮についての方法が存在する。「packJPG」と称されるあるアプローチでは、８×８ＤＣＴ変換ブロックのEnd-of-Block (EOB)についてセグメント化されたエントロピー符号化が用いられる。ＥＯＢは、６４の係数のジグザグ順序における最後の非ゼロ係数の後の位置として定義される。packJPGアプローチは、ベースラインＪＰＥＧイメージファイルのサイズを平均１５％低減できるといわれている。packJPGについてのさらなる情報は、Stirner M.およびSeelmann G著の論文「Improved Redundancy Reduction for JPEG Files」、Picture Coding Symposium by ERASIP, November 2007で利用可能である。
【００１０】
packJPGアプローチはベースラインＪＰＥＧファイルをファイルサイズを低減するよう再圧縮することができるが、packJPGアプローチは圧縮ピクセル値をグローバルにソートされる順序で再構成することを要求する。したがって、packJPGで圧縮されたイメージを元のベースラインＪＰＥＧイメージへ解凍することは、シングルスレッドであり、packJPGで圧縮されたイメージ全体へのアクセスを要求し、元のベースラインＪＰＥＧ圧縮イメージの最初のバイトが出力可能となる前に、packJPGで圧縮されたイメージをメモリへ復号することを要求する可能性がある。総じて、解凍操作についての最初のバイトへの時間および最後のバイトへの時間は、上述のような大規模中央ホストネットワークファイルシステムのサービスゴールを満たすのには大きすぎる。
【００１１】
したがって、必要とされるのは、グローバル操作なしで実装可能な再圧縮技術であり、この場合、再圧縮イメージから元の圧縮イメージを再現するための解凍操作は再圧縮イメージの独立した複数の部分に亘って分散可能であり、各部分のなかでマルチスレッドとなりえ、最初のバイトへの時間は低いであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明のある実装による、イメージ再圧縮システムを示す。
【００１３】
【図２】本発明のある実装による、算術符号化手順で用いられる適応訓練確率モデルの統計ビンを模式的に示す。
【００１４】
【図３】本発明のある実装による、適応訓練算術符号化手順に含まれる高位操作のフローチャートである。
【００１５】
【図４】本発明のある実装による、サンプルブロックを含むイメージ成分を模式的に示す。
【００１６】
【図５】本発明のある実装による、量子化係数ブロック内の量子化係数の四つの一般的なカテゴリを示す。
【００１７】
【図６】本発明のある実装による、カテゴリ化された量子化係数ブロックの非二値シンボルの二値化フォーマットを示す。
【００１８】
【図７】本発明のある実装による、量子化係数のブロック内の量子化係数の二値化順序を示す。
【００１９】
【図８】本発明のある実装による、量子化ＡＣ係数の７×７サブブロック内の例示的二値化手順を示す。
【００２０】
【図９】本発明のある実装による、量子化ＡＣ係数またはＤＣ誤差項の二値化フォーマットを示す。
【００２１】
【図１０】本発明のある実装による、ローカル輝度予測方法に含まれるサンプルを示す。
【００２２】
【図１１】本発明のある実装による、ローカル輝度予測方法のフローチャートである。
【００２３】
【図１２Ａ】本発明のある実装による、ローカル勾配予測方法に含まれるサンプルを示す。
【００２４】
【図１２Ｂ】本発明のある実装による、水平エッジ勾配に含まれるサンプルを示す。
【００２５】
【図１２Ｃ】本発明のある実装による、垂直エッジ勾配に含まれるサンプルを示す。
【００２６】
【図１３】本発明のある実装による、ローカル勾配予測方法のフローチャートである。
【００２７】
【図１４】本発明の実装が実施され得る基本的な計算デバイスを示すブロック図である。
【００２８】
【図１５】計算デバイスの動作を制御するために用いられてもよい基本的なソフトウェアシステムのブロック図である。
【発明を実施するための形態】
【００２９】
実装が以下に詳述される。それらの例は添付の図面に示される。以下の詳細な説明では、各種説明される実装の十分な理解を提供するために、多くの特定の詳細が説明される。しかしながら、各種説明される実装がこれらの特定の詳細なしで実施されうることは当業者には明らかであろう。他の例では、よく知られた方法、手順、コンポーネント、回路およびネットワークは、実装の態様を不必要に不明瞭としないために説明されない。
【００３０】
明細書および特許請求の範囲を通じて、以下の用語は、文脈が明確にそうでないことを規定しないかぎり、ここで明示的に関連付けられる意味をとる。句「ある実装では」は、本明細書で用いられる場合、必ずしも同じ実装を指さないが、指してもよい。したがって、種々の実装は本発明の範囲や精神から逸脱することなく、容易に組み合わせ可能である。
【００３１】
加えて、本明細書で用いられる場合、語「または」は、文脈が明確にそうでないことを規定しないかぎり、包括的「または」オペレータである。語「基づいて」は排他的ではなく、文脈が明確にそうでないことを規定しないかぎり、記載されていない追加的ファクタに基づくことを許す。加えて、明細書を通じて、「a」、「an」および「the」の意味は複数の参照を含む。「in」の意味は「in」および「on」を含む。
用語
【００３２】
以下の定義は、以下の議論の理解を助けるために説明を目的として提供され、限定を目的としない。
【００３３】
成分：成分はイメージの二次元アレイのひとつとして定義されてもよい。
【００３４】
圧縮イメージ（圧縮イメージデータ）：圧縮イメージ（または圧縮イメージデータ）は、イメージの符号化表現である。
【００３５】
逆量子化：逆量子化は量子化の逆の手順であり、それにより周波数空間係数の表現が復活される。
【００３６】
イメージ（イメージデータ）：イメージ（またはイメージデータ）は、数値データの二次元アレイの集合、イメージの各成分のひとつの二次元アレイ、およびイメージの成分が１より大きなビット／サンプルを有する場所（連続トーンイメージとして称されることがある）、として定義されてもよい。イメージはカラーイメージまたはグレースケールイメージであってもよい。カラーイメージは複数の成分を有する。グレースケールイメージはただひとつの成分を有する。
【００３７】
ジョイントフォトグラフィックエキスパートグループ（ＪＰＥＧ）：ＪＰＥＧは連続トーン静止画のデジタル圧縮および符号化の規格を生成するコミティーの名前である。
【００３８】
量子化：量子化は、それにより周波数空間係数が線形スケールされて圧縮が達成される手順である。
【００３９】
量子化テーブル：量子化テーブルは、周波数空間係数を量子化および逆量子化するために用いられる６４の量子化値の集合である。
【００４０】
量子化値：量子化で用いられる整数値。
【００４１】
サンプル：サンプルは、成分の二次元アレイのひとつの要素を指す。
概要
【００４２】
より大きな圧縮セービングを提供する、以前に圧縮されたイメージの無損失再圧縮のフォーマット知覚およびファイル保存技術が開示される。例えば、再圧縮技術をベースラインＪＰＥＧイメージに適用することで、平均２３％の圧縮セービングを達成することができる。技術は再圧縮中のグローバル操作を避ける。そのようなグローバル操作は、再圧縮イメージから元の圧縮イメージを再生する際の分散およびマルチスレッド解凍操作を行えなくする。例えば、技術は、全ての圧縮ピクセル値をグローバルにソートされる順序で構成することを要求しない。そのように構成する場合、再圧縮イメージの分散およびマルチスレッド復号を行えなくする。同時に、技術は、分散およびマルチスレッド解凍を容易にしつつ、圧縮セービングを達成可能である。
【００４３】
グローバル格納などのグローバル操作を避けつつ追加的圧縮セービングを達成するために、本発明のある実装では、技術は、ベースラインＪＰＥＧのハフマン符号化スキームを算術符号化スキームで置換することを含む。算術符号化スキームは、適応的確率モデルを用いることで、元のイメージで前に利用可能なコンテキストに基づいて元のイメージにおけるＤＣＴ係数の正確な予測を生成する。特に、確率モデルは統計ビンのアレイを使用する。各統計ビンは、イメージにおける前のコンテキストが与えられたとき、「１」ビット対「０」ビットの確率を追跡する。
【００４４】
分散およびマルチスレッド解凍をできなくするソーティングなどのグローバル操作を避けるために、イメージデータをソートする必要なしにイメージにおける長距離に亘る相関をカバーするよう確率モデルを拡張する。本発明のある実装では、確率モデルは７２１５６４個の統計ビン（すなわち、確率コンテキスト）を包含する。
イメージ再圧縮システム
【００４５】
図１は、本発明のある実装による、イメージ再圧縮システム１０２を模式的に示す。システム１０２は、エントロピーデコーダ１０６と、係数プリプロセッサ１０８と、適応的訓練算術コーダ１１０と、を備える。動作中、元のイメージエンコーダ（不図示）によって生成された元の圧縮イメージデータ１０４はエントロピーデコーダ１０６に入力され、量子化周波数空間係数のアレイが得られ、それは６４の量子化係数(β1(α1:1, α1:2, α1:3 ... α1:64) .... βn(αn:1, αn:2, αn:3 ... αn:64) )の「ブロック」または集合にグループ化される。量子化周波数空間係数のアレイは例えば離散コサイン変換（ＤＣＴ）係数のアレイであってもよい。
【００４６】
元の圧縮イメージ１０４は二つのセクション、「ヘッダ」セクションおよび「スキャン」セクション、を含んでもよい。スキャンセクションは量子化係数のアレイを符号化する。６４の量子化係数の各ブロックは、一連の周波数空間直交パターンと足し合わさって、イメージのひとつの成分（例えば、輝度または色差）の８×８サンプルブロックを記述する。量子化係数は、これらの周波数空間係数を、量子化テーブルで提示される量子化値で割ったものであってもよい。
【００４７】
元の圧縮イメージ１０４のヘッダは、（イメージ幅やイメージ高さや成分の数やカスタムタグなどの）イメージメタデータや量子化テーブルやハフマンテーブルを含む各種イメージ関連情報を含んでもよい。量子化テーブルは、元のイメージエンコーダによる量子化中に周波数空間係数に適用された量子化値を記録してもよい。ハフマンテーブルは、元の圧縮イメージデータ１０４のスキャンセクションを含む量子化係数のアレイを無損失な態様で符号化するために、元のイメージエンコーダによるエントロピー符号化中に用いられた可変長符号を記録してもよい。
【００４８】
元の圧縮イメージ１０４は、ISO/IEC 10918-1、その後継、またはその等価物に準拠するベースラインＪＰＥＧイメージであってもよい。しかしながら、本発明の実装はベースラインＪＰＥＧに限られない。本明細書で開示されるイメージ再圧縮技術は、６４の量子化係数のブロックにグループ化される、量子化係数のアレイを有する他のイメージフォーマットに適用可能である。
【００４９】
イメージ再圧縮システム１０２は、元の圧縮イメージ１０４から、元のイメージをさらに圧縮したさらに圧縮されたイメージ１１２を生成してもよい。本発明のある実装では、元の圧縮イメージ１０４がベースラインＪＰＥＧイメージである場合、本明細書で開示される再圧縮技術は、ベースラインＪＰＥＧに対して平均で約２３％の追加的圧縮を達成するよう実装される。
【００５０】
本発明のある実装では、元の圧縮イメージ１０４のヘッダは、ＬＺ１またはＬＺ２とハフマン符号化との組み合わせを用いるものなどの既知の無損失データ圧縮アルゴリズムを用いて、システム１０２によって圧縮される。圧縮ヘッダはさらに圧縮されたイメージ１１２に含まれる。しかしながら、元の圧縮イメージ１０４からハフマンテーブルを用いて量子化係数を符号化することに代えて、イメージ再圧縮システム１０２は、適応訓練確率モデルにより駆動される確率を伴う算術コーダ１１０を用いて、さらに圧縮されたイメージ１１２の量子化係数を符号化する。特に、確率モデルはイメージの前のセクションから集められたコンテキスト情報によって適応訓練される。
【００５１】
エントロピーデコーダ１０６は、元のイメージエンコーダによって適用されたエントロピー符号化（例えば、ハフマン符号化）を元に戻し、量子化係数のアレイを生成してもよい。上述のように、システム１０２は、後に詳述されるように、量子化係数を前処理した後、量子化係数に異なるエントロピー符号化スキームを適用してもよい。異なるエントロピー符号化スキームは、イメージの前のセクションから注意深く選ばれたコンテキスト情報と共に供給される適応訓練二値算術符号化手順を含んでもよい。より具体的には、算術符号化手順はカスタム確率モデルを含んでもよく、カスタム確率モデルはイメージの前のセクションから集められたコンテキスト情報によって適応訓練される。算術符号化手順および確率モデルはまた、後に詳述される。
【００５２】
後に詳述されるように、係数プリプロセッサ１０８は、量子化係数のアレイを前処理し、算術コーダ１１０によるエントロピー符号化用のシンボルを出力してもよい。係数プリプロセッサ１０８によって行われる前処理は、総じて、量子化係数のアレイを二値シンボルのシーケンスとして二値化することを含んでもよく、そのシーケンスは次いで算術コーダ１１０に入力される。係数プリプロセッサ１０８によって行われる前処理はまた、総じて、算術コーダ１１０によって用いられる確率モデルを適応的に訓練するのに用いられるコンテキスト情報を、前のセクションイメージから集めることを含んでもよい。
例示的アプリケーション
【００５３】
イメージ再圧縮システム１０２のいくつかの役に立つアプリケーションがある。ある実装では、イメージ再圧縮システム１０２は、さらに圧縮されたイメージ１１２の格納または伝送の前に、元の圧縮イメージ１０４をさらに圧縮するために用いられる。そうすることで、そうでなければより大きな元の圧縮イメージ１０４を送信することによって消費されていたであろうネットワークリソースを、代わりにさらに圧縮されたイメージ１１２を送信することで、節約することができる。同様に、そうでなければより大きな元の圧縮イメージ１０４を格納することによって消費されていたであろうストレージリソースを、代わりにさらに圧縮されたイメージ１１２を格納することで、節約することができる。基本的にイメージ再圧縮システム１０２の逆を行うイメージ解凍システムは、さらに圧縮されたイメージ１１２から元の圧縮イメージ１０４を再現するために用いられてもよい。
【００５４】
中央ホストネットワークファイルシステムアプリケーション
ある実装では、イメージ再圧縮システム１０２およびシステム１０２によって適用された再圧縮を基本的に逆にする対応するイメージ解凍システムは、（ホストの）ユーザのデジタル写真やデジタルイメージを保持する中央ホストネットワークファイルシステムによって、それらのデジタル写真やデジタルイメージを保持するのに必要なデータストレージスペースの量を低減するために、用いられる。ある実装では、元の圧縮イメージ１０４は、例えば、ユーザの携帯電話によって取得されオンラインサービスにアップロードされたデジタル写真であってもよい。元の圧縮イメージ１０４を受信した後、イメージ再圧縮システム１０２は、さらに圧縮されたイメージ１１２を生成するために用いられてもよく、その後、元の圧縮イメージデータ１０４は廃棄されるかアーカイブされてもよい。ユーザがネットワークファイルシステムに元の圧縮イメージ１０４を要求すると、イメージ解凍システムは、以前に生成され格納されているさらに圧縮されたイメージ１１２から、要求された元の圧縮イメージ１０４を再生するために用いられてもよい。さらに圧縮されたイメージ１１２を格納した後、ユーザが元の圧縮イメージ１０４をダウンロードすることを要求する前、さらに圧縮されたイメージ１１２のみが保持されて元の圧縮イメージ１０４は保持されず、これによりネットワークファイルシステムによって消費されるデータストレージリソースを節約することができる。本明細書で開示される再圧縮技術を実装することによって、ネットワークファイルシステムによって必要とされるデータストレージリソースの量のかなりの低減が実現可能である。
分散およびマルチスレッド解凍
【００５５】
ある実装では、イメージ再圧縮システム１０２および対応するイメージ解凍システムは、バックエンドサーバのクラスタで実行される。ある実装のイメージ解凍システムは、さらに圧縮されたイメージ１１２のリアルタイム分散およびマルチスレッド解凍を行うよう構成されてもよい。解凍はさらに圧縮されたイメージ１１２のセグメントに亘って分散可能であってもよい。セグメントは複数のバックエンドサーバに亘って分散してもよい。各セグメントは、さらに圧縮されたイメージ１１２の一部を、例えば４メガバイトなどの最大セグメントサイズまで、保持してもよい。イメージ解凍システムは、他のセグメントへのアクセスなしに独立に各セグメントを解凍するよう構成される。
【００５６】
元の圧縮イメージ１０２のセグメントは、クライアントによって（例えば、インターネット接続を介して）、個別にそれぞれ独立して要求されてもよい。元の圧縮イメージ１０２のセグメントが要求されたとき、要求されたセグメントのストリーミングをできる限り早く、かつ、クライアントのインターネット接続の帯域幅を十分に利用するネットワーク転送レート（例えば、１００メガビット／秒以上）で、開始するために、さらに圧縮されたイメージ１１２の対応するセグメントの解凍はマルチスレッド化されてもよい。特に、各スレッドは、元の圧縮イメージ１０２の要求されたセグメントの一部を、さらに圧縮されたイメージ１１２の対応するセグメントの一部から、生成してもよい。次いで、複数のスレッドによって生成された要求されたセグメントの一部はつなぎ合わされて元の圧縮イメージ１０２の要求されたセグメントが生成される。
パーソナルコンピューティングデバイスアプリケーション
【００５７】
ある潜在的な実装では、イメージ再圧縮システム１０２および対応するイメージ解凍システムは、同様に、クライアント計算デバイスまたはパーソナルコンピューティングデバイスで用いられてもよく、同様に、そのデバイスでの格納のために、または、他のデバイスへの送信のために、元の圧縮イメージ１０４を対応するさらに圧縮されたイメージ１１２へ圧縮する。例えば、カメラ装備可搬計算デバイスのアプリケーション（例えば、ウェブブラウザまたはモバイルアプリケーション）は、イメージ再圧縮システム１０２を用いることで、可搬計算デバイスのカメラモジュールによって生成される元の圧縮イメージ１０４をさらに圧縮し、元の圧縮イメージ１０４をデバイスに格納する代わりに対応するさらに圧縮されたイメージ１１２をデバイスに格納してもよい。これは、可搬計算デバイスの貴重なデータストレージリソースを節約する。必要であれば、アプリケーションは対応するイメージ解凍システムを用いることで、デバイスに保持されるさらに圧縮されたイメージ１１２から元の圧縮イメージ１０４を復活することができる。
ウェブブラウザアプリケーション
【００５８】
ある実装では、イメージ解凍システムは、JAVASCRIPTなどのクライアント側ブラウザ支援スクリプト言語で実装されることで、さらに圧縮されたイメージ１１２を復号するよう構成されていないウェブブラウザにおける、さらに圧縮されたイメージ１１２のための後方互換サポートを提供してもよい。ある実装では、サーバは、クライアントウェブブラウザに（例えば、ウェブページの一部として）、イメージ解凍システムを実現するスクリプト言語インストラクションとさらに圧縮されたイメージ１１２とを送信してもよい。クライアントウェブブラウザは、次いで、スクリプト言語インストラクションを実行することによって、さらに圧縮されたイメージ１１２から、クライアントウェブブラウザが解凍可能な元の圧縮イメージ１０４（例えば、ベースラインＪＰＥＧイメージ）を取得することができる。クライアントウェブブラウザは、次いで、元の圧縮イメージ１０４を解凍することで、ビデオディスプレイに表示可能なイメージを取得してもよい。
他のアプリケーション考慮
【００５９】
上述のイメージ再圧縮システム１０２は、本発明のいくつかのシステムの実装を説明する目的で提示される。しかしながら、本発明は、システムやシステム構成のいずれにも限定されない。イメージ再圧縮システムやイメージ解凍システムは必ずしも本発明であるとはかぎらず、議論のフレームワークを提供するために用いられる。代わりに、本発明は、本明細書で詳述される本発明の手法をサポート可能な任意のタイプのシステムアーキテクチャや処理環境において実装されてもよい。
【００６０】
図１では、明確な例を提供するために、種々の符号付き箱を用いることで、ソフトウエアやハードウエアやそれらの組み合わせで行われる関連動作の集合を表している。例えば、係数プリプロセッサ１０８と付されている箱は、算術符号化のために量子化係数のアレイを前処理する際の本明細書で開示される動作を表すために用いられる。しかしながら、符号付き箱は、手元の実装におけるソフトウエア的および／またはハードウエア的構造直接対応物を有しても、有さなくてもよい。例えば、手元の実装で係数プリプロセッサであると構成的に考えられているものは、本明細書において、エントロピーデコーダ１０６および／または算術コーダ１１０によって行われるものとして説明される動作のうちのいくつかを行ってもよいし、および／またはその逆もまたしかりである。
算術符号化
【００６１】
算術符号化は無損失データ圧縮の技術である。算術符号化では、一般に、二値シンボルのデータ流全体が、０と１との間の数直線上の単一の連続範囲として表される。その範囲内の点を符号化するために要求される二値小数桁は、データ流全体を記述することができる。
【００６２】
データ流を算術符号化するためのひとつの可能な技術は、単純に、符号化される各二値シンボルごとに再帰的に数直線を二等分してもよく、このとき、下側半分は一方の二値シンボルを表し、上側半分は他方の二値シンボルを表す。この可能な技術は、圧縮を生じさせない、最終的な指数的数直線範囲を要求してもよい。より単純でない技術は、数直線を等しくない範囲に分割してもよく、そこでは、符号化対象のより蓋然性の高い入来二値シンボルに対して、前もってより大きな範囲が選択されてもよい。この技術は、総じて、適応二値算術符号化として知られている。
【００６３】
適応二値算術符号化により、生じうる種々のイメージ状況について、いくつかの意味論的に知覚される確率モデルが維持されてもよい。符号化対象の入来二値シンボルに対する数直線範囲は、次いで、確率モデルに基づいて選択されてもよい。選択される範囲は既に二値化されたイメージフィーチャに依存してもよい。そのようなフィーチャは、例えば、ブロックの輝度に対する以前の誤差訂正項の大きさを含んでもよい。確率は、観測された過去のフィーチャの集合によってインデクス化されたメモリ位置において追跡されてもよい。例えば、以前に二値化された誤差項の大きさは、以下のカテゴリのうちのひとつにカテゴライズされてもよい：０、小さい正の値、小さい負の値、大きな正の値、大きな負の値。輝度誤差訂正を符号化する各新たな二値シンボルに出会うと、五つのメモリ位置のうちのひとつが選択され、各状況の統計が別個に追跡されてもよい。現在選択されているメモリ位置は、符号化対象の現在のおよび入来二値シンボルについて数直線を分割するやり方の選択を駆動してもよい。
適応的訓練確率モデル
【００６４】
本明細書で開示される発明技術は、適応的訓練確率モデルを用いる算術コーダを包含する。確率モデルは、本明細書において「統計ビン」または単に短く「ビン」と称される、メモリにおける位置を含んでもよい。本発明のある実装では、確率モデルは７２１，５６４個の統計ビンからなる。各統計ビンは、ブロック内の量子化係数の異なるタイプについて、種々の状況（すなわち、確率コンテキスト）における確率を追跡する。
【００６５】
図２は、メモリ内の統計ビン２００を模式的に示す。ビン２００は、例えば、イメージ内の７２１，５６４個の異なる状況のうちのひとつを表してもよい。ビン２００は、その状況で発生した０シンボルの数を追跡する８ビット「０」カウンタ２０２と、その状況で発生した１シンボルの数を追跡する８ビット「１」カウンタ２０４と、を含む。ビン２００は、各種類からひとつの、二つのサンプルで初期化されてもよい。０カウンタ２０２または１カウンタ２０４のいずれかがオーバフローすると、両方のカウンタ２０２および２０４が２で除され、必要であれば切り上げられる。
【００６６】
０カウンタ２０２を０カウンタ２０２と１カウンタ２０４との和で除すことにより、カウンタ２０２および２０４から推定確率２０６が算出されてもよい。次いで、数直線の各分割部分の長さが推定確率２０６に対応するよう、数直線が切断されてもよい。
【００６７】
上述のように、統計ビン２００によって表される確率コンテキストは、ＤＣＴ係数のタイプを包含してもよい。例えば、係数のひとつのタイプは、平均輝度またはサンプルブロックに亘る色を表す「ＤＣ」である。係数の他のタイプは、「ＡＣ」係数である。以下に詳述されるように、確率コンテキストはまた、ＤＣＴブロック内のＡＣ係数のインデクスを包含してもよい。
【００６８】
本発明のある実装では、各ＤＣＴ係数は、以下で詳述されるような、指数ゴロム符号または指数ゴロム様符号を伴う二値化形式で表される。統計ビン２００を用いることで、相関しうる既に符号化された係数の値を考慮しつつ、二値化形式の「１」シンボル（例えば、「１」ビット）の尤度を追跡する。
【００６９】
最初に、統計ビン２００は、１対０の５０−５０確率にそれぞれ初期化される。次いで、係数が符号化（または復号）されるにつれて、確率コンテキストのそれぞれにおいて見られる１および０の数を数え、確率が調整される。
【００７０】
ある確率コンテキストで発生した「１」シンボルが他の確率コンテキストにおける予測に影響を与えない点で、統計ビン２００は独立であってもよい。同様の確率コンテキストから有益な情報を学習できるように、統計ビンの構成数を選択する。
【００７１】
本発明のある実装では、イメージのひとつの成分の８×８サンプルブロックに対応する６４の量子化ＤＣＴ係数のブロックのそれぞれについて、７×７サブブロックにおける４９のＡＣ係数と、水平（１×７）および垂直（７×１）変化の１４の「エッジ」ＡＣ係数と、１のＤＣ係数と、が別個に符号化される。
【００７２】
本発明のある実装では、７×７サブブロックにおけるＡＣ係数について、ＡＣ係数の二値化形式のビットは、上ＤＣＴブロック、左ＤＣＴブロックおよび左上ＤＣＴブロックにおける対応するＡＣ係数を用いて予測される。例えば、二値化形式のビットのビン２００は、
2020174374.tif 000003
に基づいて選択されてもよい。ここで、iはＤＣＴブロック内のＡＣ係数のインデクスであり、Aiは上ＤＣＴブロックにおける同じインデクスの係数を表し、Liは左ＤＣＴブロックにおける同じインデクスの係数を表し、ALiは左上ＤＣＴブロックにおける同じインデクスの係数を表す。
【００７３】
本発明のある実装では、７×１エッジについて、二次元（２Ｄ）ＤＣＴの列全体がエッジ行の一次元（１Ｄ）ＤＣＴに変換される。この態様では、現在復号しているＤＣＴブロックの上端行および上のＤＣＴブロックの下端行から、ピクセル隣接１ＤＤＣＴ係数が得られる。同様に、１×７エッジについて、左側に隣接するＤＣＴブロックの最も右の列を、現在復号しているブロックの最も左側の１ＤＤＣＴ列の先のものとして用いてもよい。
【００７４】
本発明のある実装では、ＤＣ係数を予測するために、ブロックに亘るイメージ勾配は滑らかであることが仮定される。上ブロックおよび左ブロックのピクセルの最後の二つの行を線形的に外挿することで、１６のエッジピクセル値を発生させる。ＡＣ係数を用いることで、復号されたブロックのエッジピクセルと隣から外挿されたエッジとの間の平均差分を最小化する予測ＤＣオフセットを計算する。予測ＤＣ値と真のＤＣ値とのデルタ（差分）のみが符号化され、これにより近い予測は小さな出力サイズを生じさせる。ある実装では、エッジピクセルの変分およびはずれ値によって統計ビンをインデクス化することで確率モデルが非平滑勾配に適応できるようにすることで、追加的な圧縮利得が達成される。
適応的訓練算術符号化手順
【００７５】
上述のように、本発明の適応訓練算術コーダは確率モデルを含んでもよく、確率モデルはイメージの前のセクションから集められたコンテキスト情報によって適応訓練される。入来シンボルの所与の集合を符号化するとき、算術コーダは数直線を駆動するための推定確率を算出してもよい。推定確率は確率モデルの選択されたビンの現在の０カウンタおよび１カウンタに基づいて算出されてもよい。入来シンボルの所与の集合について用いるべき統計ビンは、入来シンボルの所与の集合の現在の状況に基づいて決定されてもよい。
【００７６】
図３は、本発明のある実装による、適応訓練算術符号化手順に含まれる高位操作３０２−３１４のフローチャートである。図３に示され以下に所定の順序で説明されるが、操作３０２−３１４の実行は手元の実装では重なってもよい。例えば、操作３０２−３０１４は、手元の実装において、同時に実行されてもよく、並行して実行されてもよい。したがって、ある操作（例えば、３０２）が、次の描かれたまたは説明される操作（例えば、３０４）の実行が開始可能となる前に実行完了されなければならないという要件はなく、操作が描かれる順序で開始されなければならないという要件もない。
【００７７】
総じて、操作３０２−３１４はイメージの成分の量子化係数ブロックのアレイに対して行われる。イメージが複数の成分を有する場合（例えば、カラーイメージ）、操作３０２−３１４は、各成分について別個に行われてもよく、各成分は量子化係数ブロックの別個のアレイによって表される。
量子化ＤＣＴブロック処理順序
【００７８】
操作３０２で、イメージ成分のサンプルブロックに対応する量子化係数のブロックは、残りの操作３０４−３１４における処理に対して取得される。量子化ブロックは、成分内で、左から右へ、上から下へのラスタスキャン順序で取得されてもよく、ここで、成分の四つの辺は上下左右と指定され、下は上の反対であり、左は右の反対である。処理順序のため、所与の量子化ブロックの「上」および「左」にある量子化ブロックは所与の量子化ブロックの前に処理される。したがって、所与の量子化ブロックが処理されるときには、所与のブロックについて上ブロックおよび左ブロックが利用可能である前提で、上量子化ブロックおよび左量子化ブロックを処理することによって決定される情報が利用可能である。
【００７９】
図４は、左、右、上および下の辺を有するイメージ成分４００を模式的に表す。成分のサンプルブロックに対応する量子化係数のブロックは、サンプルブロック４０２に対応する量子化ブロックから開始して、左から右、上から下の順序で処理される。所与の量子化ブロックは、対応するサンプルブロックが成分の最も左のブロック列にない場合には、左ブロックを有しうる。所与の量子化ブロックは、対応するサンプルブロックが成分の最も上のブロック行にない場合には、上ブロックを有しうる。所与の量子化ブロックは、対応するサンプルブロックが成分の最も左のブロック列になく、かつ、対応するサンプルブロックが成分の最も上のブロック列にない場合には、左上ブロックを有しうる。例えば、サンプルブロック４０４は、上ブロック４０８と、左ブロック４０６と、左上ブロック４１０と、を有する。しかしながら、ブロック４０２はこれらのブロックのいずれも有さず、これは成分内におけるそのいちのためである。
量子化係数ブロック仕訳（カテゴリ化）
【００８０】
操作３０４で、量子化係数のブロックは非二値シンボルへと仕訳（カテゴリ化）される。本発明のある実装では、量子化ブロックの量子化係数は、四つの汎用カテゴリに仕分けられる。四つの汎用カテゴリは図５に示されており、６４の量子化係数５００のブロックを模式的に示す。ブロック５００は、元の圧縮イメージから復活された量子化係数のアレイにおける６４の量子化係数のブロックのうちのひとつであってもよい。ブロック５００は６３の量子化ＡＣ係数（図５で１から６３と符号が付されている）を有してもよく、それらのいくつかまたは全ては量子化のために０値を有してもよい。ブロック５００はまた、量子化ＤＣ係数５０２（図５で６４と符号が付されている）を有してもよい。量子化ＤＣＴ係数５０２は、ブロック５００に対応するイメージの８×８サンプルブロックの全体的輝度を表してもよい。量子化ＤＣ係数の値が高いほど、対応するサンプルブロックのサンプルはより明るい。
【００８１】
ブロック５００の６３の量子化ＡＣ係数はさらに以下の三つのサブ部分にカテゴリ化されてもよい：７×７サブブロック５０４（図５で量子化ＡＣ係数に１−４９が付されている）、７×１エッジ行５０６（量子化ＡＣ係数に５０−５６が付されている）、および１×７エッジ列５０８（量子化ＡＣ係数に５７−６３が付されている）。７×１エッジ行５０６の量子化ＡＣ係数は、ＤＣから遠ざかるにつれて増大する各種周波数で生じる垂直パターンを含んでもよい。同様に、１×７エッジ列５０８の量子化ＡＣ係数は、増大する周波数の水平帯パターンを含んでもよい。７×７サブブロック５０４における量子化ＡＣ係数は、例えばビーチの小石のテクスチャや格子縞のシャツのパターンなどの、対応する８×８サンプルブロックにおける細かな詳細を表すチェッカーパターンを含んでもよい。
二値化
【００８２】
操作３０６で、量子化係数ブロックの非二値シンボルが二値化される。二値化は、非二値シンボルを、ひとつ以上の二値シンボルのシーケンス（例えば、ひとつ以上のビットのシーケンス）へ変換することを含んでもよい。
【００８３】
図６は、本発明のある実装による、所与のカテゴリ化された量子化係数ブロックの非二値シンボルのブロック二値化フォーマット６００を模式的に示す。ブロック二値化フォーマット６００は、所与のブロックの非二値シンボルを表す、ビット０で開始し、ビットＮで終わるビットシーケンス（二値シンボル）を含む。ある実装では、所与のブロックのブロック二値化フォーマット６００は、以下の非二値シンボルの二値化形式を、以下にリストされる順序で、含む。
・７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２、
・その次に、７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２以上の数であるところの、７×７サブブロック５０４からの量子化ＡＣ係数の数６０４、
・その次に、７×１エッジ行５０６における非ゼロ量子化ＡＣ係数の数６０６、
・その次に、７×１エッジ行５０６における非ゼロ量子化ＡＣ係数の数６０６以上の数であるところの、７×１エッジ行５０６からの量子化ＡＣ係数の数６０８、
・その次に、１×７エッジ列５０８における非ゼロ量子化ＡＣ係数の数６１０、
・その次に、１×７エッジ列５０８における非ゼロ量子化ＡＣ係数の数６１０以上の数であるところの、１×７エッジ列５０８からの量子化ＡＣ係数の数６１２、
・その次に、量子化ＤＣ係数５０２の予測のデルタであってもよいＤＣ誤差項６１４。
【００８４】
ある実装では、７×７サブブロック５０４における非ゼロ量子化ＡＣ係数６０２の数は０から４９の範囲（０および４９を含む）であり、フォーマット６００において数６０２の６ビットベース２符号化として二値化される。
【００８５】
所与のブロック５００を二値化する際、図７に示されるように、７×７サブブロック５０４の量子化ＡＣ係数はジグザグスキャン順序にしたがって二値化され、それは図７の符号１が付された量子化ＡＣ係数から始まり、図７の符号４９が付された量子化ＡＣ係数まで図示されるように続く。ジグザグスキャン順序は、ラスタスキャン順序で直列化する場合よりも少ない数の量子化ＡＣ係数の直列化を可能とする。これにより、エントロピーコーダが符号化すべきシンボル数が少なくなる。特に、７×７サブブロック５０４の量子化ＡＣ係数を直列化する際、メモリ内カウンタは、７×７サブブロック５０４内の非ゼロ量子化ＡＣ係数の数６０２に設定されてもよい。７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２は、所与のブロック５００を二値化する前に決定されてもよい。例えば、７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２は、元の圧縮イメージから所与のブロック５００を再生するために元の圧縮イメージを復号する際に決定されてもよい。
【００８６】
７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２が０より大きいことを仮定すると、カウンタは、７×７サブブロック５０４を通じたジグザグスキャン順序において非ゼロ量子化ＡＣ係数が二値化されるたびに、１だけ減じられる。７×７サブブロック５０４の二値化はカウンタが０に到達した後に完了してもよい。一例として、図８は、ジグザグスキャン順序における位置１、３および６に三つの非ゼロＡＣ係数を有する量子化ＡＣ係数の例示的７×７サブブロック８００を模式的に示す。非ゼロ係数の数が分かっているので、７×７サブブロック８００の直列化は、図８に示されるように３番目の非ゼロＡＣ係数が位置６で発生した後、停止してもよい。さらに、このサブブロック８００について、フォーマット６００において量子化ＡＣ係数を六つ６０４だけ二値化すればよい。特に、位置１から位置６まで（位置１、６を含む）の量子化ＡＣ係数のみを二値化すればよい。７×７サブブロック５０４における非ゼロ量子化ＡＣ係数の数６０２が０の場合、フォーマット６００において７×７サブブロック５０４の量子化ＡＣ係数６０２を二値化する必要はない。このシナリオは、７×７サブブロック５０４の量子化ＡＣ係数を破線で囲まれた箱６０４で表すことにより、図６に示されている。
【００８７】
７×１エッジ行５０６および１×７エッジ列５０８は、それぞれ、７×７サブブロック５０４と同様に二値化されてもよい。例外は、７×１エッジ行５０６における非ゼロ量子化ＡＣ係数の数６０６および１×７エッジ列５０８における非ゼロ量子化ＡＣ係数の数６１０は、０から７の範囲内（０および７を含む）の値であり、フォーマット６００において、６ビットベース２符号化の代わりに３ビットベース２符号化として二値化されることである。他の違いはこれらのエッジ係数を通じたスキャン順序は直線的であって図７に示されるようなジグザグパターンを有さないことであり、これは図７においてサブブロック７０６および７０８を通じた対応する矢印で示される。７×７サブブロック５０４と同様に、７×１エッジ行５０６または１×７サブブロック５０８における非ゼロ係数の数が０である場合、それらのブロックにおける対応する量子化ＡＣ係数の二値化は、図６の破線で囲まれた箱６０８および６１２で示されるように、不要である。
ＡＣ係数およびＤＣ誤差項二値化フォーマット
【００８８】
本発明のある実装では、各量子化ＡＣ係数６０４、６０８、６１２およびＤＣ誤差項６１４は、ブロック二値化フォーマット６００において、指数ゴロム符号で二値化され、それはユナリ長の後に直接符号ビットを置くことによって負の数まで拡張される。図９は量子化ＡＣ係数およびＤＣ誤差項のために用いられる二値化フォーマット９００を模式的に示す。フォーマット９００は、総じて、係数指数９０２と、符号ビット９０４と、残差９０６と、を含む。
【００８９】
ある実装では、係数指数９０２は、残差９０６によって表される値のビット長を表すユナリ値である。指数９０２は、ユナリ値の終わりを示すゼロ（０）ターミナルビットで終わる。
【００９０】
次に、符号ビット９０４は、残差９０６によって表される値が正の値か負の値かを表す二値の値（０または１）である。ある実装では、一（１）ビット値は正の数に対応する符号ビット９０４として用いられ、ゼロ（０）ビット値は負の数に対応する符号ビット９０４として用いられる。
【００９１】
最後に、残差９０６は、量子化ＡＣ係数およびＤＣ誤差項の値を表す二値の値である。残差９０６の先頭の、最上位の、二値の桁は省略してもよい。全ての正の数の先頭桁は１であるからである。
【００９２】
例えば、フォーマット９００によると、十進数４７は以下のビットシーケンスで表されてもよい。1111110 0 01111。この例では、残差９０６は先頭の一（１）ビットを省略する。また、この例では、指数９０２はユナリで六（６）であり、六（６）ビット（例えば、１０１１１１）を含む４７の完全な二値表現のビット長を表す。この例で分かるように、指数９０２は残差９０６から省略される先頭の一（１）ビットをカウントする。
【００９３】
ある実装では、量子化ＡＣ係数およびＤＣ誤差項がゼロ（０）である場合、フォーマット９００は使われない。代わりに、ブロックフォーマット６００において、ゼロ（０）値が単一のゼロ（０）ビットとして単純に二値化される。以下の表は、フォーマット９００にしたがい、数０から９がいかに表されるかを示す。
【表１】
2020174374.tif 000004
【００９４】
ビン選択
操作３０８で、確率モデルのビンが符号化対象の各二値シンボルについて選択される。選択は、二値シンボルが７×７サブブロック５０４や７×１エッジ行５０６や１×７サブブロック５０８やＤＣ誤差項からの非二値シンボルを二値化したか否かを含む各種状況的ファクタに依存して変わりうる。
７×７サブブロックのビン選択
【００９５】
７×７サブブロック５０４の非ゼロ係数の数６０２を符号化する六つの二値シンボルについて、上ブロックおよび左ブロックの７×７サブブロック５０４における非ゼロ係数の数６０２の平均がビンインデクスを選択するために用いられる。これは、平均のlog1.59をとることによって、０から９まで（０および９を含む）のビンインデクスにマップされる。これまで符号化された値と組み合わせて符号化されているシンボルインデクスは、平均非ゼロインデクスと組み合わされて、ビンの完全インデクスが与えられる。それまでに復号された数についての追加的情報およびシンボルインデクスは、算術コーダが４９の非ゼロより上の値に最も低い可能な確率を適応的に割り当てるのに十分である。
【００９６】
この文脈で、用語「組み合わされた」は、二つのビンインデクスのうちの一方が他方の範囲によってスケールされた後のそれら二つのビンインデクスの加算を意味するために用いられる。例えば、インデクスａが０から９までの範囲（０および９を含む）にある場合、かつ、それが他のインデクスｂと組み合わされた場合、その結果は
ａ＋１０・ｂ
として定義される。
【００９７】
上述したように、７×７係数６０４はジグザグスキャンを用いて符号化され、そのジグザグスキャンは、ラスタスキャン順序を用いて符号化した場合よりも符号化対象の係数を顕著に少なくすることを可能とし、その結果、より良い圧縮が得られる。７×７係数６０４のそれぞれについて、左ブロック、上ブロックおよび左上ブロックからの７×７ブロック５０４における同じジグザグ位置での隣接する三つの量子化係数は、それぞれ、重み１３、１３および６で平均される。これは、３２を加えつつ接するブロックの重要性をおおよそ倍にすることを可能とし、シフト動作により平均化を完了することを可能とする。重み付け平均は、残っているlog1.59非ゼロと係数インデクスとこれまで符号化された係数指数のシンボルの数と、組み合わされて、７×７量子化係数指数９０２の各ビットについての完全ビンインデクスが生成される。引き続く符号ビット９０４のビンは、現在の成分のみに基づいて、選択される。最後に、残差９０６を記述するビットのビンは、成分と、０から４８までの（０および４８を含む）係数インデクスと、残っているlog1.59非ゼロと、によって指定されるビンインデクスを用いて符号化される。
７×１エッジ行および１×７サブブロックについてのビン選択
【００９８】
７×１カテゴリはいくつかの鍵となる違いを伴う同様のビンインデクスを用いる。最初に、７×１エッジ行５０６における非ゼロ６０６の数は０から７まで（０および７を含む）であって、記述するのに３つの二値シンボルしか必要としない。ここで先立つものは、成分と７×７サブブロック５０４における非ゼロ６０２の数を７で除したものと最後に以前に復号された７×７サブブロック５０４における非ゼロの最も離れた水平座標との組み合わせである。
【００９９】
実際の量子化ＡＣ係数６０８について、u番目のインデクス左エッジＤＣＴ係数、ここで、
u ∈[1,8)
は、左に隣接するブロックからの完全マッチング行と共にそのインデクスにおける行全体の残りを用いることによって予測可能である。
【０１００】
本発明のある実装では、２ＤＤＣＴ値のu番目の行の全体は、ブロックのエッジにおける１ＤＤＣＴの対応する係数を計算するのに使用される。同じ計算を実行することで、左側に隣接するブロックのその最も右側の（７番目の）ピクセル列の１ＤＤＣＴを確立することができる。既知の過去のブロックの７番目の列の１ＤＤＣＴのu番目インデクスは、現在のブロックの最も左側の行のu番目のインデクスと似ているかそれと同じだと仮定されてもよい。全ての８つの隣接ピクセルが同じになる傾向があるからである。したがって、最終的な周波数空間値F0,uは、現在のブロックの最も左側の（０番目）列の１ＤＤＣＴの既知の部分から、左に隣接する隣接ブロックの７番目の列の１ＤＤＣＴを減じることによって、評価されてもよい。
【０１０１】
詳細には、ＤＣＴの基底要素は以下の様に表されてもよい：
【０１０２】
2020174374.tif 000005
であって、
x, u ∈[0,8)
と
2020174374.tif 000006
とを伴う。
【０１０３】
したがって、コサイン空間値Fu,v、ここで、
u, v ∈[0,8)
、は、ピクセル空間値px,yから定義されてもよく、ここで、
x, y ∈[0,8)
であるが、以下の様に表されてもよい：
【０１０４】
2020174374.tif 000007
【０１０５】
ＤＣＴは、それが直交するように定義されてもよい。したがって：
【０１０６】
2020174374.tif 000008
【０１０７】
コサイン空間値Fu,vを定義する上記の式は、式の両辺に
2020174374.tif 000009
を乗じることで以下の関係を提供することによって異なるように表されてもよい。
【０１０８】
2020174374.tif 000010
【０１０９】
上記の関係は、ある列の単一の１ＤＤＣＴ係数がブロックの２ＤＤＣＴの対応する行全体から計算されてもよいよう解釈されてもよい。同様に、ある行の単一の１ＤＤＣＴ係数は、ブロックの２ＤＤＣＴの対応する列から計算されてもよい。
【０１１０】
隣接サンプルブロックの隣接行の１ＤＤＣＴ値は同様である蓋然性が高いので、u番目のエッジ値Fu,0は以下の関係によって表されうる。以下の関係では、Fu,vは、位置u, vにおける２ＤＤＣＴ係数を表し、Au,vは、以下の位置における２ＤＤＣＴ係数を表す。
【０１１１】
2020174374.tif 000011
【０１１２】
Fu,0を予測する際、以下の関係の指数は指数のビンインデクスとして入力される。
【０１１３】
2020174374.tif 000012
【０１１４】
予測値の指数のそのビンインデクスは、成分と、行に残る非ゼロの数と、係数インデクスと、指数の現在のユナリビットのインデクスと、と組み合わせられる。予測の符号もまたFu,0の符号のビンインデクスとして用いられ得る。その値は、一般に、残差値の最初の７ビットを予測するために役に立つ。したがって、最初の７ビットについて、ビンインデクスは、成分および量子化係数の指数に加えて、予測されたFu,0の７つの最上位ビットを含む。
【０１１５】
水平７×１列に適用された上述のものと同様の技術が、量子化係数の垂直１×７行にも適用されてもよい。
ＤＣ誤差項を予測するためのビン
【０１１６】
６３のＡＣ係数が分かると、予測対象の最後の要素はＤＣ係数である。ＤＣ係数を直接符号化する代わりに、予測が行われる。ＤＣ誤差項として知られるＤＣ係数と予測との間の差分（デルタ）が代わりに符号化される。ＤＣ誤差項は、予測の確からしさに対応するビンインデクスで符号化されてもよい。
【０１１７】
ＤＣ誤差項のビンインデクスは、最大予測と最小予測との間の差分のlog2の組み合わせとして、平均から最も遠い予測のlog2と共に設定されてもよい。平均から最も遠い予測の符号はまた、ＤＣ誤差項の符号ビットのただひとつのビンインデクスとして用いられてもよい。最後に、ＤＣ誤差項の残差は、確率を蓄積するためのそのビンインデクスがカウントされるにつれて、最大予測と最小予測との間の差分の長さのみを用いてもよい。
【０１１８】
図３に戻り、操作３１０で、符号化対象の二値シンボルについて選択されたビンから、現在の推定確率を算出する。符号化対象の二値シンボルについて選択されたビンから推定確率を算出するために、選択されたビンの現在の０カウンタを、現在の０カウンタと現在の１カウンタとの和で除してもよい。あるいはまた、選択されたビンの現在の１カウンタがその和で除されてもよい。いずれにせよ、推定確率は、符号化対象の二値シンボルが０シンボルまたは１シンボルである確率を表し、１引く推定確率は符号化対象の二値シンボルが０シンボルまたは１シンボルの他方である確率を表す。推定確率を用いることで、二値シンボルを算術符号化する際の、現在の間隔の比例的サブ間隔を特定することができる。
【０１１９】
操作３１２で、二値シンボルは、選択されたビンの現在の推定確率に基づいて算術符号化される。推定確率は、現在の二値シンボルが「０」または「１」である確率を供給してもよい。推定確率から、現在の二値シンボルが「０」または「１」の他方である確率を決定することができる。これら二つの推定確率を用いることで、「０」二値シンボルおよび「１」二値シンボルに対応する二つのサブ範囲を決定することができ、二つのサブ範囲は算術コーダが現在の二値シンボルを符号化するために用いるものである。
【０１２０】
基本的に、操作３１２で二値シンボルを算術符号化することは、現在の間隔から始まってもよい。符号化される最初の二値シンボルについて、現在の間隔は[0, 1)に初期化される。次いで、現在の間隔は二つのサブ間隔にサブ分割され、一方のサブ間隔は「１」シンボルのためのものであり、他方のサブ間隔は「０」シンボルのためのものである。現在の間隔のサブ分割は符号化されている二値シンボルについて計算された推定確率に基づく。特に、「１」シンボルのサブ間隔のサイズと、「０」シンボルのサブ間隔のサイズと、は、そのシンボルが符号化されている二値シンボルである推定確率に比例する。符号化されている二値シンボルに対応するサブ間隔が選択され、そのサブ間隔が、符号化対象の次の二値シンボルがあるならばそれの新たな現在の間隔となる。推定確率に基づいて現在の間隔の両方のサブ間隔を算出する代わりに、符号化されている二値シンボルに対応するサブ間隔のみが算出されてもよい。符号化される最後の二値シンボルに対応する最後のサブ間隔は、次いで、それを他の全ての可能な最後の間隔と区別するのに十分なビットで表される。
【０１２１】
操作３１４で、確率モデルの選択されたビンは更新される。例えば、所与の二値シンボルについてビンが選択され、その二値シンボルの値が「０」である場合、選択されたビンの０カウンタが増大される。したがって、そのビンが次に選択されるとき、「０」の確率は少し高くなる。
【０１２２】
ＤＣ誤差項
本発明のある実装では、ＤＣ係数の予測が算出され、実際のＤＣ係数と予測との間の差分（ＤＣ誤差項）が符号化される。実際のＤＣ係数の代わりにＤＣ誤差項を符号化することによって、さらなる圧縮が達成される。実際のＤＣ係数は、解凍中、予測を再度生成し、それをさらに圧縮されたイメージにおいて符号化されているＤＣ誤差項と組み合わせることによって、復元されうる。
【０１２３】
目標は、予測と実際のＤＣ係数との間の数値的差分を最小化する正確な予測を生成することである。総じて、差分が小さいほど（すなわち、予測が正確なほど）、さらに圧縮されたイメージにおいてその差分を符号化するのに必要なビット数が少なくなる。平均で、ＤＣ係数の符号化は、元の圧縮イメージの全データサイズの約８％ほどを占めうる。したがって、元のエントロピーエンコーダの予測よりも平均でより正確な予測を生成することは、かなりの追加的な圧縮を生む可能性がある。
【０１２４】
総じて、二つの異なる予測手法が提供される。第１の予測手法は、本明細書において「ローカル輝度予測」と称される。第２の予測手法は、本明細書において「ローカル勾配予測」と称される。両方の手法は、総じて、成分のターゲット量子化ＤＣＴブロックに対応するサンプルブロックにおけるサンプルと、同じ成分のターゲット量子化ＤＣＴブロックの上の量子化ＤＣＴブロックに対応するサンプルブロックにおける隣接サンプルと、同じ成分のターゲット量子化ＤＣＴブロックの左の量子化ＤＣＴブロックに対応するサンプルブロックにおける隣接サンプルと、に基づく。
【０１２５】
ターゲットサンプルブロックが成分のブロックの最初の行に対応するために上のサンプルブロックが利用可能でない場合、予測はターゲットサンプルブロックおよび左のサンプルブロックのサンプルのみに基づいてもよい。ターゲットサンプルブロックが成分のブロックの最初の列に対応するために左のサンプルブロックが利用可能でない場合、予測はターゲットサンプルブロックおよび上のサンプルブロックのサンプルのみに基づいてもよい。ターゲットサンプルブロックが成分の左上ブロックに対応するために上ブロックおよび左ブロックのいずれも利用可能でない場合、ある実装では、予測は生成されない。
【０１２６】
ある実装では、上サンプルブロックおよび左サンプルブロックの一方または両方が利用可能でない場合、異なる予測手法が用いられるか、または予測は行われない。より一般的には、本明細書で説明されるローカル輝度予測手法およびローカル勾配予測手法が、他の量子化ＤＣ係数予測手法の代わりに、またはそれと連携して、用いられてもよい。さらに、異なるターゲット量子化ＤＣＴブロックについて異なる予測手法が用いられてもよい。例えば、追加的な処理は、所与のターゲット量子化ＤＣＴブロックについて、ローカル勾配予測手法よりも、ローカル輝度予測手法または他の手法のほうがより適切である（例えば、より正確な予測を行うと推定される）と判定し、その所与のブロックについてローカル勾配予測手法を用いる代わりに、その予測手法を用いることでその所与のブロックについて予測を生成してもよい。
【０１２７】
ある実装では、所与のブロックについて複数の予測手法を用いることで複数の予測を生成し、最も正確であると推定された予測を所与のブロックのものとして用いる。例えば、所与のブロックについてローカル輝度予測手法およびローカル勾配予測手法の両方を用いてもよく、最も正確であると推定された予測を所与のブロックの予測として用いてもよい。
【０１２８】
用語「上」および「左」は、成分の量子化ＤＣＴブロックがＤＣＴベースのエンコーダによって処理される順序によって定義される。総じて、処理順序は、成分内で、左から右へ、および上から下へであり、ここで、成分の四つの辺は上下左右と指定され、下は上の反対であり、左は右の反対である。処理順序のため、成分のターゲット量子化ＤＣＴブロックの「上」にある（すなわち、成分の上により近い）、その成分の量子化ＤＣＴブロックおよび成分のターゲット量子化ＤＣＴブロックの左にある、その成分の量子化ＤＣＴブロックが、ターゲット量子化ＤＣＴブロックの前に処理される。したがって、ターゲット量子化ＤＣＴブロックが処理されるときには、ターゲットブロックについて上ブロックおよび左ブロックが利用可能である前提で、上量子化ＤＣＴブロックおよび左量子化ＤＣＴブロックを処理することによって決定される情報が利用可能である。
ローカル輝度予測手法
【０１２９】
ローカル輝度予測手法は、予測として、ターゲットサンプルブロックと上サンプルブロックおよび左サンプルブロックの両方との間のエッジにおける１６個全てのサンプルペアの間の差分を最小化する全体的な輝度を算出する。これは図１０に示される。示されるように、ターゲット８×８サンプルブロック１００２は、サンプルT0,0からT0,7までを含む最も左のサンプル列を有する。ここで、文字「T」はターゲットサンプルブロック１００２のサンプルを指すために用いられ、「X, Y」はターゲットブロック１００２のＸ番目の列およびＹ番目の行のサンプルを指すために用いられる整数である。ターゲットブロック１００２はまた、サンプルT0,0からT7,0までを含む上端のサンプル行を有する。ターゲットブロック１００２の残りのセルもまたサンプルを有するが、図１０では、より明確な例を提供するためにそれらに符号は付されない。同様に、左ブロック１００４は、サンプルL7,0からL7,7までを含む最も右のサンプル列を有する。ここで、文字「L」は左サンプルブロック１００４のサンプルを指すために用いられる。同様に、上ブロック１００６は、サンプルA0,7からA7,7までを含む下端のサンプル行を有する。ここで、文字「A」は上サンプルブロック１００６のサンプルを指すために用いられる。ターゲットブロック１００２と同様に、左ブロック１００４および上ブロック１００６もまたその残りのセルにサンプルを有するが、それらには図１０では明示的に符号が付されない。
【０１３０】
図１１を参照すると、それは本発明のある実装に係る、成分のターゲット量子化ＤＣＴブロックの量子化ＤＣ係数の予測を生成するための、ローカル輝度予測手法の高位操作のフローチャート１１００である。総じて、操作１１０２、１１０４、１１０６、１１０８および１１１０は成分の各ターゲット量子化ＤＣＴブロックに対して行われてもよく、該各ターゲット量子化ＤＣＴブロックについて、その成分の上量子化ＤＣＴブロックおよび左量子化ＤＣＴブロックが処理順序で利用可能である。明確な例を提供するために、手法の操作は図１０に関して以下に説明される。手法は、手元の実装の要件にしたがい、ソフトウエアやハードウエアやソフトウエアとハードウエアとの組み合わせで実装されてもよい。
【０１３１】
操作１１０２で、ターゲットサンプルブロック１００２、左サンプルブロック１００４および上サンプルブロック１００６が取得される。ターゲットサンプルブロック１００２はターゲット量子化ＤＣＴブロックに対応する逆量子化されたＤＣＴブロックに逆ＤＣＴを適用することによって取得されてもよく、ここで、ＤＣ係数は、逆ＤＣＴが適用される先の対応する逆量子化されたＤＣＴブロックにおける所定のダミー値に設定される。ある実装では、ＤＣ係数の所定のダミー値はゼロ（０）である。この入力での逆ＤＣＴの出力はターゲットサンプルブロック１００２である。対応する逆量子化されたＤＣＴブロックは、ターゲット量子化ＤＣＴブロックの量子化ＤＣＴ係数を逆量子化することによって、ターゲット量子化ＤＣＴブロックから取得されてもよい。逆量子化は、元々ターゲットＤＣＴブロックを量子化するために用いられたのと同じか同等の量子化テーブルに基づいてもよい。ＤＣ係数は逆ＤＣＴに入力される対応する逆量子化されたＤＣＴブロックにおける所定のダミー値に設定されるが、これは予測が行われていることを表すため、かつ、復号中または解凍中の逆係数プリプロセッサにとってターゲット量子化ＤＣＴブロックの実際の量子化ＤＣ係数へのアクセスは利用可能でないからである。
【０１３２】
ある実装では、逆ＤＣＴによるサンプル出力を最初逆レベルシフトすることで、ターゲットサンプルブロック１００２を、ターゲットサンプルブロック１００２の各サンプルが符号無し整数を表すＮビット値となるように、生成する。ここで、Ｎは例えば２、４、８、１０または１２であってもよい。
【０１３３】
左サンプルブロック１００４および上サンプルブロック１００６は、同様に逆ＤＣＴを対応する逆量子化されたＤＣＴブロックに適用することによって、取得されてもよい。しかしながら、左サンプルブロック１００４および上サンプルブロック１００６について、逆量子化されたＤＣ係数は、逆ＤＣＴに入力される対応する逆量子化されたＤＣＴブロックにおいて維持される。これらの逆量子化されたＤＣ係数はターゲット量子化ＤＣＴブロックでなされたようにダミー値に設定されることはない。これらの係数は、ターゲット量子化ＤＣＴブロックが処理順序で処理されるときまでには逆係数プリプロセッサに利用可能であるからである。ターゲットブロック１００２のサンプルと同様に、逆ＤＣＴによって出力される左ブロック１００４および上ブロック１００６のサンプルもまた最初に逆レベルシフトされてもよい。
【０１３４】
操作１１０４で、ターゲットサンプルブロック１００２と左サンプルブロック１００４および上サンプルブロック１００６のそれぞれとの間のエッジに沿ってサンプル差分が算出され、全部で十六（１６）のサンプル差分が得られる。特に、ある実装では、以下の十六（１６）のサンプル差分が算出されてもよい：
【表２】
2020174374.tif 000013
【０１３５】
上の表のＡＢＳは差分の絶対値を指す。
【０１３６】
操作１１０６で、十六（１６）の差分の平均が計算される。
【０１３７】
操作１１０８で、十六（１６）の差分のうち、操作１１０６で算出された平均から最も遠いひとつ以上が、予測を行う目的で、廃棄される。ある実装では、固定数のはずれ値が特定される。例えば、十六（１６）の差分のうち、平均から最も遠い八つ（８）がはずれ値として特定され、廃棄されてもよい。
【０１３８】
操作１１１０で、操作１１０８ではずれ値を廃棄した後に残っている差分の平均を算出する。算出された平均は、ターゲット量子化ＤＣＴブロックの量子化ＤＣ係数の予測として用いられる。
【０１３９】
ローカル輝度予測アプローチの変形例では、左の境界および上の境界に沿った十六（１６）個のサンプルペアのそれぞれの平均が計算される。例えば、１６個の平均のうちのひとつは左の境界に沿ったサンプルペア{T7,3}、{T0,3}の平均でありうる。次いで、１６個の平均のメジアンが計算され、そのメジアンに最も近い八つの平均の平均が計算され予測として用いられる。このとき、メジアンからより遠い八つの平均は無視される。
【０１４０】
ローカル輝度予測アプローチまたはその変形例は、イメージが、ターゲットサンプルブロック１００２と左サンプルブロック１００４および上サンプルブロック１００６のそれぞれとの間の境界において急なエッジを有する場合に、より正確な予測を行うことができる。しかしながら、多くのイメージは、サンプルブロックエッジ境界と交差する滑らかな勾配を有する。例えば、日没の写真イメージは、空が水平線において青からオレンジへと徐々に移り変わるイメージであって、サンプルブロックエッジ境界と交差する滑らかな勾配を有しうる。滑らかな勾配を有するイメージについてより正確な予測を行うために、ローカル勾配予測アプローチが用いられてもよい。
ローカル勾配予測手法
【０１４１】
ローカル勾配予測手法は、サンプルブロックにおける隣接サンプルのペアの間の差分（すなわち、勾配）の独立性を利用し、それはサンプルブロックの輝度と独立している。したがって、ターゲットサンプルブロックの勾配を用いることで、ターゲット量子化ＤＣＴブロックの量子化ＤＣ係数の予測を計算することができる。ある実装では、左のサンプルブロックおよび上のサンプルブロックからの境界勾配もまた、予測を計算するために用いられる。これは図１２Ａに示される。示されるように、ターゲット８×８サンプルブロック１２０２は、二つの最も左の垂直列１２１０と、二つの上端の水平行１２１２と、を有する。左の８×８サンプルブロック１２０４は、ターゲットブロック１２０２の垂直列１２１０と境界を接する二つの最も右側の垂直列１２０８を有する。上の８×８サンプルブロック１２０６は、ターゲットブロック１２０２の水平行１２１２と境界を接する二つの下端の水平行１２１４を有する。
【０１４２】
総じて、ローカル勾配予測手法は、左ブロック１２０４の水平勾配とターゲットブロック１２０２の対応する水平勾配との間の差分を算出し、かつ、上ブロック１２０６の垂直勾配とターゲットブロック１２０４の対応する垂直勾配との間の差分を算出する。ここで、左ブロック１２０４の水平勾配は左ブロック１２０４の最も右側の列１２０８のサンプルの間の差分として算出され、上ブロック１２０６の垂直勾配は上ブロック１２０６の下端の行１２１４のサンプルの間の差分として算出され、ターゲットブロック１２０２の水平勾配はターゲットブロック１２０２の最も左側の列１２１０のサンプルの間の差分として算出され、ターゲットブロック１２０２の垂直勾配はターゲットブロック１２０２の上端の行１２１２のサンプルの間の差分として算出される。
【０１４３】
対応する勾配の間の各差分は勾配差分としてとられる。勾配差分は、エッジに向けた対応する勾配の向きおよび大きさに依存する正の値または負の値であり、またはその向きおよび大きさが等しい場合はゼロである。したがって、同じまたは同様の向きおよび大きさを有する対応する勾配は互いに相殺する傾向にある。しかしながら、イメージは滑らかな勾配を有する傾向にある。勾配差分の正または負（すなわち、非ゼロ）の値はこれを反映する。これは図１２Ｂに示される。影付き矢印１２１６は、左ブロック１２０４とターゲットブロック１２０２との間のエッジに向けた左ブロック１２０４における水平勾配を表し、影付き矢印１２１８は、左ブロック１２０４とターゲットブロック１２０２との間のエッジに向けたターゲットブロック１２０２における対応する水平勾配を表す。ここで、水平勾配１２１６は、左ブロック１２０４とターゲットブロック１２０２との間のエッジに向けた、サンプルL6,1およびL7,1（例えば、L6,1引くL7,1）の間の差分として算出されてもよく、対応する水平勾配１２１８は、そのエッジに向けた、サンプルT1,1およびT0,1（例えば、T1,1引くT,01）の間の差分として算出されてもよい。図１２Ｃにおいて、影付き矢印１２２０は、上ブロック１２０６とターゲットブロック１２０２と間のエッジに向けた上ブロック１２０６における垂直勾配を表し、影付き矢印１２２２は、そのエッジに向けたターゲットブロック１２０２における対応する垂直勾配を表す。
【０１４４】
勾配（例えば、１２１６）が負の値である場合、勾配を算出するために区別されたサンプルにおいてエッジに向けて成分の強度が増大する。逆に、勾配が正の値である場合、区別されたサンプルにおいてエッジに向けて成分の強度が減少する。勾配がゼロである場合、成分は区別されたサンプルにおいてエッジに向けて一定の強度を有する。
【０１４５】
上述のように、勾配とその反対の勾配との間の差分は勾配差分としてとられてもよい。ある実装では、量子化ＤＣ係数の実際のローカル勾配予測は全ての十六（１６）の勾配差分の平均として算出される。ローカル勾配予測は平均で、ローカル輝度アプローチによって生成される予測よりも正確である。これは、平均で、イメージは、サンプルブロック境界における急なエッジよりも、サンプルブロック境界を交差する滑らかな勾配をより多く有するからである。
【０１４６】
図１３を参照すると、それは本発明のある実装に係る、成分のターゲット量子化ＤＣＴブロックの量子化ＤＣ係数の予測を生成するための、ローカル勾配予測手法の高位操作のフローチャート１３００である。総じて、操作１３０２、１３０４、１３０６、１３０８および１３１０は成分の各ターゲット量子化ＤＣＴブロックに対して行われてもよく、該各ターゲット量子化ＤＣＴブロックについて、その成分の上量子化ＤＣＴブロックおよび左量子化ＤＣＴブロックが処理順序で利用可能である。明確な例を提供するために、手法の操作は図１２Ａに関して以下に説明される。手法は、係数プリプロセッサおよび逆係数プリプロセッサによって実装されてもよく、手元の実装の要件にしたがい、ソフトウエアやハードウエアやソフトウエアとハードウエアとの組み合わせで実装されてもよい。
【０１４７】
操作１３０２で、ターゲットサンプルブロック１２０２、左サンプルブロック１２０４および上サンプルブロック１２０６が取得される。これらのブロックは、ローカル輝度予測手法の操作１１０２でブロック１００２、１００４および１００６が取得されるのと同じやりかたで取得されてもよい。逆ＤＣＴは、対応する逆量子化されたＤＣＴブロックに適用されてもよい。操作１１０２と同様に、ターゲットブロック１２０２に対応する逆量子化されたＤＣＴブロックのＤＣ係数は、ＤＣ係数にダミー値を有する逆量子化されたＤＣＴブロックに逆ＤＣＴが適用される前に、ダミー値、例えばゼロ（０）に設定される。また、操作１１０２と同様に、左ブロック１２０４および上ブロック１２０６に対応する逆量子化されたＤＣＴブロックのＤＣ係数は、逆ＤＣＴを行う前に置き換えられることはない。
【０１４８】
操作１３０４で、三十二（３２）のエッジ勾配が以下の表で規定されるように算出される。各勾配は有向である。特に、水平勾配の場合、左ブロック１２０４とターゲットブロック１２０２との間のエッジに向けてであり、垂直勾配の場合、上ブロック１２０６とターゲットブロック１２０２との間のエッジに向けてである。
【表３】
2020174374.tif 000014
【０１４９】
上の表の勾配のそれぞれは、勾配がエッジに向けて増大するか（負の値）、またはエッジに向けて減少するか（正の値）、または一定に維持されるか（ゼロ）に依存してゼロまたは正の値または負の値である。
【０１５０】
操作１３０６で、対応する勾配の間の差分は、以下の表で規定されるように、十六（１６）の勾配差分として算出される。
2020174374.tif 000015
【０１５１】
上の表で、水平勾配および垂直勾配は操作１３０４の一部として算出される。各勾配差分は、対応する勾配が同等に反対でなければ正の値または負の値であり、同等に反対であればゼロである。
【０１５２】
操作１３０８で、十六（１６）の勾配差分の和が計算される。
【０１５３】
操作１３１０で、操作１３０８で算出された和の平均が算出される。算出された平均は、ターゲット量子化ＤＣＴブロックの量子化ＤＣ係数の予測として用いられてもよい。
【０１５４】
上述したようないくつかの実装では、対応する逆量子化されたＤＣ係数ではなく量子化されたＤＣ係数についての予測が算出されたが、ある実装では、対応する量子化ＤＣ係数ではなく逆量子化されたＤＣ係数についての予測が算出される。両方の場合で、予測は、逆ＤＣＴによってサンプルに変換される逆量子化されたＤＣＴ係数に基づいて同じように算出されることを注意しておく。予測が逆量子化されたＤＣ係数についてのものである場合、実際の逆量子化されたＤＣ係数は逆係数プリプロセッサによって、それ自身が生成した予測と、さらに圧縮されたイメージに符号化されているデルタと、を組み合わせることによって復元されてもよい。いずれにせよ、ＤＣ係数を量子化するのに典型的に用いられる小さな量子化ステップサイズのため、予測は十分に正確である。
９．１  基本的なコンピューティングデバイス
【０１５５】
ここで図１４を参照すると、図１４は、本発明の実施例が実施され得る基本的なコンピューティングデバイス１４００を示すブロック図である。コンピューティングデバイス１４００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のコンピューティングデバイスは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【０１５６】
コンピューティングデバイス１４００は、バス１４０２、又はメインメモリ１４０６のアドレス解決を行い、かつ、コンピューティングデバイス１４００の種々のコンポーネント間で及び種々のコンポーネントの中でデータを転送するための他の通信機構を含み得る。
【０１５７】
コンピューティングデバイス１４００はまた、情報を処理するための、バス１４０２と結合した１つ以上のハードウェアプロセッサ１４０４を含み得る。ハードウェアプロセッサ１４０４は、汎用マイクロプロセッサ、システム・オン・チップ（ＳｏＣ）、又は他のプロセッサであり得る。
【０１５８】
ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスなどのメインメモリ１４０６はまた、情報やプロセッサ１４０４によって実行されるソフトウェア命令を格納するためにバス１４０２に結合され得る。メインメモリ１４０６はまた、プロセッサ１４０４によって実行されるソフトウェア命令の実行中に一時変数又は他の中間情報を格納するために使用され得る。
【０１５９】
ソフトウェア命令は、プロセッサ１４０４へアクセス可能な記憶媒体に格納される場合、ソフトウェア命令で特定される動作を実行するように、コンピュータデバイス１４００を、カスタマイズされた特定用途のコンピューティングデバイスにする。「ソフトウェア」、「ソフトウェア命令」、「コンピュータプログラム」、「コンピュータ実行可能命令」及び「プロセッサ実行可能命令」の語は、人間が読取り可能であるかどうかを問わず、特定の動作を実行するためにコンピューティングデバイスを指示する任意の機械可読情報を含むものと広く解釈されるべきであり、これらに限定されないが、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、ジャバスクリプト、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、バーチャルマシン、リンカ、テキストエディタを含む。
【０１６０】
コンピューティングデバイス１４００はまた、静的情報及びプロセッサ１４０４のためのソフトウェア命令を格納するための、バス１４０２に結合された読み取り専用メモリ（ＲＯＭ）１４０８又は他の静的ストレージデバイスを含み得る。
【０１６１】
１つ以上の大容量ストレージデバイス１４１０は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は他の利用可能な大容量ストレージ技術などの固定又は取り外し可能な媒体に、情報及びソフトウェア命令を永続的に格納するために、バス１４０２に接続され得る。大容量ストレージは、ネットワーク上で共有され得、又は、専用の大容量ストレージであり得る。通常、大容量ストレージデバイス１４１０（例えば、デバイスに対するメインハードディスク）の少なくとも１つは、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピューティングデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【０１６２】
コンピューティングデバイス１４００は、バス１４０２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子的な視覚ディスプレイなどのディスプレイ１４１２と接続され得る。いくつかの構成では、（例えば、抵抗性、容量性等の）タッチ検知技術を組み込んだタッチ感知表面は、タッチジェスチャ（例えば指又はスタイラス）入力をプロセッサ１４０４へ通信するために、タッチ検知ディスプレイを形成するようにディスプレイ１４１２に重畳され得る。
【０１６３】
アルファベットキー及び他のキーを含む入力デバイス１４１４は、情報及びコマンドの選択をプロセッサ１４０４へ通信するためにバス１４０２へ接続され得る。アルファベットキー及び他のキーに加えて又は代わりに、インプットデバイス１４１４は、例えばパワー（オン／オフ）ボタン、「ホーム」ボタン、ボリュームコントロールボタン等の、１つ以上の物理的なボタン又はスイッチを含み得る。
【０１６４】
ユーザ入力デバイスの他の種別は、プロセッサ１４０４へ方向情報やコマンドの選択を通信するため、及び、ディスプレイ１４１２上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御１４１６であり得る。当該入力デバイスは、通常、デバイスが平面上の位置を特定できるようにする第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の二軸の２つの自由度を有する。
【０１６５】
図１４に図示された構成のような、１つ以上のディスプレイ１４１２、入力デバイス１４１４、及びカーソルコントロール１４１６が、コンピューティングデバイス１４００の外部コンポーネント（すなわち周辺デバイス）であるいくつかの構成に対し、他の構成において、ディスプレイ１４１２のいくつか又は全て、入力デバイス１４１４及びカーソルコントロール１４１６は、コンピューティングデバイス１４００の形成因子の一部として統合される。
【０１６６】
ここで開示されるシステム、方法、及びモジュールの機能は、メインメモリ１４０６に含まれる１以上のソフトウェア命令の１以上のプログラムをプロセッサ１４０４が実行することに応じて、コンピューティングデバイス１４００によって実行され得る。そのようなソフトウェア命令は、ストレージデバイス１４１０などの他の記憶媒体からメインメモリ１４０６へと読み込まれ得る。メインメモリ１４０６に含まれるソフトウェア命令の実行は、プロセッサ１４０４に実施例の機能を発揮させる。
【０１６７】
実施例の機能及び動作がコンピューティングデバイス１４００のソフトウェア命令を用いて全体的に実施される一方、ハードワイヤード又はプログラマブル回路（例えばＡＳＩＣ、ＦＰＧＡ等）が、目下の実装の要件に従って、他の実施形態において適所で又は機能を発揮するためのソフトウェア命令との組み合わせで用いられ得る。
【０１６８】
ここで使用される"記憶媒体"の語は、コンピューティングデバイスを特定の様式で動作させるデータ及びソフトウェア命令の少なくとも１つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えてもよい。不揮発性媒体は、ストレージデバイス１４１０などの、例えば、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、光学ディスク、磁性ディスク、又は半導体ドライブを含む。揮発性媒体はメインメモリ１４０６などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライブ、磁性テープ若しくは任意の他の磁性データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、ホールのパターン（空孔）を複数有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ及びＥＰＲＯＭ、フラッシュＥＰＲＯＭ、ＮＶＲＡＭ、フラッシュメモリ、任意の他のメモリチップ、又はカートリッジを含む。
【０１６９】
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用され得る。送信媒体は、記憶媒体間で情報を転送することに使用される。例えば、送信媒体は、バス１４０２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【０１７０】
媒体の種々の形態は、実行のためにプロセッサ１４０４への１以上のソフトウェア命令の１以上のシーケンスの伝達に用いられ得る。例えば、ソフトウェア命令は、リモートコンピュータの磁性ディスク又は半導体ドライブ上でまず伝達され得る。リモートコンピュータは、その動的メモリへソフトウェア命令をロードし、モデムを用いて電話線を介してソフトウェア命令を送信し得る。コンピューティングデバイス１４００のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するための赤外線送信機を用い得る。赤外線検出機は赤外線信号で運搬されたデータを受信することができ、適切な回路がそのデータをバス１４０２に乗せる。バス１４０２は、プロセッサ１４０４がソフトウェア命令を読み出して実行するメインメモリ１４０６にデータを運搬する。メインメモリ１４０６によって受信されるソフトウェア命令は、プロセッサ１４０４によって実行される前又は実行された後の何れかにストレージデバイス１４１０に選択的に格納され得る。
【０１７１】
コンピューティングデバイス１４００はまた、バス１４０２へ接続される通信インタフェース１４１８を含み得る。通信インタフェース１４１８は、ローカルネットワーク１４２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク等）へ接続された、有線又は無線のネットワークリンク１４２０へ接続する双方向データ通信を提供する。通信インタフェース１４１８は、種々の種別の情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース１４１８は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）であり得る。
【０１７２】
ネットワークリンク１４２０は、通常、１以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク１４２０は、ローカルネットワーク１４２２を通じて、ホストコンピュータ１４２４への又はインターネットサービスプロバイダ（ＩＳＰ）１４２６によって運用されるデータ装置への接続を提供し得る。ＩＳＰ１４２６は順に、「インターネット」１４２８として通常参照されるワールド・-ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク１４２２及びインターネット１４２８は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピューティングデバイス１４００への及びコンピューティングデバイス６００からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク１４２０上の、及び通信インタフェース１４１８を通じた信号は、送信媒体の例示の形式である。
【０１７３】
コンピュータシステム１４００は、ネットワーク、ネットワークリンク１４２０、及び通信インターフェース１４１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信し得る。例えば、サーバ１４３０は、インターネット１４２８、ＩＳＰ１４２６、ローカルネットワーク１４２２、及び通信インターフェース１４１８を通じて、アプリケーションプログラムに対して要求されるコードを送信してもよい。
【０１７４】
受信コードは、受信した際にプロセッサ１４０４によって実行されてもよく、及び、後の実行のためにストレージデバイス１４１０又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われ得る。
９．２  基本的なソフトウェアシステム
【０１７５】
図１５は、コンピューティングデバイス１４００の動作を制御する、採用され得る基本的なソフトウェアシステム１５００のブロック図である。ソフトウェアシステム１５００と、それらの接続、関係及び機能を含むそのコンポーネントとは、例示のみを意味し、実施例の実装を限定することを意味するものではない。実施例を実装するのに適切な他のソフトウェアシステムは、異なる接続、関係及び機能を有するコンポーネントを含む異なるコンポーネントを有し得る。
【０１７６】
ソフトウェアシステム１５００は、コンピューティングデバイス１４００の動作を方向付けるために提供される。システムメモリ（ＲＡＭ）１４０６及び固定ストレージ（例えば、ハードディスク）１４１０に格納され得るソフトウェアシステム１５００はカーネル又はオペレーティングシステム（ＯＳ）１５１０を含む。
【０１７７】
ＯＳ１５１０は、プロセス、メモリ配置、ファイル入力及び出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。１５０２Ａ, １５０２Ｂ, １５０２Ｃ ... １５０２Ｎとして表される１以上のアプリケーションプログラムは、システム１５００による実行のために"ロードされ"うる（例えば、固定ストレージ１４１０からメモリ１４０６へ転送される）。アプリケーション又はデバイス１５００上での使用を意図した他のソフトウェアはまた、ダウンロード可能なコンピュータで実行可能な命令のセットとして、例えば、インターネット上の場所（例えば、ウェブサーバ、アップストア又はオンラインサービス）からダウンロード及びインストールするために格納され得る。
【０１７８】
ソフトウェアシステム１５００は、グラフィカルな（例えば、「ポイント・アンド・クリック」又は「タッチジェスチャ」）形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース（ＧＵＩ）１５１５を含む。これらの入力は順に、オペレーティングシステム１５１０及びアプリケーションプログラム１５０２の少なくとも１つからの命令に従ってシステム１５００によって作動され得る。ＧＵＩ１５１５はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする（例えば、ログオフする）とすぐに、ＯＳ１５１０及びアプリケーション１５０２からの動作結果を表示するように務める。
【０１７９】
ＯＳ１５１０は、デバイス１４００のベアハードウェア１５２０（例えば、プロセッサ１４０４）上で直接的に実行し得る。代替的に、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）１５３０は、ベアハードウェア１５２０及びＯＳ１５１０の間に割り込んで設けられ得る。この構成において、ＶＭＭ１５３０はデバイス１４００のＯＳ１５１０及びベアハードウェア１５２０の間のソフトウェア"クッション"又は仮想レイヤとして作動する。
【０１８０】
ＶＭＭ１５３０は、１つ以上の仮想マシンインスタンス（「ゲストマシン」）をインスタンス化し実行する。各ゲストマシンは、ＯＳ１５１０などの「ゲスト」オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーション１５０２などの１つ以上のアプリケーションとを含む。ＶＭＭ１５３０は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提供し、ゲストオペレーティングシステムの実行を管理する。
【０１８１】
いくつかの例において、ＶＭＭ１５３０は、デバイス１４００のベアハードウェア１５２０上で直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容し得る。これらの例において、ベアハードウェア１５２０上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のリビジョンはまた、修正又は再構成なしにＶＭＭ１５３０上で実行され得る。すなわち、ＶＭＭ１５３０は、いくつかの例において、ゲストオペレーティングシステムに対する完全なハードウェアとＣＰＵ仮想化とを提供し得る。
【０１８２】
他の例において、ゲストオペレーティングシステムは、効率的にＶＭＭ１５３０上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ上で実行する「気付かれるもの」である。すなわち、ＶＭＭ１５３０は、いくつかの例において、ゲストオペレーティングシステムに対して準仮想化を提供することができる。
１０．０  拡張及び代替例
【０１８３】
前述した明細書において、本発明の例示的実装について多数の特定の詳細に関して説明した。しかしながら、詳細は手元の実装の要件に従って実装ごとに変化し得る。例示的な実装は、従って、限定的な意味というよりはむしろ例示とみなされるものである。
【図１】
2020174374.tif 000016
【図２】
2020174374.tif 000017
【図３】
2020174374.tif 000018
【図４】
2020174374.tif 000019
【図５】
2020174374.tif 000020
【図６】
2020174374.tif 000021
【図７】
2020174374.tif 000022
【図８】
2020174374.tif 000023
【図９】
2020174374.tif 000024
【図１０】
2020174374.tif 000025
【図１１】
2020174374.tif 000026
【図１２Ａ】
2020174374.tif 000027
【図１２Ｂ】
2020174374.tif 000028
【図１２Ｃ】
2020174374.tif 000029
【図１３】
2020174374.tif 000030
【図１４】
2020174374.tif 000031
【図１５】
2020174374.tif 000032
【手続補正書】
【提出日】令和2年7月21日(2020.7.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ひとつ以上のプロセッサとストレージ媒体とを備える計算システムによって実行される方法であって、
デジタルイメージの符号化表現である圧縮イメージデータを取得することと、
前記圧縮イメージデータを復号することで、前記デジタルイメージのサンプルブロックを表す離散コサイン変換（ＤＣＴ）係数の少なくともひとつのブロックを取得することであって、ＤＣＴ係数の前記ブロックがＤＣ係数と複数のＡＣ係数とを含む、取得することと、
前記複数のＡＣ係数の各ＡＣ係数を、（ａ）ＤＣＴ係数の前記ブロックのＡＣ係数のうちの上エッジ行、（ｂ）ＤＣＴ係数の前記ブロックのＡＣ係数のうちの左エッジ列、または（ｃ）ＤＣＴ係数の前記ブロックのＡＣ係数のサブブロックのうちの多くてひとつの一部として分類することに少なくとも部分的に基づいて、前記複数のＡＣ係数の二値化表現の二値シンボルについての推定確率を決定することと、
前記推定確率に少なくとも部分的に基づいて前記二値シンボルを算術符号化することと、
前記算術符号化に少なくとも部分的に基づいて、前記デジタルイメージの符号化表現であるさらに圧縮されたイメージデータを格納することであって、前記さらに圧縮されたイメージデータが前記圧縮イメージデータに対して無損失であり、前記さらに圧縮されたイメージデータをストレージ媒体に格納するために、前記圧縮イメージデータによって要求されるよりも少ないバイトが要求される、格納することと、を含む方法。
【手続補正書】
【提出日】令和2年9月15日(2020.9.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のサブブロックのＡＣ係数の各サブブロックのＡＣ係数について、
前記各サブブロックのＡＣ係数を含む離散コサイン変換係数のブロックの上の離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置のサブブロックのＡＣ係数と、
前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックの左の離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置のサブブロックのＡＣ係数と、
前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックの左上の離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置のサブブロックのＡＣ係数と、
に少なくとも部分的に基づいて、前記各サブブロックのＡＣ計数についてのエントロピー符号化されたイメージデータを復号することを含む、前記複数のサブブロックのＡＣ係数を取得するためにエントロピー符号化されたイメージデータを復号することと、
取得された前記複数のサブブロックのＡＣ係数に少なくとも部分的に基づいて、デジタルイメージの複数のサンプルブロックを生成することと、
を含む方法。
【請求項２】
前記デジタルイメージをグラフィカルユーザインターフェースに表示することをさらに含む、請求項１に記載の方法。
【請求項３】
前記デジタルイメージをグラフィカルユーザインターフェースのウェブブラウザウィンドウに表示することをさらに含む、請求項１に記載の方法。
【請求項４】
前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックの上の前記離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置の前記サブブロックのＡＣ係数と、
前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックの左の前記離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置の前記サブブロックのＡＣ係数と、
前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックの左上の前記離散コサイン変換係数のブロックにおける、前記各サブブロックのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける前記各サブブロックのＡＣ係数の位置と同一位置の前記サブブロックのＡＣ係数と、
の平均に少なくとも部分的に基づいて、前記複数のサブブロックのＡＣ係数の各サブブロックのＡＣ係数についてのエントロピー符号化されたイメージデータを復号することをさらに含む、請求項１に記載の方法。
【請求項５】
複数の左エッジのＡＣ係数の各左エッジのＡＣ係数について、
前記各左エッジのＡＣ係数と同じ行に存在する、前記各左エッジのＡＣ係数を含む離散コサイン変換係数のブロックの左の離散コサイン変換係数のブロックにおける、複数のＡＣ係数と、
前記各左エッジのＡＣ係数と同じ行に存在する、前記各左エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける、複数のＡＣ係数と、
に少なくとも部分的に基づいて、前記各左エッジのＡＣ係数についてのエントロピー符号化されたイメージデータを復号することを含む、前記複数の左エッジのＡＣ係数を取得するためにエントロピー符号化されたイメージデータを復号することと、
取得された前記複数の左エッジのＡＣ係数に少なくとも部分的に基づいて、前記デジタルイメージの前記複数のサンプルブロックを生成することと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記各左エッジのＡＣ係数と同じ行に存在する、前記各左エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックの左の前記離散コサイン変換係数のブロックにおける、前記複数のＡＣ係数の各ＡＣ係数が、２次元離散コサイン変換係数であり、
前記各左エッジのＡＣ係数と同じ行に存在する、前記各左エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける、前記複数のＡＣ係数の各ＡＣ係数が、２次元離散コサイン変換係数である、請求項５に記載の方法。
【請求項７】
取得された前記複数の左エッジのＡＣ係数の各左エッジのＡＣ係数が、１次元離散コサイン変換係数である、請求項５に記載の方法。
【請求項８】
前記複数の左エッジのＡＣ係数が、複数の離散コサイン変換ブロックからのものである、請求項５に記載の方法。
【請求項９】
複数の上エッジのＡＣ係数の各上エッジのＡＣ係数について、
前記各上エッジのＡＣ係数と同じ列に存在する、前記各上エッジのＡＣ係数を含む離散コサイン変換係数のブロックの上の離散コサイン変換係数のブロックにおける、複数のＡＣ係数と、
前記各上エッジのＡＣ係数と同じ列に存在する、前記各上エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける、複数のＡＣ係数と、
に少なくとも部分的に基づいて、前記各上エッジのＡＣ係数についてのエントロピー符号化されたイメージデータを復号することを含む、前記複数の上エッジのＡＣ係数を取得するためにエントロピー符号化されたイメージデータを復号することと、
取得された前記複数の上エッジのＡＣ係数に少なくとも部分的に基づいて、前記デジタルイメージの前記複数のサンプルブロックを生成することと、
をさらに含む、請求項１に記載の方法。
【請求項１０】
前記各上エッジのＡＣ係数と同じ列に存在する、前記各上エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックの上の前記離散コサイン変換係数のブロックにおける、前記複数のＡＣ係数の各ＡＣ係数が、２次元離散コサイン変換係数であり、
前記各上エッジのＡＣ係数と同じ列に存在する、前記各上エッジのＡＣ係数を含む前記離散コサイン変換係数のブロックにおける、前記複数のＡＣ係数の各ＡＣ係数が、２次元離散コサイン変換係数である、請求項９に記載の方法。
【請求項１１】
取得された前記複数の上エッジのＡＣ係数の各上エッジのＡＣ係数が、１次元離散コサイン変換係数である、請求項９に記載の方法。
【請求項１２】
前記複数の上エッジのＡＣ係数が、複数の離散コサイン変換ブロックからのものである、請求項９に記載の方法。
【請求項１３】
ＤＣ係数のターゲットサンプルブロックの上のサンプルブロックの下２行における複数のサンプル値と、
前記ターゲットサンプルブロックの左のサンプルブロック係数の右端２列における複数のサンプル値と、
前記ターゲットサンプルブロックの上２行における複数のサンプル値と、
前記ターゲットサンプルブロックの左端２列における複数のサンプル値と、
に少なくとも部分的に基づいて、前記ＤＣ係数を取得するためにエントロピー符号化されたイメージデータを復号することと、
取得された前記ＤＣ係数に少なくとも部分的に基づいて、前記デジタルイメージの前記複数のサンプルブロックを生成することと、
をさらに含む、請求項１に記載の方法。
【請求項１４】
複数の前記ＤＣ係数の各ＤＣ係数について、
前記各ＤＣ係数の前記ターゲットサンプルブロックの上の前記サンプルブロックの下２行における前記複数のサンプル値に少なくとも部分的に基づいて第１の複数の画像勾配を計算することと、
前記各ＤＣ係数の前記ターゲットサンプルブロックの上２行における前記複数のサンプル値に少なくとも部分的に基づいて、前記第１の複数の画像勾配の反対方向における、第２の複数の画像勾配を計算することと、
前記各ＤＣ係数の前記ターゲットサンプルブロックの左の前記サンプルブロック係数の右端２列における前記複数のサンプル値に少なくとも部分的に基づいて第３の複数の画像勾配を計算することと、
前記各ＤＣ係数の前記ターゲットサンプルブロックの左端２列における前記複数のサンプル値に少なくとも部分的に基づいて、前記第３の複数の画像勾配の反対方向における、第４の複数の画像勾配を計算することと、
に少なくとも部分的に基づいて、前記各ＤＣ係数についてのエントロピー符号化されたイメージデータを復号することを含む、前記複数のＤＣ係数を取得するためにエントロピー符号化されたイメージデータを復号することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記デジタルイメージはＩＳＯ/ＩＥＣ  １０９８１−１：１９９４の全ての要件に準拠した形式で圧縮される、請求項１乃至１４の何れか一項に記載の方法。
【請求項１６】
請求項１乃至１５の何れか一項に記載される方法を行うように構成される命令を含む、１つ以上のプロセッサ及び記憶媒体を含むシステムによって実行されるプログラム。
【請求項１７】
１つ以上のプロセッサと、
記憶媒体と、
請求項１乃至１５の何れか一項に記載される方法を行うように構成される命令を含む、前記記憶媒体に格納され前記１つ以上のプロセッサによって実行されるために構成される、１つ以上のプログラムと、
を含む、システム。
【外国語明細書】
2020174374000001.pdf