(57)【特許請求の範囲】
【請求項１】
画像に誤差拡散処理を行う画像処理装置であって、
前記画像を構成する画素のみから選択される注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段と、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段と、
を備え、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記補正手段は、
前記周辺範囲内の前記複数の参照位置の画素の誤差値を、各参照位置に応じた重みを用いて前記注目画素の入力値に加算して、前記補正入力値を算出し、
前記一部の参照位置についての誤差値として、前記一部の参照位置から最も近くに位置する前記画像内の画素を基準とした前記周辺範囲に含まれる画素の誤差値のうち、前記重みが最も大きい参照位置の画素の誤差値を少なくとも用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理装置。
【請求項３】
画像に誤差拡散処理を行う画像処理装置であって、
注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を、各参照位置に応じた重みを用いて加算して、補正入力値を算出する補正手段と、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段と、
を備え、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置から最も近くに位置する前記画像内の画素を基準とした前記周辺範囲に含まれる画素の誤差値のうち、前記重みが最も大きい参照位置の画素の誤差値を少なくとも用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理装置。
【請求項４】
請求項１から請求項３までのいずれか１項に記載の画像処理装置であって、
前記変換手段は、前記注目画素の誤差値を算出して誤差バッファに登録し、
前記誤差バッファは、前記画像を構成する画素の誤差値が登録される第１の領域と、前記画像よりも外側において前記周辺範囲に含まれ得る領域を構成する仮想画素の誤差値として前記代替値が登録される第２の領域とを含むこと
を特徴とする画像処理装置。
【請求項５】
請求項４に記載の画像処理装置であって、
前記誤差拡散処理は、前記画像の１ライン分ずつ順に行われ、
前記補正手段は、１ライン分の誤差拡散処理が終了すると、次に誤差拡散処理を行うラインの第２の領域に前記代替値を登録すること
を特徴とする画像処理装置。
【請求項６】
画像に誤差拡散処理を行う画像処理装置であって、
注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段と、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段と、
を備え、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算し、
前記変換手段は、前記注目画素の誤差値を算出して誤差バッファに登録し、
前記誤差バッファは、前記画像を構成する画素の誤差値が登録される第１の領域と、前記画像よりも外側において前記周辺範囲に含まれ得る領域を構成する仮想画素の誤差値として前記代替値が登録される第２の領域とを含み、
前記誤差拡散処理は、前記画像の１ライン分ずつ順に行われ、
前記補正手段は、１ライン分の誤差拡散処理が終了すると、次に誤差拡散処理を行うラインの第２の領域に前記代替値を登録すること
を特徴とする画像処理装置。
【請求項７】
請求項１から請求項６までのいずれか１項に記載の画像処理装置であって、
前記補正手段は、前記一部の参照位置についての誤差値として、前記一部の参照位置とともに前記周辺範囲に含まれ得る画素の誤差値を用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理装置。
【請求項８】
画像に誤差拡散処理を行う画像処理装置としてコンピュータを機能させるための画像処理プログラムであって、
前記画像を構成する画素のみから選択される注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段、及び、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段
としてコンピュータを機能させ、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理プログラム。
【請求項９】
画像に誤差拡散処理を行う画像処理装置としてコンピュータを機能させるための画像処理プログラムであって、
注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を、各参照位置に応じた重みを用いて加算して、補正入力値を算出する補正手段、及び、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段
としてコンピュータを機能させ、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置から最も近くに位置する前記画像内の画素を基準とした前記周辺範囲に含まれる画素の誤差値のうち、前記重みが最も大きい参照位置の画素の誤差値を少なくとも用いた代替値を、前記注目画素の入力値に加算すること
を特徴とする画像処理プログラム。
【請求項１０】
画像に誤差拡散処理を行う画像処理装置としてコンピュータを機能させるための画像処理プログラムであって、
注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段、及び、
前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段
としてコンピュータを機能させ、
前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算し、
前記変換手段は、前記注目画素の誤差値を算出して誤差バッファに登録し、
前記誤差バッファは、前記画像を構成する画素の誤差値が登録される第１の領域と、前記画像よりも外側において前記周辺範囲に含まれ得る領域を構成する仮想画素の誤差値として前記代替値が登録される第２の領域とを含み、
前記誤差拡散処理は、前記画像の１ライン分ずつ順に行われ、
前記補正手段は、１ライン分の誤差拡散処理が終了すると、次に誤差拡散処理を行うラインの第２の領域に前記代替値を登録すること
を特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に誤差拡散処理を行う画像処理装置に関する。
【背景技術】
【０００２】
従来、ハーフトーン処理の一つとして誤差拡散処理が知られている。誤差拡散処理は、主走査方向に１ラスタずつ行われるため、副走査方向への誤差は誤差バッファに記憶されて次のラスタの処理時に使用される。
【０００３】
特許文献１には、同一ページ内の異なった画像に対して誤差拡散処理を行う場合に、１つ目の画像の処理の後に誤差バッファを初期化して、２つ目の画像に誤差が伝播することを防ぐことにより、２つ目の画像の先頭における画質低下を回避する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３１９１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、画像の主走査方向両端部における画質については全く考慮されていない。
本発明は、こうした問題にかんがみてなされたものであり、画像の主走査方向両端部における画質の低下を抑制する技術を提供することを目的としている。
【課題を解決するための手段】
【０００６】
本明細書は上記目的を達成する構成を開示する。第１の構成は、画像に誤差拡散処理を行う画像処理装置であって、注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段と、前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段と、を備え、前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算することを特徴とする。
【０００７】
このような画像処理装置によれば、画像の主走査方向両端部における画質の低下を抑制することができる。すなわち、誤差拡散処理においては、注目画素が画像の主走査方向における最端部まで走査されるため、注目画素を基準とした周辺範囲が画像の外側にはみ出し、周辺範囲内の一部の参照位置が注目画素の主走査方向において画像の外側に位置する場合がある。この場合にも、注目画素の主走査方向において画像の外側に位置する参照位置の誤差値として、画像内の画素のうち、その参照位置の周辺に位置する特定の画素の誤差値を用いた代替値が、注目画素の入力値に加算される。したがって、参照位置が注目画素の主走査方向において画像の外側に位置する場合にも、注目画素の入力値に対して加算される誤差値を、画像内の画素の誤差値に基づく適切な値に近づけることができる。その結果、画像の主走査方向両端部における画質の低下を抑制することができる。なお、画素の誤差値を用いた代替値には、画素の誤差値そのものの他、画素の誤差値に乱数を加算した値や、１つ以上の画素の誤差値を用いた算術演算で得られる値（例えば複数の画素の誤差値の平均値）なども含まれる。また、注目画素の主走査方向において画像の外側に位置するすべての参照位置について代替値を用いることに限定されるものではなく、代替値を用いない参照位置が含まれていても同様の効果が得られる。
【０００８】
また、第２の構成は、第１の構成の画像処理装置であって、前記補正手段は、前記一部の参照位置についての誤差値として、前記一部の参照位置とともに前記周辺範囲に含まれ得る画素の誤差値を用いた代替値を、前記注目画素の入力値に加算することを特徴とする。このような画像処理装置によれば、注目画素の主走査方向において画像の外側に位置する参照位置と関連性の高い誤差値を用いた代替値を得ることができる。
【０００９】
また、第３の構成は、第１又は第２の構成の画像処理装置であって、前記補正手段は、前記周辺範囲内の前記複数の参照位置の画素の誤差値を、各参照位置に応じた重みを用いて前記注目画素の入力値に加算して、前記補正入力値を算出し、前記一部の参照位置についての誤差値として、前記一部の参照位置から最も近くに位置する前記画像内の画素を基準とした前記周辺範囲に含まれる画素の誤差値のうち、前記重みが最も大きい参照位置の画素の誤差値を少なくとも用いた代替値を、前記注目画素の入力値に加算することを特徴とする。このような画像処理装置によれば、注目画素の主走査方向において画像の外側に位置する参照位置と最も関連性の高い誤差値を用いた代替値を得ることができる。
【００１０】
なお、第１又は第２の構成の画像処理装置であって、前記補正手段は、前記周辺範囲内の前記複数の参照位置の画素の誤差値を、各参照位置に応じた重みを用いて前記注目画素の入力値に加算して、前記補正入力値を算出し、前記一部の参照位置についての誤差値として、前記一部の参照位置とともに周辺範囲に含まれ得る画素の誤差値のうち、その周辺範囲における重みが最も大きい参照位置の画素の誤差値を少なくとも用いた代替値を、前記注目画素の入力値に加算することを特徴とする構成としてもよい。
【００１１】
また、第４の構成は、第１〜第３の構成のいずれか１つの画像処理装置であって、前記変換手段は、前記注目画素の誤差値を算出して誤差バッファに登録し、前記誤差バッファは、前記画像を構成する画素の誤差値が登録される第１の領域と、前記画像よりも外側において前記周辺範囲に含まれ得る領域を構成する仮想画素の誤差値として前記代替値が登録される第２の領域とを含むことを特徴とする。このような画像処理装置によれば、誤差バッファを、画像よりも外側において周辺範囲に含まれ得る領域まで拡張しているため、画像の主走査方向両端部の画素を、それ以外の画素と同様に処理することができる。したがって、画像の主走査方向両端部の画素を、それ以外の画素と区別して処理する場合に比べて、処理を速くすることができる。
【００１２】
また、第５の構成は、第４の構成の画像処理装置であって、前記誤差拡散処理は、前記画像の１ライン分ずつ順に行われ、前記補正手段は、１ライン分の誤差拡散処理が終了すると、次に誤差拡散処理を行うラインの第２の領域に前記代替値を登録することを特徴とする。このような画像処理装置によれば、誤差拡散処理が１ライン分終了した段階で代替値を登録するようにしているため、１ライン分よりも細かな単位（例えば１画素単位）で代替値を登録する場合と比較して、処理を単純化することができる。
【００１３】
また、第６の構成は、画像に誤差拡散処理を行う画像処理装置としてコンピュータを機能させるための画像処理プログラムであって、注目画素の入力値に、前記注目画素を基準とした所定の周辺範囲内の複数の参照位置の画素の誤差値を加算して、補正入力値を算出する補正手段、及び、前記補正入力値を、しきい値との比較に基づき、前記入力値の階調数よりも低い階調数の出力値に変換し、階調変換によって生じた前記注目画素の誤差値を算出する変換手段としてコンピュータを機能させ、前記補正手段は、前記周辺範囲内の前記複数の参照位置のうちの一部の参照位置が前記注目画素の主走査方向において前記画像の外側に位置する場合に、前記一部の参照位置についての誤差値として、前記画像内の特定の画素の誤差値であって、前記一部の参照位置の周辺に位置する前記特定の画素の誤差値を用いた代替値を、前記注目画素の入力値に加算することを特徴とする。このような画像処理プログラムによれば、第１の構成の画像処理装置としてコンピュータを機能させることができ、これにより前述した効果を得ることができる。
【図面の簡単な説明】
【００１４】
【図１】印刷システムの概略構成を表すブロック図である。
【図２】（ａ）は誤差拡散処理の処理ブロック図、（ｂ）は誤差拡散処理で使用される誤差マトリクスを示す図、（ｃ）は誤差拡散処理で使用される誤差バッファを示す図である。
【図３】（ａ）は画像の上方及び左右方向の拡張領域の画素の誤差値を初期化する誤差拡散処理によりベタパターンの画像を処理した結果であり、（ｂ）は誤差拡散処理後の画像におけるドット数を副走査方向に沿った列ごとに集計したグラフである。
【図４】パーソナルコンピュータがプリンタドライバの機能として実行する処理（誤差拡散フロー）のフローチャートである。
【図５】誤差拡散処理のフローチャートである。
【図６】（ａ）は実施形態の誤差拡散処理によりベタパターンの画像を処理した結果であり、（ｂ）は誤差拡散処理後の画像におけるドット数を副走査方向に沿った列ごとに集計したグラフである。
【発明を実施するための形態】
【００１５】
以下、本発明が適用された実施形態について、図面を用いて説明する。
［１．全体構成］
図１は、実施形態の印刷システムの概略構成を表すブロック図である。この印刷システムは、パーソナルコンピュータ１とプリンタ２とがデータ通信可能に構成されたものである。
【００１６】
パーソナルコンピュータ１は、汎用の情報処理装置であり、制御部１１、記憶部１２、通信部１３、操作部１４及び表示部１５を備えている。
制御部１１は、パーソナルコンピュータ１の各部を統括制御するものであり、ＣＰＵ１１１、ＲＯＭ１１２及びＲＡＭ１１３を備えている。記憶部１２は、記憶データの書換えが可能な不揮発性の記憶装置であり、本実施形態ではハードディスク装置が用いられている。そして、記憶部１２には、オペレーティングシステム（ＯＳ）１２１、グラフィックツール等のアプリケーションプログラム１２２、パーソナルコンピュータ１からプリンタ２を利用可能とするためのソフトウェア（プログラム）であるプリンタドライバ１２３などがインストールされている。通信部１３は、プリンタ２との間でデータ通信を行うためのインタフェースである。操作部１４は、ユーザからの外部操作による指令を入力するための入力装置であり、本実施形態ではキーボードやポインティングデバイス（マウスやタッチパッド等）が用いられている。表示部１５は、各種情報をユーザが視認可能な画像として表示するための出力装置であり、本実施形態では液晶ディスプレイが用いられている。
【００１７】
一方、プリンタ２は、インクジェット方式の印刷装置であり、制御部２１、記憶部２２、通信部２３、操作部２４、表示部２５及び印刷実行部２６を備えている。
制御部２１は、プリンタ２の各部を統括制御するものであり、ＣＰＵ２１１、ＲＯＭ２１２及びＲＡＭ２１３を備えている。記憶部２２は、記憶データの書換えが可能な不揮発性の記憶装置であり、本実施形態ではフラッシュメモリが用いられている。通信部２３は、パーソナルコンピュータ１との間でデータ通信を行うためのインタフェースである。操作部２４は、ユーザからの外部操作による指令を入力するための入力装置であり、各種操作ボタンを備えている。表示部２５は、各種情報をユーザが視認可能な画像として表示するための出力装置であり、小型の液晶ディスプレイが用いられている。印刷実行部２６は、記録媒体としての用紙の搬送方向と直交する方向へ往復移動可能な印刷ヘッド２７を備え、印刷ヘッド２７の往復動作中に、画像を構成する各画素が二値（ドットのオン／オフ）で表現された印刷データに基づいてインク滴を吐出することで、用紙に画像を印刷する。
【００１８】
［２．処理の概要］
次に、本実施形態の印刷システムで実行される処理の概要について説明する。パーソナルコンピュータ１では、実行中のアプリケーションプログラム１２２において印刷開始操作が行われることによりプリンタドライバ１２３が起動する。プリンタドライバ１２３が起動すると、パーソナルコンピュータ１の制御部１１は、印刷対象の画像を表す２５６階調（０〜２５５のいわゆる８ビットレンジ）のＲＧＢ値で表現された画像データを、２５６階調のＣＭＹＫ値で表現された画像データに変換する色変換処理を行う。さらに、色変換処理後の画像データを、二値のＣＭＹＫ値で表現された画像データ（印刷データ）に変換する誤差拡散処理を行い、印刷データをプリンタ２に供給する。その結果、プリンタ２は、パーソナルコンピュータ１から供給された印刷データの表す画像を印刷実行部２６で印刷する。
【００１９】
図２（ａ）はパーソナルコンピュータ１で実行される誤差拡散処理の処理ブロック図、図２（ｂ）は誤差拡散処理で使用される誤差マトリクスを示す図、図２（ｃ）は誤差拡散処理で使用される誤差バッファを示す図である。誤差拡散処理では、処理対象の画像を構成する画素のうちの１つが、注目画素（処理対象の画素）として順に選択される。注目画素は、画像の左上隅の画素を起点として主走査方向（横方向）に順にシフトし、画像の端部に到達すると、次の行（副走査方向に１画素分シフトした行）の端部から主走査方向に順にシフトする。この繰り返しにより、画像を構成するすべての画素が注目画素として選択される。なお、本実施形態では、主走査方向において注目画素がシフトする方向が行ごとに反転する双方向処理を採用している。
【００２０】
そして、誤差拡散処理では、注目画素の周辺に存在する処理済みの画素の誤差値が、注目画素の階調値（入力値）に加算されることにより、補正入力値が算出され、補正入力値としきい値との比較に基づき、二値化後の出力値（ドットの有無）が決定される。また、補正入力値から出力値への階調変換（二値化）によって生じた誤差値が、未処理の周辺画素に分配されるように誤差バッファに登録される。
【００２１】
補正入力値は、誤差マトリクスに従い、注目画素を基準とした複数の参照位置の画素の誤差値が、注目画素に対する相対位置に応じた重み付けで、その注目画素の入力値に加算されることにより算出される。本実施形態では、前述したように双方向処理を採用しているため、図２（ｂ）に示す２種類の誤差マトリクス（第１の誤差マトリクス及び第２の誤差マトリクス）が行ごとに交互に使用される。本実施形態で使用される誤差マトリクスは、注目画素（◎印で示す画素）の周辺の１２個の参照位置（周辺画素）について、注目画素に誤差値を加算する際の重み付け係数（この例では１，３，５，７の数値）が規定されたものである。これらの誤差マトリクスに従い、誤差バッファに登録されている周辺画素の誤差値を、各周辺画素の重み付け係数に応じた比率で注目画素の入力値に加算することで、補正入力値が算出される。
【００２２】
誤差バッファは、図２（ｃ）に示すように、処理済みの画素（画像を構成する画素）の誤差値が登録される処理領域（行０以降でかつ列ｃ〜ｈの白色部分）と、誤差マトリクスが処理領域からはみ出ることにより参照位置となる画素の誤差値が登録される拡張領域（行−２，−１でかつ列ｃ〜ｈと、列ａ，ｂ，ｉ，ｊの灰色部分）とからなる。したがって、誤差マトリクスの列数がＭ個（本実施形態では５個）である場合、拡張領域の列数はＭ−１個（誤差マトリクスの列数から注目画素が位置する列数である１を差し引いた数であり、本実施形態では４個）となる。また、本実施形態では、処理領域の行数は、画像に含まれる全ラスタ分の行数と一致する。すなわち、処理領域には、画像に含まれる全画素の誤差値が登録可能となっている。なお、別の実施形態では、誤差バッファは、３行分の記憶領域（処理領域及び拡張領域）であってもよい。すなわち、誤差バッファと同じ行数分の記憶領域であってもよい。この場合には、３行分の記憶領域が、行ごとに入れ替えて使用される。つまり、図２（ｃ）に示す行０の画素ｃ０〜ｈ０を処理する際には、行−２（画素ａ−２〜ｊ−２），行−１（画素ａ−１〜ｊ−１），行０（画素ａ０〜ｊ０）の３ライン分として使用され、行１の画素ｃ１〜ｈ１を処理する際には、行−２の画素の誤差値は参照されないため、行−２のために使用されていた記憶領域が、行１（画素ａ１〜ｊ１）のために使用される。
【００２３】
ところで、誤差拡散処理の開始直後においては、注目画素が画像の上端部に位置することにより、画像上方の拡張領域（図２（ｃ）でいう行−２，−１）が参照位置となるため、処理済みの画素の誤差値がほとんど反映されない。その結果、画像の上端部において、ドット遅れや、ドットが過大に出力される現象が発生しやすいという問題がある。ただし、この現象は、画像上方の拡張領域の画素の誤差値を、あらかじめ何らかの値（例えば０を基準とした振り幅を持つ乱数）で初期化するといった対策をとることである程度抑制される。
【００２４】
一方、注目画素が画像の左右両端部（主走査方向両端部）に位置する場合にも、画像の左右方向の拡張領域（図２（ｃ）でいう行０以降の列ａ，ｂ，ｉ，ｊ）が参照位置となるため、画像の左右両端部においても同様の現象（ドット遅れ等）が発生する。しかしながら、この現象については、画像の左右方向の拡張領域の画素（主走査方向において画像の外側に位置する画素）の誤差値を乱数等で初期化しても、抑制効果が少ないという問題があった。図３（ａ）は、画像の上方及び左右方向の拡張領域の画素の誤差値を乱数で初期化する誤差拡散処理により一様のベタパターンの画像を処理した結果である。また、図３（ｂ）は、誤差拡散処理後の画像におけるドット数を副走査方向に沿った列ごとに集計したグラフである。図３（ｂ）において、画像の上方の拡張領域のみ画素の誤差値を初期化し、画像の左右方向の拡張領域については画素の誤差値を初期化しない場合の結果が実線で示されており、画像の上方及び左右方向の拡張領域の画素の誤差値を初期化した場合の結果が破線で示されている。これらの図から明らかなように、画像の左右方向の拡張領域の画素の誤差値を初期化しない場合及び初期化した場合のいずれにおいても、画像の左右両端部においてドットが少なくなる現象が発生しており、初期化による抑制効果がほとんど見られない。
【００２５】
そこで、本実施形態では、画像の左右方向の拡張領域の画素の誤差値として、画像内の処理済みの画素の誤差値を登録することで、画像の左右両端部におけるドット遅れなどの現象を抑制する。
【００２６】
［３．具体的処理手順］
次に、パーソナルコンピュータ１の制御部１１（具体的にはＣＰＵ１１１）が、プリンタドライバ１２３の機能として実行する処理（誤差拡散フロー）について、図４のフローチャートを用いて説明する。
【００２７】
制御部１１は、まずＳ１１で、誤差拡散処理の対象となる画像データのすべてのラスタについて、後述するＳ１２〜Ｓ１４の処理を行ったか否かを判定する。このＳ１１で、未処理のラスタが存在すると判定した場合には、未処理のラスタのうち、画像における位置が最も上方のラスタを処理対象として選択した後、Ｓ１２へ移行する。
【００２８】
Ｓ１２で、制御部１１は、処理対象のラスタに属するすべての画素について、後述するＳ１３の処理を行ったか否かを判定する。このＳ１２で、未処理の画素が存在すると判定した場合には、前述した双方向処理の順序（図２（ｃ）でいうｃ０，ｄ０，…，ｇ０，ｈ０，ｈ１，ｇ１，…，ｄ１，ｃ１，ｃ２，ｄ２，…といった順序）に基づき、未処理の画素のうちの１つを注目画素として選択した後、Ｓ１３へ移行する。
【００２９】
Ｓ１３で、制御部１１は、注目画素のドットの形成態様（ドットの有無）を決定するための誤差拡散処理を行う。この誤差拡散処理の詳細について、図５のフローチャートを用いて説明する。
【００３０】
制御部１１は、誤差拡散処理を開始すると、まずＳ２１で、誤差マトリクスを用いて誤差バッファから周辺画素の誤差値を収集し、収集した誤差値を注目画素の入力値に加算して、補正入力値を算出する。具体的には、各周辺画素について誤差バッファに登録されている誤差値と、その周辺画素について設定されている重み付け係数とを乗算し、すべての周辺画素についての算出値の総和を重み付け係数の総和で除算した値を収集誤差値として、入力値に加算する。
【００３１】
続いて、制御部１１は、Ｓ２２で、補正入力値が、あらかじめ設定されているしきい値（本実施形態では１２８）よりも大きいか否かを判定する。このＳ２２で、補正入力値がしきい値よりも大きいと判定した場合には、Ｓ２３へ移行し、注目画素の出力ドットをドットありに決定した後、Ｓ２５へ移行する。一方、Ｓ２２で、補正入力値がしきい値以下であると判定した場合には、Ｓ２４へ移行し、注目画素の出力ドットをドットなしに決定した後、Ｓ２５へ移行する。
【００３２】
続いて、制御部１１は、Ｓ２５で、注目画素の出力ドットを相対値に変換する。相対値とは、出力ドットを入力値のレンジに換算した値であり、相対値表（図２（ａ））にあらかじめ登録されている。本実施形態では、ドットありの相対値が２５５に設定されており、ドット無しの相対値が０に設定されている。
【００３３】
続いて、制御部１１は、Ｓ２６で、補正入力値から相対値を減算した値を、注目画素の誤差値として誤差バッファに登録する。これにより、図４のＳ１３の誤差拡散処理を終了し、Ｓ１２へ戻る。
【００３４】
一方、制御部１１は、Ｓ１２で、処理対象のラスタに属するすべての画素についてＳ１３の処理を行った（未処理の画素が存在しない）と判定した場合には、Ｓ１４へ移行する。そして、Ｓ１４で、誤差バッファにおいて処理領域に登録されている特定の画素の誤差値を、画像の左右方向の拡張領域の画素の誤差値として登録する処理を行う。具体的には、画像の左右方向の拡張領域の画素のうち、次に処理対象となるラスタと同じ行に位置する画素の誤差値として、その画素に隣接する（最も近くに位置する）画像内の画素を注目画素とした場合に重み付け係数の最も大きい処理済みの周辺画素の誤差値を登録する。
【００３５】
ここで、Ｓ１４の処理の具体例について説明する。図２（ｃ）に示す画素ｃ０から画素ｈ０まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画像の左方向の拡張領域の画素ａ１，ｂ１の誤差値として、画素ｃ０の誤差値をコピーする。つまり、画像内の画素のうち、画素ａ１，ｂ１に隣接する画素ｃ１を注目画素とした場合に、重み付け係数の最も大きい周辺画素である画素ｃ０の誤差値が、画素ａ１，ｂ１の誤差値として登録される。なお、画素ｃ１を処理する際に使用される誤差マトリクスは第２の誤差マトリクス（図２（ｂ））であり、重み付け係数が最も大きいのは画素ｃ０，ｄ１であるが、画素ｄ１は未処理であるため、画素ｃ０の誤差値が用いられる。
【００３６】
同様に、画像の右方向の拡張領域の画素ｉ１，ｊ１の誤差値として、画素ｈ０の誤差値をコピーする。つまり、画像内の画素のうち、画素ｉ１，ｊ１に隣接する画素ｈ１を注目画素とした場合に、重み付け係数の最も大きい周辺画素である画素ｈ０の誤差値が、画素ｉ１，ｊ１の誤差値として登録される。なお、画素ｈ１を処理する際に使用される誤差マトリクスも第２の誤差マトリクスであり、重み付け係数が最も大きいのは画素ｈ０，ｉ１であるが、画素ｉ１は処理されないため、画素ｈ０の誤差値が用いられる。
【００３７】
以降のラスタも同様に処理される。すなわち、画素ｈ１から画素ｃ１まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ２，ｂ２の誤差値として画素ｃ１の誤差値をコピーし、画素ｉ２，ｊ２の誤差値として画素ｈ１の誤差値をコピーする。また、画素ｃ２から画素ｈ２まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ３，ｂ３の誤差値として画素ｃ２の誤差値をコピーし、画素ｉ３，ｊ３の誤差値として画素ｈ２の誤差値をコピーする。また、画素ｈ３から画素ｃ３まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ４，ｂ４の誤差値として画素ｃ３の誤差値をコピーし、画素ｉ４，ｊ４の誤差値として画素ｈ３の誤差値をコピーする。なお、画素ａ０，ｂ０，ｉ０，ｊ０については処理済みの誤差値がコピーされない（例えば乱数で初期化されたままの状態となる）が、全体から見れば僅かな領域であるため大きな影響はない。
【００３８】
このようなＳ１４の処理の後、図４のＳ１１へ戻る。そして、制御部１１は、Ｓ１１で、処理対象の画像データのすべてのラスタについてＳ１２以降の処理を行った（未処理のラスタが存在しない）と判定した場合に、図４の処理を終了する。
【００３９】
［４．効果］
以上説明したように、本実施形態によれば、注目画素を基準とする参照位置が画像の左右方向の拡張領域に位置する場合に、その参照位置の画素の誤差値として、その参照位置から最も近くに位置する画像内の画素を注目画素とした場合に誤差マトリクスに含まれる画素のうち、重み付け係数が最も大きい参照位置の画素の誤差値を、注目画素の入力値に加算する。したがって、参照位置が画像の左右方向の拡張領域に位置する場合にも、その参照位置と最も関連性の高い誤差値が加算されるため、画像内の画素の誤差値に基づく適切な値に近づけることができる。その結果、画像の左右端部における画質の低下を抑制することができる。
【００４０】
図６（ａ）は、本実施形態の誤差拡散処理で一様のベタパターンの画像を処理した結果である。また、図６（ｂ）は、誤差拡散処理後の画像におけるドット数を副走査方向に沿った列ごとに集計したグラフである。図６（ｂ）において、画像の上方の拡張領域のみ画素の誤差値を初期化し、画像の左右方向の拡張領域については画素の誤差値を初期化しない場合の結果が実線で示されており、本実施形態の誤差拡散処理の結果が破線で示されている。これらの図から明らかなように、本実施形態の誤差拡散処理によれば、画像の左右両端部においてドットが極端に少なくなる現象を大幅に改善することができる。
【００４１】
また、本実施形態の誤差拡散処理では、誤差バッファが、画像よりも外側において誤差マトリクスに含まれ得る領域まで拡張されており、画像の左右端部の画素を、それ以外の画素と同様に処理することができるため、処理を速くすることができる。
【００４２】
また、誤差拡散処理が１ライン分終了するごとに、画像の左右方向の拡張領域の画素のうち、次に処理対象となるラスタの画素の誤差値を登録するようにしているため、１ライン分よりも細かな単位（例えば１画素単位）で誤差値を登録する場合と比較して、処理を単純化することができる。
【００４３】
なお、パーソナルコンピュータ１が画像処理装置に相当し、プリンタドライバ１２３が画像処理プログラムに相当する。また、Ｓ２１の処理が補正手段としての処理に相当し、Ｓ１４，Ｓ２２〜Ｓ２６の処理が変換手段としての処理に相当する。
【００４４】
［５．他の実施形態］
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されることなく、種々の形態を採り得ることは言うまでもない。
【００４５】
（１）上記実施形態では、誤差バッファにおいて、誤差マトリクスが処理領域からはみ出ることにより参照位置となる拡張領域に誤差値を登録するようにしているが、これに代えて、拡張領域を用意することなく、参照位置が画像の外側に位置する場合には特定の画素の誤差値を読み込むようにしてもよい。図２（ｃ）の画素ｃ２の処理を例にとって説明する。画素ｃ２を処理する際に使用される誤差マトリクスは第１の誤差マトリクス（図２（ｂ））であるが、注目画素ｃ２の左側の周辺画素（画素ａ０，ｂ０，ａ１，ｂ１，ａ２，ｂ２）の誤差値は存在しない。そこで、画素ａ０，ｂ０の誤差値の代替値として画素ｃ−１の誤差値を使用し、画素ａ１，ｂ１の誤差値の代替値として画素ｃ０の誤差値を使用し、画素ａ２，ｂ２の誤差値の代替値として画素ｃ１の誤差値を使用するようにしてもよい。このようにすれば、拡張領域を用意することなく、上記実施形態と同様の効果を得ることができる。
【００４６】
（２）上記実施形態では、誤差バッファにおける画像の左右方向の拡張領域の画素の誤差値として、画像内の左右最端列（図２（ｃ）でいう列ｃ及び列ｈ）の画素の誤差値を登録するようにしているが、左右最端列よりも内側の列ｄ及び列ｇの画素も拡張領域の誤差値の影響を受けるため、列ｄ及び列ｇの画素の誤差値についても拡張領域の画素の誤差値として登録するようにしてもよい。
【００４７】
この処理の具体例について説明する。図２（ｃ）に示す画素ｃ０から画素ｈ０まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理で、画素ａ１の誤差値として画素ｃ０の誤差値をコピーし、画素ｂ１の誤差値として画素ｄ０の誤差値をコピーする。つまり、画像内の画素のうち、画素ａ１，ｂ１に隣接する画素ｃ１を注目画素とした場合に、第２の誤差マトリクス（図２（ｂ））において重み付け係数の大きい処理済みの周辺画素である画素ｃ０，ｄ０の誤差値が、画素ａ１，ｂ１の誤差値として登録される。このように、画素ａ１，ｂ１の誤差値として２つの画素ｃ０，ｄ０の誤差値を利用することで、画素ｃ０を画素ａ１，ｂ１の両方に利用する場合に比べて、誤差値が平滑化されてしまうことを防ぐことができる。
【００４８】
同様に、画素ｉ１の誤差値として画素ｇ０の誤差値をコピーし、画素ｊ１の誤差値として画素ｈ０の誤差値をコピーする。つまり、画像内の画素のうち、画素ｉ１，ｊ１に隣接する画素ｈ１を注目画素とした場合に、第２の誤差マトリクスにおいて重み付け係数の大きい処理済みの周辺画素である画素ｇ０，ｈ０の誤差値が、画素ｉ１，ｊ１の誤差値として登録される。
【００４９】
以降のラスタも同様に処理される。すなわち、画素ｈ１から画素ｃ１まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ２，ｂ２の誤差値として画素ｃ１，ｄ１の誤差値をコピーし、画素ｉ２，ｊ２の誤差値として画素ｇ１，ｈ１の誤差値をコピーする。また、画素ｃ２から画素ｈ２まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ３，ｂ３の誤差値として画素ｃ２，ｄ２の誤差値をコピーし、画素ｉ３，ｊ３の誤差値として画素ｇ２，ｈ２の誤差値をコピーする。また、画素ｈ３から画素ｃ３まで誤差拡散処理（Ｓ１３）を行った後のＳ１４の処理では、画素ａ４，ｂ４の誤差値として画素ｃ３，ｄ３の誤差値をコピーし、画素ｉ４，ｊ４の誤差値として画素ｇ３，ｈ３の誤差値をコピーする。
【００５０】
なお、画素ａ１の誤差値として画素ｃ０の誤差値をコピーし、画素ｂ１の誤差値として画素ｄ０の誤差値をコピーするといった対応関係はあくまでも一例であり、例えばこれとは逆に、画素ａ１の誤差値として画素ｄ０の誤差値をコピーし、画素ｂ１の誤差値として画素ｃ０の誤差値をコピーするようにしてもよい。
【００５１】
（３）上記実施形態では、誤差バッファにおける画像の左右方向の拡張領域の画素の誤差値として、画像内の処理済みの画素の誤差値をそのまま登録するようにしているが、これに限定されるものではない。例えば、処理済みの画素の誤差値に乱数を加算して登録してもよい。このようにすれば、注目画素の入力値に加算される誤差値として同じ値が複数発生しにくくすることができる。なお、乱数の加算により本来の誤差値を逸脱しないように（元々の誤差値が無意味とならないように）、例えば０を基準とした振り幅を持つ乱数を加算する（乱数の平均値を０にする）ことや、乱数の振り幅をその誤差値の絶対値よりも小さくする（例えば誤差値が１００であれば振り幅を２０程度にする）ことが好ましい。また、画素の誤差値に乱数を加算した値に代えて、１つ以上の画素の誤差値を用いた算術演算で得られる値としてもよい。例えば、画素ａ１，ｂ１の誤差値として、画素ｃ０，ｄ０の誤差値の平均値をコピーするといったように、複数の処理済みの画素の誤差値の平均値を、誤差バッファにおける画像の左右方向の拡張領域の画素の誤差値として登録するようにしてもよい。
【００５２】
（４）上記実施形態では、画像の左右方向の拡張領域の画素の誤差値として、その画素の位置から最も近い画像内の画素を基準にして、その画素を注目画素とした場合に誤差マトリクスに含まれる特定の画素の誤差値を登録するようにしているが、これに限定されるものではなく、拡張領域の画素から最も近い画素以外の特定の画素を基準にしてもよい。例えば、画素ａ１，ｂ１の誤差値として、画素ｃ１を注目画素（基準）とした場合を例に説明したが、画素ｃ１と隣接する画素ｄ１を注目画素（基準）としてもよい。すなわち、拡張領域内の画素に登録する誤差値は、該画素の周辺に位置する処理領域内の画素であって、誤差拡散処理済みの画素の誤差値を用いるとよい。
【００５３】
（５）上記実施形態では、２階調を表現可能なプリンタ２を例示したが、これに限定されるものではなく、３階調以上を表現可能なプリンタであってもよい。この場合、誤差拡散処理では、プリンタで表現可能な３階調以上のＣＭＹＫ値で表現された画像データ（印刷データ）を生成する。
【００５４】
（６）上記実施形態では、誤差拡散処理がパーソナルコンピュータ１側で実行される構成を例示したが、これに限定されるものではなく、例えばプリンタ２側で実行されるように構成することも可能である。
【符号の説明】
【００５５】
１…パーソナルコンピュータ、２…プリンタ、１１，２１…制御部、１２，２２…記憶部、１３，２３…通信部、１４，２４…操作部、１５，２５…表示部、２６…印刷実行部、２７…印刷ヘッド、１１１，２１１…ＣＰＵ、１１２，２１２…ＲＯＭ、１１３，２１３…ＲＡＭ、１２１…ＯＳ、１２２…アプリケーションプログラム、１２３…プリンタドライバ
【図１】
0005573706.tif 000002
【図４】
0005573706.tif 000003
【図５】
0005573706.tif 000004
【図２】
0005573706.tif 000005
【図３】
0005573706.tif 000006
【図６】
0005573706.tif 000007