(57)【要約】【課題】  メモリ等の記憶装置上でタイル状に分割され、可変長方式等で圧縮された画像をバッファ上で適切に取り扱うことができ、メモリ等の記憶装置を有効に使用することができる画像処理装置及び画像処理方法を提供する。【解決手段】  画像を入力してバッファに一時記憶する。一時記憶された画像を複数のブロックに分割して圧縮するが、この際、圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定のサイズを超える直前のパケットを決定し、先頭のパケットから直前のパケットまで積算されたデータが所定サイズになるように調整する。そして、先頭のパケットから調整後の直前のパケットまでのデータを第１のブロックの圧縮データとしてＨＤＤに出力することで、複数のブロックを蓄積する。【選択図】  図２
2006174170.tif 000002
【特許請求の範囲】
【請求項１】
画像を入力する入力手段と、
入力された前記画像を一時記憶する一時記憶手段と、
一時記憶された前記画像を複数のブロックに分割して圧縮する圧縮手段と、
圧縮された前記複数のブロックを蓄積する蓄積手段とを備える画像処理装置であって、
圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定サイズを超える直前のパケットを決定する決定手段と
前記先頭のパケットから前記直前のパケットまで積算されたデータが所定サイズになるように調整する調整手段と、
前記先頭のパケットから調整後の前記直前のパケットまでのデータを第１のブロックの圧縮データとして前記蓄積手段に出力する出力手段と
をさらに備えることを特徴とする画像処理装置。
【請求項２】
前記調整手段は、前記第１のブロックにおいて積算されたデータが前記所定サイズを超えるときのパケットのデータが途中で終わっており、第２のブロックの先頭から該パケットの続きが始まっている場合、前記パケットを第２のブロックのパケットバッファへコピーして残りのデータサイズを記憶しておき、前記第２のブロックの圧縮データを生成する際に、前記パケットを該第２のブロックの先頭パケットとしてデータの積算を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記調整手段は、前記第１のブロックにおいて積算されたデータが前記所定サイズに等しい場合、該第１のブロックの最終パケットを第２のブロックのパケットバッファにコピーし、該第１のブロックの残りのデータサイズが０であると記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットからデータの積算を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記調整手段は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットでないと判定した場合に前記第２のブロックの先頭パケットからデータの積算を行うことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記調整手段は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットであると判定した場合、前記最終パケットを前記第２のブロックのパケットバッファにコピーし、残りのデータサイズが０であることを記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットを前記パケットバッファにコピーされたパケットを用いてデータの積算を行うことを特徴とする請求項３に記載の画像処理装置。
【請求項６】
前記パケットバッファが、１パケットのデータを圧縮せずに記憶できるサイズであることを特徴とする請求項２から５までのいずれか１項に記載の画像処理装置。
【請求項７】
画像を入力する入力工程と、
入力された前記画像を一時記憶手段に一時記憶する一時記憶工程と、
一時記憶された前記画像を複数のブロックに分割して圧縮する圧縮工程と、
圧縮された前記複数のブロックを蓄積手段に蓄積する蓄積工程とを有する画像処理方法であって、
圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定サイズを超える直前のパケットを決定する決定工程と
前記先頭のパケットから前記直前のパケットまで積算されたデータが所定サイズになるように調整する調整工程と、
前記先頭のパケットから調整後の前記直前のパケットまでのデータを第１のブロックの圧縮データとして前記蓄積手段に出力する出力工程と
をさらに有することを特徴とする画像処理方法。
【請求項８】
前記調整工程は、前記第１のブロックにおいて積算されたデータが前記所定サイズを超えるときのパケットのデータが途中で終わっており、第２のブロックの先頭から該パケットの続きが始まっている場合、前記パケットを第２のブロックのパケットバッファへコピーして残りのデータサイズを記憶しておき、前記第２のブロックの圧縮データを生成する際に、前記パケットを該第２のブロックの先頭パケットとしてデータの積算を行うことを特徴とする請求項７に記載の画像処理方法。
【請求項９】
前記調整工程は、前記第１のブロックにおいて積算されたデータが前記所定サイズに等しい場合、該第１のブロックの最終パケットを第２のブロックのパケットバッファにコピーし、該第１のブロックの残りのデータサイズが０であると記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットからデータの積算を行うことを特徴とする請求項７に記載の画像処理方法。
【請求項１０】
前記調整工程は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットでないと判定した場合に前記第２のブロックの先頭パケットからデータの積算を行うことを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
前記調整工程は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットであると判定した場合、前記最終パケットを前記第２のブロックのパケットバッファにコピーし、残りのデータサイズが０であることを記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットを前記パケットバッファにコピーされたパケットを用いてデータの積算を行うことを特徴とする請求項９に記載の画像処理方法。
【請求項１２】
前記パケットバッファが、１パケットのデータを圧縮せずに記憶できるサイズであることを特徴とする請求項８から１１までのいずれか１項に記載の画像処理方法。
【請求項１３】
画像を入力する入力手順と、
入力された前記画像を一時記憶手段に一時記憶する一時記憶手順と、
一時記憶された前記画像を複数のブロックに分割して圧縮する圧縮手順と、
圧縮された前記複数のブロックを蓄積手段に蓄積する蓄積手順とをコンピュータに実行させるためのプログラムであって、
圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定サイズを超える直前のパケットを決定する決定手順と
前記先頭のパケットから前記直前のパケットまで積算されたデータが所定サイズになるように調整する調整手順と、
前記先頭のパケットから調整後の前記直前のパケットまでのデータを第１のブロックの圧縮データとして前記蓄積手段に出力する出力手順と
をさらに実行させることを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイル状に分割して圧縮された画像をメモリ上で扱う画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
複写機等の各種画像処理装置でメモリ上に記憶されている画像を扱う場合、例えば、特開２００１−１０３４７３公報（特許文献１）で公開されているような画像パケット構造のように、画像をタイル状に分割してタイルごとに圧縮して扱う方式がある。このような方式は、画像を部分ごとに圧縮することができるため、メモリの使用効率がよく、また部分的に伸張・圧縮することができるために画像処理も高速に行えるという利点がある。また、連続して同じデータが続くような画像の場合には、パケットヘッダに同じデータであることを示すフラグを立てておき、データ自体は前のパケットのデータを参照する、という方法をとることで、画像全体の圧縮率を高めることも行われている。
【０００３】
一方、ＰＤＬデータのラスタライズにおいて、画像をバンドごとに分割してラスタライズを行う、という方法も用いられている。この場合、画像メモリを少なくしてハードウェア資源を有効に利用するために、１ページ分のラスタ画像メモリを持つのではなく、例えば、リングバッファを用いて、ハードディスク（ＨＤＤ）等の大容量記憶装置へラスタライズを行った画像をバンドごとに転送して蓄積する、という方法をとることが多い。
【特許文献１】特開２００１−１０３４７３公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、画像をタイル状に分割して圧縮を行う場合、特に圧縮方式がＪＰＥＧ方式のように可変長である場合には、リングバッファの１ブロックにタイルデータが丁度収まるという保証がない。そのため、リングバッファの先頭や末尾に、データが揃わないタイルが存在してしまうといった問題や、リピートされたタイルがリングバッファのブロック間にまたがってしまうという問題が生じ、タイルごとに圧縮された画像をリングバッファを用いて適切に取り扱うことができなかった。
【０００５】
本発明は、このような事情を考慮してなされたものであり、メモリ等の記憶装置上でタイル状に分割され、可変長方式等で圧縮された画像をバッファ上で適切に取り扱うことができ、メモリ等の記憶装置を有効に使用することができる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明は、
画像を入力する入力手段と、
入力された前記画像を一時記憶する一時記憶手段と、
一時記憶された前記画像を複数のブロックに分割して圧縮する圧縮手段と、
圧縮された前記複数のブロックを蓄積する蓄積手段とを備える画像処理装置であって、
圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定サイズを超える直前のパケットを決定する決定手段と
前記先頭のパケットから前記直前のパケットまで積算されたデータが所定サイズになるように調整する調整手段と、
前記先頭のパケットから調整後の前記直前のパケットまでのデータを第１のブロックの圧縮データとして前記蓄積手段に出力する出力手段と
をさらに備えることを特徴とする。
【０００７】
また、本発明に係る上記画像処理装置において、前記調整手段は、前記第１のブロックにおいて積算されたデータが前記所定サイズを超えるときのパケットのデータが途中で終わっており、第２のブロックの先頭から該パケットの続きが始まっている場合、前記パケットを第２のブロックのパケットバッファへコピーして残りのデータサイズを記憶しておき、前記第２のブロックの圧縮データを生成する際に、前記パケットを該第２のブロックの先頭パケットとしてデータの積算を行うことを特徴とする。
【０００８】
さらに、本発明に係る上記画像処理装置において、前記調整手段は、前記第１のブロックにおいて積算されたデータが前記所定サイズに等しい場合、該第１のブロックの最終パケットを第２のブロックのパケットバッファにコピーし、該第１のブロックの残りのデータサイズが０であると記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットからデータの積算を行うことを特徴とする。
【０００９】
さらにまた、本発明に係る上記画像処理装置において、前記調整手段は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットでないと判定した場合に前記第２のブロックの先頭パケットからデータの積算を行うことを特徴とする。
【００１０】
さらにまた、本発明に係る上記画像処理装置において、前記調整手段は、前記第２のブロックの前記先頭パケットがリピートパケットであるか否かを判定し、リピートパケットであると判定した場合、前記最終パケットを前記第２のブロックのパケットバッファにコピーし、残りのデータサイズが０であることを記憶し、前記第２のブロックの圧縮データを生成する際に、該第２のブロックの先頭パケットを前記パケットバッファにコピーされたパケットを用いてデータの積算を行うことを特徴とする。
【００１１】
さらにまた、本発明に係る上記画像処理装置は、前記パケットバッファが、１パケットのデータを圧縮せずに記憶できるサイズであることを特徴とする。
【００１２】
さらにまた、上記課題を解決するため、本発明は、
画像を入力する入力工程と、
入力された前記画像を一時記憶手段に一時記憶する一時記憶工程と、
一時記憶された前記画像を複数のブロックに分割して圧縮する圧縮工程と、
圧縮された前記複数のブロックを蓄積手段に蓄積する蓄積工程とを有する画像処理方法であって、
圧縮された第１のブロックの先頭のパケットから順にパケットのデータサイズを積算して所定サイズを超える直前のパケットを決定する決定工程と
前記先頭のパケットから前記直前のパケットまで積算されたデータが所定サイズになるように調整する調整工程と、
前記先頭のパケットから調整後の前記直前のパケットまでのデータを第１のブロックの圧縮データとして前記蓄積手段に出力する出力工程と
をさらに有することを特徴とする。
【００１３】
具体的には、データの圧縮がなかった場合の生データのサイズ×２のバッファを用意し、１バンドずつレンダリングしながら、生データのサイズ×１／２のデータが蓄積したところで、
（１）パケットテーブル（PacketTable）の先頭から順にパケットのサイズを加算していき、ＨＤＤ転送単位になるように最終パケット（Packet）を決定し、
（２）最終パケットのパケットサイズ（PacketSize）をＨＤＤ転送単位になるように増し、
（３）ＨＤＤ転送単位になったデータをＨＤＤへ蓄積する、
という手順でＨＤＤへの蓄積処理を行う。
【００１４】
また、入力側の圧縮率が平均で１／２よりも高くなる場合、バッファサイズを生データ×３／２、転送単位を生データ×１／２とする。これにより、ダブルバッファ動作を行うことが可能となる。
【００１５】
さらに、バッファの空き容量が生データのサイズ未満の場合、レンダリングへはメモリを渡さずに、ＨＤＤへの蓄積が終わってメモリが解放され、バッファの空きが生データのサイズ以上になったときに、次のレンダリングを開始する。
【発明の効果】
【００１６】
本発明によれば、メモリ等の記憶装置上でタイル状に分割され、可変長方式等で圧縮された画像をバッファ上で適切に取り扱うことができ、メモリ等の記憶装置を有効に使用することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して、本発明に係る画像処理の一実施形態について詳細に説明する。
【００１８】
図１は、本発明の一実施形態に係る画像形成装置システムの全体の構成を示すブロック図である。図１において、画像形成装置２００は、画像入力デバイスであるスキャナ部２０７０、画像出力デバイスであるプリンタ部２０９５、コントローラユニット（Controller Unit）２０００、及びユーザインタフェースである操作部２０１２を備えている。画像形成装置２００において、スキャナ部２０７０、プリンタ部２０９５、及び操作部２０１２は、それぞれコントローラユニット２０００に接続され、当該コントローラユニット２０００は、ＬＡＮ２０１１等のネットワーク伝送手段や公衆回線に接続されている。
【００１９】
公衆回線からは、カラー画像送信を含むＧ３、Ｇ４ファックスによる送信が可能である。また、ＬＡＮ２０１１には、画像形成装置２００と同様の機器構成を有する他の画像形成装置２２０、２３０が接続されている。画像形成装置２２０、２３０は、それぞれスキャナ部２２７０、２３７０、プリンタ部２２９５、２３９５、操作部２２１２、２３１２を備えており、それらがコントローラユニット（Controller Unit）２２００、２３００に接続されている。
【００２０】
また、ＬＡＮ２０１１には、パーソナルコンピュータ（ＰＣ）２４０が接続されており、ＦＴＰ、ＳＭＢプロトコルを使用したファイルの送受信、電子メールの送受信が可能である。
【００２１】
図２は、図１に示す画像形成装置２００の細部構成を示すブロック図である。図２に示すように、画像形成装置２００のコントローラユニット（Controller Unit）２０００は、画像入力デバイスであるカラースキャナで構成されるスキャな部２０７０や画像出力デバイスであるカラープリンタで構成されるプリンタ部２０９５と接続し、一方で、ＬＡＮ２０１１や公衆回線（ＷＡＮ）２０５１と接続することで、画像情報やデバイス情報の入出力を行うためのコントローラである。
【００２２】
ＣＰＵ２００１は、システム全体を制御するコントローラである。ＲＡＭ２００２は、ＣＰＵ２００１が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＲＯＭ２００３はブートＲＯＭであり、システムのブートプログラムが格納されている。ハードディスク（ＨＤＤ）２００４はハードディスクドライブであり、システムソフトウェア、画像データ等を格納する。
【００２３】
操作部インタフェース（Ｉ／Ｆ）２００５は、操作部（ＵＩ）２０１２とのインタフェース部であり、操作部２０１２に表示する画像データを操作部２０１２に対して出力する。また、操作部Ｉ／Ｆ２００５は、操作部２０１２から本システム使用者が入力した情報をＣＰＵ２００１に伝える役割をする。ネットワーク（Network）Ｉ／Ｆ２００７はＬＡＮ２０１１に接続し、情報の入出力を行う。モデム（Modem）２０５０は公衆回線２０５１に接続し、画像情報の入出力を行う。
【００２４】
２値画像回転部２０５２及び２値画像圧縮・伸張部２０５３は、モデム２０５３で２値画像を送信する前に、画像の方向を変換したり、所定の解像度或いは相手能力に合わせた解像度に変換するための処理を行う。圧縮器２００６及び伸張器２０１３は、ＪＢＩＧ、ＭＭＲ、ＭＲ、ＭＨ等の圧縮・伸張方式をサポートしている。
【００２５】
ＤＭＡＣ２００９はＤＭＡコントローラであり、ＲＡＭ２００２に格納されている画像をＣＰＵ２００１を介することなく読み取り、イメージバスインタフェース（ImageBusI/F）２００８に対して画像転送する、若しくは画像バス２０１０からの画像をＣＰＵ２００１を介することなくＲＡＭ２００２に書き込む。以上のデバイスがシステムバス２０５４に接続される。
【００２６】
イメージバス２００８は、画像バス２０１０を介して高速な画像の入出力を制御するためのインタフェースである。圧縮器２００６は、画像バス２０１０に画像を送出する前に、例えば３２画素×３２画素の単位でＪＰＥＧ圧縮する。伸張器２０１３は、画像バス２０１０を介して送られた画像を伸張する。
【００２７】
ラスターイメージプロセッサ（ＲＩＰ）２０１８は、ホストコンピュータからのＰＤＬコードをネットワークＩ／Ｆ２００７を介して受け取り、システムバス２０５４を通して、ＣＰＵ２００１がＲＡＭ２００２に格納する。ＣＰＵ２００１は、ＰＤＬコードを中間コードに変換し、再度システムバス２０５４を介してＲＩＰ２０１８に入力し、ビットマップイメージ（多値）に展開する。
【００２８】
スキャナ画像処理部２０１４は、スキャナ部２０７０から入力されたカラー画像や白黒画像に対して、適切な各種画像処理（例えば、補正、加工、編集処理等）を行って出力する（多値）。同様に、プリンタ画像処理部２０１６は、プリンタ部２０９５に対して適切な各種画像処理（例えば、補正、加工、編集処理等）を行うプリント時には伸張器２０１３で２値多値変換を行うので、２値及び多値出力が可能である。
【００２９】
画像変換部２０３０は、ＲＡＭ２００２上にある画像を画像変換し、再度、ＲＡＭ２００２に書き戻すときに使われる各種画像変換機能を有する。画像変換部２０３０において、回転器２０１９は、３２画素ｘ３２画素単位の画像を指定された角度で回転することができ、２値及び多値の入出力に対応している。変倍器２０２０は、画像の解像度を変換（例えば、６００ｄｐｉから２００ｄｐｉ）したり、変倍したりする機能（例えば、２５％から４００％まで）を有する。尚、変倍する前には、３２×３２画素の画像を３２ライン単位の画像に並び替える。
【００３０】
色空間変換器２０２１は、多値入力された画像をマトリクス演算、及びルックアップテーブル（ＬＵＴ）により、例えばメモリ上にあるＹＵＶ画像をＬａｂ画像に変換し、メモリ上に格納する。また、この色空間変換器２０２１は、３×８のマトリクス演算機能、及び１次元ＬＵＴを有しており、公知の下地とばし処理や裏写り防止処理等を行うことができる。尚、変換された画像は、色空間変換器２０２１から多値で出力される。
【００３１】
２値多値変換器２０２２は、１ビット（bit）の２値画像を多値８ビット、２５６階調に変換する。逆に、多値２値変換器２０２６は、例えばメモリ上にある８ビット、２５６階調の画像を誤差拡散処理等の方法により、１ビット、２階調に変換し、メモリ上に格納する。合成器２０２３は、メモリ上の２枚の多値画像画像を合成し、１枚の多値画像にする機能を有する。例えば、合成器２０２３は、メモリ上にある会社ロゴの画像と原稿画像とを合成することで、原稿画像に簡単に会社ロゴをつけることができる。
【００３２】
間引き器２０２４は、多値画像の画素を間引くことで、解像度変換を行うユニットであり、例えば、１／２、１／４、１／８の多値画像を出力可能である。間引き器２０２４は、変倍器２０２０と合わせて使うことで、より広範囲な拡大、縮小処理を行うことができる。移動器２０２５は、入力された２値画像、多値画像に余白部分をつけたり、余白部分を削除したりして出力することができる。
【００３３】
このように、回転器２０１９、変倍器２０２０、色空間変換器２０２１、２値多値変換器２０２２、合成器２０２３、間引き器２０２４、移動器２０２５、及び多値２値変換器２０２６は、それぞれ連結して動作することが可能であり、例えばメモリ上の多値画像を画像回転、解像度変換する場合は、両処理をメモリを介さずに連結して行うことができる。
【００３４】
図３は、本実施形態で使用される画像の形式の一例を説明するための図である。本実施形態で使用される画像の形式は、前述した特開２００１−１０３４７３公報（特許文献１）で開示されている画像パケット構造を利用する。
【００３５】
図２に示す圧縮器２００６では、ラスター形式の画像を図３に示すように３２×３２画素単位のパケットとして並び替え、パケット単位でＪＰＥＧ圧縮を行う。同時に、パケットにパケットの位置を示すＩＤ、色空間、ＱテーブルＩＤ、データ長等の情報を付加してヘッダとする。また、文字、写真を示す２値のデータ（像域フラグ）も同様に圧縮して、ＪＰＥＧデータの後に付随させる。
【００３６】
図４は、本実施形態で使用されるパケットデータの一例を示す図である。図２における伸張器２０１３では、このヘッダ情報をもとにＪＰＥＧデータを展開し、ラスター画像に並び替える。このようなパケット画像にすることで、例えば、画像回転処理を行う場合には、パケット内部の画像のみを回転し、パケットＩＤの位置を変更することで、部分的に伸張圧縮で回転することができるため、非常に効率がよい。尚、イメージバス２０１０を流れる画像はすべてパケット画像になる。
【００３７】
また、画像をメモリ上で扱う場合には、パケットテーブルを用いる。パケットテーブルは、１要素が１つのパケットの先頭アドレスとサイズを示しており、これを主走査及び副走査に並べることにより一つの画像を構成している。このようなパケットテーブルを用いることにより、画像を構成するパケットがメモリ上で離散的に配置されている場合でも一つの画像として扱うことが可能になる。複数のパケットが同じデータである場合、例えば白画像の繰り返しのような場合には、図５に示すように複数のパケットテーブルが同じパケットを指すこととなる。これにより、画像データの総サイズを小さくすることができる。すなわち、図５は、複数のパケットが同じデータである場合のパケットテーブルと画像との関係を説明するための図である。
【００３８】
図６は、パケット画像の模式図である。図３に示すようなパケット画像をＨＤＤに格納する場合には、パケットテーブルを用いずに、図６の模式図２１３１に示すように連続したパケットを順番に並べる。また、図５に示す画像データのように複数のパケットテーブルが連続して同じパケットデータを指している場合には、模式図２１３２に示すように同一パケットの先頭のみデータ部が入ったパケット（ｈ＋ｄａｔａ）になり、続くデータはリピートフラグの立ったヘッダのみの画像データ部が無いパケット（ｒ）となる。
【００３９】
ＦＡＸ送信や２値画像回転部２０５２、２値画像圧縮・伸張部２０５３等でラスター画像が必要な場合は、パケット画像からラスター画像への変換をソフトウェア処理によって行う。
【００４０】
図７は、コントローラユニット２０００のスキャナ画像処理部２０１４での処理内容の詳細を説明するための図である。スキャナ部２０７０から入力されたＲＧＢ各８ビットの輝度信号は、マスキング部２５０１によりＣＣＤのフィルタ色に依存しない標準的なＲＧＢ色信号に変換される。次に、フィルタ処理部２５０２では、例えば９×９のマトリクスを使用し、画像をぼかしたり、メリハリをつけるような処理が行われる。
【００４１】
また、ヒストグラム処理部２５０３は、入力画像中の画像信号データのサンプリングをする処理部であり、入力画像の下地レベル判定に使用される。このモジュールでは主走査方向、副走査方向にそれぞれ指定した開始点から終了点で囲まれた矩形領域内のＲＧＢデータを、主走査方向、副走査方向に一定のピッチでサンプリングし、ヒストグラムを作成する。このヒストグラムは、下地とばしや、裏写り防止が指定されたときに読み出される。そして、ヒストグラムから原稿の下地を推測し、下地とばしレベルとして、画像とともにメモリやＨＤＤに保存、管理され、印刷や送信時の画像処理に使用される。
【００４２】
ガンマ補正処理部２５０４では、画像全体の濃度を濃く、或いは薄くするように処理が行われる。例えば、入力画像の色空間を任意の色空間に変換したり、入力系の色味に関する補正処理を行う部分である。また、色空間変換部２５０５は、原稿がカラーか白黒かを判断するために変倍前の画像信号を公知のＬａｂに変換する。このうちａ、ｂは色信号成分を表しており、比較器２５０５内の所定のレベル以上であれば有彩色と判定し、そうでなければ無彩色と判定して、１ビットの判定信号を比較器２５０５から出力する。
【００４３】
カウンタ２５０７は、比較器２５０６からの出力を計測する。文字／写真判定器２５０８は、画像から文字エッジを抽出し、画像を文字と写真に分離する機能を有する。そして、その出力として、文字写真判定信号が得られる。この信号も画像とともにメモリやＨＤＤに格納され、印刷時に使用される。特定原稿判定器２５０９は、入力画像信号と当該判定器内部で持つパターンとがどの程度一致するかを比較し、一致又は不一致という判定結果を特定原稿判定信号として読み出すことが可能である。そして、その判定結果に応じて、画像形成装置では、画像を加工し、紙幣や有価証券等の偽造を防止することが可能となる。
【００４４】
図８は、コントローラユニット２０００のプリンタ画像処理部２０１６での処理内容の詳細を説明するための図である。図８に示すように、下地とばし部２６０１は、画像データの地色を飛ばし、不要な下地のカブリ除去を行う。例えば、３×８のマトリクス演算や、１次元ＬＵＴにより下地飛ばしを行う。モノクロ生成部２６０２は、カラー画像データをモノクロデータに変換し、単色としてプリントする際に、カラー画像データ、例えばＲＧＢデータをＧｒａｙ単色に変換するモノクロ生成部である。例えば、ＲＧＢに任意の定数を掛け合わせ、Ｇｒａｙ信号とする１×３のマトリクス演算から構成される。
【００４５】
出力色補正部２６０３は、画像データを出力するプリンタ部２０９５の特性に合わせて色補正を行う。例えば、４×８のマトリクス演算や、ダイレクトマッピングによる処理から構成される。フィルタ処理部２６０４は、画像データの空間周波数を任意に補正する処理部であり、例えば９×９のマトリクス演算を行う処理を行う。ガンマ補正部２６０５は、出力するプリンタ部２０９５の特性に合わせてガンマ補正を行う処理を行い、通常１次元のＬＵＴから構成される。
【００４６】
中間調補正部２６０６は、出力するプリンタ部２０９５の階調数にあわせて任意の中間調処理を行う処理部である。中間調補正部２６０６は、２値化や３２値化等の任意のスクリーン処理や、誤差拡散処理を行う。尚、各処理は、図示しない文字／写真判定信号によって切り替えることも可能である。
【００４７】
ドラム間遅延メモリ２６０７は、ＣＭＹＫの各色のドラムを持つカラープリンタ（プリンタ部２０９５）において、ＣＭＹＫの印字タイミングをドラム間分ずらすことで、ＣＭＹＫ画像を重ね合わせるためのメモリである。これにより、ＣＭＹＫ各色４ドラムを持つカラープリンタにおいて、画像の位置を合わせるために遅延させることができる。
【００４８】
図９は、本実施形態に係る画像形成装置２００を実現するための画像入出力デバイスの一例を示す図である。図９において、画像入力デバイスであるスキャナ部２０７０は、原稿となる紙上の画像を照明し、不図示のＣＣＤラインセンサを走査することで、ラスターイメージデータとして電気信号に変換する。原稿用紙は、原稿フィーダ２７０１のトレイ２７０２にセットされ、本装置使用者が操作部２０１２から読み取り起動指示することにより、コントローラユニットのＣＰＵ２００１がスキャナ部２０７０に指示を与え、原稿フィーダ２０７１のトレイ２７０２から原稿用紙を１枚ずつフィードし、原稿画像の読み取り動作を行う。
【００４９】
また、画像出力デバイスであるプリンタ部２０９５は、ラスターイメージデータを用紙上の画像に変換する部分であり、その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。尚、プリント動作の起動は、コントローラユニットのＣＰＵ２００１からの指示によって開始する。プリンタ部２０９５には、異なる用紙サイズ又は異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセット２７０３、２７０４、２７０５がある。また、排紙トレイ２７０６は印字し終わった用紙を受ける排紙トレイである。
【００５０】
図１０は、本実施形態に係る画像処理装置の操作部２０１２の細部構成を示す図である。図１０において、ＬＣＤ表示部２８０１は、ＬＣＤ上にタッチパネルシート２８０２が貼られており、システムの操作画面及びソフトキーを表示するとともに、表示されたキーが押下されるとその位置情報をコントローラユニットのＣＰＵ２００１に伝える。
【００５１】
スタートキー２８０３は，原稿画像の読み取り動作を開始する時などに用いる。スタートキー２８０３の中央部には、緑と赤の２色ＬＥＤ２８０４があり、その色によってスタートキー２８０３が使える状態にあるかどうかを示す。また、ストップキー２８０５は、稼働中の動作を止める働きをする。ＩＤキー２８０６は、使用者のユーザＩＤを入力する時に用いる。リセットキー２８０７は、操作部２０１２からの設定を初期化する時に用いる。
【００５２】
図１１は、本実施形態に係る画像形成装置の操作画面上に表示される初期画面の一例を示した図である。尚、図１１に示す画面は、各画像形成機能設定後に戻ってくる標準画面でもある。図１１において、コピーボタン３１０１は、コピー設定を行うための画面切り替えを行うためのボタンである。また、送信ボタン３１０２は、スキャンした画像をファックスや電子メールで送信する設定を行うための画面切り替えを行うためのボタンである。さらに、ボックスボタン３１０３は、内蔵ＨＤＤにスキャン画像、ＰＤＬ画像を格納する、或いは格納されたスキャン画像、ＰＤＬ画像を印字する、送信する、或いは編集する設定を行うための画面切り替えを行うためのボタンである。
【００５３】
また、ウィンドウ３１０４は、読み込み設定ボタン３１０５によって設定された画像読み込み時の設定を表示するためのウィンドウである。読み込み設定ボタン３１０５は画像読み込み時の解像度、濃度等を設定する。送信設定ボタン３１０６は、タイマー送信時のタイマー設定、ＨＤＤ或いはプリンタに印字する場合の設定等を行う。ウィンドウ３１０７は、宛先表ボタン３１０８によって指定された送信宛先の表示を行う。詳細情報ボタン３１０９は、ウィンドウ３１０７に表示された一宛先の詳細な情報の表示を行う。消去ボタン３１１０は、ウィンドウ３１０７に表示された一宛先の消去を行う。
【００５４】
図１２は、図１１に示す画面において読み込み設定ボタン３１０５が押下されたときに表示されるポップアップウィンドウを示す図である。図１２において、３２０１は読みとり原稿サイズをポップアップウィンドウの中から選択入力するボックスであり、設定された読み取りサイズは３２０２に表示される。
【００５５】
３２０３は、原稿の読み取りモードを選択するためのボックスであり、押下することによって、カラー／ブラック／自動（ＡＣＳ）の３種類のうちのいずれかが選択できる。また、カラーモードに関しては、コピー、ボックスの各ボタンが押下されて表示される画面上でも同様に選択ができる。例えば、カウンタ２５０７の計測結果が所定値よりも小さければ白黒原稿、大きければカラー原稿と判断して、カラー原稿の場合はカラー画像を、白黒原稿の場合には白黒画像を、ＡＣＳの場合にはカラー画像と原稿がカラーか白黒かを判別した結果を蓄積する。
【００５６】
また、図１２において、３２０４は読み取り時の解像度を指定するためポップアップウィンドウを用いた選択入力ボックスである。さらに、３２０５は原稿の読み取り濃度を調整するためのスライダーであり、例えば９段階の調整を行うことができる。３２０６は、例えば新聞のように下地がかぶった画像を読み込む場合に、濃度を自動的に決定するためのボタンである。尚、ボタン３２０６については、コピー画面でも同様の設定が可能である。
【００５７】
図１３は、図１１に示す画面においてコピーボタン３１０１が押下されたときに表示される画面例を示す図である。図１３に示す画面において、３３０１はコピーできる状態が否かを示すウィンドウであり、同時に設定したコピー部数も表示される。３３０２は、上述した濃度を自動的に決定するためのボタン３２０６と同等の機能であり、下地除去を自動的にするかしないかを選択するためのボタンである。３３０３は、前述したスライダー３２０５と同等の機能を有しており、例えば９段階の濃度調整が可能なスライダーである。
【００５８】
さらに、図１３において、３３０４は原稿のタイプを選択するボタンであり、文字・写真・地図、文字、印画紙写真、印刷写真等のうちのいずれかが選択できる。３３０５は応用モードボタンであり、縮小レイアウト（例えば、複数枚の原稿を１枚の用紙に縮小印字する機能）や、カラーバランス（例えば、ＣＭＹＫの各色微調整）等が設定できる。３３０６は各種フィニッシングに関する設定を行うためのボタンであり、シフトソート、ステープルソート、グループソートのいずれかを設定することができる。さらに、３３０７は両面読み込み、及び、両面印刷に関する設定を行うためのボタンである。
【００５９】
図１４は、図１１に示す画面においてボックスボタン３１０３が押下されたときに表示される画面例を示す図である。図１４において、３４０１はＨＤＤを論理的に区分した各フォルダを示している。ここで、各フォルダにはフォルダ番号があらかじめ割り振られており、３４０１は０番のフォルダになる。また、フォルダ番号の横には、そのフォルダで使用しているディスク容量の割合が表示されている。さらに、各フォルダには任意の名前をつけることができ、つけられた名前もここに表示される。さらにまた、３４０２はＨＤＤ全体の使用量が表示される表示領域である。
【００６０】
図１５は、図１４に示す画面において０番のフォルダ部分が押下されたときに表示される画面例を示す図である。図１５において、３５０１及び３５０２は、フォルダに格納されている文書を示す。尚、文書は複数のページで構成されているものとする。ここで、文書３５０１はスキャンした文書であり、スキャン文書であることを示すアイコン表示、ＨＤＤ使用量、さらにユーザが任意に設定できる文書名表示を表示している。また、３５０２はＰＤＬデータから格納したＰＤＬ文書であるアイコンが表示されている。そして、当該アイコンを押下することで、その文書が選択されたことが反転表示によって示される。
【００６１】
送信ボタン３５０３は、選択された文書を送信するためのボタンである。読み込みボタン３５０４は、スキャナから原稿を読み込み、文書を生成するためのボタンである。全選択ボタン３５０５は、フォルダ内のすべての文書を選択するためのボタンである。削除ボタン３５０６は、選択された文書を削除するためのボタンである。
【００６２】
さらに、プリントボタン３５０７は、選択された文書を印刷するためのボタンである。編集ボタン３５０８は選択された文書を編集するためのボタンである。編集ボタン３５０８は、例えば２つの文書を選択して結合し、１つの文書にして保存したり、特定のページを削除する機能を持っている。詳細情報ボタン３５０９は、最後に選択された文書の詳細情報を表示するためのボタンである。このボタンにより、文書名以外にも解像度、原稿サイズ、カラー等の情報を見ることができる。また、閉じるボタン３５１０は、本画面を閉じるためのボタンである。
【００６３】
図１６は、本発明の一実施形態に係る画像処理を実行するためのソフトウェア構成を説明するための図である。図１６において、ＵＩ制御部４０１０は、操作部２０１２を制御し、コピーアプリケーション４０２０、送信アプリケーション４０２１及びボックスアプリケーション４０２２は、ＵＩ制御部４０１０からの指示を受け、コピー動作、送信動作及びボックス画面からのスキャン、プリントを実行する。
【００６４】
また、ＰＤＬアプリケーション４０２３は、ネットワークアプリケーション４１２０からのＰＤＬプリントデータを受けてＰＤＬプリントジョブを投入する。共通インタフェース４０３０は、機器制御部分の機器依存部分を吸収する。さらに、ジョブマネージャ４０４０は、共通インタフェース４０３０から受け取ったジョブ情報を整理し、下位層のドキュメント処理部に伝達する。
【００６５】
ドキュメント処理部は、ローカルコピーであればスキャンマネージャ４０５０とプリントマネージャ４０９０、リモートコピーの送信ジョブ或いは送信ジョブであればスキャンマネージャ４０５０とファイルストアマネージャ４１００、リモートコピーの受信ジョブであればファイルリードマネージャ４０６０とプリントマネージャ４０９０、ＬＩＰＳやＰｏｓｔＳｃｒｉｐｔ等のＰＤＬプリントではＰＤＬマネージャ４０７０とプリントマネージャ４０９０である。尚、各ドキュメントマネージャ間の同期とり、及び各種画像処理を行うイメージマネージャ４１１０への画像処理の依頼は、シンクマネージャ４０８０を介して行う。また、スキャン及びプリント時の画像処理や画像ファイルの格納は、イメージマネージャ４１１０が行う。
【００６６】
まず最初に、ローカルコピーのソフトウェア処理について説明する。使用者の指示により、ＵＩ制御部４０１０からコピー指示とともにコピーの設定がコピーアプリケーション４０２０に伝えられる。コピーアプリケーション４０２０は、ＵＩ制御部４０１０からの情報を共通インタフェース４０３０を介して、機器制御を行うジョブマネージャ４０４０に伝える。ジョブマネージャ４０４０は、スキャンマネージャ４０５０とプリントマネージャ４０９０にジョブの情報を伝達する。
【００６７】
スキャンマネージャ４０５０は、図示しないデバイスＩ／Ｆ（デバイスＩ／Ｆは、コントローラユニット２０００とスキャナ部２０７０、及びコントローラユニット２０００とプリンタ部２０９５を結ぶシリアルＩ／Ｆ）を介して、スキャナ２０７０にスキャン要求を行う。また、スキャンマネージャ４０５０は、同時に、シンクマネージャ４０８０を介してイメージマネージャ４１１０にスキャン用の画像処理要求を出す。
【００６８】
イメージマネージャ４１１０は、スキャンマネージャ４０５０の指示に従って、スキャナ画像処理部２０１４の設定を行う。そして、設定が完了した後、シンクマネージャ４０８０を介してスキャン準備完了を伝える。その後、スキャンマネージャ４０５０は、スキャナ部２０７０に対してスキャンを指示する。尚、スキャン画像転送完了は、図示しないハードウェアからの割り込み信号によってイメージマネージャ４１１０に伝わる。
【００６９】
イメージマネージャ４１１０からのスキャン完了を受けて、シンクマネージャ４０８０は、スキャン完了をスキャンマネージャ４０５０とプリントマネージャ４０９０に伝える。同時に、シンクマネージャ４０８０は、ＲＡＭ２００２に蓄積された圧縮画像をＨＤＤ２００４にファイル化するため、イメージマネージャ４１１０に指示する。イメージマネージャ４１１０は、その指示に従ってメモリ上の画像（文字／写真判定信号を含めて）をＨＤＤ２００４に格納する。尚、画像の付随情報として、図示しないＳＲＡＭにカラー判定／白黒判定結果、下地とばしを行うための下地とばしレベル、画像入力元としてスキャン画像、色空間ＲＧＢも格納しておく。また、ＨＤＤ２００４への格納が終了し、スキャナ２０７０からのスキャン完了を受けた場合、シンクマネージャ４０８０を介してスキャンマネージャ４０５０にファイル化終了を通知する。
【００７０】
スキャンマネージャ４０５０は、ジョブマネージャ４０４０に対して終了通知を返し、ジョブマネージャ４０４０は共通インタフェース４０３０を介してコピーアプリケーション４０２０へ返す。プリントマネージャ４０９０は、メモリに画像が入った時点でデバイスＩ／Ｆを介して、プリンタ部２０９５に印刷要求を出す。同時に、シンクマネージャ４０８０にプリント画像処理要求を行う。
【００７１】
シンクマネージャ４０８０は、プリントマネージャ４０９０から要求を受けた場合、画像処理設定をイメージマネージャ４１１０に依頼する。イメージマネージャ４１１０は画像の付随情報に従ってプリンタ画像処理部２０１５の設定を行い、シンクマネージャ４０８０を介してプリントマネージャ４０９０にプリント準備完了を伝える。プリントマネージャ４０９０は、プリンタ部２０９５に対して印刷指示を出す。尚、プリント画像転送完了は、図示しないハードウェアからの割り込み信号によってイメージマネージャ４１１０に伝わる。
【００７２】
イメージマネージャ４１１０からのプリント完了を受けて、シンクマネージャ４０８０は、プリント完了をプリントマネージャ４０９０に伝える。プリントマネージャ４０９０は、プリンタ部２０９５からの排紙完了を受け、ジョブマネージャ４０４０に対して終了通知を返し、ジョブマネージャ４０４０は共通インタフェース４０３０を介してコピーアプリケーション４０２０へ返す。コピーアプリケーション４０２０は、スキャン及びプリントが終了した後、ジョブ終了をＵＩ制御部４０１０に通知する。
【００７３】
ここで、リモートコピーのスキャンジョブ、送信ジョブの場合は、プリントマネージャ４０９０に代わってストアマネージャ４１００がジョブマネージャ４０４０からの要求を受ける。スキャン画像をＨＤＤに格納し終わった時点で、シンクマネージャ４０８０から格納完了通知を受け、それを共通インタフェース４０３０を介して、リモートコピーの場合であればコピーアプリケーション４０２０に、送信ジョブの場合であれば送信アプリケーション４０２１に通知する。
【００７４】
コピーアプリケーション４０２０、送信アプリケーション４０２１は、この通知を受けた後、ネットワークアプリケーション４１２０に対して、ＨＤＤに格納されたファイルの送信を依頼する。そして、依頼を受けたネットワークアプリケーション４１２０がファイルを送信する。ネットワークアプリケーション４１２０は、ジョブ開始時にコピーアプリケーション４０２０からコピーに関する設定情報を受け、それをリモート側の機器に通知する。ネットワークアプリケーション４１２０は、リモートコピーの場合、機器固有の通信プロトコルを使用して送信を行う。また、送信ジョブの場合は、ＦＴＰ、ＳＭＢのような標準的なファイル転送プロトコルを使用する。
【００７５】
一方、ファックス送信する場合は、ファイル格納後、送信アプリケーション４０２１から共通インタフェース４０３０とジョブマネージャ４０４０を介してＦＡＸマネージャ４０４１に送信が指示される。ＦＡＸマネージャ４０４１は、モデム２０５０を介して相手機器とネゴシエーションし、必要な画像処理（カラー→白黒変換、多値２値変換、回転、変倍）をイメージマネージャ４１１０に依頼し、変換後の画像をモデム２０５０を使って送信する。
【００７６】
また、送信先にプリンタがある場合、送信アプリケーション４０２１は、共通インタフェース部４０３０を介してプリントジョブとしてプリントの指示を行う。そのときの動作は、以下で説明するリモートコピーのプリントジョブの場合と同様である。また、送信宛先が機器内のボックス宛先になっているときは、ファイルストアマネージャ４１００によって機器内のファイルシステムに格納する。
【００７７】
また、ＦＡＸ受信時は、ＦＡＸマネージャ４０４１がモデム（Modem）２０５０を使って画像を受信し、画像ファイルとしてＨＤＤ２００４に格納する。ＨＤＤ２００４格納後にボックスアプリケーション４０２２に通知すると、ボックスアプリケーション４０２２から受信プリントの指示が共通インタフェース４０３０を介してジョブマネージャ４０４０になされる。その後は、通常のボックスプリントジョブと同じ動作になるため説明を省略する。
【００７８】
リモートコピーのプリントジョブの場合は、送信側からの画像をネットワークアプリケーション４１２０がＨＤＤ２００４に保存するとともにコピーアプリケーション４０２０に対してジョブを発行する。コピーアプリケーション４０２０は、共通インタフェース部４０３０を介してジョブマネージャ４０４０にプリントジョブを投入する。ローカルコピーとは異なり、スキャンマネージャ４０５０に代わってファイルリードマネージャ４０６０がジョブマネージャ４０４０からの要求を受ける。そして、受信画像をＨＤＤ２００４からメモリに展開するための要求をシンクマネージャ４０８０を介して、イメージマネージャ４１１０に行う。
【００７９】
イメージマネージャ４１１０はメモリに画像を展開する。このとき、イメージマネージャ４１１０は、まずＨＤＤ２００４上の画像のファイルサイズを調べる。ここで、ＨＤＤ２００４上の画像データサイズが確保できるページメモリのサイズよりも小さければ、ＨＤＤ２００４から画像ファイルを直接読み出してメモリ上に展開する。一方、ＨＤＤ２００４上の画像データサイズが確保できるページメモリのサイズよりも大きい場合、以下に説明する画像データの再圧縮処理を行いながら画像の展開を行う。
【００８０】
図１７は、本実施形態に係るコントローラユニット２０００内で再圧縮処理を行うときの画像の展開処理を模式的に説明する図である。図１７において、５００１及び５００２は、メモリ上に確保されたリングバッファであり、例えば１ＭＢのように固定のサイズが割り当てられている。イメージマネージャ４１１０はリングバッファ５００１、５００２に画像をＨＤＤ２００４から読み出しつつ、伸張器２０１３と圧縮器２００６を用いて画像の再圧縮を行い、ページメモリ５００３へ再圧縮後の画像を１ページ分格納する。
【００８１】
図１８は、イメージマネージャ４１１０による画像展開処理の詳細を説明するためのフローチャートである。ここで、ＨＤＤ２００４には、前述したパケット形式の画像が格納されている。まず、画像展開処理が開始されると（ステップＳ５１０１）、伸張器２０１３へ読み出し画像の伸張パラメータを設定し（ステップＳ５１０２）、続けて、圧縮器２００６へ圧縮パラメータを設定する（ステップＳ５１０３）。このとき、ページメモリ５００３に圧縮後の画像が収まるような圧縮パラメータを用いる。
【００８２】
次いで、リングバッファ５００１へＨＤＤ２００４からリングバッファ５００１のサイズ分だけ画像を読み出す（ステップＳ５１０４）。そして、リングバッファ５００１へ読み出したパケット画像のヘッダからパケットテーブルを生成する（ステップＳ５１０５）。その後、リングバッファ５００１上の画像を伸張器２０１３及び圧縮器２００６へ送信する（ステップＳ５１０６）。
【００８３】
次いで、ＨＤＤ２００４上の画像の１ページ分すべてを読み出し終わったかどうかを判断する（ステップＳ５１０７）。その結果、読み出しが終了している場合（Ｙｅｓ）は、伸張器２０１３及び圧縮器２００６による再圧縮が終了するまで待ち（ステップＳ５１１８）、当該再圧縮が終了することによって本画像展開処理が終了する（ステップＳ５１１９）。
【００８４】
一方、ステップＳ５１０７で、１ページ分の読み出しが終了していないと判定された場合（Ｎｏ）は、リングバッファ５００２へ画像を読み出し（ステップＳ５１０８）、ステップＳ５１０５の処理と同様に読み出した分のパケットテーブルを生成する（ステップＳ５１０９）。そして、ステップＳ５１０５で送信した画像の伸張器２１０３及び圧縮器２００６を使った再圧縮が終了するまで待つ（ステップＳ５１１０）。その結果、終了した場合（Ｙｅｓ）はリングバッファ５００２上の画像を伸張器２０１３及び圧縮器２００６へ送信する（ステップＳ５１１１）。
【００８５】
次いで、ステップＳ５１０７と同様に１ページ分の読み出しが終了したかを判断し（ステップＳ５１１２）、終了していれば（Ｙｅｓ）、ステップＳ５１１８に進んでリングバッファ５００２上での再圧縮処理が完了するまで待ち、本画像展開処理を終了する。一方、ステップＳ５１１２で１ページ分の読み出しが終了していない場合（Ｎｏ）はステップＳ５１１３へ進む。
【００８６】
ステップＳ５１１３では、リングバッファ５００１上にステップＳ５１０４で読み出した画像が残っているが、ここに画像を読み出して上書きする。次いで、ステップＳ５１０５と同様にリングバッファ５００１上の画像のパケットテーブルを生成する（ステップＳ５１１４）。その後、ステップＳ５１１０と同様に、リングバッファ５００２上の画像の再圧縮が終了するまで待ち（ステップＳ５１１５）、再圧縮が終了した後（Ｙｅｓ）、ステップＳ５１０６と同様にリングバッファ５００１上の画像を伸張器２０１３及び圧縮器２００６へ送信して再圧縮を開始する（ステップＳ５１１６）。
【００８７】
ステップＳ５１１７では、ステップＳ５１０７の処理と同様に１ページ分の読み出しが終了したかどうかを判断し、終了している場合（Ｙｅｓ）はステップＳ５１１８へ進んで再圧縮の終了を待ってから終了する。一方、ステップＳ５１１７で１ページ分の読み出しが終了していない場合（Ｎｏ）は、ステップＳ５１０８へ戻って上記処理を繰り返す。
【００８８】
このように、ステップＳ５１０８〜Ｓ５１１２及びステップＳ５１１３〜Ｓ５１１７を繰り返し、ステップＳ５１１２或いはステップＳ５１１７で１ページ分の読み出しが終了したと判断されれば、ステップＳ５１１８で再圧縮終了を待って画像展開が終了する。
【００８９】
尚、上記実施形態では、画像データサイズがページメモリサイズよりも大きい場合に再圧縮処理を行う方法を説明したが、画像データに生成した機種情報を付属させ、自機種でない場合に再圧縮処理を行う、という方法をとっても同様な手順でページメモリに画像を展開することができる。
【００９０】
次に、図１８のステップＳ５１０５、Ｓ５１０９、Ｓ５１１４におけるパケットテーブルの生成処理の詳細を、図１９及び図２０を用いて説明する。図１９は、メモリブロックに読み出された末尾のパケットの処理の例を説明するための図である。ここで、各メモリブロックには、１つの１パケット分のバッファ（packet buffer）を用意する。また、メモリブロックのサイズはプログラム中で与えた所定のサイズ（例えば、１ＭＢ）であり、packet bufferのサイズは１パケットが必ず入るサイズである。例えば、パケットバッファのサイズは、１パケットの最大サイズはデータの圧縮が無かったとき、すなわち生データを格納できるサイズである。基本的には、メモリブロックの最後の実データを持つパケットを、次のメモリブロック用のパケットバッファにコピーし、次のメモリブロックにパケット画像が読み出されてパケットテーブルを生成するときに、先頭のパケットテーブルがパケットバッファを指すようにする。
【００９１】
最終パケットデータのコピーの仕方と次のブロックの先頭パケットテーブルの生成の仕方には、図１９の５２０１〜５２０３に示すように３通りある。
【００９２】
まず、５２０１に示すように、前のブロックの最終パケットのデータが途中で終わっており、次のブロックの先頭からそのパケットの続きが始まる場合がある。この場合、前のブロックの最終パケットを次のブロックのパケットバッファへ先頭からコピーを行うとともにパケットヘッダから足りないデータサイズを記憶しておく。そして、次のブロックの読み出しが終わったときに、メモリブロックの先頭から記憶しておいた残りデータサイズ分パケットバッファの後ろにコピーを行うことによって、前のブロックのパケットデータとつなげて１つの完全なパケットを生成する。この際、先頭のパケットテーブルがパケットバッファを指すようにする。
【００９３】
次に、５２０２に示すように、前のブロックに最終パケットが完全に入っており、次のブロックの先頭も完全なパケットから始まる場合がある。この場合には、前のブロックの最終パケットを次のブロックのパケットバッファにコピーするとともに、残りのデータサイズが０であることを記憶しておく。そして、次のブロックのパケットテーブルを生成するときに先頭のパケットヘッダを調べる。その結果、リピートフラグが立っていなければ完全なデータを持つパケットであるため、先頭のパケットテーブルがブロックの先頭を指すようにする。
【００９４】
そして、５２０３に示すように、前のブロックに最終パケットが完全に含まれており、次のブロックの先頭がリピートフラグの立ったパケットから始まる場合がある。この場合も、前述した５２０２の場合と同じように、前のブロックの最終パケットを次のブロックのパケットバッファにコピーするとともに、残りのデータサイズが０であることを記憶しておく。そして、次のブロックのパケットテーブルを生成するときに先頭のパケットヘッダを調べる。その結果、リピートフラグが立っていれば前のブロックの最終パケットと同じデータを指していると判断できるため、パケットテーブルはパケットバッファにコピーされたパケットを指すように生成する。
【００９５】
図２０は、図１９に示すメモリブロックに読み出された末尾のパケットの処理の例を説明するためのフローチャートである。まず、図２０に示すフローチャートの処理を実行するためのプログラムが開始されると（ステップＳ５３０１）、変数の初期化を行う（ステップＳ５３０２）。ステップＳ５３０２では、パケットバッファにコピーしたパケットの残りデータサイズを表す変数であるrest_data_sizeに０を設定し、生成するパケットテーブルの個数を表す変数であるpacket_countに生成する個数を設定する。
【００９６】
そして、パケットテーブルの生成指示を待つ（ステップＳ５３０３）。そして、生成指示が来た場合はステップＳ５３０４に進み、生成指示に含まれるメモリブロックのアドレスをmemory_start_addr、memory_end_addrの変数に設定する。次いで、パケットの残りデータサイズを表す変数であるrest_data_sizeが０であるかどうかを判断し（ステップＳ５３０５）、０であると判断された場合（Ｙｅｓ）は、最初のパケットはメモリブロックの先頭にあるため、処理をするパケットヘッダのアドレスを表す変数であるpacket_header_addrにmemory_start_addrを代入する（ステップＳ５３０６）。尚、最初のパケットテーブル生成指示ではrest_data_sizeは初期化しているので必ず０であるためステップＳ５３０６へ進むが、２度目以降のパケットテーブル生成指示ではrest_data_sizeが０でないことがある。そこで、ステップＳ５３０５で０ではないと判断された場合（Ｎｏ）は、最終パケットの実体を指しているlast_packet_addrのパケットの末尾にmemory_start_addrからrest_data_size分だけコピーを行う（ステップＳ５３０７）。
【００９７】
ステップＳ５３０７の処理によりlast_packet_addrに実データがメモリ上にすべて存在するパケットが生成されるため、次いでlast_packet_addrのパケットヘッダから得たパケットＩＤを使用してパケットテーブルのアドレスを算出する（ステップＳ５３０８）。そして、パケットテーブルにlast_packet_addrを設定してパケットテーブルを生成する（ステップＳ５３３１）。さらに、packet_header_addr変数に、残りデータサイズから算出した次のパケットのアドレスを設定する（ステップＳ５３３２）。
【００９８】
ステップＳ５３０６又はステップＳ５３３２の処理後はステップＳ５３０９へ進み、packet_header_addrにあるパケットヘッダのパケットＩＤから、生成するパケットテーブルのアドレスを算出する。次いで、packet_header_addrのパケットヘッダにリピートフラグが立っているかどうかを判断する（ステップＳ５３１０）。
【００９９】
その結果、リピートフラグが立っている場合（Ｙｅｓ）には、last_packet_addr変数で表されるアドレスのパケットと同じデータが続いていると判断できるため、パケットテーブルにlast_packet_addrを設定する（ステップＳ５３１１）。ここで、last_packet_addr変数は、後述するステップＳ５３１３及びステップＳ５３２５で随時更新されているため、メモリブロック中の最後に処理を行ったパケットか、或いは、メモリブロックの最初のパケットを処理している場合にはパケットバッファを指している。
【０１００】
一方、ステップＳ５３１０でpacket_header_addrにあるパケットヘッダにリピートフラグが立っていない場合（Ｎｏ）には、packet_header_addrにパケットの実データがあると判断できるため、ステップＳ５３０９で算出したパケットテーブルのアドレスにpacket_header_addrをセットする（ステップＳ５３１２）。そして、last_packet_addrにpacket_header_addrをセットする（ステップＳ５３１３）。
【０１０１】
ステップＳ５３１１又はステップＳ５３１３が終了した後、packet_header_addrをパケットヘッダから得たパケット長分だけインクリメントする（ステップＳ５３１４）。そして、ステップＳ５３１４インクリメントしたpacket_header_addrがmemory_end_addr以下であるかどうか、すなわち前のパケットが完全にメモリブロック内に入っているかどうかを判断する（ステップＳ５３１５）。その結果、入っている場合（Ｙｅｓ）はpacket_count変数を１デクリメントし（ステップＳ５３１６）、packet_countが０より大きいかどうか、すなわちすべてのパケットテーブルの生成が終了したかどうかを判断する（ステップＳ５３１７）。そして、終了していると判断された場合（Ｎｏ）は、プログラムは終了となる。
【０１０２】
ステップＳ５３１７でまだ生成すべきパケットテーブルがあると判断した場合（Ｙｅｓ）には、packet_header_addrがmemory_end_addrよりも小さいかどうか、すなわちメモリブロック上に次のパケットデータが存在するかどうかを判断する（ステップＳ５３１９）。
【０１０３】
その結果、ステップＳ５３１９において次のパケットデータが存在すると判断した場合（Ｙｅｓ）にはステップＳ５３０９へ戻って、上述した手順で次のパケットのパケットテーブル生成処理を実行する。一方、ステップＳ５３１９で次のパケットデータが存在しないと判断した場合（Ｎｏ）は、ステップＳ５３２０へ進んでメモリブロック上の最終パケット処理を実行する。また、ステップＳ５３１５の処理において、packet_header_addrがmemory_end_addrよりも大きいとき（Ｎｏ）、すなわちメモリブロックの最後のパケットに残りのデータがあり、まだ完全なパケットがメモリ上に無いと判断したときにも同様にステップＳ５３２０へ進む。
【０１０４】
ステップＳ５３２０では、最後に処理した実データを持つパケットのアドレスを表しているlast_packet_addr変数の示すパケットのパケットヘッダからサイズを取得し、そのパケットがmemory_end_addr以内に終わっているかどうかを判断する。その結果、終わっていないと判断された場合は、パケットの残りデータサイズを表すrest_data_size変数に残りのデータ長をセットし（ステップＳ５３２１）、last_packet_addrからmemory_end_addrまでをpacket_bufferへコピーする（ステップＳ５３２２）。一方、ステップＳ５３２０でlast_packet_addrにあるパケットがmemory_end_addr以内に終わっている場合（Ｎｏ）は、rest_data_sizeに０をセットし（ステップS５３２３）、last_packet_addrからパケット長分packet_bufferへコピーする（ステップＳ５３２４）。
【０１０５】
ステップＳ５３２２又はステップＳ５３２４での処理が終了した後、次のメモリブロックのためにlast_packet_addrをpacket_bufferに設定し（ステップＳ５３２５）、ステップＳ５３０３へ戻って次のメモリブロックのパケットテーブルの生成指示を待つ。
【０１０６】
イメージマネージャ４１１０は、画像の展開が終了した時点で、展開終了をシンクマネージャ４０８０を経由して、ファイルリードマネージャ４０６０とプリントマネージャ４０９０に伝える。プリントマネージャ４０９０は、メモリに画像が入った時点でデバイスＩ／Ｆを介して、プリンタ部２０９５にジョブマネージャから指示された給紙段、若しくはその用紙サイズを有するトレイ（段）を選択し、印刷要求を出す。また、プリントマネージャ４０９０は、自動用紙の場合には、画像サイズから給紙段を決定し印刷要求を出す。同時に、プリントマネージャ４０９０は、シンクマネージャ４０８０にプリント画像処理要求を行う。
【０１０７】
シンクマネージャ４０８０は、プリントマネージャ４０９０から要求を受けた場合、プリント画像処理設定をイメージマネージャ４１１０に依頼する。この場合、例えば最適サイズ用紙がなくなり、回転が必要になれば別途回転指示も依頼する。また、回転指示があった場合には、イメージマネージャ４１１０が回転器２０１９を使って画像を回転する。イメージマネージャ４１１０は、プリンタ画像処理部２０１６の設定を行い、シンクマネージャ４０８０を介してプリントマネージャ４０９０にプリント準備完了を伝える。プリントマネージャ４０９０は、プリンタ部２０９５に対して印刷指示を出す。
【０１０８】
ここで、プリント画像転送完了は、図示しないハードウェアからの割り込み信号によってイメージマネージャ４１１０に伝わる。イメージマネージャ４１１０からのプリント完了を受けてシンクマネージャ４０８０は、プリント完了をファイルリードマネージャ４０６０とプリントマネージャ４０９０に伝える。
【０１０９】
ファイルリードマネージャ４０６０は、終了通知をジョブマネージャ４０４０に返す。また、プリントマネージャ４０９０は、プリンタ部２０９５からの排紙完了を受けて、ジョブマネージャ４０４０に対して終了通知を返す。ジョブマネージャ４０４０は、共通インタフェース４０３０を介してコピーアプリケーション４０２０へ終了通知を返す。コピーアプリケーション４０２０は、スキャン、プリントが終了した後、ジョブ終了をＵＩ制御部４０１０に通知する。
【０１１０】
ＰＤＬデータ展開格納ジョブの場合は、ＰＤＬプリントを投入したホストＰＣからの要求がネットワークアプリケーション４１２０を経由してＰＤＬアプリケーション４０２３に伝達される。そして、ＰＤＬアプリケーション４０２３は、ＰＤＬデータ展開格納ジョブを共通インタフェース４０３０を介してジョブマネージャ４０４０に指示する。このときＰＤＬマネージャ４０７０とストアマネージャ４１００がジョブマネージャ４０４０からの要求を受ける。
【０１１１】
以下、この後のＰＤＬマネージャ４０７０とストアマネージャ４１００の動作を図２１に示すシーケンス図を用いて説明する。図２１は、ＰＤＬデータ展開処理及びＨＤＤへの格納処理の流れを示すシーケンス図である。図２１において、ストアマネージャ４１００は、メモリ管理部、ＨＤＤ書込み部、ＨＤＤドライバの３つの部分に分けられている。図２１は、メモリ管理部のところに描かれているPacketTable、ChainBlockはメモリ上のPacketTable、ChainBlockのシーケンス図上で対応する時点の状態を模式的に図示したものである。
【０１１２】
まず、図２１の２行目に示すように、ＰＤＬマネージャはメモリ管理部へバンドメモリ取得要求を行い、また、ＨＤＤ書込み部はメモリ管理部へデータバッファ取得要求を行う。メモリ管理部は、ＨＤＤ書込み部からのデータバッファ取得要求に対しては、ＨＤＤへ書き込むべきデータがないために返答を行わず、メモリ管理部内部の要求キューへキューイングしておく。
【０１１３】
一方、ＰＤＬマネージャのバンドメモリ取得要求に対しては、１バンド分のPacketTableの領域５４０１と、１バンド分の生データサイズ領域５４０２を５行目に示すバンドメモリ取得結果でＰＤＬマネージャへ返す。本実施形態のタイルＪＰＥＧ圧縮方式では、１タイルの圧縮データサイズが生データサイズを越えるときには生データサイズでメモリ上に格納するため、圧縮後のデータは領域５４０２を越えることはない。
【０１１４】
ＰＤＬマネージャは、バンドメモリ取得結果で１バンド分のメモリを取得した後、１バンド分のラスタライズ、タイル化、圧縮を行ったデータをメモリ上に格納する。そして、７行目で示すバンド格納通知をメモリ管理部に対して行う。このとき、ＰＤＬマネージャからメモリ管理部へ圧縮後のデータサイズが通知される。
【０１１５】
ＰＤＬマネージャは、バンド格納通知後、１９行目と２０行目で示されるバンドメモリ解放通知と次のバンドメモリ取得要求とを続けて行う。メモリ管理部は、１７行目と１９行目とに示すバンド格納通知とバンドメモリ解放通知を受けて、ChainBlock上に格納されているデータサイズを計算し、それが所定のサイズを越えていてＨＤＤへデータを書込みにいくかどうかを判断する。ここで、９行目に示す段階では、まだデータサイズが所定のサイズを越えていないため、ＨＤＤへデータを書込みにはいかない。
【０１１６】
メモリ管理部は、続けて１１行目に示すＰＤＬマネージャからのバンドメモリ取得要求に応じて、PacketTable領域５４０３とChainBlock領域5５４０４をバンドメモリ取得結果としてＰＤＬマネージャへ返す。ChainBlock領域５４０４は、７行目に示されるＰＤＬマネージャからのバンド格納通知によって通知されたデータ領域の直後から始まり、１バンド分の最大データサイズ、ここでは１バンド分の生データサイズ分の領域である。
【０１１７】
ＰＤＬマネージャは、１回目のバンド処理と同様にバンドメモリへラスタライズ、タイル化、圧縮を行ったデータを格納し、１７行目から２１行目に示されるバンド格納通知、バンドメモリ解放通知、バンドメモリ取得要求をメモリ管理部に対して行う。メモリ管理部は、１７行目のバンド格納通知で通知されたデータサイズを加算した後、前述した場合と同様にＨＤＤへ書きこむかどうかを判断する。但し、この場合は所定のサイズを超えていないので、ここでもＨＤＤへの書込みは行われない。
【０１１８】
続いてメモリ管理部は、次のバンド用メモリ領域５４０５、5406を前述したのと同様に確保してバンドメモリ取得結果としてPDLマネージャへ返す。PDLマネージャは前述と同様にラスタライズした後、２７行目から３１行目で示されるバンド格納通知、バンドメモリ解放通知、バンドメモリ取得要求をメモリ管理部に対して行う。メモリ管理部は、２７行目に示されるバンド格納通知で通知されたデータサイズを加算し、ここでも前述と同様にＨＤＤへ書き込むかどうかの判断を行う。
【０１１９】
ここでは、ChainBlock上のデータサイズが所定のサイズ（例えば、全ChainBlockサイズの１／４）を超えているため、この所定のサイズ分のデータをＨＤＤへ書き込む。
【０１２０】
そのため、PacketTable領域５４０７とChainBlock領域５４０８のデータを、１行目のＨＤＤ書込み部からのデータバッファ取得要求の返答として、３５行目のデータバッファ取得結果を用いてＨＤＤ書込み部へ通知する。このとき、メモリ管理部によるPacketTable領域５４０７とChainBlock領域５４０８の決定方法は以下の通りである。
【０１２１】
（１）PacketTableの先頭から、PacketTable中のそのパケットのデータサイズを加算していき、加算したデータサイズが所定のサイズを越えるPacketを算出する。
【０１２２】
（２）上記（１）の処理で決定したPacketの１つ前までのPacketをPacketTable領域５４０７として決定する。
【０１２３】
（３）上記（２）の処理で決定した最終Packetデータの終了アドレスがＨＤＤへの転送サイズ単位で割り切れないときには、最終PacketのPacketTable及びPacketHeader中のパケットサイズを増やして、ＨＤＤへの転送サイズ単位で割り切れるようにする。
【０１２４】
ここで、上記手順（３）でPacketのデータサイズを増やす理由は、Packetのデータサイズ境界と、ＨＤＤへの転送単位が異なるためである。例えば、本実施形態では、Packdetデータは３２バイトバウンダリとなっているが、ＨＤＤへの転送単位は５１２バイトである。このため、上記手順（２）で決定した最終パケットのデータの終了アドレスは、ＨＤＤへの転送単位に対して余りが出る場合があり、そのまま書き込んだ場合は次にパケットデータをＨＤＤから読み出すときに正常に読み出すことができない。そこで、パケットサイズを増加させてＨＤＤ転送単位と丁度同一にすることにより、正常に読み出せるパケットデータをＨＤＤへ書き込むことができる。
【０１２５】
ＨＤＤ書込み部は、図２１の３６行目で示されるメモリ管理部からのデータバッファ取得結果で通知されたPacketTableとChainBlockを用いて、ＨＤＤドライバへデータ転送指示を出す。３９行目で示されるようにＨＤＤドライバからデータ転送終了通知がされると、ＨＤＤ書込み部はメモリ管理部へデータバッファ解放通知を行い、続いて、次のデータバッファ取得要求をメモリ管理部へ出す。
【０１２６】
メモリ管理部は、３９行目で示されるＨＤＤ書込み部から通知されたデータバッファ解放通知に対応して、ＨＤＤ書込みが終了したChainBlock領域５４０８を空き領域とし、リングバッファ動作が行えるようにする。一方、ＰＤＬマネージャとメモリ管理部は、３５行目〜４１行目で示されるＨＤＤ書込みと並行して、PacketTable領域５４０９とChainBlock領域５４１０を用いてバンド処理を行う。
【０１２７】
４５行目に示すメモリ管理部からのバンドメモリ取得結果では、PacketTable領域５４１３とChainBlock領域５４１４を渡す。ChainBlock領域５４１４は、すでにＨＤＤへ書き込まれて空き領域となった領域５４０８と重なっており、リングバッファ動作となっている。ＰＤＬマネージャは領域５４１３、５４１４を用いてバンド処理を行い、４７行目〜５１行目で示されるバンド格納通知、バンドメモリ解放通知、バンドメモリ取得要求をメモリ管理部に対して行う。
【０１２８】
一方、メモリ管理部は、４１行目に示されるＨＤＤ書込み部からのデータバッファ取得要求に応じて、前述した領域５４０７、５４０８と同様な手順でPacketTable領域５４１１とChainBlock領域５４１２を決定し、データバッファ取得結果としてＨＤＤ書込み部へ通知する。ＨＤＤ書込み部は、ChainBlock５４１２の内容をＨＤＤへ転送し、終了後、５１行目で示される次のデータバッファ取得要求をメモリ管理部に対して行う。
【０１２９】
メモリ管理部は、５１行目で示されるＰＤＬマネージャからのバンドメモリ取得要求に対して、ここではChainBlockの空きサイズが１バンドの最大データサイズに達していないため、返答しない。その代わり、このバンドメモリ取得要求をメモリ管理部内部に保持している要求キューにキューイングしておく。
【０１３０】
一方、５１行目に示されるＨＤＤ書込み部からのデータバッファ取得要求に対して、前述したようにPacketTable領域５４１５とChainBlock領域５４１６を決定し、ＨＤＤ書込み部へデータバッファ取得結果として５５行目に示すように通知する。ＨＤＤ書込み部はこれまでの手順と同様にＨＤＤへデータの転送を行った後、５９行目で示されるようにデータバッファ解放通知を行い、次のデータバッファ取得要求を行う。
【０１３１】
メモリ管理部は、５９行目のデータバッファ解放通知を受けて領域５４１６を空き領域とし、ChainBlock中の全空き領域サイズを再計算する。ここで、空き領域サイズが１バンドの最大データサイズを超えることになるため、キューイングされていたバンドメモリ取得要求に対し、PacketTable領域５４１９とChainBlock領域５４２０をバンドメモリ取得結果としてＰＤＬマネージャへ通知する。ＰＤＬマネージャは、これまでと同様な手順でバンド処理を行う。また、同時にメモリ管理部は、データバッファ取得結果をＨＤＤ書込み部へ返し、ＨＤＤ書込み部はＨＤＤへのデータの転送を行う。
【０１３２】
以上の動作を画像のバンド数分繰り返し、１ページ分のＲＩＰが終了する。
【０１３３】
本実施形態では、上述したように図２１に示すシーケンス図を用いて処理の流れを説明したが、ポイントとなるメモリ管理部の処理について、バンドメモリ取得要求、バンドメモリ解放通知、データバッファ取得要求、データバッファ解放通知、のそれぞれがあったときの処理を図２２〜図２５に示すフローチャートを用いて詳細に説明する。
【０１３４】
図２２は、バンドメモリ取得要求をされたときのメモリ管理部の処理の詳細を説明するためのフローチャートである。まず、バンドメモリ取得要求があると（ステップＳ５５０１）、ChainBlockに１バンドの最大データサイズ分の空き領域があるかどうかを判断する（ステップＳ５５０２）。その結果、空き領域がないと判断された場合（Ｎｏ）は、バンドメモリ取得要求キューへ要求をキューイングし（ステップＳ５５０３）、ステップＳ５５０６へ進んで処理を終了する。
【０１３５】
一方、ステップＳ５５０２で空き領域があると判断された場合（Ｙｅｓ）は、１バンド分のPacketTableとChainBlockの領域を決定し（ステップＳ５５０４）、バンドメモリ取得結果を要求元へ通知し（ステップＳ５５０５）、ステップＳ５５０６へ進んで処理を終了する。
【０１３６】
図２３は、バンドメモリ解放通知をされたときのメモリ管理部の処理を示すフローチャートである。ステップＳ５６０１でバンドメモリ解放通知があると、未蓄積データサイズに展開されたデータサイズを加算する（ステップＳ５６０２）。次に、未蓄積データサイズが所定サイズを越えているかどうかを判断する（ステップＳ５６０３）。その結果、所定サイズを超えていないと判断された場合（Ｎｏ）はステップＳ５６０８へ進んで本処理を終了する。
【０１３７】
一方、ステップＳ５６０３で所定サイズを超えていると判断された場合（Ｙｅｓ）は、データバッファ取得要求キューに要求があるかどうかを判断する（ステップＳ５６０５）。その結果、要求がないと判断された場合（Ｎｏ）はステップＳ５６０８へ進んで本処理を終了する。また、要求があると判断された場合（Ｙｅｓ）は、データバッファ取得要求キューから要求を取り出し（ステップＳ５６０６）、続けてステップＳ５６０７へ進んで、後述するデータバッファ取得要求処理へ進む。
【０１３８】
図２４は、データバッファ取得要求があったときのメモリ管理部の細部処理を説明するためのフローチャートである。まず、データバッファ取得要求があると（ステップＳ５７０１）、未蓄積データサイズが所定サイズを超えているかどうかを判断する（ステップＳ５７０２）。その結果、所定サイズを超えていなければ（Ｎｏ）、データバッファ取得要求キューへ要求をキューイングし（ステップＳ５７０３）、その後ステップＳ５７０９へ進んで本処理を終了する。
【０１３９】
一方、ステップＳ５７０２で所定サイズを超えていると判断された場合（Ｙｅｓ）は、所定サイズを超えるところのパケットを決定する（ステップＳ５７０４）。そして、ステップＳ５７０４で決定したパケットの直前のパケットを最終パケットとして決定し（ステップＳ５７０５）、未蓄積の最初のパケットから最終パケットまでのPacketTableとChainBlockの領域を決定し（ステップＳ５７０６）、データバッファ取得結果を要求元へ通知する（ステップＳ５７０７）。そして、ステップＳ５７０８では未蓄積データサイズから今回取得結果で通知した分のデータサイズを減算し、ステップＳ５７０９へ進んで本処理を終了する。
【０１４０】
図２５は、データバッファ解放通知があったときのメモリ管理部の処理の詳細を説明するためのフローチャートである。まず、データバッファ解放通知があると（ステップＳ５８０１）、解放されたデータバッファを空き領域として、ChainBlock中の全空き領域サイズを計算する（ステップＳ５８０２）。続けて、バンドメモリ要求キューに要求があるかどうかを判断する（ステップＳ５８０３）。その結果、要求がないと判断された場合（Ｎｏ）はステップＳ５８０４へ進んで本処理を終了する。
【０１４１】
一方、ステップＳ５８０３で要求があると判断された場合（Ｙｅｓ）は、バンドメモリ要求キューから要求を取り出し（ステップＳ５８０５）、ステップＳ５８０６へ進んで前述したバンドメモリ取得要求処理を実行する。
【０１４２】
画像のＲＩＰが終了した後の画像入力する部分に関しては、前述のスキャンジョブと同様である。メモリ上の画像（文字／写真判定信号を含めて）をＨＤＤ２００４に格納する。また、画像の付随情報として図示しないＳＲＡＭにカラー／白黒情報、画像入力元としてPDL画像、色空間ＣＭＹＫ若しくはＲＧＢも格納しておく。
【０１４３】
ＰＤＬ画像をＨＤＤ２００４に格納し終わった時点で、シンクマネージャ４０８０から格納完了通知を受け、それを共通インタフェース４０３０を介してＰＤＬアプリケーション４０２３に通知する。ＰＤＬアプリケーション４０２３はこの通知の後、ネットワークアプリケーション４１２０にＨＤＤに格納完了を通知し、ＰＤＬプリントを投入したホストＰＣへこの情報が伝達される。また、ＰＤＬプリントジョブの場合には、ＰＤＬマネージャ４０７０とプリントマネージャによって、メモリ上に展開された画像を印字する。
【０１４４】
ＰＤＬ展開され格納された画像のプリントはＵＩ（操作部２０１２）で印刷指示された格納文書をボックスアプリケーション４０２２に対してプリントジョブとして発行する。ボックスアプリケーション４０２２は、共通インタフェース４０３０を介してジョブマネージャ４０４０にプリントジョブを投入する。ローカルコピーとは異なり、スキャンマネージャ４０５０に代わってファイルリードマネージャ４０６０がジョブマネージャ４０４０からの要求を受ける。そして、印刷指示された画像をＨＤＤからメモリに展開するための要求をシンクマネージャ４０８０を介して、イメージマネージャ４１１０に行う。この後の動作はリモートコピーのプリントジョブで説明した動作と同様のため、省略する。
【０１４５】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体（記録媒体）等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１４６】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【０１４７】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１４８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１４９】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１５０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１５１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１５２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１５３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１５４】
【図１】本発明の一実施形態に係る画像形成装置システムの全体の構成を示すブロック図である。
【図２】図１に示す画像形成装置２００の細部構成を示すブロック図である。
【図３】本実施形態で使用される画像の形式の一例を説明するための図である。
【図４】本実施形態で使用されるパケットデータの一例を示す図である。
【図５】複数のパケットが同じデータである場合のパケットテーブルと画像との関係を説明するための図である。
【図６】パケット画像の模式図である。
【図７】コントローラユニット２０００のスキャナ画像処理部２０１４での処理内容の詳細を説明するための図である。
【図８】コントローラユニット２０００のプリンタ画像処理部２０１６での処理内容の詳細を説明するための図である。
【図９】本実施形態に係る画像形成装置２００を実現するための画像入出力デバイスの一例を示す図である。
【図１０】本実施形態に係る画像処理装置の操作部２０１２の細部構成を示す図である。
【図１１】本実施形態に係る画像形成装置の操作画面上に表示される初期画面の一例を示した図である。
【図１２】図１１に示す画面において読み込み設定ボタン３１０５が押下されたときに表示されるポップアップウィンドウを示す図である。
【図１３】図１１に示す画面においてコピーボタン３１０１が押下されたときに表示される画面例を示す図である。
【図１４】図１１に示す画面においてボックスボタン３１０３が押下されたときに表示される画面例を示す図である。
【図１５】図１４に示す画面において０番のフォルダ部分が押下されたときに表示される画面例を示す図である。
【図１６】本発明の一実施形態に係る画像処理を実行するためのソフトウェア構成を説明するための図である。
【図１７】本実施形態に係るコントローラユニット２０００内で再圧縮処理を行うときの画像の展開処理を模式的に説明する図である。
【図１８】イメージマネージャ４１１０による画像展開処理の詳細を説明するためのフローチャートである。
【図１９】メモリブロックに読み出された末尾のパケットの処理の例を説明するための図である。
【図２０】図１９に示すメモリブロックに読み出された末尾のパケットの処理の例を説明するためのフローチャートである。
【図２１】ＰＤＬデータ展開処理及びＨＤＤへの格納処理の流れを示すシーケンス図である。
【図２２】バンドメモリ取得要求をされたときのメモリ管理部の処理の詳細を説明するためのフローチャートである。
【図２３】バンドメモリ解放通知をされたときのメモリ管理部の処理を示すフローチャートである。
【図２４】データバッファ取得要求があったときのメモリ管理部の細部処理を説明するためのフローチャートである。
【図２５】データバッファ解放通知があったときのメモリ管理部の処理の詳細を説明するためのフローチャートである。
【符号の説明】
【０１５５】
２００  画像形成装置
２４０  ＰＣ
２０００  コントローラユニット
２００１  ＣＰＵ
２００２  ＲＡＭ
２００３  ＲＯＭ
２００４  ＨＤＤ
２００５  操作部Ｉ／Ｆ
２００６  圧縮器
２００７  ネットワークＩ／Ｆ
２００８  イメージバスＩ／Ｆ
２００９  ＤＭＡＣ
２０１０  画像バス
２０１１  ＬＡＮ
２０１２  操作部
２０１３  伸張器
２０１４  スキャナ画像処理部
２０１６  プリンタ画像処理部
２０１８  ＲＩＰ
２０１９  回転器
２０２０  変倍器
２０２１  色空間変換器
２０２２  ２進多値変換器
２０２３  合成器
２０２４  間引き器
２０２５  移動器
２０２６  多値２値変換器
２０３０  画像変換部
２０５０  モデム
２０５１  ＸＡＮ
２０５２  ２値画像回転部
２０５３  ２値画像圧縮・伸張部
２０７０  スキャナ部
２０９５  プリンタ部
【図１】
2006174170.tif 000003
【図２】
2006174170.tif 000004
【図３】
2006174170.tif 000005
【図４】
2006174170.tif 000006
【図５】
2006174170.tif 000007
【図６】
2006174170.tif 000008
【図７】
2006174170.tif 000009
【図８】
2006174170.tif 000010
【図９】
2006174170.tif 000011
【図１０】
2006174170.tif 000012
【図１１】
2006174170.tif 000013
【図１２】
2006174170.tif 000014
【図１３】
2006174170.tif 000015
【図１４】
2006174170.tif 000016
【図１５】
2006174170.tif 000017
【図１６】
2006174170.tif 000018
【図１７】
2006174170.tif 000019
【図１８】
2006174170.tif 000020
【図１９】
2006174170.tif 000021
【図２０】
2006174170.tif 000022
【図２１】
2006174170.tif 000023
【図２２】
2006174170.tif 000024
【図２３】
2006174170.tif 000025
【図２４】
2006174170.tif 000026
【図２５】
2006174170.tif 000027