JP2005143140A - 画像処理装置、処理方法および記録媒体 - Google Patents

画像処理装置、処理方法および記録媒体 Download PDF

Info

Publication number
JP2005143140A
JP2005143140A JP2005029140A JP2005029140A JP2005143140A JP 2005143140 A JP2005143140 A JP 2005143140A JP 2005029140 A JP2005029140 A JP 2005029140A JP 2005029140 A JP2005029140 A JP 2005029140A JP 2005143140 A JP2005143140 A JP 2005143140A
Authority
JP
Japan
Prior art keywords
pixel
pixels
error
value
processing
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.)
Granted
Application number
JP2005029140A
Other languages
English (en)
Other versions
JP4096949B2 (ja
Inventor
Shigeaki Sumiya
繁明 角谷
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 JP2005029140A priority Critical patent/JP4096949B2/ja
Publication of JP2005143140A publication Critical patent/JP2005143140A/ja
Application granted granted Critical
Publication of JP4096949B2 publication Critical patent/JP4096949B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】 誤差拡散法による多値化処理の高速化が望まれていた。
【解決手段】 X方向とY方向に2次元的に配列された画像データを、2つのCPUを用いた並列処理で誤差拡散法により多値化する。第1のCPUは画像データのX方向に沿って画素列を順に誤差拡散法で多値化する。第1のCPUが処理する画素列に隣接する画素列上には、第1のCPUによる処理の進展に応じて拡散される誤差が完全に確定した誤差確定画素が現れる。第2のCPUはこの誤差確定画素について、第1のCPUによる処理と並行して誤差拡散法による多値化を行う。かかる並列処理により誤差拡散法による多値化を高速に行うことができる。第2のCPUによる処理の進展に応じてさらに隣接する画素列に誤差確定画素が現れるようになるため、3つ以上の処理を並行して実行するものとしてもよい。
【選択図】 図15

Description

本発明は、入力された画像データを誤差拡散法により多値化する画像処理装置に関する。
従来より、コンピュータの出力装置として、ヘッドから吐出される数色のインクによりドットを形成して画像を記録するタイプのカラープリンタが提案されており、コンピュータ等が処理した画像を多色多階調で印刷するのに広く用いられている。かかるプリンタは、各ドットごとに見ればドットを形成した状態(オン)と形成しない状態(オフ)の2値しか採ることができず、2階調しか表現し得ない。従って、これらのプリンタは、いわゆるハーフトーン処理により、所定の領域に分散するドットのオン・オフの状態を制御して、原画像データが有する多階調を表現している。近年、ドットの径やインク濃度を多種類形成可能とすることにより、各ドットごとにオン・オフの2値以上の状態を表現可能とした多値プリンタも提案されているが、かかるプリンタにおいても、このようなハーフトーン処理が必要であることは変わりない。
かかるハーフトーン処理の代表的な手法として、誤差拡散法がある。誤差拡散法とは、画像データの各画素の階調値と所定の閾値との大小比較により前記2値化を行った際に生じる階調値の誤差を、周辺の画素に一定の割合で拡散していく方法である。かかる手法によれば、局所的には原画像の階調値と印刷されるドットにより表現される濃度との間に濃度誤差が生じるものの、周辺の画素に濃度誤差を分散することにより、所定の領域で見ればこの誤差を解消することができる。このため高画質による印刷を実現することができる利点がある。
しかし、誤差拡散法は、周辺の画素に濃度誤差を拡散するため、各画素ごとの演算量が多かった。このため、処理に長時間を要していた。近年、プリンタの高解像度化が進み、従来に比べて多くの画素について多値化を行う必要が生じてきたため、誤差拡散法の処理時間の短縮化が望まれていた。
処理の高速化を図るために、並列処理が適用されることが多い。誤差拡散法では、一つの画素の処理によって生じる濃度誤差が拡散されるのを待ってから、次の画素を処理する必要がある。つまり、誤差拡散法では画素を一つ一つ順序よく処理していくことが要求される。このため、従来から誤差拡散法には並列処理は適用できないと考えられていた。
本発明は、かかる課題を解決するためになされたものであり、誤差拡散法による多値化を高速で行うための技術を提供することを目的とする。
上述の課題を解決するため、本発明の画像処理装置は、次の構成を採用した。
本発明の画像処理装置は、
各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理装置であって、
未だ多値化されていない未処理の画素のうち、他の画素から拡散される濃度誤差が完全に確定した複数の画素について、誤差拡散法による多値化を並行して行うことを特徴とする。
かかる画像処理装置によれば、複数の画素について多値化を並行して行うため、誤差拡散法による処理を高速に実行することができる。並列処理による高速化は通常行われる手段であるが、本発明は従来は適用が困難とされてきた誤差拡散法による多値化に並列処理を適用した点に大きな意義がある。この意義について説明する。
誤差拡散法では、一つの画素の処理によって生じる濃度誤差が拡散されるのを待ってから、次の画素を処理する必要がある。かかる処理を実行する性質上、従来、誤差拡散法には並列処理は適用困難とされてきた。例えば、X方向にNx個、Y方向にNy個の画素が2次元的に配列された画像データを考える。左上の画素を(1,1)と表し、右下の画素を(Nx、Ny)と表すものとする。かかる画像データの多値化に並列処理を適用する場合、最初に試みるのは画像データを上下半分、つまり画素のY方向の番号がNy/2以下の領域と、Ny/2よりも大きい領域に分けて適用する方法である。ところが、この場合、2つに分けた領域の境界では、多値化で生じた濃度誤差が解消されず両者の継ぎ目で画質が不連続的に変化する弊害を生じる。
他の手段として、例えば画像領域の左上の画素から右下に向けて順次進める第1の多値化と、右下の画素から左上に向けて順次進める第2の多値化とを並行して行う手段が考えられる。かかる手段においても、画像領域の中心付近で第1の多値化と第2の多値化との継ぎ目が生じ、やはり画質が不連続的に変化するという弊害を生じる。
さらに他の手段として、例えば画像を上下2つの領域に分割し、中央から上方に向けて進める第1の多値化と、中央から下方に向けて進める第2の多値化とを並行して行う手段も考えられる。かかる場合には、中央付近の画素の処理で生じた濃度誤差を周辺の画素に拡散できるため、一見画質が確保されるように推測される。しかしながら、誤差拡散法は、処理を開始した画素付近においては、周辺に濃度誤差を拡散することによっては多値化による誤差を十分に解消し得ないという特質がある。256階調ほどの階調値をドットのオン・オフの2値で表現するためには、相当な画素数を必要とするからである。このため、通常、誤差拡散法では画像データの左上などから処理を開始することで、処理開始直後の画素に生じる濃度誤差を目立ちにくくしているのである。上述した方法のように、画像データの中央付近から誤差拡散法による多値化を開始しては、多値化による濃度誤差が目立つようになり、画質を大きく損ねてしまう。
以上、いくつか例を挙げて示したように、誤差拡散法では、画質を低下させることなく並列化を図ることは困難とされていた。かかる背景から、誤差拡散法の並列処理化は技術的な検討対象から除外されていた傾向にあった。本発明者は、画像処理の技術について、このような状況に満足することなく、誤差拡散法への並列処理の適用を追求した結果、以下に説明する事項に気づき、本発明を完成した。
誤差拡散法による多値化を行っている際、画像データ中には、他の画素から拡散される濃度誤差が完全に確定した画素が複数存在することがある。完全に確定した画素とは、誤差拡散法による多値化を継続した場合、その画素に拡散される誤差はその画素自体の処理が開始されるまで一切変動しない画素をいう。以下、このような画素を誤差確定画素と呼ぶ。少なくとも現在処理を実行している着目画素の次に処理が行われる画素は誤差確定画素となる。この他の誤差確定画素は、多値化をする際に誤差が拡散される領域に応じて決まる。また、誤差確定画素は、誤差拡散法による処理の進み具合に応じて現れるものである。
例えば、
前記画像データは、第1の方向および第2の方向に2次元的に配列されたデータであり、
前記誤差拡散法は、前記第1の方向に並ぶ画素列に沿って各画素ごとに、少なくとも前記第2の方向に隣接する画素列に前記濃度誤差を拡散しつつ行われる場合には、
前記並行して多値化が行われる複数の画素は、互いに隣接する画素列上の画素となる。
かかる場合を例にとって、本発明における並列化の様子を具体的に示す。前記第2の方向に隣接する画素列に誤差を拡散する例を図9に示す。図9の各マスは画素を示している。図9中のX方向が本発明の第1の方向に相当し、PP,P1・・が画素列に相当する。図9では、画素PPについて誤差拡散法による多値化を施した場合の誤差配分を示している。例えば、画素PPで生じた濃度誤差のうち1/4は隣の画素P1に配分される。その他、図示する通りの配分で着目画素の周辺に濃度誤差は配分され、図9中のY方向に隣接する画素列にも誤差が配分される。
誤差拡散法による処理が順次行われていく際の誤差配分の様子を図10〜図12に示す。図中の塗りつぶしの画素が処理中の着目画素PPを示している。図中のハッチングを施した画素は着目画素PPから濃度誤差が拡散される画素を示している。図10に示す画素PPを処理しているときは、そこに隣接する画素列上の画素PQには誤差が拡散される。図10の画素PPについて処理が終了した後、X方向に隣接する画素の処理を実行する際には、図11に示す通り隣接する画素列上の画素PQには誤差は拡散されない。さらに、X方向に隣接する画素の処理を実行する際にも図12に示す通り、隣接する画素列上の画素PQには誤差は拡散されない。図10〜図12に示す具体例から明らかな通り、着目画素PPに隣接する画素列上の画素PQに拡散される濃度誤差は、図10に示す画素PPの処理が終了した時点で確定する。この時点で、他の画素から拡散される誤差が完全に確定した画素として、図10中で着目画素PPの右側に隣接する画素と画素PQの2つが存在することになる。
本発明の画像処理装置は、着目画素PPの右側に隣接する画素の他、この具体例の画素PQのように誤差確定画素についても誤差拡散法による多値化処理を行う。この処理は、図10〜図12で示した画素PPの多値化と並行して行うことができる。例えば、図11の時点で画素PQの多値化を実行すれば、その右側に隣接する画素PRに拡散される画素が確定する。従って、図12の時点では、画素PPの処理と同時に画素PRについても多値化を行うことができる。
本発明では、このように複数の誤差確定画素について誤差拡散法による多値化を実行することにより、従来、適用が困難とされてきた並列化を実現した。また、このような誤差確定画素について並列処理を実行すれば、並列化の具体例として先に列挙した方法のような継ぎ目が生じることがない。従って、本発明の画像処理装置によれば、従来の誤差拡散法による画質を維持したまま高速化を実現することができる。
なお、上述の具体例では画素PPと画素PQの2つの画素を並列処理する場合について説明した。誤差拡散法による多値化において、誤差確定画素は上述した2つに限らず、さらに多く存在する可能性がある。かかる画素が3つ以上存在する場合には、3つ以上の画素について並列処理を行うものとすることができるのはいうまでもない。また、並列処理の対象となり得る画素の位置関係は、図10〜図12で示したものに限定されず、濃度誤差が拡散される領域に応じて特定することができる。当然、Y方向に3行以上にわたって誤差が拡散される場合においても、本発明の適用が可能であることはいうまでもない。
本発明の画像処理装置について、少なくとも2つの画素について並列処理を実行する装置は次の通り構成することができる。
各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理装置であって、
第1の方向および第2の方向に2次元的に配列された画像データを入力する入力手段と、
未だ多値化されていない未処理の画素を、前記第1の方向に並ぶ画素列に沿って順に、少なくとも前記第2の方向に隣接する画素列に濃度誤差を拡散する誤差拡散法により多値化を行う第1の多値化手段と、
前記第1の多値化手段により多値化が行われる画素列に対し、前記第2の方向に隣接する画素列上の画素のうち、他の画素から拡散される濃度誤差が完全に確定した画素について、第1の多値化手段による多値化と並行して誤差拡散法による多値化を行う第2の多値化手段とを備える画像処理装置である。
また、本発明はこれと同等な画像処理方法として構成することもできる。
各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理方法であって、
(a)第1の方向および第2の方向に2次元的に配列された画像データを入力する工程と、
(b)未だ多値化されていない未処理の画素を、前記第1の方向に並んだ画素列に沿って順に誤差拡散法により多値化を行う工程と、
(c)前記工程(b)で多値化が行われる画素列に対し前記第2の方向に隣接する画素列上に他の画素から拡散される濃度誤差が完全に確定した画素が現れた後に、前記工程(b)と並行して、該隣接する画素列上の画素を誤差拡散法により多値化する工程とを備える画像処理方法である。
こうすれば、先に図10〜図12を用いて説明したのと同様の作用に基づき、2つの画素について並列して多値化処理を実行することができる。上記発明は2つの画素について並列処理を実行するものに限定するものではなく、3つ以上の画素についての並列処理を実行するものとしても構わない。
なお、第1の多値化手段は、画素列の一端から他端に向けて第1の方向に順に多値化処理を実行し、他端まで処理が完了した後は、別の画素列の処理を実行する。別の画素列の処理を開始した際、第2の多値化手段による多値化がまだ終了していなければ、第1の多値化手段は、第2の多値化手段により多値化が行われる画素列に対して、前記第2の方向に隣接する画素列上の画素に存在する誤差確定画素について多値化を行うことになる。つまり、上記発明における第1の多値化手段の立場と第2の多値化手段の立場とが逆転することになる。本発明による画像処理装置は、このように一画素列についての処理が終了する度に、第1の多値化手段と第2の多値化手段とにより処理される画素を特定する方法を交互に変更する手段をさらに備えた装置として捉えることもできる。当然、本発明の画像処理方法も同様に工程(b)と工程(c)とで処理される画素を特定する方法を交互に変更することを含めた方法として捉えることもできる。
少なくとも2つの画素についての並列処理を実現する上記画像処理装置において、
前記第2の多値化手段は、多値化を行う画素について、他の画素から拡散される濃度誤差が完全に確定したか否かを判定する判定手段を備えるものとすることができる。かかる判定は、例えば第1の多値化手段により処理が実行されている画素との間隔に基づいて判断するものや、第1の多値化処理に伴って各画素に拡散される濃度誤差を所定の期間だけ観察して判断するものとすることができる。こうすれば、第2の多値化手段が誤差確定画素ではない画素を謝って処理する可能性を低減することができ、高画質な多値化が行われる確実性が増す。
また、上記画像処理装置において、例えば、第2の多値化手段は、第1の多値化手段による多値化処理から所定のタイミングだけずらして多値化を行うことにより、結果的に他の画素から拡散された誤差が完全に確定した画素を処理するようにしてもよい。
例えば、前記第1の多値化手段により多値化が行われている着目画素と前記第2の多値化手段により多値化が行われている着目画素とは、前記第1の方向に前記画素列の幅の約半分の間隔を有している位置関係にあるものとできる。
通常、誤差拡散法では画素列の幅の半分にわたって誤差を拡散したりはしない。このような広範囲に亘って誤差を拡散する場合には、画像の両端を処理している際に誤差を十分に拡散できなくなり、多値化後の画質を損ねることになるからである。従って、上記画像処理装置のように、2つの多値化手段による多値化のタイミングをずらしておけば、一方の多値化手段により誤差が拡散される領域に他方の多値化手段の着目画素が入ることは生じ難い。従って、複雑な判断処理を施すことなく、第1の多値化手段と第2の多値化手段による並列処理を実現することができる。
第1の多値化手段による着目画素と第2の多値化手段の着目画素との間隔を誤差が拡散される幅よりも広げておけば上述した効果を得ることはできる。但し、両者の間隔を画素列の幅の約半分としておけば、一方の多値化手段により濃度誤差が拡散される領域と、他方の多値化手段の処理対象となる画素とが重複する可能性を極小にすることができる。従って、並列処理によって画質を損なう可能性を極小にすることができる。さらに、第1の多値化手段により一つの画素列の処理が終了した時点で、第2の多値化手段は隣接する画素列の処理を概ね半分済ませているため、第1の多値化手段は待ち時間なく次の画素列の処理を開始することができ非常に効率的な処理を実現することができる。
本発明の画像処理装置において、第1の多値化手段と第2の多値化手段とは異なる演算回路によって構成されることが望ましい。本発明の画像処理装置は、第1の多値化手段と第2の多値化手段とを同じ演算回路で実現して構成することも可能であるが、両者を異なる演算回路で構成すれば、並列処理による高速化の効果を最大限に得ることができる。ここで演算回路とは、誤差拡散法による多値化を行うための専用回路であってもよいし、CPUなどの汎用回路であってもよい。当然、両者の組み合わせであってもよい。
通常、誤差拡散法による多値化処理を行う画像処理装置では、拡散された誤差を画素との対応関係を付けて記憶するためのメモリを有している。本発明の画像処理装置では、第1の多値化手段で使用するメモリと、第2の多値化手段で使用するメモリとをそれぞれ用意することもできる。
また、両手段で使用するメモリを次の形で共有するものとしてもよい。
つまり、2つの画素についての並列処理を行う画像処理装置において、
前記画像データは前記第1の方向にNx個(Nxは2以上の整数)の画素を有するデータであり、
前記第1の多値化手段は、Y番目からY+n−1番目(Y,nは自然数)までのn本の画素列上の未処理の画素に濃度誤差を拡散する手段であり、
前記第2の多値化手段は、
Y+1番目からY+n番目までのn本の画素列上の未処理の画素に濃度誤差を拡散し、かつ、前記第1の多値化手段によりY番目の画素列に濃度誤差が拡散される領域と前記Y+n番目の画素列に濃度誤差が拡散される領域との前記第1の方向の位置が重複しない画素を処理する手段であり、
前記第1の方向にNx個、前記第2の方向にn個ずつ2次元的に配列された画素に対応したメモリと、
前記Y+1番目からY+n−1番目までのn−1本の画素列に拡散された濃度誤差を、前記第1の方向および前記第2の方向について画素とメモリの位置関係を一義的に保ちつつ、n−1本の画素に対応したメモリに記憶し、
かつ、
残余の1本の画素列に対応したメモリには、前記Y番目の画素列に拡散された濃度誤差と前記Y+n番目の画素列に拡散された濃度誤差とを、前記第1の方向について画素とメモリの位置関係を一義的に保ちつつ記憶する記憶手段とを備える画像処理装置である。
第1の多値化手段により誤差が拡散される領域と、第2の多値化手段により誤差が拡散される領域とは、Y+1番目からY+n−1番目の画素列までの領域で重複している。従って、この領域では両手段により拡散される誤差を記憶するメモリを共有することができ、そのためにはNx×(n−1)画素分のメモリがあればよい。このメモリに加えて、第1の多値化手段によりY番目の画素列に拡散される誤差を記憶するためのメモリと、第2の多値化手段によりY+n番目の画素列に拡散される誤差を記憶するためのメモリとがあれば、両手段により拡散される誤差を混同することなく記憶することが可能となる。上記画像処理装置では、Y番目の画素列に誤差が拡散される領域と、Y+n番目の画素列に誤差が拡散される領域との前記第1の方向の位置関係が重複しないように第2の多値化手段の着目画素を制御した上で、これらの画素列に拡散された濃度誤差を一つの画素列に対応したメモリに記憶する。このように双方の多値化手段により拡散された誤差を記憶するためのメモリを、一部共有することにより、メモリ容量を節約することができる。また、メモリの共有によって、第1の多値化手段と第2の多値化手段との間で濃度誤差を伝達し合う必要がなくなり、処理の高速化を図ることができる。
次の態様を採ることによって、拡散された誤差を記憶するメモリを更に節約することもできる。
つまり、2つの画素についての並列処理を行う画像処理装置において、
前記画像データは前記第1の方向にNx個(Nxは2以上の整数)の画素を有するデータであり、
前記第1の多値化手段は、Y番目からY+n−1番目(Y,nは自然数)までのn本の画素列上の未処理の画素に対し、処理対象である第1の着目画素から第1の方向に最大m画素(mは自然数)に亘って濃度誤差を拡散する手段であり、
前記第2の多値化手段は、Y+1番目からY+n番目までのn本の画素列上の未処理の画素に対し、処理対象である第2の着目画素から第1の方向に最大m画素に亘って濃度誤差を拡散する手段であり、
前記第1の方向にNx個、前記第2の方向にn−1個ずつ2次元的に配列された画素に対応した第1のメモリと、
2m個の画素に対応した第2のメモリとを備え、
前記Y+2番目からY+n番目までのn−1本の画素列に拡散された濃度誤差を、前記第1の方向および前記第2の方向について画素とメモリの位置関係を一義的に保ちつつ、n−1本の画素に対応した第1のメモリに記憶し、
かつ、
前記Y番目の画素列において前記第1の着目画素から前記第1の方向にm個の画素に拡散された誤差、および前記Y+1番目の画素列において前記第2の着目画素から前記第1の方向にm個の画素に拡散された誤差を、前記第2のメモリに記憶する記憶手段とを備える画像処理装置である。
こうすれば、メモリ量を「Nx×n+2m」に節約することができる。上記第2のメモリに記憶される誤差には、第1の多値化手段および第2の多値化手段によって新たに拡散される誤差のみならず、従前の処理により既に拡散済みの誤差との総和を記憶する必要がある。なお、上述した態様の他、各メモリへの誤差の割り当ては、異なる画素に拡散された誤差が同じメモリに混同して記憶されることが回避することができる種々の対応関係を採用することができる。
以上で説明した本発明の印刷装置は、誤差拡散法による多値化処理をコンピュータにより実現させることによっても構成することができる。従って、本発明は、かかるプログラムを記録した記録媒体としての態様を採ることもできる。
本発明の記録媒体は、
各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行うためのプログラムをコンピュータ読みとり可能に記録した記録媒体であって、
第1の方向および第2の方向に2次元的に配列された画像データを入力する機能と、
未だ多値化されていない未処理の画素を、前記第1の方向に並んだ画素列に沿って順に誤差拡散法により多値化を行う第1の多値化機能と、
前記第1の多値化機能により多値化が行われる画素列に対し前記第2の方向に隣接する画素列上の画素のうち、他の画素から拡散される濃度誤差が完全に確定した画素を特定する機能と、
該特定された画素について、前記第1の多値化機能と並行して誤差拡散法による多値化を行う第2の多値化機能とを実現するプログラムを記録した記録媒体である。
なお、記録媒体としては、フレキシブルディスクやCD−ROM、光磁気ディスク、ICカード、ROMカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置(RAMやROMなどのメモリ)および外部記憶装置等の、コンピュータが読取り可能な種々の媒体を利用できる。また、コンピュータに上記機能を実現させるコンピュータプログラムを通信経路を介して供給するプログラム供給装置としての態様も含む。
以下、本発明の実施の形態について、実施例に基づき説明する。
(1)装置の構成
図1は、本発明の一実施例としての画像処理装置を適用した印刷装置の構成を示すブロック図である。図示するように、コンピュータ90にスキャナ12とカラープリンタ22とが接続されている。コンピュータ90が本実施例の画像処理装置として機能する。このコンピュータ90は、プログラムに従って画像処理に関わる各種演算処理を実行する演算装置としてCPU81A、81Bの2つを備える。また、これらのCPU81A,81Bを中心に、バス80により相互に接続された次の各部を備える。ROM82は、CPU81A,81Bで各種演算処理を実行するのに必要なプログラムやデータを予め格納している。
RAM83は、同じくCPU81A,81Bで各種演算処理を実行するのに必要な各種プログラムやデータが一時的に読み書きされるメモリである。本実施例のRAMは2つのCPU81A,81Bからアクセスされる。従って、本実施例では、2つのCPUが互いにタイミングを考慮することなく自由に読み書きすることができるタイプのRAMを用いている。もちろん、若干の処理効率の低下を覚悟すれば、通常のRAMを用い、RAMへの読み書きが2つのCPUから同時に行われることがないよう、アクセスのタイミングを制御するものとしても構わない。
入力インターフェイス84は、スキャナ12やキーボード14からの信号の入力を司り、出力インタフェース85は、プリンタ22へのデータの出力を司る。CRTC86は、カラー表示可能なCRT21への信号出力を制御し、ディスクコントローラ(DDC)87は、ハードディスク16やCD−ROMドライブ15あるいは図示しないフレキシブルディスクドライブとの間のデータの授受を制御する。ハードディスク16には、RAM83にロードされて実行される各種プログラムやデバイスドライバの形式で提供される各種プログラムなどが記憶されている。
このほか、バス80には、シリアル入出力インタフェース(SIO)88が接続されている。このSIO88は、モデム18に接続されており、モデム18を介して、公衆電話回線PNTに接続されている。コンピュータ90は、このSIO88およびモデム18を介して、外部のネットワークに接続されており、特定のサーバーSVに接続することにより、画像処理に必要なプログラムをハードディスク16にダウンロードすることも可能である。また、必要なプログラムをCD−ROMやフレキシブルディスクによりロードし、コンピュータ90に実行させることも可能である。
図2は本画像処理装置のソフトウェアの構成を示すブロック図である。コンピュータ90内の画像処理装置は、いわゆるプリンタドライバ100がコンピュータ90にロードされ、図示する各機能を実現することにより構成される。まず、入力部102は画像処理装置が処理すべき画像データを入力する。この画像データは、図1に示したスキャナ12から取り込まれたデータである場合もあるし、コンピュータ90が種々のアプリケーションプログラムを実行することによって生成されたデータである場合もある。
入力された画像データはレンダリング部104のに受け渡される。レンダリング部は、画像データをX方向、Y方向に2次元的に配列された画素に対応したデータに変換する。この結果、各画素ごとにレッド(R),グリーン(G),ブルー(B)の3色の色成分の階調値を有する画像データが生成される。レンダリング部で生成された画像データの様子を図3に示す。図中のマスがそれぞれの画素を示している。本実施例では、X方向にNx個、Y方向にNy個の画素を2次元的に配列している。本明細書では、図3に示す通り、画像データの左上から順にX方向、Y方向に番号を付し、各画素を(X方向の番号、Y方向の番号)の座標形式で特定するものとする。従って、画像データの左上の画素は、(1,1)と表され、右下の画素は(Nx,Ny)と表される。
こうして生成された画像データは、色補正部106に受け渡される。色補正部106では、RGBからなる画像データを、プリンタ22が印刷可能な色彩、ここではシアン(C)、マゼンダ(M)、イエロー(Y)、ブラック(K)の各色についての多値化された信号)に変換している。色補正部106は、色補正テーブルLUTを参照して、画像データのRGBの階調値をCMYKの各色の階調値に置換するのである。本実施例では、各色成分につき、256階調等の幅で階調値を有するものとした。
CMYKの階調値を有する画像データは、ハーフトーン処理部110により2値化される。つまり、プリンタ22で形成されるドットのオン・オフに対応するデータを各画素ごとに割り当てる。本実施例のプリンタドライバ100では、ハーフトーン処理を図2に示す第1誤差拡散部112と第2誤差拡散部114の2つのブロックにより並列して処理可能に構成している。両者は画像データを分担して誤差拡散法による2値化を実行する。本実施例では、第1誤差拡散部112が奇数番目の画素列上の画素、即ち(n,2m−1)(n,mは自然数)で表される画素を処理し、第2誤差拡散部114が偶数番目の画素列上の画素、即ち(n,2m)(n,mは自然数)で表される画素を処理するものとしている。両者の分担の様子を図4に示した。図4中に実線の矢印が第1誤差拡散部112による処理の順序を示しており、破線の矢印が第2誤差拡散部114による処理の順序を示している。各画素列は、図4に示す通り、X方向の番号が小さい順に処理される。なお、第1誤差拡散部112と第2誤差拡散部114による処理タイミングについては後述する。
誤差拡散法では、後で詳述する通り各画素の2値化に伴って生じる濃度誤差を周辺の画素に拡散することによって、濃度誤差を極小にした画像処理を実現している。この濃度誤差を記憶するメモリとして、第1誤差拡散部112と第2誤差拡散部114とはそれぞれ共通の誤差バッファ116を使用している。もちろん、第1誤差拡散部112が使用する第1の誤差バッファと第2誤差拡散部114が使用する誤差バッファとを別個に設けるものとしても構わない。
以上の各機能ブロックにより処理された画像データは、出力部120を介してプリンタ22に出力される。プリンタ22はこのデータに基づいて書く画素ごとにドットを形成することで入力された画像データに対応した画像を印刷することができる。本実施例では、画像処理結果の出力先の一例としてプリンタ22を使用しているが、出力先はこれに限られるものではない。いわゆるプリンタの他、スクリーン印刷用の製版装置に出力することもできるし、ディスプレイに出力するものとしても構わない。
本実施例で使用しているプリンタ22は、いわゆるインクジェット型のプリンタである。つまり、印刷用紙上にインクを吐出してドットを形成することによって、画像を記録するプリンタである。もちろん、その他のタイプのプリンタ、例えばいわゆるドットインパクト型のプリンタや熱転写型のプリンタなどを用いるものとしても構わない。
(2)画像処理:
次に本実施例の画像処理装置における画像処理内容について説明する。図5に本実施例の画像処理装置による画像処理ルーチンのフローチャートを示す。この処理は、コンピュータ90内のCPU81A,81Bにより実行される。本実施例ではCPU81Aが主として処理を実行し、CPU81BはCPU81Aとともに後述するハーフトーン処理を実行する。
図5に示す通り、画像処理ルーチンが開始されると、CPU81Aは画像データの入力を行う(ステップS100)。この画像データは、先に図2に示した入力部102が入力する画像データに相当する。つまり、スキャナ12から読み込まれたデータや種々のアプリケーションなどによって生成された原画像データである。次に、CPU81Aはこの画像データに対してレンダリング処理を実行する(ステップS200)。この処理は、図2で示したレンダリング部104が実行する処理に相当する。つまり、ステップS100で読み込まれた画像データを2次元的に配列された画素に対応したRGBの階調データに置換するのである。レンダリング処理によって得られる画像データは、図3に示した通り、X方向にNx個、Y方向にNy個のサイズで各画素ごとにRGBの階調値を有するデータである。
次に、CPU81Aは、色補正処理を行う(ステップS300)。色補正処理とはR,G,Bの階調値からなる画像データをプリンタ22で使用するC,M,Y,Kの各色の階調値のデータに変換する処理である。この処理は、R,G,Bのそれぞれの組み合わせからなる色をプリンタ22で表現するためのC,M,Y,Kの組み合わせを記憶した色補正テーブルLUT(図2参照)を用いて行われる。色補正テーブルLUTを用いて色補正する処理自体については、公知の種々の技術が適用可能であり、例えば補間演算による処理(例えば、特開平4−144481記載の技術)が適用できる。色補正処理の内容は、出力機器によって相違する。出力機器がRGBの色系を使用する場合には色補正処理を省略することができる。
こうして色補正された画像データは誤差拡散法によるハーフトーン処理が施される(ステップS400)。ここでのハーフトーン処理とは、原画像データの階調値(本実施例では256階調)を、プリンタ22のドットのオン・オフに対応した2値のデータに変換することをいう。本実施例では、CPU81AとCPU81Bの2つの演算回路によりこの処理を並行して行っている。CPU81Aが図2における第1誤差拡散部112に相当し、CPU81Bが図2における第2誤差拡散部114に相当する。
図6は本実施例におけるハーフトーン処理の流れを示すフローチャートである。以下では、カラー画像データのうち、一色についての処理内容を示す。実際には、各色ごとに同様の処理が繰り返し実行される。図6には、CPU81Aが実行する第1ハーフトーン処理と、CPU81Bが実行する第2ハーフトーン処理とを併記した。両者の処理は、互いに関連を持ったタイミングで並行して進められる。
第1ハーフトーン処理が開始されるとCPU81Aは、2値化を行うべき着目画素を特定する変数(kx1、ky1)に値(1,1)を代入して、この変数を初期化する(ステップS410)。図4に示す通り、CPU81Aは画像データの左上端から順に2値化を行う。従って、最初に処理すべき画素(1,1)を特定するデータを上記変数(kx1、ky1)に代入するのである。
一方、この処理と並列して第2ハーフトーン処理が開始されるとCPU81Bは、2値化を行うべき着目画素を特定する変数(kx2、ky2)に値(1,2)を代入する(ステップS440)。図4に示す通り、CPU81BはCPU81Aが処理する画素列の直下に隣接する画素列の左端から順に2値化を行う。従って、最初に処理すべき画素(1,2)を特定するデータを上記変数(kx2、ky2)に代入するのである。
次に、CPU81AおよびCPU81Bはそれぞれの着目画素の位置関係に基づいて、ハーフトーン処理を進めてよいか否かを判定する。第1ハーフトーン処理において、CPU81Aは次式(1)が満足されているか否かによってこれを判断する(ステップS412)。次式(1)が満足されている場合には処理の実行を待つ(ステップS414)。
kx2−Nx/2 < kx1 < kx2 ・・・(1)
かかる判定の意味について図7を用いて説明する。なお、以下の説明では、CPU81AとCPU81Bとの処理タイミングを表現するために、便宜上「処理が進んでいる」「処理が遅れている」という表現を用いる。「処理が進んでいる」とは、一方のCPUが処理している着目画素が、他方のCPUが処理している着目画素よりも右側に位置する、つまりX方向の番号が大きいことを意味するものとする。両着目画素のY方向の位置関係は問わない。「処理が遅れている」とは、この逆に、一方のCPUが処理している着目画素が、他方のCPUが処理している着目画素よりも左側に位置することを意味するものとする。
本実施例では、例えば、CPU81Aが図7中の矢印A1で示す画素を処理している時、その下側に隣接する画素列上の画素を処理するCPU81Bは、矢印B1で示す通り、X方向の画素の幅の約半分に相当する分だけ遅れたタイミングで処理を実行するものとしている。CPU81Aが図7中の矢印A1で示す画素列の処理を終了した時点で、CPU81Bは図7中の矢印B2当たりの画素列の処理を行うことになる。このとき、CPU81Aは逆にCPU81Bから、X方向の画素の幅の約半分に相当する分だけ遅れたタイミングで処理を実行する(図7の矢印A2)。本実施例では、このように下側に位置する画素列を処理するCPUが他方のCPUよりも、X方向の画素の幅の約半分に相当する分だけ遅れたタイミングで処理を実行するものと設定しているのである。かかるタイミングで処理を実行する理由については後述する。CPU81AはステップS412,414において上式(1)を満足するか否かを判定することにより、次の通り図7に示した処理のタイミングが維持されるように制御している。
CPU81Aの着目画素のX方向の番号kx1がCPU81Bの着目画素のX方向の番号kx2よりも小さい場合、CPU81AはCPU81Bよりも処理が遅れた状態にあることを意味する。CPU81Aが図7中の矢印A2の状態にあり、CPU81Bが矢印B2の状態にある場合に相当する。この状態において、kx1が「kx2−Nx/2」よりも大きい場合には、kx1とkx2との間隔がX方向の画素の幅Nxの半分以下であることを意味する。つまり、上式(1)を満足する場合、CPU81Aは処理のタイミングが早くなり過ぎ、処理が進んでいるCPU81Bに追いつくおそれがあることを意味している。従って、CPU81Aは処理タイミングを調整するために、ステップS414で処理の実行を待つのである。
一方、CPU81Aの方が処理が進んでいる場合、つまりCPU81Aが図7中の矢印A1の状態にあり、CPU81Bが矢印B1の状態にある場合、処理タイミングの調整は、第2ハーフトーン処理において行われる。第2ハーフトーン処理においてCPU81Bは、kx2が次式(2)を満足するか否かを判定し(ステップS442)、満足する場合にはCPU81Aに追いつくおそれがあると判断して処理を待つ(ステップS444)。次式(2)の内容は、上式(1)においてCPU81A,81Bの関係を入れ替えた場合に等しい。
kx1−Nx/2 < kx2 < kx1 ・・・(2)
第1ハーフトーン処理におけるステップS412、および第2ハーフトーン処理におけるステップS442でCPU81AとCPU81Bとは、図7に示した所定のタイミングを維持しながら処理を進めるように互いの着目画素の情報を伝達し合っている。CPU81A,81B相互のやりとりを、図6では破線の矢印で示した。
以上の処理により2値化を実行すべきと判断されるとCPU81Aは画像データの読み込みを行う(ステップS416)。この画像データは、既に説明した通り、各画素ごとにCMYKの色成分についてそれぞれ256階調を有するデータである。この画像データに対して、CPU81Aは誤差拡散処理を実行する(ステップS418)。誤差拡散処理の内容を図8に示す。
誤差拡散処理では、CPU81Aは、画像データに基づいて拡散誤差補正データCDXの生成を行う(ステップS460)。後述する通り、誤差拡散処理は処理済みの画素について生じた階調表現の誤差をその画素の周りの画素に所定の重みを付けて配分する。各画素の処理は、その画素に配分される誤差も考慮して行われる。従って、ステップS460では着目画素に該当する誤差分を読み出し、着目画素の画像データに反映させるのである。着目している画素PPに対して、周辺の画素にどの程度の重み付けで、この誤差を配分するかを、図9に例示した。着目している画素PPに対して、X方向に数画素、Y方向に隣接する画素列上の数画素に対して、濃度誤差が所定の重み(1/4,1/8、1/16)を付けて配分される。
CPU81Aは、こうして生成された拡散誤差補正データCDXと閾値THとの大小を比較し(ステップS462)、データCDXが閾値THよりも小さい場合には、2値化結果を表す結果値REに値0を代入する(ステップS464)。本実施例においては、結果値REに値0を代入することは、プリンタ22で着目画素にドットを形成しないことを意味する。閾値THはこのように2値化した結果値REが値0となるか否かを判定する基準となる値であり、いずれの値に設定することもできる。本実施例では原画像データの256階調を2値化するため、その中間の階調値127に設定している。ステップS462において、補正データCDXが閾値THよりも大きい場合には、結果値REに値1を代入する(ステップS466)。本実施例においては、結果値REに値1を代入することは、プリンタ22で着目画素にドットを形成することを意味する。
次に、CPU81Aは2値化により生じた誤差を計算し、その誤差を周辺の画素に拡散する処理を実行する(ステップS468)。誤差とは、原画像データの階調値に相当する濃度と、2値化後結果により表現される濃度との差をいう。例えば、原画像データにおける階調値が0である場合、結果値REが0であれば、表現される濃度に誤差は生じない。このとき誤差は値0となる。原画像データにおける階調値0に対して、結果値REが1であれば表現される濃度に誤差が生じる。一つのドットによって表現される濃度が原画像の階調値255に相当すると評価されれば、誤差は「−255」となる。負号を付けたのは、2値化後の濃度の評価値よりも原画像データの階調値の方が小さいことを意味している。
こうして演算された誤差は図9に示した割合で周辺の画素に拡散される(ステップS468)。例えば、着目している画素PPにおいて階調値4に相当する誤差が算出された場合には、隣の画素P1には誤差の1/4である階調値1に相当する誤差が拡散されることになる。その他の画素についても同様に図9で示した割合で誤差が拡散される。こうして拡散された誤差が先に説明したステップS460で画像データに反映され、拡散誤差補正データCDXが生成される。
以上の処理により、着目画素について2値化が行われると、CPU81Aはkx1を値1だけ増す(ステップS420)。この処理により着目画素がX方向に1つずれる。さらに、kx1がNxよりも大きいか否かを判定し(ステップS422)、大きい場合には、kx1の値を1にすると共にky1の値を2値化だけ増やす(ステップS424)。kx1の値がNxよりも大きくなった場合は、一つの画素列について右端まで処理が終了したことを意味するため、次の画素列の左端の画素に対応するデータをkx1,ky1に代入するのである。ky1を値2だけ増やすのは、図7に示した通り、本実施例では、CPU81Aは奇数番目の画素列の2値化を行うものとしているからである。ステップS422において、kx1の値がNx以下である場合は上記処理はスキップされる。
次にCPU81Aは、ky1の値がNyよりも大きいか否かを判定する(ステップS426)。ky1の値がNyよりも大きい場合、CPU81Aは全ての画像データを処理したことを意味するため、第1ハーフトーン処理を終了する。ky1の値がNy1以下である場合には、ステップS412以降の処理を繰り返すことによって次の着目画素の2値化を実行する。
第2ハーフトーン処理におけるステップS442,S444の処理によって、2値化を実行すべきと判断されるとCPU81Bは画像データの2値化を実行する。2値化の処理内容は第1ハーフトーン処理と同様である。つまり、画像データを読み込み(ステップS446)、誤差拡散処理を実行する(ステップS448)。誤差拡散処理の内容も第1ハーフトーン処理(図8)と同様である。この後、kx2,ky2をそれぞれ増して、着目画素を順次ずらしつつ、全画像データについて処理を実行する(ステップS452〜S456)。なお、この処理は、第1ハーフトーン処理とは独立して並行処理される。処理タイミングによっては、CPU81Aが第1ハーフトーン処理のデータ読み込みを実行している間に、CPU82Bは誤差拡散法による2値化を行っているというように、両者の処理内容が異なっている可能性もある。
以上で説明した通り、CPU81A,CPU81Bによりハーフトーン処理が終了すると(図5のステップS400)、CPU81Aは2値化された画像データを出力する(ステップS500)。本実施例では、プリンタ22が出力先となっていることは既に説明した通りである。なお、本実施例では、全ての画像データについてハーフトーン処理が終了した後、データの出力を行うものとしているが、例えば、一つの画素列について処理が終了するごとにデータを出力するものとしても構わない。
ここで、本実施例においてCPU81AとCPU81Bの処理タイミングをX方向の画素の幅の半分に相当する分だけずらしている理由について説明する。図8のフローチャートから明らかな通り、誤差拡散法では、拡散誤差補正データCDXに基づいて各画素の2値化を行う。拡散誤差補正データCDXは、各画素の画像データに配分された拡散誤差データを反映させて生成される。従って、各画素に配分される拡散誤差データが確定しない間はその画素の2値化処理を行うことができない。本実施例では、CPU81AとCPU81Bとの処理タイミングをずらすことによって、それぞれ拡散誤差データが確定した画素の並列処理を実現しているのである。
誤差拡散法による処理が順次行われていく際の誤差配分の様子を図10〜図12に示す。図中の塗りつぶしの画素がCPU81Aによって処理されている着目画素PPを示している。図中のハッチングを施した画素は着目画素PPから濃度誤差が拡散される画素を示している。着目画素から誤差が配分される領域は図9に示した通りである。図10に示す画素PPを処理しているときは、その画素列の下に隣接する画素列上の画素PQには誤差が拡散される。図10の画素PPについて処理が終了した後、X方向に隣接する画素の処理を実行する際には、図11に示す通り隣接する画素列上の画素PQには誤差は拡散されない。さらに、X方向に隣接する画素の処理を実行する際にも図12に示す通り、隣接する画素列上の画素PQには誤差は拡散されない。図10〜図12から明らかな通り、誤差拡散法により処理が行われている画素列に隣接する画素列上の画素PQに拡散される画素は、図10に示す画素PPの処理が終了した時点で確定する。
従って、理論的にはCPU81Aによって図10に示す画素の処理が終了した以降で、CPU81Bによる第2ハーフトーン処理を開始することができる。かかるタイミングでCPU81Bによる処理が開始された場合、両者の処理速度によっては、図10の時点で未だ拡散誤差の確定していない画素PRの処理をCPU81Bが開始してしまう可能性もある。拡散誤差が確定していない状態で2値化の処理を行った場合には、他の画素で生じた濃度誤差を十分に補償し得ず、画質の低下を招く可能性もある。
本実施例では、こうした画質の低下を招く危険性を回避するため、両者の処理タイミングをNx/2画素に相当する分だけずらしているのである。こうすれば、CPU81AとCPU81Bのうち、いずれのCPUの処理が進んでいる場合でも、両者の処理タイミングは一定量ずれているため、上述した原因による画質の低下を招くことなく安定した処理を実現することができる。
本実施例において両者の処理タイミングをNx/2画素に相当する分だけずらしている理由として、誤差バッファの使用方法に基づく理由もある。誤差バッファとは誤差拡散処理(図8)のステップS468において拡散された誤差を一時的に記憶しておくメモリをいう。
本実施例では、先に図2で説明した通り、CPU81AとCPU81Bによる処理の双方で誤差バッファを共有している。本実施例における誤差バッファへの誤差の記憶について図13および図14を用いて説明する。図13は、CPU81A、CPU81Bにより画素PA,PBの2値化が行われている際に誤差が拡散される領域を示している。CPU81Aが画素列ky上の着目画素PAについて2値化処理を実行し、図9に示す配分でそれぞれの画素に誤差を拡散した場合、誤差は図13中に実線で示す領域に拡散される。図13中のA1はCPU81Aの着目画素PAと同じ画素列上に拡散された誤差を意味し、A2は着目画素PAの下側の画素列に拡散された誤差を示している。
図14は、本実施例で用意されている誤差バッファ内のメモリ領域を画像データに対応した形で示している。破線で示した各マスが画素に対応したメモリ領域を表している。本実施例では、2つの画素列分に相当する誤差バッファ、つまりNx×2画素分のメモリを用意している。図14に示す通り、画素PAから拡散された誤差は、図13中の画素列ky、ky+1と同じ対応関係で誤差バッファに記憶される。
CPU81Bが画素列ky+1上の着目画素PBについて2値化処理を実行した場合、拡散された誤差は、図13中に実線で示す領域に拡散される。図13中のB2はCPU81Bの着目画素PBと同じ画素列ky+1上に拡散された誤差を意味し、B3は着目画素PBの下側の画素列ky+2上に拡散された誤差を示している。CPU81Bにより拡散された誤差は、図14に示す通り誤差バッファに記憶される。画素列ky+1に拡散された誤差は、CPU81Aからの拡散誤差A2を記憶する部分と同じく誤差バッファ内の2番目の画素列に対応するメモリに記憶される。この画素列については、CPU81Aから誤差が拡散された画素とCPU81Bから誤差が拡散された画素とが重複する場合には、両者の総和をメモリに記憶する。
画素列ky+2に拡散された誤差は、誤差バッファ内の1番目の画素列に対応するメモリに記憶される。図13において着目画素PAよりも左側の画素は既に2値化が終了した画素であるため、この画素に対応する誤差バッファにCPU81Aから拡散された誤差を記憶する必要はない。従って、本実施例ではこの部分に対応するメモリを、CPU81Bからky+2に拡散された誤差の記憶に利用している。
本実施例では、CPU81AおよびCPU81Bから誤差が拡散されるky〜ky+2の画素列のうち、最上方に位置する画素列kyと最下方に位置する画素列ky+2に拡散される誤差を同じ画素列に対応するメモリに記憶することによって、誤差バッファの容量を節約している。また、本実施例では、CPU81AとCPU81Bの処理タイミングをNx/2画素に相当する分だけずらすことによって、画素列kyに拡散された誤差と、画素列ky+2に拡散された誤差とが、誤差バッファ内で混同して記憶される可能性を低減している。
以上で説明した本実施例の画像処理装置によれば、CPU81AとCPU81Bとで並列して2値化を行うことにより、誤差拡散法による高画質なハーフトーン処理を高速で行うことができる。また、誤差が完全に確定した画素についての2値化を並列して行うため、画質を損ねることなく高速化を図ることができる。この際、図14で示した通り、誤差バッファの一部を両CPUで共有することにより、誤差バッファの量を節約することができるとともに、両CPU間で誤差量を伝達し合う必要がなくなるため、さらなる処理の高速化を図ることができる。
なお、本実施例においてCPU81A、CPU81Bの処理タイミングをNx/2画素分だけずらしているが、タイミングのずらし量は誤差拡散法による誤差の拡散領域に応じて種々設定可能である。本実施例の図6のフローチャートで示したようにCPU81AとCPU81Bで処理する着目画素の間隔を制御するための処理(図6中のステップS412,S414,S442,S444)によって、誤差が完全に確定していない画素について2値化が行われることを回避可能であれば、両者の処理タイミングのずれをさらに狭くしてもよい。例えば、図11に示す時点ですぐにCPU81Bによる画素PQの処理を開始するものとしてもよい。
このように密なタイミングで並列処理を行えば、3つ以上の演算回路を用いた並列処理を実現することも可能である。かかる処理の例を図15に示す。第1の演算回路により画素P1が処理されている際に誤差が拡散される領域をP1eとする。この時点では、画素P2は拡散される誤差が確定しているから、第2の演算回路により画素P2の処理を実行する。画素P2の処理によって誤差が拡散される領域をP2eとする。画素P2の処理がなされれば、画素P3に拡散される誤差が確定しているから、第2の演算回路により画素P3の処理を実行することができる。以下、同様にして第4の演算回路により画素P4の処理、そして更に多くの画素の処理を並列して行うことができる。この場合、並列処理の多重化の程度に応じて処理速度を向上することができる。
以上の実施例では、2つのCPU81A,81Bを用いて処理する場合を例にとって説明したが、一方の処理を誤差拡散による2値化を行うための専用の回路によって実現するものとしてもよい。当然、双方を専用回路によって実現するものとしても構わない。
上述の例では、カラーの画像データを例にとって説明したが、単色の画像データについても同様に適用可能であることは当然である。また、上述の例では2値化の処理を例に採って説明したが、3値以上の多値化を行う画像処理に適用することも可能である。
なお、上記画像処理装置はコンピュータ90による処理が主体であるから、かかる処理を実現するためのプログラムを記録した記録媒体としての実施の態様を採ることもできる。このような記憶媒体としては、フレキシブルディスクやCD−ROM、光磁気ディスク、ICカード、ROMカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置(RAMやROMなどのメモリ)および外部記憶装置等の、コンピュータが読取り可能な種々の媒体を利用できる。また、コンピュータに上記で説明した多値化等を行うコンピュータプログラムを通信経路を介して供給するプログラム供給装置としての態様も可能である。
以上、本発明の種々の実施例について説明してきたが、本発明はこれらに限定されるものではなく、その要旨を逸脱しない範囲で、種々の形態による実施が可能である。
本発明の画像処理装置の概略構成図である。 ソフトウェアの構成を示す説明図である。 画像データの形式を示す説明図である。 本実施例において画素を処理する順序について示す説明図である。 本実施例の画像処理ルーチンを示すフローチャートである。 本実施例のハーフトーン処理ルーチンを示すフローチャートである。 本実施例における並列処理の処理タイミングを示す説明図である。 本実施例の誤差拡散処理ルーチンを示すフローチャートである。 本実施例における誤差配分の重み値を示す説明図である。 第1の時点での着目画素と誤差拡散領域との関係を示す説明図である。 第2の時点での着目画素と誤差拡散領域との関係を示す説明図である。 第3の時点での着目画素と誤差拡散領域との関係を示す説明図である。 並列処理による誤差拡散領域の関係を示す説明図である。 誤差バッファにおける拡散誤差の記憶の様子を示す説明図である。 4重化の並列処理の様子を示す説明図である。
符号の説明
12…スキャナ
14…キーボード
15…CD−ROMドライブ
16…ハードディスク
18…モデム
21…カラーディスプレイ
22…カラープリンタ
80…バス
81…CPU
82…ROM
83…RAM
84…入力インターフェイス
85…出力インタフェース
86…CRTC
87…ディスクコントローラ(DDC)
88…シリアル入出力インタフェース(SIO)
90…パーソナルコンピュータ
100…プリンタドライバ
102…入力部
104…レンダリング部
106…色補正部
110…ハーフトーン処理部
112…第1誤差拡散部
114…第2誤差拡散部
116…誤差バッファ
120…出力部

Claims (9)

  1. 各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理装置であって、
    未だ多値化されていない未処理の画素のうち、他の画素から拡散される濃度誤差が完全に確定した複数の画素について、誤差拡散法による多値化を並行して行うことを特徴とする画像処理装置。
  2. 請求項1記載の画像処理装置であって、
    前記画像データは、第1の方向および第2の方向に2次元的に配列されたデータであり、
    前記誤差拡散法は、前記第1の方向に並ぶ画素列に沿って各画素ごとに、少なくとも前記第2の方向に隣接する画素列に前記濃度誤差を拡散しつつ行われ、
    前記並行して多値化が行われる複数の画素は、互いに隣接する画素列上の画素である画像処理装置。
  3. 各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理装置であって、
    第1の方向および第2の方向に2次元的に配列された画像データを入力する入力手段と、
    未だ多値化されていない未処理の画素を、前記第1の方向に並ぶ画素列に沿って順に、少なくとも前記第2の方向に隣接する画素列に濃度誤差を拡散する誤差拡散法により多値化を行う第1の多値化手段と、
    前記第1の多値化手段により多値化が行われる画素列に対し、前記第2の方向に隣接する画素列上の画素のうち、他の画素から拡散される濃度誤差が完全に確定した画素について、第1の多値化手段による多値化と並行して誤差拡散法による多値化を行う第2の多値化手段とを備える画像処理装置。
  4. 請求項3記載の画像処理装置であって、
    前記第2の多値化手段は、多値化を行う画素について、他の画素から拡散される濃度誤差が完全に確定したか否かを判定する判定手段を備える画像処理装置。
  5. 請求項3記載の画像処理装置であって、
    前記第1の多値化手段により多値化が行われている着目画素と前記第2の多値化手段により多値化が行われている着目画素とは、前記第1の方向に前記画素列の幅の約半分の間隔を有している位置関係にある画像処理装置。
  6. 前記第1の多値化手段と第2の多値化手段とは異なる演算回路によって構成されることを特徴とする請求項3記載の画像処理装置。
  7. 請求項3記載の画像処理装置であって、
    前記画像データは前記第1の方向にNx個(Nxは2以上の整数)の画素を有するデータであり、
    前記第1の多値化手段は、Y番目からY+n−1番目(Y,nは自然数)までのn本の画素列上の未処理の画素に濃度誤差を拡散する手段であり、
    前記第2の多値化手段は、
    Y+1番目からY+n番目までのn本の画素列上の未処理の画素に濃度誤差を拡散し、かつ、前記第1の多値化手段によりY番目の画素列に濃度誤差が拡散される領域と前記Y+n番目の画素列に濃度誤差が拡散される領域との前記第1の方向の位置が重複しない画素を処理する手段であり、
    前記第1の方向にNx個、前記第2の方向にn個ずつ2次元的に配列された画素に対応したメモリと、
    前記Y+1番目からY+n−1番目までのn−1本の画素列に拡散された濃度誤差を、前記第1の方向および前記第2の方向について画素とメモリの位置関係を一義的に保ちつつ、n−1本の画素に対応したメモリに記憶し、
    かつ、
    残余の1本の画素列に対応したメモリには、前記Y番目の画素列に拡散された濃度誤差と前記Y+n番目の画素列に拡散された濃度誤差とを、前記第1の方向について画素とメモリの位置関係を一義的に保ちつつ記憶する記憶手段とを備える画像処理装置。
  8. 各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行う画像処理方法であって、
    (a)第1の方向および第2の方向に2次元的に配列された画像データを入力する工程と、
    (b)未だ多値化されていない未処理の画素を、前記第1の方向に並んだ画素列に沿って順に誤差拡散法により多値化を行う工程と、
    (c)前記工程(b)で多値化が行われる画素列に対し前記第2の方向に隣接する画素列上に他の画素から拡散される濃度誤差が完全に確定した画素が現れた後に、前記工程(b)と並行して、該隣接する画素列上の画素を誤差拡散法により多値化する工程とを備える画像処理方法。
  9. 各画素を多値化した際に生じる濃度誤差を未だ多値化されていない周辺の画素に拡散する誤差拡散法により、入力された画像データの多値化を行うためのプログラムをコンピュータ読みとり可能に記録した記録媒体であって、
    第1の方向および第2の方向に2次元的に配列された画像データを入力する機能と、
    未だ多値化されていない未処理の画素を、前記第1の方向に並んだ画素列に沿って順に誤差拡散法により多値化を行う第1の多値化機能と、
    前記第1の多値化機能により多値化が行われる画素列に対し前記第2の方向に隣接する画素列上の画素のうち、他の画素から拡散される濃度誤差が完全に確定した画素を特定する機能と、
    該特定された画素について、前記第1の多値化機能と並行して誤差拡散法による多値化を行う第2の多値化機能とを実現するプログラムを記録した記録媒体。
JP2005029140A 2005-02-04 2005-02-04 画像処理装置、処理方法および記録媒体 Expired - Fee Related JP4096949B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005029140A JP4096949B2 (ja) 2005-02-04 2005-02-04 画像処理装置、処理方法および記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005029140A JP4096949B2 (ja) 2005-02-04 2005-02-04 画像処理装置、処理方法および記録媒体

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP30946298A Division JP3963598B2 (ja) 1998-10-14 1998-10-14 画像処理装置、処理方法および記録媒体

Publications (2)

Publication Number Publication Date
JP2005143140A true JP2005143140A (ja) 2005-06-02
JP4096949B2 JP4096949B2 (ja) 2008-06-04

Family

ID=34698238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005029140A Expired - Fee Related JP4096949B2 (ja) 2005-02-04 2005-02-04 画像処理装置、処理方法および記録媒体

Country Status (1)

Country Link
JP (1) JP4096949B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295163A (ja) * 2008-06-05 2009-12-17 Toshiba Corp 画像処理装置及び画像処理方法
US8451499B2 (en) 2009-06-08 2013-05-28 Kyocera Document Solutions Inc. Multi-level image conversion using error-diffusion with improved speed by processing quadrangular image segments
JP2016163212A (ja) * 2015-03-03 2016-09-05 セイコーエプソン株式会社 画像処理装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7095545B2 (ja) 2018-10-15 2022-07-05 セイコーエプソン株式会社 画像処理装置、画像処理方法、および印刷装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295163A (ja) * 2008-06-05 2009-12-17 Toshiba Corp 画像処理装置及び画像処理方法
US8451499B2 (en) 2009-06-08 2013-05-28 Kyocera Document Solutions Inc. Multi-level image conversion using error-diffusion with improved speed by processing quadrangular image segments
JP2016163212A (ja) * 2015-03-03 2016-09-05 セイコーエプソン株式会社 画像処理装置

Also Published As

Publication number Publication date
JP4096949B2 (ja) 2008-06-04

Similar Documents

Publication Publication Date Title
JP3823858B2 (ja) 補正テーブルを用いたカラー画像データの補正方法
JP2006062332A (ja) インクジェット記録方法およびインクジェット記録システムおよび制御プログラム
JP3963598B2 (ja) 画像処理装置、処理方法および記録媒体
JP4096949B2 (ja) 画像処理装置、処理方法および記録媒体
JP5127626B2 (ja) 画像処理装置および画像処理方法
JP2010130303A (ja) 印刷制御装置、印刷装置、印刷制御方法およびコンピュータプログラム
JP6184115B2 (ja) 画像処理方法及び画像処理装置
JP4274030B2 (ja) 画像出力システム、画像処理装置、画像出力装置およびそれらの方法
JP2005236768A (ja) 所定領域内に形成されるドット個数の情報に基づいて画像を出力する画像出力システム
JP2005224983A (ja) 所定領域内に形成されるドット個数の情報に基づいて画像を出力する画像出力システム
JP2006014039A (ja) 複数画素ずつ多値化を行いながら画像を出力する画像出力システム
JP2006174398A (ja) ハーフトーン処理で利用されるパターンマトリクスの生成
JP4785351B2 (ja) インクジェット記録装置、インクジェット記録方法、データ生成装置およびプログラム
JP4561049B2 (ja) 所定領域内に形成されるドット個数の情報に基づいて画像を印刷する印刷システム
JP4484505B2 (ja) インクジェット記録システム、決定装置及びプログラム
JP4228814B2 (ja) 複数のラスタを並行して処理しながら画像を印刷する印刷方法
JP4577366B2 (ja) 複数のラスタを並行して処理する画像処理装置
JP6259951B2 (ja) 画像形成方法
JP3823859B2 (ja) 複数画素単位で画像データを変換する画像処理装置
JP2005295131A (ja) 画像処理装置、画像処理方法および画像処理プログラム
JP2006229428A (ja) 画像形成コントローラ装置、量子化方法、およびプリンタ装置
JP2004297451A (ja) 所定領域内に形成されるドット個数の情報に基づいて画像を表示する画像表示システム
JP4409883B2 (ja) 画像印刷装置
JP4225320B2 (ja) 画像出力制御システム、画像出力装置、画像処理装置およびそれらの方法
JP2004080480A (ja) 複数のラスタを並行して処理する画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070814

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080303

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110321

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120321

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120321

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130321

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140321

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees