(57)【要約】【課題】複数のグラフィックスが重なりあった画像を印刷する場合でも、グラフィックス自体を滑らかに表現するとともにそのエッジ部分がぼやけずシャープな画像を再現して高品質の画像を形成する画像処理装置やプログラムを提供する。【解決手段】画像展開部１０４において中間コードからオブジェクトの種別を判別し、さらに同色の連続する画素数を演算し、属性情報Ｘを生成する。Ｘ値変換部１１１では、この属性情報Ｘのうちオブジェクトの種別から処理対象の画素がグラフィックスか否かを判別する。オブジェクト画像がグラフィックスのとき、属性情報Ｘのうち連続する同色の画素数から連続した画素の最後の画素と、同色でないグラフィックスの最初の画素とでその階調値の差分を演算する。閾値以上のとき、異なるオブジェクトのグラフィックスのエッジ部分と判断する。このエッジ部分には解像度優先のハーフトーンテーブルを選択してハーフトーン処理を行う。【選択図】図８
2005151064.tif 000002
【特許請求の範囲】
【請求項１】
階調優先スクリーンと解像度優先スクリーンのいずれかを選択してハーフトーン処理を行う画像処理装置において、
画像の種別がグラフィックス画像で階調優先スクリーンが適用されるとき、前記グラフィックス画像のエッジ部分に対しては解像度優先スクリーンを選択する制御手段を備えたことを特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、
前記エッジ部分は、前記画像の種別がグラフィックスとイメージとの境界である、ことを特徴とする画像処理装置。
【請求項３】
請求項１記載の画像処理装置において、
前記制御手段は、前記グラフィックスの階調値の差分値が閾値以上のとき前記エッジ部分であるとして当該エッジ部分に前記解像度優先スクリーンを選択する、ことを特徴とする画像処理装置。
【請求項４】
請求項１記載の画像処理装置において、
さらに、前記画像の種別を示す情報を含む属性値を、前記グラフィクス画像のエッジ部分に対して前記解像度優先スクリーンが選択されるように変換する属性値変換手段を備え、
前記制御手段は前記属性値変換手段で変換された前記属性値に基づいて前記解像度優先スクリーンを選択する、ことを特徴とする画像処理装置。
【請求項５】
請求項４記載の画像処理装置において、
前記属性値変換手段は、前記属性値に含まれる同色の連続する画素の画素数を示す情報から、連続した画素の最後の画素とその次の画素との階調値の差分値が閾値以上のときに、前記属性値を前記解像度優先スクリーンが選択されるように変換する、ことを特徴とする画像処理装置。
【請求項６】
請求項１記載の画像処理装置において、
前記制御手段は、前記画像の種別が文字のとき解像度優先スクリーンを選択する、ことを特徴とする画像処理装置。
【請求項７】
請求項１記載の画像処理装置において、
前記制御手段は、前記画像の種別がイメージのとき階調優先スクリーンを選択する、ことを特徴とする画像処理装置。
【請求項８】
画像の種別に応じて階調優先スクリーンと解像度優先スクリーンとを選択してハーフトーン処理を行う画像処理のためのプログラムにおいて、
前記画像の種別がグラフィックス画像のとき階調優先スクリーンを選択し、さらにグラフィックス画像のエッジ部分に対しては解像度優先スクリーンを選択する処理を備えたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタや複写機などの画像処理装置、及び画像処理を行うプログラムに関する。詳しくは、グラフィックスのエッジ部分には解像度優先スクリーンを適用した画像処理装置及び、画像処理を行うプログラムに関する。
【背景技術】
【０００２】
従来から、カラープリンタ等の画像処理装置は、ホスト側から入力されたＲＧＢ画像データに対して色変換処理を行うことでＹＭＣＫ（イエロー、マゼンダ、シアン、ブラック）の色データに変換し、その後ハーフトーン処理を行うことで中間階調を表現して、印刷媒体に印刷画像を再生するようになされている。
【０００３】
一般にかかる画像処理においては、オブジェクト画像の種類によって最適なハーフトーン処理が選択される。すなわち、文字、グラフィックス、イメージの各画像の種類によって異なるハーフトーン処理が行われる。文字からなる画像は比較的細い線で構成され自然な階調を含まない画像である。したがって細い線を表現するためには、できるだけスクリーン線数の多くして解像度を優先したハーフトーン処理を行うのが好ましい。またイメージ画像は、広範囲にわたり自然な階調の変化が含まれる画像である。したがって、解像度は悪くなるがスクリーン線数を少なくして階調度を優先した処理を行うのが好ましい。さらに、グラフィクス画像は単色で構成される場合が多くスクリーン線数を多くすると広範囲で色むらが発生するため、イメージ画像と同様に階調度を優先した処理を行うのが好ましい。
【０００４】
従来は、階調度を優先したハーフトーン処理と解像度を優先したハーフトーン処理の２つのテーブルを用意し、オブジェクト画像の種類によって異なるテーブルを選択するようにしている（例えば以下の特許文献１）。
【特許文献１】特開平９−２８２４７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数のグラフィックスが重なりあった画像すべてに対して階調度を優先したハーフトーン処理を行うと各グラフィックスは自然な階調でなめらかに表現されているものの、重なりあったエッジの部分はぼやけてしまう、という問題点があった。エッジの部分に対してもスクリーン線数が少なく粗い網点としたハーフトーン処理を行っているため解像度が悪くなってしまうからである。
【０００６】
そこで、本発明は、複数のグラフィックスが重なりあった画像を印刷する場合でも、グラフィックス自体を滑らかに表現するとともにそのエッジ部分がぼやけずにシャープな画像を再現して高品質の画像を形成する画像処理装置やプログラムを提供することを目的とするものである。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、階調優先スクリーンと解像度優先スクリーンのいずれかを選択してハーフトーン処理を行う画像処理装置において、画像の種別がグラフィックス画像で階調優先スクリーンが適用されるとき、グラフィックス画像のエッジ部分に対しては解像度優先スクリーンを選択する制御手段を備えたことを特徴している。これにより、例えば、グラフィックスのエッジ部分がシャープな高品質の画像を印刷媒体等に形成することができる。
【０００８】
また、本発明は上記画像処理装置において、エッジ部分は画像の種別がグラフィックスとイメージとの境界である、ことを特徴としている。これにより、例えばグラフィックスどうしのエッジ部分のみならずグラフィックスとイメージとのエッジ部分も解像度優先スクリーンが適用されエッジ部分がシャープな高品質の画像を形成することができる。
【０００９】
さらに、本発明は上記画像処理装置において、制御手段はグラフィックスの階調値の差分値が閾値以上のときエッジ部分であるとして当該エッジ部分に解像度優先スクリーンを選択する、ことを特徴としている。これにより、例えば、グラフィックスが単色の場合が多いので階調値の差から異なるオブジェクトのグラフィックスを検出することができる。
【００１０】
さらに、本発明は上記画像処理装置において、さらに画像の種別を示す情報を含む属性値をグラフィクス画像のエッジ部分に対して解像度優先スクリーンが選択されるように変換する属性値変換手段を備え、制御手段は属性値変換手段で変換された属性値に基づいて解像度優先スクリーンを選択する、ことを特徴としている。これにより、例えば、属性値に基づいて階調優先スクリーンと解像度優先スクリーンとを選択するようになされた画像処理装置において簡易にエッジ部分に対して解像度優先スクリーンを選択することができる。
【００１１】
さらに、本発明は上記画像処理装置において、上記属性値変換手段は属性値に含まれる同色の連続する画素の画素数を示す情報から連続した画素の最後の画素とその次の画素との階調値の差分値が閾値以上のときに属性値を解像度優先スクリーンが選択されるように変換する、ことを特徴としている。これにより、例えば、エッジ部分を検出するため各画素ごと画素の階調値の差分値を演算する必要がなくなり処理の高速化を図ることができる。
【００１２】
さらに、本発明は上記画像処理装置において、上記制御手段は画像の種別が文字のとき解像度優先スクリーンを選択する、ことを特徴としている。これにより、例えば、文字の細かな線を表現した画像を印刷媒体等に形成することができ、高品質の画像を形成することができる。
【００１３】
さらに、本発明は上記画像処理装置において、上記制御手段は画像の種別がイメージのとき階調優先スクリーンを選択する、ことを特徴としている。これにより、例えば、自然な階調を表現した高品質の画像を印刷媒体等に形成することが可能となる。
【００１４】
また、上記目的を達成するために本発明は、画像の種別に応じて階調優先スクリーンと解像度優先スクリーンとを選択してハーフトーン処理を行う画像処理のためのプログラムにおいて、画像の種別がグラフィックス画像のとき階調優先スクリーンを選択し、さらにグラフィックス画像のエッジ部分に対しては解像度優先スクリーンを選択する処理を備えたプログラムであることを特徴としている。これにより、例えば、グラフィックスのエッジ部分がシャープな高品質の画像を印刷媒体等に形成するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明を実施するための最良の形態を説明する。図１は、本発明が適用される全体システムの構成例である。図１に示すように本システムは、ホストコンピュータ１と印刷装置２とから構成される。
【００１６】
ホストコンピュータ１は、ＣＰＵ１０と、表示部１１と、ＨＤＤ（Hard Disk Drive）１２と、ＲＯＭ１３と、ＲＡＭ１４、及びインターフェース（Ｉ／Ｆ）１５とから構成され、互いにバスを介して接続されている。ＣＰＵ１０はコンピュータ１内で画像処理等の各種の処理を行うためのものである。詳細は後述する。表示部１１は、ＣＰＵ１０の制御により印刷対象の画像等を表示する。ＨＤＤ１２は印刷対象の画像等を格納するためのもので、ＣＰＵ１０の制御により印刷対象の画像が格納され適宜読み出される。ＲＯＭ１３は本発明が適用されるプログラムや各種処理を行うためのプログラムが格納され、ＣＰＵ１０により適宜読み出されて処理が実行される。ＲＡＭ１４は、ＣＰＵ１０のワーキングメモリとしての役割を果たしＣＰＵ１０の実行結果等が格納される。Ｉ／Ｆ１５は、ＣＰＵ１０の制御により印刷対象の画像を所定の伝送フォーマットに変換して外部に出力するためのものである。
【００１７】
このように構成されたホストコンピュータ１では、ＨＤＤ１２に記憶された画像をＣＰＵ１０の制御により表示部１１に表示させ、ユーザによるホストコンピュータ１の操作によりＣＰＵ１０はＲＯＭ１３から画像処理のためのプログラムを読み出す。そして、ＣＰＵ１０でかかる処理が実行され適宜ＲＡＭ１４に画像処理後のデータが格納される等することでＩ／Ｆ１５から印刷対象の画像が出力される。
【００１８】
次に印刷装置２について説明する。印刷装置２は、ＣＰＵ２０と、インターフェース（Ｉ／Ｆ）２１と、ＲＯＭ２２と、ＲＡＭ２３と、印刷エンジン２４、そしてコントロールパネル２５とから構成され、バスを介して互いに接続されている。ＣＰＵ２０はＲＯＭ２２に格納されたプログラムを読み出して各種処理を実行するためのものである。Ｉ／Ｆ２１は、ホストコンピュータ１から所定の伝送フォーマットで出力された印刷対象の画像データが入力され、印刷装置２内で処理できるデータに変換する。ＲＯＭ２２はＣＰＵ２０が処理を実行するプログラムが格納される。ＲＡＭ２３はＣＰＵ２０のワーキングメモリとしての役割を果たし処理後のデータ等がＣＰＵ２０の制御により適宜格納される。印刷エンジン２４は、後述するレーザダイオードや感光体ドラム等から構成され、印刷媒体に対して実際に画像の印刷を行う。コントロールパネル２５は、印刷媒体の種別や枚数等を指定するためのものである。例えば液晶表示により指定できるようになされている。
【００１９】
このように構成された印刷装置２では、ホストコンピュータ１から画像データがＩ／Ｆ２１に入力され一旦ＲＡＭ２３に格納される。そしてＣＰＵ２０は適宜ＲＯＭ２２から印刷のためのプログラムを読み出して処理が実行され印刷のための駆動データを生成する。駆動データはＣＰＵ２０の制御により印刷エンジン２４に出力され、実際にホストコンピュータ１で生成した画像が印刷されることになる。
【００２０】
図２には、図１に示すシステムの機能ブロックの構成を示す。全体としてホストコンピュータ１と印刷装置２とから構成されるのは図１と同様である。図１に示すようにホストコンピュータ１は、アプリケーション部１０１とドライバ１１０とから構成される。なお、アプリケーション部１０１及びドライバ１１０は図１のＣＰＵ１０、ＲＯＭ１３、ＲＡＭ１４に対応するものである。
【００２１】
アプリケーション部１０１は、文字データ、図形データ、ビットマップデータ等の印刷対象のデータを生成する。ＲＯＭ１３に格納されたワードプロセッサや図形ツールなどのアプリケーションプログラムをＣＰＵ１０が読み出して実行することで、文字、やグラフィックス、図形などの印刷データが生成される。この印刷データは、所定の記述言語により表現されたデータである。例えば、ＰＤＬ（Page Description Language）や、ＧＤＩ（Graphic Device Interface）によるコマンド形式で印刷データは表現される。詳細は後述する。かかる言語で表現された印刷データはＣＰＵ１０の制御により、ドライバ１１０に出力される。
【００２２】
ドライバ１１０は図２に示すように、コマンド解析部１０２と、中間コード生成部１０３と、画像展開部１０４と、バンドメモリ１０５と、色処理部１０６、及び圧縮部１０７とから構成される。コマンド解析部１０２はアプリケーション部１０１と接続されるとともに、中間コード生成部１０３に接続される。コマンド解析部１０２は、アプリケーション部１０１からＧＤＩ等の言語で記述された印刷データが入力され、そのコマンド内容を解析しその結果を中間コード生成部１０３に出力する。
【００２３】
中間コード生成部１０３は、コマンド解析部１０２から出力された情報をもとに中間コードを生成して画像展開部１０４に出力する。この中間コードは後述するバンドメモリ１０５に対してどのように画像を格納させるかの情報を示すものである。画像展開部１０４は、中間コード生成部１０３からの中間コードが入力され、このコードをもとにバンドメモリ１０５に対して実際にＲＧＢ階調データをメモリ１０５に格納、展開させる。また、画像展開部１０４は、中間コードからオブジェクト画像（印刷対象の画像）の種類（文字、グラフィックス、イメージ）を判別するとともに同色の連続する画素の数を演算する。そして、画像の種別と連続する同色の画素数に関する情報を含む属性情報Ｘを生成する。生成した属性情報Ｘもバンドメモリ１０５に展開される。詳細は後述する。
【００２４】
バンドメモリ１０５は、画像展開部１０４からのＲＧＢ階調データが入力されＣＰＵ１０の制御によりＲＧＢ階調データが格納される。図３にバンドメモリ１０５の構成例を示す。ＲＧＢの各値は本実施例では８ビットで表現され（各ＲＧＢごとに０から２５５までの値を有する）、さらに属性情報Ｘも各画素ごとに格納される。またメモリ１０５上の各座標位置は印刷媒体上の座標位置に対応する。したがってオブジェクト画像の配置をメモリ１０５上で対応するように配置させることで所望の印刷画像が得られる。
【００２５】
色処理部１０６は、バンドメモリ１０６に接続されるとともに圧縮部１０７に接続される。色処理部１０６の構成を図４に示す。図４に示すように、色処理部１０６はＸ値変換部１１１と、色変換部１１２と、ハーフトーン処理部１１３とから構成される。Ｘ値変換部１１１は、バンドメモリ１０５からＲＧＢ階調データと属性情報Ｘが入力され、属性情報Ｘのうちオブジェクトの種別を示す情報からグラフィックスの画素を検出し、また属性情報Ｘのうち連続する同色の画素数と画素の階調値とからグラフィックスのエッジ部分を検出する。そして、属性情報Ｘがグラフィックスの場合で、異なるグラフィックスどうしが重なるエッジ部分を検出すると属性情報Ｘの値を書き換える。このＸ値の書き換えに関する処理については後述する。ＣＰＵ１０によって、属性情報Ｘはハーフトーン処理部１１３に出力され、ＲＧＢ階調データは色変換部１１２に出力される。
【００２６】
色変換部１１２は、色変換処理部１３１と色補正テーブル１３２とから構成される。色変換処理部１３１は、Ｘ値変換部１１１から出力されたＲＧＢ階調データが入力され、テーブル１３２を読み出してＣＭＹＫの色データに変換する。変換されたＣＭＹＫデータはＣＰＵ１０によりハーフトーン処理部１１３に出力される。
【００２７】
ハーフトーン処理部１１３は、実際にハーフトーン処理を行うハーフトーン処理部１５１と、２つのハーフトーンテーブル１５３Ａ、１５３Ｂ、およびスイッチング部１５２とから構成される。ハーフトーンテーブル１５３Ａは、階調優先のテーブル、すなわち、テーブル１５３Ｂよりも大きな網点でスクリーン線数が少ないテーブルである。一方、ハーフトーンテーブル１５３Ｂは、解像度優先のテーブル、すなわちテーブル１５３Ａよりも小さな網点でスクリーン線数が多いテーブルである。Ｘ値変換部１１１からの属性情報Ｘによりスイッチング部１５２でテーブルを切替えるように構成される。例えば、属性情報Ｘのうち画像の種別がイメージやグラフィックを表すとき、階調優先のテーブルであるテーブル１５３Ａを選択するように切替えられ、文字を表すときは解像度優先のテーブルであるテーブル１５３Ｂを選択するように切替えられる。なおスイッチング部１５２の切替えはＣＰＵ１０の制御により行われる。このようにテーブル１５３Ａ、１５３Ｂを切替えることにより、文字を印刷するときは細い線が欠けることなく印刷媒体に再生され、グラフィックスやイメージの場合解像度はよくないが自然な階調の変化を再現でき、高品質の印刷を行うことができる。さらに、本発明では１ページ中に複数のグラフィックスが存在して互いに重なっているとき、その重なりあったエッジの部分ではＸ値変換部１１１において画像の種類をグラフィックスから文字を表す情報に書き換えてＸを出力するようにしている。そのため、かかるグラフィックス同士のエッジの部分は解像度優先テーブル１５３Ｂが選択されてハーフトーン処理を行うようにしている。したがって、グラフィックス同士のエッジの部分では解像度がよくシャープなエッジを再現した高品質の画像を形成することができるのである。ハーフトーン処理後のデータは圧縮部１０７に出力される。
【００２８】
図２に戻り、圧縮部１０７はハーフトーン処理後のデータを圧縮する。印刷装置２への転送効率を高めるためである。例えば、多く出現するコードに少ないビットを割り当て出現率が少ないコードに多いビットを割り当てて平均符号長を短くするハフマン符号化により行われる。もちろん、それ以外の圧縮方法でもよい。圧縮された印刷対象のデータはＣＰＵ１０の制御によりＩ／Ｆ１５から所定の伝送フォーマットにより印刷装置２に出力される。
【００２９】
以上のように構成されたホストコンピュータ１の実際の動作について以下説明する。アプリケーション部１０１によって図５（ａ）の画像が生成された場合で説明する。まず、図５（ａ）は、背後には山の風景からなるイメージが存在する。そして中央付近に矩形のグラフィックス３００と円のグラフィックス３０１とがある。２つのグラフィックスは互いに一部で重なり合っている。さらに、円のグラフィックス３０１上に文字“Ａ”がある。このような画像は、アプリケーション部１０１において所定のプログラムを実行させ、表示部１１に表示された画像を図示しないキーボードやマウスの操作によって作成されるものとする。
【００３０】
作成された画像は、上述したように所定の言語により表現される。図５（ｂ）には、図５（ａ）に示す画像をＰＤＬ言語で表現した例を示す。この例を説明すると、まずイメージはコマンド“image"で表現される。そして、その引数は左から順に、イメージの開始位置のｘ座標（Ｘ１）、ｙ座標（Ｙ１）、その横幅（Ｗ１）、縦幅（Ｈ１）、そして各画素のＲＧＢ階調値、となる。ＲＧＢ階調データは、横幅Ｗ１、縦幅Ｈ１に含まれるすべての画素の階調データが含まれる。上述したように階調データは本実施例では２５６階調を有し、したがって各画素の各ＲＧＢごとに８ビットで表現している。
【００３１】
矩形のグラフィックス３００はコマンド“Line”、円のグラフィックス３０１は“Circle”で表現される。まずコマンド“Line”は、その引数に開始位置のｘ座標（Ｘ２）、ｙ座標（Ｙ２）、横幅（Ｗ２）、縦幅（Ｈ２）、矩形の色を示すＲＧＢ階調値を有する。コマンド“Circle”は、中心位置のｘ座標（Ｘ３）、ｙ座標（Ｙ３）、半径（Ｌ）、円すべてを色表現するか否かを示すフラグ（FILL）、そして円の色を示すＲＧＢ階調値からなる。
【００３２】
また文字の場合は、コマンドが“Char”によって表現され、開始位置のｘ座標（Ｘ４）、ｙ座標（Ｙ４）、そのサイズ（SIZE）、文字の色を示すＲＧＢ値、そして文字として表現するキャラクタ（図５（ａ）の場合は“Ａ”）を引数にもつ。かかるＰＤＬによる描画コマンドはＲＯＭ１３に格納されたプログラムを実行することで生成されるものとする。これらの描画コマンドが、図２においてアプリケーション部１０１からコマンド解析部１０２に出力されるのである。
【００３３】
コマンド解析部１０２は、この各描画コマンドを解析して各コマンドがどのようなコマンドであるかを示す情報を出力する。例えば“image"が入力されると、オブジェクト画像はイメージであること、またその開始位置の座標と、幅等の情報を出力する。各ＲＧＢ階調値も出力する。
【００３４】
中間コード生成部１０３はかかる情報から中間コードを生成する。その例を図６（ａ）に示す。図に示すように中間コードは各バンドごとに生成される。バンド１には、このバンドにイメージが格納されることを示す“image”、その開始位置の座標、同様に横幅“Ｗ１”、縦幅“Ｈ１４”、そして各画素ごとのＲＧＢ階調値によって表現される。ここで座標は、各バンドの最も左の最も下に位置する座標を（０，０）とした位置により表現されることになる。図５（ａ）に示すようにこのバンド１には全体にわたり画像を表現しているため開始位置が（０，０）となっている。
【００３５】
バンド２の領域には、矩形のグラフィックス３００とイメージが存在する。まず矩形のグラフィックス３００は、その色を表現する“Color”、矩形であることを示す“Rectangle”、そして開始位置の座標、横幅、縦幅と表現される。この場合、矩形のグラフィックス３００の開始位置は、バンド１と同様にバンド２の最も左の最も下の位置を（０，０）としたときの座標位置である（図６（ａ）にあるように“（Ｘ２２、Ｙ２２）”となる）。また縦幅は、“Ｈ２２”として表現される。なお、この“Ｈ２２”はバンド２全体の縦幅Ｈ１３と同じ値となっている。さらにこのバンド２にはイメージが全体に存在するので、“image”、その開始位置“（０，０）”、横幅“Ｗ１”、縦幅“Ｈ１３”、そして各ＲＧＢ値が中間コードとして表現される。
【００３６】
バンド３の領域には、イメージと矩形及び円のグラフィックス３００、３０１、そして文字のオブジェクト画像が存在する。まず矩形グラフィックス３００の中間コードは、バンド２で表現した矩形グラフィックス３００とほぼ同様である。ただし、開始位置はバンド３内での開始位置であるため、“（Ｘ２１，Ｙ２１）”となる。また、矩形グラフィックス３００の色も各バンドごとに設定させる必要があるため、“Color”が付加されている。バンド２の色と同じ場合は、バンド２と同じＲＧＢ値がその引数として表される。
【００３７】
円のグラフィックス３０１は、その円の色を表現する“Color”、水平線を示す“L-set”、その個数を示す“Ｎ”、開始位置座標“（Ｘ３１、Ｙ３１）”と、横幅“Ｗ３１”とによって表現される。円は複数の水平線により表すことができるため、この中間コードではその個数により円を表現している。また開始位置の座標と横幅は、水平線ごとに表され、水平線のメモリ１０５上最も上にある1本目の水平線から表されることにとなる。
【００３８】
文字の中間コードは、図６（ａ）に示すように、“putimagecache”、“メモリ番号”、開始位置の座標、横幅、縦幅で示される。表示すべき文字はＲＡＭ１４（キャッシュ）に格納されているため、文字キャッシュ描画であることを示す、“putimagecache”とその文字が格納されたキャッシュのメモリ番号を中間コードに記述することで、キャッシュに格納された文字を読み出して、バンドメモリ１０５に格納するようにしている。図６（ａ）の場合、“Ａ”という文字がＲＡＭ１４でメモリ番号“１０”に格納されているときは“１０”という中間コードになる。座標位置“（Ｘ４１、Ｙ４１）”は、バンド３の（０，０）からの位置座標を示すことは上述の場合と同様である。
【００３９】
さらに、バンド３には全体にイメージが存在するので、“Image、（０，０）、Ｗ１、Ｈ１２”と表現される。“Ｈ１２”は、図示した例ではバンド３の縦幅と同じ値となる。バンド４にも全体にイメージが存在するので同様に表現される。
【００４０】
このような中間コードの生成は、例えばＲＯＭ１３に格納されたプログラムをＣＰＵ１０が読み出して入力された描画コマンドの解析情報から上述した中間コードが生成される。そして、生成された中間コードは画像展開部１０４に出力される。
【００４１】
画像展開部１０４ではかかる中間コードの情報からバンドメモリ１０５にＲＧＢ階調データを展開、格納させる。例えば、バンド１の中間コードから座標位置（０，０）を開始位置とし横幅Ｗ１、縦幅Ｈ１４のイメージをバンドメモリ１０５に展開させることになる。そして、各バンドごとに図６（ｂ）に示すようにアプリケーション部１０１で生成された画像がバンドメモリ１０５に展開される。
【００４２】
ここで画像展開部１０４は、上述したように属性情報Ｘを生成する。この情報Ｘには、オブジェクトの種別に関する情報、同色の連続する画素の数に関する情報、その他の情報が含まれる。そのうち、オブジェクトの種別は以下のようにして生成する。すなわち、中間コードにおいて各オブジェクト特有のコードが存在する。例えばイメージの場合は“Image”、グラフィックスの場合は“Rectangle”や“L-set”、文字の場合は“putimagecache”、である。したがってかかる中間コードを検出することによってそのオブジェクト画像が文字か、グラフィックスか、イメージかを判別することができる。属性情報Ｘは本実施例では８ビット用意されているので、そのうち２ビットを利用してオブジェクトの種別を表わしている。
【００４３】
さらに属性情報Ｘには同色の連続する画素の数を示す情報も格納される。同色が連続している場合にその後の色変換やハーフトーン処理で同じ処理を繰り返すのではなく、一度行った以前の処理の値を利用することで処理の効率を上げることができる。また本発明ではこの情報をもとにグラフィックスのエッジの部分を検出するようにしている。
【００４４】
ここで、連続する同色の画素数は以下のようにして求めることができる。すなわち、１つのバンドに対して全てのオブジェクト画像を展開した後、バンドデータをＣＰＵ１０がスキャンすることで画素数を求める。例えば図７に示す矩形のグラフィックス３００と円のグラフィックス３０１とが重なっているときでも、バンドメモリ１０５に展開された各画素を左から順にスキャンし、矩形のグラフィック３００と円のグラフィックス３０１との画素数をそれぞれ求めることになる。円と矩形のエッジの部分ではその階調値に変化があるため、階調値に変化がある前までが例えば矩形のグラフィックス３００の連続する画素の数（図７に示すように任意のｙ座標（Ｙｉ）においては、ｍ個）、変化後が円のグラフィックス３０１の画素の数（同様にしてｎ個）として演算することができる。
【００４５】
以上の演算により、属性情報Ｘにかかる連続する同色の画素数の情報を含めさせることができるのである。そして、この属性情報Ｘは図３に示すようにＲＧＢ階調値とともにバンドメモリ１０５に展開、格納されるのである。
【００４６】
バンドメモリ１０５に格納されたデータは、ＣＰＵ１０の制御により色処理部１０６のＸ値変換部１１１に出力される。Ｘ値変換部１１１では、ＲＧＢ階調データと属性情報Ｘのうち連続する同色の画素数とから異なるグラフィックスのエッジを検出する。そして、そのエッジを検出するとその属性情報Ｘのうちオブジェクトの種別をグラフィックスから文字に書き換える。このように種別を書き換えることで、ハーフトーン処理において解像度優先のテーブルを選択して処理を行うことができるからである。このＸ値変換部１１１におけるＸ値書き換え処理の動作を示すフローチャートを図８に示す。
【００４７】
まず、ホストコンピュータ１のＣＰＵ１０はＲＯＭ１３から属性情報Ｘの書き換え処理に関するプログラムを読み出すことで処理が開始される（ステップＳ１０）。次いで、ＣＰＵ１０はバンドメモリ１０５からＲＧＢ階調データと属性情報Ｘを読み出す（ステップＳ１１）。例えば、各画素ごとに階調データと属性情報ＸとをＣＰＵ１０は読み出す。次いで、ＣＰＵ１０は読出したＲＧＢ階調データがラスタの先頭または末尾であるか否か判断する（ステップＳ１２）。ラスタの先頭とはバンドメモリ１０５上最も左側に位置する画素のことで、末尾とはバンドメモリ１０５上で最も右側に位置する画素のことである。エッジを検出するためには、ラスタの先頭と末尾に位置する画素は必ずしも必要ないからである。ラスタの先頭または末尾でないと（本ステップＳ１２で“ＮＯ”）、処理はステップＳ１３に移行する。
【００４８】
ステップＳ１３において、ＣＰＵ１０は属性情報Ｘのうちオブジェクトの種別情報に変化があったか否か判断する（ステップＳ１３）。オブジェクト画像がイメージからグラフィックスに変化した場合や、グラフィックスから文字に変化した場合など、オブジェクト画像が切替わったか否かを検出するためである。オブジェクトの種別に変化がないと（本ステップで“ＮＯ”のとき）、処理はステップＳ１４に移行する。
【００４９】
ステップＳ１４においてＣＰＵ１０は、オブジェクトの種別がグラフィックスか否かを検出する（ステップＳ１４）。オブジェクトの種別に変化がなく、かつ、グラフィックスの領域の画素であることを検出して、グラフィックスどうしのエッジの部分を検出するためである。種別がグラフィックスであれば（本ステップで“ＹＥＳ”のとき）、処理はステップＳ１５に移行する。
【００５０】
ステップＳ１５においてＣＰＵ１０は、ＲＧＢ階調値の差分値が閾値を超えるか否か判断する。前画素の階調値と処理対象の画素の階調値との差分をとって、その値が閾値を超えた場合は、階調値の変化が大きい領域、すなわち同じグラフィックスでもオブジェクトの異なるグラフィックスの画素に変化したものと考えられる。したがって、差分値が閾値以上のときは２つの異なるオブジェクトのエッジの部分となる。このように前画素の階調値との差分でグラフィックス同士のエッジの部分を検出するのである。なお、差分値の演算は、属性情報Ｘのうち連続する同色の画素数の情報を利用する。すなわち、属性情報Ｘのうち同色の連続する画素数から、グラフィックス領域でどの画素まで同じ色の画素が続くのか、同じＲＧＢ階調値が続くのかをＣＰＵ１０は把握することができる。そして、連続する画素の最後の画素と、同色でなくなる次の画素とを比較することでＣＰＵ１０はエッジ部分を検出するのである。これにより、毎回画素を比較することに比べて計算量を減らし高速印刷を行うことができる。もちろん、毎回画素を比較することでも本発明の効果を奏することはいうまでもない。
【００５１】
閾値を超えたとき（ステップＳ１５で“ＹＥＳ”のとき）、ＣＰＵ１０は、エッジ部分の領域と判断されるので属性情報Ｘのうちオブジェクトの種別をグラフィックスから文字に書き換える（ステップＳ１６）。これにより、ハーフトーン処理で階調優先のテーブルから解像度優先のテーブルを選択することによりエッジ部分をシャープに印刷することができる。
【００５２】
次いでＣＰＵ１０は、処理対象の画素が末尾の画素か否かを判断する（ステップＳ１７）。末尾の画素とはバンドメモリ１０５上で最も右側の最も下に位置する画素である。ＣＰＵ１０がこの画素をバンドメモリ１０５から読み出すと（本ステップＳ１７で“ＹＥＳ”のとき）、すべての画素に対する属性情報Ｘの書き換え処理が終了することになる（ステップＳ１８）。また、末尾の画素でないときは（ステップＳ１７で“ＮＯ”のとき）、処理はステップＳ１１に移行し、すべての画素に対する処理が行われるまで上述の処理が繰り返されることになる。
【００５３】
一方、ステップＳ１５でＲＧＢ階調値の前画素との差分値が閾値を超えないとき（ステップＳ１５で“ＮＯ”のとき）、同じオブジェクト画像のグラフィックス領域であると判断できるので、属性情報Ｘのうちオブジェクトの種別をグラフィックスから文字に変更する（ステップＳ１６）ことはせずに、ステップＳ１７に移行することになる。
【００５４】
また、ステップＳ１４でグラフィックスでないとき（“ＮＯ”のとき）、処理対象の画素は文字またはイメージの領域であると判断される。イメージは階調性を重視するため、そして文字は解像度を重視するため、オブジェクトの種別の変更の処理を行う必要がない。したがって、属性値の変更処理（ステップＳ１５、Ｓ１６）を行わずにステップＳ１７に移行することになる。
【００５５】
さらに、ステップＳ１３でＸに変化があったとき（“ＹＥＳ”のとき）、すなわち属性情報Ｘのうちその種別に変化があったとき、処理はステップＳ１９に移行する。そして、ステップＳ１９で種別がＸ１（ここでは文字の種別を表す）に変化したのか否か判断する。イメージやグラフィックスから文字に種別が変わったときは、文字に対して解像度を優先したテーブルが選択されるので文字とのエッジの部分はシャープになるので問題はない。しかし、それ以外にオブジェクトの種別が変わったとき、すなわち、イメージからグラフィックス、グラフィックスからイメージに変わったとき、イメージ及びグラフィックス共に階調優先テーブルによりハーフトーン処理が行われるため、そのエッジの部分ではシャープな画像とならずぼやけて画像が形成される。よって、Ｘ１に変化したか否かを検出することで、イメージからグラフィックスにあるいはその逆に種別が変更されたか否かを検出するのである。文字に変更されたとき（本ステップで“ＹＥＳ”）のとき、種別の変更を行わずに処理はステップＳ１７に移行する。それ以外のとき（本ステップで“ＮＯ”のとき）、処理はステップＳ２０に移行して属性情報Ｘのうちオブジェクトの種別をグラフィックスから文字に変更する。その後処理はステップＳ１７に移行して上述の処理を繰り返すことになる。
【００５６】
さらにステップＳ１２でラスタの先頭または末尾であるとき（“ＹＥＳ”のとき）、上述の処理は必要ないのでステップＳ１７に移行することになる。
【００５７】
図９にはかかるＸ値変換部１１１における変更処理を行った場合の属性情報Ｘが切替わった場合を模式的に示す。図９（ａ）は、図５（ａ）と同じ画像である。このうち、矩形のグラフィックス３００と円のグラフィックス３０１とが重なりあっている領域を表したのが図９（ｂ）及び図９（ｃ）である。
【００５８】
図９（ｂ）で１つのマスは１画素を表し、Ｘｎ（ｎ＝１、２、３）は属性情報Ｘのうちオブジェクトの種別を表すものである。図に示すように、Ｘ１は文字、Ｘ２はグラフィックス、Ｘ３はイメージを示す。図９（ｂ）、（ｃ）で太線はグラフィックス３００、３０１のエッジの部分を示す。ここで、図９（ｂ）、（ｃ）上で説明の便宜のため最も上の最も左側に位置する画素の座標を（０，０）、最も上の最も右側に位置する画素の座標を（７，０）、最も左の最も下に位置する画素の座標を（０，５）と表す。
【００５９】
まず図９（ｂ）の画素（１，０）から（１，３）にかけての画素は、グラフィックス３００の縦線が存在する画素である。よって、イメージからグラフィクスに切替わるエッジの画素（１，０）、（１，１）等は、図８のステップＳ１３で“ＹＥＳ”が選択され、さらに、イメージからグラフィックスに変化しているためステップＳ１９で“ＮＯ”が選択され、ステップＳ２０において種別がグラフィックスを示すＸ２から文字を示すＸ１に切替えられる（図９（ｃ）参照）。また、（５，０）の画素はグラフィックスとイメージのエッジの部分である。ここでも次の画素（６，０）でイメージに変化しているのでステップＳ１３で“ＹＥＳ”が選択され、ステップＳ１９で“ＮＯ”が選択されて、属性情報Ｘのうちの種別情報がＸ２（グラフィックス）からＸ１（文字）に切替わることになる。
【００６０】
また画素位置（４，３）においてはグラフィックス３００からグラフィックス３０１に切替わっている。まず、画素（１，３）においてイメージ（Ｘ３）からグラフィックス（Ｘ２）に切替わっている。グラフィックス３００内はすべて同色とする。そして、属性情報Ｘには上述したように同色の連続する画素数が含まれているので、ＣＰＵ１０はこの情報を属性情報Ｘから読み出して画素（３，３）までの３つの画素が同色と判断できる。したがって、図８のステップＳ１５における差分値の演算はこの３つ目の画素（３，３）と、次の画素（４，３）とが処理対象となる。なお、この２つ画素は同じグラフィックス（Ｘ２）の画素である（ステップＳ１３で“ＮＯ”が選択され、ステップＳ１４で“ＹＥＳ”が選択される）。
【００６１】
そして、実際に２つの画素の差分値が閾値を超えているとしたとき、この（４，３）の画素は異なるグラフィックスのエッジの部分であるとしてその種別をグラフィックスから文字に変更する（ステップＳ１６、図９（ｃ）参照）。（３，４）に位置する画素も全く同様である。
【００６２】
その後、図４に示すように色変換、そして属性情報Ｘのオブジェクトの種別に応じたハーフトーン処理を行い、圧縮部１０７にてハーフトーン処理後のＣＭＹＫ階調データが圧縮されてプリンタ２に転送されるのである。
【００６３】
プリンタ２は、図２に示すように解凍部２０１と、パルス幅変調部２０２と、印刷エンジン２４とから構成される。印刷エンジン２４は、レーザダイオード２４１と感光体ドラム２４２とから構成される。ホストコンピュータ１から転送されたデータは解凍部２０１にて解凍され、ホストコンピュータ１での圧縮前のデータに戻されることになる。そして、パルス幅変調部２０２にてレーザ駆動パルス有りまたは無し等を示す駆動データを生成して、印刷エンジン２４に出力する。レーザドライバ２４１はこの駆動データに基づいて、感光体ドラム２４２や図示しない転写ベルト、ローラ等を駆動させ、実際に印刷媒体にホストコンピュータ１で生成した画像が印刷されるのである。なお、印刷装置２の解凍部２０１とパルス幅変調部２０２とは図１のＣＰＵ２０と、ＲＯＭ２２、及びＲＡＭ２３に対応するものである。
【００６４】
以上説明してきたように本発明によれば、グラフィックスのエッジの部分は解像度優先のテーブルによりハーフトーン処理が行われたため、エッジの部分がシャープな画像となり全体として高品質の印刷を行うことができる。
【００６５】
上述の例では、印刷装置２としてレーザプリンタの例で説明したが、ヘッドから各色のインクを吐出させて印刷を行うインクジェットプリンタやさらにはバブルジェット（登録商標）プリンタ等のプリンタであってもよい。また、印刷装置２としてプリンタ以外にも複写機やファクシミリ、またはこれらの機能を備えた複合機であっても本発明を適用でき同様の効果を奏する。
【００６６】
また、ホストコンピュータ１の例として、例えばパーソナルコンピュータ、さらには携帯電話やＰＤＡ（Personal Digital Assistance）などの情報携帯端末であってもよい。このような機器がＸ値変換処理を含む色処理を行い、印刷装置２に転送できればよい。
【００６７】
また上述の例では、ホストコンピュータ１で属性情報Ｘの変換処理を含めた色処理を行うとして説明したが、印刷装置２側で行われても上述したものと同様の効果を奏する。
【図面の簡単な説明】
【００６８】
【図１】本発明が適用されるシステムの構成図である。
【図２】本発明が適用されるシステムの機能ブロックの構成図である。
【図３】バンドメモリ１０５の構成例を示す図である。
【図４】色処理部１０６の構成例を示す図である。
【図５】画像の一例とその画像を表現した描画コマンドの例である。
【図６】中間コードの例とバンドメモリに画像を展開したときの図である。
【図７】画素数を演算するときの例を示す図である。
【図８】Ｘ値変換部１１１で実行される処理の動作を示すフローチャートである。
【図９】画像の一例と属性情報が変更されたときの状態を示す図である。
【符号の説明】
【００６９】
１  ホストコンピュータ    ２  印刷装置    １０  ＣＰＵ    １３  ＲＯＭ    １４  ＲＡＭ    １０１  アプリケーション部    １０３  中間コード生成部    １０４  画像展開部    １０５  バンドメモリ  １０６  色処理部    １１１  Ｘ値変換部    １１２  色変換部    １１３  ハーフトーン処理部    １５１  ハーフトーン処理部    １５３Ａ  ハーフトーンテーブル１    １５３Ｂ  ハーフトーンテーブル２    ３００  矩形のグラフィックス    ３０１  円のグラフィックス    Ｘ１  オブジェクト画像の種別が文字であることを示す値    Ｘ２  オブジェクトの種別がグラフィックスであることを示す値    Ｘ３  オブジェクト画像の種別がイメージであることを示す値
【図１】
2005151064.tif 000003
【図２】
2005151064.tif 000004
【図３】
2005151064.tif 000005
【図４】
2005151064.tif 000006
【図５】
2005151064.tif 000007
【図６】
2005151064.tif 000008
【図７】
2005151064.tif 000009
【図８】
2005151064.tif 000010
【図９】
2005151064.tif 000011