(57)【要約】【課題】符号化及び復号時に使用するＱテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号できるという効果がある。【解決手段】画像データをＪＰＥＧ圧縮する際、その符号化されたデータ量を求め、そのデータ量がメモリの容量を越えているか否かを判定し（Ｓ１０４）、メモリの容量を越えていると判定されると、その圧縮率を高く設定して（Ｓ１０６）画像データを圧縮し、またデータ量がメモリの容量を越えたと判定された回数を計数する（Ｓ１０５）。そして、そのデータの復号時、その計数値を求め（Ｓ１０９）、その計数値に応じてＱテーブルを設定し（Ｓ１１０）メモリに記憶されているデータを復号する（Ｓ１１１）。【選択図】  図３６
2004221998.tif 000002
【特許請求の範囲】
【請求項１】
画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段と、
を有することを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを符号化する際に、その符号化データのデータ量が所定量に収まるように符号化し、その符号化した画像データを復号する技術に関するものである。
【０００２】
【従来の技術】
近年、スキャナやプリンタ等を備え、スキャナから入力した画像データを処理してプリンタにより印刷する画像処理システムでは、スキャナから読み込んだ画像をローカルエリアネットワーク（ＬＡＮ）やインターネット上に流したり、ＬＡＮやインターネットから受信した画像をプリンタにより印刷することができる。また、スキャナから読んだ画像をＦＡＸに送信したり、通信回線からのデータをモデムにより受信してプリンタにより印刷するといった、ネットワークを使用した様々な画像データの受け渡しが必要となっている。
【０００３】
そのため、このような画像処理システム内では、ＰＤＬやスキャナからの入力画像データ、プリンタ出力用の画像データ、ＦＡＸ用の画像データ、画像データベースサーバに蓄積するためのデータなど様々な画像フォーマットに変換を行い、それぞれのデータを入出力するためのデータの受け渡しが発生する。このような画像処理システムの処理パフォーマンスを考えた時、画像データの受け渡しを頻繁に行なう状況において、大量のデータをやり取りすることは大きなマイナス要因となる。特に、スキャナから入力される画像データはカラーを表現するための色数、階調を表わすためのビット数、また、高画質化に伴う解像度のアップなどにより非常に大きなデータ量となってきている。
【０００４】
そのため、スキャナから入力された画像データは、画像処理システムで取り扱う際に、まずデータの圧縮を行ってデータ量を小さくし、一旦、メモリに格納してからシステムで処理を行なうといった取り扱い方法が一般的である。このようなデータ圧縮には様々なデータ圧縮方法があり、その中でも、スキャナ画像データの特徴に合わせたデータ圧縮技術が標準化されたものとしてＪＰＥＧ処理がある。このＪＰＥＧ処理は、階調画像に対して最適な圧縮方法として一般的に使用されている。
【０００５】
【発明が解決しようとする課題】
このような手法で圧縮された画像データを格納するメモリの容量は、圧縮された画像データが格納されることを前提として予め決定される。しかし、ＪＰＥＧによる圧縮符号化処理は、元の画像データの内容によってその圧縮率が変化するため、必ずしも予想している圧縮率で圧縮符号化されるとは限らない。つまり、予想した圧縮率よりも小さい圧縮率で圧縮符号化された画像データの場合には、その圧縮された画像データのデータ量がメモリ容量を越えてしまい、そのメモリに全てのデータが格納できないことなる。そのような場合は、予想圧縮率を上げて、再度圧縮処理をし直し、その圧縮後の画像データ量がメモリに収まる圧縮率となるまで何度も原稿をセットし直してスキャンを行なう必要があり、このような操作は使用者の手を煩わせることとなっていた。
【０００６】
そのため、入力されたデータを予想圧縮率の異なる複数の圧縮経路で圧縮符号化処理を行ない、圧縮率の低い方で処理を行なった符号化データをメインメモリに、圧縮率の高い方で処理を行なった符号化データをテンポラリーメモリに格納し、メインメモリの容量を越えたデータが入力される場合には、それをクリアし、テンポラリメモリに格納されている圧縮率の高い処理で符号化されたデータを入力するという処理をリアルタイムで行なう方法がある。
【０００７】
しかし、このような方法によってメインメモリに納まるように圧縮を行なうためには、複数のＱテーブルを用意しなくてはならない。これによってＱテーブルを格納しておくメモリの増大を招くことになる。また復号を行なう際も、符号化を行なった時と同じＱテーブルを使用する必要があるため、復号処理を行なう部分でも複数のＱテーブルが必要となり、これによるＱテーブルを格納しておくメモリの増大を招くことになる。
【０００８】
本発明は上記従来例に鑑みてなされたもので、符号化及び復号時に使用するＱテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理装置は以下のような構成を備える。即ち、
画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段と、を有することを特徴とする。
【００１０】
【発明の実施の形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【００１１】
［実施の形態１］
図１Ａ及び図１Ｂは、本発明の実施の形態に係る画像処理システムの全体構成を示すブロック図である。
【００１２】
図において、制御ユニット２０００は、画像入力デバイスであるスキャナ２０７０や画像出力デバイスであるプリンタ２０９５と接続され、一方では、ＬＡＮ２０１１や公衆回線（ＷＡＮ）２０５１と接続することで、画像情報やデバイス情報の入出力、及びＰＤＬデータからイメージデータへの展開を行っている。ＣＰＵ２００１は、このシステム全体を制御するプロセッサである。本実施の形態では２つのＣＰＵを用いた例を示す。これら２つのＣＰＵは、共通のＣＰＵバス２１２６に接続され、更に、システムバスブリッジ２００７に接続されている。このシステムバスブリッジ２００７はバススイッチであり、このバスブリッジ２００７にはＣＰＵバス２１２６、ＲＡＭコントローラ２１２４、ＲＯＭコントローラ２１２５、Ｉ／Ｏバス１（２１２７）、サブバススイッチ２１２８、Ｉ／Ｏバス２（２１２９）、画像リングインターフェース１（２１４７）、画像リングインターフェース２（２１４８）等が接続されている。サブバススイッチ２１２８は第２のバススイッチであり、画像ＤＭＡ１（２１３０）、画像ＤＭＡ２（２１３２）、フォント伸長部３１３４、ソート回路（２１３５）、ビットマップトレース部（２１３６）が接続され、これらＤＭＡから出力されるメモリアクセス要求を調停し、システムバスブリッジ２００７への接続を行う。
【００１３】
ＲＡＭ２００２は、ＣＰＵ２００１が動作する際に、プログラムや各種データを一時的に保存するシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。このＲＡＭ２００２へのアクセスはＲＡＭコントローラ２１２４により制御される、本実施の形態では、ダイレクトＲＤＲＡＭを採用している。ＲＯＭ２００３はブートＲＯＭであり、このシステムのブートプログラムが格納されている。このＲＯＭ２００３からの読み出しはＲＯＭコントローラ２１２５により制御される。
【００１４】
画像ＤＭＡ１（２１３０）は画像圧縮部３１３１に接続され、レジスタアクセスリング２１３７を介して設定された情報に基づき、画像圧縮部２１３１を制御して、ＲＡＭ２００２に格納されている非圧縮データの読み出し、データ圧縮及び圧縮後データの書き戻しを行う、尚、本実施の形態では、ＪＰＥＧを圧縮アルゴリズムに採用した例で説明する。画像ＤＭＡ２（２１３２）は画像伸長部（２１３３）に接続され、レジスタアクセスリング２１３７を介して設定された情報に基づいて画像伸長部２１３３を制御し、ＲＡＭ２００２に格納されている圧縮データの読み出し、伸長及び伸長後データの書き戻しを行う、本実施の形態では、ＪＰＥＧを伸長アルゴリズムに採用した例で説明する。
【００１５】
フォント伸長部２１３４は、ＬＡＮインターフェース２０１０等を介して外部より転送されるＰＤＬデータに含まれるフォントコードに基づき、ＲＯＭ２００３或いはＲＡＭ２００２に格納された圧縮フォントデータを伸長している。本実施の形態では、ＦＢＥアルゴリズムを採用している。ソート回路２１３５は、ＰＤＬデータを展開する段階で生成されるディスプレイリストのオブジェクトの順番を並び替える回路である。ビットマップトレース回路２１３６は、ビットマップデータよりエッジ情報を抽出する回路である。Ｉ／Ｏバス１（２１２７）は、内部Ｉ／Ｏバスの一種であり、標準バスであるＵＳＢバスのコントローラ、ＵＳＢインターフェース２１３８、汎用シリアルポート２１３９、インタラプトコントローラ２１４０、ＧＰＩＯインターフェース２１４１が接続される。Ｉ／Ｏバス１には、バスアービタ（図示せず）が含まれる。
【００１６】
操作部Ｉ／Ｆ２００６は、操作部（ＵＩ）２０１２とインターフェース部とを含み、操作部２０１２に表示する画像データを操作部２０１２に出力する。また、操作部２０１２から本実施の形態に係るシステムの使用者が入力した情報を、ＣＰＵ２００１に伝える役割をする。Ｉ／Ｏバス２（２１２９）は内部Ｉ／Ｏバスの一種であり、汎用バスインターフェース１及び２（２１４２）と、ＬＡＮコントローラ２０１０が接続される。このＩ／Ｏバス２にはバスアービタ（図示せず）が含まれる。汎用バスインターフェース２１４２は、２つの同一のバスインターフェースを有し、標準Ｉ／Ｏバスをサポートするバスブリッジである。本実施の形態では、ＰＣＩバス２１４３を採用した例を示している。
【００１７】
外部記憶装置２００４は、システムソフトウェアや画像データ等を格納している。本実施の形態では、この外部記憶装置２００４はハードディスクドライブとし、ディスクコントローラ２１４４を介して一方のＰＣＩバス２１４３に接続されている。ＬＡＮコントローラ２０１０は、ＭＡＣ回路２１４５、ＰＨＹ／ＰＭＤ回路２１４６を介してＬＡＮ２０１１に接続されており、このＬＡＮ２０１１を介して情報の入出力を行う。モデム２０５０は公衆回線２０５１に接続されて情報の入出力を行う。
【００１８】
画像リングインターフェース１（２１４７）及び画像リングインターフェース２（２１４８）は、システムバスブリッジ２００７と画像データを高速で転送する画像リング２００８とを接続し、タイル化後に圧縮されたデータをＲＡＭ２００２とタイル画像処理部２１４９との間で転送するＤＭＡコントローラである。画像リング２００８は、一対の単方向接続経路の組み合わせにより構成される（画像リング１及び画像リング２）。この画像リング２００８は、画像処理部２１４９で、画像リングインターフェース３（２１０１）及び画像リングインターフェース４（２１０２）を介して、タイル伸長部２１０３、コマンド処理部２１０４、ステータス処理部２１０５、タイル圧縮部２１０６に接続されている。本実施の形態では、タイル伸長部２１０３を２組、タイル圧縮部２１０６を３組それぞれ実装する例を示した。
【００１９】
タイル伸長部２１０３は、これら画像リングインターフェースへの接続に加えてタイルバス２１０７に接続され、画像リング２００８より入力された圧縮後の画像データを伸長してタイルバス２１０７へ転送している。本実施の形態では、多値データの伸長にはＪＰＥＧ、２値データの伸長にはパックビッツを伸長アルゴリズムを採用している。タイル圧縮部２１０６は、画像リングインターフェースへの接続に加え、タイルバス２１０７に接続され、タイルバス２１０７から入力された圧縮前の画像データを圧縮して画像リング２００８へ転送する。本実施の形態では、多値データの圧縮にはＪＰＥＧ、２値データの圧縮にはパックビッツを圧縮アルゴリズムを採用している。
【００２０】
コマンド処理部２１０４は、画像リングインターフェースへの接続に加え、レジスタ設定バス２１０９に接続され、画像リング２００８を介して入力したＣＰＵ２００１より発行されたレジスタ設定要求を、レジスタ設定バス２１０９に接続される該当ブロックへ書き込む。また、ＣＰＵ２００１より発行されたレジスタ読み出し要求に基づき、レジスタ設定バスを介して該当レジスタより情報を読み出して画像リングインターフェース４（２１０２）に転送する。ステータス処理部２１０５は各画像処理部の情報を監視し、ＣＰＵ２００１に対してインタラプトを発行するためのインタラプトバケットを生成し、画像リングインターフェース４（２１０２）に出力する。
【００２１】
タイルバス２１０７には上記ブロックに加え、以下の機能ブロックが接続される。即ち、レンダリング部インターフェース２１１０、画像入力インターフェース２１１２、画像出力インターフェース２１１３、多値化部２１１９、２値化部２１１８、色空間変換部２１１７、画像回転部２０３０、解像度変換部（２１１６）等である。レンダリング部インターフェース２１１０は、後述するレンダリング部２０６０により生成されたビットマップイメージを入力するインターフェースである。レンダリング部２０６０とレンダリング部インターフェース２１１０は、一般的なビデオ信号２１１１にて接続される。このレンダリング部インターフェース２１１０は、タイルバス２１０７に加え、メモリバス２１０８、レジスタ設定バス２１０９への接続を有し、入力されたラスタ画像をレジスタ設定バスを介して設定された所定の方法によりタイル画像への構造変換をすると同時にクロックの同期化を行い、タイルバス２１０７に対して出力する。画像入力インターフェースは２１１２は、後述するスキャナ用画像処理部２１１４により補正画像処理されたラスタイメージデータを入力し、レジスタ設定バスを介して設定された、所定の方法によりタイル画像への構造変換とクロックの同期化を行い、タイルバス２１０７に対して出力する。画像出力インターフェース２１１３は、タイルバス２１０７からのタイル画像データを入力し、ラスタ画像への構造変換及びクロックレートの変更を行い、ラスタ画像をプリンタ用画像処理部２１１５へ出力する。また画像回転部２０３０は画像データの回転を行い、解像度変換部２１１６は画像の解像度を変更し、色空間変換部２１１７は、カラー及びグレースケール画像の色空間の変換を行う。２値化部２１１８は、多値（カラー、グレースケール）画像を２値化する。また多値化部２１１９は２値画像を多値データへ変換する。
【００２２】
外部バスインターフェース部２１２０は、画像リングインターフェース１，２，３，４、コマンド処理部２１０４、レジスタ設定バス２１０９を介し、ＣＰＵ２００１により発行された、書き込み、読み出し要求を外部バス３（２１２１）に変換出力するバスブリッジである。外部バス３（２１２１）は本実施の形態では、プリンタ用画像処理部２１１５及びスキャナ用画像処理部２１１４に接続されている。
【００２３】
メモリ制御部２１２２はメモリバス２１０８に接続され、各画像処理部の要求に従い、予め設定されたアドレス分割により、画像メモリ１及び画像メモリ２（２１２３）に対して、画像データの書き込み、読み出し、更には必要に応じてリフレッシュ等の動作を行う。本実施の形態では、画像メモリにＳＤＲＡＭを用いた例を示した。スキャナ用画像処理部２１１４では、画像入力デバイスであるスキャナ２０７０により読取られた画像データを補正処理する。プリンタ用画像処理部２１１５は、プリンタ出力のための補正処理を行い、その結果をプリンタ２０９５に出力する。レンダリング部２０６０はＰＤＬコードもしくは中間ディスプレイリストをビットマップイメージに展開する。
【００２４】
本実施の形態に係る制御ユニット２０００は、画像データを、図２に示すデータパケットのようにパケット化された形式で転送するものとする。
【００２５】
本実施の形態では、図４に示すように画像データを３２画素×３２画素からなるタイル形式の画像データ３００２に分割して取り扱う例を示す。このタイル単位の画像情報に、必要なヘッダ情報３００１及び画像付加情報等３００３を付加してデータパケットとする。画像情報部分には、スキャナ２０７０から入力された場合にはＲＧＢデータ、そのＲＧＢデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。（図５）
以下、図２のヘッダ情報３００１に含まれる情報について説明する。
【００２６】
パケットのタイプはヘッダ情報３００１のＰｃｋｔＴｙｐｅ３００４で識別される。このＰｃｋｔＴｙｐｅ３００４にはリピートフラグが含まれており、データパケットの画像データが１つ前に送信したデータパケットのの画像データと同一の場合、このリピートフラグをセットする。ＣｈｉｐＩＤ３００５は、パケットを送信するターゲットとなるチップのＩＤを示す。ＤａｔａＴｙｐｅ３００６はデータのタイプを示す。ＰａｇｅＩＤ３００７はページを示しており、ＪｏｂＩＤは、ソフトウェアで管理するためのジョブＩＤ３００８を格納する。
【００２７】
タイル番号はＹ方向のタイル座標３００９とＸ方向のタイル座標３０１０の組み合わせで、Ｙｎ，Ｘｎで表される。データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施の形態では、圧縮アルゴリズムとして、多値カラー（多値グレースケールを含む）の場合はＪＰＥＧを、２値の場合はパックビッツを採用した例を示した。画像データが圧縮されている場合と非圧縮の場合との区別は、ＣｏｍｐｒｅｓｓＦｌａｇ（圧縮フラグ）３０１７で示される。この圧縮フラグ３０１７は、画像データ用の１ビットと、Ｚデータ（Ｚ  ｄａｔａ）用の１ビットのそれぞれが用意されており、圧縮処理が行なわれたデータがパケットデータとして入っている場合に「１」を立てることとする。
【００２８】
Ｐｒｏｃｅｓｓ  Ｉｎｓｔｒｕｃｔｉｏｎ（処理命令）３０１１は左詰で処理順に設定され、各処理ユニットは、処理後、その処理命令を左方向に８ビットシフトする。処理命令３０１１は、ユニットＩＤ（ＵｎｉｔＩＤ）３０２４とモード（Ｍｏｄｅ）３０２５との組が８組格納されている。このユニットＩＤ３０２４は、各処理ユニットを指定し、モード３０２５は各処理ユニットでの動作モードを指定する。これにより、１つのパケットは８つのユニットで連続して処理される。パケットバイト長（Ｐａｃｋｅｔ  Ｂｙｔｅ  Ｌｅｎｇｔｈ）３０１２は、パケットのトータルバイト数を示す。画像データバイト長（Ｉｍａｇｅ  Ｄａｔａ  Ｂｙｔｅ  Ｌｅｎｇｈ）３０１５は、画像データのバイト数、Ｚデータバイト長（Ｚ  Ｄａｔａ  Ｂｙｔｅ  Ｌｅｎｇｔｈ）３０１６は、画像付加情報のバイト数を表し、画像データオフセット（Ｉｍａｇｅ  Ｄａｔａ  Ｏｆｆｓｅｔ）３０１３、Ｚデータオフセット（Ｚ  ｄａｔａ  Ｏｆｆｓｅｔ）３０１４は、それぞれのデータのパケットの先頭からのオフセットを表している。
【００２９】
メモリリセットフラグ（ＲＡＭ  Ｒｓｔ）３０２２は、ＲＡＭ２００２をクリアする信号を伝えるためのメモリリセットフラグである。通常の処理時には「０」で固定とされていて、タイル圧縮部２１０６によって圧縮されたデータ量がＲＡＭ２００２の容量を越える時に、このフラグに「１」がセットされる。このメモリリセットフラグ３０２２に「１」が付加されたパケットデータを受けて、ＲＡＭコントローラ２１２４では、それを基にしてＲＡＭ２００２及び、この後に説明するパケットテーブルのデータのリセットを行なう。
【００３０】
各パケットデータは、パケットテーブル（Ｐａｃｋｅｔ  Ｔａｂｌｅ）６００１によって管理される。このパケットテーブル６００１の構成要素は、図３に示す通りで、それぞれテーブルの値に「０」を５ビット付加すると、パケットの先頭アドレス６００２、パケットのバイト長６００５となる。
【００３１】
パケットアドレスポインタ（２７ビット）＋「５ｂ０００００」＝パケット先頭アドレス
パケット長（１１ビット）＋「５ｂ０００００」＝パケットのバイト長
パケットテーブル６００１とチェインテーブル（ＣｈａｉｎＴａｂｌｅ）６０１０は分割されないものとする。
【００３２】
パケットテーブル６００１は常に走査方向に並んでおり、Ｙｎ／Ｘｎ＝０００／０００，０００／００１，０００／００２，…という順で並んでいる。このパケットテーブル６００１のエントリは、一意に一つのタイルを示す。また、Ｙｎ／Ｘｍａｘの次のエントリは、（Ｙｎ＋１／Ｘ０）となる。
【００３３】
今、パケットが一つ前のパケットと全く同じデータである場合は、そのパケットはメモリ上には書かず、パケットテーブルのエントリに１つめのエントリと同じパケットアドレスポインタ、パケット長を格納する。１つのパケットデータを２つのテーブルエントリが指すような形になる。この場合、２つめのテーブルエントリのリピートフラグ（Ｒｅｐｅａｔ  Ｆｌａｇ）６００３がセットされる。
【００３４】
パケットがチェインＤＭＡにより複数に分断された場合は、分割フラグ（Ｄｉｖｉｄｅ  Ｆｌａｇ）６００４をセットし、そのパケットの先頭部分が入っているチェインブロックのチェインテーブル番号６００６をセットする。チェインテーブル６０１０のエントリは、チェインブロックアドレス（Ｃｈａｉｎ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）６０１１と、チェインブロック長（Ｃｈａｉｎ  Ｂｌｏｃｋ  Ｌｅｎｇｔｈ）６０１２とを含んでおり、テーブルの最後のエントリには、アドレス、データ長が共に「０」で格納されている。
【００３５】
このようにパケットフォーマットによって処理を行なう特徴として、以下の点が挙げられる。
【００３６】
図６に示すように、１つの画像データ５０をタイル化し、ヘッダを付加した各パケットデータを２つの処理ブロック５１，５２で処理し、その処理結果をアービタ５３を通してメモリ５４に格納する画像処理システムを想定する。この時、アービタ５３は、先に入力されたパケットフォーマットデータの転送が終わるまでは、次に入力されたデータを格納しておき、先に入力されたデータが全てメモリ５４に出力され次第、それまで格納されていた次のデータの出力を行うと言った順番で、パケットフォーマットのブロック毎にメモリ５４へ入力していく。
【００３７】
このような図６のシステムにおいて、各パケットデータは、処理ブロック５１，処理ブロック５２のうち、前のタイルの処理が終わったところに入力されて処理が行なわれる。また本実施の形態では、処理ブロック５１の処理時間の方が処理ブロック５２の処理時間よりも早いものとする。
【００３８】
図６から図１５は、本実施の形態に係る画像処理システムにより、図４に示すような画像データをパケット化して処理を行なった時の例を示す図である。
【００３９】
図６では、まず最初に処理ブロック５１に座標Ｘ＝０，Ｙ＝０のパケットデータが、また処理ブロック５２に座標Ｘ＝０，Ｙ＝１のパケットデータが入力される。
【００４０】
次に図７では、処理ブロック５１の座標Ｘ＝０，Ｙ＝０のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の００番地に、その処理済みのデータ格納され、新たに次のデータである、座標Ｘ＝０，Ｙ＝２のパケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝０，Ｙ＝１のパケットデータの処理が行なわれている。
【００４１】
次に図８では、処理ブロック５１の座標Ｘ＝０，Ｙ＝２のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０１番地に格納され、新たに次のデータである座標Ｘ＝０，Ｙ＝３のパケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝０，Ｙ＝１のパケットデータの処理が行なわれている。
【００４２】
次に図９では、処理ブロック５２の座標Ｘ＝０，Ｙ＝１のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０２番地に格納され、新たに次のデータである座標Ｘ＝１，Ｙ＝０のパケットデータが処理ブロック５２に入力される。この時、処理ブロック５１では、座標Ｘ＝０，Ｙ＝３のパケットデータの処理が行なわれている。
【００４３】
次に図１０では、処理ブロック５１の座標Ｘ＝０，Ｙ＝３のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０３番地に格納され、新たに次のデータである座標Ｘ＝１，Ｙ＝１のパケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝１，Ｙ＝０のパケットデータの処理が行なわれている。
【００４４】
図１１では、処理ブロック５１の座標Ｘ＝１，Ｙ＝１のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０４番地に格納され、新たに次のデータである座標Ｘ＝１，Ｙ＝２のパケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝１，Ｙ＝０のパケットデータの処理が行なわれている。
【００４５】
図１２では、処理ブロック５２の座標Ｘ＝１，Ｙ＝０のパケットデータの処理が終了し、アービタ５３を通ってメモリの０５番地に格納され、新たに次のデータである座標Ｘ＝１，Ｙ＝３のパケットデータが処理ブロック５２に入力される。この時、処理ブロック５１では、座標Ｘ＝１，Ｙ＝２のパケットデータの処理が行なわれている。
【００４６】
図１３は、処理ブロック５１の座標Ｘ＝１，Ｙ＝２のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０６地に格納され、新たに次のデータである座標Ｘ＝２，Ｙ＝０パケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝１，Ｙ＝３のパケットデータの処理が行なわれている。
【００４７】
図１４では、処理ブロック５１の座標Ｘ＝２，Ｙ＝０のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０７番地に格納され、新たに次のデータである座標Ｘ＝２，Ｙ＝１のパケットデータが処理ブロック５１に入力される。この時、処理ブロック５２では、座標Ｘ＝１，Ｙ＝３のパケットデータの処理が行なわれている。
【００４８】
図１５では、処理ブロック５２の座標Ｘ＝１，Ｙ＝３のパケットデータの処理が終了し、アービタ５３を通ってメモリ５４の０８番地に格納され、新たに次のデータである座標Ｘ＝２，Ｙ＝２のパケットデータが処理ブロック５２に入力される。この時、処理ブロック５１では、座標Ｘ＝１，Ｙ＝１のパケットデータの処理が行なわれている。
【００４９】
以上のようにして、メモリ５４に処理データを格納すると、出力されるタイルの順番は、元のパケットの順番とは異なる順でメモリ５４に格納される。
【００５０】
このようなシステムにおいて、先に説明を行なったパケットフォーマットでない場合、画像データは位置情報を持たないので、処理後のデータを元のデータの並びに復元することはできない。しかしながら、パケットフォーマットの場合、各タイルの位置情報（Ｘ，Ｙ座標データ）がヘッダ部分に付加されており、また、パケットテーブルフォーマットによって、各タイルのメモリ５４の格納アドレスが管理されているため、順不同にメモリ５４に入力されているパケットデータであっても、元の並び順でメモリ５４から読み出して出力することができる。
【００５１】
先に説明を行なったような大規模なシステムにおいて、画像データを処理する場合、容量の大きなデータを各処理ブロック間で受け渡しを行なうと、処理に時間が掛かってしまう。そのため、一般的に画像データは、圧縮符号化処理を行なった状態で受け渡しを行ない、実際に出力するにあたって、その圧縮符号化されたデータを復号化して出力している。
【００５２】
ＦＡＸやＰＣ、画像データベースなどからネットワークを通してシステム内に送られてくる画像データは、既に圧縮符号化されているものが送られてくるため、そのまま各処理ブロック内の受け渡しに使用することができるが、スキャナから入力された画像データは、圧縮符号化処理を行なった後に、メモリにその情報を格納し、その後の処理に使用する事となる。
【００５３】
その時のデータの流れを図１Ａ，１Ｂに従って説明すると以下のような流れとなる。
【００５４】
本実施の形態では、スキャンした画像に対して圧縮符号化を行ってメモリに格納した後、そのメモリからデータを読み出して復号処理を行なった後にプリンタによって出力を行う場合を例にして説明する。
【００５５】
スキャナ２０７０から入力された画像データは、スキャナ用画像処理部２１１４によって、スキャンされた画像データに補正処理が行なわれる。その後、この補正された画像データは、画像入力インターフェース２１１２、タイルバス２１０７を通ってタイル圧縮部２１０６へ入力される。本実施の形態では、タイル圧縮部１（２１０６）はＪＰＥＧによって圧縮符号化処理を行っている。このタイル圧縮部１（２１０６）により圧縮符号化されたデータは、画像リングインターフェース４（２１０２）及び画像リングインターフェース２（２１４８）、システムバスブリッジ２００７、ＲＡＭコントローラ２１２４を経由してＲＡＭ２００２に格納される。こうして圧縮されてＲＡＭ２００２に格納されたデータは、その後システムバスブリッジ２００７を経由して、プリンタ部、ＦＡＸ送信、ＬＡＮのデータベースなど、それぞれ目的の処理ブロックに送られる。
【００５６】
その後、ＲＡＭ２００２に格納された画像データは、ＲＡＭコントローラ２１２４によって再び読み出されて、システムバスブリッジ２００７を経由し、ＬＡＮコントローラ２０１０を通してＬＡＮに出力されたり、或いは汎用バスインターフェース２１４２を通して、ハードディスクなどの外部記憶装置２００４に蓄積される。
【００５７】
本実施の形態では、ＲＡＭ２００２のデータをプリンタ２０９５によって印刷する場合で説明する。
【００５８】
この場合、ＲＡＭ２００２のデータは、ＲＡＭコントローラ２１２４によって読み出され、システムバスブリッジ２００７、画像リングインターフェース１（２１４７）及び画像リングインターフェース３（２１０１）を通ってタイル伸長部１（２１０３）に入力される。タイル伸長部１（２１０３）では、先にタイル圧縮部２１０６おいてＪＰＥＧによって圧縮された符号化データの復号を行ない、パケットフォーマットのデータとして、タイルバス２１０７を通り、画像出力インターフェース２１１３によって、パケット形式のタイルデータからプリンタ出力用のラスタデータに変換される。その後、プリンタ用画像処理部２１１５によって画像処理が施された後、プリンタ２０９５によって印刷される。
【００５９】
ここでＲＡＭ２００２としては、画像データを格納するために十分な容量のメモリを使用する必要があるが、実際にはコストとの兼ね合いで、それほど大きなメモリを使用できない。そこで実際は、ある程度圧縮符号化が行なわれたデータを蓄積することを前提として、それにあった容量のメモリを用意しておくことになる。
【００６０】
以上のような構成において、ＪＰＥＧによって圧縮する場合、できるだけ高画質のデータを後の処理ブロックにおいて取り扱うためには、できるだけ低圧縮率で圧縮符号化処理を行なう必要がある。つまり、ＲＡＭ２００２に格納可能なデータ容量で、なおかつ低圧縮率の圧縮符号化処理を行うのが望ましい。
【００６１】
まずここで、ＪＰＥＧによる圧縮方法の仕組みを簡単に説明する。
【００６２】
図１６は、カラー静止画符号化の国際標準方式として、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）にて提案されている符号化方式のブロック構成図である。
【００６３】
図において、入力端子５０１より入力されたイメージ画素データは、ブロック化回路５０２において８×８画素のブロック状に切り出され、離散コサイン変換（ＤＣＴ）回路５０３にてコサイン変換された後、その変換係数が量子化回路５０４に供給される。この量子化回路５０４では、量子化テーブル（Ｑテーブル）５０５より供給される量子化ステップ情報に従って変換係数の線形量子化を行ない、その量子化した値がハフマン符号化ブロック５１７に出力される。
【００６４】
このハフマン符号化ブロック５１７では、以下の処理が行われる。
【００６５】
量子化された変換係数の内、ＤＣ係数は予測符号化回路（ＤＰＣＭ）５０６において前ブロックのＤＣ成分との差分（予測誤差）が取られ、それが一次元ハフマン符号化回路５０７に供給される。
【００６６】
図１７は、予測符号化回路（ＤＰＣＭ）５０６の詳細構成を示すブロック図である。
【００６７】
同図において、量子化回路５０４にて量子化されたＤＣ係数は、遅延回路６０１及び減算器６０２に印加される。この遅延回路６０１は、離散コサイン変換回路５０３が１ブロック、即ち、８×８画素分の演算に必要な時間だけ遅延させる回路であり、遅延回路６０１からは、前ブロックのＤＣ係数が減算器６０２に供給される。よって、減算器６０２の出力としては、前ブロックとのＤＣ係数の差分（予測誤差）が出力されることになる。（この予測符号化では、予測値として前ブロック値を用いているため、予測器は前述のごとく遅延回路にて構成される）。図１６に示す一次元ハフマン符号化回路５０７は、予測符号化回路５０６より供給された予測誤差信号を、ＤＣハフマンコードテーブル５０８に従って可変長符号化し、多重化回路５１５にＤＣハフマンコードを供給する。
【００６８】
一方、量子化回路５０４にて量子化されたＡＣ係数（ＤＣ係数以外の係数）は、スキャン変換回路５０９にて、低次の係数より順にジグザグスキャンされて有意係数検出回路５１０に供給される。このジグザグスキャンでは、図１８に示すような順番（０から６３の順）に、２次元ＤＴＣの結果がスキャンされ、１次元の連続データに変換される。
【００６９】
有意係数検出回路５１０は、量子化されたＡＣ係数が「０」かどうかを判定し、「０」の場合は、ラン長カウンタ５１１にカウントアップ信号を供給し、カウンタの値を＋１する。しかしＡＣ係数が「０」以外であればリセット信号をラン長カウンタ５１１に供給してカウンタ５１１の値を「０」にリセットすると共に、グループ化回路５１２にて、図１９に示すように、係数をグループ番号ＳＳＳＳと、付加ビットとに分割する。そして、グループ番号ＳＳＳＳを２次元ハフマン符号化回路５１３に供給し、付加ビットを多重化回路５１５に供給する。
【００７０】
尚、図１９において、ＥＯＢは、１ブロック（８×８画素）の符号化を終えたという区切り符号であり、Ｒ１６は、「０」のランが１６以上の場合に使用する符号である。ラン長カウンタ５１１は「０」のラン長をカウントする回路で、「０」以外の有意係数間の「０」の数ＮＮＮＮを２次元ハフマン符号化回路５１３に供給する。この２次元ハフマン符号化回路５１３は、供給された「０」のラン長ＮＮＮＮと有意係数のグループ番号ＳＳＳＳとをＡＣハフマンコードテーブル５１４に従って可変長符号化し、多重化回路５１５にＡＣハフマンコードを供給する。
【００７１】
多重化回路５１５は、１ブロック（８×８の入力画素）分のＤＣハフマンコード、ＡＣハフマンコード及び付加ビットを入力してそれらを多重化し、結果的に出力端子５１６より圧縮した画像データとして出力する。従って、出力端子５１６より出力される圧縮データをメモリに記憶し、読出し時に、逆操作によって伸長することにより、メモリ容量の削減が可能となる。
【００７２】
尚、このようなＪＰＥＧによって符号化されたデータの復号は、この符号化処理の全く逆の流れによって行われる。
【００７３】
図２０は、この復号処理の流れを説明するブロック図である。
【００７４】
図に示すように、入力端子９０１より入力されたイメージ画素データは、ハフマン復号部９０２によって、ハフマン符号化されたデータを復号する。逆量子化部９０３は、符号化用に作成したＱテーブルを基にした復号用のＱテーブル９０４を使用して逆量子化を行う。マッピング部９０５は、ＤＣＴ係数のジグザグスキャンによって１次元の連続データに変換されたＤＣＴ係数を２次元にマッピングし直す。そして逆ＤＣＴ部９０６で８×８のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子９０７から、その復号したデータを出力する。
【００７５】
上記圧縮符号化データ処理を行ない、容量の限られたメモリに画像データを格納するために、一般的には下記のような処理を行なっている。本実施の形態では、ＲＡＭ２００２のメモリ容量が、元の画像データの１／１６の場合で説明する。
【００７６】
最初、タイル圧縮１（２１０６）のＪＰＥＧ処理において、予想圧縮率が１／８となるようなＱテーブルを使用して圧縮する。これでは、ＲＡＭ２００２のメモリ容量よりも、圧縮符号化処理後の符号化データ量の方が多くなる。しかし、ＪＰＥＧ処理では、画像データによって予想圧縮率より高圧縮率で圧縮されることがあるので、この圧縮処理で符号化データが元データの１／１６以下まで圧縮されていれば、そのままＲＡＭ２００２に格納されることとなる。
【００７７】
ここで、例えば圧縮符号化後のデータがＲＡＭ２００２のメモリ容量を越えてしまった場合、次は予想圧縮率が１／１６のＱテーブルを使用して圧縮を行なう。この圧縮符号化処理によって、圧縮符号化後のデータがＲＡＭ２００２の容量以下まで圧縮された場合、そのデータをＲＡＭ２００２に格納する。しかし、画像データによっては予想圧縮率に満たない圧縮率となってしまう場合があるので、このような時には、ＲＡＭ２００２に用意されているメモリ容量では格納しきれないことになる。従って、このような場合は、予想圧縮率が１／３２のＱテーブルを使用して圧縮を行なう。このような圧縮符号化処理によって、圧縮符号化後のデータがＲＡＭ２００２のメモリ容量以下まで圧縮された場合、そのデータをＲＡＭ２００２に格納する。
【００７８】
以上のように、ＲＡＭ２００２のメモリ容量に収まるような圧縮符号化処理が行なわれるまで、次々と圧縮率の高いＱテーブルに切り替えて圧縮処理を行なうことにより、ＲＡＭ２００２に格納できるデータ容量となり、かつ低圧縮率の圧縮符号化処理を行なうことができる。
【００７９】
しかし、このような方法によって複数回圧縮を行なうためには、幾つかの問題が発生する。第１点は、複数のＱテーブルを用意しなくてはならないことである。これによってＱテーブルを格納しておくメモリの増大を招く事となる。また、復号を行なう際も、符号化を行なった時と同じＱテーブルを使用する必要があるため、タイル伸長部２１０３などの復号化処理を行なう部分でも、複数のＱテーブルが必要となり、これによるＱテーブルを格納しておくメモリの増大を招く事となる。
【００８０】
第２点目は、予想圧縮率を変更して圧縮処理を行なう際に、スキャナ２０７０による原稿画像の再スキャンが必要となることである。スキャン動作を繰り返し行なうため、ジョブの処理にかかる時間の増大を招く事となる。また、１枚ずつスキャンを行なう場合は、スキャンのし直しも可能であるが、オートシートフィーダなどにより、連続してスキャンを行ない、次々と原稿を変えてスキャンを行なっている場合には、リアルタイムで処理を進めていかなくてはならないため、スキャンのし直しと言う動作はできない。このようなスキャンのし直しを行なおうとする場合には、もう一度原稿をセットし直す事となり、使用者の手を煩わせることになる。
【００８１】
以上のような問題を解決するために、以下のような処理方法がある。
【００８２】
本実施の形態では、画像データは前述したタイル画像（パケット）フォーマットのデータとして入出力が行なわれるものとする。具体的には、図４のように画像データを３２×３２（画素）を１単位としたタイルに分割し、Ｘ座標、Ｙ座標を定め、ヘッダ部分にその座標データを入れておく。画像データ部分には、１タイル分、つまり１０２４画素分の画像データが入れられることとなる。又この画像データ部分には、スキャナ２０７０から入力された場合にはＲＧＢデータが、そのＲＧＢデータに圧縮処理を行なった場合には、圧縮後の符号化データが入れられる。（図５）
また、タイル圧縮部では、複数の符号化回路と復号化回路を使用し、ＲＡＭ２００２のメモリ容量に収まるようにＪＰＥＧの圧縮をリアルタイムで行ない出力をする。また、複数のＱテーブルを持つ代わりにビットシフト（右方向のビットシフトを意味する）することにより、Ｑテーブル格納用のメモリ容量の削減も実現できる。
【００８３】
次に、ＪＰＥＧ圧縮処理において、量子化データをビットシフト（以下特に断わらない限りは右方向のビットシフトである）器によって、ビットシフトさせる効果に関して説明する。
【００８４】
図２１は、ビットシフト器を伴ったデータ圧縮システムの構成を示す図で、図１６と共通する部分は同じ記号を使用して詳細な説明は省く。
【００８５】
この説明に使用するＱテーブル５０５は、予想圧縮率が１／８となるＱテーブルである。また、ビットシフト器１００１では、ＣＰＵ２００１によりビットシフトを行わない設定に、ビットシフト器１００２ではＣＰＵ２００１により、１ビットシフト（１／２演算）を行う設定にしておく。このような設定により、ある画像データの量子化を行なった結果、図２２の左側に示すような量子化結果になった場合、ビットシフト器１００１では、ビットシフトを行なわない設定になっているので、量子化結果をそのままハフマン符号化による圧縮符号化を行ない、図２２の右側に示したように１０６ビットの圧縮データとなる。
【００８６】
またビットシフト器１００２では、１ビットシフトを行うように設定されているので、ビットシフト器１００２から出力される量子化結果は、図２３の左側に示すような値となる。図２３に示すように、量子化データで「１」及び「−１」であった部分は、ビットシフトすることによって「０」となる。そのため、量子化データをジグザグスキャンし、その並びを符号化する際に「０」が連続する部分が多くなる。その結果。このデータをハフマン符号化による圧縮符号化を行なうと、図２３の右側に示したように６３ビットの圧縮データとなる。
【００８７】
この方法によると、ビットシフトを行なう前に比べて、圧縮後のデータは正確に１／２にはならないが、標準的な画像を処理した場合、ほぼ１／２のデータ量にまで圧縮できる。
【００８８】
図２４は、本実施の形態に係るタイル圧縮部１（２１０６）の内部で使用する前記問題点を解決するためのＪＰＥＧ圧縮を実現するためのＪＰＥＧ圧縮部の構成を示すブロック図である。
【００８９】
図において、メモリ１３１２は、図１ＡにおけるＲＡＭ２００２に相当し、画像リングインターフェース４（２１０２）及び、画像リングインターフェース２（２１４８）、システムバスブリッジ２００７、ＲＡＭコントローラ２１２４は、この図においては、省略している。
【００９０】
図２４において、入力端子１３０１は、タイルバスインターフェース２１０７からの画像データを入力するインターフェース部分である。この入力端子１３０１より入力された画素データは、ブロック化回路１３０２において８×８画素のブロック状に切り出され、離散コサイン変換（ＤＣＴ）回路１３０３にてコサイン変換された後、その変換係数が量子化回路１３０４に供給される。この量子化回路１３０４では、量子化テーブル（Ｑテーブル）１３０５より供給される量子化ステップ情報に従って変換係数の線形量子化を行なう。こうして量子化回路１３０４より出力された量子化データは、ビットシフト器１３０６及びビットシフト器１３０７へ入力される。ここでは、８×８の量子化データを、ビットシフトにより１／２や、１／４，１／８にする機能を持っている。尚、ここで何ビットシフトを行なうかといった情報は、ＣＰＵ２００１（図１Ａ）によって制御されるものとする。また、ビットシフト器１３０６のビットシフト数は、ビットシフト器１３０７のビットシフト数よりも１ビット分少ない値とする。ビットシフト器１３０６及びビットシフト器１３０７から出力された量子化データはそれぞれ、ハフマン符号化部１３０８、ハフマン符号化部１３０９へ入力され、さきに詳細に説明を行なった符号化方法に従って圧縮符号化処理が行なわれる。
【００９１】
ハフマン符号化部１３０８によって符号化されたデータはアービタ１３１１に入力されメモリ１３１２に格納される。また、ハフマン符号化部１３０９から出力された符号化データは、メモリ１３１０へ入力される。このメモリ１３１０のデータの入出力は、ＣＰＵ２００１によって制御されるものとする。メモリ１３１０から出力されたデータは、アービタ１３１１を通ってメモリ１３１２に格納されるとともに、ハフマン復号化部１３１３によって、元の量子化テーブルに復号される。こうして復号されたデータは、ビットシフト器１３１４によって１ビットシフト（１／２）される。ビットシフト器１３１４によって１ビットシフトされた量子化結果は、ハフマン符号化部１３１５によって再び符号化されメモリ１３１０へと入力される。
【００９２】
以上の構成からなるタイル圧縮部１（２１０６）によって、メモリ１３１２に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を以下に説明する。
【００９３】
図２５から図３２は、図２４の構成に基づくメモリ１３１２に蓄積可能な最も小さな圧縮率による圧縮処理をリアルタイムで行なうための方法を説明する図である。本実施の形態の前提として、Ｑテーブル１３０５は、予想圧縮率が１／８のものを使用するものとする。また、メモリ１３１２は、元の画像データの１／１６の容量まで蓄積できるメモリ容量を持っているものとする。尚、これら図中の実線で表わされている部分は、データが流れている経路を表わし、点線で表わされている部分は、その図の状態の時にはデータが流れていない経路を示している。また、これら図面において図２４と共通する部分は同じ記号で示し、その説明を省略する。
【００９４】
まず処理開始時には、図２５のように、ビットシフト器１３０６は、０ビットシフト（スルー）の設定を行なう。また、ビットシフト器１３０７は、１ビットシフト（１／２）の設定を行なう。以上のような設定を行ない、入力画像データの圧縮符号化処理を行なうと、ハフマン符号化部１３０８からは、予想圧縮率１／８によって圧縮された画像データが出力され、メモリ１３１２に蓄積される。また、ハフマン符号化１３０９からは、予想圧縮率１／１６によって圧縮された画像データが出力され、メモリ１３１０に蓄積される。ここではメモリ１３１０からデータの出力は行なわない。
【００９５】
このような設定で処理を行なった時、圧縮率が足らずに図２６のように、メモリ１３１２の容量が一杯になってしまった場合は、メモリ１３１２にリセットが掛かり、それまでメモリ１３１２に蓄積された全データをクリアする。メモリ１３１２がクリアされた後、図２７のように、ビットシフト器１３０６は、１ビットシフト（１／２）に設定される。また、ビットシフト器１３０７は、２ビットシフト（１／４）に設定される。そして、メモリ１３１０から、今まで蓄積されていた予想圧縮率１／１６によって圧縮符号化された画像データの先頭から、リセットが掛けられる前までのデータが出力され、アービタ１３１１を通してメモリ１３１２に蓄積される。メモリ１３１０から出力されたデータが蓄積されていたメモリ１３１０のエリアはリセットされ、次のデータが入力された時の蓄積部分として使用される。
【００９６】
また、ハフマン符号化部１３０８からは、リセットが掛けられた後に、入力端子１３０１から入力され、量子化され、ビットシフト器１３０６により１ビットシフトが行なわれたデータが、ハフマン符号化され、予想圧縮率１／１６によって圧縮された画像データとして出力されてメモリ１３１２に蓄積される。このメモリ１３１２には、メモリ１３１０から入力される予想圧縮率１／１６によって圧縮された先頭からのデータと、ハフマン符号化部１３０８から入力される予想圧縮率１／１６によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、位置情報はパケットテーブルによって管理されているため、後にメモリ１３１２からデータの出力を行なう時には、スキャナ２０７０から入力を行なった順番で、データの出力を行なえるようになっている。またこの時、ハフマン符号化部１３０９からは、予想圧縮率１／３２によって圧縮された画像データが出力され、メモリ１３１０の空いているエリアに蓄積される。そしてメモリ１３１０から出力されたデータは、メモリ１３１２に入力されると同時に、ハフマン復号化部１３１３により復号処理が行なわれ量子化データに戻される。その量子化データは、次のビットシフト器１３１４によって１ビットシフト（１／２）される。その後、ハフマン符号化部１３１５によって再び符号化され、予想圧縮率１／３２によって圧縮された符号化データとしてメモリ１３１０に蓄積される。
【００９７】
つまり、メモリ１３１０には、ハフマン符号化部１３１５から入力される予想圧縮率１／３２によって圧縮された先頭からのデータと、ハフマン符号化部１３０９から入力される予想圧縮率１／３２によって圧縮された途中データの両方が混ざった形で入力されるが、先に説明を行なったように、パケットフォーマットの形で位置情報はパケットテーブルによって管理されているため、後にメモリ１３１２からデータの出力を行なう時には、スキャナ２０７０から入力を行なった順番でデータを出力することができる。
【００９８】
そして図２８に示すように、メモリ１３１０内に蓄積されていた予想圧縮率１／１６によって圧縮されていたデータが全てメモリ１３１２に出力された時点で、メモリ１３１０からのデータの出力が停止され、ハフマン符号化部１３０８からのデータのみがメモリ１３１２に入力されて格納される。尚、この間もメモリ１３１２には、ハフマン符号化部１３０９からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率１／１６によって圧縮されたデータがメモリ１３１２に全て蓄積された場合、圧縮処理は終了となる。
【００９９】
しかし、圧縮符号化を行なう画像によっては、図２９のように、予想していた１／１６の圧縮率を満たさずに、メモリ１３１２に蓄積しきれない場合もある。このように圧縮率が足らずにメモリ１３１２の容量が一杯になってしまった場合は、メモリ１３１２にリセットが掛かり、そのメモリ１３１２に蓄積されていたデータがクリアされる。こうしてメモリ１３１２がクリアされた後は、図３０に示すように、ビットシフト器１３０６は２ビットシフト（１／４）に設定される。また、ビットシフト器１３０７は３ビットシフト（１／８）に設定される。そしてメモリ１３１０から、今まで蓄積されていた予想圧縮率１／３２によって圧縮符号化された画像データの先頭から、今回リセットが掛けられる前までのデータが出力され、アービタ１３１１を通してメモリ１３１２に蓄積される。メモリ１３１０から出力を行なったデータの蓄積されていた部分はリセットされ、次のデータが入力された時の蓄積部分として使用される。
【０１００】
また、ハフマン符号化部１３０８からは、リセットが掛けられた後に、入力端子１３０１から入力され量子化されて、ビットシフト器１３０６で２ビットシフトされたデータがハフマン符号化され、予想圧縮率１／３２によって圧縮された画像データとして出力され、メモリ１３１２に蓄積される。メモリ１３１２には、メモリ１３１０から入力される予想圧縮率１／３２によって圧縮された先頭からのデータと、ハフマン符号化部１３０８から入力される予想圧縮率１／３２によって圧縮された途中データの両方が混ざった形で入力されるが、前述したように、パケットフォーマットの形で、各パケットの位置情報がパケットテーブルによって管理されているため、後にメモリ１３１２からデータの出力を行なう時には、スキャナ２０７０から入力を行なった順番でデータの出力を行なえる。またこの時、ハフマン符号化部１３０９からは、予想圧縮率１／６４によって圧縮された画像データが出力されてメモリ１３１０に蓄積される。このメモリ１３１０から出力されたデータは、メモリ１３１２に入力されると同時にハフマン復号化部１３１３に入力されて復号処理が行なわれ量子化データに戻される。その量子化データは、ビットシフト器１３１４によって１ビットシフト（１／２）された後、ハフマン符号化部１３１５によって再び符号化され、約１／６４の符号化データとしてメモリ１３１０に蓄積される。こうしてメモリ１３１０には、ハフマン符号化部１３１５から入力される予想圧縮率１／６４によって圧縮された先頭からのデータと、ハフマン符号化部１３０９から入力される予想圧縮率１／６４によって圧縮された途中データの両方が混ざった形で入力される。
【０１０１】
次に図３１のように、メモリ１３１０に蓄積されて予想圧縮率１／３２によって圧縮されていたデータが全てメモリ１３１２に出力された時点で、メモリ１３１０からのデータの出力が停止され、ハフマン符号化部１３０８からのデータのみがメモリ１３１２に入力される。また、この間もメモリ１３１０には、ハフマン符号化部１３０９からのデータが蓄積されている。その後、この処理を続けて、予想圧縮率１／３２によって圧縮されたデータがメモリ１３１２に全て蓄積された場合（図３２）に、この圧縮処理は終了する。
【０１０２】
次に図３３をもとに、タイル圧縮部２１０６の内部構成を説明する。
【０１０３】
１５０１はデータ入力インターフェースで、タイルバス２１０７からのパケット化されたデータを入力する。１５０２はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部１５０５に出力する。データ部分の情報はＪＰＥＧ圧縮部１５０３に入力され、先に詳細な説明を行なった方法により、圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータはデータ出力インターフェース１５０８に出力されるとともに、カウンタ１５０４に入力される。このカウンタ１５０４は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部１５０７及び加算器１５０５に出力する。加算器１５０５は、その圧縮後のデータの加算を行ない、その加算結果を比較器１５０６へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器１５０５からの加算結果をもとに比較器１５０６は、その加算結果がＲＡＭ２００２の容量を越える時に、それを伝える信号をＪＰＥＧ圧縮部１５０３、ヘッダ情報変更部１５０７、カウンタ１５０９に出力する。またこの時同時に、加算器１５０５の値もクリアする。
【０１０４】
この容量オーバを示す信号を受けたＪＰＥＧ圧縮部１５０３は、現時点の圧縮率よりも圧縮率を上げた圧縮データを生成して出力するための制御に切り替える。またカウンタ１５０９は、容量オーバーの信号が何回出力されたかをカウントし、その計数値をレジスタなどに保持しておく。ヘッダ情報変更部１５０７は、パケットデータのヘッダ部分にあるデータサイズ情報を圧縮後のサイズに変更するとともに、圧縮フラグを書き換えて圧縮後のデータ表示とする。また比較器１５０６からの比較結果を受けて、データの加算結果がＲＡＭ２００２の容量を越えた場合には、ヘッダ部分のＲａｍ  Ｒｓｔフラグ３０２２にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース１５０８に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース４（２１０２）へ出力される。
【０１０５】
図３４は、本実施の形態に係るＲＡＭコントローラ２１２４の構成を表わしたブロック図である。
【０１０６】
１６０１はＳＳＢインターフェース部で、システムバスブリッジからのパケットデータの入力及びシステムバスブリッジへのパケットデータの出力を行う。１６０２はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取って必要な情報の解析を行う。また出力を行うパケットデータのヘッダ部分の情報の修正を行う場合の書き換えもこの部分で行う。１６０３はパケットテーブル生成部で、ヘッダ情報解析部１６０２からヘッダ情報として、ＸＹ座標情報とデータサイズを入力し、それを基にパケットデータテーブルを生成する。またヘッダ情報として、メモリリセットフラグも入力され、もしこのフラグに「１」が立っていた場合には、ＲＡＭ２００２の内容をリセットするとともに、パケットデータテーブルのリセットを行なう。１６０４はＲＡＭインターフェースで、パケットテーブル生成部１６０３で作られたパケットテーブルに従って、アドレスやＲＡＭ制御信号を生成してＲＡＭ２００２の制御を行なう。
【０１０７】
以上説明した方法により、ＲＡＭ２００２に格納されている圧縮データがＲＡＭ２００２のメモリ容量を越えてしまうこと検知し、システムのコントロールを行うことが可能となる。
【０１０８】
次に図３５を参照して、符号化されたデータを印刷する際に、ＪＰＥＧ圧縮データを復号するタイル伸長部２１０３の内部構成を説明する。
【０１０９】
１７０１はデータ入力インターフェースで、画像リングインターフェース３（２１０１）からのパケット化されたデータを入力する。１７０２はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報としてヘッダ情報変更部１７０５に出力する。またデータ部分の情報は、ＪＰＥＧ伸長部１７０３に入力され、前述したようにしてＪＰＥＧ復号処理が行なわれる。こうして復号されたデータは、データ出力インターフェース１７０６に出力されるとともに、カウンタ１７０４に入力される。このカウンタ１７０４は、圧縮後のデータがどれだけのデータ量になったかをカウントし、そのカウント情報をデータサイズとしてヘッダ情報変更部１７０５へ出力する。ヘッダ情報変更部１７０５は、パケットデータのヘッダ部分にあるデータサイズ情報を、伸長後のサイズに変更するとともに、圧縮フラグの書き換えを行ない、伸長後の画像データとする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース１７０６に入力され、復号後の画像データのヘッダとして付加され、パケットデータとしてタイルバス２１０７へ出力される。
【０１１０】
ＪＰＥＧ圧縮データの伸長を行なう場合、圧縮を行なった際に使用したＱテーブルを基に復号用のＱテーブルを用意する必要がある。通常は圧縮時に使用しているＱテーブルは１つに決まっていて、それに対応する復号時のＱテーブルを１つ用意しておけば圧縮及び復号ができる。しかし、本実施の形態におけるＱテーブルは、１／８の圧縮率となるようなＱテーブルを１／２ｎしたものを使用していて、ｎの値はＪＰＥＧ圧縮時にＲＡＭ２００２の容量に応じて変化するので、その変化に応じて、複数のＱテーブルを使い分ける必要がある。
【０１１１】
そこで本実施の形態では、タイル圧縮部２１０６においてＲａｍＲｅｔフラグが「１」となった回数をタイル圧縮部２１０６内のカウント１５０９（図３３）によってカウントし、ｎがいくつであるかを認識しておき、タイル圧縮部２１０６の内部のレジスタに記憶しておく。そしてＲＡＭ２００２から出力されたＪＰＥＧ圧縮データがタイル伸長部２１０３にて伸長される時に、その情報を読み出すことによって復号用のＱテーブルを準備しることができる。つまり、１度もＲａｍＲｅｔフラグが「１」とならなかった場合には１／８に対応したＱテーブルを、１度ＲａｍＲｅｔフラグが「１」となった場合には１／１６に対応したＱテーブルを、２度ＲａｍＲｅｔフラグが「１」となった場合には１／３２に対応したＱテーブルを、それぞれ用意してＪＰＥＧ復号を行なう。
【０１１２】
以上の説明に基づいて、本実施の形態に係る画像処理の動作を図３６のフローチャートを参照して説明する。
【０１１３】
まずステップＳ１０１で、スキャナ２０７０によって原稿の読み取りスキャンを行ない、スキャンデータを入力する。次にステップＳ１０２に進み、タイル圧縮部１（２１０６）のＲａｍＲｓｔフラグに「１」が立つ回数をカウントするカウンタ１５０９（図３３）の値を「０」にリセットする。次にステップＳ１０３に進み、タイル圧縮部２１０６のＪＰＥＧ圧縮部６００３によって画像データの圧縮処理を行なう。そしてステップＳ１０４で、このタイル圧縮部２１０６による処理によって、入力画像データを圧縮した後のデータが、ＲＡＭ２００２のメモリ容量を越えているか否か判断する。ここでもしＲＡＭ２００２のメモリ容量を越えてしまうと判断した時にはステップＳ１０５に進み、カウンタ１５０９の値をカウントアップし、ステップＳ１０６で圧縮率を変更した後、より高圧縮率で圧縮されたＪＰＥＧデータを生成する。
【０１１４】
こうして圧縮率を上げていき、ＲＡＭ２００２に全データを格納できるまで、即ち、ステップＳ１０４の判定がＮＯになるまで前記処理を繰り返し、全ての画像データを格納できるようになるとステップＳ１０７に進み、ＲＡＭ２００２にその圧縮したデータを格納する。次にステップＳ１０８に進み、入力画像データをプリントするために、ＲＡＭ２００２からＪＰＥＧ圧縮データを読み出す。次にステップＳ１０９で、カウンタ１５０９の値を取得し、その値を基にステップＳ１１０で、タイル伸長部１（２１０３）でＪＰＥＧ復号処理を行なうためのＱテーブルを設定する。そしてステップＳ１１１に進み、タイル伸長部１（２０１３）によってＪＰＥＧ圧縮データの復号処理を行なう。次にステップＳ１１２に進み、プリンタ用画像処理部２１１５によって、所定の画像処理を施した後、その処理済みの画像データをプリンタ２０９５に出力して印刷する。
【０１１５】
以上述べた処理によって、ＪＰＥＧによる圧縮が行なわれたデータがメモリ容量を越えた場合にリアルタイムで検知し、その画像データを更に高い圧縮率で圧縮してメモリ容量内に収まるデータ量となるようにシステムの処理を切り替えることができる。また圧縮を行なった時に使用したＱテーブルに対応したＱテーブルを、復号時に的確に選択できることにより、その圧縮データの復号処理を行なうことができる。
【０１１６】
［実施の形態２］
前述の実施の形態１では、タイル圧縮部１（２１０６）のカウンタ１５０９によって、ＲａｍＲｓｔフラグが「１」となった回数をカウントし、その計数値に基づいて復号時のＱテーブルの設定を行なっていた。
【０１１７】
これに対し本実施の形態２では、ＲＡＭコントローラ２１２４にカウンタを持ち、これによりＲａｍＲｓｔフラグが「１」となった回数をカウントし復号する。また、復号を行なう際には、複数のＱテーブルを用意することなく、符号化時に何回ＲＡＭ２００２にリセットが掛かったかによって、それに合わせた復号処理を行なう。
【０１１８】
図３７は、本発明の実施の形態２に係るタイル圧縮部１（２１０６）の構成を示すブロック図である。ここでは図３３で説明した前述の実施の形態１におけるタイル圧縮部１（２１０６）と同様な部分は同じ記号で示している。ここでの特徴は、ＲａｍＲｓｔフラグが「１」となる回数をカウントするカウンタ１５０９が無い事である。
【０１１９】
図において、１５０１はデータ入力インターフェースで、タイルバス２１０７からのパケット化されたデータを入力する。１５０２はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部１５０５に出力する。またデータ部分の情報は、ＪＰＥＧ圧縮部１５０３に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース１５０８に出力されるとともに、カウンタ１５０４に入力される。このカウンタ１５０４は、圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部１５０７及び加算器１５０５へ出力している。加算器１５０５は、圧縮後のデータの加算を行ない、その加算結果を比較器１５０６へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なう。この加算器１５０５からの加算結果をもとに比較器１５０６は、その加算結果がＲＡＭ２００２のメモリ容量を越える時に、それを伝える信号をＪＰＥＧ圧縮部１５０３、ヘッダ情報変更部１５０７に出力する。また、この時同時に、加算器１５０５の値もクリアする。この容量オーバーの信号を受けたＪＰＥＧ圧縮部１５０３は、圧縮率を上げたデータを生成し、出力するために制御の切り替えが行なわれる。ヘッダ情報変更部１５０７は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに圧縮フラグの書き換えを行い、圧縮後のデータ表示とする。また比較器１５０６からの比較結果を受けて、データの加算結果がＲＡＭ２００２のメモリ容量を越えた場合には、ヘッダ部分のＲａｍ  Ｒｓｔフラグ３０２２にその情報を載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース１５０８に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース４（２１０２）へ出力される。
【０１２０】
図３８は、実施の形態２に係るＲＡＭコントローラ２１２４の内部構成を示したブロック図である。
【０１２１】
５１０１はＳＳＢインターフェース部で、システムバスブリッジからのパケットデータの入力及び、システムバスブリッジへのパケットデータの出力を行なう。５１０２はヘッダ情報解析部で、入力されたパケットデータのヘッダ部分を読み取り、必要な情報の解析を行なう。また出力を行なうパケットデータのヘッダ部分の情報を修正する場合の書き換えもこの部分で行なう。また、ヘッダ情報解析部５１０２からは、Ｒａｍ  Ｒｓｔフラグ３０２２の値が出力されていて、カウンタ５１０５へとつながれている。カウンタ５１０５では、このＲａｍ  Ｒｓｔフラグに「１」が立った回数をカウントし、レジスタなどに保持しておく。５１０３はパケットテーブル生成部で、ヘッダ情報解析部５１０２からヘッダ情報として、ＸＹ座標情報とデータサイズを入力し、それをもとにパケットデータテーブルを生成する。また、ヘッダ情報として、メモリリセットフラグも入力され、もし「１」が立っていた場合には、ＲＡＭ２００２をリセットするとともに、パケットデータテーブルをリセットする。８０４はＲＡＭインターフェースで、パケットテーブル生成部８０３で作られたパケットテーブルに従ってアドレスやＲＡＭ制御信号を生成してＲＡＭ２００２を制御する。ＲＡＭ２００２から出力されたＪＰＥＧ圧縮データがタイル伸長部１（２１０３）にて処理される時には、カウンタ５１０５の情報を読み出すことによって、ＪＰＥＧ符号化が行われた際に、何回ビットシフトが行われたかを検知することができる。つまり、１度もＲａｍ  Ｒｅｔフラグ３０２２が「１」とならなかった場合には、１／８に対応したＱテーブルを使用してビットシフトが行われていないことになる。また１度だけＲａｍＲｅｔフラグ３０２２が「１」となった場合には、１／８に対応したＱテーブルを使用して１回ビットシフトを行なったことになる。更に２度ＲａｍＲｅｔフラグが「１」となった場合には、１／８に対応したＱテーブルを使用して２回ビットシフトを行なったことになる。この情報を基に、タイル伸長部２１０３のＪＰＥＧ伸長部１５０３は、ＪＰＥＧデータの復号処理を行なう。
【０１２２】
図３９は、実施の形態２に係るタイル伸長部１（２１１３）のＪＰＥＧ伸長部の構成を示すブロック図である。
【０１２３】
入力端子５２０１より入力された画素データは、ハフマン復号化部５２０２によって、ハフマン符号化されたデータを復号する。ビットシフト部５２０３は、ＪＰＥＧ符号化が行われた際に、何回ビットシフトが行われたかを示す情報をＲＡＭコントローラ２１２４から入力し、０回の場合はそのままの値を逆量子化部５２０４へ出力し、１回の場合は１ビットシフトを行ってデータを２倍の値にし、２回の場合は２ビットシフトを行なって４倍の値にし、３回の場合は３ビットシフトを行ってデータを８倍の値にするように、それぞれ左方向へのビットシフトを行なう。逆量子化部５２０４は、符号化用に使用した（本実施の形態では１／８）予想圧縮率のＱテーブルをもとにした復号化用のＱテーブル５２０５を使用して逆量子化を行なう。マッピング部５２０６は、ＤＣＴ係数のジグザグスキャンによって１次元の連続データに変換されたＤＣＴ係数を、２次元にマッピングし直す。逆ＤＣＴ部５２０７は、８×８のエリアごとに逆離散コサイン変換を掛けることにより復号し、出力端子５２０８から復号したデータを出力する。
【０１２４】
以上述べた処理によって、ＪＰＥＧによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替えることが可能となった。更に、ＲＡＭコントローラのカウンタによってＪＰＥＧ符号化時のビットシフトの回数をカウントし、そのカウントした情報をＪＰＥＧ復号化の際のビットシフトの回数とすることによって、複数のＱテーブルを持つことなく、ＪＰＥＧ復号化を行うことができる。
【０１２５】
［実施の形態３］
前述の実施の形態１では、タイル圧縮部１（２１０６）カウンタ１５０９によって、ＲａｍＲｓｔフラグ３０２２が「１」となる回数をカウントし、その値をタイル圧縮部１（２１０６）のレジスタなどに記憶することによって、後の復号の際のＱテーブルの設定を行なっていた。
【０１２６】
これに対して本発明の実施の形態３では、タイル圧縮部１（２１０６）のカウンタ１５０９によって、ＲａｍＲｓｔフラグ３０２２が「１」となる回数をカウントし、その値をパケットデータのヘッダ部分に書き込んでおく。そして復号する際には、ヘッダ部分のカウント数を基にして処理する。また復号する際には、複数のＱテーブルを用意することなく、符号化時に何回ＲＡＭ２００２にリセットが掛かったかによって、それに合わせた復号処理を行うことができる。
【０１２７】
図４０は、本発明の実施の形態３に係るタイル圧縮部１（２１０６）の構成を示すブロック図で、前述の図３３のタイル圧縮部１（２１０６）の構成と共通する部分は同じ記号で示している。この実施の形態３の特徴は、Ｒａｍ  Ｒｓｔフラグ３０２２が「１」となる回数をカウントするカウンタ１５０９によるカウント数がヘッダ情報変更部１５０７に入力されていることである。これによって出力するパケットデータのヘッダ情報に、そのデータが圧縮されるときに何回ＲＡＭ２００２にリセットが行われたか書き込む。
【０１２８】
１５０１はデータ入力インターフェースで、タイルバス２１０７からのパケット化されたデータを入力する。１５０２はヘッダ情報解析部で、パケットデータのヘッダ部分の情報を読み取り、ヘッダ情報として、ヘッダ情報変更部１５０５に出力する。またデータ部分の情報は、ＪＰＥＧ圧縮部１５０３に入力され、前述の方法により圧縮符号化処理が行なわれる。こうして圧縮符号化されたデータは、データ出力インターフェース１５０８に出力されるとともに、カウンタ１５０４に入力される。このカウンタ１５０４では圧縮後のデータがどれだけのデータ量になったかをカウントし、その情報をデータサイズとしてヘッダ情報変更部１５０７及び加算器１５０５へ出力する。加算器１５０５は圧縮後のデータの加算を行い、その加算結果を比較器１５０６へ出力する。この時、ヘッダ部分のデータ量も加味した上で加算を行なうものとする。この加算器１５０５からの加算結果をもとに比較器１５０６は、その加算結果がＲＡＭ２００２のメモリ容量を越える時に、それを伝える信号をＪＰＥＧ圧縮部１５０３、ヘッダ情報変更部１５０７、カウンタ１５０９に出力する。また、この時同時に、加算器１５０５の値もクリアする。この容量オーバーの信号を受けたＪＰＥＧ圧縮部１５０３は、圧縮率を上げたデータを生成して出力するために制御を切り替える。またカウンタ１５０９は、この容量オーバーの信号が何回出力されたかをカウントし、その値をヘッダ情報変更部１５０７に出力する。ヘッダ情報変更部１５０７は、パケットデータのヘッダ部分にあるデータサイズ情報を、圧縮後のサイズに変更するとともに、圧縮フラグの書き換えを行って圧縮後のデータ表示とする。また比較器１５０６からの比較結果を受けて、データの加算結果がＲＡＭ２００２のメモリ容量を越えた場合には、ヘッダ部分のＲａｍ  Ｒｓｔフラグ３０２２にその情報を載せる。またカウンタ１５０９からのリセット回数も常にヘッダに載せて出力用ヘッダ情報とする。こうして内容が変更されたヘッダ情報は、データ出力インターフェース１５０８に入力され、圧縮符号化後のデータのヘッダとして付加され、パケットデータとして画像リングインターフェース２１０２へ出力される。
【０１２９】
図４１は、本発明の実施の形態３に係るパケットデータのヘッダ部分の内容を示した図である。
【０１３０】
先の実施の形態と異なる点は、Ｒｓｔ  Ｃｏｕｎｔｅｒ５４０１が設けられていることである。この部分にカウンタ１５０９から入力されるリセット回数の計数値を載せて出力しＲＡＭ２００２に格納する。ＲＡＭ２００２から出力されたＪＰＥＧ圧縮データがタイル伸長部１（２１０３）にて伸長処理される際に、ヘッダ部分のＲｓｔ  Ｃｏｕｎｔｅｒ５４０１の情報を読み出すことによってＪＰＥＧ符号化が行われた際に、何回ビットシフトが行われたかを検知する。つまりＲｓｔ  Ｃｏｕｎｔｅｒ５４０１が「０」の場合には、１／８に対応したＱテーブルを使用して１回もビットシフトを行なっていないことになる。またＲｓｔ  Ｃｏｕｎｔｅｒ５４０１が「１」の場合には、１／８に対応したＱテーブルを使用して１回ビットシフトを行なったことになる。更に、Ｒｓｔ  Ｃｏｕｎｔｅｒ５４０１が「２」の場合には、１／８に対応したＱテーブルを使用して２回ビットシフトを行なったことになる。この情報をもとに、タイル伸長部２１０３内のＪＰＥＧ伸長部６００３は、ＪＰＥＧデータを復号する。
【０１３１】
本実施の形態におけるＪＰＥＧ圧縮データの復号は前述の実施の形態２におけるタイル伸長部１（２１１３）のＪＰＥＧ伸長部１７０３の構成と同じ（図３９）とする。
【０１３２】
入力端子５２０１より入力された画素データは、ハフマン復号化部５２０２によって復号される。ビットシフト部５２０３は、ＪＰＥＧ符号化が行われた際に、何回ビットシフトが行われたかを示す情報をヘッダ情報のＲｓｔ  Ｃｏｕｎｔｅｒ５４０１から入力し、０回の場合はそのままの値を逆量子化部５２０４へ出力する。１回の場合は１ビット左シフトを行ってデータを２倍の値にして出力する。更に、２回の場合は２ビット左シフトを行なってデータを４倍の値にし、３回の場合は３ビット左シフトを行ってデータを８倍の値にして出力する。
【０１３３】
逆量子化部５２０４は、符号化用に使用した（本実施の形態では１／８）予想圧縮率のＱテーブルを基にした復号化用のＱテーブル５５０５を使用して逆量子化する。マッピング部５２０６で、ＤＣＴ係数のジグザグスキャンによって１次元の連続データに変換されたＤＣＴ係数を２次元にマッピングし直す。逆ＤＣＴ部５２０７で、８×８のエリアごとに逆離散コサイン変換を掛けることにより、復号し、出力端子５２０８から復号したデータを出力する。
【０１３４】
以上述べた処理によって、ＪＰＥＧによる圧縮が行なわれたデータが、メモリ容量を越えて格納されようとした場合、リアルタイムで検知を行ない、更に高い圧縮率で圧縮を行ないメモリ内に収まるデータ量となるように、システムの処理を切り替える事が可能となる。更に、ヘッダ情報のＲｓｔ  Ｃｏｕｎｔｅｒ５４０１によって、ＪＰＥＧ符号化時のビットシフトの回数をカウントし、その情報をＪＰＥＧ復号化の際のビットシフトの回数とすることによって、複数のＱテーブルを持つことなくＪＰＥＧの復号を行なうことが可能となった。
【０１３５】
［その他の実施の形態］
なお本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【０１３６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成されることは言うまでもない。
【０１３７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピィディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることが出来る。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０１４０】
以上説明したように本実施の形態によれば、ＪＰＥＧ圧縮されたデータがメモリ容量を越えて格納されようとした場合、それをリアルタイムで検知し、ビットシフトによって更に高い圧縮率で圧縮してメモリ容量に収まるデータ量となるように圧縮率を変更する。こうして圧縮されて記憶された符号化データを復号する際には、符号化時に使用されたＱテーブルに対応するＱテーブルを設定して復号することができる。
【０１４１】
尚、以上説明した本願発明の実施の形態は、以下の実施態様で表わすことができる。
【０１４２】
［実施態様１］  画像データを入力して符号化する画像処理装置であって、
画像データを圧縮する圧縮手段と、
前記圧縮手段により圧縮された画像データのデータ量を求めるデータ量計算手段と、
前記データ量計算手段により計算された前記データ量がメモリの容量を越えているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて前記圧縮手段による圧縮率を高く設定して前記圧縮手段により前記画像データを圧縮して前記メモリに記憶するように制御する制御手段と、
前記判定手段により前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数手段と、
前記計数手段による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号手段とを有することを特徴とする画像処理装置。
【０１４３】
［実施態様２］  前記圧縮手段は、画像データを直交変換する直交変換手段と、前記直交変換手段により直交変換された係数をＱテーブルに応じて量子化する量子化手段と、前記圧縮率を変更するために、前記量子化手段により量子化された係数をシフトするシフト手段と、前記シフト手段によりシフトされた係数を符号化する符号化手段とを備えることを特徴とする実施態様１に記載の画像処理装置。
【０１４４】
［実施態様３］  前記復号手段は、前記計数手段により計数された計数値に応じたＱテーブルを設定して復号することを特徴とする実施態様２に記載の画像処理装置。
【０１４５】
［実施態様４］  画像データを入力して符号化する画像処理方法であって、
画像データを圧縮する圧縮工程と、
前記圧縮工程で圧縮された画像データのデータ量を求めるデータ量計算工程と、
前記データ量計算工程で計算された前記データ量がメモリの容量を越えているか否かを判定する判定工程と、
前記判定工程による判定結果に応じて前記圧縮工程での圧縮率を高く設定して前記圧縮工程で前記画像データを圧縮して前記メモリに記憶するように制御する制御工程と、
前記判定工程で前記データ量が前記メモリの容量を越えたと判定された回数を計数する計数工程と、
前記計数工程による計数値に応じて前記メモリに記憶されている前記データの復号を行う復号工程とを有することを特徴とする画像処理方法。
【０１４６】
［実施態様５］  前記圧縮工程では、画像データを直交変換する直交変換工程と、前記直交変換工程で直交変換された係数をＱテーブルに応じて量子化する量子化工程と、前記圧縮率を変更するために、前記量子化工程で量子化された係数をシフトするシフト工程と、前記シフト工程でシフトされた係数を符号化する符号化工程とを備えることを特徴とする実施態様４に記載の画像処理方法。
【０１４７】
［実施態様６］  前記復号工程では、前記計数工程で計数された計数値に応じたＱテーブルを設定して復号することを特徴とする実施態様５に記載の画像処理方法。
【０１４８】
【発明の効果】
以上説明したように本発明によれば、符号化及び復号時に使用するＱテーブルを格納するためのメモリ容量の増大を防止して、最適な量に符号化された画像データをメモリに格納して復号できるという効果がある。
【図面の簡単な説明】
【図１Ａ】、
【図１Ｂ】本発明の実施の形態に係る画像処理システム全体の構成を示すブロック図である。
【図２】本実施の形態に係るパケットデータの詳細な構成を示す図である。
【図３】本実施の形態に係るパケットテーブル内部の詳細な構成を示す図である。
【図４】画像データをタイル単位に分割する方法を示す図である。
【図５】本実施の形態に係わるパケットデータの構成を簡略的に示す図である。
【図６】、
【図７】、
【図８】、
【図９】、
【図１０】、
【図１１】、
【図１２】、
【図１３】、
【図１４】、
【図１５】本実施の形態に係わるパケットデータのメモリへの格納方法を簡略的に説明する図である。
【図１６】一般的に行われているＪＰＥＧ圧縮処理の構成を示す図である。
【図１７】ＪＰＥＧ処理における予測符号化部の内部の詳細な処理の構成を示すブロック図である。
【図１８】ＪＰＥＧ処理におけるジグザグスキャンを説明する図である。
【図１９】ＪＰＥＧ処理におけるハフマン符号化を説明する図である。
【図２０】一般的に行われているＪＰＥＧ復号処理の構成を示す図である。
【図２１】ＪＥＰＧ圧縮を行なう際の量子化データのビットシフトの効果を説明するためのブロックの構成を示す図である。
【図２２】ＪＥＰＧ圧縮を行なう際の量子化データのビットシフトの効果を説明するためビットシフト無しの量子化データをハフマン符号化した結果を示す図である。
【図２３】ＪＥＰＧ圧縮を行なう際の量子化データのビットシフトの効果を説明するため１ビットシフトの量子化データをハフマン符号化した結果を示す図である。
【図２４】本実施の形態に係る画像処理システムのＪＰＥＧ圧縮部の構成を示すブロック図である。
【図２５】、
【図２６】、
【図２７】、
【図２８】、
【図２９】、
【図３０】、
【図３１】、
【図３２】本実施の形態に係るＪＰＥＧ圧縮データのメモリへの格納方法を簡略的に示す図である。
【図３３】本発明の実施の形態に係わるタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図３４】本実施の形態に係わるＲＭＡコントローラの詳細な処理の構成を示すブロック図である。
【図３５】本実施の形態に係るタイル復号部の詳細な処理の構成を示すブロック図である。
【図３６】本発明の実施の形態に係る画像処理システムにおける処理を説明するフローチャートである。
【図３７】本発明の実施の形態２に係るタイル圧縮部の詳細な処理の構成を示すブロック図である。
【図３８】本実施の形態２に係るＲＭＡコントローラの詳細な処理の構成を示すブロック図である。
【図３９】本発明の実施の形態２に係るタイル復号部のＪＰＥＧ伸長部の詳細な処理の構成を示す図である。
【図４０】本発明の実施の形態３に係るタイル圧縮部の詳細な処理を説明するブロック図である。
【図４１】本発明の実施の形態３に係るパケットデータの詳細な構成を示す図である。
【図１Ａ】
2004221998.tif 000003
【図１Ｂ】
2004221998.tif 000004
【図２】
2004221998.tif 000005
【図３】
2004221998.tif 000006
【図４】
2004221998.tif 000007
【図５】
2004221998.tif 000008
【図６】
2004221998.tif 000009
【図７】
2004221998.tif 000010
【図８】
2004221998.tif 000011
【図９】
2004221998.tif 000012
【図１０】
2004221998.tif 000013
【図１１】
2004221998.tif 000014
【図１２】
2004221998.tif 000015
【図１３】
2004221998.tif 000016
【図１４】
2004221998.tif 000017
【図１５】
2004221998.tif 000018
【図１６】
2004221998.tif 000019
【図１７】
2004221998.tif 000020
【図１８】
2004221998.tif 000021
【図１９】
2004221998.tif 000022
【図２０】
2004221998.tif 000023
【図２１】
2004221998.tif 000024
【図２２】
2004221998.tif 000025
【図２３】
2004221998.tif 000026
【図２４】
2004221998.tif 000027
【図２５】
2004221998.tif 000028
【図２６】
2004221998.tif 000029
【図２７】
2004221998.tif 000030
【図２８】
2004221998.tif 000031
【図２９】
2004221998.tif 000032
【図３０】
2004221998.tif 000033
【図３１】
2004221998.tif 000034
【図３２】
2004221998.tif 000035
【図３３】
2004221998.tif 000036
【図３４】
2004221998.tif 000037
【図３５】
2004221998.tif 000038
【図３６】
2004221998.tif 000039
【図３７】
2004221998.tif 000040
【図３８】
2004221998.tif 000041
【図３９】
2004221998.tif 000042
【図４０】
2004221998.tif 000043
【図４１】
2004221998.tif 000044