(57)【要約】      （修正有）【課題】マルチレベル画素画像が、メモリに記憶されたビットマスクアレイのセットを用いてハーフトーン画像に変換する。【解決手段】マルチレベル画素２００の値は、記憶されたビットマスクアレイ３５０−０から３５０−２５５の一つを選択する。画像内のマルチレベル画素の座標は、選択されたビットマスクアレイの中から入力を特定し、次に、ハーフトーン画像３１０における対応する画素値を設定するため用いられる。輪郭削りの出現を減少させるため、近似する階調を有する画像の隣接する部分の境界において、記憶されたビットマスクアレイは、連続するグレレベルについてのビットマスクアレイ内の入力のほとんどが同ようなものである。また、輪郭削りの問題を減少させるため、連続するグレーレベル用のビットマスクの重要な部分の近似性により、ビットマスクアレイが圧縮に適したものとなる。【選択図】図１Ａ
2004350289.tif 000002
【特許請求の範囲】
【請求項１】
マルチ
レベル画像データの要素(items)、を受け取る受信部であって、前記マルチレベル画像データの要素は、画像における位置と、影の範囲(range of shades)のそれぞれ、を関連づけるもの、
２値のビットマスクアレイのセットを表すデータを記憶するビットマスク記憶部であって、前記アレイのそれぞれは、前記影の範囲のそれぞれの影と関連づけられ、前記アレイの入力は、前記関連づけられた影を表現するためのドットおよびギャップのパターンを定義するもの、および
変換されるマルチレベル画像データの要素用の前記影に関連づけられた前記ビットマスクアレイを選択し、前記選択されたビットマスク中の一以上の入力を、マルチレベルデータの前記要素により特定された前記位置を用いて特定し、前記ビットマスクアレイ中の前記一以上の特定された入力を、前記位置のためのハーフトーンデータとして出力することにより、マルチレベル画像データの要素を、ハーフトーン画像データに変換するよう動作可能な変換ユニット、を備えた、マルチレベル画像データをハーフトーン画像データに変換する画像処理装置において、
前記範囲の中間域において、少なくとも連続する影のいくつかのペアと関連づけられた前記２値のビットマスクアレイは、その全てではないが、前記ペアのビットマスクアレイにより定義される明るい影用のドットのパターンのほとんどが、前記ペアの暗い影用のビットマスクにより定義されるドットパターンのサブセットとして含まれるものであること、
を特徴とするもの。
【請求項２】
請求項１にかかる画像処理装置において、連続する影に関連づけられた前記２値ビットマスクアレイは、明るい影用のビットマスクアレイにより定義される前記ドットパターンのほとんど、あるいは、全部が、次の連続する、暗い影用のビットマスクにより定義される前記ドットパターンのサブセットとして含まれるもの、であること、
を特徴とするもの。
【請求項３】
請求項１または請求項２にかかる画像処理装置において、前記影の範囲中の明るい影の範囲において連続する影に関連づけられた前記２値ビットマスクアレイは、前記影の範囲の明るい影用のビットマスクアレイにより定義される前記ドットパターンの全部が、次の連続する暗い影用の前記ビットマスクにより定義される前記ドットパターンのサブセットとして含まれるもの、であること、
を特徴とするもの。
【請求項４】
請求項１、請求項２または請求項３にかかる画像処理装置において、前記影の範囲中の暗い影の前記範囲において連続する影に関連づけられた前記２値ビットマスクアレイは、暗い影用のビットマスクアレイにより定義されるドットのパターンが、前記パターンにおける一連のギャップを特定し、当該ギャップのセットは、次の連続する明るい影用の前記ビットマスクにより定義される前記ドットパターンにより特定される前記一連のギャップのサブセット、であること、
を特徴とするもの。
【請求項５】
請求項１から請求項４のいずれかにかかる画像処理装置において、連続する影に関連づけられた２値ビットマスクのペア間で異なる、対応入力の数は、そのために前記ビットマスク記憶部にデータが記憶される、全ての前記アレイ用のしきい値より少ないこと、
を特徴とするもの。
【請求項６】
請求項５にかかる画像処理装置において、前記しきい値は、前記影の範囲における影の数により除される各ビットマスクアレイにおける入力の２倍に対応する値を含むこと、
を特徴とするもの。
【請求項７】
請求項６にかかる画像処理装置において、前記影の範囲の明るい影の範囲において連続する影に関連づけられている２値ビットマスクアレイのペア間で異なる、対応入力の数は、前記影の数により除される各ビットマスクアレイの入力の数、と等しいこと、
を特徴とするもの。
【請求項８】
請求項６にかかる画像処理装置において、前記影の範囲の暗い影の範囲において連続する影に関連づけられた２値ビットマスクのペア間で異なる、対応入力の数は、前記影の数により除される各ビットマスクアレイの入力の数、と等しいこと、
を特徴とするもの。
【請求項９】
前記請求項のいずれかにかかる画像処理装置において、前記２値ビットマスクアレイは、それぞれがｎＸｍ個の入力アレイを有し、前記変換ユニットは、前記選択されたビットマスクにおけるｎを法とするｘ(x moduko n)、 ｍを法とするｙ(y modulo m)位置における入力を、座標ｘ、ｙ、に関連づけられた位置のため選択されたビットマスクにおける入力、として選択するよう動作可能であること、
を特徴とするもの。
【請求項１０】
請求項１から請求項８のいずれかにかかる画像処理装置において、前記ビットマスク記憶部は、２値ビットマスクアレイのセットを表すデータを記憶し、マルチレベル画像の同じラインにおける異なる影用のマルチレベルデータの要素を処理するビットマスクデータは、前属するメモリ位置に記憶されること、
を特徴とするもの。
【請求項１１】
請求項１０にかかる画像処理装置において、前記ビットマスク記憶部は、各データセットが前記影の範囲の影の数に対応する複数の２値数を含む、複数のデータのセットを備えたデータを記憶し、前記データセットのそれぞれは、マルチレベル画像のラインを処理するためのデータを含み、前記変換ユニットは、処理されるマルチレベル画像データの要素により表される前記影に基づき処理されるマルチレベル画像データのライン用の数の集合から２値数を選択するよう動作可能であること、
を特徴とするもの。
【請求項１２】
請求項１０または請求項１１にかかる画像処理装置において、前記変換ユニットは、処理されるマルチレベル画像データのラインにおける要素数をカウントするカウンターを備え、前記変換手段は、前記カウンターの現在の値を用いて選択された前記マルチレベル画素用の前記マルチレベル値に基づき選択された２値数の入力を、マルチレベルデータの要素についてのハーフトーンデータとして、出力するよう動作可能であること、
を特徴とするもの。
【請求項１３】
前記請求項のいずれかにかかる画像処理装置において、さらに、  
ランレングスデータの複数の要素を受け取り、
ランレングスデータの前記要素用の他の形式の入力に続き、そこに、ランレングスデータの各要素用に第１の形式の複数の入力データが含まれている２値アレイのデータを生成し、および
前記アレイの連続する２値数のグループため、ビットマスクを表すデータを生成するよう、数の各ペアについて排他的論理和演算動作を行うことにより、２値ビットマスクのセットを表すデータを生成する解凍ユニット、を備えること、
を特徴とするもの。
【請求項１４】
ビットマップアレイの生成方法であって、
各入力が第１の形式又は第２の形式からなる複数の入力を含む第１ビットマスクアレイを受け取り、
前記第１形式の入力の数を、前記第２形式の入力の数になるよう変更し、
前記変更されたアレイにおいて前記入力が前記形式のいずれか一つであるか判断し、前記一のタイプの前記入力が、他の形式の入力と位置が交換された場合、異なる形式の入力の拡散の範囲を改良し、および
入力の拡散を改良させるため、判断された入力ペアを交換し、選択された前記ペアは、前記アレイにおける入力の合計数が、現在の値を超えないもの、を含むこと、
を特徴とするもの。
【請求項１５】
請求項１４にかかる方法において、入力ペアの前記交換は、前記第１アレイ内の入力数と異なる前記アレイ内の入力数が前記既設定値を越えないようにした、前記アレイ内の異なる形式での入力の拡散における最も大きい改良に関連づけられた入力のペアの交換、を含むこと、
を特徴とするもの。
【請求項１６】
請求項１４にかかる方法において、ペアの入力の前記交換は、双方が前記第１ビットマスクアレイ内の入力に対応するペアの入力の交換が、前記アレイにおいて入力拡散について最も大きい改良を生じさせるかを判断し、
前記入力交換が、前記拡散を少なくとも所定量だけ改良させる場合、前記入力を交換するとともに、前記入力交換により、前記第１アレイにおける入力数と異なる前記アレイ内の入力数が前記既設定数を超えない場合、前記入力を交換し、そうでない場合には、前記アレイ内の入力の広がり範囲における前記最も大きい改良と関連づけられる前記ペアの入力であって、その入力が、いずれも、前記第１ビットマスクにおける入力と対応しないもの、を交換すること、を含むものであること、
を特徴とするもの。
【請求項１７】
請求項１４から請求項１６にかかる方法において、前記入力の拡散が改良することについての前記判断は、前記第２形式の選択された入力が前記第１形式からなる場合、前記第１形式からなる前記アレイにおける前記第１ならびに第２形式の入力配置に基づき、前記アレイにおける各位置の重みづけ値を決定し、
前記選択された入力について決定された重みづけ値と、前記第１形式の入力に対応する他の位置の値を比較し、
前記二の位置に関連する前記重みづけ値に基づき、前記第１形式の入力の位置を、前記第２形式の前記選択された入力のための他の位置として選択すること、を含むものであること、
を特徴とするもの。
【請求項１８】
請求項１４から請求項１７のいずれかにかかる方法において、前記入力数の変更は、前記アレイ内の前記第１ならびに第２形式の入力の配置に基づき、前記アレイの各位置のために重みづけ値を決定し、および
前記重みづけ値に基づき、前記第２形式の入力となるよう、前記第１形式の入力を選択すること、を含むものであること、
を特徴とするもの。
【請求項１９】
請求項１４から請求項１８のいずれかにかかる方法において、前記重みづけ値の決定は、  重みづけ値のアレイであって、当該アレイにおける各値は、前記ビットマスクアレイにおける対応位置と関連づけられているもの、を記憶し、
前記ビットマスクアレイの前記入力の変更に応じて重みづけ値を変更し、および
前記変更した重みづけ値を用い、前記ビットマスクアレイにおける入力を変更する変更値(modifications)を選択すること、を含むものであること、
を特徴とするもの。
【請求項２０】
請求項１９にかかる方法において、前記重みづけ値のアレイに記憶された前記重みづけ値は、それぞれが、前記値のための前記アレイにおける位置に対し、前記ビットマスクアレイの異なる形式の入力位置により決定された値、を含むこと、
を特徴とするもの。
【請求項２１】
請求項１４から請求項２０いずれかにかかる方法おいて、前記重みづけ関数は、前記ビットマスクにおける入力と、他の部分における前記形式の一つの入力との間の距離に基づき、前記アレイにおける異なる部分のため、決定されること、
を特徴とするもの。
【請求項２２】
請求項１４から請求項２１のいずれかにかかる方法において、前記選択された入力の前記変更は、変更される入力用の前記重みづけ関数が、しきい値を超えるだけ、前記アレイにおける他の入力用の重みづけ関数と異なるか否か、に基づいて行われること、
を特徴とするもの。
【請求項２３】
請求項１４から請求項２２のいずれかにかかる方法において、前記重みづけ関数は、前記ビットマスクアレイにわたる前記形式の一つの入力の拡散を表す、関数であること、
を特徴とするもの。
【請求項２４】
請求項１４から請求項２３のいずれかにかかる方法において、さらに、
それぞれの数が、前記ビットマスクアレイにおける入力と関連づけられる乱数のアレイを記憶し、および、
前記乱数に基づき、前記アレイの選択における入力を選択すること、を含むものであること、
を特徴とするもの。
【請求項２５】
請求項２４にかかる方法において、入力の前記選択は、前記入力に関連づけられた前記記憶された乱数値に基づき、近似する重みづけ関数値に関連づけられた入力間の選択を含むこと、
を特徴とするもの。
【請求項２６】
請求項２４にかかる方法において、前記ビットマスクアレイにおける入力用の前記重みづけ関数は、前記アレイに含まれる前記第１形式の入力の占有率(coverage)のレベルに基づき、スケーリング関数(scaling factor)が乗じられる前記入力に関連づけられた前記記憶された乱数値を用いて決定されること、
を特徴とするもの。
【請求項２７】
請求項１４から請求項２６のいずれかにかかる方法において、さらに、
交換される前記第１形式の入力が、前記第１ビットマスクアレイの前記第１形式の入力と対応するか否か、を監視し、および
前記第１ビットマスクにおける入力と対応しない少なくとも１の入力が交換された後、前記第１ビットマスクにおける前記第１形式の入力に対応する前記第１形式の入力の交換を阻止すること、を含むものであること、
を特徴とするもの。
【請求項２８】
請求項２７にかかる方法装置において、前記阻止は、前記第１ビットマスクにおける入力に対応しない少なくとも１の入力が交換された後、前記第１ビットマスクにおける前記第１の形式の入力に対応しない、前記変更されたアレイにおける前記形式のいずれかの入力を決定し、前記１の形式の前記入力の位置が、前記第１ビットマスクにおける前記第１形式の入力に対応しない他の形式の入力と交換される場合、異なる形式の入力の拡散範囲が改良されること、および、
入力の拡散を改良させるため決定された、選択済みの入力ペアを交換すること、を含むものであること、
を特徴とするもの。
【請求項２９】
請求項１４から請求項２８のいずれかにかかる方法において、入力の前記交換は、前記アレイの変更を生じさせるため決定された異なる形式の拡散における改良の相違が、所定のしきい値と同じぐらいになるまで繰り返されること、
を特徴とするもの。
【請求項３０】
ビットマスクアレイのセットを生成する方法であって、
第１のビットマスクアレイを記憶するステップ、
請求項１４から請求項２８にかかる方法のいずれかに基づき、前記第１ビットマスクアレイを用いて、別のビットマスクアレイを生成するステップ、
前記別のビットマスクアレイを記憶するステップ、および
前記別のビットマスクアレイを用い、前記生成ならびに記憶ステップを繰り返すステップ、を備えたこと、
を特徴とするもの。
【請求項３１】
請求項３０にかかる方法において、さらに、生成された各ビットマスクアレイを出力するステップ、を備えたこと、
を特徴とするもの。
【請求項３２】
請求項２８から請求項３１のいずれかにかかる方法において、さらに、
記憶されたビットマスクアレイと前記生成ならびに記憶ステップの繰り返しにより生成されるアレイとの間で異なる入力値の最大数のための、前記既設定値を決定するステップ、  記憶されたビットマスクアレイと生成されたビットマスクアレイ間で異なる、入力の数を決定するステップ、および
次の前記生成ならびに記憶ステップの繰り返し用に、前記決定された数を用いて前記既設定値を演算するステップ、を備えたこと
を特徴とするもの。
【請求項３３】
請求項３２にかかる装置において、前記決定された数を使用する前記ステップは、連続して記憶されるビットマスクアレイ間で異なる入力の平均数が、既設定のしきい値より小さくなるよう、前記既設定値を演算するステップ、を含むこと、
を特徴とするもの。
【請求項３４】
ビットマスクデータを生成する方法であって、
２値のアレイを記憶するステップ、
重みづけ数のアレイであって、そのそれぞれが、前記記憶された２値アレイにおける入力に対応するもの、を記憶するステップ、
前記入力に対応する前記重みづけ数に基づき、前記２値において入力を選択するステップ、
前記選択された入力を変更するとともに、前記選択された入力の前記アレイにおける相対位置、ならびに、重みづけ数の前記アレイにおける入力の位置に基づき、前記アレイにおける重みづけ数の値を変更するステップ、および
前記変更したアレイを、ビットマスクデータとして出力するステップ、を備えたこと
を特徴とするもの。
【請求項３５】
請求項３４にかかる方法において、さらに、
乱数のアレイを記憶するステップ、および
変更を行うのに、前記２値アレイにおいて入力を選択するため、前記乱数アレイ、ならびに、重みづけ数の前記アレイを用いるステップ、を備えたこと、
を特徴とするもの。
【請求項３６】
ビットマスクアレイのセットの一部を表すデータを生成する方法であって、
ランレングスにエンコードされたデータの複数の要素を受け取り、
受け取った、ランレングスエンコードされたデータを、２値数のアレイを生成することにより処理し、ここで、ランレングスにエンコードされたデータの各要素のため、第１の形式の多数の入力が、他の形式の入力に続き、連続した位置で前記２値アレイ内に含まれており、
前記グループ内の近接するラインにより表された２値数の間で、排他的論理和動作を実行することにより、前記生成されたアレイのラインのグループを処理し、および
前記排他的論理和動作を実行することにより決定された２値数を含む２値アレイを、ビットマスクアレイのセットの一部を表すデータとして、出力すること、
を特徴とするもの。
【請求項３７】
マルチレベル画像データをハーフトーン画像データに変換する画像処理方法であって、
アレイのそれぞれが影の範囲の各影と関連づけられ、当該アレイにおける入力が、前記影を表すためのドットならびにギャップのパターンを定義する、２値のビットマスクアレイのセットを表すデータを記憶し、
マルチレベル画像データの要素であって、画像内の位置と前記影の範囲の各影を関連づける、前記マルチレベル画像データの要素を受け取り、ならびに
変換される前記マルチレベル画像データの要素に関する影と関連づけられた前記ビットマスクアレーを選択し、
マルチレベルデータの前記要素により特定された前記位置を用いて、前記選択されたビットマスクにおける入力を特定し、および、
前記ビットマスクアレイにおける前記識別済み入力を、前記部分のためのハーフトーンデータとして出力することにより、マルチレベル画像データの各要素を、ハーフトーン画像データに変換するステップ、
を備え、
影の前記範囲の中間域において、少なくともいくつかの連続する影のペアと関連づけられた前記２値のビットマスクアレイは、全てではないが、前記ペアの明るい影用のビットマスクにより定義されるドットのパターンのほとんどが、前記ペアの暗い影用のビットマスクにより定義されるドットパターンのサブセットとして含まれること、
を特徴とするもの。
【請求項３８】
請求項３７にかかる画像処理方法において、連続する影に関連づけられた前記２値ビットマスクアレイは、明るい影のためのビットマスクアレイにより定義される前記ドットパターンのほとんどまたは全てが、次の連続する暗い影のためのビットマスクにより定義される前記ドットパターンのサブセットとして含まれるものであること、
を特徴とするもの。
【請求項３９】
請求項３７または請求項３８にかかる画像処理方法において、影の前記範囲の明るい影の範囲において連続する影と関連付けられた前記２値ビットマスクアレイは、明るい影の前記範囲における明るい影用のビットマスクアレイにより定義される全てのドットパターンが、次の連続する暗い影用の前記ビットマスクにより定義される前記ドットパターンのサブセットとして含まれるものであること、
を特徴とするもの。
【請求項４０】
請求項３７、請求項３８または請求項３９にかかる画像処理方法において、影の前記範囲の暗い影の範囲において連続する影と関連づけられた前記２値ビットマスクアレイは、暗い影の前記範囲における暗い影用のビットマスクアレイにより定義された前記ドットパターンが、前記パターンにおける一連のギャップを特定するものであり、前記ギャップのセットは、次の連続する明るい影用のビットマスクにより定義される前記ドットパターンにより特定される前記一連のギャップのサブセットであること、
を特徴とするもの。
【請求項４１】
請求項３７から請求項４０のいずれかにかかる画像処理方法において、連続する影に関連づけられた２値ビットマスクアレイのペア間で異なる対応する入力の数は、それに対しデータが記憶される全ての前記アレイ用のしきい値に満たないこと、
を特徴とするもの。
【請求項４２】
請求項４１にかかる画像処理方法において、前記しきい値は、影の前記範囲における影の数により除される各ビットマスクアレイにおける入力の２倍の数に対応する値を含むこと、
を特徴とするもの。
【請求項４３】
請求項４２にかかる画像処理方法において、影の前記範囲の明るい影の範囲において連続する影と関連づけられた２値のビットマスクアレイのペア間で異なる対応する入力の数は、前記影の数により除される各ビットマスクアレイにおける入力の数と等しいこと、
を特徴とするもの。
【請求項４４】
請求項４２にかかる画像処理方法において、影の前記範囲の暗い影の範囲において連続する影と関連付けられた２値のビットマスクアレイのペア間で異なる対応する入力の数は、前記影の数により除される各ビットマスクアレイにおける入力の数と等しいこと、
を特徴とするもの。
【請求項４５】
請求項３７から請求項４４のいずれかにかかる画像処理方法において、前記ビットマスクアレイは、それぞれ、ｎＸｍ個のアレイの入力を有し、座標ｘ、ｙに関連づけられた位置用の選択されたビットマスクにおける入力の特定は、前記選択されたビット膜における、ｎを法とするｘ、ｍを法とするｙ位置における入力の特定を含むこと、
を特徴とするもの。
【請求項４６】
請求項３７から請求項４５のいずれかにかかる画像処理方法において、２値ビットマスクアレイのセットを表すデータを記憶することは、連続したメモリ位置におけるマルチレベル画像の同じラインの異なる影のマルチレベルデータの要素を処理するためのビットマスクデータ、を記憶することを含むこと、
を特徴とするもの。
【請求項４７】
請求項４６にかかる画像処理方法において、さらに、処理されるマルチレベルデータ画像データのラインにおけるマルチレベルデータの要素の数をカウントし、ならびに、前記カウンター用の現在の値を用い、選択された２値ビットマスクアレイの入力を、マルチレベルデータ要素用のハーフトーンデータとして出力するステップ、を含むこと、
を特徴とするもの。
【請求項４８】
請求項３７から請求項４７のいずれかにかかる画像処理方法において、さらに、
ランレングスデータの複数の要素を受け取り、
ランレングスデータの前記要素用の他の形式の入力に続き、そこに、ランレングスデータの各要素用に第１の形式の複数の入力データが含まれている２値データのアレイを生成し、および  
前記アレイの連続する２値数のグループため、ビットマスクアレイを表すデータを生成するよう、数の各部分について排他的論理和動作を行うことにより、
２値ビットマスクのセットを表すデータを生成すること、
を特徴とするもの。
【請求項４９】
ビットマスクアレイを生成する装置であって、
各入力が第１の形式あるいは第２の形式である、複数の入力を有する第１ビットマスクアレイを記憶するデータ記憶部、
複数の前記第１形式の入力が第２形式の入力になるよう変更することにより、前記データ記憶部内に記憶された第１ビットマスクアレイを変更するよう動作可能な変更ユニット、  前記変更されたアレイにおける前記形式の一つの入力のそれぞれついて、前記１の形式の入力が、他の形式の入力と交換された位置にあった場合に、改良されて異なる形式の入力が拡散する範囲を決定する決定ユニット、および
入力の拡散を改良させるため決定された入力のペアを交換する更新ユニットであって、当該更新ユニットは、前記第１アレイにおける入力と異なる前記アレイにおける入力の総数が、既設定値を越えないように、交換される入力のペアを選択するよう構成されるもの、を備えたこと、
を特徴とするもの。
【請求項５０】
請求項４９にかかる装置において、前記更新ユニットは、前記第１アレイにおける入力と異なる前記アレイにおける入力の総数が、既設定値を超えず、前記識別された入力ペアの値を交換する、前記アレイにおける異なる形式の入力の最大の拡散に関連づけられた前記入力ペアを特定するよう、動作可能であること、
を特徴とするもの。
【請求項５１】
請求項４９または請求項５０にかかる装置において、入力の拡散を決定するための前記決定ユニットは、
前記第２形式の選択された入力と前記第１形式が等しい、前記アレイにおける前記第１および前記第２形式の入力の配置に基づき、前記アレイにおける各部について重みづけ値を決定し、
前記選択された入力用に決定された重みづけ値を、前記第１形式の入力に対応する位置の値と比較し、および
前記２つの位置と関連づけられた前記重みづけ値に基づき、前記第１形式の入力の位置を、前記第２形式の選択された入力についての別の位置として選択するよう、動作可能であること、
を特徴とするもの。
【請求項５２】
請求項４９から請求項５１のいずれかにかかる装置において、前記変更ユニットは、
前記アレイにおける前記第１および前記第２形式の入力の配置に基づき、前記アレイにおける各位置について重みづけ値を決定し、および
前記重みづけ値に基づき、前記第２形式の入力となるよう前記第１形式の入力を選択するよう、動作可能であること、
を特徴とするもの。
【請求項５３】
請求項４９から請求項５２のいずれかにかかる装置において、さらに、
アレイ内の各値が、前記記憶されたビットマスクアレイにおける対応する位置と関連づけられている、重みづけ値のアレイを記憶するよう動作可能な重みづけ値記憶部、および
前記ビットマスクアレイの前記入力の変更に応じて、記憶された重みづけ値を更新するよう動作可能な更新ユニット、を備え、
前記変更ユニットおよび前記処理ユニットは、前記重みづけ値記憶部内に記憶された前記重みづけ値を用いて、前記ビットマスクアレイにおける入力の変更を選択するよう、動作可能であること、
を特徴とするもの。
【請求項５４】
請求項５３にかかる装置において、前記重みづけ値のアレイに記憶された前記重みづけ値は、それぞれ、前記値についての前記アレイにおける位置に対する、前記ビットマスクアレイにおける異なる形式の入力の位置により決定された値を含むこと、
を特徴とするもの。
【請求項５５】
請求項５３または請求項５４にかかる装置において、さらに、
アレイにおける２つの点の相対位置に基づいて、重みづけ関数を定義するデータを記憶する関数記憶部、を備え、
前記更新ユニットは、前記記憶されたデータ、ならびに、前記ビットマスクアレイにおいて変更された入力と当該アレイにおける他の位置との相対位置を用い、重みづけ値を更新するよう動作可能であること、
を特徴とするもの。
【請求項５６】
請求項５５にかかる装置において、
前記重みづけ関数は、前記ビットマスクアレイにわたる、前記形式の一つの入力の拡散を表す関数であること、
を特徴とするもの。
【請求項５７】
請求項４９から請求項５６のいずれかにかかる装置において、さらに、
乱数のアレイを記憶する乱数テーブルであって、前記乱数のそれぞれは、前記ビットマスクアレイ入力と関連づけられるもの、を備え、
前記処理ユニットおよび前記変更ユニットは、前記アレイ内に記憶された前記乱数に基づき、変更のため前記ビットマスクアレイにおける入力を選択するよう、動作可能であること、
を特徴とするもの。
【請求項５８】
請求項５７にかかる装置において、
前記入力の選択は、前記入力に関連づけられた前記記憶された乱数に基づく、同様の重みづけ関数値と関連づけられた入力間の選択を含むこと、
を特徴とするもの。
【請求項５９】
請求項５７にかかる装置において、前記ビットマスクアレイにおける入力用の前記重みづけ関数は、前記アレイに含まれる前記第１形式の入力の占有率のレベルに基づき、スケーリング関数が乗じられる前記入力に関連づけられた前記記憶された乱数値を用いて決定されること、
を特徴とするもの。
【請求項６０】
ビットマスクデータを生成する装置であって、
２値アレイを記憶するよう動作するビットマスク記憶部、
各重みづけ数が記憶された２値アレイにおける入力に対応する、重みづけ数を記憶するよう動作する重みづけマップ記憶部、
前記入力に対応する前記重みづけ数に基づき、前記２値アレイにおける入力を選択するよう動作する選択ユニット、
前記選択ユニットにより選択された入力を変更するとともに、前記選択された入力の前記アレイにおける前記相対位置、ならびに、重みづけ数の前記アレイにおける入力の位置に基づき、前記アレイにおける重みづけ数の値を変更するよう動作する変更ユニット、および
前記変更されたアレイを、ビットマスクデータとして出力するよう動作する出力ユニット、を備えたこと、
を特徴とするもの。
【請求項６１】
請求項６０にかかる装置において、さらに、
乱数のアレイを記憶するよう構成された乱数テーブル、を備え、
前記選択ユニットは、変更を行うのに、前記２値アレイにおける入力を選択するため、前記乱数のアレイおよび前記重みづけ数のアレイを用いるよう動作すること、
を特徴とするもの。
【請求項６２】
ビットマスクアレイのセットを表すデータを圧縮するデータ圧縮装置であって、
各ビットマスクが、複数の２値数を有する２値アレイである、複数のビットマスクを表すデータを記憶するよう動作するデータ記憶部、
各ラインマスクが複数の２値数を含む、複数のラインマスクのセットを生成するため、ビットマスクを表す、記憶されたデータをソートするよう動作する処理ユニットであって、ラインマスク内の各２値数は、ビットマスクの前記数の異なる１の一部を定義する２値数に対応するもの、
前記ラインマスクのセットのラインマスクにおける２進数のペアについて排他的論理和演算を実行する排他的論理和演算プロセッサ、および
２進数のペアについて実行された前記排他的論理和演算の結果を符号化したランレングスエンコーディングにより、前記ビットマスクを表す圧縮データを生成するランレングスエンコーダー、を備えたこと、
を特徴とするもの。
【請求項６３】
ビットマスクアレイのセットの一部を表すデータを生成する解凍装置であって、
ランレングスに符号化されたデータの複数の要素を受け取る受信部、
２値数のアレイを生成することにより、ランレングスに符号化されたデータを処理する処理ユニットであって、ランレングスにエンコードされたデータの各要素のため、複数の第１形式の入力が、他の形式の入力に続き、連続した位置で前記２値アレイ内に含まれるもの、
前記アレイ内の隣接するラインにより表された２値数の間で、排他的論理和演算を実行することにより、前記生成されたアレイのラインのグループを処理する排他的論理和演算プロセッサ、および
前記排他的論理和演算を実行することにより、決定された一連の２値数を含む２値アレイを、ビットマスクアレイのセットの一部を表すデータとして出力する出力ユニット、を備えたこと、
を特徴とするもの。
【請求項６４】
印刷方法であって、
画像領域の色の影を表すマルチレベル画像データを受け取り、
マルチレベル画像データを、２値のハーフトーン画像データに変換し、および
前記受け取ったマルチレベル画像データを変換することにより生成された２値のハーフトーン画像データに基づきインクのドットが印刷された場合、画像を印刷するステップを備え、
その全てではないが、明るい影用のドット配列のほとんどが、暗い影用のドット配列ののサブセットとして含まれる場合、マルチレベル画像データの前記変換は、印刷される画像の同じ領域において同様の影を表すマルチレベル画像データ、を生じさせるものであること、
を特徴とするもの。
【請求項６５】
印刷装置であって、
画像領域の色の影を表すマルチレベル画像データ、を受け取る手段、
マルチレベル画像データを、２値のハーフトーン画像データに変換する手段、
前記変換手段により生成された２値のハーフトーン画像データに基づきインクのドットが印刷された場合、画像を印刷する手段、を備え、
その全てではないが、明るい影用のドット配列のほとんどが、暗い影用のドット配列ののサブセットとして含まれる場合、マルチレベル画像データを変換する前記変換手段は、印刷される画像の同じ領域において同様の影を表すマルチレベル画像データ、を生じさせるものであること、
を特徴とするもの。
【請求項６６】
ビットマスクアレイのセットを表すデータの圧縮方法であって、
各ビットマスクが、複数の２値数より決定された２値アレイである、複数のビットマスクを表すデータを記憶し、
各ラインマスクが複数の２値数を含む、複数のラインマスクのセットを生成するため、ビットマスクを表す、記憶されたデータをソートし、ラインマスク内の各２値数は、ビットマスクの前記数の異なる１の一部を定義する２値数に対応するもの、
前記ラインマスクのセットのラインマスクにおける２進数のペアについて排他的論理和演算を実行し、および
２進数のペアについて実行された前記排他的論理和演算の結果を符号化したランレングスエンコーディングにより、前記ビットマスクを表す圧縮データを生成すること、を備えたものであること、
を特徴とするもの。
【請求項６７】
印刷方法であって、
請求項３７から請求項４８のいずれかに基づき、マルチレベル画像データを処理し、および
プリンターに画像を印刷させるため、前記出力されたハーフトーンデータを用いること、を備えたこと、
を特徴とするもの。
【請求項６８】
印刷システムであって、
請求項１から請求項１３にかかる画像処理装置、および
ハーフトーン画像データを受け取り、前記受け取ったハーフトーン画像データに対応する画像を記録するよう動作可能なプリンター、を備えたこと、
を特徴とするもの。
【請求項６９】
プリンターの動作を制御するプリンタドライバーであって、
請求項１４から請求項３６または請求項６６に基づいて生成されたビットマスクデータを記憶するビットマスク記憶部、
前記記憶されたビットマスクデータを用い、マルチレベルデータを、ハーフトーンデータに変換するよう動作可能な変換ユニット、および
前記変換ユニットにより生成されたハーフトーンデータに対応するハーフトーン画像をプリンターに印刷させる信号を生成するよう動作可能な制御部、を備えたこと、
を特徴とするもの。
【請求項７０】
プリンタドライバーであって、プログラム可能なコンピュータを、請求項１から請求項１３にかかる画像処理装置として構成させること、
を特徴とするもの。
【請求項７１】
プリンタドライバー生成装置であって、
請求項１４から請求項３６または請求項６６に基づき生成されたデータを記憶するデータ記憶部、および
前記データ部に記憶されたビットマスクデータを含むプリンタドライバーを生成する組み込みユニット(incorporation unit)、を備えたこと、
を特徴とするもの。
【請求項７２】
コンピュータが解釈可能な命令を記憶する記憶媒体であって、プログラム可能なコンピュータを、請求項１から請求項１３または請求項４９から請求項６３にかかる装置として構成させ、あるいは、、請求項１４から請求項４８のいずれかにかかる方法を実行させるためのもの、であること
を特徴とするもの。
【請求項７３】
請求項７２にかかる記録媒体であって、コンピュータディスクを含むこと、
を特徴とするもの。
【請求項７４】
請求項７３にかかるコンピュータディスクであって、磁気、光学、または、光磁気ディスクを含むこと、
を特徴とするもの。
【請求項７５】
請求項７３にかかる記録媒体であって、通信ネットワークにおける信号を含むこと、
を特徴とするもの。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理に関する。より具体的には、本発明は、マルチレベルの画像をハーフトーン画像に変換することに関するものである。
【背景技術】
【０００２】
【特許文献１】英国特許番号２３５２５７９
【０００３】
【特許文献２】米国特許番号５７２６７７２
【０００４】
【特許文献３】米国特許番号４９２０５０１
【０００５】
画像において色の濃さ(shades of colour)を表現することは、プリンターにとって長い間の懸案であった。ブラウン管およびLCD等の表示装置は、ほとんどの場合、色純度およびグレーシェードが変化する画像を生成することができるが、ほとんどのプリンターは、インクのドットを印刷するか否かを行うことができるだけである。したがって、印刷された画像において中間の濃さを表すためには、マルチレベルの画像を、印刷領域ならびに非印刷領域により影が現されるものに変換する必要がある。
【０００６】
マルチレベルの画像を、印刷領域ならびに非印刷領域の組み合わせにより影が表される画像に変換することは、ハーフトーニングとして知られている。ハーフトーニングに対しては、さまざまな取り組みがなされている。
【０００７】
既知の方法の一つに誤差拡散(error distribution)がある。誤差拡散の基本的な概念は、ある階調の値（例えば、黒を表す０と白を表す２５５範囲の値）を有する画素が印刷された場合に、当該階調値を、しきい値と比較するものである。階調値がしきい値を超えない場合、画素が印刷される。階調値がしきい値を超える場合、画素は印刷されない。次に、元の画像の階調値と、印刷画像において実際に現れた階調値（０か２５５のいずれか）の差であるエラー値が、演算される。このエラー比率が、複数の近接する複数の画素の階調値に加えられ、あるいは、それから減じられる。
【０００８】
誤差拡散を用いるハーフトーニングは、高い品質の画像を作り出すが、誤差拡散は、多くの欠点を有している。第一に、誤差値が近接する画素に加えられ、あるいは、それから減じられるにつれ、誤差拡散は、画素ごとに多くの演算を必要とする。比較的演算能力が求められ、したがって、誤差拡散を用いるハーフトーニングは、比較的速度が遅い。
【０００９】
また、誤差拡散を用いるハーフトーニングの場合、特定の問題を生じさせる、２５％、３３％、および５０%等の、グレーレベルが存在する。例えば、５０％のグレーレベルのための典型的なパターンは、チェッカーボード・パターンである。しかし、誤差拡散は、チェッカーボード・パターンのドットの代わりに、ドットによる行又は列を生成しかねない。ドットによる行又は列を生成させることから生じる、かかる副作用は、最終的な出力画像において識別可能である。
【００１０】
誤差拡散の前記欠点を克服するため、さまざまな代替の方法が提案されている。ある提案は、しきい値のアレイあるいはデイザーマトリクスを使用することである。かかるシステムにおいては、処理される画像にわたってモザイク模様になる、固定されたしきい値のアレイが生成される。いずれの画素座標においても、画像のグレーレベル値は、しきい値アレイ中の対応する値と比べられる。画像のグレーレベル値が、しきい値アレイのそれよりも小さい場合、画素が印刷される。画像のグレーレベル値が、しきい値アレイの対応する値よりも大きい場合、画素は印刷されない。特定の方法によりしきい値アレイ中のしきい値を配置することにより、達成可能な誤差拡散と同様の結果を生じさせる。適切なしきい値アレイを生成するシステムの例は、英国特許番号２３５２５７９ならびに米国特許番号５７２６７７２に開示されている。
【００１１】
しきい値アレイを用いるハーフトーニングについての代替システムは、ビットマスクを用いるシステムである。しきい値アレイは、例えば０から２５５の範囲のしきい値のアレイから構成されるが、ビットマスクを用いるシステムにおいては、それぞれのアレイが０と１の配置により構成される２５６のビットマスクアレイが記憶される。各ビットマスクにおける０と１の配置は、ビットマスクに関連するグレーレベルを表すドット配列を表している。したがって、例えば、明るい色を表す、あるグレーレベル用のビットマスクは、印刷がされていないとを表す０を含むアレイからほぼ構成されている。これとは逆に、暗い色用のビットマスクは、ほぼ１から構成されている。
【００１２】
マルチレベル画像が、ビットマスクを用いて変換される場合、まず、記憶されたビットマスクの１つを選択するため、印刷されるイメージ画素のグレーレベル値が用いられる。次に、ビットマスクにおける入力の１つを識別するため、印刷される当該画素のｘ、ｙ座標が用いられる。これは、グレースケールのレベルによって決定される特定のビットマスク用の１と０の比率を有する１か０のいずれかであって、ビットマスクが表現しようとするものである。識別されたビットマスク入力が１と等しくドットが印刷されておらず、識別されたビットマスク入力が０と等しい場合、インクのドットが印刷される。
【００１３】
ビットマスクを用いた印刷は、しきい値アレイを用いるシステムを越える顕著な効果を有する。表現される各グレーレベルのために、ビットマスクが記憶されるにつれ、各グレーレベルのため印刷されるドット配置が最適化される。したがって、グレーの特定の影を表すドットが、外見上好ましくなるよう分布される。すなわち、独立したドットのセットではなく、色の濃さとして認識されるよう、ドットの各配置を、入念に演算することができる。従来、このことは、配置用の空間周波数を決定するため、候補となるドット配置を処理することにより達成されていた。好ましい外観を実現するため、低い空間周波数ではなく、高い空間周波数を有するドット配置が選択される。これにより、色の濃さではなく、ドットのパターンという印象を与えるドットの凝集を確実に減少させる。従来の、ビットマスク生成システムの例は米国特許４９２０５０１に開示されている。しかし、ビットマスクシステムは、２つの不利益を甘受しなければならなかった。２の近似する色の濃さが隣同士に表される場合、２つの濃さの間の境界は、影が混ざり合ったように見えることが好ましい。しかし、画像の２つの部分が隣接して印刷されると、当該２のレベルのドット配置を最適化しても、認識可能な境界を生じさせてしまう。これは、一の配置の端部におけるドットの拡散が、他の影用の配置におけるドット位置に近い位置にあるからである。したがって、配置の異なるものを隣接して印刷すると、前記２の濃さの間の境界にドットの凝集を生じさせてしまう。こような問題は、輪郭削り(contouring)として知られている。
【００１４】
ビットマスクアレイが有する二番目の問題は、一つのしきい値アレイを記憶するのに必要とされる記憶容量は、ビットマスクのセットを記憶するのに要求される容量よりかなり少ないことである。したがって、例えば、０から２５５の範囲のしきい値用の３２Ｘ３２のしきい値アレイの場合、２１０の８ビット数が記憶のため必要となる。これに対し、２５６の３２Ｘ３２ビットマスクを表すデータと近似するデータを記憶するため、３２倍に匹敵するデータを記憶しなければならない。
【００１５】
したがって、各レベル用に印刷されたドット配置を最適化することができるとともに、前記課題を軽減することのできるビットマスクに基づく印刷システムが、求められている。
【００１６】
本発明のある側面は、隣接するグレーレベル間での輪郭削りを低減させるビットマスクのセットを生成可能とする、ビットマスク生成システムを提供する。
【００１７】
本発明の他の側面は、圧縮形式により記憶されるビットマスクを生成可能とする、ビットマスク生成システムを提供する。
【００１８】
本発明の別の側面ならびに実施形態は、添付する図面に示された特定の実施形態を参照することにより明らかになる。
【発明の実施の形態】
【００１９】
ビットマスクを用いた印刷システムの概要
まず、本発明に基づくビットマスクを用いた印刷の概略を、図１Ａならびに図１Ｂを参照して説明する。
【００２０】
図１Ａは、画像の印刷に伴うステップを示している。印刷される元の画像１００の一部が示される。この例において、かかる部分１００は、似てはいるが同じでないグレーの影（shades of grey)を有する２の隣接する領域１０１、１０２を含んでいる。最初に、元の画像１００は、アレイにおける各画素が、元の画像における画素の濃さを示す値を有するマルチレベル画素２００のアレイとして、コンピュータのメモリ内に記憶される。これにより、例示した画像１００の場合、領域１０１が影２２５に対応し、領域１０２が影２２４に対応すると、図１Ａに示されたマルチレベル画素データ２００が記憶される。
【００２１】
画像が印刷される際、アレイ内の各２値の画素が０又は１の値を有する２値の画素３００を生成するため、マルチレベル画素２００が用いられる。マルチレベル画素２００の２値画素３００への変換は、値１を有する２値画素に変換される特定の値を有するマルチレベル画素の割合が、徐々に、明るいグレーの濃さを表す画素について減少するのようなものである。２値の画素３００のアレイが生成されると、次に、当該２値画素３００は、インクドットのパターンを有する出力画像４００を生成するため、値１を有する２値画素３００における各画素を、プリンターがインクのドットで印刷するよう動作させるため、に用いられる。
【００２２】
２値画素の値を設定するため、ビットマスクアレイのセットが記憶される。図１Ｂは、それぞれが各グレーレベル用であってマルチレベル画素を示すことができる、２５６ビットのマスクアレイ３５０−２５５から３５０−０を記憶する、メモリ３１０を示している。図１Ｂにおいては、階調２５５、２２５、２２４ならびに０用ビットマスクアレイの一部の詳細が示されている。
【００２３】
図１Ｂから見て取れるように、黒色であること示すレベル０と関連するビットマスクアレイ３５０−０は、全体が１で占められたアレイにより構成される。これとは逆に、白色であること示すレベル２５５と関連する２値アレイ３５０−２５５は、全体が０で占められたアレイにより構成される。連続した暗いグレー濃度用のアレイのための１の入力数が増加した場合、レベル２２４および２２５等の中間のグレー値のための中間のビットマスクアレイは、１の入力と０の入力が混在するビットマスクアレイ３５０−２２４ならびに３５０−２２５を含む。
【００２４】
２値の画素値が設定されると、メモリ３１０に記憶されたビットマスクアレイ３５０−２５５から３５０−０の一つを選択するため、当該２値画素に対応するマルチレベル画素の値が用いられる。次に、マルチレベル画素の座標が、選択されたビットマスクから各入力を選択するため用いられる。次に、選択された入力値である１又は０は、その２値画素用の値として記憶される。
【００２５】
図１Ａの２値画素のアレイを、図１Ｂに示すレベル２２４及び２２５のビットマスクアレイと比較することにより、この方法でビットマスクアレイを用いることの効果が、ビットマスクアレイの一部を、生成された２値の画素３００のアレイに複製することであることが判る。これにより、２２５の値を有するマルチレベル画素に対応する２値画素３００の最初の３行は、グレイレベル２２５用のビットマスクアレイ３５０−２５の最初の３行の複製に対応する。同様に、２４４の値を有するマルチレベル画素に対応する２値の画素３００の次の３行は、グレイレベル２２４用のビットマスクアレイ３５０−２２４における数の２番目の３行の入力の複製に対応する。
【００２６】
外見上好ましい画像を生成するため、各グレーレベル用のビットマスクアレイにおける１ならびに０の配置は、印刷された画像が、ドットの独立したパターンではなく、グレーの影であると認識されるようインクドットを拡散させること、が重要である。印刷された画像の２の隣接する領域が、同じようなグレーの影で構成されている場合、境界が一つのグレイレベルから次のレベルへと融合することも好ましい。しかし、各レベル用のドットの拡散を最適化することは、画像中に２の異なる階調が互いに隣接する場合、輪郭削り(contouring)として知られる問題を生じさせる。ドットの拡散を表すためそれ自身が最適化された異なるアレイから入力を選択することは、境界に、ドットの凝集、あるいは、ギャップを生じさせてしまうからである。
【００２７】
本発明によると、このような問題を増大させるビットマスク３５０−０から３５０−２５５のセットが提供される。このことは、特定のグレーの影を表すためのドットの拡散を生じさせるため、各ビットマスクアレイは、最適化されているが、かかる最適化のプロセスは、あるグレーレベル用のアレイのほとんどの入力が、かかるアレイにおける隣接する階調と同じである、ビットマスクのセットを有することにより達成される。このことは、レベル２２５用のビットマスクアレイ３５０−２２５における入力のほとんどが、レベル２２４用のビットマスクアレ３５０−２２４における対応する入力と等しいレベル２２４ならにび２２５用のアレイの類似性により、図１Ｂに示されている。各グレーレベル用のビットマスクの最適化を行うことにより、ビットマスクが、ドットの集合ではなく、影であると認識されるドットのパターンを生成することを、確実とする。しかし、グレーレベルの一のビットマスクの多くが、次のグレーレベル用のビットマスクに対応するので、印刷された画像中のドットの配置であって、隣接する階調の領域間の境界に沿ったものは、ドットが外見上好ましい拡散を達成することもできる。また、一のレベルにおけるビットマスクアレイのほとんどの部分が、他のものの当該部分と等しいことを確保することにより、ビットマスクアレイのセットは、後に詳細を説明する圧縮に非常に適したものとなる。
【００２８】
ビットマスクアレイ、プリンタドライバー、ならびに印刷画像を生成するシステム
ここで、ビットマスクアレイ、本発明に基づき前記ビットマスクアレイを組み込むプリンタドライバー、を生成するシステムの詳細について図２を参照して説明する。
【００２９】
よく知られているように、プリンタドライバーは、プリンターの動作を制御するソフトウエアプログラムである。したがって、各プリンターのメーカーは、自身の特定のプリンターに適したプリンタドライバーを要求する。この目的を達するため、各プリンターメーカーは、特定のプリンターにおいて利用可能なプリンタの機能を選択可能であり、適切なプリンタドライバーを生成可能であるように、各プリンタドライバー制作会社によりプリンタドライバー生成キットが作られる。
【００３０】
図２を参照すると、プリンタドライバー制作会社により用いられるビットマスク生成コンピュータ１が設けられている。かかるビットマスク生成コンピュータ１は、プリンタドライバーに組み込まれるビットマスクアレイデータを生成するようプログラムされている。次に、プリンタメーカーによって用いられるプリンタドライバー生成コンピュータ２が設けられている。かかるプリンタドライバー生成コンピュータ２は、ビットマスクアレイ生成コンピュータ１により生成されたビットマスクアレイデータを組み込むプリンタドライバーを生成するためのプリンタドライバー生成キットを有するコンピュータを備えており、マルチレベル画像データを、その後、印刷可能なハーフトーン画像データに変換するため、プリンタドライバが、ビットマスク生成コンピュータ１によって前に生成されたデータを用いる場合、最終的に生成されたプリンタドライバーは、ホストコンピュータ２のメモリおよびデジタル複製部４内でロードされる。
【００３１】
後に詳細を説明するように、ビットマスクアレイ生成コンピュータ１によって生成されたビットマスクアレイは、外見上好ましい配列で分散される各グレーレベル用に生成されたドットのパターンを生じさせるようなものである。また、かかる生成は、異なる階調が、隣接して印刷される場合、隣接するビットマスクアレイのほとんどの部分が同じであるので、異なるレベル用のビットマスクアレイにより表されるドットパターンが、許容できる程度の量の輪郭削りを保持するようなものである。
【００３２】
本実施形態において、ビットマスク生成コンピュータ１は、そのメモリ内に、印刷される階調の範囲を示すドットの位置を表すビットマスクアレイのセットを生成する生成モジュール８、および、生成されたデータを圧縮するための圧縮モジュール９、を備えている。生成モジュール８により、ビットマスクのセットが生成されると、それらは、圧縮されたビットマスクデータを生成する圧縮モジュール９に送られる。次に、圧縮されたビットマスクデータは、その後、プリンタドライバー生成コンピュータ２に送られるＣＤ  ＲＯＭ１０上に記録される。
【００３３】
当該プリンタドライバー生成コンピュータ２は、ＣＤ  ＲＯＭ１０上に記録された圧縮データを読み取る。また、プリンタドライバー生成コンピュータ２のメモリ内には、テキストドライバー１１、画像ドライバー１３のセットおよびドライバーエンジン１４のセットが設けられる。
【００３４】
前記テキストドライバー１１は、テキストデータに対応する画像を印刷するため、テキストデータを処理し、テキストデータをプリンタの命令に変換するための、従来のプリンタドライバ用テキストドライバーを備えている。同様に、画像ドライバー１３は、画像データを処理し、画像データをプリンタの命令に変換する、画像処理モジュールを備えている。ドライバーエンジン１４は、文書をプリンタの命令に変換するため、テキストドライバーおよびプリンタドライバーを調整する、関数のライブラリを備えている。
【００３５】
使用に際し、プリンタドライバー生成コンピュータ２は、ＣＤ  ＲＯＭ１０から読み取った圧縮済みのビットマスクデータを、生成されるプリンタドライバー内に含まれる選択された画像ドライバー１３内に組み込む。次に、選択された画像ドライバー１３および選択されたテキストドライバー１１ならびにドライバーエンジン１４を表すデータは、ＣＤ  ＲＯＭ２０、２１上に、プリンタドライバーとして記憶される。ＣＤ  ＲＯＭ２０、２１上に記憶されたプリンタドライバーは、次に、ホストコンピュータ３およびデジタル複製部４のメモリ内でロードされる。
【００３６】
ホストコンピュータ４の場合、プリンタドライバー生成コンピュータ２により記録されたＣＤ  ＲＯＭ  ２０から読み取られたデータは、ホストコンピュータ３のメモリ内にプリンタドライバーとして記憶される。ホストコンピュータ３のメモリ内には、ワードプロセッシングプログラム等の文書生成プログラム２７を含む他のプログラムも記憶される。文書生成部２７により生成された文書ファイルが印刷されると、ビットマスク生成コンピュータ１によって前に生成された圧縮ビットマスクを伴うプリンタドライバー２５が呼び出される。次に、プリンタドライバー２５は、圧縮されたビットマスクデータを解凍し、後に画像２９を印刷するホストコンピュータ３に接続されたプリンタ２８に送られる、ハーフトーン画像データを生成するため、解凍されたビットマスクデータを用いる。
【００３７】
プリンタドライバー生成部９により生成されたデジタル複製部４用のプリンタードライバーの場合、その上に、生成されたプリンタドライバーを表すデータが記憶されたＣＤ  ＲＯＭ ２１から当該データが読み出され、デジタル複製部４のメモリ内にプリンタドライバー３０として記憶される。このようなデジタル複製部は、スキャナ３１およびプリンター３２を備えている。画像が複製されると、デジタル複製部のスキャナ３１は、まず、画像を走査する。次に、ビットマスク生成コンピュータ１により生成された圧縮済みビットマスクデータを含む、プリンタドライバー３０であって、走査された画像を処理し、デジタル複製部のプリンター３２に印刷済みの画像３６を出力させるもの、が呼び出される。
【００３８】
ビットマスクデータ生成の概略
ハーフトーン出力画像２９、３６を生成するため用いることができるビットマスクのセットを生じさせるビットマスク生成コンピュータ１の生成モジュール８によりビットマスクを生成することにより、画像を表すインクドットが、好ましい態様により配置され、輪郭削りが制御されることの詳細について、図３から図１０を参照しつつ、ここで、説明する。
【００３９】
図３は、図１のビットマスク生成コンピュータ１の生成モジュール８のブロック図である。
【００４０】
この実施形態において、生成モジュール８は、ビットマスクのセットを表すデータの生成を調整するマスク生成モジュール４０；後に詳細を述べる重みづけ関数を表すデータを記憶するよう構成される重みづけマスク記憶部(weight mask store)４２；１および−１の間の範囲の浮動小数点数であって、かかる数は、アレイ内にランダムに配置され、１から−１間の範囲内でランダムに拡散する当該数、が記憶されたアレイを含む乱数テーブル４４；現在生成されているビットマスクを表す０ならびに１のアレイ用の記憶部である現在のマスク記憶部４２；生成されているビットマスクに関連する浮動小数点数のアレイ用の記憶部である重みづけマップ記憶部(wight map store)４８；生成中の現在のビットマスクアレイにおける座標を識別するデータ記憶部である位置外れリスト(out of position list)５０およびニュードットリスト５２；ならびに、生成モジュール４０により前もって生成されたグレースケールの複数のレベル用のビットマスク、を表すデータを記憶するビットマスク記憶部５４；を備えている。
【００４１】
本実施形態において、マスク生成モジュール４０は、各ビットマスクが３２Ｘ３２の０と１のアレイを備えた、２５６ビットのマスクのセットを生成するよう構成される。したがって、現在のビットマスク記憶部４６は、３２Ｘ３２の２値アレイ、および、浮動小数点数による３２Ｘ３２のアレイを有する重みづけマップ記憶部４８ならびに乱数テーブル４４、を記憶するよう構成される。まず、重みづけマップ記憶部４８における入力は、全て０に設定される。ランダムに配置されたランダム浮動小数点数は、乱数テーブル４４に前もって記憶されている。
【００４２】
マスク生成モジュール４０により生成された各ビットマスクは、アレイと関連する階調を示す、ドットの配置を表している。ある階調の平面的な画像を、ハーフトーン画像に変換するためビットマスクが用いられている場合、その領域を表す無地の色を表す、結果としてのインクドットのパターンは、生成されたアレイにおける１の配置に対応する。外見上好ましい画像を生成するため、無地色の領域を表す画像中のドットは、均等に分散され、過度に集中しないことが好ましい。このような理由から、マスク生成モジュール４０は、生成されたビットマスクアレイの１の位置が当該アレイにわたって拡散する、ビットマスクを生成するよう配置される。
【００４３】
画像においてドットの列が生成される場合に生じる副作用(artefacts)を防止するよう、生成パターンが、何らかの方法でランダム化されていることも好ましい。後に詳細を述べるように、このことは、生成されたビットマスクアレイ中の１の位置を、乱数テーブル４４内の乱数によって決定することにより、本実施形態において達成される。
【００４４】
使用に際し、まず、マスク生成モジュール４０は、重みづけマスク記憶部４２における重みづけ関数を表すデータを生成し、記憶する。次に、マスク生成モジュール４０は、生成されているビットマスクのセット用の第１ビットマスクにおける初期ドットの初期位置を選択するため、乱数テーブル４４を用いる。ここでは、現在のビットマスク記憶部４６に記憶されたアレイ内に、Ａ１がその位置で入力される。次に、重みづけマップ記憶部４８内に記憶されたデータは、重みづけマスク記憶部４２内に記憶された重みづけ関数データを用いて更新される。
【００４５】
次に、マスク生成モジュール４０は、１に変更される現在のビットマスク記憶部４６内に記憶された３２Ｘ３２のアレイにおける次の０の位置を選択するため、重みづけマップ４８および乱数テーブル４４を用いる。このプロセスは、現在のビットマスクにおいて、必要とされる数の０が、１に変換されるまで繰り返される。
【００４６】
本実施形態において、３２Ｘ３２の２値アレイを有する２５６ビットのマスクが生成されると、現在のビットマスク記憶部４６内に記憶されたアレイ内の４つの０が、各レベルについて、１に変換される。
【００４７】
必要とされる数の０が、１に変更されると、次に、マスク生成モジュール４０は、重みづけマップ記憶部中の重みづけマップ、重みづけマスク記憶部中の重みづけマスク、乱数テーブル４４ならびに位置外れリスト５０およびニュードットリスト５２を用い、作成されているレベルのため、ビットマスク上で平滑化動作(smoothing operation)を実行する。この平滑化動作は、複数の１がアレイを用いて好ましいグレースケールの画像を生成するような方法により分布されるよう、現在のビットマスクにおける１の分布を最適化するとともに、直前のビットマスク用のビットマスク内に現れる１の大部分が、現在のビットマスクにも確実に現れるようにする。
【００４８】
特定のグレーレベルについてかかる最適化が実行された後、現在のマスク記憶部４中の現在のビットマスクの複製が生成され、ビットマスク記憶部５４内に記憶される。ビットマスク生成モジュール４０は、次に、前のレベル用のビットマスクを用い、次のレベル用に新しいビットマスクを生成する。あるレベルから次のレベルへとデータを複製することにより、近接するグレーレベル用のドットの拡散は、同じとなり、したがって、輪郭削りを確実に減少させる。これにより、ビットマスク生成モジュール４０は、ビットマスク記憶部５４内に、ビットマスクのセットを表す３２Ｘ３２の２値アレイであって、２５６セットを生成し、記憶させる。
【００４９】
２５６のビットマスクセットが完全に生成され、記憶されると、次に、圧縮モジュール９が呼び出される。かかる圧縮モジュール９は、元のビットマスクデータの約１０分の１のサイズの圧縮データを生成するため、記憶されたビットマスクを処理する。この圧縮済みデータは、プリンタドライバー生成コンピュータ２により生成されたプリンタドライバー２５、３０内に組み込むためにＣＤ  ＲＯＭ１０上に記録される。
【００５０】
ビットマスク生成コンピュータによる処理
ここで、ビットマスクデータを生成するビットマスク生成コンピュータ１の全体的な処理を、ビットマスク生成コンピュータ１の処理のフロー図である図４を参照して詳細に説明する。
【００５１】
(i) ビットマスクの生成
まず、ビットマスク生成コンピュータ１は、マスク生成モジュール４０を呼び出す。かかるマスク生成モジュール４０が、初めて呼び出されると、当該マスク生成モジュール４０は、重みづけマスクデータを重みづけマスク記憶部４２に記憶させる（Ｓ４−１）。
【００５２】
かかる重みづけマスクデータは、生成されるビットマスク内で１の拡散を可能にする関数を表す。この目的を達するため、マスク生成モジュール４０は、ビットマスクアレイにおける各位置のため、他の複数の１に対する当該位置の相対的な近似性(relative closeness)を表す値が演算可能となるよう、データを記憶する。具体的には、本実施形態において、以下の距離関数が用いられる。
【００５３】
【数１】
2004350289.tif 000003
【００５４】
ここで、∂ｘおよび∂ｙは、アレイ内の２点おけるｘ座標とｙ座標とのそれぞれの差分である。
【００５５】
ｘおよびｙの整数の異なるペアについての距離関数の演算値は、重みづけマスク記憶部４２内に記憶される。
【００５６】
図５は、上記距離関数を用いて演算され重みづけマスク記憶部４２内に記憶された、データのアレイの一例である。後に詳述するように、これらの値を演算し、それらを重みづけマスク記憶部４２に記憶することにより、ビットマスク内における１のどのような配列も、非常に迅速に決定することができる。
【００５７】
重みづけマスク記憶部４２内に距離関数が記憶された後、マスク生成モジュール４０は、現在のビットマスクにおける必要とされる数の０が１に変換されたかどうかを判断する（Ｓ４−２）。本実施形態において、２５６レベルそれぞれのために３２Ｘ３２のビットマスクが生成されると、ビットマスク記憶部に記憶された生成済みの各ビットマスクは、最初のビットマスクが全体が０で構成されている前のレベル用のビットマスクよりも、１を４つ多く有することになる。
【００５８】
必要とされる追加の０が１に変換されていない場合、マスク生成モジュール４０は、現在のビットマスク記憶部４６に記憶されたアレイ内の０を選択し、かかる０を１と等しくなるよう変更する（Ｓ４−３）。
【００５９】
より具体的には、図６のフロー図に詳細を示すように、マスク生成モジュール４０は、まず、重みづけマップ内における数配列の最小値を特定するため、重みづけマップ記憶部４８に記憶された重みづけマップを検索する（Ｓ６−１）。
【００６０】
本実施形態において、重みづけマップは、まず、０による３２Ｘ３２のアレイを有しているので、ここでの最小値は０に等しい。
【００６１】
次に、マスク生成モジュール４０は、しきい値パーセンテージより小さく、重みづけマップにおける入力の最小値を越える値に関連づけられている、重みづけマップにおける位置の座標を特定する（Ｓ６−２）。前記重みづけマップは、乱数テーブル４４の最小の乱数にも関連づけられている。本実施形態において、前記しきい値は、特定された最小値の２％に設定されている。
【００６２】
実際には、１に変換される初期０の位置を選択した場合、重みづけマップ記憶部４８に記憶された重みづけマップの全ての値は、０と等しく、重みづけマップの全ての座標は、重みづけマップ４８における最小値と異なるしきい値パーセンテージ以下の値に関連づけられるので、マスク生成モジュール４０は、最小の乱数に関連づけられている乱数テーブル４４内の数の座標を特定する。
【００６３】
次に、マスク生成モジュール４０は、１となる特定された座標に現れた０の値を変更することにより、現在のビットマスク記憶部４６に記憶されたビットマスクアレイを更新する（Ｓ６−３）。図７Ａは、第３コラムの３番目の０が１に変更されたビットマスクアレイの一部の例示である。
【００６４】
次に、アレイ内の更新された数の座標は、ニュードットリスト５２に加えられ（Ｓ６−４）、マスク生成モジュール４０は、重みづけマップ記憶部４２内に記憶されたデータを用い、重みづけマップ４８内の値を更新する（Ｓ６−５）。
【００６５】
具体的には、マスク生成モジュール４０は、重みづけマップ記憶部４８内の重みづけマップの各入力を、順次取り出し、更新されているグリッド上の点の相対位置についてのｘの距離およびｙの距離、および、以下の式を用いて１に変更されていた、ビットマスクにおける０の位置、を特定する。
【００６６】
【数２】
2004350289.tif 000004
【００６７】
ここで、Ｘ１、Ｙ１は、１に変更されていた、現在のビットマスク４６内の０の座標であり、Ｘ２、Ｙ２は、更新されようとする重みづけマップ４８におけるアレイ内の位置の座標であり、ｗおよびｈは、本実施形態では、アレイの幅と高さに対応する、そのいずれもが３２に等しい値である。
【００６８】
ｘおよびｙの距離が７に満たない場合、マスク生成モジュール４０は、当該ｘおよびｙの距離を用い、重みづけマップ記憶部４２内で、ある値を探し、以下の式を用いて、重みづけマップ記憶部４８における重みづけマップ内の識別された位置のための入力を更新する。
【００６９】
【数３】
2004350289.tif 000005
【００７０】
ここで、Ｗnewは、重みづけマップ記憶部４８内のアレイの位置に記憶された新たな値であり、Woldは、重みづけマップ記憶部４８内のアレイに記憶された前の値であり、Ｗeightmaskvalueは、重みづけマスク記憶部４２を用いて取り込まれた値であり、ｆ（level）は、これに対しビットマスクが生成されるグレーのレベルに基づいて変更される０と１間に存する関数であり、ｒ（ｘ、ｙ）は、更新されている重みづけマップ４８内の位置に対する、乱数テーブル内の対応する場所に記憶された乱数の値である。
【００７１】
図８は、本発明の本実施形態において用いられる関数ｆ（レベル）を示すグラフである。本実施形態においては、最初に生成された６４のビットマスク、ならびに、生成されているビットマスクのセット内の１２８番目のビットマスクの最大値を１に増加させる関数ｆ（レベル）を有するビットマスクのセット内の少なくとも６４のビットマスク用に、ｆ（レベル）用の０と等しい値が用いられる。本実施形態において、関数ｆ（レベル）は、変形し、シフトした正規曲線であり、値が７０から１００において急に増加し、値が１３０から１６０で急に下落する形式である。
【００７２】
乱数テーブル４６内の１から−１の乱数により決定される重みづけ値の生成は、重みづけマップ４８内に記憶された重みづけ値にノイズ成分を取り込むことになる。充たされた０の4分の1から充たされた０の４分の３の間（between quarter full of 0's and three quarter full of 0's) でビットマスクが生成されている場合、距離関数のみに基づ居て決定される１と０の拡散によって、一連のラインやコラム等の規則正しく並べられた形式のアレイとなるビットマスクを生じさせる。かかる規則正しいドット配列は、出力画像内の副産物のように見えるという傾向がある。この方法でノイズ成分を取り込むことにより、前記の規則正しく並べられたアレイの生成は、阻止される。乱数テーブル４４内に記憶された値を用いることでこれを達成しようとすると、０から１へ変更されるのに適切である位置の識別が繰り返し行われる。
【００７３】
重みづけマップが更新された（Ｓ６−５）後、図４に戻り、マスク生成モジュール４０が、再度、現在のビットマスク４６において必要とされる数の０が１に変換されたかどうか判断する（Ｓ４−２）。変換されていない場合、マスク生成モジュール４０は、現在のビットマスク４６を変更し、さらに、重みづけマスク４８を更新する前に、更新された重みづけマスク４８を用いて選択された現在のマスク記憶部内の現在のマスク中の別の０を変更する。したがって、マスク生成モジュール４０は、現在のビットマスク記憶部４６に記憶されたアレイが、さらに１を４つ含むように変更する。このことは、重みづけマップが更新されると、アレイ内の１の配列は、１の位置をアレイ中に拡散するというこの方法の本質から起こる。
【００７４】
アレイにおいて必要とされる数の０が変更されると（Ｓ４−２）、次に、マスク生成モジュール４０は、（Ｓ４−３）図９Ａから９Ｃおよび図１０を参照して説明するように、新しく演算されたビットマスク内の１の位置を最適化する（Ｓ４−４）。
【００７５】
(ii)  ビットマスクの変更
これまで述べたように、現在のビットマスク記憶部４６内での、１に変換される０の選択は、現在のマスク記憶部４６におけるアレイ内の他の１の位置に基づいて決定される、関数に基づいて行われる。このことは、１に変更される０の初期の選択が、後のレベル用のビットマスクにおいて後に行われる１の位置合わせに非常に大きな影響を有していること、を意味する。したがって、例えば、ビットマスクの一部を図示するものであって、文字ＡからＥがビットマスク内の１を表し、ブランクの四角が０を表す図９Ａを参照すると、図９Ａに示される１の拡散は、図９Ｂに示されるようなアレイに対する１の追加について行われる選択に影響を及ぼす。図９Ａの配置によっても外観的に好ましい画像を生じさせるであろうが、文字ＡからＥにより表されるドットの影響により、理想には少し及ばない程度の配置を有する図９Ｂに示すような、次のレベルを生じさせる。したがって、例えば、図９Ｂの場合、かかる配列は、文字Ｆ、Ｃ、ＢならびにＥ、Ｇ、Ｄで示される２の斜線を作り出す。
【００７６】
このように、本実施形態においては、グレーレベル用の最初のアレイを生成した後、次に、マスク生成モジュール４０が、以前に行われたアレイにおける１の位置合わせによるバイアスを除去するようアレイを変更する。したがって、例えば、図９Ｂに示された１の配置が、図９Ｃにより示された配置に変換されることもある。この配置において、文字Ｄ、Ｅ、ＦならびにＧにより表されるドットの位置は、ビットマスクにおける１の拡散が向上するよう変更される。ここで、マスク生成モジュール４０によるビットマスクの変更について、図１０を参照しつつ詳しく説明する。
【００７７】
あるレベル用の初期のビットマスクが変更されると、マスク生成モジュール４０は、まず、アレイ内の最初の１が選択されるまで当該アレイを走査する（Ｓ１０−１）。
【００７８】
次に、マスク生成モジュール４０は、アレイ内で選択された１が、ニュードットリスト５２により特定された座標と対応するかどうか、を判断する（Ｓ１０−２）。対応する場合、このことは、選択された１が、前のレベル用のビットマスク内の０によって表されること、を示している。アレイ内で選択された１の座標が、ニュードットリスト５２内に記憶されていない場合、このことは、アレイ内の当該１が、前のレベル用のアレイ内の１によって表されることを示している。
【００７９】
マスク生成モジュール４０が、選択された１は、前のレベルのビットマスク内の１によっても表されると判断すると（Ｓ１０−２）、次に、マスク生成モジュール４０は、位置外れリスト５０内に座標がいくつ含まれているかを判断し（Ｓ１０−３）、これとしきい値を比較する。
【００８０】
本実施形態において、最初の１６ビットのマスクについて輪郭削りの影響を減少させるため、あるレベル用のアレイ内に１が存在する場合、次のレベル内にも存在させるようにする。アレイ内に１がほとんどなく、したがって、インクドットが印刷されていない場合には、１の配置を変更し、これにより、輪郭削りを識別できるよう印刷されるドット配置を増加させることができる。これとは逆に、ミッドレンジの影用のビットマスクアレイの場合のように、アレイ内により多くの１が見られ、より多くのインクドットが印刷される場合、これらのドットの比較的少ない数の位置を変更したことによる影響は、輪郭削りを識別できる程度に増加しないが、中間階調を表すドットのアレイの外観を向上させる。
【００８１】
このように、本実施形態において、変更可能な前のレベル用のアレイ内の１の数を識別するために用いられるしきい値は、ビットマスクで表されるように、グレーレベルに基づいて変化する。具体的には、本実施形態において、最初の１６レベルについては、前のアレイ内に表されていない１を変更することができ、第４まで全てのレベルについては、前のアレイからの１を移動させることができる。
【００８２】
このように、例えば、マスク生成モジュール４０が、最初の１６レベルの一のビットマスクを処理しており、当該マスク生成モジュール４０が、アレイから選択された１が前のアレイ内にも示されていることを識別する場合、マスク生成モジュール４０は、前記アレイ内の当該１の位置を変更しようとしない。これとは逆に、生成されるビットマスクのレベルが、１６より大きく、その位置が変更されている、前のアレイにおける１を表す現在のアレイにおける１の４つの位置より小さい場合、マスク生成モジュール４０は、現在の１の入力位置が改良可能かどうかを判断する（Ｓ１０−５からＳ１０−７）。
【００８３】
まず、マスク生成モジュール４０は、前記アレイから選択された現在の１が存在することの影響を取り除くため、重みづけマップ記憶部４８内の重みづけマップを更新する（Ｓ１０−５）。
【００８４】
具体的には、新しい１が、現在のマスク記憶部４６内の現在のマスクに追加されると、マスク生成モジュール４０が、重みづけマップ記憶部４８内の重みづけマップの入力値を更新するのと同様の方法により、マスク生成モジュール４０は、重みづけマップの０から１より、以下の式を用いて重みづけマップの入力を更新することによって、選択された現在の１が変更されたことの影響を除去する。
【００８５】
【数４】
2004350289.tif 000006
【００８６】
ここで,Ｗnew,Woldは、重みづけマップの値であり、f(level)およびr(x,y)は、前に説明したのと同様の方法で演算された値である。
【００８７】
この方法により重みづけマップ記憶部４８内の重みづけマップを更新することによる影響は、現在のビットマスクにおける現在の１の位置から生じる追加の重みづけ値を除去することである。
【００８８】
次に、マスク生成モジュール４０は、現在考慮されている１の位置用の更新された重みづけ値が、更新された重みづけマップ内の最小の重みづけ値入力を越えるしきい値パーセンテージをより大きくなる、範囲を決定する（Ｓ１０−６）。本実施形態において、かかるしきいパーセンテージは、２％に設定されている。
【００８９】
現在の位置のための値が、かかるしきい値より大きい場合、このことは、現在のビットマスク内のアレイ内に複数の１をうまく拡散させるよう生成するアレイ内に現在の１の位置よりもよい位置が存在することを示す。そうである場合、マスク生成モジュール４０は、考慮されている現在の１の用にアレイ内で別の位置を特定する（Ｓ１０−７）。
【００９０】
このような別の位置の選択は、マクス生成モジュール４０が、ビットマスク内で１の初期位置を選択するのと全く同じ方法により実行される。すなわち、マスク生成モジュール４０は、重みづけマップ記憶部４８内の現在の重みづけマップ入力の最小値の２％を越えない、重みづけマップ記憶部４８内の重みづけマップの重みづけ値に関連する現在のビットマスクにおいて、全ての０の座標を識別するとともに、重みづけマップにおける最小値の２％を越えない重みづけ値、ならびに、乱数テーブル４４内の最も小さい乱数に関連する値の両方、と関連する位置を、現在のビットマスクにおける１入力用の可能な代替位置として選択する。
【００９１】
現在のものの代替位置が特定されると、マスク生成モジュール４０は、現在のものの代替位置の座標、ならびに、それ自身の現在の位置における１用の重みづけ値と、提案された自身の代替位置との間の差を特定する値を記憶する。
【００９２】
かかるデータが記憶された（Ｓ１０−７）後、あるいは、アレイ内で選択された現在の１の位置が、変更されていないと判断された（Ｓ１０−６）後、重みづけマスクモジュール４０は、、重みづけマップ記憶部４８内の重みづけマップに対して前になされた変更を反転させる（Ｓ１０−８）。
【００９３】
すなわち、以下の式を用い、重みづけマップが、更新される。
【００９４】
【数５】
2004350289.tif 000007
【００９５】
ここで,Ｗnew,Woldは、重みづけマップの値であり、f(level)およびr(x,y)は、前に説明したのと同様の方法で演算された値である。
【００９６】
次に、マスク生成モジュール４０は、アレイ内の全ての１が処理されたかどうかを判断する（Ｓ１０−９）。処理されていない場合、次に、マスク生成モジュールは、現在のビットマスク内の１の入力が最後までいったかどうかを再度判断する（Ｓ１０−９）前に、現在のビットマスク記憶部４６における現在のビットマスク内の次の１の入力を特定し（Ｓ１０−１０）、かかる次の１の入力位置が改良可能かどうかを判断する（Ｓ１０−２からＳ１０−８）。
【００９７】
アレイ内の１が最後に達した場合、マスク生成モジュール４０は、現在のビットについて何らかの変更がなされたかを判断する（Ｓ１０−１１）。  この時点で、マスク生成モジュール４０は、その位置を改良可能な、現在のアレイ内のそれぞれの１について、前記１の現在の座標を特定するデータ、前記１の代替位置を特定する座標、ならびに、各変更が、現在のビットマスクアレイ内の１の入力の拡散についてどのくらいの改良を生じさせるかを示す値、を記憶する。かかるデータが記憶されていない場合、現在のレベル用のビットマスク内における１の最適な配置が見つけられ、現在のレベルについてのマスク生成モジュールの処理は終了する。何らかのデータが記憶されている場合、最大の改良値に関連づけられている座標が特定され（Ｓ１０−１２）、関連する座標における現在のレベル用のビットマスク内の入力は、反転される。すなわち、現在の１の座標によって特定された１の入力は、０に設定され、当該１用の代替座標よって特定された０の入力は、１に設定される。かかる更新済みビットマスクは、現在のマスク記憶部４８に記憶される。
【００９８】
次に、重みづけマップ記憶部４８内の重みづけマップは、以下の式を用いて更新される。
【００９９】
【数６】
2004350289.tif 000008
【０１００】
ここで,Ｗnew,Wold、f(level)およびr(x,y)は、前に説明した演算値に対応する値であり、weightmask value 1ならびにweightmask value２は、重みづけマスク記憶部４２を用いて得られた値であり、更新されている重みづけマップ内の位置、および、変更されている１の元の位置の座標、ならびに、かかる１用の新しい座標は、前述の方法とそれぞれ同じ方法で処理されている。
【０１０１】
次に、マスク生成モジュール４０は、位置外れリスト５０ならびにニュードットリスト５２を更新する。具体的には、変更されている１用の元の座標は、ニュードットリスト５２内に現れず、これらの座標は、位置外れリスト５０上に入力される。次に、１の入力用の新たな座標は、位置外れリスト５０内の座標と比較される。位置外れリスト５０内に新たな座標が現れる場合、これらの座標は、かかるリストから削除される。新たな座標が位置外れリスト５０に内に現れない場合、これらの新しい座標は、ニュードットリスト５２に追加される。
【０１０２】
次に、マスク生成モジュール４０は、特定の、現在のマスクが処理された回数を判断する（Ｓ１０−１３）。本実施形態においては、変更について終わりのないループに陥るのを防止するため、繰り返しの回数を１０００回までとする。位置変更が１０００回行われない場合、マスク生成モジュール４０は、アレイにおける１の全体的な位置を改良するため（Ｓ１０−２からＳ１０−１２）アレイにおける１の配列を変更しようとする前に、生成されているビットマスクアレイにおける最初の１の入力を選択する（Ｓ１０−１）。アレイが１０００回処理され、あるいは、前記アレイにおける１の配列について全く改良が認められない場合、マスク生成モジュール４０によるかかるレベル用のビットマスクにおける位置の最適化処理は、終了する。生成されたビットマスクの処理の結果、アレイ内で拡散した１を有するビットマスクが生成される。平滑化処理を行うので、新たな１が特定のレベル用のアレイに追加される順番は、関係ないが、全ての新しい１がアレイに追加された後に、適切な位置の選択は再評価される。
【０１０３】
アレイの処理は、ビットマスクアレイを使用することにより生じる輪郭削りを許容可能なレベルにすることもできる。隣接するグレーレベル用の出力パターンを比較すると、第１レベルにおける限られた数のドットしか、第２レベルにおいて表示されない。具体的には、最初の１６階調の場合、連続する各レベルにおいて、追加の４ドットが現れる。次の階調においては、連続する各レベルにおいて追加の４つのドットが現れ、最大４つの位置まで、レベル間で追加のドットを変更してもよい。ドットのほとんどが、連続するレベルにおいて同じ位置に現れるので、連続するグレーレベル用の出力におけるドットの配置は、各出力におけるドットは、それら自身の間で均等に拡散し、大量の共通ドットを有することから、外観的に好ましいものでなければならない。
【０１０４】
図４を参照すると、マスク生成モジュール４０による平滑化動作が完了した後、次に、マスク生成モジュール４０は、（Ｓ４−５）ビットマスク記憶部５４のビットマスクの複製を記憶する。マスク生成モジュール４０は、次に、２５６の異なるグレーレベル用の２５６ビットのマスクが、この時点でビットマスク記憶部５４に記憶されたどうかを判断する。記憶がなされていない場合、マスク生成モジュール４０は、次のグレーレベル用に新しいビットマスクを演算する前に（Ｓ４−２からＳ４−５）、位置外れリスト５０およびニュードットリスト５２をクリアする（Ｓ４−７）。
【０１０５】
したがって、マスク生成モジュール４０は、それぞれがビットマスク記憶部５４内に記憶された２５６のマスクのセットを生成する。連続する各ビットマスクは、前のレベルのビットマスクおよび重みづけマップを用いて生成されるので、各レベルのビットマスクを生成するには、前のレベルのビットマスクが考慮される。生成を行うためビットマスクの完全なセットが決定されると、（Ｓ４−６）次に、記憶されたビットマスクは、ここで、図１１から１３を参照して詳細が説明されるように、圧縮のため圧縮モジュール９に送られる。
【０１０６】
(iii)  生成されたビットマスクの圧縮
図１１は、本実施形態の圧縮モジュール９のブロック図である。本実施形態において、圧縮モジュール９は、生成モジュール３により用いられたビットマスク記憶部５４と同じであるビットマスク記憶部５４、ラインマスク記憶部５６、排他的論理和プロセッサ５８、排他的論理和ラインマスク記憶部６０、ランレングス・エンコーダー６２ならびに圧縮データ記憶部６４、を備えている。
【０１０７】
本実施形態において、０と１で構成される、２５６の３２Ｘ３２のアレイ形式のビットマスクのセットがビットマスク記憶部５４に記憶されている場合、圧縮モジュール９は、まず、ラインマスク記憶部５６に記憶されたラインマスクのセットを生成して（Ｓ４−８）最初に生成されたビットマスク、ラインマスク記憶部５６に記憶されたラインマスクのセットを処理する。次に、圧縮モジュール９は、排他的論理和ラインマスク記憶部６０に記憶される排他的論理和ラインマスクを生成するため、排他的論理和プロセッサ５８を用い、ラインマスク記憶部５６内の生成されたラインマスクを処理する。
【０１０８】
最後に、排他的論理和ラインマスク記憶部６０内に記憶されたデータは、圧縮データプリンタドライバー内に組み込むことができるよう、最初に圧縮データ記憶部６４に記憶され、次に、ＣＤ  ＲＯＭ１０上に記録される（Ｓ４−１０）圧縮データを生成するため（Ｓ４−９）、従来のランレングス・エンコーダー６２を用いて処理される。
【０１０９】
ここで、圧縮モジュール９の処理について、図１２および図１３を参照しつつ、詳述する。
【０１１０】
図１２は、ビットマスク記憶部５４、ラインマスク記憶部５６、排他的論理和ラインマスク記憶部６０、ならびに、圧縮データ記憶部６４内、に記憶されたデータを示している。
【０１１１】
本実施形態において、ビットマスク記憶部５４内に記憶されたデータは、最初に、２５６の３２Ｘ３２ビットマスクアレイのセットを有している。これらのアレイのそれぞれは、第１レベルのビットが全て０の入力から構成され、２５６番目のレベルのビットマスクは全て１から構成され、中間レベルは、それらのアレイにおいて、１の数が増加している３２Ｘ３２の２値アレイを有する。
【０１１２】
後で詳述するように、マルチレベル画像を、ハーフトーン画像に変換するためにビットマスクが用いられた場合、マルチレベル画像データは、ライン毎に処理される。したがって、圧縮モジュールは、まず、それぞれの独立したライン状データを処理するため、関連するビットマスク記憶部５４内の異なるビットマスクから全てのデータを集める。
【０１１３】
すなわち、圧縮モジュール９は、２５６番目のレベルのビットマスク用のビットマスクから、最初の３２ビットのデータを、最初のラインマスク用の最初の３２ビットデータとして複製する。圧縮モジュール９は、次に、２５５番目のレベルのビットマスク用の最初の３２ビットデータを特定する。これは、ビットマスク記憶部における二番目の３２ビットデータとして記憶される。この動作は、第１レベルのビットマスクからの最初の３２ビットデータが、ラインマスク記憶部５６における３２ビットデータの２５６番目のグループとして記憶されるまで繰り返される。
【０１１４】
次に、圧縮モジュール９は、ビットマスク記憶部５４内の２５６レベルのビットマスクから、３２ビットデータの二番目のグループを複製する。このように、ラインマスク記憶部５６は、それぞれが、２５６の３２ビット数を含む３２セットのデータであって、ラインマスクデータのｍ番目のセットにおける３２ビット数のｎ番目が、ビットマスク記憶部５４から（２５６−n）番目のビットマスクの番目のビットマスクのｍ番目の３２ビット数に対応するもの、をそれ自身の中に記憶させる。
【０１１５】
かかる方法によりデータを再配置することは、そこで、各ビットマスクにおける０に対する１の比率が各レベルにおいて増加するビットマスク記憶部５４内の２５６のビットマスクとは逆に、ラインマスク記憶部５４におけるデータのセットは、そこで、セットにおける３２ビットデータの各グループ０の数が、最初の３２ビットゼロから徐々に増加し、３２ビットの２５６番目のグループにおいて３２の入力全てが０となる、３２セットのデータを有すること、を意味する。
【０１１６】
図１３Ａは、ラインマスク記憶部５６内に記憶されたデータのある部分の例である。図１３Ａから見られるように、ラインマスク記憶部５６内に記憶されたラインマスクにおいて、アレイにおける１の入力は、かかる再配置の結果、異なるグレーレベル用の異なるビットマスク間に同じ値１が複製される、コラムを構成する。特定のレベルに対して新しい１が追加されるとともに、連続するレベルを通じて続き、次に、１が平滑化プロセスにおいて変更されなかった場合、新しい１のコラムが始まる。特定の１の入力が、異なるビットマスクを生成することにより行われる、平滑化プロセスに移ると、１のコラムは終了する。
【０１１７】
ビットマスク記憶部５４からの全てのデータが、ラインマスク記憶部５６内に複製されると、圧縮モジュール９は、排他的論理和ラインマスク記憶部６０内に記憶される排他的論理和ラインマスクデータを生成するため、ラインマスク記憶部５６内のデータを用いるよう、排他的論理和プロセッサ５８を呼び出す。
【０１１８】
具体的には、排他的論理和プロセッサ５８は、まず、ラインマスク記憶部５６から、表された最初の３２ビット数を取り出し、その数について、３２個の１を有する３２ビット数を用いて排他的論理和動作を実行する。すなわち、排他的論理和プロセッサ５８は、３２個の１から構成される二番目の３２ビット数を有する前記３２ビットの３２ビット数それぞれについて、以下の真理値表に基づき、ビットに関する(bit wise)排他的論理和動作を実行する。
【０１１９】
【表１】
2004350289.tif 000009
【０１２０】
次に、かかる排他的論理和の結果は、排他的論理和ラインマスク記憶部内に最初の３２ビットデータとして記憶される。排他的論理和プロセッサ５８は、ラインマスク記憶部５６から次の３２ビットデータを選択し、この３２ビット数、ならびに、最初のビットマスクから最初の３２ビットデータのセットについて排他的論理和動作を実行する。かかる排他的論理和動作の結果は、排他的論理和ラインマスク記憶部６０内に二番目の３２ビットデータとして記憶される。かかる動作は、二番目および三番目の３２ビットデータの間続けられ、その後、最初のラインビットマスクから次の３２ビット数の各ペアまでの間続けられる。同じ処理が、ラインマスク記憶部５６内のラインビットマスクの次の各セットからのデータについて行われる。
【０１２１】
排他的論理和プロセッサ５８によるかかる処理の結果を、図１３Ｂに示す。図１３Ａと図１３Ｂを比較すると、排他的論理和プロセッサによる処理は、０、ならびに、１であって、それぞれが、ラインマスク記憶部５６に記憶されたデータ中の１のコラムがどこで始まりあるいは終了するか示すものが、まばらに配された(sparsely filled)アレイを生成するものである。
【０１２２】
次に、圧縮モジュール９は、ランレングス・エンコーダー６２を呼び出させる。かかるランレングス・エンコーダー６２は、排他的論理和ラインマスク記憶部６０内に記憶されたデータを、当該排他的論理和ラインマスク記憶部６０内に記憶されたそれぞれの１を分離する０の数を決定することにより、従来の方法で処理する。したがって、例えば、図１３Ｃに示すように、図１３Ｂにおける数のアレイは、図１３Ｃに示す数のセットに変換される。かかるデータは、次に、圧縮データ記憶部６４に記憶される。
【０１２３】
ビットマスク形式から、ラインマスク記憶部５６に記憶されたラインマスク形式へのデータの再配置は、ビットマスクを表すサイズを減少させない。しかし、排他的論理和動作の実行し、その後、ランレングス・エンコーデイングを用いる動作の組み合わせは、記憶するデータの全体量を約１０分の１(a factor of 10)に減少させる。これは、ほとんどの場合、あるレベルに存在する１は、次のレベルにおいて１によって表され、同様に、あるレベルに存する０は、次のレベルにおいて０によって表されるからである。したがって、排他的論理和プロセッサによる処理結果は、まばらに配されたアレイとなり、これにより、ランレングス・エンコーデイングによって大幅に圧縮されたアレイとなる。次に、圧縮データは、それが、プリンタドライバー２５、３０内に組み込まれるよう、プリンタドライバー生成コンピュータ２に送られるＣＤ  ＲＯＭ１０上に記録される。
【０１２４】
プリンタドライバーにおける圧縮済みビットマスクの使用
ここで、プリンタドライバー２５、３０において、本発明に基づき生成された圧縮データを使用することについて、図１４から図２０を参照しつつ説明する。
【０１２５】
図１４は、本発明の本実施形態に基づくホストコンピュータ３のブロック図である。ホストコンピュータ３のメインメモリ内に記憶されているのは、ワードプロセッシングプログラム等の文書生成プログラム２７およびプリンタドライバー２５である。さらに、クライエントコンピュータは、データを処理するマイクロプロセッサ８０、マイクロプロセッサによりアクセス可能なキャッシュメモリ８２、ならびに、プロセッサ８０により最近用いられたデータを記憶するページメモリ８４、をも備えている。
【０１２６】
本実施形態において、プリンタドライバー２５は、当該プリンタドライバーに組み込まれたプリンタドライバ生成コンピュータ２により選択されたテキストドライバー１１であるテキストプロセッサ８６、ならびに、プリンタドライバー生成コンピュータ２により画像ドライバー１３から選択された画像ドライバーである画像プロセッサ８８、を備えている。
【０１２７】
また、画像プロセッサ８８は、ビットマスク生成コンピュータ１によりＣＤ  ＲＯＭ１０記録され、プリンタドライバ生成コンピュータ２により画像データプロセッサ８８に組み込まれたデータである圧縮ビットマスクデータ９２、を含んでいる。かかる画像プロセッサ８８は、圧縮データ９２からラインビットマスクのセットを生成する解凍モジュール９４、解凍ラインマスク記憶部９５、文書作成部２７から受けた画像データを記憶する生画像データ記憶部９６、ならびに、画像プロセッサ８８により生成されたハーフトーンデータを記憶するハーフトーン画像データ記憶部９８、を備えている。さらに、プリンタドライバ２５は、それにホストコンピュータ３が接続されているプリンタ２８（図１４には図示せず）用に現在選択されている構成を記憶する設定データ記憶部９９を含んでいる。
【０１２８】
図１５を参照すると、ハーフトーン画像を生成するためのホストコンピュータ３の動作がここで示されている。
【０１２９】
まず、ホストコンピュータ３は、印刷される文書を生成する（Ｓ１５−１）ため、文書作成プログラム２７を用いる。かかる文書は、ワードプロセッシング、画像、あるいは、テキストおよび画像データの両方を含む、文書の形式により構成することもできる。
【０１３０】
文書ファイルの生成後、ホストコンピュータ３は、ユーザーが生成された文書を印刷する旨表明したかどうかを判断する（Ｓ１５−２）。そうである場合、ホストコンピュータ３は、生成された文書ファイルをハーフトーン画像データ９８に変換するため、プリンタドライバー２５を呼び出す。
【０１３１】
具体的には、プリンタドライバー２５は、印刷画像２９を出力するため用いられるプリンタ２８用に現在選択されている設定を識別するため、まず、設定データ９９をチェックする（Ｓ１５−３）。したがって、例えば、設定データ９９は、用いられる特定の印刷密度を表してもよい。設定データ９９をチェックした後、プリンタドライバ２５は、生データをハーフトーン画像に変換するために用いられる、圧縮ビットマスクデータ９２を選択する。
【０１３２】
具体的には、特定のプリンタ設定用のビットマスクのセット対応する圧縮ビットマスクデータ９２が、プリンタドライバー２５により識別される。かかるデータは、ビットマスク生成コンピュータ１の圧縮モジュール９により前もって生成された、ランレングスに符号化されたデータを含んでいる。
【０１３３】
ランレングスに符号化されたデータの一部の例を、図１６Ａに示す。次に、排他的論理和ビットマスクデータを生成するため、ランレングスに符号化されたデータを最初に用いたプリンタドライバー２５の解凍モジュール９４が、（Ｓ１５−４）が呼び出される。
【０１３４】
これは、各ラインが、圧縮ラインマスク記憶部９５に記憶された３２の入力を含む、０と１のアレイを生成する解凍部９４によって達成される。ランレングスに符号化されたデータの要素を順次取り出すことにより、解凍部は、生成されたアレイに、ランレングス符号化データの第１の数に対応する一連のゼロを組み込む。かかる数のゼロがアレイ内に組み込まれた後、かかるアレイの次の入力は、１に設定される。次に、ランレングス符号化データの次の要素が、処理される。ランレングス符号化データの次の要素に対応する複数の入力は、アレイ内で再び０に設定され、その後、別の入力が１に設定される。
【０１３５】
図１６Ｂは、図１６Ａに示すランレングス符号化データを用いて生成された３２Ｘ３２のアレイの一部の例である。
【０１３６】
圧縮ラインマスク記憶部９５に記憶された生成データは、全て０のデータから構成される３２ビットの２値数を有する解凍データにおける最後の３２ビットについて、排他的論理和動作を実行することにより、解凍部９４によって処理される。かかる排他的論理和動作の結果は、記憶され、次に、かかる数、ならびに、アレイ内の３２ビットの次のセットについて行われた排他的論理和動作の結果が記憶される。この動作は、３２ビットの最初のセットが２５６の３２ビット数の各グループに達するまで、連続するそ３２ビットの間繰り返される。
【０１３７】
図１６Ｂのアレイに対する、かかる処理の結果を、図１６Ｃに示す。処理の効果は、ビットマスクが図１２に示されたよう元々作られていた場合に、解凍ラインマスク記憶部９５内の解凍データを、ビットマスク生成コンピュータ１の圧縮モジュール９のラインマスク記憶部５６内に前から存在していたものとして、３２のラインビットマスクのセットに変換することである。すなわち、本実施形態において、解凍ラインマスク記憶部内に記憶されるのは、それぞれが２５６の３２ビットマスク数を有する、３２セットのリンクマスクであって、各セットの最初のラインは、全て１から構成される３２ビット数からなり、３２ビット数の２５６番目は、全て０から構成され、中間の数は、通常、０の数が徐々に増加する、ものである。
【０１３８】
図１５に戻ると、次に、プリンタドライバー２５は、印刷される文書ファイルの一部である文書ファイルが、テキストデータあるいは画像データを含むかどうかを判断する（Ｓ１５−５）。処理される文書の一部がテキストデータを含んでいる場合、テキストプロセッサモジュール８６が呼び出され、従来の方法により、テキストデータを画像データに変換するため用いられる（Ｓ１５−６）。
【０１３９】
それに代え、生成される文書ファイルの一部が、画像を表す場合には、画像プロセッサモジュール８８が呼び出され、その詳細を後述するハーフトーンデータを生成するため用いられる（Ｓ１５−７）。テキストプロセッサ８６又は画像プロセッサ８８のいずれかによりハーフトーンデータが生成されると、かかるデータは、生成されたハーフトーン画像内で１が表される場合、インクのドットを記憶することによりハーフトーン画像を印刷するため当該ハーフトーンデータを用いるプリンタ２８に送られる（Ｓ１５−８）。
【０１４０】
生成されたラインマスクを用いてのマルチレベルデータの変換
ここで、解凍リンクマスクを用いた画像プロセッサ８８による、マルチレベル画像データのハーフトーンデータへの変換について、図１７から図２０を参照して説明する。
【０１４１】
画像プロセッサ８８が、最初に呼び出されると、画像プロセッサ８８は、処理のため、生画像データ記憶部９６から画像データのラインを抽出する（Ｓ１７−１）。
【０１４２】
図１８は、画像を表すマルチレベル画像データの一部の例である。図１７の例において、マルチレベル画像データ１５４、１５３、１５３、１５４、１５３、１５４、２０、１５・・・を有する画像データの最初のラインは、画像プロセッサ８８により抽出される。従来、これらの数は、０から２５５の範囲にあり、０は黒を表し、２５５は白を表す。
【０１４３】
次に、画像プロセッサ８８は、ホストコンピュータ３のページメモリ８４内に、リンクマスクをロードする（Ｓ１７−２）。画像の最初のラインである場合、ページメモリ８４内に、２５６の３２ビット数であるラインマスクの最初のセットが、ロードされる。
【０１４４】
次に、マルチレベル画像データプロセッサのラインの、最初の画素が選択される（Ｓ１７−３）。図１８の例の場合、かかる画素は、図１７のアレイ内の位置（１、１）における１５４である。
【０１４５】
次に、画像プロセッサ８８は、かかる数を、直前に用いられていた値と比較する（Ｓ１７−４）。かかる値が、前に用いられていた値と等しくない場合、画像プロセッサは、次に、n+1番目の３２ビット数を、ページメモリ８４からキャッシュメモリ８２内に記憶させる（Ｓ１７−５）。ここで、nは、考慮されるマルチレベル画素の値と等しい。このように、黒を表す０に設定されたマルチレベルデータを処理する場合、一連の１を有する最初の３２ビット数が取り込まれる。
【０１４６】
図１９は、キャッシュメモリ８２内に記憶された３２ビット数の例である。
【０１４７】
画像プロセッサ８８は、キャッシュメモリ８２内に記憶された３２ビット数の入力の一つを識別するため、処理されるマルチレベルデータ用のx座標を用いる（Ｓ１７−６）。より具体的には、プリンタドライバ２５は、画素が処理される度に増やされ３２画素のそれぞれが処理された後０にリセットされる、座標値を記憶する。これは、３２を法とする数の算法(modulo 32 arithmetic)における現在のｘ座標と等しい。
【０１４８】
次に、画像プロセッサ８８は、キャッシュメモリ８２内の３２ビット数中の入力を特定するため、３２を法とする当該現在のx座標値を用いる。これは、０か１のどちらかであり、かかる値は、現在生成されているライン用のハーフトーン画像データ９８に加えられる。
【０１４９】
次に、画像プロセッサ８８は、処理される画像データのラインにおける最後の画素に達したかかどうか判断する（Ｓ１７−７）。達してない場合、前記ラインに沿った現在の位置用の現在のカウンターを、インクリメントし（Ｓ１７−８）、ページメモリ８４から３２ビット数を選択し、それをキャッシュメモリ８２に記憶し、次に、記憶された３２ビット数を、ハーフトーンデータに変換するよう用いるため、マルチレベル画像データの次の要素を、特定し、用いる（Ｓ１７−４からＳ１７−５）。
【０１５０】
処理されているラインのマルチレベル画素データの最後の入力に達すると、かかるライン用のハーフトーンデータ９８は、プリンタドライバー２５によって、画像データ内で１に出くわす度にインクドットを印刷することにより印刷画像の画像のラインを生成するため用いることができる、プリンター２９に出力される（Ｓ１７−９）。
【０１５１】
画像プロセッサ８８は、マルチレベル画素データの最終ラインが処理されたかどうかを判断する（Ｓ１７−１０）。未処理の場合、マルチレベルデータをハーフトーンデータで生成するために画像データの新しいセットが用いられる前に、生画像データ９６の次のラインが特定され（Ｓ１７−１１）、ページメモリ８４内のデータは、解凍されたビットマスクデータからの２５６の３２ビット数の次のセットにおけるリンクマスクデータの次のセット、により上書きされる（Ｓ１７−１からＳ１７−２）。
【０１５２】
ラインマスクデータを記憶し、用いることにより、生の画像データ９６のラインをハーフトーン画像データに変換するメモリ動作の回数は減少する。具体的には、画像データの各ラインについて、２５６の３２ビット数であるラインマスクデータの単一セットが、ページメモリ８４に転送される。かかるデータセットは、マルチレベルデータの全てのライン用の全ての画像データを、ハーフトーンデータに変換するため用いられる。全部のラインが処理された場合にのみ、別のデータがページメモリに書き込まれる。このことは、３２Ｘ３２の異なるビットマスクが、特定の階調の画素が印刷される毎にアクセスされる従来のビットマスク処理と対比される。
【０１５３】
図２０は、ハーフトーン画像に変換された後の、図１８に示されたマルチレベルデータの一部の例である。図２０と図１８を比較することにより判るが、一般に、低いレベルのマルチレベル画像データは、暗い色を表す画素のように見られるので、対応するほとんどのハーフトーンの値は、１に設定される。これとは逆に、高いレベルのマルチレベル画像データは、明るい色を表す画素のように見られるので、対応するのほとんどハーフトーンの値は、０に等しい。特定の画素が、０又は１のいずれに変換されているかに拘わらず、前記画素用のマルチレベル値、ならびに、マルチレベル画像データをハーフトーンデータに変換するために用いられた生成されたビットマスクは、画素の両方の位置により決定される。
【０１５４】
デジタル複製部が、マルチレベル画像データの形式で表される画像内でスキャンされたものだけを処理するよう構成されているので、デジタル複製部用のプリンタドライバー３０が、テキスト文書を処理するテキストプロセッサを必要としないことを除き、プリンタドライバー生成コンピュータ２により生成されたデジタル複製部４のプリンタドライバー３０は、ホストコンピュータ３に記憶されたプリンタドライバー２５と同じように動作する。
【０１５５】
他の変形例ならびに他の実施形態
上記実施形態においては、生成モジュール８の重みづけマスク記憶部４２に記憶されたデータを生成するため、単一の関数が用いられていたが、異なるレベル用の重みづけマップを生成するのに、異なる関数を用いることもできる。より具体的には、ほとんど０からなる(predominately zero)アレイと関連するビットマスク用の重みづけマップを生成する場合、長い距離の後ゼロに下落する、距離により決定される関数を用いることもでき、ビットマスクアレイに多数の１を含むビットマスクデータの複数のレベルについては、より急激にゼロに下落するので、小規模な近接するアレイに基づき値を生成させる関数を用いることもできる。
【０１５６】
上記実施形態においては、重みづけ値の演算に用いられた関数は、特定の点と１の値を含むアレイの一部との間のユークリッド距離(Euclidian distance)、に反比例するが、他の関数を用いるようにしてもよい。具体的には、
【０１５７】
【数７】
2004350289.tif 000010
【０１５８】
ここで、∂ｘは、ｘ軸に沿った２点間の距離であり、∂ｙは、ｙ軸上の２点間の距離であり、上記に比例する関数を有する代わりに、いかなる適切な、例えば、以下の関数、を用いるようにしても良い。
【０１５９】
【数８】
2004350289.tif 000011
【０１６０】
ここで、nは、用いることが可能な選択値である。
【０１６１】
これに代え、以下のような、より複雑な関数を用いることもできる。
【０１６２】
【数９】
2004350289.tif 000012
【０１６３】
ここで、maxおよびminは、それぞれ、使用可能な最大および最小関数である。
【０１６４】
重みづけ関数は、最終的な印刷画像においてドットを拡散させることを目的としているので、ｘ方向おおよびｙ方向におけるドットのアクペクト比が異なる場合、重みづけ関数は、かかる相違を反映させる必要がある。したがって、例えば、ドット間のｘ方向への分離が、ｙ方向におけるドット分離の？倍である場合、前記式における値∂ｘならびに∂ｙは、それぞれ、？∂ｘならびに∂ｙに置き換えられる。
【０１６５】
前の実施形態において、特定の方法で生成されたビットマスクは、ラインマスクのセットに再配置し、その後、排他的論理和の実行に続き、ランレングス・エンコーデイングをすることにより圧縮することで処理されると説明したが、そこで初期マスクが生成されるやり方を、本実施形態で説明した方法に限定する必要はないこと、が理解されよう。
【０１６６】
前述した方法でビットマスクを生成する効果としては、まず、生成されたビットマスクが、過度の輪郭削りを生じさせず、よく拡散されたドットパターンを含む画像を生成することができること、ならびに、かかる方法により、あるレベル用のアレイ内の１のほとんどは、通常、次のレベルにおける１まで繰り返され、排他的論理和データ内の０の列は、比較的長くなるので、データ圧縮がうまくいくこと、がある。
【０１６７】
上記実施形態において、圧縮されたビットマスクセットの全ては、印刷が行われる際に、解凍されると説明したが、ビットマスクの選択された部分を異なる時点で圧縮しても良いことが理解される。より具体的には、処理されるマルチレベル画像の各ライン用に、かかるラインだけを処理するためのビットマスクデータが圧縮され、マルチレベルデータを２値のハーフトーンデータに変換するために用いられる。マルチレベルデータの次のラインが処理されていた場合、次に、当該次のラインを処理するためのかかるビットマスクデータが、解凍される。したがって、画像の特定のラインを処理するためのビットマスクデータが解凍される度に、画像データの前のラインを処理するためのビットマスクデータを前に記憶したのと同じメモリ位置に記憶することができるので、ビットマスクデータを記憶するためのメモリの全体量を最小にすることができる。
【０１６８】
上記実施形態においては、３２Ｘ３２のビットマスクアレイが生成されることが説明されていたが、それにふさわしいサイズ又は形状であれば、現在のマスク記憶部４６、重みづけマップ記憶部４８ならびに乱数記憶部を適切に設定することにより、どのようなアレイを生成しても良いことが理解される。同様に、上記実施形態においては、近接するレベル用に次のビットマスクのため変更された１の数は、最初の１６レベルについては４に設定され、後のレベルについては、さらに最大４まで追加すると述べたが、これらの数は、他の実施形態において変更可能であることが理解される。一般に、これが輪郭削りを減少させ、データ圧縮を向上させるので、あるレベルのビットマスクにおける１のいくつかが、続くビットマスクに複製されることが好ましい。
【０１６９】
なお、異なるレベルについて変更される現在の１の数を、連続する各レベルに加えられる、異なる１の数の倍数あるいは除数(fraction)に設定してもよい。また、変更される現在の１入力数は、全ての連続するレベルについて同じである必要はない。
【０１７０】
したがって、例えば、各レベルにおいて変更される現在の１の入力の平均値を表す値によって増えたカウントを、そのまま保つことも可能である。特定のレベルについて変更が可能な最大値を、現在のカウントの整数値と等しく設定することもできる。かかるレベル用のビットマスクデータが決定されると、変更される実際の１の入力数が、現在のカウントから減じられる。したがって、例えば、２．５が許容される場合、レベル毎に変更される１の入力は、最初のレベルの間、２ドット変更され、第二レベルついてのカウントは、２．５−２＋２．５＝３に設定される。第二レベルのビットマスクにおいて、１つの１入力のみが変更されていた場合、カウントは、次のレベルにおいて４つの１入力の変更を許容する３−１＋２．５＝４．５となるよう、更新される。
【０１７１】
上記実施形態においては、直前のビットマスクを示さない１入力の総数が既定値を超えない場合、いつでも、どの１入力の位置でも変更可能なシステムについて説明した。かかる実施形態においては、各インターアクションにおいて、ビットマスク内で１および０の拡散についての改良を最大にする、許容された変更が行われる。かかる位置変更は、１および０の拡散についての改良がなされなくまるまで、あるいは、繰り返しの最大数に達するまで、行われる。
【０１７２】
明るい影用に印刷されたドットが、暗い影を印刷するためのドットパターンに現れない場合に、輪郭削りに伴う問題が生じる。直前のビットマスク内に表された１入力が移動するたびに、輪郭削りの潜在的な量を増加させる。それとは逆に、明るい影に現れない暗い影内の印刷ドット数は増加しないので、前のビットマスクに現れていない１入力の位置を変更しても、輪郭削りの量を増加させない。しかし、直前のビットマスク内に現れない１入力の一部を変更することにより、ビットマスクにおける１および０の全体的な拡散について改良が見られる。
【０１７３】
別の実施形態において、変更に供される入力を選択するため、より複雑なルールであって、さらに輪郭削りを制限するもの、を用いてもよい。したがって、例えば、アレイにおいて１入力の全体的な拡散を大きく改良させることのみが生じるよう、１入力の位置変更を限定してもよい。これは、拡散の改良度合を監視し、改良がしきい値を超えるとともに、現在の１入力のみの変更を許容することによって達成することもできる。適切な度合は、現在の１入力用に提案された新しい位置に関連する重みが、少なくとも、現在の１入力の現在位置に関連する重みより１％低い値である。拡散に関する改良が、しきい値に満たないことが判っていた場合、１入力の変更は、前のレベル内の１入力に対応しない１入力に限定してもよい。
【０１７４】
代替のシステムは、本実施形態において、拡散についての最大の改良を生じさせる変更が、最初に起こるよう選択された、という事実を利用することもできる。輪郭削りをさらに減少させるためのシステムにおいては、そのアレイのための新たな入力が変更されていなかった場合にのみ、移動する現在の１入力を許容してもよい。各アレイ用の新たな入力が適切と考えられる初期位置に位置するので、新たな入力の位置を、アレイにおける１入力の拡散についてわずかな変更のみを生じさせるよう変更する。しかし、かかる変更は、輪郭削りを増加させないので、新たな入力位置の全てを最適化することが賢明である。変更用のいずれか新たな入力を選択する前に選択された、現在の入力変更のみを許容することにより、現在の１入力の位置の変更を許容する柔軟性のあるしきい値であって、アレイ用の新たな入力位置の変更から可能になる、拡散について改良を生じさせるレベルに設定されるもの、を得ることができる。
【０１７５】
前述の実施形態を用いて生成されたビットマスクデータは、比較的小さいので、圧縮後は、特定のプリンタドライバー内に多数のビットマスクを記憶することができる。したがって、例えば、あるプリンターにおいて異なる解像度において印刷された、異なるアスペクト比用の多数の異なるビットマスクを、記憶し、プリンタドライバーを用いて選択された設定データに基づいて、それぞれ解凍することもできる。
【０１７６】
上記実施形態は、グレーレベルデータを参照しているが、本発明は、カラー印刷にも同様に適用可能であることが理解される。単一のマルチレベル画像ではなく、カラー印刷の場合、各画像を表現するため、それぞれが印刷される各色用の３又は４のマルチレベル画像が用いられる。これらのマルチレベル画像は、印刷される各色用のハーフトーン画像のセットを生成するため、既述の方法によりビットマスクデータを用い、別途処理される。次に、かかるハーフトーン画像は、１枚のカラー画像を出力するため、互いにその上に印刷される。
【０１７７】
カラー画像用のビットマスク場合、各色用のハーフトーンデータを生成するため、異なるビットマスクデータが用いられることが好ましい。したがって、最終的な出力画像におけるドットの拡散は、外見上好ましいものとなる。かかるビットマスクのセットを生成するため、全ての色の表現を明らかにする、より複雑な重みづけ関数を用いることもできる。  それに代えて、カラー画像について、全ての色用にビットマスクの単一セットを用いることもできる。かかるシステムにおいては、異なる色用のビットマスクの使用を相殺する(to offset)よう、マルチレベルデータ用の座標を処理することが望ましい。したがって、例えば、座標ｘ、ｙの画素の場合、１色で印刷するかどうかは、ｙ番目のライン用のラインマスクのｘ番目の入力をチェックすることにより決定され、他の色については、ｙ＋∂番目のライン用のラインマスクのｘ＋∈番目の入力をチェックすることにより決定される。ここで、∈および∂は、異なる色についての相違を相殺するものである。
【０１７８】
上記実施形態においては、マルチレベル画像データの各画素用にギャップ又は単一のインクドットを生成するシステムが説明されていたが、出力画像の解像度は、元のマルチレベル画像以下でもそれ以上でもよいこと、が理解される。出力画像が、元のマルチレベル画像の解像度より低い場合、当該画像をハーフトーン画像に変換するビットマスクを選択するため、画素ブロック用の平均されたマルチレベルデータ値を用いてもよい。これとは逆に、出力画像が、元のマルチレベル画像の解像度より高い場合、出力画像の対応する領域を表すためにビットマスクデータのブロックを識別するよう、画素用のマルチレベルデータ値を用いるようにしてもよい。
【０１７９】
上記実施形態においては、プリンタドラーバーについて説明がなされたが、本発明は、ビットマスクを用いて処理されるどのようなハーフトーン画像に対しても同様に適用可能であることが理解される。したがって、例えば、本発明は、ハードウエアあるいはソフトウエアによるラスター画像処理プロセッサ、ならびに、プリンタ自身の中で実行されるハーフトーン処理に適用可能である。
【０１８０】
図面を参照して説明された本発明複数の実施形態は、コンピュータ装置ならびにコンピュータ装置内で実行されるプロセスを含んでおり、また、当該発明は、コンピュータプログラム、具体的には、キャリヤ上又はその中のコンピュータプログラムであって、本発明を具現化するもの、にも及ぶ。前記プログラムは、ソース又はオブジェクトコード、あるいは、本発明にかかるプロセスを実行するために用いられるのに適切であれば、他のどのような形式であってもよい。前記キャリアは、プログラムを搬送することができる実体、あるいは、装置のいずれであってもよい。
【０１８１】
例えば、前記キャリアは、例えば、ＲＯＭ、すなわち、ＣＤ  ＲＯＭ、又は、半導体ＲＯＭ、フロッピィディスク又はハードデイスク等の磁気記録媒体、等の記憶媒体を備えていてもよい。また、かかるキャリアは、電気または光学ケーブル又は無線、あるいは、他の方法を通じて搬送される電気的または光学的信号等の、送信可能なキャリアでもよい。  プログラムが、ケーブル又は他の装置あるいは手段で直接搬送される信号により具現化された場合、前記キャリアは、かかるケーブル又は装置あるいは手段により構成される。
【０１８２】
なお、かかるキャリアは、その中に前記プログラムが埋め込まれている集積回路であってもよく、当該集積回路は、関連するプロセスを実行するよう、あるいは、かかる実行で使用されるよう改造される。
【図面の簡単な説明】
【０１８３】
【図１Ａ】図１Aは、本発明の一実施形態に基づき、ビットマスクのセットを用いる印刷に伴うステップの略図を示している。
【図１Ｂ】図１Ｂは、本発明に基づきメモリ内に記憶されたビットマスクのセットブロック図である。
【図２】図２は、本発明の一実施形態に基づく、ビットマスクアレイ生成システム、プリンタドライバーの部品の全体、ならびに、印刷された画像、を示すブロック図である。
【図３】図３は、図２のシステムのビットマスク生成コンピュータの一部を構成する、生成モジュールのブロック図である。
【図４】図４は、図２のシステムのビットマスク生成コンピュータにより行われる、処理のフロー図である。
【図５】図５は、図３の生成モジュールにより生成された、重みづけマスクの一例である。
【図６】図６は、図３の生成モジュールにより生成されたビットマスクアレイ内に含まれる１の位置を決定するための、処理のフロー図である。
【図７Ａ】図７Ａは、生成されるビットマスクを表す、数の配置の抜粋の一例である。
【図７Ｂ】図７Ｂは、図５に示す重みづけマスクを用い図７Ａの数の配置用に生成された、重みづけマップの一例である。
【図８】図８は、そのためにビットマスクが生成される、異なるレベルの階調用の重みづけマップの生成を変更するための、関数を示すグラフである。
【図９Ａ】図９Ａは、ビットマスクへの１の追加、ならびに、１が追加された後のその後の変更を示す例である。
【図９Ｂ】図９Ｂは、ビットマスクへの１の追加、ならびに、１が追加された後のその後の変更を示す例である。
【図９Ｃ】図９Ｃは、ビットマスクへの１の追加、ならびに、１が追加された後のその後の変更を示す例である。
【図１０】図１０は、ビットマスクを変更するための、図３の生成モジュールの処理を示すフロー図である。
【図１１】図１１は、図２のシステムのビットマスク生成コンピュータの一部を構成する、圧縮モジュールのブロック図である。
【図１２】図１２は、図３の生成モジュールにより生成されたビットマスクを、圧縮可能にするための、データの再配置を示すブロック図である。
【図１３Ａ】図１３Ａは、圧縮されるビットマスクを表す、データの一例である。
【図１３Ｂ】図１３Ｂは、圧縮されるビットマスクを表す、データの一例である。
【図１３Ｃ】図１３Ｃは、圧縮されるビットマスクを表す、データの一例である。
【図１４】図１４は、図２のプリンタドライバー生成部により生成されたプリンタドライバーを含み図２のシステムの一部を構成する、ホストコンピュータのブロック図である。
【図１５】図１５は、図１４のプリンタドライバーを用いた、印刷プロセスのフロー図である。
【図１６Ａ】図１６Ａは、図１４のプリンタドライバーによる、データの圧縮の一例である。
【図１６Ｂ】図１６Ｂは、図１４のプリンタドライバーによる、データの圧縮の一例である。
【図１６Ｃ】図１６Ｃは、図１４のプリンタドライバーによる、データの圧縮の一例である。
【図１７】図１７は、図１４のホストコンピュータのプリンタドライバーによる、ハーフトーン画像の生成フロー図である。
【図１８】図１８は、画像の一部を表す、マルチレベル階調値の一例である。
【図１９】図１９は、印刷される画像において画素をどのように表すかを決定するため、図１４のホストコンピュータのプリンタドライバーを用いた、ビットマスクの一部の例である。
【図２０】図２０は、図１８の階調値の配列を変換することにより生成された、ハーフトーン画像の一部の例である。
【図１Ａ】
2004350289.tif 000013
【図１Ｂ】
2004350289.tif 000014
【図２】
2004350289.tif 000015
【図３】
2004350289.tif 000016
【図４】
2004350289.tif 000017
【図５】
2004350289.tif 000018
【図６】
2004350289.tif 000019
【図７Ａ】
2004350289.tif 000020
【図７Ｂ】
2004350289.tif 000021
【図８】
2004350289.tif 000022
【図９Ａ】
2004350289.tif 000023
【図９Ｂ】
2004350289.tif 000024
【図９Ｃ】
2004350289.tif 000025
【図１０】
2004350289.tif 000026
【図１１】
2004350289.tif 000027
【図１２】
2004350289.tif 000028
【図１３Ａ】
2004350289.tif 000029
【図１３Ｂ】
2004350289.tif 000030
【図１３Ｃ】
2004350289.tif 000031
【図１４】
2004350289.tif 000032
【図１５】
2004350289.tif 000033
【図１６Ａ】
2004350289.tif 000034
【図１６Ｂ】
2004350289.tif 000035
【図１６Ｃ】
2004350289.tif 000036
【図１７】
2004350289.tif 000037
【図１８】
2004350289.tif 000038
【図１９】
2004350289.tif 000039
【図２０】
2004350289.tif 000040