(57)【要約】【課題】画像処理の効率を向上させる。【解決手段】ディザマスクＤＭ（ｎ）とディザマスクＤＭ（ｎ＋１）との間に処理ブロックＣＢのＹ方向の幅Ｄと等しい段差（−Ｙ方向）を形成する。そして、一の処理ブロックＣＢ２の処理が完了すると、次に当該処理ブロックＣＢ２に対して上記段差（−Ｙ方向）と反対側（＋Ｙ方向）に隣接する処理ブロックＣＢ３を処理するする。これにより、ディザ法および誤差拡散法におけるキャッシュヒット率を向上させ、全体の処理効率を向上させる。【選択図】図１０
2009049697.tif 000002
【特許請求の範囲】
【請求項１】
Ｘ方向およびＹ方向に分布する複数の画素で構成された画像データに対して少なくともディザ法によるハーフトーン処理を実行させる画像処理装置において、
上記ディザ法において参照される略矩形状のディザマスクを取得する取得手段と、
Ｘ方向についてｎ（ｎは整数）番目に配置される上記ディザマスクと（ｎ＋１）番目に配置される上記ディザマスクとの間に略一定のＹ方向の段差が形成されるように上記ディザマスクを上記画像データに対して配置する配置手段と、
Ｙ方向に関して上記段差と略同等の幅を有し、かつ、Ｘ方向に関して上記ディザマスクよりも大きい幅を有するように上記画像データを区分した複数の処理ブロックごとに上記ディザ法による上記ハーフトーン処理を実行させる処理手段とを備え、
上記処理手段は、
一の上記処理ブロックについて上記ハーフトーン処理が完了すると、次に当該ハーフトーン処理が完了した上記処理ブロックに対してＹ方向における上記段差の方向と反対側に隣接する上記処理ブロックについて上記ハーフトーン処理を実行することを特徴とする画像処理装置。
【請求項２】
上記処理手段は、上記ディザ法のほかに誤差拡散法によるハーフトーン処理を並行して実行するとともに、一の上記処理ブロックについて上記ハーフトーン処理が完了すると、次に当該処理ブロックに対してＹ方向における上記段差の方向と反対側に隣接し、かつ、上記誤差拡散法における誤差拡散方向に応じてＸ方向にオフセットさせた位置の上記処理ブロックについて上記ハーフトーン処理を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
上記処理手段によって連続して処理される上記処理ブロックの一群が略平行四辺形をなすことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
上記取得手段は、上記ディザマスクのデータを上記ハーフトーン処理のための演算を行うＣＰＵの外部メモリに記憶しておくとともに、
上記処理手段は、上記ディザマスクのデータのうち上記ディザ法において使用した上記ディザマスクの一部のデータを上記ＣＰＵの内部キャッシュメモリに読み出し可能に記憶しておくことを特徴とする請求項１から請求項３のいずれか一項に記載の画像処理装置。
【請求項５】
上記処理手段は、上記ハーフトーン処理のほかに当該ハーフトーン処理の前処理として上記画像データの色空間を変換する色変換処理を上記処理ブロックごとに実行することを特徴とする請求項１から請求項４のいずれか一項に記載の画像処理装置。
【請求項６】
上記処理手段は、上記ディザ法によって上記画像データの印刷時に使用される大ドットの吐出可否を決定するとともに、上記誤差拡散法によって上記画像データの印刷時に使用される上記大ドットよりも小さいドットの吐出可否を決定することを特徴とする請求項１から請求項５のいずれか一項に記載の画像処理装置。
【請求項７】
コンピュータが有する演算手段によって、Ｘ方向およびＹ方向に分布する複数の画素で構成された画像データに対して少なくともディザ法によるハーフトーン処理を実行させる画像処理方法において、
コンピュータが有する演算手段によって、上記ディザ法において参照される略矩形状のディザマスクを取得し、
コンピュータが有する演算手段によって、Ｘ方向についてｎ（ｎは整数）番目に配置される上記ディザマスクと（ｎ＋１）番目に配置される上記ディザマスクとの間に略一定のＹ方向の段差が形成されるように上記ディザマスクを上記画像データに対して配置し、
コンピュータが有する演算手段によって、Ｙ方向に関して上記段差と略同等の幅を有し、かつ、Ｘ方向に関して上記ディザマスクよりも大きい幅を有するように上記画像データを区分した複数の処理ブロックごとに上記ディザ法による上記ハーフトーン処理を実行させるとともに、一の上記処理ブロックについて上記ハーフトーン処理が完了すると、次に当該ハーフトーン処理が完了した上記処理ブロックに対してＹ方向における上記段差の方向と反対側に隣接する上記処理ブロックについて上記ハーフトーン処理を実行することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置および画像処理方法に関し、特にハーフトーン処理を行う画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラの高画素化や印刷装置の高解像度化が著しく、デジタルスチルカメラで撮影された画像データに対する画像処理も負荷が大きいものになってきている。例えば、画像データを印刷させるには色変換処理やハーフトーン処理が必要であるが、このような画像処理に要する時間もデジタルスチルカメラの高画素化や印刷装置の高解像度化に伴って増化の傾向にある。この問題に対して、ＣＰＵが内部に備えるキャッシュメモリを有効に利用して効率的に処理を行わせようとする技術が提案されている（特許文献１、参照。）。
かかる技術においては、Ｎ本のラスタから構成されるラスタ群のなかから処理対象の画素を所定の順序で選択する。ここでは隣接する画素が近似する階調値を有している可能性が高いという性質を利用して、キャッシュメモリに記憶されている実行コードやデータのヒット率を向上させたり、パイプライン処理の効率化を図ったりしている。
【特許文献１】特開２００５−６４５５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した技術においては隣接する画素が近似する階調値を有していない場合（冗長性の程度が小さい場合）には処理の効率化が十分に発揮されないという問題があった。
本発明は、どのような画像データに対しても一定の処理の効率化が期待できる画像処理装置および画像処理方法を提供しようとするものである。
【課題を解決するための手段】
【０００４】
上記課題の少なくとも一つを解決するために、本発明は、ディザ法によるハーフトーン処理を実行するにあたり、取得手段が上記ディザ法において参照するディザマスクを取得する。このディザマスクは、上記ディザ法において各画素の階調値の閾値判定を行うための閾値とＸ方向およびＹ方向の位置情報とが対応付けられたマトリクスデータであり、上記ディザ法を行うにあたり予め用意される。一般に上記ディザマスクは上記画像データよりも小さいため、単一の上記ディザマスクを使用して上記画像データの全体に対して閾値判定ができるように、配置手段が同一の上記ディザマスクを上記画像データにおける複数位置に配置する処理を行う。その際に、上記配置手段は、Ｘ方向においてｎ番目に配置される上記ディザマスクと（ｎ＋１）番目に配置される上記ディザマスクとの間に上記処理ブロックのＹ方向の幅と略同等の一定の段差がＹ方向に形成されるようにする。すなわち、Ｘ方向に隣接する上記ディザマスクが一様な段差を有する略階段状をなすように配列させられる。処理手段は上記処理ブロックごとに上記ハーフトーン処理を実行するが、その際の処理順序を以下のようにする。すなわち、一の上記処理ブロックについて上記ハーフトーン処理が完了すると、次に当該処理が完了した上記処理ブロックに対してＹ方向における上記段差の方向と反対側に隣接する上記処理ブロックについて上記ハーフトーン処理を実行するようにする。
【０００５】
かかる構成において、上記ディザマスクは上記処理ブロックのＸ方向の長さよりもＸ方向の幅が短いため、上記処理ブロックはＸ方向において隣接するＮ番目と（Ｎ＋１）番目の上記ディザマスクにまたがることとなる。当該処理ブロックがまたがるＮ番目と（Ｎ＋１）番目に配置される上記ディザマスクとの間にはＹ方向の段差があるため、当該処理ブロックについての上記ハーフトーン処理では、Ｎ番目の上記ディザマスクにおいて参照される部分と、（Ｎ＋１）番目の上記ディザマスクにおいて参照される部分がＹ方向において上記段差の分だけずれた部分となる。例えば、Ｙ方向においてＤだけ段差が形成された場合、（Ｎ＋１）番目の上記ディザマスクにおいてはＮ番目の上記ディザマスクにて参照される部分よりも（−Ｄ）だけずれた部分が参照されることとなる。次に、処理される上記処理ブロックはＹ方向において上記段差であるＤの反対方向（−Ｄ）に隣接する（Ｙ方向について上記段差（Ｄ）と略同等とされた上記処理ブロックの幅だけずれる）ものとされるため、次の上記処理ブロックについての上記ハーフトーン処理では、Ｎ番目の上記ディザマスクにおける前回の上記処理ブロックについての上記ハーフトーン処理で参照された部分から（−Ｄ）だけずれた部分が参照されることとなる。すなわち、前回の上記処理ブロックについての上記ハーフトーン処理で参照された（Ｎ＋１）番目の上記ディザマスクの部分のデータと同じデータを、次回の上記処理ブロックについての上記ハーフトーン処理で参照されるＮ番目の上記ディザマスクの部分のデータとして使用することができる。同一のデータを再利用することができることとなるため、処理を効率的なものとすることができる。
【０００６】
なお、上記処理手段は上記ディザ法によるハーフトーン処理のみならず他の手法によるハーフトーン処理を並行して実行するものであってもよい。例えば、上記ディザ法のほかに誤差拡散法によるハーフトーン処理を上記処理ブロックごとに並行して実行するようにしてもよい。この場合、誤差拡散法が効率的に実行できるようにも上記処理ブロックの処理順序や位置を設定するのが望ましい。Ｙ方向については、Ｙ方向に隣接する上記処理ブロックが次に処理されるため、Ｙ方向に伝播した誤差を次の上記処理ブロックについての処理において使用することができ、処理の効率がよいと言うことができる。一方、Ｘ方向については、上記誤差拡散法におけるＸ方向の誤差拡散範囲に応じてオフセットさせることにより、前回処理した上記処理ブロックについての誤差拡散で生じた誤差を、次回の上記処理ブロックについての誤差拡散で使用するようにすることができる。
【０００７】
また、以上説明した本発明の一態様を別の表現によって表すことができる。すなわち、Ｙ方向に隣接し、かつ、Ｘ方向にオフセットした上記処理ブロックが次に処理される対象と順次されていくため、ある期間において連続して処理される上記処理ブロックの一群は略平行四辺形をなすものと捉えることができる。
【０００８】
さらに、本発明の効果をより顕著とするための具体的なハードウェア構成の一例として、上記取得手段は、上記ディザマスクのデータを上記ハーフトーン処理のための演算を行うＣＰＵの外部メモリに記憶する。そして、上記処理手段は、上記ディザマスクのデータのうち上記ディザ法において使用した上記ディザマスクの一部のデータを上記ＣＰＵの内部キャッシュメモリに読み出し可能に記憶しておく。このようにすることにより、本発明において上記ディザマスクのデータの直前に使用されたものと同一のデータを再利用する場合に、上記ＣＰＵの内部キャッシュメモリに記憶されたデータを使用することができる。すなわち、上記外部メモリから当該データを読み出さなくても、上記ＣＰＵの内部キャッシュメモリから当該データを読み出して使用することができ、処理を高速化させることができる。
【０００９】
さらに、上記処理手段は上記ハーフトーン処理のみならず他の処理を上記処理ブロックごとに実行するようにしてもよい。例えば、上記ハーフトーン処理のほかに当該ハーフトーン処理の前処理として上記画像データの色空間を変換する色変換処理を上記処理ブロックごとに実行するようにしてもよい。この場合、上記処理ブロックについてのみ上記色変換処理によって得られた階調値を記憶しておけば、次の上記ハーフトーン処理を実行することができる。従って、色変換後の階調値の記憶／読み出し処理を効率化させることができる。
【００１０】
さらに、上記ディザ法と上記誤差拡散法による上記ハーフトーン処理を並行して行う場合の好適な態様の一例として、上記ディザ法によって上記画像データの印刷時に使用される大ドットの吐出可否を決定するとともに、上記誤差拡散法によって上記画像データの印刷時に使用される上記大ドットよりも小さいドットの吐出可否を決定するようにしてもよい。
【００１１】
さらに本発明の技術的思想は、画像処理装置において行われる画像処理方法においても具現化されることはいうまでもない。また、当該画像処理方法を実現するための画像処理プログラムをコンピュータに読み込ませ、所定の機能を実行させることにより、コンピュータを用いて実現することも可能である。さらに、上述した画像処理装置や画像処理方法や画像処理プログラムを一部に有する他の装置や方法やプログラムにおいても、本発明の技術的思想を具現化することができる。例えば、上述した画像処理装置を一部に含む印刷装置や印刷制御装置においても本発明の効果を得ることができる。また、上述した画像処理装置や画像処理方法や画像処理プログラムが有する手段や工程や機能が複数の装置において分担されて実現されるものであってもよい。例えば、一部の機能がパーソナルコンピュータのプリンタドライバによって実現され、別の一部の機能がプリンタのファームウェアによって実現されてもよい。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を下記の順序にしたがって図面を利用して説明する。
（Ａ）画像処理について：
（Ｂ）本発明を具現化した画像処理装置：
（Ｃ）変形例：
【００１３】
（Ａ）画像処理について
図１は本発明の一実施形態にかかる画像処理装置の構成を概念的に示し、図２は当該画像処理装置における画像処理の流れを示している。画像処理装置１０は、画像データＩＤを取得し、当該画像データＩＤをハーフトーンデータＨＤに変換する処理を行うために構成されている。図１において、取得手段Ｍ１と配置手段Ｍ２と処理手段Ｍ３とによって画像処理装置１０が構成されている。処理手段Ｍ３は、色変換処理手段Ｍ３ａとディザ手段Ｍ３ｂと誤差拡散手段Ｍ３ｃとから構成されている。まずステップＳ１００において処理手段Ｍ３が処理対象として画像データＩＤを取得する。画像データＩＤは行列状に配列された複数の画素によって構成されており、各画素が色の情報を有している。例えば、各画素がＲＧＢ（レッド，グリーン，ブルー）の３要素の階調の組み合わせによる色の情報を有しているものとして以下説明する。
【００１４】
図３は、画像データＩＤの構成を模式的に示している。同図において、例えば８ビット（２５６階調）の階調をＲＧＢについて有する画素が行列状（Ｘ−Ｙ方向）に配置された２次元画像データとなっている。本実施形態では、一例として約７１０万画素（（Ｘ）３，０７２ピクセル（Ｙ）２，３０４ピクセル）の画像データＩＤを処理の対象としている。なお、画像データＩＤの紙面左上隅を基準座標（ｘ＝ｙ＝１）とし、画像データＩＤの任意の画素をＰ（ｘ，ｙ）と表記するものとする。ステップＳ１１０においては、取得手段Ｍ１がディザマスクＤＭを取得するとともに、当該取得したディザマスクＤＭを配置手段Ｍ２が画像データＩＤに対して配置する処理を行う。続いて、ステップＳ１２０では、配置手段Ｍ２が画像データＩＤを複数の処理ブロックＣＢに区分する。
【００１５】
図４は、ディザマスクＤＭと処理ブロックＣＢを比較して示している。同図において、処理ブロックＣＢは（Ｘ）１０２４ピクセル（Ｙ）６４ピクセルの略帯状に画像データＩＤを区分することにより形成され、ディザマスクＤＭは（Ｘ）５１２ピクセル（Ｙ）５１２ピクセルの正方形状に設定されている。すなわち、処理ブロックＣＢは、Ｘ方向にディザマスクＤＭの２倍の長さを有しており、Ｙ方向にディザマスクＤＭの１／８倍の長さを有している。なお、処理ブロックＣＢのＹ方向の幅をＤ（＝６４）と表すものとする。処理ブロックＣＢはディザマスクＤＭよりもＸ方向の幅が長く、かつ、Ｙ方向の幅Ｄが短ければよく、処理ブロックＣＢとディザマスクＤＭは例示された大きさのものに限られることはない。ディザマスクＤＭはそれぞれが閾値の情報を有する画素が行列状（Ｘ−Ｙ方向）に配置された２次元画像データであり、ステップＳ１１０において取得手段Ｍ３が新たに生成するか、既存ものを入力することにより取得する。いずれにしてもディザマスクＤＭにおいては、各閾値が空間的に冗長性を持たないようにランダムに分布されている。なお、ディザマスクＤＭの紙面左上隅を基準座標（ｉ＝ｊ＝１）とし、ディザマスクＤＭの任意の画素（閾値）をＴ（ｉ，ｊ）と表記するものとする。
【００１６】
図５は、ステップＳ１１０において画像データＩＤに対してディザマスクＤＭが配置される様子を説明している。ディザマスクＤＭは、画像データＩＤよりも小さいが、同一のディザマスクＤＭを複数並べて配置することにより、画像データＩＤ全体をカバーすることができる。これにより、画像データＩＤ全体についてディザ処理における閾値判定を行うことが可能となる。約７１０万画素の画像データＩＤに対しては、ディザマスクＤＭをＸ方向に６個配列することができ、Ｙ方向に４．５個配列することができる。なお、ディザマスクＤＭのＸ方向についての配列番号をｎ（６以下の自然数）と表すものとする。
【００１７】
図５における紙面左上隅（ｎ＝１）のディザマスクＤＭは左上隅が画像データＩＤの左上隅と一致するように配置されている。最初のディザマスクＤＭ（ｎ＝１）にＸ方向紙面右側に隣接するディザマスクＤＭ（ｎ＝２）は、当該ディザマスクＤＭ（ｎ＝１）に対してＹ方向紙面上側に６４ピクセルだけずれて配置される。さらに、ディザマスクＤＭ（ｎ＝２）にＸ方向紙面右側に隣接するディザマスクＤＭ（ｎ＝３）は、当該ディザマスクＤＭ（ｎ＝２）に対して紙面上側（−Ｙ方向）に６４ピクセルだけずれて配置される。すなわち、ディザマスクＤＭ（ｎ）にＸ方向紙面右側に隣接するディザマスクＤＭ（ｎ＋１）は、当該ディザマスクＤＭ（ｎ）に対してＹ方向紙面上側に６４ピクセルだけずれて順次配置されている。
【００１８】
これにより、ディザマスクＤＭ（ｎ）とディザマスクＤＭ（ｎ＋１）との間には、処理ブロックＣＢのＹ方向の幅Ｄと等しい６４ピクセルの段差が紙面上方向（−Ｙ方向）に形成されることとなる。以上のようにして最上段の各ディザマスクＤＭが配置されると、これらに下方向に隣接するようにディザマスクＤＭが順次配置され、画像データＩＤの紙面下端までディザマスクＤＭによってカバーされる。ディザマスクＤＭの配置を記憶しておくことにより、画像データＩＤにおける任意の位置の画素Ｐ（ｘ，ｙ）に対応するディザマスクＤＭの画素Ｔ（ｉ，ｊ）を特定することができる。言い換えれば、ステップＳ１１０において画像データＩＤにおける座標（ｘ，ｙ）とディザマスクＤＭにおける座標（ｉ，ｊ）との対応関係が特定されたこととなる。以上のようにしてディザマスクＤＭが配置されると、次に処理ブロックＣＢを配置する。
【００１９】
図６は、ステップＳ１２０において画像データＩＤが複数の処理ブロックＣＢによって区分される様子を説明している。同図において、（Ｘ）６４ピクセル（Ｙ）１０２４ピクセルの大きさの処理ブロックＣＢがＹ方向に隣接して配置されており、紙面下方に隣接する処理ブロックＣＢのＸ方向の位置が６４ピクセルずつ紙面左方向（−Ｘ方向）にオフセットさせられている。すなわち、上下に隣接する処理ブロックＣＢが略平行四辺形をなしている。このようにオフセットさせて処理ブロックＣＢを順に配置していくことにより、画像データＩＤの端部においてはＸ方向の幅が処理ブロックＣＢの幅に満たない領域が形成される。このような領域においてはＸ方向の幅を通常の処理ブロックＣＢの幅よりも短くした処理ブロックＣＢで充填することにより、画像データＩＤにおけるすべての画素を処理の対象とさせることができる。
【００２０】
各処理ブロックＣＢについて処理順序が各処理ブロックの中央に示されており、基本的には紙面下方（＋Ｙ方向）に隣接する処理ブロックＣＢが順に処理対象とされるよう処理順序が規定されている。ただし、紙面下方に隣接する処理ブロックＣＢが存在しない場合には、紙面最上段の処理ブロックＣＢであって処理済みの処理ブロックＣＢに対して紙面右方向に隣接する処理ブロックＣＢが次の処理対象とされる。このような処理順序とすることにより、全体的には画像データＩＤの左上隅から右下隅に向かう順序で処理をさせることができる。また、ある期間に連続して処理された処理ブロックＣＢによって略平行四辺形が形成されるということができる。以上のようにディザマスクＤＭと処理ブロックＣＢの区分および処理順序の設定が完了すると、次に色変換処理およびハーフトーン処理を実際に実行する処理を行う。
【００２１】
ステップＳ１３０においては、処理対象の処理ブロックＣＢを選択する処理を行う。ここでは処理対象の処理ブロックＣＢが図６に示した順序で順次選択され、最初の段階では左上隅の処理ブロックＣＢが選択される。次にステップＳ１４０において、色変換処理手段Ｍ３ａが処理対象の処理ブロックＣＢに属する画素のデータを取得する。ステップＳ１５０においては、ステップＳ１４０において取得した各画素のＲＧＢ階調を色変換する。本実施形態では、ＲＧＢの階調で表された各画素の色が色変換によってＣＭＹＫ（シアン，マゼンタ，イエロー，ブラック）の４要素の階調の組み合わせによって表現されるように変換を行う。色変換処理手段Ｍ３ａが色変換を実行する際には、色変換プロファイルＩＣＰが使用される。色変換プロファイルＩＣＰは、色変換前後の色空間同士（ＲＧＢ−ＣＭＹＫ）の対応関係を定義づけたプロファイルであり、ルックアップテーブルや行列式等として提供される。色変換処理を行うことにより現在の処理ブロックＣＢに属する各画素についてＣＭＹＫの階調が得られる。
【００２２】
ステップＳ１６０においては現在の処理ブロックＣＢに属する画素Ｐ（ｘ，ｙ）から処理対象の画素Ｐ（ｘ，ｙ）を選択する。処理ブロックＣＢ内における処理対象の画素Ｐ（ｘ，ｙ）の選択順序も、処理ブロックＣＢの処理順序と同様に左上隅から右下隅に向かう順序とするのが望ましい。画素Ｐ（ｘ，ｙ）が選択できると、ステップＳ１７０において処理対象の要素色を選択する。上述したとおりステップＳ１４０にて現在の処理ブロックＣＢに属する各画素Ｐ（ｘ，ｙ）の色変換が完了しているため、各画素Ｐ（ｘ，ｙ）はＣＭＹＫの要素色の階調を有している。ここではＣ→Ｍ→Ｙ→Ｋの順に選択するものとして以下説明する。ステップＳ１８０においては現在の画素Ｐ（ｘ，ｙ）について選択されたＣの階調をディザ手段Ｍ３ｂが取得し、当該階調に基づくハーフトーン処理をディザ法によって行う。
【００２３】
具体的には、画素Ｐ（ｘ，ｙ）のＣの階調と、当該画素Ｐ（ｘ，ｙ）に対応するディザマスクＤＭの対応画素Ｔ（ｉ，ｊ）が示す閾値との比較を行い、画素Ｐ（ｘ，ｙ）のＣの階調の方が大きい場合には当該画素Ｐ（ｘ，ｙ）についてのハーフトーン処理後の階調として、階調”３”を与える。ここで、当該画素Ｐ（ｘ，ｙ）に対応するディザマスクＤＭの対応画素Ｔ（ｉ，ｊ）は、ステップＳ１１０において画像データＩＤに対してディザマスクＤＭを配置することにより得られた画像データＩＤにおける座標（ｘ，ｙ）とディザマスクＤＭにおける座標（ｉ，ｊ）との対応関係から得ることができる。すなわち、処理対象の画素Ｐ（ｘ，ｙ）に対応するディザマスクＤＭの座標（ｉ，ｊ）を特定し、当該座標（ｉ，ｊ）の画素が示す閾値を取得することにより、当該画素Ｐ（ｘ，ｙ）についての閾値判定を可能としている。
【００２４】
上述したディザ法によるハーフトーン処理において階調”３”が与えられなかった場合（ステップＳ１９０）、ステップＳ２００にて誤差拡散手段Ｍ３ｃが当該画素Ｐ（ｘ，ｙ）について引き続き誤差拡散法によるハーフトーン処理を実行する。ここでもステップＳ１７０において選択された要素色のＣの階調に基づいてハーフトーン処理が行われる。
【００２５】
図７は、誤差拡散法によるハーフトーン処理の様子を示している。同図に示すように、誤差拡散法においては対象の画素Ｐ（ｘ，ｙ）のＣの階調を所定の閾値と比較し、Ｃの階調が当該閾値を上回る場合には、ハーフトーン処理後の階調として、階調”２”を与える。このとき、Ｃの階調と上記閾値との誤差を算出し、当該誤差を右・右下・下・左下の各方向の隣接する他の画素Ｐ（ｘ，ｙ）に拡散させる。これにより、当該他の画素Ｐ（ｘ，ｙ）のＣ階調がステップＳ１４０における色変換後の値から誤差を加味した大きさに更新されることとなる。ステップＳ２００にて実行した誤差拡散法にて階調”２”が与えられなかった場合（ステップＳ２１０）には、ステップＳ２２０において誤差拡散手段Ｍ３ｃが対象の画素Ｐ（ｘ，ｙ）について誤差拡散法によるハーフトーン処理を実行させる。ここでは、Ｃの階調が所定の閾値を上回る場合にはハーフトーン処理後の階調として、階調”１”を与え、Ｃの階調が所定の閾値を下回る場合にはハーフトーン処理後の階調と、階調”０”を与える。なお、本発明の誤差拡散法において拡散させられる誤差の方向や距離は図示したものに限られない。
【００２６】
以上のようにして、対象の画素Ｐ（ｘ，ｙ）のＣの階調について、最大、ディザ処理を１回、誤差拡散処理を２回行うことにより、色変換後の多階調のＣ階調が０，１，２，３のいずれかの４階調にハーフトーン変換されたこととなる。対象の画素Ｐ（ｘ，ｙ）のＣの階調についてハーフトーン処理が完了すると、ステップＳ２３０において最後の要素色であるかどうかが判断され、最後の要素色でない場合にはステップＳ１７０に戻る。そして、ステップＳ１７０では、次の要素色が選択され、当該要素色（Ｃの次はＭ）についてステップＳ１８０〜Ｓ２２０の処理が実行される。すべての要素色（最終のＫまで）についてステップＳ１８０〜Ｓ２２０が完了すると、ステップＳ２４０において、現在の処理ブロックＣＢに属するすべての画素Ｐ（ｘ，ｙ）についてのハーフトーン処理が完了したか否かが判定され、すべて完了していない場合にはステップＳ１６０にて当該処理ブロックＣＢに属する次の画素Ｐ（ｘ，ｙ）を処理対象として選択する。
【００２７】
次の画素Ｐ（ｘ，ｙ）についてステップＳ２００，Ｓ２２０にて誤差拡散を行う場合には、周囲の画素Ｐ（ｘ，ｙ）について以前（過去のループにおけるステップＳ２００，Ｓ２２０）に行われた誤差拡散法によって拡散した誤差が閾値判定に考慮されることとなる。以上の処理を現在の処理ブロックＣＢに属する画素Ｐ（ｘ，ｙ）のすべてに完了させると、当該処理ブロックＣＢについてのハーフトーン処理が完了したこととなる。すなわち、当該処理ブロックＣＢに属するすべての画素Ｐ（ｘ，ｙ）がＣＭＹＫのそれぞれについて０，１，２，３のいずれかの階調を有することとなる。当該処理ブロックＣＢについてのハーフトーン処理が完了すると、ステップＳ１３０に戻り、次の処理ブロックＣＢを処理対象として選択することとなる。これにより、ステップＳ１２０にて設定した処理順序によって各処理ブロックＣＢのハーフトーン処理が順次行われ、最終的には画像データＩＤ全体がハーフトーン処理されたこととなり、その結果物としてハーフトーンデータＨＤが得られることとなる。
【００２８】
（Ｂ）本発明を具現化した画像処理装置
以上においては本発明の一実施形態において行われる画像処理について説明を行ったが、ここからは上述した画像処理がコンピュータのハードウェア資源を利用して具現化され、応用される様子を説明する。上述した画像処理は、内部においてコンピュータを備えるプリンタにおいて実行されるとともに、画像データＩＤを色変換処理／ハーフトーン処理して得られたハーフトーンデータＨＤに基づいて印刷をさせるために実行される。
【００２９】
図８は、上述した画像処理が実行される画像処理装置（プリンタ）１０の主要構成を示している。同図において、プリンタ１０は、ＣＰＵ１１と外部メモリとしてのＲＡＭ１２とＲＯＭ１３とからなる制御部ＣＵと、印刷ヘッド１４と、紙送り系１５と、メモリカード１６と、これらを相互に接続するバス１７とから構成されている。制御部ＣＵから出力される信号に基づいて、印刷ヘッド１４は主走査を行うとともに、インクノズルからＣＭＹＫのインクを吐出させる。本実施形態では、印刷ヘッド１４が各ノズルに対応してピエゾ素子を備えており、当該ピエゾ素子に異なる波形の駆動信号を印加することにより、体積の異なる大ドットと中ドットと小ドットのＣＭＹＫインク滴を吐出することが可能となっている。また、制御部ＣＵから出力される信号に基づいて、紙送り系１５を駆動させることにより印刷用紙を副走査させる。これらの主走査と副走査を組み合わせることにより、印刷用紙上において２次元的に大ドットと中ドットと小ドットが配列した印刷画像を形成することが可能となっている。
【００３０】
上述したハーフトーンデータＨＤにおいてはＣＭＹＫの階調が０，１，２，３のいずれかの４階調に変換されているが、階調”４”が大ドットの吐出に対応し、階調”３”が中ドットの吐出に対応し、階調”２”が小ドットの吐出に対応し、階調”０”がいずれも吐出させないことに対応している。大ドットによれば記録媒体における濃度を大きく変動させることができるため、色変換後のＣＭＹＫ階調の大まかな大きさを表す上位ビットの値に基づいて階調”４”とするか否かを決定するディザ処理（ステップＳ１８０）を行えばよい。一方、中・小ドットによれば記録媒体における濃度を比較的細かく変動させることができるため、色変換後のＣＭＹＫ階調の微妙な大きさを表す中位・下位ビットの値に基づいて階調”３”または”２”とするか否かを決定する誤差拡散処理（ステップＳ２００，Ｓ２２０）を行えばよい。また、各ハーフトーン処理（ステップＳ１８０，Ｓ２００）における閾値判定によって生じた誤差を、次の段階のハーフトーン処理（ステップＳ２００，Ｓ２２０）において使用するようにしてもよい。
【００３１】
プリンタ１０の中枢をなす制御部ＣＵにおいては、上述した画像処理を実行するために必要なデータがＲＯＭ１３に記憶されており、当該ＲＯＭ１３に記憶されたデータやメモリカード１６に記憶された画像データＩＤのうち必要なものをＲＡＭ１２に展開する。ＲＡＭ１２はＲＯＭ１３よりも高速にアクセスが可能なＳＤＲＡＭ等の揮発性メモリであり、必要なデータをＲＡＭ１２に展開することにより高速な画像処理を実現することができる。なお、上述した画像処理を実行する取得手段Ｍ１と配置手段Ｍ２と処理手段Ｍ３は、ＣＰＵ１１がＲＯＭ１３に記憶されたプログラムコード／データにしたがった演算を実行することにより実現されることとなる。ＣＰＵ１１は、内部に論理演算を実行するコア１１ａと、データを一時的にキャッシュする内部キャッシュメモリとしてのキャッシュメモリ１１ｂと、これらを接続する内部バス１１ｃとから構成されている。
【００３２】
内部バス１１ｃの動作クロックは外部のバス１７と比較して速いとともに、キャッシュメモリ１１ｂにおいてデータを読み書きする速度も外部のＲＡＭ１２よりも速い。このように高速なキャッシュメモリ１１ｂに必要なデータをキャッシュしておくことにより、当該データにコア１１ａが高速にアクセスすることができ、処理を高速に実行させることができる。なお、以上説明したＣＰＵ１１の構成はあくまでも一例であり、例えば読み書きの用途ごとや、命令コードやデータ等のデータ属性ごとに、複数のキャッシュメモリが備えられてもよい。むろん、コア１１ａの構成として、シングルコアに限られず、マルチコアを採用してもよい。キャッシュメモリ１１ｂにはタグ部１１ｂ１が設けられており、タグ部１１ｂ１においては外部のＲＡＭ１２のどのアドレスのデータがキャッシュメモリ１１ｂの各アドレスにキャッシュされているかという情報が記憶されている。以下、上述した画像処理（図２）において、キャッシュメモリ１１ｂにキャッシュされるデータのうち主要なものについて説明する。
【００３３】
まず、図２のステップＳ１１０において、ＲＯＭ１３から読み出したり、新規に生成したりすることにより取得手段Ｍ１がディザマスクＤＭを取得する。取得したディザマスクＤＭは、全体がＲＡＭ１２に記憶される。ディザマスクＤＭ全体のデータ量はキャッシュメモリ１１ｂの記憶容量よりも大きくキャッシュメモリ１１ｂに記憶できないからである。次に、ステップＳ１２０においてディザマスクＤＭの配置が完了すると、画像データＩＤの各画素の座標（ｘ，ｙ）と、各画素の座標（ｘ，ｙ）に対応するディザマスクＤＭの座標（ｉ，ｊ）との対応関係を規定する位置対応データがＲＡＭ１２上に記憶されるとともに、当該位置対応データがキャッシュメモリ１１ｂにキャッシュされる。ステップＳ１３０において処理対象の処理ブロックＣＢを選択すると、メモリカード１６またはＲＡＭ１２に記憶されている画像データＩＤから当該処理ブロックＣＢに属する画素Ｐ（ｘ，ｙ）のＲＧＢ階調データを取得し、ステップＳ１４０の色変換処理を実行する。そして、色変換処理により得られた当該処理ブロックＣＢに属する画素Ｐ（ｘ，ｙ）のＣＭＹＫ階調データをキャッシュメモリ１１ｂにキャッシュする。処理ブロックＣＢは画像データＩＤと比較して小さいため、処理ブロックＣＢに属するすべての画素Ｐ（ｘ，ｙ）のＣＭＹＫ階調データをキャッシュメモリ１１ｂにキャッシュすることができる。ステップＳ１６０にてディザ処理を行う場合には、閾値判定を行うためにディザマスクＤＭのデータが必要となる。ここでは、以下のフローにしたがってＣＰＵ１１がディザ処理を行っていく。
【００３４】
図９は、図２のステップＳ１８０で行われるディザ処理の詳細な流れを示している。まず、ステップＳ３００においては、処理対象の画素Ｐ（ｘ，ｙ）の座標（ｘ，ｙ）に対応するディザマスクＤＭの座標（ｉ，ｊ）をキャッシュメモリ１１ｂにキャッシュされている位置対応データに基づいて取得する。ステップＳ３１０においては、ディザマスクＤＭにおける当該座標（ｉ，ｊ）の閾値Ｔ（ｉ，ｊ）がキャッシュメモリ１１ｂにキャッシュされているか否か（キャッシュヒットか否か）をタグ部１１ｂ１を参照して判定する。ここで、当該座標（ｉ，ｊ）の閾値Ｔ（ｉ，ｊ）がキャッシュメモリ１１ｂにキャッシュされていなければ（キャッシュヒットしなければ）、ステップＳ３２０にてＲＡＭ１２に記憶されているディザマスクＤＭ全体のデータから当該座標（ｉ，ｊ）の閾値Ｔ（ｉ，ｊ）を読み出す。そして、ステップＳ３３０では当該閾値（ｉ，ｊ）との閾値判定を行い、その判定結果をキャッシュメモリ１１ｂにキャッシュさせる。さらに、ステップＳ３４０では、ステップＳ３３０で使用した閾値（ｉ，ｊ）をキャッシュメモリ１１ｂにキャッシュさせ、タグ部１１ｂ１にその旨を記憶させる。一方、当該座標（ｉ，ｊ）の閾値Ｔ（ｉ，ｊ）がキャッシュメモリ１１ｂにキャッシュされていれば（キャッシュヒットすれば）、ステップＳ３５０にてキャッシュメモリ１１ｂに記憶されている閾値Ｔ（ｉ，ｊ）を読み出し、ステップＳ３６０にて当該閾値Ｔ（ｉ，ｊ）との閾値判定を行い、その判定結果をキャッシュメモリ１１ｂにキャッシュさせる。ステップＳ３５０では高速なキャッシュメモリ１１ｂから閾値Ｔ（ｉ，ｊ）を読み出せばよいため、ステップＳ３２０の場合よりも高速にディザ処理を行うことができる。
【００３５】
処理の初期においては、閾値Ｔ（ｉ，ｊ）がキャッシュメモリ１１ｂに記憶されていないが、以上の処理を繰り返して実行することにより処理の進行（ステップＳ１６０のループ回数が増加する）とともにキャッシュメモリ１１ｂに使用した閾値Ｔ（ｉ，ｊ）を蓄積して記憶していくことができる。ただし、キャッシュメモリ１１ｂの記憶容量は、一般的に少ないため、ある程度の画素数について閾値Ｔ（ｉ，ｊ）を記憶したところで、キャッシュメモリ１１ｂにおいて閾値Ｔ（ｉ，ｊ）の記憶のために割り当てられた領域は飽和する。そのため、例えば古い閾値Ｔ（ｉ，ｊ）や使用されない閾値Ｔ（ｉ，ｊ）は、新たな閾値Ｔ（ｉ，ｊ）のキャッシュにともなってキャッシュメモリ１１ｂから消去されていく。従って、ある瞬間においてキャッシュメモリ１１ｂにキャッシュされている閾値Ｔ（ｉ，ｊ）はディザマスクＤＭ全体のごく一部であり、必要な座標（ｉ，ｊ）の閾値Ｔ（ｉ，ｊ）がキャッシュメモリ１１ｂにキャッシュされている確率（キャッシュヒット率）は１００％とはならない。ここで、キャッシュヒット率が高いと、ステップＳ３５０では高速なキャッシュメモリ１１ｂから閾値Ｔ（ｉ，ｊ）を読み出す回数の比率が高くなるため、図２の画像処理全体の処理効率を向上することとなる。
【００３６】
ここでは、キャッシュメモリ１１ｂにおいて閾値Ｔ（ｉ，ｊ）の記憶のために割り当てられた領域が６５５３６画素分の閾値Ｔ（ｉ，ｊ）を記憶できるものとして、キャッシュヒット率についての説明を行う。なお、キャッシュメモリ１１ｂの記憶容量はＣＰＵ１１のアーキテクチャによって様々であり、閾値Ｔ（ｉ，ｊ）を表すビット数も様々であるため、上記の記憶容量は説明のために挙げた一例に過ぎない。なお、６５５３６画素は１個の処理ブロックＣＢの画素数（６５５３６＝６４×１０２４）に相当する。
【００３７】
図１０は、ある処理ブロックＣＢ３（二重線で図示）について図２の画像処理をする際の様子を模式的に示している。同図において、処理ブロックＣＢ３における左端の画素Ｐ（ｘ，ｙ）から順に右方向へディザ処理を行っていく。一つ前に処理された処理ブロックＣＢ２に注目すると、当該処理ブロックＣＢ２はｎ番目のディザマスクＤＭにおいて現在の処理ブロックＣＢ３よりも一段上の領域を占めている。しかし、Ｘ方向に隣接する（ｎ＋１）番目のディザマスクＤＭは処理ブロックＣＢのＹ方向の幅（Ｄ＝６４）だけＹ方向紙面上側（−Ｙ方向）に段差を有するように配置されているため、当該（ｎ＋１）番目のディザマスクＤＭにおける処理ブロックＣＢ２のＹ方向の位置と、当該処理ブロックＣＢ２に対してＹ方向紙面下側（＋Ｙ方向）に隣接する処理ブロックＣＢ３のｎ番目のディザマスクＤＭおけるＹ方向の位置とが一致することとなる。すなわち、処理ブロックＣＢ３のディザ処理において、直前に処理した処理ブロックＣＢ２とディザマスクＤＭにおける同一位置の閾値Ｔ（ｉ，ｊ）を使用することとなる。図１０においては、ディザマスクＤＭにおいて処理ブロックＣＢ２と処理ブロックＣＢ３が共通して使用する閾値Ｔ（ｉ，ｊ）の領域をハッチングで示している。
【００３８】
図９のステップＳ３４０ではディザ処理で使用した閾値Ｔ（ｉ，ｊ）をキャッシュメモリ１１ｂにキャッシュさせるため、直前の処理ブロックＣＢ２に対するディザ処理で使用した閾値Ｔ（ｉ，ｊ）は、次の処理ブロックＣＢ３のディザ処理を行う時点でキャッシュされていることとなる。従って、処理ブロックＣＢ３のうちハッチングで示した領域についてディザ処理をする際には、ステップＳ３１０でキャッシュヒットであると判断され、閾値Ｔ（ｉ，ｊ）を高速に読み出して閾値判定に使用することができる。図示した処理ブロックＣＢ３の場合、ほぼ半分の領域の画素Ｐ（ｘ，ｙ）についてキャッシュヒットさせることができ、処理ブロックＣＢ３についてのディザ処理を高速に行うことができる。処理ブロックＣＢ３におけるハッチングで示した以外の領域についてはキャッシュヒットとはならないが、当該領域について使用した閾値Ｔ（ｉ，ｊ）がステップＳ３４０にて新たにキャッシュされるため、新たにキャッシュさせた閾値Ｔ（ｉ，ｊ）を次の処理ブロックＣＢ４についてのディザ処理おいてキャッシュヒットさせることができる。以上説明したように、本発明ではディザマスクＤＭと処理ブロックＣＢを所定の手法で配置することにより、ディザ処理におけるキャッシュヒット率を向上させることができ、高速なディザ処理を実現させることができる。
【００３９】
次に、図２のステップＳ２００およびステップＳ２２０にて誤差拡散処理を行う際にキャッシュメモリ１１ｂにキャッシュされるデータについて説明する。上述したように誤差拡散処理を行う段階では、処理対象の処理ブロックＣＢに属する画素Ｐ（ｘ，ｙ）の色変換後のＣＭＹＫ階調データがキャッシュメモリ１１ｂにキャッシュされており、当該ＣＭＹＫ階調データを高速に読み出して誤差拡散処理における閾値判定を行うことができる。また、ある画素Ｐ（ｘ，ｙ）について誤差拡散処理を行う際には、当該画素Ｐ（ｘ，ｙ）についての誤差が周辺の画素に拡散することとなる。この拡散した誤差が画素の座標（ｘ，ｙ）に対応付けられたデータを生成し、当該データをＲＡＭ１２に誤差データとして記憶する。この誤差データについても、直前の誤差拡散処理によって誤差を更新した画素については所定画素分だけキャッシュメモリ１１ｂにキャッシュされる。誤差データをキャッシュする領域も所定の記憶容量に限定されており、しばらく更新されない座標（ｘ，ｙ）の誤差はキャッシュメモリ１１ｂから消去され、ＲＡＭ１２のみに記憶されることとなる。
【００４０】
図１１は、処理ブロックＣＢ２について処理が完了したときに、キャッシュメモリ１１ｂに誤差がキャッシュされている領域をハッチングにより示している。当該領域は直前の処理ブロックＣＢ２の外縁付近から生じた誤差の及ぶ範囲に相当し、直前の処理ブロックＣＢ２に対する誤差拡散処理において誤差が更新される領域に相当する。このように直前に更新された誤差は、キャッシュメモリ１１ｂにキャッシュされている。従って、直後において行う処理ブロックＣＢ３の誤差拡散処理においては、キャッシュメモリ１１ｂにキャッシュされた誤差を使用することができる。処理ブロックＣＢ２，ＣＢ３はＸ方向に細長く、かつ、Ｙ方向に隣接するため、連続して処理する処理ブロックＣＢ２，ＣＢ３の接触範囲が大きい。そのため、処理ブロックＣＢ２に対する誤差拡散処理によって更新されることによりキャッシュメモリ１１ｂにキャッシュされた多くの誤差を、処理ブロックＣＢ３の誤差拡散処理において使用することができる。図７において説明したように、本実施形態では誤差が左下方向にも拡散しているため、処理ブロックＣＢ２の紙面左端よりも左外側にも誤差がキャッシュされた領域が及んでいる。次に処理を行う処理ブロックＣＢ３は、直前の処理ブロックＣＢ２の紙面下方にあり、さらにＸ方向について紙面左側にオフセットして配置されている。そのため、処理ブロックＣＢ２の紙面左端よりも左外側へ拡散した誤差も次の処理ブロックＣＢ３に対する処理において使用することができる。
【００４１】
以上説明したように、本実施形態のようにディザマスクＤＭを配置し、所定の順序で処理ブロックＣＢを処理することにより、ディザ法および誤差拡散法におけるキャッシュヒット率を向上させ、全体の処理効率を向上させることができる。また、色変換処理も処理ブロックＣＢごとで行うため、色変換処理後の階調データをキャッシュメモリ１１ｂから読み出して使用することができる。すなわち、色変換処理からハーフトーン処理までの処理をある程度小さい各処理ブロックＣＢごとに完結させるため、その間に生じる中間データをキャッシュメモリ１１ｂ内で記憶することができ、中間データの使用時に要するデータ読み出し時間を短縮することができる。
【００４２】
（Ｃ）変形例
以上においては、ハーフトーン処理としてディザ法と誤差拡散法とを並行して実行する例を説明したが、少なくともディザ法によるハーフトーン処理において上述したディザマスクＤＭと処理ブロックの設定を行うことにより、本発明の効果を得ることができる。従って、本発明をディザ法単独のハーフトーン処理に適用することも可能である。むろん、多階調のデータをディザ法によって単純な２値ハーフトーンデータに変換する場合にも本発明を適用することができる。また、以上においては色変換処理からハーフトーン処理までを処理ブロックごとに行う例を説明したが、少なくともディザ法によるハーフトーン処理において本発明の効果を発揮させることができ、ディザ法によるハーフトーン処理のみを処理ブロックごとに行うようにすることもできる。さらに、画像処理としてハーフトーン処理を含むものであれば本発明を適用することができ、必ずしも印刷を行うための画像処理に限定されるものではない。むろん、印刷を行うための画像処理に本発明を適用する場合であっても、本発明の特徴的な画像処理をプリンタ制御のためのコンピュータ上で実行するようにしてもよい。
【図面の簡単な説明】
【００４３】
【図１】本発明の概念的構成を示すブロック図である。
【図２】本発明の画像処理の流れを示すフローチャートである。
【図３】画像データを説明する図である。
【図４】ディザマスクと処理ブロックを比較する図である。
【図５】ディザマスクが配置される様子を示す図である。
【図６】処理ブロックに区分される様子を示す図である。
【図７】誤差拡散処理を説明する図である。
【図８】プリンタの実体的構成を示すブロック図である。
【図９】ディザ処理の詳細な流れを示すフローチャートである。
【図１０】ディザ処理におけるキャッシュの状況を説明する図である。
【図１１】誤差拡散処理におけるキャッシュの状況を説明する図である。
【符号の説明】
【００４４】
１０…画像処理装置（プリンタ），１１…ＣＰＵ，１１ｂ…キャッシュメモリ，１１ｃ…内部バス，１２…ＲＡＭ，１３…ＲＯＭ，１４…印刷ヘッド，１５…紙送り系，１６…メモリカード，１７…（外部）バス 
【図１】
2009049697.tif 000003
【図２】
2009049697.tif 000004
【図３】
2009049697.tif 000005
【図４】
2009049697.tif 000006
【図５】
2009049697.tif 000007
【図６】
2009049697.tif 000008
【図７】
2009049697.tif 000009
【図８】
2009049697.tif 000010
【図９】
2009049697.tif 000011
【図１０】
2009049697.tif 000012
【図１１】
2009049697.tif 000013