(57)【要約】【課題】画像処理に関する技術を提供する。【解決手段】画像を表す画像データに基づいて印刷データを生成する画像処理装置であって、画像データからエッジを形成する画素であるエッジ画素の位置を検出するエッジ検出部と、エッジ画素の位置に基づいて、エッジに対応して形成されるドットのうち、最外郭に位置するドットのドットサイズを第１のドットサイズに決定し、エッジに対応して形成されるドットのうち、最外郭に形成するドットの位置である最外郭ドット位置を、エッジを形成する画素群の線幅方向に移動させた位置に決定する線幅変更処理を行うドット決定部とを備える画像処理装置。【選択図】図１
2010278714.tif 000002
【特許請求の範囲】
【請求項１】
画像を表す画像データに基づいて印刷データを生成する画像処理装置であって、
前記画像データからエッジを形成する画素であるエッジ画素の位置を検出するエッジ検出部と、
前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する線幅変更処理を行うドット決定部と
を備える画像処理装置。
【請求項２】
請求項１記載の画像処理装置であって、
前記ドット決定部は、前記エッジに対応して形成される前記ドットのうち、前記最外郭に位置する前記ドットに対して前記線幅方向内側に隣接して位置する前記ドットのドットサイズを前記第１のドットサイズよりも大きい第２のドットサイズに決定する画像処理装置。
【請求項３】
請求項１または２記載の画像処理装置であって、
前記線幅変更処理は、前記最外郭ドット位置を、前記エッジを形成する画素群の線幅方向内側に移動させた位置に決定する細線処理である画像処理装置。
【請求項４】
請求項１または２記載の画像処理装置であって、
前記線幅変更処理は、前記最外郭ドット位置を、前記エッジを形成する画素群の線幅方向外側に移動させた位置に決定する太線処理である画像処理装置。
【請求項５】
請求項３または４記載の画像処理装置であって、
前記線幅変更処理は、該線幅変更処理によって移動させる前記最外郭ドット位置の移動画素数を、前記エッジを形成する画素群の前記線幅方向の画素数に基づいて設定可能である画像処理装置。
【請求項６】
請求項５記載の画像処理装置であって、
前記線幅変更処理は、前記印刷データに基づく印刷に用いる印刷媒体の種類に対応して前記移動画素数を決定する画像処理装置。
【請求項７】
画像を表す画像データに基づいて印刷データを生成する画像処理装置と、前記印刷データに基づいて印刷を行う印刷装置とからなる印刷システムであって、
前記画像処理装置は、
前記画像データからエッジを形成する画素であるエッジ画素の位置を検出するエッジ検出部と、前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する線幅変更処理を行うドット決定部と、前記ドット決定部が決定した前記ドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成するデータ合成部とを備え、
前記印刷装置は、前記印刷データに含まれる、前記ドット決定部が決定した前記ドットの前記ドットサイズおよび前記ドットの位置に基づいて印刷を行う
印刷システム。
【請求項８】
画像を表す画像データを処理する画像処理方法であって、
前記画像データからエッジを形成する画素であるエッジ画素の位置を検出し、
前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、
前記エッジに対応して形成する前記ドットのうち、前記最外郭に形成される前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定し、
前記決定した前記インクドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成する
画像処理方法。
【請求項９】
画像を表す画像データに基づいて印刷データを生成する画像処理をコンピューターに実行させるコンピュータープログラムであって、
前記画像データからエッジを形成する画素であるエッジ画素の位置を検出する機能と、
前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定する機能と、
前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する機能と、
前記決定した前記インクドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成する機能と
を前記コンピューターに実現させるコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理の技術に関する。
【背景技術】
【０００２】
紙やフィルム等の各種印刷媒体にドットを形成して画像を印刷するとして、インクジェットプリンターが知られている。インクジェットプリンターはインクを印刷媒体に向けて吐出して印刷媒体上にインクドットを形成することにより印刷媒体に画像を印刷する。インクジェットプリンターでは、インクを吐出したときに、印刷媒体に着弾したインクが滲み、輪郭がぼやけてしまうといった不具合を発生することがあった。このため、文字や記号等の輪郭がはっきりせず、読みにくくなったり、見栄えが悪くなるなどと言った現象が生ずることがある。従来、このような現象を解決するために以下のような技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１０９８０２
【特許文献２】特開２００６−６７２９４
【特許文献３】特許第３０２９５３３
【０００４】
これらの技術は、印刷の際に吐出するインク量を調整することにより、文字、線画の品質を高めるものである。特許文献１はハーフトーン処理前のデータに対して、隣接画素の色差を判定し、判定結果に応じてデータの濃度を低下させ、濃度低下後のデータに対して誤差拡散を行うものである。特許文献２は、エッジ部分と判定された画素について、ハーフトーン処理後のドットサイズを一定以上増やす処理を行うものである。特許文献３は、エッジ部分を小ドットに変調するものである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、画像のエッジ部分のインク量を調整することによって、例えばエッジ部輪郭が細い線画等の画像のエッジ部分のインクドットを小ドット化する処理を行うと、元の画像データに比べ、ユーザーはその線画をより細く感じることがある。また逆に、画像のエッジ部分に吐出するインクの量を一定量以上に調整して印刷すると、印刷媒体およびインクの組み合わせによってはインクの滲みが大きくなり、例えば線画においては、元の画像に比べて太くなってしまうことがある。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するために、以下の形態または適用例を取ることが可能である。
【０００７】
[適用例１]
画像を表す画像データに基づいて印刷データを生成する画像処理装置であって、前記画像データからエッジを形成する画素であるエッジ画素の位置を検出するエッジ検出部と、前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する線幅変更処理を行うドット決定部とを備える画像処理装置。
【０００８】
この画像処理装置によると、エッジに対応して形成されるドットのうち、最外郭に位置するドットのドットサイズを第１のドットサイズに決定することで、エッジ部分を鮮明に表現することができる。また、最外郭に形成するドットの位置をエッジを形成する画素群の線幅方向に移動させた位置に決定するので、エッジ部分をドットによって、細く表現したり、もしくは、太く表現したりすることができる。
【０００９】
[適用例２]
適用例１記載の画像処理装置であって、前記ドット決定部は、前記エッジに対応して形成される前記ドットのうち、前記最外郭に位置する前記ドットに対して前記線幅方向内側に隣接して位置する前記ドットのドットサイズを前記第１のドットサイズよりも大きい第２のドットサイズに決定する画像処理装置。
【００１０】
この画像処理装置によると、エッジ部分の最外郭を形成するドットは、その内側に形成する第２のドットサイズのドットより小さい第１のドットサイズのドットで形成するので、最外郭を第２のドットサイズのドットで形成するのに比べて、エッジ部分を、ドットによって鮮明に表現することができる。
【００１１】
[適用例３]
適用例１または２記載の画像処理装置であって、前記線幅変更処理は、前記最外郭ドット位置を、前記エッジを形成する画素群の線幅方向内側に移動させた位置に決定する細線処理である画像処理装置。
この画像処理装置によれば、エッジを形成する画素群を線幅方向内側に移動させてドットを形成するので、エッジをドットによって細く表現することができる。
【００１２】
[適用例４]
適用例１または２記載の画像処理装置であって、前記線幅変更処理は、前記最外郭ドット位置を、前記エッジを形成する画素群の線幅方向外側に移動させた位置に決定する太線処理である画像処理装置。
この画像処理装置によれば、エッジを形成する画素群を線幅方向外側に移動させてドットを形成するので、エッジをドットによって太く表現することができる。
【００１３】
[適用例５]
適用例３または４記載の画像処理装置であって、前記線幅変更処理は、該線幅変更処理によって移動させる前記最外郭ドット位置の移動画素数を、前記エッジを形成する画素群の前記線幅方向の画素数に基づいて設定可能である画像処理装置。
【００１４】
この画像処理装置によれば、エッジを形成する画素群の線幅方向の画素数に基づいて、移動画素数を設定することができる。例えば、もとの線幅が細い画像に対しては、移動画素数を少しにしたり、もとの線幅が太い画像に対しては、移動画素数を多くしたりすることができる。
【００１５】
[適用例６]
適用例５記載の画像処理装置であって、前記線幅変更処理は、前記印刷データに基づく印刷に用いる印刷媒体の種類に対応して前記移動画素数を決定する画像処理装置。
【００１６】
この画像処理装置によれば、印刷媒体の種類に応じて移動画素数を決定するので、インクの滲みやすさや印刷媒体の材質等の、印刷媒体の特性に応じて移動画素数を決定することができる。
【００１７】
[適用例７]
画像を表す画像データに基づいて印刷データを生成する画像処理装置と、前記印刷データに基づいて印刷を行う印刷装置とからなる印刷システムであって、前記画像処理装置は、前記画像データからエッジを形成する画素であるエッジ画素の位置を検出するエッジ検出部と、前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する線幅変更処理を行うドット決定部と、前記ドット決定部が決定した前記ドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成するデータ合成部とを備え、前記印刷装置は、前記印刷データに含まれる、前記ドット決定部が決定した前記ドットの前記ドットサイズおよび前記ドットの位置に基づいて印刷を行う印刷システム。
【００１８】
この印刷システムによると、エッジに対応して形成されるドットのうち、最外郭に位置するドットのドットサイズを第１のドットサイズに決定することで、エッジ部分を鮮明に表現して印刷を行うことができる。また、最外郭に形成するドットの位置をエッジを形成する画素群の線幅方向に移動させた位置に決定するので、エッジ部分をドットによって、シャープに表現したり、もしくは、ソフトに表現して印刷を行うことができる。
【００１９】
[適用例８]
画像を表す画像データを処理する画像処理方法であって、前記画像データからエッジを形成する画素であるエッジ画素の位置を検出し、前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定し、前記エッジに対応して形成する前記ドットのうち、前記最外郭に形成される前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定し、前記決定した前記インクドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成する画像処理方法。
【００２０】
この画像処理方法によれば、エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定することでエッジ部分を鮮明に表現した印刷データを生成することができる。
【００２１】
[適用例９]
画像を表す画像データに基づいて印刷データを生成する画像処理をコンピューターに実行させるコンピュータープログラムであって、前記画像データからエッジを形成する画素であるエッジ画素の位置を検出する機能と、前記エッジ画素の位置に基づいて、前記エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定する機能と、前記エッジに対応して形成される前記ドットのうち、前記最外郭に形成する前記ドットの位置である最外郭ドット位置を、前記エッジを形成する画素群の線幅方向に移動させた位置に決定する機能と、前記決定した前記インクドットの前記ドットサイズおよび前記ドットの位置に基づいて前記印刷データを生成する機能とを前記コンピューターに実現させるコンピュータープログラム。
【００２２】
このコンピュータープログラムによると、エッジに対応して形成されるドットのうち、最外郭に位置する前記ドットのドットサイズを第１のドットサイズに決定することで、エッジ部分を鮮明に表現した印刷データを生成する機能をコンピューターに実現させることができる。
【００２３】
なお、本発明は、種々の態様で実現することが可能である。例えば、画像処理方法および装置、画像処理システム、印刷方法および装置、印刷システム、それらの方法または装置の機能を実現するための集積回路、コンピュータープログラム、そのコンピュータープログラムを記録した記録媒体等の形態で実現することができる。
【図面の簡単な説明】
【００２４】
【図１】第１実施例における印刷システム１０の構成を示す構成図である。
【図２】画像データ５０を示した説明図である。
【図３】第１実施例における線幅変更処理の流れを示したフローチャートである。
【図４】処理対象である４つのエッジを示した説明図である。
【図５】線画Ａに対して行う線幅変更処理を説明する説明図である。
【図６】上エッジ置換処理の流れを示したフローチャートである。
【図７】ドット置換テーブルを示した説明図である。
【図８】水平エッジ置換処理を説明する説明図である。
【図９】水平エッジ置換処理の流れを示したフローチャートである。
【図１０】左エッジ置換処理の流れを示したフローチャートである。
【図１１】右エッジ置換処理の流れを示したフローチャートである。
【図１２】下エッジ置換処理を説明する説明図である。
【図１３】下エッジ置換処理の流れを示したフローチャートである。
【図１４】線画Ｂに対して行う線幅変更処理を説明する説明図である。
【図１５】線画Ｂにおける水平エッジ置換処理を説明する説明図である。
【図１６】線画Ｂにおける下エッジ置換処理の説明をする説明図である。
【図１７】線画Ｃに対して行う線幅変更処理を説明する説明図である。
【図１８】第２実施例で用いるドット置換パターンを説明した説明図である。
【図１９】画像データ７０を示した説明図である。
【図２０】第２実施例における線幅変更処理の流れを示すフローチャートである。
【図２１】線画Ｅに対して行う上エッジ置換処理を説明する説明図である。
【図２２】上エッジ置換処理の流れを示すフローチャートである。
【図２３】水平エッジ置換処理の流れを示したフローチャートである。
【図２４】線画Ｅにおける水平エッジ置換処理を説明する説明図である。
【図２５】左エッジ置換処理の流れを示したフローチャートである。
【図２６】右エッジ置換処理の流れを示したフローチャートである。
【図２７】下エッジ置換処理を示すフローチャートである。
【図２８】下エッジ置換処置を説明する説明図である。
【図２９】線画Ｆ、線画Ｇの上エッジ置換処理が終了した後の状態を示した説明図である。
【図３０】線画Ｆ、線画Ｇの水平エッジ置換処理を説明する説明図である。
【図３１】線画Ｆ、線画Ｇの水平エッジ置換処理を説明する説明図である。
【図３２】線画Ｆ、線画Ｇの水平エッジ置換処理を説明する説明図である。
【図３３】線画Ｆ、線画Ｇの下エッジ置換処理を説明する説明図である。
【図３４】第１特定エッジに対する線幅変更処理を説明する説明図である。
【図３５】第２特定エッジに対する線幅変更処理を説明する説明図である。
【図３６】第３特定エッジに対する線幅変更処理を説明する説明図である。
【図３７】第４特定エッジに対する線幅変更処理を説明する説明図である。
【図３８】変形例１を説明する説明図である。
【発明を実施するための形態】
【００２５】
次に、本発明の実施の形態を実施例に基づいて説明する。
Ａ．第１実施例
（Ａ１）印刷システムの構成：
図１は、本発明の第１実施例における印刷システム１０の構成を示す構成図である。本実施例における印刷システム１０は、画像処理装置としてのパーソナルコンピューター２０と、パーソナルコンピューター２０に有線または無線で接続されたプリンター３０とを備えている。
【００２６】
パーソナルコンピューター２０は、プログラムを実行することにより種々の処理や制御を行うＣＰＵ２１０と、プログラムやデータ・情報を記憶するハードディスク（ＨＤＤ）２１５と、ＣＰＵ２１０が処理を実行する際に、必要に応じてハードディスク２１５から読み出したプログラムを記憶するメモリー２２０と、外部に接続されている周辺機器との間でデータや情報のやり取りを行う入出力インターフェース（Ｉ／Ｆ）部２３０とを備える。パーソナルコンピューター２０は、さらに、キーボードやマウスなどの入力装置、ディスプレイなどの表示装置、ハードディスクなどの外部記憶装置、ＣＤやＤＶＤ、ブルーレイディスク（登録商標）等の記録媒体を読み取る周辺装置などが備えられているが、図示は省略した。
【００２７】
パーソナルコンピューター２０の電源を投入すると、オペレーティングシステム（図示せず）が読み込まれ、更にプリンタードライバー２５０などの各種ドライバーが組み込まれ、使用可能となる。画像処理などを行う場合には、専用のアプリケーション２４０が、外部記憶装置から主記憶であるメモリー２２０に読み込まれ、ＣＰＵ２１０により実行される。
【００２８】
ユーザーは、アプリケーション２４０が提供するユーザーインターフェースを介して、アプリケーション２４０により編集された画像を印刷する指示を与えることができる。アプリケーション２４０は、ユーザーより印刷の指示を受けると、プリンタードライバー２５０に印刷の対象となる画像を表す画像データを出力する。
【００２９】
プリンタードライバー２５０は、アプリケーション２４０から出力された画像データに基づき印刷データを生成する機能を実現するためのプログラムである。プリンタードライバー２５０は、ＣＤやＤＶＤなどのコンピューターで読み取り可能な記録媒体によって配布されたり、または、インターネットなどの各種通信手段を通じて配信される。
【００３０】
プリンタードライバー２５０は、ラスタライズ処理部２５１と、色変換処理部２５２と、ハーフトーン処理部２５３と、データ合成部２５４と、線幅変更処理部２６０とを備える。ラスタライズ処理部２５１は、アプリケーション２４０から出力された出力された画像データのうち、文字や罫線等に対応するベクトルデータの部分をラスタライズし、また、画像データの解像度をプリンター３０の解像度に一致するように変換する。
【００３１】
色変換処理部２５２は、ラスタライズ処理後の画像の色変換処理を行う。本実施例におけるプリンター３０は、シアン（Ｃ）、マゼンダ（Ｍ）、イエロー（Ｙ）、ブラック（Ｋ）の各色のインクを、小さいサイズのインクドットから順に、Ｓドット、Ｍドット、Ｌドットの合計３種類のサイズのインクドットで形成可能なプリンターである。そのため、色変換処理部２５２は、画像の各画素についてＲＢＧ値で表された画素値を、ルックアップテーブルを参照することによってＣＭＹＫ値に変換する。
【００３２】
ハーフトーン処理部２５３は、色変換処理後の画素値に基づきハーフトーン処理を行い、各印刷画素におけるドットの形成状態（Ｓドット、Ｍドット、Ｌドット、もしくは空白ドット）を表すハーフトーンドットデータを生成する。各インクドットについて一例として、Ｓドットを１．５（ｐｌ）、Ｍドットを３．０（ｐｌ）、Ｌドットを５．０（ｐｌ）のインク滴で形成する。
【００３３】
線幅変更処理部２６０は、画像データに含まれるエッジ部分を明確に印刷する処理を行う。具体的には、エッジ部分に対応して形成するインクドット形成位置とインクドットサイズとを調整して、エッジ部分のインクドットのドットパターンであるエッジドットデータを生成する。上記処理を行うため線幅変更処理部２６０は、エッジ検出部２６１と、長さ計算部２６２と、ドット置換部２６３とを備える。各処理部については後で詳しく説明する。
【００３４】
データ合成部２５４は、ハーフトーン処理部２５３で生成したハーフトーンドットデータと、線幅変更処理部２６０で生成したエッジドットデータとを合成し印刷データを生成する。そして、入出力インターフェース（Ｉ／Ｆ）部２３０を介して、印刷データをプリンター３０に転送する。
【００３５】
処理用テーブル２７０は、線幅増減テーブル２７１と、ドット置換テーブル２７２と、長さ記録バッファー２７３と、方向記録バッファー２７４とを備える。これら４つのデータは、プリンタードライバー２５０が組み込まれる際、メモリー上に展開して記憶される。
【００３６】
次に本実施例におけるプリンター３０の構成について説明する。プリンター３０は、印刷媒体にインクドットを形成して画像を印刷するインクジェットプリンターである。プリンター３０は、プログラムを実行することによりプリンター３０全体の制御や各種処理を行うＣＰＵ３１０と、プログラムやデータ・情報を格納するメモリー３２０と、外部に接続されるパーソナルコンピューター２０との間でデータや情報のやりとりを行う入出力インターフェース（Ｉ／Ｆ）部３３０と、ＣＰＵ３１０からの指示に従って各ユニットを制御するユニット制御回路３４０と、ヘッドユニット３５０と、キャリッジユニット３６０と、搬送ユニット３７０とを備えている。
【００３７】
ヘッドユニット３５０は、印刷媒体にインクを吐出するためのヘッド（図示せず）を有している。ヘッドは、複数個のノズルを有し、各ノズルから断続的にインクを吐出する。このヘッドはキャリッジ（図示せず）に搭載されており、キャリッジが所定の走査方向（主走査方向）に移動すると、ヘッドも主走査方向に移動する。ヘッドが主走査方向に移動している間にインクを断続的に吐出することにより、主走査方向に沿ったドットライン（ラスターライン）が印刷媒体上に形成される。
【００３８】
キャリッジユニット３６０は、ヘッドを搭載するキャリッジを主走査方向に往復移動させるための駆動装置である。キャリッジには、ヘッドの他、インクを収容するインクカートリッジも着脱可能に保持されている。
【００３９】
搬送ユニット３７０は、印刷媒体を印刷可能な位置に送り込み、印刷時に所定の搬送方向に所定の搬送量で印刷媒体を搬送させることによって副走査を行うための駆動装置である。搬送ユニット３７０は、例えば、給紙ローラー、搬送モーター、搬送ローラー、プラテン、及び排紙ローラー（図示せず）などによって構成される。
【００４０】
（Ａ２）印刷処理：
次に、印刷システム１０における印刷処理について説明する。印刷処理は、ユーザーがアプリケーション２４０上で画像の印刷を指示すると開始される。画像の印刷が指示されると、アプリケーション２４０からプリンタードライバー２５０に印刷命令が発せられる。この印刷命令には、アプリケーション２４０上で編集された画像を表す画像データが含まれる。
【００４１】
印刷命令を受領したプリンタードライバー２５０では、ＣＰＵ２１０が、ベクトルデータのラスタライズを行うと共に、画像データの解像度を印刷解像度に一致するように変換したラスターデータを生成する。続いて、ＣＰＵ２１０は、色変換処理を行い、続いてハーフトーン処理を行うことによってハーフトーンドットデータを生成する。
【００４２】
これに並行して、ＣＰＵ２１０は、画像データに基づく画像に含まれるエッジ部分に対応して形成するインクドット形成位置とインクドットサイズとを調整して、エッジ部分のインクドットのドットパターンであるエッジドットデータを生成する線幅変更処理を行う。その後、ＣＰＵ２１０は、ハーフトーンドットデータとエッジドットデータとの合成を行い印刷ドットデータを生成し、印刷ドットデータを含む印刷データを入出力インターフェース部２３０を介してプリンター３０に転送する。プリンター３０は、パーソナルコンピューター２０から印刷データを受領すると、印刷データに基づいて印刷を実行し、印刷システム１０による印刷処理は終了する。
【００４３】
（Ａ３）線幅変更処理（細線処理）：
次に、印刷システム１０が行う線幅変更処理について具体例を示しながら説明する。本実施例では、線幅変更処理のひとつである細線処理について説明する。細線処理は、文字や罫線等の線画の輪郭部分（エッジ部分）に形成するインクの形成位置およびインクドットサイズを調整することにより、線画を細く印刷するための処理である。図２は、印刷システム１０における印刷対象である画像データ５０を示した説明図である。画像データ５０は、ラスタライズ処理部２５１から線幅変更処理部２６０が受け取ったラスターデータである。画像データ５０には線画Ａと線画Ｂと線画Ｃとが含まれている。線画Ａは、横６×縦１０の黒色画素によって構成されている。線画Ｂは、横１１×縦４の黒色画素によって構成されている。線画Ｃは、横４×縦４の黒色画素によって構成されている。本実施例では、この画像データ５０に対して線幅変更処理（細線処理）を行う。図３は、ＣＰＵ２１０が行う線幅変更処理の流れを示したフローチャートである。線幅変更処理は、ＣＰＵ２１０がアプリケーション２４０で編集した画像データに対してラスタライズ処理を行い、ラスターデータを生成すると開始される。線幅変更処理としてまずＣＰＵ２１０はラスターデータを読み込む（ステップ１１０２）。次に、このラスターデータに基づいて、線幅変更処理によって画像データ内のインクドットのパターンを決定し記録していくドットパターンＤを生成する（ステップＳ１１０４）。なお、ドットパターンＤはメモリー２２０内に記憶される。
【００４４】
ドットパターンＤを生成すると、ＣＰＵ２１０は、線幅変更処理に用いる長さ記録バッファー２７３を初期化する（ステップＳ１１０６）。長さ記録バッファー２７３は、読み込んだラスターデータの各画素に対応したデータであり、線幅変更処理の際に、所定の処理を行った画素の位置に、その処理を行ったことを記録していくバッファーである。詳細は後で説明する。
【００４５】
長さ記録バッファー２７３の初期化後、ＣＰＵ２１０は、ラスターデータに含まれるエッジの検出を開始する。ここで、ラスターデータと、ドットパターンＤとは異なるデータである。つまり、エッジの検出はラスターデータで行い、線幅変更処理によって決定したインクドットパターンを記録するのがドットパターンＤである。なお以下、説明上ラスターデータとドットパターンＤとを重ねて図示することもある。
【００４６】
エッジの検出は、図２に示したように、ラスターデータ上を、主走査方向として右から左に、副走査方向として上から下に、エッジ検出のための注目画素を移動させながら行う。図２において、×印が注目画素を示している。そして、ラスターデータの１ライン分のエッジ検出が終わると、１ラスター下に下がり、再度、左から右に向かって注目画素を移動させながらエッジを検出する。以下、説明において、方向を表現する際に用いる「左」「右」「上」「下」は、上記した注目画素の移動方向に準じて用いる。
【００４７】
エッジの検出は、注目画素と、その周辺の画素との画素値の差分をとり、差分値が所定以上であればエッジと判断する。また、エッジには上エッジ、左エッジ、右エッジ、下エッジの４つのエッジがある。図４は、それら４つのエッジを示した説明図である。ＣＰＵ２１０は、注目画素と、その上側、右側、左側、下側に隣接する画素との画素値の差分を算出し、これら４つのエッジが注目画素に隣接して存在しているかを検出する。なお、以下に説明する処理の途中で、右エッジと左エッジとを、水平エッジとして取り扱う場合がある。
【００４８】
図２に示すように、ＣＰＵ２１０は、エッジ検出を開始するに当たり、ラスターデータの左上に位置する初期位置に注目画素Ｐ（Ｘ，Ｙ）を設定する（ステップＳ１１０８）。そして、注目画素を移動させながらエッジ検出を行う。そして、線画Ａの左上の画素位置５１（図２）に注目画素が位置すると、その注目画素の下側に上エッジを検出する（ステップＳ１１１０）。上エッジを検出すると、ＣＰＵ２１０は上エッジ置換処理を行う（ステップＳ１１１２）。上エッジ置換処理を終えると、画素位置５１の右側に隣接する位置に右エッジが存在しないかを検出する（ステップＳ１１１４）。右エッジは存在しないので、次に、画素位置５１の上側に隣接する位置に下エッジが存在しないかを検出する（ステップＳ１１１８）。下エッジは存在しないので、次に、注目画素がラスターデータの右端であるかを確認し（ステップＳ１１２２）、右端でなければ、注目画素を１つ右側の画素に移動させて（ステップＳ１１２４）、再び、ステップＳ１１１０〜ステップＳ１１２２を繰り返す。
【００４９】
画像データ５０の右端まで処理が終わり、右端に注目画素が位置すると、その注目画素の位置が画像データ５０の下端であるかを確認し（ステップＳ１１２６）、下端でなければ、注目画素を一段下の左端に移動させ（ステップＳ１１２８）、再び、ステップＳ１１１０〜ステップＳ１１２２を繰り返す。そして、ＣＰＵ２１０は上記の処理を繰り返し、注目画素がラスターデータの右下の端に位置すると（ステップＳ１１２６）、線幅変更処理は終了する。
【００５０】
線幅変更処理の途中、注目画素が図２における画素位置５２に位置すると、その位置で初めて左エッジを検出し（ステップＳ１１１４）、水平エッジ置換処理を行う（ステップＳ１１１６）。また右エッジについては、注目画素が画素位置５３に位置した時に処理を行うのではなく左エッジの検出に伴う水平エッジ置換処理の中で処理を行う。つまり、注目画素が画素位置５２に位置する時に右エッジについての処理も行う。従って、線幅変更処理として右エッジの検出は行わず、サブルーチンである水平エッジ置換処理の中で、右エッジを検出する処理を行う。
【００５１】
そして、線幅処理の途中、注目画素が図２における画素位置５４に位置すると、その位置で初めて下エッジを検出し（ステップＳ１１１８）、下エッジ置換処理を行う（ステップＳ１１２０）。このようにして、ＣＰＵ２１０はラスターデータ内の全ての画素において、各エッジが存在しないか検出する処理を行い、エッジを検出すると、随時エッジ置換処理を行う。次に各エッジ置換処理について説明する。
【００５２】
図５は、ＣＰＵ２１０が線画Ａに対して行う線幅変更処理を説明する説明図である。図５の上段の図は線幅変更処理によって生成されるドットパターンＤを示している。下段は線画Ａに対応する長さ記録バッファーを示している。また図５（ａ）〜（ｄ）は、線幅変更処理によって変化するドットパターンＤおよび長さ記録バッファーの様子を時系列順に示している。図５に示すように、注目画素が線画Ａの左上、画素位置５１に位置したところから線幅変更処理の説明をする。線幅変更処理によって、注目画素が線画Ａの左上に位置すると、ＣＰＵ２１０は線幅変更処理の処理工程に従い、上エッジの検出を開始する。そして、注目画素の下側にエッジが存在するのでＣＰＵ２１０は上エッジを検出し、上エッジ置換処理を開始する。
【００５３】
図６は、ＣＰＵ２１０が行う上エッジ置換処理の流れを示したフローチャートである。ＣＰＵ２１０は上エッジを検出すると、その注目画素の下側に垂直方向に連なる黒色画素列の長さＴを計算する（ステップＳ１２０２、長さ計算部２６２の機能に相当）。つまり、注目画素によって検出したエッジに対向する位置にあるエッジ、つまり下エッジを検出して、その対向するエッジまでの長さを計算する。対向するエッジの検出は、先ほど述べたエッジ検出と同様に、隣接する画素との画素値の差分値を計算し、差分値が所定以上の時、その位置をエッジと判断する。また、長さＴは、１画素分の長さを「１」として算出する。この場合、線画Ａの注目画素の下側に１０画素の黒色画素が連なっているので、Ｔ＝１０となる。
【００５４】
Ｔを計算した後、ＣＰＵ２１０は、計算したＴの値が４以上であるか判断する（ステップＳ１２０４）。この場合、Ｔ＝１０なので、Ｔ＞４となり、ドット置換テーブル２７２から上エッジ用置換パターンを読み出す（ステップＳ１２１２）。そして、上エッジから上端２画素のドットをドット置換テーブルから読み出したドットパターンで置換する（ステップＳ１２１４、ドット置換部２６３の機能に相当）。なお、上述した長さ計算部２６２とドット置換部２６３とが、特許請求の範囲に記載のドット決定部に相当する。
【００５５】
ここで、ドット置換テーブル２７２について説明する。図７はドット置換テーブルを示した説明図である。ドット置換テーブルには、Ｔの値に応じて置換するドットパターンを記憶している。Ｔが４以下の場合、置換するドットパターンは、Ｔの値ごとにそれぞれ設定されている。そして、それ以外の場合は、線幅変更処理の処理内容に従って置換するドットパターンが記憶されており、検出したエッジの端部から２ないし３画素分のドットの置換パターンのみが設定されている。例えば、上エッジ用置換パターンは、上エッジから上端２画素分の画素を、上端から下に向かってＳドット、続いてＭドットで置き換える。下エッジ用置換パターンは、下エッジから下端３画素分の画素を、下端から上に向かって、空白ドット（以下、Ｏドットとも呼ぶ）、Ｓドット、Ｍドットで置き換える。同様に左エッジは左端から右に向かってＳドット、Ｍドットで置き換え、右エッジは右端から左に向かってＯドット、Ｓドット、Ｍドットで置き換える。ここで、特許請求の範囲に記載の、最外郭ドット位置は、本実施例においては、各エッジ（上エッジ、下エッジ、左エッジ、右エッジ）に対応して形成するドットのうち、最も外側に形成するドットに相当するが、空白ドット（Ｏドット）については、処理の便宜上、定義したドットであり、特許請求の範囲に記載の最外郭ドットには該当しないものとする。つまり、本実施例においては、各エッジに対応して形成するドットのうち、最も外側に位置するドットがＯドットである場合、その一つ内側のドットが最外郭ドットであり、その最外郭ドットを形成する位置が、特許請求の範囲に記載の最外郭ドット位置に相当する。例えば、図７のドット置換テーブルの右エッジ用置換パターンの場合、右エッジの端部から左に向かってＯドット、Ｓドット、Ｍドットであるが、この場合の最外郭ドットはＳドットである。さらに、この右エッジ用置換パターンの場合、特許請求の範囲に記載の、「第１のドットサイズ」に相当するドットはＳドットとなり、「第２のドットサイズ」に相当するドットはＭドットとなる。
【００５６】
上記説明したドット置換テーブルに従い上エッジ用置換パターンを読み出し、線画Ａの上エッジの上端から２画素分をＳドット、Ｍドットで置き換えると、ドットパターンＤは図５（ｂ）に示すドットパターンとなる。そしてドットの置き換えが終わると、画素位置５１における上エッジ置換処理は終了する。
【００５７】
上エッジ置換処理が終了すると、続いて左エッジ、下エッジの検出を開始するが（図３参照）、画素位置５１にはこれらのエッジは存在しないので、注目画素を１つ右に移動させて、再度、上エッジ置換処理を行いドットパターンＤは図５（ｃ）の様になる。線画Ａの上端では上記の処理が繰り返し行われ、結果として線画Ａの上エッジは図５（ｄ）に示したドットパターンＤとなる。また、線画Ａの上エッジ置換処理においては、図５の下段に示した長さ記録バッファーには記録は行われない。長さ記録バッファーは、Ｔが４以下の時に、そのＴの値が長さ記録バッファーに記録されるが、この場合、Ｔは４以上であるので記録は行われない。長さ記録バッファーについては、線画Ｂの処理の際に詳しく説明する。
【００５８】
次に、水平エッジ置換処理について説明する。図８は水平エッジ置換処理を説明する説明図である。線画Ａにおける上エッジのドットの置換処理が終了すると、注目画素はエッジ検出を行いながら移動して、図８（ａ）に示すように、画素位置５２で線画Ａの左エッジを検出する。ＣＰＵ２１０は左エッジを検出すると、水平エッジ置換処理を開始する（図３参照）。図９は水平エッジ置換処理の流れを示したフローチャートである。図８において、注目画素が画素位置５２に位置すると、左エッジを検出し、ＣＰＵ２１０は水平エッジ置換処理を開始する。左エッジを検出すると、検出した左エッジの右側に水平方向に連なる黒色画素列の長さＴを計算する（ステップＳ１３０２）。上エッジ置換処理の際に説明したように、注目画素によって検出したエッジに対向する位置にあるエッジ、つまり右エッジを検出して、その対向するエッジまでの長さを計算する。この場合、Ｔ＝６となる。そして、Ｔが４以上であるか判断する（ステップＳ１３０４）。Ｔ＝６なので、Ｔ＞４となり左エッジ置換処理（ステップＳ１３２８）、続いて右エッジ置換処理（ステップＳ１３３０）を行う。
【００５９】
図１０は、左エッジ置換処理の流れを示したフローチャートである。図８の画素位置５２において、左エッジを検出し、Ｔが計算され、Ｔが４以上であると判断すると、ＣＰＵ２１０は左エッジ置換処理を開始する。ＣＰＵ２１０は、まず、ドット置換テーブル（図７参照）から、左エッジ用置換パターンを読み出す（ステップＳ１４０２）。つまり、エッジの左端からＳドット、続いてＭドットで置き換えるドットパターンを読み出す。次に、注目画素の位置（画素位置５２）を（Ｘ，Ｙ）とし、（Ｘ＋１，Ｙ）の画素を（ＸL，ＹL）とする（ステップＳ１４０４）。そして、後の処理で使用する変数である「ｊ」をｊ＝０に設定する（ステップＳ１４０６）。
【００６０】
次に、長さ記録バッファーの（ＸL，ＹL）に対応する位置の値が初期値であるか確認する（ステップＳ１４０８）。この場合、（ＸL，ＹL）に対応する長さ記録バッファーは初期設定時から変化していないので、初期値と判断する。その後、ドットパターンＤの（ＸL＋ｊ，ＹL）に記録されているドットサイズが、左エッジ置換処理によって置換するドットサイズテーブルより大きいか判断する（ステップＳ１４１０）。今、ｊ＝０で、ドットパターンＤの（ＸL，ＹL）に記録されているドットサイズは、図８（ａ）に示すように、Ｓドットである。また、左エッジ置換処理によって置き換えようとしているドットもＳドットである。この場合、ドットの置き換えは行わず、変数ｊの値をインクリメントする（ステップＳ１４１２）。するとｊ＝１となり、ｊ＞１ではないので（ステップＳ１４１４）、変数ｊを値１とした上で、ステップＳ１４０８から、上述した処理を繰り返す。ｊ＝１の場合、つまり図８（ａ）に示す注目画素５２から右に２つ目の画素について処理を行う場合、ステップＳ１４１０において、ドットパターンＤの（ＸL＋１，ＹL）に記録されているドットサイズは、Ｓドットであり、置き換えようとしているドットはＭドットなので、ドットの置き換えは行わず、ステップ１４１２に移る。そして、再びｊをインクリメントし、ｊを値２とし、ｊ＞１であるので（ステップＳ１４１４）、左エッジ置換処理は終了する。つまり、左エッジから２画素分の画素に対して左エッジ置換処理を行い、左エッジ置換処理を終了する。
【００６１】
左エッジ置換処理が終了すると、注目画素は処理を行った左エッジの対向側にある線画Ａの右エッジに対して右エッジ置換処理を開始する。図１１は右エッジ置換処理の流れを示したフローチャートである。右エッジ置換処理は、先述した左エッジ置換処理と、ほぼ同様の処理である。左エッジ置換処理と異なる点は、注目画素が画素位置５２（図８）に位置する時に、水平エッジ置換処理の中の一処理として処理を行う点と、画素を置き換えるドットパターンである。上述したように、右エッジ置換処理は、注目画素が線画Ａの右端に移動したときに行うのではなく、左エッジ置換処理を行った後に、注目画素が画素位置５２に位置する時に行う。よって、線幅変更処理として右エッジを検出する処理は無く（図３参照）、左エッジの検出により行われる水平エッジ置換処理の中でサブルーチンとして右エッジ置換処理は行われる。
【００６２】
図７のドット置換テーブルに示した様に、右エッジ用置換パターンは、右エッジの右端から左に向かってＯ（空白）ドット、Ｓドット、Ｍドットである。この右エッジ用の置換パターンを読み込み（ステップＳ１５０２）、右エッジ置換処理を行う。
【００６３】
まず、注目画素の位置（画素位置５２）を（Ｘ，Ｙ）とし、（Ｘ＋Ｔ−２，Ｙ）の画素を（ＸR，ＹR）とする（ステップＳ１５０４）。つまり、図８（ｂ）に示すように、右エッジの右端から左側３画素目に位置する画素を（ＸR，ＹR）とする。そして、変数ｊを０に設定し（ステップＳ１５０６）、（ＸR，ＹR）の長さ記録バッファーを確認し（ステップＳ１５０８）。長さ記録バッファーは初期値であるので、次に、（ＸR＋ｊ，ＹR）（ｊ＝０）に記録されているドットサイズが、置換しようとしているドットサイズより大きいか判断する（ステップＳ１５１０）。この場合、置換しようとしているドットはＭドットで、現在記録されているドットはＳドットなのでドットの置き換えは行われない。
【００６４】
そして変数ｊをインクリメントし、ｊの値を１とした上で（ステップＳ１５１２）、ステップＳ１５０８からステップＳ１５１４までの処理を行うが、結果として、（ＸR＋１，ＹR）のドットの置き換えは行われない。そして、変数ｊの値を２としてステップＳ１５０８から処理を開始する。上記と同様に、長さ記録バッファーは初期値であるので（ステップＳ１５０８）、次に、（ＸR＋２，ＹR）に記録されているドットサイズが、置換しようとしているドットサイズより大きいか判断する。この場合、置換しようとしているドットはＯドットで、現在記録されているドットはＳドットなので、ドットの置き換えを行う（ステップＳ１５１０）。つまり、図８（ｃ）に示した画素位置５５がＳドットからＯドットに置き換えられる。その結果、図８（ｃ）に示すようなドットパターンＤとなる。ドットの置き換え後、変数ｊをインクリメントし値を３に設定するが（ステップＳ１５１２）、ｊ＞２となり（ステップＳ１５１４）、画素位置５２に注目画素がある場合の右エッジ置換処理は終了する。つまり、右エッジ端から３画素分の画素について右エッジ置換処理を行い終了する。
【００６５】
画素位置５２での右エッジ置換処理の終了後、注目画素の移動が行われる。ここで、注目画素が図８（ｃ）に示した画素位置５５に位置した場合を考える。処理が継続されて画素位置５５に注目画素が位置すると、注目画素の左側に線画Ａの右エッジが存在するが、つまり画素位置５５は空白ドットで、その右側には黒色画素であるＳドットが存在することになり、右エッジ置換処理は行われない。線幅変更処理は主走査が左から右に行われているので、常に左エッジを検出し、それに伴って、対向する右エッジも処理をするという工程を採用しており、線幅変更処理において、右エッジを単独で検出する処理は行っていないからである。
【００６６】
また画素位置５５においては、下側に黒色画素であるＭドットが存在し、つまり上エッジが存在するが、この上エッジも検出せず、上エッジ置換処理も行われない。前述したように、図８には見かけ上、ラスターデータにドットパターンＤを上書きしているように図示しているが、実際の処理においては、エッジ検出はラスターデータそのもので行い、ドットの置き換えはラスターデータとは別に生成したドットパターンＤに対して行っているからである。つまりラスターデータ上では画素位置５５に、線幅変更処理で検出するエッジは存在しない。従って注目画素５５では何も処理は行わず、注目画素の移動を行い、図８（ｄ）の画素位置５６で線画Ａの左エッジを検出し、上記説明した水平エッジ置換処理を行う（図９参照）。この場合はＴ＞４であるので（図９のステップＳ１３０４）、先ほど説明した処理と同様に、再び、左エッジ置換処理、右エッジ置換処理が行われる。処理の結果として、図８（ｄ）に示すようなドットパターンＤとなる。そして、上記水平エッジ置換処理を線画Ａの最下段のラスターまで繰り返すと、処理の結果として、線画Ａは図８（ｅ）に示すように、線画Ａの、下エッジ部分を除いた周囲がＳドットで囲まれ、かつ、右エッジが１列分空白ドットとなり、全体として線幅方向に１画素分細くなったドットパターンＤとなる。このようにして、水平エッジ置換処理は行われる。
【００６７】
その後、注目画素は移動して、図１２（ａ）に示す画素位置５７に位置する。そしてＣＰＵ２１０は、画素位置５７で、注目画素の上側に下エッジを検出し下エッジ置換処理を開始する。図１２は、下エッジ置換処理を説明する説明図であり、図１３は、下エッジ置換処理の流れを示したフローチャートである。
【００６８】
下エッジ置換処理を開始すると、ＣＰＵ２１０は下エッジ端部、つまり図１２（ａ）に示した画素位置５７の１つ上の画素の長さ記録バッファーの値が初期値か確認し（ステップＳ１６０２）、この場合は、初期値であるので、次にドット置換テーブル（図７参照）から下エッジ用置換パターンを読み出す（ステップＳ１６０４）。そして、注目画素の位置を（Ｘ，Ｙ）とし、（Ｘ，Ｙ−３）を（ＸF，ＹF）として設定する（ステップＳ１６０６）。つまり下エッジの下端から上側３画素目に位置する画素を（ＸF，ＹF）とする（図１２（ａ）参照）。そして、後の処理で使用する変数「ｉ」を「ｉ＝０」に設定する（ステップＳ１６０８）。「ｉ＝０」を設定後、（ＸF，ＹF+i）に記録されているドットサイズ、つまり（ＸF，ＹF）に記録されているドットサイズが、置換しようとしているドットサイズより大きいか判断する（ステップＳ１６１０）。この場合、置換しようとしているドットはＭドットで（図７、下エッジ用置換パターン参照）、現在記録されているドットはＳドットなので、ドットの置き換えは行われない。次に、変数ｉをインクリメントし、ｉ＝１に設定する（ステップＳ１６１４）。その後、ｉ＞２であるか判断をし（ステップＳ１６１６）、ｉ＝１であるので、ステップＳ１６１０からｉ＝１として処理を繰り返す。つまり、下エッジ端から２画素分について下エッジ処理を行う。処理を繰り返した結果、図１２（ｂ）に示すように、下エッジ端１画素分がＳドットからＯドットに置き換えられたドットパターンＤとなる。
【００６９】
このようにして、注目画素が画素位置５７に位置する場合の下エッジ置換処理は終了し、注目画素は１つ右の画素に移動する。注目画素の移動後、図１３に示したフローチャートに従い処理を行うと、ドットパターンＤは図１２（ｃ）のようになる。以後、処理を繰り返し、線画Ａの全ての下エッジ画素結果について処理を行うと、図１２（ｄ）に示すように、周囲がＳドットで囲まれ、右エッジに相当する縦１列分および下エッジに相当する横１行分がそれぞれＯドットに置き換えられたドットパターンＤとなり、下エッジ置換処理は終了する。同時に、線画Ａに対する線幅変更処理は終了する。
【００７０】
次に、線画Ｂに対する線幅変更処理について説明する。線画Ａの処理の終了後、ＣＰＵ２１０は注目画素を移動させて、線画Ｂにおいて上エッジを検出し、線幅変更処理を開始する。図１４は、ＣＰＵ２１０が線画Ｂに対して行う線幅変更処理を説明する説明図である。図１４の上段はドットパターンＤを示し、下段は長さ記録バッファーを示す。図１４（ａ）に示すように、注目画素が画素位置５８に位置したときに、ＣＰＵ２１０は上エッジを検出し、線幅変更処理における上エッジ置換処理を開始する（図３、ステップＳ１１１０、ステップＳ１１１２参照）。
【００７１】
画素位置５８における上エッジ置換処理を、図６の上エッジ置換処理のフローチャートに沿って説明をする。図６に示すように、ＣＰＵ２１０は上エッジを検出すると、その注目画素の下側に垂直方向に連なる黒色画素列の長さＴを計算する（ステップＳ１２０２）。そして、Ｔの値が４より大きいかを判断する（ステップＳ１２０４）。線画Ｂの場合、Ｔ＝４であるので、Ｔの値に応じたドットの置換パターンをドット置換テーブル（図７参照）より読み出す（ステップＳ１２０６）。この場合、ドット置換テーブルのＴ＝４の欄から読み出すので、ドット置換パターンは、上からＳドット、Ｍドット、Ｍドット、Ｓドットとなる。Ｔ＝４のドット置換パターンを読み出すと、注目画素の下側に連なる４つの画素を、読み出したドット置換パターンで置換する（ステップＳ１２０８）。その後、図１４（ｂ）下段に示したように、長さ記録バッファーのドット置換を行った画素に対応する位置にＴの値である「４」を記録する（ステップＳ１２１０）。先ほど説明したように、方向記録バッファーには、Ｔが４以下の場合にドット置換処理を行った画素に対して、そのＴの値を記録する。こうして、画素位置５８における上エッジ置換処理は終了する。
【００７２】
上エッジ置換処理が終了すると、水平エッジおよび下エッジの検出を行うが、画素位置５８には水平エッジ、下エッジは存在しないので注目画素を１つ右に移動させ、再び、線幅変更処理における上エッジの検出から開始する（図３参照）。移動した画素位置でも上エッジを検出し、上述した上エッジ置換処理を行う。図１４（ｃ）に、その処理結果を示した。このようにして線画Ｂの下エッジに相当する全画素に処理を行うと、線画Ｂは図１４（ｄ）に示したように、上エッジと下エッジがそれぞれ１行分ずつＳドットに置き換えられたドットパターンＤとなる。また、図１４（ｄ）の下段に示した長さ記録バッファーには、ドット置換処理が行われた画素に対してＴの値である「４」が記録される。
【００７３】
次に、線画Ｂにおける水平エッジ置換処理について説明する。図１５は、線画Ｂにおける水平エッジ置換処理を説明する説明図である。線画Ｂにおける上エッジのドットの置換処理が終了すると、注目画素はエッジ検出を行いながら移動して、図１５（ａ）に示すように、画素位置５９で線画Ｂの左エッジを検出する。ＣＰＵ２１０は左エッジを検出すると、水平エッジ置換処理を開始する（図３参照）。画素位置５９における水平エッジ置換処理を、図９水平エッジ置換処理、図１０左エッジ置換処理、図１１右エッジ置換処理の各フローチャートに沿って説明する。
【００７４】
図１５において、注目画素が画素位置５９に位置すると、左エッジを検出し、ＣＰＵ２１０は水平エッジ置換処理を開始する。左エッジを検出すると、検出した左エッジの右側に水平方向に連なる黒色画素列の長さＴを計算する（図９：ステップＳ１３０２）。この場合、Ｔ＝１１となる。そして、Ｔが４以上であるか判断する（図１０：ステップＳ１３０４）。Ｔ＝１１なので、Ｔ＞４となり左エッジ置換処理（ステップＳ１３２８）、続いて右エッジ置換処理（ステップＳ１３３０）を行う。
【００７５】
ＣＰＵ２１０は左エッジ置換処理（図１０参照）を開始すると、ドット置換テーブル（図７参照）から、左エッジ用置換パターンを読み出す（ステップＳ１４０２）。つまり、エッジの左端からＳドット、続いてＭドットで置き換えるドットパターンを読み出す。次に、注目画素の位置（画素位置５９）を（Ｘ，Ｙ）とし、（Ｘ＋１，Ｙ）の画素を（ＸL，ＹL）とする（ステップＳ１４０４）。そして、変数「ｊ」をｊ＝０に設定する（ステップＳ１４０６）。次に、長さ記録バッファーの（ＸL，ＹL）に対応する位置の値が初期値であるか確認する（ステップＳ１４０８）。この場合、長さ記録バッファーの（ＸL，ＹL）に対応する位置には既に「４」が記録されている。つまり、既にドットの置き換え処理が行われたことを示す。よってドット置換パターンによるドットの置換は行わず、変数ｊをインクリメントし、「ｊ＝１」に設定し（ステップＳ１４１２）、ｊ＞１かの判断（ステップＳ１４１４）を経て、再度、ステップＳ１４０８から処理を繰り返す。つまり線画Ｂの左エッジ端２画素分について処理を行う。処理の結果として、左エッジ置換処理では、ドットの置き換えは行わず、続いてＣＰＵ２１０は、線画Ｂの左エッジと対向する位置（図１４（ｂ）参照）にある右エッジの置換処理を開始する。
【００７６】
線画Ｂにおける右エッジ置換処理は、上述した図１１に示したフローチャートに基づいて行われるが、線画Ｂの左エッジ置換処理の場合と同様に、処理対象となる画素に対応する位置の長さ記録バッファーには全て「４」が記録されている。よって、右エッジ置換処理によってドットの置き換えは行われない（図１１：ステップＳ１５０８参照）。結果として、線画Ｂに対する水平エッジ置換処理ではドットの置換は行われない。その後、図１５（ｂ）に示すように、注目画素を１ラスター分下に移動させ、再び、水平エッジ置換処理として、左エッジ置換処理、右エッジ置換処理を行う。このように水平エッジ置換処理を線画Ｂの４ラスター分、つまり４回繰り返すと、結果として線画ＢのドットパターンＤは図１４（ｃ）のようになり、線画Ｂの全ての画素において、水平エッジ置換処理によるドットの置き換えは行われない。こうして、線画Ｂにおける水平エッジ置換処理は終了する。
【００７７】
続いて、線画Ｂにおける下エッジ置換処理について説明する。図１６は、線画Ｂにおける下エッジ置換処理の説明をする説明図である。ＣＰＵ２１０は線画Ｂにおける水平エッジ置換処理の終了後、注目画素の移動を行い、図１６（ａ）に示す画素位置６０で線画Ｂの下エッジを検出し、下エッジ置換処理を開始する。下エッジ置換処理は図１３に示したフォローチャートに従って処理が行われる。ＣＰＵ２１０は、下エッジを検出すると、注目画素の１つ上の画素に対応した位置の長さ記録バッファーが初期値であるか確認する（図１３：ステップＳ１６０２）。この場合、長さ記録バッファーには「４」が記録されている。つまり、既にドットの置き換えが行われた後である。従って、図１３フローチャートに示すように、下エッジ置換処理では、処理対象の画素に対応する長さ記録バッファーの値が初期値でない場合は、何も処理を行わず処を終了する。
【００７８】
そして、１つ右に画素に注目画素を移動させ、再度、下エッジ置換処理を開始するが、注目画素が画素位置６０の場合と同様に、１つ上の画素に対応する長さ記録バッファーには「４」が記録されているため、ドットの置き換えは行わず処理を終了する（図１６（ｂ）参照）。上記処理を繰り返すと、結果として図１６（ｃ）のドットパターンＤに示すように、下エッジ置換処理においてはドットの置き換えは行われず処理は終了する。そして、線画Ｂにおける線幅変更処理は終了する。
【００７９】
次に、線画Ｃに対する線幅変更処理について説明する。線画Ｂの処理の終了後、ＣＰＵ２１０は注目画素を移動させて、線画Ｃにおいて上エッジを検出し、線幅変更処理を開始する。図１７は、ＣＰＵ２１０が線画Ｃに対して行う線幅変更処理を説明する説明図である。図１７（ａ）に示すように、注目画素が画素位置６１に位置したときに、ＣＰＵ２１０は上エッジを検出し、線幅変更処理における上エッジ置換処理を開始する。上エッジ置換処理は上述した線画Ｂにおける処理と同様なので説明は省略する。線画Ｃに対する上エッジ置換処理後のドットパターンＤは図１７（ｂ）のように、上エッジおよび下エッジがそれぞれＳドットである線画となる。
【００８０】
続いて、ＣＰＵ２１０は、図１７（ｃ）に示した注目画素の位置で水平エッジ置換処理を開始する。水平エッジ置換処理は図９のフローチャートに沿って説明する。図１７（ｃ）に示した位置に注目画素が位置すると、左エッジを検出し、ＣＰＵ２１０は水平エッジ置換処理を開始する。左エッジを検出すると、検出した左エッジの右側に水平方向に連なる黒色画素列の長さＴを計算する（図９：ステップＳ１３０２）。そして、Ｔが４以上であるか判断する（ステップＳ１３０４）。この場合、Ｔ＝４なので、ドット置換パターンより「Ｔ＝４」の場合のドットパターンを読み出す（ステップＳ１３０６）。つまり、左からＳドット、Ｍドット、Ｍドット、Ｓドットである。
【００８１】
その後、変数ｊを値１に設定し（ステップＳ１３０８）、注目画素を（Ｘ，Ｙ）とした時の（Ｘ＋１，Ｙ）の画素に対応した記録バッファーの値を確認し、その値がＴ＝４より大きいかを判断する（ステップＳ１３１０）。この場合、どちらの値も「４」なので、ステップＳ１３１２に進み、長さ記録バッファーの値とＴの値が同じであるか判断する（ステップＳ１３１２）。つまり、線画が水平方向に長いのか、垂直方向に長いのかを判断する。上記したように、この場合どちらの値も同じなので、次に、ドットパターンにＤに記録されているドットのサイズと、置き換えようとしているドットのサイズとを比較し（ステップＳ１３１４）、置換しようとしているドットのサイズの方が小さい場合にはドットの置き換えを行う（ステップＳ１３１６）。この場合は、どちらもＳドットなので置き換えは行わずに、変数ｊをインクリメントし（ステップＳ１３１８）、上記の処理をステップＳ１３１０から、線画Ｃの縦方向の長さ分、つまり４回繰り返す。
【００８２】
繰り返した結果、注目画素が図１７（ｃ）に示す位置にあるときはドットの置き換えは行わないが、図１７（ｄ）の位置に注目画素が位置した時には、左エッジ端および右エッジ端の画素をそれぞれＭドットからＳドットに置き換え、図１７（ｄ）に示すドットパターンＤとなる。続けて処理を繰り返すことにより、線画Ｃにおける水平エッジ置換処理の結果、図１７（ｅ）に示すように、周囲をＳドットで囲んだドットパターンＤとなる。
【００８３】
続いて、ＣＰＵ２１０は線画Ｃにおける下エッジ置換処理を行うが、図１３の下エッジ置換処理のフローチャートに示すように、注目画素の１つ上側に画素に対応する長さ記録バッファーには「４」が記録されており、既にドットの置換が行われた後であるので、結果として、線画Ｃにおける下エッジ置換処理においてはドットの置換は行われず（ステップＳ１６０２）、図１７（ｆ）に示すように、線画Ｃの周囲をＳドットで囲んだドットパターンＤとなり、線画Ｃにおける線幅変更処理は終了する。同時に画像データ５０における線幅変更処理は終了する。
【００８４】
そして、画像データ５０における線幅変更処理の終了後、生成した線画Ａ、線画Ｂ、線画Ｃを含むドットパターンＤを、ハーフトーン処理によって生成したハーフトーンドットデータに上書きすることによりドットデータの合成を行い、合成により生成した印刷データをプリンター３０に転送し、プリンター３０が印刷することにより印刷システム１０による印刷処理は終了する。
【００８５】
Ｂ．第２実施例
（Ｂ１）線幅変更処理（太線処理）：
次に、本発明における第２実施例を説明する。第１実施例では線幅変更処理のひとつである細線処理について説明したが、第２実施例では、線幅変更処理のもうひとつの処理である太線処理について説明する。太線処理は、文字や罫線等の線画の輪郭部分（エッジ部分）に形成するインクの形成位置およびインクドットサイズを調整することにより、線画を太く印刷するための処理である。以下太線処理について説明する。
【００８６】
第２実施例と第１実施例との異なる点は、線幅変更処理におけるドット置換パターンと、そのドット置換パターンの違いに伴なって生じる線幅変更処理の処理内容である。印刷システムの構成は図１に示した構成と同じであるので説明は省略する。また、印刷処理についても、第１実施例と全体としての流れは同じであるので説明は省略する。なお、以下の説明に際し、処理部等の名前、符号は第１実施例と同じ名前、符号を用いる。
【００８７】
まず第２実施例で用いるドット置換パターンについて説明する。図１８は、第２実施例で用いるドット置換パターンを説明した説明図である。第２実施例で用いるドット置換パターンは、第１実施例のドットパターンと異なり、Ｔが４以下のドットの置き換えにおいては、エッジを形成する画素の１つ手前の画素、つまり上エッジの場合は上エッジを形成する画素の１つ上の画素に、左エッジの場合は左エッジを形成する画素の１つ左の画素に、それぞれ空白ドット（Ｏドット）を形成し、エッジを形成する画素およびエッジに連なる他の画素については所定のサイズのドットを形成する。
【００８８】
そして、それ以外の場合は、線幅変更処理の処理内容に従って置換するドットパターンが記憶されている。上エッジ用置換パターンは、上エッジを形成する画素の１つ上の画素から下に向かって空白ドット（Ｏドット）、Ｓドット、Ｍドットで置き換える。下エッジ用置換パターンは、下エッジを形成画素から下に向かってＭドット、Ｓドットで置き換える。つまり、下エッジの場合は、下エッジ画素を形成する画素より１つ下の画素までドットを形成することになる。左エッジ用置換パターンは、左エッジを形成する画素の１つ左の画素から右に向かって空白ドット（Ｏドット）、Ｓドット、Ｍドットで置き換える。右エッジ用置換パターンは、右エッジを形成画素から右に向かってＭドット、Ｓドットで置き換える。つまり、右エッジの場合は、右エッジ画素を形成する画素より１つ右の画素までドットを形成することになる。
【００８９】
次に、具体例を示しながら、第２実施例の線幅変更処理を説明する。図１９は、印刷システム１０における印刷対象である画像データ７０を示した説明図である。画像データ７０は、ラスタライズ処理部２５１から線幅変更処理部２６０が受け取ったラスターデータである。画像データ７０には線画Ｅと線画Ｆと線画Ｇとが含まれている。線画Ｅは、横６×縦６の黒色画素によって構成されている。線画Ｆ、線画Ｇは共に、横６×縦６の黒色画素によって構成されている。また、線画Ｆと線画Ｇとは、縦に１列分の白色画素を挟んだ位置関係にある。第２実施例では、この画像データ７０に対して線幅変更処理を行う。
【００９０】
図２０は、第２実施例における線幅変更処理の流れを示すフローチャートである。線幅変更処理は、第１実施例と同様に、ＣＰＵ２１０がアプリケーション２４０で編集した画像データに対してラスターデータを生成すると開始される。線幅変更処理としてまずＣＰＵ２１０はラスターデータを読み込む（ステップ２１０２）。次に、このラスターデータに基づいて、線幅変更処理によって画像データ内のインクドットのパターンを決定し記録していくドットパターンＤを生成する（ステップＳ２１０４）。なお、ドットパターンＤはメモリー２２０内に記憶される。
【００９１】
ドットパターンＤを生成すると、ＣＰＵ２１０は、線幅変更処理に用いる長さ記録バッファー２７３を初期化する（ステップＳ２１０６）。長さ記録バッファー２７３を初期化後、方向記録バッファー２７４を初期化する（ステップＳ２１０７）。この方向記録バッファー２７４は第２実施例における線幅変更処理（太線処理）にのみ使用するバッファーである。詳細は後で説明する。ステップＳ２１０７以降の処理の流れは、第１実施例における線幅変更処理（図３：ステップ１１０８以降）と同様の流れであるので説明は省略する。
【００９２】
次に、線幅変更処理によって、ＣＰＵ２１０が画像データ７０上において注目画素を移動させながらエッジの検出を開始し、注目画素が線画Ｅの右上端で上エッジを検出し上エッジ置換処理を開始して時点から説明する。図２１は、ＣＰＵ２１０が線画Ｅに対して行う上エッジ置換処理を説明する説明図である。また図２２は、上エッジ置換処理の流れを示すフローチャートである。図２１は、上段にドットパターンＤ、中断に長さ記録バッファー、下段に方向記録バッファーを示した。
【００９３】
図２１（ａ）に示す注目画素の位置でＣＰＵ２１０が上エッジを検出すると、第１実施例と同様に注目画素の下側に連なる黒色画素の画素数であるＴを計算する（図２２：ステップＳ２２０２）。次にＴが４以上であるか判断する（ステップＳ２２０４）。この場合、Ｔ＝６であるので、ドット置換テーブル（図１８参照）から上エッジ用のドット置換パターンを読み出す（ステップＳ２２１２）。そして、後の処理に用いる変数である「i」に対して、「i＝０」に設定する（ステップS２２１４）。その後、注目画素の画素位置を（X，Y）とした時の（X，Y＋i）の画素位置、つまりこの場合（Ｘ，Ｙ）の位置に対応する方向記録バッファーに「２」が記録されているか確認する（ステップＳ２２１６）。図２１（ａ）の下段の方向記録バッファーに示すように、何も記録されていないので、ドットパターンＤの上エッジ置換処理該当画素を読み出した上エッジ用のドット置換パターンにドットを置き換える（ステップＳ２２１８）。
【００９４】
ここで、上エッジ用のドット置換パターンは、上エッジを形成する画素の１つ上の画素（つまり注目画素位置）から下に向かってＯドット、Ｓドット、Ｍドットでドットを置き換える。今、「i＝０」なので、（X，Y）の位置のドットを置き換えるが、この処理を「i＝２」となるまで、つまり（X，Y）の画素を含め下に３画素分に対して上記処理を繰り返し行い（ステップS２２２０、ステップS２２２２）、ドット置換後の線画Ｅは図２０（ｂ）に示すようになる。このようにして、注目画素が線画Ｅの右上端に位置する場合の上エッジ置換処理は終了する。この注目画素の位置には左エッジ、下エッジは存在しないので一つ右の画素に注目画素を移動して（図２１（ｃ）参照）、再度、上エッジ置換処理から開始する（図２０参照）。この処理を繰り返すと、処理の結果図２１（ｄ）に示すように、上エッジ置換処理前の線画Ｅに対して１ラスター上に空白ドットが１ラスター分形成され、その下からＳドットのラスター、続いてＭドットのラスターが形成されたドットパターンＤとなる。
【００９５】
線画Ｅにおける上エッジ置換処理が終了すると、注目画素を移動して、次に、線画Ｅの左エッジを検出し、ＣＰＵ２１０は水平エッジ置換処理を開始する。図２３は、第２実施例における水平エッジ置換処理の流れを示したフローチャートである。また図２４は、線画Ｅにおける水平エッジ置換処理を説明する説明図である。図２４（ａ）に示す位置に注目画素が位置し水平エッジ置換処理を開始すると、ＣＰＵ２１０注目画素の右側に連なる黒色画素数であるＴを計算し（ステップＳ２３０２）、Ｔが４より大きいか判断する（ステップＳ２３０４）。この場合、Ｔ＝６なので左エッジ置換処理（ステップＳ２３３２）、続いて右エッジ置換処理（ステップＳ２３３４）を行う。
【００９６】
図２５は、第２実施例における左エッジ置換処理の流れを示したフローチャートである。図２４（ａ）に示す注目画素位置でまずＣＰＵ２１０はドット置換テーブル（図１８参照）から、左エッジ用置換パターンを読み出す（ステップＳ２４０２）。そして処理に用いる変数「ｊ」を「ｊ＝０」を設定し（ステップＳ２４０４）、注目画素位置を（Ｘ，Ｙ）とした場合の（Ｘ＋ｊ，Ｙ）の画素に対応する方向記録バッファーに「１」が記録されていないか確認する（ステップＳ２４０６）。この場合、方向記録バッファーには何も記録されていないので、次に、方向記録バッファーの値に「２」が記録されていないか確認する（ステップＳ２４０７）。同様に、何も記録されていないので、次に（Ｘ＋ｊ，Ｙ）の画素位置、この場合は（Ｘ，Ｙ）の画素にＳドットが記録されているか確認する（ステップＳ２４０８）。（Ｘ，Ｙ）の画素位置にはドットは記録されておらず、かつ、置き換えようとしているドット、この場合はＯドットと、ドットパターンＤに記録されているドットは異なるので（ステップＳ２４１０）、（Ｘ、Ｙ）のドットをＯドットに置き換える（ステップＳ２４１１）。（Ｘ，Ｙ）のドットの置き換え後、変数ｊをインクリメントし、同様の処理、つまりステップＳ２４０７からステップＳ２４１４を繰り返し、注目画素を含めた右方向に３画素分に対して処理を行い終了する。つまり、「ｊ」の値が２より大きくなると処理を終了する。処理の結果、図２４（ｂ）に示すように、注目画素の位置にＯドットが形成されたドットパターンＤとなる。
【００９７】
水平エッジ置換処理において、左エッジ置換処理が終了すると、次に、検出した左エッジに対向する位置に存在する右エッジ置換処理を開始する（図２３：ステップＳ２３３４参照）。図２６は第２実施例における右エッジ置換処理の流れを示したフローチャートである。処理を開始するとＣＰＵ２１０は、ドット置換テーブル（図１８）から、右エッジ用のドット置換パターンを読み出す（ステップＳ２５０２）。そして、左エッジを検出した注目画素位置（Ｘ、Ｙ）（図２４（ａ）参照）を基準にして、（Ｘ＋Ｔ，Ｙ）の画素位置を（ＸR，ＹR）（図２４（ｃ）参照）とする（ステップＳ２５０４）。
【００９８】
続いて、変数「ｊ」に「ｊ＝０」を設定し、（ＸR＋ｊ，ＹR）のドット、つまり「ｊ＝０」であるので（ＸR，ＹR）のドットがＳドットであるか確認し（ステップＳ２５０８）、この場合Ｓドットであるのでドットの置き換えは行われず、変数ｊをインクリメントし（ステップＳ２５１４）、ｊが１より大きくなるまで（ステップＳ２５１６）、ステップＳ２５０８から処理は繰り返される。つまり右エッジを形成する画素と、その１つ右側の画素について処理を行う。そしてｊ＝１の時、ステップＳ２５１１において、（ＸR＋１，ＹR）のドットは、右エッジ用のドットパターンに従って、Ｓドットが記録される。そして、結果として右エッジが１画素分、拡張されたことになる。そして、この拡張によってドットが記録された画素に対応する方向記録バッファーに右エッジ置換処理によって拡張したドットであることを示す「２」を記録する（ステップＳ２５１２）。
【００９９】
このように、方向記録バッファーは、ドットの置換を行ったドットに対応する位置に、ドットを置き換えたことを示す数字を記録する。この方向記録バッファーへの記録は、右エッジ置換処理および下エッジ置換処理の場合にのみ記録するもので、左エッジ置換処理および上エッジ置換処理の場合のドットの置き換えに対しては記録は行わない。また、右エッジ置換処置によってドットの置き換えを行った際には、その置き換えた画素に対応する位置に「２」を、下エッジ置換処理による場合は「１」を、それぞれ記録する。
【０１００】
図２４（ｄ）に示した注目画素位置における右エッジ置換処理が終了すると、注目画素は移動し、線画Ｅにおける水平エッジ置換処理である右エッジ置換処理と左エッジ置換処理とを繰り返す。その結果、図２４(ｅ)に示すように、線画Ｅの左エッジの１つ左側の画素にはＯドット（空白ドット）が形成され、右エッジの１つ右側にはＳドットが拡張して形成され、下エッジを除いて線画Ｅの周囲を外側からＳドット、続いてＭドットで囲んだドットパターＤとなり水平エッジ置換処理は終了する。また、図２４（ｅ）の方向記録バッファーが示すように、Ｐ１の位置の方向記録バッファーには記憶はされず、Ｐ２の位置の方向記録バッファーには「２」が記録される。これは、Ｐ１に対応するドットパターンには、図２４（ｄ）に示すように、上エッジ置換処理によってＭドットが記録されていたため、右エッジ置換処理（図２６）のステップ２５１０において、置き換えようとしているドットと、ドットパターンＤに記録されているドットが同じであり、ドットの置き換えが行われず、方向記録バッファーへの記録処理が行われなかったためである。このようにして線画Ｅにおける水平エッジ置換処理は終了する。
【０１０１】
水平エッジ置換処理終了後、注目画素は移動し線画Ｅの下エッジ置換処理を開始する。図２７は、第２実施例における下エッジ置換処理を示すフローチャートである。また、図２８は、下エッジ置換処置を説明する説明図である。図２８（ａ）に示す位置に注目画素が位置すると、下エッジ置換処理が開始され、まず、注目画素の１つ上の画素である下エッジ画素の長さ記録バッファーが初期値であるか確認する（ステップＳ２６０２）。長さ記録バッファーは初期値であるので、ドット置換用テーブルから下エッジ用のドット置換パターンを読み出し（ステップＳ２６０４）、図２８（ａ）に示すように、注目画素を（Ｘ，Ｙ）とした時の（Ｘ，Ｙ−１）の画素位置を（ＸF，ＹF）とする。以降の処理は図２６において説明した右エッジ置換処理と処理が同じである。右エッジ置換処理との違いは、置き換えたドットに対応する方向記録バッファーに「１」を記録することである。方向記録バッファーに「１」を記録することで、対象画素が既にドットの置き換えが行われた画素であるのかを、後の処理の際に確認することができる。これら処理を繰り返すと、図２８において時系列順に図２８（ｂ）から（ｄ）のようなドットパターンＤおよび方向記録バッファーとなり線画Ｅに対する線幅変更処理は終了する。図２８（ｄ）に示すように、線画Ｅは、下エッジが下側に１画素ずつＳドットによって拡張され、かつその内側にＭドットが形成されたドットパターンＤとなる。また方向記録バッファーには、下エッジ置換処理によってドットの置き換えが行われた画素に相当する箇所に「１」が記録される。
【０１０２】
次に線画Ｆ、線画Ｇに対する線幅変更処理について説明するが、上記した処理と同じ処理内容については省略しながら説明する。図２９は線画Ｆ、線画Ｇに対する線幅変更処理における上エッジ置換処理が終了した後の状態を示した説明図である。上段にはドットパターンＤを示し、下段には方向記録バッファーを示した。長さ記録バッファーについては、本処理においては使用しないので図示を省略した。線画Ｆと線画Ｇとは縦１列分の画素を挟んだ位置関係となる。上エッジ置換処理については上述と同じ処理であるので説明を省略する。処理の結果は、図２９に示したように、線画Ｆ、線画Ｇの上エッジの１つ上の画素にＯドット、続いてＳドット、Ｍドットが形成されたドットパターンＤとなる。
【０１０３】
次に、線画Ｆ、線画Ｇについての水平エッジ置換処理について説明する。図３０は線画Ｆ、線画Ｇの水平エッジ置換処理を説明する説明図である。上段にはドットパターンＤを示し、下段には方向記録バッファーを示した。また、図３０は水平エッジ置換処理の線画Ｆ、線画Ｇの１行目の処理について示した図である。図３０（ａ）に示すように、線画Ｆの左エッジ処理として注目画素の位置にＯドットが形成される。これは、上述した左エッジ置換処理と同様の処理なので説明は省略する。
【０１０４】
続いて、線画Ｆの右エッジ置換処理を開始する。右エッジ置換処理後の状態を図３０（ｂ）に示した。図３０（ｂ）に示したＰ３のＳドットは、線画Ｆの右エッジ置換処理によって置き換えられたドットであるので方向記録バッファーには「２」が記録される。そして、右エッジ置換処理が終了し、注目画素がＰ３に位置したときに、Ｐ３に位置する画素は、次に、線画Ｇの左エッジ置換処理として処理されることになる。この時、図２５に示した左エッジ置換処理のステップＳ２４０７によって、方向記録バッファーに「２」が記録されていることを確認し、「２」が記録されている場合には、この右エッジ用のドットパターンによってドット置換を行う（図２５：ステップＳ２４１１）。右エッジ用のドット置換パターンは、左端がＯドットなので（図１８参照）、線画Ｇと線画Ｆとの間に存在するＳドットにＯドットを上書きし、線画と線画の間の離隔を保つ。つまり、左エッジを検出した位置にある画素が、既に他の線画を対象とした右エッジ置換処理によってドットの置き換えが行われている場合、換言すると、線画と線画の間に縦に１列分の白色画素を挟んだ状態で、その白色画素を黒色画素に置き換えて線画と線画が接するようなドットパターンＤを形成しているときは、その黒色画素に置換した画素を、空白ドット（Ｏドット）で上書きを行う。そして線画Ｇの右エッジ置換処理まで終了すると図３０（ｃ）のドットパターンＤおよび方向記録バッファーとなる。このような処理を行うことで、近接した線画間が黒色画素によって埋まるのを防止する。
【０１０５】
線画Ｆ、線画Ｇの１段目の置換処理が終了すると、ＣＰＵ２１０は、段下の画素列の水平置換処理を行う。処理の経過を図３１に示した。処理内容については、上述した処理と同様なので省略する。図３２には、線画Ｆ、線画Ｇについての水平置換処理の最終段の処理、及び、処理後の状態を示した。図３２（ｃ）に示すように、線画Ｆおよび線画Ｇの間にはＯドットが形成され、さらにその左側、つまり線画Ｆの右エッジ部分にはＭドットが形成される。また線画Ｇについては、下エッジを除いて、周囲がＳドットで囲まれ、かつ右エッジが１画素分Ｓドットによって拡張したドットパターンＤとなる。同様に処理内容の説明は省略する。このようにして処理が順に進み、線画Ｆ、線画Ｇについての水平エッジ置換処理は終了する。
【０１０６】
次に下エッジ置換処理が開始されるが、線画Ｆ、線画Ｇの下エッジ置換処理については、線画Ｅにおける処理と同じであるので説明は省略する。線画Ｆ、線画Ｇの下エッジ置換処理が終了すると、ドットパターンＤ、および、方向記録バッファーは図３３に示すようになる。図に示すように、線画Ｆと線画Ｇとに挟まれた部分を除いた周囲がＳドットによって囲まれ、その内側をＭドットで囲まれたドットパターンＤとなる。また下エッジが線画Ｆ、線画Ｇ共に下側に１画素分Ｓドットによって拡張している。このようにして、第２実施例における線幅変更処理は終了する。
【０１０７】
続いて、特定の形状のエッジ部分に対して、第２実施例における線幅変更処理（太線処理）を行った場合を説明する。図３４は第１特定エッジに対する線幅変更処理を説明する説明図である。図３４（ａ）は所定の画素の一部分である第１特定エッジを示した図である。黒色画素は（ａ）の外方にも連なっているものとする。エッジ部分は４５°の傾斜を成している。
【０１０８】
図３４（ｂ）は線幅変更処理前の状態、初期状態のドットパターンＤおよび方向記録バッファーを示している。図３４（ｃ）のＰ４の画素位置に注目画素が位置した時に、ＣＰＵ２１０は水平エッジ置換処理の左エッジ置換処理を行い、図３４（ｃ）に示したドットパターンＤとなる。そして、注目画素が移動して、図３４（ｄ）のＰ５に位置すると、注目画素の上側に下エッジを検出し、下エッジ置換処理を開始する。Ｐ５の画素は、下エッジ用のドット置換パターンに従ってＳドットが形成されるが、Ｐ６の画素については、図２７の下エッジ置換処理のステップＳ２６１０による処理によって、ドットの置き換えは行われない。またＰ５のドット置換に際に、ＣＰＵ２１０は方向記録バッファーに「１」を記録する。注目画素がＰ５の位置での下エッジ置換処理の後、ＣＰＵ２１０は、Ｐ５の位置で右側に左エッジを検出し、左エッジ置換処理を開始するが、Ｐ５の画素の方向記録バッファーに先ほどの処理によって「１」が記録されているので、つまり既に下エッジ置換処理によってドットの置換が行われた画素であるので、Ｐ５の画素のドットの置き換えは行わずに左エッジ置換処理は終了する。図３４（ｅ）にその状態を示した。図に示すように、水平エッジ置換処置ではドットの置換は行われずに終了する。この処理は、図２５に示した左エッジ置換処理のステップＳ２４０６に相当する。
【０１０９】
処理が進み、注目画素が図３４（ｆ）のＰ７に位置すると、注目画素の上側に下エッジを検出し、下エッジ置換処理を行い図３１（ｆ）のドットパターンＤとなる。また、置き換えたドットに対応する方向記録バッファーに「１」を記録する。こうして注目画素がＰ７の位置で下エッジ置換処理が終了し、水平エッジ置換処理（左エッジ置換処理）を開始する。図３４（ｇ）に水平エッジ置換処理後の状態を示した。図３４（ｅ）で説明したように、Ｐ８の方向記録バッファーには「１」が記録されているので、ドットの置き換えは行われずに処理は終了する。上記の処理を続けると、第１特定エッジは図３４（ｈ）に示すように、エッジ部分が１画素分Ｓドットによって拡張され、その内側にＭドットが形成されたドットパターンＤとして生成される。
【０１１０】
次に、第２特定エッジに対する線幅変更処理を説明する。図３５は第２特定エッジに対する線幅変更処理を説明する説明図である。図３５（ａ）は所定の画素の一部分である第２特定エッジを示した図である。黒色画素は図３５（ａ）の外方にも連なっているものとする。エッジ部分は４５°の傾斜を成している。
【０１１１】
図３５（ｂ）は線幅変更処理前の状態のドットパターンＤおよび方向記録バッファーを示している。図３５（ｃ）のＰ９の画素位置に注目画素が位置した時に、ＣＰＵ２１０は上エッジ置換処理を行い、図３５（ｃ）に示したドットパターンＤとなる。そして、図３５（ｄ）のＰ１０に隣接する右エッジの対向側に存在する左エッジの位置に注目画素が位置する時に、水平エッジ置換処理が行われ、Ｐ１０の画素はＳドットが、右エッジ置換処理として形成される。同時に方向記録バッファーには「２」が記録される。その後、注目画素がＰ１０に位置したとき、Ｐ１０の下側に存在する上エッジに対して上エッジ置換処理が行われるが、方向記録バッファーに「２」が記録されているため、図３５（ｅ）に示すように、ドットの置き換えは行われず処理は終了する。これは図２２に示した上エッジ置換処理のステップＳ２２１６に相当する。
【０１１２】
処理が進み、図３５（ｆ）のＰ１１、Ｐ１２に対して、水平エッジ置換処理における右エッジ置換処理を行い、Ｐ１１にはＳドット、Ｐ１２にはＭドットが形成される。同時に各方向記録バッファーに「２」が記録される。この処理は、Ｐ１２が形成する右エッジに対向する位置に存在する左エッジの左側に注目画素が位置する時に行われる。水平エッジ置換処理が終了すると、注目画素がＰ１１に位置した時に、上エッジを検出するが、方向記録バッファーに「２」が記録されているので、図３５（ｅ）で説明したように、ドットの置き換えは行われずに処理は終了する。上記の処理を続けると、第２特定エッジは図３５（ｈ）に示すように、エッジ部分が１画素分Ｓドットによって拡張され、その内側にＭドットが形成されたドットパターンＤとして生成される。
【０１１３】
次に、第３特定エッジに対する線幅変更処理を説明する。図３６は第３特定エッジに対する線幅変更処理を説明する説明図である。図３６（ａ）は所定の画素の一部分である第３特定エッジを示した図である。黒色画素は図３６（ａ）の外方にも連なっているものとする。エッジ部分は４５°の傾斜を成している。
【０１１４】
図３６（ｂ）は線幅変更処理前の状態のドットパターンＤおよび方向記録バッファーを示している。図３６（ｃ）に示すように、第３特定エッジの右エッジは、水平置換処理によって、ドットの置換が行われる。そしてドットの置換と同時に方向記録バッファーに「２」が記録される。そして、１段下の右エッジにおいても、同じく右エッジ置換処理としてドットの置換が行われ、方向記録バッファーには「２」が記録される（図３６（ｄ））。その後、図３６（ｅ）に示すように注目画素がＰ１３に位置したときに、Ｐ１３の上側に下エッジを検出するが、置き換えようとするドットパターンと、形成されているドットパターンが同じであるためドットの置き換えは行われず処理は終了する。これは図２７の下エッジ置換処理のステップＳ２６１２に相当する。以下同様に処理が行われ、図３６（ｆ）の状態を経て、結果として図３６（ｇ）に示すように、エッジ部分が１画素分Ｓドットによって拡張され、その内側にＭドットが形成されたドットパターンＤとなる。
【０１１５】
次に、第４特定エッジに対する線幅変更処理を説明する。図３７は第４特定エッジに対する線幅変更処理を説明する説明図である。図３７（ａ）は所定の画素の一部分である第４特定エッジを示した図である。黒色画素は図３７（ａ）の外方にも連なっているものとする。エッジ部分は４５°の傾斜を成している。
【０１１６】
図３７（ｂ）は線幅変更処理前の状態のドットパターンＤおよび方向記録バッファーを示している。図３７（ｃ），（ｄ），（ｆ）に示すように、各上エッジにおいて上エッジ置換処理が行われる。その処理の際、図３７（ｅ）に示すＰ１４の位置に注目画素が位置する際に、左エッジを検出し、左エッジ置換処理を開始するが、処理によって置き換えようとするドットパターンと、既に形成されているドットパターンとが同じであるためドットの置き換えは行われない。この処理は図２５の左エッジ置換処理におけるステップＳ２４１０に相当する。また図３７（ｇ）におけるＰ１５の注目画素位置でも同様の処理が行われる。上記の処理を繰り返し、結果として図３７（ｈ）に示すように、エッジ部分が１画素分Ｏドットによって拡張され、その内側にＳドット、続いてＭドットが形成されたドットパターンＤとなる。以上、特定エッジに対する線幅変更処理（太線処理）について説明した。
【０１１７】
以上説明したように、第１実施例における線幅変更処理（細線処理）においては、線画の幅が５画素以上の場合には線画を１画素分、細くする処理を行う。また、全てのエッジ画素、つまり、線画の輪郭に沿ってＳドットを配置するので、線画のエッジは細く、かつ、輪郭部分におけるインクの滲みを抑制し明確なエッジを形成して印刷を行うことができる。
【０１１８】
第２実施例における線幅変更処理（太線処理）においては、線画の幅が５画素以上の場合には線画を１画素分、太くする処理を行う。また、全てのエッジ画素、つまり、線画の輪郭に沿ってＳドットを配置するので、線画のエッジは太く、かつ、輪郭部分におけるインクの滲みを抑制し明確なエッジを形成することができる。また、エッジ部分を太くするので、エッジ部分がしっかりとした線画として印刷データを生成することができる。
【０１１９】
Ｃ．変形例
（Ｃ１）変形例１：
上記実施例では、線画のエッジ部分を１画素分、細くする処理および太くする処理を行うとしたが、変形例１では、１画素分の線幅の増減に限らず、０．５ドット単位で線幅の増減を行う。その場合、図３８に示すように、形成するドットの単位は１ドットとし、そのドットを形成する位置を、置き換える画素に重複した位置に形成するようにする。
【０１２０】
（Ｃ２）変形例２：
変形例２では、上実施例における細線処理および太線処理を、印刷媒体や、処理対象とする画像データの性質によって選択するようにする。またその際、変形例１で説明した０．５ドット単位で線幅の増減を調整するとしてもよい。具体的には、印刷媒体の種類別や印刷モード別に、それに対応した線幅変更処理の種類（細線処理もしくは太線処理）および線幅の増減のドット数が記録された線幅増減テーブル２７１をパーソナルコンピューター２０内に設ける（図１参照）。そして、ＣＰＵ２１０が、アプリケーション２４０から受け取った印刷データ内の印刷媒体情報や、印刷モード情報などを参照し、その情報に基づいて線幅変更処理の種類と線幅の増減のドット数を設定し、線幅変更処理を実行する。このようにすることで、印刷媒体や画像データの特性に合わせて、鮮明なエッジを表現した印刷を行う事ができる。
【０１２１】
（Ｃ３）変形例３：
上記実施例では、文字や罫線である線画に対して線幅変更処理を適用したが、それに限らず、変形例３では、図形、写真、グラフなど、印刷データ内に含まれる画像のエッジ部分に適用する。このような画像のエッジ部分に線幅変更処理を適用しても上記実施例と同様の効果を得ることができる。
【０１２２】
以上、本発明における実施例および変形例について説明したが、本発明はこれらの態様に限られるものではなく、本発明の要旨を変更しない範囲で、種々の態様で実施をすることができる。例えば、上記実施例では印刷装置としてインクジェットプリンターを採用したが、これに限られることなく、布地に模様をつけるための捺染装置、カラーフィルター製造装置、有機ＥＬディスプレイ等のディスプレイ製造装置、ＤＮＡ溶液をチップへ塗布するＤＮＡチップ製造装置など、様々な工業用装置に用いられる液体吐出装置に適用可能である。また、液体の吐出方式は、駆動素子（ピエゾ素子）に電圧をかけて、インク室を膨張・収縮させることにより流体を噴射するピエゾ方式に限らず、発熱素子を用いてノズル内に気泡を発生させ、その気泡によって液体を噴射させるサーマル方式を採用してもよい。
【０１２３】
その他、上記実施例では、印刷領域に位置する連続用紙に対して、ヘッドを移動する動作（主走査）と、連続用紙を移動方向と交差する搬送方向に搬送する動作（副走査）とを繰り返すプリンターを採用したが、これに限られることなく、単票紙に印刷を行う、所謂インパクトプリンターや、ヘッドの下面に紙幅長さに亘って並び、停まっているノズル列の下を、紙幅方向と交差する方向に用紙を搬送させることによって画像を形成する、所謂ラインプリンターなど、ドットによって印刷を行うプリンターに適用することが可能である。
【符号の説明】
【０１２４】
１０…印刷システム
２０…パーソナルコンピューター
３０…プリンター
５０，７０…画像データ
５１〜６１…画素位置
２１０，３１０…ＣＰＵ
２１５…ハードディスク
２２０，３２０…メモリー
２３０…入出力インターフェース部
２４０…アプリケーション
２５０…プリンタードライバー
２５１…ラスタライズ処理部
２５２…色変換処理部
２５３…ハーフトーン処理部
２５４…データ合成部
２６０…線幅変更処理部
２６１…エッジ検出部
２６２…長さ計算部
２６３…ドット置換部
２７０…処理用テーブル
２７１…線幅増減テーブル
２７２…ドット置換テーブル
２７３…長さ記録バッファー
２７４…方向記録バッファー
３４０…ユニット制御回路
３５０…ヘッドユニット
３６０…キャリッジユニット
３７０…搬送ユニット
【図１】
2010278714.tif 000003
【図２】
2010278714.tif 000004
【図３】
2010278714.tif 000005
【図４】
2010278714.tif 000006
【図５】
2010278714.tif 000007
【図６】
2010278714.tif 000008
【図７】
2010278714.tif 000009
【図８】
2010278714.tif 000010
【図９】
2010278714.tif 000011
【図１０】
2010278714.tif 000012
【図１１】
2010278714.tif 000013
【図１２】
2010278714.tif 000014
【図１３】
2010278714.tif 000015
【図１４】
2010278714.tif 000016
【図１５】
2010278714.tif 000017
【図１６】
2010278714.tif 000018
【図１７】
2010278714.tif 000019
【図１８】
2010278714.tif 000020
【図１９】
2010278714.tif 000021
【図２０】
2010278714.tif 000022
【図２１】
2010278714.tif 000023
【図２２】
2010278714.tif 000024
【図２３】
2010278714.tif 000025
【図２４】
2010278714.tif 000026
【図２５】
2010278714.tif 000027
【図２６】
2010278714.tif 000028
【図２７】
2010278714.tif 000029
【図２８】
2010278714.tif 000030
【図２９】
2010278714.tif 000031
【図３０】
2010278714.tif 000032
【図３１】
2010278714.tif 000033
【図３２】
2010278714.tif 000034
【図３３】
2010278714.tif 000035
【図３４】
2010278714.tif 000036
【図３５】
2010278714.tif 000037
【図３６】
2010278714.tif 000038
【図３７】
2010278714.tif 000039
【図３８】
2010278714.tif 000040