JP2005318402A - 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 - Google Patents

画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 Download PDF

Info

Publication number
JP2005318402A
JP2005318402A JP2004135938A JP2004135938A JP2005318402A JP 2005318402 A JP2005318402 A JP 2005318402A JP 2004135938 A JP2004135938 A JP 2004135938A JP 2004135938 A JP2004135938 A JP 2004135938A JP 2005318402 A JP2005318402 A JP 2005318402A
Authority
JP
Japan
Prior art keywords
pixel
reference point
cell
image processing
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2004135938A
Other languages
English (en)
Inventor
Nobuhiro Karido
信宏 狩戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004135938A priority Critical patent/JP2005318402A/ja
Publication of JP2005318402A publication Critical patent/JP2005318402A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Ink Jet (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

【課題】 ガンマ補正の遅延発生を抑え、補正誤差の少ない正しいガンマ補正を行う画像処理装置、画像処理方法、画像処理プログラム、またはそのプログラムを記録した記録媒体を提供することを目的とする。
【解決手段】 閾値設定部は、順次生成される前記画素群内の画素数と画素ごとの階調値の総和とから算出した平均階調値に基づき、前記所定の閾値を設定する。そして、画素群生成部は、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成し、基準点決定部は、生成された前記画素群について所定の基準点を決定すると、データ付与部は決定された前記所定の基準点に位置する画素に所定のデータを付与する。所定の閾値によって生成される画素群の大きさが制御され、ガンマ補正される。
【選択図】 図2

Description

本発明は、画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体に関し、詳しくは、画像データの階調値を階調変換する際に行われるガンマ補正処理技術に関する。
従来より、スキャナやデジタルカメラなどから供給される入力画像を、レーザプリンタやインクジェットプリンタといったプリンタや、CRTや液晶といったディスプレイなどの画像出力装置を用いて再生表示させたり、あるいは、ファクシミリやデジタル複写機などといった画像出力装置を用いて再生表示させたりすることが行われている。
このようなプリンタやディスプレイなどの画像出力装置においては、その特性に合わせて入力画像の画像データつまり元画像データを変換するガンマ補正を行っている。たとえば、インクジェットプリンタにおいては、用紙搬送の精度や飛ばされたインク滴の着弾精度の問題に対する許容度を高めるため、インク滴によって作られる1つのドット径が画素間隔よりも大きめに設定されていたり、あるいはレーザプリンタにおいて同じような理由により、1ドットのドット面積が1画素の面積より大きくなるようにドットの形状が設定されていたりする。そのため所定の画素の位置に形成されたドットは周囲の画素へ大きくはみ出している。このため、高濃度領域ではドットが隣り合って形成されるため、はみ出し部分が隣り合うドットによって打ち消される。しかし、低濃度領域で孤立して存在する1ドットは、周囲の画素にはみ出しているため、補正なしでは元画像データに対する理想の濃度よりも大きくなってしまう。この問題を解決するために、このような画像出力装置の特性(これをガンマ特性ともいう)とは逆の特性の補正、つまり低濃度では出力するドットの数を少なくする補正をかけることがガンマ補正である。
一方、前述のような画像出力装置においては、最終的に、例えば前述した画素間隔より大きめなど所定の大きさのドットを出力して入力画像を再生表示する。このため、通常、誤差拡散法などの手法を用いて元画像データの階調値を2値や4値などの多値に階調変換するハーフトーン処理が行われ、このハーフトーン処理の結果に基づいて、ドットのオンオフを制御するデータを生成する画像処理が行われる。
ここで、このようなガンマ補正を、ハーフトーン処理に先立って行うと元画像データの階調値が有効に活用されないという問題が生ずる。例えば、上記プリンタの例のように出力が理想値よりも大きくなってしまう場合には、ガンマ補正によって元画像データの階調値「0,1,2」が「0,0,0」に、「3,4,5」が「1,1,1」に、「6,7,8」が「2,2,2」に、…、「254」が「250」に、「255」が「255」に、それぞれ階調値変換されることになる。
従って、ガンマ補正によって、元画像の階調値とガンマ補正後の階調値との差分の階調値が失われてしまう(例えば、階調値「1」、「2」が階調値「0」になる)ため、ガンマ補正後の階調値をハーフトーン処理すると、出力画像においてディテールが潰れたり、疑似輪郭が発生したりするという問題が生ずる。
この問題を解決するため、誤差拡散法において、画素ごとにドットのオンオフを示す2階調画像データに量子化する際、その画素の量子化前の階調値に対応して出力評価値を設定し、この出力評価値をガンマ特性に合わせて変化させる方法が特許文献1に開示されている。すなわち、出力評価値を実際の量子化後データよりも大きくし、この出力評価値と量子化前のデータ値との差分値を量子化誤差として拡散する。こうすることによって、拡散される量子化誤差はより小さくなり、この小さくなった量子化誤差が拡散された画素は階調値がより小さくなるため、ハーフトーン処理後、出力するドットの数をより少なく制御するものである。従って、この出力評価値の変更の度合いをガンマ特性と対応させることで、ハーフトーン処理と同時にガンマ補正を行うことになり、この結果、画像出力装置のガンマ特性に合わせてドットを出力することを可能としている。
また、同じく誤差拡散法において、多値のハーフトーン処理において階調変換処理に際して用いる閾値を、ガンマ特性に対応して変化させる方法が特許文献2に開示されている。特許文献2では、ガンマ補正後の階調値が同じ画素について、ガンマ補正前の階調値が異なる場合、元データが濃い方(階調値が大きい方)が濃い階調に量子化されるように誤差拡散処理の閾値を修正するものである。特許文献2では、ガンマ補正後のハーフトーン処理において、量子化に際して用いる閾値を修正することによって、画像出力装置のガンマ特性に合わせてドットを出力することを可能としている。
特開平9−163141号公報 特許公報 第3475425号
しかしながら、特許文献1または2に示した従来の画像処理技術では、いずれもハーフトーン処理に誤差拡散法を用いているため、ガンマ特性が反映されるのが、原理的に注目画素から生じた量子化誤差である。従って、ガンマ補正の実質的効果が得られるのは注目画素ではなく、この量子化誤差が拡散される先である画素、つまり注目画素の近傍の画素になり、この結果、ガンマ補正の遅延が発生するという課題があった。
本発明は、このような課題を解決するためになされたもので、前述したガンマ補正の遅延発生を抑え、補正誤差の少ない正しいガンマ補正を行う画像処理装置、画像処理方法、画像処理プログラム、またはそのプログラムを記録した記録媒体を提供することを目的とする。
上記目的を達成する本発明の画像処理装置は、画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理装置であって、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成部と、順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定部と、生成された前記画素群について所定の基準点を決定する基準点決定部と、決定された前記所定の基準点に位置する画素に前記所定のデータを付与するデータ付与部と、を備えたことを要旨とする。
かかる画像処理装置によれば、階調変換処理の対象となる画像を構成する画素について、階調変換未処理画素を順次選択して画素群(以下、「セル」と呼ぶ)を生成する。そして、生成されるセル内の画素の階調値合計が、セル内の画素数と画素の階調値の総和とに基づいて設定した所定の閾値以上となったとき、ドットを出力するための所定のデータをセル内の所定の基準点に位置する画素に付与する。こうすれば、ドットが出力されるセルについて、例えば、セル内の画素の平均階調値に基づいて設定した所定の閾値によって、セルの大きさが変化することになる。従って、画像出力装置のガンマ特性に対応して所定の閾値を設定することによって、出力されるドットとセルの面積割合が変わり、ガンマ補正を行うことができる。
ここで、前記基準点決定部は、前記画素群における画素の位置と画素の階調値とから算出した重心位置を、前記所定の基準点として決定することとしてもよい。こうすれば、生成されるセルのおおよそ中心位置にドットが出力されることになる。従って、ドット間での距離が保たれ、前述した隣接するドットの影響が少ない正しいガンマ補正を行うことが期待できる。
さらに、本発明の画像処理装置は、画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理装置であって、画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成部と、順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定部と、生成された前記画素群について第2の基準点を決定する基準点決定部と、決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与部とを備え、前記画素群生成部は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与部は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定部が決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とする。
かかる画像処理装置によれば、階調変換処理の対象となる画像を構成する画素について、第1の基準点に基づいて階調変換未処理画素を順次選択してセルを生成する。そして、生成されるセル内の画素の階調値合計が、セル内の画素の平均階調値に基づいて設定した所定の閾値以上となったとき、ドットを出力するための所定のデータをセル内の第2の基準点に位置する画素に付与する。こうすれば、生成するセルの形状を決める基準点と、出力するドットの位置を決める基準点とを分けて設定できるため、セルの形状のみに着目してセルの生成を行うことが可能となる。従って、隣接するドットが重なる確率が減少し、セル内の画素の平均階調値に基づいて設定した所定の閾値によって、正しくガンマ補正される確率が高くなる。
また、前記画素群生成手段は、前記第1の基準点に基づいて選択すべき画素が複数存在するとき、選択する画素をランダムに選択することとしてもよい。こうすれば、生成するセルの形状がランダムになり易く、出力されるドットの位置がバラツクことになり、例えばドットが部分的に重なるセルが連続する場合は、その重なり具合もランダムに変化するため、画像全体についてガンマ補正への影響を少なくすることが期待できる。
ここで、前記第1の基準点および前記第2の基準点は、前記画素群における画素の位置と画素の階調値とから算出した重心位置であることとしてもよい。こうすれば、セルの生成処理に際して、例えば、常にセルの重心に最も近い画素を選択してセルに組み入れていくようにすると、生成されるセルの形状はセルの重心を中心としたおおよそ円形状になる。そして、その円のおおよそ中心位置にドットが形成されることになるため、例えば、同一濃度の画像を階調変換した場合、形成されるドット間距離がほぼ均一となり、隣接するドットの影響がほぼ同じになることより、正しくガンマ補正を行うことが期待できる。
あるいは、前記第1の基準点は、前記画素群における画素の位置から算出した中心位置であり、前記第2の基準点は、前記画素群における画素の位置と画素の階調値とから算出した重心位置であることとしてもよい。こうすれば、画素群に組み入れる画素の選択を各画素の位置を基準に算出すればよく、重心を算出する場合に比べて算出処理に関する負荷を軽減できる。また形成されるドットの位置は、生成したセルの重心位置とするため、前述したように、生成されるセルのおおよそ中心位置にドットが出力されることになる。従って、ドット間での距離が保たれ、隣接するドットの影響が少ない正しいガンマ補正を行うことが期待できる。
あるいは、前記第1の基準点および前記第2の基準点は、前記画素群における画素の位置から算出した中心位置であることとしてもよい。こうすれば、例えば、第1の基準点および第2の基準点を決定する処理に際して、両方とも画素の階調値を含めた演算を行う必要がなくなるので、演算量を少なくして装置全体の処理効率を上げることができる。
また、前記画素群生成部は、前記第1の基準点を、前記画素を所定の回数選択するごとに更新することとしてもよい。こうすれば、画素選択の基準点を毎回更新するのではなく、例えば1回おきに更新するなどとすることで、基準点の算出に関する演算量を減らすことができ、他の処理を含めた画像処理装置全体の処理速度の向上を図ることができる。
また、前記閾値設定部は、前記所定の閾値の設定に際して、前記出力されるドットの大きさと関係付けて予め設定した閾値を用いることとしてもよい。こうすれば、入力画像を再生表示する画像出力装置において、画像出力装置が出力するドットの大きさに合わせて、その画像出力装置のガンマ特性に最適な閾値を設定することができるため、ガンマ補正を正しく行うことが容易となる。
さらに、前記画素群生成部は、前記画素群における画素ごとの階調値の総和が前記所定の閾値を超えたとき、超えた分の前記階調値を前記画素群生成部が最後に選択した画素に戻すこととしてもよい。こうすれば、所定の閾値を超えたセルに最後に組み入れられた画素に、所定の閾値を超えた分の階調値を戻しているため、ハーフトーン処理前の入力画像の階調値が失われず、元の画像とほぼ同じ位置に画像全体の階調値が残るため、前述した課題であるガンマ補正の遅延を抑制することができる。
また、本発明の画像処理方法は、画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理方法であって、画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成工程と、順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定工程と、生成された前記画素群について第2の基準点を決定する基準点決定工程と、決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与工程とを備え、前記画素群生成工程は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与工程は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定工程によって決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とする。
また、本発明はコンピュータプログラムまたはそのプログラムを記録した記録媒体としてもよい。すなわち、画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理プログラムであって、画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成処理と、順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定処理と、生成された前記画素群について第2の基準点を決定する基準点決定処理と、決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与処理とをコンピュータに実行させ、前記画素群生成処理は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、前記データ付与処理は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定処理によって決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とする。また、このプログラムを記録した記録媒体としては、フレキシブルディスクやCD−ROM、ICカード、パンチカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
次に、本発明を実施するための最良の形態を説明する。図1は、本発明が適用される画像処理装置を含むシステム全体の一例を示す構成図である。全体として画像入力装置10と、画像処理装置20と、画像出力装置30とから構成される。これらの装置は基本的にコンピュータによって制御され、所定のオペレーティングシステムのもとで所定のプログラムが実行されることによって動作する。
画像入力装置10は、アプリケーション部11とラスタライズ部12とから構成される。アプリケーション部11は、文字データ、図形データ、ビットマップデータ等の印刷対象となる出力画像用のデータを生成する。例えば、画像入力装置10でワードプロセッサや図形ツールなどのアプリケーションプログラムを使用して、図示しないキーボード等の操作により文字データや図形データなどを生成する。そして生成したこれらのデータを、ラスタライズ部12へ出力する。もとより、画像入力装置10は、図示しないスキャナやデジタルスチルカメラなどの画像入力機器から出力されるデータを受け付け、このデータをアプリケーション部11が生成するデータとしてラスタライズ部12へ出力するものとしても差し支えない。
ラスタライズ部12は、アプリケーション部11から出力された印刷対象のデータを画素ごとに8ビットの階調データに変換する。本実施形態では、R(レッド)、G(グリーン)、B(ブルー)の色毎で、画素ごとに8ビット(計24ビット)の階調データを出力する。したがって、出力される階調データは、画素ごとに0から255までの256種類の階調値を有することになる。ラスタライズ部12における階調データの生成処理は、実際には画像入力装置10に実装されたドライバによって行われる。ラスタライズ部12から出力される階調データは、画像処理装置20に出力される。
画像処理装置20は、色変換部21とハーフトーン処理部22とから構成される。画像処理装置20では、画像入力装置10から出力された階調データに対して、色変換処理とハーフトーン処理を行い、所定のデータDRを画像出力装置30へ出力する処理が行われる。
色変換部21は、画像入力装置10から出力される256種類のレベル値を有するRGB各8ビット(計24ビット)の階調データを受け取り、画像出力装置30が出力する色成分に合わせて色変換処理を行う。本実施形態では、RGBの階調データを、RGBからCMYの階調データDTに色変換処理を行うものとする。ここで、Cはシアン、Mはマゼンダ、Yはイエローを示す。
ハーフトーン処理部22は、色変換部21から出力されるCMYの階調データDTに対して、所定の閾値を用いて量子化データ(2値あるいは4値などの多値の値)に変換し、変換された量子化データに対応する所定のデータDRを画像出力装置30に出力する。ハーフトーン処理として、本実施形態では、複数の画素からなるセルを、画素群の重心を用いてセルを構成し、その重心にドットを生成させる処理(Circular Cell法、以下CC法)を用いる。CC法の具体的な内容は後述する。
画像出力装置30は、パルス幅変調部31と印刷エンジン35とから構成され、印刷エンジン35は、レーザドライバ36とレーザダイオード(LD)37とから構成される。画像出力装置30では、画像処理装置20から出力された所定のデータDRに従って印刷エンジン35が駆動され、この印刷エンジン35によって実際に印刷用紙等の記録媒体への印刷が行われ入力画像が再生表示されるのである。
パルス幅変調部31は、ハーフトーン処理部22から出力された所定のデータDRを入力し、この所定のデータDRから所定のパルス数とパルス幅をもったレーザ駆動パルスを駆動データとして生成する。そして、この駆動データをレーザドライバ36に出力する。
レーザドライバ36は、入力された駆動データから、レーザダオード37を駆動する制御データを生成し、レーザダイオード37に出力する。レーザダイオード37は、レーザドライバ36から出力された制御データに基づいて駆動され、さらに図示しない感光ドラムや転写ベルトが駆動されて、最終的に印刷用紙等の記録媒体に、パルス幅とパルス数に応じて、所定の大きさのドットが所定の数だけ出力される。こうして、画像入力装置10からのデータが印刷されることになる。
次に、図2を参照して、画像処理装置20の具体的構成について説明する。ここで、図1の画像処理装置20を構成する色変換部21、ハーフトーン処理部22は、図2におけるCPU26、RAM27およびROM28に対応する。
画像処理装置20は、全体として、入出力インターフェイス(I/F)25、CPU26、RAM27、ROM28、ハードディスク29とから構成され、それらはバスを介して互いに接続されている。入出力I/F25は、画像入力装置10と画像処理装置20とのインターフェイス及び画像処理装置と画像出力装置のインターフェイスの役割を果たす。入出力I/F25には、所定の伝送方式により伝送された画像入力装置10からのRGB階調データが入力され、画像処理装置20で処理できるデータに変換される。RGB階調データは、一旦RAM27に格納される。そして、入出力I/F25から、所定のデータDRを画像出力装置30に所定の伝送方式を用いて送出する。
CPU26は、バスを介してハードディスク29またはROM28に格納されたプログラムを読み出し、この読み出したプログラムを所定のオペレーティングシステムのもとで実行することによって、画像処理装置20として機能し、所定の処理を実行する。特に、請求項に記載した画素群生成部、閾値設定部、基準点決定部、データ付与部として機能し、後述するCC法によるハーフトーン処理を実行する。
これらの処理を記録したプログラムは、予めハードディスク29やROM28に格納されていることとしてもよいし、例えばCD−ROMなどのコンピュータが読み取り可能な記録媒体によって外部から供給され、図示しないCD−R/RWドライブを介してハードディスク29に記憶することによって格納されるものとしてもよい。もとより、インターネットなどのネットワーク手段を介して、プログラムを供給するサーバー等にアクセスし、データをダウンロードすることによってハードディスク29に格納されるものとしてもよい。
RAM27は、CPU26の制御によって実行される各処理のワーキングメモリとして役割を果たし、処理後の各種データを格納する。RAM27の具体的構成等については後述する。
次に、以上のように構成された画像処理装置20において行われる処理について、図3のフローチャートを用いて具体的に説明する。本実施形態では、色変換処理後のCMYの階調データは、各色8ビットずつの階調データとなっており、色変換部21が出力する階調データDTは、各色0から255まで256種類の階調値を有する階調データであるものとする。また本実施形態では、ハーフトーン処理部22にて、1つの大きさのドットを出力するか否か、つまり1つのドットのオンオフを制御する2値化処理を行うものとして説明することとし、ハーフトーン処理部22が出力する所定のデータDRは、C、M、Yそれぞれの色成分について、画素ごとに階調値0か階調値255かに2値化(量子化)された階調データであるものとする。最終的に、画像出力装置30は、前述したように、出力された所定のデータ、つまり階調値255に量子化された全ての画素に対応してパルス幅とパルス数を生成し、所定の大きさを持った1つのドットのオンオフを制御して印刷を行うことになる。なお、図3のフローチャートで示した処理は、C、M、Yそれぞれの色成分の階調データに対して行われるものである。
この処理が開始されると、まずステップS201において、入力画像を読み込む処理を行う。具体的には、色変換部21が出力した階調データDTを読み込むことによって入力画像を読み込む処理を行う。ここではC(シアン)の階調データが入力画像として読み込まれたものとする。読み込んだ階調データの一例を図4(a)に示した。ここで、読み込んだ入力画像について、入力画像はドットマトリクス状に配置された正方形の画素によって構成されているものとして考え、それぞれの画素の位置を行と列で表すこととする。例えば、m行n列目の画素(以降(n,m)と表す)には、階調値“50”の階調データが与えられているというように表す。
次に、ステップS205以降の処理によって、CC法によるハーフトーン処理が行われる。具体的な処理を説明する前に、CC法についての概要を説明する。CC法によるハーフトーン処理は、ハーフトーン処理が未処理である画素のうち、最も上の行のうちで最も左にある画素を初期画素として探索し、所定の閾値に達するまで初期画素周辺の未処理画素を選択して、複数の画素からなるセルを構成する。セルを構成する未処理画素を選択する際、それまで構成したセルの重心位置から最も近い画素を選択する。そして、閾値に達するとそのセルの重心位置に位置する画素に、ドットオンを示す値(例えば“255”)を付与し、それ以外の画素はドットオフを示す値(例えば“0”)を付与する。CC法は、以上の処理を入力画像の全ての画素の階調データに対して行うことで、量子化された2値化データを得るのである。
このCC法のハーフトーン処理が開始されると、ステップS205にて探索未処理画素は有るか否かの判定処理を行う。未処理画素の探索は、前述したように常に、まず水平方向に探索走査を行い、次に垂直方向へ探索走査を行う。すなわち、未処理画素が有る場合は、入力画像の全体で最も上側にある画素のうち、最も左側にある画素が探索されることになる。もとより、ハーフトーン処理の開始時では、1行1列目の画素が探索されることになる。
次に、判定の結果、未処理画素が有った場合(YES)、次のステップS210へ進む。一方、判定の結果、未処理画素が無い場合は(NO)、入力画像全体はハーフトーン処理されたものとして、2値化データを出力する処理を行い(ステップS206)、画像処理装置20での処理を終了する。
ステップS210では、平均階調値による閾値設定処理を行う。この閾値設定処理によって、前述したガンマ補正を行うのである。ガンマ補正の効果について理解を容易にするため、以下
(A)ガンマ補正を行わない(平均階調値による閾値設定処理を行わない)場合:
(B)ガンマ補正を行う(平均階調値による閾値設定処理を行う)場合:
に分けて説明する。平均階調値による閾値設定処理の具体的な処理内容については図6のフローチャートを用いて(B)ガンマ補正を行う処理の中で説明する。
(A)ガンマ補正を行わない場合:
ステップS210では、所定の閾値として、常に“255”を設定する。次に、ステップS215にて、セルの拡大終了条件が成立するか否かを判定する処理を行う。本実施形態では、セル内の画素の階調値合計が閾値“255”以上であることがセルの拡大終了条件となる。そして、判定の結果、NOの場合はセルを拡大する処理を行う(ステップS220)。具体的には、セルの重心から最も近い画素をセルに組み入れることによってセルの拡大を行う。一方、判定の結果、YESの場合はセルの拡大を終了し、ステップS225へ進む。
ステップS205およびステップS215での処理について、図4を用いて具体的に説明する。いま、探索した未処理画素MGが図4(a)の網掛け部で示したm行n列目の画素(n,m)であり、他の画素も全て未処理画素であったとする。このとき、(n,m)1画素のセルCLが生成されたことになる。そしてセルCLの重心位置GCは、画素(n,m)の中心になる。
次にセルCL内の画素の階調値の合計は“50”となり、“255”未満であるので、セルCLの重心位置を算出し、図4(b)網掛け部で示したように、算出した重心位置GCから最も近い未処理画素をセルCLに組み入れる。この場合、(n+1,m)(n,m+1)の2つが重心に最も近い画素として存在するが、本実施形態では走査方法に則した走査方向の順序に従って(n+1,m)をセルに組み入れ、セルCLを拡大する。
次に、拡大したセルCL内(図4(c)の太枠内の部分)の画素の階調値の合計は“100”となり、“255”未満であるので、セル内の画素位置と画素の階調値からセルCLの重心位置GCを算出する(図4(c))。そして、図4(c)網掛け部で示したように、算出した重心位置GCから最も近い画素(n,m+1)(n+1,m+1)のうち、同じく走査方向の順序に従って(n,m+1)をセルに組み入れ、セルCLを拡大する。
次に、拡大したセルCL内(図4(d)の太枠内の部分)の画素の階調値の合計は“150”となり、“255”未満であるので、セルCL内の画素位置と画素の階調値からセルCLの重心位置GCを算出する。そして、図4(d)網掛け部で示したように、算出した重心位置GCから最も近い画素(n+1,m+1)をセルに組み入れ、セルCLを拡大する。
次に、拡大したセルCL内(図4(e)の太枠内の部分)の画素の階調値の合計は“205”となり、“255”未満であるので、セルCL内の画素位置と画素の階調値からセルCLの重心位置GCを算出する。そして、図4(e)網掛け部で示したように、算出した重心位置GCから最も近い画素(n+1,m+2)をセルに組み入れ、セルCLを拡大する。
次に、拡大したセルCL内(図4(f)の太枠内の部分)の画素の階調値の合計は“255”となり、セルの拡大終了条件を満たすので、セルCLの拡大処理を終了する。
次にステップS225(図3)では、セル内の画素の階調値合計が閾値と等しいか否かを判定する処理を行う。判定の結果閾値と等しい場合は(YES)、前述の処理と同様、セル内の画素位置と画素の階調値からセルの重心位置GCを算出する処理を行う(ステップS229)。そして、算出した重心位置GCに存在する画素に、所定のデータを付与する処理を行い(ステップS230)、ステップS205に戻って未処理画素の探索処理以降を繰り返す。
図4(f)に示したように、本実施形態では、ステップS230で、ステップS229によって算出した重心位置GCに存在する画素(n+1,m+1)に、閾値と同じ階調値“255”を所定のデータとして与える。この階調値“255”が与えられた画素の位置に、最終的にC(シアン)色の所定の大きさのドットが出力され、画像が印刷されるのである。
一方、ステップS225で判定の結果、閾値と等しくない場合つまり閾値を超える場合は(NO)、閾値を超える階調値分を無視してセルの重心を算出する処理を行う(ステップS226)。そして、この閾値を超える階調値分(以下、これを「誤差データ」と呼ぶ)を最後にセルに組み入れた画素に戻す処理を行い(ステップS227)、誤差データを戻した画素を未処理画素とする処理を行う(ステップS228)。そして、ステップS230に進み、算出した重心位置に存在する画素に、閾値と同じ階調値“255”を与える処理を行う。
ステップS226からS228までの処理について、図5を用いて具体的に説明する。図5(a)は、図4(f)にて説明したセルCL1の生成処理に続き、ステップS205にて、所定の走査方法による走査方向に従って画素(n+2,m)が未処理画素として探索された状態を示している。そして図4にて説明した処理と同様に処理を行い、図5(b)では画素(n+2,m+1)を、図5(c)では画素(n+3,m+1)を、図5(d)では画素(n+3,m+2)をセルCL2に組み入れてセルを拡大する。
図5(e)に示したように、画素(n+3,m+2)がセルCL2に組み入れた時点で、セルCL2内の画素の階調値合計は“265”となり、閾値“255”を超える。そこで、超えた分の誤差データ“10”(=265−255)を無視し、画素(n+3,m+2)が階調値“50”(=60−10)であるとしてセルCL2の重心位置GC2を算出する。
そして、図5(f)に示したように、算出した重心位置GC2に存在する画素(n+3,m+1)に階調値“255”を付与する。このとき、最後にセルCL2に組み入れた画素(n+3,m+2)に誤差データ“10”を戻す。そして、画素(n+3,m+2)を階調値“10”を有する未処理画素とし、セルCL2から除外する。
以上説明したように、ガンマ補正を行わない場合のCC法によるハーフトーン処理では、図4(a)に示した入力画像の階調データは、図5(f)に示した2値化データとして出力される。
(B)ガンマ補正を行う場合:
ステップS210で行う平均階調値による閾値設定処理について、図6のフローチャートを用いて説明する。この処理が開始されると、まずステップS211でセル内の画素数を記憶する処理を行う。次に、ステップS212で、セル内の画素の階調値の合計値を記憶する処理を行う。そして、次のステップS213にて、セル内の画素の平均階調値を算出する処理を行う。
セル内の画素の平均階調値(以下、単に「平均階調値」と呼ぶ)HKは、セル内の画素数をGN、セル内の画素の階調値の合計値をKGとすると、次の演算式(式1)から求められる。
(式1)
HK=Format(KG/GN)
ここで、「Format」は小数点以下を四捨五入することを意味する関数である。
本実施形態では、セル内の画素数GNは、セルの拡大処理(図3ステップS220)にてセルに組み入れられた画素を含むものとする。もとより、セルの拡大処理にてセルに組み入れられた画素を含まず、拡大処理前のセル内の画素数としてもよい。
次に、ステップS214にて、閾値変換テーブルを参照して閾値を設定する処理を行い、閾値設定処理ルーチンを終わりステップS215に戻る。
本実施形態では、図7に示した閾値変換テーブルTB1を参照して閾値を設定する。閾値変換テーブルTB1は、出力ドット数が1個分で表された1種類の大きさのドットサイズを持ったドットを、生成したセルの所定の画素に出力する場合に、平均階調値HKに合わせて閾値SHを設定したものである。閾値変換テーブルTB1では、最高濃度を表す階調値“255”では同じ値の閾値“255”とし、低濃度側になるほど閾値が大きくなるように設定されている。つまり、平均階調値が小さくなるほど大きい閾値を設定することによってガンマ補正を行うのである。もとより、閾値変換テーブルを用いず、所定の演算式を用いて算出し設定することとしてもよい。例えば、演算式(式2)によってSHを算出し、算出した値を閾値SHとして設定するものとしてもよい。
(式2)
SH=INT(255+(255−HK)×0.9)
ここで、平均階調値HK=0のときは、ドットの出力は無いので閾値SHは設定されない。また「INT」は小数点以下の端数を切り捨てることを意味する関数である。なお本実施形態では、(式2)は、閾値変換テーブルTB1を演算式で表したものである。
以上説明した平均階調値による閾値設定処理を、セルの拡大処理(図3ステップS220)が行われるごとに繰り返し行うことによって、閾値はセル内の画素の平均階調値に合わせて設定されることになる。
そして、セルの拡大終了条件が成立したとき(ステップS215:YES)、つまりセル内の画素の階調値合計が、ステップS210で設定された閾値以上となったとき、ステップS225に進む。
ステップS210、S215、S220での処理について、図8を用いて具体的に説明する。図8(a)は、図4(f)に示した状態と基本的に同じ状態を示したものである。この後、前述のガンマ補正を行わない場合は、図5(a)にしめしたように、新たな未処理画素が探索され、走査方法に従って画素(n+2,m)が選択されるが、ガンマ補正を行う場合は、セルCL1内の画素の階調値合計が、セルCL1内の画素の平均階調値に基づいて設定された閾値未満であればセルを拡大する。
図8(a)では、セルCL1内の画素数は“5”、階調値合計は“255”であることより、平均階調値HKは“51”(=255/5)となる。このときの閾値は、図7に示した閾値変換テーブルTB1または(式2)を用いて求められ、閾値SH“438”が設定される。
このとき、セルCL1内の画素の階調値合計は“255”で、閾値SH“438”未満であるので、図8(a)網掛け部で示したように、重心位置GC1から最も近い未処理画素(n,m+2)をセルに組み入れ、セルCL1を拡大する。
次に、拡大したセルCL1内(図8(b)の太枠内の部分)の画素の階調値合計は“305”となり、このときの平均階調値は“50.8”(=305/6)と算出される。本実施形態では、算出された平均階調値が小数点を含む場合、四捨五入によって整数値化され、平均階調値HKは“51”となる。もとより、小数点以下を切り捨てたり、切り上げしたりして整数値化するものとしてもよい。
平均階調値HK“51”より、閾値SHは“438”であるので、セルを拡大するため、セル内の画素位置と画素の階調値からセルCLの重心位置GC1を算出する(図8(b))。そして、図8(b)網掛け部で示したように、算出した重心位置GC1から最も近い画素(n+2,m+1)をセルに組み入れ、セルCL1を拡大する。
次に、拡大したセルCL1内(図8(c)の太枠内の部分)の画素の階調値合計は“355”となり、このときの平均階調値HKは“50.7”(=355/7)と算出され、四捨五入によって“51”となる。従って、設定される閾値SHは“438”であるので、セルを拡大する処理が行われ、セルCL1内の画素位置と画素の階調値からセルCL1の重心位置GC1を算出する。そして、算出した重心位置GC1から最も近い画素をセルに組み入れ、セルCL1を拡大する。
図8(c)に示した場合では、網掛け部で示したように、(n+2,m)または(n+2,m+2)の2つの画素が重心位置GC1から最も近い画素として存在する。この場合も図4(b)(c)にて説明したように、走査方法に則した走査方向の順序に従って(n+2,m)をセルに組み入れ、セルCL1を拡大する。
次に、拡大したセルCL1内(図8(d)の太枠内の部分)の画素の階調値合計は“405”となり、このときの平均階調値HKは“50.6”(=405/8)と算出され、四捨五入によって“51”となる。従って、設定される閾値SHは“438”であるので、セルを拡大するため、セルCL1内の画素位置と画素の階調値からセルCL1の重心位置GC1を算出する。そして、算出した重心位置GC1から最も近い画素(n+2,m+2)をセルに組み入れ、セルCL1を拡大する。
次に、拡大したセルCL1内(図8(e)の太枠内の部分)の画素の階調値合計は“455”となり、このときの平均階調値HKは“50.5”(=455/9)と算出され、四捨五入によって“51”となる。従って、設定される閾値SHは“438”であるので、セル内の画素の階調値合計が閾値以上となり、今度はセルの拡大終了条件が成立するので、セルCL1の拡大処理を終了する。以上の処理が図3のステップS210、S215、S220にて行われるのである。
次にステップS225で、セル内の画素の階調値合計が閾値と等しいか否かを判定する処理を行う。判定の結果閾値と等しい場合は(YES)、前述の処理と同様、セル内の画素位置と画素の階調値からセルの重心位置GC1を算出する処理を行う(ステップS229)。そして、算出した重心位置GC1に存在する画素に、所定のデータを付与する処理を行い(ステップS230)、新たなセルを生成するためステップS205に戻って未処理画素の探索処理以降を繰り返す。
図8(f)に示したように、本実施形態では、ステップS230で、ステップS229によって算出した重心位置GC1に存在する画素(n+1,m+1)に、ドットオンを示す階調値“255”を所定のデータとして与える。この階調値“255”が与えられた画素の位置に、最終的にC(シアン)色の所定の大きさのドットが出力され、画像が印刷されるのである。
一方、ステップS225での判定処理の結果、閾値と等しくない場合つまり閾値を超える場合は(NO)、閾値を超える階調値分つまり誤差データを無視してセルの重心を算出する処理を行う(ステップS226)。そして、最後にセルに組み入れた画素にこの誤差データを戻す処理を行い(ステップS227)、誤差データを戻した画素を未処理画素とする処理を行って(ステップS228)、ステップS230に進む。
ステップS226からS228までの処理について、図8(f)を用いて具体的に説明する。図8(e)に示したように、画素(n+2,m+2)がセルCL1に組み入れた時点で、セルCL1内の画素の階調値合計は“455”となり、閾値“438”を超える。そこで、超えた分の誤差データ“17”(=455−438)を無視し、画素(n+2,m+2)が階調値“33”(=50−17)であるとしてセルCL1の重心位置GC1を算出する。次に、最後にセルCL1に組み入れた画素(n+2,m+2)に誤差データ“17”を戻す。そして、画素(n+2,m+2)を階調値“17”を有する未処理画素とし、セルCL1から除外するのである。
ステップS230では、図8(f)に示したように、算出した重心位置GC1に存在する画素(n+1,m+1)に階調値“255”を付与する。以降、ステップS205に戻り、未処理画素が無くなるまで同様な処理を繰り返し、入力画像全体のハーフトーン処理が終了すると(ステップS205:NO)、2値化データを出力して(ステップS206)、画像処理装置20での処理を終了する。
以上説明したように、ガンマ補正を行う場合のCC法によるハーフトーン処理では、図4(a)に示した入力画像の階調データは図8(f)に示した2値化データとして出力される。
図9(a)は、図5(f)に示したガンマ補正を行わない場合に出力される2値化データにしたがって、最終的に画像出力装置30によって出力されるドットDOTを示している。ガンマ補正を行わない場合は、図9(a)に示したように、5画素ないし4画素に対して1つのドットが出力される。一方、図9(b)は、図8(f)に示したガンマ補正を行う場合に出力される2値化データにしたがって、最終的に画像出力装置30によって出力されるドットDOTを示している。ガンマ補正を行う場合は、図9(b)に示したように、8画素に対して1つのドットが出力される。つまり、図9(a)に比べて、画像全体で出力されるドットの数が少なくなり、前述したようにガンマ補正が行われる。
これまでの説明から明らかなように、平均階調値に基づいて閾値変換テーブルTB1や(式2)によって設定される閾値の大きさによって、生成されるセルの大きさが変わる。従って平均階調値が小さくなるほどセルが大きく形成されるため、出力されるドットの面積割合は少なくなり、ガンマ補正が行われるのである。もとより、閾値は、画像出力装置30のガンマ特性に合わせて設定される値であり、本実施形態で設定した値になんら制限されるべきものでないことは言うまでもない。
また本実施形態において説明したように、CC法によるハーフトーン処理においては、誤差データを元の画素に戻すため、誤差データが別のセルに拡散されない。従って、入力画像データの歪みが小さくなり、入力画像の階調データに対して比較的忠実に階調変換処理を行うことができる。この結果、特許文献1または2に示した誤差拡散法を用いた従来のハーフトーン処理技術において、課題であったガンマ補正の遅延を抑えることができるのである。
また、CC法によれば、セルの重心に最も近い画素を選択してセルに組み入れていくため、図8(f)から明らかなように、生成されるセルの形状は重心を中心としておおよそ円形になる。従って、セルの重心に出力されるドットは、セルのほぼ中央の位置となるため、ドットが重なる確率は低くなり、ガンマ補正が正しく行われることが期待できる。
次に、本実施形態における画像処理装置20のハード構成において、各ハードが行う具体的なハーフトーン処理の内容を、図3のフローチャートと図2の構成図を参照して説明する。
まず、CPU26は、ハードディスク29またはROM28に格納されたプログラムを読み出して、入力画像の読み込み処理を開始する(ステップS201)。入力画像の読み込みは、画像入力装置10から出力された画像データを入出力I/F25を介してRAM27に取り込むことで行う。このとき、C、M、Y各色成分の入力画像データは、RAM27の所定領域である入力バッファ領域に格納される。この例を図10(a)に示す。
RAM27は、図10(a)に示すように、入力バッファ領域271と、ワーキングメモリ領域272と、出力バッファ領域273とから構成される。この入力バッファ領域271は、2次元構造を有しており、例えば上述の入力画像の画素(以降、入力画素)について、(n,m)に位置する入力画素は、入力バッファ領域の(n,m)のアドレスに格納される。入力画素の位置に対応するように入力バッファ領域271が構成される。実際には、このアドレスには入力画像データの階調値が格納されることになる。例えば、シアン色の入力画像データの階調値が入力されると、図10(a)に示すように入力バッファ271に各画素のシアン色成分の階調値が格納される。ワーキングメモリ領域272は、重心位置の算出結果である(x,y)座標、セル内の画素の階調値合計の算出結果、セル内の画素数GN、セル内の画素の平均階調値の算出結果HK、セルの閾値SHが格納され、出力バッファ領域273は入力バッファ271と同様に各入力画素の位置に対応するように構成される。詳細は後述する。
次いで、CPU26は、セル生成の最初の未処理画素となる初期画素を探索決定して(ステップS205)、決定した初期画素の画素数GNと階調値からセルの平均階調値HKを算出し、閾値SHを設定する(ステップS210)。閾値SHの設定は、具体的にはROM28に格納された閾値変換テーブルTB1を読み出し、算出した平均階調値HKに対応する閾値SHをワーキングメモリ272に格納して行う。もとより、閾値変換テーブルTB1はハードディスク29に格納されていてもよく、この場合はCPU26は閾値変換テーブルTB1をハードディスク29から読み出す。次いで、CPU26はセル内の画素の階調値合計が設定した閾値より小さいか否かを判断する(ステップS215)。具体的には、RAM27のワーキングメモリ272に格納した閾値を読出し、RAM27の入力バッファ271から読み出した初期画素の階調値と比較し、閾値よりも小さい場合はステップS220に移行し、閾値と同じか大きいときはステップS225に移行する。
初期画素の決定は、RAM27の入力バッファ271に格納された入力画像データのうち、入力画素の位置で最も上で左側に位置する未処理画素をCPU26が選択する。すなわち、図10(a)に示す例では、(n,m)に対応する位置に位置する画素を初期画素としてCPU26は判断する。以下、説明を簡単にするため、(n,m)=(0,0)として説明する。
ステップS205において、CPU26は、初期画素の画素数“1”を、ワーキングメモリ272の所定のアドレス「gn」に格納する。そして、格納した画素数GNと入力バッファ271から読み出した初期画素の階調値“50”とから、ROM28に格納された(式1)を読み出して平均階調値“50”を算出し、算出結果をワーキングメモリ272のアドレス「hk」に格納する(図10(b)参照)。
次いで、CPU26は、ROM28に格納された閾値変換テーブルTB1を読み出し、アドレス「hk」に格納された平均階調値“50”に基づいて対応する閾値“439”を読み出し、ワーキングメモリ272の閾値アドレス「sh」に格納する(図6、ステップS214)。
次いでCPU26は、セルつまり初期画素の階調値が閾値SHより小さいか否かを判断する(ステップS215)。具体的には、CPU26は、RAM27の入力バッファ271に書き込んだ初期画素の画素値とワーキングメモリに書き込んだ閾値SHとを比較する。例えば図10(b)の例では、初期画素の階調値は“50”であり、アドレス「sh」に格納されている値は“439”であるため、セルの階調値合計は閾値より小さいことになる。
ステップS215で閾値より小さいと判断された場合(NO)、CPU26は、未処理画素の選択を行いセルを拡大する処理を行う(ステップS220)。このセルを拡大する処理に際して、CPU26は、新たに選択した未処理画素の画素数“1”をワーキングメモリ272のアドレス「gn」に加算して格納するとともに、初期画素の階調値をワーキングメモリ272のアドレス「sum」に加算して格納する。初期画素の場合は、以前に格納されている階調値は存在していないため、ここでは初期画素の階調値が書き込まれる。以降、CPU26は、セルを拡大する処理に際して、新たに選択した画素数“1”と、それまでに選択された未処理画素の階調値を加算して、それぞれアドレス「gn」「sum」に格納する処理を行う。
同時にCPU26は、選択した初期画素に対応する入力バッファ271に“−1”を格納する。未処理画素の選択処理で、再度当該画素が選択されないようにするためである。以降CPU26は、未処理画素の選択処理に際して、選択処理と同時もしくは選択処理以前に、既に選択された画素に対応する入力バッファ271に“−1”を格納する処理を行う。このような処理を行うのは、入力バッファ271に格納された階調値は、その合計値としてワーキングメモリ272のアドレス「sum」に格納され、以後の処理で必要とされないからである。
なお、CPU26は、入力バッファ271に“−1”を格納させているが、これに限ることはなく、他の負の値や特定値などによっていわゆるマーキング処理を行うこととしてもよい。さらに入力バッファ271と同様の構成のメモリ領域を用意して、選択した画素に対応する位置にフラグを立てて、選択画素が処理済みか否かを判別するようにしてもよい。
また、CPU26は、ステップS215で初期画素の階調値が閾値より小さいと判断された場合は、初期画素に対応する出力バッファ273に“0”を格納し、ステップS215で初期画素の階調値が閾値以上と判断された場合は、その時点で初期画素に対応する出力バッファ273に“255”を格納する。この画素にドットを出力する(打つともいう)処理を行うためである。ここでは、図10(b)に示すように、選択した画素に対応するRAM27の出力バッファ273に“0”がCPU26によって格納されることになる。
未処理画素の選択は、セルの重心を利用して行う。重心を利用して画素の選択を行うことによって、最終的に生成されるセルの形状は、円状となり、その重心にドットを形成させることで、ドット間距離が均一となり、ドットの重なりに起因する補正誤差が少ない正しいガンマ補正を行うことが期待できるのである。
CPU26は初期画素の位置する画素の階調値と、そのアドレス位置とを読み出し、重心を算出する。CPU26は、具体的に以下の演算式(式3)を用いて算出し、重心位置を求める。
(式3)
重心={{(セルの重心のx座標)×(セル内の画素の階調値合計)}+{(選択した未処理画素のx座標)×(選択した未処理画素の階調値)}}/(セル内の画素の階調値合計+選択した未処理画素の階調値)
重心={{(セルの重心のy座標)×(セル内の画素の階調値合計)}+{(選択した未処理画素のy座標)×(選択した未処理画素の階調値)}}/(セル内の画素の階調値合計+選択した未処理画素の階調値)
(x重心、y重心は重心位置の座標)
この演算式はROM28に格納され、ステップS220にてCPU26が読み出してこの演算を行うことになる。もとより、初期画素の場合は、セルの重心のx、y座標は0として算出される。なお、CPU26は、算出した重心位置(0,0)を、上述したワーキングメモリ領域272に用意されたアドレス「x」「y」に格納する(図10(b)参照)。
未処理画素の選択処理は、ステップS220で算出した重心から最も近い距離にある画素を選択することによって行う。このとき、RAM27の入力バッファの所定位置に格納されている入力画像データから、アドレス(1,0)にある画像データか、アドレス(0,1)にある画像データが選択される。2つの画素ともアドレス(0,0)から等距離にあるからである。ここで、いずれかの画素を選択する必要があるが、本実施形態では走査方向に従ってCPU26が0行1列のアドレス(1,0)にある画素データを選択する。こうしてセルを拡大する処理が行われるのである。
セルの拡大処理において、CPU26は、ワーキングメモリ272のアドレス「sum」に書き込んだ画素の階調値“50”と、ステップS220で選択した画素の入力バッファ271に格納された階調値“50”とを読出し、階調値合計“100”を算出する。また、CPU26は、選択した画素数“1”を加算してワーキングメモリ272の所定のアドレス「gn」に格納する。この結果、拡大したセルの画素数は“2”となる(図10(c)参照)。
次いで、CPU26は、再びセル内の画素の平均階調値を算出して閾値を設定する(ステップS210)。具体的に、CPU26は、格納した画素数GNと算出したセル内の画素の階調値合計とから、ROM28に格納された(式1)を読み出して平均階調値“50”を算出し、算出結果をワーキングメモリ272のアドレス「hk」に格納する。そして、ROM28に格納された閾値変換テーブルTB1を再び読み出し、算出した平均階調値“50”に対応する閾値“439”をワーキングメモリ272の閾値アドレス「sh」に格納する。なお、CPU26はRAM27に設けられた各アドレスに数値を格納する際、前回格納された値を上書きして格納する。もとより、前述したようにアドレス「sum」では加算処理が行われる。
次いでCPU26は、算出されたセルの階調値合計が閾値SHより小さいか否かを再び判断する(ステップS215)。すなわち、選択した未処理画素の階調値を含めたセル内の画素の階調値合計が閾値“439”に達したか否かを判断する。
具体的には、CPU26は、ワーキングメモリ272のアドレス「sum」に書き込んだ値と入力バッファ271に格納された選択画素の階調値とを合計した値と、ワーキングメモリ272のアドレス「sh」に書き込んだ値とを比較する。例えば図10(c)の例では、図10(b)に示したアドレス「sum」に格納されている値“50”と入力バッファ271のアドレス(1,0)に格納された値“50”との合計値“100”と、アドレス「sh」に格納されている値“439”とを比較する。この場合、セル内の画素の階調値合計は閾値より小さいことになる。
セル内の画素の階調値合計が閾値を超えない場合(ステップS215:NO)、CPU26は、再び選択した未処理画素を含めた重心の算出を行う(ステップS220)。具体的なCPU26の演算は、上述した(式3)の演算式を用いて行うことになる。これまで求めたセルの重心のx、y座標は、(0,0)で重心の階調値は“50”、未処理画素のx、y座標は(1,0)で、その階調値は“50”であるので、算出される重心位置は(0.5,0)となる。このステップS220で算出した重心位置は、CPU26の制御によってRAM27のワーキングメモリ272の所定のアドレスに格納される。ステップS220での前回の処理で、ワーキングメモリ272のアドレス「x」「y」には初期画素の重心位置が格納されていたが、その位置に上書きして格納する。その格納後の例を図10(c)に示す。
ここで、重心位置は上述の(式3)で算出した重心位置が(0.5,0)であるように必ずしも整数値になるとは限らない。このように重心が整数値にならない場合は、画素の中心が重心に最も近い画素の中心を重心として置き換えるようにしてもよい。このようにすることで、重心位置は整数値として演算でき、CPU26が処理する計算量の削減が期待できる。またこのようにしたとき、図10(c)に示したように重心位置が複数の画素の中間位置になる場合は、所定の選択方法を定めて選んだり、あるいはランダムに画素を選んだりしてもよい。
以上のように、ステップS210、S215、S220の処理を繰り返すたびに、CPU26は、セル内の画素の階調値合計が、セルの平均階調値に基づいて設定された所定の閾値と等しいか否か判断しながらその閾値に達するまでセルを拡大していく。また、所定の閾値に達していない場合、上述したようにCPU26は、セルに組み入れた入力画素の位置に対応した出力バッファ273の位置に“0”を格納する。
図11(a)は、上述した処理が繰り返し行われ、未処理画素(2,0)がセルに組み入れたときの状態を示したものである。未処理画素(2,0)の階調値“50”とアドレス「sum」の値“355”との合計値“405”と、アドレス「gn」の値“8”とによって算出した平均階調値HK“51”から、閾値変換テーブルTB1により設定された閾値SH“438”をCPU26が読み出し、両者を比較する。図11(a)では、セル内の画素の階調値合計がまだ閾値SHに達していないので、画素(2,0)をセルに組み込み、セルを拡大する処理のために、ワーキングメモリ272には新たに算出した重心位置が、また選択した未処理画素(2,0)に対応する入力バッファ271には“−1”が、出力バッファ273には“0”がそれぞれ格納される。
図11(b)は、図11(a)に引き続き行われる処理を示したもので、入力画素(2,2)が重心位置に最も近い画素として選択された状態を示し、このとき、セル内の画素の階調値合計が“455”になった状態を示している。CPU26は、前述した処理を同様に繰り返し、RAM27のワーキングメモリ272に格納されたこれまでセルに組み込まれた画素の階調値合計“405”と画素(2,2)の階調値“50”との合計値を算出し、これとセルの画素数“9”とを用いて平均階調値“51”を算出する。そして、算出した平均階調値より閾値変換テーブルTB1を読み出し閾値“438”を設定して、セル内の画素の階調値合計と閾値とを比較する。
図11(b)に示した状態では、セル内の画素の階調値合計が閾値以上となるため、セルの拡大終了条件が成立し(ステップS215:YES)、CPU26は、以降の処理について、ステップS225での判定結果によって、処理方法を分けて実施する。
まず、ステップS225でセル内の画素の階調値合計が閾値を超える場合(NO)、処理はステップS226に移行し、閾値を超えた場合の重心演算処理を行う。
ステップS226では、閾値を超える階調値分つまり誤差データを無視してセルの重心を算出する処理を行う。このためまず、CPU26は、セル内の画素の階調値合計を閾値から、すなわちこれまでステップS220で格納したワーキングメモリ272のアドレス「sum」の値をアドレス「sh」の値から引く演算を行う。例えば図12(a)に示したように、「sh」は“438”、ステップS220でこれまで格納した階調値である「sum」は“405”であるので、CPU26がこれらの値を読み出して438−405=33の値を算出する。
そして、CPU26が、この“33”の値を画素(2,2)の階調値として重心の算出を行うことによって誤差データが無視されることになる。重心の算出は具体的には、以下の演算式(式4)を用いる。
(式4)
重心={{(セルの重心のx座標)×(セル内の画素の階調値合計)}+{(選択した未処理画素のx座標)×(ステップS226で算出した選択画素の階調値)}}/{(セル内の画素の階調値合計)+(ステップS226で算出した選択画素の階調値)}
重心={{(セルの重心のy座標)×(セル内の画素の階調値合計)}+{(選択した未処理画素のy座標)×(ステップS226で算出した選択画素の階調値)}}/{(セル内の画素の階調値合計)+(ステップS226で算出した選択画素の階調値)}
(x重心、y重心は重心位置の座標)
(式3)との違いは、選択した未処理画素の階調値をそのまま用いるのではなく、セル内の画素の階調値合計が閾値と同じになるような階調値を用いる点が異なる。
この演算式は、(式3)の場合と同様に予めROM28に格納されており、CPU26が本ステップを実行する際にROM28から読み出すことで実行される。そしてCPU26は、算出した重心位置データを再びRAM27のワーキングメモリ272のアドレス「x」「y」に書き込む。
また、CPU26は、最終的に選択した画素の元の階調値からステップS226で算出した値を引いた値(誤差データ)を算出して、その値を再びその選択した画素の入力バッファに書き込む(ステップS227)。これにより、当該画素の階調値が、戻しデータとして格納される。図12(a)に示す例では、ステップS226で演算した“33”を最終的に選択した(2,2)の画素の階調値“50”から引いて“17”の値を求め、これをRAM27の入力バッファ271のアドレス(2,2)に再び書き込む(図12(a)の入力バッファ271網掛け部参照)。
そして、この画素はセルに組み込まれず、ハーフトーン処理が未処理である画素とする処理を行う(ステップS228)。上述したように、戻しデータを別の画素に戻すのではなく、戻しデータが発生した画素に再び格納させることで、入力階調値に忠実なドット分布を形成することができる。
その後処理はステップS230に移行し、CPU26は、重心位置に存在する画素に対応する出力バッファ273に“255”を格納させる。出力バッファの構造も入力バッファと同様に2次元構造で、入力画素の位置に対応するアドレス空間を有している。重心が位置するアドレスに“255”を書き込むことで、その後の処理で重心位置に存在する画素に所定の大きさのドットを打つことができる。
次いで、CPU26は、データ“255”の書き込み処理をトリガーにして新たにセルを生成する処理に移行し、再び未処理画素があるか否か判断する(ステップS205)。すなわち、上述した処理を全ての入力画素について行ったか否かを、RAM27の入力バッファ271に書き込まれたすべての階調値に対して行ったか否かで判断し、未処理画素があれば(YES)再び処理はステップS210に移行し、上述の処理を繰り返す。例えば、図12(b)に、引き続いて上述した走査方法に従って、未処理画素(3,0)が探索されセルが形成された状態を示した。すべての画素に対して処理が終了すれば(ステップS205:NO)、CPU26はステップS206に移行し、ハーフトーン処理が終了することになる。
一方、ステップS225にて、セル内の画素の階調値合計が閾値と等しいとCPU26が判断した場合(ステップS225:YES)、処理はステップS229に移行し、前述した演算式(式3)を用いて重心位置を算出し、算出した重心位置をワーキングメモリ272に格納する。またこのとき、CPU26は、選択した(2,2)の画素に対応する出力バッファ273のアドレス位置に“0”を格納し、入力バッファ271のアドレス位置に“−1”を格納する。画素(2,2)を、セルを構成する画素として扱うためである。
以降、CPU26は、前述と同様にステップS230にて重心に位置する画素に所定の大きさのドットを打つため、重心位置に存在する画素に対応する出力バッファ273のアドレスに“255”を格納させる。そして、データ“255”の書き込み処理をトリガーにして新たにセルを生成する処理に移行し、再び未処理画素があるか否かの判断処理(ステップS205)以降を繰り返し、すべての画素に対して処理が終了すれば(ステップS205:NO)、CPU26はステップS206に移行し、入力画像全体についてドットのオンオフを制御するガンマ補正された2値化データを出力して、全ての処理を終了する。
図12(c)にセルの画素の階調値合計が閾値と等しい場合を、図12(a)と対比して例示した。図12(c)では、画素(2,2)の階調値が“50”ではなく“35”であった場合におけるRAM27の書き込み状態を示した。図12(c)において、「sum」の値“405”と画素(2,2)の階調値“35”の合計値“440”が、平均階調値HK“49”に基づいて設定された閾値“440”と等しいため、画素(2,2)に対応した入力バッファ271のアドレス位置に“−1”が、また出力バッファ273のアドレス位置に“0”が格納され、算出されたセルの重心位置に“255”が格納される。
以上説明したように、本実施形態でのCC法によるハーフトーン処理によれば、平均階調値に基づいて所定の閾値を設定することによって、生成されるセルの大きさが変わり、従ってセルの大きさに対して出力されるドットの面積割合が増減する。この結果、最終的に画像出力装置30によって出力されるドット数を低濃度領域になるほど減少させることができ、出力する画像について、画像出力装置のガンマ特性を補正するガンマ補正を行うことができる。
また、CC法によるハーフトーン処理によれば、入力画像データの階調変換処理に際して量子化データに生じる誤差データを元の画素に戻すため、誤差データが別の画素に拡散されない。従って、入力画像データの歪みが小さくなり、入力画像の階調データに対して比較的忠実に階調変換処理を行うことができる。この結果、特許文献1または2に示した従来のハーフトーン処理技術において、課題であったガンマ補正の遅延を抑えることができる。
また、同じく本実施形態でのCC法によれば、セルの重心に最も近い画素を選択してセルに組み入れていくため、生成されるセルの形状は重心を中心としておおよそ円形になる。従って、セルの重心に出力されるドットは、セルのほぼ中央の位置となるためドットが重なる確率は低くなり、ガンマ補正が正しく行われることが期待できる。
以上、本発明の一実施形態を説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。以下、変形例を挙げて説明する。
「第1変形例」
次に本発明の第1変形例について説明する。前記実施形態では、画素選択の基準点を重心位置にして毎回画素選択時に更新するようにしていたが、第1変形例では、画素選択の基準点を、画素の階調値には関係なく、画素の座標位置を利用した中心位置とする。これにより、毎回重心位置を算出することがなく、他の処理を含めた全体の処理速度を上げることができる。
第1変形例を図13を用いて説明する。ここで、中心位置は、階調値を利用した重心位置ではなく、画素の中心位置の座標を利用した中心位置であって、その位置座標を(x、y)とすると以下の(式5)により算出される(以下の式でGNはセル内の画素数)。
(式5)
x=Σii/GN
y=Σii/GN
入力画像データとして、各画素、図13(a)に示す階調値が入力される場合で説明する。図13(a)は、縦3画素、横4画素分の画像データが入力されている例であって、1フレーム分の画像データが入力される場合であってもよい。ここでは、重心位置によって選択された画素によって生成されるセルとの比較を容易にするため、図4(a)と同じ階調値の画像データとした。
図13(a)の入力画像データが入力されると、まず初期画素を選択する。前記実施形態と同様な所定の走査方法を行い、未処理画素のうち最も上側で最も左側にある画素を選択する。図13(a)の例では、(n、m)の位置の画素を初期画素として選択する。
そして、初期画素をセルCLに組み入れ、その中心位置を(式5)を用いて算出すると図13(b)に示す位置に中心位置SCが位置することになる。次に、その中心位置SCから最も近い位置に位置する未処理画素を選択することになるが、かかる画素が複数ある場合には、前記実施形態等と同様に所定の走査方法により選択する。図13(b)に示す例では、中心位置SCに最も近い位置は(n+1、m)と(n、m+1)の2つ存在するが、ここでは(n+1、m)を未処理画素MGとして選択することになる。
次に、図13(c)に示すように選択した未処理画素MGをセルCLに組み入れ、更にセルの拡大処理を行う際、未処理画素を選択するための基準点すなわち中心位置を算出すると、図13(c)に示したように、SCの位置となる。セル内の画素の階調値合計は、この時点で“100”であるのでさらに未処理画素を選択することになる。本変形例でも前記実施形態と同様に、閾値はセルの平均階調値に基づいて閾値変換テーブルTB1により設定され、この設定された閾値以上になるまで未処理画素を選択する。
この基準点(中心位置)SCから最も近い未処理画素は、図13(c)に示す例では、2つの画素(n、m+1)、(n+1、m+1)が存在することになる。この場合も、走査方法に従って選択し、(n、m+1)の画素を未処理画素MGとして選択する。
そして、図13(d)に示すように選択した未処理画素をセルに組み入れ、その中心位置を(式5)を用いて算出すると、位置SCに位置することになる。この時点でのセル内の画素の階調値合計は“150”となり、閾値に達しないのでさらに未処理画素を選択する。中心位置SCから最も近い距離にある画素は、(n+1、m+1)に位置する画素であるので、この画素を未処理画素MGとして選択する。
このように、画素の座標位置を利用した中心位置に基づいて、未処理画素の選択を繰り返してセルを生成していくと、図13(e)に示した画素(n+2,m+2)をセルに組み入れる状態となる。この未処理画素を組み入れたとき生成されるセル内の画素の階調値合計は“455”となり、そのとき設定された閾値“438”を超えてしまう。この場合、前記実施形態と同様に、閾値に達する分の階調値分をセルに組み入れ、この未処理画素に残りの階調値分(誤差データ)を戻して以後当該画素が未処理画素として選択されるようにする。前記実施形態と同様に、入力画像の階調データに忠実なドットを生成させるためである。ここでは、(n+2,m+2)に位置する画素に対して“17”を戻しデータとして与えることになる(図13(f)参照)。
次いで、ここまで構成したセルは、セル内の画素の階調値合計が閾値に達したので、セルの重心位置にドットを出力させるための処理を行う。重心位置の演算は、前記実施形態の(式4)と同様に演算することになり、図14(a)の重心位置GCを得る。
そして、その後の処理により重心位置GCに位置する画素にドットを出力させると、図14(b)に示す位置にドットDOTが打たれることになる。これは、図9(b)に示したドットが打たれる位置と同じ位置であり、前記実施形態と同様な結果を得ることができる。
前記実施形態と同様に、毎回重心位置を計算すると、(式3)や(式4)に示すような演算処理が多くなるが、画素選択のための基準点を中心位置として演算し、最後に重心を演算することで、演算量を減らすことができるとともに、量子化済み画素群が前記実施形態と同様円状に成長してドット間距離を保ち、正しいガンマ補正を得ることが期待できる。
「第2変形例」
また、第2変形例として、セルの重心位置を算出せずに、第1変形例において、未処理画素の選択に用いたセルの中心位置にある画素にドットを生成させるようにしてもよい。こうすれば、重心位置の算出処理を行う必要がないので、演算量を減らすことができる。例えば図13に示した入力画像データの例では、図14(a)に示したように、中心位置SCが位置する画素と重心位置GCが位置する画素とは同じ画素となり、前記実施形態と同じ位置にドットが出力されることになる。この結果、中心位置のみを算出すればよく、算出処理かかる負荷を軽減することができる。
「第3変形例」
さらに、第3変形例として、画素選択のための基準点を毎回更新するのではなく、1回おきに更新したり、2回おきに更新したり、予め回数を決めてその回数のときに更新するようにしてもよい。本変形例ではセルの中心位置を基準点とし、この基準点を1回おきに更新する例を、図15を用いて説明する。
図13のときと同様に入力画像データが図15(a)のように入力された場合で説明することにする。図13(b)と同様に、初期画素を選択してその中心位置SCを算出すると図15(b)に示す位置となる。そして、この中心位置SCを基準点として、基準点から最も近い未処理画素MGを選択すると(n+1、m)に位置する画素となり、この画素をセルに組み入れる。
次いで、セルの拡大処理が行われるが、次に選択する未処理画素は、セルから算出した中心位置SCに基づいて選択するのではなく、前回未処理画素を選択したときの基準点となった中心位置SCに基づいて選択する。すなわち、この時点で基準点を更新しないようにする。従って、図15(c)に示すように中心位置SCから最も近い画素は(n、m+1)となりこの画素を未処理画素MGとして選択する。
次いで、選択した未処理画素MGを組み入れたセルは図15(d)のようになる。そして、1回おきに基準点を更新するようにするので、この時点で構成したセルの中心位置SCを算出すると図15(d)に示す位置に中心位置SCが移動することになる。
次いで、この更新した中心位置SCを基準点にして、この位置から最も近い未処理画素MGを選択してその画素をセルCLに組み入れると図15(e)に示すようになる。そして、基準点を更新せず、1つ前に算出した中心位置SCから最も近い画素を未処理画素MGとして選択((n+2,m)の位置の画素を選択)して、セルCLを構成する。
このように、画素の座標位置を利用した中心位置に基づいて、未処理画素の選択を繰り返してセルを生成していくと、図15(e)に示した画素(n+2,m+2)をセルに組み入れる状態となる。この状態は、前述の第1変形例における図13(e)とを比較すると、基準点となる中心位置SCの位置が異なる以外は、基本的に同じ形のセルが生成されていることを示している。従って、図13の例と同様に、最終的に生成されるセルCLは図15(f)となり、第1変形例と同じ結果がえられる。
このように毎回、画素選択の基準点を更新するのではなく、1回おきに更新することでさらに演算量を減らすことができ、他の処理を含めた画像処理装置全体の処理速度の向上を図ることができる。本変形例では、中心位置を一回おきに更新するものとして説明したが、もとより重心位置を一回おきに更新することとしてもよい。さらに、初期画素の選択から4回目の未処理画素選択のときに基準点を更新し、さらにそれから3回目、2回目、…と減算するように、当該回数のときに更新するようにすることとしてもよい。
「第4変形例」
また、セルの拡大処理に際して、基準点に最も近い画素を選択したとき、選択すべき未処理画素が複数あった場合、前記実施形態や前記変形例では所定の走査方法に従って、最も上の行で、最も左に位置する画素を選択したが、第4変形例として、未処理画素をランダムに選択することとしてもよい。
例えば、図8(c)や図13(c)において、基準点である重心位置GCまたは基準点である中心位置SCに最も近い画素として、選択すべき未処理画素が複数存在するとき、ランダムに選択することとする。こうすると、図8(c)では画素(n+2,m+2)が選択されたり、図13(c)では画素(n+1,m+1)が選択されたりする場合が生じ、生成されるセルの形状がばらつくことになる。ランダム選択の方法としては、例えば乱数を利用する方法や、予め不規則な選択順を設定しておく方法などが考えられる。もとより、規則的でない選択方法であれば何でもよい。
このように、未処理画素をランダムに選択することによって、生成されるセルの形状がばらつくためランダムになり易く、隣接するセル間において、重心位置(あるいは中心位置)に出力されるドットの位置もランダムになる。この結果、例えばドットが部分的に重なるセルが連続する場合は、その重なり具合もランダムに変化するため、対象となるセル全体について平均的にガンマ補正が行われる確率が増え、画像全体についてガンマ補正量への影響を少なくすることが期待できる。
「第5変形例」
前記実施形態では、ハーフトーン処理部22にて、1種類の大きさのドットを出力するか否か、つまり1つのドットのオンオフを制御する2値化処理を行うものとしたが、画像出力装置30にて複数種類の大きさのドットを出力する場合は、第5変形例として、複数種類のドットの大きさ(以下、ドットサイズ)に対応するため、ハーフトーン処理において、ドットサイズに関係付けてガンマ補正を行うこととしてもよい。
本変形例では、画像出力装置30は、1個が1画素分のドットサイズで、1個分から10個分まで合計10種類のドットサイズのドットを出力制御できるものとして説明する。このような画像出力装置では、例えば前記実施形態のようなレーザプリンタを想定した場合、レーザダイオードの駆動時間、つまり駆動パルス幅またはパルス数を制御することによって複数種類のドットサイズが出力可能となる。特に、入力画像の再生表示方法として、ドットの大きさによって画像の濃淡を表現する方法(これを網点方式ともいう)を行う場合は、本変形例は有効である。
図16は、ドットサイズを、出力するドットの数で制御する画像出力装置30に対応して、ガンマ補正を行うための閾値変換テーブルTB2を例示したものである。出力するドットサイズが1種類つまり出力ドット数が1個分の場合に用いた閾値変換テーブルTB1(図7)と比較すると、平均階調値が大きくなるほど出力するドットサイズ、すなわちドット数を段階的に多くし、最大ドット10個分のドットサイズを出力するテーブルになっている。また閾値も平均階調値に対して大きい値が設定されている。
ここで図16に示した閾値変換テーブルTB2において、設定された閾値を出力ドット数で除し、小数点以下を切り捨てると、図7の閾値変換テーブルTB1と同じ閾値になる。つまり、ドット1個あたりの閾値は、図7と基本的同じであり、従って前記実施形態と同様なガンマ補正が行われるのである。
また図17は、ガンマ補正を行うための閾値を演算式によって設定する場合を想定し、この演算式の内容を説明するための説明図である。図17(a)は、セルの平均階調値に対する出力ドット数(つまりドットサイズ)の関係を表し、階調値が大きい(つまり高濃度)ほど出力ドット数を多くしてドットサイズが大きくなるようにしている。これによって網点方式による再生表示を可能としている。そして、ドットサイズと関係付けて閾値が設定されるため、図17(b)に示したように、セルの平均階調値に対して大きい値をもった閾値が設定される。図17に示した閾値SHは次の演算式(式6)によって求められる。
(式6)
SH=INT((255+(255−HK)×0.9)×DN)
DN=INT((LOG(HK/255+0.1)+1)×9+0.7)
ここで、HKはセルの平均階調値、DNは出力するドットの数を表し、INTは小数点以下を切り捨てる意味の関数であり、またLOGは周知の対数関数である。(式6)より、閾値SHは平均階調値HKと、同じく平均階調値HKを引数として算出される出力ドット数DN(=ドットサイズ)とによって設定される。
本変形例を実際の画像に適用した一例を図18、図19を用いて説明する。図18は、階調値“80”の均一な濃度の画像をCC法によってハーフトーン処理する際、閾値変換テーブルTB2を用いてガンマ補正を行う場合を示した説明図である。図18(a)は、画素(0,0)が初期画素として探索された後、CC法に従って順次セルCLが拡大されて、画素(1,5)が未処理画素MGとして選択された状態を示している。
このとき、画素(1,5)をセルに組み込むと、セルの階調値合計は“2480”であり、セルの平均階調値“80”に対応した閾値は閾値変換テーブルTB2より“2475”であるため、セル内の画素の階調値合計が閾値を超え、セルの拡大終了条件が成立する。従って、図18(b)に示したように、画素(1,5)に誤差データ“5”を戻して未処理画素とし、セルCLを生成する。そして、セルCLの重心GCを算出して、重心GCに位置する画素にドット数6個のドットサイズを持ったドットを出力するための所定のデータを付与する。
図18(b)に示した例では、例えば、重心位置GCに位置する画素(2,2)に“255-6”というデータを付与する。以降の画像出力装置30との間において、“255”はドットオンを意味し、“6”はドット数が6個のドットサイズであることを意味するよう関係付けておくことによって、図18(b)の網掛け部で示したように、画素(2,2)を基準とした周辺の所定の位置に所定の数のドットを打つことができ、所定のドットサイズを持ったドットが出力される。なお、ドットの打ち方については、例えば重心の位置とドットの数に応じて所定のルールを決めておき、このルールに従って所定の画素にドットを打つようにすることとしてもよい。また、1ドットを1画素全体に打たず2画素以上に分けて打つように所定のルールを決めておくことも差し支えない。なお、ドットの打ち方については本発明の本質ではないので詳しい説明は省略する。
次に、図19は、階調値“255”の均一な最高濃度の画像をCC法によるハーフトーン処理する際、閾値変換テーブルTB2を用いてガンマ補正を行う場合を示した説明図である。図19(a)は、図18と同様に、画素(0,0)が初期画素として探索された後、CC法に従って順次セルCLが拡大されて、画素(3,1)が未処理画素MGとして選択された状態を示している。
このとき、画素(3,1)をセルに組み込むと、セル内の画素の階調値合計は“2550”であり、セルの平均階調値“255”に対応した閾値は閾値変換テーブルTB2より“2550”であるため、セル内の画素の階調値合計が閾値に一致し、セルの拡大終了条件が成立する。従って、図19(b)に示したようにセルCLを生成し、セルCLの重心GCを算出して、重心位置GCに位置する画素にドット数10個のドットサイズを持ったドットを出力するための所定のデータを付与する。
図19(b)に示した例では、例えば、重心位置GCに位置する画素(1,1)に“255-10”というデータが付与され、図18と同様に、以降の画像出力装置30との間において、“255”はドットオンを意味し、“10”はドット数が10個のドットサイズであることを意味するよう関係付けておくことによって、図19(c)の網掛け部で示したように、画素(1,1)を基準とした周辺の所定の位置に所定の数のドットが打たれる。図19の例では、セル内の全ての画素にドットが打たれ、ドット数10個の大きさのドットが出力される。もとより、この場合はガンマ補正量はゼロということになる。
「第6変形例」
第5変形例では、閾値変換テーブルTB2を用いてドットサイズと閾値を設定したが、特にこれに限らず種々の閾値変換テーブルや演算式を用いればよい。例えば、閾値変換テーブルTB2では、ドットサイズを、平均階調値が大きくなるほど段階的に大きくしたが、平均階調値“100”前後の中濃度が最も大きいドットサイズになるようにするなど、平均階調値が大きくなるに従ってドットサイズが増減するようにして閾値を設定することとしてもよい。
図18(b)と、図19(c)とを比較してみると、ドットサイズが大きい方、つまりドット数6個のドットサイズよりドット数10個のドットサイズの方が、ドット間で隣り合う部分が多いことがわかる。前述したように、ドットが隣り合って形成されるところは、はみ出し部分が隣り合うドットによって打ち消され、それ以外の部分が画素の外へはみ出すことになるため、このはみ出し部分が元画像データに対する理想の濃度よりも大きくしている部分である。このことより、ドットサイズが大きいほど、ドット数1個あたりのはみ出し部分が最も少なくなり、ガンマ補正量も理論的に少なくなる。換言すれば、大きいドットサイズほど入力画像に忠実な画像を再生表示できる確率が高くなると言える。従って、例えば、入力画像のうち中濃度領域について忠実な再生表示画像を得ようとする場合は中濃度に相当する平均階調値について最も大きいドットサイズを設定するとよい。またドットサイズも10種類に限らず、3種類とか16種類とか画像出力装置30が出力できるドットサイズの種類に合わせて増減すればよい。
さらに、第5変形例では、平均階調値に対するドット数を、対数関数を用いた演算式(式6)により設定したが、とくにこれに限らず、平均階調値を引数とした一次関数や2次関数などの関数によって表された演算式を用いてドット数を設定してもよい。対象となる画像出力装置30において、出力するトッドサイズが担当する階調値に対応して、所定のドット数を設定してもよい。
また、平均階調値に対する1ドットあたりの閾値も、前記実施形態での値よりも増減させたりすればよい。あるいは平均階調値に対する閾値の変化割合も、前記実施形態で設定した閾値の変化割合より低濃度ほど大きくしたり、逆に高濃度ほど大きくしたりしてもよい。対象となる画像出力装置30のガンマ特性に合わせて閾値を設定し、正しくガンマ補正できるようにすることが好ましい。
「第7変形例」
また、第7変形例として、本実施形態における画像処理装置は、レーザプリンタにて画像を再生表示するものとして処理を行うようにしたが、本発明はこれに限定されるものでなく、インクジェットプリンタなどインクを印刷媒体に付着させて印刷する方式のプリンタやサーマルプリンタなどの種々のプリンタや、電子写真あるいはディスプレイなどに画像を再生表示するものとして処理を行うようにしてもよい。あるいは、このようなプリンタなどの機能が組み込まれたコピー機やコンピュータ、ワープロ、ファックスなど種々の機器に、本発明の画像処理装置も組み込まれて構成されるようにしてもよい。
本発明が適用される一実施形態におけるシステム全体を示す構成図。 本実施形態での画像処理装置のハード構成を説明する模式図。 本実施形態での画像処理装置が行う処理を説明するためのフローチャート。 ガンマ補正を行わない場合のCC法でのハーフトーン処理を説明するための説明図。 ガンマ補正を行わない場合のCC法でのハーフトーン処理を説明するための説明図。 セルの平均階調値による閾値設定処理を説明するためのフローチャート。 出力ドット数が1個のときの閾値変換テーブルの例。 ガンマ補正を行う場合のCC法でのハーフトーン処理を説明するための説明図。 ガンマ補正の有無によって出力されるドットの違いを説明する説明図。 RAMの構成と格納されるデータの例を説明する説明図。 RAMの構成と格納されるデータの例を説明する説明図。 RAMの構成と格納されるデータの例を説明する説明図。 第1変形例で、画素選択の基準点をセルの中心位置とする場合のCC法でのハーフトーン処理を説明するための説明図。 第1変形例で、画素選択の基準点をセルの中心位置とする場合のCC法でのハーフトーン処理を説明するための説明図。 第3変形例で、画素選択の基準点をセルの中心位置とする場合のCC法でのハーフトーン処理を説明するための説明図。 第5変形例で、出力ドット数が1個から10個のときの閾値変換テーブルの例。 第5変形例で、出力ドット数が1個から10個のとき、閾値を得るための計算式を説明するためのグラフ。 第5変形例で、出力ドット数が1個から10個のときのCC法によるハーフトーン処理結果の一例を説明する説明図。 第5変形例で、出力ドット数が1個から10個のときのCC法によるハーフトーン処理結果の一例を説明する説明図。
符号の説明
10…画像入力装置、11…アプリケーション部、12…ラスタライズ部、20…画像処理装置、21…色変換部、22…CPU、25…入出力I/F、26…CPU、27…RAM、28…ROM、29…ハードディスク、30…画像出力装置、31…パルス幅変調部、35…印刷エンジン、36…レーザドライバ、37…レーザダイオード、271…入力バッファ、272…ワーキングメモリ、273…出力バッファ、TB1…閾値変換テーブル、TB2…閾値変換テーブル、CL…セル、CL1…セル、CL2…セル、GC…セルの重心位置、GC1…セルの重心位置、GC2…セルの重心位置、SC…セルの中心位置、MG…未処理画素、DOT…ドット、DN…ドット数、GN…画素数、HK…平均階調値、SH…閾値、DT…入力画像データ、DR…所定のデータ。

Claims (13)

  1. 画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理装置であって、
    画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成部と、
    順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定部と、
    生成された前記画素群について所定の基準点を決定する基準点決定部と、
    決定された前記所定の基準点に位置する画素に前記所定のデータを付与するデータ付与部と、
    を備えた画像処理装置。
  2. 請求項1に記載の画像処理装置であって、
    前記基準点決定部は、前記画素群における画素の位置と画素の階調値とから算出した重心位置を、前記所定の基準点として決定することを特徴とする画像処理装置。
  3. 画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理装置であって、
    画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成部と、
    順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定部と、
    生成された前記画素群について第2の基準点を決定する基準点決定部と、
    決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与部とを備え、
    前記画素群生成部は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、
    前記データ付与部は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定部が決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とする画像処理装置。
  4. 請求項3に記載の画像処理装置であって、
    前記画素群生成手段は、前記第1の基準点に基づいて選択すべき画素が複数存在するとき、選択する画素をランダムに選択することを特徴とする画像処理装置。
  5. 請求項3または4に記載の画像処理装置であって、
    前記第1の基準点および前記第2の基準点は、前記画素群における画素の位置と画素の階調値とから算出した重心位置であることを特徴とする画像処理装置。
  6. 請求項3または4に記載の画像処理装置であって、
    前記第1の基準点は、前記画素群における画素の位置から算出した中心位置であり、前記第2の基準点は、前記画素群における画素の位置と画素の階調値とから算出した重心位置であることを特徴とする画像処理装置。
  7. 請求項3または4に記載の画像処理装置であって、
    前記第1の基準点および前記第2の基準点は、前記画素群における画素の位置から算出した中心位置であることを特徴とする画像処理装置。
  8. 請求項3ないし7のいずれか一項に記載の画像処理装置であって、
    前記画素群生成部は、前記第1の基準点を、前記画素を所定の回数選択するごとに更新
    することを特徴とする画像処理装置。
  9. 請求項1ないし8のいずれか一項に記載の画像処理装置であって、
    前記閾値設定部は、前記所定の閾値の設定に際して、前記出力されるドットの大きさと関係付けて予め設定した閾値を用いることを特徴とする画像処理装置。
  10. 請求項1ないし9のいずれか一項に記載の画像処理装置であって、
    前記画素群生成部は、前記画素群における画素ごとの階調値の総和が前記所定の閾値を超えたとき、超えた分の前記階調値を前記画素群生成部が最後に選択した画素に戻すことを特徴とする画像処理装置。
  11. 画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理方法であって、
    画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成工程と、
    順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定工程と、
    生成された前記画素群について第2の基準点を決定する基準点決定工程と、
    決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与工程とを備え、
    前記画素群生成工程は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、
    前記データ付与工程は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定工程によって決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とする画像処理方法。
  12. 画素ごとに、対象となる画像の階調値を所定の閾値を用いて階調変換し、ドットを出力するための所定のデータを所定の画素に付与する画像処理プログラムであって、
    画素選択のための第1の基準点に基づいて、画素ごとの階調値の総和が前記所定の閾値以上となるまで画素を選択して画素群を順次生成する画素群生成処理と、
    順次生成される前記画素群内の画素数と画素ごとの階調値の総和とに基づき、前記所定の閾値を設定する閾値設定処理と、
    生成された前記画素群について第2の基準点を決定する基準点決定処理と、
    決定された前記第2の基準点に位置する画素に前記所定のデータを付与するデータ付与処理とをコンピュータに実行させ、
    前記画素群生成処理は、前記第1の基準点を更新し、該第1の基準点に基づいて前記画素を選択して前記画素群を生成し、
    前記データ付与処理は、前記生成された画素群内の画素ごとの階調値の総和が前記閾値以上となったとき、前記基準点決定処理によって決定した前記第2の基準点に位置する画素に、前記所定のデータを付与することを特徴とするプログラム。
  13. 請求項12に記載の画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004135938A 2004-04-30 2004-04-30 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 Withdrawn JP2005318402A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004135938A JP2005318402A (ja) 2004-04-30 2004-04-30 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004135938A JP2005318402A (ja) 2004-04-30 2004-04-30 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体

Publications (1)

Publication Number Publication Date
JP2005318402A true JP2005318402A (ja) 2005-11-10

Family

ID=35445353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004135938A Withdrawn JP2005318402A (ja) 2004-04-30 2004-04-30 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP2005318402A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011235544A (ja) * 2010-05-11 2011-11-24 Kyocera Mita Corp 画像形成装置及び画像形成方法
KR101282245B1 (ko) 2006-09-29 2013-07-10 삼성전자주식회사 디스플레이장치 및 그 제어방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101282245B1 (ko) 2006-09-29 2013-07-10 삼성전자주식회사 디스플레이장치 및 그 제어방법
JP2011235544A (ja) * 2010-05-11 2011-11-24 Kyocera Mita Corp 画像形成装置及び画像形成方法

Similar Documents

Publication Publication Date Title
US7474441B2 (en) Image processing device, method, program and recording medium recording the program
JP4412248B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP4479663B2 (ja) 固定セルによるハーフトーン処理を行う画像処理装置,画像処理方法,及び画像処理プログラム
JP2005318402A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JPWO2005109851A1 (ja) 画像処理装置、画像処理方法、及びプログラム
US20050046903A1 (en) Image processing device, image processing method and image processing program
JP4742871B2 (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JPH10145591A (ja) 効率的なグレイタイル格納
JP4539567B2 (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP5678501B2 (ja) 画像処理装置及び画像処理方法
JP3951953B2 (ja) 印刷装置、画像処理装置、印刷方法、画像処理方法及びプログラム
JP2005311414A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2005341142A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2020082694A (ja) ディザマトリクスの生成装置、生成方法、当該ディザマトリクスを用いた画像処理装置、画像処理方法、及びプログラム
JP2006025220A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2005117642A (ja) ハーフトーン処理方法、画像処理装置、画像処理方法、及びプログラム
JP4337670B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2004320374A (ja) 画像処理装置、画像処理方法、印刷装置、印刷方法及びプログラム
JP2006060645A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよび画像処理プログラムを記録した記録媒体
JP2006115369A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2006025217A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP3896982B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP3928576B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP2005136975A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2006340128A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070703