(57)【要約】【課題】出力対象画像のビットマップデータを生成する処理を実行する画像処理装置であって、使用するメモリ容量を少なく抑えつつ高品質の画像出力を可能とする処理を効率よく実行できる画像処理装置、等を提供する。【解決手段】出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する画像処理装置が、前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する展開手段と、前記展開手段が生成したビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する圧縮手段を有する。【選択図】  図９
2008193559.tif 000002
【特許請求の範囲】
【請求項１】
出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する画像処理装置であって、
前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する展開手段と、
前記展開手段が生成したビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する圧縮手段を有する
ことを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記展開手段が生成した所定範囲のビットマップデータについて前記圧縮手段が処理する際に、
前記属性情報がイメージ画像を示す画素の領域の前記ビットマップデータに、前記所定範囲の当該領域以外の全ての画素が白色のデータを有するビットマップデータを加えた後に、前記非可逆圧縮での圧縮を行い、
前記属性情報がイメージ画像以外を示す画素の領域の前記ビットマップデータに、前記所定範囲の当該領域以外の全ての画素が白色のデータを有するビットマップデータを加えた後に、前記可逆圧縮での圧縮を行う
ことを特徴とする画像処理装置。
【請求項３】
請求項２において、
前記所定範囲が矩形であり、前記非可逆圧縮での圧縮前に、前記加えた白色のデータを有するビットマップデータのうち、前記所定範囲の一方向についての両端部分のデータが削除される
ことを特徴とする画像処理装置。
【請求項４】
請求項３において、
前記非可逆圧縮での圧縮前に、当該圧縮の対象となるビットマップデータの前記属性情報が削除される
ことを特徴とする画像処理装置。
【請求項５】
請求項１において、
前記出力対象画像が複数の範囲に分割され、当該範囲毎に前記展開手段と前記圧縮手段による処理が実行される場合に、
前記範囲毎に、その範囲内にイメージ画像の画像オブジェクトが含まれるか否かを示す情報が付加され、
前記圧縮手段は、当該付加された情報がイメージ画像を含まないことを示すものである場合には、前記展開手段が生成したビットマップデータを可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する
ことを特徴とする画像処理装置。
【請求項６】
出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する画像処理装置における画像処理方法であって、
前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する工程と、
前記生成されたビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する工程を有する
ことを特徴とする画像処理方法。
【請求項７】
出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する処理を画像処理装置に実行させる画像処理プログラムであって、
前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する工程と、
前記生成されたビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する工程を前記画像処理装置に実行させる
ことを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力対象画像のビットマップデータを生成する処理を実行する画像処理装置等に関し、特に、使用するメモリ容量を少なく抑えつつ高品質の画像出力を可能とする処理を効率よく実行できる画像処理装置等に関する。
【背景技術】
【０００２】
通常、レーザプリンタなどのプリンタでは、印刷対象の画像データを印刷要求元のホスト装置からＰＤＬ（ページ記述言語）などで受信し、そのＰＤＬを解釈して、画素毎に各色の濃度階調値を有する出力ビットマップデータを生成する。そして、所定のタイミングでその出力ビットマップデータに処理を施して印刷エンジンに転送していく。そのため、上記生成した出力ビットマップデータをプリンタ内のメモリに一定期間保持しておく必要があり、そのためのメモリ領域を確保する必要がある。従って、従来、メモリ容量削減のために生成した出力ビットマップデータを圧縮して保持しておくことが行われている。
【０００３】
かかる圧縮処理において、従来のプリンタでは、ページ全体について同じ圧縮方法を用いていた。例えば、ハフマン符号を用いた可逆圧縮法やＤＣＴ（離散コサイン変換）を用いた非可逆圧縮法などがページ全体について用いられた。
【０００４】
また、下記特許文献１では、画像データの圧縮について、画質劣化を抑えると共に目標圧縮率を達成するために、所定のブロック毎に圧縮方式を切り換えるなどの提案がなされている。
【特許文献１】特開平１０−５１６４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ページ全体について一方法で圧縮を行う従来プリンタでは、例えば、ハフマン符号を用いた可逆圧縮を使用した場合には、文字及びグラフィクス画像については良好な圧縮率を得ることができるものの、自然画などのイメージ画像については圧縮率の低下が著しいという課題があった。また、一方法としてＤＣＴを用いた非可逆圧縮を使用した場合には、全ての画像種類について良好な圧縮率が得られ、イメージ画像については良好な品質での画像再現が可能であるものの、文字及びグラフィクスについては、いわゆるモスキートノイズ、ブロックノイズ等の影響による画像劣化で出力品質の低下を招いていた。
【０００６】
また、上記特許文献１の装置では、画像データ全体を解析し、４×４画素、８×８画素のブロック単位に圧縮方式を選択し、その方式で圧縮を実行する、という処理を行うなど、複雑な処理を要し、処理に時間がかかることも懸念される。
【０００７】
そこで、本発明の目的は、出力対象画像のビットマップデータを生成する処理を実行する画像処理装置であって、使用するメモリ容量を少なく抑えつつ高品質の画像出力を可能とする処理を効率よく実行できる画像処理装置、等を提供することである。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明の一つの側面は、出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する画像処理装置が、前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する展開手段と、前記展開手段が生成したビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する圧縮手段を有することである。
【０００９】
更に、上記の発明において、好ましい態様は、前記展開手段が生成した所定範囲のビットマップデータについて前記圧縮手段が処理する際に、前記属性情報がイメージ画像を示す画素の領域の前記ビットマップデータに、前記所定範囲の当該領域以外の全ての画素が白色のデータを有するビットマップデータを加えた後に、前記非可逆圧縮での圧縮を行い、前記属性情報がイメージ画像以外を示す画素の領域の前記ビットマップデータに、前記所定範囲の当該領域以外の全ての画素が白色のデータを有するビットマップデータを加えた後に、前記可逆圧縮での圧縮を行うことを特徴とする。
【００１０】
更に、上記の発明において、好ましい態様は、前記所定範囲が矩形であり、前記非可逆圧縮での圧縮前に、前記加えた白色のデータを有するビットマップデータのうち、前記所定範囲の一方向についての両端部分のデータが削除されることを特徴とする。
【００１１】
更にまた、上記の発明において、好ましい態様は、前記非可逆圧縮での圧縮前に、当該圧縮の対象となるビットマップデータの前記属性情報が削除されることを特徴とする。
【００１２】
また、上記の発明において、好ましい態様は、前記出力対象画像が複数の範囲に分割され、当該範囲毎に前記展開手段と前記圧縮手段による処理が実行される場合に、前記範囲毎に、その範囲内にイメージ画像の画像オブジェクトが含まれるか否かを示す情報が付加され、前記圧縮手段は、当該付加された情報がイメージ画像を含まないことを示すものである場合には、前記展開手段が生成したビットマップデータを可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成することを特徴とする。
【００１３】
上記の目的を達成するために、本発明の別の側面は、出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する画像処理装置における画像処理方法が、前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する工程と、前記生成されたビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する工程を有することである。
【００１４】
上記の目的を達成するために、本発明の更に別の側面は、出力対象画像の画像オブジェクトを表すコードから、画素毎に色の濃度階調値を有する圧縮された出力用ビットマップデータを生成する処理を画像処理装置に実行させる画像処理プログラムが、前記コードから、画素毎に色の濃度階調値と前記画像オブジェクトの種類を示す属性情報とを有するビットマップデータを生成する工程と、前記生成されたビットマップデータの、前記属性情報がイメージ画像を示す画素の領域について非可逆圧縮で圧縮し、前記属性情報がイメージ画像以外を示す画素の領域について可逆圧縮で圧縮して前記圧縮された出力用ビットマップデータを生成する工程を前記画像処理装置に実行させることである。
【００１５】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１７】
図１は、本発明を適用した画像処理装置を備えるプリンタの実施の形態例にかかる構成図である。図１に示すプリンタ２のコントローラ３が本発明を適用した画像処理装置である。本コントローラ３は、出力対象画像の中間コードからビットマップデータに展開する際に画素毎に画像オブジェクトの種類を示す属性情報を付加し、展開処理後の圧縮処理においては、当該属性情報に基づいて、イメージ画像領域については非可逆圧縮を用い、文字及びグラフィクス領域については可逆圧縮を用いて処理を実行し、データ保持のために使用するメモリ容量を少なく抑えつつ高品質の画像出力を可能としようとするものである。
【００１８】
図１に示すホストコンピュータ１は、プリンタ２に対して印刷要求を行なうホスト装置であり、ユーザ操作等に基づいてプリンタドライバ１１が画像データと制御コマンドを含む印刷データを、例えば、ＰＤＬでプリンタ２に送信する。なお、ホストコンピュータ１は、所謂パーソナルコンピュータなどで構成することができる。また、プリンタドライバ１１は、処理手順を指示するプログラムと、当該プログラムに従って処理を実行する制御装置等によって構成することができ、当該プログラムは、ＣＤなどの記憶媒体からホストコンピュータ１にインストールされる、あるいは、インターネット等のネットワークを介して所定のサイトからホストコンピュータ１にダウンロードされてインストールされる。
【００１９】
次に、プリンタ２は、一例として４サイクルのレーザプリンタであり、図１に示すように、コントローラ３、エンジン４等で構成される。なお、プリンタ２は、インクジェットプリンタなど他の印刷方式のものであっても構わない。
【００２０】
コントローラ３は、前記ホストコンピュータ１から送信されるＰＤＬによる印刷データを受信し、当該ＰＤＬを解釈して所定の画像処理を実行し、エンジン４側へ提供する信号を生成する部分である。画像処理では、ＰＤＬからのバンド毎中間コードの生成、中間コードからの展開処理、圧縮処理、伸張（解凍）処理、色変換処理、２値化処理などが実行される。図１に示すように、コントローラ３には、Ｉ／Ｆ５、ＣＰＵ８、ＲＯＭ６、ＲＡＭ７、及びエンジンＩ／Ｆ９等が備えられる。
【００２１】
Ｉ／Ｆ５は、ホストコンピュータ１から送信される前記印刷データを受信する部分であり、ＲＯＭ６は、プリンタ２を制御するための各種プログラムを記憶する部分である。また、ＲＡＭ７は、前記受信した印刷データ（ＰＤＬ）、中間コード、展開後のビットマップデータ、圧縮後のデータ等を格納するメモリであり、エンジン４で印刷処理が行われる各ページの画像データは、ここからエンジンＩ／Ｆ９に引き渡される。そして、ＲＡＭ７内の、中間コード、展開後のビットマップデータ、圧縮後のデータを、それぞれ、保持する領域を、中間コードバッファ、バンドバッファ、ページバッファと呼ぶこととする。なお、中間コード、展開後のビットマップデータ、及び圧縮後のデータは、それぞれ、印刷ページを副走査方向に複数に分割した領域であるバンド毎に収められる。また、ＲＡＭ７内の変数領域に、後述する、バンド内のイメージ画像が存在する領域を示す情報が収められる。
【００２２】
ＣＰＵ８は、本プリンタ２において行われる各種処理を制御する部分であるが、特に、前記受信した印刷データの解釈、中間コードの登録、展開処理、圧縮処理等を司る。本プリンタ２では、このＣＰＵ８が実行する、中間コードの登録、展開、及び圧縮の処理に特徴があり、その具体的な内容については後述する。なお、ＣＰＵ８が実行する処理は、主に前記ＲＯＭ６に記憶されたプログラムに従って行われるものである。
【００２３】
次に、エンジンＩ／Ｆ９は、エンジン４で印刷を実行する際に、所定のタイミングで前述したＲＡＭ７に格納されている圧縮後のデータを読み出し、伸張処理、色変換処理、２値化処理等を実行してエンジン４に出力する信号を生成して出力する部分である。但し、イメージ画像を含むバンドについては、後述するように、イメージ画像領域と文字及びグラフィクス領域が別々に保持されているので、それらを合成する処理を実行する。この点も本プリンタ２の特徴であり、その具体的な内容については後述する。なお、エンジンＩ／Ｆ９は、具体的には、ＡＳＩＣで構成され、上記伸張したデータを格納するメモリ等を備えている。
【００２４】
図２は、コントローラ３の機能構成を例示した図である。言語解釈部３１は、前記受信した印刷データを解釈する部分であり、中間コード登録部３２は、中間コードの生成と登録を行う部分であり、展開部３３は、前記展開処理を実行する部分であり、圧縮部３４は、展開されたデータを圧縮する部分である。なお、これら各部は、前述したＣＰＵ８、ＲＯＭ６内のプログラム、及びＲＡＭ７等で構成される。また、エンジン出力部３５は、上記エンジンＩ／Ｆ９に相当する。
【００２５】
次に、エンジン４は、前記エンジンＩ／Ｆ９から出力される信号に従って印刷媒体に印刷処理を実行する部分であり、図示されていないが、ＣＰＵ、ＲＯＭ、ＲＡＭ等で構成される制御部と、当該制御部の指示に従って動作する機構部が備えられる。機構部は、本実施の形態例ではレーザプリンタであるので、帯電ユニット、露光ユニット、現像装置、転写ユニット等で構成される。
【００２６】
以上説明したような構成を有する本実施の形態例に係るプリンタ２では、印刷を実行する際の中間コード登録処理、展開処理、圧縮処理、及びエンジン出力に特徴を有し、以下、それらの処理内容について具体的に説明する。
【００２７】
まず、印刷時にコントローラ３が実行する処理の全体について説明する。図３は、印刷時にコントローラ３が実行する処理を例示したフローチャートである。以下、図３に基づいて、印刷ページ、１ページ分の処理について説明する。
【００２８】
まず、Ｉ／Ｆ５を介して受信したＰＤＬの印刷データを言語解釈部３１が逐次読み出して解釈する（ステップＳ１）。ＰＤＬのデータには、印刷対象の画像オブジェクトの描画を示す画像系のコマンド、画像オブジェクト毎に設定しない、例えば、色の設定やフォントの設定などを行う、各種設定のための制御系のコマンド、及びそのページの最後を示す改ページコマンドが含まれる。
【００２９】
その後、解釈されたコマンドに従って、順次、中間コード登録部３２がそのコマンドに対する中間コードを生成して、中間コードバッファの所定領域に登録する（ステップＳ２）。中間コードは、出力対象の画像を再現するために必要十分な情報を保持するデータであり、通常、ビットマップデータとして画像を記憶するのと比較してメモリ効率が高い。また、１ページの範囲は、前述したバンドの領域毎に処理が行われるため、中間コードの登録もバンド毎に行われ、そのバンドに登録されている中間コードは、そのバンドの完全な画像が再現できる情報を保持している。
【００３０】
そして、対象としているページの全てのコマンドについて中間コード登録が終了し、改ページのコマンドが解釈されると、展開部３３が当該ページについての展開処理を実行する（ステップＳ３）。展開処理では、バンド毎に、各画像オブジェクトを示す中間コードが画素毎のビットマップデータに展開される。展開されたデータは、前記バンドバッファに保持される。
【００３１】
その後、展開されたビットマップデータは、バンド毎に、圧縮部３４によって圧縮処理が施されるが、イメージ画像を含むバンドについては、イメージ画像の領域とその他の領域に画像データを分離し、その後に、それぞれについて圧縮処理を施す（ステップＳ４）。圧縮処理されたデータは、前記ページバッファに記憶される。
【００３２】
このようにして、対象ページについて圧縮処理後のビットマップデータが生成されて記憶されると、所定のタイミングで、エンジン出力部３５（エンジンＩ／Ｆ９）により、圧縮後のデータが読み出され、画像の伸張、色変換、二値化等の各処理が実行され、エンジン４用信号が生成されてエンジン４へ出力される（ステップＳ５）。
【００３３】
以上のようにして、１ページ分のコントローラ３による処理が実行されるが、以下、本プリンタ２の特徴部分である中間コード登録処理、展開処理、圧縮処理、及びエンジン出力についてそれぞれ説明する。図４は、出力対処画像の一例を示した図である。図４の（ａ）がその画像例を示しており、当該画像には、Ｔで示す７つの文字（テキスト）、Ｇで示す２つの矩形（グラフィクス）、及びＩで示す１つのイメージ画像が含まれている。また、図４の（ｂ）は、当該画像の配置と前述したバンドの関係を示しており、図に示すように、当該画像は第１バンドから第５バンドに分割されて処理が行われる。以下、当該出力画像例を用いて説明する。
【００３４】
まず、中間コード登録処理では、前述の通り、各画像オブジェクトのコマンドからバンド毎に中間コードを登録する。すなわち、対象の画像オブジェクトが複数のバンド領域に跨って配置されている場合には、その複数のバンドのそれぞれに当該オブジェクトのそのバンド部分の中間コードを登録する。図４に示した例では、イメージ画像Ｉは、第２バンド、第３バンドに中間コードが登録されることになる。図５は、第３バンドに中間コードが登録される画像オブジェクトを示している。このように、第３バンドには、３つの文字（Ｔ）、１つのグラフィクス（Ｇ）、及び１つのイメージ（Ｉ）の画像オブジェクトについて中間コードが登録されることになる。
【００３５】
また、本プリンタ２では、バンド内にイメージ画像のオブジェクトが存在するか否かを示すフラグ（ＩｍａｇｅＦｌａｇ）を設け、中間コード登録部３２は、このフラグをリセット状態で初期化し、イメージの中間コードを登録する際にそのバンドにセットする。かかる処理により、バンド内の全ての中間コードが登録された時点での当該フラグの状態により、そのバンド内のイメージ画像（イメージ領域）の有無を知ることができる。
【００３６】
次に、展開処理について説明する。図６は、中間コードの展開処理の手順を例示したフローチャートである。当該展開処理では、画素毎に各色の濃度階調値を有するビットマップデータを生成するが、本プリンタ２では、各画素に、更に、属性（アトリビュート）情報を付加する。属性（アトリビュート）とは、その画素（ピクセル）がいかなる画像オブジェクトとして使われているかを、すなわち、文字、グラフィクス、イメージのうちのいずれを表すのに使われているかを示すものであり、文字（０ｘ８１）、グラフィクス（０ｘｃ１）、又はイメージ（０ｘ００）を示すアトリビュートデータが付加される。図７は、１画素の展開後データについて例示した図である。ここでは、色がＲＧＢで表現されているものとしているが、図に示されるように、ＲＧＢ各色の濃度階調値を各８ビットで、上記アトリビュートを８ビットで表現した計３２ビットのデータとなっている。従って、展開後のデータを収める前記バンドバッファは、１画素当り３２ビットの容量で準備される。
【００３７】
また、展開部３３は、展開処理に先がけてバンドバッファを初期化する処理を実行する。具体的には、全画素について、「白」色のデータ（Ｒ＝０ｘｆｆ、Ｇ＝０ｘｆｆ、Ｂ＝０ｘｆｆ）とグラフィクスを示すアトリビュートデータ（０ｘｃ１）を書き込んでおく。
【００３８】
その後、展開処理に入るが、ここでは図６に基づき１バンド分の処理について説明する。展開部３３は、そのバンドに登録されている先頭の中間コードから最後の中間コードまで中間コード毎に以下の処理を行う（ステップＳ３０１〜Ｓ３１４）。まず、対象の中間コードを取り出し（ステップＳ３０２）、その中間コードが画像オブジェクトの描画を示すものでなく、設定系の中間コードである場合には（ステップＳ３０３のＹｅｓ）、展開環境変数などの当該コードに従った設定を行う（ステップＳ３０４）。そして、当該中間コードについての処理を完了し、次の中間コードに処理が移る。
【００３９】
一方、取り出した中間コードがグラフィクスオブジェクトの描画を指示する中間コードである場合には（ステップＳ３０５のＹｅｓ）、当該グラフィクスオブジェクトが描画される箇所の各画素について、前記展開後データを生成してバンドバッファに記憶する（ステップＳ３０９）。すなわち、ＲＧＢの階調値データにグラフィクスを示すアトリビュートデータ（０ｘｃ１）を付加してバンドバッファの所定箇所に収める。そして、当該中間コードについての処理を完了する。
【００４０】
また、取り出した中間コードが、文字オブジェクトの描画を指示する中間コードである場合には（ステップＳ３０６のＹｅｓ）、当該文字オブジェクトが描画される箇所の各画素について、前記展開後データを生成してバンドバッファに記憶する（ステップＳ３０７）。すなわち、ＲＧＢの階調値データに文字を示すアトリビュートデータ（０ｘ８１）を付加してバンドバッファの所定箇所に収める。そして、当該中間コードについての処理を完了する。
【００４１】
また、取り出した中間コードが、イメージオブジェクトの描画を指示する中間コードである場合には（ステップＳ３０６のＮｏ）、同様に、当該イメージオブジェクトが描画される箇所の各画素について、前記展開後データを生成してバンドバッファに記憶する（ステップＳ３０８）。すなわち、ＲＧＢの階調値データにイメージを示すアトリビュートデータ（０ｘ００）を付加してバンドバッファの所定箇所に収める。
【００４２】
さらに、イメージの中間コードの場合には、そのバンドにおいてイメージが描画される領域の水平方向（走査方向）の範囲を知るために、そのバンド内のイメージを表す全ての画素の中で、バンド左端からの距離が最小となる画素の当該最小距離と、バンド左端からの距離が最大となる画素の当該最大距離との値をこの展開処理時にＲＡＭ７に記憶しておく。
【００４３】
そのため、図６のステップＳ３１０からの処理を実行する。すなわち、イメージの中間コードの展開処理を行った場合には、その処理によって追加されたイメージの画素によって、当該バンドの上記最小距離（最小値）が更新されたか否かをチェックし（ステップＳ３１０）、更新されており、記憶されている最小値を更新する必要があれば（ステップＳ３１０のＹｅｓ）、上記最小距離の値（バンド左端からの最小値）を更新する（ステップＳ３１１）。一方、更新されていなければ（ステップＳ３１０のＮｏ）、処理がステップＳ３１２に移行する。
【００４４】
次に、今回の展開により当該バンドの上記最大距離（最大値）が更新されたか否かをチェックし（ステップＳ３１２）、更新されており、記憶されている最大値を更新する必要があれば（ステップＳ３１２のＹｅｓ）、上記最大距離の値（バンド左端からの最大値）を更新する（ステップＳ３１３）。一方、更新されていなければ（ステップＳ３１２のＮｏ）、値の更新を行わない。そして、イメージの場合について、当該中間コードについての処理を完了する。
【００４５】
このようにして、そのバンドに登録されている各中間コードについて展開処理を実行し、最後の中間コードまで処理が終了すれば、当該バンドについての展開処理が完了する。
【００４６】
図８は、図４に示した例において展開処理後の各画素が有している上記アトリビュートの状態を示した図である。図８では、第２、第３、及び第４バンドについて、前述したＩｍａｇｅＦｌａｇの状態も合わせて示している。図中、白色の部分がグラフィクスの属性を有する領域を示し、黒色の部分が文字の属性を有する領域を示し、網掛けの部分がイメージの属性を有する領域を示している。この例において、第２及び第３バンドについては、バンド内にイメージの領域が含まれるため、ＩｍａｇｅＦｌａｇがセット状態であり、第４バンドについては、バンド内にイメージの領域がないため、ＩｍａｇｅＦｌａｇがリセット状態である。
【００４７】
次に、圧縮処理について説明する。図９は、圧縮処理とそれに先立って行われる領域分離処理の手順について例示したフローチャートである。図９に基づき、１バンド分の処理について説明する。
【００４８】
まず、圧縮部３４は、処理対象のバンドの前述したＩｍａｇｅＦｌａｇがセットされているか否かをチェックし（ステップＳ４０１）、セットされていなければ（ステップＳ４０１のＮｏ）、処理がステップＳ４０６に移行する。
【００４９】
一方、セットされていれば（ステップＳ４０１のＹｅｓ）、領域分離の処理を行う（ステップＳ４０２）。具体的には、そのバンド内の画素が有する前記アトリビュートの情報に基づいて、イメージの領域とそれ以外の領域に分離する。
【００５０】
より具体的には、展開後のビットマップデータは、前述の通り、画素毎に文字、グラフィクス、又はイメージのいずれかの属性を有しているので、上記イメージの領域については、イメージの属性を有する画素を抜き出し、文字及びグラフィクスの属性を有する画素の部分は全て「白」色のデータ（Ｒ＝０ｘｆｆ、Ｇ＝０ｘｆｆ、Ｂ＝０ｘｆｆ）として抜き出したイメージの部分と合わせ、バンド領域を有するイメージ領域用のデータを生成する。一方、上記それ以外の領域についても、同様に、文字又はグラフィクスの属性を有する画素を抜き出し、イメージの属性を有する画素の部分は全て「白」色のデータ（Ｒ＝０ｘｆｆ、Ｇ＝０ｘｆｆ、Ｂ＝０ｘｆｆ）として抜き出した文字又はグラフィクスの部分と合わせ、バンド領域を有する文字及びグラフィクス領域用のデータを生成する。なお、アトリビュートデータについての書き換えは行わない。すなわち、両領域において各画素のアトリビュートは展開後と同様である。
【００５１】
図１０は、領域分離後の状態を例示した図である。図１０の（ａ）及び（ｂ）は、それぞれ、図４に例示した第３バンドの分離後のイメージ領域とそれ以外の領域を示している。上述の通り、双方ともバンド領域のデータとなっており、Ａで示す部分は、「白」色のデータとなっている。
【００５２】
次に、圧縮部３４は、前記分離したイメージ領域のデータについて実画像部分の抽出処理を行う（ステップＳ４０３）。具体的には、イメージが存在せず白色となっているバンド領域の左右の部分を削除する。図１１は、その様子を説明するための図である。図１１には、図１０の（ａ）に例示したイメージ領域が示され、この例では、元のバンド領域ＢＡのデータのうち、イメージが存在する実画像幅Ｂの中央部分（実線内）以外の部分が削除される。また、この処理には、前記展開処理で記憶しておいた、バンド左端からの距離の最小値（図中のＬ１）とバンド左端からの距離の最大値（図中のＬ２）が用いられる。
【００５３】
また、このバンド左端からの距離の最小値及び最大値、あるいは、バンド左端からの距離の最小値及び実画像幅Ｂを後述する画像の再現処理のために記憶しておく。このように、イメージ領域の左右の領域を削除することで圧縮して保持しておくべきデータ量を削減することができる。
【００５４】
次に、圧縮部３４は、上記抽出後のイメージ領域のデータからアトリビュートデータを削除する（ステップＳ４０４）。すなわち、上記抽出した画像データの各画素のアトリビュートが削除される。これにより、圧縮して保持しておくべきデータ量を更に削減することができる。
【００５５】
このように前処理をした上で、圧縮部３４は、まず、上記処理後のイメージ領域のデータをＤＣＴを用いた非可逆圧縮により圧縮し、ページバッファの所定箇所に記憶する（ステップＳ４０５）。
【００５６】
次に、圧縮部３４は、上記分離したイメージ以外の領域について、Ｒ、Ｇ、Ｂ、及び、アトリビュートのプレーン毎にハフマン符号を用いた可逆圧縮により圧縮し、ページバッファの所定箇所に記憶する（ステップＳ４０６）。なお、ＩｍａｇｅＦｌａｇがリセットの場合には（ステップＳ４０１のＮｏ）、展開されたそのバンドのデータをそのままハフマン符号を用いた可逆圧縮により圧縮し、ページバッファの所定箇所に記憶する。
【００５７】
このようにして圧縮処理が実行されるが、ページバッファには、どのバンドにおいてもハフマン符号を用いた可逆圧縮で圧縮されたデータが記憶され、イメージ領域（画像）のあるバンドのみ、それに加えてＤＣＴを用いた非可逆圧縮により圧縮されたデータが記憶される。図４に示した例では、第２及び第３バンドのみ非可逆圧縮により圧縮されたデータが記憶される。
【００５８】
次に、エンジン出力部３５（エンジンＩ／Ｆ９）により行われるエンジン出力処理について説明する。図１２は、本実施の形態例で想定しているレーザプリンタの場合の処理手順を例示したフローチャートである。ここでは、ＣＭＹＫ４色で印刷を実行する４サイクルのレーザプリンタを想定しているので、エンジン４に対しプレーン順に１ページ分の画像信号を出力する必要がある。従って、例えば、ＣＭＹＫの順番に、各色（プレーン）毎にステップＳ５０２〜Ｓ５０６の処理を実行する（ステップＳ５０１〜Ｓ５０７）。
【００５９】
各プレーンの処理では、先頭のバンドから最終バンドまで１バンド毎にステップＳ５０３〜Ｓ５０５の処理を実行する（ステップＳ５０２〜Ｓ５０６）。
【００６０】
各バンドの処理では、まず、バンド画像の再現の処理を実行する（ステップＳ５０３）。当該処理は本プリンタ２での特徴部分を含んでおり詳細は後述するが、圧縮されてページバッファに収められている画像データを伸張する。イメージ領域を含むバンドについては、前述した二つの圧縮データがあるのでそれらの合成の処理も行う。
【００６１】
その後、ＲＧＢで表現されている各画素の色の階調値がＣＭＹＫでの表現に変換され（ステップＳ５０４）、色変換後のデータについて処理中の色のプレーンいついてのみ（例えば、Ｃについてのみ）二値化処理等を施してエンジンへ出力する（ステップＳ５０５）。
【００６２】
このようにして、エンジンへの出力処理が行われるが、上記バンド画像の再現（Ｓ５０３）の処理について以下に説明する。図１３は、バンド画像の再現処理の手順を例示したフローチャートである。
【００６３】
ここでは、１バンドの処理について説明する。まず、対象バンドの、可逆圧縮された文字及びグラフィクスの領域のデータについて伸張（解凍）の処理を行う（ステップＳ５０３−１）。前述の通り、どのバンドもこの可逆圧縮されたデータを有している。そして、圧縮方法が可逆圧縮であるため伸張後は圧縮前の状態にもどる。すなわち、前記領域分離処理の終了後の状態にそのまま戻る。
【００６４】
次に、対象バンドにイメージ領域があるか否かをチェックし（ステップＳ５０３−２）、イメージ領域がない場合には（ステップＳ５０３−２のＮｏ）、当該バンドの再現処理を終了する。
【００６５】
一方、イメージ領域がある場合には（ステップＳ５０３−２のＹｅｓ）、その非可逆圧縮されたイメージ領域のデータを伸張（解凍）する（ステップＳ５０３−３）。これにより、前記圧縮処理の前の状態、すなわち、図９のＳ４０４の処理後の状態に戻るが、非可逆圧縮されているので、画像の劣化を生じしている。しかし、画像の種類が自然画等のイメージであるため伸張後もほぼ良好な品質を保持する。
【００６６】
その後、伸張したイメージ領域を前記伸張した文字及びグラフィクス領域と合成する（ステップＳ５０３−４）。その合成をするためには、イメージ領域の各画素に対応する文字及びグラフィクス領域の画素を決定する必要がある。言い換えれば、データ合成のための位置決めを行う必要がある。前述の通り、文字及びグラフィクス領域のデータはバンド領域のデータを有しており、また、イメージ領域のデータは左右部分を削除されたデータであり、バンド左端からの距離の最小値及び実画像幅が記憶されているので、上記位置決めを比較的容易に行うことができる。
【００６７】
また、実際の合成では、対応する画素について、Ｒ、Ｇ、Ｂのそれぞれについて論理積にて行い、合成後のデータ（画像）は文字及びグラフィクス領域のデータに書き戻す。また、文字及びグラフィクス領域のデータが有するアトリビュートデータについてはそのままとする。
【００６８】
以上の処理により、伸張した文字及びグラフィクス領域のデータ側に、再現されたバンド画像データが生成され、以降の前記色変換処理に用いられる。
【００６９】
なお、上記の説明では、レーザプリンタとして説明したが、インクジェットプリンタでは、このエンジン出力処理のタイミングは以下のようになる。図１４は、インクジェットプリンタの場合の処理手順を例示したフローチャートである。インクジェットプリンタ等においては、１ページについて、バンド毎にエンジン出力を行い（ステップＳ６０１〜Ｓ６０７）、各バンドの処理では、ステップＳ６０２〜Ｓ６０６の処理が実行される。
【００７０】
ステップＳ６０２におけるバンド画像の再現処理では、図１３に基づいて説明した再現処理が同様に実行される。その後、再現後のデータに対してＣＭＹＫ色空間への色変換処理がなされ（ステップＳ６０３）、変換後のデータについて、色毎に（プレーン毎に）（ステップＳ６０４〜Ｓ６０６）、出力タイミングに応じて二値化処理等を施してエンジン４へ出力する（ステップＳ６０５）。
【００７１】
以上説明したように、本実施の形態例に係るプリンタ２のコントローラ３では、中間コードからビットマップデータに展開する際に各画素に画像種類を示すアトリビュートデータを付加し、展開後の圧縮時には、当該アトリビュートデータを用いてイメージ領域とそれ以外の領域を分離し、分離後の各領域に異なる圧縮法を適用する。また、イメージ領域についてはＤＣＴを用いた非可逆圧縮で圧縮し、それ以外の領域についてはハフマン符号を用いた可逆圧縮で圧縮を行う。従って、文字・グラフィクス領域については品質を保持したまま画像再現ができ、また、イメージ領域についても、若干の画質劣化はあるものの概ね良好な品質を保持して画像再現ができる。また、各領域について高い圧縮率を得ることができる。更に、画像分離に画素毎に付加された上記アトリビュートデータを用いるので処理が容易であり確実な分離が行える。よって、本コントローラ３により、使用するメモリ容量を少なく抑えつつ高品質の画像出力を可能とする処理を効率よく実行できるようになる。
【００７２】
また、上記領域分離後、バンド領域の余白の部分を白のデータで埋めるので、伸張して合成する際に位置合わせを容易に行うことができる。
【００７３】
また、上記領域分離後、イメージ領域については、実画像の存在しないバンドの左右両端部を削除し、更に、アトリビュートデータについても削除してから圧縮する。従って、保持すべきデータ容量をさらに削減することができる。
【００７４】
また、中間コードを登録する際にイメージデータを含むバンドについては、その旨を示すフラグをセットするので、圧縮処理時に上記領域分離を行うか否かを直ぐに判断することができ、効率的な処理を図ることが可能である。
【００７５】
なお、本実施の実施の形態例では、ホストコンピュータ１からＰＤＬで印刷データが送信される場合で説明したが、いわゆるホストベースプリンタシステムであって、ホストコンピュータ１側で展開、圧縮処理までを実行し、生成、圧縮されたビットマップデータをプリンタ２に送信する場合、においても本発明を適用することが可能である。この場合においては、ホストコンピュータ１のプリンタドライバ１１とエンジンＩ／Ｆ９が本発明を適用した画像処理装置に相当し、やはり、上述のとおりの効果を得ることができる。また、圧縮後のデータの圧縮率が高いため、ホストコンピュータ１からのデータ送信量も小さく抑えることができる。
【００７６】
また、非可逆圧縮及び可逆圧縮の具体的な方法は一例であって、各画像種類に相応しいものであれば他の方法を用いることもできる。また、上記実施の形態例では、データがＲＧＢ表現の段階で圧縮、伸張すべき手法を用いるために、ＣＭＹＫへの色変換処理をエンジン出力時に行ったが、ＣＭＹＫ表現で圧縮、伸張が可能な手法を用いる場合には、展開処理後にＣＭＹＫ表現への色変換処理を実施し、その後に圧縮処理を行うようにすることもできる。その場合にも、圧縮、伸張については同様に行うことができる。
【００７７】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【図面の簡単な説明】
【００７８】
【図１】本発明を適用した画像処理装置の実施の形態例にかかる構成図である。
【図２】コントローラ３の機能構成を例示した図である。
【図３】印刷時にコントローラ３が実行する処理を例示したフローチャートである。
【図４】出力対処画像の一例を示した図である。
【図５】第３バンドに中間コードが登録される画像オブジェクトを示した図である。
【図６】中間コードの展開処理の手順を例示したフローチャートである。
【図７】１画素の展開後データについて例示した図である。
【図８】展開処理後の各画素が有しているアトリビュートの状態を示した図である。
【図９】圧縮処理の手順について例示したフローチャートである。
【図１０】領域分離後の状態を例示した図である。
【図１１】イメージ領域の実画像部分の抽出を説明するための図である。
【図１２】レーザプリンタの場合のエンジン出力処理を例示したフローチャートである。
【図１３】バンド画像の再現処理の手順を例示したフローチャートである。
【図１４】インクジェットプリンタの場合のエンジン出力処理を例示したフローチャートである。
【符号の説明】
【００７９】
１  ホストコンピュータ、  ２  プリンタ、  ３  コントローラ、  ４  エンジン、  ５  Ｉ／Ｆ、  ６  ＲＯＭ、  ７  ＲＡＭ、  ８  ＣＰＵ、  ９  エンジンＩ／Ｆ、  １１  プリンタドライバ、  ３１  言語解釈部、  ３２  中間コード登録部、  ３３  展開部（展開手段）、  ３４  圧縮部（圧縮手段）、  ３５  エンジン出力部
【図１】
2008193559.tif 000003
【図２】
2008193559.tif 000004
【図３】
2008193559.tif 000005
【図４】
2008193559.tif 000006
【図５】
2008193559.tif 000007
【図６】
2008193559.tif 000008
【図７】
2008193559.tif 000009
【図８】
2008193559.tif 000010
【図９】
2008193559.tif 000011
【図１０】
2008193559.tif 000012
【図１１】
2008193559.tif 000013
【図１２】
2008193559.tif 000014
【図１３】
2008193559.tif 000015
【図１４】
2008193559.tif 000016