Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
画像処理方法及び画像処理装置 - キヤノン株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> キヤノン株式会社

発明の名称 画像処理方法及び画像処理装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−6391(P2007−6391A)
公開日 平成19年1月11日(2007.1.11)
出願番号 特願2005−187084(P2005−187084)
出願日 平成17年6月27日(2005.6.27)
代理人 【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
発明者 柳内 智和 / 後田 淳
要約 課題
より簡易な手順で、ドットの優先度に従ったドット配置を可能とする。

解決手段
n種類の記録態様に対応したn個のイメージプレーンの各々の多値データを量子化値に変換する方法は、まず、n個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてn+1個のレベルの量子化値に変換する。そして、n個のイメージプレーンに係る第1の量子化値を生成する。そして、kを1以上の整数とし、n個のイメージプレーンのうちのn−k個のイメージプレーンの対応する画素の合計値と、第1の量子化値との差を、k+1個のレベルの量子化値に変換して残りのk個のイメージプレーンに係る第2の量子化値を生成する。さらに、第2の量子化値と第1の量子化値との差をn−k個のイメージプレーンに係る第3の量子化値とする。ここで、その量子化誤差は他の画素へ分散される。そして、第2及び第3の量子化値を用いてn個のイメージプレーンの各々の量子化値を決定していく。
特許請求の範囲
【請求項1】
n個(nは2以上の整数)のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理方法であって、
n個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてn+1個のレベルの量子化値に変換し、n個のイメージプレーンに係る第1の量子化値を生成する第1生成工程と、
kを1以上の整数とし、前記n個のイメージプレーンのうちのn−k個のイメージプレーンの対応する画素の合計値と、前記第1の量子化値との差を、k+1個のレベルの量子化値に変換して残りのk個のイメージプレーンに係る第2の量子化値を生成する第2生成工程と、
前記第2の量子化値と前記第1の量子化値との差を前記n−k個のイメージプレーンに係る第3の量子化値とし、その量子化により生じた誤差を他の画素へ分散して前記第2生成工程における前記画素の合計値へ反映する第3生成工程と、
前記第2及び第3生成工程で生成される量子化値を用いて前記n個のイメージプレーンの各々の量子化値を決定する決定工程とを備えることを特徴とする画像処理方法。
【請求項2】
前記決定工程は、前記第3の量子化値を第1の量子化値として用い、前記n−kをnとして用いて前記第2及び第3生成工程を繰り返し実行することを特徴とする請求項1に記載の画像処理方法。
【請求項3】
前記kは1であり、
前記決定工程は、
前記第2量子化値を対応するイメージプレーンの最終量子化値として決定し、
前記第3量子化値を前記第1量子化値として用い、nの値を1ずつ減じて前記第2及び第3生成工程を繰り返し実行することを特徴とする請求項2に記載の画像処理方法。
【請求項4】
前記kが2以上の場合に、
前記決定工程は、前記k個のプレーンのイメージデータの対応する画素の値の比と前記第2の量子化値とに基づいて、前記k個のプレーンの各々の2値の量子化値を決定することを特徴とする請求項1に記載の画像処理方法。
【請求項5】
前記n−k個のイメージプレーンとk個のイメージプレーンを画素単位で入れ替えながら前記第2及び第3生成工程を実行することを特徴とする請求項1に記載の画像処理方法。
【請求項6】
n個(nは2以上の整数)のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理装置であって、
n個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてn+1個のレベルの量子化値に変換し、n個のイメージプレーンに係る第1の量子化値を生成する第1生成手段と、
kを1以上の整数とし、前記n個のイメージプレーンのうちのn−k個のイメージプレーンの対応する画素の合計値と、前記第1の量子化値との差を、k+1個のレベルの量子化値に変換して残りのk個のイメージプレーンに係る第2の量子化値を生成する第2生成手段と、
前記第2の量子化値と前記第1の量子化値との差を前記n−k個のイメージプレーンに係る第3の量子化値とし、その量子化により生じた誤差を他の画素へ分散して前記第2生成手段における前記画素の合計値へ反映する第3生成手段と、
前記第2及び第3生成手段で生成される量子化値を用いて前記n個のイメージプレーンの各々の量子化値を決定する決定手段とを備えることを特徴とする画像処理装置。
【請求項7】
前記決定手段は、前記第3の量子化値を第1の量子化値として用い、前記n−kをnとして用いて前記第2及び第3生成手段を繰り返し実行することを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記kは1であり、
前記決定手段は、
前記第2量子化値を対応するイメージプレーンの最終量子化値として決定し、
前記第3量子化値を前記第1量子化値として用い、nの値を1ずつ減じて前記第2及び第3生成手段を繰り返し実行することを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記kが2以上の場合に、
前記決定手段は、前記k個のプレーンのイメージデータの対応する画素の値の比と前記第2の量子化値とに基づいて、前記k個のプレーンの各々の2値の量子化値を決定することを特徴とする請求項6に記載の画像処理装置。
【請求項10】
前記n−k個のイメージプレーンとk個のイメージプレーンを画素単位で入れ替えながら前記第2及び第3生成手段を実行することを特徴とする請求項6に記載の画像処理装置。
【請求項11】
少なくとも第1及び第2のイメージプレーンからなる画像データの、イメージプレーン毎の量子化データを決定する画像処理方法であって、
前記第1及び第2のイメージプレーンの同一位置に存在する各画素値の合算値に対して第1の閾値を用いて量子化処理を行い、量子化値を決定する量子化工程と、
前記量子化工程で決定された量子化値と、前記第1又は第2のイメージプレーンのいずれか一方のイメージプレーンの画素値と、第2の閾値とを用いて演算し、前記第1及び第2のイメージプレーン各々の量子化データを生成する生成工程とを備えることを特徴とする画像処理方法。
【請求項12】
前記生成工程は、前記第1又は第2のイメージプレーンのいずれか一方のイメージプレーンの量子化データを生成し、生成された当該量子化データに従って、他方のイメージプレーンの量子化データを生成することを特徴とする請求項11に記載の画像処理方法。
【請求項13】
少なくとも第1及び第2のイメージプレーンからなる画像データの、イメージプレーン毎の量子化データを決定する画像処理装置であって、
前記第1及び第2のイメージプレーンの同一位置に存在する各画素値の合算値に対して第1の閾値を用いて量子化処理を行い、量子化値を決定する量子化手段と、
前記量子化手段で決定された量子化値と、前記第1又は第2のイメージプレーンのいずれか一方のイメージプレーンの画素値と、第2の閾値とを用いて演算し、前記第1及び第2のイメージプレーン各々の量子化データを生成する生成手段とを備えることを特徴とする画像処理装置。
【請求項14】
前記生成手段は、前記第1又は第2のイメージプレーンのいずれか一方のイメージプレーンの量子化データを生成し、生成された当該量子化データに従って、他方のイメージプレーンの量子化データを生成することを特徴とする請求項13に記載の画像処理装置。
発明の詳細な説明
【技術分野】
【0001】
本発明は、トナーやインクなどに代表される記録材を用いて画像を形成するために、入力画像の階調数を、より少ない階調数へ変換する画像処理を実行する画像処理装置及び画像処理方法に関する。
【背景技術】
【0002】
例えばワードプロセッサ、パーソナルコンピュータ、ファクシミリ等に於ける情報出力装置として、所望される文字や画像等の情報を用紙やフィルム等のシート状の記録媒体に記録を行う記録装置が用いられる。このような記録装置には様々な方式のものがあるが、中でも記録媒体に記録剤を付着させることで記録媒体上にテキストや画像を形成する方式が広く実用化されており、このような方式の代表例として、インクジェット記録装置がある。
【0003】
インクジェット記録装置では、記録速度の向上や高画質化等のために、同一色同一濃度のインクを吐出可能な複数のインク吐出口(ノズル)を集積配列したノズル群を用いる。さらに、画質を向上するために、同一色で濃度の異なるインクを吐出可能としたものや、同一色で同一濃度のインクの吐出量を何段階かに変えて吐出可能としたノズル群が設けられる場合もある。
【0004】
このような画像形成装置において、多値の入力画像データをドットの記録信号にあたる2値画像(または2値以上で入力階調数より少ない階調数を有する画像)に変換する手段として、R.Floydらによる誤差拡散法(非特許文献1)がある。この誤差拡散法は、ある画素で生じた二値化誤差を以降の複数画素へ拡散することにより、擬似的に階調表現を行うものである。
【0005】
上記の誤差拡散法を用いて、同一色で濃度の異なるインクや、異なる色のインクのドット配置制御に関する画像処理方法が提案されている。例えば、特許文献1に開示された画像処理方法は、同一色で濃度の異なるインクドットを配置する際、まず濃度の高いドット(以下、濃ドットと記述する)を誤差拡散法で配置し、濃ドットの出力位置を最適に決定する。そして、この決定された濃ドットの出力位置を、濃度の低いドット(以下、淡ドットと記述する)の誤差拡散法による位置計算に反映させる。かかる技術によれば、濃ドットにより生じた濃度誤差を解消するように淡ドットの最適配置位置を決定することが可能となる。
【0006】
また、特許文献2には、複数種類のドットに対応する独立した複数の画像データの相対関係に基づいて、複数種類のドットによって擬似階調画像を形成するための擬似階調出力値を決定することが開示されている。
【特許文献1】特許第3208777号明細書
【特許文献2】特開2004-336570号公報
【非特許文献1】R.Floyd他、“An adaptive algorithm for spatial gray scale”, SID International Symposium Digest ofTechnical Papers, vol4.3, 1975, pp.36-37
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1による手法では、優先度の高いドットの配置を決定した後、その配置を反映するための補正データを生成し、該補正データを用いて次の優先度のドットのデータを補正してから配置位置を決定している。即ち、次の順位のドット配置を決定するためには、その上位の順位のドット配置に基づく補正データを生成し、当該次の順位のドットのデータを補正するという処理が必須であり、処理が複雑であるとともに、処理時間が増加してしまう。
【0008】
また、特許文献1による手法では、優先度の高いドットから順に配置位置を決定し、その配置結果を考慮しながら次の優先度のドットの配置を決定していくので、全てのドットについて順次に、誤差拡散による配置計算を行わなければならない。即ち、濃度や、色、ドット径毎にインク量が指定されるn個のプレーンデータがあった場合、最終的なドット位置を求めるまでには、必ずn回の誤差拡散処理を実行しなければならない。
また、色が異なっても濃度が同じ色材の処理には有効とは言えない。例えば、濃度が同じシアン、マゼンタの2プレーンデータを2値化する際、シアン、マゼンタのうちどちらか一方の色の位置を最適に決定してしまうため、他方の色の位置については最適に決定することができない。
【0009】
さらに、特許文献2による手法は、LUTテーブルにより、複数のプレーンに関して同時に擬似階調出力値を決定するものであり、ドット配置に関する優先順位という思想はない。
【0010】
本発明は上記の課題に鑑みてなされたものであり、より簡易な手順で、ドットの優先度に従ったドット配置を可能とすることを目的とする。
【課題を解決するための手段】
【0011】
上記の課題を解決するための本発明による画像処理方法は、
n個(nは2以上の整数)のイメージプレーンからなる画像データの各々のイメージプレーンにおける多値データを量子化値に変換する画像処理方法であって、
n個のイメージプレーンの対応する画素の合計値を誤差拡散処理を用いてn+1個のレベルの量子化値に変換し、n個のイメージプレーンに係る第1の量子化値を生成する第1生成工程と、
kを1以上の整数とし、前記n個のイメージプレーンのうちのn−k個のイメージプレーンの対応する画素の合計値と、前記第1の量子化値との差を、k+1個のレベルの量子化値に変換して残りのk個のイメージプレーンに係る第2の量子化値を生成する第2生成工程と、
前記第2の量子化値と前記第1の量子化値との差を前記n−k個のイメージプレーンに係る第3の量子化値とし、その量子化により生じた誤差を他の画素へ分散して前記第2生成工程における前記画素の合計値へ反映する第3生成工程と、
前記第2及び第3生成工程で生成される量子化値を用いて前記n個のイメージプレーンの各々の量子化値を決定する決定工程とを備える。
【0012】
また、上記の目的を達成するための本発明の他の態様による画像処理方法は、
少なくとも第1及び第2のイメージプレーンからなる画像データの、イメージプレーン毎の量子化データを決定する画像処理方法であって、
前記第1及び第2のイメージプレーンの同一位置に存在する各画素値の合算値に対して第1の閾値を用いて量子化処理を行い、量子化値を決定する量子化工程と、
前記量子化工程で決定された量子化値と、前記第1又は第2のイメージプレーンのいずれか一方のイメージプレーンの画素値と、第2の閾値とを用いて演算し、前記第1及び第2のイメージプレーン各々の量子化データを生成する生成工程とを備える。
【発明の効果】
【0013】
本発明によれば、より簡易な手順で、ドットの優先度に従ったドット配置が可能となる。
【発明を実施するための最良の形態】
【0014】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【0015】
<第1実施形態>
図1は、第1実施形態による画像形成装置の構成を示したブロック図である。図1において、1は画像処理装置を、2はプリンタを示す。なお、画像処理装置1は例えば一般的なパーソナルコンピュータにインストールされたプリンタドライバによって実施され得る。その場合、以下に説明する画像処理装置1の各部は、コンピュータが所定のプログラムを実行することにより実現されることになる。また、別の構成としては、例えば、プリンタ2が画像処理装置1を含む構成としてもよい。
【0016】
画像処理装置1とプリンタ2は、プリンタインタフェース又はネットワークインタフェースによって接続されている。画像処理装置1は、画像データ入力端子101より印刷対象の画像データを入力し、画像バッファ102にその入力画像データを格納する。色分解処理部103は、入力されたカラー画像をプリンタ2が備えるインク色へ色分解する。この色分解処理に際しては、色分解用ルックアップテーブル(LUT)104が参照される。色分解用LUT選択部105は図4に示すユーザインターフェース(UI)を介してユーザによって指定された処理状態に応じて、使用すべき色分解用ルックアップテーブル(LUT)を選択する。
【0017】
ハーフトーン処理部106は、色分解処理部103によって得られた各色の多階調(3階調以上)の画像データを2値画像データに変換する。得られた各色の2値画像データはハーフトーン画像格納メモリ107に格納される。ハーフトーン画像格納メモリ107に格納された2値画像データは出力端子108よりプリンタ2へ出力される。
【0018】
プリンタ2は、記録ヘッド201を記録媒体202に対して相対的に縦横に移動することにより、記録媒体上に画像を形成する。記録ヘッドはワイヤードット方式、感熱方式、熱転写方式、インクジェット方式等の方式のものを用いることができ、いずれも一つ以上の記録素子(インクジェット方式であればノズル)を有する。移動部203は、ヘッド制御部204の制御下で、記録ヘッド201を移動する。搬送部205は、ヘッド制御部204の制御下で、記録媒体を搬送する。また、インク色及び吐出量選択部206は、画像処理装置1により形成された各色の2値画像データに基づいて、記録ヘッド201に搭載されるインク色と該ヘッドが吐出可能なインク吐出量の中から、インク色と吐出量を選択する。なお、本発明は上述したプリンタの記録方式に限定されるものではない。例えば、電子写真方式の画像形成装置であっても、本発明を適用可能である。
【0019】
図2は記録ヘッド201の構成例を示す図である。本実施形態では、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の4色のインクに加え、相対的にインク濃度が低い淡シアン(Lc)、淡マゼンタ(Lm)を含めた6色のインクを、該記録ヘッドに搭載している。更に、記録ヘッド201は、各色毎に、それぞれ吐出量(形成ドットサイズ)の異なる3種類の吐出ノズルを有する。即ち、吐出ノズル301はインク吐出量の多いインク滴を、吐出ノズル303は大ドットよりも相対的にインク吐出量の少ないインク滴を、吐出ノズル302は大ドットと小ドットの中間の吐出量のインク滴を吐出する。なお、以下、インク吐出量の多いインク滴で形成されるドットを大ドットと呼ぶ。また、大ドットを形成するインク吐出量よりも相対的に少ないインク吐出量で形成されるドットを小ドットと呼ぶ。また、大ドットと小ドットの中間の吐出量のインク滴で形成されるドットを中ドットと称する。このように、記録ヘッド201は、全6色のインクについて吐出量の異なる3種類のドットを形成可能となっている。
【0020】
なお、図2においては、説明を簡単にするため用紙搬送方向にノズルが一列に配置された構成を有する記録ヘッドを示しているが、ノズルの数、配置はこれに限られるものではない。例えば、各吐出量に対しノズルが複数列あっても良いし、ノズルがジグザグに配置されているような構成であっても良い。また、図2ではインク色の配置順序はヘッド移動方向に一列となっているが、用紙搬送方向に一列に配置する構成であっても良い。
【0021】
ここで、濃淡ドットと大中小ドットを使用することの効果について説明する。濃淡ドットを用いる目的は、ドットのオン・オフによって擬似的に階調表現を行うプリンタにおいて、濃度の異なる複数のインクを併用して画像形成することにより、表現可能な階調数を増加させることである。表現可能な階調数を増加することにより、豊かな階調再現性を実現させることができる。そして、更に、大中小ドットを用いることで、例えば粒状感が問題視されるハイライト領域には小ドットによる画像形成が可能となり、粒状感を大きく低減する効果がある。一方、シャドウ領域には中、大ドットを用いた画像形成が可能であるため、十分な濃度の確保も保証されるという利点を有する。ハイライト、シャドウの両領域の高画質化を同時に達成するためには、大中小ドットの併用は非常に効果的である。
【0022】
次に、上述の機能構成を備えた本実施形態の画像処理装置1の動作について図3のフローチャートを参照して説明する。
【0023】
まず、多階調のカラー入力画像データが入力端子101より入力され、画像バッファ102に格納される(ステップS101)。なお、入力画像データは、レッド(R)、グリーン(G)、ブルー(B)の3つの色成分によってカラー画像を表現している。
【0024】
次に、色分解LUT104内に複数種類保持されているLUTを、色分解用LUT選択部105にて1つ選択する。LUTの選択において、色分解用LUT選択部105は、例えば図4に示すユーザインターフェース(UI)をパーソナルコンピュータのディスプレイ(不図示)に表示させ、ユーザに所望の印刷形態を選択させる。ユーザは、UI上の印刷スピードラジオボタン401により所望の印刷スピードを、画質ラジオボタン402により所望の画質をそれぞれ1つずつ選択できる。画質ラジオボタン402の項目の「粒状性」とは「画像のザラツキ」であり、「粒状性重視」とは画像のザラツキを極力抑えるという意味である。また、「バンディング」とは「画像のスジムラ」であり、「バンディング重視」とはスジムラを極力抑えるという意味である。ユーザによって上記2項目が選択されOKボタン403が押されると、色分解用LUT選択部105は、当該UIによる選択状態に対応したLUTを選択する。
【0025】
図4のUIの指定に応じて選択されるLUTの一例を図5に示す。図5のテーブルは簡単のため、シアンの色分解LUTのみを示している。図5に示されるように、「粒状性重視」ほど小ドットを多く使うように設定されており、逆に「バンディング重視」ほど大ドットを多く使うように設定されている。これは、画像のザラツキを抑えるには小ドットが有効で、画像のスジムラを抑えるには大ドットが有効であるためである。さらに、印刷スピードが「遅い」ほど淡ドットを多く使うよう設定されており、「速い」ほど濃ドットを多く使うよう設定されている。その理由は、「遅く印刷」できる場合には、紙面のインク吸収量が増えるため画質的に有利な淡ドットを多く使用できるからである。また、一方、「速く印刷」しなければならない場合は、紙面のインク吸収量が減るため少ないインク量で紙面を埋めるために濃ドットを多く使用しなければならないためである。
【0026】
次に、色分解処理部103は、色分解用LUT選択部105で選択されたLUTを用いて、画像バッファ102に格納された多階調のカラー入力画像データの色分解処理を行なう(ステップS103)。この色分解処理では、カラー入力画像データをRGBからCMYK及びLcLmのインク色プレーンへ色分解するとともに、各色毎に吐出量の異なる大中小ドットへのプレーンへ分解する。
【0027】
第1実施形態の記録ヘッドは、6種類の各インク色に対し、それぞれ大中小3種類のドットを保有する。そのため、RGBのカラー入力画像データは、CMYKLcLmの各プレーンに大中小ドットを持たせた計18プレーンの画像データへ変換される。即ち、18種類の記録態様に対応した18種類のプレーンの画像データが生成される。なお、色分解処理の詳細については後述する。
【0028】
次に、ハーフトーン処理部106はハーフトーン処理のための画素位置選択処理を行い(ステップS104)、少ない階調数に変換するハーフトーン処理を実施する(ステップS105)。本実施形態では、色分解処理部103によって入力画像の各画素データを8ビットの階調値のプレーンへ分解する。そして、ハーフトーン処理部106は色分解処理部103によって得られたプレーンを2レベルの階調値のデータ(2値データ)に変換する。なお、第1実施形態のハーフトーン処理は、多値の入力画像データを2値画像(または2値以上で入力階調数より少ない階調数の画像)に変換する処理として、例えばR.Floydらによる誤差拡散法(非特許文献1参照)を用いる。なお、本実施形態のハーフトーン処理部106の詳細については後述する。
【0029】
以上のハーフトーン処理後の2値画像データはハーフトーン画像格納メモリ107に格納される(ステップS106)。図6は、ハーフトーン処理部106に入力される各記録態様に対応するプレーン61と、ハーフトーン画像格納メモリ107に格納される2値画像データ62の構成例を示した図である。色分解処理部103は、入力画像の横画素数Wと縦画素数Hと同数の二次元的な記憶領域I(x、y)に多値(8ビット)のデータが配置されたプレーン61(多値画像データ)の各画素値を生成する。ハーフトーン処理部106は、プレーン61に階調変換処理を施して各色、ドットサイズのプレーンの各画素位置の2値データを生成する。ハーフトーン画像格納メモリ107は、入力画像の横画素数Wと縦画素数Hと同数の二次元的な記憶領域O(x、y)を有し、各画素位置に対応する2値画像データを格納する。なお、図8で後述する構成からもわかるように、本実施形態では、各プレーンの対応する画素を順次に入力して各記録態様に対応した2値画像データを生成していく。したがって、多値画像のプレーン61全体を保持するメモリ空間を用意する必要はない。また、ハーフトーン画像格納メモリ107にしても、例えばバンド単位の記録動作に必要なサイズのメモリ空間を用意したものであっても良い。
【0030】
ハーフトーン画像格納メモリ107に格納されたハーフトーン処理後の画像データは出力ドットパターンとして画像データ出力端子108より出力される(ステップS108)。プリンタ2は、画像データ出力端子108より出力された画像データを受信し、該画像データに従ってインク色及び吐出量を選択して画像形成を行う。画像の形成において、プリンタ2は、例えば、記録ヘッド201を記録媒体に対して左から右に移動しながら一定の駆動間隔で各ノズルを駆動して記録媒体上に画像を記録していく。一回の走査が終了すると、記録ヘッドを左端に戻すと同時に、記録媒体202を一定量搬送する。以上の処理を繰り返すことにより画像の形成が行われる。
【0031】
以上で、多階調のカラー入力画像データに対する一連の画像形成処理が完了する。
【0032】
次に、本実施形態の色分解処理について図7を用いて詳細に説明する。図7は、画像処理装置1による色分解処理部103の構成を示している。なお、濃淡大中小ドット分解処理用LUT506と大中小ドット分解処理用LUT508は、色分解用LUT104に含まれている。
【0033】
まず、輝度濃度変換部501は、RGB色空間のデータをCMY色空間のデータ変換する。即ち、入力された輝度情報8ビットの画像データR'G'B'を以下の(1)〜(3)次式に基づきCMYへ変換する。
C=−αlog(R'/255) ・・・(1)
M=−αlog(G'/255) ・・・(2)
Y=−αlog(B'/255) ・・・(3)
但し、αは任意の実数である。
【0034】
次に、UCR/GB処理部502は、BG設定部503に設定されたβ(Min(C,M,Y),μ)、及びUCR量設定部504に設定された値μにより、次式の通りCMYデータをCMYKデータに変換する。
C'=C−(μ/100)×Min(C,M,Y) ・・・(4)
M'=M−(μ/100)×Min(C,M,Y) ・・・(5)
Y'=Y−(μ/100)×Min(C,M,Y) ・・・(6)
K'= β(Min(C,M,Y),μ)×(μ/100)×Min(C,M,Y) ・・・(7)
ここで、β(Min(C,M,Y),μ)は、Min(C,M,Y)及びμによって変動する実数であり、この値によってKインクの使用方法を設定することができる。
【0035】
続いて、濃淡大中小ドット分解処理部505は、異なる2種類のインク濃度を備えるC'及びM'の2色について、濃淡大中小ドット分解処理用LUT506を参照し、次式の通り濃淡インク分解及び大中小ドット分解を実施する。
C_l'= C_l(C') ・・・(8)
C_m'= C_m(C') ・・・(9)
C_s'= C_s(C') ・・・(10)
Lc_l'= Lc_l(C') ・・・(11)
Lc_m'= Lc_m(C') ・・・(12)
Lc_s'= Lc_s(C') ・・・(13)
M_l'= M_l(M') ・・・(14)
M_m'= M_m(M') ・・・(15)
M_s'= M_s(M') ・・・(16)
Lm_l'= Lm_l(M') ・・・(17)
Lm_m'= Lm_m(M') ・・・(18)
Lm_s'= Lm_s(M') ・・・(19)
【0036】
なお、C_l'、C_m'、C_s'、Lc_l'、Lc_m'、Lc_s'は、濃淡大中小ドット分解後のシアン大ドット、シアン中ドット、シアン小ドット、淡シアン大ドット、淡シアン中ドット、淡シアン小ドットの出力データ値をそれぞれ示している。また、マゼンタに関しても同様であり、M_l'、M_m'、M_s'、Lm_l'、Lm_m'、Lm_s'は、それぞれマゼンタ大ドット、マゼンタ中ドット、マゼンタ小ドット、淡マゼンタ大ドット、淡マゼンタ中ドット、淡マゼンタ小ドットの出力データ値を表している。式(8)から式(19)の右辺に定義される各関数が濃淡大中小ドット分解処理用LUT506に該当する。
【0037】
一方、Y'及びK'の2色については淡インクを具備しない構成となっている。従って、前述の濃淡インク分解処理を持たない大中小ドット分解処理部507にて、大中小ドット分解処理用LUT508を参照して、次式の通り大中小ドット分解処理を実施する。
Y_l'= Y_l(Y') ・・・(20)
Y_m'= Y_m(Y') ・・・(21)
Y_s'= Y_s(Y') ・・・(22)
K_l'= K_l(K') ・・・(23)
K_m'= K_m(K') ・・・(24)
K_s'= K_s(K') ・・・(25)
なお、Y_l'、Y_m'、Y_s'、K_l'、K_m'、K_s'は、大中小ドット分解処理後のイエロー大ドット、イエロー中ドット、イエロー小ドット、ブラック大ドット、ブラック中ドット、ブラック小ドットをそれぞれ示している。
【0038】
以上の処理工程を通じて第1実施形態の色分解処理が完了する。
【0039】
次に、第1実施形態のハーフトーン処理部106において用いられる誤差拡散法について説明する。なお、上述したように、本実施形態における色分解処理後の各プレーン画像は0〜255の8ビット画像とする。また、第1実施形態では、nプレーンデータに対してn回の誤差拡散処理を行う「高画質処理」について説明する。ここでは説明を簡略化するため、シアンの大、中、小ドットプレーン、C_l'、C_m'、C_s'における誤差拡散処理による擬似階調処理を例として説明する。図8は、第1実施形態によるハーフトーン処理部106の機能構成を説明する図である。また、図13はハーフトーン処理部106の動作を説明するフローチャートである。図8に示す構成はその一部或いは全てをソフトウエアにより実現してもよい。
【0040】
大,中,小の3つのドットプレーンのデータ(各プレーンは0〜255の値をとる)に対して2値化(量子化値0,255)を行う場合、まず4値化部601は、大・中・小の3つのドットプレーンの対応画素の合計データI_lmsを入力する。そして、入力されたI_lmsに対して誤差拡散処理を施し、4値化(量子化値0,255,510,765)を行う。
【0041】
より具体的に説明すると、まずステップS201において、大,中,小ドットプレーンの対応する画素(注目画素)の画素値の合計データI_lmsを4値化部601に入力する。ここで、I_lmsは次式のように算出される。
I_lms = C_l'+C_m'+C_s' ・・・(26)
【0042】
また、本実施形態では、誤差拡散処理のための誤差拡散係数が図9のようにK1〜K4の4つの係数を持つものとする。例えば、K1=7/16、K2=3/16、K3=5/16、K4=1/16とする。このような誤差拡散係数により誤差を拡散、累積するために、4値化部601における累積誤差ラインバッファ604は、図10の(a)に示す構成を有する。即ち、1個の記憶領域E_lms0と、入力画像の横画素数Wと同数の記憶領域E_lms(x)(x=1〜W)とを有し、後述する方法で量子化誤差が格納されていく。なお、累積誤差ラインバッファ604は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0043】
ステップS202において、累積誤差加算部605は、注目画素の横画素位置xに対応する誤差E_lms(x)を累積誤差ラインバッファ604より読み出し、加算する。即ち、入力された合計データをI_lms、累積誤差加算後のデータをI_lms'とすると、
I_lms'=I_lms+E_lms(x) …(27)
となる。
【0044】
次に、ステップS203において、閾値選択部606は閾値T_lmsを選択する。閾値T_lmsは、例えば、入力画素データI_lmsに応じて、
T_lms(I_lms)=128 (0≦I_lms≦255) ・・・(28)
T_lms(I_lms)=384 (255<I_lms≦510) ・・・(29)
T_lms(I_lms)=640 (510<I_lms≦765) ・・・(30)
と設定される。或いは、ドット生成遅延を回避するために、平均量子化誤差が小さくなるように閾値T_lmsを入力画素データI_lmsに応じて細かく変更しても良い。
【0045】
次に、ステップS204において、量子化部607は、誤差加算後の画素データI_lms'と閾値T(I_lms)とを比較し、出力画素値Out_lmsを決定する。その規則は次の通りである。
Out_lms=0 ・・・(31)
(0≦I_lms≦255,I_lms'<T(I_lms))
Out_lms=255 ・・・(32)
(0≦I_lms≦255,I_lms'≧T(I_lms))又は
(255<I_lms≦510,I_lms'<T(I_lms))
Out_lms=510 ・・・(33)
(255≦I_lms≦510,I_lms'≧T(I_lms))又は
(510<I_lms≦765,I_lms'<T(I_lms))
Out_lms=765 ・・・(34)
(510<I_lms≦765,I_lms'≧T(I_lms))
【0046】
ここで大・中・小の3つのドットプレーンの注目画素の合計値(I_lms)を4値化することの意味を説明する。例えば式(32)に示すようにOut_lms=255となることは、その場所に、大・中・小いずれかのドットが1つ打たれることを意味する。すなわち、Out_lms=255とは、その場所に大ドットが確定するわけでなく、中ドット、小ドットも確定しない。この時点で確定していることは、大か中か小の、どのドットが打たれるかわからないが、少なくともどれか一つは打たれることである。
【0047】
同様にOut_lms=510となることは、その場所に、大・中・小いずれかのドットが2つ打たれることを意味する。この時点で確定していることは、大ドットか中ドットか小ドットか打たれるかわからないが、少なくともどれか2つは打たれることである。ただし、同じドットは最大でも1つしか打つことができない。
【0048】
以上をまとめると、以下のとおりである。
Out_lms=0 ・・・大・中・小ドットのいずれも打たれないことが確定。
Out_lms=255 ・・・大・中・小ドットのいずれか1つが打たれる。
Out_lms=510 ・・・大・中・小ドットのいずれか2つが打たれる。ただし同じドットが2つ打たれることはない。
Out_lms=765 ・・・大・中・小ドットのいずれか3つが打たれる。ただし同じドットが2つ打たれることはない。すなわち、大、中、小ドットは必ず打たれることが確定する。
【0049】
次に、ステップS205において、誤差演算部608で注目画素の合計値I_lmsに誤差を加算した後の画素データI_lms'と出力画素値Out_lmsとの差分Err_lmsを、次のようにして計算する。
Err_lms(x)=I_lms'− Out_lms ・・・(35)
【0050】
そして、ステップS206において、誤差拡散部609は、横画素位置xに応じて、累積誤差バッファ604において、以下の様に誤差Err_lms(x)の拡散処理を行う。
E_lms(x+1) ← E_lms(x+1)+Err_lms(x)×7/16 (x<W)
E_lms(x-1) ← E_lms(x-1)+Err_lms(x)×3/16 (x>1)
E_lms(x) ← E_lms0+Err_lms(x)×5/16 (1<x<W)
E_lms(x) ← E_lms0+Err_lms(x)×8/16 (x=1)
E_lms(x) ← E_lms0+Err_lms(x)×13/16 (x=W)
E_lms0 ← E_lms×1/16 (x<W)
E_lms0 ← 0 (x=W)
・・・(36)
【0051】
以上で、シアンの大、中、小ドット、C_l'、C_m'、C_s'の1画素分の3プレーン合計データに対して4値化が完了する。以上の大・中・小の3つのドットプレーンの合計データの4値化処理により、3つのドットプレーンのどのドットが打たれるかわからないが、少なくとも3プレーントータルで、最適な配置が確保されることになる。
【0052】
次に、3値化部602において、大・中の2つのドットプレーンの注目画素の画素値の合計データI_lmに対して誤差拡散処理を施し3値化(量子化値0,255,510)を行う。
【0053】
まずステップS207において、合計データI_lmを3値化部602に入力する。なおI_lmは以下のように算出される。
I_lm = C_l'+C_m' ・・・(37)
【0054】
図8の3値化部602における累積誤差ラインバッファ610は、累積誤差ラインバッファ604と同様の構成を有する。すなわち、累積誤差ラインバッファ610は図10の(b)に示されるように、1個の記憶領域E_lm0と入力画像の横画素数Wと同数の記憶領域E_lm(x)(x=1〜W)とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ610は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0055】
次に、ステップS208において、累積誤差加算部611で、注目画素の横画素位置xに対応する誤差E_lm(x)が加算される。即ち、入力された注目画素の合計値をI_lm、累積誤差加算後のデータをI_lm'とすると、
I_lm'=I_lm+E_lm(x) ・・・(38)
となる。
【0056】
次に、ステップS209において、閾値選択部612で閾値T_lmを選択する。閾値T_lmの選択において、
t_lm=I_lms−I_lm ・・・(39)
とおくと、閾値T_lmは、
T_lm(t_lm)=128 (0≦t_lm≦255) ・・・(40)
と設定される。なお、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、閾値T_lm(t_lm)をt_lmに応じて細かく変更しても良い。なお、I_lms−I_lmは常に255以下となるので、本実施形態では必ずT_lm(t_lm)=128をとる。
【0057】
次に、ステップS210において、量子化部613は、誤差加算後の画素データI_lm'と閾値T(t_lm)と前述の3ドットプレーンの多値化結果Out_lmsとを比較する。そしてその比赤く結果に基づいて、出力画素値Out_lm(3値化の値)と小ドット最終結果Out_sを決定する。その規則は次の通りである。
Out_lms−I_lm'≧T(t_lm)のとき: ・・・(41)
Out_lm=Out_lms−255 ・・・(42)
Out_s=255 ・・・(43)
Out_lms−I_lm'<T(t_lm)のとき: ・・・(44)
Out_lm=Out_lms ・・・(45)
Out_s=0 ・・・(46)
【0058】
例えば、Out_lms=765の時、Out_lms−I_lm’≧T(t_lm)となるため、式(41)の条件が成立し、Out_lm=510となる。このようにして、式(41)〜(46)で、大、中の2つのドットプレーンの合計データの3値化(量子化値0,255,510)が決定する。また、これと同時に、小ドットプレーン(Out_s)の2値化(量子化値0,255)が決定する。すなわち、この時点で小ドットプレーンの2値データが確定することになる。なお、式(43)は小ドットが打たれることを意味し、式(46)は小ドットが打たれないことを意味する。
【0059】
ここで大・中の2つのドットプレーンの合計データの3値化(I_lm')の意味を説明する。例えばOut_lm=255とは、その場所に、大・中いずれかのドットが1つ打たれることを意味する。すなわち、Out_lm=255とは、その場所に大ドットが確定するわけでなく、中ドットも確定しない。この時点で確定していることは、大か中の、いずれのドットが打たれるかわからないが、少なくともどれか一つは打たれることである。
【0060】
さらに、Out_lms=510とは、その場所に、大・中いずれかのドットが2つ打たれることを意味する。同じドットは最大でも1つしか打つことができないという前提上、大・中のどちらも打たれることを意味する。
【0061】
以上をまとめると次のようになる。
Out_lm=0 ・・・大・中ドットのいずれも打たれないことが確定。
Out_lm=255 ・・・大・中ドットのいずれか1つが打たれる。
Out_lm=510 ・・・大・中ドットのいずれか2つが打たれる。ただし同じドットが2つ打たれることはない。すなわち、大、中ドットは必ず打たれることが確定する。
【0062】
ステップS211において、誤差演算部614は注目画素I_lmに誤差加算後の画素データI_lm'と出力画素値Out_lmとの差分Err_lmを、次の式(47)ようにして計算する。
Err_lm(x)=I_lm'−Out_lm ・・・(47)
【0063】
ステップS212において、誤差拡散部615は、誤差拡散部609と同様に、注目画素の横画素位置xに応じて、累積誤差ラインバッファ610を用いて以下の様に誤差Err_lm(x)を拡散する。
E_lm(x+1) ← E_lm(x+1)+Err_lm(x)×7/16 (x<W)
E_lm(x-1) ← E_lm(x-1)+Err_lm(x)×3/16 (x>1)
E_lm(x) ← E_lm0+Err_lm(x)×5/16 (1<x<W)
E_lm(x) ← E_lm0+Err_lm(x)×8/16 (x=1)
E_lm(x) ← E_lm0+Err_lm(x)×13/16 (x=W)
E_lm0 ← E_lm×1/16 (x<W)
E_lm0 ← 0 (x=W)
・・・(48)
【0064】
以上で、1画素分の大中濃シアンドット、C_l'、C_m'の2プレーンの合計データに対して3値化(量子化値0,255,510)が完了する。また、同時に、小濃シアンドットC_s'の2値化(量子化値0,255)結果が確定する。
【0065】
大・中の2つのドットプレーンの合計データの3値化は、当該2つのドットプレーンのどのドットが打たれるかわからないが、少なくとも2プレーントータルで、最適な配置を確保することに目的がある。そして、最適配置の余りとして、残りの1つのドットプレーン(小ドットC_s')の2値化結果が確定するわけである。すなわち、大・中ドットは最適配置となり、結果として小ドットは大・中ドットを最適配置した余りの位置に配置される。このようにする理由には、視覚的に目立たない小ドットを最適配置するよりも、大・中ドットを優先的に最適配置したほうが、視覚的に良好な画像が得られるからである。
【0066】
次に、大ドットのプレーンデータI_lに対して誤差拡散処理を施し2値化を行う。まずステップS213において、大ドットの注目画素のデータI_lを2値化部603に入力する。なおI_lは以下のように算出される。
I_l=C_l' ・・・(49)
【0067】
図8の2値化部603における累積誤差ラインバッファ616は、累積誤差ラインバッファ604と同様の構成を有する。即ち、累積誤差ラインバッファ616は、図10の(c)に示すように、1個の記憶領域E_l0と入力画像の横画素数Wと同数の記憶領域E_l(x)(x=1〜W)とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ616は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0068】
次に、ステップS214において、累積誤差加算部617で入力画素データの横画素位置xに対応する誤差E_l(x)が加算される。即ち、入力された注目画素データをI_l、累積誤差加算後のデータをI_l'とすると、
I_l'=I_l+E_l(x) ・・・(50)
となる。
【0069】
次にステップS215において、閾値選択部618は、閾値T_lを選択する。閾値T_lの選択においては、例えば、
t_l=I_lm−I_l ・・・(51A)
とおくと、閾値T_lは、
T_l(t_l)=128 (0≦t_l≦255) ・・・(51B)
と設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、t_lに応じて細かく閾値T_lを変更しても良い。なお、I_lm−I_lは255以下となるので、本実施形態では必ずT_l(t_lm)=128をとる。
【0070】
次に、ステップS216において、大量子化部619は、誤差加算後の画素データI_l'と閾値T_l(t_l)と前述の大・中の2つのドットプレーンの合計データの多値化結果Out_lm(量子化値0,255,510)とを比較する。そして、この比較に基づいて、中ドットの最終2値化結果Out_m、と大ドットの最終2値化結果Out_lを決定する。その規則は次の通りである。
Out_lm−I_l'≧T(t_l)のとき、 ・・・(52)
Out_l = Out_lm−255 ・・・(53)
Out_m = 255 ・・・(54)
Out_lm−I_l'<T(t_l)のとき ・・・(55)
Out_l = Out_lm ・・・(56)
Out_m = 0 ・・・(57)
【0071】
例えば、Out_lm=510の時、Out_lm−I_l’≧T(t_l)となるため、式(52)の条件となり、Out_l=255となる。このため、式(52)〜(57)で、大プレーンデータOut_lの2値化が決定すると同時に中プレーンデータOut_mの2値化が決定する。すなわち、中ドット最終結果Out_mと大ドットOut_lが同時に確定する。なお、式(54)は中ドットが打たれることを意味し、式(57)は中ドットが打たれないことを意味する。
【0072】
次に、ステップS217において、大誤差演算部620で注目画素I_lに誤差加算後の画素データI_l'と出力画素値Out_lとの差分Err_lを、次のようにして計算する。
Err_l(x)=I_l'− Out_l ・・・(57)
【0073】
次に、ステップS218において、誤差拡散部621は、誤差拡散部604,615と同様に、誤差を拡散する。即ち、累積誤差ラインバッファ616を用いて、横画素位置xに応じて以下の様に誤差Err_l(x)の拡散処理が行われる。
E_l(x+1) ← E_l(x+1)+Err_l(x)×7/16 (x<W)
E_l(x-1) ← E_l(x-1)+Err_l(x)×3/16 (x>1)
E_l(x) ← E_l0+Err_l(x)×5/16 (1<x<W)
E_l(x) ← E_l0+Err_l(x)×8/16 (x=1)
E_l(x) ← E_l0+Err_l(x)×13/16 (x=W)
E_l0 ← E_l×1/16 (x<W)
E_l0 ← 0 (x=W)
・・・(58)
【0074】
以上で、シアンの1画素分の大ドットプレーンデータC_l'に対して2値化(量子化値0,255)が完了する。同時に、シアンの1画素分の中ドットプレーンデータC_m'の2値化(量子化値0,255)結果も確定する。
【0075】
上述の大プレーンデータの2値化は、大プレーンに最適配置を確保することに目的がある。そして、大ドットの最適配置の余りとして、中ドットの2値化結果が確定するわけである。すなわち、大ドットは最適配置となり、結果として中ドットは大ドットを最適配置した余りとなる。このようにする理由には、大ドットに比べて視覚的に目立たない中ドットを最適配置するよりも、大ドットを最適配置したほうが、視覚的に良好な画像が得られるからである。ただし、4値化部601によってはじめに大中小のドットプレーンの合計データを誤差拡散しているので、大中小ドットのトータルで見れば最適配置となっている。そのため、大中小ドットのトータルで最適配置となり、且つ、視覚的に目立つ大ドット単独でも最適配置となる。
【0076】
以上説明したステップS201〜S218の処理を全ての画素について行なう(ステップS219)ことにより、各ブレーンデータのドット位置を決定することができる。
【0077】
以上をまとめると、第1実施形態のハーフトーン処理では、大中小ドットの各プレーンの対応する画素の合計値を誤差拡散処理し、その後大ドットの値を優先して配置を決定している。したがって、
・大中小ドットのトータルで最適配置
・大ドット単独で最適配置
となる特徴を持つ。
【0078】
なお、上記実施形態では、ハーフトーン処理の例としてシアンの大中小ドットの配置に関して説明したが、他のドット組み合わせでも良いことはいうまでもない。本実施形態で説明した処理の流れでは、「大中小3プレーン4値化→大中2プレーン3値化→大プレーン2値化」により「小ドット→中ドット→大ドット」の順にドット位置を決定したが、これ以外の処理の例として次のようなものがあげられる。例えば、
・「濃淡シアン2プレーン3値化→濃シアン1プレーン2値化」により「淡シアン→濃シアン」の順にドット位置を決める。
・「シアン、マゼンタ2プレーン3値化→マゼンタプレーン2値化」により「シアン→マゼンタ」の順にドット位置を決める。
【0079】
さらには、色分解プレーンすべてに適用しても良い。即ち、「CMYK4プレーン5値化→CMK3プレーン4値化→MK2プレーン3値化→Kプレーン2値化」により、「Y→C→M→K」の順にドット位置を決定するようにしてもよい。また、図7で説明した18個の全てのプレーンに適用することもできる。或いは、各色毎に実施形態で説明した処理により大、中、小ドットの配置を決定するような構成とすることもできる。
【0080】
以上、いずれの組み合わせも、後に決まるドットほど最適配置となるため、「ドット径が大きい」「濃度が高い」ドット(配置の優先度の高いドット)ほど後に決まるよう処理順を設定すればよい。
【0081】
<第2実施形態>
第1実施形態では、ハーフトーン処理部106にてn枚のプレーンデータに対してn回の誤差拡散処理を行う。第2実施形態では、第1実施形態の処理を「高画質処理」と位置づける。そして、第2実施形態では、ハーフトーン処理部106にてn枚のプレーンの最終的なドット配置を求めるまでに、n−1回以下の誤差拡散回数で量子化を行う「高速処理」を可能とする。なお、ハーフトーン処理部106以外の構成は第1実施形態と同様である。
【0082】
まず説明を簡略化するため、第1実施形態と同様にシアンの大中小の3つのドットプレーン、C_l'、C_m'、C_s'の誤差拡散を例とし、図11のブロック図、図14のフローチャートを参照して第2実施形態の動作を説明する。図11は、第2実施形態によるハーフトーン処理部106の構成を説明するブロック図である。また、図14は第2実施形態によるハーフトーン処理部106の動作を説明するフローチャートである。
【0083】
大中小の3つのドットプレーンのデータに対して2値化(量子化値0,255)を行う場合、まずステップS301〜S306において、4値化部601により、大・中・小3プレーンの合計データを4値化する。4値化部601の動作は第1実施形態(ステップS201〜S206)で説明したとおりであるので説明を省略する。
【0084】
4値化部601からの出力(1画素分の大中小の3つのドットプレーンの合計データの4値化結果)は、図11の2値化部802に入力される。2値化部802では、大プレーンデータI_lに対して誤差拡散処理を施し2値化を行う。まずステップS307において、大ドット入力データが大2値化部802へ入力される。なおI_lは以下のように算出される。
I_l=C_l' ・・・(59)
【0085】
2値化部802における累積誤差ラインバッファ810は、図10の(c)のような構造を有する。すなわち、1個の記憶領域E_l0と入力画像の横画素数Wと同数の記憶領域E_l(x)(x=1〜W)とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ810は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0086】
次に、ステップS308において、累積誤差加算部811は、入力された大ドットプレーンデータに入力画素データの横画素位置xに対応する誤差E_l(x)が加算される。即ち、入力された着目画素データI_lの値は、累積誤差加算後のデータをI_l'とすると、
I_l'=I_l+E_l(x) ・・・(60)
となる。
【0087】
次に、ステップS309において、閾値選択部812で、閾値T_lを選択する。なお、閾値T_lは、例えば、
t_l=I_lms−I_l ・・・(61)
とおき、
T_l(t_l)=128 (0≦t_l≦255)
T_l(t_l)=384 (255<t_l≦510)
と設定する。なお、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、t_lに応じて閾値T_lを細かく変更しても良い。なお、I_lms−I_lは510以下となるので、本実施形態ではT_l(t_lm)=128かT_l(t_lm)=384をとる。
【0088】
次に、ステップS310において、大量子化部813で、誤差加算後の画素データI_l'と閾値T_l(t_l)と前述の大・中・小3プレーン合計データの多値化(量子化値0,255,510,765)結果Out_lmsを比較する。そしてその比較結果に基づいて、小中プレーン合計データの3値化Out_ms、と大ドット最終2値化結果Out_lを決定する。その規則は次の通りである。
T_l(t_l)=384の場合:
Out_lms−I_l'≧ T(t_l)のとき、 ・・・(62)
Out_l=Out_lms−510 ・・・(63)
Out_ms=510 ・・・(64)
Out_lms−I_l'<T(t_l)のとき ・・・(65)
Out_l=Out_lms−255 ・・・(66)
Out_ms=255 ・・・(67)
T_l(t_l)=128の場合:
Out_lms−I_l'≧ T(t_l)のとき ・・・(68)
Out_l=Out_lms−255 ・・・(69)
Out_ms=255 ・・・(70)
Out_lms−I_l'< T(t_l)のとき ・・・(71)
Out_l=Out_lms ・・・(72)
Out_ms=0 ・・・(73)
【0089】
T_l(t_l)=384のとき、Out_lms=765では、Out_lms−I_l'≧ T(t_l)となるため、式(62)の条件が成立し、Out_l=255となる。また、例えば、T_l(t_l)=128のときOut_lms=510では、Out_lms−I_l'≧ T(t_l)となるため、式(68)の条件が成立し、Out_l=255となる。このため、式(62)〜(73)により、大プレーンデータの2値化が決定すると同時に小・中の2つのドットプレーンの合計値に対する3値化(Out_ms)が決定する。
【0090】
次に、ステップS311において、誤差演算部814で注目画素I_lにおける誤差加算後の画素データI_l'と出力画素値Out_lとの差分Err_lを、次のようにして計算する。
【0091】
Err_l(x)=I_l'− Out_l ・・・(74)
次に、ステップS312において、誤差拡散部815で横画素位置xに応じて以下の様に誤差Err_l(x)の拡散処理が行われる。
E_l(x+1) ← E_l(x+1)+Err_l(x)×7/16 (x<W)
E_l(x-1) ← E_l(x-1)+Err_l(x)×3/16 (x>1)
E_l(x) ← E0_l+Err_l(x)×5/16 (1<x<W)
E_l(x) ← E0_l+Err_l(x)×8/16 (x=1)
E_l(x) ← E0_l+Err_l(x)×13/16 (x=W)
E0_l ← E_l×1/16 (x<W)
E0_l ← 0 (x=W)
・・・(75)
【0092】
以上で、1画素分の大ドットのプレーンデータに対して2値化(量子化値0,255)が完了する。同時に、中濃シアンドットC_m'と小濃シアンドットC_s'合計データの3値化(Out_ms:量子化値0,255,510)が完了する。
【0093】
ここでの大ドットプレーンのデータの2値化は、大ドットプレーンに最適配置を確保することに目的がある。そして、最適配置の余りとして、シアンの中ドットC_m'と小ドットC_s'の合計データの3値化(Out_ms)が確定するわけである。すなわち、大ドットは最適配置となり、結果として中・小ドットは大ドットを最適配置した余りものとなる。このようにする理由には、視覚的に目立たない小・中ドットを最適配置するよりも、大ドットを最適配置したほうが、視覚的に良好な画像が得られるからである。
【0094】
次に、ステップS313において、ランダム選択部803で、上記3値化データOut_ms(量子化値0,255,510)を、中ドット、小ドットのそれぞれの2値データに変換する。具体的には、上記3値化結果を小・中のDuty比になるようランダムに振り分ける。
【0095】
具体的には以下のような条件式となる。
Out_ms=510のとき
Out_m=255
Out_s=255
Out_ms=255のとき
0≦Rnd_ms≦C_m'/ (C_m'+C_s')ならば
Out_m=255
Out_s=0
C_m'/(C_m'+C_s')<Rnd_ms≦1ならば
Out_m=0
Out_s=255
ただしRnd_msは 0≦Rnd_ms≦1をとる一様乱数
Out_ms=0のとき
Out_m=0
Out_s=0
【0096】
ここまでで、小ドットプレーンデータに対する2値化(量子化値0,255)と、中ドットプレーンの2値化(量子化値0,255)が完了する。以上の処理を全ての画素について行う(ステップS314)ことで、第2実施形態のハーフトーン処理が完了する。
【0097】
以上のような第2実施形態によれば、第1実施形態と同様に、はじめに大中小合計データを誤差拡散したため、大中小トータルで見れば最適配置となっている。そのため、大中小トータルで最適配置、視覚的に目立つ大単独で最適配置となる。第2実施形態によれば、さらに、3つのプレーンデータのドット位置を決めるのに必要な誤差拡散処理が2回で済む。すなわち、第1実施形態とそれほど変わらないドット配置となりつつも、高速処理を実現できることになる。
【0098】
なお、第2実施形態のハーフトーン処理においては、「大中小3プレーン4値化→大2プレーン2値化→ランダムに中小2値化」により「大→中及び小」の順にドット位置を決定したが、多のプレーンの組み合わせに適用できることは言うまでもない。例えば、
・「濃淡シアン2プレーン3値化→ランダムに濃淡2値化」により、「淡シアン、濃シアンのドット位置」を同時に決める。
・「シアン、マゼンタ2プレーン3値化→ランダムにシアン、マゼンタ2値化」により、「シアン、マゼンタのドット位置」を同時に決めることがあげられる。
【0099】
さらには、以下のように色分解プレーンすべてに適用しても良い。
・「CMYK4プレーン5値化→MK2プレーン3値化→Kプレーン2値化→ランダムにC、Y2値化」により、「M→K→C及びY」の優先順でドット位置を決定。
【0100】
また、ランダムに2値化を行うプレーンを3つ以上としてもよい。例えば、「CMYK4プレーン5値化→K1プレーン2値化→ランダムにC、M、Yフレームを2値化」により、「K→C、M及びY」の優先順でドット位置を決定できる。また、誤差拡散処理の回数は、n−2回となり、さらに処理の高速化を図ることができる。
このときCMY4値化データOut_cmy(量子化値0,255,510, 765)は以下の条件によって2値化される。
Out_cmy=765のとき
Out_c=255
Out_m=255
Out_y=255
Out_ms=510のとき
0≦Rnd_cmy≦(C'+M')/{2(C'+M'+Y')}ならば
Out_c=255
Out_m=255
Out_y=0
(C'+M')/{2(C'+M'+Y')}<Rnd_cmy≦(2C'+M'+Y')/{2(C'+M'+Y')}ならば
Out_c=255
Out_m=0
Out_y=255
(2C'+M'+Y')/{2(C'+M'+Y')}<Rnd_cmy≦1ならば
Out_c=0
Out_m=255
Out_y=255
Out_cmy=255のとき
0≦Rnd_cmy≦C'/(C'+M'+Y')ならば
Out_c=255
Out_m=0
Out_y=0
C'/(C'+M'+Y')<Rnd_cmy≦(C'+M')/(C'+M'+Y')ならば
Out_c=0
Out_m=255
Out_y=0
(C'+M')/(C'+M'+Y')<Rnd_cmy≦1ならば
Out_c=0
Out_m=0
Out_y=255
Out_cmy=0のとき
Out_c=0
Out_m=0
Out_y=0
ただしRnd_cmy は 0≦Rnd_cmy≦1をとる一様乱数、C', M', Y'はそれぞれ シアンDuty, マゼンタDuty, イエローDutyである。
【0101】
以上、いずれの組み合わせも設定できるため、nプレーン処理でnよりも少ない回数の誤差拡散処理で2値化したいときは、第2実施形態を選択することで実現できる。
【0102】
<第3実施形態>
第1実施形態では、「大中小3プレーン合計4値化→大中2プレーン3値化→大プレーン2値化」の順で処理することにより、大ドット、中ドット、小ドットの優先順で最適配置を行っている。このような処理は、処理対象の全てのプレーンに優先順位を与えることができる場合にきわめて有効である。たとえば、「ドット径」や「ドット濃度」が異なる際には、全てに優先順位を設定できるので非常に有効である。しかしながら、「ドット濃度」が同じ場合、即ち複数種類のドットの優先順位を同じにしたいという要求に応じることができない。例えば、ドット濃度が同じシアン、マゼンタのドットを第1実施形態の処理法で最適配置すると、どちらかを先に処理しなければならない。第1実施形態の処理の特徴上、後に処理したものほど最適配置に近づくため、同じ優先順位(同濃度)であっても、一方を最適配置すれば他方は最適配置とは言い難くなってしまう。
【0103】
第3実施形態では、ハーフトーン処理部106にて優先順位が同じ(例えばドット濃度が同じ)2つ以上のドットプレーンのデータについて、双方とも最適配置に近づける処理法について述べる。なお、ハーフトーン処理部106以外については第1実施形態と同じである。
【0104】
説明を簡略化するため、以下では、シアンの大ドットプレーンの画素値C_l'とマゼンタの大ドットプレーンの画素値M_l'の誤差拡散を例として、図12及び図15を参照して説明する。図12は、第3実施形態によるハーフトーン処理部106の構成を説明する図である。また、図15は第3実施形態によるハーフトーン処理部106の動作を説明するフローチャートである。
【0105】
シアン・マゼンタ2プレーンのデータに対して2値化(量子化値0,255)を行う場合、まずステップS401において、3値化部901にシアン、マゼンタの2つのプレーンの注目画素の合計データI_cmを入力する。なおI_cmは以下のように算出される。
I_cm=C_l'+M_l' ・・・(76)
【0106】
図12のCM3値化部901における累積誤差ラインバッファ904は、図10の(d)に示すように、1個の記憶領域E_cm0と入力画像の横画素数Wと同数の記憶領域E_cm(x)(x=1〜W)とを有し、後述する方法で量子化誤差を格納している。なお、累積誤差ラインバッファ904は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0107】
次に、ステップS402において、累積誤差加算部905で入力画素データの横画素位置xに対応する誤差E_cm(x)が加算される。即ち、入力された着目画素データをI_cm、累積誤差加算後のデータをI_cm'とすると、
I_cm'=I_cm+E_cm(x) ・・・(77)
となる。
【0108】
次に、ステップS403において、閾値選択部906で閾値T_cmを選択する。閾値T_cmは、例えば、入力画素データI_cmの範囲に応じて
T_cm(I_cm)=128 (0≦I_cm≦255) ・・・(78)
T_cm(I_cm)=384 (255<I_cm≦510) ・・・(79)
のように設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、入力画素データI_cmに応じて閾値T_cmを細かく変更するようにしても良い。
【0109】
次に、ステップS404において、CM量子化部907で誤差加算後の画素データI_cm'と閾値T(I_cm)とを比較し、出力画素値Out_cmを決定する。その規則は次の通りである。
Out_cm=0 ・・・(80)
(0≦I_cm≦255,I_cm'<T(I_cm))
Out_cm=255 ・・・(81)
(0≦I_cm≦255,I_cm'≧T(I_cm))又は
(255<I_cm≦510,I_cm'<T(I_cm))
Out_cm=510 ・・・(82)
(255≦I_cm≦510,I_cm'≧T(I_cm))又は
(510<I_cm≦765,I_cm'<T(I_cm))
【0110】
ここで、
Out_cm=0 ・・・ シアン、マゼンタドットのいずれも打たれないことが確定。
Out_cm=255 ・・・ シアン、マゼンタドットのいずれか1つが打たれる。
Out_cm=510 ・・・ シアン、マゼンタの双方とも打たれることが確定。
となる。
【0111】
次に、ステップS405において、誤差演算部908で注目画素I_cmに誤差加算後の画素データI_cm'と出力画素値Out_cmとの差分Err_cmを、次のようにして計算する。 Err_cm(x)=I_cm'−Out_cm ・・・(83)
【0112】
次に、ステップS406において、CM誤差拡散部909で横画素位置xに応じて以下の様に誤差Err_cm(x)の拡散処理が行われる。
E_cm(x+1) ← E_cm(x+1)+Err_cm(x)×7/16 (x<W)
E_cm(x-1) ← E_cm(x-1)+Err_cm(x)×3/16 (x>1)
E_cm(x) ← E0_cm+Err_cm(x)×5/16 (1<x<W)
E_cm(x) ← E0_cm+Err_cm(x)×8/16 (x=1)
E_cm(x) ← E0_cm+Err_cm(x)×13/16 (x=W)
E0_cm ← E_cm×1/16 (x<W)
E0_cm ← 0 (x=W)
・・・(84)
【0113】
以上で、1画素分のシアンドット、C_l'、マゼンタドット、M_l'2プレーン合計データに対して3値化が完了する。2プレーン合計データの3値化は、2プレーンのどのドットが打たれるかわからないが、少なくとも2プレーントータルで、最適な配置を確保することに目的がある。
【0114】
次に、ステップS407において、入力データ切り替え部903で、シアンとマゼンタ入力データを画素ごとに切り替える。例えば、入力データ切り替え部903において、式(85)、(86)に示すようランダムにIへの代入が切り替わる。
Rnd≦0.5のとき
I=C_l' ・・・(85)
Rnd>0.5のとき
I=M_l' ・・・(86)
ただし、Rndは0≦Rnd≦1の範囲をとる一様乱数である。
【0115】
なお、第3実施形態では入力データ切り替え部903は、乱数を用いて画素毎にランダムに入力を切り替えるが、それ以外の切り替え方でもよい。例えば、常にDuty(入力データ値)が多いほうをIに代入するようにしてもよい。或いは、常にDuty(入力データ値)が少ないほうをIに代入するようにしてもよい。
【0116】
さらに、シアンとマゼンタのDuty比(入力データ値比)と同じとなるよう切り替えて代入しても良い。
Rnd≦C_l'/(C_l'+M_l') ならば
I=C_l'
C_l'/(C_l'+M_l')<Rnd ならば
I=M_l'
とする。
ただし、Rndは0≦Rnd≦1の範囲をとる一様乱数である。
【0117】
図12の2値化部902における累積誤差ラインバッファ910は、図10の(e)に示すように、1個の記憶領域E_0と入力画像の横画素数Wと同数の記憶領域E_(x)(x=1〜W)とを有し、後述する方法で量子化誤差が格納されている。なお、累積誤差ラインバッファ910は処理開始前に全て初期値0で初期化されていてもよいし、ランダム値で初期化されてもよい。
【0118】
次に、ステップS409において、累積誤差加算部911で入力画素データの横画素位置xに対応する誤差E(x)が加算される。即ち、入力された着目画素データIの値は、累積誤差加算後のデータをI'とすると、
I'=I+E(x) ・・・(87)
となる。
【0119】
次に、ステップS410において、閾値選択部912において、閾値Tを選択する。例えば、
t=I_cm−I ・・・(88)
とおくと、閾値Tは、
T(t)=128 (0≦t≦255)
と設定される。或いは、ドット生成遅延を回避するため、平均量子化誤差が小さくなるよう、tに応じて閾値Tを細かく変更しても良い。なお、I_cm−Iは255以下となるので、本実施形態では必ずT(t)=128をとる。
【0120】
次に、ステップS411において、CorM量子化部912で、誤差加算後の画素データI'と閾値T(t)と前述のCM2プレーン合計データの多値化(量子化値0,255,510)結果Out_cmを比較する。そして、この比較に基づいてシアンドット最終2値化結果Out_c、とマゼンタドット最終2値化結果Out_mを決定する。その規則は次の通りである。
Rnd≦0.5であって:
Out_cm−I'≧ T(t)のとき ・・・(89)
Out_c=Out_cm−255 ・・・(90)
Out_m=255 ・・・(91)
Out_cm−I'< T(t)のとき ・・・(92)
Out_c=Out_cm ・・・(93)
Out_m=0 ・・・(94)
Rnd>0.5であって:
Out_cm−I'≧ T(t)のとき ・・・(95)
Out_m=Out_cm−255 ・・・(96)
Out_c=255 ・・・(97)
Out_cm−I'< T(t)のとき ・・・(98)
Out_m=Out_cm ・・・(99)
Out_c=0 ・・・(100)
【0121】
Rnd≦0.5のとき、Out_cmが510となると、Out_cm−I’≧T(t)となるため、式(89)条件が成立し、Out_cは、Out_c=255となる。また、Rnd>0.5のとき、Out_cmが510となると、Out_c−I’≧T(t)となるため、式(95)の条件が成立し、Out_mは、Out_m=255となる。このように、式(89)〜(100)により、シアンプレーンデータの2値化値が決定すると同時にマゼンタプレーンの2値化値が決定する。
【0122】
次に、ステップS412において、誤差演算部914で注目画素Iに誤差加算後の画素データI'と出力画素値Outとの差分Errを、次のようにして計算する。なお、OutはOut_c或いはOut_mを表す。
Err(x)=I'− Out ・・・(101)
【0123】
次に、ステップS413において、誤差拡散部915は、横画素位置xに応じて以下の様に誤差Err(x)を拡散する。
E(x+1) ← E(x+1)+Err(x)×7/16 (x<W)
E(x-1) ← E(x-1)+Err(x)×3/16 (x>1)
E(x) ← E0+Err(x)×5/16 (1<x<W)
E(x) ← E0+Err(x)×8/16 (x=1)
E(x) ← E0+Err(x)×13/16 (x=W)
E0 ← E×1/16 (x<W)
E0 ← 0 (x=W)
・・・(102)
【0124】
以上で、1画素分のシアンドット、C_l'プレーンデータに対して2値化(量子化値0,255)が完了する。また、同時に、マゼンタドットM_l'の2値化(量子化値0,255)結果が確定する。
【0125】
ここでシアンとマゼンタプレーンの2値化は、式(85)(86)に示すように切り替わるため、シアンかマゼンタのどちらか一方のみが最適配置となることはない。このため、双方ともに視覚的に目立つドットを配置する場合に、第1実施形態のように一方を最適配置にすることによって、他方が最適配置とならない弊害を回避できる。ただし、はじめにCM合計データを誤差拡散したため、CMトータルで見れば最適配置が確保されている。
【0126】
<他の実施形態>
以上、各実施形態では、所定方向に配列された複数のノズルを有する記録ヘッドをノズルの配列方向と交差する方向に記録媒体上で走査させて、記録媒体にインクを吐出することで画像を形成するインクジェット記録方式を用いた場合の画像処理装置を説明した。しかしながら、本発明は、インクジェット方式以外の他の方式に従って記録を行う記録装置に対しても適用できる。この場合、インク滴を吐出するノズルはドットを記録する記録素子に対応することとなる。
【0127】
また、例えば、本発明は、例えば記録媒体の記録幅に対応する長さの記録ヘッドを有し、記録ヘッドに対して記録媒体を移動させて記録を行う、いわゆるフルライン型の記録装置などにも適用できる。
【0128】
また、上記第1乃至第3実施形態で説明した処理は適宜組み合わせて実行することができる。第1〜第3実施形態の処理をより一般化して説明すると次の通りである。
まず、処理対象のn個のプレーンについて対応する画素の合計値を誤差拡散処理によりn+1レベルに量子化し、n個のプレーンに係る量子化値を得る(S201〜S206、S301〜S306の処理に対応する)。そして、n個のプレーンをn−k個の優先度の高いプレーンとk個の優先度の低いプレーンに分け、n−k個のプレーンの対応する画素の合計値をn個のプレーンに係る量子化値から差し引く。この差に基づいて、k個のプレーンに係る量子化値を決定する。また、このとき、n個のプレーンに係る量子化値からk個のプレーンに係る量子化値を差し引くことにより、n−k個のプレーンに係る量子化値が決定される。このとき発生する量子化誤差は、上記「n−k個のプレーンの対応する画素の合計値」に反映させるべく他の画素へ分散され、累積される(S207〜S212,S213〜S218、S307〜S312の処理が対応する)。
【0129】
ここで、k=1とすることで、上記処理により、1つのプレーンの最終的な量子化値が決定されることになる。そして、nをn−1として上記処理を繰り返し、n=2において上述したn−k個のプレーンとk個のプレーンに対する処理が終了すると、全てのプレーンについて量子化値が決定されたことになる。これが、第1実施形態の処理である(S207〜S212,S213〜S218に対応する)。また、k≧2を設定すれば、k個のプレーンについて第2実施形態で説明したランダム選択を適用して各プレーンの量子化値を決定することができる(S307〜S313に対応する)。そして、nをn−kとして上記処理を繰り返す。なお、k≧2の場合において、k個のプレーンについて優先順に1プレーンずつ配置を決定する(第1実施形態の処理を実行する)ように構成することもできる。或いは、k=2の場合に、当該2個のプレーンの量子化値を第3実施形態の処理を用いて決定することもできる。
【0130】
また、n=2となった段階で、2つのプレーンに対する処理を実行する場合に、第3実施形態の処理を適用することもできる(S401〜S413に対応する)。
【0131】
以上説明したように、上記各実施形態によれば、濃度や、色、ドット径毎に記録材の量が指定されるnプレーンデータの最終的なドット位置を求めるまでに、n回以下の誤差拡散回数で2値化が行える。例えば、n回の誤差拡散処理回数であれば、高画質処理となり、n回よりも少ない誤差拡散処理回数であれば、高速処理となる。特に第1実施形態によれば、n回の誤差拡散を実行するものの、特許文献1のように補正データを求める必要がなく、処理を簡易化することができ、高速な処理が期待できる。また、第2実施形態によれば、誤差拡散回数をn回以下に設定することが可能となり処理量(処理スピード)と画質を柔軟に変更できる。
【0132】
さらに第3実施形態によれば、「色が異なっても濃度が同じ色材のドット配置」というように、優先順位を同じにしたいケースにおいて、双方ともに最適なドット位置を決定できる。従って、例えば、濃度が同じシアン、マゼンタの2チャンネルデータを2値化する際、片方のみが最適配置となるという弊害を回避できる。
【図面の簡単な説明】
【0133】
【図1】実施形態による画像処理装置とプリンタの構成を示すブロック図である。
【図2】実施形態による記録ヘッドの構成例を示す図である。
【図3】図1の画像処理装置における処理を示すフローチャートである。
【図4】色分解用LUTをユーザが選択するためのUI例を示す図である。
【図5】色分解用LUTの例を示す図である。
【図6】ハーフトーン画像格納メモリの詳細を示す図である。
【図7】色分解処理部の構成の詳細を示す図である。
【図8】第1実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図9】誤差拡散係数の一例を示す図である。
【図10】累積誤差ラインバッファの構成例を示す図である。
【図11】第2実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図12】第3実施形態によるハーフトーン処理部の構成を示すブロック図である。
【図13】第1実施形態によるハーフトーン処理部の処理を示すフローチャートである。
【図14】第2実施形態によるハーフトーン処理部の処理を示すフローチャートである。
【図15】第3実施形態によるハーフトーン処理部の処理を示すフローチャートである。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013