(57)【特許請求の範囲】
【請求項１】
画像データを第１のデータ形式でメモリに蓄積した後、前記メモリから前記画像データを読み出し第２のデータ形式に変換して出力する装置において、
前記画像データを前記第１のデータ形式でメモリに蓄積しようとする際に、前記画像データの各要素について、前記第１のデータ形式におけるデータサイズが所定の閾値を超えているか否かを判定する判定手段と、
前記判定手段の判定結果が肯定的であるとき、前記各要素を前記第１のデータ形式に代えて、前記第２のデータ形式のデータを圧縮した形式で前記メモリに格納するデータ形式変換手段と、
前記判定手段の判定結果が否定的であるとき、前記各要素を前記第１のデータ形式で前記メモリに格納する手段と、
を備えることを特徴とする装置。
【請求項２】
請求項１記載の装置において、
前記第１のデータ形式が中間コードであり、前記第２のデータ形式がビットマップデータであることを特徴とする装置。
【請求項３】
画像データを第１のデータ形式でメモリに蓄積した後、前記メモリから前記画像データを読み出し第２のデータ形式に変換して出力する装置における、前記画像データを前記メモリに蓄積する方法において、
前記画像データを前記第１のデータ形式で前記メモリに蓄積しようとする際に、前記画像データの各要素について、前記第１のデータ形式におけるデータサイズが所定の閾値を超えているか否かを判定するステップと、
前記判定のステップからの結果が肯定的であるとき、前記各要素を前記第１のデータ形式に代えて、前記第２のデータ形式のデータを圧縮した形式で前記メモリに格納し、
前記判定のステップからの結果が否定的であるとき、前記各要素を前記第１のデータ形式で前記メモリに格納するステップと、
を備えることを特徴とする方法。
【請求項４】
画像データを中間コード形式でメモリに蓄積した後、前記メモリから前記画像データを読み出しビットマップデータ形式に変換して出力する装置において、
前記画像データを前記中間コード形式で前記メモリに蓄積しようとする際に、前記画像データの各要素ついて、各要素に含まれる中間コードから予測される、各要素のビットマップデータ形式における描画面積が、所定の限界面積を超えているか否かを判定する面積限界判定手段と、
前記面積限界判定手段からの判定結果が肯定的であるとき、前記各要素を前記中間コード形式に代えて、前記ビットマップデータ形式のデータを圧縮した形式で前記メモリに蓄積するデータ形式変換手段と、
前記面積限界判定手段からの判定結果が否定的であるとき、前記各要素を前記中間コード形式で前記メモリに蓄積するデータ蓄積手段と、
を備えることを特徴とする装置。
【請求項５】
請求項４記載の装置において、
前記画像データを前記中間コード形式でメモリに蓄積しようとする際に、前記画像データの各要素について、前記中間コード形式におけるデータサイズが所定の閾値を越えているか否かを判定するサイズ限界判定手段を更に備え、
前記データ形式変換手段は、前記サイズ限界判定手段の判定結果が肯定的であるときにも、前記各要素を前記中間コード形式に代えて、前記ビットマップデータ形式のデータを圧縮した形式で前記メモリに蓄積し、
前記データ蓄積手段は、前記面積限界判定手段および前記サイズ限界判定手段のいずれの判定結果も否定的であるときに、前記各要素を前記中間コード形式で前記メモリに蓄積することを特徴とする装置。
【請求項６】
画像データを中間コード形式でメモリに蓄積した後、前記メモリから前記画像データを読み出しビットマップデータ形式に変換して出力する装置における、前記画像データを前記メモリに蓄積する方法において、
前記画像データを前記中間コード形式で前記メモリに蓄積しようとする際に、前記画像データの各要素ついて、各要素に含まれる中間コードから予測される、各要素のビットマップデータ形式における描画面積が、所定の限界面積を超えているか否かを判定する面積限界判定ステップと、
前記面積限界判定ステップからの結果が肯定的であるとき、前記各要素を前記中間コード形式に代えて、前記ビットマップ形式のデータを圧縮した形式で前記メモリに蓄積するステップと、
前記面積限界判定ステップからの結果が否定的であるとき、前記各要素を前記中間コード形式で前記メモリに蓄積するステップと、
を備えることを特徴とする方法。
【請求項７】
画像データを中間コード形式でメモリに蓄積した後、前記メモリから前記画像データを読み出しビットマップデータ形式に変換して出力する装置における、前記画像データを前記メモリに蓄積する方法において、
前記画像データを前記中間コード形式で前記メモリに蓄積しようとする際に、前記画像データの各要素ついて、各要素に含まれる中間コードから予測される、各要素のビットマップデータ形式における描画面積が、所定の限界面積を超えているか否かを判定する面積限界判定ステップと、
前記画像データを前記中間コード形式でメモリに蓄積しようとする際に、前記画像データの各要素について、前記中間コード形式におけるデータサイズが所定の閾値を越えているか否かを判定するサイズ限界判定ステップと、
前記面積限界判定ステップおよび前記サイズ限界判定ステップの少なくともいずれか一方の判定結果が肯定的であるとき、前記各要素を前記中間コード形式に代えて、前記ビットマップ形式のデータを圧縮した形式で前記メモリに蓄積するステップと、
前記面積限界判定ステップおよび前記サイズ限界判定ステップの判定結果のいずれもが否定的であるとき、前記各要素を前記中間コード形式で前記メモリに蓄積するステップと、
を備えることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般には画像データをメモリに蓄積する装置及び方法に関し、特に、画像データを不十分な容量のメモリに蓄積できるようにするために画像データを圧縮したり又はそのデータ形式を変更したりするための技術に関する。
【０００２】
【従来の技術】
ディスプレイドライバやプリンタのような画像形成装置は、一般に、画像形成の過程において、ホスト装置から受信した全ての画像データを一旦中間コードの形でメモリ上に蓄積し、それを順次読み出し実画像に変換してディスプレイにしたりプリントエンジンを介してプリントアウトするようになっている。
【０００３】
従来の画像処理システムの一つの具体例は、図１に示すように、ホスト装置１、画像形成装置２及び画像表示出力装置３から構成される。ここで、一般的なコンピュータシステムにおいては、ホスト装置１は例えばパーソナルコンピュータであり、画像形成装置２はプリンタ内部の制御回路又はディスプレイへの信号出力回路であり、また画像表示出力装置３はプリンタのプリントエンジン又はディスプレイである。
【０００４】
さて、画像形成装置２は、データ受信部４、メモリ５、６、画像処理部７、メモリ管理部８、画像表示部９及び表示バッファ１０を備える。
【０００５】
データ受信部４は、ホスト装置１からのデータを受信して、システムヒープとしてのメモリ５に受信データを一時的に蓄積する。画像処理部７は、このメモリ５から受信データを読出して解析し、中間コードの形式の画像データを作成する。
【０００６】
メモリ管理部８はアプリケーションヒープとしてのメモリ６の確保及び解放を行うもので、画像処理部７より要求されたサイズの空きメモリ領域を、メモリ６中から探し出し、その空きメモリ領域に画像処理部７からの中間コード形式の画像データを蓄積する。ここで、もし、空きメモリ領域が確保できないときには、メモリ管理部８は、直ちに画像処理部７に対してメモリエラーを出力する。
【０００７】
画像表示部９は、メモリ６から中間コード形式の画像データを順次読出し、これを完全なビットマップ形式の実画像データに変換して表示バッファ１０上に展開する。この実画像は、表示バッファ１０から画像表示出力装置３に読み込まれて、ディスプレイ又はプリントアウトされる。
【０００８】
従来の画像形成装置２は、メモリ消費を節約すべく、画像データを全て中間コードの形式でメモリ１２２に蓄積している。しかしながら、画像データによっては、中間コードの方が実画像データよりもサイズが大きくなってしまうことがあり、中間コードにしたために、返ってメモリの消費量が増大するという不具合を生じることがある。即ち、中間コードは例えば、テキストは各文字のビットマップデータとページ内での位置情報により、また図形はその形状を規定したパスデータにより、また写真のようなイメージはそのビットマップデータとページ内での位置情報より構成されるが、細かく複雑な文字や図形がページ内に多数存在する場合には、文字や図形の位置情報やパスデータの量が膨大となるため、実画像データよりもデータ量が増大してしまう。
【０００９】
また、メモリ管理部８が、画像データを蓄積するための空きメモリ領域をメモリ６内で見つけることができないときには、直ちにメモリエラーを画像処理部１２０に返すため、特に大きい画像データを処理する時にメモリオーバーエラーが発生し易く、しかも、これにより画像処理部７では、空きメモリ領域の確保に失敗したときの複雑な処理を行わなければならない。
【００１０】
更に、画像表示部９では、メモリ６中に蓄積されている複雑な中間コードを実画像に変換する処理と、この実画像を、表示バッファ１０上に展開する処理とを行わなければならないので、中間コードの量が多くなったり、或いは、中間コードによる画像形成処理が複雑化したりして画像形成処理が間に合わなくなると、画像形成が失敗し易くなるという問題点もある。
【００１１】
こうした問題は、メモリを増設してメモリ容量を増やせば一気に解決される。しかし、印刷ができない或は印刷に長時間を要する事態が発生した時、その原因がメモリ不足にあるか否かはユーザにとって明確ではないから、メモリ増設を行うべきか否かユーザには判断しがたい。
【００１２】
また、プリンタにおいて、メモリ不足が生じたことによる印字処理の中断を防止するために、プリンタが高解像度モードに設定されている場合には、低解像度モードに変更し、高解像度で作成した画像データを低解像度の画像データに変換することにより、メモリ不足の解消を図ったものが知られている（特開平６−７９９５５号公報参照）。
【００１３】
しかし、元の高解像度の画像データを低解像度の画像データに変換する場合、プリントエンジンやメカニズムコントローラの仕様に従って、元画像データを、予め設定された特定レベルの低解像度の画像データにしか変換することができない。例えば、６００ｄｐｉの高解像度モードと３００ｄｐｉの低解像度モードとを持つ仕様である場合、元の６００ｄｐｉ×６００ｄｐｉの画像データを、３００ｄｐｉ×３００ｄｐｉの画像データにしか変換できないこととなる。
【００１４】
そのため、３００ｄｐｉ×３００ｄｐｉの画像データでは依然としてメモリ不足を解消できない場合、更にこれを圧縮して最終的にメモリ不足の解消を図ることができず、メモリ不足によるエラーとなってしまい、印字処理の中断という不具合が生じてしまう。また、３００ｄｐｉ×３００ｄｐｉまで解像度を低下させなくてもメモリ不足が解消できる場合でも、３００ｄｐｉ×３００ｄｐｉまで一気に解像度を落としてしまうので、必要以上の画質劣化を引き起こす。要するに、上記従来技術では、実質的に無段階に圧縮率を調節することができないので、圧縮不足又は圧縮し過ぎとなる場合があり、圧縮率を必要十分な程度にコントロールすることができない。
【００１５】
また、３００ｄｐｉ×３００ｄｐｉの画像データは、元画像データより画素数にして１／４に縮小されているため、３００ｄｐｉ×３００ｄｐｉの画像データを、そのままディスプレイ又はプリントアウトすると面積において元画像の１／４の小サイズの画像が出力されてしまう。そこで、元の画像と同じサイズの画像を出力させるために、プリンタのレーザビーム径やドット径を２倍に拡大したり、ディスプレイ装置の走査線本数を２倍にする等の方法を採る必要があり、プリンタエンジンやエンジンコントローラの構成をそうした操作が可能な複雑なものとしなければならない。つまり、単一の解像度に対応したハード及びソフト構成を用いることができない。
【００１６】
更には、元画像データを、単に解像度を１／２にした画像データに変換する処理だけしか行わないために、変換後のデータから元画像データを復元することが不可能となり、結果として、元の高画質の画像を形成することができない。つまり、画質を実質的に落とすことなくメモリ不足を解消することができない。
【００１７】
【発明が解決しようとする課題】
本発明の一つの目的は、画像データをメモリに蓄積するとき、必要なメモリ領域のサイズをできるだけ小さくすることにある。
【００１９】
更に別の目的は、メモリに原則として中間コードの形で画像データを蓄積する場合に、画像形成時において、中間コードを実画像に変換する処理が過大にならないように制限し、もって画像形成処理におけるエラーが未然に防止できるようにすることにある。
【００２３】
【課題を解決するための手段】
【００２５】
本発明の第１の側面に従う装置によれば、画像データを例えば中間コードのような第１のデータ形式でメモリに蓄積した後、このメモリから画像データを読み出して例えばビットマップデータのような第２のデータ形式に変換して出力する装置において、画像データを第１のデータ形式でメモリに蓄積しようとする際に、画像データの各要素について、第１のデータ形式におけるデータサイズが所定の閾値を超えているか否かが判定される。そして、この判定結果が肯定的であるとき、画像データの各要素は第１のデータ形式でなく、第２のデータ形式のデータを圧縮した形式でメモリに格納される。
【００２６】
この発明によれば、メモリの無駄な消費を節約することができ、結果として、メモリエラーが発生しにくい。
【００３０】
本発明の第２の側面に従う装置は、画像データを中間コード形式でメモリに蓄積した後、このメモリから画像データを読み出してビットマップデータ形式に変換して出力する装置において、画像データを中間コード形式でメモリに蓄積しようとする際に、画像データの各要素について、各要素に含まれる中間コードから予測される、各要素のビットマップデータ形式における描画面積が、所定の限界面積を超えているか否かが判定され、この判定結果が肯定的であるとき、各要素は中間コード形式でなく、ビットマップデータ形式のデータを圧縮した形式でメモリに蓄積される。
【００３１】
ここで、画像データを前記中間コード形式でメモリに蓄積しようとする際、更に、中間コード形式におけるデータサイズが所定の閾値を超えているか否かの判定も、各要素について行って、その判定結果が肯定的であるときにも、中間コード形式でなくビットマップデータ形式のデータを圧縮した形式で、各要素をメモリに格納するようにしてもよい。
【００３２】
この発明によれば、例えばメモリに蓄積された中間コードをビットマップデータに変換してディスプレイ又はプリントアウトする画像形成装置において、ディスプレイ又はプリントアウトの段階で中間コードからビットマップデータに変換する作業量が減り、この作業の遅れに起因するエラーを減らすことができる。
【００３６】
本発明は更に、上述した装置によって実行される画像データのメモリへの蓄積方法も提供する。
【００３７】
尚、本発明の装置や方法は、プリンタやディスプレイのような画像形成装置に好適であるが、これに限らず、制限されたサイズのメモリの下で画像処理を行わざる得ない種々の分野に応用することができる。
【００３８】
【発明の実施の形態】
図２は本発明の印刷情報処理装置の一実施例において、１ページをバンドに区切って処理する方式の概略を説明する図である。
【００３９】
１ページの印刷用紙１１をＮの仮想バンド１２に分割し、これらの仮想バンド１２を順番にＲＡＭ上の複数の物理バンド１３で処理していく。ここで、物理バンドの個数は処理効率の最適性から３つにしている。その理由は、仮想バンドの処理を待ち時間なく効率的に行うと共に冗長なメモリを消費しないためには、３個の物理バンドが最適だからである。
【００４０】
図３は、本実施例におけるＲＡＭの使用マップである。物理バンド１３と作業用メモリ２２とが別の領域に設けてある。また、ホストコンピュータからの印刷情報を受ける受信バッファ２３もＲＡＭ上の別エリアに確保されている。
【００４１】
図４は本実施例の機能構成を示す。この図に沿って、処理対象としてのある仮想バンドで印刷情報３０の処理がどのように流れていくかを説明する。
【００４２】
仮想バンド内に「ＡＢＣ」等の文字データとビットイメージで表現される図形データ、そしてベクトルで表現される図形データが含まれていたとする。例えば、文字データたる「Ａ」がキーボード等の入力部から入力された場合、通信経路を通じてホストから送られてくる印刷情報３０はアスキーコードの「４１」という値や出力する位置、大きさ等である。一方、ビットイメージによる図形データの場合はビットの構成情報そのものや出力する位置、大きさ等であり、ベクトルで表現される図形データの場合は数式、描画位置、大きさ等である。そこで印刷情報受信部３１である受信バッファ２３によりこれらの印刷情報３０を受信し、格納する。
【００４３】
次に、該印刷情報受信部３１で取り込んだ印刷情報３０から情報解析部３２により印刷情報３０がどの様な種類の情報か、特徴はどこか、どこに印字するのか等の情報を解析し、その結果を基に第一の中間コード作成部３３により中間コードを作成する。この中間コードは、前記印刷情報３０がどの様な種類の情報か、描画に必要なデータがどこに格納されているか、ページのどこに描画するのか等の情報をその種類ごとに決まっている所定の形式で保持しているインデックスデータである。
【００４４】
図５はこの中間コードの諸形式を示している。展開形式による分類では５種類以上あるが、ここでは代表的な３種類のみ記した。どの中間コードも最初に情報の種類を示すコード名（ＣＮ）５１を有している。このコード名５１はソースデータが１６ビットのワード型か、８ビットのバイト型か、あるいはその混合か、というソースの型や図のような展開の型の情報を有している。
【００４５】
図５（Ａ）に示す標準型は、ソースの格納場所を示すソースポインタ（ＳＰ）５２と書込み先を示すオブジェクトポインタ（ＯＰ）５３を少なくとも有し、さらにソースデータに対する拡大縮小が加わる時にはオブジェクトの幅（ＯＷ）５４とオブジェクトの高さ（ＯＨ）５５の情報が加わる。１つの中間コードが６０バイト程度である。
【００４６】
図５（Ｂ）に示す直線型は、ベクトルで表現される図形データに対して適用される中間コードであり、ソースの情報は直線と決まっているのでソースポインタ５２を持っていない。ベクトルの図形データはラスタ方向の直線で全て表現され、個々の直線に対して中間コードが作成される。
【００４７】
図５（Ｃ）に示す圧縮型は、１つの仮想バンドをビットイメージに展開し、圧縮した場合にこれを管理するために１つ作られる中間コードである。圧縮したビットイメージの格納場所を示すＳＰ５２とどこに書込むかというＯＰ５３、そして伸張されてくる連続データ群の切れ目を示すＯＷ５４で構成される。
【００４８】
解析された印刷情報３０をこのように分類された中間コードを作成して管理することで印刷情報３０を極めて少ないメモリ量で分り安く保持し、処理することが可能となっている。印刷情報３０を加工していく過程において、まず処理を行う情報がＮバンドの内のどの仮想バンドのものかが判断され、該当する仮想バンドの領域に所定の形式の中間コードが作成され、印刷情報処理及び保持部３７に格納されていく。印刷情報処理及び保持部３７は、具体的にはＲＡＭで実現されており、図３でいえば作業用メモリ２２の部分である。その際、圧縮必要性判断部３４により随時次の３つの条件をチェックし、条件を満たした時点で加工中のデータに対して圧縮処理が必要であると判断し、印刷情報展開圧縮部３５へと分岐する。
【００４９】
（１）１つの仮想バンドに対して中間コードのみが作成されていく過程で、その合計のメモリ容量が１つのバンドバッファのサイズを越えた場合
（２）１つの仮想バンドに対して中間コードと圧縮済みビットイメージが作成されていく過程で、その合計のメモリ容量が１つのバンドバッファのサイズを越えた場合
（３）１つの仮想バンドに対して中間コードが作成されていく過程で、展開に比較的時間がかかる特定種の中間コードの数が所定の基準を越えて多くなった場合
例えば、印刷情報３０として［ＡＢＣ」という全角文字が文字飾り無しで入力された場合、ワードタイプの標準型のコード名５１が記載され、その後に１ページのどこに展開されるかという座標と、「Ａ］［Ｂ］［Ｃ］という文字フォントのビットマップが格納されているＲＯＭ上のアドレスが書込まれる。その後、印刷情報処理及び保持部３７によって順次これらの中間コードは保持されていく。この場合、圧縮は必要ないと判断され、次の印刷情報３０の処理に進む。
【００５０】
しかし、文字情報が大量に含まれていた場合、あるいは処理対象の仮想バンドに大量の中間コードが入っていた場合等では、１つの仮想バンドの全ての中間コードの容量が展開したビットイメージよりも大きくなってしまう、或は、容量は問題ないがその後の展開において極めて処理時間がかかるという理由から圧縮が必要であると判断し、該当する仮想バンドの情報は印刷情報展開圧縮部３５へと送られる。
【００５１】
印刷情報展開圧縮部３５では、処理対象の仮想バンド用に既に作成された中間コードはビットイメージに展開し、さらにそれ以降の印刷情報３０に関しては中間コード化せずに直接ビットイメージに展開していき、仮想バンドの全ての情報がビットイメージに展開された時点で所定の圧縮方法により圧縮処理が行われる。例えば、ランレングス圧縮法を用いた場合、下記のようになる。
【００５２】
元データ００１１１１１１
圧縮後データ０２１６
これはｘがデータの数値を、Ｎが繰り返し数を示しているとして一般的に表すると｛ｘＮ｝という記述である。圧縮処理によってできるのが圧縮済みビットイメージデータである。
【００５３】
その後、第２の中間コード作成部３６により圧縮済みビットイメージデータを管理するための中間コードが作成される。この中間コードこそが図５（Ｃ）に示す圧縮型であり、この仮想バンドを管理するために一つだけ作成される。
【００５４】
なお、この図のように同じバンドバッファ内にビットマップイメージや文字が混在している場合は、処理方法に以下の２つが考えられるが作業用メモリ２２をなるべく使わないようにすることが重要であることから、（１）の方法を採用している。
【００５５】
（１）文字データや図形データが混在する一つの仮想バンドをまるごとビットイメージに展開し、圧縮し、一つの中間コードで管理する方法（この方法だと、作業用ＲＡＭの圧縮データのメモリは多く必要となるが、中間コードのメモリの方は比較的少なくてすむ）。
【００５６】
（２）文字データや図形データが混在する一つのバンドバッファにおいて、展開に時間のかかる中間コードや、多くの容量を必要とする中間コードのみを選択的にビットイメージに展開し、圧縮し、他の情報は中間コードのままで管理する方法（この方法だと、作業用メモリ２０２の圧縮データの容量は比較的少なくてすむが、中間コードのメモリの方が逆に比較的多く必要となる）。
【００５７】
上記のデータの作業用メモリ２２への書込みの方法としては、図３に示すように作業用メモリ２２のアドレス番号の例えば低いところから昇順に中間コードを記入し、一方、アドレス番号の高いところから降順に圧縮済みビットイメージを書込んでいくことが考えられる。その際、まだ使われていない中間辺りの領域でその他の展開処理などを行えばよい。
【００５８】
なお、圧縮方法をデータの種類に応じて取捨選択することで更にメモリの使用効率を上げることが可能であることはいうまでもない。
【００５９】
いままでの処理によって通信経路を通じて送られてきた印刷情報３０を印刷情報処理及び保持部３７のＲＡＭによって加工し、必要なデータは中間コード又は圧縮済みビットイメージに変換して、記憶する保存処理が完了する。１ページ分の印刷情報３０に対する保存処理が終わった時点で作業用メモリ２２には、１ページ内の全ての中間コードと必要に応じた圧縮済ビットイメージの保存が完了している。この後、後述する処理によってプリンタエンジンへのビットイメージの転送が行われるが、その間にＲＡＭの空いた領域を用いて次のページの保存処理が行われる。１ページのプリンタエンジンへの転送が終わった時点で今度は次のページの転送に入り、更にその間に次の次のページの保存処理が行われていく。このようにして効率よくローテーションが行われていく。
【００６０】
さて、以上のようにして各ページの保存処理が行われている間、各ページ内で圧縮済ビットイメージへの変換処理（以下、圧縮処理という）が行われた回数を圧縮回数処理部４５が計数している。即ち、圧縮回数処理部４５は、各ページ毎に、その保存処理において印刷情報展開圧縮部３５が中間コード又は印刷情報をビットイメージに展開してこれを圧縮した回数（つまり、圧縮済ビットイメージにした文字や図形等の個数であり、以下、「圧縮回数」という）を計数する。そして、各ページ毎の圧縮回数の計数値が所定の閾値回数に達してしまうと、圧縮回数処理部４５はカウントアップ信号４８をメッセージ表示部４７に出力する。
【００６１】
圧縮回数処理部４５からカウントアップ信号４７が出力されると、これは、１ページ当たりの圧縮回数が非常に多くなっているために保存処理に多大な時間がかかっていることを意味する。この多大な処理時間の１つの主たる原因は、ＲＡＭの容量が小さいために１ページを全て中間コードに変換しで保持するのに必要な十分な容量のバンドバッファ１３又は作業用エリア２２が確保できないことにあり、これを解消するにはＲＡＭを増設すればよい。そこで、圧縮回数処理部４５からカウントアップ信号４７が出力されると、メッセージ表示部４７が所定のメッセージをプリンタの液晶表示器又はホストコンピュータのディスプレイなどを用いて表示する。このメッセージは、快適な印刷環境を作るためにＲＡＭの増設が好ましいことをユーザに知らせるためのもので、例えば「この印刷は非常に時間がかかり、時間を短縮するためにはメモリの増設が必要です」といったものである。
【００６２】
このメッセージ表示は、ユーザの注意を喚起するのに適当な時期に適当な長さの時間だけ行われる。例えば、カウントアップ信号４７が出力された時に一定時間だけ表示する、或は、カウントアップ信号４７が一旦出力された時点からそのページの保存処理又は印刷が終了するまでの間、継続的に又は間欠的に表示する、或は、その文書全体の印刷が完了するまで継続的に又は間欠的に表示する、等の方法が採用し得る。
【００６３】
なお、このメッセージ表示を行うための別の構成として、上記した圧縮回数処理部４５に代えて又はこれに加えて、図４に破線で示すようなタイマー処理部４４を設けてもよい。このタイマー処理部４４は、各ページの印刷情報３０が印刷情報受信部３１に入った時点で各ページに関する時間計数をスタートし、各ページの保存処理が完了するまで各ページに関する時間計測を続けようとし、その間に、その時間計数値が予め規定した閾値時間に達してしまうと、タイムアップ信号４６をメッセージ表示部４７に出力する。このタイムアップ信号４６を受けると、メッセージ表示部４７は、前述のカウントアップ信号４７を受けた場合と同様に、上記メッセージを上記の適当な方法で表示する。
【００６４】
次に、以上のようにして保存した中間コードと圧縮済みビットイメージをビットイメージに展開し、プリンタエンジンへと転送する過程について説明する。
【００６５】
中間コード解釈判定部３８では、中間コードのコード名５１を読み取り、まず圧縮データであるかどうかを解釈判定する。そこで圧縮データでない場合は、非圧縮データ展開部３９へと進み、圧縮データであった場合は圧縮データ伸張部４０へと進む。
【００６６】
非圧縮データ展開部３９では処理対象の仮想バンドに含まれる中間コードの管理する情報を基にして、あるソースデータをビットイメージに展開し、これを展開用記憶部４１、具体的にはＲＡＭ上の所定の物理バンド１３の指定の位置に書込む。このようにして作成される仮想バンドのビットイメージは、出力の際に用いられるプリンタエンジンの解像度と１対１に対応しているものであり、この時点で文字データであるか、ベクトルの図形データか、ビットイメージの図形データかは区別が無くなる。
【００６７】
一方、圧縮データ伸張部４０においては、前記印刷情報処理及び保持部３７のＲＡＭによって保存されている圧縮ビットイメージを所定の伸張方法によって伸張していき、そのデータを処理対象の仮想バンドに含まれる中間コードの管理する情報を基にして展開用記憶部４１の物理バンド１３に書込んでいく。このようにして作成される仮想バンドのビットイメージも勿論、出力の際に用いられるプリンタエンジンの解像度と１対１に対応している。
【００６８】
以上の過程を経て処理対象である仮想バンドのすべての印刷情報３０は、前記展開記憶部４１の物理バンド１３に書込まれ、揃ったところでビットイメージデータ転送部４２により一気にプリンタのプリンタエンジンに出力される。
【００６９】
以上によってＲＡＭに保存されている中間コードと圧縮済ビットイメージはビットイメージに変換され、プリンタエンジンへと転送される転送処理が完了する。
【００７０】
図６は本実施例における１ページ分の印刷情報３０の作業用メモリ２２への保存処理の流れを示す保存処理のフローチャートである。
【００７１】
ホストより送られてきた印刷情報３０はＲＡＭ上の受信バッファ２３にて順次受信されていく（Ｓ６１）。次に、そこからの情報が情報解析部３２により順番に作業用メモリ２２に取り込まれ、中間コードの作成に入る（Ｓ６２）。これを作成していく過程で圧縮する必要が生じたら（Ｓ６３）、まず、該当する仮想バンドのための作成済の中間コードを全て作業用メモリ２２の中でビットイメージに展開し（Ｓ６４）、次に、受信バッファ２３から該当する仮想バンドの後続の印刷情報３０を取り込み（Ｓ６５）、これを中間コードに変換せずに直接的に作業用メモリ２２上でビットイメージに展開する（Ｓ６６）。
【００７２】
この仮想バンドについてのビットイメージが全て揃ったところで、これを圧縮して作業用メモリ２２に保存する（Ｓ６８）。このとき、１つの文字や図形等を圧縮する度に圧縮回数を１回づつ増加させていき（Ｓ６９）、圧縮回数を計数する。該当する仮想バンドのビットイメージの圧縮及び保存が完了すると、、再びＲＡＭ上の受信バッファ２３から次の仮想バンドについての印刷情報３０を受信する。
【００７３】
１ページ分の保存処理が終了しないうちに圧縮回数が規定の閾値を越えると（Ｓ７０、Ｓ７１）、前述のメッセージを表示する。
【００７４】
図７及び図８は、タイマー処理部４４によってメッセージ表示を行うか否か判断する構成における１ページ分の保存処理の流れを示したものである。
【００７５】
この場合には、図７に示すように、ホストから１ページ分の印刷情報の入力が開始された時点で監視タイマーをスタートさせ（Ｓ７３）、そして、既に説明した図６の場合と同様の保存処理を開始し、１ページ分の保存処理が完了するまで監視タイマーは作動する。監視タイマーは定期的に割り込み信号を発生し、この割り込みにより、図８に示すタイマー処理が実行される。タイマー処理では、時間計数値を増加させ（Ｓ８１）、この計数値が規定の閾値に達したなら（Ｓ８２）、前述のメッセージを表示する（Ｓ８３）。
【００７６】
以上のように、本実施例では、１ページ分の印刷情報を中間コードに変換して、又は必要に応じて圧縮済ビットイメージに変換してＲＡＭに保存する過程で、圧縮回数又は処理時間を監視してＲＡＭの容量が十分か否かを判断し、十分でない場合には、メッセージを出力することによりユーザに対しＲＡＭの増設を提案するようになっている。この提案を無視するか否かはユーザの自由ではあるが、頻繁にこのメッセージが表示されるようであれば、そのユーザの一般的な使用条件に対してＲＡＭの容量が不十分であることを意味するから、その提案に従ってＲＡＭを増設することにより、ビットイメージ圧縮の機会を減少させて従来より短時間で印刷処理を完了させ得るようになる。従って、ユーザにとって、自己の使用条件に適するように印刷装置のメモリ容量を調整することが容易となる。
【００７７】
尚、上述の実施例は、本発明の要旨を逸脱しない範囲内で種々の変形を加えることができる。例えば、印刷情報をメモリに保持する形式として、上記実施例のようなバンド単位の中間コード及び圧縮済みビットイメージの形式だけでなく、ページ単位の中間コード及び圧縮済みビットイメージの形式や、ビットイメージ及び圧縮済みビットイメージの形式等を採用することができる。
【００７８】
次に、本発明の第２の実施例を説明する。
【００７９】
図９は、本発明の第２の実施例の全体構成を示す。
【００８０】
このシステムは、図９に示すように、ホスト装置１１０、画像形成装置１２０及び画像表示出力装置１４０を備える。なお、一般的なコンピュータシステムにおいては、ホスト装置１１０は、例えば、パーソナルコンピュータであり、画像形成装置１２０は、プリンタ内部の制御回路又はディスプレイへの信号出力回路であり、また、画像表示出力装置１４０は、プリンタのプリントエンジン又はディスプレイである。
【００８１】
画像形成装置１２０は、データ受信部１３０、コマンド解析部１３１、画像形成部１３２、メモリ管理部１３３、画像表示部１３４、システムヒープとしてのメモリ１７０、アプリケーションヒープとしてのメモリ１７１及び表示バッファ１７２を備える。
【００８２】
画像形成部１３２は、サイズ限界判定部１５０、面積限界判定部１５１及び実画像作成部１５２を備える。また、メモリ管理部１３３は、同期解放部１６０、メモリ圧縮部１６１及びデータ変換部１６２を備える。
【００８３】
以下、各部の機能を説明する。
【００８４】
データ受信部１３０は、ホスト装置１１０からのデータを受信して、メモリ１７１内に設定された受信バッファに蓄積する。コマンド解析部１３１は、この受信バッファに蓄積されたデータを読出し解析し、対応する描画要求を画像形成部１３２に送出する。なお、上記描画要求とは、画像形成部１３２が有する種々の描画関数を呼出すための一連のファンクションコールによって構成される。
【００８５】
画像形成部１３２は、処理対象となる１ページを複数本のバンドに分割し、各バンド単位で、コマンド解析部１３１からの描画要求を中間コードに変換する。この中間コードは、メモリ管理部１３３を通してメモリ１７１に登録される前に、サイズ限界判定部１５０及び面積限界判定部１５１によってチェックされる。
【００８６】
サイズ限界判定部１５０は、各バンドの中間コードのデータサイズが実画像のデータサイズを超えているか否かを判定するもので、中間コードのデータサイズを予め設定されている閾値と比較することにより判定する。なお、閾値としては、例えば、処理対象のページの最大ブロックサイズをそのページのバンド本数で割って得られた値に所定の係数を掛けて得られた値を用いる。
【００８７】
面積限界判定部１５１は、後述する画像表示部１３４による中間コードから実画像への変換（描画処理）が、画像表示出力装置１４０の画像形成動作に対して時間的に間に合わなくなって画像形成が失敗（オーバーランエラー）する可能性があるか否かを判定するもので、予め、画像形成が失敗しない限界面積を算定し、この限界面積と中間コードにより指定される描画面積とを比較することにより判定する。ここで、上記限界面積とは、或るバンドに対して規定時間内に描画可能な面積を指す。なお、この面積は、例えば、各中間コードの評価関数を求め、この評価関数から得られる、各中間コードについて論理演算、シフト処理、マスク処理、拡大処理等の全ての手続が１バンド展開に許される描画時間内で実行可能である描画面積のことである。
【００８８】
これらサイズ限界判定部１５０及び面積限界判定部１５１による判定の結果、中間コードが実画像のデータサイズを超えることなく且つオーバランエラーの可能性もない場合には、中間コードはそのままメモリ管理部１３３によってメモリ１７１に登録される。一方、中間コードが実画像のデータを超えている場合、又はオーバランエラーの可能性がある場合には、その中間コードは実画像作成部１５２に渡される。実画像作成部１５２は、その中間コードを完全なビットマップ形式の実画像データに変換する（以下、この変換を「事前展開」という）。事前展開された実画像データは、メモリ管理部１３３によってメモリ１７１に登録される。
【００８９】
メモリ管理部１３３は、画像形成部１３２によって作成された中間コード又は事前展開された実画像データを、メモリ１７１に登録する。この登録に際して、メモリ管理部１３３は、登録に必要な容量の空きメモリ領域をメモリ１７１内で検索してこれを確保することを試みる。この空きメモリ領域の確保に成功すれば、上記登録は正常に行われる。しかし、十分な容量の空きメモリ領域が確保できない場合には、メモリ管理部１３３内の同期解放部１６０が呼出される。
【００９０】
同期解放部１６０は、空きメモリ領域が確保できなかったときに起動されて、画像表示出力装置１４０への表示待ちデータがメモリ１７１中に存在するか否かをチェックする。このチェックの結果、存在すると判定した場合には、画像表示出力装置１４０への表示が終了した時点で、上記データを、表示済みデータとして解放（＝メモリ１７１から消去）することにより、メモリ１７１内の空きメモリ領域を増加させる。一方、上記チェックの結果、表示待ちデータが存在しないと判定した場合や、表示済みデータを解放しても未だ十分な空きメモリ領域が確保できない場合には、次にメモリ圧縮部１６１が呼出される。
【００９１】
メモリ圧縮部１６１は、メモリ１７１に蓄積されているバンド単位の中間コードをメモリ１７１上に事前展開するために、該中間コードを実画像データに変換した後、該実画像データを圧縮し、これによりメモリ１７１内の空きメモリ領域を増大させる。しかし、実画像データの圧縮だけでは十分な空きメモリ領域の増大が得られない場合は、メモリ圧縮部１６１は、後述するデータ変換部１６２を呼出して実画像データを渡すことにより、この実画像データを圧縮しやすい形態のデータに変換してもらい、その後に、この圧縮し易い形態のデータに対して圧縮を試みる。後に詳述するように、データ変換部１６２によるデータ変換は、複数通りの変換方法を選択的に用いながら複数回行えるようになっており、回を重ねるごとに徐々に圧縮率が高まり易くなるよう、段階的に変換方法が選択できるようになっている。
【００９２】
従って、メモリ圧縮部１６１は、まず初段階のデータ変換方法を選択して、その方法により変換されたデータに対して圧縮を試み、その結果、メモリ１７１内の空きメモリ領域が確保できれば、圧縮成功と判断してその圧縮処理を完了させるが、未だ空きメモリ領域が確保できない場合には、更に圧縮率が高まり易い次段階の変換方法を選択して、その方法により変換されたデータに対して圧縮をデータ試み、空きメモリ領域が確保できたか否かをチェックする、という動作を、十分な容量の空きメモリ領域が確保できるまで繰り返す。
【００９３】
しかしながら、上記動作を最終段階の変換方法まで繰り返したが依然として空きメモリ領域が確保できなかった場合には、メモリ圧縮部１６１は、空きメモリ領域が確保できなかったことを示すエラーを、コマンド解析部１３１に出力する。
【００９４】
また、このメモリ圧縮部１６１は、圧縮済みの実画像データを表示又は印刷する時、又は、空きメモリ領域が増大して圧縮した形で蓄積しておく必要が無くなった時には、メモリ１７１内の圧縮済みの実画像データを元の中間コードに伸張する。
【００９５】
データ変換部１６２は、メモリ圧縮部１６１から要求があったときに、メモリ１７１内の実画像データを圧縮しやすい形態のデータに変換する。このデータ変換部１６２には、徐々に圧縮率が高まり易くなるような複数段階の変換方法が用意されていて、メモリ圧縮部１６１から指定された変換方法が選択される。
【００９６】
ここで、圧縮しやすい形態のデータとは、繰り返しパターンが元のデータより多く出現する形態のデータである。そして、徐々に圧縮率が高まり易くなるような複数段階の変換方法とは、繰り返しパターンの出現頻度が徐々に高くなるような複数段階の変換方法のことである。
【００９７】
より具体的に説明すれば、線画やテキストのような２値画像に関しては、例えば、
▲１▼画像の横方向の空間周波数だけを低下させる、
▲２▼縦方向の空間周波数だけを低下させる、
▲３▼横と縦の両方向の空間周波数を低下させる、
といった３種類の変換方法が挙られる。尚、上記空間周波数とは、画像を構成するドットパターンの目の細かさ、つまりドットパターンが変化する最小画素数のことであり、実質的な解像度ともいえる。このように、横（又は縦）方向だけ目を荒くする→縦（又は横）方向だけ目を荒くする→両方向とも目を荒くする、というように変換方法を順番に選択することにより、徐々に繰り返しパターンの出現頻度が高くなるような形態のデータを段階的に得ることができる。尚、目の荒くさせ方、つまり空間周波数の低下のさせ方も、元の画像の１画素単位から、２画素単位→３画素単位→…というように、段階的に行うようにしてもよい。
【００９８】
尚、ここで注意すべきことは、空間周波数つまり実質的な解像度を低下させても、画像のサイズつまり縦横の画素数つまり形式的な解像度は変化させないということである。例えば、元の画像の解像度が６００ｄｐｉ×６００ｄｐｉであった場合、縦横両方向の空間周波数を１／２に低下させた変換を行ったと仮定する。この場合、変換後の画像でも、そのサイズつまり形式的な解像度は６００ｄｐｉ×６００ｄｐｉで同じであり、ただ、画像内のドットパターンの変化ステップつまり実質的な解像度が、元の画像では１ドット単位であったのに対し、変換後の画像では２ドット単位（３００ｄｐｉ相当）となっている。
【００９９】
他方、写真のようなハーフトーン画像に対する複数段階の変換方法としては、例えば、階調数の異なる複数種のハーフトーン用ドットパターン（図１５及び図１６参照）を用意しておいて、これを段階的に使い分けることにより、元の画像データを、指定された階調数のハーフトーン用ドットパターンで表現した画像データに変換する方法がある。この方法については、後に詳細に説明する。
【０１００】
さて、このようにしてデータ変換部１６２が元の実画像データを圧縮しやすい形態のデータに変換すると、既に述べたように、この圧縮しやすい形態のデータがメモリ圧縮部１６１に送られて圧縮される。
【０１０１】
画像表示部１３４は、メモリ１７１内の画像データをバンド単位で読み出して実画像データの形式で表示バッファ１７２に展開する。その際、その画像データが中間コードの形式でメモリ１７１に登録されているときには、その中間コードを読み出して実画像データに変換した後、これを表示バッファ１７２に展開する。一方、その画像データが実画像データの形式でメモリ１７１に登録されているときには、それを読み出してそのまま表示バッファ１７２に展開する。また、その画像データが圧縮されたデータである場合は、これを実画像データに伸張して表示バッファ１７２に展開する。表示バッファ１７２に展開された実画像データは、画像表意時出力装置１４０に送出されて、表示或いはプリントアウトされる。
【０１０２】
以下、上記構成中の主要部の機能をより詳細に説明する。
【０１０３】
図１０は、コマンド解析部１３１におけるコマンド解析処理のフローチャートを示す。
【０１０４】
図１０において、まず、メモリ１７０内の受信バッファからデータを読み出し（ステップＳ２０１）、ホスト装置１１０から送出されたコマンドを解析する（ステップＳ２０２）。この解析の結果、上記コマンドが描画コマンドであると認識すると（ステップＳ２０３）、対応する描画要求を画像形成部１３２に対して発行する（ステップＳ２０４）。一方、ステップＳ２０２におけるコマンド解析の結果、描画コマンドでないと認識すると、描画コマンド以外のコマンドとして相応の処理を行うこととなる（ステップＳ２０５）。
【０１０５】
図１１は、画像形成部１３２における画像形成処理のフローチャートを示す。
【０１０６】
図１１において、まず、コマンド解析部１３１からの描画要求に従い、バンド毎に、呼出された描画関数を用いて、例えばテキストの個々の文字のビットマップを作る、個々の文字のページ内で位置情報を計算する、図形のパスデータや位置情報を計算する等の画像形成処理を行い（ステップＳ２０６）、この結果に基づいて中間コードを作成する（ステップＳ２０７）。
【０１０７】
次いで、この中間コードのデータサイズが実画像データのデータサイズを超えているか否かの判定を行い、結果が否であれば、更に、その中間コードに関してオーバランエラーにならない限界面積を算定し、その中間コードが指定する描画面積が算定した限界面積を超えているか否か判定する（ステップＳ２０８）。その結果、もし、中間コードのデータサイズが実画像のデータサイズを超えている、又は、中間コードの描画面積が限界面積を超えている場合には、その中間コードを実画像データに変換し（ステップＳ２０９）、この実画像データをメモリ１７１に登録することをメモリ管理部３３に要求する（ステップＳ２１０）。
【０１０８】
一方上記判定結果がいずれも否である場合には、ステップＳ２０７で作成した中間コードをそのままメモリ１７１に登録することをメモリ管理部１３３に要求する（ステップＳ２１０）。
【０１０９】
図１２は、メモリ管理部１３３におけるメモリ確保処理のフローチャートを示す。
【０１１０】
図１２において、まず、登録の要求された中間コード又は実画像データのデータサイズに相当する空き領域をもつブロックを、メモリ１７１中から検索する（ステップＳ３１０）。この検索の結果、空き領域が見つかったら（ステップＳ３１１）、空き領域のポインタをコマンド解析部１３１に返すことにより、メモリ確保成功で終了する（ステップＳ３１２）。
【０１１１】
一方、ステップＳ３１０での検索の結果、そのデータサイズの空き領域が見つからないときは、次に画像表示出力装置１４０へ出力処理中のバンド（＝表示画像）がメモリ１７１内にあるか否かチェックし（ステップＳ３１３）、表示画像がある場合はその表示終了を待って（ステップＳ３１４）、表示終了した画像のデータを解放し（ステップＳ３１５）、その後に、空き領域の再確保を試みる（ステップＳ３１０）。
【０１１２】
一方、ステップＳ３１３において表示画像がないと判断した場合は、メモリ圧縮要求をメモリ圧縮部１６１に出す（ステップＳ３１６）。その結果、メモリ圧縮が成功すると、メモリ１７１に空き領域ができた可能性があるので、再度空き領域確保を試みる（ステップＳ３１０）。一方、メモリ圧縮が失敗した場合には、メモリエラーをコマンド解析部１３１に出力する。
【０１１３】
図１３は、メモリ圧縮部１６１におけるメモリ圧縮処理のフローチャートを示す。
【０１１４】
図１３において、まず、メモリ１７１内に圧縮可能なデータ（つまり、メモリ１７１上に事前展開するために中間コード形式から実画像に変換されたデータ）があるか否かを調べる（ステップＳ４２０）。調べた結果、あると判断した場合には、該実画像データ（即ち、元画像データ）を圧縮する（ステップＳ４２１）。次に、ステップＳ４２３でのデータ圧縮に成功したか否か（つまり空きメモリ領域が確保できたか否か）を調べ（ステップ４２２）、成功したと判断した場合には、圧縮が成功した旨をコマンド解析部１３１に通知する（ステップＳ４２３）。
【０１１５】
一方、ステップＳ４２２で圧縮が失敗した（つまり空きメモリ領域が確保できなかった）と判断した場合には、次に、元の実画像データを圧縮し易い形態のデータへ変換してから圧縮するための処理に入る。
【０１１６】
まず、データ変換部１６２を呼出し、圧縮しやすい形態にするためのデータ変換方法が指定できるか否かを調べる（ステップＳ４２６）。即ち、既に述べたように、段階的な複数種類の変換方法が用意されているから、その中で未だ試みてない段階の変換方法が有るか否かを調べる。このチェック結果は最初は当然にＹＥＳとなる。そこで、まず、データ変換部１６２に対して、初段階の変換方法を指定して（テップＳ４２５）、その変換方法による元画像データの変換を要求する（ステップＳ４２６）。その後、データ変換部１６２により変換されたデータを受取り、これを圧縮し（ステップＳ４２１）、続いて、このデータ圧縮に成功したか否かを調べる（ステップＳ４２２）。その結果、圧縮に成功しすれば、圧縮が成功した旨をコマンド解析部１３１に通知する（ステップＳ４２３）。
【０１１７】
しかし、依然として圧縮に失敗した場合は、更に圧縮しやすい形態のデータに変換した後に圧縮するために、再びステップＳ４２４へ進んで、次段階のデータ変換方法があるか否かを調べ、次段階の変換方法があれば、それを用いたデータ変換を要求し、変換後のデータを圧縮し、そして圧縮成功か否かをチェックする（ステップＳ４２５、Ｓ４２６、Ｓ４２１、Ｓ４２２）。
【０１１８】
このように、より圧縮しやすい形態へと段階的に元画像データを変換して圧縮する、という動作を圧縮が成功するまで、つまり空きメモリ領域が確保できるまで繰り返す。これにより、圧縮率が段階的に徐々に高められて行く。特に、この段階が多い場合は、実質的に無段階に近い形で高められていく。結果として、必要十分な圧縮率で圧縮が行われることになり、画質の低下も必要最低限度に抑えられる。
【０１１９】
他方、最終段階のデータ変換方法で変換し圧縮したが依然として圧縮失敗に終わった場合は、ステップＳ４２４でこれ以上の変換方法が指定できないと判断し、圧縮が失敗した旨をコマンド解析部１３１に通知する（ステップＳ４２７）。同様に、ステップＳ４２０で圧縮可能なデータがなかった場合にも、圧縮が失敗した旨をコマンド解析部１３１に通知する（ステップＳ４２７）。
【０１２０】
図１４は、データ変換部１６２におけるデータ変換処理のフローチャートを示す。ここでは、元画像データが写真のようなハーフトーン画像である場合を例にあげて説明する。この場合、データ変換方法の指定は、ハーフトーン画像の階調数を指定することにより行われる。この例では、初段階で５階調が指定され、次段階で１７階調が指定されるものとする。
【０１２１】
図１４に示すように、まず、元画像データの最初のバイトから順に（ステップＳ５０１）、指定された階調数に対応するデータを切出して階調化し（ステップＳ５０２）、指定された階調数に対応するハーフトンテーブル（後述の図１５、１６に示すようなドットパターンが格納されている）から対応するドットパターンを取り出し、元画像データと置き換える（ステップＳ５０３）。そして、ステップＳ５０１で元画像データの最終バイトに達したと判断すると、元画像データの変換が終了したことをメモリ圧縮部１６１に通知する（ステップＳ５０４）。
【０１２２】
尚、上記ハーフトーンテーブルとは、後述の図１５及び図１６に示す５階調用及び１７階調用のドットパターン６０７、７０７と、元の画像データのドットパターンとの対応関係を表したテーブルであり、予めプロブラムされている。このテーブルの対応関係に従って元画像データを５階調用又は１７階調用のドットパターン６０７又は７０７に置き換えることにより、元画像データを５階調化又は１７階調化した圧縮しやすい形態のデータに変換することができる。
【０１２３】
以下、このデータ変換について、より具体的に説明する。
【０１２４】
図１５は初段階で５階調が指定された場合の変換過程の説明図であり、図１６は第２段階で１７階調が指定された場合の変換過程の説明図である。
【０１２５】
図１５において、５階調化した圧縮し易い形態のデータとは、符号６０３で示すような２×２画素の４画素マトリックスを１個のハーフトーン領域と定義して、この１個のハーフトーン領域の濃度を、符号６０７に示す５種類のドットパターンを用いて５階調で表現するようにした形態のデータをいう。この５階調化データは、本来は、個々のハーフ領域の濃度値（０〜４）に対し、符号６０５で示すようなディザマトリクスを適用することにより作られるものであるが、このデータ変換では上述のように、予め用意したハーフトーンテーブルに従って単純にパターンの置き換えを行うことにより作成される。
【０１２６】
この５階調化データでは、符号６０４で示すように第１バイト及び第２バイトの２バイトによって４個のハーフトーン領域が形成されており、よって、符号６０１で示すように１バイト中には４個のハーフトーン領域の上半分又は下半分が割り当てられる。そして、個々のハーフトーン領域の上半分又は下半分の２画素がとり得るドットパターンのバリエーションは、符号６０７で示す５種のパターンから判るように、上半分及び下半分共に「００」、「０１」、「１１」の３種類である。従って、１つのバイトでは、３×３×３×３＝８１種類のドットパターンが形成され得ることになる。
【０１２７】
一方、図１６において、１７階調化した圧縮し易いデータとは、符号７０３で示すような４×４画素の１６画素マトリックスで１個のハーフトーン領域を定義し、１個のハーフトーン領域の濃度を、符号７０７として一部例示したようなドットパターンを用いて１７階調で表現した形態のデータである。この１７階調化データは、本来は、個々のハーフ領域の濃度値（０〜１６）に対し、符号７０５で示すようなディザマトリクスを適用することにより作られるものであるが、このデータ変換では上述のように、予め用意したハーフトーンテーブルに従って単純にパターンの置き換えを行うことにより作成される。
【０１２８】
この１７階調化データでは、符号７０４で示すように第１バイト〜第４バイトの４バイトによって２個のハーフトーン領域が形成されており、よって、符号７０１で示すように１バイト中には２個のハーフトーン領域の１／４部分が割り当てられる。そして、個々のハーフトーン領域の１／４部分の４画素が取り得るドットパターンは、以下のようになる。
【０１２９】
▲１▼  第１バイト
「００００」、「０１００」、「０１１０」、「０１１１」、「１１１１」
▲２▼  第２バイト
「００００」、「００１０」、「０１１０」、「０１１１」、「１１１１」
▲３▼  第３バイト
「００００」、「００１０」、「０１１０」、「１１１０」、「１１１１」
▲４▼  第４バイト
「００００」、「００１０」、「０１１０」、「０１１１」、「１１１１」
従って、１／４部分がとり得る全てのパターンは「００００」、「００１０」、「０１００」、「０１１０」、「０１１１」、「１１１０」、「１１１１」の７種類であるから、１バイトがとり得るパターンのバリエーションは７×７＝４９種類となる。但し、「００１０」と「０１００」の組合せの２種類と、「０１１１」と「１１１０」の組合せの２種類と、「０１００」と「１１１０」の組合せの２種類の合計６種類の組合せは、実際には出現しないので、実際に１バイト中に出現するパターンは４９−６＝４３種類である。
【０１３０】
以上の考察に基づいて、次に、５階調化データと１７階調化データとを比較すると、１バイトに出現するドットパターンが、５階調化データでは８１種類であるのに対し、１７階調化データでは４３種類である。つまり、１７階調化データの方が、５階調化データよりも出現するドットパターンの種類が少ないことになる。ここで、ドットパターンの種類が少ないほど、隣り合うバイト同士のパターンが一致する確率が高くなる、つまり繰り返しパターンの出願頻度が高くなるから、より圧縮し易いことになる。従って、５階調化データよりも、１７階調化データの方が、より圧縮し易いデータ形態であるといえる。
【０１３１】
一般には、高階調化すればするほど、より圧縮し易いデータとなり得るので、圧縮率が高くなる。その反面、形式的な解像度を変えずに高階調化するため、１個のハーフトーン領域の面積が大きくなってドットパターンの目が荒くなり、画質が低下することになる。しかし、人間の肉眼で見て顕著な画質低下を感じない範囲内で、高い階調化を行えば実質的に問題となる画質低下を引き起こすことなく、圧縮率を高めることができる。実際、６００ｄｐｉ×６００ｄｐｉの元画像に対して、５階調化と１７階調化とを行ってみたところ、肉眼で見て明らかな画質劣化は認められなかった。
【０１３２】
尚、以上はハーフトーン画像についてのデータ変換であるが、線画やテキストのような２値画像については、既に述べたように、縦横の一方向又は両方向の空間周波数を段階的に低下させることにより、圧縮し易いデータに変換する。個々の変換方法の具体内容については、当業者であれば格別の説明なく理解できるであろうから、その説明は省略する。
【０１３３】
このようにして、データ変換部１６２は、元の画像データを段階的により圧縮しやすい形態のデータに変換していく。この場合、最終段階の変換方法は、プリントアウト後の画像と元画像との間の差異が人間の肉眼によって顕著な差異と識別されない限界に設定される。
【０１３４】
以上説明したよに、この実施例は、中間コードから実画像データに変換されてメモリ１７１上に事前展開される実画像データのサイズが、メモリ１７１の空き領域よりも大きいと判定された場合、プリントアウト後の画像と元画像との間の差異が人間の肉眼によって顕著な差異と識別されない限界まで、元画像データを段階的に圧縮し易い形態の画像データに変換し、これを圧縮する。その結果、画質を大きく低下させることなく、実質的に無段階に近い圧縮率調節の下で必要最小限度のデータ圧縮を行って、メモリ不足を解消することができる。
【０１３５】
また、元画像データを圧縮し易い形態のデータに変換する場合、形式的な解像度は変化させないので、プリントエンジンやメカニズムコントローラは単一の解像度に対応したもので十分である。
【０１３６】
また、変換されたデータの圧縮は、主として同一パターンの繰り返しに着目して圧縮する方法で行うため、圧縮後のデータ中から元のデータを復元するのに必要なデータまで消去してしまう虞は小さく、実質的に可逆的な圧縮である。従って、データ変換に起因する画質劣化は許容せざるを得ないが、そのデータ変換の画質劣化を実質的に問題のない範囲に抑えておけば、高画質の画像を復元することができる。
【０１３７】
以上説明した内容は、あくまで本発明の代表的な実施例に関するものであって、本発明が上記内容のみに限定されることを意味するものでないのは勿論である。例えば、第２実施例で説明した５階調化や１７階調化などのデータ変換は単なる例示にすぎす、本発明の趣旨を逸脱することなく他の種々のデータ変換方法を採用することもできる。
【図面の簡単な説明】
【図１】従来の画像データ処理システムの機能ブロック図。
【図２】本発明の第１の実施例におけるバンド方式の処理の概念を説明する図。
【図３】同実施例におけるＲＡＭの内部の構成を示す図。
【図４】同実施例の構成を示す図。
【図５】中間コードの展開形式による分類を示す図。
【図６】同実施例における１ページ分の印刷情報３００の保存処理を示すフ  ローチャート。
【図７】同実施例における１ページ分の印刷情報３００の保存処理の変形例  を示すフローチャート。
【図８】同変形例におけるタイマー処理を示すフローチャート。
【図９】本発明の第２の実施例の全体構成を示すブロック図。
【図１０】コマンド解析部による解析処理動作のフローチャート。
【図１１】画像形成部による画像形成処理動作のフローチャート。
【図１２】メモリ管理部によるメモリ確保処理動作のフローチャート。
【図１３】メモリ圧縮部によるメモリ圧縮処理動作のフローチャート。
【図１４】データ変換部によるデータ変換処理動作のフローチャート。
【図１５】５階調化した圧縮し易い画像データの説明図。
【図１６】１７階調化した圧縮し易い画像データの説明図。
【図１】
0003582675.tif 000002
【図２】
0003582675.tif 000003
【図３】
0003582675.tif 000004
【図４】
0003582675.tif 000005
【図５】
0003582675.tif 000006
【図６】
0003582675.tif 000007
【図７】
0003582675.tif 000008
【図８】
0003582675.tif 000009
【図９】
0003582675.tif 000010
【図１０】
0003582675.tif 000011
【図１１】
0003582675.tif 000012
【図１２】
0003582675.tif 000013
【図１３】
0003582675.tif 000014
【図１４】
0003582675.tif 000015
【図１５】
0003582675.tif 000016
【図１６】
0003582675.tif 000017