(57)【特許請求の範囲】
【請求項１】
第１メモリ（１０５）からデジタル画像（１１０）の一部を表す画素ブロック（１１５）内の画素値を取得することと、
サムネイル画像（１６０）内のデスティネーション画素の部分値を第２メモリ（１６３）から取得することであって、前記デスティネーション画素の部分値は、前記デスティネーション画素の最終値に寄与する、ことと、
前記画素値を同時に圧縮して圧縮画像（１４０）を生成し、前記デスティネーション画素のスケーリングウィンドウ（４２０）と重複する前記ブロックの一部に基づいて前記部分値を変更することと、
前記変更された部分値を前記第２メモリに記憶することと、
前記圧縮画像及び前記サムネイル画像を第３メモリ（１４５）に記憶することと、を含む、
方法。
【請求項２】
前記デジタル画像の複数の部分を表す複数の画素ブロック内の画素値を繰り返し取得することと、
前記複数の画素ブロックと重複する前記スケーリングウィンドウに対応する前記サムネイル画像内の前記デスティネーション画素の部分値を取得することと、
圧縮アルゴリズムを前記画素値に同時に適用して、前記部分値をブロック毎に変更することと、をさらに含む、
請求項１の方法。
【請求項３】
前記デスティネーション画素の部分値を変更することは、前記ブロックの境界と前記スケーリングウィンドウの境界とを比較して、前記スケーリングウィンドウと重複する前記ブロックの一部を決定することを含む、
請求項１の方法。
【請求項４】
前記デスティネーション画素の部分値を変更することは、
前記スケーリングウィンドウと重複する前記ブロックの一部内の画素値を前記デスティネーション画素の位置に補間することと、
前記補間された値を前記デスティネーション画素の部分値に累積することと、を含む、
請求項３の方法。
【請求項５】
前記変更された部分値を第２メモリに記憶することは、前記スケーリングウィンドウの一部が前記ブロックの外側にあり、且つ、前記第１メモリから以前に取得されたブロックの外側にあることに応じて、前記変更された部分値を記憶することを含む、
請求項３の方法。
【請求項６】
前記デスティネーション画素の部分値を第２メモリから取得することは、前記スケーリングウィンドウが前記第１メモリから取得された画素ブロックと重複することに応じて、前記部分値を取得することを含む、
請求項１の方法。
【請求項７】
前記スケーリングウィンドウ全体が前記ブロック又は前記第１メモリから以前に取得された少なくとも１つのブロックと重複していると判別したことに応じて、前記デスティネーション画素の最終値を前記部分値と等しく設定することをさらに含む、
請求項１の方法。
【請求項８】
前記サムネイル画像を記憶することは、前記デスティネーション画素の最終値を前記第３メモリに記憶することを含む、
請求項７の方法。
【請求項９】
デジタル画像（１１０）を表す画素ブロック内の画素値を記憶する第１メモリ（１０５）と、
サムネイル画像（１６０）内のデスティネーション画素の部分値であって、前記デスティネーション画素の最終値に寄与する部分値を記憶する第２メモリ（１６３）と、
圧縮画像及びサムネイル画像を記憶する第３メモリ（１４５）と、
プロセッサ（１２０）と、を備え、
前記プロセッサは、
画素ブロック（１１５）の画素値を前記第１メモリから取得することと、
前記画素値を同時に圧縮して圧縮画像（１４０）を生成し、デスティネーション画素のスケーリングウィンドウ（４２０）と重複する前記ブロックの一部内の画素値に基づいて前記デスティネーション画素の部分値を変更することと、
前記変更された部分値を前記第２メモリに記憶することと、
前記圧縮画像及び前記サムネイル画像を前記第３メモリに記憶することと、
を行うように構成されている、
装置。
【請求項１０】
前記第１メモリ及び前記第３メモリは、制限されたメモリアクセス帯域幅によって特徴付けられたインタフェースによって前記プロセッサに接続されたシステムメモリ又はキャッシュのうち少なくとも１つであり、前記第２メモリは、前記プロセッサに関連するローカルランダムアクセスメモリ（ＲＡＭ）である、
請求項９の装置。
【請求項１１】
前記プロセッサは、
前記デジタル画像を表す前記画素ブロック内の画素値を繰り返し取得することと、
前記画素ブロックと重複する前記スケーリングウィンドウに対応する前記サムネイル画像内の前記デスティネーション画素の部分値を取得することと、
圧縮アルゴリズムを前記画素値に同時に適用して、前記部分値をブロック毎に変更することと、
を行うように構成されている、
請求項９の装置。
【請求項１２】
前記プロセッサは、前記ブロックの境界と前記スケーリングウィンドウの境界とを比較して、前記スケーリングウィンドウと重複する前記ブロックの一部を決定することを行うように構成されている、
請求項９の装置。
【請求項１３】
前記プロセッサは、
前記スケーリングウィンドウと重複する前記ブロックの一部内の画素値を前記デスティネーション画素の位置に補間することと、
前記補間された値を前記デスティネーション画素の部分値に累積することと、
を行うように構成されている、
請求項１２の装置。
【請求項１４】
前記プロセッサは、前記スケーリングウィンドウの一部が前記ブロックの外側にあり、且つ、前記第１メモリから以前に取得されたブロックの外側にあることに応じて、前記変更された部分値を記憶することを行うように構成されている、
請求項１２の装置。
【請求項１５】
前記プロセッサは、前記スケーリングウィンドウが前記第１メモリから取得された画素ブロックと重複することに応じて、前記部分値を前記第２メモリから取得することを行うように構成されている、
請求項９の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
スタンドアロンのデジタルカメラ又はスマートフォン及びタブレット等の他のデバイスに組み込まれたデジタルカメラによってキャプチャされたデジタル画像は、ＪＰＥＧ（Joint Photographic Experts Group）等の圧縮アルゴリズムを使用して圧縮することができる。デジタルカメラは、検出器のアレイを含み、検出器によって受信した光の色及び強度を表す信号を生成する。この信号は、元のデジタル画像の各画素の色及び強度を表すために、１バイト以上の情報に変換される。次に、圧縮アルゴリズムを使用して、元のデジタル画像内のブロックを圧縮する。例えば、ＪＰＥＧ圧縮アルゴリズムは、離散コサイン変換（ＤＣＴ）を適用してブロック内の画素の値を表す周波数成分を生成することによって、元のデジタル画像から画素ブロック（例えば、１６×１６最小符号化ユニット（ＭＣＵ）等）を圧縮する。人間の目は、高周波数成分に対する感度が低いため、高周波数成分を廃棄又は低周波数成分よりも低い精度で記憶することができ、これによりブロックを圧縮する。次に、ハフマン符号化等の付加的な可逆（lossless）圧縮を適用して、ブロックに関連する画像の一部を表す情報をさらに圧縮する。したがって、デジタル画像を圧縮するには、連続するブロックにおいて画像内の全ての画素をメインメモリから取得する必要がある。
【０００２】
また、元のデジタル画像は、例えばコンピュータファイリングシステムにおいて画像の視覚的表現を提供するために、アイコンとして表示するのに適したサムネイル画像を生成するためにダウンスケーリングすることができる。ダウンスケーリングは、元のデジタル画像を表す画素数を減らして、サムネイル画像を形成する。元のデジタル画像の妥当な表現を生成するために、ダウンスケーリングアルゴリズムは、元のデジタル画像内の複数の画素の補間値を組み合わせて、サムネイル画像内の各画素の値を推定する。補間アルゴリズムの例は、最近接補間、バイリニア補間、バイキュービック補間等を含む。ダウンスケーリングは、一般的に、メインメモリに記憶された元のデジタル画像から画素のラインをフェッチし、各ラインをローカル画像バッファに記憶することによって実行される。次に、補間アルゴリズムを使用して、サムネイル画像内の対応する画素に対する、バッファされたライン内の各画素の寄与度を計算する。したがって、サムネイル画像を生成するには、連続するラインにおいて画像内の全ての画素をメインメモリから取得する必要がある。
【０００３】
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、画像の圧縮及び画像のダウンスケーリングを実行してサムネイル画像を形成する処理システムのブロック図である。
【図２】いくつかの実施形態による、画像内の画素値を補間してサムネイル画像内のデスティネーション画素の値を決定するために使用されるマッピングを示す図である。
【図３】いくつかの実施形態による、単一のパスを使用して画像内のデータにアクセスし、画像圧縮及び画像のダウンスケーリングを実行してサムネイル画像を形成する処理システムのブロック図である。
【図４】いくつかの実施形態による、行及び列に編成されたＭＣＵのセットを含む画像の一部を示す図である。
【図５】いくつかの実施形態による、サムネイル画像内のデスティネーション画素に関連するスケーリングウィンドウによって重複したＭＣＵを示す図である。
【図６】いくつかの実施形態による、サムネイル画像内のデスティネーション画素に関連するスケーリングウィンドウによって重複したデータユニットのセットを含むＭＣＵを示す図である。
【図７】いくつかの実施形態による、行及び列に編成されたＭＣＵのセットに対するアクセスパターンを表す画像の一部を示す図である。
【図８】いくつかの実施形態による、複数のＭＣＵを含むスケーリングウィンドウに対応するデスティネーション画素値の部分的な累積を表す画像の一部を示す図である。
【図９】いくつかの実施形態による、同時画像圧縮及びサムネイル生成方法のフロー図である。
【図１０】いくつかの実施形態による、ブロック内の画素値に基づいてデスティネーション画素の部分値を計算して記憶する方法のフロー図である。
【発明を実施するための形態】
【０００５】
デジタルカメラ、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ等に実装される画像処理システムは、一般的に、デジタル画像のＪＰＥＧ圧縮及びデジタル画像のダウンスケーリングの両方を実行して、対応するサムネイル画像を生成する。しかしながら、従来のＪＰＥＧ圧縮及び従来のダウンスケーリングは、異なるフォーマットのデジタル画像内の画素にアクセスする。例えば、従来のＪＰＥＧ圧縮は、離散コサイン変換（ＤＣＴ）の圧縮アルゴリズムをサポートするためにブロック内の画素値にアクセスし、従来のダウンスケーリングは、画素値をラインバッファに記憶することをサポートするためにライン毎に画素値にアクセスする。従来のダウンスケーリングは、サムネイル画像内のデスティネーション画素を導出するために使用される画素を画定するソース画像ウィンドウが複数のブロックに亘って広がる場合には、画素のブロックに対して実行することができない。この問題は、ソース画像とサムネイル画像との間のスケーリング比が大きくなると悪化する。したがって、画素値を取得してＪＰＥＧ圧縮及びダウンスケーリングの両方を実行するために、メインメモリに記憶された元のデジタル画像の画素上の２つの別々のパスが必要になる。各パスは、メモリ帯域幅及び電力を消費する。
【０００６】
画像圧縮及びダウンスケーリングによって消費されるメモリ帯域幅及び電力は、画素値を記憶するのに使用されるシステムメモリ（又は、システムメモリのキャッシュ）を介して単一のパスでデジタル画像を表す画素値を取得し、次いで、取得した画素値を使用して圧縮画像及びダウンスケーリングされたサムネイル画像の両方を生成することによって低減される。したがって、各画素値は、従来のＪＰＥＧ圧縮及びダウンスケーリングを実行するのに必要な２回の取得（パス毎に１回ずつ）の代わりに、システムメモリ又はキャッシュから１回だけ取り出される。単一のパスで取得された画素値から圧縮画像及びダウンスケーリングされたサムネイル画像を生成することは、従来の手法で画素値を取得するのに必要な２つのパスと比較してメモリ帯域幅及び消費電力を半分に低減することができる。
【０００７】
いくつかの実施形態において、デジタル画像を表す画素値をシステムメモリ又はキャッシュからブロック（例えば、ＭＣＵ等）単位で取得し、ブロック内の画素値に対してＪＰＥＧ圧縮を実行する。ブロック内の画素値を圧縮するのと同時に、サムネイル画像内のデスティネーション画素の値を、ブロックの境界をデスティネーション画素に関するスケーリングウィンドウの境界と比較することによって生成する。デスティネーション画素のスケーリングウィンドウ内にあるブロック内の一部の画素値をデスティネーション画素の位置に補間し、補間された値を累積してデスティネーション画素の部分値を形成する。現在のブロックがスケーリングウィンドウの一部と重複する場合、又は、スケーリングウィンドウが複数の隣接するブロックに跨る場合に、部分値をローカルメモリ（ランダムアクセスメモリ（ＲＡＭ）等）に記憶する。部分値は、後に取得した画素ブロックと重複し、後に取得したブロック内の画素値と累積されたスケーリングウィンドウに応じて、ローカルメモリから復元される。例えば、スケーリングウィンドウ内に存在する後に取得したブロック内の一部の画素値は、デスティネーション画素の位置に補間される。次に、補間された値をデスティネーション画素の部分値に累積する。デスティネーション画素の最終値は、スケーリングウィンドウ全体が１つ以上の取得した画素ブロックと重複すると、部分値に基づいて決定される。
【０００８】
図１は、いくつかの実施形態による、画像の圧縮及び画像のダウンスケーリングを実行してサムネイル画像を形成する処理システム１００のブロック図である。処理システム１００は、画像１１０を表す情報を記憶するメモリ１０５を含む。メモリ１０５は、画像１１０をブロック１１５（明確にするために符号で１つのみ示す）に記憶するシステムメモリ又はキャッシュとして実装される。例えば、画像１１０は、２５６×２５６画素アレイ等の画素アレイによって表すことができる。画像１１０内の各ブロック１１５は、１６×１６画素の最小符号化ユニット（ＭＣＵ）等の画素のサブセットによって表される。したがって、画像１１０は、１６×１６のブロック１１５のアレイとして表現するために細分化することができる。また、画像１１０は、それぞれ２５６画素を含む２５６ラインとして表現するために細分化することができる。
【０００９】
処理システム１００は、画像１１０を圧縮するための圧縮アルゴリズムを実施するＪＰＥＧ（Joint Photographic Experts Group）エンコーダ１２５等のエンコーダ１２５を実装するために使用されるプロセッサ１２０を含む。図示された実施形態において、ＪＰＥＧエンコーダ１２５は、画像１１０を、空間（２次元（２Ｄ））領域から、異なる振幅を有する周波数成分のセットとして画像１１０を表す周波数領域信号に変換するＦＤＣＴ圧縮アルゴリズムを適用する順離散コサイン変換（ＦＤＣＴ）モジュール１３０を含む。ＦＤＣＴモジュール１３０は、周波数領域信号の高周波数成分を破棄することにより、画像１１０の表現を圧縮する。高周波数成分を破棄することによって画像を圧縮することは、一部の情報が圧縮によって失われるため、損失の多い圧縮技術である。圧縮量（例えば、破棄される高周波数成分の数）は、圧縮率によって決定される。
【００１０】
画像１１０の周波数領域表現は、エンコーダ１３５で実施される可逆圧縮アルゴリズムを使用してさらに圧縮される。例えば、エンコーダ１３５は、ハフマン符号化を実施して、画像１１０の周波数領域表現を、周波数領域表現における異なる値の発生の推定された頻度又は確率に基づいて導出される可変長符号テーブルを使用して符号化することができる。エンコーダ１３５は、メモリ１４５に記憶される圧縮画像１４０を生成する。いくつかの実施形態において、メモリ１４５は、メモリ１０５を実装するのに使用されるのと同じシステムメモリ又はキャッシュである。しかしながら、メモリ１０５，１４５を、異なるメモリ要素又はキャッシュとして実装することもできる。
【００１１】
少なくとも部分的には、ＦＤＣＴモジュール１３０は、画像１１０を表す画素値を２Ｄ領域から周波数領域に変換するので、画像１１０内の画素値をメモリ１０５からブロック単位で取得することが必要になる。例えば、ＪＰＥＧエンコーダ１２５は、ブロック１１５をメモリ１０５から取得し、次いで、ＦＤＣＴモジュール１３０は、ブロック１１５内の画素値をブロック１１５の周波数領域表現に変換し、周波数領域表現の高周波数成分を破棄して圧縮する。画像１１０のブロック１１５は、メモリアクセスコントローラ、メモリ物理層インタフェース、１つ以上のバス又はブリッジ等を含む要素によって実装可能なインタフェースを介してメモリ１０５から取り出される。インタフェースのメモリ帯域幅には制限があり、ブロック１１５を取得するために（少なくとも部分的に）割り当てられる。さらに、インタフェースを介してブロック１１５を取得することは、電力を消費し、圧縮処理に遅延が発生する。
【００１２】
また、処理システム１００は、プロセッサ１２０と同じであってもよいし異なってもよいプロセッサ１５０を含む。プロセッサ１５０は、画像１１０内の画素値からサムネイル画像１６０を生成するのに使用されるサムネイルスケーラ１５５を実装する。サムネイル画像１６０は、メモリ１６３に記憶されている。サムネイルスケーラ１５５は、画像１１０からライン毎に画素値を取得し、画素の各ラインをバッファ１６５に記憶する。例えば、サムネイルスケーラ１５５は、２５６画素のラインをメモリ１０５から取得し、当該ラインをバッファ１６５に記憶することができる。図示した実施形態において、サムネイルスケーラ１５５は、バイリニア補間モジュール１７０を実施し、ライン内の画素値をデスティネーション画素の位置に補間することによって、サムネイル画像内のデスティネーション画素（デスティネーション画素１７５等）に対する当該ライン内の各画素の寄与度を推定する。また、サムネイルスケーラ１５５は、デスティネーション画素１７５に対するライン内の画素の寄与度を推定するために、バイキュービック補間モジュール１８０を実装する。次に、平均化モジュール１８５を使用して、バイリニア補間モジュール１７０及びバイキュービック補間モジュール１８０によって生成された値を平均化し、デスティネーション画素１７５の最終値を生成する。
【００１３】
少なくとも部分的には、サムネイルスケーラ１５５が、バッファ１６５に記憶するために画像１１０からライン毎に画素値を取得するので、画像１１０のライン毎のスキャンは、ＪＰＥＧエンコーダ１２５によって実行される画像１１０のブロック毎のスキャンに加えて、サムネイルスケーラ１５５によって実行される。サムネイルスケーラ１５５は、メモリアクセスコントローラ、メモリ物理層インタフェース、１つ以上のバス又はブリッジ等を含む要素によって実装可能なインタフェースを介してメモリ１０５からラインを取得する。したがって、サムネイルスケーラ１５５によって実行される追加のスキャンは、圧縮及びダウンスケーリングを実行するために同じ画像１１０が２回フェッチされるので、メモリ帯域幅の消費量をほぼ２倍にする。さらに、画像１１０内の画素値を２つのパスで取得することは、圧縮及びダウンスケーリングを実行するのに必要な電力消費量をほぼ２倍にし、レイテンシも増加する。
【００１４】
図２は、いくつかの実施形態による、画像内の画素値を補間してサムネイル画像内のデスティネーション画素の値を決定するために使用されるマッピング２００を示す図である。マッピング２００は、より大きな画像（図２には示されていない）内の画像のサブセットを表すブロック２１０内の画素２０５（明確にするために符号で１つのみを示す）の値を、サムネイル画像２２０を表すデスティネーション画素２１５（明確にするために符号で１つのみを示す）に関連付ける。図示された実施形態において、ブロック２１０は、２５６×２５６画素アレイによって表される画像の一部である１６×１６画素の最小符号化単位（ＭＣＵ）内の画素のサブセットを含む。図示された実施形態において、ブロック２１０とサムネイル画像２２０との間のダウンスケーリング比が３．９９×２．６６となるように、サムネイル画像２２０は、４×６のデスティネーション画素２１５のアレイを有する。
【００１５】
ダウンスケーリングは、ブロック２１０からライン２２５等の画素ライン（矢印２２７で示す）をフェッチし、フェッチしたライン２２５を、図１に示すバッファ１６５等のラインバッファに記憶することによって実行される。画素２０５のグループは、対応するデスティネーション画素２１５に関連付けられている。例えば、グループ２３０は、デスティネーション画素２１５に関連付けられている。グループ２３０内の画素２０５の値は、デスティネーション画素２１５の値に対する寄与度をそれぞれ提供する。各画素２０５のデスティネーション画素２１５の値に対する寄与度は、画素２０５の位置からデスティネーション画素２１５の位置に補間することによって決定される。
【００１６】
いくつかの実施形態において、ＦＡＮＴアルゴリズムを使用して、Ｘ方向及びＹ方向におけるオフセットに基づいて、デスティネーション画素２１５の値に対する寄与度を決定することができる。寄与度（Ｄｅｓｔｐｅｌ）は、
【数１】
0006961696.tif 000002
として表すことができ、ここで、Ｐ［ｙ］［ｘ］は、位置（ｘ，ｙ）におけるソース画素の値であり、ｘｐｏｒｔｉｏｎは、Ｘ方向に最も近い左側の整数画素からの距離であり、ｙｐｏｒｔｉｏｎは、Ｙ方向に最も近い上部の整数画素からの距離であり、ｘは、グループ２３０内の画素２０５に亘ってＸ方向に０からｈｓｃａｌ＿ｒａｔｉｏに変化し、ｙは、グループ２３０内の画素２０５に亘ってＹ方向に０からｖｓｃｌ＿ｒａｔｉｏに変化する。概して、バイリニア、バイキュービック及びＦＡＮＴ平均化アルゴリズムは、スケーリングウィンドウに含まれる画素を使用してデスティネーション画素値に補間するために使用可能な補間技術である。例えば、デスティネーション画素２１５は、スケーリングウィンドウ２３０内の画素のブロックを使用して補間することができる。
【００１７】
ラインバッファを実装するのに必要な面積コストは高く、グループのサイズに比例して（例えば、ｈｓｃａｌ＿ｒａｔｉｏ又はｙｓｃａｌ＿ｒａｔｉｏに比例して）増加する。ライン２２５をシステムメモリ又はキャッシュからフェッチすることは、システムメモリ又はキャッシュへのインタフェースの帯域幅を消費する。さらに、ブロック２１０をダウンスケーリングすることによってサムネイル画像２２０を生成するために消費される電力は、ラインバッファのサイズが大きくなるにつれて増加し、ライン２２５をフェッチすることによって消費されるメモリ帯域幅の量が増加するにつれて増加する。ラインバッファの必要性を排除しつつ、ＪＰＥＧ符号化及びサムネイルダウンスケーリングを、ＪＰＥＧ符号化を実行するブロック毎の第１パス及びサムネイルダウンスケーリングを実行するライン毎の第２パスの代わりに、ソース画像の単一パスを使用して実行することによって、全体的な電力消費量を低減することができる。
【００１８】
図３は、いくつかの実施形態による、単一のパスを使用して画像内のデータにアクセスし、画像圧縮及び画像のダウンスケーリングを実行してサムネイル画像を形成する処理システム３００のブロック図である。処理システム３００は、画像３１０を表す情報を記憶するメモリ３０５を含む。メモリ３０５は、画像３１０をブロック３１５（明確にするために符号で１つのみを示す）に記憶するシステムメモリ又はキャッシュとして実装される。例えば、画像３１０は、２５６×２５６画素アレイ等の画素アレイによって表すことができる。画像３１０内の各ブロック３１５は、１６×１６画素ＭＣＵ等の画素のサブセットによって表される。したがって、画像３１０を、１６×１６のブロック１１５のアレイとして表現するために細分化することができる。
【００１９】
メモリ３０５は、インタフェース３２５によってプロセッサ３２０に接続されている。インタフェース３２５のいくつかの実施形態は、メモリ３０５とプロセッサ３２０との間で情報を通信するために、限られた量のメモリ帯域幅を提供する。例えば、インタフェース３２５は、メモリアクセスコントローラ、メモリ物理層インタフェース、１つ以上のバス、１つ以上のブリッジ、又は、他のハードウェア要素を使用して実装することができ、これらの要素は、ハードウェア要素の特性によって決定されるメモリ帯域幅の量を提供するように制約されている。インタフェース３２５を使用してメモリ３０５とプロセッサ３２０との間で情報を伝達することによって、インタフェース３２５を介して伝達される情報量が増加するにつれて増加する電力量を消費する。
【００２０】
プロセッサ３２０は、画像３１０を圧縮するための圧縮アルゴリズムを実施するＪＰＥＧエンコーダ３３０等のエンコーダ３３０を実装する。図示された実施形態において、ＪＰＥＧエンコーダ３３０は、画像３１０を、空間（２Ｄ）領域から、異なる振幅を有する周波数成分のセットとして画像３１０を表す周波数領域信号に変換するＦＤＣＴ圧縮アルゴリズムを適用するＦＤＣＴモジュール３３５を含む。ＦＤＣＴモジュール３３５は、本明細書で説明するように、周波数領域信号の高周波数成分を破棄することによって、画像３１０の表現を圧縮する。画像３１０の周波数領域表現は、エンコーダ３４０で実施される可逆圧縮アルゴリズムを使用してさらに圧縮される。たとえば、エンコーダ３４０は、本明細書で説明するように、画像３１０の周波数領域表現を符号化するためにハフマン符号化を実施することができる。
【００２１】
エンコーダ３４０は、圧縮画像３４５を生成し、この圧縮画像は、インタフェース３５５によって、プロセッサ３２０に接続されたメモリ３５０に記憶され、このインタフェースは、メモリコントローラ、メモリ物理層インタフェース、バス、ブリッジ等を含むハードウェア要素の組み合わせを使用して実装することができる。したがって、インタフェース３５５は、プロセッサ３２０とメモリ３５０との間で情報を伝達するための限られた帯域幅を有する。いくつかの実施形態において、メモリ３５０は、メモリ３０５を実装するのに使用されるのと同じシステムメモリ又はキャッシュであり、この場合、インタフェース３５５は、インタフェース３２５と同じである。しかしながら、メモリ３０５，３５０は、異なるインタフェース３２５，３５５によってプロセッサ３２０に接続された異なるメモリ要素又はキャッシュとして実装することもできる。
【００２２】
また、プロセッサ３２０は、画像３１０内の画素値からサムネイル画像３６５を生成するのに使用されるサムネイルスケーラ３６０を実装する。図示された実施形態において、サムネイルスケーラ３６０は、ＦＡＮＴ平均化アルゴリズム３８５を実施して、画素の累積及び所定のスケーリングウィンドウに亘る平均化を実行する。デスティネーション画素３７５の値は、ブロック３１０内の所定のスケーリングウィンドウ（ＨＳＣＬ×ＶＳＣＬ）内の入力画素によって決定される。したがって、全ての入力ソース画素３１５が考慮され、サムネイル画像３６５内のデスティネーション画素３７５の値に寄与する。スケーリング比が分数である場合（すなわち、スケーリングウィンドウ境界が整数インデックス画素３１５の間に入る場合）、スケーリングウィンドウの境界内に入る部分ソース画素３１５は、対応するデスティネーション画素３７５の値に寄与する。これは、スケーリングウィンドウ境界を超えるエイリアシングの影響を最小にする。デスティネーション画素３７５の値は、インタフェース３９０を介してメモリ３５０に伝達される。インタフェース３９０は、メモリコントローラ、メモリ物理層インタフェース、バス、ブリッジ等を含むハードウェア要素の組み合わせを使用して実装される。したがって、インタフェース３９０は、プロセッサ３２０とメモリ３５０との間で情報を伝達するための限られた帯域幅を有する。インタフェース３９０のいくつかの実施形態は、インタフェース３５５と同じである。
【００２３】
プロセッサ３２０は、ランダムアクセスメモリ（ＲＡＭ）３９５として実装可能なローカルメモリに関連付けられている。ＲＡＭ３９５は、プロセッサ３２０内又はプロセッサ３２０に近接して実装することができる。これにより、プロセッサ３２０とローカルＲＡＭ３９５との間で情報を伝達するのに必要なアクセスレイテンシ、メモリ帯域幅及び消費電力は、インタフェース３２５，３５５，３９０を介して情報を伝達するのに必要なアクセスレイテンシ、メモリ帯域幅及び消費電力と比較して小さい（場合によっては、僅かである）。
【００２４】
プロセッサ３２０は、インタフェース３２５を介して、メモリ３０５に記憶された画像４１０からブロック３１５をブロック単位でフェッチする。ＪＰＥＧエンコーダ３３０及びサムネイルスケーラ３６０は、フェッチされたブロックに対して同時に動作し、圧縮画像３４５及びサムネイル画像３６５の各々を生成する。例えば、プロセッサ３２０は、メモリ３０５からブロック３１５内の画素の値を取得することができる。ＪＰＥＧエンコーダ３３０は、圧縮アルゴリズムをこれらの値に適用して圧縮画像３４５を生成し、サムネイルスケーラ３６０は、ＪＰＥＧエンコーダ３３０の動作と並行して、ブロック３１５内の画素の値に対して、デスティネーション画素３７５のスケーリングウィンドウと重複するブロック３１５の部分内の画素値に基づいて、デスティネーション画素３７５の部分値を変更する。サムネイルスケーラ３６０は、変更された部分値を、ＲＡＭ３９５等のプロセッサ３２０に関連するローカルメモリに記憶することができる。また、本明細書で説明するように、サムネイルスケーラ３６０は、画像３１０内の他のブロック上で動作するときに、変更された部分値をＲＡＭ３９５から取得することができる。ＪＰＥＧエンコーダ３３０は、ブロック３１５を圧縮した後に圧縮画像３４５をメモリ３５０に記憶する。サムネイルスケーラ３６０は、本明細書で説明するように、完成したサムネイル画像３６５をメモリ３５０に記憶する。
【００２５】
図４は、いくつかの実施形態による、行及び列に編成されたＭＣＵのセットを含む画像の一部４００を示す図である。画像は、Ｍ行及びＮ列のＭＣＵに分割される。例えば、画像は、図３に示す画像３１０によって示すように、１６行及び１６列を含むことができる。この一部４００は、行のサブセット（ｍ，ｍ＋１）列のサブセット（ｎ，ｎ＋１，ｎ＋２）によって識別されるＭＣＵのサブセットを含む。例えば、ＭＣＵ４０５は、行／列ペア（ｍ，ｎ）によって識別される。各ＭＣＵは、４つのデータユニットにさらに細分化される。例えば、ＭＣＵ４０５は、データユニット４１０，４１１，４１２，４１３に細分化され、これらのデータユニットを本明細書でまとめて「データユニット４１０〜４１３」と呼ぶ。各データユニットは、画素ブロックを含む。例えば、データユニット４１０は、画素４１５を含む８×８画素ブロックを含む。本明細書で説明するように、ＭＣＵ内の画素値は、システムメモリ又はキャッシュ（例えば、図３に示すメモリ３０５等）から取得され、同時に圧縮及びダウンスケーリングされて、ブロック単位でサムネイル画像を形成する。
【００２６】
スケーリングウィンドウ４２０，４２１，４２２，４２３，４２４，４２５（本明細書ではまとめて「スケーリングウィンドウ４２０〜４２５」と呼ぶ）は、一部４００を含む画像をダウンスケーリングすることによって生成されるサムネイル画像内のデスティネーション画素に関連付けられている。スケーリングウィンドウ４２０〜４２５は、サムネイル画像内の対応するデスティネーション画素に寄与する一部４００内の画素と重複して含む。例えば、スケーリングウィンドウ４２０は、行／列ペア（ｍ，ｎ＋１）、（ｍ＋１，ｎ）、（ｍ＋１，ｎ＋１）によって識別されるＭＣＵ内の画素と同様に、ＭＣＵ４０５のデータユニット４１０〜４１３内の画素を含む。スケーリングウィンドウ４２０〜４２５の寸法は、本明細書で説明するように、スケーリング比又は別々の水平方向及び垂直方向のスケーリング比によって決定される。スケーリング比のいくつかの実施形態は、スケーリングウィンドウ４２０〜４２５の境界が整数値によってインデックスされた画素間に入ることができるように、分数である。この場合、スケーリングウィンドウ４２０〜４２５の境界内にある部分ソース画素は、サムネイル画像内の対応するデスティネーション画素値の計算に含まれる。
【００２７】
スケーリングウィンドウ４２０〜４２５に関連するデスティネーション画素の最終値は、スケーリングウィンドウ４２０〜４２５が複数のブロックと重複するため、単一ブロック内の画素値によって決定されない。その代わりに、デスティネーション画素の部分値は、ブロック毎に決定される。例えば、スケーリングウィンドウ４２０に関連するデスティネーション画素の部分値は、ＭＣＵ４０５内の画素値を圧縮するのと同時に、データユニット４１０〜４１３内の画素値を補間することによって決定される。この部分値は、ＭＣＵ４０５の境界を検出したことに応じて、ローカルメモリに記憶される。したがって、ダウンスケーリングしてサムネイル画像を生成するのに使用されるＭＣＵ４０５内の画素値の補間と、ＭＣＵ４０５内の画素値の圧縮との両方を、システムメモリ又はキャッシュから単一のスキャンにおいて取得された値を使用して実行することができる。
【００２８】
ＭＣＵ４０５の処理が完了すると、別のＭＣＵをシステムメモリ又はキャッシュから取得することがえきる。例えば、ＭＣＵ４０５のダウンスケーリング及び圧縮の完了に応じて、ＭＣＵ（ｍ，ｎ＋１）内の画素値をシステムメモリ又はキャッシュから取得することができる。取得したＭＣＵと重複するスケーリングウィンドウに関連するデスティネーション画素の部分値を、ローカルメモリから生成又は取得することができる。例えば、スケーリングウィンドウ４２０に関連するデスティネーション画素の部分値は、システムメモリ又はキャッシュからＭＣＵ（ｍ，ｎ＋１）を取得することに応じて、ローカルメモリから取得される。別の例では、ＭＣＵ（ｍ，ｎ＋１）の取得に応じて、スケーリングウィンドウ４２１に関連するデスティネーション画素の部分値を生成することができる。次に、スケーリングウィンドウ４２０，４２１に含まれる画素の寄与度が補間され、対応する部分値に累積され、スケーリングウィンドウ４２０，４２１又はＭＣＵ（ｍ，ｎ＋１）の境界の検出に応じて、ローカルメモリに記憶することができる。
【００２９】
デスティネーション画素の最終値は、対応するスケーリングウィンドウ全体によって包含される画素値を補間することに応じて決定される。例えば、スケーリングウィンドウ４２０に関連するデスティネーション画素の最終値は、ＭＣＵ（ｍ＋１，ｎ＋１）を処理している間に右下隅のスケーリングウィンドウ４２０の境界に到達したことに応じて決定される。デスティネーション画素の最終値は外部メモリに記憶され、外部メモリは、画像の一部４００を記憶するのに使用されるシステムメモリ若しくはキャッシュと同じメモリ又は異なるメモリであってもよい。
【００３０】
図５は、いくつかの実施形態による、サムネイル画像内のデスティネーション画素に関連するスケーリングウィンドウ５０１，５０２，５０３，５０４によって重複したＭＣＵ５００を示す図である。ＭＣＵ５００は、データユニット５１０，５１１，５１２，５１３に細分化され、これらのデータユニットは、本明細書ではまとめて「データユニット５１０〜５１３」と呼ばれる。スケーリングウィンドウ５０１，５０２，５０３，５０４（本明細書ではまとめて「スケーリングウィンドウ５０１〜５０４」と呼ぶ）は、データユニット５１０の異なる部分５１５，５１６，５１７，５１８（本明細書ではまとめて「部分５１５〜５１８」と呼ぶ）と、データユニット５１１〜５１３を含む他のデータユニットの部分と、を含む。
【００３１】
スケーリングウィンドウ５０１〜５０４に関連するデスティネーション画素の部分値は、対応するスケーリングウィンドウ５０１〜５０４によって含まれるブロックの一部内の画素の寄与度を計算し、現在のブロックからの全ての寄与度を累積したときに部分値をローカルメモリに記憶し、対応するスケーリングウィンドウ５０１〜５０４によって少なくとも部分的に含まれる新たなブロックの取得に応じて部分値をローカルメモリから復元し、新たに取得したブロックの一部内の画素の寄与度を累積することによって、ブロック毎に累積される。
【００３２】
いくつかの実施形態において、部分５１５〜５１８の境界の検出に応じて、部分値がローカルメモリに記憶される。例えば、スケーリングウィンドウ５０２に関連するデスティネーション画素の部分値は、システムメモリ又はキャッシュからＭＣＵ５００内のデータユニット５１０を取得したことに応じて、ローカルメモリから取得される。データユニット５１０の一部５１６内の画素からの寄与度は、一部５１６の境界を検出したことに応じてローカルメモリに記憶され、部分値に累積される。また、スケーリングウィンドウ５０２〜５０４に関連するデスティネーション画素の部分値は、データユニット５１０内のスケーリングウィンドウ５０２〜５０４の境界を検出したことに応じて、ローカルメモリに記憶される。
【００３３】
いくつかの実施形態において、デスティネーション画素の最終値は、対応するデスティネーション画素に対する画素の全ての寄与度を計算したことを示すスケーリングウィンドウ５０１〜５０４の境界を検出したことに応じて、システムメモリに記憶される。例えば、スケーリングウィンドウ５０１に関連するデスティネーション画素の部分値は、システムメモリ又はキャッシュからＭＣＵ５００内のデータユニット５１０を取得したことに応じて、ローカルメモリから取得される。デスティネーション画素に寄与する最後の画素がデータユニット５１０の一部５１５の右下隅にあるので、デスティネーション画素の最終値は、一部５１５内の画素が処理されると決定される。したがって、データユニット５１０の処理中にスケーリングウィンドウ５０１の境界を検出したことに応じて、スケーリングウィンドウ５０１のデスティネーション画素の最終値が、システムメモリに記憶される。
【００３４】
図６は、いくつかの実施形態による、サムネイル画像内のデスティネーション画素に関連するスケーリングウィンドウ６０５によって重複したデータユニット６０１，６０２，６０３，６０４のセットを含むＭＣＵ６００を示す図である。データユニット６０１，６０２，６０３，６０４は、本明細書ではまとめて「データユニット６０１〜６０４」と呼ばれる。スケーリングウィンドウ６０５は、データユニット６０１内の一部６１５内、データユニット６０２内の一部６１６内、データユニット６０３内の一部６１７内、及び、データユニット６０４内の一部６１８内の画素を含む。図示した実施形態において、データユニット６０１〜６０４をＺパターンでシステムメモリから取得するので、これらを符号６０１〜６０４の番号順に取得する。
【００３５】
スケーリングウィンドウ６０５に関連するデスティネーション画素の部分値は、システムメモリ又はキャッシュからデータユニット６０１を取得することに応じて生成される。一部６１５内の画素の値は、デスティネーション画素の位置に補間され、補間された値は、部分値に累積され、一部６１５又はデータユニット６００及び同じものの境界を検出したことに応じて、ローカルメモリに記憶される。部分値は、システムメモリからデータユニット６０２，６０３を取得したことに応じてローカルメモリから復元され、一部６１６，６１７内の画素の値は、部分値に補間されて累積され、データユニット６０２，６０３又は一部６１６，６１７で境界を検出したことに応じてローカルメモリに記憶される。部分値は、システムメモリからデータユニット６０４を取得したことに応じてローカルメモリから復元され、一部６１８内の画素の値は、部分値に補間されて累積され、一部６１８内で境界を検出したことに応じて最終値を決定するために使用される。例えば、デスティネーション画素の最終値は、一部６１５〜６１８内の画素が寄与する部分値の合計に等しく設定されてもよく、次いで、この合計は、スケーリングウィンドウ６０５内の総画素数で除算されてもよい。
【００３６】
図７は、いくつかの実施形態による、行及び列に編成されたＭＣＵのセットに対するアクセスパターンを表す画像の一部７００を示す図である。画像は、Ｍ行及びＮ列のＭＣＵに分割される。例えば、画像は、図３に示す画像３１０によって示されるように、１６行及び１６列を含むことができる。一部７００は、行のサブセット（ｍ，ｍ＋１）及び列のサブセット（ｎ，ｎ＋１，ｎ＋２）によって識別されるＭＣＵのサブセットを含む。例えば、ＭＣＵ７０５は、行／列ペア（ｍ，ｎ）によって識別される。各ＭＣＵは、４つのデータユニットにさらに細分化される。例えば、ＭＣＵ７０５は、本明細書ではまとめて「データユニット７１０〜７１３」と呼ばれるデータユニット７１０，７１１，７１２，７１３に細分化される。各データユニットは、画素ブロックを含む。例えば、データユニット７１０は、画素７１５を含む８×８画素ブロックを含む。本明細書で説明するように、ＭＣＵ内の画素値は、システムメモリ又はキャッシュ（図３に示すメモリ３０５等）から取得され、同時に圧縮及びダウンスケーリングされ、ブロック単位でサムネイル画像を形成する。
【００３７】
データユニット７１０〜７１３は、ライン７２０，７２５で示すようなＺパターンでアクセスされる。したがって、データユニット７１０〜７１３は、符号７１０〜７１３の番号順にアクセスされる。ＭＣＵ内の各データユニットと重複するスケーリングウィンドウの部分値は、ＭＣＵ内の画素値の圧縮と同時に累積される。例えば、行／列ペア（ｍ，ｎ＋１）によって示されるＭＣＵ内の左下のデータユニットは、サムネイル画像内の対応するデスティネーション画素に関連する９つのスケーリングウィンドウ７３０（明確にするために符号で１つのみを示す）によって重複される。スケーリングウィンドウ７３０の部分値は、データユニット内の画素値の処理中に累積される。
【００３８】
スケーリングウィンドウ７３０の境界とデータユニットの境界との比較が、スケーリングウィンドウ７３０によって囲まれた全ての画素よりも少ないデスティネーション画素への寄与度であることを示す場合に、部分値は、ローカルメモリに記憶される。この比較が、対応するスケーリングウィンドウによって含まれる全ての画素のデスティネーション画素への寄与度を示す場合に、デスティネーション画素の最終値がシステムメモリに記憶される。例えば、図７に示す中央のスケーリングウィンドウは、ＭＣＵ（ｍ，ｎ＋１）の左下のデータユニット内に完全に含まれる。したがって、中央のスケーリングウィンドウに関連するデスティネーション画素の最終値は、ＭＣＵ（ｍ，ｎ＋１）の左下のデータユニット内の画素の処理中又はこの処理後にシステムメモリに記憶される。
【００３９】
図８は、いくつかの実施形態による、複数のＭＣＵを含むスケーリングウィンドウに対応するデスティネーション画素値の部分的な累積を表す画像の一部８００を示す図である。画像は、Ｍ行及びＮ列のＭＣＵに分割される。例えば、画像は、図３に示す画像３１０で示されるように、１６行及び１６列を含むことができる。一部８００は、行のサブセット（ｍ，ｍ＋１）及び列のサブセット（ｎ，ｎ＋１，ｎ＋２）によって識別されるＭＣＵのサブセットを含む。例えば、ＭＣＵ８０５は、行／列ペア（ｍ，ｎ）によって識別される。各ＭＣＵは、４つのデータユニットにさらに細分化される。例えば、ＭＣＵ８０５は、本明細書ではまとめて「データユニット８１０〜８１３」と呼ばれるデータユニット８１０，８１１，８１２，８１３に細分化され、各データユニットは、画素ブロックを含む。例えば、データユニット８１０は、画素８１５を含む８×８画素ブロックを含む。本明細書で説明するように、ＭＣＵ内の画素値は、システムメモリ又はキャッシュ（図３に示すメモリ３０５等）から取得され、同時に圧縮及びダウンスケーリングされて、ブロック単位でサムネイル画像を形成する。
【００４０】
スケーリングウィンドウ８２０は、サムネイル画像内のデスティネーション画素に寄与する一部８００内の画素を含む。本明細書で説明するように、スケーリングウィンドウ８２０によって含まれる画素値は、画素の位置からデスティネーション画素の位置まで補間され、補間された値は、デスティネーション画素値を決定するために、他の画素の補間された値と共に累積される。画素毎の補間された値の計算は、例えばＪＰＥＧ圧縮アルゴリズム等に従って圧縮画像を形成するために、一部８００のブロックの符号化と同時に実行される。例えば、領域８２１内の画素の補間された値は、データユニット８１１内の画素の符号化と同時にデスティネーション画素の部分値に累積される。次に、デスティネーション画素の部分値が、ローカルＲＡＭに記憶される。データユニット８１３をシステムメモリから取得したことに応じて部分値がローカルＲＡＭから取得され、領域８２２内の画素の補間された値が、データユニット８１３内の画素の符号化と同時にデスティネーション画素の部分値に累積される。次に、部分値がローカルＲＡＭに記憶される。
【００４１】
画素の補間された値の同時計算と、一部８００のブロックの符号化とは、ブロック単位で実行される。例えば、ＭＣＵ８０５の符号化及び領域８２１，８２２からのデスティネーション画素の部分値への寄与度の計算が完了すると、ＭＣＵ（ｍ，ｎ＋１）がシステムメモリから取得され、デスティネーション画素の部分値がローカルＲＡＭから取得される。領域８２３，８２４，８２５，８２６内の画素値は、デスティネーション画素の位置に補間され、補間された値は、デスティネーション画素の部分値に累積される。累積は、ＭＣＵ（ｍ，ｎ＋１）内の対応するデータユニットの符号化と同時に実行される。次に、部分値がローカルＲＡＭに記憶される。この処理は、スケーリングウィンドウ８２０によって含まれる全ての画素の寄与度が部分値に累積されるまで、ブロック毎に繰り返し続けられる。例えば、ＭＣＵ（ｍ，ｎ＋２）の領域８２８内の画素、ＭＣＵ（ｍ＋１，ｎ）の領域８２９内の画素、ＭＣＵ（ｍ＋１，ｎ＋１）の領域８３０，８３１内の画素、及び、ＭＣＵ（ｍ＋１，ｎ＋２）の領域８３２内の画素について、同時補間、部分値累積及び符号化が実行される。領域８３２の境界を検出したことに応じて、デスティネーション画素の最終値がメモリに記憶される。
【００４２】
図９は、いくつかの実施形態による、同時画像圧縮及びサムネイル生成方法９００のフロー図である。方法９００は、図３に示す処理システム３００のいくつかの実施形態で実施される。例えば、方法９００は、図３に示すプロセッサ３２０等のプロセッサで実施することができる。
【００４３】
ブロック９０５において、プロセッサは、画像の一部を表す画素ブロックの値をシステムメモリ又はキャッシュから取得する。画素ブロックは、ＭＣＵ、ＭＣＵ内のデータユニット、又は、他の２Ｄ画素グループであってもよい。
【００４４】
ブロック９１０において、プロセッサは、ブロックの部分と重複するスケーリングウィンドウのデスティネーション画素の部分値を決定する。例えば、本明細書で説明するように、デスティネーション画素の部分値は、画素の位置からデスティネーション画素の位置までのブロックの部分内の画素値を補間することによって決定することができる。部分値は、図３に示すローカルＲＡＭ３９５等のように、プロセッサに関連するローカルメモリに記憶される。
【００４５】
ブロック９１５において、プロセッサは、完全なスケーリングウィンドウのデスティネーション画素値を決定する。例えば、デスティネーション画素の部分値は、デスティネーション画素値に寄与する画像内の全ての画素（すなわち、スケーリングウィンドウによって含まれる画像内の全ての画素）がプロセッサによって処理されたと判別する処理に応じて、デスティネーション画素の最終値に等しく設定される。いくつかの実施形態において、累積された部分値は、最終地を生成するために、デスティネーション画素値に寄与する画素数で除算される。デスティネーション画素の最終値は、図３に示すメモリ３５０等のメモリに記憶される。
【００４６】
ブロック９２０において、プロセッサは、ブロック内の画素値を符号化して、ブロック内の画素によって表される画像の一部の圧縮表現を形成する。例えば、プロセッサは、本明細書で説明するように、ブロック内の画素値に対してＦＤＣＴ変換を実行することができる。
【００４７】
ブロック９２５において、プロセッサは、圧縮表現の可逆符号化を実行する。例えば、プロセッサは、ブロック内の画素によって表される画像の一部の圧縮表現に対してハフマン符号化を実行することができる。本明細書で説明するように、ブロック９１０，９１５における動作は、ブロック９２０，９２５における動作と同時に実行される。したがって、ブロック内の画素値は、（ブロック９０５において）１回又は単一パスでのみメモリから取得される。
【００４８】
判別ブロック９３０において、プロセッサは、システムメモリ又はキャッシュから取得された追加のブロックがあるかどうかを判別する。ある場合には、方法９００は、ブロック９０５に移行し、プロセッサは、ブロック毎の画像圧縮及びサムネイル生成処理の別の繰り返しを実行する。ない場合には、方法９００は、ブロック９３５に移行して終了する。
【００４９】
図１０は、いくつかの実施形態による、ブロック内の画素値に基づいてデスティネーション画素の部分値を計算して記憶する方法１０００のフロー図である。方法１０００は、図３に示す処理システム３００のいくつかの実施形態で実施される。例えば、方法１０００は、図３に示すプロセッサ３２０等のプロセッサで実施することができる。また、方法１０００は、図９に示すブロック９１０，９１５における動作のいくつかの実施形態を実行するために使用される。したがって、方法１０００は、ブロック内の画素に対して、ブロック内の画素の符号化と同時に実行され、画素によって表される画像の圧縮表現を生成する。
【００５０】
ブロック１００１において、プロセッサは、次のスケーリングウィンドウに関連するデスティネーション画素値を表す部分値を累積し始める。プロセッサのいくつかの実施形態は、部分値の累積を開始する前に、部分値を０の値に初期化する。
【００５１】
ブロック１００５において、プロセッサは、システムメモリ又はキャッシュから取得されたブロックから画素値にアクセスする。図示した実施形態において、このブロックは、プロセッサによって現在処理されているデータユニットの一部である。画素は、スケーリングウィンドウに含まれている。したがって、画素は、ブロック又はデータユニットの境界と、スケーリングウィンドウの境界との結合によって囲まれた領域内にある。ブロック１０１０において、プロセッサは、デスティネーション画素の部分値に対する画素の寄与度を計算する。例えば、プロセッサは、画素の位置からデスティネーション画素の位置までの画素値を補間することができる。ブロック１０１５において、プロセッサは、ブロック１０１０で決定された寄与度を、デスティネーション画素の部分値に加算する。
【００５２】
ブロック１０２０において、プロセッサは、そのブロック内の画素がスケーリングウィンドウの最後にあるかどうかを判別する。例えば、プロセッサは、本明細書で説明するように、画素がスケーリングウィンドウの境界にあるかどうか、及び、スケーリングウィンドウに含まれる全ての画素が以前に処理されたかどうかを判別することができる。画素が、スケーリングウィンドウに含まれる全ての画素の処理を完了するために処理される必要がある最後の画素である場合には、方法１０００は、ブロック１０２５に移行する。画素が、スケーリングウィンドウに含まれる全ての画素の処理を完了するために処理される必要がある最後の画素でない場合には、方法１０００は、情報をメモリに記憶することなく、判別ブロック１０３０に直接移行する。
【００５３】
ブロック１０２５において、デスティネーション画素値を表す以前の部分値が、ローカルＲＡＭから取得される。例えば、以前の部分値は、スケーリングウィンドウと、プロセッサによって以前に処理されたデータユニットとの結合に囲まれた画素を使用して計算された部分値であってもよい。ブロック１０３５において、取得された以前の部分値が、現在のデータユニットを使用して計算された部分値に加算される。ブロック１０４０において、部分値を、例えば、デスティネーション画素の部分値に寄与した総画素数で除算することによって平均化し、デスティネーション画素の最終値を生成し、最終値をシステムメモリに記憶する。
【００５４】
判別ブロック１０３０において、プロセッサは、現在のデータユニットの境界に到達したかどうかを判別する。到達していない場合には、方法１０００は、ブロック１００５に移行し、このブロックから次の画素にアクセスする。現在のデータユニットの境界に到達した場合には、方法１０００は、ブロック１０４５に移行し、部分値がローカルＲＡＭに記憶される。本明細書で説明するように、部分値は、この後、異なるデータユニットからの画素を使用して、スケーリングウィンドウについて計算された部分値と累積するために、ローカルＲＡＭから取得することができる。
【００５５】
いくつかの実施形態では、図１〜図１０を参照して上述した処理システム等の装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムで実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５６】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００５７】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００５８】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５９】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
0006961696.tif 000003
【図２】
0006961696.tif 000004
【図３】
0006961696.tif 000005
【図４】
0006961696.tif 000006
【図５】
0006961696.tif 000007
【図６】
0006961696.tif 000008
【図７】
0006961696.tif 000009
【図８】
0006961696.tif 000010
【図９】
0006961696.tif 000011
【図１０】
0006961696.tif 000012