(57)【要約】【課題】  同時に複数の閾値データを用いてディザ処理を行うときに、リアルタイムでの動作を可能にする。【解決手段】  画像処理部１０は、アドレス制御部１１と、記憶部１２と、比較部１３と、閾値制御部１４とを備える。記憶部１２は、メモリｍ1，ｍ2，ｍ3，ｍ4を備える。このメモリの個数は、画像処理装置１００が行うディザ処理において適用されるコンペアウィンドウの形状によって決定される。メモリｍ1，ｍ2，ｍ3，ｍ4の内部には、閾値マトリクスを構成する閾値データが、あるコンペアウィンドウに含まれる閾値データどうしがそれぞれ異なるメモリに記憶されており、１回の読み出し動作でコンペアウィンドウに含まれるすべての閾値データが同時に読み出されるようになっている。【選択図】      図５
2006050415.tif 000002
【特許請求の範囲】
【請求項１】
閾値マトリクスにおいて連続するＮ行Ｍ列の閾値データをコンペアウィンドウとして抽出し、抽出したコンペアウィンドウに含まれる閾値データと画像データの画素値とを比較して中間調処理を行う画像処理装置であって、
前記閾値データが記憶された（Ｍ×Ｎ）個のメモリを有し、これらのメモリの各々から閾値データを１個ずつ読み出すことで、データ読み出し周期毎に（Ｍ×Ｎ）個の閾値データを読み出す記憶手段と、
前記メモリのそれぞれに対してメモリアドレスを指定するアドレス制御手段と、
指定されたメモリアドレスに従って前記記憶手段が読み出した（Ｍ×Ｎ）個の閾値データを前記画素値と比較する比較手段とを備え、
１つの前記コンペアウィンドウに含まれる（Ｍ×Ｎ）個の閾値データは、それぞれ別々に（Ｍ×Ｎ）個の前記メモリに記憶されており、
前記アドレス制御手段は、前記コンペアウィンドウに含まれる（Ｍ×Ｎ）個の閾値データが記憶されているメモリアドレスを、（Ｍ×Ｎ）個の前記メモリに対してそれぞれ指定する
画像処理装置。
【請求項２】
Ｎ≧２の場合には、前記（Ｍ×Ｎ）個のメモリがＮ個のグループに区分され、
Ｎ個のグループのうちｋ（１≦ｋ＜Ｎ）番目のグループに属するＭ個の前記メモリには、前記閾値マトリクスにおける第ｉ（１≦ｉ＜Ｎ）行の先頭から末尾までの閾値データが交互に記憶され、さらに、第ｉ行の先頭の閾値データから連続する（Ｍ−１）個の閾値データが記憶されており、
（ｋ＋１）番目のグループに属するＭ個のメモリには、前記閾値マトリクスにおける第（ｉ＋１）行の先頭から末尾までの閾値データが交互に記憶され、さらに、第（ｉ＋１）行の先頭の閾値データから連続する（Ｍ−１）個の前記閾値データが記憶されている
請求項１記載の画像処理装置。
【請求項３】
Ｎ＝２であり、かつ、前記閾値マトリクスの行数がＮで割り切れない場合には、
前記閾値マトリクスにおける最終行の閾値データが記憶されているグループとは別のグループのメモリに、該閾値マトリクスの第１行の閾値データが記憶されている
請求項２記載の画像処理装置。
【請求項４】
Ｎ≧３であり、かつ、前記閾値マトリクスの行数がＮで割り切れない場合には、
前記閾値マトリクスにおける最終行の閾値データが記憶されているグループとは別のグループのメモリにおいて、該閾値マトリクスの第１行から第（Ｎ−１）行の閾値データがそれぞれ互いに異なるグループとなるように記憶されている
請求項２記載の画像処理装置。
【請求項５】
前記記憶手段は、最終行の閾値データを記憶しているグループとは別のグループのメモリに記憶している前記第１行の閾値データを、決められたシフト数だけシフトして記憶する
請求項３記載の画像処理装置。
【請求項６】
前記記憶手段は、前記第１行から第（Ｎ−１）行の閾値データを決められたシフト数だけシフトして記憶する
請求項４記載の画像処理装置。
【請求項７】
前記記憶手段は、前記閾値マトリクスの各行の先頭の閾値データを同一の前記メモリに記憶する
請求項２記載の画像処理装置。
【請求項８】
複数のメモリを備える記憶部が、ディザ処理において用いられる閾値マトリクスを表す閾値データを記憶するデータ記憶方法であって、
前記記憶部が有する（Ｍ×Ｎ）個のメモリに、該閾値マトリクスにおいて連続しているＮ行Ｍ列の閾値データをそれぞれ別々に記憶する
データ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、閾値マトリクスを用いてディザ処理を行う技術に関する。
【背景技術】
【０００２】
画像処理における中間調処理の手法のひとつにディザ法がある。ディザ法とは、階調を有する画像データの各画素（ピクセル）に対して、その画素の階調値（画素値）に応じて一定の規則のもとに白または黒を示す値を割り当てること（これを「２値化」という）によって擬似的に中間調を再現する手法のことである（例えば特許文献１参照）。ディザ法を用いて行う中間調処理のことをディザ処理という。
ディザ法にはいくつかの種類がある。このうち、組織的ディザ法とは、画像データの各画素を閾値マトリクスを用いて２値化するものである。閾値マトリクスとは、複数の閾値データをマトリクス状に配置したものであり、それぞれの閾値データは入力された画像データの各画素の画素値と比較される。
【０００３】
図２４は、閾値マトリクスの一例である閾値マトリクスＭ1を示した図である。同図においては、閾値マトリクスＭ1は５行１１列に配置された複数の閾値データで表されている。なお、説明の便宜上、ここではそれぞれの閾値データに対して、第１行の先頭から順に「１」〜「５５」の番号を付してある。
それぞれの閾値データは、８ビット、すなわち０〜２５５のいずれかの値を有しており、この値と入力された画像データの各画素の画素値（８ビット）とを比較し、画素値が閾値データよりも大きい画素は白、そうでない画素は黒、というようにして２値化が行われる。そして、このような閾値マトリクスを連続的に配置することにより、さまざまなサイズの画像データに対してディザ処理が行われる。例えば、３２×３２（ピクセル）の画像データに対してディザ処理を行う場合には、図２５のように配置された閾値マトリクスＭ1に基づいて２値化が行われる。なお、同図において、隣接する上下の閾値マトリクスＭ1は２ピクセル分ずれて配置されているが、このように上下の閾値マトリクスの位置を異ならせる処理のことを「シフト処理」という。ここで、隣接する上下の閾値マトリクスは２ピクセル分ずれて配置されているから、このようなシフト処理を「シフト設定数が２であるシフト処理」という。
【０００４】
図２６は、ディザ処理を行う一般的な画像処理装置３００の構成を示したブロック図である。同図に示されているように、画像処理部３０は、閾値マトリクスを記憶する記憶部３２と、閾値マトリクスの閾値データを読み出すためのメモリアドレス（以下、単に「アドレス」ともいう）を記憶部３２に対して指定するアドレス制御部３１と、入力された画像データを閾値データと比較して２値化する比較部３３とを備える。ＣＰＵ（Central Processing Unit）１１は上述の各部の動作を制御する。ＲＯＭ（Read Only Memory）１２は、画像処理装置３００が画像処理を実行するための手順を記述したプログラムＰＲＧ３を記憶している。
【０００５】
一般に、画像処理装置内部においては、ＣＰＵのクロック周波数に応じたタイミングで閾値データが読み出され、入力された画像データに対して逐次的にディザ処理が行われていくが、このとき、同時に複数の閾値データを用いてディザ処理が行われる場合がある。例えば、入力解像度が６００×６００（ｄｐｉ）の画像データを２４００×６００（ｄｐｉ）の出力解像度でディザ処理をする場合には、主走査（横）方向に４倍、副走査（縦）方向に１倍の解像度に変換される。そのため、１つの入力画素に対して４×１（ピクセル）分の閾値データが必要となる。これを図２４の閾値マトリクスＭ1を例に説明すると、ある画素は番号「１」、「２」、「３」、「４」の４個の閾値データで２値化され、４個の画素として出力される。そして、上述のある画素に続く次の画素は、番号「５」、「６」、「７」、「８」の４個の閾値データで２値化され、以下同様の要領で処理が行われる。
【０００６】
このように、同時に複数の閾値データを用いてディザ処理を行おうとしたとき、これをリアルタイムに処理するためには、４ピクセル分の閾値データを同時に読み出して２値化を行わなければならない。しかし、上述の特許文献１に記載の技術においては、１ワード分のメモリ領域に１個の閾値データを記憶していたために、閾値データの読み出しに時間がかかるという問題があった。すなわち、特許文献１に記載の技術においては、データ読み出し周期である１クロック周期で１個の閾値データしか読み出すことができず、４ピクセル分の閾値データを読み出すには４クロック周期を必要とする。したがって、１画素当たりの処理時間が増加し、リアルタイムでのディザ処理を困難なものとしていた。
【０００７】
【特許文献１】特開平４−２０５６７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明はこのような事情に鑑みてなされたものであり、その目的は、従来よりもディザ処理を高速に行うことを可能とする画像処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
上述の目的を達成するために、本発明は、閾値マトリクスにおいて連続するＮ行Ｍ列の閾値データをコンペアウィンドウとして抽出し、抽出したコンペアウィンドウに含まれる閾値データと画像データの画素値とを比較して中間調処理を行う画像処理装置であって、前記閾値データが記憶された（Ｍ×Ｎ）個のメモリを有し、これらのメモリの各々から閾値データを１個ずつ読み出すことで、データ読み出し周期毎に（Ｍ×Ｎ）個の閾値データを読み出す記憶手段と、前記メモリのそれぞれに対してメモリアドレスを指定するアドレス制御手段と、指定されたメモリアドレスに従って前記記憶手段が読み出した（Ｍ×Ｎ）個の閾値データを前記画素値と比較する比較手段とを備え、１つの前記コンペアウィンドウに含まれる（Ｍ×Ｎ）個の閾値データは、それぞれ別々に（Ｍ×Ｎ）個の前記メモリに記憶されており、前記アドレス制御手段は、前記コンペアウィンドウに含まれる（Ｍ×Ｎ）個の閾値データが記憶されているメモリアドレスを、（Ｍ×Ｎ）個の前記メモリに対してそれぞれ指定する画像処理装置を提供する。
このような画像処理装置によれば、コンペアウィンドウに含まれる閾値データを１回の読み出し動作で読み出すことができるため、ディザ処理を高速に行うことが可能となる。
【００１０】
また、本発明の画像処理装置は、より好適な態様として、Ｎ≧２の場合には、前記（Ｍ×Ｎ）個のメモリがＮ個のグループに区分され、Ｎ個のグループのうちｋ（１≦ｋ＜Ｎ）番目のグループに属するＭ個の前記メモリには、前記閾値マトリクスにおける第ｉ（１≦ｉ＜Ｎ）行の先頭から末尾までの閾値データが交互に記憶され、さらに、第ｉ行の先頭の閾値データから連続する（Ｍ−１）個の閾値データが記憶されており、（ｋ＋１）番目のグループに属するＭ個のメモリには、前記閾値マトリクスにおける第（ｉ＋１）行の先頭から末尾までの閾値データが交互に記憶され、さらに、第（ｉ＋１）行の先頭の閾値データから連続する（Ｍ−１）個の前記閾値データが記憶されている。
【００１１】
さらに、Ｎ＝２であり、かつ、前記閾値マトリクスの行数がＮで割り切れない場合には、前記閾値マトリクスにおける最終行の閾値データが記憶されているグループとは別のグループのメモリに、該閾値マトリクスの第１行の閾値データが記憶されている。
あるいは、Ｎ≧３であり、かつ、前記閾値マトリクスの行数がＮで割り切れない場合には、前記閾値マトリクスにおける最終行の閾値データが記憶されているグループとは別のグループのメモリにおいて、該閾値マトリクスの第１行から第（Ｎ−１）行の閾値データがそれぞれ互いに異なるグループとなるように記憶されている。
このようにすれば、コンペアウィンドウが複数行となり、複数の閾値マトリクスにまたがるような場合であっても、コンペアウィンドウに含まれる閾値データを１回の読み出し動作で読み出すことが可能となる。
【００１２】
これらの場合、さらに好適な態様として、前記記憶手段は、最終行の閾値データを記憶しているグループとは別のグループのメモリに記憶している前記第１行の閾値データを、決められたシフト数だけシフトして記憶する。
あるいは、前記記憶手段は、前記第１行から第（Ｎ−１）行の閾値データを決められたシフト数だけシフトして記憶する。
このようにすれば、コンペアウィンドウが複数行となり、複数の閾値マトリクスにまたがるような場合に、アドレス演算をより容易に行うことが可能となる。
【００１３】
また、本発明の画像処理装置は、より好適な態様として、前記記憶手段は、前記閾値マトリクスの各行の先頭の閾値データを同一の前記メモリに記憶する。
このようにすれば、閾値マトリクスの各行の閾値データの読み出すアドレス演算が共通化されることとなり、アドレス演算をより容易に行うことが可能となる。
【００１４】
なお、本発明は、複数のメモリを備える記憶部が、ディザ処理において用いられる閾値マトリクスを表す閾値データを記憶するデータ記憶方法であって、前記記憶部が有する（Ｍ×Ｎ）個のメモリに、該閾値マトリクスにおいて連続しているＮ行Ｍ列の閾値データをそれぞれ別々に記憶するデータ記憶方法として提供することも可能である。
【発明を実施するための最良の形態】
【００１５】
本発明者らは、上述した問題を解決するものとして、図１の構成を有する画像処理装置２００を着想した。なお、この画像処理装置２００は、１つの入力画素に対して４×１（ピクセル）分の閾値データを同時にディザ処理する場合、すなわちディザ処理において主走査方向の解像度が４倍になる場合を示している。この、１回のタイミングで同時にディザ処理の行われる閾値データの集まりのことを、以下では「コンペアウィンドウ」という。すなわち、画像処理装置２００は、閾値マトリクスからコンペアウィンドウを抽出し、抽出したコンペアウィンドウに含まれる閾値データと、画像データの画素値とを比較して中間調処理を行うようになっている。また、以下においては、上述の図２４〜２６に示された各部と同様の機能を有する構成要素については同一の符号を付し、その説明を適宜省略する。
【００１６】
画像処理装置２００は、アドレス制御部２１と、記憶部２２と、比較部２３と、閾値制御部２４とを有する画像処理部２０を備えており、ＲＯＭ２に記憶されたプログラムＰＲＧ２をＣＰＵ１が実行することによって制御される。画像処理部２０の機能は例えばＡＳＩＣ（Application Specific Integrated Circuit）によって実現される。アドレス制御部２１と比較部２３とは、それぞれ画像処理装置３００のアドレス制御部３１と比較部３３とほぼ同様の機能を有する。閾値制御部２４は、記憶部２２から読み出された閾値データをバッファ２４１においてバッファリングし、必要に応じてバレルシフト等のデータ処理を行う。記憶部２２は例えばＲＡＭ（Random Access Memory）等のメモリｍを備えており、閾値マトリクスを構成する閾値データをメモリｍに記憶している。ここで、記憶部２２が閾値マトリクスを記憶する方法が画像処理装置３００の記憶部３２のそれとは異なる。以下では、記憶部２２が図２４の閾値マトリクスＭ1を構成する閾値データを記憶している場合を例に説明する。
【００１７】
図２はメモリｍの構成を示した模式図であり、図３はこのメモリｍに閾値マトリクスＭ1が記憶されている状態を示した模式図である。図２において、ｍｂ1〜ｍｂ64の符号が付与された格子状の領域はメモリブロックを示しており、それぞれのメモリブロックには０ないし１個の閾値データが記憶されている。また、それぞれのメモリブロックの記憶容量は８ビットである。また、図３においては、メモリブロック上に示された番号は閾値データに付与されている番号を意味している。メモリブロックの番号と閾値データの番号とを区別するために、以下の図面においてはメモリブロックの番号を斜体で表記することとする。なお、以下の説明においては、「１」、「２」、…、「ｎ」の番号が付与された閾値データをそれぞれｔｈ1，ｔｈ2，…，ｔｈnというように表記する。
【００１８】
メモリｍは３２ビット×１６ワードの構成となっている。すなわち、メモリｍの１ワード当たりのメモリ領域は３２ビットであり、１ワード当たり８ビットの閾値データが４個ずつ記憶されている。また、メモリｍにはワード単位でアドレスが定義されており、図２においては、メモリブロックｍｂ1〜ｍｂ4で示されるメモリ領域をアドレス０，メモリブロックｍｂ5〜ｍｂ8で示されるメモリ領域をアドレス１と定義し、以下同様の要領にてアドレス１５まで定義されている。ここで、１ワード当たりのメモリブロックの個数は、ディザ処理における主走査方向の解像度の倍率に一致するようになっている。この例では、主走査方向の解像度が４倍となっているので、１ワード当たりのメモリブロックの個数が４個となっている。
【００１９】
また、メモリｍには、閾値マトリクスＭ1の各行の先頭がワードバウンダリと一致するように閾値データが記憶されている。つまり、閾値マトリクスＭ1の各行の先頭である閾値データｔｈ1，ｔｈ12，ｔｈ23，ｔｈ34およびｔｈ45は、それぞれアドレス０，３，７，１１および１５の先頭のメモリブロックに記憶されている。そして、閾値マトリクスＭ1の各行の閾値データの末尾に相当する部分に続いて、その行の先頭からの閾値データが、ワードバウンダリに到達するまでのメモリ領域に記憶されている。
このように閾値データをメモリｍに記憶すると、例えばアドレス制御部２１がアドレス０を指定した場合に、記憶部２２のメモリｍからは閾値データｔｈ1，ｔｈ2，ｔｈ3およびｔｈ4が同時に読み出されることとなり、１回の読み出し動作で複数の閾値データを読み出すことができる。すなわち、１クロック周期で複数の閾値データを同時に読み出すことが可能となる。
【００２０】
しかし、この画像処理装置２００にはいくつかの問題点のあることが見出された。
画像処理装置２００は複数の閾値データを同時に読み出すことが可能であるが、１回のディザ処理に必要な閾値データのすべてを１回の読み出し動作で読み出すことができないことがある。例えば、閾値マトリクスＭ1を用いて図４に示されるコンペアウィンドウの単位でディザ処理を行う場合は、コンペアウィンドウｃｗ1，ｃｗ2，ｃｗ3の閾値データを、図３のメモリｍのアドレス０，１，２のメモリ領域のそれぞれから読み出すことによって、１回の読み出し動作で必要な閾値データのすべてを読み出すことができる。しかし、コンペアウィンドウｃｗ4でディザ処理を行う場合は、閾値データｔｈ2，ｔｈ3，ｔｈ4の記憶されたメモリアドレス（アドレス０）と閾値データｔｈ5の記憶されたメモリアドレス（アドレス１）とが異なるために、１回の読み出し動作ですべての閾値データを読み出すことができない。なぜなら、１つのメモリにおいて２つのメモリアドレスから同時にデータを読み出せないようになっているからである。そのため、画像処理装置２００の画像処理部２０がこのディザ処理を行う場合には、１クロック周期分だけ前に読み出されたアドレス０の閾値データを閾値制御部２４にバッファリングしておき、その後読み出されるアドレス１の閾値データと組み合わせてコンペアウィンドウを形成する必要がある。ゆえに、画像処理部２０においては１クロック周期ごとに閾値マトリクスを切り替えるような動作を行うことができず、複数の閾値マトリクスを使用したい場合には、画像処理装置２００は閾値マトリクスの数だけの画像処理部２０を必要としてしまうという問題がある。
【００２１】
加えて、画像処理装置２００には、複数の出力解像度パターンに対応しようとすると画像処理部２０の構成が複雑化してしまうという問題もある。例えば、上述したのは入力解像度が６００×６００（ｄｐｉ）の画像データを２４００×６００（ｄｐｉ）の出力解像度で出力する場合の例であり、このときのコンペアウィンドウは４×１ピクセル分の閾値データの集合で表されたが、これが同じ入力解像度の画像データを１２００×１２００（ｄｐｉ）の出力解像度で出力する場合となると、このときのコンペアウィンドウは２×２ピクセル分の閾値データの集合で表されることになる。すると、画像処理部２０の閾値制御部２４におけるバッファリングのパターンが異なってくるために、双方の出力解像度に対応するためには閾値制御部２４の回路規模を大きくせざるを得なくなる。さらに、出力解像度の変化に伴ってバッファの書き込み・読み出しのタイミングも異なってくるために、パイプライン遅延が変化してしまうという問題も生じる。
【００２２】
これらの問題を解消するために、本発明者らは以下に示される画像処理装置を発明した。以下においては、本発明に係る画像処理装置について、上述の画像処理装置２００，３００を適宜参照しつつ詳細に説明する。
なお、本発明の画像処理装置は、コンペアウィンドウの形状により、閾値マトリクスの記憶方法や具体的な動作が異なるものである。よって、ここでは、コンペアウィンドウが４×１ピクセル分の閾値データの集合である場合（第１実施形態）と２×２ピクセル分の閾値データの集合である場合（第２実施形態）を実施の例として示す。
【００２３】
（１）第１実施形態
（１−１）構成
図５は、本発明の第１の実施形態に係る画像処理装置１００の構成を示したブロック図である。同図に示されているように、画像処理装置１００は、画像処理部１０と、ＣＰＵ１と、ＲＯＭ２とを備え、ＣＰＵ１がＲＯＭ２に記憶されたプログラムＰＲＧ１を実行することによって後述する画像処理が行われる。
画像処理部１０は、アドレス制御部１１と、記憶部１２と、比較部１３と、閾値制御部１４とを備える。記憶部１２は例えばＲＡＭ（Random Access Memory）等の複数のメモリｍ1，ｍ2，ｍ3およびｍ4を備えており、これらのメモリ内部に閾値マトリクスを構成する閾値データを記憶している。アドレス制御部１１は、この閾値データを読み出すためのメモリアドレスを記憶部１２のそれぞれのメモリに対して指定する。閾値制御部１４は、記憶部１２から読み出された閾値データに対して、必要に応じてバレルシフトを行う。比較部１３は図２６の比較部３３とほぼ同様の機能を有する。
【００２４】
この画像処理装置１００は、閾値データを記憶する記憶部１２の態様に特徴を有する。この点について、以下では記憶部１２が図２４の閾値マトリクスＭ1を構成する閾値データを記憶している場合を例に説明する。
図６は、記憶部１２のメモリｍ1，ｍ2，ｍ3およびｍ4を示した模式図である。なお、同図において、メモリｍ1，ｍ2，ｍ3，ｍ4のアドレス０のメモリ領域をそれぞれメモリブロックｍｂ１1，ｍｂ２1，ｍｂ３1，ｍｂ４1，アドレス１のメモリ領域をそれぞれメモリブロックｍｂ１2，ｍｂ２2，ｍｂ３2，ｍｂ４2とし、以下同様の要領でアドレス３１までのメモリ領域を定義している。
同図に示されているように、メモリｍ1〜ｍ4は８ビット×３２ワードの構成となっている。すなわち、各メモリの１ワード当たりのメモリ領域は８ビットであり、１ワード当たり８ビットの閾値データを１個ずつ記憶する。
【００２５】
図７は、図６に示したメモリｍ1，ｍ2，ｍ3およびｍ4に閾値マトリクスＭ1を構成する閾値データを記憶させた状態を示した模式図である。同図に示されているように、閾値マトリクスＭ1の第１行の閾値データがメモリｍ1からメモリｍ4のアドレス０に順番に記憶されている。そして、メモリｍ4のあるアドレスに記憶された閾値データに連続する閾値データは、その次のアドレスのメモリｍ1に記憶されている。例えば、アドレス０のメモリブロックｍ4（メモリブロックｍｂ４1）には、閾値データｔｈ4が記憶されており、その閾値データに連続する閾値データｔｈ5はアドレス１のメモリブロックｍ1（メモリブロックｍｂ１2）に記憶されている。
そして、閾値マトリクスＭ1の各行末尾の閾値データに続くように、その行の先頭からの閾値データが「３」個だけ記憶されている。例えば、アドレス２のメモリブロックｍ3（メモリブロックｍｂ３3）には、閾値マトリクス第１行末尾の閾値データｔｈ1が記憶されており、さらに、その第１行先頭からの３個の閾値データｔｈ1，ｔｈ2，ｔｈ3が連続するようにメモリブロックｍｂ４3，ｍｂ１4，ｍｂ２4に記憶されている。そして、このような状態が連続するように、閾値マトリクスＭ1の各行の閾値データが順番に記憶されている。なお、閾値データの記憶されていないメモリ領域、すなわちメモリｍ1，ｍ2のアドレス１８以降と、メモリｍ3，ｍ4のアドレス１７以降のメモリブロックにはデータが記憶されておらず、ブランク（空白）のままである。
【００２６】
（１−２）動作
以上に示された構成のもと、本実施形態の画像処理装置１００はディザ処理を行う。具体的には、画像処理部１のアドレス制御部１１が記憶部１２から読み出される閾値データのアドレスを指定し、読み出された閾値データに対して閾値制御部１４が必要に応じてバレルシフトを行い、これを比較部１３が入力された画像データの各画素と比較することによってディザ処理を行う。上述のように、画像処理装置１００は閾値データを記憶する態様に特徴を有しており、図７に示されたような態様にて閾値データを記憶し、ここからアドレス制御部１１により指定された閾値データを読み出すことにより、従来よりも高速なディザ処理を可能としている。以下においては、記憶部１２に記憶された閾値データの読み出し動作について詳細に説明する。
【００２７】
図８は、本実施形態における閾値データの読み出しに適用されるコンペアウィンドウを示した図である。ここでは、コンペアウィンドウｃｗ1〜ｃｗ5を用いてディザ処理を行う場合に、実際にメモリからどのように閾値データが読み出されるのかについて、図面を用いて説明する。
【００２８】
図９は、コンペアウィンドウｃｗ1，ｃｗ2およびｃｗ3を用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。まず、図８に示されているように、コンペアウィンドウｃｗ1に含まれる閾値データはｔｈ1，ｔｈ2，ｔｈ3およびｔｈ4である。これらの閾値データは、図９に示されているように、それぞれメモリｍ1，ｍ2，ｍ3およびｍ4のアドレス０のメモリブロックｍｂ１0，ｍｂ２0，ｍｂ３0およびｍｂ４0に記憶されている。そのため、アドレス制御部１１は、記憶部１２のすべてのメモリに対して、アドレス０のメモリ領域を読み出す旨を指示する。この指示に応じて、記憶部１２は、閾値データｔｈ1，ｔｈ2，ｔｈ3およびｔｈ4を同時に読み出すことができる。なぜなら、各々のメモリｍ1，ｍ2，ｍ3およびｍ4において、閾値データを読み出すためのメモリアドレスはそれぞれ１つのみ指定されているからである。読み出された閾値データは、メモリｍ1，ｍ2，ｍ3，ｍ4の順、すなわちｔｈ1，ｔｈ2，ｔｈ3，ｔｈ4の順番に記憶部１２から比較部１３に供給される。比較部１３は、閾値データが供給されてくる順番に従ってディザ処理を行う。この場合、閾値データが供給されてくる順番と、コンペアウィンドウｃｗ1で表される閾値データの順番とが一致しているため、閾値制御部１４によるバレルシフトは不要である。また、コンペアウィンドウｃｗ2，ｃｗ3の場合には、読み出される閾値データが記憶されているメモリブロックのアドレスが異なるのみであり、具体的な動作は上述のコンペアウィンドウｃｗ1の場合と同様であるから、その説明は省略する。
【００２９】
続いて、コンペアウィンドウｃｗ4，ｃｗ5を用いてディザ処理を行う場合について説明する。
図１０は、コンペアウィンドウｃｗ4，ｃｗ5を用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。まず、図８に示されているように、コンペアウィンドウｃｗ4に含まれる閾値データはｔｈ2，ｔｈ3，ｔｈ4およびｔｈ5である。図１０に示されているように、これらの閾値データのうち、閾値データｔｈ2，ｔｈ3およびｔｈ4がそれぞれメモリｍ2，ｍ3およびｍ4のアドレス０のメモリブロックｍｂ２0，ｍｂ３0およびｍｂ４0に記憶され、閾値データｔｈ5がメモリｍ1のアドレス１のメモリブロックｍｂ１1に記憶されている。そのため、アドレス制御部１１は、記憶部１２のメモリｍ1に対してはアドレス１のメモリ領域を読み出す旨を指示し、メモリｍ2，ｍ3およびｍ4に対してはアドレス０のメモリ領域を読み出す旨を指示する。この場合も、各々のメモリｍ1，ｍ2，ｍ3およびｍ4において、閾値データを読み出すためのメモリアドレスはそれぞれ１つだけ指定されている。従って、閾値データｔｈ2，ｔｈ3，ｔｈ4およびｔｈ5が同時に読み出されることになる。
【００３０】
これらの閾値データは、読み出された順（ｍ1，ｍ2，ｍ3，ｍ4の順）に並べると、ｔｈ5，ｔｈ2，ｔｈ3，ｔｈ4となる。一方、ディザ処理はコンペアウィンドウｃｗ4で表される順番、すなわちｔｈ2，ｔｈ3，ｔｈ4，ｔｈ5の順番で行われるため、閾値データの読み出し順とディザ処理の順番とが異なっている。よって、ここでは閾値制御部１４がバレルシフトを行う。
図１１は、閾値制御部１４が行うバレルシフトを説明するための図である。閾値制御部１４は、ｔｈ5，ｔｈ2，ｔｈ3，ｔｈ4の順番で並んでいる閾値データのデータ列から、閾値データｔｈ5に相当する先頭の８ビットをこのデータ列の末尾にシフトする（図１１（１）参照）。すると、閾値データのデータ列はｔｈ2，ｔｈ3，ｔｈ4，ｔｈ5の順番で並ぶようになり、比較部１３において入力された画像データとの比較が可能となる。
【００３１】
続いて、コンペアウィンドウｃｗ5を用いてディザ処理を行う場合について説明する。図８に示されているように、コンペアウィンドウｃｗ5に含まれる閾値データはｔｈ12，ｔｈ13，ｔｈ14およびｔｈ15である。これらの閾値データは、図１０に示されているように、閾値データｔｈ12，ｔｈ13がそれぞれメモリｍ3，ｍ4のアドレス３のメモリブロックｍｂ３3，ｍｂ４3に記憶され、閾値データｔｈ14，ｔｈ15がそれぞれメモリｍ1，ｍ2のアドレス４のメモリブロックｍｂ１4，ｍｂ２4に記憶されている。そのため、アドレス制御部１１は、記憶部１２のメモリｍ1，ｍ2に対してはアドレス４のメモリ領域を読み出す旨を指示し、メモリｍ3，ｍ4に対してはアドレス３のメモリ領域を読み出す旨を指示する。これにより、閾値データｔｈ12，ｔｈ13，ｔｈ14およびｔｈ15が同時に読み出される。
【００３２】
これらの閾値データは、読み出された順に並べるとｔｈ14，ｔｈ15，ｔｈ13，ｔｈ12となる。ディザ処理はコンペアウィンドウｃｗ5で表される順番、すなわちｔｈ12，ｔｈ13，ｔｈ14，ｔｈ15の順番で行われるため、ここでは閾値制御部１４がバレルシフトを行う。具体的には、閾値制御部１４は、ｔｈ14，ｔｈ15，ｔｈ12，ｔｈ13の順番で並んでいる閾値データのデータ列から、閾値データｔｈ14，ｔｈ15に相当する先頭の１６ビットと閾値データｔｈ12，ｔｈ13に相当する末尾の１６ビットを入れ替えるようにバレルシフトを行う（図１１（２）参照）。すると、閾値データのデータ列はｔｈ12，ｔｈ13，ｔｈ14，ｔｈ15の順番で並ぶようになり、比較部１３において入力された画像データとの比較が可能となる。
なお、その他のコンペアウィンドウについても、上述したコンペアウィンドウｃｗ1〜ｃｗ5の場合とほぼ同様の要領で閾値データの読み出しが可能である。
【００３３】
以上に示されたように、本実施形態の画像処理装置１００においては、記憶部が複数のメモリを備えるようにし、閾値マトリクスにおいて閾値データが配置されている順番・位置を考慮して、これらの閾値データを複数のメモリに分散して記憶している。したがって、１回のディザ処理に必要な閾値データを１クロック周期で同時に読み出すことができるので、高速なディザ処理を行うことが可能となる。
また、本実施形態の画像処理装置１００によれば、１回のディザ処理に必要な閾値データを１タイミングで読み出すことができるので、画像処理部１０においてはバッファを設ける必要がなく、１クロック周期ごとに閾値マトリクスを切り替える動作を行うことが可能となる。したがって、ディザ処理において複数の閾値マトリクスを用いる場合であっても、画像処理装置１００の構成であれば記憶部のメモリ容量を増加させるだけでよく、画像処理装置２００の場合のように画像処理部そのものを増設する必要がない（一例として、閾値マトリクスＭ1およびＭ2を記憶している記憶部１２ａを図１２に示す）。すなわち、本実施形態の画像処理装置１００によれば、安価で簡易な構成により多様なディザ処理を行うことが可能となる。
【００３４】
（２）第２実施形態
次に、画像処理装置が行うディザ処理において、用いられるコンペアウィンドウが２×２ピクセル分の閾値データの集合である場合の実施形態について説明する。本実施形態の画像処理装置は、上述の第１実施形態の画像処理装置１００と類似の構成を有している。よって、ここでは上述の第１実施形態の画像処理装置１００と異なる部分を中心に説明し、画像処理装置１００と共通の構成要素には同一の符号を付して、その説明を適宜省略する。
【００３５】
（２−１）構成
図１３は、本発明の第２の実施形態に係る画像処理装置１０１の構成を示したブロック図である。同図に示されているように、本実施形態の画像処理装置１０１は、記憶部１５を除き上述の第１実施形態の画像処理装置１００と同様の構成を有している。記憶部１５はメモリｍ11，ｍ12，ｍ21およびｍ22を備えており、このメモリ内部に閾値マトリクスを記憶している。
メモリｍ11，ｍ12，ｍ21およびｍ22は、画像処理装置１００のメモリｍ1，ｍ2，ｍ3およびｍ4と同様に、８ビット×３２ワードの構成となっている。また、各メモリの１ワード当たりのメモリ領域は８ビットであり、１ワード当たり８ビットの閾値データを１個ずつ記憶する。なお、以下においては、メモリｍ11，ｍ12，ｍ21，ｍ22のアドレス０のメモリ領域をそれぞれメモリブロックｍｂ１１1，ｍｂ１２1，ｍｂ２１1，ｍｂ２２1，アドレス１のメモリ領域をそれぞれメモリブロックｍｂ１１2，ｍｂ１２2，ｍｂ２１2，ｍｂ２２2とし、以下同様の要領でアドレス３１まで定義する。
【００３６】
また、説明の便宜上、本実施形態においてはメモリｍ11，ｍ12をグループ１，メモリｍ21，ｍ22をグループ２というように、メモリを２つのグループに分けて考えるものとする。このようにすると、メモリに記憶されている閾値データマトリクスの態様をより容易に理解できるからである。以下では一例として、記憶部１５のメモリに記憶されている閾値データが図２４の閾値マトリクスＭ1を構成する閾値データあるとして説明する。
【００３７】
図１４は、メモリｍ11，ｍ12，ｍ31およびｍ22に閾値データを記憶させた状態を示した模式図である。なお、同図においては、各メモリブロックに表記された番号は閾値データの番号を示している。
同図に示されているように、閾値マトリクスＭ1の第１行の閾値データがグループ１のメモリｍ11，ｍ12のアドレス０からアドレス５に順番に記憶され、第２行の閾値データがグループ２のメモリｍ21，ｍ22のアドレス０からアドレス５に順番に記憶されている。そして、第３行の閾値データは、第１行の閾値データに続くように、グループ１のメモリｍ11，ｍ12のアドレス６からアドレス１１に順番に記憶されており、以下同様の要領にて、第４行および第５行の閾値データが、それぞれグループ２のメモリｍ21，ｍ22のアドレス６からアドレス１１およびグループ１のメモリｍ11，ｍ12のアドレス１２からアドレス１７に順番に記憶されている。また、グループ２のメモリｍ21，ｍ22のアドレス１２からアドレス１７には、第１行の閾値データが上述の場合と同様にして記憶されている。なお、閾値マトリクスＭ1の各行末尾の閾値データに続くように、その行の先頭からの閾値データが「１」個だけ記憶されている（例えばメモリブロックｍｂ１２6，ｍｂ２２6およびｍｂ１２12参照）。また、閾値データの記憶されていないメモリ領域、すなわちメモリｍ11〜ｍ22のアドレス１８以降のメモリブロックにはデータが記憶されておらず、ブランク（空白）のままである。
【００３８】
（２−２）動作
以上に示された構成のもと、本実施形態の画像処理装置１０１はディザ処理を行う。具体的には、画像処理部１のアドレス制御部１１が記憶部１５から読み出される閾値データのアドレスを指定し、読み出された閾値データに対して閾値制御部１４が必要に応じてバレルシフトを行い、これを比較部１３が入力された画像データの各画素と比較することによってディザ処理を行う。ここからは、記憶部１５に記憶された閾値データの読み出し動作について詳細に説明する。
【００３９】
図１５は、本実施形態における閾値データの読み出しに適用されるコンペアウィンドウを示した図である。ここでは、コンペアウィンドウｃｗ1〜ｃｗ10を用いてディザ処理を行う場合に、実際にメモリからどのように閾値データが読み出されるのかについて、図面を用いて説明する。
【００４０】
図１６は、コンペアウィンドウｃｗ1〜ｃｗ6およびｃｗ8を用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。まず、図１５に示されているように、コンペアウィンドウｃｗ1に含まれる閾値データはｔｈ1，ｔｈ2，ｔｈ12およびｔｈ13である。これらの閾値データは、図１６に示されているように、それぞれメモリｍ11，ｍ12，ｍ21およびｍ22のアドレス０のメモリブロックｍｂ１１1，ｍｂ１２1，ｍｂ２１1およびｍｂ２２1に記憶されている。そのため、アドレス制御部１１は、記憶部１５のすべてのメモリに対して、アドレス０のメモリ領域を読み出す旨の指示を送信する。これにより、閾値データｔｈ1，ｔｈ2，ｔｈ12およびｔｈ13が同時に読み出される。読み出された閾値データは、読み出された閾値データは、メモリｍ11，ｍ12，ｍ21，ｍ22の順、すなわちｔｈ1，ｔｈ2，ｔｈ12およびｔｈ13の順番に比較部１３に供給されることにより、コンペアウィンドウｃｗ1で表される順番でディザ処理が行われる。そのため、この場合には閾値制御部１４によるバレルシフトは不要である。また、コンペアウィンドウｃｗ2〜ｃｗ6およびｃｗ8の場合には、読み出される閾値データを記憶するメモリブロックのアドレスがそれぞれアドレス１〜５および６に異なるのみであり、具体的な動作は上述のコンペアウィンドウｃｗ1の場合と同様であるから、その説明は省略する。
【００４１】
続いて、コンペアウィンドウｃｗ7を用いてディザ処理を行う場合について説明する。
図１７は、コンペアウィンドウｃｗ7およびｃｗ9を用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。図１５に示されているように、コンペアウィンドウｃｗ7に含まれる閾値データはｔｈ2，ｔｈ3，ｔｈ13およびｔｈ14である。これらの閾値データは、図１７に示されているように、閾値データｔｈ2がグループ１のメモリｍ12のアドレス０のメモリブロックｍｂ１２1に記憶され、閾値データｔｈ3がグループ１のメモリｍ11のアドレス１のメモリブロックｍｂ１１2に記憶されている。また、閾値データｔｈ13がグループ２のメモリｍ22のアドレス０のメモリブロックｍｂ２２1に記憶され、閾値データｔｈ14がグループ２のメモリｍ21のアドレス１のメモリブロックｍｂ２１2に記憶されている。そのため、アドレス制御部１１は、記憶部１５のメモリｍ12およびｍ22に対してはアドレス０のメモリ領域を読み出す旨の指示を送信し、メモリｍ11およびｍ21に対してはアドレス１のメモリ領域を読み出す旨の指示を送信する。これにより、閾値データｔｈ2，ｔｈ3，ｔｈ13およびｔｈ14が同時に読み出される。
【００４２】
これらの閾値データは、読み出された順（ｍ11，ｍ12，ｍ21，ｍ22の順）に並べるとｔｈ3，ｔｈ2，ｔｈ14，ｔｈ13となる。ディザ処理はコンペアウィンドウｃｗ7で表される順番、すなわちｔｈ2，ｔｈ3，ｔｈ13，ｔｈ14の順番で行われるため、ここでは閾値制御部１４がバレルシフトを行う。
図１８は、閾値制御部１４が行うバレルシフトを説明するための図である。閾値制御部１４は、ｔｈ3，ｔｈ2，ｔｈ14，ｔｈ13の順番で並んでいる閾値データのデータ列に対して、閾値データｔｈ3に相当する８ビットのデータと閾値データｔｈ2に相当する８ビットのデータとを入れ替える処理を行い、同時に閾値データｔｈ14に相当する８ビットのデータと閾値データｔｈ13に相当する８ビットのデータとを入れ替える処理を行う（図１８（１）参照）。すると、閾値データのデータ列はｔｈ2，ｔｈ3，ｔｈ13，ｔｈ14の順番で並ぶようになり、比較部１３において入力された画像データとの比較が可能となる。
【００４３】
続いて、コンペアウィンドウｃｗ9を用いてディザ処理を行う場合について説明する。図１５に示されているように、コンペアウィンドウｃｗ9に含まれる閾値データはｔｈ45，ｔｈ46，ｔｈ3およびｔｈ4である。これらの閾値データは、図１７に示されているように、閾値データｔｈ45，ｔｈ46がそれぞれグループ１のメモリｍ11，ｍ12のアドレス１２のメモリブロックｍｂ１１13，ｍｂ１２13に記憶され、閾値データｔｈ3，ｔｈ4がそれぞれグループ２のメモリｍ21，ｍ22のアドレス１３のメモリブロックｍｂ２１14，ｍｂ２２14に記憶されている。そのため、アドレス制御部１１は、記憶部１５のメモリｍ11，ｍ12に対してはアドレス１２のメモリ領域を読み出す旨の指示を送信し、メモリｍ21，ｍ22に対してはアドレス１３のメモリ領域を読み出す旨の指示を送信する。これにより、閾値データｔｈ45，ｔｈ46，ｔｈ3およびｔｈ4が同時に読み出される。読み出された閾値データは、メモリｍ11，ｍ12，ｍ21，ｍ22の順、すなわちｔｈ45，ｔｈ46，ｔｈ3およびｔｈ4の順番に比較部１３に供給されることにより、コンペアウィンドウｃｗ9で表される順番でディザ処理が行われる。そのため、この場合には閾値制御部１４によるバレルシフトは不要である。
【００４４】
続いて、コンペアウィンドウｃｗ10を用いてディザ処理を行う場合について説明する。
図１９は、コンペアウィンドウｃｗ10を用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。図１５に示されているように、コンペアウィンドウｃｗ10に含まれる閾値データはｔｈ13，ｔｈ14，ｔｈ24およびｔｈ25である。これらの閾値データは、図１９に示されているように、閾値データｔｈ13がグループ２のメモリｍ22のアドレス０のメモリブロックｍｂ２２1に記憶され、閾値データｔｈ14がグループ２のメモリｍ21のアドレス１のメモリブロックｍｂ２１2に記憶されている。また、閾値データｔｈ24がグループ１のメモリｍ12のアドレス６のメモリブロックｍｂ１２7に記憶され、閾値データｔｈ25がグループ１のメモリｍ11のアドレス７のメモリブロックｍｂ１１8に記憶されている。そのため、アドレス制御部１１は、記憶部１５のメモリｍ22に対してはアドレス０，メモリｍ21に対してはアドレス１，メモリｍ12に対してはアドレス６，メモリｍ11に対してはアドレス７のメモリ領域を読み出す旨の指示を送信する。これにより、閾値データｔｈ13，ｔｈ14，ｔｈ24およびｔｈ25が同時に読み出される。
【００４５】
これらの閾値データは、読み出された順（ｍ11，ｍ12，ｍ21，ｍ22の順）に並べるとｔｈ25，ｔｈ24，ｔｈ14，ｔｈ13となる。ディザ処理はコンペアウィンドウｃｗ10で表される順番、すなわちｔｈ13，ｔｈ14，ｔｈ24，ｔｈ25の順番で行われるため、ここでは閾値制御部１４がバレルシフトを行う。まず、閾値制御部１４は、ｔｈ25，ｔｈ24，ｔｈ14，ｔｈ13の順番で並んでいる閾値データのデータ列に対して、閾値データｔｈ14に相当する８ビットのデータと閾値データｔｈ13に相当する８ビットのデータとを入れ替える処理を行い、同時に閾値データｔｈ25に相当する８ビットのデータと閾値データｔｈ24に相当する８ビットのデータとを入れ替える処理を行う（図１８（２）参照）。その後、閾値制御部１４は、ｔｈ24，ｔｈ25，ｔｈ13，ｔｈ14の順番で並んでいる閾値データのデータ列から、閾値データｔｈ24，ｔｈ25に相当する先頭の１６ビットと閾値データｔｈ13，ｔｈ14に相当する末尾の１６ビットを入れ替えるようにバレルシフトを行う（図１８（３）参照）。すると、閾値データのデータ列はｔｈ13，ｔｈ14，ｔｈ24，ｔｈ25の順番で並ぶようになり、比較部１３において入力された画像データとの比較が可能となる。
なお、その他のコンペアウィンドウについても、上述したコンペアウィンドウｃｗ1〜ｃｗ10の場合とほぼ同様の要領で閾値データの読み出しが可能である。
【００４６】
以上に示されたように、本実施形態の画像処理装置１０１によれば、第１実施形態と同様に、１回のディザ処理に必要な閾値データを１クロック周期で同時に読み出すことができるので、上述の第１実施形態の画像処理装置１００と同様、安価で簡易な構成でありながらも、多様なディザ処理を高速に行うことが可能となる。
また、本実施形態の画像処理装置１０１においても、第１実施形態の画像処理装置１００と同じように、同一のメモリ内で複数のアドレスを指定するようなことがないから、閾値データをバッファリングする必要がない。よって、このようにディザ処理における出力解像度が複数のパターンとなっても、パイプライン遅延が生じることもない。
【００４７】
（３）閾値データの記憶方法
上述の第１，第２実施形態によって説明されたように、本発明に係る画像処理装置は、閾値マトリクスの記憶方法に特徴がある。閾値マトリクスの記憶方法は、上述の第１，第２実施形態に示された方法に限定されるものではなく、ディザ処理においてあらゆる閾値マトリクスのあらゆるコンペアウィンドウを適用する場合であっても、本発明の方法を適用することができる。そこで、ここでは閾値マトリクスの記憶方法を一般化して説明する。
【００４８】
まず、画像処理装置において必要なメモリの個数は、ディザ処理において適用されるコンペアウィンドウのサイズによって決定される。ここで、コンペアウィンドウの主走査方向の画素数をＭ，副走査方向の画素数をＮとすると、コンペアウィンドウはＮ行Ｍ列の閾値データの集合であるから、必要なメモリの個数は「Ｍ×Ｎ」個で表される。上述の第１，第２実施形態においては、コンペアウィンドウはそれぞれ４×１（＝４）、２×２（＝４）ピクセルで表されていたので、いずれも４個のメモリを用いている。
また、第２実施形態においては、メモリを２つのグループに分けて考えたが、このグループ分けにおけるグループ数についても、ディザ処理において適用されるコンペアウィンドウのサイズによって決定される。すなわち、ここでグループ数とは、コンペアウィンドウの副走査方向の画素数Ｎで表される。第２実施形態においては、コンペアウィンドウの副走査方向の画素数が「２」であったから、メモリを「２」つのグループに分けて考えたのである。なお、第１実施形態においてはコンペアウィンドウの副走査方向の画素数が「１」であり、グループ分けを行う必要がないので、特にグループ分けの概念を示さずに説明を行った。
【００４９】
次に、閾値データの具体的な配置（すなわち記憶）の手順について説明する。
閾値データの配置は、上述したグループの単位に基づいて行われる。すなわち、閾値マトリクスの第ｉ（１≦ｉ＜Ｎ）行の閾値データは、同一グループ内の複数のメモリにおいて交互に配置され、他のグループが存在する場合には、第（ｉ＋１）行の閾値データは、第ｉ行の閾値データを配置したグループとは異なるグループのメモリに配置される。そのため、第２実施形態においては、閾値マトリクスの第１行の閾値データはグループ１，第２行の閾値データはグループ２，第３行の閾値データはグループ１，というように、閾値マトリクスの連続する２行の閾値データが同一グループで連続しないように交互に配置されている。要するに、Ｎ行Ｍ列のコンペアウィンドウのＮの値が２以上の場合には、閾値マトリスク上のｉ行目の閾値データと、ｉ＋１行目の閾値データとが同じメモリに記憶されていると、これらの閾値データを同時に読み出せないことがあるので、連続する２行の閾値データを異なるグループ（ｋ番目のグループとｋ＋１番目のグループ；１≦ｋ＜Ｎ）のメモリに記憶している、というわけである。
【００５０】
以上のように閾値マトリクスの各行の閾値データが配置されていくが、このとき、各行について閾値データをすべて配置した後に、それぞれの行の先頭部分に相当する閾値データを冗長的に追加して配置する。この冗長的な閾値データとは、上述の第１実施形態であればメモリブロックｍｂ４3，ｍｂ１4，ｍｂ２4等の閾値データがこれに相当し（図７参照）、第２実施形態であればメモリブロックｍｂ１２6，ｍｂ２２6，ｍｂ１２12等の閾値データがこれに相当する（図１４参照）。
このように、閾値データを冗長的に配置することは、コンペアウィンドウが複数の閾値マトリクスにまたがるような場合（例えば、第１実施形態のコンペアウィンドウｃｗ3や第２実施形態のコンペアウィンドウｃｗ6のような場合）の読み出し動作の高速化に寄与している。例えば、第１実施形態において冗長的に付加された閾値データが存在しなかったとすると、コンペアウィンドウｃｗ3の読み出しには最低２回の読み出し動作が必要となってしまう。
【００５１】
この冗長的に配置される閾値データの個数も、ディザ処理において適用されるコンペアウィンドウのサイズによって決定される。すなわち、コンペアウィンドウの主走査方向の画素数をＭとすると、冗長的に配置される閾値データの個数は「Ｍ−１」で表される。上述の第１，第２実施形態においては、コンペアウィンドウの主走査方向の画素数がそれぞれ「４」および「２」となっているから、冗長的に配置される閾値データの個数はそれぞれ「３（＝４−１）」および「１（＝２−１）」となっている。
【００５２】
そして、上述の要領で閾値マトリクスのすべての行の閾値データを配置した後に、閾値マトリクスの行数がＮで割り切れない場合には、閾値マトリクスのはじめから「Ｎ−１」行分の閾値データを最終行の閾値データに続くようにして再度配置する（Ｎはコンペアウィンドウの副走査方向の画素数）。このとき、「Ｎ−１」が複数（すなわちＮが３以上）となる場合であれば、閾値マトリクスの第１行から第（Ｎ−１）行までの閾値データは、それぞれの行が互いに異なるグループに配置される。第２実施形態においては、グループ２のメモリｍ21，ｍ22のアドレス１２からアドレス１７に配置された「１（＝２−１）」行分の閾値データがこれに相当する。なお、第１実施形態においては、コンペアウィンドウの副走査方向の画素数が「１」であるため、上述の配置は行われない。
【００５３】
以上の説明をまとめると、次のようになる。なお、ここにおいても、コンペアウィンドウの主走査方向の画素数をＭ，副走査方向の画素数をＮとする。なお、Ｎ＝１の場合の動作は他の場合とは異なるため、別に説明を行う。
（Ａ）Ｎ＝１の場合
Ａ−１）  「Ｍ」個のメモリを画像処理部内部に設ける。
Ａ−２）  閾値マトリクスの各行の閾値データを、「Ｍ」個のメモリに対して交互に配置していく。
Ａ−３）閾値マトリクスの各行末尾の閾値データの後に、その行の先頭から「Ｍ−１」個の閾値データを連続してに配置する。
（Ｂ）Ｎ≧２の場合
Ｂ−１）  「Ｍ×Ｎ」個のメモリを画像処理部内部に設ける。
Ｂ−２）  「Ｍ×Ｎ」個のメモリを「Ｎ」個のグループに分ける。
Ｂ−３）  閾値マトリクスの各行の閾値データを、「Ｎ」個のグループに対して交互に配置していく。このとき、閾値データを各グループの「Ｍ」個のメモリに対して交互に配置していく。
Ｂ−４）  「Ｎ」個の各グループにおいて、閾値マトリクスの各行末尾の閾値データの後に、その行の先頭から「Ｍ−１」個の閾値データを連続してに配置する。
Ｂ−５）  閾値マトリクスの行数がＮで割り切れない場合には、閾値マトリクスの各行の閾値データを配置したら、閾値マトリクスのはじめから「Ｎ−１」行分の閾値データを、最終行の閾値データに続くように再度配置する。このとき、上述の４）も行う。
【００５４】
このような手順のもとに閾値データを配置することで、いかなる閾値マトリクスおよびコンペアウィンドウであっても、上述の第１，第２実施形態と同様の要領で閾値マトリクスの高速な読み出しが可能となる。
例えば図２０は、コンペアウィンドウの主走査方向の画素数は３，副走査方向の画素数は２の場合に、図２１に示す閾値マトリスクＭ3を構成する閾値データを上述の手順にしたがってメモリに記憶させた様子を示した図である。これらの図からわかるように、図２０のように閾値データを配置することにより、閾値マトリクスＭ3および３×２ピクセルのコンペアウィンドウを用いてディザ処理を行う場合であっても、１回のディザ処理に必要な閾値データを１クロック周期で同時に読み出すことができる。
【００５５】
以上に示されたことから、次の結論が導き出せる。すなわち、１回のディザ処理に必要な閾値データを１クロック周期（読み出し可能な最短周期）で同時に読み出すことを可能にするためには、画像処理装置の記憶部には、コンペアウィンドウを形成する閾値データの個数と同じ個数のメモリを設け、あるコンペアウィンドウに含まれる閾値データが同一のメモリ上に重複しないように配置されていればよい。このようにすれば、異なる複数の閾値データを同一のメモリから読み出すことがないので、１回のアドレス指定でコンペアウィンドウを形成する閾値データのすべてを読み出すことが可能となる。
【００５６】
（４）変形例
なお、本発明は上述した実施形態に限定されるものではなく、種々の変形が可能である。以下にその例を示す。
上述の第１実施形態においては、図７に示されているように、閾値マトリクスの各行の先頭の閾値データが記憶されているメモリはまちまちであったが、各行の先頭の閾値データを同一のメモリ内に記憶させることも可能である。
図２２は、閾値マトリクスの各行の先頭の閾値データを同一のメモリｍ1内に記憶させた状態を示した図である。なお、このとき適用されるコンペアウィンドウは４×１ピクセルであるとする。
同図においては、閾値マトリクスの各行の先頭の閾値データをメモリｍ1に記憶させるべく、アドレス３のメモリブロックｍｂ３4やｍｂ４4等はブランクとなっている。このようにすると、閾値マトリクスの各行の閾値データの読み出すアドレス演算が共通化されることとなり、アドレス演算をより容易に行うことが可能となる。例えば、コンペアウィンドウｃｗ1に含まれる閾値データを読み出すアドレス演算とコンペアウィンドウｃｗ2に含まれる閾値データを読み出すアドレス演算とでは、それぞれは指定するアドレス（つまり行）が異なるのみであって、その他の演算の論理はすべて同一となる。ゆえに、ディザ処理におけるアドレス演算を簡略化することが可能となる。
【００５７】
上述の第２実施形態においては、図１５に示されているように、ディザ処理を行う際にはシフト処理が行われている。ここで、このシフト処理のシフト設定数は２である。
このとき、グループ２のメモリｍ21，ｍ22のアドレス１２からアドレス１７に記憶させる閾値マトリクスの第１行の閾値データを、このシフト処理のシフト設定数Ｓに応じてずらすことにより、アドレス演算を容易にすることができる。具体的には、図２３に示されているように、グループ２のメモリｍ21，ｍ22のアドレス１２からアドレス１７に記憶させる閾値マトリクスの第１行の閾値データを２（＝シフト設定数Ｓ）個分だけずらして配置する。このようにした場合、閾値データ読み出し時におけるアドレス演算は、例えばコンペアウィンドウｃｗ9（図１５参照）を読み出す場合のアドレス指定がグループ１とグループ２とで同一となり、上述の第２実施形態の場合（図１７参照）よりも単純化されていることがわかる。
【００５８】
本発明に係る画像処理装置は、好ましくは電子写真方式等の画像形成装置に搭載される。本発明に係る画像処理装置は、画像形成装置内部においては、画像データに基づいた１ないし複数の色の色信号が入力され、それぞれの色信号に対してディザ処理を実行するものである。このとき、画像処理装置におけるＣＰＵやＲＯＭの機能は、画像形成装置自体が備えているＣＰＵやＲＯＭによって実現されてもよい。すなわち、本発明に係る画像処理装置は、画像処理部（例えば図５の１０や、図１３の１０’）のみの構成を有するＡＳＩＣ等のモジュールとして提供されることも可能である。
また、このような画像処理装置の適用は、上述の画像形成装置に限定されるものではなく、画像処理を実行するコンピュータ等に搭載されることももちろん可能である。
【図面の簡単な説明】
【００５９】
【図１】本発明者らによる画像処理装置の構成を示したブロック図である。
【図２】図１の画像処理装置におけるメモリの構成を示した模式図である。
【図３】図２のメモリに閾値マトリクスが記憶されている状態を示した模式図である。
【図４】ディザ処理を行う際のコンペアウィンドウを示した図である。
【図５】本発明の第１の実施形態に係る画像処理装置の構成を示したブロック図である。
【図６】同実施形態に係る画像処理装置における記憶部のメモリの構成を示した模式図である。
【図７】同実施形態においてメモリに閾値マトリクスを記憶させた状態を示した模式図である。
【図８】同実施形態において閾値データの読み出しに適用されるコンペアウィンドウを示した図である。
【図９】同実施形態において、コンペアウィンドウを用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。
【図１０】同実施形態において、コンペアウィンドウを用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。
【図１１】同実施形態において閾値制御部が行うバレルシフトを説明するための図である。
【図１２】複数の閾値マトリクスを記憶した記憶部を例示した図である。
【図１３】本発明の第２の実施形態に係る画像処理装置の構成を示したブロック図である。
【図１４】同実施形態においてメモリに閾値マトリクスを記憶させた状態を示した模式図である。
【図１５】同実施形態において閾値データの読み出しに適用されるコンペアウィンドウを示した図である。
【図１６】同実施形態において、コンペアウィンドウを用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。
【図１７】同実施形態において、コンペアウィンドウを用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。
【図１８】同実施形態において閾値制御部１４が行うバレルシフトを説明するための図である。
【図１９】同実施形態において、コンペアウィンドウを用いてディザ処理を行う場合の、メモリからの読み出し動作を説明するための図である。
【図２０】所定の手順にしたがって閾値データを配置した例を示した図である。
【図２１】図２０の例において用いられる閾値マトリクスを示した図である。
【図２２】閾値マトリクスの各行の先頭の閾値データを同一のメモリ内に記憶させた状態を示した図である。
【図２３】シフト設定数に応じて閾値データをずらして配置した場合のメモリを示した図である。
【図２４】閾値マトリクスの一例を示した図である。
【図２５】画像データに対してディザ処理を行う場合の閾値マトリクスの配置を示した図である。
【図２６】ディザ処理を行う一般的な画像処理装置の構成を示したブロック図である。
【符号の説明】
【００６０】
１００，１０１，２００，３００…画像形勢装置、１０，１０’，２０，３０…画像処理装置、１…ＣＰＵ，２…ＲＯＭ，１１，２１，３１…アドレス制御部、１２，１５，２２，３２…記憶部、１３，２３，３３…比較部、１４，２４…閾値制御部。
【図１】
2006050415.tif 000003
【図２】
2006050415.tif 000004
【図３】
2006050415.tif 000005
【図４】
2006050415.tif 000006
【図５】
2006050415.tif 000007
【図６】
2006050415.tif 000008
【図７】
2006050415.tif 000009
【図８】
2006050415.tif 000010
【図９】
2006050415.tif 000011
【図１０】
2006050415.tif 000012
【図１１】
2006050415.tif 000013
【図１２】
2006050415.tif 000014
【図１３】
2006050415.tif 000015
【図１４】
2006050415.tif 000016
【図１５】
2006050415.tif 000017
【図１６】
2006050415.tif 000018
【図１７】
2006050415.tif 000019
【図１８】
2006050415.tif 000020
【図１９】
2006050415.tif 000021
【図２０】
2006050415.tif 000022
【図２１】
2006050415.tif 000023
【図２２】
2006050415.tif 000024
【図２３】
2006050415.tif 000025
【図２４】
2006050415.tif 000026
【図２５】
2006050415.tif 000027
【図２６】
2006050415.tif 000028