(57)【要約】【課題】  複数の濃度をもつドットを打ち出すことのできるプリンタなどの画像出力装置において、入力画像の階調データを、所定の手法にて階調変換し、画像出力装置の出力画像に生じうる特異パターンの発生などを抑えたドットを生成すること。【解決手段】  画像処理部３０は、ＣＭＹＫデータからなる入力階調データを取得する色補正・色変換部３１と、入力階調データを複数の階調データに分割する階調値分割部３３と、分割した各階調データに対応して濃大・濃小・淡大ドットを生成するドット生成部３４と、生成したドットの誤差である差分階調データについて負値のデータを補正する負値補正部３５と、淡小ドット生成部３６と、から構成されている。淡小ドット生成部３６は、負値の補正処理を行った差分階調データに対して、階調値の総和が所定の閾値以上となるまで新たな画素を次々に選択してセルを生成し、セルの重心に淡小ドットを生成する。【選択図】  図１
2006025217.tif 000002
【特許請求の範囲】
【請求項１】
画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理装置であって、
前記入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換手段と、
画素ごとに、前記第１の階調変換手段により取得した前記階調データと前記入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、前記画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換手段と、を備えたことを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記入力データのもつ階調値を複数の階調値に分割し、それぞれの階調値を有する複数の階調データを取得する階調値分割手段を、更に備え、
前記第１の階調変換手段は、分割した前記複数の階調データに第１の階調変換を行い、
前記第２の階調変換手段は、前記複数の階調データと前記入力データとの間の誤差分である誤差データに対して第２の階調変換を行うことを特徴とする画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置において、
前記第２の階調変換手段は、生成した画素群の重心位置から最も近い画素を新たに選択するようにして、前記画素群を生成し、前記画素群の重心位置に基づいて決定した画素にＮ種類の階調値を付与することを特徴とする画像処理装置。
【請求項４】
請求項３に記載の画像処理装置において、
前記誤差データのもつ階調値の符号を画素ごとに判断し、符号が負である画素には符号が正となる画素から正の階調値を移動することにより、当該画素のもつ負の階調値を相殺した誤差データを取得する階調値移動手段を、更に備え、
前記第２の階調変換手段は、前記負の階調値を相殺した誤差データに対して、第２の階調変換を行うことを特徴とする画像処理装置。
【請求項５】
請求項１または２に記載の画像処理装置において、
前記第２の階調変換手段は、画素選択のための第１の基準点を設定し、
第１の基準点に基づいて、画素ごとの階調値の総和が閾値以上となるまで前記Ｍ種類の階調値を有する画素を選択するようにして画素群を生成し、
生成した画素群に基づいて第２の基準点を決定し、
前記第２の基準点に基づいて決定した画素に前記Ｎ種類の階調値を付与することを特徴とする画像処理装置。
【請求項６】
請求項５に記載の画像処理装置において、
前記第２の階調変換手段は、前記第１の基準点を、前記画素を所定の回数選択するごとに更新させることを特徴とする画像処理装置。
【請求項７】
請求項５または６に記載の画像処理装置において、
前記第１の基準点は、前記選択した画素の位置から演算した中心位置であり、前記第２の基準点は、前記画素群の画素の位置と階調値とから演算した重心位置であることを特徴とする画像処理装置。
【請求項８】
請求項５または６に記載の画像処理装置において、
前記第１の基準点は、前記選択した画素の位置から演算した中心位置であり、前記第２の基準点は、前記画素群の画素の位置から演算した中心位置であることを特徴とする画像処理装置。
【請求項９】
請求項１ないし８のいずれか一項に記載の画像処理装置において、
前記第２の階調変換手段は、新たな画素を選択し続け、生成した前記画素群における階調値の総和が前記閾値を超えたとき、前記階調値と閾値とを差分した階調値を、最後に選択した前記画素に戻すことを特徴とする画像処理装置。
【請求項１０】
請求項１ないし９のいずれか一項に記載の画像処理装置において、
前記第１の階調変換手段は、組織的ディザ法、誤差拡散法または平均誤差最小法のうちのいずれかによる階調変換を行うことを特徴とする画像処理装置。
【請求項１１】
請求項１ないし１０のいずれか一項の画像処理装置を備え、印刷媒体上に複数のドットを形成することにより画像を印刷する印刷装置において、
前記複数の階調データに対応して、濃度および大きさの少なくとも一方の異なるドットを形成することにより印刷を行うことを特徴とする印刷装置。
【請求項１２】
画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理方法であって、
前記入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換ステップと、
画素ごとに、前記第１の階調変換手段により取得した前記階調データと前記入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、前記画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換ステップと、を備えたことを特徴とする画像処理方法。
【請求項１３】
画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理プログラムであって、
コンピュータを、
前記入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換手段、
画素ごとに、前記第１の階調変換手段により取得した前記階調データと前記入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、前記画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換手段、として機能させることを特徴とする画像処理プログラム。
【請求項１４】
請求項１３に記載の画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の濃度をもつドットを打ち出すことのできるプリンタなどの画像出力装置において、入力画像の階調データを、所定の手法にて階調変換することによって、画像出力装置の出力画像に特異パターンが発生することを抑え、優れた画質の画像を生成する画像処理技術に関する。
【背景技術】
【０００２】
従来より、レーザープリンタやインクジェットプリンタなど画像出力装置では、入力画像の階調データを画素ごとに所定の閾値で２値化を行なっていた。２値化することによって階調値が付与された画素の位置には、所定の大きさのドットを形成して印刷用紙に印刷するようにして、出力画像が出力される。ここで、多値の階調データを、２値化した階調データに変換する処理のことをハーフトーン処理と一般に称している。
【０００３】
近年、インクの濃淡およびドットの大小を変化させることにより複数の濃度をもつドットを形成することのできるインクジェットプリンタが現れてきている。そこで、特許文献１には、ハーフトーン処理を適切に行い複数の濃度のドットを生成する為に、濃い濃度のドットの処理については組織的ディザによるハーフトーン処理を行い、入力画像の階調データとの誤差データを最も淡い濃度をもつドットで打つ技術が開示されている。また、この時の淡い濃度をもつドットの処理については、誤差拡散法によるハーフトーン処理が用いられている。
【０００４】
誤差拡散法によるハーフトーン処理については、形成するドットの位置によって、例えば出力画像のドットが鎖状につながるなど、入力画像には存在しなかった特異パターンが出力画像に発生することがある。そこで、このような特異パターンの発生を抑えるため、例えば、ドットのつながりを少なくする技術が特許文献２に提案されている。特許文献２では、入力画像の画素について、階調データの階調値合計が閾値に達するまで所定のテーブルにより画素を次々に探索・選択するようにして、セルの生成を行い、セルの中央付近の位置にドットを形成する技術が開示されている。
【０００５】
【特許文献１】特開２０００−６４４５号公報
【特許文献２】特開平１１−２７５２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１では、複数の濃度（濃淡）をもつドットを打つことのできるインクジェットプリンタについて、組織的ディザにより生じた誤差データを誤差拡散法を用いて拡散している。しかし、誤差拡散法によると、例えば、特許文献１の図１７にみられるような重みをつけて誤差を伝播させるため、伝播方向が特定の方向に偏ってしまう。また、この重みの分布を変化させるといった処理は行っていないので、常に一定の方向に伝播することになる。したがって、特許文献１にある技術では、誤差拡散法による量子化に伴って生ずる画素値の差分を同じ方向に拡散することにより、量子化ノイズが増幅されて特異パターンが生じてしまうという課題があった。
【０００７】
また、特許文献２におけるハーフトーン処理では、誤差拡散法における特異パターンの発生を抑えるため、セルを構成する画素の探索を所定の探索順を記録したテーブルを用いて行う方法が提案されている。しかし、例えば、特許文献２の図４に示される画素の探索順では、決まって画素の右側の画素から選択するので、テーブル内で左側に存在する画素は、左隣の画素を用いてセルを生成したときに既に処理済みとなっている場合が多く、結果的に生成されるセルが歪んだ形（例えば三日月型）となってしまう。かかる形状のセルでは、セルの中央付近がそのセルの外側に位置することもある。このようなセルについては、セルの中央付近の位置にドットを形成させると、隣のセルのドットと重なってしまうため、出力ドットの偏りが発生し、結果的に特異パターンを発生させてしまうという課題があった。
【０００８】
また、特許文献２では、同じ形状のセルが連続することに起因して出力画像に生じる規則的なパターンを防ぐため、画素の探索順を記録したテーブルを複数用意し、使用するテーブルを、セル毎に順にまたはランダムに切り替え、セルの形状を不規則にする処理も提案されている。しかしながら、かかる処理は、複数のテーブルを用意するために処理負荷が大きく、処理速度が遅くなってしまうという課題があった。また、例えば、入力画像がおおよそ同じ濃度の階調データであるような場合は、探索順をランダムにしてもほぼ同じ形状のセルが生成されてしまうこともあり、結果的に規則的な特異パターンを生じてしまうという課題もあった。
【０００９】
本発明は、このような課題の少なくとも一部を解決し、複数の濃度をもつドットから特異パターンの発生を抑えた出力画像を取得する画像処理装置、印刷装置、画像処理方法、画像処理プログラム、またはそのプログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明では、画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理装置であって、入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換手段と、画素ごとに、第１の階調変換手段により取得した階調データと入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換手段と、を備えたことを要旨とする。
【００１１】
この構成によれば、Ｐ種類の階調数からなる入力データからＱ（Ｑ＜Ｐ）種類の階調値からなる階調データを取得しており、より少ない階調数で表現された階調値に変換すること（第１の階調変換）によって、入力画像の階調データにバラツキを与える。そして、バラツキが与えられた階調データと入力データとの間の誤差分である誤差データについて、画素ごとに第２の階調変換処理を行うことにより、階調データの階調値の総和が閾値以上となるまで、階調データの新たな画素を次々に選択して画素群（以下、「セル」と呼ぶ）を生成する。そして、生成したセル内の画素の階調値合計が閾値以上となったセルの所定画素に、Ｎ種類の階調値を付与する。こうすることによって、セルに組み入れる画素の選択に際して、選択順をセルごとに変更しなくても画素の選択順がバラツクことになるため、生成されるセルの形状は不規則となり、誤差データにバラツキを与えることができる。すなわち、階調データおよび誤差データの画素値に基づいて取得する出力画像は、第１の階調変換により階調データにバラツキを与えると共に、その誤差である誤差データに第２の階調変換を行うことで、第１の階調変換後の階調データと、第２の階調変換後の誤差データとを合わせることにより取得される。したがって、入力データに対する誤差が低減すると共に、誤差データを適切にバラツキを与えた処理を行うことで特異パターンの発生を抑えた視覚的に快適な出力画像を得ることができる。このようにして、Ｑ種類の階調数をもつ階調データと、Ｎ種類の階調値をもつ誤差データとから、Ｐ種類の階調値をもつ入力データを再現しながら視覚的に快適な出力画像を得ることができる。
【００１２】
ここで、入力データのもつ階調値を複数の階調値に分割し、それぞれの階調値を有する複数の階調データを取得する階調値分割手段を、更に備え、第１の階調変換手段は、分割した複数の階調データに第１の階調変換を行い、第２の階調変換手段は、複数の階調データと入力データとの間の誤差分である誤差データに対して第２の階調変換を行うことが好ましい。
【００１３】
このようにすれば、複数の階調データおよび誤差データの画素値に基づいて、出力画像を得ることができる。なお、異なる階調値をもつようにして複数の階調値を取得することがより望ましい。こうすれば、異なる階調値をもつ階調データおよび誤差データを組み合わせることにより、より多くの階調値を表現し、視覚的に快適な出力画像を得ることができる。例えば、複数の階調データをそれぞれ異なる濃度をもつドットに対応させれば、複数のドットを組み合わせて用いることにより、単独のドットを用いた場合に比べて表現できる階調値を増やしながら視覚的に快適な画像を得ることができる。
【００１４】
ここで、第２の階調変換手段は、生成した画素群の重心位置から最も近い画素を新たに選択するようにして、画素群を生成し、画素群の重心位置に基づいて決定した画素にＮ種類の階調値を付与することが好ましい。
【００１５】
このようにすれば、セルの生成処理に際して、常にセルの重心に最も近い画素を選択してセルに組み入れていくため、生成されるセルの形状はセルの重心を中心としておおよそ円形状になる。そして、その円のおおよそ中心位置に階調値を付与することとなる。したがって、例えば、画素ごとに均一な階調値をもつデータに対して第２の階調変換を行い階調値を付与する場合、階調値が付与された画素間の距離がほぼ均一となる。このように、階調値の分散性が良くなるので、快適な出力画像を得ることができる。
【００１６】
ここで、誤差データのもつ階調値の符号を画素ごとに判断し、符号が負である画素には符号が正となる画素から正の階調値を移動することにより、当該画素のもつ負の階調値を相殺した誤差データを取得する階調値移動手段を、更に備え、第２の階調変換手段は、負の階調値を相殺した誤差データに対して、第２の階調変換を行うことが好ましい。
【００１７】
このようにすれば、第１の変換手段による処理後の階調成分データと、入力データとの差分値を有する誤差データについて、符号が負である画素に対して符号が正である画素から階調値を移動して、負の階調値を相殺することで、正の階調値を有した誤差データに対して第２の階調変換をおこなうことができる。ここで、第２の階調変換に際し、セル内に負の階調値があった場合、負の階調値をもつ画素の影響によりセル内の画素の重心はセルの外側に位置し、セル外に階調値が付与される可能性がある。このような場合、他のセルの内側にドットを形成させることになり、他のセルにより生成されるドットと重なってしまう可能性が高まるので、出力ドットに偏りが発生し、結果的に特異パターンを発生することとなる。そこで、階調値移動手段が誤差データの負値を相殺することにより、セル外部の画素に階調値が与えられることを防ぐことができる。したがって、ドット間距離の再現性・ドットの分散性が向上した第２の階調変換が行なわれることになるので、快適な出力画像を得ることができる。なお、正の階調値を有する画素を選択する際には、負の階調値を有する画素より最も近い正の階調値を有する画素を選択するようにして処理するとよい。
【００１８】
ここで、第２の階調変換手段は、画素選択のための第１の基準点を設定し、第１の基準点に基づいて、画素ごとの階調値の総和が閾値以上となるまでＭ種類の階調値を有する画素を選択するようにして画素群を生成し、生成した画素群に基づいて第２の基準点を決定し、第２の基準点に基づいて決定した画素にＮ種類の階調値を付与することが好ましい。
【００１９】
このようにすれば、セルの生成に際してセルに組み入れる画素を選択するための基準点と、生成したセルに形成するドットの位置を決定する基準点とを区別することになる。例えば、組み入れる画素をセルの形状によって特定される基準点を用いて選択し、セル内の各画素の階調値とは無関係にセルを生成することができる。したがって、セルの形状のみに着目して、組み入れる画素を選択することができる。また、画素の階調値に無関係に処理を行うので、誤差データが負値を持っていた場合であっても、負値の相殺を行うことなく、セル内に階調値を与えるようにして処理を行うことができる。
【００２０】
ここで、第２の階調変換手段は、第１の基準点を、画素を所定の回数選択するごとに更新させるとしてもよい。
【００２１】
このようにすれば、例えば、生成されるセルが第１の基準点を固定にした場合よりも円状に形成される可能性が高くなり、ドット間距離が均一に保たれ快適な出力画像を得ることが可能となる。
【００２２】
ここで、第１の基準点は、選択した画素の位置から演算した中心位置であり、第２の基準点は、画素群の画素の位置と階調値とから演算した重心位置であることが好ましい。
【００２３】
このようにすれば、画素群に組み入れる画素の選択を各画素の位置を基準に演算すればよく、重心を演算する場合に比べて計算処理に関する処理負荷を軽減できる。また形成するドットの位置は、生成したセルの重心とするため、入力画像の階調データに忠実なドットをセル内に形成することができる。
【００２４】
ここで、第１の基準点は、選択した画素の位置から演算した中心位置であり、第２の基準点は、画素群の画素の位置から演算した中心位置であることが好ましい。
【００２５】
このようにすれば、例えば、画素選択に用いる基準点およびドットを形成させるための基準点を決定する処理に際して、両方とも画素の階調値を含めた演算を行う必要がなくなるので、計算量を少なくして装置全体の処理効率を上げることができる。
【００２６】
ここで、第２の階調変換手段は、新たな画素を選択し続け、生成した画素群における階調値の総和が閾値を超えたとき、階調値と閾値とを差分した階調値を、最後に選択した画素に戻すことが好ましい。
【００２７】
このようにすれば、閾値を超えたセルに最後に組み入れられた画素に、閾値を超えた分の階調値を戻しているため、誤差データの階調値を第２の階調変換処理の途中で失われることがなく、元の画像とほぼ同じ位置に階調値が残るため、誤差データおよび入力データに忠実なドットを形成させることができる。
【００２８】
ここで、第１の階調変換手段は、組織的ディザ法、誤差拡散法または平均誤差最小法のうちのいずれかによる階調変換を行うことが好ましい。
【００２９】
このようにすれば、例えば、入力画像がおおよそ同じ濃度を表す階調値からなる入力データであるような場合、入力画像の入力データの階調値を所定の階調値に変換することによって増減することができる。この結果、階調データおよび誤差データがバラツクことになり、その後行われる第２の階調変換において、セルごとに画素の選択順を変更しなくても、ほぼ同じ形状のセルが生成される確率が減少する。したがって、セル形状がバラツクことによって第２の階調変換を行った誤差データに特異パターンが生じ難くなり、視覚的に快適な出力画像が得られる。
【００３０】
ここで、本発明は、上述した画像処理装置を備え、印刷媒体上に複数のドットを形成することにより画像を印刷する印刷装置において、複数の階調データに対応して、濃度および大きさの少なくとも一方の異なるドットを形成することにより印刷を行うことを特徴とする印刷装置としてもよい。
【００３１】
このようにすれば、いわゆるインクジェットプリンタにおいて、複数の階調データに対応して、濃度および大きさの少なくとも一方の異なるドットを形成することができる。したがって、複数の階調データの階調値に対応して複数の異なるドットを生成して印刷を行うことを考えると、第１の階調変換を行なった階調値に対応するドットを生成し、入力データに対する誤差を、新たにドットを生成することにより低減することができる。また、この誤差の補正においては、特異パターンの発生を抑えた誤差データに対応してドットを生成することができる。以上のことから、階調値の再現性が優れると共に、視覚的に快適な出力画像を印刷することができる。
【００３２】
また、上記目的を達成する本発明の画像処理方法は、画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理方法であって、入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換ステップと、画素ごとに、第１の階調変換手段により取得した階調データと入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換ステップと、を備えたことを特徴とする。
【００３３】
この構成によれば、第１の階調変換により入力データにバラツキを与え、第１の変換処理による誤差分である誤差データに対して第２の変換処理を行う。第２の変換処理では、画素の選択に際して選択順をセルごとに変更しなくても、同じような形状のセルが連続して生成される確率が減少するため、特異パターンの発生を抑えた誤差データを得ることができる。そして、Ｑ種類の階調値からなる第１の階調変換後の階調データと誤差データとからなる階調データを取得することができる。したがって、こうして得られた階調データより、視覚的に快適な出力画像を得ることができる。
【００３４】
また、本発明はコンピュータプログラムまたはそのプログラムを記録した記録媒体としてもよい。すなわち、画素ごとに、Ｐ（Ｐは２以上の整数）種類の階調値のうちいずれかの値をもつ入力データに階調変換を行う画像処理プログラムであって、コンピュータを、入力データのもつ階調値に対して、画素ごとにＱ（Ｑ＜Ｐ、Ｑは２以上の整数）種類の階調値からなる階調データに変換する第１の階調変換を行い、階調データを取得する第１の階調変換手段、画素ごとに、第１の階調変換手段により取得した階調データと入力データとの間の誤差分であるＭ（Ｍは２以上の整数）種類の階調数からなる誤差データについて、階調値の総和が閾値以上となるまで新たな画素を次々に選択して画素群を生成し、画素群のうち、所定の画素に対してＮ（Ｎは２以上の整数）種類の階調値を付与する第２の階調変換手段、として機能させることを特徴とする。また、このプログラムを記録した記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＩＣカード、パンチカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明を具体化した本実施形態について図面に従って説明する。
【００３６】
図１は、本実施形態のシステム全体を示す構成図である。図１に示すように、本システムは、大別してホストコンピュータ１０と、画像出力装置２０とから構成されている。
【００３７】
ホストコンピュータ１０は、アプリケーション部１１とラスタライズ部１２とから構成される。アプリケーション部１１は、文字データ、図形データ、ビットマップデータ等の印刷対象となる出力画像用のデータを生成する。例えば、ホストコンピュータ１０でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用してキーボード等の操作により文字データや図形データなどを生成する。そして生成したこれらのデータを、ラスタライズ部１２に出力する。このようにして、上述したデータを印刷する対象として、以下に述べる処理を行うこととなる。もっとも、ホストコンピュータ１０は、スキャナなどの画像入力装置（図示せず）から出力されるデータを受け付け、このデータをアプリケーション部１１が生成するデータとしてラスタライズ部１２へ出力するものとしてもよい。
【００３８】
ラスタライズ部１２は、アプリケーション部１１から出力された印刷対象のデータを画素ごと（又はドットごと）に８ビットの階調データに変換する。本実施形態では、Ｒ（レッド）、Ｇ（グリーン）、Ｂ（ブルー）の各色、画素ごとに８ビットの階調データを出力する。したがって、出力される階調データは、画素ごとに０から２５５までの２５６種類の値（階調値）を有することになる。実際には、ラスタライズ部１２における階調データの生成処理は、ホストコンピュータ１０に実装されたドライバによって行われている。ラスタライズ部１２により生成された階調データは、画像出力装置２０に出力される。
【００３９】
画像出力装置（印刷装置）２０は、全体として画像処理部３０と印刷エンジン４０とから構成されている。画像処理部３０では、ホストコンピュータ１０から出力された階調データに対して処理を行い、処理後のデータが印刷エンジン４０に出力され、この印刷エンジン４０にて実際に印刷用紙等の記録媒体への印刷が行われる。
【００４０】
ここで、印刷エンジンは、ドット状のインクを記録媒体に吐出するようにして印刷を行うが、本実施形態にある印刷エンジン４０は、吐出するドットについて、濃淡・大小の選択を行うことができる。すなわち、印刷エンジン４０は、濃大ドット・濃小ドット・淡大ドット・淡小ドットの４種類のドットを吐出することができる（詳細は後述する）。
【００４１】
画像処理部３０は、ラスタライズ部からのＲＧＢデータからＣＭＹＫデータを取得する色補正・色変換部３１と、各色の階調データを複数の階調データに分割する階調値分割部３３と、分割した各階調データに対応して濃大・濃小・淡大ドットを生成するドット生成部３４と、生成したドットの誤差について負値を補正する負値補正部３５と、淡小ドットを生成する淡小ドット生成部３６と、から構成されている。このように、本実施形態に係る画像処理部３０は、ＲＧＢデータからなる入力に対して、濃大・濃小・淡大・淡小ドットの４種類のドットを生成するものである。なお、画像処理部３０でいう生成とは、各ドットごとにドットのオンオフを決定することを示している。実際には、各ドットはここで決定されたドットのオンオフ情報にしたがって、印刷ヘッド４２により印刷紙などの記録媒体に吐出されるようにしてドットが生成される。
【００４２】
色補正・色変換部３１は、ホストコンピュータ１０より入力される２５６種類の階調値を有するＲＧＢ各８ビット（計２４ビット）の階調データを受け取り、印刷エンジン４０にて実際に印刷された印刷物が良好な色を表現できるように、色補正表３２を用いてＲＧＢの階調データの色補正処理を行う。その後、補正したＲＧＢの階調データを、ＲＧＢからＣＭＹＫに色変換処理を行う。ここで、Ｃはシアン、Ｍはマゼンタ、Ｙはイエロー、Ｋはブラックを示している。もっとも、なお、このＣＭＹＫの階調データを、階調値分割部３３に入力されるデータであることから、以下では入力階調データ（入力データ）Ｄｉと呼ぶこととする。
【００４３】
階調値分割部（階調値分割手段）３３は、色補正及び色変換部３１から出力される入力階調データＤｉの各階調値を分割し、濃大・濃小・淡大ドットのそれぞれに与えられるレベル値を決定する。そして、入力階調データＤｉの階調値に対応して、レベル値を有したレベルデータＤｌを取得する。ここで、レベル値とは次に行う濃大・濃小・淡大ドットの生成処理において用いるため、後述する図７のテーブルを用いて求められる値である。この処理を階調値分割処理と呼ぶ。
【００４４】
ドット生成部（第１の階調変換手段）３４は、階調値分割部３３から出力される濃大・濃小・淡大ドットの各レベル値に対して、組織的ディザ法による階調変換処理を行い、２値化した量子化データＤｏを生成する。この２値化した量子化データＤｏは、濃大・濃小・淡大ドットの各ドットを生成するか否かに対応したデータである。すなわち、ドット生成部３４では、画素ごとに階調値に対してディザマトリクスを閾値とする判定を行い、各ドットのオンオフを決定する。
【００４５】
負値補正部（階調値移動手段）３５は、ドット生成部３４から出力される量子化データＤｏと各ドットのもつ濃度に基づいて、濃大・濃小・淡大ドットにより表現される濃度と、入力階調データＤｉの階調値との差分値を演算し、差分階調データ（誤差データ）Ｄｄを取得する。そして、差分階調データＤｄの負の階調値について、正の階調値をもつ画素から階調値を移動することにより負の階調値を相殺する負値の補正処理を行う。
【００４６】
淡小ドット生成部（第２の階調値変換手段）３６は、負値の補正処理を行った差分階調データＤｄに対して、差分値を所定の階調値を閾値として得られる量子化データＤｏに変換し、その量子化データＤｏを出力する。ここで、２値化した量子化データＤｏは、淡小ドットを生成するか否かに対応している。本実施形態では、淡小ドット生成処理として、複数の画素の重心ＧＣに基づいてセルＣＬを構成し、セル内部の画素の重心ＧＣにドットを生成させる処理（Ｃｉｒｃｕｌａｒ  Ｃｅｌｌ法、以下ＣＣ法）を用いる。ＣＣ法の具体的な内容については後述する。
そして、以上のようにして生成した濃大・濃小・淡大・淡小ドットのオンオフに対応する量子化データＤｏから駆動データを生成し、印刷エンジン４０に出力する。
【００４７】
印刷エンジン４０は、ヘッド駆動部４１と印刷ヘッド４２とから構成される。ヘッド駆動部４１は、画像処理部３０より入力される駆動データから、印刷ヘッド４２を駆動する制御データを生成し、印刷ヘッド４２に出力する。印刷ヘッド４２は、ヘッド駆動部４１から出力された制御データに基づいて駆動され、さらに図示しない印刷ヘッド走査機構や用紙搬送機構が駆動されて、実際に印刷用紙等の記録媒体にホストコンピュータ１０からのデータが印刷されることになる。
【００４８】
次に、図２および図３を参照して、印刷ヘッド４２について説明する。
図２は印刷ヘッド４２のノズル面を示した図である。このように、印刷ヘッド４２は、Ｋ（ブラック）、Ｃ１（シアン）、Ｃ２（ライトシアン）、Ｍ１（マゼンタ）、Ｍ２（ライトマゼンタ）、Ｙ（イエロー）の各色のヘッドから構成されており、各色のヘッドを並べるようにして、１つのヘッドユニットを構成している。そして、各印刷ヘッド４２のノズル面は、矩形状の形状を有しており、その長辺方向には千鳥状に配列するようにして３２個のノズルＮｚが並んでいる。また、図示しないが、この各ノズルＮｚ群には、各々に対応してインクカードリッジを備えるようにしており、インクカードリッジが装着されると、各色インクカードリッジのインク供給口と対応する色のノズルＮｚとが連通する。こうして、ノズルＮｚは、インクカードリッジからのインクの供給を受けることができるようになる。また、印刷ヘッド４２は、シアンおよびマゼンタの各色については、それぞれ濃淡２種類のノズルＮｚを別々に有している。したがって、シアンまたはマゼンタのインクを吐出する際には、使用するノズルＮｚを使い分けることによって、濃淡２種類のインク（ドット）を吐出することができる。
【００４９】
図３は、図２に示した印刷ヘッド４２の内部の概略構成を示すとともに、インクをドット状に打ち出す様子を示した説明図である。図３（ａ）に見られるように、各印刷ヘッド４２は、ノズルＮｚと、インク室Ｔｉと、ピエゾ素子ＰＥとを備えている。インク室Ｔｉは、上述したようにインクカードリッジのインク供給口（図示せず）に通じており、インクカードリッジよりインクの供給を受けて、インクが充填した状態となっている。また、インク室Ｔｉの、１側面の外部にあたる位置には電歪素子の１種であって応答性に優れたピエゾ素子ＰＥが配置されている。ピエゾ素子ＰＥは、周知のように電圧を印加することにより結晶構造が歪み、高速に電気−機械エネルギーの変換を行うことができる。ピエゾ素子ＰＥに電圧を印加すると、図３（ｂ）に示すように、ピエゾ素子ＰＥ自体が伸長して、印刷ヘッド４２のインク室Ｔｉを押圧する。押圧されたインク室Ｔｉの内部では、ピエゾ素子ＰＥに接した壁面が変形し、インク室Ｔｉの容積変化を生じることにより、インク室Ｔｉに内在するインクはインク室Ｔｉの外部へと押し出される。このようにして、ノズルＮｚへ達したインクは、ノズル先端から外部へ排出されるようにして、ドット状のインクが吐出される。以上のようにして、印刷ヘッド４２は、ピエゾ素子ＰＥを駆動させて伸縮させることによりドット状のインクを吐出して印刷を行うことができる。
【００５０】
ここで、ピエゾ素子ＰＥの変位量は、印加する電圧を大小することにより自在に調整することができる。したがって、ピエゾ素子ＰＥに印加する電圧を調整することにより、インク室Ｔｉの容積変化量を変化させ、ノズルＮｚより吐出されるインク量を変化させることができる。このように、ドットのインク量を調節することにより、ノズルＮｚから吐出されるインクのドットの大きさ（ドット径）を制御することができる。本実施形態では、ピエゾ素子ＰＥに印加する電圧を調整することによって、大小２種類のドットを作り出すようにしている。もっとも、ピエゾ素子ＰＥに印加する電圧を制御することによって、大・中・小、またはより多数の大きさの異なるドットを作り出すこともできる。
【００５１】
以上に説明したように、本実施形態に係る印刷ヘッド４２は、シアン・マゼンタのインクについて、２種類のインク濃度をもちながら、２種類の大きさをもつドットを作り出すことができる。そして、これらの組み合わせを行うことも考慮すると、印刷ヘッド４２は合計４つの種類のドットを作り出すことができる。そこで、濃度についての濃淡と、大きさについての大小を組み合わせて、それぞれのドットを「濃大ドット」、「濃小ドット」、「淡大ドット」および「淡小ドット」と以下に呼ぶこととする。また、濃大ドットを印刷物に対して形成した場合は、印刷物上に表される濃度が最も大きくなり、淡小ドットを形成した場合に、印刷物上に表される濃度が最も小さくなる。このように、印刷されたドットを巨視的に見てみると、印刷物上に４種類の濃度をもつドットを生成することができるといえる。したがって、濃大・濃小・淡大・淡小ドットのことを異なる濃度を有したドットと表現している。また、イエローおよびブラックのインクについては、濃度の薄いインクをもっていないので、ドットの大小のみが異なるドットを生成することができる。なお、以下の説明では、濃大・濃小・淡大・淡小ドットを生成する場合について、説明しているが、イエローおよびブラックについては、同様の手法により大・小ドットを生成するように処理を行うとよい。もっとも、イエローおよびブラックについても、濃淡２種類のインクを用いる構成とすることもできる。
【００５２】
次に、図４を参照して、画像出力装置２０の具体的構成について説明する。ここで、図１の画像出力装置２０のうち、色補正及び色変換部３１、階調値分割部３３、ドット生成部３４、負値補正部３５および淡小ドット生成部３６は、図２におけるＣＰＵ２２、ハードディスク２３、ＲＯＭ２４、及びＲＡＭ２５に対応する。
【００５３】
画像出力装置２０は、全体として、入力インターフェース（Ｉ／Ｆ）２１、ＣＰＵ２２、ハードディスク２３、ＲＯＭ２４、ＲＡＭ２５、印刷エンジン４０とから構成され、それらはバスを介して互いに接続されている。入力Ｉ／Ｆ２１は、ホストコンピュータ１０と画像出力装置２０とのインターフェースの役割を果たしている。入力Ｉ／Ｆ２１には、所定の伝送方式により伝送されたホストコンピュータ１０からのＲＧＢ階調データが入力され、画像出力装置２０で処理できるデータに変換される。ＲＧＢ階調データは、一旦ＲＡＭ２５に格納される。
【００５４】
ＣＰＵ２２は、バスを介して、入力Ｉ／Ｆ２１、ハードディスク２３、ＲＯＭ２４、ＲＡＭ２５、印刷エンジン４０それぞれと接続され、ハードディスク２３またはＲＯＭ２４に格納されたプログラムを読み出して、後述する階調値分割処理、ドット生成処理、淡小ドット生成処理等の各種処理を行う。これらの処理を記録したプログラムは、予めハードディスク２３やＲＯＭ２４に格納されていることとしてもよいし、例えばＣＤ−ＲＯＭなどのコンピュータが読み取り可能な記録媒体によって外部から供給され、図示しないＣＤ−Ｒ／ＲＷドライブを介して画像出力装置２０に備えられたハードディスク２３に記憶することによって格納されるものとしてもよい。もっとも、インターネットなどのネットワーク手段を介して、プログラムを供給するサーバー等にアクセスし、データをダウンロードすることによって格納されるものとしてもよい。
【００５５】
ＲＡＭ２５は、ＣＰＵ２２の制御によって実行される各処理のワーキングメモリとして役割を果たし、処理後の各種データを格納する。そして、印刷エンジン４０のヘッド駆動部４１を駆動するための駆動データも格納する。ＲＡＭ２５の記憶領域のうち所定の領域には、各種データを格納するためのバッファ領域が設けられている。
【００５６】
印刷エンジン４０は、図１の印刷エンジンと同様の構成であり、ＣＰＵ２２の制御によりＲＡＭ２５に格納された駆動データを入力し、上述した印刷処理を行うことになる。
【００５７】
次に、以上のように構成された画像出力装置２０が行う具体的な処理を説明する前に、画像処理部３０における各処理によって、ホストコンピュータ１０が出力した階調データがどのように変換されるのかを図５を用いて説明する。図５において、まず、色補正・色変換部３１には、ホストコンピュータ１０が出力したＲ，Ｇ，Ｂの階調データＲｉ，Ｇｉ，Ｂｉが入力される。Ｒｉ，Ｇｉ，Ｂｉの階調データはそれぞれ２５６階調すなわち０から２５５までの２５６種類の階調値を有する階調データである。色補正・色変換部３１は、色補正表３２を用いてＲｉ，Ｇｉ，Ｂｉのデータの色補正処理を行うと共に、Ｒ，Ｇ，ＢからＣ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）への色変換処理を行う。色変換処理は通常所定の色変換表（図示せず）を用いて行われる。本実施形態では、色変換に際して用いる色変換表のＣＭＹＫの階調データは、各色８ビットずつの階調データとなっており、色補正及び色変換部３１が出力する階調データＣｃ，Ｍｃ，Ｙｃ，Ｋｃは、０から２５５まで２５６種類の階調値を有する階調データである。
【００５８】
次に、以上で述べた画像出力装置２０の行う処理全体を示すプログラムのフローチャートを図６に示し、説明する。なお、このプログラムは、画像出力装置２０内部に備わるＲＡＭ２５に格納され、所定のオペレーションシステムの下で、ＣＰＵ２２が実行する。プログラムが実行されると、画像出力装置２０の各構成要素が動作し、それぞれの機能を果たすことができる。なお、図６のプログラムのうち、ステップＳ１０は色補正・色変換部３１が、ステップＳ２０は階調値分割部３３、ステップＳ３０はドット生成部３４が、ステップＳ４０は負値補正部が、ステップＳ５０は淡小ドット発生部３５が、それぞれ行う処理に相当する。
【００５９】
図６に示される画像処理ルーチンを開始すると、まず、ステップＳ１０において、色補正・色変換部３１は、ホストコンピュータ１０より出力された画像データ（ＲＧＢデータ）を取得し、色補正表３２に基づいて、個別の印刷エンジン４０のドット出力特性に対応した色補正を行う（色補正処理）。このとき、実際には、ホストコンピュータ１０から入力Ｉ／Ｆ２１を介してＲＡＭ２５に取り込むことで画像データの読み込みを行っている。また、このステップでは、インクジェットプリンタのＣＭＹＫ各インクの特性に合わせて、色補正を行った画像データに対してＲＧＢデータからＣＭＹＫデータへの色座標変換の処理（色変換処理）も行っている。色変換処理は通常所定の色変換表（図示せず）を用いて行われる。したがって、ここでは、入力した画像データをＣ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）の各色について、８ビット（２５６階調）で表現された入力階調値および画素ごとに入力階調値を有する入力階調データＤｉを取得し、ＲＡＭ２５の所定のバッファ領域に格納される。
【００６０】
次に、ステップＳ２０では、この色補正処理および色変換処理により得られた入力階調データＤｉに対して、ＣＰＵ２２を中心とした階調値分割部３３が、階調値分割処理を行う。以下、階調値分割処理について説明する。階調値分割処理では、与えられた入力階調データＤｉから、印刷ヘッド４２が作り出すことのできる４種類のドットのうち、最も濃度の低い淡小ドットを除いた濃大・濃小・淡大ドットについて、レベルデータＤｌを取得する。図７は、入力階調データＤｉの階調値に対応して、濃大・濃小・淡大ドットのレベル値および記録率の関係を示した図である。ここで、記録率とは、プリンタの記録解像度に対する、ノズルＮｚから吐出したドットにより白色の記録媒体（例えば印刷紙）にドットを記録した割合を示す値である。したがって、記録媒体の全面がドットにより覆われた状態では、記録率１００％となる。また、この記録率を０から２５５の階調数に対応させた値がレベル値であり、入力階調データＤｉに対応する多数の画素にこのレベル値を有したデータをレベルデータＤｌと呼んでいる。実際には、この階調値分割処理は、ＲＯＭ２４またはハードディスク２３に記憶された図７の関係を示したテーブルを読み出して参照することにより行われている。なお、図７にあるテーブルは、インク濃度・ドットの大きさなどを考慮し、入力された所定の階調値を各ドットにより適切に表現できるように実験的に求められた値である。本実施形態では、こうして求めたレベルデータを、濃大・濃小・淡大ドットを生成するか否か（すなわち、ドットのオンオフ）を判定するために用いている。
【００６１】
このように、階調値分割処理では、入力階調データＤｉの入力階調値に基づいて、図７のテーブルを参照することにより、濃大・濃小・淡大ドットの記録率を求めている。ここで、実際には、記録率に対応して、２５６階調で表現したレベル値を取得し、ＲＡＭ２５の所定のバッファ領域に記憶するようにしている。例えば、入力階調データＤｉのある画素の階調値が“６３”であった場合には、濃大ドットの記録率は０％であり、これに対応するレベル値として“０”がＲＡＭ２５のバッファ領域に記憶される。入力階調データＤｉのある画素の階調値が“１９１”であった場合には、濃大ドットの記録率は７０％となり、これに対応するレベル値“１７９”が記憶される（図７参照）。同様にして、階調値“１９１”に対する濃小ドットおよび淡大ドットについてのレベル値が記憶される。
【００６２】
次に、ステップＳ３０では、ＣＰＵ２２を中心としたドット生成部３４が、ドット生成処理を行う。
図８は、ドット生成処理の処理の流れを示したフローチャートである。このフローチャートにしたがって、ドット生成処理の説明を行う。始めに、ドット発生処理を開始すると、ステップＳ１００において、ＣＰＵ２２は、レベルデータＤｌを構成する画素から、１つの画素を選択して注目画素とする処理を行う。ドット生成処理は、階調値分割処理により求められた各画素のレベル値について行うが、レベル値を構成する画素ごとに判定を行うので、このステップにおいて、処理を行う画素（注目画素）を選択する。以下、この注目画素について処理を行う。
【００６３】
次に、ステップＳ１０５では、ＣＰＵ２２は、注目画素に対応するレベル値を取得する。ここでは、階調値分割処理により求められＲＡＭ２５に記憶されている濃大・濃小・淡大ドットのレベル値から、注目画素に対応する濃大・濃小・淡大ドットそれぞれについてのレベル値を取得して、ＲＡＭ２５に記憶する。
【００６４】
次に、ステップＳ１１０では、ＣＰＵ２２は、濃大ドットをオンにするか否かを判定する。ここでは、ステップＳ１０５で取得した濃大ドットのレベル値が、所定の閾値より大きいか否かを判定することにより濃大ドットのオンオフを決定する。なお、この処理の閾値としては、閾値に空間的なバラツキを与えたディザマトリクスを用いることによって、組織的ディザ法による判定を行っている。
【００６５】
ディザマトリクスを用いたステップＳ１１０の処理について図９を用いて以下に説明する。図９は、濃大ドットのレベルデータＤｌに対して、ディザマトリクスを用いて、濃大ドットのオンオフを判定する動作を示している。図上段には、この説明で用いる入力階調データＤｉを４×４のマトリクス上に示している。この入力階調データＤｉに対して、上述した階調値分割処理を行うことにより、図中段左に示したレベルデータＤｌが取得されていることとして、以下にステップＳ１１０の処理について説明する。処理の対象となるレベルデータＤｌを４×４のマトリクス上に示し、図中段右には、このレベルデータＤｌに対応して、４×４のマトリクスからなるディザマトリクスを示している。上述したように、ドット生成処理は画素ごとに行うものとして、ステップＳ１００で設定した注目画素はこのマトリクスのいずれかに相当する。ここで、例えば、注目画素が、マトリクスの左上の画素（ｎ，ｍ）について考える。図９中段左によると、この画素のレベル値は“７５”、ディザマトリクスの値は“１”となっている。レベル値が、閾値としてのディザマトリクスの値より大きいかを判定し、レベルデータＤｌの値が大きいときには、濃大ドットをオンすると判定する。レベル値が閾値より小さいときには、ドットをオフすると判定する。したがって、図９の例では、画素（ｎ，ｍ）のレベル値“７５”は、ディザマトリクスの閾値“１”より大きいので、濃大ドットがオンであると判定される。このように、注目画素ごとに、ドットがオンであるかオフであるかを判定し、レベルデータＤｌのすべての画素について、注目画素と設定し判定することにより、図９下段に示されるように、ドットのオンオフを示すマトリクスが得られる。このようにして、濃大ドットのオンオフを決定することができる。
【００６６】
なお、ここでは、説明の便宜のため、レベルデータＤｌおよびディザマトリクスを４×４のマトリクスとしているが、実際には、レベルデータＤｌは、入力階調データＤｉに対応した行数・列数からなるマトリクスで表され、ディザマトリクスとしては１６×１６のマトリクスを用いている。したがって、レベルデータＤｌに比べて小さいサイズからなるディザマトリクスは、レベルデータＤｌのマトリクスを１６×１６の領域ごとに区切って、それぞれの領域に対してディザマトリクスを対応させるようにして、閾値を取得する。なお、ディザマトリクスのサイズは１６×１６に限られず、６４×６４または２５６×２５６の大域的マトリクス（ブルーノイズマトリクスなど）を用いてもよい。ステップＳ１１０では、以上に述べた処理を画素ごとに行い、注目画素の濃小ドットがオンになった場合（Ｙｅｓ）、ステップＳ１１５に進む。注目画素の濃小ドットがオフになった場合（Ｎｏ）、ステップＳ１２０に進む。
【００６７】
ステップＳ１１５では、ＣＰＵ２２は、ステップＳ１１０において注目画素に対してオンになった濃大ドットに対応する結果値ＲＶを取得し、ＲＡＭ２５に記憶する。ここで、結果値ＲＶとは、その注目画素の濃度に相当する値（濃度評価値）であり、ドットがオン、すなわち、注目画素にドットを形成した場合、その画素の濃度に対応した値のことをいう。ここでいう濃度とは、ドットを記録媒体に形成したときの画素の実際の濃度のことをいい、インク濃度のことではない。なお、濃度評価値の値は実験的に求められた値であり、例えば、濃大ドットについては２５５の濃度評価値が与えられている。濃小・淡大・淡小ドットのそれぞれについても、異なる濃度評価値が設定されている。ステップＳ１１５の処理を終えると、次は、ステップＳ１４５へ進む。
【００６８】
ステップＳ１２０では、ＣＰＵ２２は、濃小ドットをオンにするか否かを判定する。ここでは、ＲＡＭ２５に記憶された濃小ドットのレベルデータＤｌより注目画素に対応する濃小ドットのレベル値を取得し、このレベル値が所定の閾値より大きいか否かを判定することにより濃小ドットのオン・オフ判定を行う。このときの、ドットの判定を行う閾値としては、マトリクスの各閾値に濃大ドット用のディザマトリクスとは異なる閾値が付与されている濃小ドット用のディザマトリクス（図示なし）を用いて行う。注目画素の濃大ドットがオンになった場合（Ｙｅｓ）、ステップＳ１２５に進む。注目画素の濃大ドットがオフになった場合（Ｎｏ）、ステップＳ１３０に進む。
【００６９】
ステップＳ１２５では、ＣＰＵ２２は、ステップＳ１２０において注目画素に対してオンになった濃小ドットに対応する結果値ＲＶを取得し、ＲＡＭ２５に記憶する。次は、ステップＳ１４５へ進む。
【００７０】
ステップＳ１３０では、ＣＰＵ２２は、淡大ドットをオンにするか否かを判定する。ここでは、ＲＡＭ２５に記憶された淡大ドットのレベルデータＤｌより注目画素に対応する淡大ドットのレベル値を取得し、このレベル値が所定の閾値より大きいか否かを判定することにより淡大ドットのオンオフ判定を行う。このときの、ドットの判定を行う閾値としては、淡大ドット用のディザマトリクスを用いて行う。注目画素の淡大ドットがオンになった場合（Ｙｅｓ）、ステップＳ１３５に進む。注目画素の淡大ドットがオフになった場合（Ｎｏ）、ステップＳ１４０に進む。
【００７１】
ステップＳ１３５では、ＣＰＵ２２は、ステップＳ１３０において注目画素に対してオンになった淡大ドットに対応する結果値ＲＶを取得し、ＲＡＭ２５に記憶する。次は、ステップＳ１４５へ進む。
【００７２】
ステップＳ１４０では、ＣＰＵ２２は、ステップＳ１１０、Ｓ１２０およびＳ１３０において、濃大・濃小・淡大ドットのいずれもがオンになっていない、すなわち、記録媒体上に何らドットが形成されていないので、結果値ＲＶとして０を設定し、ＲＡＭ２５に記憶する。次は、ステップＳ１４５へ進む。
【００７３】
ステップＳ１４５では、ＣＰＵ２２は、入力階調データＤｉの注目画素の階調値と、結果値ＲＶとの差分を演算し、差分階調データＤｄとしてＲＡＭ２５に記憶する。ここでは、所定の濃度をもつ濃大・濃小・淡大ドットの形成がオンオフいずれかで行われることにより生じる誤差を求め、後述する淡小ドットの処理においてこの誤差を解消せんとするために、この誤差分を差分階調データＤｄとして取得している。この差分階調データＤｄを取得する処理について、図１０を用いて説明する。ここでは、図１０上段右側に示した入力階調データＤｉに対して、ステップＳ１１０〜１３０の処理によって、図１０上段左側に示したように各ドットが形成された場合について、差分階調データＤｄを求める処理を説明する図である。このとき、濃大・濃小・淡大ドットの各ドットに対応した結果値ＲＶとして、濃度評価値が与えられている。図１０中段の結果値ＲＶを示すマトリクスでは、例えば、濃度評価値として、濃大ドットが“２５５”、濃小ドットが“１６０”、淡小ドットが“１２０”とした場合について示している。したがって、これらのドットの生成状態に対応して、各ドットを濃度評価値で置き換えるようにして、図１０中段に示す結果値ＲＶのマトリクスが得られる。ここで、ドットの形成については、濃大・濃小・淡大ドットにより離散的な階調を表現しているに過ぎない。すなわち、結果値ＲＶは、３つのドットに相当するときとドットを生成しないときの、４つの離散的な値しかとることができない。したがって、結果値ＲＶと入力階調データＤｉとの間には、量子化誤差が存在することとなるので、この誤差分を差分階調データＤｄ（図１０下段）として取得するのである。そして、この差分階調データＤｄに対して、淡小ドット生成部３６が後述する淡小処理を行うことにより、この誤差を解消することになる。以上のようにして、この差分階調データＤｄを求める処理を終えると、次に、ステップＳ１５０へ進む。
【００７４】
ステップＳ１５０では、ＣＰＵ２２は、入力階調データＤｉの全ての画素についてドット生成処理を行ったか否かを判断する。既に全ての画素について、処理を行っていた場合（Ｙｅｓ）、ドット生成処理を終了する。既に全ての画素について、処理を行っていない場合（Ｎｏ）、ステップＳ１００に戻り、新たな画素を注目画素に設定する。
【００７５】
次に、図６の処理に戻り、ステップＳ４０において負値の補正処理を行う。図１２は負値の補正処理について処理の流れを示したフローチャートである。また、図１１は、図１０下段に求めた差分階調データＤｄに対して負値の補正処理を行う処理を説明するための図である。以下、このフローチャートに従って、負値の補正処理の説明を行う。
【００７６】
負値の補正処理を開始すると、始めに、ステップＳ２００では、ＣＰＵ２２は、ステップＳ１４５においてＲＡＭ２５に記憶された差分階調データＤｄを読み込み、取得する。
【００７７】
次に、ステップＳ２１０では、ＣＰＵ２２は、差分階調データＤｄの各画素から負の画素を探索し、負の画素があるか否かを判断する。本実施形態では、差分階調データＤｄの左上の画素から右上のラインに沿って探索し（主走査）、１ライン分の探索を終えると、次に、１画素分下に位置するラインについて左から右に探索する。このように、次々に、下方向のラインを探索するようにして（副走査）、差分階調データＤｄの負の画素を探索する。例えば、図１１（ａ）の差分階調データＤｄを探索すると、まず、左上に位置する画素（ｎ，ｍ）から順に探索することになる。探索を行うと、画素（ｎ＋１，ｍ）が負の階調値を有しているので、負値補正手段３５は、画素（ｎ＋１，ｍ）を選択し、注目画素とする（図１１（ｂ）の網掛けした画素）。負の画素がある場合、注目画素に設定し、ステップＳ２２０に進む。差分階調データＤｄの全ての画素について負の画素がなかった場合、負値の補正処理を終了する。
【００７８】
ステップＳ２２０では、ＣＰＵ２２は、ステップＳ２１０で選択した注目画素から最も近くに位置する正の階調値をもつ画素を探索する。探索して、正の画素があった場合には、対象画素として選択される。なお、注目画素から等距離に複数の正の画素があった場合には、ここでは複数の画素を同時に対象画素に選択して処理を行うようにする。したがって、図１１（ａ）の画素（ｎ＋１，ｍ）に対しては、最も近い正の階調値をもつ画素として、画素（ｎ，ｍ）および画素（ｎ＋２，ｍ）が選択される（図１１（ｂ）の太線で覆われた領域の画素）。
【００７９】
次に、ステップＳ２３０では、ステップ２２０の探索において、正の階調値をもつ画素があったか否かをＣＰＵ２２が判断する。正の画素があった場合には（Ｙｅｓ）、ステップＳ２４０へ進む。正の画素がなかった場合には（Ｎｏ）、ステップＳ２１０に戻り新たに注目画素を設定する。
【００８０】
次に、ステップＳ２４０では、ＣＰＵ２２は、負の階調値をもつ注目画素に、正の階調値をもつ対象画素からどれだけの階調値を移動すればよいかを示した階調値補正量ｓおよび階調値移動量ｔを算出する。ここで、階調値の移動に際し、移動しすぎることにより正の階調値をもつ対象画素が、逆に負の階調値に転じることがないように、且つ、注目画素の負の階調値を解消するだけの階調値を移動するようにする。すなわち、注目画素の階調値が−ａ（ａは正の整数）、対象画素がｂ（ｂは正の整数）の階調値を有していた場合、階調値補正量ｓおよび階調値移動量ｔは、以下の式で与えられる。
ｓ＝ａ  …（１）
ｔ＝ａ                  （ａ≦ｂ）  …（２）
ｔ＝ｂ                  （ａ＞ｂ）  …（３）
【００８１】
また、ステップＳ２２０で注目画素より等距離に複数の対象画素が選択された場合は、ステップＳ２４０において複数の画素を選択して各画素から等量の階調値を移動するように階調値移動量を設定すればよい。例えば、図１１（ｂ）を例にとると、注目画素（ｍ，ｎ）の画素値“−３０”に対して、対象画素（ｎ，ｍ）および（ｎ＋２，ｍ）からそれぞれ“１５”の階調値を移動すればよいので、階調値移動量ｔとしてはそれぞれの画素に対して“１５”を設定する。このとき、階調値を移動後の画素（ｎ＋１，ｍ）、画素（ｎ，ｍ）、画素（ｎ＋２，ｍ）の画素値はそれぞれ、“０”、“３５”、“３５”となり、注目画素の負の階調値が解消される（図１１（ｃ））。また、複数の対象画素から階調値を移動する際にも、対象画素が、逆に負の階調値に転じることがないようにして行う。すなわち、対象画素の数をｋ、それらの階調値をｂ（ｉ）（ｉは、対象画素を示すｋ以下の整数）とすると、階調値移動量ｔは以下の式で与えられる。
ｔ＝ａ／ｋ              （ａ／ｋ≦Ｍｉｎ（ｂ（ｉ）））  …（４）
ｔ＝Ｍｉｎ（ｂ（ｉ））  （ａ／ｋ＞Ｍｉｎ（ｂ（ｉ）））  …（５）
【００８２】
次に、ステップＳ２５０では、ＣＰＵ２２は、階調値移動量ｔに相当する階調値を対象画素から注目画素に移動させる。すなわち、対象画素の階調値を階調値移動量ｔだけ減算し、注目画素の階調値を階調値移動量ｔだけ加算する。これを各対象画素に対して行う。実際には、このとき、ＲＡＭ２５のバッファ領域に記憶された差分階調データＤｄにおいて、注目画素および対象画素に対応する値に階調値移動後の値を記憶する。なお、複数の対象画素がある場合には、各対象画素についても同様にして階調値を移動する処理を行う。
【００８３】
次に、ステップＳ２６０では、階調値補正量ｓから対象画素の数ｋだけ階調値移動量ｔを減算し、階調値移動後の注目画素の階調値を計算する。
【００８４】
次に、ステップＳ２７０では、ステップＳ２６０で求めた階調値補正量ｓが０であるか否かをＣＰＵ２２が判断する。階調値補正量ｓが０でなかった場合（Ｎｏ）、さらに階調値を移動する必要があるので、ステップＳ２２０へ戻り、正の階調値をもつ他の対象画素を探索する。階調値補正量ｓが０となった場合（Ｙｅｓ）、注目画素の階調値は負値が補正されて“０”となっているので、次にステップＳ２１０へ戻り、新たな注目画素を設定する。
【００８５】
このように、負の階調値をもつ画素を注目画素に選択し、これを解消するように最も近い画素の正の階調値を移動させる処理を、繰り返し行い差分階調データＤｄから負の階調値をもつ画素をなくするようにする。例えば、図１１において、図１１（ｂ）〜図１１（ｅ）に示すように、注目画素を画素（ｎ＋１，ｍ）、画素（ｎ＋１，ｍ＋１）、画素（ｎ＋３，ｍ＋２）と、負の階調値をもつ画素を次々に注目画素に選択して、上述した操作を繰り返し行い、注目画素の負の階調値を解消するようにしている。したがって、この処理を終えると、最終的に図１１（ｆ）に示すように、負の階調値は補正され、０以上の階調値をもつ差分階調データＤｄが得られる。
【００８６】
ここで、入力階調データＤｉの値と濃大・濃小・淡大ドットの各ディザマトリクスの閾値との大小関係によっては、全体として正の階調値の絶対値より負の階調値の絶対値が大きい差分階調データＤｄが得られる可能性がある。こうした場合に、負値の補正処理を行うと、処理の途中で正の階調値をもつ画素がなくなり、負の階調値をもつ画素の画素値を解消できなくなる状況が発生する可能性がある。こうした場合は、差分階調データＤｄに正の階調値がなくなり負の階調値を残したまま処理を終了する。差分階調データＤｄが全体として負に偏っていることは、濃大・濃小・淡大ドットを生成したことによる階調値が、入力階調データＤｉの階調値より既に大きくなっていることを意味しているので、後述する淡小ドット生成処理により淡小ドットを新たに生成する必要がなくなる。したがって、差分階調データＤｄに負の階調値のみを残すことによって、淡小ドットが生成しないようにするとよい。
【００８７】
次に、図６の処理に戻り、ステップＳ５０において淡小ドット生成処理を行う。
淡小ドット生成処理では、ステップＳ４０で得られた正の階調値をもつ差分階調データＤｄに基づき、淡小ドット生成部３６が、ＣＣ法を用いて淡小ドットを生成する処理を行う。図１４は、淡小ドット生成処理における処理の流れを示したフローチャートである。図１３は、淡小ドット生成処理を行う処理例を示した図である。以下、このフローチャートに従って、図１３の例を交えて淡小ドット生成処理の説明を行う。
【００８８】
なお、淡小ドット生成処理では、ＲＡＭ２５上の記憶領域上に、差分階調データＤｄの全画素ごとに、処理が行われたか否かを記憶するバッファ領域を設けている。例えば、淡小ドット生成処理が行われていない画素（未処理画素）に対応するバッファ領域には“０”を示すビットが割り当てられ、淡小ドット生成処理が行われた画素（処理済画素）に対応するバッファ領域には“１”を示すビットを割り当てる。このようにして、いずれの画素について淡小処理済みであるかの判別は、ＲＡＭ２５のバッファ領域を参照することによって都度行い、処理済みの画素に対して更に処理を行うことがないようにしている。
【００８９】
まず、淡小ドット生成処理を開始すると、ステップＳ３００では、ＣＰＵ２２は、ＲＡＭ２５のバッファ領域より負値の補正処理後の差分階調データＤｄの読み込みを行う。ここで、図１３（ａ）には、図１０下段で得られた差分階調データＤｄに対して負値の補正処理を行った差分階調データＤｄが示されている。以下、この差分階調データＤｄに対して淡小ドット生成処理を行う場合について説明する。
【００９０】
次に、ステップＳ３１０では、ＣＰＵ２２は、セル生成の最初の未処理画素となる画素を探索し、初期画素に決定する。このとき、ドット生成処理において、探索した順と同様に、差分階調データＤｄの左上から主走査方向（Ｘ方向）に探索した後、副走査方向に１ラインずらして再び主走査方向の探索を行い、これを繰り返すようにして探索する。実際には、ＲＡＭ２５のバッファ領域を参照して、差分階調データＤｄの画素のうち未処理画素であることを示す“０”が格納されている画素を探索する。なお、このとき、階調値が“０”である画素は、重心の計算に寄与することがないので、以下に述べる処理を行うことなく処理済みの画素であるとして、バッファ領域に処理済画素であることを示す“１”のビットを格納する。したがって、図１３の例では、図１３（ａ）において、画素（ｎ，ｍ）が階調値“０”であるので、この次に探索される画素（ｎ＋１，ｍ）を初期画素に設定する（図１３（ｂ）の網掛けした画素）。未処理画素がある場合（Ｙｅｓ）は、この未処理画素を初期画素に設定し、ＲＡＭ２５のバッファ領域にその階調値と処理済画素であることを示す“１”を記憶して、ステップＳ３２０に進む。未処理画素がない場合（Ｎｏ）はステップＳ３９０に進む。
【００９１】
次に、ステップＳ３２０ではセルＣＬ内の画素の階調値の合計が閾値より小さいか否かをＣＰＵ２２が判断する。ただし、ステップＳ３１０より処理が移行した場合には、初期画素のみをセルＣＬ内の画素として判断を行う。具体的には、ＲＯＭ２４に格納した淡小ドット用の閾値を読出し、セルＣＬ内の画素の階調値と比較することにより処理を行う。なお、図１３の例では、この淡小ドットを生成する閾値として、淡小ドットの濃度評価値である階調値“７５”を用いている。ステップＳ３２０において、セルＣＬ内の画素の階調値の合計が閾値よりも小さい場合（Ｎｏ）はステップＳ３３０に進み、閾値と同じまたは大きい場合（Ｙｅｓ）はステップＳ３４０に進む。
【００９２】
ステップＳ３３０では、ステップＳ３２０で閾値より小さいと判断された場合（ＹＥＳ）について、ＣＰＵ２２は、新たな未処理画素をセルＣＬに組み入れて、セルＣＬを拡大する処理を行う。ここで、本実施形態の未処理画素の選択には、セルＣＬの重心ＧＣを利用して、重心ＧＣより最も近い画素を選択することとしている。重心ＧＣを利用して画素の選択を行うことによって、最終的に生成されるセルＣＬの形状は円状となり、その重心ＧＣにドットを形成させることで、ドット間距離が適切な値となり、視覚的に快適な印刷出力を得ることができる。
【００９３】
ＣＰＵ２２は、ＲＡＭ２５のバッファ領域より初期画素の位置する画素の階調値と座標とを読み出し、新たな未処理画素を組み入れたときのセル内の画素の重心ＧＣを演算する。ＣＰＵ２２は、具体的には、以下の演算式によりセルＣＬの重心ＧＣを求める。ここで、ｘGC，ｙGCは重心ＧＣのそれぞれｘ，ｙ座標である。
【００９４】
ｘGC＝｛｛（セルＣＬの重心ＧＣのｘ座標）×（セル内の画素の階調値合計）｝
＋｛（選択した未処理画素のｘ座標）×（選択した未処理画素の階調値）｝｝
／｛（セル内の画素の階調値合計）＋（選択した未処理画素の階調値）｝  …（６）
ｙGC＝｛｛（セルＣＬの重心ＧＣのｙ座標）×（セル内の画素の階調値合計）｝
＋｛（選択した未処理画素のｙ座標）×（選択した未処理画素の階調値）｝｝
／｛（セル内の画素の階調値合計）＋（選択した未処理画素の階調値）｝  …（７）
この演算式はＲＯＭ２４に格納され、ステップＳ３３０においてＣＰＵ２２が読み出して演算を行うことになる。もっとも、初期画素の場合は、セルＣＬの重心ＧＣのｘｙ座標は共に０として演算される。
【００９５】
また、式（６）および（７）により求められるセルＣＬの重心ＧＣおよびセルＣＬ内の画素の階調値合計は、新たな未処理画素を組み入れるたび算出し、最新の値をＲＡＭ２５に記憶する。こうすることによって、新たな未処理画素を組み入れたとき式（６）および（７）において、重心ＧＣおよび階調値合計を計算する必要がなくなり、ＲＡＭ２５から直接取得するので処理の高速化を図ることができる。そして、セルを拡大する処理を終えると、セルＣＬ内の画素に対応するＲＡＭ２５のバッファ領域に、処理済画素であることを示す“１”を格納する。
【００９６】
以上に述べたように、未処理画素を選択して新たにセルＣＬに組み入れる処理（ステップＳ３３０）は、セルＣＬ内の画素の重心ＧＣから最も近い距離にある画素を選択することによって行っている。しかし、重心ＧＣから等距離に複数の画素が存在する可能性がある。こうした場合、いずれかの画素を選択する必要が生じるが、本実施形態では初期画素の走査方向に従ってＣＰＵ２２が画素を選択して、セルＣＬを拡大するようにしている。
【００９７】
次に、ステップＳ３３０を経てステップＳ３２０へ至っている場合、ＣＰＵ２２は、再びセルＣＬ内の画素の階調値の合計が閾値を超えているか否かを判断する。すなわち、新たに選択した未処理画素の階調値を含めたセルＣＬ内の画素の階調値合計が、所定の閾値未満であるか否かを判断する。閾値を超えていない場合は再びステップＳ３３０に進み、新たな未処理画素をセルＣＬに組み入れる処理を行う。閾値を超えている場合、ステップＳ３４０へ進む。
【００９８】
このように、ステップＳ３２０とＳ３３０の処理を繰り返すたびに、ＣＰＵ２２は、ステップＳ３３０で演算したセルＣＬ内にある画素の階調値の合計が、閾値と等しいか否か判断しながら閾値に達するまでセルＣＬを拡大していくことになる。
【００９９】
ステップＳ３４０では、セル内にある画素の階調値の合計が閾値に等しいか否かをＣＰＵ２２が判断する。上述したように、ＲＡＭ２５に記憶されている値を参照することにより階調値の合計を取得し、閾値に等しい場合（Ｙｅｓ）、ステップＳ３５０へ進む。階調値の合計が閾値に等しくない場合（Ｎｏ）、ステップＳ３６０へ進む。
【０１００】
ステップＳ３５０では、式（６）および式（７）を用いて重心ＧＣの位置を算出する。すなわち、ＣＰＵ２２は、再び選択した未処理画素を含めセルＣＬ内の画素について、重心ＧＣの演算を行う。具体的なＣＰＵ２２の演算は、上述した式（６）および式（７）の演算式をＲＯＭ２４より読み出して、行うことになる。そして、このステップＳ３５０で演算した重心ＧＣの位置は、ＣＰＵ２２の制御によってＲＡＭ２５のバッファ領域に記憶されたセルＣＬの階調値の合計とともに格納される。そして、重心ＧＣに位置する画素に所定の大きさのドットを形成するための処理を行う。このとき、生成するドットは、ステップＳ３２０およびＳ３３０で用いた閾値と同等の値を付与することとし、例えば、図１３の例では“７５”の階調値（淡小ドットの濃度評価値）を閾値として、閾値と同等の値“７５”を付与することとしている。ステップＳ３５０の処理を終えるとステップＳ３８０へ進む。
【０１０１】
ステップＳ３６０では、閾値を超える階調値分を無視してセルＣＬの重心ＧＣを算出する処理を行う。このためまず、ＣＰＵ２２は、これまでステップＳ３２０で求めたセルＣＬ内の階調値合計から閾値を引く演算を行う。この演算値を「戻り値」と呼ぶ。
【０１０２】
このときの重心ＧＣの演算は具体的には、以下の演算式により行われる。
【０１０３】
ｘGC＝｛｛（セルＣＬの重心ＧＣのｘ座標）×（セル内の画素の階調値合計）｝
−｛（最後に選択した未処理画素のｘ座標）×（ステップＳ３６０の演算値）｝｝
／｛（セル内の画素の階調値合計）−（ステップＳ３６０の演算値）｝  …（８）
ｙGC＝｛｛（セルＣＬの重心ＧＣのｙ座標）×（セル内の画素の階調値合計）｝
−｛（最後に選択した未処理画素のｙ座標）×（ステップＳ３６０の演算値）｝｝
／｛（セル内の画素の階調値合計）−（ステップＳ３６０の演算値）｝  …（９）
式（６）、式（７）とは異なり、セル内にある画素の階調値をそのまま用いるのではなく、階調値の過剰分である戻り値を引くことでセルＣＬ内の階調値の合計が閾値と同じになるようにしている。
【０１０４】
この演算式は、式（６）、式（７）の場合と同様に予めＲＯＭ２４に格納されており、ＣＰＵ２２が本ステップを実行する際にＲＯＭ２４から読み出すことによって実行される。ここでは、最終的にステップＳ３３０で選択した画素の階調値は、これまで演算した階調値の合計との和をとることで閾値と等しくなるように演算して、それをもとに重心位置を求めることになる。そしてＣＰＵ２２は、演算した重心ＧＣの位置データを再びＲＡＭ２５のバッファ領域に書き込む。
【０１０５】
次に、ステップＳ３７０では、ＣＰＵ２２は、ステップＳ３６０で演算した戻り値を再び、最後にセルＣＬに選択した画素の階調値を表すバッファ領域に書き込む。これにより、戻り値が当該画素の階調値に格納される。図１３（ｂ）に示す例では、閾値は“７５”であり、ステップＳ３２０でこれまで格納した階調値は、座標（ｎ＋１，ｍ）について見ると、“５１＋６２＝１１３”であるので、ＣＰＵ２２がこれより閾値を減算して“１１３−７５＝３８”の値が戻り値になる。この値分の階調値は、座標（ｎ＋１，ｍ）を初期画素とするドット生成に寄与することなく、下の座標の画素（ｎ＋１，ｍ＋１）に戻される。なお、このとき、階調値を戻された画素（ｎ＋１，ｍ＋１）は、ＲＡＭ２５のバッファ領域には“０”が付与されて、戻り値の階調をもつ未処理画素として扱われる。すなわち、階調値を戻された画素は、有効な階調値を有しているので、再びステップＳ３１０〜Ｓ３３０の処理の対象とするのである。このように、戻り値は、戻り値を発生した元の画素に再び格納することで、入力階調データＤｉの階調値に忠実なドット分布を形成することができる。
【０１０６】
ステップＳ３８０では、ＣＰＵ２２は淡小ドットのドット出力位置を決定する。上述した処理が繰り返されることにより決定された淡小ドットの位置は、セルＣＬ内の画素の重心ＧＣとなっているので、その座標には、端数を有する値となる。しかし、以上の処理でいう画素とは、印刷エンジン４０がドットを生成する最小単位を示したものであるので、この最小単位より小さな単位でドットの座標を制御することができない。そこで、実際に淡小ドットを生成する座標を決定するため、端数を有した座標を最も近い整数値に変換を行い、淡小ドットのドット出力位置を決定する。例えば、図１３（ｅ）では、淡小ドットの座標は、画素の中心からずれた位置にあるのに対し、実際に生成される淡小ドットは図１３（ｆ）のように、各画素の中心に位置するように変換する。具体的には、ＣＰＵ２２は、重心位置の存在する画素に対応するＲＡＭ２５のバッファ領域に淡小ドットがオンであることを示す“１”を格納することにより行なわれる。これによりＣＰＵ２２は、ＲＡＭ２５のバッファ領域を参照して、画素ごとに淡小ドットのオンオフ情報を取得し、印刷エンジン４０の動作を制御することにより、淡小ドットがオンとなっている画素にドットをうつことができる。また、ステップＳ３８０では、ＣＰＵ２２がＲＡＭ２５に記憶されている濃大・濃小・淡大ドットの生成状況を参照して、淡小ドットが重なり合うときには、本来生成する画素の周辺の画素のうち、濃大・濃小・淡大ドットが生成されていない画素に淡小ドットを生成するようにする。
【０１０７】
ステップＳ３８０におけるドットの生成が終了すると、次に、ステップＳ３１０へ戻り、再び未処理画素を探索し、ステップＳ３１０において、差分階調データＤｄに未処理画素がなくすべての画素に対して処理が終了した場合（Ｎｏ）、ステップＳ３９０に進む。
【０１０８】
ステップＳ３９０では、ＣＰＵ２２は、淡小ドット生成処理において生成した淡小ドットおよび、ドット生成処理によって生成した濃大・濃小・淡大ドットのデータを合わせて、ドットのオンオフを表した量子化データＤｏとして、印刷エンジン４０に出力する。ステップ３９０を終えると、淡小ドット生成処理を終了する。
【０１０９】
次に、図１５を用いて、濃大・濃小・淡大ドット、淡小ドットを重ね合わせて印刷をした場合の最終的に得られる印刷物について説明する。図１５では、上段左側に、ドット生成処理により生成された濃大・濃小・淡大ドットの分布を示している。そして、上段右側には、淡小ドット生成処理により生成された淡小ドットの分布を示している。なお、図１５で求められている差分階調データＤｄについて負値補正処理および淡小ドット生成処理を行って得られたものを表している。このようなドット配列が生成されている場合、この２つのドット配列を重ね合わせると図１５中段に示すようなドット配列が得られる。このように、入力階調データＤｉ（図９参照）に対して、その階調を４種類のドットを適切に配置し、階調性を再現したドット配列を得ることができる。したがって、こうしたドット配列からなる出力データを、印刷エンジン４０が印刷して得られる印刷物は、階調再現性に優れたものとなる。
【０１１０】
なお、図１５中段にある座標（ｎ＋２，ｍ＋１）には、淡大ドットと淡小ドットが重なって配置されている。このような場合、ドットが重なり合うために、各ドットは本来発揮すると推定されただけの濃度が発揮されないことが考えられる。すなわち、各ドットに対して設定された濃度評価値の値はドットが単独で生成された場合の濃度を示しているので、こうしたドット同士が重なり合う場合には、推定したとおりの濃度とならない。例えば、淡小ドットが濃大ドットに重ねて生成されたときでは、淡小ドットは濃大ドットの濃度に飲み込まれ、再現される濃度にほとんど寄与しなくなる。したがって、こうした場合には、淡小ドット生成処理のステップＳ３８０において、ＣＰＵ２２がＲＡＭ２５に記憶されている濃大・濃小・淡大ドットの生成状況を参照するようにして、ドット同士が重なり合わないように淡小ドットを生成するようにする（図１５下段参照）。こうすることにより、濃度について、入力階調データＤｉに対する濃度の総量を維持することになるので、元のデータを忠実に再現することができる。
【０１１１】
以上に説明したように、本実施形態によれば、入力階調データＤｉに対して組織的ディザ法によるドット生成処理を行い、各色成分の階調データにバラツキを与えて濃大・濃小・淡大ドットを生成している。そして、濃大・濃小・淡大ドットからなる階調値と入力階調データＤｉとの誤差分である差分階調データＤｄに対して、ＣＣ法による淡小ドット生成処理を行うことにより淡小ドットのオンオフを決定している。このように、淡小ドット生成処理を行うことによって、ドット生成処理の誤差を解消し、入力階調データＤｉの階調値を忠実に再現すると共に、特異パターンの発生することがない階調データを取得することができる。
【０１１２】
また、淡小ドット生成処理において、セルＣＬに負の階調値をもつ画素が含まれていた場合、負の階調値をもつ画素の影響によりセルの外側に重心ＧＣが位置する可能性が高くなる。このような場合、他のセルの内側にドットを形成させることになり、他のセルにより生成されるドットと重なってしまう可能性が高まるので、出力ドットに偏りが発生し、結果的に特異パターンを発生することとなる。例えば、ドット生成処理後の差分階調データが、初期画素として“−７５”の階調値をもつ画素（ｎ，ｍ）と、“１５０”の階調値を有する画素（ｎ＋１，ｍ）と、からセルＣＬが生成されている場合、重心ＧＣは画素（ｎ＋２，ｍ）の中心に位置し、セルＣＬ外に階調値が付与されることになる。また、階調値の合計を負値の階調値が相殺するので、閾値以上の階調値をもつセルが不当に大きくなることもありうる。本実施形態によれば、負値の補正処理を行った差分階調データＤｄを用いて、淡小ドット生成処理を行っているので、負の階調値を含めたセルＣＬが生成される可能性が低減する。すなわち、セルＣＬの内部に重心ＧＣが位置し、セルＣＬの内部に淡小ドットが形成される可能性が高くなる。したがって、ドット間距離の再現性・ドットの分散性が向上した快適な出力画像を得ることができる。
【０１１３】
以上に述べた前記実施形態によれば、以下の効果が得られる。
（１）淡小ドット生成処理によれば、ドット生成処理で生じ得る濃大・濃小・淡大ドットの量子化誤差（差分階調データＤｄ）を補正するように淡小ドットを生成することができるため、入力画像の階調に忠実な出力画像を得ることができる。
（２）淡小ドット生成処理として、セル内の画素の重心ＧＣにドットを生成するＣＣ法を用いたことにより生成する淡小ドットに偏りを生じることがない。したがって、入力画像には存在しない周期的あるいは規則的なパターンや、ドットの偏りに起因した特異パターンなどの発生を抑えた、視覚的に快適な出力画像を得ることができる。
（３）負値の補正処理を行うことにより、淡小ドット生成処理に用いる差分データに負の値がなくなるように補正を行っている。こうすることによって、淡小ドット生成処理においてセル内の画素の重心ＧＣ位置にドットを生成する際に、負の階調値をもつ画素の影響により、重心位置がセルＣＬの外部となる可能性が低減する。したがって、セルＣＬの内部の適切な重心ＧＣ位置に淡小ドットが生成される可能性が高まり、淡小ドット間距離の再現性・ドットの分散性のよい視覚的に快適な出力画像を得ることができる。
（４）画像処理部３０を備えた画像出力装置としたことにより、ホストコンピュータ１０など外部からのＲＧＢデータ入力に対して、適切にドットを生成して優れた画質をもつ出力画像を容易に得ることができる。
【０１１４】
以上、本発明の一実施形態を説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施することもできる。以下、変形例を挙げて説明する。
【０１１５】
（変形例１）次に本発明の第１の変形例について説明する。前記実施形態では、セルＣＬを構成する画素を選択するための基準点を重心位置として、毎回画素選択時に更新するようにしていたが、第１変形例では、画素選択の基準点を、画素の階調値には関係なく、画素の座標位置を利用した中心位置とする。これにより、毎回重心位置を計算することがなく、他の処理を含めた全体の処理速度を上げることができる。
【０１１６】
第１の変形例を図１６を用いて説明する。ここでは、淡小ドット生成処理を行うにあたって、セルＣＬに新しい未探索画素を組み入れる際に、階調値を利用した重心位置ではなく、その座標位置を利用した中心位置（第１の基準点）から近い画素を選択するようにする。
【０１１７】
ここで、画素の位置座標を（ｘ，ｙ）と表すとすると、中心位置の座標は以下の式により求められる（以下の式でＮはセル内の画素数、ｉはセル内の画素を示す数字である）。
ｘ＝Σiｘi／Ｎ  …（１０）
ｙ＝Σiｙi／Ｎ  …（１１）
【０１１８】
以下、差分階調データＤｄとして図１６（ａ）に示す階調値をもつ場合について説明する。図１６（ａ）は、説明を簡単にするために縦３画素、横４画素分の画像データが入力されたときの差分階調データＤｄの例を示しているが、実際には、より大きなサイズの１フレーム分の画像データが入力されることとなる。なお、このとき、ドットを生成する閾値としては“２５５”としている。
【０１１９】
図１６（ａ）の差分階調データＤｄについて淡小ドット生成処理を行うものとする。処理では、まず、ＣＰＵ２２が初期画素の探索・選択を行うが、前記実施形態と同様に所定の走査方法として、未処理画素のうち最も上の最も左側にある画素を探索して選択する。これは、最終的に生成されるセルＣＬが１画像中斜め方向に傾いて配置される確率が高くなり、ドットが斜め方向に打たれ知覚されにくくするためでもある。図１６（ａ）の例では、（ｎ，ｍ）の位置の画素を初期画素として選択する。
【０１２０】
そして、初期画素をセルＣＬに組み入れ、その中心位置を式（１０）および（１１）を用いて演算すると図１６（ｂ）に示す位置に中心位置ＳＣが位置することになる。次に、その中心位置ＳＣから最も近い位置に位置する未処理画素を選択することになるが、かかる画素が複数ある場合には、前記実施形態等と同様に所定の走査方法により選択する。図１６（ｂ）に示す例では、中心位置ＳＣに最も近い位置は（ｎ＋１，ｍ）と（ｎ，ｍ＋１）の２つ存在するが、ここでは（ｎ＋１，ｍ）を選択することになる。
【０１２１】
次に、図１６（ｃ）に示すように選択した未処理画素ＭＧをセルＣＬに組み入れ、セルＣＬの拡大処理を行う際、未処理画素を選択するための基準点（第１の基準点）すなわち中心位置を演算すると、図１６（ｃ）に示したように、ＳＣの位置となる。セルＣＬの階調値合計は、この時点で“１００”であるのでさらに未処理画素を選択することになる。本変形例では閾値を“２５５”とすると、この値になるまで未処理画素を選択することにする。
【０１２２】
この基準となる中心位置ＳＣから最も近い画素を選択することになるが、図１６（ｃ）に示す例では、画素（ｎ，ｍ＋１）および画素（ｎ＋１，ｍ＋１）の２つの画素が存在することになる。この場合、走査方法に従って選択し、（ｎ，ｍ＋１）の画素を未処理画素として選択することになる。
【０１２３】
そして、図１６（ｄ）に示すように選択した未処理画素をセルＣＬに組み入れ、その中心位置を式（１０）および式（１１）を用いて演算すると、位置ＳＣに位置することになる。この時点でのセルＣＬの階調値合計は“１６５”となり、閾値に達しないのでさらに未処理画素を選択することになる。中心位置ＳＣから最も近い距離にある画素は、（ｎ＋１，ｍ＋１）に位置する画素であるので、この画素を未処理画素として選択する。
【０１２４】
次いで、選択した未処理画素ＭＧをセルＣＬに組み入れ、その中心位置ＳＣを式（１０）および式（１１）を用いて演算すると、図１６（ｅ）に示す位置にすることになる。この時点でのセルＣＬの階調値の合計は“２１５”で、閾値に達しない。よって、未処理画素を選択する。中心位置ＳＣから最も近い位置にある未処理画素は、画素（ｎ，ｍ＋２）、画素（ｎ＋１，ｍ＋２）、画素（ｎ＋２，ｍ）、画素（ｎ＋２，ｍ＋１）の４つの画素があるが、所定の走査方法に従って（ｎ＋２，ｍ）に位置する画素を選択することになる。
【０１２５】
そして、選択した未処理画素をセルＣＬに組み入れることになるが、未処理画素を組み入れたとき生成されるセルＣＬの階調値の合計は“２６５”となり、閾値を超えてしまう。この場合も前記実施形態と同様に、閾値に達する分の階調値分をセルＣＬに組み入れ、この未処理画素に残りのレベル値分（誤差データ）を戻して以後当該画素が未処理画素として選択されるようにする。前記実施形態と同様に、入力画像の階調データに忠実なドットを生成させるためである。ここでは、（ｎ＋２，ｍ）に位置する画素に対して“１０”を戻り値として与えることになる（図１６（ｆ）参照）。
【０１２６】
次いで、ここまで構成したセルＣＬは、セルＣＬの階調値合計が閾値に達したので、セルＣＬの重心ＧＣ位置にドットを生成させるための処理を行う。重心ＧＣ位置の演算は、前記実施形態の式（４）および式（５）と同様に演算することにより行われる。
【０１２７】
前記実施形態と同様に、毎回重心ＧＣ位置を計算すると、式（４）や式（５）の処理演算が多くなるが、画素選択のための基準点を中心位置として演算し、最後に淡小ドットを生成するときに重心ＧＣを演算することで、演算量を減らすことができるとともに、セルＣＬが円状に成長してドット間距離を保ち視覚的に快適なドット出力を得ることができる。
【０１２８】
（変形例２）また、第２の変形例として、淡小ドットを生成するときに、セルＣＬの重心位置を演算せずに、第１変形例において、未処理画素の選択に用いたセルＣＬの中心位置（第１の基準点）にある画素の位置（第２の基準点）にドットを生成させるようにしてもよい。こうすれば、淡小ドットを生成するときに、重心ＧＣの計算を行う必要がないので、演算量を減らすことができる。この場合、中心位置が複数の画素の間に位置することも考えられるが、かかる場合には、例えば走査方法と同じ優先順序に従ってセルＣＬ内のいずれか１つの画素を選択するようにしてもよい。あるいは、ランダムに選択したり、所定のテーブルを用いて複数の画素からいずれか１つの画素を選択したりするようにしてもよい。
【０１２９】
（変形例３）さらに、第３の変形例として、画素選択のための基準点（第１の基準点）を毎回更新するのではなく、１回おきに更新したり、２回おきに更新したり、予め回数を決めてその回数のときに更新するようにしてもよい。１回おきに更新する例を、図１７を用いて説明する。
【０１３０】
図１６のときと同様に差分階調データＤｄが図１７（ａ）のように与えられた場合で説明することにする。図１６（ｂ）と同様に、初期画素を選択してその中心位置ＳＣを演算すると図１７（ｂ）に示す位置となる。そして、未処理画素ＭＧを基準点（中心位置ＳＣ）から最も近い画素を選択すると（ｎ＋１，ｍ）に位置する画素となる。
【０１３１】
次いで、選択した未処理画素をセルＣＬに組み入れるが、次に選択する未処理画素は、セルＣＬから演算した中心位置ＳＣに基づいて選択するのではなく、組み入れる前の中心位置ＳＣに基づいて選択する。この時点で基準点を更新しないようにする。図１７（ｃ）に示すように中心位置ＳＣから最も近い画素は（ｎ，ｍ＋１）となりこの画素を未処理画素ＭＧとして選択する。
【０１３２】
次いで、選択した未処理画素ＭＧを組み入れたセルＣＬは図１７（ｄ）のようになる。そして、１回おきに基準点を更新するようにするので、この時点で構成したセルＣＬの中心位置ＳＣを演算すると図１７（ｄ）に示す位置に中心位置ＳＣが移動することになる。
【０１３３】
次いで、この更新した中心位置を基準にして、この位置から最も近い未処理画素ＭＧを選択してその画素をセルＣＬに組み入れると図１７（ｅ）に示すようになる。そして、基準点を更新せず、１つ前に演算した中心位置ＳＣから最も近い画素を未処理画素ＭＧとして選択（（ｎ＋２，ｍ）の位置の画素を選択）して、セルＣＬを構成する。
【０１３４】
図１６の例と同様に、この選択した画素を組み入れたセルＣＬ内の画素の階調値合計は閾値を超えるので、超える分を戻り値として、選択した画素に戻す。そして、淡小ドット生成のための重心ＧＣ位置を演算すると図１７（ｆ）に示した位置ＧＣになり、この位置にドットを生成させるようにする。そして、基準点を更新させると、図１７（ｆ）に示した位置に基準点ＳＣが移動することになる。
【０１３５】
このように毎回、画素選択の基準点（第１の基準点）を更新するのではなく、１回おきに更新することでさらに演算量を減らすことができ、他の処理を含めた画像処理装置全体の処理速度の向上を図ることができる。さらに、初期画素の選択から４回目の未処理画素選択のときに基準点を更新し、さらにそれから３回目、２回目と減算し、当該回数となるときに更新することとしてもよい。
【０１３６】
（変形例４）前記実施形態では、ドット生成処理において、組織的ディザ法を用いたドットの判定を行うことによって量子化データＤｏを生成した。第４の変形例としては、組織的ディザ法に替えて、このドット生成処理として、誤差拡散法または平均誤差最小法を用いても良い。組織的ディザ法を用いた場合と同様に入力階調データにバラツキを与える効果を得ることができる。
【０１３７】
（変形例５）前記実施形態では、負値の補正処理を行った際に、処理の途中で、差分階調データＤｄに正の階調値がなくなり負の階調値のみが残った場合には、これ以降の負値の補正処理を行わないこととした。しかし、第５の変形例として、このような場合は、差分階調データＤｄの正の階調値が残るように、ディザマトリクスの閾値を変化させても良い。このようにすれば、例えば、濃大ドットのディザマトリクスの各閾値を若干大きくすることにより、濃大ドットの生成する数を抑えることができる。濃大ドットが生成されなくなった分の階調値はより濃度の低い濃小ドット・淡大ドットの生成に割り当てられる。こうすることによって、差分階調データＤｄにより多くの正の階調値が残ることとなり、淡小ドットを生成することによって、ドットの生成による誤差である差分階調データＤｄを確実かつ適正に補正することができる。したがって、元の入力階調データＤｉを忠実に再現した出力画像を得ることができる。
【０１３８】
（変形例６）前記実施形態では、淡小ドット生成処理を行う際に、重心ＧＣより最も近い画素が複数あった場合、探索順にしたがって選択するようにした。しかし、画素の選択方法はこれだけではなく、複数の画素のうちいずれかをランダムに選択するようにしても良いし、未処理画素を選択した場合の新たな重心ＧＣ位置がより初期画素の位置に近くなるように画素を選択するとしても良い。このようにすれば、セルＣＬの形状が円形に近づくことになるので、生成される淡小ドットに偏りがなく、特異パターンのない出力画像を得ることができる。
【０１３９】
（変形例７）前記実施形態では、濃大・濃小・淡大ドットについて組織的ディザ法によるドット生成を行い、その誤差分（差分階調データＤｄ）を、補正するようにＣＣ法によって淡小ドットの量子化データＤｏを作成したが、処理の対象とするドットはこのパターンに限られるものではない。例えば、濃大・濃小・淡大・淡小ドットについて組織的ディザ法によるドット生成を行い、その誤差分（差分階調データＤｄ）を補正するようにＣＣ法により更に淡小ドットを生成するようにしても良い。また、始めに、濃大・濃小ドットについて、組織的ディザ法による判定を行い、その誤差をＣＣ法により淡大ドットを生成するようにしておおまかに補正し、更に残った誤差を淡小ドットにより処理するとしてもよい。
【０１４０】
（変形例８）前記実施形態では、ハーフトーン処理によって、“０”と“２５５”の２種類の階調値に階調変換した。これは、以降のドットを形成する処理において、階調値“２５５”に対応した大きさのドットを打つことを想定したためである。第８の変形例としては、複数種類の大きさのドットを打つこととし、その複数種類の大きさのドットに対応した複数の種類の階調値に階調変換するものとしても良い。また、同様にインクの濃度についても複数種類の濃度のドットを打つこととし、複数種類の階調値に階調変換するものとしても良い。
【０１４１】
（変形例９）前記実施形態では、画像処理部３０および印刷エンジン４０を有する画像出力装置２０とした。第９の変形例として、色補正・色変換処理、階調値分割処理、ドット生成処理、負値補正処理、淡小ドット生成処理を行う画像処理部を備えた印刷装置としても良い。このようにすれば、ホストコンピュータ１０からの入力を印刷装置が直接処理することにより容易に出力画像を得ることができる。
【０１４２】
（変形例１０）また、第１０の変形例として、前記実施形態における画像処理装置は、インクジェットプリンタにて構成するようにしたが、本発明はこれに限定されるものでなく、ドットの大小または濃淡を打ち分けることができる機器に適用することができる。したがって、例えば、レーザープリンタやサーマルプリンタなど種々のプリンタや電子写真などにて構成するようにしてもよい。あるいは、このようなプリンタなどの機能が組み込まれたコピー機やコンピュータ、ワープロ、ファックスなど種々の機器において本発明の画像処理装置を構成するようにしてもよい。
【図面の簡単な説明】
【０１４３】
【図１】本発明に係る一実施形態のシステム全体を示す構成図。
【図２】印刷ヘッドのノズル面を示した模式図。
【図３】印刷ヘッドの内部の概略構成を示した模式図。（ａ）印刷ヘッドの内部を示す図。（ｂ）ドットを打つときの印刷ヘッドの内部を示す図。
【図４】画像出力装置の構成について示した模式図。
【図５】画像出力装置による階調変換を説明する図。
【図６】画像出力装置の行う全体の処理の流れを示したフローチャート。
【図７】入力階調値とレベル値および記録率の関係を示した図。
【図８】ドット生成処理における処理の流れを示したフローチャート。
【図９】濃大ドットのオンオフを判定する処理を示した図。
【図１０】差分階調データを取得する処理を示した図。
【図１１】負値の補正処理を説明する図。（ａ）〜（ｆ）負値の補正処理の処理の経過を示す図。
【図１２】負値の補正処理における処理の流れを示したフローチャート。
【図１３】淡小ドット生成処理を行った処理例を示した図。（ａ）〜（ｆ）淡小ドット生成処理の処理の経過を示す図。
【図１４】淡小ドット生成処理における処理の流れを示したフローチャート。
【図１５】最終的に得られる印刷物を説明する図。
【図１６】第１の変形例を説明する図。（ａ）〜（ｆ）第１の変形例における処理の経過を示す図。
【図１７】第３の変形例を説明する図。（ａ）〜（ｆ）第３の変形例における処理の経過を示す図。
【符号の説明】
【０１４４】
１０…ホストコンピュータ、１１…アプリケーション部、１２…ラスタライズ部、２０…画像出力装置、２１…入力Ｉ／Ｆ、２２…ＣＰＵ、２３…ハードディスク、２４…ＲＯＭ、２５…ＲＡＭ、３０…画像処理装置としての画像処理部、３１…色補正・色変換部、３２…色補正表、３３…階調値分割部、３４…第１の階調変換手段としてのドット生成部、３５…階調値移動手段としての負値補正部、３６…第２の階調変換手段としての淡小ドット生成部、４０…印刷エンジン、４１…ヘッド駆動部、４２…印刷ヘッド、Ｎｚ…ノズル、ＰＥ…ピエゾ素子、Ｔｉ…インク室、Ｄｉ…入力データとしての入力階調データ、Ｄｄ…誤差データとしての差分階調データ、Ｄｏ…量子化データ、ＲＶ…結果値、ＣＬ…画素群としてのセル、ＧＣ…重心、ＳＣ…中心位置、ｓ…階調値補正量、ｔ…階調値移動量、ｘGC…重心のｘ座標、ｙGC…重心のｙ座標。
【図１】
2006025217.tif 000003
【図２】
2006025217.tif 000004
【図３】
2006025217.tif 000005
【図４】
2006025217.tif 000006
【図５】
2006025217.tif 000007
【図６】
2006025217.tif 000008
【図７】
2006025217.tif 000009
【図８】
2006025217.tif 000010
【図９】
2006025217.tif 000011
【図１０】
2006025217.tif 000012
【図１１】
2006025217.tif 000013
【図１２】
2006025217.tif 000014
【図１３】
2006025217.tif 000015
【図１４】
2006025217.tif 000016
【図１５】
2006025217.tif 000017
【図１６】
2006025217.tif 000018
【図１７】
2006025217.tif 000019