(第1の実施形態)
以下、本発明を具体化した第1の実施形態について図面を参照して説明する。
図1は、第1の実施形態に係る画像出力システムの構成を示したブロック図である。図1に示すように、画像出力システムは、入力画像データを供給するホストコンピュータ10と、供給された入力画像データに従って画像を出力する画像出力装置20とを備えている。
ホストコンピュータ10は、アプリケーション部100と、ラスタライズ部200とを有している。
アプリケーション部100は、文字データ、図形データ、ビットマップデータなどの印刷対象のデータを生成する。アプリケーション部100は、例えば、ワードプロセッサや図形ツールなどであり、キーボードなどへの操作により文字データや図形データを生成する。生成した印刷対象のデータはラスタライズ部200に出力する。
ラスタライズ部200は、アプリケーション部100から出力された印刷対象のデータを、各画素8ビットのビットマップ画像データに変換(ラスタライズ)する。このときのビットマップ画像データは、マトリクス状に配列された多数の画素ごとに、RGB各色の階調値(「0」〜「255」)を有することによりカラー画像を表現したRGBデータである。ラスタライズされたビットマップ画像データは、画像出力装置20への入力画像データとして画像出力装置20に出力する。
画像出力装置20は、電子写真方式の画像形成によって印刷を行うレーザプリンタであり、大別すると、ホストコンピュータ10から供給された入力画像データに各種画像処理を行って出力画像データに変換する画像処理部(画像処理装置)300と、出力画像データに従って用紙などの印刷媒体に画像を印刷する印刷エンジン400とを備えている。
画像処理部300は、色変換部310と、ハーフトーン処理部320と、パルス幅変調部330とを有している。
色変換部310は、ホストコンピュータ10から受け取った入力画像データ(RGBデータ)を色変換して、CMYKの入力画像データに変換する処理を行う。
ハーフトーン処理部320は、色変換後の入力画像データ(CMYKデータ)に対し、ドットの有無に対応する2値の階調値に変換するハーフトーン処理を行う。ハーフトーン処理により入力画像データは出力画像データに変換され、印刷エンジン400に出力される。このハーフトーン処理部320は本発明の特徴部分であるが、詳細な構成/処理については後述する。
パルス幅変調部330は、ハーフトーン処理部320から出力された出力画像データにパルス幅変調を施すことにより、各画素に形成するドットの有無をパルス幅信号で表す駆動データ形式のデータに変換する。パルス幅変調部330は、パルス幅変調された駆動データ形式の出力画像データを印刷エンジン400に出力する。
印刷エンジン400は、レーザドライバ410と、レーザダイオード420とを有している。レーザドライバ410は、画像処理部300から出力された出力画像データに従って駆動パルスの有無に対応する制御データを生成し、制御データによりレーザドライバ410を駆動して、感光体ドラム(図示なし)表面を露光する。そして、現像ユニット、中間転写体、定着ユニット(図示なし)などの構成により、感光体ドラム表面の露光像を現像した画像を印刷用紙表面に定着させる。これにより、画像出力装置20は入力画像データに対応する画像を印刷する。
次に、画像出力装置20のハードウェア構成について説明する。図2に示すように、画像出力装置20は、入力インターフェイス(以下、「入力I/F」)21と、CPU22と、ROM(記憶手段)23と、RAM24と、印刷エンジン400とを備えており、各構成はバスを介して互いに接続されている。
入力I/F21は、ホストコンピュータ10から供給された入力画像データを受け付ける部分であり、入力された入力画像データはRAM24にいったん格納される。
ROM23は、フラッシュROM、EEPROMなどの不揮発性のメモリであり、本発明の画像処理プログラムGP、後述するセル繰り返しマトリクスのセルパターンデータCD、および画像出力装置20の制御プログラムなどが予め記憶されている。なお、本実施形態では、画像処理プログラムGPは予めROM23に格納されていているが、画像処理プログラムGPを記録した、メモリカードなどの記録媒体の形態で画像出力装置20に供給してもよい。
RAM24は、CPU22が実行する各種処理のワーキングメモリとして主に用いられるメモリであり、色変換後の入力画像データを記憶するための入力バッファ24a、およびハーフトーン処理後の出力画像データを記憶するための出力バッファ24bが所定のメモリ領域に確保されている。
CPU22は、バスを介して接続された、入力I/F21、ROM23、RAM24および印刷エンジン400の各構成を制御する。特に、CPU22は、ROM23に格納された画像処理プログラムGPをRAM24に読み出して、画像処理プログラムGPを実行することにより、色変換・ハーフトーン処理・パルス幅変調などの画像処理装置300としての各種処理を行う。
次に、本発明の特徴部分であるハーフトーン処理部320の構成について説明する。図3はハーフトーン処理部の構成を示したブロック図である。図3に示すように、ハーフトーン処理部320は、基本セル設定部(第1の画素群設定部)321と、ハイライト判定部322と、エッジ判定部323と、基本セル拡大部(セル拡大部)324と、小セル設定部(第2の画素群設定部)325と、階調値付与部326とを有している。
基本セル設定部321は、入力画像データの画像領域を、予め決められた領域に区画して、セルを設定する部分である。なお、ここで設定されるセルを、「基本セル(第1の画素群)」という。
基本セル設定部321は、領域を区画するため、所定範囲の領域に複数個のセルを敷き詰めたセル繰り返しマトリクスを用いる。図4に、セル繰り返しマトリクスの一例を示す。図4に示すように、セル繰り返しマトリクスCMには、矩形状の領域に、同じ大きさ・形状である複数のセル(セル番号(1)〜(8))が千鳥状に配列されている。ここで、セル番号(3),(4),(6),(7),(8)のセルについては、各々が略円形状の形状に設定されている。セル番号(1),(2),(5)などマトリクスの周辺に位置して、略円形状になっていないセルについては、セル繰り返しマトリクスCMを配置したときに、隣り合う位置に配置されたセル繰り返しマトリクスCMのセルと合わさって略円形状の基本セルとなるように設定されている。
基本セル設定部321は、入力画像データの画像領域において、セル繰り返しマトリクスCMと同じ大きさの領域ごとにセル繰り返しマトリクスCMを配置して、セル繰り返しマトリクスCMのセルごとに領域を区画するようにして、予め決められた大きさ・形状の領域を有する複数の基本セルを設定する。
ハイライト判定部322は、基本セルの各々について、そのセル内の領域が、画像出力時に生成されるドットが少なく、明るい画像に出力されるハイライト領域であるかを判定する。
エッジ判定部323は、基本セルの各々について、そのセル内に入力画像データの階調値変化に関するエッジ(すなわち、階調値差が急激な部分)を含んでいるか否かを判定する。この判定により、エッジを含む基本セルとエッジを含まない基本セルとに区別する。
基本セル拡大部324は、ハイライト領域と判定された基本セルについて、所定の目標階調値に達するまで当該基本セルの周辺にある画素を基本セルに次々に取り込んで、基本セルを拡大する処理を行う。
この目標階調値は、印刷エンジン400が安定して形成することができるドットサイズに対応した値であり、画像出力装置20に対して設定された解像度(dpi)に応じて、目標階調値が決定される。例えば、解像度600dpiであれば、1画素のドットサイズ分に相当する目標階調値「255」、解像度1200dpiであれば、1つ1つのドットが小さくなりドットが安定し難くなるので、5画素分のドットサイズに相当する「1275(=5×255)」を目標階調値に設定する。本実施形態では、目標階調値は、予め「1275」に設定されているものとする。
小セル設定部325は、エッジを含む基本セル内の画像領域をさらに区画して、複数のセルを設定する部分である。ここで設定されるセルを、「小セル(第2の画素群)」という。小セル設定部325は、小セル内の階調値合計が目標階調値に達するまで、小セル内階調値の重心位置に近い画素を次々に取り込んで、小セルを設定する。これにより、エッジを含む基本セルは、各々が目標階調値分の階調値をセル内に有する複数の小セルに、さらに区画される。
階調値付与部326は、エッジを含まない基本セルおよび小セルの各セルについて、セル内階調値の重心位置に基づく画素に、セル内の階調値合計に応じた出力階調値を付与する処理(ドット生成処理)を行う。ここで付与する出力階調値は、印刷エンジン400が形成可能なドットの階調数に対応する8ビットで表現された階調値(「0」〜「255」)となる。例えば、印刷エンジン400が画素ごとにドットの有無を打ち分けて、画像を出力する場合であれば、予め、各画素が出力階調値「0」に初期設定された出力用の画像領域に対して、ドットを生成する画素に出力階調値「255」を付与する。これにより、各画素を、出力階調値「0」または「255」の2つのレベルで表す出力画像データを生成する。
以上に述べたように、階調値付与部326は、エッジを含まない基本セル、および基本セルを区画して得られた小セルの双方に対して、セル内の重心位置に基づく画素に出力階調値を付与するようにしている。このとき、セル繰り返しマトリクスCMにより基本セルを設定し、基本セルに出力階調値を付与する一連の処理は、「AAM法」の処理手法に従っている。基本セルを小セルに区画し、小セルに出力階調値を付与する一連の処理は、「CC法」の処理手法に従っている。以下、AAM法およびCC法の各々の処理手法について、簡単に説明する。
まず、AAM法について説明する。AAM法は、セル繰り返しマトリクスCMを配置することにより予め決められた領域を有する基本セルを設定し、基本セルごとに出力階調値を付与する方法である。図5は、セル繰り返しマトリクスCMによる基本セル設定を説明するための図であり、入力画像データの画像領域に複数のセル繰り返しマトリクスCMを配置した一例を示している。ここで、図面横方向に左から右向きを「x方向」、図面縦方向に上から下向きを「y方向」とする。なお、以下では、x方向プラス方向を「右」、x方向マイナス方向を「左」、y方向プラス方向を「下」、y方向マイナス方向を「上」ともいう。
基本セルの設定は、入力画像データの画像領域を、セル繰り返しマトリクスCMと同じ大きさを有するセルブロックCBに区分けし、セルブロックCBごとにセル繰り返しマトリクスCMを配置することにより行う。そして、配置されたセル繰り返しマトリクスCMに設定されたセルに対応して基本セルCL1に設定する。基本セルを設定する際には、図5に示すように、セルブロックCB(a〜a+2,b〜b+1)が互いに隙間なく、x方向及びy方向に繰り返して設定し、各々のセルブロックCBにセル繰り返しマトリクスCMを配置することにより、複数の基本セルCL1を設定される。
このとき、図4を参照して、セル繰り返しマトリクスCMの周辺部にある略円形状になっていないセル(1),(2),(5)については、セル繰り返しマトリクスCMが配置されたときに、隣り合うセルブロックCBのセル繰り返しマトリクスCMのセルと合わさって、略円形状の1つの基本セルCL1となる。例えば、セルブロックCB(a+1,b)のセル(5)は、セルブロックCB(a,b)の右端の領域と合わさって、略円形状の基本セルCL1を構成する。同様に、セルブロックCB(a+1,b+1)のセル(1)は、セルブロックCB(a,b)の右下端の領域、セルブロックCB(a+1,b)の左下端の領域、セルブロックCB(a,b+1)の右上端の領域と合わさって、略円形状の基本セルCL1を構成する。
次に、AAM法では、基本セルCL1ごとに出力階調値を付与するドット生成処理を行う。図6は、ドット生成処理を説明する図であり、図6(a)は処理対象とする基本セルの一例、図6(b)はセル内のうち出力階調値を付与する画素の一例を示している。図6(a)の例では、基本セルCL1は階調値「30」の領域と「50」の領域とから構成され、セル内の階調値合計は「3940(=255×15+115)」、セル内階調値の重心位置G1は(m+5.48,n+6.78)である。
出力階調値を付与する際には、重心位置Gに近い画素から順番に出力階調値を付与して、セル内階調値の合計分の階調値を付与する。ここで、階調値付与前には、出力バッファ24bに出力階調値「0」が初期設定されており、付与する出力階調値はドット有りに対応する階調値「255」である。図6の例では、セル内の階調値合計は、出力階調値「255」を15個の画素に付与するだけの値を有しているので、重心位置G1から近い順番に、15個の画素(図6(b)の(1)〜(15)参照)に順番に出力階調値「255」を付与する。
なお、余りの階調値分の出力階調値を付与するか否かについては、余りの階調値が所定の閾値(例えば、最大値の半分の「127」)以上であるかを判断して決定する。図6の例では、余りの階調値「115」が閾値未満であるため、余りの階調値「115」分については16番目の画素への付与を行わない。
このAAM法によれば、図6(b)に示すように、基本セルCL1の重心位置G1を中心として略円形状に、基本セルCL1のセル内階調値に応じた大きさの範囲内の画素に出力階調値が付与される。
次に、CC方法について説明する。図7は、CC法の処理対象とする基本セルCL1の一例を示している。図7の例では、基本セルCL1は、階調値「50」の領域と「200」の領域とから構成されている。
図8は、図7に例として示した基本セルCL1に対して、CC法により行う小セル設定を説明する図である。以下、図8に従って順番に説明する。
CC法では、まず、小セルCL2を生成するための起点となる初期画素を定める。初期画素は、所定の順番に従って基本セルCL1内の画素から、画素内の階調値を用いた出力階調値の付与が行われていない未処理画素をラスタ順に探索することにより定める。すなわち、対象領域の1番上の行の左端から右方向に走査し、右端まで探索されると、1つ下の行を再び左端から右方向に順番に探索する。探索により始めに見つかった未処理画素を初期画素とする。図8(a)の例では、ラスタ順に探索すると、基本セルCL1から未処理画素(m+6,n)が始めに探索されるので、初期画素として小セルCL2に取り込む。このとき、小セルCL2内の階調値の重心位置G2は(m+6.00,n+0.00)、小セルCL2内の階調値合計は「200」である。
次に、未処理画素のうち、重心位置G2に最も近い画素を選択してセルに取り込む。図8(a)の状態では、重心位置G2との距離が「1.41」の画素(m+7,n+1)と、重心位置G2との距離が「1.00」の画素(m+6,n+1)とを比較して、より距離が短い画素(m+6,n+1)を小セルCL2に取り込む(図8(b)参照)。このとき、重心位置G2は(m+6.00,n+0.50)、小セルCL2内の階調値合計は「400」に更新される。
同様に重心位置G2に近い画素を取り込む処理を繰り返し行うと、さらに、画素(m+7,n+1)、画素(m+6,n+2)、画素(m+7,n+2)、画素(m+5,n+2)が順番にセルCL2に取り込まれる(図8(c)参照)。これにより、重心位置G2は(m+6.17,n+1.33)、小セルCL2内の階調値合計は「1200」に更新される。
次に、重心位置G2(m+6.17,n+1.33)から最も近い未処理画素として、画素(m+6,n+3)が選択され、小セルCL2に取り込まれる。ここで、画素(m+6,n+3)の全階調値を取り込むと、小セルCL2内の階調値合計は「1400」となり、目標階調値「1275」を超える。かかる場合には、目標階調値を超える分の階調値「125」を、元の画素(m+6,n+3)に戻しておく(図8(d)参照)。こうすることにより、目標階調値分だけの階調値を有する小セルCL2を設定する。
次に、基本セルCL1内に、小セルCL2に取り込まれていない未処理画素が残っているので、未処理画素のうちから初期画素を設定して、1つ目の小セルCL2と同様にして、2つ目以降の小セルCL2を設定する。このとき、図8(d)において元の画素に戻された階調値の画素も未処理画素として処理を行う。このように、CC法では、基本セルCL1内の領域に目標階調値分の階調値を有した小セルCL2を設定する処理を繰り返し行うようにして、基本セルCL1を複数の小セルCL2に区画する。
CC法では、設定された小セルCL2に対して出力階調値を付与する際に、小セルCL2に対して図6(b)にて説明したAAM法のドット生成処理と同様の処理を行う。ただし、小セルCL2内の階調値は予め決められた目標階調値となるので、予め決められた数の画素に対して出力階調値が付与されることになる。
このCC法によれば、基本セルCL1を小セルCL2にさらに区画して、小セルCL2の重心位置G2を中心として略円形状であり、目標階調値に応じた大きさの範囲に出力階調値が付与される。この出力階調値に応じてドットを形成すると、基本セルCL1を分割した小セルCL2ごとにドットが形成されることになる。したがって、基本セルCL1を対象として行うCC法は、AAM法に比べて画像の解像性がより高くなる処理といえる。
以上に説明したように、第1の実施形態では、入力画像の画像領域のうち、エッジ部分を含まない画像領域には、CC法に比べて重心位置・階調値合計の更新回数が少なく済むAAM法を適用して、エッジ部分の領域には解像性が高いCC法を適用することにより、ハーフトーン処理を行うようにしている。
次に、第1の実施形態に係るハーフトーン処理の処理手順について、図9,10のフローチャートに従って詳細に説明する。
CPU22は、ROM23から読み出した画像処理プログラムGPを実行して、入力I/F21を介してホストコンピュータ10から受け取った入力画像データをCMYKの入力画像データに変換する。そして、入力画像データのC,M,Y,Kの各色について図9,10に示したハーフトーン処理を開始する。
ハーフトーン処理を開始すると、CPU22は、色変換後の入力画像データを読み込んで、RAM24の入力バッファ24aに入力画像を展開し(ステップS100)、入力画像の画像領域の左上に位置するセルブロックCB(0,0)にセル繰り返しマトリクスCMを設定する(ステップS105)。ここで、設定したセル繰り返しマトリクスCMに含まれる複数の基本セルのうち、セル番号最小となる1つの基本セルCL1に注目する。
次に、CPU22は、注目した基本セルCL1についてのセル内の階調値合計FTを次式に従って算出する(ステップS110)。ただし、「f」は基本セル内の画素が有する階調値、「i」は基本セルCL1内の各画素に1対1に対応する番号である。
FT=Σif(i) …(1)
階調値合計を算出すると、階調値合計が「0」以上の値になっているか否かを判断する(ステップS115)。階調値合計が「0」未満であれば(ステップS115:No)、当該基本セルCL1に対しては出力階調値を付与することなく、ステップS155に進む。
階調値合計が「0」以上であれば(ステップS115:Yes)、CPU22は、注目した基本セルCL1がハイライト領域であるか否かを判断する(ステップS120)。具体的には、基本セルCL1内の階調値合計が、ハイライトと非ハイライトとの境界値に対応する所定の閾値(>0)より小さいか否かを判断し、閾値より小さければ(ステップS120:Yes)、ハイライト領域と判断して、ステップS145に進んで基本セル拡大処理を行う。閾値以上であれば(ステップS120:No)、非ハイライト領域であると判断して、ステップS125に進む。
以下、非ハイライト領域に対して行う処理から説明する。ステップS120において非ハイライト領域と判断されると、CPU22は、注目した基本セルCL1内の階調値のコントラストを算出する(ステップS125)。コントラストの算出は、次式に従って行う。すなわち、基本セルCL1のセル内階調値の最大値と最小値との差分値をコントラストCとする。ただし、max()は最大値を返す関数、min()は最小値を返す関数である。
C=|max(f(i))−min(f(i))| …(2)
次に、コントラストを、エッジとエッジでない部分との境界値に対応する所定の基準値(例えば、階調値「80」など)と比較して、注目した基本セルCL1内にエッジを含んでいるか否かを判断する(ステップS130)。コントラストが基準値以上であれば(ステップS130:Yes)、注目した基本セルCL1はエッジを含んでいると判断して、ステップS140に進み、注目した基本セルCL1を対象としたCC法による処理を行う。コントラストが基準値未満であれば(ステップS130:No)、注目した基本セルCL1はエッジを含んでいないと判断して、ステップS135に進んで、注目した基本セルCL1についてAAM法による処理を行う。
次に、AAM法の処理手順について図11のフローチャートに従って説明する。
AAM法の処理が開始されると、まず、CPU22は、次式に従って、注目した基本セルCL1のセル内階調値の重心位置G1(G1x,G1y)を算出する(ステップS200)。
G1x=Σix×f(i) …(3)
G1y=Σiy×f(i) …(4)
そして、重心近傍の画素にドットを生成するための出力階調値を付与するドット生成処理を行う(ステップS210)。ドット生成処理については、図12のフローチャートに従って説明する。
ドット生成処理では、まず、CPU22は出力すべきドットサイズを決定する(ステップS300)。AAM法では、セル内階調値合計に応じた大きさのドットを重心位置G1に形成するため、ステップS110にて算出した基準セルCL1のセル内階調値合計から、ドットサイズを決定する。本実施形態では、セル内階調値合計FTを用いて、次式により、「127」以下の階調値分を切り捨て、「128」以上の階調値分を1画素分「255」の階調値に切り上げるようにして、ドットサイズDSを決定する。ただし、「int()」は、端数を切り捨てて整数を返す関数である。
DS=n×255
=int(FT/255+0.5)×255 …(5)
ドットサイズを決定すると、CPU22は、セル内で未だ出力階調値が付与されていない未出力画素の各々とセル内重心位置G1との距離を算出して、セル内重心位置G1に最も近い未出力画素を探索する(ステップS310)。そして、探索された画素に出力階調値「255」を付与する(ステップS320)。具体的には、探索画素に対応する出力バッファ24bのメモリ領域に記憶された値に階調値「255」を加算することにより、出力階調値の付与を行う。なお、ステップS310においてセル内重心位置G1に最も近い未出力画素が複数個探索されていた場合には、複数の探索画素のうちランダムに決定した1つの画素に対して出力階調値を付与するとよい。
次に、CPU22は、出力階調値付与後の値が、出力階調値がとりうる最大値「255」を超えたか否かを判断する(ステップS330)。最大値を超えていれば(ステップS330:Yes)、当該画素に付与された出力階調値を最大値「255」に調整してから(ステップS340)、ステップS350に進む。最大値を超えていなければ(ステップS330:No)、出力階調値を調整することなく、ステップS350に進む。
次に、CPU22は、セル内の画素に付与した出力階調値の合計が、ドットサイズDS分の階調値に達したか否かを判断する(ステップS350)。ドットサイズDS分の階調値に達していれば(ステップS350:Yes)、ドット生成処理を終了する。
ドットサイズDSの階調値に達していなければ(ステップS350:No)、基本セルCL1内の全画素について出力階調値の付与を行って、セル内の全画素が処理されたか否かを判断する(ステップS360)。全画素について出力階調値を付与していなければ(ステップS360:No)、ステップS310に戻って次の未出力画素を探索する。全画素について出力階調値が付与されていれば(ステップS360:Yes)、出力階調値の付与対象となる画素がないため、ドット生成処理を終了する。ドット生成処理を終えるとAAM法の処理を終了して、図9,10の処理に戻る。
また、図9のフローチャートのステップS130において、コントラストが基準値より大きい場合には(ステップS130:Yes)、当該基本セルCL1が階調値変化の大きいエッジを含んでいると判断して、ステップS140に進み、基本セルCL1を対象としてCC法による処理を行う。以下、基本セルを対象としたCC法の処理手順について図13のフローチャートに従って説明する。
基本セルCL1を対象としたCC法の処理を開始すると、CPU22は、注目した基本セルCL1内に、未処理画素があるか否かを判断する(ステップS400)。基本セルCL1内の画素をラスタ順に探索し、未処理画素が探索されると(ステップS400:Yes)、探索された未処理画素に注目してステップS405に進む。ステップS405以降の処理を行うことで、未処理画素がなくなっていれば(ステップS400:No)、基本セルを対象としたCC法の処理を終了する。
ステップS405に進むと、CPU22は、次式に従って、注目した未処理画素を含む小セルCL2内の階調値の重心位置G2(G2x,G2y)を算出する。ただし、「j」は小セルCL2内の各画素に1対1に対応する番号である。
G2x=Σjx×f(j) …(6)
G2y=Σjy×f(j) …(7)
次に、ステップS410では、CPU22は、小セルCL2の重心位置G2に最も近い未処理画素を探索する。
なお、このときの探索においては、処理対象としている基本セルCL1内の未処理画素に加えて、隣接する基本セルCL1の未処理画素をさらに加えた複数の未処理画素のうちから、重心位置G2に最も近い画素を探索する。これにより、基本セルCL1の区切りにとらわれずに、重心位置G2に最も近い未処理画素が探索される。
次に、ステップS415では、CPU22は、探索画素の階調値が最大値、すなわち「255」であるか否かを判断する。最大値であれば(ステップS415:Yes)、ステップS420に進んで、探索画素に対応する出力バッファ24bの領域に階調値「255」を書き込むようにして、出力階調値の最大値を探索画素に付与してから、ステップS410に戻る。
探索画素の階調値が最大値でなく(ステップS415:No)、ステップS425に進むと、小セルCL2内の階調値合計に探索画素の階調値を加えた値が、目標階調値以下であるか否かを判断する。目標階調値以下であれば(ステップS425:Yes)、ステップS430に進んで探索画素を小セルCL2に取り込む。目標階調値を超えていれば(ステップS425:No)、ステップS435に進んで、目標階調値からの不足分の階調値だけを小セルCL2に取り込んで、小セル内の階調値合計を目標階調値に合わせる(図8(d)参照)。
ステップS430またはステップS435の処理を行うと、次に、新たに取り込んだ画素を考慮して、小セルCL2の新たな重心位置G2および階調値合計を算出し、更新する(ステップS440)。
次に、小セルCL2内の階調値合計が目標階調値以上になっているか否かを判断する(ステップS445)。目標階調値未満であれば(ステップS445:No)、ステップS455に進んで未処理画素があるか否かを判断する。未処理画素が残っていれば(ステップS455:Yes)、ステップS410の処理に戻って、次の未処理画素を探索する処理を行う。小セルCL2内の階調値合計が目標階調値以上となるか(ステップS445:Yes)、または未処理画素が残っていなければ(ステップS455:No)、ステップS450に進んでドット生成処理を行う。
CC法におけるドット生成処理では、図12のフローチャートにて説明したAAM法におけるドット生成処理と概ね同様の処理を小セルCL2に対して行うが、ドットサイズを決定するステップS300の処理が異なる。上述したように、CC法の目標階調値には予め決められた値(本実施形態では、「1275」)を用いているので、ステップS300では予め決められた目標階調値がドットサイズDSとして決定され、このドットサイズDSを用いてドット生成処理を行うことになる。CC法におけるドット生成処理を終えると、図13に戻って、未処理画素が残っているか否かを判断する(ステップS400)。ステップS400〜S455の処理を繰り返して、基本セルCL1内に未処理画素がなくなると(ステップS400:No)、基本セルを対象としたCC法の処理を終了して、図9,10の処理に戻る。
また、図9のステップS120にて基本セルCL1がハイライト領域と判断された場合に行うステップS145の基本セル拡大処理の処理手順について、図14のフローチャートに従って説明する。
基本セル拡大処理を開始すると、まず、CPU22は、基本セルCL1の重心位置G1を算出する(ステップS500)。そして、次のステップS510〜S550の処理については、基本セルを対象としたCC法におけるステップS410およびS425〜S440の処理と同様の処理を基本セルCL1について行うことにより、新たな未処理画素を基本セルCL1に取り込んでセルを拡大する。そして、基本セルCL1内の階調値合計が目標階調値以上になっているか否かを判断する(ステップS560)。目標階調値に足りていなければ(ステップS560:No)、未処理画素が残っているか否かを判断する(ステップS570)。未処理画素が残っていれば(ステップS570:Yes)、ステップS510に戻る。セル内階調値が目標階調値以上になっているか(ステップS560:Yes)、または基本セルCL1内に未処理画素がなくなれば(ステップS570:No)、基本セル拡大処理を終了する。
基本セル拡大処理を終了すると図9の処理に戻って、ドット生成処理を行う(ステップS150)。このときのドット生成処理は、基本セルを対象としたCC法の処理におけるステップS450と同様の処理を行うため説明を省略するが、拡大した基本セルCL1に対して、セル重心を中心として予め決められた目標階調値分の出力階調値を付与した状態で、ドット生成処理が終了する。
ステップS210、S450またはS150において、ドットサイズ分の出力階調値を付与してドット生成処理を終了すると、次に、CPU22は、設定されたセル繰り返しマトリクスCMに含まれる全ての基本セルCL1について処理を行ったか否かを判断する(ステップS155)。全基本セルCL1について処理が行われていなければ(ステップS155:No)、セル繰り返しマトリクスCMの次のセル番号の基本セルCL1に注目してから(ステップS160)、ステップS110に戻って、次の基本セルCL1について処理を行う。
設定されたセル繰り返しマトリクスCMに含まれる全ての基本セルCL1について処理が行われていれば(ステップS155:Yes)、ステップS165に進んで、CPU22は、入力画像データの画像領域において、設定されたセル繰り返しマトリクスCMの右側、すなわちx方向に未処理画素があるか否かを判断する。右側に未処理画素があれば(ステップS165:Yes)、セル繰り返しマトリクスCMを1つ右側のセルブロックに配置するようにして、セル繰り返しマトリクスCMを設定する(ステップS170)。そして新たに配置したセル繰り返しマトリクスCM内の基本セルCL1について、ステップS110以降の処理を行う。右側に未処理画素がなければ(ステップS165:No)、設定されたセル繰り返しマトリクスCMより下側、すなわちy方向に未処理画素があるか否かを判断する(ステップS175)。下側に未処理画素があれば(ステップS175:Yes)、セル繰り返しマトリクスCMをセルブロック1つ分下側の左端のセルブロックにセル繰り返しマトリクスCMを配置して(ステップS180)、新たに配置したセル繰り返しマトリクスCM内の基本セルCL1について、ステップS110以降の処理を行う。このようにラスタ順にセル繰り返しマトリクスCMの配置を繰り返して、下側に未処理画素がなくなれば(ステップS175:No)、図9,10のハーフトーン処理を終了する。
上述した図9,10のハーフトーン処理を行うことにより、入力バッファ24aに格納した色変換後の入力画像データから、出力バッファ24b上には、各画素ごとに「0」または「255」の出力階調値を有する出力画像データが生成される。このハーフトーン処理は、入力画像データのC,M,Y,K各色について行う。ハーフトーン処理部320は、生成したC,M,Y,Kの出力画像データを、出力バッファ24bから読み出して、パルス幅変調部330に出力する。パルス幅変調部330は、出力画像データにパルス幅変調を施して、駆動データ形式の出力画像データに変換し、印刷エンジン400に出力する。印刷エンジン400のレーザドライバ410は、駆動データ形式の出力画像データに従ってレーザダイオード420を駆動するようにして、出力階調値が付与された画素にドットを形成することにより、C,M,Y,Kの画像を重ね合わせるようにして、入力画像データに対応したカラー画像を出力する。
図15に、本実施形態のハーフトーン処理において設定されたセルの一例を示す。図15(a)は、基本セルCL1に区画された画像領域の一例であり、図15(b)は、図15(a)の基本セルを、小セルCL2に区画した例を示している。図15(a)では、セル繰り返しマトリクスCMを配置して、エッジEを一部に含まない基本セルCL1を実線、エッジEを一部に含む基本セルCL1を破線で示している。また、図15(a)の例では、エッジEより左側が階調値の高い領域(「200」)、右側が階調値が小さい領域(「50」)である。エッジEを一部にも含まない基本セルCL1に対しては、AAM法によるハーフトーン処理が行われる。一方、エッジEを一部にでも含む基本セルCL1については、図15(b)に示すように、CC法の処理によって1つの基本セルCL1が複数の小セルCL2に区画される。
また、ステップS410において、処理対象としている基本セルCL1の未処理画素、および隣接する基本セルCL1の未処理画素のうちから最も近い画素を探索したことにより、エッジEを含む基本セルCL1の境界部分について、隣接する基本セルCL1にまたがるような小セルCL2の設定が許容されている(例えば、図15(b)の小セルA参照)。これにより、基本セルCL1間の境界部分に設定される小セルCL2であっても、セル形状の偏りの発生を抑制して、略円形状となる。
以下、第1の実施形態における効果を記載する。
(1)エッジを含まないと判定された基本セルCL1については、セル繰り返しマトリクスCMを用いて、予め決められた領域に区画して、基本セルCL1を設定するので、基本セルCL1の設定に要する演算量が少ない。特に、CC法を用いて基本セルCL1を設定する場合に比べると、階調値合計や重心位置の更新演算などに要する演算量が少なくなる。また、エッジを含むと判定された基本セルCL1については、CC法の手法によりさらに小セルCL2に区画し、小セルCL2の重心位置G2に出力階調値を付与するので、エッジ部分の解像性が高くなる。したがって、エッジ再現性に優れたハーフトーン処理を高速に行うことが可能となる。また、生成された出力画像データの出力階調値に従ってドットを形成することにより、エッジの再現性に優れた画像を高速に出力することが可能である。
(2)エッジを含まないと判定された基本セルCL1を対象として行うAAM法では、基本セルCL1に対して行うCC法に比べてセル形状が大きくなるため、セル内階調値合計も大きく、出力階調値が付与される画素数がより多くなりやすい。このため、1つのセルに形成されるドットサイズが大きくなり、小さいドットを露光・現像・定着することによる不安定なドット形成を抑制することになるので、ドット形成がより安定する。したがって、エッジを含まない領域について、階調安定性により優れた画像を出力することができる。
(3)エッジを含むと判定された基本セルCL1を対象として行うCC法では、目標階調値に達するまで画素を次々に取り込むようにして小セルCL2に区画しているので、小セルの大きさのばらつきを抑え、出力階調値が付与される画素間の距離のばらつきが抑制される。したがって、出力階調値が付与される画素位置の分散性に優れたハーフトーン処理を行って、画質に優れた画像を出力できるようになる。また、目標階調値は、設定された解像度に応じてドットが安定して形成されるドットサイズに対応しているので、ドット解像度を高めながら安定したドット形成により、階調安定性に優れた画像を出力することができる。
(4)CC法では、セル内重心位置G2に近い画素から順番に取り込んで、小セルCL2を拡大するので、小セルCL2は重心位置G2を中心として略円形状に拡大する可能性が高い。これにより、小セルCL2間で出力階調値が付与される画素間の距離のばらつきが抑制されるので、出力階調値が付与される画素位置の分散性に優れたハーフトーン処理を行って、画質に優れた画像を出力することが可能になる。
(5)ドット生成処理において出力階調値を付与する際、目標階調値分のセル内階調値合計を、重心位置に近い画素から順番に、出力階調値「255」ずつ付与しているので、生成されるドットは重心位置から略円形状に拡大する。これにより、出力階調値が付与される画素位置の分散性により優れたハーフトーン処理を行って、画質により優れた画像を出力することができる。また、セル内階調値合計に応じて出力階調値が付与される画素数(ドットサイズ)を決定しているため、入力画像データの階調再現性に優れた画像を出力することができる。
(6)基本セルCL1のうち、ハイライト領域と判定された基本セルCL1については、セル内階調値の重心位置G1に近い画素を、隣接する基本セルCL1から取り込んでセルを拡大することにより、セル内階調値合計が目標階調値に達するようにしている(ステップS145:基本セル拡大処理)。これにより、ドットが生成される画素数が少ないハイライト領域についても、目標階調値に対応する大きさのドット(本実施形態では5画素分の大きさ)を生成するため、安定したドットが生成される。したがって、ハイライト領域において階調安定性に優れた画像を得ることができる。また、セル拡大処理においても、重心位置に近い画素から順番に取り込むため基本セルCL1は略円形状に拡大するので、ハイライト領域についても、画質に優れた画像を出力することが可能である。
(7)エッジの判定は、基本セルCL1内階調値の階調値の最大値と最小値との差分値であるコントラストを算出し、コントラストが所定の基準値を超えているか判断することにより行っている(ステップS120,S130)。したがって、エッジ判定を演算量が少ない簡易な処理で判断することができ、エッジ判定を伴うハーフトーン処理をより高速に行うことができる。
(8)小セルCL2に新たに取り込む未処理画素を探索する際に(ステップS410)、処理対象としている基本セルCL1の未処理画素に加えて、隣接する基本セルCL1の未処理画素をさらに加えた複数の未処理画素のうちから、重心位置G2に最も近い画素を探索したので、基本セルCL1間の境界部分に設定される小セルCL2の形状に偏りが生じる可能性は低くなり、略円形状に近付く。このため、ドット位置の偏りが小さく、出力階調値が付与される画素位置の分散性に優れたハーフトーン処理を行って、より画質に優れた画像を出力することが可能である。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
第2の実施形態では、エッジを含むと判定された基本セルCL1については、基本セルCL1の領域にとらわれることなく、CC法による小セルCL2の設定を行う。すなわち、エッジを含むと判定された基本セルCL1のうち、互いに隣接する基本セルCL1の領域が合わさった領域に対してCC法によるハーフトーン処理を適用する。以下、第2の実施形態に係るハーフトーン処理について、図16,17のフローチャートに従って説明する。なお、第1の実施形態と同様の処理を行う部分については説明を省略している。
ハーフトーン処理を開始して、ステップS600〜S625の処理については、第1の実施形態におけるステップS100〜S125の処理と同様であるため、説明を省略する。
ステップS625からステップS630に進むと、CPU(エッジ判定部323)22は、基本セルCL1がエッジを含んでいるか否かを判定する。基本セルCL1がエッジを含まないと判定すると(ステップS630:No)、ステップS635に進んで、第1の実施形態において説明したAAM法と同様の処理を行う。一方、基本セルCL1がエッジを含むと判定すると(ステップS630:Yes)、第1の実施形態とは異なり、基本セルを対象としたCC法の処理を行うことなく、ステップS655に進む。次のステップS655〜S680の処理についても、第1の実施形態におけるステップS155〜S180と同様の処理を行うため説明を省略する。
ただし、ステップS675において、設定されたセル繰り返しマトリクスCMより下に未処理画素がないと判断されると(ステップS675:No)、ステップS685に進む。このとき、入力画像データの画像領域は、エッジを含まない基本セルCL1の領域にはAAM法による出力階調値が付与され、エッジを含む基本セルCL1の領域は未処理画素のままの状態となっている。ステップS685では、この未処理画素が残った全領域に対して、CC法による処理(全未処理画素を対象としたCC法)を行う。以下、図18のフローチャートに従って説明する。
全未処理画素を対象としたCC法を開始すると、入力画像データの全画像領域について、未処理画素が残っているか否かを判断する(ステップS700)。未処理画素が残っていれば(ステップS700:Yes)、ラスタ順に探索して、最初に探索された未処理画素を初期画素として小セルCL2に取り込んでから、小セルCL2内の重心位置を算出する(ステップS705)。
ステップS710〜ステップS755の処理は、第1の実施形態のステップS405〜S455と同様に行って、入力画像データの画像領域に未処理画素がなくなるまで、ステップS700〜S750の処理を繰り返し行う。そして、未処理画素がなくなると、図18の全未処理画素を対象としたCC法、および図16,17のハーフトーン処理を終了する。
以上に説明したハーフトーン処理によれば、エッジを含まないと判定された基本セルCL1について、AAM法による処理を行ってから、残った画像領域(すなわち、エッジを含むと判定された基本セルCL1の領域)については、基本セルCL1の区切りにとらわれることなく、全未処理画素に対してCC法による処理が行われる。これにより、エッジEを一部に含まない基本セル(図15(a)の実線の基本セル参照)CL1については、AAM法によるハーフトーン処理が行われ、エッジEを一部にでも含む基本セル(図15(a)の破線の基本セル参照)の領域については、CC法によるハーフトーン処理が行われる。
第2の実施形態によれば、第1の実施形態における(1)〜(7)と同様の効果を得ることができる。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。
第3の実施形態のパルス幅変調部330は、ハーフトーン処理部320から出力された出力画像データにパルス幅変調を施すことにより、2以上のK(Kは整数)段階のパルス幅をもつパルス幅信号に変換することが可能である。本実施形態では、パルス幅変調部330が255段階のパルス幅信号に対応する場合について説明する。
第1の実施形態では、式(5)にて説明したように「127」以下の階調値分を切り捨てて、「127」より大きい階調値については「255」分のドットを生成することとなっていた。このため、図6の例では、15個分の画素に「255」の階調値を付与して、残った「115」の階調値分には出力階調値を付与していなかった。
これに対し、第3の実施形態では、パルス幅変調部330が255段階のパルス幅信号を生成可能であるため、図6(b)の例の場合であれば、階調値付与部326は、残った階調値「115」を重心位置G1に近い画素(m+6,n+9)に付与する。
そのため、階調値付与部326は、出力画像データを生成する際に、出力階調値を付与した画素について、次々に出力階調値を付与することにより、付与された画素の集合が重心位置G1から拡大する方向、すなわちドット成長方向を示すドット成長データ(拡大方向情報)を生成する。
パルス幅変調部330は、階調値「255」未満の出力階調値を付与する際に、ドット成長データを参照して、出力階調値の付与対象の画素内において、ドット成長方向に対する反対側、すなわち重心位置により近い側を起点として出力階調値分のパルス幅信号を生成する。
このパルス幅変調を図6の例の場合について行うと、図19に示したように、画素(m+6,n+9)に対して、画素の左側から出力階調値「115」分のパルス幅を有したドットが形成される。こうすることにより、基本セルCL1には、1つの塊状のドットが生成され、ドットの孤立が抑制される。
第3の実施形態によれば、第1の実施形態における(1)〜(7)に加えて、さらに以下の効果を得ることができる。
(9)AAM法において、基本セルCL1内階調値に対応する分の目標階調値を付与したことにより、ハーフトーン処理前後におけるセル内階調値合計と、出力階調値の合計とが等しくなるので、入力画像データの階調再現性により優れたハーフトーン処理を行うことができる。
(10)ドットの孤立を抑制することにより、ドット形成がより安定し、階調安定性により優れた画像を出力することができる。
以上、本発明の第1ないし第3の実施形態について説明したが、本発明はこれに限られることなく、様々な形態とすることもできる。以下、本発明の変形例について説明する。
(変形例1)上記第1ないし第3の実施形態では、基本セル内CL1の階調値の最大値と最小値との差分値を用いてエッジを判定したが、エッジの判定方法についてはこれに限られない。例えば、SobelやPrewittなどのエッジ検出フィルタを用いてエッジを検出して、基本セルCL1内にエッジを含んでいるかによりエッジの判定を行ってもよい。また、PDL(Page Description Language)などのプリンタ言語で記述した印刷データをラスタライズする際に、テキスト部分の描画範囲を示す付加情報を入力画像データに加えておき、ハーフトーン処理において、付加情報を参照してテキストの描画範囲を含む基本セルCL1を、エッジを含む基本セルCL1と判定するようにしてもよい。このようにすれば、テキスト部分について視認性のよい画像を出力することができる。
(変形例2)第2の変形例として、本発明は、ホストコンピュータ10側でハーフトーン処理を行うシステム構成としてもよい。すなわち、図20に示すように、ホストコンピュータ(画像処理装置)10は、ラスタライズ部200、色変換部310およびハーフトーン処理部320を有する画像処理部300を備えている。このとき、ハーフトーン処理部320は、入力画像データにハーフトーン処理を施して出力画像データに変換し、色変換後の出力画像データを画像出力装置20に出力することにより、入力画像データの印刷を行う。
(変形例3)上記第1ないし第3の実施形態では、エッジを含む基本セルCL1をCC法を用いて小セルCL2に分割する場合について説明したが、小セルCL2に分割する際にも、予め決められたセル形状に区画してもよい。すなわち、基本セルCL1を複数の小セルCL2に区画するためのセルパターンのデータを予めROM23に記憶しておき、エッジを含むと判定された基本セルCL1に対しては、セルパターンを配置することによって、小セルCL2に分割する。このようにしても、エッジ部分の解像性を高めることができるので、エッジ再現性に優れたハーフトーン処理を高速に行うことが可能である。
(変形例4)セル繰り返しマトリクスCMについて、生成される基本セルCL1の形状・大きさは図4の例に限られない。例えば、基本セルの形状が四角形の形状であったり、六角形の形状の基本セルCL1がハニカム状に配列したマトリクスであってもよい。また、C,M,Y,Kの各色について異なるマトリクスを適用するようにしてもよい。図4の例では、x,y方向に沿うように基本セルが並んでいるが、各色間で、例えば、30°ずつずれた方向に基本セルが並んだマトリスクを適用するようにすれば、各色間のドット位置が適宜ばらつき、モアレの少ない好適な画像を得ることができる。
(変形例5)上記第1ないし第3の実施形態では、CPU22が画像処理プログラムGPを実行することにより、ソフトウェアによってハーフトーン処理を実現する例について説明した。ハーフトーン処理を行う機能を、ASICなどのハードウェアにより実現してもよい。もちろん、一部の機能をハードウェアにもたせて、ハードウェアがもたない機能をソフトウェアによって実現するようにしてもよい。
(変形例6)上記第1ないし第3の実施形態において、画像処理装置としての画像出力装置は、レーザプリンタであった。本発明はこれに限定されるものでなく、例えば、インクジェットプリンタやサーマルプリンタなど、他の印刷方式のプリンタや複写機、ワープロ、ファックス、ディスプレイなどの種々の機器に適用することができる。
10…ホストコンピュータ、20…画像出力装置、21…入力インターフェイス、22…CPU、23…記憶手段としてのROM、24…RAM、24a…入力バッファ、24b…出力バッファ、100…アプリケーション部、200…ラスタライズ部、300…画像処理装置としての画像処理部、310…色変換部、320…ハーフトーン処理部、321…第1の画素群設定部としての基本セル設定部、322…ハイライト判定部、323…エッジ判定部、324…画素群拡大部としての基本セル拡大部、325…第2の画素群設定部としての小セル設定部、326…階調値付与部、330…パルス幅変調部、400…画像出力部としての印刷エンジン、410…レーザドライバ、420…レーザダイオード、CD…パターンデータとしてのセルパターンデータ、GP…画像処理プログラム、CM…セル繰り返しマトリクス、CL1…基本セル、CL2…小セル、CB…セルブロック、G1…基本セルの重心位置、G2…小セルの重心位置。