(57)【要約】      （修正有）【課題】入力画素の階調値と複数の閾値データとを比較する場合でもリアルタイムにディザ処理を行うことができる画像処理装置を提供する。【解決手段】入力画像の各画素の階調値を閾値マトリクスを用いたディザ処理により変換して出力する画像処理装置の構成として、閾値マトリクスに配列される閾値データを格納するとともに、１ワード分のメモリ領域に入力画像の１つの画素サイズに対応する主走査方向の出力画素数分の閾値データを格納可能とし、かつ入力画像の１つの画素サイズに対応する副走査方向の出力画素数分の複数個の閾値格納メモリＭＥＭ１〜ＭＥＭ４と、複数個の閾値格納メモリのうち、それぞれに対応する閾値格納メモリから閾値データを読み出すとともに、出力画像の画素データを生成する複数のディザ処理部１１〜１４とを備え、複数個の閾値格納メモリに対して、それぞれ閾値マトリクスの各行に配列された閾値データを順に割り当てて格納する。【選択図】図１
2005094403.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の各画素の階調値を閾値マトリクスを用いたディザ処理により変換して出力する画像処理装置であって、
前記閾値マトリクスに配列される閾値データを格納するとともに、１ワード分のメモリ領域に前記入力画像の１つの画素サイズに対応する主走査方向の出力画素数分の閾値データを格納可能とし、かつ前記入力画像の１つの画素サイズに対応する副走査方向の出力画素数分の複数個の閾値格納メモリと、
前記複数個の閾値格納メモリのうち、それぞれに対応する閾値格納メモリから閾値データを読み出すとともに、この読み出した閾値データを前記入力画像の各画素の階調値と比較することにより、出力画像の画素データを生成する複数のディザ処理部とを備え、
前記複数個の閾値格納メモリに対して、それぞれ前記閾値マトリクスの各行に配列された閾値データを順に割り当てて格納してなる
ことを特徴とする画像処理装置。
【請求項２】
前記複数個の閾値格納メモリに対して、前記閾値マトリクスの最終行に続く冗長な行の閾値データを付加的に格納してなる
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記閾値格納メモリの１ワード分の各メモリ領域のうち、所定のメモリ領域に、前記閾値マトリクスの各行の最後列の閾値データと、これと同じ行の最前列からの閾値データを続けて格納してなる
ことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記ディザ処理部は、これに対応する前記閾値格納メモリから前記入力画像の１つの画素サイズに対応する主走査方向の出力画素数分の閾値データを順に読み出す読み出し手段と、この読み出し手段によって読み出された閾値データを一時的に格納する一時格納手段と、前記読み出し手段によって今回読み出された閾値データ及び前記読み出し手段によって前回読み出され且つ前記一時格納手段に格納された閾値データの中から入力画素の各画素の階調値との比較に必要となる閾値データを選択する選択手段と、この選択手段によって選択された閾値データを前記入力画素の各画素の階調値と比較し、その比較結果を出力する比較手段とを有する
ことを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記冗長な行の閾値データは、予め設定されたシフト情報にしたがってシフト処理されたデータである
ことを特徴とする請求項２記載の画像処理装置。
【請求項６】
前記ディザ処理部は、前記所定のメモリ領域に格納された閾値データの後に続く複数の閾値データを格納するサブ格納手段を有し、
前記選択手段は、今回の選択処理で、前記閾値格納メモリの前記所定のメモリ領域から読み出された閾値データの少なくとも１つを前記入力画素の各画素の階調値との比較に必要となる閾値データとして選択した場合に、次回の選択処理で、前記サブ格納手段に格納された複数の閾値データ及び前記読み出し手段によって前記所定のメモリ領域から前回読み出され且つ前記一時格納手段に格納された閾値データの中から入力画素の各画素の階調値との比較に必要となる閾値データを選択する
ことを特徴とする請求項４記載の画像処理装置。
【請求項７】
前記読み出し手段は、前記選択手段による前回の選択処理で、前記閾値格納メモリの前記所定のメモリ領域から読み出された閾値データの少なくとも１つを前記入力画素の各画素の階調値との比較に必要となる閾値データとして前記選択手段が選択した場合に、当該選択手段が選択した閾値データの中に前記最後列の閾値データが含まれるか否かに応じて、前記閾値格納メモリから閾値データを読み出すときの読み出し順序を切り替える
ことを特徴とする請求項４記載の画像処理装置。
【請求項８】
前記一時格納手段は複数のバッファ手段からなるものであって、
前記閾値マトリクスの異なる行の閾値データを、前記読み出し手段による前記閾値格納メモリからの複数回の読み出し動作によって前記複数のバッファ手段に順に格納するとともに、各々のバッファ手段からの閾値データの取り出し順序を主走査方向で制御することにより、出力解像度を変更可能とした
ことを特徴とする請求項４記載の画像処理装置。
【請求項９】
前記読み出し手段は、前記選択手段が選択した閾値データの中に前記最後列の閾値データが含まれる場合は、前記閾値格納メモリから１ワード分だけ飛ばして閾値データを読み出し、前記選択手段が選択した閾値データの中に前記最後列の閾値データが含まれない場合は、前記閾値格納メモリから連続的に閾値データを読み出す
ことを特徴とする請求項７記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、閾値マトリクスを用いてディザ処理を行う画像処理装置に関する。
【背景技術】
【０００２】
画像処理装置で行われる画像処理の一つの形態として、原画像の階調値を画像出力装置で出力（表現）可能な階調値に変換して擬似的に再現するディザ法が知られている。ディザ法では、原画像を構成する各画素の階調値を、閾値マトリクスに配列された閾値データと比較することにより、出力画像の階調値を決定する。出力画像の階調値が２値となるものは２値ディザ法、多値となるものは多値ディザ法と呼ばれる。
【０００３】
図１４は従来の画像処理装置の構成例を示す概略図である。図において、アドレス制御部５１は、閾値格納用のメモリ５２に対して閾値読み出しのためのメモリアドレス（以下、単に「アドレス」とも記す）を指定するものである。閾値格納メモリ５２は、ディザ処理に用いられる閾値マトリクスの各位置（マトリクス要素）に対応する閾値データを記憶するものである。比較部５３は、これに入力される入力画像データの各画素の階調値と、これに対応してメモリ５２から読み出された閾値データとを比較するとともに、この比較結果に基づいて階調変換された出力画像の画素データを生成するものである。
【０００４】
ここで、上記ディザ法に基づく処理（ディザ処理）で使用される閾値マトリクスが例えば図１５に示すように４×４のマトリクス構成（マトリクス内の閾値はTh00〜Th15の符号で識別）である場合は、この閾値マトリクス内に配列される閾値データTh00〜Th15がメモリ５２に格納される。この場合、メモリ５２において、１つのアドレスに１つの閾値データを格納することが公知となっている（例えば、特許文献１参照）。
【０００５】
そして、実際にディザ処理を行う場合は、図１６に示すように、所定の周波数のクロックに同期してアドレス制御部５１が０番地〜１５番地のアドレスを順に指定してメモリ５２から閾値データ(Th00〜Th15)を順次読み出すとともに、この読み出した閾値データ(Th00〜Th15)と入力画像の階調値(Vi00,Vi01，…)とを比較部５３で比較し、この比較結果に基づいて出力画像の階調値(Vo00,Vo01，…)を生成するものとなっている。これにより、代表的な２値ディザ法である組織的ディザ法では、例えば、原画像を４×４画素や８×８画素のブロックに分割し、各々のブロックごとに、入力画素の階調値がこれに対応するマトリクス位置の閾値データよりも大きい場合は白（１）、小さい場合は黒（０）とすることによって入力画像を２値化する。
【０００６】
【特許文献１】特開平４−２０５６７５号公報（第４図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、入力画像の解像度（以下、「入力解像度」とも記す）と出力画像の解像度（以下、「出力解像度」とも記す）が同じ場合は、入力画素の数と出力画素の数が１：１の関係となる。そのため、ディザ処理を行う場合は、１つの入力画素を１つの閾値データと比較することになる。したがって、上記クロックに同期してリアルタイムにディザ処理を行うことができる。
【０００８】
しかしながら、入力解像度よりも出力解像度が高い場合や、入力画像を複数の画素からなるブロック単位でディザ処理する場合などでは、比較部５３で入力画素の階調値と比較される閾値データが複数必要になる。そうした場合、上記従来技術のように１つのアドレス（１ワード分のメモリ領域）に１つの閾値データを格納する方式では、メモリ５２からの閾値の読み出し動作に合わせてリアルタイムにディザ処理を行うことができなくなる。
【０００９】
一例として、画像の解像度を主走査方向（横方向）の単位長さ当たりの画素数(dpi：ドット／インチ)と副走査方向（縦方向）の単位長さ当たりの画素数(dpi)で表すものとすると、入力解像度が６００×６００(dpi)で、出力解像度が１２００×１２００(dpi)である場合は、低解像度から高解像度への変換となるために、１つの入力画素に対して４つの出力画素を生成することになる。そのため、図１７に示すように、入力画像の各画素の階調値をそれぞれ４つの閾値データと比較する必要がある。そうした場合、上記従来の画像処理装置の構成では、クロックに同期したアドレス制御部５１からのアドレス指定により、４クロックかけてメモリ５２から読み出した４つの閾値データを、比較部５３で１つの入力画素の階調値と比較することになる。そのため、メモリ５２からの閾値データの読み出しに合わせてリアルタイムにディザ処理が行われず、トータルの処理時間が長くなってしまう。
【００１０】
この対策としては、メモリ５２に閾値データを格納する場合に、１つのアドレスに複数の閾値データをまとめて格納し、１つのアドレス指定で複数の閾値データを読み出し可能とすることも考えられるが、その場合は装置の構成上、閾値マトリクスが固定（不変）の扱いとなる。一般にｍ×ｎの閾値マトリクスの形状（ｍ，ｎの値）は固定の扱いではなく、装置状態（印刷用の色材の付着度合いなど）の経時的な変化や、Ｙ（イエロー），Ｍ（マゼンタ），Ｃ（シアン），Ｋ（ブラック）の各色のスクリーン角度、シフト量等に応じて可変の扱いにする必要がある。また、汎用性の観点からしても、複数の入力解像度や出力解像度に対応して閾値マトリクスの形状、サイズ等を可変できるように装置を構成しておく必要がある。そのため実際の装置では、閾値マトリクスを固定の扱いにすることはできなかった。
【００１１】
本発明は、上記課題を解決するためになされたもので、その目的とするところは、入力画素の階調値と複数の閾値データとを比較する場合でもリアルタイムにディザ処理を行うことができるとともに、ディザ処理に使用する閾値マトリクスの形状を任意に変更することができる画像処理装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明に係る画像処理装置は、入力画像の各画素の階調値を閾値マトリクスを用いたディザ処理により変換して出力する画像処理装置であって、閾値マトリクスに配列される閾値データを格納するとともに、１ワード分のメモリ領域に入力画像の１つの画素サイズに対応する主走査方向の出力画素数分の閾値データを格納可能とし、かつ入力画像の１つの画素サイズに対応する副走査方向の出力画素数分の複数個の閾値格納メモリと、複数個の閾値格納メモリのうち、それぞれに対応する閾値格納メモリから閾値データを読み出すとともに、この読み出した閾値データを入力画像の各画素の階調値と比較することにより、出力画像の画素データを生成する複数のディザ処理部とを備え、複数個の閾値格納メモリに対して、それぞれ閾値マトリクスの各行に配列された閾値データを順に割り当てて格納してなるものである。
【００１３】
この画像処理装置においては、入力画像の１つの画素サイズに対応する副走査方向の出力画素数分の複数個の閾値格納メモリを備えるとともに、各々の閾値格納メモリの１ワード分のメモリ領域に入力画像の１つの画素サイズに対応する主走査方向の出力画素数分の閾値データを格納可能としたので、各々の閾値格納メモリからの１回の読み出し動作によって、入力画像の各画素の階調値との比較に必要な閾値データを各々のディザ処理部で同時に読み出すことが可能となる。また、複数個の閾値格納メモリに対して、それぞれ閾値マトリクスの各行に配列された閾値データを順に割り当てて格納することにより、各々の閾値格納メモリからの閾値データの読み出しを、これに対応する個々のディザ処理部で個別に制御することが可能となる。
【発明の効果】
【００１４】
本発明の画像処理装置によれば、入力画像と出力画像の解像度の違いにより、入力画像の各画素の階調値と複数の閾値データとを比較する場合でも、１回の読み出し動作によって、入力画像の各画素の階調値との比較に必要な複数の閾値データを複数個の閾値格納メモリから同時に読み出すことができる。そのため、閾値の読み出し動作に合わせてリアルタイムにディザ処理を行うことが可能となる。また、各々の閾値格納メモリからの閾値データの読み出しを、これに対応する個々のディザ処理部で個別に制御することにより、閾値マトリクスの形状、サイズ、シフト量等に柔軟に対応することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の具体的な実施の形態について図面を参照しつつ詳細に説明する。
【００１６】
図１は本発明の実施形態に係る画像処理装置のモジュール構成を示す概略図である。図示した画像処理装置のモジュール内部には、ディザ処理に使用する閾値データを格納するための閾値格納手段となる複数個（図例では最前の１個だけ表示）の閾値格納メモリ（以下、「メモリ」と略称）ＭＥＭ１〜ＭＥＭ４と、これに対応する複数（図例では４つ）のディザ処理部１１〜１４とが設けられている。複数個のメモリＭＥＭ１〜ＭＥＭ４と複数のディザ処理部１１〜１４とが、互いに１：１の関係で対応している。すなわち、メモリＭＥＭ１はディザ処理部１１に対応し、メモリＭＥＭ２はディザ処理部１２に対応し、メモリＭＥＭ３はディザ処理部１３に対応し、メモリＭＥＭ４はディザ処理部１４に対応している。
【００１７】
また、各々のディザ処理部１１〜１４には、モジュールに入力されるラインシンクLS-i及びページシンクPS-iとともに、入力画像の各画素の階調値が８ビットのデジタルデータDATA-In［7:0］として個別に供給される構成となっている。ラインシンクLSは、入力画像の各ラインを処理するごとに出力される同期信号（水平同期信号）であり、ページシンクPSは、入力画像の各ページを処理するごとに出力される同期信号である。
【００１８】
メモリＭＥＭ１〜ＭＥＭ４の個数は、入力画像の１つの画素サイズに相当する副走査方向の出力画素数に対応して設定されている。具体例として、ディザ処理の対象として入力される入力画像の解像度が６００×６００(dpi)で、ディザ処理によって出力される出力画像の解像度が４８００×２４００(dpi)である場合は、図２に示すように、入力画素の１つの画素サイズが出力画像の８×４画素（合計で３２画素）サイズに相当するものとなる。したがって、入力画像の１つの画素サイズに対応する副走査方向の出力画素数は４個となる。そのため本実施形態では、この４個分（副走査方向の出力画素数分）のメモリＭＥＭ１〜ＭＥＭ４が用意されている。このメモリの個数は、それぞれ画像処理システムで想定される、出力画像の副走査方向の最高解像度を入力画像の副走査方向の最低解像度で割った数（除算値）に応じて用意すればよい。
【００１９】
一例として、出力画像の副走査方向の最高解像度が２４００dpiで、入力画像の副走査方向の最低解像度が６００dpiである場合は、４個のメモリを用意すればよい。また、出力画像の副走査方向の最高解像度が１２００dpiで、入力画像の副走査方向の最低解像度が６００dpiである場合は、２個のメモリを用意すればよい。
【００２０】
各々のメモリＭＥＭ１〜ＭＥＭ４には、例えば、上述のように入力画像の各画素の階調値が８ビット（２５６階調）のデジタルデータで入力されるものとすると、これと比較される８ビットの閾値データ（デジタルデータ）を、１ワード分のメモリ領域に８画素分だけ格納できるように、６４ビット×２５６ワードのメモリ構成が採用されている。１ワード分のメモリ領域とは、１つのメモリアドレスの指定で読み出し及び書き込みが可能なメモリ空間上の領域をいう。各々のメモリＭＥＭ１〜ＭＥＭ４の１ワード分のメモリ領域に格納される閾値データの個数は、入力画像の１つの画素サイズに対応する主走査方向の出力画素数分に設定される。例えば、上記同様にディザ処理の対象として入力される入力画像の解像度が６００×６００(dpi)で、ディザ処理によって出力される出力画像の解像度が４８００×２４００(dpi)である場合は、上記図２に示すように入力画素の１つの画素サイズが出力画像の８×４画素（合計で３２画素）サイズに相当するものとなるため、入力画像の１つの画素サイズに対応する主走査方向の出力画素数は８個となる。そのため本実施形態では、この８個分（主走査方向の出力画素数分）の閾値データを、各々のメモリＭＥＭ１〜ＭＥＭ４の１ワード分のメモリ領域に格納できる構成となっている。
【００２１】
また、複数個のメモリＭＥＭ１〜ＭＥＭ４に対しては、それぞれ閾値マトリクスの各行に配列された閾値データを順に割り当てて格納するものとなっている。ここで、説明の便宜上、ディザ処理に使用する閾値マトリクスの構成を、主走査方向にｍ個の閾値データ、副走査方向にｎ個の閾値データといった具合にｍ×ｎの大きさ（ｎは正の整数）で表記するものとし、この閾値マトリクスの構成が図３に示すように１００×１０のマトリクスであるとする。また、マトリクス内の位置を特定するためのアドレス情報として、閾値マトリクスの１行目に０〜９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの２行目に１００〜１９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの３行目に２００〜２９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの４行目に３００〜３９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの５行目に４００〜４９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの６行目に５００〜５９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの７行目に６００〜６９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの８行目に７００〜７９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの９行目に８００〜８９９の１００個（ｍ個）のマトリクス番号を、閾値マトリクスの１０行目（ｎ行目）に９００〜９９９のマトリクス番号を、それぞれ割り当てるものとする。そうした場合、閾値マトリクスにｍ×ｎで配列される各々（合計１０００個）の閾値データは、以下のような格納方式で各々のメモリＭＥＭ１〜ＭＥＭ４に分配して格納される。
【００２２】
すなわち、閾値マトリクスの１行目に配列される１００個（マトリクス番号０〜９９）の閾値データは、図４に示すように、メモリＭＥＭ１に割り当てて格納する。このとき、メモリＭＥＭ１の１ワード分のメモリ領域（３２ビットのビット列）には８個の閾値データを格納可能となっているため、それぞれ１ワード分のメモリ領域に８個ずつ閾値データを格納する。また、閾値マトリクスの１行目の最後列（主査走査方向のマトリクスの終端）に配列されるマトリクス番号９９の閾値データを格納するメモリ領域（所定のメモリ領域）において、マトリクス番号９９の閾値データの後に空き領域が生じる場合は、この空き領域を埋めるかたちで、マトリクス番号９９の閾値データと同じ行（１行目）の最前列（マトリクス番号０）からの閾値データを続けて格納する。つまり、最後列の閾値データが格納される所定のメモリ領域に対しては、その最後列の閾値データの後に同じ行の最前列からの閾値データを続けて格納する。上記図４の場合は、所定のメモリ領域において、マトリクス番号９９の閾値データをメモリＭＥＭ１に格納した状態で、その後に４個分の閾値データを格納する空き領域が生じるため、この空き領域にマトリクス番号０〜４の閾値データを格納する。
【００２３】
これと同様に、閾値マトリクスの２行目に配列される１００個（マトリクス番号１００〜１９９）の閾値データはメモリＭＥＭ２に割り当てて格納し、閾値マトリクスの３行目に配列される１００個（マトリクス番号２００〜２９９）の閾値データはメモリＭＥＭ３に割り当てて格納し、閾値マトリクスの４行目に配列される１００個（マトリクス番号３００〜３９９）の閾値データはメモリＭＥＭ４に割り当てて格納する。また、閾値マトリクスの５行目に配列される１００個（マトリクス番号４００〜４９９）の閾値データは上記１行目の閾値データに続いてメモリＭＥＭ１に割り当てて格納し、閾値マトリクスの６行目に配列される１００個（マトリクス番号５００〜５９９）の閾値データは上記２行目の閾値データに続いてメモリＭＥＭ２に割り当てて格納し、閾値マトリクスの７行目に配列される１００個（マトリクス番号６００〜６９９）の閾値データは上記３行目の閾値データに続いてメモリＭＥＭ３に割り当てて格納し、閾値マトリクスの８行目に配列される１００個（マトリクス番号７００〜７９９）の閾値データは上記４行目の閾値データに続いてメモリＭＥＭ４に割り当てて格納する。さらに、閾値マトリクスの９行目に配列される１００個（マトリクス番号８００〜８９９）の閾値データは上記１行目及び５行目の閾値データに続いてメモリＭＥＭ１に割り当てて格納し、閾値マトリクスの１０行目に配列される１００個（マトリクス番号９００〜９９９）の閾値データは上記２行目及び６行目の閾値データに続いてメモリＭＥＭ２に割り当てて格納する。以上で、ディザ処理用の閾値マトリクスに配列される全て（合計１０００個）の閾値データが、図５に示すように、４つのメモリＭＥＭ１〜ＭＥＭ４に順に割り当てて格納されることになる。
【００２４】
この場合、ディザ処理に使用する閾値マトリクスの構成（サイズ、形状等）が変更になっても、共通のメモリＭＥＭ１〜ＭＥＭ４で対応することができる。例えば、ディザ処理に使用する閾値マトリクスの構成を５０×５マトリクスとする場合は、各々のメモリＭＥＭ１〜ＭＥＭ４で閾値データの格納に使用されるメモリ領域の大きさ（メモリ使用率）が変わるだけで、装置構成は共通のものとなる。また、各々のメモリＭＥＭ１〜ＭＥＭ４に格納された閾値データの読み出しは、それぞれに対応するディザ処理部１１〜１４で個別に制御することができる。そのため、閾値マトリクスの構成が変更になっても、それに応じて閾値データの読み出しを適切に制御することができる。
【００２５】
さらに、本実施形態においては、上記１０００個の閾値データに加えて、４つのメモリＭＥＭ１〜ＭＥＭ４のうち、閾値マトリクスの最終行（ｎ行目）の閾値データを格納するメモリＭＥＭ２に続く、他の３つのメモリＭＥＭ３、ＭＥＭ４，ＭＥＭ１に対し、閾値マトリクスの最終行（本例では１０行目）に続く冗長な行の閾値データを付加的に格納するものとなっている。ここで、「冗長な行」という用語は、既にメモリＭＥＭ１〜ＭＥＭ４に閾値データを格納してある閾値マトリクスの行と同じ行（重複した行）という意味で用いている。この冗長な行の閾値データは、上記図５に示すように、メモリＭＥＭ１〜ＭＥＭ４の個数から１だけ減算した、（メモリ個数−１）行分にわたって、上記３つのメモリＭＥＭ３、ＭＥＭ４，ＭＥＭ１に割り当てて格納する。
【００２６】
すなわち、メモリＭＥＭ３には、上記３行目及び７行目の閾値データ（マトリクス番号２００〜２９９、６００〜６９９の閾値データ）に続いて閾値マトリクスの１行目に配列される１００個（マトリクス番号０〜９９）の閾値データを格納し、メモリＭＥＭ４には、上記４行目及び８行目の閾値データ（マトリクス番号３００〜３９９、７００〜７９９の閾値データ）に続いて閾値マトリクスの２行目に配列される１００個（マトリクス番号１００〜１９９）の閾値データを格納し、メモリＭＥＭ１には、上記１行目、５行目及び９行目の閾値データ（マトリクス番号０〜９９、４００〜４９９、８００〜８９９の閾値データ）に続い閾値マトリクスの３行目に配列される１００個（マトリクス番号２００〜２９９）の閾値データを格納する。
【００２７】
さらに、メモリＭＥＭ３、ＭＥＭ４、ＭＥＭ１に格納される冗長な行（１行目、２行目、３行目）の閾値データ（図５に＊印で示す閾値データ）は、予め設定されたシフト情報にしたがってシフト処理されたデータとすることが望ましい。シフト情報は、入力画像の各ラインを順に処理していく過程で、閾値マトリクスの位置が副走査方向に１段ずれるときに、閾値マトリクスの位置を主走査方向（右方向、又は左方向）にずらす、いわゆるシフト処理を行うための情報であって、ドットスクリーンの角度等に応じて適宜設定される。例えば、シフト情報として「右方向に２シフト」と設定されていた場合は、これに適合するように、冗長な行の閾値データをメモリＭＥＭ３、ＭＥＭ４、ＭＥＭ１に格納する際の格納順序を切り替える。
【００２８】
例えば、メモリＭＥＭ３には冗長な行の閾値データとして１行目（マトリクス番号０〜９９）の閾値データが格納されるが、このときの格納順序を上記シフト情報に応じてマトリクス番号０から２だけシフトさせたマトリクス番号９８，９９，０，１，…，９７の順序で格納する。同様に、メモリＭＥＭ４には冗長な行の閾値データとして２行目（マトリクス番号１００〜１９９）の閾値データが格納されるが、このときの格納順序をマトリクス番号１９８，１９９，１００，１０１，…，１９７の順とする。また、メモリＭＥＭ１には冗長な行の閾値データとして３行目（マトリクス番号２００〜２９９）の閾値データが格納されるが、このときの格納順序をマトリクス番号２９８，２９９，２００，２０１，…，２９７の順とする。以上のような閾値データの格納（書き込み）は、ディザ処理の条件等に応じて、図示しないデータ書き込み手段により行われる。このデータ書き込み手段による閾値データの書き込み順序に合わせて、所望の閾値データをシリアルにモジュール内の各メモリＭＥＭ１〜ＭＥＭ４に格納することにより、閾値マトリクス内に配列される全ての閾値データが複数個のメモリＭＥＭ１〜ＭＥＭ４に分配して格納される。
【００２９】
一方、各々のディザ処理部１１〜１４は、上記複数個（本形態では４個）の閾値格納メモリＭＥＭ１〜ＭＥＭ４のうち、それぞれに対応する閾値格納メモリから閾値データを読み出すとともに、この読み出した閾値データを入力画像の各画素の階調値と比較することにより、出力画像の画素データを生成するものである。さらに詳述すると、ディザ処理部１１は、これに対応するメモリＭＥＭ１から閾値データを読み出して、これを入力画像の各画素の階調値と比較することにより、出力画像の画素データ（階調データ）を生成し、ディザ処理部１２は、これに対応するメモリＭＥＭ１２から閾値データを読み出して、これを入力画像の各画素の階調値を比較することにより、出力画像の画素データを生成するものである。また、ディザ処理部１３は、これに対応するメモリＭＥＭ３から閾値データを読み出して、これを入力画像の各画素の階調値と比較することにより、出力画像の画素データを生成し、ディザ処理部１４は、これに対応するメモリＭＥＭ４から閾値データを読み出して、これを入力画像の各画素の階調値と比較することにより、出力画像の画素データを生成するものである。
【００３０】
また、ディザ処理部１１は、メモリ制御処理部１１１と、バッファ処理部(BUFF)１１２と、比較処理部１１３とを備えた構成となっている。メモリ制御処理部１１は、ディザ処理部１１に対応するメモリＭＥＭ１に対して閾値データを読み出すための読み出しアドレス(RADD)を生成する第１の生成処理と、メモリＭＥＭ１からバッファ処理部１１２へと読み出された閾値データの中から、比較処理部１１３での比較処理に必要な閾値データをバッファ処理部１１２から比較処理部１１３へと出力させるための制御信号を生成する第２の生成処理とを行うものである。バッファ処理部１１２は、メモリ制御処理部１１から生成された読み出しアドレス(RADD)に対応してメモリＭＥＭ１から読み出された閾値データ（RDATA）を順に取り込むとともに、この取り込んだ閾値データの中から、メモリ制御処理部１１１が生成する制御信号にしたがって、比較処理部１１３での比較処理に必要な閾値データを選択して比較処理部１１３に与えるものである。比較処理部１１３は、１つの入力画素の階調値とこれに対応してバッファ処理部１１２から与えられた閾値データとを比較し、この比較結果を出力画像の画素データDATA-oとして出力するものである。この比較処理部１１３では、１つの入力画素に対応して複数の閾値データがバッファ処理部１１２から与えられた場合に、１つの入力画素の階調値とこれに対応する複数の閾値データとの大小関係を同時に比較処理する。そして、入力画素の階調値よりも閾値データが小さいマトリクス位置の画素は白（１）で出力し、入力画素の階調値よりも閾値データが大きいマトリクス位置の画素は黒（０）で出力する。
【００３１】
図６はバッファ処理部１１２の内部構成を示すブロック図である。図示のようにバッファ処理部１１２は、第１のバッファメモリＢＭ１と、第２のバッファメモリＢＭ２と、第１のセレクタＳＥＬ１と、第２のセレクタＳＥＬ２と、バレルシフタＢＳＨとを備えた構成となっている。第１のバッファメモリＢＭ１は、メモリ制御部１１１からの１回の読み出しアドレス(RAD)の指定でメモリＭＥＭ１から読み出される８個分（６４ビット分）の閾値データRDATA[63:0]を一時的に格納するものである。この第１のバッファメモリＢＭ１に格納される８個の閾値データは、メモリ制御部１１から指定された読み出しアドレスにしたがってメモリＭＥＭ１から新たな閾値データが読み出されるたびに随時更新（上書き）される。第２のバッファメモリＢＭ２は、入力画像の各ライン（画素列）を処理するにあたって、所定の７個分（５６ビット列分）の閾値データを格納するために使用されるものである。第２のバッファメモリＢＭ２に格納される７個の閾値データは、バレルシフタＢＳＨから比較処理部１１３へと出力される８個分（６４ビット列分）の閾値データBUFF[63:0]から、メモリ制御処理部１１１からの制御信号（選択信号）にしたがって選択される。
【００３２】
第１のセレクタＳＥＬ１には、第２のバッファメモリＢＭ２に格納された７個分の閾値データと、メモリ制御部１１１からの１回の読み出しアドレス(RADD)の指定でメモリＭＥＭ１から読み出される８個分（６４ビット分）の閾値データRDATA[63:0]のうちの７個（上位５６ビット）の閾値データがそれぞれ入力される。これに対して、第１のセレクタＳＥＬ１は、これに入力される合計１４個分（１１２ビット分）の閾値データの中から、メモリ制御処理部１１１からの制御信号（選択信号）にしたがって７個（５６ビット分）の閾値データを選択し、これを第２のセレクタＳＥＬ２に与える。第２のセレクタＳＥＬ２には、第１のセレクタＳＥＬ１で選択された７個の閾値データと、第１のバッファメモリＢＭ１に格納された８個の閾値データがそれぞれ入力される。これに対して、第２のセレクタＳＥＬ２は、これに入力される合計１５個（１２０ビット分）の閾値データの中から、メモリ制御処理部１１１からの制御信号（選択信号）にしたがって８個（６４ビット分）の閾値データを選択し、これをバレルシフタＢＳＨに与える。バレルシフタＢＳＨは、第２のセレクタＳＥＬ２で選択された８個の閾値データを、現在設定されているシフト情報にしたがってバレルシフトさせることにより、８個の閾値データBUFFO[63:0]を主走査方向で適宜並べ替えて出力するものである。バレルシフタＢＳＨによる閾値データの並べ替えは、メモリ制御処理部１１１からの制御信号にしたがって行われる。
【００３３】
以上、ディザ処理部１１の構成について詳細に説明したが、他の３つのディザ処理部１２，１３，１４についてもディザ処理部１１と同様の構成となっている。したがって、各々のディザ処理部１１，１２，１３，１４の処理動作は基本的に同様のものとなるため、ここではディザ処理部１１の処理動作についてのみ詳細に説明することとする。また、ディザ処理の条件の一例として、ディザ処理に使用する閾値マトリクスには上記図３に示す１００×１０のマトリクス構成を採用するものとする。また、入力画像の解像度を６００×６００(dpi)とし、出力画像の解像度を４８００×２４００(dpi)とする。
【００３４】
先ず、図７に示すタイミングチャートにおいて、基準クロックCLKに同期してページシンクPS-i及びラインシンクLS-iが順に立ち上がると、ラインシンクLS-iの立ち上がりタイミングをトリガとして、入力画像の各画素の階調値データDATA-In［7:0］が１クロックCLKごとに入力される。その際、基準クロックCLKに同期して第１のバッファメモリＢＭ１への閾値データの書き込み信号と第２のバッファメモリＢＭ２への閾値データの書き込み信号を順に立ち上げる。
【００３５】
これにより、入力画像の各ラインを処理する際には、この処理の開始に先だって図８（Ａ）に示すように、第２のバッファメモリＢＭ２に７個の閾値データが書き込まれる。このとき、第２のバッファメモリＢＭ２に書き込まれる閾値データは、メモリＭＥＭ１内の１ワード分のメモリ領域のうち、閾値マトリクスの１行目の最後列に配列される閾値データ（つまりマトリクス番号９９の閾値データ）を含む所定のメモリ領域に格納された閾値データの後に続く閾値データとなる。この場合、所定のメモリ領域には、上記図４に示すようにマトリクス番号９６〜３の閾値データが格納されているため、これに続く複数の閾値データとしてマトリクス番号４〜１０の７個の閾値データが第２のバッファメモリＢＭ２に格納される。第２のバッファメモリＢＭ２に格納される閾値データの個数は、メモリＭＥＭ１の１ワード分のメモリ領域に格納可能な閾値データの個数（本例では８個）から１だけ減算した値とする。こうして第２のバッファメモリＢＭ２に格納された閾値データは、入力画像の１ライン分の処理が終了するまで（次にラインシンクLS-iが立ち上がるまで）保持される。
【００３６】
次いで、メモリＭＥＭ１から８個の閾値データRDATA[63:0]が順に読み出されるとともに、この読み出された８個の閾値データRDATA[63:0]が第１のバッファメモリＢＭ１に順に書き込まれ、そこに一時的に保存される。さらに、第１のバッファメモリＢＭ１に書き込まれた８個の閾値データは、第２のセレクタＳＥＬ２に入力される。一方、第１のセレクタＳＥＬ１には、第２のバッファメモリＢＭ２に格納された７個の閾値データとメモリＭＥＭ１から読み出された７個（上位７ビット）の閾値データとが入力される。このとき、第１のセレクタＳＥＬ１は、メモリ制御処理部１１１からの制御信号にしたがって７個の閾値データを選択し、これを第２のセレクタＳＥＬ２に与える。ただし、入力画像のラインを処理する途中で且つメモリＭＥＭ１の所定のメモリ領域に格納された８個の閾値データ（マトリクス番号９６〜３）が第１のバッファメモリＢＭ１に格納されるまでの間、第２のセレクタＳＥＬ２は、第１のバッファメモリＢＭ１から入力された８個の閾値データを順に選択してバレルシフタＢＳＨに出力する。例えば、ライン処理の途中で、図８（Ｂ）に示すように、マトリクス番号４８〜５５の閾値データが第１のバッファメモリＢＭ１から第２のセレクタＳＥＬ２に入力された場合は、この８個の閾値データを第２のセレクタＳＥＬ２で選択してバレルシフタＢＳＨに出力する。
【００３７】
また、ライン処理の途中で、図８（Ｃ）に示すように、マトリクス番号９６〜３の閾値データが第１のバッファメモリＢＭ１から第２のセレクタＳＥＬ２に入力された場合は、この８個の閾値データを第２のセレクタＳＥＬ２で選択してバレルシフタＢＳＨに出力する。そうした場合、次の処理では、図８（Ｄ）に示すように、第１のバッファメモリＢＭ１にマトリクス番号０〜７の閾値データが書き込まれた状態で、メモリＭＥＭ１から新たに８個の閾値データ、すなわちマトリクス番号８〜１５の閾値データRDATAが読み出される。このとき、前回の処理（図８（Ｃ）の処理）では、マトリクス番号３までの閾値データを出力しているため、これに連続させるためには、マトリクス番号４からの閾値データを８個出力する必要がある。
【００３８】
これに対して、第１のバッファメモリＢＭ１には、マトリクス番号０〜７の閾値データが格納されているため、これら８個の閾値データが第２のセレクタＳＥＬ２に入力される。また、メモリＭＥＭ１から新たに読み出された８個の閾値データRDATA（マトリクス番号８〜１５の閾値データ）のうち、上位７ビットに相当するマトリクス番号８〜１４の閾値データが、第２のバッファメモリＢＭ２に格納された７個の閾値データとともに、第１のセレクタＳＥＬ１に入力されると、第１のセレクタＳＥＬ１では、メモリ制御処理部１１１からの制御信号にしたがって、マトリクス番号８〜１４（新たにメモリＭＥＭ１から読み出した方）の閾値データを選択し、これを第２のセレクタＳＥＬ２に与える。その結果、第２のセレクタＳＥＬ２には、マトリクス番号０〜７の閾値データと、マトリクス番号８〜１４の閾値データとが入力される。そこで、第２のセレクタＳＥＬ２では、メモリ制御処理部１１１からの制御信号にしたがって、マトリクス番号４から始まる８個の閾値データ、つまりマトリクス番号４〜１１の閾値データを選択し、これをバレルシフタＢＳＨに与える。以降、同様の処理により、マトリクス番号が連続するかたちで８個の閾値データが第２のセレクタＳＥＬ２からバレルシフタＢＳＨへと順に出力される。
【００３９】
こうして閾値マトリクスの１行目に配列された閾値データをメモリＭＥＭ１から順に読み出してバッファ処理部１１２に取り込み、入力画素の各画素の階調値との比較に必要となる８個の閾値データBUFFO[63:0]をバッファ処理部１１２から比較処理部１１３に順に出力すると、その後再び閾値マトリクスの主走査方向の終端となるマトリクス番号９９の閾値データをメモリＭＥＭ１から読み出して処理するときに、閾値マトリクスの主走査方向の終端付近での閾値データの出力形式が図９（Ａ）のようになる。すなわち、第１のバッファメモリＢＭ１に格納されたマトリクス番号８８〜９５の閾値データと、メモリＭＥＭ１から新たに読み出されて第１のセレクタＳＥＬ１により選択されたマトリクス番号９６〜２の閾値データとが、それぞれ第２のセレクタＳＥＬ２に入力されるため、その中からマトリクス番号９２〜９９の閾値データを第２のセレクタＳＥＬ２で選択してバレルシフタＢＳＨに出力する。
【００４０】
このとき、メモリ制御処理部１１１では、バレルシフタＢＳＨに出力される閾値データの中に、閾値マトリクスの終端となるマトリクス番号９９の閾値データが含まれるか否かに応じて、次の処理で、メモリＭＥＭ１からの閾値データの読み出し順序を切り替える。ここで、バレルシフタＢＳＨに出力される閾値データの中に、閾値マトリクスの終端となるマトリクス番号９９の閾値データが含まれる場合とは、上記第１のセレクタＳＥＬ１により選択されたマトリクス番号９６〜２の閾値データのうち、全ての閾値データがバレルシフタＢＳＨに出力された場合と、マトリクス番号９６〜１の閾値データがバレルシフタＢＳＨに出力された場合と、マトリクス番号９６〜０の閾値データがバレルシフタＢＳＨに出力された場合と、マトリクス番号９６〜９９の閾値データがバレルシフタＢＳＨに出力された場合をいう。また逆に、バレルシフタＢＳＨに出力される閾値データの中に、閾値マトリクスの終端となるマトリクス番号９９の閾値データが含まれない場合とは、上記第１のセレクタＳＥＬ１により選択されたマトリクス番号９６〜２の閾値データのうち、マトリクス番号９６〜９８の閾値データがバレルシフタＢＳＨに出力された場合と、マトリクス番号９６，９７の閾値データがバレルシフタＢＳＨに出力された場合と、マトリクス番号９６の閾値データがバレルシフタＢＳＨに出力された場合をいう。
【００４１】
したがって、例えば上記図９（Ａ）に示すように、バレルシフタＢＳＨに出力される閾値データの中に、閾値マトリクスの終端となるマトリクス番号９９の閾値データが含まれる場合は、次の処理で、メモリＭＥＭ１から１ワード分だけ飛ばした次の８個の閾値データを読み出す。
【００４２】
具体的には、上記図９（Ａ）の時点で第１のバッファメモリＢＭ１にはマトリクス番号８８〜９５の閾値データが格納され、メモリＭＥＭ１からはマトリクス番号９６〜３の閾値データが読み出されているため、次にメモリＭＥＭ１から閾値データを読み出すときは、１ワード分となるマトリクス番号０〜７の閾値データを飛ばして、次の８個の閾値データ、つまりマトリクス番号８〜１５の閾値データを読み出す。そのため、次の処理では、図９（Ｂ）に示すように、第１のバッファメモリＢＭ１にマトリクス番号９６〜３の閾値データが格納され、メモリＭＥＭ１からはマトリクス番号８〜１５の閾値データが読み出された状態となる。この場合、前回の処理では、マトリクス番号９９までの閾値データを出力しているため、これに連続させるためには、マトリクス番号０からの８個の閾値データ、つまりマトリクス番号０〜７の閾値データを出力する必要がある。
【００４３】
このうち、マトリクス番号０〜３の閾値データは第１のバッファメモリＢＭ１に格納され、マトリクス番号４〜７の閾値データは第２のバッファメモリＢＭ２に格納されている。そこで、第１のセレクタＳＥＬ１では、メモリ制御処理部１１１からの制御信号にしたがって、第２のバッファメモリＢＭ２に格納された７個の閾値データを選択してこれを第２のセレクタＳＥＬ２に与える。一方、第２のセレクタＳＥＬ２では、メモリ制御処理部１１１からの制御信号にしたがって、第１のバッファメモリＢＭ１から与えられた８個の閾値データの中から、マトリクス番号０〜３の閾値データを選択するとともに、第１のセレクタＳＥＬ１から与えられた７個の閾値データの中から、マトリクス番号４〜７の閾値データを選択する。その結果、第２のセレクタＳＥＬ２からバレルシフタＢＳＨには、前回の処理で使用したマトリクス番号９２〜９９の閾値データに連続するかたちでマトリクス番号０〜７の閾値データが出力される。
【００４４】
次の処理では、図９（Ｃ）に示すように、第１のバッファメモリＢＭ１にマトリクス番号８〜１５の閾値データが格納されているため、第２のセレクタＳＥＬ２では、第１のバッファメモリＢＭ１から与えられる８個の閾値データを選択してバレルシフタＢＳＨに出力する。以降は、上記図９（Ｃ）の場合と同様に、第２のセレクタＳＥＬ２が、第１のバッファメモリＢＭ１から入力された８個の閾値データを順に選択してバレルシフタＢＳＨに出力することになる。
【００４５】
一方、例えば上記図１０（Ａ）に示すように、バレルシフタＢＳＨに出力される閾値データの中に、閾値マトリクスの終端となるマトリクス番号９９の閾値データが含まれない場合は、次の処理で、メモリＭＥＭ１から１ワード分だけ飛ばすことなく、次の８個の閾値データ、つまりマトリクス番号０〜７の閾値データを読み出す。そのため、次の処理では、図１０（Ｂ）に示すように、第１のバッファメモリＢＭ１にマトリクス番号９６〜３の閾値データが格納され、メモリＭＥＭ１からはマトリクス番号０〜７の閾値データが読み出された状態となる。この場合、前回の処理では、マトリクス番号９８までの閾値データを出力しているため、これに連続させるためには、マトリクス番号９９からの８個の閾値データ、つまりマトリクス番号９９〜６の閾値データを出力する必要がある。
【００４６】
このうち、マトリクス番号９９〜３の閾値データは第１のバッファメモリＢＭ１に格納され、マトリクス番号４〜６の閾値データは第２のバッファメモリＢＭ２に格納されている。そこで、第１のセレクタＳＥＬ１では、メモリ制御処理部１１１からの制御信号にしたがって、第２のバッファメモリＢＭ２に格納された７個の閾値データを選択してこれを第２のセレクタＳＥＬ２に与える。一方、第２のセレクタＳＥＬ２では、メモリ制御処理部１１１からの制御信号にしたがって、第１のバッファメモリＢＭ１から与えられた８個の閾値データの中から、マトリクス番号９９〜３の閾値データを選択するとともに、第１のセレクタＳＥＬ１から与えられた７個の閾値データの中から、マトリクス番号４〜６の閾値データを選択する。その結果、第２のセレクタＳＥＬ２からバレルシフタＢＳＨには、前回の処理で使用したマトリクス番号９１〜９８の閾値データに連続するかたちでマトリクス番号９９〜６の閾値データが出力される。
【００４７】
次の処理では、図１０（Ｃ）に示すように、第１のバッファメモリＢＭ１にマトリクス番号０〜７の閾値データが格納され、メモリＭＥＭ１から新たにマトリクス番号８〜１５の閾値データが読み出されるため、第２のセレクタＳＥＬ２では、第１のバッファメモリＢＭ１から与えられる８個の閾値データのうちマトリクス番号７の閾値データを選択するとともに、メモリＭＥＭ１からの読み出しデータとして第１のセレクタＳＥＬ１で選択される７個（マトリクス番号８〜１４）の閾値データを選択し、この選択した閾値データ、つまりマトリクス番号７〜１４の閾値データをバレルシフタＢＳＨに出力する。以降は、上記図１０（Ｃ）の場合と同様に、第２のセレクタＳＥＬ２が、第１のバッファメモリＢＭ１から入力された８個の閾値データのうちの１個と、第１のセレクタＳＥＬ１から入力される７個の閾値データ（メモリＭＥＭ１からの読み出しデータ）を選択してバレルシフタＢＳＨに出力することになる。
【００４８】
以上のような処理を適用して入力画像の１ライン目の処理を終えた後は、メモリＭＥＭ１からの閾値データの読み出し対象を、閾値マトリクスの１行目の閾値データから５行目の閾値データに変更して、上記１ライン目と同様の方式で２ライン目を処理する。また、入力画像の２ライン目の処理を終えた後は、メモリＭＥＭ１からの閾値データの読み出し対象を、閾値マトリクスの５行目の閾値データから９行目の閾値データに変更して、上記１ライン目及び２ライン目と同様の方式で３ライン目を処理する。
【００４９】
このディザ処理部１１と同様の処理を他の３つのディザ処理部１２〜１４でも並列的に実行することにより、図１１に示すように、それぞれ１回（１クロック）の読み出し動作でメモリＭＥＭ１〜ＭＥＭ４から８個（出力８画素分）の閾値データを読み出して、それぞれに対応するバッファ処理部（BUFF1，BUFF2，BUFF3，BUFF4）に取り込むことにより、入力画像の１つの画素との比較に必要となる８×４マトリクス分の閾値データを取得し、これをそれぞれに対応する比較処理部に与えることにより、８×４画素の出力画像データを生成することができる。したがって、メモリからの閾値の読み出し動作に合わせてリアルタイムにディザ処理を行うことができる。また、４つのメモリＭＥＭ１〜ＭＥＭ４に対して、それぞれ閾値マトリクスの各行に配列された閾値データを順に割り当てて格納しているため、各々のメモリＭＥＭ１〜ＭＥＭ４からの閾値データの読み出しを、これに対応する個々のディザ処理部１１〜１４で個別に制御することができる。したがって、装置状態の経時的な変化や、ＹＭＣＫの各色のスクリーン角度等に応じて閾値マトリクスの形状を任意に変更することができる。
【００５０】
ここで、ディザ処理の条件として、上記同様にディザ処理用の閾値マトリクスを１００×１０のマトリクス構成にするとともに、入力画像の解像度を６００×６００(dpi)、出力画像の解像度を４８００×２４００(dpi)とすると、入力画像の１つのライン（画素列）を処理するために１００×４のマトリクス分（４００個）の閾値データが必要になる。したがって、入力画像の１ライン目を処理する場合は、閾値マトリクスの１行目〜４行目に配列された４００個（マトリクス番号０〜３９９）の閾値データが必要になり、入力画像の２ライン目を処理する場合は、閾値マトリクスの５行目〜８行目に配列された４００個（マトリクス番号４００〜７９９）の閾値データが必要になる。
【００５１】
さらに、入力画像の３ライン目を処理する場合は、閾値マトリクスの９行目から１０行目に配列された２００個（マトリクス番号８００〜９９９）の閾値データと、閾値マトリクスの１行目から２行目に配列された２００個（マトリクス番号０〜１９９）の閾値データとが必要になる。このとき、上記図５に示す閾値格納方式では、閾値マトリクスの最終行に続く冗長な行の閾値データを予めメモリＭＥＭ３，ＭＥＭ４，ＭＥＭ１に格納してあるため、入力画像の３ライン目を処理する際に必要となる計４００個の閾値データのうち、マトリクス番号８００〜８９９の閾値データをメモリＭＥＭ１から、マトリクス番号９００〜９９９の閾値データをメモリＭＥＭ２から、マトリクス番号０〜９９の閾値データをメモリＭＥ３から、マトリクス番号１００〜１９９の閾値データをメモリＭＥＭ４から、それぞれ読み出すことができる。したがって、入力画像の３ライン目を問題なく処理することができる。
【００５２】
また、閾値格納用のメモリＭＥＭ１〜ＭＥＭ４の個数から１を減算した行数分（本例では３行分）だけ、冗長な行の閾値データをメモリＭＥＭ３、ＭＥＭ４，ＭＥＭ１に割り当てて格納しているため、入力画像の各々のラインを、閾値マトリクスのいずれの行の閾値データを使って処理する場合でも、閾値マトリクスの各行の閾値データのうち、副走査方向に連続する４行分の閾値データを用いてディザ処理を行うことができる。したがって、例えば図１２に示すように、入力画像の所定のラインを、閾値マトリクスの１０行目に配列された閾値データと、これに連続する１行目から３行目の閾値データとを用いてディザ処理する場合でも、メモリＭＥＭ２に格納された閾値データ（閾値マトリクスの１０行目に配列された閾値データ）とメモリＭＥＭ３、ＭＥＭ４，ＭＥＭ１に格納された冗長な行の閾値データ（閾値マトリクスの１行目〜３行目に配列された閾値データ）を、それぞれに対応するバッファ処理部（BUFF1，BUFF2，BUFF3，BUFF4）に取り込み、この取り込んだ閾値データを用いてディザ処理することができる。
【００５３】
ただし、入力画像の３ライン目では、ディザ処理に適用する閾値マトリクスの位置が副走査方向に１段ずれるため、仮に、メモリＭＥＭ１に格納されたマトリクス番号０〜９９の閾値データ（閾値マトリクスの１行目に配列される閾値データ）と全く同じ順序で、マトリクス番号０〜９９の閾値データをメモリＭＥＭ３に格納したとすると、メモリＭＥＭ３からマトリクス番号０〜９９の閾値データを読み出すときの順序を、予め設定されたシフト情報に合わせて調整する必要がある。
【００５４】
これに対して、本実施形態においては、冗長な行の閾値データを格納するメモリＭＥＭ３、ＭＥＭ４，ＭＥＭ１に対して、予め設定されたシフト情報にしたがってシフト処理された閾値データを格納するものとしたので、そこから閾値データを読み出すときの順序をいちいち調整する必要がない。よって、入力画像の３ライン目を処理する場合は、メモリＭＥＭ１，ＭＥＭ２からの閾値データの読み出し順序と同様の順序を適用してメモリＭＥＭ３，ＭＥＭ４から閾値データを読み出すことができる。したがって、メモリ制御処理部１１１による読み出しアドレスの指定方法を簡素化することができる。
【００５５】
なお、上記実施形態においては、入力画像の各ラインを処理するにあたって、メモリＭＥＭ１から読み出した閾値データをバッファ処理部１１２で保存した後に、入力画像の各画素の階調値と比較するものとなっているが、これ以外にも、メモリＭＥＭ１から読み出した閾値データを入力画像の各画素の階調値と比較した後に、その閾値データをバッファ処理部１１２で保存するようにしてもよい。
【００５６】
さらに本発明の応用例として、バッファ処理部１１２を、一対のバッファ処理部（バッファ手段）からなるピンポンバッファ（デュアルバッファ）の構成とし、メモリＭＥＭ１〜ＭＥＭ４に格納された閾値マトリクスの各行の閾値データの中から、２回の読み出し動作（２クロックの読み出し動作）で入力画像の２ライン分の処理に使用する閾値データを読み出して上記一対のバッファ処理部に格納（一時的に保存）することにより、出力画像の解像度の変更に柔軟に対応することが可能となる。
【００５７】
例えば、上記の処理の場合で説明すると、図１３に示すように、メモリＭＥＭ１〜ＭＥＭ４からそれぞれ閾値マトリクスの異なる行の閾値データを、それぞれに対応するメモリ制御処理部からの読み出しアドレスの指定により２回の読み出し動作（２クロックの読み出し動作）で読み出して、一対のバッファ処理部（BUFF１とBUFF1’、BUFF2とBUFF2’、BUFF3とBUFF3’、BUFF4とBUFF4’）に順に格納して８×８マトリクスサイズ分の閾値データを取り込むとともに、一対のバッファ処理部からの閾値データの取り出し順序をメモリ制御処理部からの制御信号にしたがって主走査方向で制御することにより、上述のように取り込んだ８×８マトリクスサイズ分の閾値データを主走査方向で４×８マトリクスずつに分割（２等分）して取り出すようにセレクタ等で選択し、それぞれ１つの入力画素の階調値と比較することにより、６００×６００(dpi)の解像度で入力された画像を２４００×４８００(dpi)の解像度の画像で出力することができる。また、図示はしないが、８×８マトリクス分の閾値データを１つの入力画素の階調値と比較することにより、６００×６００(dpi)の解像度で入力された画像を４８００×４８００(dpi)の解像度の画像で出力することもできる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施形態に係る画像処理装置のモジュール構成を示す概略図である。
【図２】入力画素サイズと出力画素サイズの比較例を示す図である。
【図３】閾値マトリクスの構成例とこれに対応した閾値データの格納例を示す図である。
【図４】閾値マトリクスの各行に配列される閾値データの格納方法を説明する図である。
【図５】各々の閾値格納メモリに閾値データを割り当て格納した状態を説明する図である。
【図６】バッファ処理部の内部構成を示すブロック図である。
【図７】ディザ処理に係るモジュール動作を示すタイミングチャートである。
【図８】ディザ処理に係るモジュールの処理内容を説明する図（その１）である。
【図９】ディザ処理に係るモジュールの処理内容を説明する図（その２）である。
【図１０】ディザ処理に係るモジュールの処理内容を説明する図（その３）である。
【図１１】各々のディザ処理部によって実現される処理内容を説明する図である。
【図１２】複数個の閾値格納メモリからの閾値データの読み出し例を示す図である。
【図１３】本発明の応用例を説明する図である。
【図１４】従来の画像処理装置の構成例を示す概略図である。
【図１５】従来の閾値データの格納方式を説明する図である。
【図１６】従来のディザ処理の流れを示すタイミングチャートである。
【図１７】マトリクスサイズと入力画素サイズの関係を説明する図である。
【符号の説明】
【００５９】
１１，１２，１３，１４…ディザ処理部、ＭＥＭ１，ＭＥＭ２，ＭＥＭ３，ＭＥＭ４…メモリ（閾値格納メモリ）、１１１…メモリ制御部、１１２…バッファ処理部、１１３…比較処理部、ＢＭ１…第１のバッファメモリ、ＢＭ２…第２のバッファメモリ、ＳＥＬ１…第１のセレクタ、ＳＥＬ２…第２のセレクタ、ＢＳＨ…バレルシフタ
【図１】
2005094403.tif 000003
【図２】
2005094403.tif 000004
【図３】
2005094403.tif 000005
【図４】
2005094403.tif 000006
【図５】
2005094403.tif 000007
【図６】
2005094403.tif 000008
【図７】
2005094403.tif 000009
【図８】
2005094403.tif 000010
【図９】
2005094403.tif 000011
【図１０】
2005094403.tif 000012
【図１１】
2005094403.tif 000013
【図１２】
2005094403.tif 000014
【図１３】
2005094403.tif 000015
【図１４】
2005094403.tif 000016
【図１５】
2005094403.tif 000017
【図１６】
2005094403.tif 000018
【図１７】
2005094403.tif 000019