(57)【特許請求の範囲】
【請求項１】
画像データのソースパターンをマスクパターンでマスク演算する画像処理装置において、
前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、演算した各ビットＯＮ画素数の中で最大のビットＯＮ画素数が得られたときの画素を開始位置として計算する手段と、
前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とする手段と
を有する画像処理装置。
【請求項２】
画像データのソースパターンをマスクパターンでマスク演算する画像処理装置において、
前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、算出した各ビットＯＮ画素数の中で前記ソースパターンのビットＯＮ画素数と前記マスクパターンのビットＯＮ画素数の積で表される理論濃度に対応する濃度が得られたときの画素を開始位置として計算する手段と、
前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とする手段と
を有する画像処理装置。
【請求項３】
複数種類のマスクパターンの各々毎に前記マスクパターンの開始位置を予め計算してそれぞれをマスクパターンＩＤと対応してテーブルに記憶し、
指定されたマスクパターンＩＤに対応するマスクパターンの開始位置を前記テーブルから検索し、その開始位置にずらしたマスクパターンと前記ソースパターンとをマスク演算することを特徴とする請求項１または２記載の画像処理装置。
【請求項４】
指定されたマスクパターンＩＤを前記テーブルから検索して存在しなかった場合にそのマスクパターンの前記開始位置を新たに計算し、前記テーブルに空き領域がないときには前記テーブル上の既存のデータを削除してその空いた領域に記憶することを特徴とする請求項３記載の画像処理装置。
【請求項５】
前記テーブル上の既存のデータを削除する場合、最後に参照された時刻が最も古いデータを削除することを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記テーブル上の既存のデータを削除する場合、最も使用頻度が少ないデータを削除することを特徴とする請求項４記載の画像処理装置。
【請求項７】
複数種類のマスクパターンの内、代表的なマスクパターンの各々毎に前記マスクパターンの開始位置を予め計算してそれぞれをマスクパターンＩＤと対応してテーブルに記憶することを特徴とする請求項３ないし６のいずれか１項に記載の画像処理装置。
【請求項８】
前記代表的なマスクパターンの開始位置を計算するタイミングは、起動時であることを特徴とする請求項７記載の画像処理装置。
【請求項９】
前記ソースパターンが予め決められている場合、そのソースパターンとマスク演算するマスクパターンのテーブルを有することを特徴とする請求項３ないし８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記ソースパターンは、疑似階調を表現するディザパターンであることを特徴とする請求項９記載の画像処理装置。
【請求項１１】
前記ディザパターンが描画対象となる図形の種類毎のディザパターンであって、ディザパターン毎にマスクパターンを切り替えることを特徴とする請求項１０記載の画像処理装置。
【請求項１２】
前記ディザパターンがＣＭＹＫそれぞれの疑似階調を表現するディザパターンであって、ＣＭＹＫの全てに対してマスクパターンをマスク演算したパターンにおけるビットＯＮ画素数が最大になるような前記マスクパターンの開始位置を計算することを特徴とする請求項１０または１１記載の画像処理装置。
【請求項１３】
前記ディザパターンの濃度毎に前記マスクパターンの開始位置を計算することを特徴とする請求項１０または１１記載の画像処理装置。
【請求項１４】
前記マスクパターンがトナーやインク等の印刷色材を節約するためのパターンであることを特徴とする請求項１から１３のいずれか１項に記載の画像処理装置。
【請求項１５】
前記ビットマップパターンの１画素が多値で表現されることを特徴とする請求項１から１４のいずれか１項に記載の画像処理装置。
【請求項１６】
前記計算された開始位置にずらしたマスクパターンと前記ビットマップパターンとをマスク演算した結果の出力先がレーザプリンタであることを特徴とする請求項１から１５のいずれか１項に記載の画像処理装置。
【請求項１７】
前記計算された開始位置にずらしたマスクパターンと前記ビットマップパターンとをマスク演算した結果の出力先がインクジェットプリンタであることを特徴とする請求項１から１５のいずれか１項に記載の画像処理装置。
【請求項１８】
請求項１ないし１７のいずれか１項に記載の画像処理装置を備えていることを特徴とする画像形成装置。
【請求項１９】
請求項１ないし１７のいずれか１項に記載の画像処理装置と、
描画データを入力するデータ入力装置と、
前記画像処理装置によって処理された画像データに基づいて記録媒体に可視画像を出力する出力装置と、
を備えてなる画像出力システム。
【請求項２０】
画像データのソースパターンをマスクパターンでマスク演算する画像処理方法において、
前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、
算出した各ビットＯＮ画素数の中で最大のビットＯＮ画素数が得られたときの画素を開始位置として計算し、
前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とすることを特徴とする画像処理方法。
【請求項２１】
画像データのソースパターンをマスクパターンでマスク演算する画像処理方法において、
前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、
算出した各ビットＯＮ画素数の中で前記ソースパターンのビットＯＮ画素数と前記マスクパターンのビットＯＮ画素数の積で表される理論濃度に対応する濃度が得られたときの画素を開始位置として計算し、
前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とすることを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データをマスクパターンでマスクする画像処理装置、当該画像処理装置を備えた画像形成装置、前記画像処理装置で画像処理された画像を出力する画像出力システム及び画像データをマスクパターンでマスクする画像処理方法に関する。
【０００２】
【従来の技術】
一般に、グラフィック用アプリケーションやＤＴＰアプリケーションでは、ユーザが指定した任意の図形の範囲内をマスクパターンでマスクして描画する方法を用意していることが多い。例えばマスクパターンのビットＯＮの画素には指定された色を、マスクパターンのビットＯＦＦの画素には背景を残すことで半透明となるような図形を作成する方法である。
【０００３】
また、階調表現能力の低い印刷装置では、ディザパターン等を用いて指定された色濃度を一定の面積を用いて疑似階調表現する手法が多く用いられる。この場合、マスクパターン上に指定された色を表現するためにはマスクパターンとディザパターンのＡＮＤ演算を行うことになる。しかしながら、この演算により疑似階調表現に必要なビットマップパターンが得られず、指定された濃度より低い濃度で印刷される場合がある。これは双方の繰り返し周波数が近いほどその誤差が拡大し、周波数が一致、つまり同じ幅高さを持つ状態で誤差最大となる可能性が大きくなる。マスクパターンとディザパターンによっては全く印刷されない（濃度０）場合もある。
【０００４】
また、プリンタではトナーやインク等の印刷色材を節約するための機能を用意していることが多い。それには一定のマスクパターンでページ全体の描画ドットの削減を行う方式が一般的であるが、描画図形によってはドットの削減量が多く、場合によっては全く印刷されない等、オリジナルの図形から大きくかけ離れてしまう場合がある。
【０００５】
なお、この種の従来例としては、例えば特開平０９−２４５１５０号公報には、印刷時の記録材を節約するための削減用パターンを複数用意し、過度な削減結果とならないように利用者にパターンを選択させる方法が提案されているが、この方法では、ユーザアプリケーションが指定するパターンのようにパターンが限定されている場合は、全く印刷されないことを回避するのが不可能である。また、特開２０００−２０３０１０号公報や特開２０００−２７０２１４号公報には、色濃度に応じて間引き率（とそれに対応したマスクパターン）を変化させているが、この方法も、ユーザアプリケーションが指定するパターンのようにパターンが限定されている場合は全く印刷されないことを回避するのが不可能である。
【０００６】
【発明が解決しようとする課題】
本発明は上記従来例の問題点に鑑み、画像データをマスクパターンでマスクする場合に、画像が全く印刷されないことを防止することができる画像処理装置、画像形成装置、画像出力システム、及び画像形成方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために第１の手段は、画像データのソースパターンをマスクパターンでマスク演算する画像処理装置において、前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、演算した各ビットＯＮ画素数の中で最大のビットＯＮ画素数が得られたときの画素を開始位置として計算する手段と、前記計算された開始位置を前記ソースパターンのマスク演算における前記マスクパターンの開始位置とする手段とを有することを特徴とする。
【０００８】
第２の手段は、上記目的を達成するために、画像データのソースパターンをマスクパターンでマスク演算する画像処理装置において、前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、算出した各ビットＯＮ画素数の中で前記ソースパターンのビットＯＮ画素数と前記マスクパターンのビットＯＮ画素数の積で表される理論濃度に対応する濃度が得られたときの画素を開始位置として計算する手段と、前記計算された開始位置を前記ソースパターンのマスク演算における前記マスクパターンの開始位置とする手段とを有することを特徴とする。
【０００９】
第３の手段は、第１、第２の手段において複数種類のマスクパターンの各々毎に前記マスクパターンの開始位置を予め計算してそれぞれをマスクパターンＩＤと対応してテーブルに記憶し、指定されたマスクパターンＩＤに対応するマスクパターンの開始位置を前記テーブルから検索し、その開始位置にずらしたマスクパターンと前記ビットマップパターンとをマスク演算することを特徴とする。
【００１０】
第４の手段は、第３の手段において、指定されたマスクパターンＩＤを前記テーブルから検索して存在しなかった場合にそのマスクパターンの前記開始位置を新たに計算し、前記テーブルに空き領域がないときには前記テーブル上の既存のデータを削除してその空いた領域に記憶することを特徴とする。
【００１１】
第５の手段は、第４の手段において、前記テーブル上の既存のデータを削除する場合、最後に参照された時刻が最も古いデータを削除することを特徴とする。
【００１２】
第６の手段は、第４の手段において、前記テーブル上の既存のデータを削除する場合、最も使用頻度が少ないデータを削除することを特徴とする。
【００１３】
第７の手段は、第３ないし第６の手段において、複数種類のマスクパターンの内、代表的なマスクパターンの各々毎に前記マスクパターンの開始位置を予め計算してそれぞれをマスクパターンＩＤと対応してテーブルに記憶することを特徴とする。
【００１４】
第８の手段は、第７の手段において、前記代表的なマスクパターンの開始位置を計算するタイミングは、起動時であることを特徴とする。
【００１５】
第９の手段は、第３ないし第８の手段において、前記ソースパターンが予め決められている場合、そのソースパターンとマスク演算するマスクパターンのテーブルを有することを特徴とする。
【００１６】
第１０の手段は、第９の手段において、前記ソースパターンは、疑似階調を表現するディザパターンであることを特徴とする。
【００１７】
第１１の手段は、第１０の手段において、前記ディザパターンが描画対象となる図形の種類毎のディザパターンであって、ディザパターン毎にマスクパターンを切り替えることを特徴とする。
【００１８】
第１２の手段は、第１０または第１１の手段において、前記ディザパターンがＣＭＹＫそれぞれの疑似階調を表現するディザパターンであって、ＣＭＹＫの全てに対してマスクパターンをマスク演算したパターンにおけるビットＯＮ画素数が最大になるような前記マスクパターンの開始位置を計算することを特徴とする。
【００１９】
第１３の手段は、第１０または第１１の手段において、前記ディザパターンの濃度毎に前記マスクパターンの開始位置を計算することを特徴とする。
【００２０】
第１４の手段は、第１ないし第１３のいずれかの手段において、前記マスクパターンがトナーやインク等の印刷色材を節約するためのパターンであることを特徴とする。
【００２１】
第１５の手段は、第１ないし第１４のいずれかの手段において、前記ビットマップパターンの１画素が多値で表現されることを特徴とする。
【００２２】
第１６の手段は、第１ないし第１５の手段のいずれかの手段において、前記計算された開始位置にずらしたマスクパターンと前記ビットマップパターンとをマスク演算した結果の出力先がレーザプリンタであることを特徴とする。
【００２３】
第１７の手段は、第１ないし第１６の手段のいずれかの手段において、前記計算された開始位置にずらしたマスクパターンと前記ビットマップパターンとをマスク演算した結果の出力先がインクジェットプリンタであることを特徴とする。
【００２４】
第１８の手段は、請求項１ないし１７のいずれか１項に記載の画像処理装置を画像形成装置が備えていることを特徴とする。
第１９の手段は、第１ないし第１７のいずれかの手段に係る画像処理装置と、描画データを入力するデータ入力装置と、前記画像処理装置によって処理された画像データに基づいて記録媒体に可視画像を出力する出力装置とから画像出力システムを構成したことを特徴とする。
第２０の手段は、画像データのソースパターンをマスクパターンでマスク演算する画像処理方法において、前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、算出した各ビットＯＮ画素数の中で最大のビットＯＮ画素数が得られたときの画素を開始位置として計算し、前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とすることを特徴とする。
第２１の手段は、画像データのソースパターンをマスクパターンでマスク演算する画像処理方法において、前記マスクパターンの原点を１画素分ずらしては順次、前記ソースパターンとマスク演算してビットＯＮ画素数を算出し、算出した各ビットＯＮ画素数の中で前記ソースパターンのビットＯＮ画素数と前記マスクパターンのビットＯＮ画素数の積で表される理論濃度に対応する濃度が得られたときの画素を開始位置として計算し、前記計算された開始位置を、前記ソースパターンのマスク演算における前記マスクパターンの開始位置とすることを特徴とする。
【００２５】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
【００２６】
＜第１の実施形態＞
図１は本発明に係る画像出力システムの一実施形態を示すブロック図、図２はマスク演算を示す説明図、図３は図１の画像処理装置のマスク演算処理を説明するためのフローチャート、図４は図１の画像処理装置のマスク演算処理を示す説明図である。
【００２７】
図１において、データ入力装置１は画像処理装置２に描画データを入力し、画像処理装置２は、インタプリタ１０と、マスク座標計算処理部１１と、マスク描画処理部１３を有する図形描画処理部１２と、ＣＰＵ１４、マスクパターンメモリ２１を有する中間データメモリ２０と、ビットマップパターンメモリ２２と、ページメモリ２３で構成され、画像データを出力装置３に出力する。
【００２８】
画像処理装置２に入力された描画データはインタープリタ１０に入力され、その後の描画処理に適した中間データに解釈され、中間データは中間データメモリ２０に蓄積される。計算処理はＣＰＵ１４が行う。中間データは描画範囲指定命令、描画色指定命令等で構成され、その中にマスクパターン指定命令を含む。マスクパターン指定命令はマスクパターンメモリ２１にデータを格納する。
【００２９】
図形描画処理部１２は中間データメモリ２０の内容に従ってそこに含まれる図形を描画し、このとき、指定色に対応したビットマップパターンをビットマップパターンメモリ２２から取得してページメモリ２３に描画する。マスク描画処理部１３はマスクパターンメモリ２１に格納されたマスクパターンと、指定された描画範囲、描画色で描画処理を行う。その際、マスク座標計算処理部１１を用いてマスクパターンの開始座標の計算を行う。１ページ分の描画命令が終了したら、ページメモリ２３の内容を出力装置３に出力する。
【００３０】
図２を参照して、図１のマスク描画処理部１３で行われるマスク演算の簡単な例を説明する。まず、図１のビットマップパターンメモリ２１から例えば図２（ａ）に示すように演算元となるソースパターンＳを得る。これは、描画色指定命令で指定された描画色に対応したビットマップである。大きさは８×８の６４画素であり、白部分をビットＯＦＦ、黒部分をビットＯＮとする。
【００３１】
また、マスクパターンメモリ２１から例えば図２（ｂ）に示すようなマスクパターンＭを得る。これは、マスクパターン指定命令に対応したビットマップである。簡単のためソースパターンＳと同じ大きさ（＝８×８＝６４画素）とする。図２（ｃ）はソースパターンＳとマスクパターンＭの同じ画素位置をＡＮＤ演算した結果のパターンＤを示す。これをページメモリ２３上の指定された範囲に、指定されたページメモリとの演算方法（例えば上書きならＳＥＴ演算）を用いて描画する。実際の描画では、描画範囲に合わせて、ソースパターンＳを縦横にタイル状に敷き詰めたパターン集合と、同じくマスクパターンＭを縦横に敷き詰めたパターン集合との演算を行う。
【００３２】
第１の実施の形態では、ＡＮＤ演算結果パターンＤが最大濃度（ビットＯＮが最大個数）になるようにマスクパターンＭの開始位置座標を移動する。マスクパターンＭは縦横繰り返して用いられるので、開始位置座標を移動してもパターン自体は変わらない。
【００３３】
図３は、マスク座標計算処理部１１で計算される開始位置座標の処理手順を示すフローチャートである。まず、ステップＳ１においてビットＯＮ最大画素数Ｄmax,、最大画素数となる開始位置座標（Ｄx，Ｄy）を０に初期化する。開始位置座標（Ｄx，Ｄy）はステップＳ５で用いられる。次いでステップＳ２においてマスクパターン開始Ｙ座標であるｙを０に初期化し、次いでステップＳ３においてマスクパターン開始Ｘ座標であるｘを０に初期化する。
【００３４】
次いでステップＳ４においてマスクパターンＭの原点を（ｘ，ｙ）分（右下に）ずらす。マスクパターンＭは縦横繰り返して用いられるので、ずらしたことによりはみ出た部分は循環する。例えば１画素分、縦にずらす（ｙ＝１）のであれば全画素を１画素分縦にずらした後、はみ出た最終行が１行目に移動する。また、２画素分、横にずらす（ｘ＝２）のであれば、全画素を２画素分横にずらした後、はみ出た右から２画素分が、そのまま左から２画素分に移動する。できたマスクパターンＭ（ｘ，ｙ）とソースパターンＳでマスク演算（ＡＮＤ）を行い、ビットＯＮの画素数をカウントし、それを変数Ｄnumに設定する。
【００３５】
次いでステップＳ５においてステップ４でカウントされたＤnumと、今までのビットＯＮ最大画素数Ｄmaxと比較し、Ｄnumのほうが大きければステップＳ６へ進み、他方、Ｄmax以下だったらステップＳ７へ進む。ステップＳ６では、ステップＳ５でＤnum＞Ｄmaxと判定されたので、Ｄnum，ｘ，ｙをそれぞれＤmax，Ｄx，Ｄyに保存する。これが現時点でのビットＯＮ画素最大となる数と位置となる。
【００３６】
ステップＳ７ではｘを１つ増やし、同一ライン（ｙ）での右方向へのずらしが全パターン終了したらステップＳ８に進み、他方、途中であればステップＳ４に戻る。ステップＳ８ではｙを１つ増やし、下方向へのずらしが全パターン終了したら処理を終了し、他方、途中であればステップＳ３に戻る。処理終了した時点の （Ｄx, Ｄy） がビットＯＮ画素が最大となるマスクパターンＭのずらし量、つまり、マスクパターンＭの開始座標点となる。
【００３７】
図４は本実施形態の適用例を示す図である。まず、図４（ａ）のソースパターンＳと図４（ｂ）のマスクパターンＭを入力として図３のフローチャートを用いて計算すると
（Ｄx, Ｄy）＝（３, ３）
という結果が得られる。マスクパターンＭを（３，３）ずらした結果が図４（ｃ）に示すマスクパターンＭ’である。これでソースパターンＳのマスク演算を行うと、図４（ｄ）に示す結果パターンＤが得られる。これは、図４（ｂ）におけるマスクパターンＭの左上にある２×２のビットＯＮ画素２が図４（ｃ）におけるマスクパターンＭ’の位置３に移動し、これと図４（ａ）におけるソースパターンＳの中央にある２×２のビットＯＮ画素１が重なり、結果パターンＤでビットＯＮ画素が４画素となる位置である。
【００３８】
このように、ソースパターンＳとマスクパターンＭの組み合わせで得られる結果パターンＤの濃度が常にそのマスクパターンＭでの最高濃度となるマスクパターン開始位置（Ｄx, Ｄy）を計算することで、出力結果が理論濃度より低濃度となる不具合や、最悪の場合に完全に描画されない（濃度＝０）不具合を回避することが可能となる。例えば、図２（ｂ）のマスクパターンＭが横に２画素ずれたパターンとソースパターンＳでマスク演算すると全画素ビットＯＦＦとなり、この組み合わせを用いた図形描画ではなにも描画されないことになるが、本実施形態を用いれば図４（ｄ）にあるように４画素分、濃度にして４／６４にて描画される。
【００３９】
本例では結果パターン濃度が最高濃度となるように計算しているので、理論的な濃度値との差分が生じることになる。理論濃度はソースパターンＳに対応する濃度ＬsとマスクパターンＭの濃度Ｌmを乗じた値＝Ｌs×Ｌmとする。この差分は濃度の高いほう（濃いほう）への差分となるので、理論濃度より濃いパターンで描画されることがある。例えば図４では、Ｌs＝８／６４，Ｌm＝８／６４であるので理論濃度は１／６４となり、理論的には６４画素で１画素がビットＯＮになればいいのだが、本実施形態を用いると図４（ｄ）の４画素がビットＯＮとなり、その差＝３画素分濃く出ることになる。
【００４０】
マスクパターンを用いた図形の出力濃度の正確性を求められる用途には不向きだが、一般的なビジネス文書に見られるような図表やグラフなどの塗りつぶしに用いるマスクパターンでは、多少濃度差があってもなにも出力されないような濃度＝０での出力は回避されること、マスクパターンが異なってもマスクパターン濃度Ｌmが同一であれば任意のソースパターンに対応する指定濃度Ｌs、任意の位置で同一濃度で出力されることが要求される。このような用途に本例を適用すると要求が満たされる。なお、本例ではソースパターンの１画素が表現しうる階調数を２値（１bit) としたが、２bit、４bit、８bit等の多値でも同様に適用可能である。
【００４１】
＜第２の実施形態＞
次に第２の実施形態について説明する。ここで、第１の実施形態では、結果パターンＤが最大濃度（ビットＯＮが最大個数）になるようにマスクパターンＭの開始位置座標を計算したが、本実施形態では、ソースパターンＳに対応する濃度ＬsとマスクパターンＭの濃度Ｌmから、結果パターンＤの濃度Ｌdが理論濃度Ｌs× Ｌmに最も近い濃度となるようなマスクパターンＭの開始位置座標を計算する。
【００４２】
構成図は図１と同様である。図５は、図１のマスク座標計算処理部１１で計算される開始位置座標の算出処理手順を示すフローチャートである。ステップＳ１−１において理論濃度Ｌs× Ｌmに最も近いパターンのビットＯＮ画素数Ｄtを計算する。Ｌsを入力濃度値（０．０〜１．０）、Ｌmを指定されたマスクパターンＭのビットＯＮ画素割合 (ビットＯＮ画素数÷全画素数)、Ｄw，ＤhをそれぞれマスクパターンＭの幅、高さとすると、以下の計算式からＤtを計算する。
【００４３】
Ｄt＝（Ｌs×Ｌm）×（Ｄw×Ｄh）    （式１）
Ｄtは小数なので切り上げ、切り捨て、四捨五入により整数に丸める（方法は任意）。これに最も近いビットＯＮ画素数となる開始位置座標を以下で検索する。ステップＳ１−２において最も近いビットＯＮ画素数Ｄaveを（Ｄw×Ｄh) に、開始位置座標（Ｄx,Ｄy）をそれぞれ０に初期化する。これらはステップＳ５で用いられる。
【００４４】
ステップＳ２においてマスクパターン開始Ｙ座標であるｙを０に初期化し、ステップＳ３においてマスクパターン開始Ｘ座標であるｘを０に初期化する。ステップＳ４においてマスクパターンの原点を（ｘ，ｙ）分（右下に）ずらす。マスクパターンは縦横繰り返して用いられるので、ずらしたことではみ出た部分は循環する。例えば、１画素分縦にずらす（ｙ＝１）のであれば全画素を１画素分縦にずらした後、はみ出た最終行が１行目に移動する。また、２画素分横にずらす（ｘ＝２）のであれば、全画素を２画素分横にずらした後、はみ出た右から２画素分がそのまま左から２画素分に移動する。できたマスクパターンでソースパターンＳのマスク演算（ＡＮＤ）を行ってそのビットＯＮ画素数をカウントし、それを変数Ｄnumに設定する。
【００４５】
ステップＳ５’において、ステップＳ４でカウントされたＤnumと、今までＤtに最も近いビットＯＮ最大画素数Ｄaveとの差分の絶対値とを比較し、Ｄaveのほうが大きければステップＳ６へ、他方、大きくなければステップＳ７へ進む。ステップＳ６では、ステップＳ５’においてＤaveがＤtに最も近いと判定されたので、Ｄnum，ｘ，ｙをそれぞれＤave，Ｄx，Ｄyに保存する。これが現時点でＤtに最も近いビットＯＮ画素数とその位置となる。
【００４６】
ステップＳ７においてｘを１つ増やし、同一ライン（ｙ）での右方向へのずらしが全パターン終了したらステップＳ８に進み、途中であればステップＳ４に戻る。ステップＳ８においてｙを１つ増やし、下方向へのずらしが全パターン終了したら処理を終了し、途中であればステップＳ３に戻る。処理が終了した時点の（Ｄx，Ｄｙ）が理論濃度に最も近いビットＯＮ画素数となるマスクパターンＭとなるずらし量、つまり、マスクパターンＭの開始座標点となる。
【００４７】
図６は本実施形態の適用例を示す。ここでは、Ｌs＝８／６４の入力データから図６（ａ）に示すソースパターンＳがビットマップパターンメモリ２２から得られたとする。また、図６（ｂ）に示すマスクパターンＭの濃度はＬm＝８／６４である。また、Ｄw＝Ｄh＝８である。これらの値を図５のステップＳ１−１の式１に当てはめると、Ｄt＝１となる。以降図５のフローを用いて計算すると
（Ｄx，Ｄy）＝（３，１）
という結果が得られる。
【００４８】
マスクパターンＭを（３，１）ずらした結果が図６（ｃ）のマスクパターンＭ’である。これとソースパターンＳでマスク演算を行うと、図６（ｄ）の結果パターンＤが得られる。これは、図６（ｂ）においてマスクパターンＭの左上にある２×２のビットＯＮ画素２が、図６（ｃ）においてマスクパターンＭ’の位置３に移動し、これと図６（ａ）においてソースパターンＳの一番上のビットＯＮ画素１が重なり、結果パターンＤでビットＯＮ画素が１画素となる位置である。
【００４９】
このように、ソースパターンＳとマスクパターンＭの組み合わせで得られる結果パターンの濃度が常に理論濃度に近い値となるマスクパターン開始位置を計算することで、出力結果が理論濃度とは異なる濃度となる不具合や、最悪の場合に完全に描画されない（濃度０）不具合を回避することが可能となる。例えば図４または図６のソースパターンＳの濃度はＬs＝８／６４, マスクパターンＭの濃度はＬm＝８／６４であるので理論濃度は１／６４である。
【００５０】
本例を用いないと、得られる結果パターンＤの濃度は、図２（ｃ）にあるようにビットＯＮ画素が２画素となる２／６４となり、また、第１の実施形態を用いると４／６４となり、双方理論濃度と実際に得られる出力濃度との間に差が生じる。マスクパターンを用いた図形の出力濃度の正確性を求められる用途に本例を適用すると要求事項が満たされる。なお、本例ではソースパターンの１画素が表現しうる階調数を２値（１bit）としたが、２bit，４bit，８bit 当の多値でも同様に適用可能である。
【００５１】
＜第３の実施形態＞
次に第３の実施形態を説明する。ここで、第１、第２実施形態では、任意のマスクパターンを指定可能だが、異なるマスクパターンが登録されるたびに描画開始位置を計算する必要がある。一般的なアプリケーションで用いられるマスクパターンには図７に示すような市松模様や格子模様などに代表されるように各アプリケーションで共通して用いられるマスクパターンが多い。このような代表的なマスクパターンに対して固有のＩＤを割り当て、マスクパターンの指定にそのＩＤを用いる方法を取ることで、そのＩＤに対するマスクパターンの描画開始位置をあらかじめ計算することが可能となる。
【００５２】
図８に構成図を示し、図１の構成に対してマスクパターンＩＤテーブル２４、既存マスクパターンデータ２５が追加されている。また、本実施形態ではマスクパターンＩＤのみで指定されることを前提とするので、中間データメモリ２０にはマスクパターンＩＤ２１が格納される。もちろん、第１、第２実施形態で示したマスクパターンそのものでの指定方法と併用可能である。
【００５３】
本装置起動時にマスクパターンＩＤテーブル２４を作成する。描画開始位置は、ＩＤ指定可能なマスクパターンに対応する既存マスクパターンデータ２５と、ビットマップパターンメモリ２２から計算する。インタプリタ１０にデータが入力され、描画命令としてマスクパターンＩＤが指定された場合、マスクパターンＩＤテーブル２４からマスクパターンＩＤを検索し、対応する描画開始位置情報を図形描画処理部１２に受け渡す。
【００５４】
ここで、既存マスクパターンデータ２５とマスクパターンＩＤテーブル２４に、ＩＤを指定される可能性のある全マスクパターンデータを保持できるのであれば、起動時にすべて計算され、登録されているので、検索に失敗することはないが、データ格納用メモリが少ない場合は部分的に保持することも可能である。ＩＤ検索時に、指定されたＩＤがマスクパターンＩＤテーブル２４に存在しない場合は、マスク座標計算処理部１１にて再計算され、結果をＩＤテーブル２４に格納する。つまり、ＩＤテーブル２４はキャッシュメモリの役割となる。一定のデータ量に達するまで、複数のＩＤデータを保持し、ＬＲＵ（Least Recently Used) や頻度情報などを用いて、ＩＤデータの登録、破棄などのキャッシュ操作を行うことで、マスク座標計算処理部１１での処理量を最小限に抑えることが可能となる。
【００５５】
さらに、上記例ではビットマップパターンが任意であることを仮定しているため、マスクパターンＩＤテーブル２４を装置起動時に作成しているが、使用するビットマップパターンがディザパターンなどに見られるようにその個数が有限個である場合、マスクパターンＩＤテーブル２４を計算ではなく、あらかじめ定数データとして用意しておくことも可能である。
【００５６】
以上説明したように、ソースパターンとマスクパターンの組み合わせで得られる結果パターンの濃度が常にそのマスクパターンでの最高濃度となるマスクパターン開始位置を計算しているので、出力結果が理論濃度より低濃度となる不具合や、最悪完全に描画されない（濃度０）不具合を回避することが可能となる。
【００５７】
また、ソースパターンとマスクパターンの組み合わせで得られる結果パターンの濃度が常にそのマスクパターンでの理論濃度値に最も近い濃度となるマスクパターン開始位置を計算しているので、出力結果が理論濃度より低濃度や高濃度となる不具合や、最悪完全に描画されない（濃度０）不具合を回避することが可能となる。
【００５８】
また、代表的なマスクパターンの描画開始位置をあらかじめ計算しておくことで、描画時に毎回計算する手間が省け、処理時間を高速化することが可能となる。
【００５９】
また、ディザパターンは１画素での階調表現能力の低い画像処理装置において、ドットの集合パターンを使うことで疑似階調を表現するために用いられるが、通常、ディザパターンは指定可能な濃度種類数（通常８ビットで表現可能な０〜２５５の２５６通り）分のビットマップであり、それをタイル状に敷き詰めることで描画される。そこで、本発明のビットマップパターンにディザパターンが適用可能である。
【００６０】
また、描画対象となる図形の種類（文字、グラフィック、イメージ等）毎にディザパターンの切り替えが可能な複数のディザパターンを有する画像印刷装置でも、ディザパターンそれぞれに本発明を適用することで、同様の効果が得られる。
【００６１】
また、ディザパターンはＣＭＹＫを色材とするカラーの印刷装置にも一般的に使用される。各色材毎にディザパターンを有し、各色材毎にページメモリを生成し、出力時にそれらを重ねあわせて印刷する。しかし、各色材毎のディザパターンそれぞれに同じマスクパターンを適用してしまうと、各色材毎のマスクパターン開始位置が異なってしまい、それらを重ねあわせると期待結果と異なってしまう。そこで、マスクパターン開始位置計算時に全色材に対するビットＯＮ画素数を計算することで、全色材共通のマスクパターン開始位置を得ることができる。
【００６２】
また、ディザパターンは各濃度値毎に１つ必要となりデータ量が大きくなるため、ディザパターンのビットがＯＦＦからＯＮに変化する濃度値の閾値を幅、高さ分有する閾値（オーダ）テーブルから作成されるのが一般的であるが、閾値テーブルを用いてディザパターンを得る装置においても、本発明を適用することで、同様の効果が得られる。
【００６３】
また、マスクパターンはトナーやインク等の印刷色材を節約するために用いられることがある。この場合、ページ全体にマスクパターンが適用されるので、この節約用マスクパターンを用いた通常の図形描画処理で本発明が適用可能である。
【００６４】
また、ビットマップパターンの１画素がビットＯＮ／ＯＦＦの２値ではなく、複数ビットによる多値で表現される場合、ビットＯＮ画素数を対象とするのではなく、ビットＯＮとなるビット数を対象とすることで本発明が適用可能である。
【００６５】
また、レーザプリンタやインクジェットプリンタのようにマスク演算をプリンタ側で行う場合に適用可能である。また、マスク演算をプリンタ側のＣＰＵを用いたソフトウェア処理ではなく、グラフィックアクセラレータ等の専用ＡＳＩＣで行う場合やホストコンピュータ側で行う場合に本発明が適用可能である。
【００６６】
【発明の効果】
以上説明したように本発明によれば、画像データをマスクパターンでマスクする場合に、画像が全く印刷されないことを防止することができる。
【図面の簡単な説明】
【図１】本発明に係る画像処理装置の一実施形態を示すブロック図である。
【図２】マスク演算を示す説明図である。
【図３】図１の画像処理装置のマスク演算処理を説明するためのフローチャートである。
【図４】図１の画像処理装置のマスク演算処理を示す説明図である。
【図５】第２の実施形態の画像処理装置のマスク演算処理を説明するためのフローチャートである。
【図６】図５の画像処理装置のマスク演算処理を示す説明図である。
【図７】代表的なマスクパターンの例を示す説明図である。
【図８】第３の実施形態の画像処理装置を示すブロック図である。
【符号の説明】
１１  マスク座標計算処理部
１３  マスク描画処理部
２４  マスクパターンＩＤテーブル
２５  既存マスクパターンデータ
【図１】
0003964704.tif 000002
【図２】
0003964704.tif 000003
【図３】
0003964704.tif 000004
【図４】
0003964704.tif 000005
【図５】
0003964704.tif 000006
【図６】
0003964704.tif 000007
【図７】
0003964704.tif 000008
【図８】
0003964704.tif 000009