(57)【要約】【課題】画像データ処理をより電力効率を良くしかつ高速化する。【解決手段】画像処理システムは、第１のフリップフロップバンクおよび第２のフリップフロップバンクと、画像データのＪＰＥＧ処理を制御するように構成された制御システムを備える。制御システムは、さらに、第１の期間中、第１もしくは第２のフリップフロップバンクの一つを書き込みバンクとしておよび第１もしくは第２のフリップフロップバンクの他方を読み出しバンクとして使用し、第２の期間中、書き込みバンクおよび読み出しバンクとしての第１および第２のフリップフロップバンクの使用を互い違いにし、使用を互い違いにした後、読み出しバンクをゼロに初期化するように構成されている。【選択図】      図２Ａ
2016119672.tif 000002
【特許請求の範囲】
【請求項１】
画像データを処理するための方法であって、
第１の期間中に、第１の画像データに相当し所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第１のセットを含む第１のフリップフロップ格納要素の内容を符号化して第１の画像データに対する第１の符号化データを生成し、
前記第１の期間中に、第２の画像データに相当し前記所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第２のセットを第２のフリップフロップ格納要素に格納し、
前記第１のフリップフロップ格納要素の前記内容を符号化し、前記一つ以上の量子化された周波数係数の第２のセットを前記第２のフリップフロップ格納要素に格納した後で、前記第１のフリップフロップ格納要素の前記内容をゼロに設定し、
前記第１の期間の後の第２の期間中に、前記第１の期間中に格納された前記一つ以上の量子化された周波数係数の第２のセットを含む、前記第２のフリップフロップ格納要素の内容を符号化して前記第２の画像データに対する第２の符号化データを生成し、
前記第２の期間中に、第３の画像データに相当し所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第３のセットを、前記第１のフリップフロップ格納要素に格納することを含む方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記第１の期間の前の第３の期間中に、前記一つ以上の量子化された周波数係数の第１のセットを前記第１のフリップフロップ格納要素に格納することを含み、
前記第３の期間中に前記一つ以上の量子化された周波数係数の第１のセットを格納することは、さらに、
サンプルブロックにグループ化されている前記第１の画像データを受け取り、
前記第１の画像データに空間周波数変換を実行して、前記第１の画像データの空間周波数変換を表す一つ以上の周波数係数の第１のセットを生成し、
前記一つ以上の周波数係数の第１のセットを量子化して前記一つ以上の量子化された周波数係数の第１のセットを生成し、
前記一つ以上の量子化された周波数係数の第１のセットを前記所定のシーケンスに順序付けし、
前記所定のシーケンスで順序付けられた前記一つ以上の量子化された周波数係数の第１のセットを前記第１のフリップフロップ格納要素に格納することを含む方法。
【請求項３】
請求項２に記載の方法であって、
前記第１の期間中に前記一つ以上の量子化された周波数係数の第２のセットを格納することは、
前記サンプルブロックにグループ化された前記第２の画像データを受け取り、
前記第２の画像データに空間周波数変換を実行して、前記第２の画像データの前記空間周波数変換を表す一つ以上の周波数係数の第２のセットを生成し、
前記一つ以上の周波数係数の第２のセットを量子化して、前記一つ以上の量子化された周波数係数の第２のセットを生成し、
前記一つ以上の量子化された周波数係数の第２のセットを前記所定のシーケンスに順序付けし、
前記所定のシーケンスで順序付けられた前記一つ以上の量子化された周波数係数の第２のセットを前記第２のフリップフロップ格納要素に格納することを含む方法。
【請求項４】
請求項２に記載の方法であって、さらに、
前記第３の期間中に、単一クロックサイクルで複数の周波数係数を量子化して、少なくとも前記一つ以上の量子化された周波数係数の第１のセットの一部を生成することを含む方法。
【請求項５】
請求項２に記載の方法であって、
前記空間周波数変換は、離散コサイン変換である方法。
【請求項６】
請求項１に記載の方法であって、
前記第１もしくは第２のフリップフロップ格納要素のいずれかの内容を符号化することは、前記各符号化データの最後を示すためにブロック終結マーカーを符号化することを含む方法。
【請求項７】
請求項１に記載の方法であって、
前記第１のフリップフロップ格納要素の内容を符号化することは、前記第１のフリップフロップ格納要素の内容にエントロピー符号化を実行することにより実行される方法。
【請求項８】
画像データを処理するための方法であって、
第１の期間中に、前記第１の画像データの空間周波数変換を表す一つ以上の周波数係数の第１のセットを含む第１のフリップフロップ格納要素の内容に逆空間周波数変換を実行して第１の画像データを生成し、
前記第１の期間中に、第２の画像データの空間周波数変換を表す一つ以上の周波数係数の第２のセットを第２のフリップフロップ格納要素に格納し、
前記第１のフリップフロップ格納要素の内容に逆空間周波数変換を実行し、前記一つ以上の周波数係数の第２のセットを第２のフリップフロップ格納要素に格納した後で、前記第１のフリップフロップ格納要素の前記内容をゼロに設定し、
前記第１の期間の後の第２の期間中に、前記第１の期間中に格納された前記一つ以上の周波数係数の前記第２のセットを含む前記第２のフリップフロップ格納要素の内容に逆空間周波数変換を実行して前記第２の画像データを生成し、
前記第２の期間中に、第３の画像データの空間周波数変換を表す一つ以上の周波数係数の第３のセットを前記第１のフリップフロップ格納要素に格納することを含む方法。
【請求項９】
請求項８に記載の方法であって、さらに、
前記第１の期間の前の第３の期間中に、前記一つ以上の周波数係数の第１のセットを前記第１のフリップフロップ格納要素に格納することを含み、
前記第３の期間中に前記一つ以上の周波数係数の第１のセットを格納することは、さらに、
所定のシーケンスで順序付けられた一つ以上の量子化された周波数係数の第１のセットを受け取り、
前記一つ以上の量子化された周波数係数の第１のセットを逆の所定のシーケンスに順序付けし、
前記一つ以上の量子化された周波数係数の第１のセットを逆量子化して、前記一つ以上の周波数係数の第１のセットを生成し、
前記一つ以上の周波数係数の第１のセットを前記第１のフリップフロップ格納要素に格納することを含む方法。
【請求項１０】
請求項９に記載の方法であって、
前記第１の期間中に、前記一つ以上の周波数係数の第２のセットを格納することは、
所定のシーケンスで順序付けられた一つ以上の量子化された周波数係数の第２のセットを受け取り、
前記一つ以上の量子化された周波数係数の第２のセットを逆の所定のシーケンスに順序付けし、
前記一つ以上の量子化された周波数係数の第２のセットを逆量子化して、前記一つ以上の周波数係数の第２のセットを生成し、
前記一つ以上の周波数係数の第２のセットを前記第２のフリップフロップ格納要素に格納することを含む方法。
【請求項１１】
請求項１０に記載の方法であって、さらに、
前記第３の期間中、前記第１の画像データに相当する第１の符号化データを受け取り、前記第１の符号化データを復号化して、前記所定のシーケンスで順序付けられた前記一つ以上の量子化された周波数係数の第１のセットを提供し、
前記第１の期間中、前記第２の画像データに相当する第２の符号化データを受け取り、前記第２の符号化データを復号化して、前記所定のシーケンスで順序付けられた前記一つ以上の量子化された周波数係数の第２のセットを提供することを含む方法。
【請求項１２】
請求項９に記載の方法であって、さらに、
前記第３の期間中、単一クロックサイクルで複数の量子化された周波数係数を逆量子化して、少なくとも前記一つ以上の周波数係数の第１のセットの一部を生成することを含む方法。
【請求項１３】
請求項８に記載の方法であって、
ブロック終結マーカーが前記第１のフリップフロップ格納要素の内容の中で検出された場合、前記第１の期間中の前記逆空間周波数変換の実行が停止される方法。
【請求項１４】
画像処理システムであって、
第１のフリップフロップバンクおよび第２のフリップフロップバンクと、
画像データのＪＰＥＧ処理を制御するように構成された制御システムを備え、
前記制御システムは、さらに、
第１の期間中、前記第１もしくは第２のフリップフロップバンクの一つを書き込みバンクとしておよび前記第１もしくは第２のフリップフロップバンクの他方を読み出しバンクとして使用し、
第２の期間中、前記書き込みバンクおよび読み出しバンクとしての前記第１および第２のフリップフロップバンクの前記使用を互い違いにし、
前記使用を互い違いにした後、前記読み出しバンクをゼロに初期化するように構成されている画像処理システム。
【請求項１５】
請求項１４に記載のシステムであって、
前記制御システムは、さらに、
前記読み出しバンクの内容が前記画像データの第１のサンプルに相当するとともに所定のシーケンスに順序付けられている一つ以上の量子化された周波数係数の第１のセットを含み、前記画像データの前記第１のサンプルに対して第１の符号化データを生成するように構成されている符号化要素に前記読み出しバンクの内容を提供することにより、それぞれのフリップフロップバンクを前記読み出しバンクとして使用し、
一つ以上の量子化された周波数係数の第２のセットは前記画像データの第２のサンプルに相当し、所定のシーケンスに順序付けられている一つ以上の量子化された周波数係数の第２のセットを前記書き込みバンクに格納することにより、それぞれのフリップフロップバンクを前記書き込みバンクとして使用するように構成されているシステム。
【請求項１６】
請求項１４に記載のシステムであって、さらに、
受け取られた画像データに空間周波数変換を実行して、前記受け取られた画像データのそれぞれのサンプルブロックの空間周波数変換を表す一つ以上の周波数係数のセットを生成するように構成されている空間周波数変換要素と、
前記一つ以上の周波数係数のセットを量子化して、一つ以上の量子化された周波数係数のセットを生成するように構成されている量子化要素と、
前記制御システムが前記所定のシーケンスに順序付けられている一つ以上の量子化された周波数係数の第１のセットを、前記書き込みバンクに格納することにより、それぞれのフリップフロップバンクを前記書き込みバンクとして使用するように構成され、前記一つ以上の量子化された周波数係数のセットを所定のシーケンスに順序付けるように構成されているシーケンシング要素と、
所定のシーケンスで順序付けられている一つ以上の量子化された周波数係数の第２のセットを含む前記読み出しバンクの内容を符号化して、前記受け取られた画像データに対する符号化データを生成するように構成されている符号化要素を備えるシステム。
【請求項１７】
請求項１６に記載のシステムであって、
前記空間周波数変換要素は、離散コサイン変換を実行するように構成され、
前記符号化要素は、前記読み出しバンクの前記内容にエントロピー符号化を実行して、前記符号化されたデータを生成するように構成されているシステム。
【請求項１８】
請求項１４に記載のシステムであって、
前記制御システムは、さらに、
前記読み出しバンクの内容が前記画像データの第１のサンプルブロックに相当する一つ以上の周波数係数の第１のセットを含み、前記読み出しバンクの前記内容に逆空間周波数変換を実行して、前記画像データの第１のサンプルブロックを生成するように構成されている逆空間周波数変換要素に前記読み出しバンクの内容を提供することにより、それぞれのフリップフロップバンクを前記読み出しバンクとして使用し、
前記画像データの第２のサンプルブロックに相当する一つ以上の周波数係数の第２のセットを前記書き込みバンクに格納することにより、それぞれのフリップフロップバンクを前記書き込みバンクとして使用するように構成されているシステム。
【請求項１９】
請求項１４に記載のシステムであって、さらに、
前記画像データのサンプルに相当する受け取られた符号化データを復号化し、所定のシーケンスに順序付けられている一つ以上の量子化された周波数係数のセットを提供するように構成されている復号化要素と、
前記エントロピー復号化要素から受け取られた前記一つ以上の量子化された周波数係数のセットを逆の所定のシーケンスに順序付けするように構成されているシーケンシング要素と、
前記制御システムは、さらに、一つ以上の周波数係数の第１のセットを前記書き込みバンクに格納することにより、それぞれのフリップフロップバンクを前記書き込みバンクとして使用するように構成され、前記シーケンシング要素から受け取られた前記一つ以上の量子化された周波数係数のセットを逆量子化して、一つ以上の周波数係数のセットを提供するように構成されている逆量子化要素と
前記読み出しバンクの内容は一つ以上の周波数係数の第２のセットを含み、前記読み出しバンクの内容に逆空間周波数変換を実行して画像データを生成するように構成されている逆空間周波数変換要素を備えるシステム。
【請求項２０】
請求項１４に記載のシステムであって、
前記第１のフリップフロップバンク、前記第２のフリップフロップバンク、および前記制御システムは印刷デバイスに含まれているシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データ処理に関する。
【背景技術】
【０００２】
近年、さまざまな種類の印刷デバイスが業務用および民生用の両方で普及してきている。従来の白黒のプリンターに加え、カラープリンター、スキャナ、コピー機、ファックス機、およびその他の装置も今日では一般的である。これらの機能の二つ以上に対応している複合機（ＭＦＰ）もまた広く普及している。いろいろな機能がある中でも、これらのデバイスは画像データを処理するために使用される。
【０００３】
前記画像データの処理には、例えば、画像データの圧縮と符号化、および／または画像データの解凍と復号化を挙げることができる。画像処理技術の一つの例には、ジョイント・フォトグラフィック・エキスパート・グループ（ＪＰＥＧ）がある。一般的に、画像データのＪＰＥＧ符号化プロセスには、空間周波数変換、量子化，データシーケンシング（順序付け）、およびエントロピー符号化が挙げられ、そして画像データのＪＰＥＧ復号化プロセスには、一般的に、ＪＰＥＧ符号化プロセスの逆のプロセスが挙げられる。
【０００４】
先行技術の配置を改善もしくは少なくとも一つ以上の有用な代替案を提供して画像データ処理をより電力効率を良くしかつ高速化することが望まれている。
【発明の概要】
【０００５】
例示の実施形態において、画像データを処理するための方法は、第１の期間中に、第１のフリップフロップ格納要素の内容を符号化して第１の画像データに対する第１の符号化データを生成する。本例では、前記第１のフリップフロップ格納要素の内容は、前記第１の画像データに相当し所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第１のセットを含む。さらに、前記方法は、前記第１の期間中に、前記所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第２のセットを第２のフリップフロップ格納要素に格納することを含む。本例では、前記一つ以上の量子化された周波数係数の第２のセットは、第２の画像データに相当する。前記方法は、また、前記第１のフリップフロップ格納要素の前記内容を符号化し、そして前記一つ以上の量子化された周波数係数の第２のセットを前記第２のフリップフロップ格納要素に格納した後で、前記第１のフリップフロップ格納要素の前記内容をゼロに設定することを含む。本例は、また、前記第１の期間の後の第２の期間中に、前記第２のフリップフロップ格納要素の内容を符号化して、前記第２の画像データに対する第２の符号化データを生成することを含む。前記第２のフリップフロップ格納要素の前記内容は、前記第１の期間中に格納された前記一つ以上の量子化された周波数係数の第２のセットを含む。これに加えて，前記第２の期間中に、前記方法は、所定のシーケンスに順序付けられた一つ以上の量子化された周波数係数の第３のセットを、前記第１のフリップフロップ格納要素に格納することを含む。前記一つ以上の量子化された周波数係数の第３のセットは、第３の画像データに相当する。
【０００６】
別の例示の実施形態では、画像データを処理するための方法は、第１の期間中に、第１のフリップフロップ格納要素の内容に逆空間周波数変換を実行して第１の画像データを生成することを含む。本例では、前記第１のフリップフロップ格納要素の前記内容は、前記第１の画像データの空間周波数変換を表す一つ以上の周波数係数の第１のセットを含む。さらに、前記方法は、前記第１の期間中に、一つ以上の周波数係数の第２のセットを第２のフリップフロップ格納要素に格納することを含む。本例では、前記一つ以上の周波数係数の第２のセットは、第２の画像データの空間周波数変換を表す。前記方法は、また、前記第１のフリップフロップ格納要素の内容に逆空間周波数変換を実行し、前記一つ以上の周波数係数の第２のセットを前記第２のフリップフロップ格納要素に格納した後で、前記第１のフリップフロップ格納要素の前記内容をゼロに設定することを含む。これに加えて，前記第１の期間の後の第２の期間中に、前記方法は、前記第２のフリップフロップ格納要素の内容に逆空間周波数変換を実行して前記第２の画像データを生成することを含む。前記第２のフリップフロップ格納要素の前記内容は、前記第１の期間中に格納された前記一つ以上の周波数係数の第２のセットを含む。さらに、前記第２の期間中に、前記方法は、一つ以上の周波数係数の第３のセットを前記第１のフリップフロップ格納要素に格納することを含む。前記一つ以上の周波数係数の第３のセットは、第３の画像データの空間周波数変換を表す。
【０００７】
さらなる例示の実施形態では、画像処理システムは、第１のフリップフロップバンクおよび第２のフリップフロップバンクおよび画像データのＪＰＥＧ処理を制御するように構成された制御システムを含む。本例では、前記制御システムは、さらに、第１の期間中、前記第１もしくは第２のフリップフロップバンクの一つを書き込みバンクとしておよび前記第１もしくは第２のフリップフロップバンクの他方を読み出しバンクとして使用し、そして第２の期間中、前記書き込みバンクおよび読み出しバンクとしての前記第１および第２のフリップフロップバンクの前記使用を互い違いにするように構成されている。前記制御システムは、また、前記使用を互い違いにした後、前記読み出しバンクをゼロに初期化するように構成されている。
【０００８】
他の態様、有利な点、および代替案と同様、これらのことは、必要に応じて添付図面を参照して以下の詳細な説明を読むことによって当業者にとって明白になるであろう。さらに、本明細書における当該概要および他のセクションで提供されている説明は、請求されている主題を限定のためでなく例として示すことを意図していることを理解されたい。
【図面の簡単な説明】
【０００９】
【図１】例示の実施形態に係る印刷デバイスを示す。
【００１０】
【図２Ａ】例示の実施形態に係る、印刷デバイスの画像処理構成要素をブロック図にて示す。
【００１１】
【図２Ｂ】例示の実施形態に係る、画像処理において使用する格納要素およびデータをブロック図にて示す。
【００１２】
【図３】８ｘ８データブロック用の所定のデータシーケンスの一例である。
【００１３】
【図４Ａ】例示の実施形態に係る、印刷デバイスの画像処理構成要素をブロック図にて示す。
【００１４】
【図４Ｂ】例示の実施形態に係る、画像処理において使用する格納要素およびデータをブロック図にて示す。
【００１５】
【図５】例示の実施形態に従って画像データを符号化する方法を示す。
【００１６】
【図６】例示の実施形態に従って画像データを復号化する方法を示す。
【００１７】
【図７】本開示のさまざまな実施形態で使用する格納要素の一例のブロック図である。
【発明を実施するための形態】
【００１８】
本明細書において方法とシステムの例を記述する。さらに他の例示的な実施形態もしくは特徴を利用することは可能であり、また本明細書において提示されている主題の主旨もしくは範囲から逸脱することなく、その他の変更をすることは可能である。以下の詳細な説明において、本明細書の一部を構成する添付図面を参照する。
【００１９】
本明細書において記載されている例示的な実施形態は限定することを意図するものではない。本明細書において全般的に記載され、そして図面に示されているように、本開示の諸態様は、様々に異なる構成に配置し、置き換え、結合し、分離し、および設計することは容易に理解されるであろう、そしてそれらの全てが本明細書において明瞭に熟慮されている。
［１．概要］
【００２０】
印刷技術は、白黒画像のみを生成する簡単なドットマトリクスベースの出力デバイスから高解像度のカラー画像を生成することができる今日の進歩したレーザーベースの印刷デバイスへと過去３０年以上にわたって発展してきた。それと共に、最近の印刷デバイスは、また、コピー機、スキャナ、およびファックス機として機能することも可能である。そうするため、印刷デバイスは、印刷しもしくはファックスするために待ち行列に入れられ、またはスキャンされた多くの電子文書に対する画像データを格納することができる場合がある。従って、多くの印刷デバイスは、例えば、一つ以上の処理部、データ記憶部、および入出力インターフェースを含むことが可能なコンピューティング・デバイスの特殊な形態である。
【００２１】
住宅、企業もしくは別の種類の場所で使用されるかどうかにかかわらず、印刷デバイスは、他のいろいろなコンピューティング・デバイスと通信可能に接続可能な共有のリソースであり得る。従って、状況によっては、多くのコンピューティング・デバイスが印刷のために電子文書を印刷デバイスに送信する場合があるので、印刷デバイスに対する格納および処理の要求はかなり高い場合がある。一般的には、印刷デバイスは、早着順に一度に一つの電子文書を印刷、コピー、ファックス、および／またはスキャンすることがよくある。従って、印刷デバイスは、ともすれば、処理されるのを待っている多数の電子文書を格納する場合がある。データの記憶装置（例えば、ランダム・アクセス・メモリ（ＲＡＭ），固体メモリ、ハードドライブメモリ、および／またはフラッシュメモリなどのメモリ）のコストは高価である可能性があるので、印刷デバイスのデータ記憶の要求量を低減するために、格納された電子文書を圧縮することは有益であろう。それと共に、電子文書によっては、印刷デバイスからコンピューティング・デバイスへ、および／またはコンピューティング・デバイスから印刷デバイスへ転送される場合があるので、当該電子文書を圧縮することにより、より早く転送することができ、しかもネットワーク容量の使用をより少なくすることができる。
【００２２】
さらに、印刷ジョブは多量な場合がある（例えば、印刷ジョブは、何百ページも含む一つ以上の電子文書を含む場合がある）ので、列の中で順番を待っている印刷ジョブを圧縮することにより、各ジョブが印刷される前の短期格納スペースを節約する。これに加えて，ユーザは、後日印刷するために印刷ジョブを長期の記憶装置に保管したい場合がある。従って、印刷ジョブを圧縮することにより、より多くの印刷ジョブを保管できる可能性がある。さらに、大量の印刷ジョブを長期の記憶装置に格納したり検索する動作は手間がかかる可能性があるが、印刷ジョブを圧縮して大きさを小さくすることにより早めることが可能である。
［２．印刷デバイスの例］
【００２３】
図１は例示の印刷デバイス２０を示す。印刷デバイス２０は、部分的におよび／または全体的に格納されている電子文書を各種の物理的出力媒体に印刷するよう構成することができる。当該出力媒体は、いろいろな大きさと種類の紙、オーバーヘッドプロジェクタ用透明フィルムなどを含むが、これらに限定はされない。印刷デバイス２０は、同義的に「プリンター」と呼んでもよい。
【００２４】
印刷デバイス２０は、パーソナルコンピュータ、サーバーデバイス、プリンターサーバー等の他のコンピューティング・デバイスに対するローカル周辺装置としての働きをする場合がある。この場合、印刷デバイス２０は、シリアルポートケーブル、パラレルポートケーブル、ユニバーサルシリアルバス（ＵＳＢ）ケーブル、ファイヤーワイヤー（ＩＥＥＥ１３９４）ケーブル、もしくは高解像度マルチメディアインターフェース（ＨＤＭＩ）ケーブル等のケーブルによってコンピューティング・デバイスに接続することができる。こうして、コンピューティング・デバイスは、印刷デバイス２０に対して電子文書の供給源としての働きをすることができる。
【００２５】
一方、印刷デバイス２０は、イーサネットもしくは８０２．１１（Ｗｉｆｉ）インターフェース等の有線もしくは無線のネットワークインターフェースを含み得る。そのように配置されて、印刷デバイス２０は、ネットワークを介して印刷デバイス２０と通信可能な任意の数のコンピューティング・デバイスに対する印刷デバイスとしての働きをすることができる。実施形態によっては、印刷デバイス２０は、ローカル周辺装置およびネットワーク接続されたプリンターの両方としての働きを同時にすることが可能である。印刷デバイス２０を使用するために、コンピューティング・デバイスは、一つ以上のプリンタードライバーを組み込む場合がある。当該プリンタードライバーは、印刷される電子文書を表す画像データを、コンピューティング・デバイスに格納された各種のローカル表現から印刷デバイス２０によりサポートされる一つ以上の表現に変換するソフトウェアコンポーネントを含み得る。それでも、印刷デバイス２０は、コンピューティング・デバイスとみなすことができ、印刷関連および非印刷関連のタスクの両方を実行することが可能である。
【００２６】
上記に述べたように、印刷デバイス２０は、また、コピー機、ファックス機、およびスキャナの機能を含み得る。実施形態によっては、印刷デバイス２０は、コピー機および／またはファックス機の機能を促進するためスキャナ機能を用いることが可能である。例えば、印刷デバイス２０は、物理的文書をスキャンして電子フォーマットにし、次に得られた電子文書を印刷してコピーを提供し、および／または電話インターフェースを介して得られた電子文書を送信してファックス機能を提供する。
【００２７】
各種機能に対応するために、印刷デバイス２０は、原稿の給紙／排紙トレイ２２、用紙保管部２４、ユーザインターフェース２６、スキャニング要素２８、および筐体３０を含む。印刷デバイスはさまざまな形態を採り得ることを理解されるべきである。従って、印刷デバイス２０は、図１に示された構成要素よりも多いもしくは少ない構成要素、および／または図１に示された構成要素にくらべて異なった仕方で配置された構成要素を含む可能性がある。
【００２８】
原稿の給紙／排紙トレイ２２は、スキャンされ、コピーされ、もしくはファックスされる物理的文書（例えば、一枚以上の紙の積み重ねた山）を保持することができる。原稿の給紙／排紙トレイ２２は、印刷デバイス２０による処理のために、印刷デバイス２０が、人手を介することなく、複数枚の物理的文書を自動的に送り出すことを可能にする。原稿の給紙／排紙トレイ２２は、また、印刷デバイス２０によって処理された物理的文書を保持するための一つ以上の分離した排紙トレイを含み得る。これらには、印刷デバイス２０によりスキャンされ、コピーされもしくはファックスされた物理的文書と共に、例えば、印刷デバイス２０のファックスおよび／またはコピー機能により生成された物理的文書も含まれ得る。
【００２９】
用紙保管部２４は、各種の物理的媒体のためのトレイおよび／または給紙要素を含み得る。例えば、用紙保管部２４は、８．５ｘ１１インチ用紙、Ａ４用紙、レターヘッドのある用紙、封筒等のための別個のトレイを含み得る。物理的媒体を生成する（例えば、印刷、コピー、および／またはファックスの受信）ことに係わる印刷デバイス２０のあらゆる機能のために、用紙保管部２４は、物理的媒体を供給することが可能である。
【００３０】
ユーザインターフェース２６は、ユーザからの入力を受け取ることおよびユーザに出力を提供すること等、印刷デバイス２０と人もしくは人以外のユーザとの情報交換を促進することが可能である。したがって、ユーザインターフェース２６は、キーパッド、キーボード、タッチパネルもしくは存在感知パネル、ジョイスティック、マイクロホン、静止カメラおよび／またはビデオカメラ等、入力構成要素を含み得る。ユーザインターフェース２６は、また、（例えば、存在感知パネルと組み合わせることが可能である）表示画面、陰極線管（ＣＲＴ），液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ベースのディスプレイ、デジタル光処理（ＤＬＰ：登録商標）技術を使用したディスプレイ、電球、および／または既知もしくは今後開発される一つ以上の類似なデバイス等、一つ以上の出力構成要素を含み得る。ユーザインターフェース２６は、また、スピーカー、スピーカージャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホンおよび／または既知もしくは今後開発される他の類似のデバイスを介して可聴出力を生成することができるように構成することが可能である。
【００３１】
スキャニング要素２８は、その下で、可動光源がガラスパネルの上に置かれた物理的媒体をスキャンするよう動作するガラスパネルであり得る。あるいは、ガラスパネルの下のデジタルカメラが、物理的媒体の写真を撮ることにより、ガラスパネルの上に置かれた物理的媒体を「スキャンする」ことが可能である。スキャンされた物理的媒体の画像は、印刷デバイス２０に関連付けられたデータ記憶部に格納され得る。
【００３２】
筐体３０は、原稿の給紙／排紙トレイ２２、用紙保管部２４、ユーザインターフェース２６、およびスキャニング要素２８等印刷デバイス２０の各種構成要素を収容しおよび／または相互に接続する物理的ハウジングを含み得る。それと共に、筐体３０は、図１に示されていない他の構成要素を収容することができる。例えば、筐体３０は、一つ以上のトナーカートリッジ、液体インクジェット、ベルト、ローラー、および／または電源を収容することが可能である。さらに、筐体３０は、有線および／または無線ネットワークインターフェース、電話インターフェース（例えば、ＲＪ４５ジャック）、ＵＳＢインターフェース、ＢＬＵＥＴＯＯＴＨ（登録商標）インターフェース、カード読取部のポート等の通信インターフェースを含み得る。
【００３３】
さらに、印刷デバイス２０は、汎用のおよび／または特別に設計されたコンピューティング・デバイス構成要素を搭載する場合があるので、筐体３０は、また、当該構成要素のいくつかもしくは全てを収容する場合がある。例えば，印刷デバイス２０は、処理部およびデータ記憶部（明示はされていない）を含み得る。一般的に、処理部は、一つ以上の汎用プロセッサ等の一つ以上の中央処理装置（ＣＰＵ）および／または一つ以上の専用プロセッサ（例えば、特定用途向け集積回路（ＡＳＩＣ）もしくはデジタル信号プロセッサ（ＤＳＰ）等）を含み得る。データ記憶部は、揮発性および／または不揮発性データ記憶部を含むことが可能で、処理部に全体的にもしくは部分的に統合され得る。データ記憶部は、処理部により実行可能なプログラム命令、および本明細書に記載されている各種の方法、プロセス、もしくは機能を実行するために当該命令によって操作されるデータを格納することが可能である。あるいは、当該方法、プロセス、もしくは機能は、ハードウェア、ファームウェア、および／またはハードウェア、ファームウェア、およびソフトウェアの任意の組み合わせによって規定することができる。従って、データ記憶部は、一つ以上のプロセッサにより実行される際、本明細書もしくは添付図面で開示された任意の方法、プロセスあるいは機能を印刷デバイス２０に実行させるプログラム命令を格納している、有形で非一時的でコンピュータ読み取り可能な媒体を含み得る。
【００３４】
さらに、印刷デバイス２０の構成要素は、また、画像データを圧縮／符号化および／または解凍／復号化するためのハードウェアおよび／またはソフトウェアコンポーネントを含み得る。
［３．画像データの符号化器および復号器の例］
【００３５】
図２Ａおよび図４Ａは、印刷デバイス２０に含まれ得るコンピューティング・デバイス構成要素（例えば、コンピューティング・デバイスの機能要素）の例示の実施形態を示す。最初に図２Ａを参照すると、例示の画像データ符号化器４０が示されている。符号化器４０は、画像データ４２を受け取るように構成されている。図示の例において、画像データ４２は、画像データブロック（例えば、８ｘ８画素ブロック）に分割されており、画像データブロックは、符号化器４０の空間周波数変換器４４に提供される。空間周波数変換器４４は、画像データへ離散コサイン変換（ＤＣＴ）の実行等、空間周波数変換を行う。画像データに空間周波数変換を行うことにより、画像データブロックに対する空間周波数変換を表す一つ以上の周波数係数のセットをもたらす。８ｘ８画素ブロックの例において、空間周波数変換器４４は、単一のクロックサイクルで１個と６４個の間の周波数係数を生成するように構成されている。図２Ｂを参照して、一例を挙げれば、当該得られた周波数係数Ｓｕｖは、格納要素６０に格納され得る。別の例では、得られた１個乃至６４個の周波数係数Ｓｕｖのセットは、別個に格納される必要はなく、より詳細に後述するように、量子化器、データシーケンサ、およびデータ読み出し／書き込みブロックによる単一動作（例えば、単一クロックサイクル）で操作される。
【００３６】
例えば，１個乃至６４個の周波数係数Ｓｕｖのセットは、次に直ちに量子化器４６により操作され得る。量子化器４６は、一つ以上の量子化された周波数係数のセット等、量子化されたデータを生成する。一般的に、量子化は、画像データが空間周波数変換操作により周波数領域に変換された後で、高周波成分を低減もしくは除去するための処理である。量子化器４６は、量子化係数を含む量子化テーブルを用いて、周波数係数を操作する。より具体的には、符号化器４０において、量子化器４６は、周波数係数Ｓｕｖを対応する量子化係数で除算して量子化された周波数係数のセットを生成する。図２Ｂは、量子化係数Ｑｕｖが、格納要素６２に格納され得るもしくはそうでない場合、クロックサイクルごとに１個もしくは６４個までの量子化係数Ｑｕｖが使用できる量子化器に対して入力として使用可能とされる例を示す。量子化器４６は、また、除算の結果を丸めて重要でない高周波成分を除去することが可能である。
【００３７】
本例において、量子化器４６により生成された量子化された周波数係数Ｓｑｕｖのセットは、次に、直ちに、単一操作もしくは単一のクロックサイクルで、データシーケンサ４８に提供され得る。データシーケンサ４８は、量子化された周波数係数Ｓｑｕｖのセットを所定のシーケンスで配列するように構成されている。そのような一つのシーケンスは、図３で示されているジグザグシーケンスである。図２Ｂは、また、ジグザグシーケンス操作を示すブロック６４を示す。
【００３８】
データシーケンサ４８に続き、データ読み出し／書き込みブロック５０が設けられて量子化された周波数係数Ｓｑｕｖを「書き込み」格納要素すなわちバンクに書き込む。１個と６４個の係数の間で（例えば、８ｘ８画素ブロックに対して）拡張可能な周波数係数Ｓｕｖと同様に、単一クロックサイクル中にブロック５０により書き込まれる量子化された周波数係数Ｓｑｕｖの数もまた、構成要素４４、４６、および４８の処理速度に応じて、１個と６４個の係数の間で拡張可能である。
【００３９】
書き込み機能と並行して、読み出し／書き込みブロック５０は、また、別の「読み出し」格納要素すなわちバンクの内容を読み出しもしくは抽出し、そして抽出された内容をデータ符号化器５２に提供することが可能である。ブロック５０の書き込み速度および読み出し速度は完全に独立であり得る。現在の画像データブロックが、処理されつつある画像データの最初のデータブロックでないとすると、抽出された読み出し格納要素の内容は、前に格納されたもしくは書き込みされた量子化された周波数係数Ｓｑｕｖのセットを含む。データ符号化器５２は、抽出された、量子化された周波数係数ＳｑｕｖにエントロピーもしくはＨｕｆｆｍａｎ符号化を行い、格納、転送、もしくはその他の処理のために符号化データ５４を提供する。ブロック５０の読み出し機能および符号化器５２の符号化機能は、クロックサイクルごとに、拡張可能な数の前に格納された量子化された周波数係数Ｓｑｕｖ（例えば、１個乃至６４個の係数）を用いて行うことができ、符号化器の処理速度に依存しながら、相当する拡張可能な数の符号化データ５４の符号を提供する。
【００４０】
図２Ｂは、書き込み／読み出し格納バンクとして機能する二つの格納要素６６、６８を示す。本例では、格納要素６６、６８の各々は拡張可能なＮｘＭフリップフロップ格納構造（ＮおよびＭは整数）である。格納要素６０、６２もまた、ＮｘＭフリップフロップ格納構造であり得る。拡張可能な２ｘ２フリップフロップ格納構造すなわちバンクの例が図７に示されており、より詳細に後述する。
【００４１】
一般的に、フリップフロップ格納構造は、画像データ処理のための格納要素として通常使用されるＳＲＡＭ格納構造と比較していろいろな便益をもたらす。例えば，ＳＲＡＭ格納構造の所望のセルにデータを書き込むには、通常、格納構造の特定の行にアクセスしかつ読み取り改変書き込み処理を行い、行内の所望のセルにアクセスし書き込む必要がある。さらに、ＳＲＡＭ格納構造のポートの数により、同時に（例えば、単一のクロックサイクルの間に）アクセス可能な行の数は制限され、したがって、同時に書き込むことができる（もしくは読み出しできる）セルの数が制限される。ＳＲＡＭは、通常単一もしくはデュアルポートを有するが、高度にカスタマイズされた、および比較的高価なＳＲＡＭはより多くのポートを有する場合がある。本実施形態では、大きさを容易に拡張でき（しかも比較的安価で）、かつ単一クロックサイクル中に、同時に、任意の行の任意のセルに書き込みおよび任意の行の任意のセルから読み出しするのに使用可能なフリップフロップ格納構造を用いる、それにより、通常のＳＲＡＭを用いた場合に可能と思われるデータ速度より場合によってははるかに高いデータ速度を提供する。さらに、本明細書で使用されるフリップフロップ格納構造は、単一クロックサイクル中に、選択してリセット、セット、もしくはゼロにすることができ、それにより、より詳細に後述するように、さらなる便益を提供し得る。それに対して、通常のＳＲＡＭは、各セルに個別にゼロを書き込む必要があり、これにより、一般的に完了するのに多くのクロックサイクルを要する可能性がある。
【００４２】
次に図４Ａおよび４Ｂを参照すると、例示の画像データ復号器７０が示されている。復号器７０は、符号化された画像データ５４（例えば、図２Ａの符号化データ）を受け取るように構成されている。図示されている例では、符号化データは、直ちにデータ復号器７２に提供される。データ復号器７２は、データ符号化器５２の逆の機能、例えば、逆エントロピーもしくはＨｕｆｆｍａｎ復号化を実行し、量子化された周波数係数Ｓｑｕｖを生成する。８ｘ８画素ブロックの例において、データ復号器７２は、単一のクロックサイクルで、１個と６４個の間の量子化された周波数係数Ｓｑｕｖを生成するように構成されている。係数Ｓｑｕｖの数は、一つには、受け取られた符号化された画像データに依存する場合がある。図４Ｂにおいて、一例を挙げれば、得られた量子化された周波数係数Ｓｑｕｖは、格納要素９０に格納され得る。別の例では、得られた１個乃至６４個の量子化された周波数係数Ｓｑｕｖのセットは、別個に格納される必要はなく、より詳細に後述されるように、データ逆シーケンサ、逆量子化器、およびデータ読み出し／書き込みブロックにより単一操作（例えば、単一クロックサイクル）で操作される。
【００４３】
本例では、１個乃至６４個の量子化された周波数係数Ｓｑｕｖのセットは、データシーケンサ４８の操作に起因する所定のシーケンスで配列され得る。従って，量子化された周波数係数Ｓｑｕｖは、直ちにデータ逆シーケンサ７４に提供され、データ逆シーケンサ７４は量子化された周波数係数Ｓｑｕｖを所定のシーケンスの逆に配列する。図４Ｂを参照して、一例を挙げれば、再配列された、得られた量子化された周波数係数Ｓｑｕｖは、格納要素９２に格納され得る。
【００４４】
別の例では、再配列された、得られた量子化された周波数係数Ｓｑｕｖは別個に格納される必要はなく、データ逆シーケンサ７４の後に、量子化された周波数係数Ｓｑｕｖは直ちに逆量子化器７６に提供され、逆量子化器７６は、量子化された周波数係数Ｓｑｕｖを逆量子化する。一の例において、逆量子化器７６は、量子化器４６に関連して上述したときと同じ量子化テーブルおよび量子化係数を用いる。しかしながら，逆量子化器７６は量子化された周波数係数Ｓｑｕｖに対応する量子化係数Ｑｕｖを掛ける、そして量子化器４６により実行された丸めの逆を実行して周波数係数Ｓｕｖを抽出する。
【００４５】
図４Ａの例において、データ読み出し／書き込みブロック７８は、周波数係数Ｓｕｖを「書き込み」格納要素すなわちバンクに書き込む。ブロック７８により単一クロックサイクル中に書き込まれる周波数係数Ｓｕｖの数は、構成要素７２、７４、および７６の処理速度に応じて、１個と６４個の係数（例えば、８ｘ８画素ブロックで）の間で拡張可能である。
【００４６】
書き込み機能と同時に、読み出し／書き込みブロック７８は、また、別の「読み出し」格納要素すなわちバンクの内容を読み出しもしくは抽出することが可能である、そして抽出された内容を逆空間周波数変換器８０に提供する。現在の符号化された画像データブロックが、処理中の画像データの最初のデータブロックではないとすると、抽出された読み出し格納要素の内容は、前に格納されたもしくは書き込みされた周波数係数Ｓｕｖのセットを含む。逆空間周波数変換器８０は、表示、印刷、もしくは他の処理のため元の画像データ４２を抽出するために、変換器４４により実行された空間周波数変換の逆を実行する。ブロック７８の読み出し機能および変換器８０の逆変換機能は、変換器８０の処理速度に応じて、拡張可能な数の、前に格納された周波数係数Ｓｕｖ（例えば、１個乃至６４個の係数）を用いて、クロックサイクルごとに実行され得る。
【００４７】
図４Ｂは、復号器７０の書き込み／読み出し格納バンクとして機能する二つの格納要素９４、９６を示す。本例では、格納要素９４、９６のそれぞれは、拡張可能なＮｘＭフリップフロップ格納構造（ＮおよびＭは整数）である。格納要素９０、９２もまたＮｘＭフリップフロップ格納構造であってもよい。復号器においてフリップフロップ格納構造を用いることの便益は上記と同様である。より具体的には、フリップフロップ格納構造は、容易に（そして比較的安価に）拡張可能であり、そして、同時に、任意の行の任意のセルに書き込みおよび任意の行の任意のセルから読み出しするのに用いることができる。
［４．動作の例］
【００４８】
上記に加え、図５および図６は、例示の実施形態のフローチャートを示す。当該フローチャートで示されるステップは、印刷デバイス２０および／または他のコンピューティング・デバイス等一つ以上の印刷デバイスにより実行され得る。さらに、各個別のステップの態様は、必要に応じて多数のコンピューティング・デバイスの間で利用に供することが可能である。
【００４９】
図５は、例えば、図２Ａおよび図２Ｂの構成要素を使用することができる例示の符号化プロセス１００を示す。プロセス１００において、ブロック１０２では、図２Ａに示されるような画像データブロック等の画像データを受け取る。ブロック１０４では、空間周波数変換器４４が、画像データにＤＣＴを実行する等、空間周波数変換を実行する。
【００５０】
上記のように、ブロック１０６では、得られた一つ以上の周波数係数のセットは次に量子化器４６により操作されて、一つ以上の量子化された周波数係数のセットが生成される。その次に、ブロック１０８では、データシーケンサ４８が量子化された周波数係数のセットを所定のシーケンス（例えば、図３のジグザグシーケンス）に配列する。
【００５１】
ブロック１０８に続いて、ブロック１１０では、データ読み出し／書き込みブロック５０は、量子化された周波数係数Ｓｑｕｖを「書き込み」格納要素すなわちバンクに書き込む。一例を挙げれば、最後の量子化された周波数係数Ｓｑｕｖの後、データ読み出し／書き込みブロック５０は、量子化された周波数係数Ｓｑｕｖの終わりを示すブロック終結（ＥＯＢ）マーカーを追加する。本例において、ＥＯＢマーカーを付けることは、書き込み格納要素の全ての後続値がゼロであることを意味する。より詳細に後述するように、本開示では、ブロック１１４の間に、次の書き込み格納要素の内容をゼロに設定する、それにより、ブロック１１０で、後続値をゼロに設定することを必要とせずにＥＯＢマーカーの追加を容易にする。
【００５２】
ブロック１１２では、読み出し／書き込みブロック５０は、読み出し格納要素すなわちバンクの内容を読み出しもしくは抽出して、抽出した内容をデータ符号化器５２に提供する。またブロック１１２では、データ符号化器５２は、抽出された、量子化された周波数係数ＳｑｕｖにエントロピーもしくはＨｕｆｆｍａｎ符号化を行い、符号化データ５４を格納、転送もしくは他の処理のため提供する。ブロック１１２で、データ符号化器５２は、ＥＯＢマーカーに遭遇した場合、それ以降のデータセルの処理を停止する、それにより、処理時間を低減しかつ電力効率を向上する。ブロック１１２は、ブロック１０２乃至１１０の後の順で図示されているが、実際には、別の画像データブロックがブロック１０２乃至１１０で処理されている間、ブロック１１２の動作は、前に格納された量子化された周波数係数Ｓｑｕｖに対して同時に実行され得る。この構成により、並行処理をより効率的にかつ迅速に実行することができる。
【００５３】
ブロック１１４では、量子化された周波数係数Ｓｑｕｖが書き込み格納要素に書き込まれ、かつデータ符号化器５２が読み出し格納要素からの抽出された量子化された周波数係数Ｓｑｕｖを符号化した後、データ読み出し／書き込みブロック５０は、例えば、読み出し格納要素の内容をゼロに設定する。格納要素がフリップフロップ格納構造である実施形態では、読み出し／書き込みブロック５０（もしくはその他の制御部）は、単一クロックサイクルで格納構造の内容の全てをゼロに設定できる。それに対して、通常のＳＲＡＭでは、各セルに個別にゼロを書き込む必要があるであろう、そして、当該プロセスは完了するのに多くのクロックサイクルを要するであろう。
【００５４】
さらに、ブロック１１４では、読み出し／書き込みブロック５０は、例えば、次の画像データブロックを処理するために読み出し格納要素と書き込み格納要素の使用を互い違いにする。例えば図２Ｂを参照すると、第１のデータ処理期間中に、格納要素６６は書き込みバンクとして機能し、格納要素６８は読み出しバンクとして機能する。ブロック１１４では、データ読み出し／書き込みブロック５０は、格納要素６８の各セルをゼロに設定する、そして、続くデータ処理の第２の期間の間、次の画像データブロックに相当する量子化された周波数係数Ｓｑｕｖのセットを格納要素６８に書き込み、データ符号化器５２による処理のために格納要素６６から量子化された周波数係数Ｓｑｕｖを読み出す。ブロック１１４の後、制御はブロック１０２に戻り、上記のように次の画像データブロックを処理することができる。
【００５５】
格納要素６６、６８のフリップフロップデータ構造により、拡張可能な数の量子化された周波数係数Ｓｑｕｖを格納要素の対応するセルに、同時に（単一クロックサイクルの間に）書き込むことができる。また、フリップフロップデータ構造により、格納要素の内容の全てを単一クロックサイクルの間にゼロに設定することができる。この格納内容をゼロにする設定は、フリップフロップデータ構造により容易化され、そして、次の量子化された周波数係数Ｓｑｕｖのセットが計算されるとすぐに格納要素に格納できることにより、計算の（およびエネルギーの）節約をもたらす。
【００５６】
図６は、例えば、図４Ａおよび図４Ｂの構成要素を使用できる、例示の復号化プロセス１４０を示す。プロセス１４０において、ブロック１４２では、データ復号器７２は、符号化された画像データ（図２Ａの符号化データ５４等）を受け取る。ブロック１４４では、データ復号器７２は、データ符号化器５２の逆の機能を実行して量子化された周波数係数Ｓｑｕｖを生成する。
【００５７】
上記のように、ブロック１４６では、データ逆シーケンサ７４は、量子化された周波数係数Ｓｑｕｖを所定のシーケンスの逆に配列する。次に、ブロック１４８では、逆量子化器７６は、量子化された周波数係数Ｓｑｕｖを逆量子化して周波数係数Ｓｕｖを提供する。ブロック１４８では、逆量子化器７６がＥＯＢマーカーに遭遇した場合、逆量子化器７６はその後のデータ処理を停止する、そしてそれにより処理時間を低減しかつ電力効率を向上する。次に、ブロック１５０では、データ読み出し／書き込みブロック７８は、周波数係数Ｓｕｖを書き込み格納要素に書き込む。
【００５８】
ブロック１５２では、読み出し／書き込みブロック７８は、読み出し格納要素の内容を読み出しもしくは抽出し、そして抽出された周波数係数Ｓｕｖを逆空間周波数変換器８０に提供する。逆空間周波数変換器８０は、表示、印刷、もしくは他の処理のために元の画像データ４２を抽出するために、変換器４４により実行された空間周波数変換の逆を実行する。ブロック１５２は、ブロック１４２乃至１５０の後の順序で図示されているが、実際は、別の符号化された画像データブロックがブロック１４２乃至１５０で処理されている間、ブロック１５２の動作は、前に格納された周波数係数Ｓｕｖに対して同時に実行され得る。この構成により、平行処理をより効率的に実行することができる。
【００５９】
ブロック１５４では、周波数係数Ｓｕｖが書き込み格納要素に書き込まれ、そして変換器８０が読み出し格納要素からの抽出された周波数係数Ｓｕｖを変換した後、データ読み出し／書き込みブロック７８は、例えば、読み出し格納要素の内容をゼロに設定し、次の符号化された画像データブロックを処理するために読み出し格納要素と書き込み格納要素の使用を互い違いにする。格納要素が、フリップフロップ格納構造である実施形態においては、読み出し／書き込みブロック７８（もしくはその他の制御部）は、単一クロックサイクルで格納構造の内容の全てをゼロに設定できる。それに対して、通常のＳＲＡＭは、各セルに個別にゼロを書き込むことが必要であろう、そして当該プロセスは完了するのに多くのクロックサイクルを要するであろう。
【００６０】
例えば図４Ｂを参照すると、第１のデータ処理期間中に、格納要素９４は書き込みバンクとして機能し、格納要素９６は、読み出しバンクとして機能する。ブロック１５４で、データ読み出し／書き込みブロック７８は、格納要素９６の各セルをゼロに設定する、そして、続くデータ処理の第２の期間の間、次の符号化された画像データブロックに相当する周波数係数Ｓｕｖのセットを格納要素９６に書き込み、そして変換器８０による処理のために格納要素９４から周波数係数Ｓｕｖを読み出す。ブロック１５４の後、制御はブロック１４２に戻り、上記のように次の符号化された画像データブロックを処理することができる。
［５．例示のフリップフロップ格納要素］
【００６１】
次に図７を参照すると、例示の２ｘ２フリップフロップメモリバンク構造２００が示されている。図７において、４つのフリップフロップメモリ素子Ｗ、Ｘ、Ｙ、およびＺが示されている。メモリバンク構造２００は、さらなるフリップフロップメモリ素子を追加して、図２Ｂおよび図４Ｂに示されているように、メモリバンクを８ｘ８まで拡張する等、任意の数の所望のデータ行および列を含むように拡大もしくは縮小することができる。
【００６２】
図７において、メモリバンク２００は、各フリップフロップメモリ素子の格納機能を動作させるために使用されるクロック入力Ｃを含む。例えば、クロック入力Ｃの立ち上がりエッジは格納機能を動作させることができる。
【００６３】
メモリバンク２００は、また、切替え／リセット信号を含む。例示的な一実施形態において、クロック入力Ｃの立ち上がりエッジ時、他のいかなる入力にかかわらず、任意の所望のフリップフロップメモリ素子に格納されている現在データＱは、論理ゼロの状態に設定され得る。上記のように、初期化中もしくはリセット命令がある場合、切替え／リセット信号入力は論理１に設定され、そしてクロック入力Ｃの立ち上がりエッジ後、格納要素の全ての内容は論理ゼロに設定されるように、切替え／リセット信号入力は、全てのフリップフロップ格納要素に共通にできる。
【００６４】
さらに、メモリバンク２００は、イネーブル信号を含む。１例を挙げれば、クロック入力  Ｃの立ち上がりエッジ時、切替え／リセット信号が論理ゼロである場合、論理１であるイネーブル信号は、データ内容入力Ｄを各個別のフリップフロップ格納要素に格納させる。出力Ｑは、次に、各個別のフリップフロップ格納要素に格納されている現在データを示す。全ての出力は使用することが可能（読み出すことができる）であり、図２Ａおよび図４Ａの例におけるデータ符号化器５２および逆空間周波数変換器８０等、読み出しデータを必要とするブロックもしくは構成要素によりそれぞれ選択され得る。
【００６５】
さらに、メモリバンク２００は、各フリップフロップ格納素子のデータ内容入力Ｄに接続されるデータ選択モジュールを含む。データ選択モジュールは、該当するフリップフロップ格納素子のデータ内容入力Ｄとしてどのデータ（本例におけるＤａｔａ０、Ｄａｔａ１、Ｄａｔａ２、Ｄａｔａ３）を選択すべきか特定する選択信号を受け取る。
【００６６】
図７は、また、どのフリップフロップ格納要素をどんなデータ内容で更新すべきかを選択する機能を果たす書き込みアドレス復号器モジュールを含む。例えば、Ｗｒｉｔｅ＿Ａｄｄｒｅｓｓ＿０が、フリップフロップＹを「指し示す」場合、書き込みアドレス復号器モジュールは、イネーブルＹ信号およびデータ選択Ｙ信号を生成して、更新対象のＷｒｉｔｅ＿Ｄａｔａ＿０を選択する。Ｗｒｉｔｅ＿Ａｄｄｒｅｓｓ＿１は、別のフリップフロップ格納要素を指し示す等である。各画素は、８ｘ８構造において特定の位置を占めているので、この構成はアドレス衝突を起こすことがない、なぜならば、同じフリップフロップ格納要素は書き込みアドレス復号器モジュールの一つ以上のＷｒｉｔｅ＿Ａｄｄｒｅｓｓ＿Ｎにより指し示されることがなく、単一クロックサイクルで複数のデータが書き込まれることが可能だからである。このことは、通常、ＳＲＡＭ格納要素を使用する既知のＪＰＥＧ復号化プロセスに比較してさらなる潜在的な便益である。
【００６７】
書き込みアドレス復号器モジュールは、必要に応じて一つ以上の書き込みポートに拡張でき、単一クロックサイクルで任意の数のデータセルの格納を可能にする。例えば，ＪＰＥＧ画像処理では、通常の画像データブロックは、６４個の相当するデータセルを含み得る８ｘ８画素ブロックである。書き込みアドレス復号器は、１個乃至６４個の書き込みポートに拡張可能であり、したがって、単一クロックサイクルで６４個の異なる格納セルに書き込むことができる。
［６．結論］
【００６８】
本出願において記述されている具体的な実施形態に関して、本開示は限定されるべきではなく、それらはいろいろな態様の実例として意図されている。当業者にとって明白であるように、本開示の主旨と範囲から逸脱することなく多くの変更および変形をすることが可能である。本記載に列挙されていることに加え、本開示の範囲内の機能的に等価な方法および装置は前述の記載から明白であろう。そのような変更および変形は、添付された請求項の範囲内に入るように意図されている。
【００６９】
図面における、任意のすなわち全てのラダー図、シナリオ、およびフローチャートに関しておよび本記載で述べられたように、各ブロックおよび／または通信は、例示の実施形態に従って情報を処理しおよび／または情報を送信することを表し得る。他の実施形態もそのような例示の実施形態の範囲に含まれ得る。さらに、より多くのもしくはより少ないブロックおよび／または機能が、本記載に記述されているどのラダー図、シナリオ、およびフローチャートと共に使用されてもよいし、また当該ラダー図、シナリオ、およびフローチャートは、部分的にもしくは全体的にお互いに結合されてもよい。
【００７０】
情報の処理を表すステップもしくはブロックは、本記載の方法もしくは技術の具体的な論理機能を実行するように構成することが可能な回路に相当し得る。それに代えてまたはさらに、情報の処理を表すステップもしくはブロックは、モジュール、セグメント、もしくはプログラムコードの一部分（関連するデータを含めて）に相当し得る。プログラムコードは、方法もしくは技術における具体的な論理機能もしくは動作を実行するための、処理部により実行可能な一つ以上の命令を含み得る。プログラムコードおよび／または関連するデータは、ディスクドライブ、ハードドライブ、もしくはその他の記憶媒体を含む記憶装置等の任意の種類のコンピュータ読み取り可能な媒体に格納することが可能である。
【００７１】
コンピュータ読み取り可能な媒体は、また、レジスタメモリ、プロセッサキャッシュ、および／またはランダムアクセスメモリ（ＲＡＭ）のような短期間データを格納するコンピュータ読み取り可能な媒体等の、非一時的でコンピュータ読み取り可能な媒体を含み得る。コンピュータ読み取り可能な媒体は、また、例えば、リードオンリーメモリー（ＲＯＭ）、光学もしくは磁気ディスク、および／またはコンパクトディスク・リードオンリーメモリー（ＣＤ―ＲＯＭ）のような、二次的もしくは持続的長期記憶装置等、より長期間プログラムコードおよび／またはデータを格納する非一時的でコンピュータ読み取り可能な媒体を含み得る。コンピュータ読み取り可能な媒体は、また、他の揮発性もしくは不揮発性記憶システムでもあり得る。コンピュータ読み取り可能な媒体は、また、例えば、コンピュータ読み取り可能な記憶媒体および／または有形の記憶デバイスと考えることができる。
【００７２】
本記載においてさまざまな態様および実施形態が開示されてきたが、他の態様および実施形態も当業者にとって明白であろう。本記載において開示されたさまざまな態様および実施形態は、例示目的であって限定することを意図するものではなく、真の範囲と主旨は以下の請求項により示されている。
【符号の説明】
【００７３】
２０  印刷デバイス
２２  給紙／排紙トレイ
２４  用紙保管部
２６  ユーザインターフェース
２８  スキャニング要素
３０  筐体
４０  符号化器
４４  変換器
４６  量子化器
４８  データシーケンサ
５２  データ符号化器
７０  復号器
７２  データ復号器
７４  データ逆シーケンサ
７６  逆量子化器
８０  変換器
【図１】
2016119672.tif 000003
【図２Ａ】
2016119672.tif 000004
【図２Ｂ】
2016119672.tif 000005
【図３】
2016119672.tif 000006
【図４Ａ】
2016119672.tif 000007
【図４Ｂ】
2016119672.tif 000008
【図５】
2016119672.tif 000009
【図６】
2016119672.tif 000010
【図７】
2016119672.tif 000011
【外国語明細書】
TITLE
Apparatus and Method for Processing Image Data
FIELD
[0001]   The present invention relates to a printing device.
BACKGROUND
[0002]   In recent years, various types of printing devices have become popular for both business and consumer use.  In addition to traditional black and white printers, color printers, scanners, copiers, fax machines, and other components are now common.  Multi-function peripherals (MFPs), that support two or more of these functions, are also widely available.  Among other functions, these devices are used to process image data.    
[0003]   The processing of image data may include, for instance, compressing and encoding the image data, and/or decompressing and decoding the image data.  One example image processing technology is Joint Photographic Experts Group (JPEG).  Generally, a JPEG encoding process of image data includes spatial frequency conversion, quantization, data sequencing, and entropy encoding, and a JPEG decoding process of image data generally includes an inverse of the JPEG encoding processes.  
[0004]   It is desirable to improve on the arrangements of the prior art or at least to provide one or more useful alternatives to help to make image data processing more power efficient and faster.   
Summary
[0005]   In an example embodiment, a method for processing image data includes, during a first period, encoding contents of a first flip-flop storage component to produce first encoded data for first image data.  In this example, the contents of the first flip-flop storage component include a first set of one or more quantized frequency coefficients that correspond to the first image data and that are ordered in a predetermined sequence.  Further, the method includes, during the first period, storing a second set of one or more quantized frequency coefficients that are ordered in the predetermined sequence in a second flip-flop storage component.  In this example, the second set of one or more quantized frequency coefficients correspond to second image data.  The method also includes, after encoding the contents of the first flip-flop storage component and storing the second set of one or more quantized frequency coefficients in the second flip-flop storage component, setting the contents of the first flip-flop storage component to zero.  This example also includes, during a second period after the first period, encoding contents of the second flip-flop storage component to produce second encoded data for the second image data.  The contents of the second flip-flop storage component include the second set of one or more quantized frequency coefficients stored during the first period.  In addition, during the second period, the method includes storing a third set of one or more quantized frequency coefficients that are ordered in a predetermined sequence in the first flip-flop storage component.  The third set of one or more quantized frequency coefficients correspond to third image data.
[0006]   In another example embodiment, a method for processing image data includes, during a first period, performing an inverse spatial frequency conversion on contents of a first flip-flop storage component to produce first image data.  In this example, the contents of the first flip-flop storage component include a first set of one or more frequency coefficients that represent a spatial frequency conversion of the first image data.  Further, the method includes, during the first period, storing a second set of one or more frequency coefficients in a second flip-flop storage component.  In this example, the second set of one or more frequency coefficients represent a spatial frequency conversion of second image data.  The method also includes, after performing an inverse spatial frequency conversion on contents of the first flip-flop storage component and storing the second set of one or more frequency coefficients in the second flip-flop storage component, setting the contents of the first flip-flop storage component to zero.  In addition, during a second period after the first period, the method includes performing inverse spatial frequency conversion on contents of the second flip-flop storage component to produce the second image data.  The contents of the second flip-flop storage component include the second set of one or more frequency coefficients stored during the first period.  Further, during the second period, the method includes storing a third set of one or more frequency coefficients in the first flip-flop storage component.  The third set of one or more frequency coefficients represent a spatial frequency conversion of third image data.
[0007]   In a further example embodiment, an image processing system includes a first flip-flop bank and a second flip-flop bank and a control system configured to control JPEG processing of image data.  In this example, the control system is further configured to, during a first period, use one of the first or second flip-flop banks as a write bank and the other of the first or second flip-flop banks as a read bank, and during a second period, alternate the use of the first and second flip-flop banks as the write bank and the read bank.  The control system is also configured to, after alternating the use, initialize the read bank to zero.
[0008]   These as well as other aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description with reference where appropriate to the accompanying drawings.  Further, it should be understood that the description provided in this summary section and elsewhere in this document is intended to illustrate the claimed subject matter by way of example and not by way of limitation.
Brief Description of the
Drawings
[0009]   Figure 1 depicts a printing device, according to an example embodiment.
[0010]   Figure 2A is a block diagram illustrating image processing components of a printing device, according to an example embodiment.
[0011]   Figure 2B is a block diagram illustrating storage components and data for use in image processing, according to an example embodiment.  
[0012]   Figure 3 is an example of a predetermined data sequence for an 8x8 data block. 
[0013]   Figure 4A is a block diagram illustrating image processing components of a printing device, according to an example embodiment.
[0014]   Figure 4B is a block diagram illustrating storage components and data for use in image processing, according to an example embodiment.  
[0015]   Figure 5 depicts a method of encoding image data in accordance with an example embodiment. 
[0016]   Figure 6 depicts a method of decoding image data in accordance with an example embodiment. 
[0017]   Figure 7 is a block diagram of an example storage component for use in various embodiments of the present disclosure. 
Detailed Description of
the Drawings
[0018]   Example methods and systems are described herein.  Other example embodiments or features may further be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented herein.  In the following detailed description, reference is made to the accompanying figures, which form a part thereof.   
[0019]   The example embodiments described herein are not meant to be limiting.  It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations, all of which are explicitly contemplated herein.
1.      Introduction
[0020]   Printing technology has evolved over the last 30-plus years from simple dot-matrix-based output devices producing only black and white images to today’s advanced laser-based printing devices that can produce high-resolution color images.  Additionally, modern printing devices may also function as copiers, scanners, and fax machines.  To do so, they may be able to store image data for numerous electronic documents that are queued for printing or faxing, or that have been scanned.  Thus, many printing devices are specialized forms of computing devices that may include, for example, one or more processors, data storage, and input/output interfaces.
[0021]   Regardless of whether a printing device is used in a residence, a business, or in another type of location, the printing device may be a shared resource that can be communicatively coupled to various other computing devices.  Consequently, in some environments, the storage and processing requirements of a printing device may be quite high, as numerous computing devices may be transmitting electronic documents to the printing device for printing.  Typically, a printing device will print, copy, fax, and/or scan one electronic document at a time, in a first-come-first-served fashion.  Therefore, the printing device may store a potentially large number of electronic documents that are waiting to be serviced.  Since the cost of data storage (e.g., memory such as random access memory (RAM), solid-state memory, hard-drive memory, and/or flash memory) can be expensive, it may be beneficial to compress the stored electronic documents, in order to reduce the data storage requirements of the printing device.  Additionally, since some electronic documents may be transferred to and/or from the printing device and a computing device, compressing these electronic documents may make transfers faster and use less network capacity.  
[0022]   Moreover, since print jobs may be large (e.g., a print job may include one or more electronic documents encompassing hundreds of pages), compressing queued print jobs in the queue saves short-term storage space before each job is printed.  In addition, users may want to save print jobs in long-term storage for printing at a later time.  Thus, compressing print jobs may allow more print jobs to be saved.  Furthermore, the act of storing and retrieving large print jobs from long-term memory can be slow, but it may be expedited by compressing the print jobs to make them smaller in size.
2.      Example Printing Device  
[0023]   Figure 1 depicts an example printing device 20.   Printing device 20 may be configured to print partially-stored and/or fully-stored electronic documents on various types of physical output media.   These output media include, but are not limited to, various sizes and types of paper, overhead transparencies, and so on.  Printing device 20 may be interchangeably referred to as a “printer.”
[0024]   Printing device 20 may serve as local peripheral to another computing device, such as a personal computer, a server device, a print server, etc.  In these cases, printing device 20 may be attached to the computing device by cable, such as a serial port cable, parallel port cable, Universal Serial Bus (USB) cable, Firewire (IEEE 1394) cable, or High-Definition Multimedia Interface (HDMI) cable.  Thus, the computing device may serve as a source of electronic documents for printing device 20. 
[0025]   On the other hand, printing device 20 may include a wireline or wireless network interface, such as an Ethernet or 802.11 (Wifi) interface.  So arranged, printing device 20 may serve as a printing device for any number of computing devices that can communicate with printing device 20 over a network.  In some embodiments, printing device 20 may serve as both a local peripheral and a networked printer at the same time.  In order to use printing device 20, computing devices may install one or more printer drivers.  These printer drivers may include software components that convert the image data representing electronic documents to be printed from various local representations stored on the computing devices to one or more representations supported by printing device 20.  Regardless, printing device 20 may be considered to be a computing device, and may carry out both printing-related and non-printing related tasks.
[0026]   As noted above, printing device 20 may also include copier, fax, and scanner functions.  In some embodiments, printing device 20 may use a scanner function to facilitate copier and/or fax functions.  For instance, printing device 20 may scan a physical document into an electronic format, and then print the resulting electronic document to provide a copy, and/or transmit the resulting electronic document via a telephone interface to provide a fax function.
[0027]   In order to support its various functions, printing device 20 may include a document feeder / output tray 22, paper storage 24, user interface 26, scanning element 28, and chassis 30.  It should be understood that printing devices may take on a wide variety of forms.  Therefore printing device 20 may include more or fewer components than depicted in Figure 1, and/or components arranged in a different fashion than depicted in Figure 1.
[0028]   Document feeder / output tray 22 may hold physical documents (e.g., a stack of one or more sheets of paper) that are to be scanned, copied or faxed.  Document feeder / output tray 22 may allow printing device 20 to automatically feed multiple physical documents for processing by printing device 20 without requiring manual intervention.  Document feeder / output tray 22 may also include one or more separate output trays for holding physical documents that have been processed by printing device 20.  These may include physical documents that have been scanned, copied or faxed by printing device 20, as well as physical documents that have been produced by, e.g., the fax and/or copying functions of printing device 20.
[0029]   Paper storage 24 may include trays and/or feeding elements for various types of physical media.  For instance, paper storage 24 may include separate trays for 8 1/2 x 11 inch paper, A4 paper, letterhead paper, envelopes, and so on.  For any function of printing device 20 that involves producing physical media (e.g., printing, copying, and/or receiving a fax), paper storage 24 may supply the physical media.
[0030]   User interface 26 may facilitate the interaction of printing device 20 with a human or non-human user, such as to receive input from a user and to provide output to the user.  Thus, user interface 26 may include input components such as a keypad, keyboard, touch-sensitive or presence-sensitive panel, joystick, microphone, still camera and/or video camera.  User interface 26 may also include one or more output components such as a display screen (which, for example, may be combined with a presence-sensitive panel), a cathode ray tube (CRT), a liquid crystal display (LCD), a light emitting diode (LED) based display, a display using digital light processing (DLP (Registered Trade Mark)) technology, a light bulb, and/or one or more other similar devices, now known or later developed.  User interface 26 may also be configured to be able to generate audible output(s), via a speaker, speaker jack, audio output port, audio output device, earphones, and/or other similar devices, now known or later developed in the future.
[0031]   Scanning element 28 may be a glass panel below which a movable light source operates to scan physical media placed on top of the glass panel.  Alternatively, a digital camera below the glass panel may “scan” the physical media placed on top of the glass panel by taking a picture of the physical media.  Images of scanned physical media may be stored in data storage associated with printing device 20.  
[0032]   Chassis 30 may include a physical housing that contains and or interconnects various components of printing device 20, such as document feeder / output tray 22, paper storage 24, user interface 26, and scanning element 28.  Additionally, chassis 30 may house other components not shown in Figure 1.  For example, chassis 30 may contain one or more toner cartridges, liquid ink jets, belts, rollers, and/or power supplies.  Further, chassis 30 may include communication interfaces, such as a wireline and/or wireless network interfaces, a telephony interface (e.g., a RJ45 jack), a USB interface, a BLUETOOTH (Registered Trade Mark) interface, a card reader port, etc.
[0033]   Moreover, as printing device 20 may be based on general-purpose and/or specially-designed computing device components, chassis 30 may also house some or all of these components.  For instance, the printing device 20 may include a processor and data storage (not explicitly shown).  Generally, the processor may include one or more central processing units (CPUs), such as one or more general purpose processors and/or one or more dedicated processors (e.g., application specific integrated circuits (ASICs) or digital signal processors (DSPs), etc.).  The data storage may include volatile and/or non-volatile data storage and can be integrated in whole or in part with processor.  The data storage may store program instructions, executable by processor, and data that are manipulated by these instructions to carry out the various methods, processes, or functions described herein.  Alternatively, these methods, processes, or functions can be defined by hardware, firmware, and/or any combination of hardware, firmware and software.  Therefore, the data storage may include a tangible, non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by one or more processors, cause printing device 20 to carry out any of the methods, processes, or functions disclosed in this specification or the accompanying drawings.  
[0034]   Further, the components of the printing device 20 may also include hardware and/or software components for compressing/encoding and/or decompressing/decoding image data.  
3.    Example Image Data Encoder and Decoder 
[0035]   Figures 2A and 4A depict example embodiments of computing device components (e.g., functional elements of a computing device) that may be included in printing device 20.  Referring first to Figure 2A, an example image data encoder 40 is illustrated.  The encoder 40 is configured to receive image data 42.  In the illustrated example, the image data 42 is divided into image data blocks (e.g., 8x8 pixel blocks), and the image data blocks are provided to a spatial frequency converter 44 of the encoder 40.  The spatial frequency converter 44 performs spatial frequency conversion, such as by executing a discrete cosine transform (DCT) on the image data.  Performing the spatial frequency conversion on the image data results in a set of one or more frequency coefficients that represent the spatial frequency conversion of the image data block.  In the example of an 8x8 pixel block, the spatial frequency converter 44 is configured to produce between one and sixty-four frequency coefficients in a single clock cycle.  Referring to Figure 2B, in one example, these resulting frequency coefficients Suv may be stored in a storage component 60.  In another example, a resulting set of one to sixty-four frequency coefficients Suv need not be stored separately, but are operated upon in a single operation (e.g., a single clock cycle) by a quantizer, data sequencer, and data read/write block, as will be described in more detail hereinafter. 
[0036]     For instance, the set of one to sixty-four frequency coefficients Suv may then be immediately operated upon by a quantizer 46.  The quantizer 46 generates quantized data, such as a set of one or more quantized frequency coefficients.  Generally, quantization is a process for reducing or eliminating high frequency components after the image data has been transformed into the frequency domain by the spatial frequency conversion operation.  The quantizer 46 operates on the frequency coefficients using a quantization table that includes quantization factors.  More particularly, in the encoder 40, the quantizer 46 divides the frequency coefficients Suv by corresponding quantization factors to generate the set of quantized frequency coefficients.  Figure 2B illustrates an example where the quantization factors Quv may be stored in a storage component 62 or otherwise made available as inputs to the quantizer where one or up to sixty-four quantization factors Quv are available per clock cycle.  The quantizer 46 may also round the result of the division operation to eliminate insignificant high frequency components.  
[0037]   In the present example, the set of quantized frequency coefficients Squv produced by the quantizer 46 may then be provided immediately, in a single operation or single clock cycle, to a data sequencer 48.  The data sequencer 48 is configured to arrange the set of quantized frequency coefficients Squv in a predetermined sequence.  One such sequence is a zig-zag sequence that is illustrated by Figure 3.  Figure 2B also illustrates a block 64 that represents the zig-zag sequencing operation.  
[0038]   Following the data sequencer 48, a data read/write block 50 is provided to write the quantized frequency coefficients Squv into a “write” storage component or bank.  Similarly to the frequency coefficients Suv being scalable between one and sixty-four coefficients (e.g., for an 8x8 pixel block), the number of quantized frequency coefficients Squv written by block 50 during a single clock cycle is also scalable between one and sixty-four coefficients depending upon the processing speed of the components 44, 46, and 48. 
[0039]   Concurrently with the write function, the read/write block 50 may also read or extract the contents of another “read” storage component or bank, and provide the extracted contents to a data encoder 52.  The write speed and the read speed of block 50 can be totally independent.  Assuming that the current image data block is not the first data block of the image data that is being processed, the extracted contents of the read storage component include a previously stored or written set of quantized frequency coefficients Squv.  The data encoder 52 performs entropy or Huffman coding on the extracted, quantized frequency coefficients Squv to provide encoded data 54 for storage, transfer, or other processing.  The read function of block 50 and the coding function of encoder 52 can be performed, per clock cycle, using a scalable number of previously stored quantized frequency coefficients Squv (e.g., one to sixty-four coefficients) to provide a corresponding scalable number of symbols of the encoded data 54 depending on the processing speed of the encoder. 
[0040]   Figure 2B illustrates two storage components 66, 68 that function as the write/read storage banks.  In the present example, each of the storage components 66, 68 is a scalable NxM flip-flop storage structure (N and M being integers).  The storage components 60, 62 may also be NxM flip-flop storage structures.  An example, scalable 2x2 flip-flop storage structure or bank is illustrated in Figure 7, and will be described in more detail hereinafter.  
[0041]   Generally, the flip-flop storage structure provides various benefits over SRAM storage structures that are typically used as the storage components for image data processing.  For instance, writing data to a desired cell of an SRAM storage structure typically requires accessing a particular row of the storage structure and performing a read-modified-write process to access and write to the desired cell in the row.  Further, the number of ports of the SRAM storage structure limits the number of rows that can be accessed at the same time (e.g., during a single clock cycle), and thus, the number of cells that can be written to (or read from) simultaneously.  SRAMs may commonly have a single or dual port, although, highly customized, and relatively expensive, SRAMs may have a greater number of ports.  The present embodiment uses flip-flop storage structures that are easily (and relatively inexpensively) scalable in size and that can be used to write to and read from any cell of any row simultaneously during a single clock cycle, which provides a potentially much higher data rate than would be possible with typical SRAMs.  Further, the flip-flop storage structures used herein can be selectively reset or set or zero during a single clock cycle, which may provide additional benefits, as will be described in greater detail.  In contrast, a typical SRAM needs to individually write zeros into each cell, and this may commonly take multiple clock cycles to complete. 
[0042]   Referring now to Figures 4A and 4B, an example image data decoder 70 is illustrated.  The decoder 70 is configured to receive encoded image data 54 (such, as the encoded data of Figure 2A).  In the illustrated example, the encoded data is provided immediately to a data decoder 72.  The data decoder 72 performs the inverse function of the data encoder 52, e.g., an inverse entropy or Huffman decoding to produce quantized frequency coefficients Squv.  In the example of an 8x8 pixel block, the data decoder 72 is configured to produce between one and sixty-four quantized frequency coefficients Squv in a single clock cycle.  The number of coefficients Squv may depend, in part, on the received encoded image data.  In Figure 4B, in one example, the resulting quantized frequency coefficients Squv may be stored in a storage component 90.   In another example, a resulting set of one to sixty-four quantized frequency coefficients Squv need not be stored separately, but are operated upon in a single operation (e.g., a single clock cycle) by a data inverse sequencer, de-quantizer, and data read/write block, as will be described in more detail hereinafter.   
[0043]   In the present example, the set of one to sixty-four quantized frequency coefficients Squv may be arranged in the predetermined sequence resulting from the operation of the data sequencer 48.  Accordingly, the quantized frequency coefficients Squv are provided immediately to a data inverse sequencer 74, which arranges the quantized frequency coefficients Squv in an inverse of the predetermined sequence.  Referring to Figure 4B, in one example, the resulting re-arranged quantized frequency coefficients Squv may be stored in a storage component 92. 
[0044]     In another example, the resulting re-arranged quantized frequency coefficients Squv need not be stored separately, and after the data inverse sequencer 74, the quantized frequency coefficients Squv are provided immediately to a de-quantizer 76, which de-quantizes the quantized frequency coefficients Squv.  In one example, the de-quantizer 76 uses the same quantization table and quantization factor as discussed above in relation to the quantizer 46.  However, the de-quantizer 76 multiplies the quantized frequency coefficients Squv with corresponding quantization factors Quv and performs an inverse of the rounding performed by the quantizer 46 to extract the frequency coefficients Suv.
[0045]   In the example of Figure 4A, a data read/write block 78 writes the frequency coefficients Suv into a “write” storage component or bank.  The number of frequency coefficients Suv written by block 78 during a single clock cycle is scalable between one and sixty-four coefficients (e.g., with a 8x8 pixel block) depending upon the processing speed of the components 72, 74, and 76.
[0046]   Concurrently with the write function, the read/write block 78 may also read or extract the contents of another “read” storage component or bank, and provide the extracted contents to an inverse spatial frequency converter 80.  Assuming that the current encoded image data block is not the first data block of the image data that is being processed, the extracted contents of the read storage component include a previously stored or written set of frequency coefficients Suv.  The inverse spatial frequency converter 80 performs an inverse of the spatial frequency conversion performed by the converter 44 in order to extract the original image data 42 for display, printing, or other processing.  The read function of block 78 and the inverse conversion function of converter 80 can be performed, per clock cycle, using a scalable number of previously stored frequency coefficients Suv (e.g., one to sixty-four coefficients) depending on the processing speed of the converter 80.
[0047]   Figure 4B illustrates two storage components 94, 96 that function as the write/read storage banks of the decoder 70.  In the present example, each of the storage components 94, 96 is a scalable NxM flip-flop storage structure (N and M being integers).  The storage components 90, 92 may also be NxM flip-flop storage structures.  The benefits of using flip-flop storage structures in the decoder are the same as described above.  More particularly, the flip-flop storage structure is easily (and relatively inexpensively) scalable and can be used to write to and read from any cell of any row simultaneously.  
4.    Example Operation 
[0048]   In addition to the above description, Figures 5 and 6 illustrate a flow chart of an example embodiment. The steps illustrated by this flow chart may be carried out by one or more printing devices, such as printing device 20, and/or other computing devices.  Further, aspects of each individual step may be distributed between multiple computing devices, as appropriate. 
[0049]   Figure 5 illustrates an example encoding process 100 that can use the components of Figures 2A and 2B, for example.  In the process 100, a block 102 receives image data, such as the image data block as shown in Figure 2A.  At block 104, the spatial frequency converter 44 performs spatial frequency conversion, such as by executing DCT on the image data.  
[0050]   As described above, at block 106, the resulting set of one or more frequency coefficients is then operated upon by the quantizer 46 to generate the set of one or more quantized frequency coefficients.  Then, at block 108, the data sequencer 48 arranges the set of quantized frequency coefficients in the predetermined sequence (e.g., the zig-zag sequence of Figure 3).  
[0051]   Following block 108, at block 110, the data read/write block 50 writes the quantized frequency coefficients Squv into a “write” storage component or bank.  In one example, after the last quantized frequency coefficient Squv the data/read/write block 50 adds an end-of-block (EOB) marker, which designates an end of the quantized frequency coefficients Squv.  In the present example, adding the EOB marker means that all the subsequent values in the write storage component are zero.  As will be described in more detail hereinafter, the present disclosure sets the contents of a next write storage component to zero during block 114, which facilitates the addition of the EOB marker without requiring subsequent values to be set to zero at block 110.
[0052]   At block 112, the read/write block 50 reads or extracts the contents of the read storage component or bank, and provides the extracted contents to the data encoder 52.  Also at block 112, the data encoder 52 performs entropy or Huffman coding on the extracted, quantized frequency coefficients Squv to provide the encoded data 54 for storage, transfer, or other processing.  At block 112, when the data encoder 52 encounters an EOB marker, the encoder will stop processing any further data cells, which reduces processing time and improves power efficiency.  Although block 112 is illustrated in a sequence after blocks 102-110, in practice, the operations of block 112 may be performed on previously stored quantized frequency coefficients Squv simultaneously as another image data block is being processed at blocks 102-110.  This configuration enables the parallel processes to be performed more efficiently and quickly.  
[0053]   At block 114, after the quantized frequency coefficients Squv are written to the write storage component and the data encoder 52 encodes the extracted quantized frequency coefficients Squv from the read storage component, the data read/write block 50, for example, sets the contents of the read storage component to zero.  In embodiments where the storage components are flip-flop storage structures, the read/write block 50 (or some other controller) can set all of the contents of the storage structure to zero in a single clock cycle.  In contrast, a typical SRAM would need to individually write zeros into each cell, and this process could take multiple clock cycles to complete.
[0054]   Further, at block 114, the read/write block 50, for example, alternates the use of the read storage component and the write storage component for processing the next image data block.  Referring to Figure 2B for example, during a first data processing period, the storage component 66 functions as the write bank and the storage component 68 functions as the read bank.  At block 114, the data read/write block 50 sets each cell of the storage component 68 to zero and, for a subsequent data processing second period, writes a set of quantized frequency coefficients Squv corresponding to the next image data block into the storage component 68, and reads the quantized frequency coefficients Squv from the storage component 66 for processing by the data encoder 52.  Following block 114, control passes back to block 102 and a next image data block can be processed as described above.  
[0055]   The flip-flop data structure of the storage components 66, 68, allows a scalable number of quantized frequency coefficients Squv to be written simultaneously (during a single clock cycle) to corresponding cells of the storage components.  The flip-flop data structure also allows all of the contents of a storage component to be set to zero during a single clock cycle.  This setting of the storage contents to zero is facilitated by the flip-flop data structure and provides computational (and energy) savings by allowing the next set of quantized  frequency coefficients Squv to be stored in the storage component as soon as the coefficients are calculated.  
[0056]   Figure 6 illustrates an example decoding process 140 that can use the components of Figures 4A and 4B, for example.  In the process 140, at block 142, the data decoder 72 receives encoded image data (such, as the encoded data 54 of Figure 2A).  At block 144, the data decoder 72 performs the inverse function of the data encoder 52 to produce quantized frequency coefficients Squv.
[0057]   As described above, at block 146, the data inverse sequencer 74 arranges the quantized frequency coefficients Squv in an inverse of the predetermined sequence.  Then, at block 148, the de-quantizer 76 de-quantizes the quantized frequency coefficients Squv to provide the frequency coefficients Suv.  At block 148, when the de-quantizer 76 encounters an EOB marker, the de-quantizer 76 will stop further data processing, which reduces processing time and improves power efficiency.  Then, at block 150, the data read/write block 78 writes the frequency coefficients Suv into the write storage component.  
[0058]   At block 152, the read/write block 78 reads or extracts the contents of the read storage component, and provides the extracted frequency coefficients Suv to the inverse spatial frequency converter 80.  The inverse spatial frequency converter 80 performs an inverse of the spatial frequency conversion performed by the converter 44 in order to extract the original image data 42 for display, printing, or other processing.  Although block 152 is illustrated in a sequence after blocks 142-150, in practice, the operations of block 152 may be performed on previously stored frequency coefficients Suv simultaneously as another encoded image data block is being processed at blocks 142-150.  This configuration enables the parallel processes to be performed more efficiently.  
[0059]   At block 154, after the frequency coefficients Suv are written to the write storage component and the converter 80 converts the extracted frequency coefficients Suv from the read storage component, the data read/write block 78, for example, sets the contents of the read storage component to zero and alternates the use of the read storage component and the write storage component for processing the next encoded image data block.  In embodiments where the storage components are flip-flop storage structures, the read/write block 78 (or some other controller) can set all of the contents of the storage structure to zero in a single clock cycle.  In contrast, a typical SRAM would need to individually write zeros into each cell, and this process could take multiple clock cycles to complete.
[0060]   Referring to Figure 4B for example, during a first data processing period, the storage component 94 functions as the write bank and the storage component 96 functions as the read bank.  At block 154, the data read/write block 78 sets each cell of the storage component 96 to zero and, for a subsequent data processing second period, writes a set of frequency coefficients Suv corresponding to the next encoded image data block into the storage component 96, and reads the frequency coefficients Suv from the storage component 94 for processing by the converter 80.  Following block 154, control passes back to block 142 and a next encoded image data block can be processed as described above. 
5.    Example Flip-Flop Storage Component 
[0061]   Referring now to Figure 7, an example 2x2 flip-flop memory bank structure 200 is illustrated.  In Figure 7, four flip-flop memory elements W, X, Y, and Z are illustrated.  The memory bank structure 200 can be scaled up or down to include any number of desired data rows and columns, such as by adding additional flip-flop memory elements to scale the memory bank up to an 8x8, as shown in Figures 2B and 4B.  
[0062]   In Figure 7, the memory bank 200 includes a clock input C that is used to trigger a storage function of each flip-flop memory element.  For instance, a rising edge of the clock input C can trigger the storage function.  
[0063]   The memory bank 200 also includes a Switch/Reset signal.  In one example embodiment, at the rising edge of the clock input C, regardless of any other inputs, the current data Q stored in any desired flip-flop memory element may be set to a state of logic zero.  As described above, the Switch/Reset signal input can be common to all of the flip-flop storage elements, such that during initialization or when there is a reset command, the Switch/Reset signal input will be set to logic 1, and following the rising edge of the clock input C, all the contents of the storage elements will be set to logic zero.
[0064]   Further, the memory bank 200 includes an Enable signal.  In one example, at the rising edge of the clock input C, and if the Switch/Reset signal is logic zero, the Enable signal being logic one will cause the data content input D to be stored in each respective flip-flop storage element.  The output Q will then indicate the current data stored in each respective flip-flop storage element.  All outputs are available for use (can be read) and can be selected by blocks or components that require read data, such as the data encoder 52 and the inverse spatial frequency converter 80 in the examples of Figures 2A and 4A, respectively.
[0065]   In addition, the memory bank 200 includes a Data Select module that is coupled to the data content input D of each flip-flop storage element.  The Data Select module receives a Select signal that identifies which data (Data0, Data1, Data2, Data3, in the present example) that is to be selected as the data input D of a corresponding flip-flop storage element.  
[0066]   Figure 7 also includes a Write Address Decoder module that functions to select which flip-flop storage element is to be updated and with what data content.  For example, if the Write_Address_0 “points” to flip-flop Y, the Write Address Decoder module will generate an Enable Y signal and a Data Select Y signal to choose the Write_Data_0 to be updated.  Write_Address_1 will point to another flip-flop storage element and so on.  Since each pixel occupies a specific location in an 8x8 structure, this configuration does not have address collisions, because the same flip-flop storage element will not be pointed to by more than one Write_Address_N of the Write Address Decoder module, and allows multiple data to be written in a single clock cycle.  This is another potential benefit over known JPEG decoding processes that commonly use an SRAM storage component.  
[0067]   The Write Address Decoder module can be scaled, as desired, to one or more write ports to enable storage of any number of data cells in a single clock cycle.  For instance, in JPEG image processing a common image data block is an 8x8 pixel block that potentially includes 64 corresponding data cells.  The Write Address  Decoder can be scaled from 1 to 64 write ports, and thus write to 64 different storage cells in a single clock cycle.  
6.    Conclusion 
[0068]   The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects.  Many modifications and variations can be made without departing from its spirit and scope, as will be apparent to those skilled in the art.  Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those enumerated herein, will be apparent from the foregoing descriptions.  Such modifications and variations are intended to fall within the scope of the appended claims.  
[0069]   With respect to any or all of the ladder diagrams, scenarios, and flow charts in the figures and as discussed herein, each block and/or communication may represent a processing of information and/or a transmission of information in accordance with example embodiments.  Alternative embodiments may be included within the scope of such example embodiments.  Further, more or fewer blocks and/or functions may be used with any of the ladder diagrams, scenarios, and flow charts discussed herein, and these ladder diagrams, scenarios, and flow charts may be combined with one another, in part or in whole.    
[0070]   A step or block that represents a processing of information may correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique.  Alternatively or additionally, a step or block that represents a processing of information may correspond to a module, a segment, or a portion of program code (including related data).  The program code may include one or more instructions executable by a processor for implementing specific logical functions or actions in the method or technique.  The program code and/or related data may be stored on any type of computer-readable medium, such as a storage device, including a disk drive, a hard drive, or other storage media.
[0071]   The computer-readable medium may also include non-transitory computer-readable media such as computer-readable media that stores data for short periods of time like register memory, processor cache, and/or random access memory (RAM).  The computer-readable media may also include non-transitory computer-readable media that stores program code and/or data for longer periods of time, such as secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, and/or compact-disc read only memory (CD-ROM), for example.  The computer-readable media may also be any other volatile or non-volatile storage systems.  A computer-readable medium may be considered a computer-readable storage medium, for example, and/or a tangible storage device.
[0072]   While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art.  The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.
REFFERENCE SIGNS LIST
[0073]    
20    Printing device
22    Document feeder / output tray
24    Paper storage
26    User interface
28    Scanning element
44, 80    Converter
46    Quantizer
48    Data sequencer
52    Data encoder
70    Decoder
76    De-quantizer
200    Memory bank
1.    A method for processing image data comprising:
during a first period, encoding contents of a first flip-flop storage component to produce first encoded data for first image data, wherein the contents of the first flip-flop storage component include a first set of one or more quantized frequency coefficients that correspond to the first image data and that are ordered in a predetermined sequence;
during the first period, storing a second set of one or more quantized frequency coefficients that are ordered in the predetermined sequence in a second flip-flop storage component, wherein the second set of one or more quantized frequency coefficients correspond to second image data;
after encoding the contents of the first flip-flop storage component and storing the second set of one or more quantized frequency coefficients in the second flip-flop storage component, setting the contents of the first flip-flop storage component to zero;
during a second period after the first period, encoding contents of the second flip-flop storage component to produce second encoded data for the second image data, wherein the contents of the second flip-flop storage component include the second set of one or more quantized frequency coefficients stored during the first period; and
during the second period, storing a third set of one or more quantized frequency coefficients that are ordered in a predetermined sequence in the first flip-flop storage component, wherein the third set of one or more quantized frequency coefficients correspond to third image data.
2.    The method of claim 1, further comprising
during a third period before the first period, storing the first set of one or more quantized frequency coefficients in the first flip-flop storage component, and
wherein storing the first set of one or more quantized frequency coefficients during the third period further includes:
receiving the first image data that is grouped into a sample block;
performing a spatial frequency conversion on the first image data to produce a first set of one or more frequency coefficients, wherein the first set of one or more frequency coefficients represents the spatial frequency conversion of the first image data;
quantizing the first set of one or more frequency coefficients to produce the first set of one or more quantized frequency coefficients;
ordering the first set of one or more quantized frequency coefficients in the predetermined sequence; and
storing the first set of one or more quantized frequency coefficients that are ordered in the predetermined sequence in the first flip-flop storage component.
3.    The method of claim 2, wherein
storing the second set of one or more quantized frequency coefficients during the first period includes:
receiving the second image data that is grouped into the sample block;
performing the spatial frequency conversion on the second image data to produce a second set of one or more frequency coefficients, wherein the second set of one or more frequency coefficients represents the spatial frequency conversion of the second image data;
quantizing the second set of one or more frequency coefficients to produce the second set of one or more quantized frequency coefficients;
ordering the second set of one or more quantized frequency coefficients in the predetermined sequence; and
storing the second set of one or more quantized frequency coefficients that are ordered in the predetermined sequence in the second flip-flop storage component.
4.    The method of claim 2, further comprising
during the third period, quantizing a plurality of frequency coefficients in a single clock cycle to produce at least part of the first set of one or more quantized frequency coefficients.
5.    The method of claim 2, wherein
the spatial frequency conversion is a discrete cosine transform.
6.    The method of claim 1, wherein
encoding the contents of either the first or the second flip-flop storage component includes coding an end-of-block marker to designate the end of the respective encoded data.
7.    The method of claim 1, wherein
encoding the contents of the first flip-flop storage component is performed by performing entropy encoding on the contents of the first flip-flop storage component.
8.    A method for processing image data comprising:
during a first period, performing an inverse spatial frequency conversion on contents of a first flip-flop storage component to produce first image data, wherein the contents of the first flip-flop storage component include a first set of one or more frequency coefficients that represent a spatial frequency conversion of the first image data;
during the first period, storing a second set of one or more frequency coefficients in a second flip-flop storage component, wherein the second set of one or more frequency coefficients represent a spatial frequency conversion of second image data;
after performing an inverse spatial frequency conversion on contents of the first flip-flop storage component and storing the second set of one or more frequency coefficients in the second flip-flop storage component, setting the contents of the first flip-flop storage component to zero;
during a second period after the first period, performing inverse spatial frequency conversion on contents of the second flip-flop storage component to produce the second image data, wherein the contents of the second flip-flop storage component include the second set of one or more frequency coefficients stored during the first period; and
during the second period, storing a third set of one or more frequency coefficients in the first flip-flop storage component, wherein the third set of one or more frequency coefficients represent a spatial frequency conversion of third image data.
9.    The method of claim 8 further comprising
during a third period before the first period, storing the first set of one or more frequency coefficients in the first flip-flop storage component, and
wherein storing the first set of one or more frequency coefficients during the third period further includes:
receiving a first set of one or more quantized frequency coefficients that are ordered in a predetermined sequence;
ordering the first set of one or more quantized frequency coefficients in an inverse predetermined sequence;
de-quantizing the first set of one or more quantized frequency coefficients to produce the first set of one or more frequency coefficients; and
storing the first set of one or more frequency coefficients in the first flip-flop storage component.
10.    The method of claim 9, wherein
storing the second set of one or more frequency coefficients during the first period includes:
receiving a second set of one or more quantized frequency coefficients that are ordered in a predetermined sequence;
ordering the second set of one or more quantized frequency coefficients in an inverse predetermined sequence;
de-quantizing the second set of one or more quantized frequency coefficients to produce the second set of one or more frequency coefficients; and
storing the second set of one or more frequency coefficients in the second flip-flop storage component.
11.  The method of claim 10, further comprising:
during the third period, receiving first encoded data corresponding to the first image data, and decoding the first encoded data to provide the first set of one or more quantized frequency coefficients that are ordered in the predetermined sequence; and
during the first period, receiving second encoded data corresponding to the second image data, and decoding the second encoded data to provide the second set of one or more quantized frequency coefficients that are ordered in the predetermined sequence.
12.    The method of claim 9, further comprising
during the third period, de-quantizing a plurality of quantized frequency coefficients in a single clock cycle to produce at least part of the first set of one or more frequency coefficients.
13.    The method of claim 8, wherein
performing the inverse spatial frequency conversion during the first period is stopped when an end-of-block marker is encountered in the contents of the first flip-flop storage component.  
14.    An image processing system comprising: 
a first flip-flop bank and a second flip-flop bank; and 
a control system configured to control JPEG processing of image data, wherein
the control system is further configured to:
during a first period, use one of the first or second flip-flop banks as a write bank and the other of the first or second flip-flop banks as a read bank;
during a second period, alternate the use of the first and second flip-flop banks as the write bank and the read bank; and
after alternating the use, initialize the read bank to zero.
15.    The system of claim 14, wherein
the control system is further configured to:
use a respective flip-flop bank as the read bank by providing contents of the read bank to a coding component that is configured to produce first encoded data for a first sample of the image data, wherein the contents of the read bank include a first set of one or more quantized frequency coefficients that correspond to the first sample of the image data and that are ordered in a predetermined sequence; and
use a respective flip-flop bank as the write bank by storing a second set of one or more quantized frequency coefficients that are ordered in a predetermined sequence in the write bank, wherein the second set of one or more quantized frequency coefficients correspond to a second sample of the image data.
16.    The system of claim 14, further comprising
a spatial frequency conversion component configured to perform spatial frequency conversion on received image data to produce sets of one or more frequency coefficients, wherein a set of one or more frequency coefficients represents the spatial frequency conversion of a respective sample block of the received image data;
a quantizing component configured to quantize the sets of one or more frequency coefficients to produce sets of one or more quantized frequency coefficients;
a sequencing component configured to order the sets of one or more quantized frequency coefficients in a predetermined sequence, wherein the control system is configured to use a respective flip-flop bank as the write bank by storing, in the write bank, a first set of one or more quantized frequency coefficients that are ordered in the predetermined sequence; and
a coding component configured to encode contents of the read bank to produce encoded data for the received image data, wherein the contents of the read bank include a second set of one or more quantized frequency coefficients ordered in a predetermined sequence.
17.    The system of claim 16, wherein
the spatial frequency conversion component configured to perform a discrete cosine transfer conversion, and
the coding component is configured to perform entropy encoding of the contents of the read bank to produce the encoded data.
18.    The system of claim 14, wherein
the control system is further configured to:
use a respective flip-flop bank as the read bank by providing contents of the read bank to an inverse spatial frequency conversion component that is configured to perform inverse spatial frequency conversion on the contents of the read bank to produce a first sample block of the image data, wherein the contents of the read bank include a first set of one or more frequency coefficients that correspond to the first sample block of the image data; and
use a respective flip-flop bank as the write bank by storing a second set of one or more frequency coefficients in the write bank, wherein the second set of one or more frequency coefficients corresponds to a second sample block of the image data.
19.    The system of claim 14, further comprising
a decoding component configured to decode received encoded data corresponding to samples of the  image data and to provide sets of one or more quantized frequency coefficients that are ordered in a predetermined sequence;
a sequencing component configured to order the sets of one or more quantized frequency coefficients received from the entropy decoding component in an inverse predetermined sequence;
a de-quantizing component configured to de-quantize the sets of one or more quantized frequency coefficients received from the sequencing component to provide sets of one or more frequency coefficients, wherein the control system is further configured to use a respective flip-flop bank as the write bank by storing, in the write bank, a first set of one or more frequency coefficients; and
an inverse spatial frequency conversion component configured to perform inverse spatial frequency conversion on contents of the read bank to produce image data, wherein the contents of the read bank include a second set of one or more frequency coefficients.
20.    The system of claim 14, wherein
the first flip-flop bank, the second flip-flop bank, and the control system are included in a printing device.
1. Abstract
PROBLEM TO BE SOLVED
To make image data processing more power efficient and faster.
SOLUTION
An image processing system includes a first flip-flop bank and a second flip-flop bank, and a control system configured to control JPEG processing of image data.  The control system is further configured to, during a first period, use one of the first or second flip-flop banks as a write bank and the other of the first or second flip-flop banks as a read bank and, during a second period, alternate the use of the first and second flip-flop banks as the write bank and the read bank.  Further, the control system is configured to, after alternating the use, initialize the read bank to zero.
2. Representative Drawing: Fig. 2A
2016119672.tif 000012
2016119672.tif 000013
2016119672.tif 000014
2016119672.tif 000015
2016119672.tif 000016
2016119672.tif 000017
2016119672.tif 000018