(57)【特許請求の範囲】
【請求項１】
入力された描画情報をバンド毎の中間コード画像データとして管理する画像処理装置において、バンド毎に生成された中間コード画像データを保持する中間コード画像データ保持手段と、前記中間コード画像データをバンド毎に管理する中間コード画像データ管理手段と、前記描画情報のイメージデータ部分を保持するイメージデータ保持手段と、前記イメージデータ部分を管理するイメージデータ管理手段を有し、該イメージデータ管理手段は、前記イメージデータ保持手段に保持されているイメージデータ部分と該イメージデータ部分の少なくとも一部を描画する領域に対応付けて生成された前記中間コード画像データ保持手段内の１ないし複数の中間コード画像データを相互に関連づける管理情報により管理することを特徴とする画像処理装置。
【請求項２】
前記イメージデータ管理手段は、前記イメージデータ部分を入力解像度で管理し、前記中間コード画像データ管理手段は、前記イメージデータ部分の少なくとも一部が出力解像度に合わせて描画される領域に対して生成された１ないし複数の中間コード画像データを管理することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
さらに、前記イメージデータ管理手段によって管理している１ないし複数の前記イメージデータ部分をページ単位で管理するとともに前記イメージデータ保持手段の領域管理を行う総イメージデータ管理手段を有することを特徴とする請求項１または請求項２に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力された描画情報をバンド毎に中間コード画像データに変換し、変換された中間コード画像データをバンドバッファへ展開しつつ順次出力装置へ送信する画像処理装置に関するものであり、特に、入力画像情報がイメージの場合における中間コード画像データとイメージデータの管理に関するものである。
【０００２】
【従来の技術】
近年の出力装置の高解像度化や装置の低価格化などのため、１ページ分のビットマップデータを保持するメモリを持たず、１ページを複数のバンドに分割して、そのバンドのサイズに相当するバッファ（以後、バンドバッファと呼ぶ）を１ないし複数持つ画像処理装置が開発されている。このような画像処理装置においては、ページ記述言語（ＰＤＬ）などによってページ単位で記述された入力画像情報を、各バンド毎の中間コード画像データの形式に一旦変換する必要がある。中間コード画像データのフォーマットとしては、例えば抽象度の低いランレングス形式のものや、抽象度の高いディスプレイリストと呼ばれるものがある。
【０００３】
ページ記述言語で記述される入力画像情報（以後、描画オブジェクトと呼ぶ）としては、主にフォント、グラフィックス、イメージの３つがあり、上述のシステムにおいてはそれぞれ中間コード画像データに変換されることになる。このとき、例えばイメージデータそのものをランレングス形式の中間コード画像データで表現しようとした場合、イメージデータは通常ドット毎に色が異なるため圧縮効果は期待できない。逆に、元のイメージ量より中間コード画像データ量の方が大きくなる場合もあり、イメージデータを中間コード画像データで表現することには問題がある。
【０００４】
そこで、例えば特許第２８３６０９２号公報に記載されている「画像供給装置」では、イメージデータを中間コード画像データでは表現せずにそのままの状態で別の領域に保持し、出力解像度に合わせたイメージデータを表現するパラメータのみを中間コード画像データのヘッダ部に生成する。それとともに、中間コード画像データのヘッダ部にそのイメージデータへのポインタを持たせておく。これによって、イメージデータを中間コード画像データに変換することによるメモリ量および処理時間の増大を抑えている。
【０００５】
しかし、上記の技術では描画されるイメージの形が矩形の場合にはよいが、任意形状の場合には中間コード画像データのヘッダ部のパラメータではその形状を表現できないため問題が発生する。そこで、例えば特開平９−１７１５６４号公報に記載されている「描画装置」や特開平１０−２１５３６７号公報に記載されている「画像処理装置」では、出力解像度に合わせたイメージデータが描画されるライン毎の位置情報を中間コード画像データとして持ち、かつ中間コード画像データのヘッダ部にそのイメージデータへのポインタを持たせている。これによって、任意形状のイメージ描画に対応することができる。
【０００６】
また、特許第２８４２００９号公報や特許第２８４２０１１号公報に記載されている「画像データ生成装置」では、出力解像度に合わせたイメージデータが描画される位置情報を線分データとして中間コード画像データに持ち、かつイメージデータおよびその管理情報をイメージ情報データとして中間コード画像データとは別に持っている。そして、中間コード画像データに、対応するイメージ情報データのＩＤを持たせることにより、任意形状のイメージ描画に対応している。
【０００７】
上述のように複数の描画オブジェクトを順次中間コード画像データに変換してゆく過程において、メモリ不足が発生する場合がある。また、中間コード画像データをもとにレンダリング処理を行ってビットマップデータを生成する処理が、出力装置の記録時間に間に合わず、オーバーランエラーにより白抜けを起こす場合がある。このような場合の対応策として、既にメモリに格納してあるイメージデータ、あるいはバンドそのものに対して操作（間引き／圧縮など）を加えることが考えられている。しかし、上述のように中間コード画像データにイメージデータへのポインタを持たせたり、イメージ情報データのＩＤを持たせるだけであると、メモリ不足や描画時間が間に合わない場合にイメージデータ等に操作を加えた際の情報を中間コード画像データに迅速に反映できないという問題がある。ましてや、一つのイメージデータに対して複数の中間コード画像データが生成されている場合には、より困難である。
【０００８】
例えば特開平９−３９３４０号公報に記載されている「印刷装置」では、一つのイメージデータに対して生成された複数の中間コード画像データを結び付けておく。そして、デコンポーズ処理途中においてメモリ不足が発生した場合や描画時間が間に合わない場合には、結び付けられた中間コード画像データが管理するイメージデータを一つの連続したイメージデータとして解像度を落としてページバッファに書き込む方式を採っている。これにより、一つのイメージデータに対して複数の中間コード画像データが生成されている場合にも、イメージデータに対する間引き処理に伴うイメージデータのアドレスやデータ量などの修正された情報を、複数の中間コード画像データに迅速に反映することができる。この技術では、ページバッファに対してレンダリング処理イメージデータの書込みを行っているため、中間コード画像データ間の結び付けが意味を持っている。しかし、ページバッファではなくバンドバッファに書込みを行い、かつイメージデータがバンドをまたぐことにより複数の中間コード画像データが生成された場合には、中間コード画像データはバンド単位でレンダリング処理されるので、個々の中間コード画像データを結びつける意味はない。
【０００９】
また、特開平９−３０７７１７号公報に記載されている「画像形成装置」では、描画オブジェクトがイメージの場合、中間コード画像データ（ディスプレイリスト）にリンクしているイメージデータが圧縮されているか否かの情報を持ち、またイメージデータの先頭にどの中間コード画像データにリンクしているかの情報を持たせている。これにより、デコンポーズ処理途中においてメモリ不足が発生した場合に、イメージデータに圧縮処理を施したことによるイメージデータ量の変化およびメモリ内での再配置によるアドレス値の変化を中間コード画像データに迅速に反映することができる。
【００１０】
しかし、圧縮方式が非可逆方式の場合、画質を保証するためにイメージ描画オブジェクト単位に圧縮を行わなければならない。複数のイメージ描画オブジェクトが存在し、かつ一つのイメージデータに対して複数の中間コード画像データが生成されている状況においては、上記の技術ではイメージデータが中間コード画像データ毎に分割されていて、なおかつメモリ上で再配置されている場合がある。従って、上記の技術ではイメージ描画オブジェクト単位に圧縮することができない場合が発生する。
【００１１】
以上のように、描画情報がイメージの場合における中間コード画像データとイメージデータの管理に関して、従来技術では１つのイメージ描画オブジェクトが複数のバンドに分割され、バンド毎にレンダリング処理を行うような場合には、１つの描画オブジェクト毎の加工を迅速に中間コード画像データに反映することができないなどの問題があった。
【００１２】
また、メモリに格納されているイメージデータの解像度が出力解像度に等しくない場合には、レンダリング時に拡大処理を行わなければならない。例えば特開平５−２４６０７７号公報に記載されている「印刷装置」では、低解像度のデータを整数倍に拡大して高解像度で保持されているデータと合成することにより低解像度でストアされているデータの拡大処理に対応している。しかし、バンド単位で処理を行う場合、拡大率が整数倍であっても、それぞれ拡大されるデータの境界がバンドの境界と一致しないことがある。そのような場合には、バンド境界で絵がずれることになる。
【００１３】
また特開平１０−５１６２７号公報に記載されている「画像処理方法とその装置」では、バンド単位で拡大処理を行う際に、出力解像度に合わせたイメージデータの全体の周期が変わらないように、第１バンドの終わりの描画部分と第２バンドの始めの描画部分に対して画像ラインを挿入し、バンド境界における画像のずれに対応している。しかし、画質の点でバンド単位で拡大処理を行う場合は少なく、通常は拡大の対象はイメージの描画オブジェクト単位である。このように描画オブジェクト単位で拡大処理を行うとき、同一バンド中に複数のバンドにまたがるイメージの描画オブジェクトが複数存在する場合には、上記の技術では第２バンドに対する補正情報を複数持てないことにより対応できないという問題があった。
【００１４】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、イメージの入力画像情報を中間コード画像データとイメージデータにより管理する際に、イメージデータに対して操作（間引き／圧縮など）が加わった場合でも、修正された情報を中間コード画像データに迅速に反映することができる画像処理装置を提供することを目的とするものである。
【００１５】
【課題を解決するための手段】
本発明は、入力された描画情報をバンド毎の中間コード画像データとして管理する画像処理装置において、バンド毎に生成された中間コード画像データを保持する中間コード画像データ保持手段と、前記中間コード画像データをバンド毎に管理する中間コード画像データ管理手段と、前記描画情報のイメージデータ部分を保持するイメージデータ保持手段と、前記イメージデータ部分を管理するイメージデータ管理手段を有し、該イメージデータ管理手段は、前記イメージデータ保持手段に保持されているイメージデータ部分と該イメージデータ部分の少なくとも一部を描画する領域に対応付けて生成された前記中間コード画像データ保持手段内の１ないし複数の中間コード画像データを相互に関連づける管理情報により管理することを特徴とするものである。このとき、イメージデータ管理手段は、前記イメージデータ部分を入力解像度で管理し、中間コード画像データ管理手段は、前記イメージデータ部分の少なくとも一部が出力解像度に合わせて描画される領域に対して生成された１ないし複数の中間コード画像データを管理するように構成することができる。さらに、前記イメージデータ管理手段によって管理している１ないし複数の前記イメージデータ部分をページ単位で管理するとともに前記イメージデータ保持手段の領域管理を行う総イメージデータ管理手段を設けることができる。
【００１６】
このように本発明では、イメージデータ管理手段が管理情報によって、イメージデータ部分と、そのイメージデータ部分の少なくとも一部を描画する領域に対応付けて生成された１ないし複数の中間コード画像データを相互に関連づけている。上述のように、複数のイメージコマンドが存在する場合や、イメージデータがバンドをまたぐことにより複数の中間コード画像データが生成された場合において、中間コード画像データを生成する途中のメモリ不足が発生する場合がある。また、レンダリング処理直前における描画時間予測において描画時間が出力装置における記録時間に間に合わないバンドが存在する場合がある。このような場合に、イメージデータに対して間引き／圧縮などの操作を加える。本発明では、このようなイメージデータに対する操作を加えた場合でも、イメージデータ部分と中間コード画像データ相互の関連づけによって、修正された情報を中間コード画像データに迅速に反映することができる。これにより、例えば拡大処理におけるバンド境界の補正値や、レンダリング処理をハードウェアで実行させる場合でのイメージデータのＤＭＡ転送量を正確に得ることが可能となり、画質を向上させ、また処理速度を高速化することができる。さらに、限られたメモリ量で複数のイメージコマンドに対応可能となる。
【００１７】
【発明の実施の形態】
図１は、本発明の画像処理装置の実施の一形態を示すブロック図である。図中、１１は画像処理装置、１２は上位処理部、１３は予測データ採取部、１４は中間コード画像データ保持ブロック管理部、１５は総イメージデータ管理部、１６は予測処理部、１７は中間コード画像データ保持ブロック保持部、１８はイメージデータ管理部、１９はイメージデータ／圧縮コード保持部、２０は重畳図形処理部、２１は圧縮処理部、２２は間引き処理部、２３はレンダリング処理部、２４，２５はバンドバッファである。本発明の画像処理装置１１は、ネットワークあるいは外部ディスクなどから、例えばＰＤＬ（ページ記述言語）などで記述されたデータが入力画像情報として与えられ、入力描画情報をバンド毎の中間コード画像データに変換し、変換された中間コード画像データをバンド毎にビットマップデータに展開しつつ、順次出力装置へ送出するものである。その構成として、画像処理装置１１、上位処理部１２、予測データ採取部１３、中間コード画像データ保持ブロック管理部１４、総イメージデータ管理部１５、予測処理部１６、中間コード画像データ保持ブロック保持部１７、イメージデータ管理部１８、イメージデータ／圧縮コード保持部１９、重畳図形処理部２０、圧縮処理部２１、間引き処理部２２、レンダリング処理部２３、バンドバッファ２４，２５等を有している。
【００１８】
上位処理部１２は、与えられた入力画像情報を１語１語解釈し、描画オブジェクト（グラフィックス、フォント、イメージなど）を表現するデータである場合には、その位置情報から対応するバンド番号を割り出し、バンド毎の中間コード画像データに変換する。変換した中間コード画像データは、中間コード画像データ保持ブロック管理部１４に渡される。また、描画オブジェクトがイメージである場合には、イメージデータが総イメージデータ管理部１５に渡される。
【００１９】
予測データ採取部１３は、上位処理部１２で中間コード画像データが作成された時に、予測処理部１６でレンダリング処理時間を予測する際のデータを採取する。
【００２０】
中間コード画像データ保持ブロック管理部１４は、上位処理部１２で変換した中間コード画像データをバンド毎に中間コード画像データ保持ブロック保持部１７に保持させて管理する。ここで、中間コード画像データが生成される毎に中間コード画像データ保持ブロック保持部１７のメモリ領域の獲得を行っていると、メモリ領域の断片化が発生しやすく、メモリ使用効率が悪くなる。そのため、一定サイズのブロック（以降、中間コード画像データ保持ブロックと呼ぶ）を複数事前に用意し、この中間コード画像データ保持ブロックごとに中間コード画像データ保持ブロック保持部に対してメモリ領域の獲得あるいは解放を行う。
【００２１】
図２は、中間コード画像データ保持ブロック管理部１４において中間コード画像データを管理する際のデータ構造の一例の説明図、図３は、同じく中間コード画像データのデータ構造の一例の説明図である。図２（Ａ）に示すように、中間コード画像データ保持ブロックはバンド単位で管理されている。同一バンドの中間コード画像データ保持ブロック同士は獲得した順序で双方向リンクにより連結され、また各バンドにおいて最初に獲得した中間コード画像データ保持ブロックとバンド管理情報とが双方向リンクにより連結されている。なお、中間コード画像データ保持ブロックの使用効率を高めるため、描画オブジェクトが存在しないバンドに対しては中間コード画像データ保持ブロックは与えない。また、中間コード画像データ保持ブロックは、必要になった時点で獲得し、双方向ポインタなどで連結して使用する。
【００２２】
バンド管理情報は、図２（Ｂ）に示すように、先頭の中間コード画像データ保持ブロックへのポインタや、後述する重畳図形処理部２０による重畳図形処理を行って重なりがないことが保証されているか否かを示す重なり情報などを含んでいる。
【００２３】
中間コード画像データ保持ブロックは、図２（Ｃ）に示すように、管理情報領域と中間コード画像データ保持領域を有している。管理情報領域には、バンド管理情報あるいは手前の中間コード画像データ保持ブロックを指し示すポインタや後続の中間コード画像データ保持ブロックを指し示すポインタなどを含んでいる。中間コード画像データ保持領域には、中間コード画像データが格納される。なお、そのデータ量を黒く塗り潰して示しており、中間コード画像データ保持領域がすべて黒く塗り潰されている場合には、その中間コード画像データ保持ブロックにはそれ以上の中間コード画像データが格納できないことを示している。実際には一杯となっても中間コード画像データ保持領域に隙間が発生することもあるが、ここではそのような隙間の発生は省略している。
【００２４】
中間コード画像データは、図２（Ｄ）に示すように、管理情報領域とエッジ情報領域を有している。特にイメージの中間コード画像データの管理情報領域には、図３（Ａ）に示すように、描画オブジェクトＩＤ、イメージデータ管理部１８の管理情報へのアドレス、各色ごとのイメージデータまたは圧縮コードが格納されているイメージデータ／圧縮コード保持部１９内のアドレスとそのデータサイズ、その他のパラメータが格納される。このうち、描画オブジェクトＩＤは、イメージデータ／圧縮コード保持部１９に格納されているデータがイメージデータであるのかあるいは圧縮された圧縮コードであるのかの別、及び、イメージデータである場合に拡大の必要の有無を示している。例えばイメージデータで拡大の必要がない場合を‘０’、間引きされていて拡大する必要のあるイメージデータの場合を‘１’，圧縮コードの場合を‘２’等とすることができる。
【００２５】
エッジ情報は、イメージデータを出力解像度で描画する際の当該バンドにおける各ラインごとの始点とその幅の情報を保持したものである。例えば図３（Ｂ）において黒く塗り潰した形状のイメージデータが与えられているとき、図３（Ｃ）に示すようなエッジ情報が中間コード画像データのエッジ情報領域に格納される。このようなエッジ情報の作成方法については、従来と同様であるのでここでは説明を省略する。
【００２６】
図１に戻り、総イメージデータ管理部１５は、上位処理部１２から渡されるイメージコマンドのイメージデータ部分をイメージデータ／圧縮コード保持部１９に格納するとともに、イメージデータ管理部１８に当該イメージデータ部分の管理情報を作成させる。総イメージデータ管理部１５は、このようにしてイメージデータ管理部１８がイメージデータ部分毎に作成した管理情報及び管理リストによって管理し、これによってイメージデータ管理部１８が管理する１ないし複数のイメージデータ部分をページ単位で管理する。さらに総イメージデータ管理部１５は、レンダリング処理部２３の処理の軽減を図るため、色空間変換／色補正処理、および回転がある場合の回転処理を入力解像度の状態で先に実行することができる。これらの処理を行う場合は、使用可能なメモリ量を考慮してライン単位で行い、順次、結果をイメージデータ／圧縮コード保持部１９に格納する。ただし、レンダリング処理部２３において、色空間変換／色補正処理あるいは回転処理をサポートしている場合には、これらの処理は省略してもよい。さらに、圧縮処理部２１で圧縮処理された圧縮コードや、間引き処理部２２で間引き処理されたイメージデータのイメージデータ／圧縮コード保持部１９への格納及びイメージデータ管理部１８の管理情報などへのデータ修正、さらには中間コード情報データ保持ブロック管理部１４への中間コード情報データの修正依頼などを行う。
【００２７】
図４は、総イメージデータ管理部１５における管理情報のフォーマットの一例の説明図である。総イメージデータ管理部１５の管理情報としては、図４（Ａ）に示すように、イメージデータ／圧縮コード保持部１９を管理するために、イメージデータ／圧縮コード保持部１９の先頭アドレス及び総サイズと、未使用領域の先頭アドレスを有している。これらについては図４（Ｂ）にその関係を示している。また、管理情報としてイメージデータ管理部１８が各イメージデータを管理するための管理情報を指し示す管理リストのうち、先頭の管理リストのアドレスを有している。このアドレス情報によって、イメージデータ管理部１８の管理リストを介して各イメージデータの管理情報を参照することが可能である。
【００２８】
図１に戻り、予測処理部１６は、予測データ採取部１３が中間コード画像データ作成時に採取したデータをもとに、レンダリング処理部２３によるレンダリング処理時間が出力装置の記録速度に間に合うか否かの判定を行う。記録速度に間に合わないバンドが存在し、そのバンドのバンド管理情報中の重なり情報が重なりがある状態の場合には、重畳図形処理部２０で重畳図形処理を行う。それでもレンダリング処理時間が記録時間に間に合わない場合、あるいは重なり情報が重なりがない状態を示している場合には、例えば例外処理として事前に別の領域に確保したバンドバッファ領域に展開するなどして、必ず記録速度に間に合うようにする。
【００２９】
中間コード画像データ保持ブロック保持部１７は、例えば図２に示す中間コード情報データ保持ブロックを保持する。もちろん、バンド管理情報などについても保持してもよい。
【００３０】
イメージデータ管理部１８は、イメージデータ／圧縮コード保持部１９に保持されているイメージデータごとに管理情報により管理しており、この管理情報は管理リストによってページ単位で連結されている。また、当該イメージデータに対応する中間コード情報データを管理するための中間コード画像データ管理リストを保持しており、管理情報と中間コード画像データ管理リストによって、イメージデータ／圧縮コード保持部１９内のイメージデータと、そのイメージデータ部分の少なくとも一部を描画する領域に対応付けて生成された中間コード画像データ保持ブロック保持部１７内の１ないし複数の中間コード画像データを相互に関連づけている。
【００３１】
図５は、イメージデータ管理部１８において管理する管理リストのフォーマットの一例の説明図、図６は、同じく管理情報のフォーマットの一例の説明図、図７は、同じく中間コード画像データ管理リストのフォーマットの一例の説明図である。管理リストは各管理情報に対して生成され、図５（Ａ）に示すように、次の管理リストのアドレスと管理情報のアドレスを有している。この管理リストによって、複数のイメージデータが存在する場合には図５（Ｂ）に示すように管理リストが連結されるため、それら複数のイメージデータを管理することができる。
【００３２】
管理情報は、図６（Ａ）に示すように、イメージデータ状態ＩＤと、イメージデータ状態パラメータ、総イメージデータ管理部の管理情報のアドレス、それぞれの色ごとのイメージデータあるいは圧縮コードが保持されているイメージデータ／圧縮コード保持部１９のアドレスと総データサイズ、イメージデータの入力解像度における高さと幅、出力解像度における高さと幅、描画位置情報（オフセットＸ、Ｙ）、それに先頭の中間コード画像データ管理リストのアドレスなどの情報を有している。
【００３３】
イメージデータ状態ＩＤは、イメージデータ／圧縮コード保持部１９に格納されているデータがイメージデータなのかあるいは圧縮コードなのか、及び、イメージデータであれば拡大の必要の有無、圧縮コードであればバンド全体の圧縮であるのか否かなどの状態を示している。例えばイメージデータで拡大の必要がない場合を‘０’、間引き処理されたイメージデータで拡大の必要がある場合を‘１’、圧縮コードでバンド全体を圧縮している場合を‘２’、圧縮コードでその他の場合を‘３’とすることができる。もちろんこれに限られるものではない。イメージデータ状態パラメータは、イメージデータの解像度や、圧縮されている場合にはその圧縮率などの情報が格納されている。総イメージデータ管理部の管理情報のアドレスは、イメージデータの管理情報から総イメージデータ管理部１５の管理情報をアクセスするために用いられる。それぞれの色ごとのイメージデータあるいは圧縮コードが保持されているイメージデータ／圧縮コード保持部１９のアドレスと総データサイズは、図６（Ｂ）に示すように、各色ごとに格納されているデータの先頭アドレスとデータサイズが格納されている。イメージデータの入力解像度における高さと幅は、実際にイメージデータ／圧縮コード保持部１９に格納されているイメージデータの大きさに対応し、また、出力解像度における高さと幅、描画位置情報（オフセットＸ、Ｙ）は、レンダリング処理の際に描画される大きさ及び位置を示すもので、それぞれ、図６（Ｃ）に示すものである。先頭の中間コード画像データ管理リストのアドレスは、当該イメージデータが複数のバンドに跨っているとき、そのイメージデータに対応した中間コード画像データが複数生成される。この複数の中間コード画像データをイメージデータと対応付けるためのものである。
【００３４】
中間コード画像データ管理リストは、図７（Ａ）に示すように、次の中間コード画像データ管理リストのアドレスと、バンド内の開始ライン及び終了ライン、それに、中間コード画像データのアドレスを含んでいる。次の中間コード画像データ管理リストのアドレスによって、図７（Ｂ）に示すように、中間コード画像データ管理リストは連結され、中間コード画像データが複数存在していても１つのイメージデータに対応付けることができる。また、中間コード画像データのアドレスによって、図７（Ｂ）に示すように、例えば図２に示したような中間コード画像データ保持ブロック中の中間コード画像データとイメージデータとを対応付けることができる。
【００３５】
また、上述のようにイメージデータ管理部１８はバンド境界を意識せずにイメージデータを管理しており、これによりイメージデータ管理部１８の管理情報中のイメージデータに関する位置情報（オフセットＸ、オフセットＹ、高さ、幅）はページの原点を基準にした値を持つ。これに対して中間コード画像データのイメージデータに関する位置情報は、図３に示すように、各バンドの原点を基準にした値であり、また一つのイメージデータから複数のイメージの中間コード画像データが作成される場合がある。そのため、それぞれの中間コード画像データ管理リストに、ページの原点を基準にした対応する中間コード画像データが表現するイメージデータのＹ座標の始点と終点の値（Ｙ始点、Ｙ終点）を設定可能に構成している。
【００３６】
イメージデータ／圧縮コード保持部１９は、総イメージデータ管理部１５によってその領域が管理されており、イメージデータを保持し、また圧縮処理部２１でイメージデータが圧縮処理された場合には圧縮コードを保持する。
【００３７】
重畳図形処理部２０は、描画オブジェクトの重なりをなくす処理を行う。上位処理部１２における１ページ分のＰＤＬから中間コード画像データへの変換処理途中において、中間コード画像データを保持する中間コード画像データ保持ブロックが枯渇した場合、中間コード画像データ保持ブロックを回収する必要がある。そのため、中間コード画像データ保持ブロック管理部１４によってこの重畳図形処理部２０が起動される。あるいは、レンダリング処理直前において、レンダリング処理時間の予測値が出力装置の記録時間に間に合わない場合にも起動される。
【００３８】
重畳図形処理部２０は、重畳図形処理を行っておらず、かつ中間コード画像データ保持ブロックが多いバンド、あるいはメモリ書込み量の多いバンドなどを処理対象として、バンド単位で重畳図形処理を行う。重畳図形処理は、処理対象のバンドについて、そのバンドで生成された全ての中間コード画像データに対し、生成順とは逆に一つ一つ重なり具合を調べてゆく。そして、重ならない部分が残る場合には、再度中間コード画像データに戻す。このような処理を繰り返すことにより、描画オブジェクトの重なりを無くすことができる。通常、重畳図形処理後においては、中間コード画像データの総データ量は処理前と比較して小さくなるため、中間コード画像データ保持ブロックの一部が不要となる。不要となった中間コード画像データ保持ブロックは中間コード画像データ保持ブロック管理部１４により回収されて再利用される。また、この重畳図形処理によって描画オブジェクトの重なりがなくなることから、レンダリング処理時間を短縮することができる。
【００３９】
なお、この重畳図形処理によって中間コード画像データの先頭アドレスの値が変わるので、オブジェクトの種類がイメージの場合には、イメージの中間コード画像データのアドレスを保持する中間コード画像データ管理リストのアドレス値の更新を行う。また、他の描画オブジェクトとの重なり具合によっては、イメージの中間コード画像データの描画領域が削減される場合がある。このような場合には、中間コード画像データ管理リスト中のＹ始点、Ｙ終点の値についても更新する。
【００４０】
圧縮処理部２１は、イメージデータ／圧縮コード保持部１９の領域が枯渇した場合に、その領域の回収を目的として起動され、既にイメージデータ／圧縮コード保持部１９に格納されているイメージデータに対して圧縮処理を行う。あるいは、中間コード画像データ保持ブロック保持部１７の中間コード画像データ保持ブロックが枯渇し、重畳図形処理部２０による重畳図形処理を行っても中間コード画像データ保持ブロックが回収できない場合に、あるバンドの中間コード画像データをすべてバンドバッファに展開した後に、そのバンドバッファ内のイメージデータに対して圧縮を行う。これによって多数の描画オブジェクトに対する中間コード画像データは圧縮コードに対する中間コード画像データのみとなり、大幅に中間コード画像データを削減して中間コード画像データ保持ブロックを回収することができる。
【００４１】
間引き処理部２２は、イメージデータ／圧縮コード保持部１９の領域が枯渇したとき、その領域の回収を目的として起動される。すでにイメージデータ／圧縮コード保持部１９に格納されているイメージデータ（拡大必要なし／あり）に対して間引き処理（解像度変換）を行う。間引き処理後、イメージデータを間引いたことにより捻出した領域を未使用領域として回収可能とする。イメージデータを間引いたことにより捻出した未使用領域は、処理対象となったイメージデータがイメージデータ／圧縮コード保持部１９の領域の最後尾である場合を除き、イメージデータ／圧縮コード領域の使用領域の途中に存在する。そのため、この未使用領域をイメージデータ／圧縮コード保持部１９の領域の最後尾に移動しておくとよい。
【００４２】
レンダリング処理部２３は、バンドバッファ２４あるいはバンドバッファ２５をクリアした後に、対応するバンドのバンド管理情報から先頭の中間コード画像データ保持ブロックのアドレスを得て、中間コード画像データ保持ブロックを順に読み込み、その中に保持されている中間コード画像データの解釈を行う。そして、ビットマップデータをバンドバッファ２４あるいはバンドバッファ２５へ書き込む。
【００４３】
バンドバッファ２４，２５は、レンダリング処理部２３でレンダリング処理を行った結果得られる１バンド分のビットマップデータを格納する。このバンドバッファ２４，２５は交代バッファとして用いられ、一方にレンダリング処理結果が書き込まれているとき、他方に書き込まれたビットマップデータが出力装置に対して転送される。もちろん、バンドバッファを３つ以上設けてもよい。
【００４４】
図８は、総イメージデータ管理部１５，イメージデータ管理部１８，中間コード画像データ保持ブロック管理部１４で管理される各情報の関係の一例を示す説明図、図９は、図８に示すデータ構造によって管理されるイメージデータの一例の説明図である。図中、３１は総イメージデータ管理部１５で管理される管理情報、３２，３３はイメージデータ管理部１８で管理される管理リスト、３４，３５はイメージデータ管理部１８で管理される管理情報、３６〜３８は中間コード画像データ管理リスト、３９〜４１は中間コード画像データである。ここでは、図９に示すような２つのイメージデータ部分を含むコマンドが入力描画情報として入力されたものとする。図９における左側のイメージデータは２つのバンドに跨って描画されるものであり、それぞれ▲１▼、▲２▼として各バンドの部分を示している。また、右側のイメージデータはバンド内に収まっており、これを▲３▼として示している。なお、これらのイメージデータの各部分に相当するデータについては、なるべく▲１▼〜▲３▼の符号を付して示している。
【００４５】
イメージデータ／圧縮コード保持部１９には、図９に示した▲１▼及び▲２▼のイメージデータが１つのイメージデータとして入力解像度のまま格納される。また、▲３▼のイメージデータについては、圧縮処理を受けて圧縮コードとして格納されているものとして図８に示している。総イメージデータ管理部１５の管理情報３１は、このイメージデータ／圧縮コード保持部１９の先頭アドレス及び未使用領域アドレスを保持している。
【００４６】
また、図９の左側に示した▲１▼，▲２▼のイメージデータに対応してイメージデータ管理部１８の管理情報３４が設けられ、また図９の右側に示した▲３▼のイメージデータに対応してイメージデータ管理部１８の管理情報３５が設けられる。さらに、それぞれのイメージデータ管理部１８の管理情報３４，３５に対応してイメージデータ管理部１８の管理リスト３２，３３が設けられ、イメージデータ管理部１８の管理リスト３２の次の管理リストのアドレスによって、イメージデータ管理部１８の管理リスト３３が連結されている。さらに、イメージデータ管理部１８の管理リスト３２のアドレスが総イメージデータ管理部１５の管理情報３１中に格納されており、総イメージデータ管理部１５の管理情報３１からイメージデータ管理部１８の管理リスト３２、３３を介してイメージデータ管理部１８の管理情報３４，３５が参照可能に構成されている。
【００４７】
イメージデータ管理部１８の管理情報３４には、イメージデータ／圧縮コード保持部１９内のイメージデータ▲１▼、▲２▼のそれぞれの色ごとの先頭アドレスが格納されるとともに、先頭の中間コード画像データ管理リスト３６のアドレスが格納されている。中間コード画像データは各バンド毎に生成されるため、１つのイメージデータでも例えば図９の左側の図形では▲１▼の部分と▲２▼の部分の２つの中間コード画像データが生成される。ここでは、▲１▼の部分に対応して中間コード画像データ３９が、▲２▼の部分に対応して中間コード画像データ４０が生成されている。中間コード画像データ管理リストについても、生成される中間コード画像データ毎に生成されている。ここでは、中間コード画像データ管理リスト３６はイメージデータ▲１▼に対応して生成され、中間コード画像データ３９のアドレスを有している。また、中間コード画像データ管理リスト３７はイメージデータ▲２▼に対応して生成され、中間コード画像データ４０のアドレスを有している。そして、中間コード画像データ管理リスト３６に中間コード画像データ管理リスト３７のアドレスを保持し、中間コード画像データ管理リスト３６，３７を連結している。これによって、イメージデータ管理部１５の管理情報から、当該イメージデータに対応して生成されている中間コード画像データを、中間コード画像データ管理リストを介して参照できるように構成されている。また、中間コード画像データ３９，４０にも、対応するイメージデータ管理部１５の管理情報３４を参照するためのアドレスが格納されている。
【００４８】
同様に、イメージデータ管理部１８の管理情報３５には、イメージデータ／圧縮コード保持部１９内のイメージデータ▲３▼（ここでは圧縮コード）のそれぞれの色ごとの先頭アドレスが格納されるとともに、先頭の中間コード画像データ管理リスト３８のアドレスが格納されている。この場合には、中間コード画像データ４１は１つだけ生成されており、それに対応して中間コード画像データ管理リスト３８が１つだけ生成されている。そして、中間コード画像データ管理リスト３８には中間コード画像データ４１のアドレスが格納されており、イメージデータ管理部１５の管理情報３５から中間コード画像データ４１が参照可能に構成されている。また、中間コード画像データ４１にも、対応するイメージデータ管理部１５の管理情報３５を参照するためのアドレスが格納されている。
【００４９】
このようなデータ構造によって、イメージデータをバンド毎に分割せずに管理するとともに、バンド毎に生成されている中間コード画像データとの対応を図り、さらにそれぞれの管理情報を容易に参照可能に構成している。以下に説明するように、このようなデータ構造によって、圧縮処理部２１や間引き処理部２２によりイメージデータの間引き処理や圧縮処理を行った場合にも、迅速にその修正内容を中間コード画像データに反映できるし、逆に例えば重畳図形処理部２０で中間コード画像データに対して重畳図形処理を施した場合でも、その情報をそれぞれの管理情報に反映することができる。
【００５０】
以下、本発明の画像処理装置の実施の一形態における動作の一例について説明してゆく。図１０は、本発明の画像処理装置の実施の一形態における動作の一例の概要を示すフローチャートである。ネットワークあるいは外部ディスクなどからＰＤＬ（ページ記述言語）等によって記述された入力画像情報が与えられると、まずＳ５１において、上位処理装置１２により１語１語解釈が行われる。Ｓ５２において、入力画像情報が描画オブジェクト（グラフィックス、フォント、イメージなど）を表現するデータであるか否かを判断し、描画オブジェクトである場合には以下のＳ５３〜Ｓ６０の処理を行う。なお、入力画像情報が描画オブジェクトでない場合にはＳ６１へ進む。
【００５１】
描画オブジェクトについては、その位置情報から対応するバンド番号を割り出し、バンド毎に中間コード画像データに変換を行う。このとき、Ｓ５３においてイメージの描画オブジェクトか否かを判断し、イメージの描画オブジェクトについてはＳ５９及びＳ６０の処理を、グラフィックスやフォントなどのイメージ以外の描画オブジェクトの場合にはＳ５４〜Ｓ５８の処理を行う。
【００５２】
イメージ以外の描画オブジェクトの場合には、その描画オブジェクトが跨る各各バンド毎に、Ｓ５４とＳ５８で挟まれているＳ５５〜Ｓ５７の処理を行う。なお、Ｓ５４における上隅を切り欠いた矩形と、Ｓ５８における下隅を切り欠いた矩形とが対応し、この間の処理を繰り返すことを示している。以下の図においても同様である。ここでは１番目のバンドからｍ番目のバンドまでについて、Ｓ５５〜Ｓ５７の処理を繰り返すことになる。
【００５３】
Ｓ５５において、まず中間コード画像データ保持ブロック管理部１４に対して中間コード画像データを格納するための領域を検査する処理（格納領域検査処理）を行わせる。この格納領域検査処理については後述する。ここで、すでに獲得している中間コード画像データ保持ブロックに格納領域が残っていればよいが、新たな中間コード画像データ保持ブロックが必要な場合には、中間コード画像データ保持ブロックを中間コード画像データ保持ブロック格納部１４から獲得する。さらにことのき、中間コード画像データ保持ブロックが枯渇していて取得できない場合には、重畳図形処理部２０による重畳図形処理を行って中間コード画像データ保持ブロックを回収してから、改めて中間コード画像データ保持ブロックの獲得を行うことになる。
【００５４】
このようにして中間コード画像データを格納する領域をチェックした後、Ｓ５６において、上位処理部１２は入力された描画オブジェクトによって描画される位置の情報から当該バンドの中間コード画像データを生成する。そして生成された中間コード画像データを中間コード画像データ保持ブロック管理部１４に渡し、中間コード画像データ保持ブロック保持部１７の中間コード画像データ保持ブロックに格納する。
【００５５】
さらに、Ｓ５７において、レンダリング処理時間の予測を行うためのデータ採取が行われる。レンダリング処理時間の予測を行うためのデータ採取は、中間コード画像データが生成されたときに行うことが最も効率的である。そのため、中間コード画像データの生成直後のＳ５７において、予測データ採取部１３によって予測データの採取を行う。
【００５６】
このようにＳ５４及びＳ５８間のＳ５５〜Ｓ５７の処理を、描画オブジェクトが跨る各バンドについて繰り返して実行してゆく。１つの描画オブジェクトについての処理終了したら、Ｓ６１へ進む。
【００５７】
Ｓ５３で描画オブジェクトがイメージであると判断された場合には、Ｓ５９におけるイメージデータ管理部１８の管理情報などの生成処理と、Ｓ６０におけるイメージの中間コード画像データ生成処理を行う。描画オブジェクトがイメージである場合には、イメージデータがイメージコマンドと一緒に上位処理部１２に入力される。このイメージデータの解像度は出力装置の解像度（４００ｄｐｉとか６００ｄｐｉ相当）とは無関係であり、スキャナなどにより取り込まれた解像度（７２ｄｐｉとか２００ｄｐｉ）のままであることが多い。またこれにより、複数のイメージコマンドが存在するドキュメントの場合、それぞれのイメージデータの解像度はまちまちの値となる。そのため、レンダリング処理部２３において拡大機能がサポートされていない場合には、イメージコマンド解釈時にイメージデータを出力解像度に合わせて拡大する必要がある。しかし、例えばイメージデータの内容がカラーで出力装置の解像度が４００ｄｐｉとか６００ｄｐｉの場合には多大なメモリを必要とすることになる。ここでは、レンダリング処理部２３は、拡大機能および伸長機能を持つものとし、イメージデータは入力解像度のままイメージデータ／圧縮コード保持部１９に保持する。そして、総イメージデータ管理部１５の管理情報の更新を行うとともに、そのイメージデータを管理するための情報として、イメージデータ管理部１８の管理リスト、管理情報、中間コード画像データ管理リストなどを生成することになる。このＳ５９におけるイメージデータ管理部の管理情報生成処理については後述する。
【００５８】
さらにＳ６０において、出力解像度に合わせたイメージデータが描画されるライン毎の位置情報をバンド単位に中間コード画像データを生成する。上述のように、中間コード画像データはバンド毎に一定サイズの中間コード画像データ保持ブロックに保持されるので、イメージ以外の描画オブジェクトの場合と同様に中間コード画像データを作成する前に格納領域のチェックを行う。バンドで最初の中間コード画像データの場合や現在使用中の中間コード画像データ保持ブロックの未使用格納領域が中間コード画像データの管理情報サイズ以下の場合には新たにブロックの獲得を行い、格納領域の確保が保証された後に中間コード画像データの管理情報の生成および初期化を行う。そして、例えば図３に示したように、出力解像度に合わせたイメージデータが描画されるライン毎の位置情報をエッジリストに変換し、図２に示した中間コード画像データのエッジ情報として中間コード保持ブロックに順次格納する。なお、イメージが描画される形状として任意図形を想定しており、中間コード画像データの総エッジ情報のサイズは事前にはわからないので、エッジリストを生成する毎に格納領域のチェックを行い、格納できない場合には新たに中間コード画像データを生成し、残りのラインに対してエッジリストの作成を行う。これにより一つのイメージデータに対して、同一バンド内において複数のイメージの中間コード画像データが生成されることになる。さらに、このような複数のイメージの中間コード画像データをイメージデータ管理部１８が容易に管理できるように、図７に示したような中間コード画像データ管理リストを生成し、イメージデータ管理部１８に登録を行う。さらに、イメージデータ管理部１８が管理する管理情報中の位置情報（オフセットＸ、オフセットＹ、高さ、幅）などについての更新も行う。また、予測データ採取部１３による予測データの採取も行う。
【００５９】
このようにして１つの描画オブジェクトについての処理を終えたら、Ｓ６１において、入力画像情報が終了したか否かを判定し、まだ入力画像情報が存在する場合にはＳ５１へ戻って処理を繰り返す。１ページ分の入力画像情報について、中間コード画像データへの変換処理が終了したら、以降の予測及びレンダリング処理を行う。
【００６０】
Ｓ６２では、レンダリング処理の前に、予測処理部１６において各バンドのレンダリング処理速度がバンド当たりの記録速度に間に合うか否かの判定を行う。ここで、レンダリング処理速度が記録速度に間に合わないバンドが存在し、そのバンドのバンド管理情報中の重なり情報フィールドの値が重なりがある状態（０）の場合には、予測処理部１６は重畳図形処理部２０を起動して当該バンドに対して重畳図形処理を行う。そして重畳図形処理終了後、再度、記録速度との比較を行う。また重なりがない状態（１）の場合には、重畳図形処理を行っても意味がないので、例外処理として事前に別の領域に確保したバンドバッファ領域に展開し、圧縮処理部２１による圧縮処理や間引き処理部２２による間引き処理などを施してイメージデータとしてイメージデータ／圧縮コード保持部１９に保持させる。このようにして、必ず記録速度に間に合うようにしておく。
【００６１】
このような予測処理を行った後、レンダリング処理部１８によるレンダリング処理を行う。ここではＳ６３において印刷モードを判定し、白黒モードである場合にはＳ６４〜Ｓ６６の処理を、カラーモードである場合にはＳ６７〜Ｓ７１の処理を行う。白黒モードでは、Ｓ６４及びＳ６６によって、Ｓ６５におけるバンド毎のＫについてのレンダリング処理を繰り返して行う。また、カラーモードの場合には、Ｓ６９における当該バンドの当該色のレンダリング処理を、各バンドについてＳ６８ないしＳ７０によって繰り返し実行する。また、Ｓ６７ないしＳ７１によってＫ、Ｙ、Ｍ、Ｃの各色ごとのレンダリング処理を行う。
【００６２】
レンダリング処理部２３は、バンドバッファ２４あるいはバンドバッファ２５を指定された色でクリアした後に、対応するバンドのバンド管理情報から先頭の中間コード画像データ保持ブロックのアドレスを得て、中間コード画像データ保持ブロックを順に読み込み、その中に保持されている中間コード画像データの解釈を始める。中間コード画像データがイメージ関連の場合には、図３に示したように中間コード画像データの管理情報のＩＤにイメージデータの状態が記録されている。このＩＤからイメージデータの状態を判別して、それぞれの状態に応じた処理を行う。例えばＩＤ＝０の場合には、イメージデータの解像度は出力解像度と等しく拡大の必要がないので、イメージデータ／圧縮コード領域からイメージデータを読み出し、中間コード画像データのエッジ情報でクリップを行った結果をバンドバッファ２４に書き込めばよい。またＩＤ＝１の場合には、イメージデータを出力解像度に拡大する必要があるので、レンダリング処理部２３の拡大機能によりイメージデータの拡大処理を行った後、中間コード画像データのエッジ情報でクリップを行った結果をバンドバッファ２４に書き込めばよい。さらにＩＤ＝２の場合には、イメージデータは圧縮されているので、レンダリング処理部２３の伸長機能によりイメージデータの伸長処理を行った後に、中間コード画像データのエッジ情報でクリップを行い、その結果をバンドバッファ２４に書き込めばよい。
【００６３】
そして、対象とするバンドの中間コード画像データ保持ブロックの読み込み、および中間コード画像データの解釈、およびバンドバッファ２４またはバンドバッファ２５への書込み処理が完了すると、バンドバッファの内容を出力装置へ転送する。このような処理をそれぞれのバンド毎に書き込むバンドバッファを切り替えながら行ってゆく。白黒モードであればＫについてのすべてのバンドについて繰り返し、レンダリング処理を終える。また、カラーモードであれば、各色ごとに、すべてのバンドについてのレンダリング処理を繰り返し、４色について繰り返したらすべてのレンダリング処理を終える。
【００６４】
なお、図１０ではカラーモードのレンダリング時に１色ずつすべてのバンドについてのレンダリング処理を行っているが、出力装置の構成によっては、１つのバンドについてそれぞれの色のビットマップデータが必要な場合もある。このような場合には、Ｓ６７，Ｓ７１のループを削除し、Ｓ６９のレンダリング処理において各色のビットマップデータに展開及び書込みを行えばよい。
【００６５】
次に、図１０に示した動作概要について、いくつかの処理を詳細に説明してゆく。図１１は、イメージデータ管理部の管理情報生成処理の一例を示すフローチャートである。この処理は、図１０のＳ５９で行われる処理である。イメージコマンドが上位処理部１２で解釈され、イメージコマンド中のイメージデータ部分が総イメージデータ管理部１５に送られてくる。総イメージデータ管理部１５は、受け取ったイメージデータ部分を入力解像度で一括管理するため、Ｓ８１において、イメージデータ管理部１８に当該イメージデータ部分に対応する管理情報を生成させる。生成する管理情報は、例えば図６（Ａ）に示すようなものである。生成された管理情報は、初期化される。
【００６６】
また、イメージデータ毎に生成される複数のイメージデータ管理部１８の管理情報を総イメージデータ管理部１５が容易に管理できるようにするため、Ｓ８２において、例えば図５に示すようなイメージデータ管理部管理リストを生成し、初期化を行う。
【００６７】
そしてＳ８３において、総イメージデータ管理部１５はイメージデータ／圧縮コード保持部１９の未使用領域のチェックを行う。未使用領域が少なく、イメージデータを格納することができない場合には、Ｓ８４において、後述する領域獲得処理を行ってイメージデータ／圧縮コード保持部１９の未使用領域を増加させる。
【００６８】
イメージデータ／圧縮コード保持部１９における領域の確保が保証された後、レンダリング処理部２３の処理の軽減を図るため、色空間変換／色補正処理、および回転がある場合の回転処理を入力解像度の状態で先に実行する。これらの処理は使用可能なメモリ量を考慮してライン単位で行い、順次、結果をイメージデータ／圧縮コード領域にストアする。すなわち、Ｓ８５及びＳ９０によりラインを順次選択し、選択されているラインについて、Ｓ８６で色空間変換処理や色補正処理を行い、Ｓ８７で回転の必要があると判断される場合にはＳ８８において回転処理を行う。そして、色空間変換処理や色補正処理及び必要に応じて回転処理を施したラインイメージを、Ｓ８９においてイメージデータ／圧縮コード保持部１９に格納する。なお、レンダリング処理部２３において、色空間変換／色補正処理あるいは回転処理を行う場合には、Ｓ８６〜Ｓ８８の処理を省略して、イメージデータ／圧縮コード保持部１９への格納だけを行えばよい。
【００６９】
全てのイメージデータの格納が完了した後、Ｓ９１において、イメージデータ管理部１８の管理情報に確定値を設定する。さらにＳ９２において、総イメージデータ管理部１５がイメージデータ管理部１８の管理情報にアクセスできるように、イメージデータ管理部１８の管理リストにイメージデータ管理部１８の管理情報等の確定値を設定する。ここで、Ｓ９３において１個目のイメージデータの格納であるか否かを判定し、１個目であれば、Ｓ９４において、新たに生成されたイメージデータ管理部１８の管理リストのアドレスを総イメージデータ管理部１５の管理情報に登録する。また２個目以降の場合には、Ｓ９５において、新たに生成されたイメージデータ管理部１８の管理リストのアドレスを、最後尾のイメージデータ管理部１８の管理リストに登録して、管理リストの連結を図る。
【００７０】
また、総イメージデータ管理部１５は、新たにイメージデータがイメージデータ／圧縮コード保持部１９へ格納されたことにより、例えば図４に示した総イメージデータ管理部１５の管理情報中のイメージデータ／圧縮コード保持部１９の管理情報の修正を行う。すなわち、Ｓ９６において、総イメージデータ管理部１５の管理情報の未使用領域の先頭アドレスを更新する。
【００７１】
さらに、Ｓ９７において、出力解像度に合わせたイメージデータが描画される領域に対する中間コード画像データを生成するため、中間コード画像データ保持ブロック管理部１４を起動する。このとき、イメージデータ管理部１８の管理情報のアドレスを引数として通知する。
【００７２】
このようにして、イメージの描画オブジェクトが入力された場合に、イメージデータ部分をイメージデータ／圧縮コード保持部１９に格納するとともに、総イメージデータ管理部１５の管理情報及びイメージデータ管理部１８の管理情報及び管理リストを生成及び設定を行う。
【００７３】
図１２は、イメージの中間コード画像データ生成処理の一例を示すフローチャートである。この処理は、図１０のＳ６０において実行される処理であり、上述のように図１１に示したイメージデータ管理部１８の管理情報生成処理に続いて行われる処理である。中間コード画像データ保持ブロック管理部１４は、出力解像度に合わせたイメージデータが描画されるライン毎の位置情報を、バンド単位に中間コード画像データへの変換を行う。
【００７４】
このイメージの中間コード画像データ生成処理は、Ｓ１０１及びＳ１１４で挟まれているＳ１０２乃至Ｓ１１３の処理を、イメージデータが跨るそれぞれのバンドについて繰り返して実行することによって行われる。中間コード画像データは、バンド毎に一定サイズのブロックに保持されるので、中間コード画像データを作成する前に、Ｓ１０２において中間コード画像データ保持ブロック保持部１７における格納領域のチェックを行う。バンドで最初の中間コード画像データの場合や、現在使用中の中間コード画像データ保持ブロックの未使用格納領域が中間コード画像データの管理情報サイズ以下の場合には、新たにブロックの獲得を行う。格納領域の確保が保証された後、Ｓ１０３において中間コード画像データの管理情報の生成および初期化を行う。
【００７５】
そして、上述の図３に示したように、出力解像度に合わせたイメージデータが描画されるライン毎の位置情報をエッジリストに変換し、図２に示した中間コード画像データのエッジ情報として中間コード保持ブロックに順次格納する。このような処理を、次のバンドのラインに達するまで繰り返す。次のバンドのラインに達した時点で、新たに中間コード画像データの管理情報の作成および初期化を行い、全てのラインを中間コード画像データに変換するまで処理を繰り返す。
【００７６】
ここで、イメージが描画される形状として任意図形を想定しており、中間コード画像データの総エッジ情報のサイズは事前にはわからない。従ってエッジリストを生成する毎に格納領域のチェックを行い、格納できない場合には新たに中間コード画像データを生成し、残りのラインに対してエッジリストの作成を行う。このために図１２に示す処理では完了フラグを使用し、ブロックのライン途中で格納領域が不足した場合には、中間コード画像データ保持ブロックの取得と新たな中間コード画像データの管理情報の作成および初期化を行っている。
【００７７】
具体的には、Ｓ１０４及びＳ１０７によりバンド内の各ラインごとに、Ｓ１０５における格納領域の有無の判定を行い、格納領域が存在すれば１０６において出力解像度に合わせたイメージデータが描画される当該ラインにおける位置情報をエッジリストとして生成し、中間コード画像データ保持ブロックに保持させる。バンド内の最終ラインまで処理を終えたら、Ｓ１０８において完了フラグをＯＮにする。また、途中のラインで格納領域が不足してしまった場合にはＳ１０９で完了フラグをＯＦＦにしておく。このようにして１つの中間コード画像データの処理が終了する。
【００７８】
Ｓ１１０において、生成した中間コード画像データに関する各種の管理情報の登録を行うイメージ中間コード画像データ登録処理を行う。図１３は、イメージ中間コード画像データ登録処理の一例を示すフローチャートである。Ｓ１２１において、生成した中間コード画像データに対応する中間コード画像データ管理リストを生成及び初期化し、Ｓ１２２において、その中間コード画像データ管理リストに確定値を設定する。このとき、中間コード画像データのアドレスや、当該中間コード画像データにより描画されるイメージデータ中のバンド内の位置を示すＹ始点やＹ終点などの情報を設定する。
【００７９】
ここで、Ｓ１２３において、生成されたイメージの中間コード画像データが１個目であるか否かを判定し、１個目であれば、Ｓ１２４において、新たに生成された中間コード画像データ管理リストのアドレスをイメージデータ管理部１８の管理情報に登録する。また２個目以降の場合には、Ｓ１２５において、新たに生成された中間コード画像データ管理リストのアドレスを、最後尾の中間コード画像データ管理リストに登録して、中間コード画像データ管理リストの連結を図る。
【００８０】
図１２に戻り、さらにＳ１１１において、Ｓ１０３で生成した中間コード画像データの管理情報に確定値を設定する。さらに、生成した中間コード画像データについて、Ｓ１１２において予測データ採取部１３は予測処理部１６におけるレンダリング処理時間の予測に必要な予測データを採取する。
【００８１】
Ｓ１１３において完了フラグを調べ、完了フラグがＯＦＦであれば、Ｓ１０２へ戻って、Ｓ１０２の格納領域検査処理において新たな中間コード画像データ保持ブロックの取得を行い、新たな中間コード画像データを生成することになる。このように、同じバンドにおいても複数の中間コード画像データが生成されることがある。
【００８２】
完了フラグがＯＮであれば１つのバンドについての処理を終えているので、Ｓ１０１及びＳ１１４により次のバンドの処理に移る。このようにして、各バンド毎に、１乃至複数の中間コード画像データが生成されてゆく。また、１つのイメージデータに対して生成された１ないし複数のイメージの中間コード画像データをイメージデータ管理部１８が容易に管理できるように、総イメージデータ管理部１５から得たイメージデータ管理部１８のアドレスをもとに、生成された中間コード画像データに対応してＳ１１０で中間コード画像データ管理リストの生成やイメージデータ管理部１８の管理情報の更新などが行われる。
【００８３】
このようにして、１つのイメージデータに対して１乃至複数の中間コード画像データが生成され、それに対応して中間コード画像データ管理リストが生成されて、それぞれ、イメージデータ管理部１８の管理情報と対応付けられる。これにより、イメージデータ管理部１８は、１つのイメージデータがどのように中間コード画像データにより分割管理されているのかを容易に管理することができる。また、以下の２点の効果がある。
【００８４】
まず、イメージデータ／圧縮コードのＤＭＡ転送量を正確に算出できるという効果がある。レンダリング処理部２３をハードウェアで、それ以外の機能をソフトウェアで実現した場合、中間コード画像データ保持ブロックとイメージデータ／圧縮コードをそれぞれの格納領域からＤＭＡ等でレンダリング処理部２３に転送する必要がある。その場合に、各イメージの中間コード画像データが管理するイメージデータの領域が正確に把握できるので、無駄なイメージデータの転送を防ぐことができ、レンダリング処理の高速化が得られる。
【００８５】
また、拡大処理におけるバンド境界の補正値の算出が容易になるという効果がある。イメージデータの解像度が出力解像度に等しくない場合、レンダリング処理部２３において拡大処理を行う必要がある。このとき、バンド境界の補正値を正確に算出できるので、バンドの境界での描画のずれを防止し、画質の劣化を防止することができる。
【００８６】
次に、一度生成されたイメージの中間コード画像データとすでに格納済みのイメージデータに対して修正が施される場合における説明を行う。まず、一度生成されたイメージの中間コード画像データに対して修正が施される場合として、重畳図形処理及び展開圧縮処理がある。まず、これらの処理を要求する格納領域検査処理について説明し、その後、重畳図形処理及び展開圧縮処理について説明する。
【００８７】
図１４は、格納領域検査処理の一例を示すフローチャートである。この処理は、図１０のＳ５５及び図１２のＳ１０２で実行される処理である。この格納領域検査処理によって、上位処理部１２で生成した中間コード画像データを格納するための領域をチェックする。まずＳ１３１において、中間コード画像データを格納するための中間コード画像データ保持ブロックが存在するか否かを判定する。中間コード画像データ保持ブロックが存在すれば、さらにＳ１３２において中間コード画像データを格納するだけの空き領域が残っているか否かを判定する。空き領域が残っていれば、その空き領域に中間コード画像データを格納可能であるとする。
【００８８】
このとき、新たな中間コード画像データの格納による重なり情報の更新処理も行っておく。すなわち、Ｓ１３３においてバンド管理情報中の重なり情報の値を判定し、重なりがない旨（１）を示している場合には、新たな中間コード画像データの格納によって重なりがない状態を保証できなくなるので、Ｓ１３４で重なり情報を重なりがあることを示す値（０）に更新する。重なり情報が重なりがある旨の値（０）の場合には、そのままでよい。このようにして、中間コード画像データ保持ブロックが存在し、空き領域が存在する場合のチェックを終了する。
【００８９】
Ｓ１３１において中間コード画像データ保持ブロックが存在しないと判定された場合や、Ｓ１３２において中間コード画像データ保持ブロックが存在しているものの空き領域が存在しないと判定された場合には、Ｓ１３５において、新たに中間コード画像データ保持ブロックの確保を試みる。このとき、Ｓ１３６において中間コード画像データ保持ブロックを確保できたか否かを判定する。中間コード画像データ保持ブロックを確保できた場合には、Ｓ１４２以降のポインタの登録処理に移る。
【００９０】
中間コード画像データ保持ブロックを確保できない場合には、Ｓ１３７において重畳図形処理部２０による重畳図形処理を行って重なりを排除し、中間コード画像データを削減して、不要となった中間コード画像データ保持ブロックを解放する。重畳図形処理については後述する。そしてＳ１３８において、再度、中間コード画像データ保持ブロックの確保を試みる。これによって中間コード画像データ保持ブロックを確保できたか否かをＳ１３９で判定し、確保できればＳ１４２に進む。これでも中間コード画像データ保持ブロックが確保できない場合には、Ｓ１４０においてすべてのバンドについて重畳図形処理を行ったか否かを判断し、例えばバンド管理情報の重なり情報が重なりあり（０）を示しているバンドが存在する場合には、Ｓ１３７へ戻って、そのバンドについて重畳図形処理を行う。これによって中間コード画像データ保持ブロックが確保できれば、Ｓ１４１に進む。
【００９１】
また、例えばすべてのバンドのバンド管理情報中の重なり情報が１となり、すべてのバンドについて重畳図形処理を行っている場合には、Ｓ１４１において、レンダリング処理部２３及び圧縮処理部２１による展開圧縮処理を行う。この処理は、後述するように中間コード画像データをビットマップイメージに展開してバンド単位のイメージデータを作成する。これによって多くの中間コード画像データの格納されていた領域を解放することができる。そのままではデータ量が多いので、圧縮処理部２１により圧縮し、圧縮コードとしてイメージデータ／圧縮コード保持部１９に格納する。このようにして展開圧縮処理を行うことにより中間コード画像データの多くを削除することができるので、Ｓ１３８へ戻って中間コード画像データ保持ブロックの確保を行えばよい。
【００９２】
このようにして中間コード画像データ保持ブロックが確保できたら、Ｓ１４２において、確保した中間コード画像データ保持ブロックが当該バンドで最初の中間コード画像データ保持ブロックであるか否かを判定する。最初の中間コード画像データ保持ブロックである場合には、Ｓ１４３において、確保した中間コード画像データ保持ブロックへのポインタをバンド管理情報に登録するとともに、確保した中間コード画像データ保持ブロックにバンド管理情報へのポインタを登録する。また、当該バンドにおいて最初の中間コード画像データ保持ブロックではない場合には、Ｓ１４４において、当該バンドにおける最後尾の中間コード画像データ保持ブロックに確保した中間コード画像データ保持ブロックへのポインタを登録するとともに、その中間コード画像データ保持ブロックへのポインタを確保した中間コード画像データ保持ブロックに登録する。このようにしてバンド管理情報と中間コード画像データ保持ブロック間あるいは中間コード画像データ保持ブロック同士の間で相互参照ポインタを設定し、格納領域検査処理を終える。
【００９３】
図１５は、重畳図形処理の一例を示すフローチャートである。この重畳図形処理は、図１４に示した格納領域検査処理のＳ１３７等において中間コード画像データ保持ブロックが不足している場合や、予測処理においてレンダリング処理時間が記録時間よりも長い場合などにおいて実行される。この重畳図形処理はバンド単位で処理を行い、重畳図形処理を行っておらず、かつ中間コード画像データ保持ブロックが多いバンド、あるいはメモリ書込み量の多いバンドが処理対象となる。
【００９４】
Ｓ１５１において、この重畳図形処理によって中間コード画像データは重なりがなくなることから、当該バンドのバンド管理情報中の重なり情報に‘１’を設定して、重なりがないことを示しておく。そして、Ｓ１５２及びＳ１６４において、当該バンドの中間コード画像データ保持ブロックについて、最後尾から先頭への順で、各中間コード画像データ保持ブロックについてＳ１５３〜Ｓ１６３の処理を繰り返して実行する。さらに、Ｓ１５２で選択された中間コード画像データ保持ブロックについて、Ｓ１５３及びＳ１６２において中間コード画像データ保持ブロック中の各中間コード画像データを、最後尾から先頭への順で１つずつ選択して、Ｓ１５４〜Ｓ１６１における処理を繰り返して実行する。
【００９５】
Ｓ１５４では、選択された中間コード画像データについて重なり除去処理を行う。このとき、上述のようにＳ１５２及びＳ１５３において最後尾から先頭へという選択順序によって、当該バンドで生成された全ての中間コード画像データについて、生成順とは逆に一つ一つ重なり具合を調べてゆくことができる。そして、重ならない部分が残る場合には、中間コード画像データを再生成する。この重なり除去処理については、従来より用いられている方法を適用すればよい。ここで、Ｓ１５５において、重なり除去処理により生成された中間コード画像データを中間コード画像データ保持ブロックに格納できるか否かを、上述の図１４に示した格納領域検査処理によりチェックし、中間コード画像データを格納できる領域を確保する。そしてＳ１５６において、重なりをなくした中間コード画像データを中間コード画像データ保持ブロックに格納する。
【００９６】
ここで、重なりを除去した後の中間コード画像データの再生成によって、中間コード画像データの先頭アドレスの値は変わる。そのため、描画オブジェクトの種類がイメージの場合には、イメージの中間コード画像データのアドレスを保持する中間コード画像データ管理リストのアドレス値の更新を行う必要がある。そのため、Ｓ１５７において描画オブジェクトがイメージか否かを判定し、描画オブジェクトがイメージである場合には、Ｓ１５８においてイメージデータ管理部１８の管理リスト中の中間コード画像データのアドレスを更新する。
【００９７】
さらに、描画オブジェクトがイメージの場合には、Ｓ１５４の重なり除去処理によってイメージデータの描画領域が削減されたか否かをＳ１５９で判定する。例えばイメージ上に別のイメージやグラフィックなどが描画されている場合、この重なり除去処理によってイメージの一部は描画しなくてよくなる。そのため、描画領域は削減される。このような場合には、Ｓ１６０において、イメージデータ管理部１８の中間コード画像データ管理リスト中のＹ始点及びＹ終点の情報を更新する。描画領域が削減されない場合には、Ｓ１６０の処理は不要である。なお、描画オブジェクトがイメージでない場合には、Ｓ１５８〜Ｓ１６０の処理を行わなくてよい。
【００９８】
再生成した中間コード画像データを中間コード画像データ保持ブロックに格納し、またイメージの描画オブジェクトについては中間コード画像データ管理リストの更新を行ったら、Ｓ１６１において、予測データ採取部１３による予測データの採取処理を行う。これは、重畳図形処理によって予測時間が変化するために、処理後の予測データを採取しておくものである。
【００９９】
このようなＳ１５３〜Ｓ１６２間の処理を、中間コード画像データ保持ブロック内のそれぞれの中間コード画像データについて行う。中間コード画像データ保持ブロック内のすべての中間コード画像データについて処理を行ったら、Ｓ１６３において、処理済みの中間コード画像データ保持ブロック（すなわち、重畳図形処理を行う前の中間コード画像データが格納されていた中間コード画像データ保持ブロック）を解放する。以上のようなＳ１５２〜Ｓ１６４間の処理を、重畳図形処理を行う前の中間コード画像データが格納されていたそれぞれの中間コード画像データ保持ブロックについて行い、重畳図形処理を終了する。
【０１００】
このような重畳図形処理によって描画オブジェクトの重なりを無くすことができ、通常、重畳図形処理後においては中間コード画像データが減少するため、中間コード画像データ保持ブロックの数も減少することが期待できる。そのため、未使用の中間コード画像データ保持ブロックを増加させることができる。また、描画オブジェクトの重なりがなくなることにより、レンダリング処理時間を削減することができる。
【０１０１】
また、このような重畳処理によって中間コード画像データ保持ブロック内の中間コード画像データが変化しても、それに対応してイメージデータ管理部１８の中間コード画像データ管理リストを更新することができる。
【０１０２】
図１６は、展開圧縮処理の一例を示すフローチャートである。この展開圧縮処理は、図１４のＳ１４１において実行され、中間コード画像データを保持する中間コード画像データ保持ブロックが枯渇したことによりブロックの回収を目的として重畳図形処理を起動したが、それでもブロックが回収できない場合に起動される処理である。この展開圧縮処理は、すでに生成されているあるバンドの中間コード画像データを全てバンドバッファに展開した後にバンドバッファの内容に対して圧縮を行う処理であり、バンドを単位として行われる。特に、中間コード画像データ保持ブロックが多いバンドを処理対象とすると効率がよい。
【０１０３】
Ｓ１７１及びＳ１８１で挟まれるＳ１７２〜Ｓ１８０の処理を、各色（Ｋ、Ｙ、Ｍ、Ｃ）毎に繰り返して実行する。またＳ１７１で選択した色について、Ｓ１７３で当該バンドの各中間コード画像データ保持ブロックを先頭から最後尾への順で選択し、選択した中間コード画像データ保持ブロックについて、Ｓ１７２及びＳ１７９で挟まれるＳ１７３〜Ｓ１７７の処理を行う。さらに、Ｓ１７２で選択した中間コード画像データ保持ブロックについて、Ｓ１７３で当該中間コード画像データ保持ブロック中の各中間コード画像データを先頭から順に選択し、Ｓ１７３及びＳ１７８で挟まれるＳ１７４〜Ｓ１７７の処理を行う。
【０１０４】
Ｓ１７４において、Ｓ１７１で選択された色について、Ｓ１７２で選択された中間コード画像データ保持ブロック中のＳ１７３で選択された中間コード画像データの解釈及びバンドバッファ２４または２５への書込みをレンダリング処理部２３で行う。ここで、描画オブジェクトがイメージか否かをＳ１７５で判断し、描画オブジェクトがイメージである場合には、さらにＳ１７６で最後の色（例えばＣ色）までレンダリング処理を行ったか否かを判断し、最後の色まで処理を行っていれば、Ｓ１７７において、後述する当該イメージの中間コード画像データの抹消処理を行う。これは、レンダリング処理によって中間コード画像データが不要となり、それに伴ってイメージデータ管理部１５の中間コード画像データ管理リストの修正などが必要となるために行われる。また、バンド内に収まっているイメージデータについては、そのイメージデータ自体もイメージデータ／圧縮コード保持部１９から削除することが可能である。なお、イメージの描画オブジェクトでない場合及び最後の色でない場合にはＳ１７７を行わない。
【０１０５】
このようなＳ１７４〜Ｓ１７７の処理を、中間コード画像データ保持ブロック内の各中間コード画像データについて行い、さらに各中間コード画像データ保持ブロックについて繰り返して実行する。
【０１０６】
１バンド分のすべての中間コード画像データ保持ブロックについて、すべての中間コード画像データに対するレンダリング処理を行ったら、Ｓ１８０において、圧縮処理部２１によってバンドバッファ内のイメージデータを圧縮し、圧縮コードをイメージデータ／圧縮コード保持部１９に格納する圧縮コード登録処理を行う。
【０１０７】
このような処理を、Ｓ１７１〜Ｓ１８１により各色ごとに繰り返して行う。これによって、各色ごとにレンダリング処理したイメージデータの圧縮コードがイメージデータ／圧縮コード保持部１９に登録される。
【０１０８】
このようにして１バンド分の中間コード画像データについてレンダリング処理を行ってイメージデータを生成し、圧縮して圧縮コードをイメージデータ／圧縮コード保持部１９に登録したら、Ｓ１８２において、そのとき処理したバンドのすべての中間コード画像データ保持ブロックは不要となるので解放する。これによって、中間コード画像データ保持ブロックの回収が可能になる。
【０１０９】
そして、Ｓ１８３において図１４に示した格納領域検査処理を行って、この場合には実質的に新たに中間コード画像データ保持ブロックを取得する。さらにＳ１８４で登録すべき中間コード画像データの管理情報の生成及び初期化を行い、Ｓ１８５において中間コード画像データを生成する。このとき生成する中間コード画像データの管理情報中の描画オブジェクトＩＤには、圧縮コードである旨を示す値を設定しておく。
【０１１０】
上述のように、レンダリング処理を行ったことによってイメージデータが作成されているので、Ｓ１８６において、図１３に示したイメージの中間コード画像データを登録する処理を行う。このとき、イメージデータ管理部１８の管理リスト、管理情報、中間コード画像データ管理リストなどの生成および設定や、圧縮コードをイメージデータ／圧縮コード保持部１９に登録することによる総イメージデータ管理部１５の管理情報の更新などを行う。そして、イメージデータ管理部１５の管理情報の生成等を受け、Ｓ１８７において中間コード画像データの管理情報に確定値を設定する。最後にＳ１８８において、新たに生成された中間コード画像データに対する予測データの採取を予測データ採取部１３で行って、展開圧縮処理を終える。
【０１１１】
このように、展開圧縮処理においては、中間コード画像データ保持ブロックの獲得を目的として行われるが、新たにイメージデータを生成して圧縮し、圧縮コードをイメージデータ／圧縮コード保持部１９に登録する。従って、新たなイメージデータの圧縮コードについて、総イメージデータ管理部１５、イメージデータ管理部１８における各種情報の生成及び更新を行って、圧縮コードの管理を行っている。
【０１１２】
上述の展開圧縮処理において実行するイメージデータの中間コード画像データ抹消処理及び圧縮コード登録処理について、その詳細を以下に説明する。図１７は、イメージデータの中間コード画像データの抹消処理の一例を示すフローチャートである。この処理は、図１６に示した展開圧縮処理中のＳ１７７において実行される処理である。この処理では、当該イメージの描画オブジェクトに対応する中間コード画像データからイメージデータ管理部１８の管理情報が分かるので、その管理情報で指し示される中間コード画像データ管理リストについて、Ｓ１９１及びＳ２０１により、先頭から１つずつ中間コード画像データ管理リストを選択してＳ１９２〜Ｓ２００の処理を行う。
【０１１３】
Ｓ１９１で選択された中間コード画像データ管理リストについて、Ｓ１９２で当該中間コード画像データに対応するものか否かを判定し、異なる場合にはなにもしない。選択された中間コード画像データ管理リストが当該中間コード画像データに対応するものである場合には、その中間コード画像データ管理リストも抹消の対象である。Ｓ１９３において後続の中間コード画像データ管理リストが存在するか否かを判定し、後続の中間コード画像データ管理リストがなければ最後尾の中間コード画像データ管理リストである。その場合には、Ｓ１９４において直前に中間コード画像データ管理リストが存在するか否かを判定する。直前の中間コード画像データ管理リストが存在しなければ、当該中間コード画像データ管理リストは唯一の中間コード画像データ管理リストである。また、この場合には中間コード画像データの削除によって対応するイメージデータも必要なくなる場合でもある。従ってＳ１９５において、後述するイメージデータ管理部管理情報抹消処理を行って、当該イメージデータの削除とともに、関連するすべての管理のための情報を削除する。
【０１１４】
Ｓ１９４で直前に中間コード画像データ管理リストが存在する場合には、Ｓ１９６において、直前の中間コード画像データ管理リストに後続の中間コード画像データ管理リストが存在しないことを登録し、Ｓ２００において、最後尾の当該中間コード画像データ管理リストの消去を行う。
【０１１５】
Ｓ１９３で後続の中間コード画像データ管理リストが存在すると判定された場合には、さらにＳ１９７において、直前に中間コード画像データ管理リストが存在するか否かを判定する。直前に中間コード画像データ管理リストが存在しない場合には当該中間コード画像データ管理リストが先頭である。この場合には、Ｓ１９８においてイメージデータ管理部１８の管理情報に後続の中間コード画像データ管理リストのアドレスを登録し、Ｓ２００において、先頭であった当該中間コード画像データ管理リストを消去する。
【０１１６】
Ｓ１９７で直前にも中間コード画像データ管理リストが存在する場合には、当該中間コード画像データ管理リストは中間に存在している。この場合には、Ｓ１９９において、直前の中間コード画像データ管理リストに後続の中間コード画像データ管理リストを登録し、Ｓ２００において、当該中間コード画像データ管理リストを消去する。
【０１１７】
このように、このイメージの中間コード画像データの抹消処理では、１つのイメージデータについて複数の中間コード画像データが生成されている場合には、削除の対象となっている中間コード画像データに対応する中間コード画像データ管理リストのみを削除する。また、唯一の中間コード画像データが生成されている場合には、その中間コード画像データの削除時に、次に説明するイメージデータ管理部管理情報抹消処理でイメージデータごと削除する処理を行う。
【０１１８】
図１８は、イメージデータ管理部管理情報抹消処理の一例を示すフローチャートである。この処理は、図１７に示したイメージの中間コード画像データの抹消処理におけるＳ１９５において実行される処理であり、中間コード画像データ及び中間コード画像データ管理リストの消去とともにイメージデータも消去する場合の処理である。
【０１１９】
この処理では、当該イメージの描画オブジェクトに対応する中間コード画像データからイメージデータ管理部１８の管理情報が分かり、その管理情報で指し示される総イメージデータ管理部１５の管理情報からイメージデータ管理部１８の先頭の管理リストがわかる。このイメージデータ管理部１８の管理リストについて、Ｓ２１１及びＳ２２１により、先頭から１つずつイメージデータ管理部１８の管理リストを選択してＳ２１２〜Ｓ２２０の処理を行う。
【０１２０】
Ｓ２１１で選択されたイメージデータ管理部１８の管理リストについて、Ｓ２１２で抹消の対象となっている中間コード画像データに対応したイメージデータ管理部１８の管理情報に対するものか否かを判定し、異なる場合にはなにもしない。選択された中間コード画像データ管理リストがイメージデータ管理部１８の当該管理情報に対するものである場合には、その管理リストも抹消の対象である。Ｓ２１３において後続の管理リストが存在するか否かを判定し、後続の管理リストがなければ最後尾の管理リストである。その場合には、Ｓ２１５において直前に管理リストが存在するか否かを判定する。直前の管理リストが存在しなければ、当該管理リストは唯一の管理リストである。この場合には、Ｓ２１６において、総イメージデータ管理部１５の管理情報にイメージデータ管理部１８の管理リストが存在しないことを登録し、Ｓ２２０においてイメージデータ管理部１８の当該管理リストを消去する。
【０１２１】
Ｓ２１４で直前に管理リストが存在する場合には、Ｓ２１６において、直前の管理リストに後続の管理リストが存在しないことを登録し、Ｓ２２０において、最後尾の当該管理リストの消去を行う。
【０１２２】
Ｓ２１３で後続の管理リストが存在すると判定された場合には、さらにＳ２１７において、直前に管理リストが存在するか否かを判定する。直前に管理リストが存在しない場合には当該管理リストが先頭である。この場合には、Ｓ２１８において総イメージデータ管理部１５の管理情報にイメージデータ管理部１８の後続の管理リストのアドレスを登録し、Ｓ２２０において、先頭であった当該管理リストを消去する。
【０１２３】
Ｓ２１７で直前にも管理リストが存在する場合には、当該管理リストは中間に存在している。この場合には、Ｓ２１９において、直前の管理リストに後続の管理リストを登録し、Ｓ２２０において、当該管理リストを消去する。
【０１２４】
このようにしてイメージデータ管理部１８の管理リストの抹消処理を行った後、Ｓ２２２において、対応するイメージデータ管理部１８の管理情報が最後尾であるか否かを判定する。抹消したイメージデータ管理部１８の管理リストが最後尾であった場合、すなわちＳ２１３で後続の管理リストがないと判断された場合、イメージデータ管理部１８の管理情報は最後尾である。イメージデータ管理部１８の管理情報が最後尾の場合には、イメージデータ／圧縮コード保持部１９内の対応するイメージデータも最後尾に存在するので、そのまま削除が可能である。しかし、イメージデータ管理部１８の管理情報が最後尾以外の場合には、イメージデータ／圧縮コード保持部１９に保持されている対応するイメージデータが領域の途中に存在するため、Ｓ２２３において、他のイメージデータや圧縮コードを詰めて移動させ、移動させたイメージデータや圧縮コードに対応する中間コード画像データやイメージデータ管理部１８の管理情報などの更新を行う。この処理は、イメージデータ／圧縮コード領域更新処理として後述する。
【０１２５】
そしてＳ２２４において、抹消したイメージデータ管理部１８の管理リストに対応するイメージデータ管理部１８の管理情報を消去し、Ｓ２２５において、総イメージデータ管理部１５の管理情報の管理情報中の未使用領域の先頭アドレスを更新し、イメージデータ管理部管理情報抹消処理を終える。
【０１２６】
図１９は、圧縮コード登録処理の一例を示すフローチャートである。この処理は図１６に示した展開圧縮処理において、レンダリング処理によってバンドバッファに展開された１バンド分のイメージデータを圧縮処理部２１で圧縮して、圧縮コードをイメージデータ／圧縮コード保持部１９に格納する処理である。
【０１２７】
まずＳ２３１において、最初の色のイメージデータを展開したのか否かを判定する。図１６に示す例では最初にＫ（黒）色のイメージ展開を行っているので、ここではＫ色か否かを判定する。最初の色のイメージ展開である場合には、Ｓ２３２においてイメージデータ管理部１８の管理情報の生成及び初期化を行い、Ｓ２３３において対応するイメージデータ管理部１８の管理リストの生成及び初期化を行う。なお、２番目以降の色のイメージ展開の際には、既にイメージデータ管理部１８の管理情報及び管理リストが生成されているので、Ｓ２３２及びＳ２３３の処理をスキップする。
【０１２８】
Ｓ２３４において、イメージデータ／圧縮コード保持部１９内に空き領域があるか否かを判定し、空き領域がなければＳ２３５において後述する領域獲得処理を行って、イメージデータ／圧縮コード保持部１９に空き領域を確保する。空き領域があれば、Ｓ２３５の処理を行わずにＳ２３６に進む。
【０１２９】
Ｓ２３６において、展開されているバンドバッファの内容を圧縮処理部２１によりすべて圧縮する。そしてＳ２３７において、圧縮コードをイメージデータ／圧縮コード保持部１９に格納する。圧縮コードを格納した先頭アドレスなどの確定値をＳ２３８においてイメージデータ管理部１８の管理情報に設定するとともに、Ｓ２３９においてイメージデータ管理部１８の管理リストに確定値を設定する。
【０１３０】
さらに、Ｓ２４０においてイメージデータ管理部１８の管理情報が１個目であるか否かを判定し、１個目である場合には、Ｓ２４１においてイメージデータ管理部１８の管理リストを総イメージデータ管理部１５の管理情報に登録する。２個目以降である場合には、Ｓ２４２においてイメージデータ管理部１８の管理リストを最後尾の管理リストに登録する。
【０１３１】
このようにしてイメージデータ管理部１８の管理情報及び管理リストの設定を行った後、Ｓ２４３において総イメージデータ管理部１５の管理情報中の未使用領域の先頭アドレスを更新する。さらに、Ｓ２４４において最初の色の圧縮コード登録処理であると判定されたときのみ、Ｓ２４５において、中間コード画像データ管理部１４に対してイメージデータ管理部１８の管理情報のアドレスを通知し、圧縮コード登録処理を終える。
【０１３２】
最後に、既にイメージデータ／圧縮コード保持部１９に格納されているイメージデータに対して修正を施す場合における説明を行う。まず、既にイメージデータ／圧縮コード保持部１９に格納されているイメージデータに対して修正を施す場合として間引き処理及び圧縮処理が挙げられる。まず、これらの処理を要求する領域獲得処理について説明し、その後、間引き処理及び圧縮処理について説明する。
【０１３３】
図２０は、領域獲得処理の一例を示すフローチャートである。この処理は、図１９に示した圧縮コード登録処理のＳ２３５において、圧縮コードを格納する領域がイメージデータ／圧縮コード保持部１９に空いていない場合に実行される。まずＳ２５１及びＳ２５８によってイメージデータ管理部１８の各管理リストについて順に選択し、選択された管理リストについてＳ２５２〜Ｓ２５７の処理を行う。
【０１３４】
イメージデータ管理部１８の管理情報中のイメージデータ状態ＩＤをＳ２５２においてチェックし、Ｓ２５３で間引き処理を行えるか否か、及びＳ２５５で圧縮処理を行えるか否かを判定する。間引き処理が可能であれば、Ｓ２５４において後述する間引き処理を行い、圧縮処理が可能であればＳ２５６において後述する圧縮処理を行う。Ｓ２５４の間引き処理あるいはＳ２５６の圧縮処理によってイメージデータ／圧縮コード保持部１９に空き領域ができたか否かをＳ２５７で判定し、空き領域ができれば領域獲得処理を終了して戻る。まだ十分な空き領域ができていない場合にはＳ２５８に進み、Ｓ２５１及びＳ２５８のループにより次のイメージデータ管理部１８の管理リストについて同様の処理を繰り返す。
【０１３５】
このようにしてイメージデータ管理部１８の管理リストを順次選択し、間引き処理あるいは圧縮処理を行って十分な空き領域を確保できるまで繰り返す。すべての管理リストについて処理を行った後、Ｓ２５９でイメージデータ／圧縮コード保持部１９に十分な空き領域が得られたか否かを判定し、十分な空き領域が得られていれば領域獲得処理を終了する。十分な空き領域が得られていない場合には、Ｓ２６０においてエラー処理を行う。
【０１３６】
図２１は、間引き処理の一例を示すフローチャートである。この処理は、図２０に示した領域獲得処理により、イメージデータ／圧縮コード保持部１９の空き領域が枯渇したことによる領域の回収を目的として起動される。そして、すでにイメージデータ／圧縮コード保持部１９に格納されているイメージデータ（拡大必要なし／あり）に対して間引き処理（解像度変換）を行う。
【０１３７】
Ｓ２７１及びＳ２７８に挟まれるＳ２７２〜Ｓ２７７の処理について、各色についてそれぞれ実行する。Ｓ２７２において、間引き処理の対象となっているイメージデータに対応するイメージデータ管理部１８の管理情報から、イメージデータのアドレス、総データサイズ、ソースイメージの幅及び高さを獲得する。そしてＳ２７３及びＳ２７６でイメージデータのスキャンラインを１ラインずつ選択してゆき、選択されたラインが間引かれるラインか否かをＳ２７４で調べる。間引かれるラインについてはそのままなにもせず、間引かれずに残るラインについては、Ｓ２７５において、間引かれずに残った１つ前のラインの次の領域に移動する。このようにして、間引かれるラインが抜けて間引かれないラインが詰められる。この処理をＳ２７３及びＳ２７６のループで繰り返すことによって、イメージデータの間引きを行うことができる。
【０１３８】
イメージデータの間引きを行ったら、Ｓ２７７において、間引き後のイメージデータの情報によりイメージデータ管理部１８の管理情報中のイメージデータのアドレス、総データサイズ、ソースイメージの幅及び高さを更新する。
【０１３９】
このような処理を、各色ごとに繰り返して行った後、Ｓ２７９において、イメージの中間コード画像データの更新処理を行って、変更されたイメージデータのアドレス等を中間コード画像データに設定する。
【０１４０】
Ｓ２８０において、処理対象のイメージデータがイメージデータ／圧縮コード保持部１９内の最後尾であるか否かを判定する。処理対象のイメージデータが最後尾であった場合、空いた領域はそのまま空き領域として確保できる。しかし、イメージデータがイメージデータ／圧縮コード保持部１９の最後尾ではない場合には、イメージデータ／圧縮コード保持部１９に保持されているイメージデータあるいは圧縮コードの途中に空き領域ができてしまう。そのため、Ｓ２８１において、他のイメージデータや圧縮コードを詰めて移動させ、移動させたイメージデータや圧縮コードに対応する中間コード画像データやイメージデータ管理部１８の管理情報などの更新を行う。この処理は、イメージデータ／圧縮コード領域更新処理として後述する。
【０１４１】
そしてＳ２８２において、間引き処理によってできた空き領域にもとづいて、総イメージデータ管理部１５の管理情報の管理情報中の未使用領域の先頭アドレスを更新し、間引き処理を終える。このようにして、イメージデータに対する間引き処理部２２による間引き処理によって、イメージデータ／圧縮コード保持部１９内に空き領域を生成することができる。
【０１４２】
図２２は、圧縮処理の一例を示すフローチャートである。この処理は、図２０に示した領域獲得処理により、イメージデータ／圧縮コード保持部１９が枯渇したことによる領域の回収を目的として起動される。そして、すでにイメージデータ／圧縮コード保持部１９に格納されているイメージデータ（拡大必要なし／あり）に対して圧縮処理を行う。
【０１４３】
Ｓ２９１及びＳ３０１に挟まれるＳ２９２〜Ｓ３００の処理について、各色についてそれぞれ実行する。Ｓ２９２において、圧縮処理の対象となっているイメージデータに対応するイメージデータ管理部１８の管理情報から、イメージデータのアドレス、総データサイズ、ソースイメージの幅及び高さを獲得する。そしてＳ２９３及びＳ２９９で圧縮処理の対象となっているイメージデータに対応する１ないし複数の中間コード画像データのそれぞれについて、Ｓ２９４〜Ｓ２９８の処理を行う。
【０１４４】
Ｓ２９４において、イメージデータの解像度が出力解像度であるか否かを判定する。この判定は、Ｓ２９３で選択されている中間コード画像データの描画オブジェクトＩＤが拡大の必要がない旨を示していれば、イメージデータの解像度は出力解像度である。この場合にはそのままＳ２９６へ進む。しかし、中間コード画像データの描画オブジェクトＩＤか拡大の必要がある旨を示している場合には、イメージデータの解像度は出力解像度ではない。その場合には、Ｓ２９５において、イメージデータが出力解像度となるように拡大処理してバンドバッファに展開する。この処理はレンダリング処理部２３の拡大機能を利用することが可能である。
【０１４５】
Ｓ２９６において、圧縮処理部２１によりイメージデータを圧縮し、Ｓ２９７において、１つ前の圧縮コードの次のメモリ領域に移動する。これによってイメージデータ／圧縮コード保持部１９内に空き領域を生成する。そしてＳ２９８において、イメージの中間コード画像データの更新処理を行って、変更された圧縮コードのアドレス等を中間コード画像データに設定する。
【０１４６】
このような処理を、１つのイメージデータに対応する１ないし複数の中間コード画像データのそれぞれについて行う。その後、Ｓ３００において、圧縮処理後の圧縮コードの情報によりイメージデータ管理部１８の管理情報中の圧縮コードのアドレス、総データサイズ等を更新する。
【０１４７】
このような処理を、各色ごとに繰り返して行った後、Ｓ３０２において、処理対象のイメージデータがイメージデータ／圧縮コード保持部１９内の最後尾であるか否かを判定する。処理対象のイメージデータが最後尾であった場合、空いた領域はそのまま空き領域として確保できる。しかし、イメージデータがイメージデータ／圧縮コード保持部１９の最後尾ではない場合には、イメージデータ／圧縮コード保持部１９に保持されているイメージデータあるいは圧縮コードの途中に空き領域ができてしまう。そのため、Ｓ３０３において、他のイメージデータや圧縮コードを詰めて移動させ、移動させたイメージデータや圧縮コードに対応する中間コード画像データやイメージデータ管理部１８の管理情報などの更新を行う。この処理は、イメージデータ／圧縮コード領域更新処理として後述する。
【０１４８】
そしてＳ３０４において、圧縮処理によってできた空き領域にもとづいて、総イメージデータ管理部１５の管理情報の管理情報中の未使用領域の先頭アドレスを更新し、圧縮処理を終える。このようにして、イメージデータに対する圧縮処理部２１による圧縮処理によって、イメージデータ／圧縮コード保持部１９内に空き領域を生成することができる。
【０１４９】
図２３は、イメージデータ／圧縮コード領域更新処理の一例を示すフローチャートである。この処理は、図２１に示した間引き処理のＳ２８１及び図２２に示した圧縮処理のＳ３０３において、イメージデータ／圧縮コード保持部１９の領域の途中に生成された空き領域を詰める処理を行う。
【０１５０】
Ｓ３１１及びＳ３１９において、イメージデータ管理部１８の管理リストのうち、空き領域が生成されたイメージデータの次のイメージデータに対応する管理リストから以降の管理リストについて、管理リスト（及び対応するイメージデータ）を順に選択して、Ｓ３１２〜Ｓ３１９の処理を行う。さらに、Ｓ３１２及びＳ３１８において、各色ごとにＳ３１３〜Ｓ３１７の処理を繰り返す。
【０１５１】
Ｓ３１３において、選択されている管理リスト及び色に対応するイメージデータ／圧縮コード保持部１９内のイメージデータを移動して空き領域を詰め、Ｓ３１４において、移動後の状態においてイメージデータ管理部１８の管理情報中のイメージデータあるいは圧縮コードのアドレスを更新する。また、当該イメージデータに対応する１乃至複数の中間コード画像データをＳ３１５及びＳ３１７により順次選択し、それぞれの中間コード画像データについて、Ｓ３１６において中間コード画像データのイメージデータあるいは圧縮コードのアドレスを更新する。
【０１５２】
このような処理を１つのイメージデータあるいは圧縮コードにおける各色について行い、さらに、移動させる各イメージデータあるいは圧縮コードについて繰り返す。そして、最後尾のイメージデータあるいは圧縮コードまで移動が終了したら、Ｓ３２０において、総イメージデータ管理部１５の管理情報中の未使用領域の先頭アドレスを更新し、イメージデータ／圧縮コード領域更新処理を終える。
【０１５３】
上述のように、間引き処理及び圧縮処理によってイメージデータ／圧縮コード保持部１９内のイメージデータ等に処理を施す場合でも、その情報を迅速に中間コード画像データなどに反映することができる。
【０１５４】
【発明の効果】
以上の説明から明らかなように、本発明によれば、イメージの入力画像情報を中間コード画像データとイメージデータにより管理する際に、イメージデータに対して操作（間引き／圧縮など）が加わった場合でも、修正された情報を中間コード画像データに迅速に反映することができる。例えば中間コード画像データへの変換処理途中におけるメモリ不足や、レンダリング処理直前における描画時間予測において描画時間が間に合わないバンドが存在する場合、イメージデータに対して操作（間引き／圧縮など）が必要となる。このような操作を加えた場合に、その修正された情報を中間コード画像データに迅速に反映し、また逆に中間コード画像データの変更をイメージデータの管理情報に迅速に反映することができる。このとき、複数のイメージコマンドが存在する場合や、イメージデータがバンドをまたぐことにより複数の中間コード画像データが生成された場合においても同様であり、修正された情報を迅速に中間コード画像データに反映することができる。
【０１５５】
また拡大処理におけるバンド境界の補正値を正確に算出することができ、バンドの境界における描画のずれを防止して画質を向上させることができる。さらに、レンダリング処理をハードウェアで実行させる場合などでは、イメージデータのＤＭＡ転送量を正確に得ることが可能となり、無駄な転送を防ぐことによる処理速度の高速化を図ることができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の画像処理装置の実施の一形態を示すブロック図である。
【図２】  中間コード画像データ保持ブロック管理部１４において中間コード画像データを管理する際のデータ構造の一例の説明図である。
【図３】  中間コード画像データ保持ブロック管理部１４における中間コード画像データのデータ構造の一例の説明図である。
【図４】  総イメージデータ管理部１５における管理情報のフォーマットの一例の説明図である。
【図５】  イメージデータ管理部１８において管理する管理リストのフォーマットの一例の説明図である。
【図６】  イメージデータ管理部１８において管理する管理情報のフォーマットの一例の説明図である。
【図７】  イメージデータ管理部１８において管理する中間コード画像データ管理リストのフォーマットの一例の説明図である。
【図８】  総イメージデータ管理部１５，イメージデータ管理部１８，中間コード画像データ保持ブロック管理部１４で管理される各情報の関係の一例を示す説明図である。
【図９】  図８に示すデータ構造によって管理されるイメージデータの一例の説明図である。
【図１０】  本発明の画像処理装置の実施の一形態における動作の一例の概要を示すフローチャートである。
【図１１】  イメージデータ管理部の管理情報生成処理の一例を示すフローチャートである。
【図１２】  イメージの中間コード画像データ生成処理の一例を示すフローチャートである。
【図１３】  イメージ中間コード画像データ登録処理の一例を示すフローチャートである。
【図１４】  格納領域検査処理の一例を示すフローチャートである。
【図１５】  重畳図形処理の一例を示すフローチャートである。
【図１６】  展開圧縮処理の一例を示すフローチャートである。
【図１７】  イメージデータの中間コード画像データの抹消処理の一例を示すフローチャートである。
【図１８】  イメージデータ管理部管理情報抹消処理の一例を示すフローチャートである。
【図１９】  圧縮コード登録処理の一例を示すフローチャートである。
【図２０】  領域獲得処理の一例を示すフローチャートである。
【図２１】  間引き処理の一例を示すフローチャートである。
【図２２】  圧縮処理の一例を示すフローチャートである。
【図２３】  イメージデータ／圧縮コード領域更新処理の一例を示すフローチャートである。
【符号の説明】
１１…画像処理装置、１２…上位処理部、１３…予測データ採取部、１４…中間コード画像データ保持ブロック管理部、１５…総イメージデータ管理部、１６…予測処理部、１７…中間コード画像データ保持ブロック保持部、１８…イメージデータ管理部、１９…イメージデータ／圧縮コード保持部、２０…重畳図形処理部、２１…圧縮処理部、２２…間引き処理部、２３…レンダリング処理部、２４，２５…バンドバッファ、３１…総イメージデータ管理部１５で管理される管理情報、３２，３３…イメージデータ管理部１８で管理される管理リスト、３４，３５…イメージデータ管理部１８で管理される管理情報、３６〜３８…中間コード画像データ管理リスト、３９〜４１…中間コード画像データ。
【図１】
0004525880.tif 000002
【図２】
0004525880.tif 000003
【図３】
0004525880.tif 000004
【図４】
0004525880.tif 000005
【図５】
0004525880.tif 000006
【図６】
0004525880.tif 000007
【図７】
0004525880.tif 000008
【図８】
0004525880.tif 000009
【図９】
0004525880.tif 000010
【図１０】
0004525880.tif 000011
【図１１】
0004525880.tif 000012
【図１２】
0004525880.tif 000013
【図１３】
0004525880.tif 000014
【図１４】
0004525880.tif 000015
【図１５】
0004525880.tif 000016
【図１６】
0004525880.tif 000017
【図１７】
0004525880.tif 000018
【図１８】
0004525880.tif 000019
【図１９】
0004525880.tif 000020
【図２０】
0004525880.tif 000021
【図２１】
0004525880.tif 000022
【図２２】
0004525880.tif 000023
【図２３】
0004525880.tif 000024