(57)【要約】【課題】ハーフトーン処理で用いられるマトリクスの記憶領域の使用効率を向上させる画像形成装置を提供する。【解決手段】ハーフトーン処理に用いるマトリクスに設定された閾値を記憶部に格納する。その格納においては、マトリクスに設定された複数の閾値を、記憶部を構成する複数の記憶素子に分散して格納し、Ｍ×Ｎ画素のブロックに対応するＭ×Ｎ個の閾値がＭ×Ｎ個の記憶素子から取得されるように、複数の閾値は、複数の記憶素子に分散して格納される。【選択図】図４
2018098543.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対してハーフトーン処理を実行する画像形成装置であって、
前記ハーフトーン処理に用いるマトリクスに設定された閾値を記憶部に格納する格納手段と、
前記画像データから、前記マトリクスのサイズより小さいＭ×Ｎ画素のブロック単位で画素値を取得し、前記画像データにマッピングされた前記マトリクスから前記Ｍ×Ｎ画素のブロックに対応する閾値を前記記憶部から取得する取得手段と、
前記取得手段により取得された前記画素値と前記閾値とに基づいて、前記ハーフトーン処理を実行する実行手段と、を備え、
前記格納手段は、前記マトリクスに設定された複数の閾値を、前記記憶部を構成する複数の記憶素子に分散して格納し、
前記Ｍ×Ｎ画素のブロックに対応するＭ×Ｎ個の閾値が前記取得手段によりＭ×Ｎ個の記憶素子から取得されるように、前記複数の閾値は、前記複数の記憶素子に分散して格納される、
ことを特徴とする画像形成装置。
【請求項２】
前記複数の記憶素子の数は、Ｍ，Ｎのうちの最大値を二乗した値であることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記格納手段は、前記マトリクスに設定された前記複数の閾値のうち、前記Ｍ×Ｎ画素のブロックの各位置について、前記取得手段により取得されるべき複数の閾値を１つの記憶素子に格納することを特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
Ｍ＞Ｎである場合、前記格納手段は、前記マトリクスに設定された前記複数の閾値のうち、前記Ｍ×Ｎ画素のブロックの各位置について、前記取得手段により取得されるべき複数の閾値をＮ個の記憶素子に格納することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記マトリクスを前記画像データにマッピングするマッピング手段、をさらに備え、
前記取得手段は、前記マッピング手段により前記画像データにマッピングされた前記マトリクスから前記Ｍ×Ｎ画素のブロックに対応する閾値を前記記憶部から取得する、
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像形成装置。
【請求項６】
前記マッピング手段は、前記マトリクスと、前記マトリクスを回転させたマトリクスとを、前記画像データにマッピングすることを特徴とする請求項５に記載の画像形成装置。
【請求項７】
前記マッピング手段は、前記マトリクスがマッピングされる位置を所定の画素分シフトさせながら、前記マトリクスを前記画像データにマッピングすることを特徴とする請求項５に記載の画像形成装置。
【請求項８】
前記複数の記憶素子それぞれは、ＳＲＡＭであることを特徴とする請求項１乃至７のいずれか１項に記載の画像形成装置。
【請求項９】
前記マトリクスは、ディザ法で用いられるマトリクスであることを特徴とする請求項１乃至８のいずれか１項に記載の画像形成装置。
【請求項１０】
前記マトリクスは、ブルーノイズマスクであることを特徴とする請求項１乃至９のいずれか１項に記載の画像形成装置。
【請求項１１】
画像データに対してハーフトーン処理を実行する画像形成装置において実行される方法であって、
前記ハーフトーン処理に用いるマトリクスに設定された閾値を記憶部に格納する格納工程と、
前記画像データから、前記マトリクスのサイズより小さいＭ×Ｎ画素のブロック単位で画素値を取得し、前記画像データにマッピングされた前記マトリクスから前記Ｍ×Ｎ画素のブロックに対応する閾値を前記記憶部から取得する取得工程と、
前記取得工程において取得された前記画素値と前記閾値とに基づいて、前記ハーフトーン処理を実行する実行工程と、を有し、
前記格納工程は、前記マトリクスに設定された複数の閾値を、前記記憶部を構成する複数の記憶素子に分散して格納し、
前記Ｍ×Ｎ画素のブロックに対応するＭ×Ｎ個の閾値が前記取得工程においてＭ×Ｎ個の記憶素子から取得されるように、前記複数の閾値は、前記複数の記憶素子に分散して格納される、
ことを特徴とする方法。
【請求項１２】
請求項１乃至１０のいずれか１項に記載の画像形成装置に記載の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成処理を実行する画像形成装置、方法およびプログラムに関する。
【背景技術】
【０００２】
複合機などの画像形成装置では、画像データは、印刷が行われる前に、適切な階調数をもった画像データに変換される。その際、ディザ法といったスクリーン処理技術が一般的に用いられる。ディザ法では、ディザマトリクスといったＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）が用いられる。ディザ法では、入力画像の画素値とディザマトリクスの閾値とを比較し、ハーフトーン処理された二値化画像が生成される。ディザ法を用いることにより、画像の階調数が削減され、記憶領域の容量が削減可能となる。
【０００３】
近年では、スクリーン処理技術の発展と伴い、ディザマトリクスの閾値の新しい作成方法も知られている。例えば、Ｂｌｕｅ  Ｎｏｉｓｅディザマトリクス（以下、ＢＮマスクという）といった技術が知られている。
【０００４】
ＢＮマスクは従来のディザマトリクスの使用方法と同じであるが、閾値パターンは、非周期的、等方的であり、低周波成分の少ないノイズ成分で構成されるパワースペクトル（ブルーノイズ特性）を持つことを特徴とする。よって、スクリーン処理後の画像のモアレが見え難く、画質は従来のディザ法より改善されると考えられている。但し、ＢＮマスクの適用には、サイズが大きなマトリクスの使用が必要であり、一般的には、２５６×２５６サイズ以上のＢＮマスクが要求される。ディザ法を用いて、スクリーン処理を行う機能をＡＳＩＣなどのハードウェアで実装する際には、ディザマトリクスをＳＲＡＭなどの記憶領域に格納する必要がある。よって、ＢＮマスクを格納する巨大なサイズの記憶領域が必要となる。
【０００５】
特許文献１には、ＢＮマスクを回転させ、同じＢＮマスクの異なる回転パターンを結合して使用する方法が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−１６３３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の手法を用いることで、図１５に簡略的に示すように、１２８×１２８サイズのＢＮマスクと、１２８×１２８サイズの回転させたＢＮマスクとを結合して使用する構成が考えられる。そのような構成により、記憶領域に格納すべきＢＮマスクのサイズを２５６×２５６から１２８×１２８に低減することが可能になると考えられる。
【０００８】
スクリーン処理を高速に行う場合、入力画像の画素値とディザマトリクスの閾値との比較は、Ｍ×Ｎ画素（例えば、４×２画素）のブロック単位で行うことが多い。そのような構成では、１クロックサイクル（クロック信号の１回の立ち上がり）で同時にＭ×Ｎ個の閾値を取得して、Ｍ×Ｎ個の画素値との比較が行われる。一般的には、１個のＳＲＡＭから１クロックサイクルに１個の閾値しか読み出せないので、４×２画素のブロック単位の場合には、同じＳＲＡＭが８個必要となる。
【０００９】
特許文献１に記載の手法を用いてＳＲＡＭに格納すべきＢＮマスクのサイズを１２８×１２８に低減することが可能になったとしても、上記のスクリーン処理の場合には、８個のＳＲＡＭそれぞれに１２８×１２８サイズのＢＮマスクが記憶される。その結果、ＳＲＡＭの総サイズが１２８×１２８×８となってＳＲＡＭの使用効率がかえって低下することになり、また、ＡＳＩＣの生産コストの増大の一因ともなってしまう。
【００１０】
本発明の目的は、このような従来の問題点を解決することにある。上記の点に鑑み、本発明は、ハーフトーン処理で用いられるマトリクスの記憶領域の使用効率を向上させる画像形成装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明に係る画像形成装置は、画像データに対してハーフトーン処理を実行する画像形成装置であって、前記ハーフトーン処理に用いるマトリクスに設定された閾値を記憶部に格納する格納手段と、前記画像データから、前記マトリクスのサイズより小さいＭ×Ｎ画素のブロック単位で画素値を取得し、前記画像データにマッピングされた前記マトリクスから前記Ｍ×Ｎ画素のブロックに対応する閾値を前記記憶部から取得する取得手段と、前記取得手段により取得された前記画素値と前記閾値とに基づいて、前記ハーフトーン処理を実行する実行手段と、を備え、前記格納手段は、前記マトリクスに設定された複数の閾値を、前記記憶部を構成する複数の記憶素子に分散して格納し、前記Ｍ×Ｎ画素のブロックに対応するＭ×Ｎ個の閾値が前記取得手段によりＭ×Ｎ個の記憶素子から取得されるように、前記複数の閾値は、前記複数の記憶素子に分散して格納されることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ハーフトーン処理で用いられるマトリクスの記憶領域の使用効率を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】複合機のブロック構成を示す図である。
【図２】ディザ設定モジュールとディザ処理モジュールの構成を示す図である。
【図３】ＳＲＡＭ配列の構成を示す図である。
【図４】二値化データが出力されるまでの処理を示すフローチャートである。
【図５】閾値を読み出す処理を示すフローチャートである。
【図６】ＳＲＡＭの特定を説明するための図である。
【図７】ＢＮマスク内の閾値が１６個のＳＲＡＭに格納される様子を示す図である。
【図８】インデクス値を示す図である。
【図９】閾値データの読出動作を説明するための図である。
【図１０】閾値データの読出動作を説明するための図である。
【図１１】インデクス値を示す図である。
【図１２】閾値データの読出動作を説明するための図である。
【図１３】ＢＮマスクを簡易化した図である。
【図１４】ＢＮマスクを簡易化した図である。
【図１５】ＢＮマスクを結合して使用する様子を示す図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【００１５】
［第１の実施形態］
図１（ａ）は、画像形成装置１００のブロック構成を示す図である。デジタル複合機１００は、コントローラユニット１１０、操作部１２０、スキャナ１３０、プリンタ１４０を含む。コントローラユニット１１０には、操作部１２０が接続され、また、画像入力デバイスであるスキャナ１３０や画像出力デバイスであるプリンタ１４０が接続される。プリンタ１４０は、インクジェット記録方式や電子写真方式等により、記録媒体への画像の記録を行う。本実施形態では、画像形成装置１００として複合機を説明するが、記録媒体への画像形成処理が行われる前のハーフトーン処理が実行されるのであれば、複合機（ＭＦＰ）ではなく、印刷機能を有するＳＦＰであっても良い。
【００１６】
コントローラユニット１１０は、装置全体を統括的に制御するコントローラボードであり、ＣＰＵ１１２を含む。ＣＰＵ１１２は、ＲＯＭ１１６に記憶されているブートプログラムによりＯＳを起動する。コントローラユニット１１０は、このＯＳ上で、ＨＤＤ１１５に記憶されているアプリケーションプログラムを実行して各種処理を実行する。ＲＡＭ１１３は、ＣＰＵ１１２の作業領域として用いられる。ＨＤＤ１１５は、上記アプリケーションプログラムや各種データを記憶する。本実施形態の動作も、例えば、ＣＰＵ１１２がＲＯＭ１１６やＨＤＤ１１５に記憶されているプログラムをＲＡＭ１１３上に読み出して実行することにより実現される。
【００１７】
ＣＰＵ１１２には、システムバス１１９を介して、例えば、ＨＤＤ１１５、ＲＯＭ１１６、ＲＡＭ１１３、操作部インタフェース（Ｉ／Ｆ）１１１、デバイスＩ／Ｆ１１４、ネットワークＩ／Ｆ１１７、画像処理部１１８が接続される。操作部Ｉ／Ｆ１１１は、タッチパネル等の表示部を有する操作部１２０とのインタフェースである。操作部Ｉ／Ｆ１１１は、操作部１２０に表示する各種設定データなどの情報を操作部１２０に送出したり、ユーザ操作により入力された情報を操作部１２０から受信してＣＰＵ１１２に送出する。デバイスＩ／Ｆ１１４には、例えば、スキャナ１３０およびプリンタ１４０が接続され、データや制御信号の入出力が行われる。ネットワークＩ／Ｆ１１７は、外部のネットワーク１５０に接続され、ネットワーク１５０を介してネットワーク１５０上の各装置との間で通信を行う。画像処理部１１８は、例えば、スキャナ１３０で光学的に原稿を読み取られた画像データに対する各種処理や、プリンタ１４０で印刷を行うための、画像回転、画像圧縮、解像度変換、色空間変換、階調変換などの画像データに対する各種処理を実行する。
【００１８】
画像形成装置１００が外部のＰＣ等からネットワーク１５０を介して印刷対象のＰＤＬデータを受信すると、ＣＰＵ１１２の制御により、画像処理部１１８は、レンダリング処理が実行された多値の画像データを生成する。そして、画像処理部１１８は、スクリーン処理を実行し、多値の画像データから、プリンタ１４０の各色材色に対応した二値の画像データ（ハーフトーンデータ）を生成する。本実施形態では、画像処理部１１８は、ディザ法を用いるスクリーン処理システムを含み、そのスクリーン処理システムによりスクリーン処理を実行する。プリンタ１４０は、生成された二値の画像データに基づいて、記録媒体に画像を記録し、その後、印刷出力される。外部からのＰＤＬデータの受信から印刷出力までの間で、上記以外にも、必要な処理が適宜行われる。例えば、ＰＤＬデータに付加された属性情報に基づいて、画像の加工や変換等の処理が行われる場合がある。
【００１９】
図１（ｂ）は、画像処理部１１８のスクリーン処理システムの構成を示す図である。スクリーン処理システム１６０は、ディザ法により、入力された画像データをＭ×Ｎ画素のブロック単位で二値の画像データに変換していく。その際に、スクリーン処理システム１６０は、１２８×１２８サイズのブルーノイズマスク（以下、ＢＮマスク）を用いて、入力データ１６４と閾値との比較を行うことにより二値化データ１６５を生成する。入力データ１６４は、画像データのうちＭ×Ｎ画素のブロックに対応する画像データの画素値である。本実施形態では、スクリーン処理システム１６０は、４×２画素のブロック単位で二値化データ１６５への変換を行う。図１（ｂ）は、入力データ１６４の４×２画素のブロックの画素値（１、３、７、１２、１、５、１２、３２）と、ＢＮマスクの閾値（２、３、２、４、１、５、１２、２１）とが各画素について比較され、二値化データ１６５が生成される様子を示している。以下、ブロックを４×２画素として説明するが、プロセッサの処理能力や記憶素子の構成等に応じて、他の画素数で構成されても良い。
【００２０】
スクリーン処理システム１６０は、ディザ設定モジュール１６１、ＳＲＡＭ配列１６２、ディザ処理モジュール１６３を含む。ディザ設定モジュール１６１は、ＳＲＡＭ配列１６２内に構成された複数の記憶素子、本実施形態では複数のＳＲＡＭのうち、特定のＳＲＡＭのアドレスに閾値を書き込む。ディザ処理モジュール１６３は、入力データの画素値と閾値との比較を行い、二値化データ１６５を生成して出力する。また、図１（ｂ）に示すように、クロック信号が、ディザ処理モジュール１６３とＳＲＡＭ配列１６２とに入力されており、１個のＳＲＡＭについて、１クロックサイクルで１個の閾値が読み出される。つまり、複数のＳＲＡＭから各１個の閾値を１クロックサイクルで読み出すことが可能である。
【００２１】
図２（ａ）は、ディザ設定モジュール１６１の構成の一例を示す図である。ディザ設定モジュール１６１は、例えば半導体集積回路装置で構成され、制御部２０１、情報格納部２０２、閾値設定送信部２０３を含む。制御部２０１は、例えばＣＰＵ或いは専用制御モジュールを含み、情報格納部２０２と閾値設定送信部２０３を制御する。制御部２０１は、図１のＣＰＵ１１２の制御により動作する場合もある。情報格納部２０２は、不図示のＲＡＭやＲＯＭ等の記憶部を含み、ディザマトリクス内の閾値を記憶する。閾値設定送信部２０３は、ＳＲＡＭ配列１６２の特定のＳＲＡＭの特定のアドレスに対して閾値を書き込むリクエストコマンドを生成し、ＳＲＡＭ配列１６２に送信する。
【００２２】
図２（ｂ）は、ディザ処理モジュール１６３の構成の一例を示す図である。ディザ処理モジュール１６３は、例えば半導体集積回路装置で構成され、画像入力部２１１、インデクス取得部２１２、閾値リクエスト送信部２１３、閾値データ受信部２１４、画像処理部２１５、及び画像出力部２１６を含む。
【００２３】
画像入力部２１１は、メモリ或いは他のモジュールから、画像データを受信する回路であり、１クロックサイクルで４×２個の入力データ、即ち画素値を受信する。また、画像入力部２１１は、受信した入力データを画像処理部２１５に送信する機能、及び、入力データを受信する度に、インデクス取得部２１２にインデクス取得指令を発行する機能を有する。
【００２４】
インデクス取得部２１２は、画像入力部２１１からインデクス取得指令を受ける度に、当面の回転パターンに従い、入力データに対応する閾値を取得するためのインデクス値を取得する回路である。本実施形態では、インデクス値は、４×２個取得される。インデクス値は、ＢＮマスク内での画素の位置を示す情報であり、ＢＮマスクから該当する閾値を検索する際に使用される。取得されたインデクス値は、閾値リクエスト送信部２１３に送信される。閾値リクエスト送信部２１３は、インデクス取得部２１２により取得されたインデクス値を受信し、閾値のリードリクエストコマンドを生成してインデクス値とともにＳＲＡＭ配列１６２に送信する。
【００２５】
閾値データ受信部２１４は、ＳＲＡＭ配列１６２から、１クロックサイクルで４×２個の閾値データを受信し、画像処理部２１５に送信する。画像処理部２１５は、画像入力部２１１からの入力データと、閾値データ受信部２１４からの閾値データを受信し、入力データの画素値と閾値データの閾値との比較を行い、比較結果を二値化データとして、画像出力部２１６に送信する回路である。画像出力部２１６は、画像処理部２１５からの二値化データを受信し、メモリ或いは他のディザ処理モジュールに送信する。本実施形態では、１クロックサイクルで４×２画素分の二値化データを送信する。
【００２６】
図３は、ＳＲＡＭ配列１６２の構成の一例を示す図である。ＳＲＡＭ配列１６２は、例えば半導体集積回路装置で構成され、リクエスト受信部３０１、ＳＲＡＭ選択部３０２、アドレス生成部３０３、データ格納部３０４、及び出力制御部３０５を含む。
【００２７】
リクエスト受信部３０１は、ディザ処理モジュール１６３からリードリクエストコマンドを受信し、そのリードリクエストコマンドを、ＳＲＡＭ選択部３０２、アドレス生成部３０３、及び出力制御部３０５に送信する。ＳＲＡＭ選択部３０２は、リクエスト受信部３０１から受信したリードリクエストコマンドからインデクス情報を抽出し、該当するインデクス情報に対応する閾値を格納するＳＲＡＭを選択する選択信号を生成し、データ格納部３０４に送信する。
【００２８】
アドレス生成部３０３は、リクエスト受信部３０１から受信したリードリクエストコマンドからインデクス情報を抽出し、該当するインデクス情報に対応する閾値を格納するＳＲＡＭ中の位置信号（アドレス信号）を生成し、データ格納部３０４に送信する。データ格納部３０４は、Ｍａｘ（Ｍ，Ｎ）×Ｍａｘ（Ｍ，Ｎ）個、即ち、最大値の二乗個の比較的に小さい容量のＳＲＡＭの配列を含んで構成される。例えば、本実施形態では４×２画素のブロックであるので、Ｍａｘ（４，２）×Ｍａｘ（４，２）＝４×４、即ち１６個のＳＲＡＭの配列を含む。また、データ格納部３０４に含まれるＳＲＡＭの配列の総サイズは、ＢＮマスクを格納するための最小サイズであり、本実施形態では、１２８×１２８である。つまり、１個のＳＲＡＭのサイズは、１２８×１２８÷１６＝１０２４アドレス分となる。
【００２９】
データ格納部３０４は、ＳＲＡＭ選択部３０２とアドレス生成部３０３からのＳＲＡＭ選択信号とアドレス信号を受信し、所定のＳＲＡＭの所定のアドレスから、閾値を読み出して出力制御部３０５に送信する。出力制御部３０５は、データ格納部３０４から閾値を受信し、リクエスト受信部３０１から受信したリードリクエストコマンドからインデクス情報を抽出する。そして、１６個のＳＲＡＭの出力のうち特定の４×２個のＳＲＡＭの出力をディザ処理モジュール１６３に送信する。
【００３０】
図４は、ディザマトリクスの閾値の設定から二値化データが出力されるまでの処理を示すフローチャートである。Ｓ４０１〜Ｓ４０５では、ディザ設定モジュール１６１がＳＲＡＭ配列１６２に閾値データを書き込む処理を示す。Ｓ４０１〜Ｓ４０５の処理は、例えば、制御部２０１のＣＰＵがＲＯＭに記憶されたプログラムを読み出して実行することにより実現される。
【００３１】
Ｓ４０１において、制御部２０１は、既に設定した閾値の数とＢＮマスクのサイズとに基づき、閾値の設定が終了したか否かを判定する。閾値の設定が終了していないと判定された場合、Ｓ４０２において、制御部２０１は、情報格納部２０２から、所定の閾値データを読み出す。一方、閾値の設定が終了していると判定された場合、後述のＳ４０６へ進む。
【００３２】
Ｓ４０３において、制御部２０１は、注目する閾値の書き込み先のＳＲＡＭを特定し、Ｓ４０４において、閾値の書き込み先のＳＲＡＭの中の位置（アドレス）を特定する。Ｓ４０５において、制御部２０１は、閾値設定送信部２０３を介して、ＳＲＡＭ配列２１４に対して、閾値の書込みリクエストを発行する。その後、Ｓ４０１からの処理を繰り返す。
【００３３】
図６（ａ）は、Ｓ４０３のＳＲＡＭの特定を説明するための図である。ＢＮマスク６０１は、１２８×１２８サイズのマトリクスである。注目閾値６０２をＳＲＡＭ配列１６２に書き込む際、制御部２０１は、注目閾値の位置（Ｘ＿Ｃｏｒｄ、Ｙ＿Ｃｏｒｄ）を確認する。ここで、Ｘ＿Ｃｏｒｄは、注目閾値６０２と注目閾値６０２が属する行の先頭との距離であり、本実施形態では、０〜１２７の値をとる。また、Ｙ＿Ｃｏｒｄは、注目閾値６０２と注目閾値６０２が属する列の先頭との距離であり、本実施形態では、０〜１２７の値をとる。そして、上記のＸ＿ＣｏｒｄとＹ＿Ｃｏｒｄの値に基づき、式（１）に従い、書き込む先のＳＲＡＭの番号を特定する。
【００３４】
Ｘ＿Ｃｏｒｄ％ｍａｘ（Ｍ，Ｎ）＋Ｙ＿Ｃｏｒｄ％ｍａｘ（Ｍ，Ｎ）＊ｍａｘ（Ｍ，Ｎ）  ・・・（１）
ここで、「％」は剰余を表す。本実施形態では、５％４＋３％４＊４＝１＋１２＝１３となり、注目閾値６０２を書き込むＳＲＡＭは、図６（ａ）のＳＲＡＭ１３であることを特定する。
【００３５】
図６（ｂ）は、Ｓ４０４のアドレスの特定を説明するための図である。Ｘ＿ＣｏｒｄとＹ＿Ｃｏｒｄは、上記で説明したとおりである。ＭａｔｒｉｘＷｉｄｔｈは、ＢＮマスクの幅であり、本実施形態では、１２８である。本実施形態では、Ｘ＿Ｃｏｒｄ、Ｙ＿ＣｏｒｄとＭａｔｒｉｘＷｉｄｔｈに基づき、式（２）に従い、書き込む先のアドレスを特定する。
【００３６】
Ｘ＿Ｃｏｒｄ／ｍａｘ（Ｍ，Ｎ）＋（Ｙ＿Ｃｏｒｄ／（ｍａｘ（Ｍ，Ｎ））＊（ＭａｔｒｉｘＷｉｄｔｈ／ｍａｘ（Ｍ，Ｎ））  ・・・（２）
ここで「／」は商を表す。本実施形態では、５／４＋（３／４）＊（１２８／４）＝１＋０＝１となり、注目閾値６０２を書き込むＳＲＡＭ１３のアドレスは１であることを特定する。
【００３７】
本実施形態では、図６（ａ）及び図６（ｂ）の方法により、ＢＮマスク６０１内の閾値は１６個のＳＲＡＭに分散して格納される。図７には、表示の便宜上、１６個のＳＲＡＭをＡ〜Ｐで表し、ＢＮマスク７０１内の閾値は対応するＳＲＡＭに格納されることを示す。例えば、矢印で示される４つの閾値Ａは、ＳＲＡＭ−Ａのアドレス０、１、３２、３３に格納される。
【００３８】
図７では、ＢＮマスクが１２８×１２８の場合を示している。図１３及び図１４は、本願の概念を容易に説明するための図である。
【００３９】
図１３（ａ）は、ＢＮマスクが仮に８×８の場合を示す図である。ブロック単位は、上記と同様に、４×２画素である。ここで、図１３（ａ）に示すように、各ブロックをブロックＡ〜Ｈとする。そして、各ブロック内の位置を、左上から右上に向かって１、２、３、４と規定し、左下から右下に向かって５、６、７、８と規定する。つまり、ブロックＡには、閾値Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８の８つの閾値がある。他のブロックＢ〜Ｈについても同様である。図１３（ｂ）は、式（１）及び（２）を図１３（ａ）に適用した場合に、ＳＲＡＭ０〜１５にどのように格納されるかを示す図である。図１３（ｂ）のＳＲＡＭ０〜１５の並びは、図３や図６（ａ）で示した並びと同じである。つまり、４×２画素のブロックであるので、最大値４の二乗、１６個のＳＲＡＭが構成されている。
【００４０】
図１３（ｂ）に示すように、ブロックＡについて、８つの閾値Ａ１〜Ａ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＢについて、８つの閾値Ｂ１〜Ｂ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＣについて、８つの閾値Ｃ１〜Ｃ８が、８つのＳＲＡＭ８〜１５から読み出される。また、ブロックＤについて、８つの閾値Ｄ１〜Ｄ８が、８つのＳＲＡＭ８〜１５から読み出される。
【００４１】
ブロックＥについて、８つの閾値Ｅ１〜Ｅ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＦについて、８つの閾値Ｆ１〜Ｆ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＧについて、８つの閾値Ｇ１〜Ｇ８が、８つのＳＲＡＭ８〜１５から読み出される。また、ブロックＨについて、８つの閾値Ｈ１〜Ｈ８が、８つのＳＲＡＭ８〜１５から読み出される。
【００４２】
このように、どのブロックについても、異なるＳＲＡＭから閾値が読み出されることになる。つまり、どのブロックについても、１クロックサイクルでそのブロックの閾値を読み出すことができる。また、各ＳＲＡＭについて必要な記憶容量は、図１３（ｂ）に示すように、アドレス０〜３の４アドレス分で良く、ＢＮマスクの８×８＝６４アドレスを確保しなくて良い。
【００４３】
図１４（ａ）は、ＢＮマスクが仮に１６×１６の場合を示す図である。ブロック単位は、上記と同様に、４×２画素である。ここで、図１６（ａ）に示すように、各ブロックをブロックＡ〜Ｚｆとする。そして、各ブロック内の位置を、左上から右上に向かって１、２、３、４と規定し、左下から右下に向かって５、６、７、８と規定する。つまり、ブロックＡには、閾値Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８の８つの閾値がある。他のブロックＢ〜Ｚｆについても同様である。図１４（ｂ）は、式（１）及び（２）を図１４（ａ）に適用した場合に、ＳＲＡＭ０〜１５にどのように格納されるかを示す図である。図１４（ｂ）のＳＲＡＭ０〜１５の並びは、図３や図６（ａ）で示した並びと同じである。つまり、４×２画素のブロックであるので、最大値４の二乗、１６個のＳＲＡＭが構成されている。
【００４４】
図の簡略上、図１４（ｂ）のＳＲＡＭ０には、「Ａ１〜Ｄ１、Ｉ１〜Ｌ１、Ｑ１〜Ｔ１、Ｙ１〜Ｚｂ１」と表記している。これは、Ａ１、Ｂ１、Ｃ１、Ｄ１、Ｉ１、Ｊ１、Ｋ１、Ｌ１、Ｑ１、Ｒ１、Ｓ１、Ｔ１、Ｙ１、Ｚ１、Ｚａ１、Ｚｂ１を表す。他のＳＲＡＭ１〜１５についても同様に表記している。
【００４５】
図１４（ｂ）に示すように、例えば、ブロックＡについて、８つの閾値Ａ１〜Ａ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＢについて、８つの閾値Ｂ１〜Ｂ８が、８つのＳＲＡＭ０〜７から読み出される。また、ブロックＣについて、８つの閾値Ｃ１〜Ｃ８が、８つのＳＲＡＭ８〜１５から読み出される。また、ブロックＤについて、８つの閾値Ｄ１〜Ｄ８が、８つのＳＲＡＭ８〜１５から読み出される。
【００４６】
他のブロックについても同様であり、どのブロックについても、異なるＳＲＡＭから閾値が読み出されることになる。つまり、どのブロックについても、１クロックサイクルでそのブロックの閾値を読み出すことができる。また、各ＳＲＡＭについて必要な記憶容量は、図１４（ｂ）に示すように、アドレス０〜１５の１６アドレス分で良く、ＢＮマスクの１６×１６＝２５６アドレスを確保しなくて良い。図１３及び図１４の効果は、図７の場合でも同様であり、各ＳＲＡＭについて必要な記憶容量は、アドレス０〜１０２３の１０２４アドレス分で良く、ＢＮマスク７０１の１２８×１２８＝１６３８４アドレスを確保しなくても良い。
【００４７】
再び、図４を参照する。Ｓ４０６〜Ｓ４１３は、ディザ処理モジュール１６３が入力データを受信し、ＳＲＡＭ配列１６２にリードリクエストコマンドを送信し、読み込んだ閾値と入力データの画素値との比較を行い、その結果を出力する処理を示す。
【００４８】
Ｓ４０６において、画像入力部２１１は、入力データを受信したか否かを判定する。入力データを受信したと判定された場合、Ｓ４０７において、画像入力部２１１は、受信した４×２画素のブロックを画像処理部２１５に送信するとともに、インデクス取得部２１２にインデクス取得コマンドを送信する。
【００４９】
Ｓ４０８において、インデックス計算部２１２は、インデクス取得コマンドを受信すると、入力されたブロックに対応する閾値の４×２個のインデクスを取得する。インデクス取得部２１２は、その取得結果を閾値リクエスト送信部２１３に送信する。閾値リクエスト送信部２１３は、インデクス取得結果であるインデクス値を受信すると、インデクス値とともにＳＲＡＭ配列１６２に閾値データのリードリクエストコマンドを発行する。ＳＲＡＭ配列１６２で行われるＳ４１４については後述する。
【００５０】
Ｓ４０９において、閾値データ受信部２１４は、発行されたリードリクエストコマンドに対応する閾値データ、即ち４×２個の閾値を受信する。閾値データ受信部２１４は、受信された閾値データを画像処理部２１５に送信する。Ｓ４１０において、画像処理部２１５は、画像入力部２１１から送信された入力データの画素値と閾値データ受信部２１４から送信された閾値データの閾値との比較を行う。画素値が閾値より大きいと判定された場合、画像処理部２１５は、出力結果に“１”を代入し、データ出力部２１６に送信する。一方、画素値が閾値より大きくないと判定された場合、画像処理部２１５は、出力結果に“０”を代入し、データ出力部２１６に送信する。
【００５１】
Ｓ４１３において、データ出力部２１６は、画像処理部２１５から送信された比較結果、即ち４×２画素の二値化データをディザ処理モジュール１６３の外部に出力する。本実施形態では、以上のように、入力データを二値化データに変換する。
【００５２】
図８は、Ｓ４０７のインデクス値の取得結果を示す図である。本実施形態では、画像データが５１２×５１２サイズであるとする。本実施形態では、画像処理部１１８は、スクリーン処理を行う場合には、画像データ８０１に対して、図８に示すように、１２８×１２８のＢＮマスク８０２と、ＢＮマスク８０２を右方向に９０度回転したＢＮマスク８０３とを結合するようにマッピングしている。このようなＢＮマスクのマッピングにより、マトリクス特有のパターンを目立ち難くしつつ、一般的には２５６×２５６サイズ以上のＢＮマスクが要求されるところＳＲＡＭに格納しておくＢＮマスクの容量を１２８×１２８のサイズに抑えることができる。
【００５３】
Ｓ４０７で取得されるインデクスは、ＢＮマスク内での画素の位置を示している。本実施形態では、図８に示すように、ＢＮマスク内で、各画素の位置を表す位置情報がインデクス値０〜１６３８３として定められている。Ｓ４０７では、４×２画素のブロックに対応する８個のインデクス値が取得される。また、ＢＮマスク８０２内で割り当てられたブロックのインデクス値０に対応するＢＮマスク８０３内での値は、インデクス値１６２５６となる。
【００５４】
再び、図４を参照する。Ｓ４１４は、ＳＲＡＭ配列１６２がディザ処理モジュール１６３からのリードリクエストコマンドを受信した後に、所定の閾値を読み出す処理を示すフローチャートである。また、図５は、Ｓ４１４の処理の詳細を示すフローチャートである。
【００５５】
Ｓ５０１において、リクエスト受信部３０１は、ディザ処理モジュール１６３からリードリクエストコマンドを受信したか否かを判定する。ディザ処理モジュール１６３からリードリクエストコマンドを受信したと判定された場合、リクエスト受信部３０１は、リードリクエストコマンド及びインデクス取得結果をＳＲＡＭ選択部３０２、アドレス生成部３０３、出力制御部３０５に送信する。
【００５６】
Ｓ５０２において、ＳＲＡＭ選択部３０２は、受信したインデクス取得結果に基づいて、図６（ａ）で説明した動作によりＳＲＡＭを特定する。Ｓ５０３において、アドレス生成部３０３は、受信したインデクス取得結果に基づいて、図６（ｂ）で説明した動作によりアドレスを特定する。
【００５７】
Ｓ５０４において、データ格納部３０４は、ＳＲＡＭを特定する情報とアドレスを特定する情報に基づき、所定のＳＲＡＭから閾値を読み出して出力制御部３０５に送信する。Ｓ５０５において、出力制御部３０５は、１６個の閾値の中からリクエスト受信部３０１に送信されたインデクス情報に基づき、必要な８個の閾値を選択してディザ処理モジュール１６３に送信する。
【００５８】
図９、図１０は、ＢＮマスクの異なる回転パターンを用いる場合の、Ｓ５０４での閾値データの読出動作を説明するための図である。図９（ａ）のＢＮマスク９０１は、無回転のＢＮマスクであり、図８のＢＮマスク８０２に対応する。ＢＮマスク９０１において、４×２の画素ブロックに対応する閾値は、ブロック９０２、９０３で読み出される。図１３及び図１４で説明したように、ブロック９０２、９０３内では、ＳＲＡＭを表示するラベル（Ａ〜Ｐ）が重複せず、異なるＳＲＡＭから閾値が読み出されることになる。つまり、１クロックサイクルで４×２個の閾値を取得することができる。
【００５９】
図９（ｂ）のＢＮマスク９０４は、ＢＮマスク９０１を右方向に９０度回転させたＢＮマスクであり、図８のＢＮマスク８０３に対応する。４×２の画素ブロックに対応する閾値は、ブロック９０５、９０６で読み出される。図９（ｂ）に示すように、ブロック９０５、９０６内では、ＳＲＡＭを表示するラベル（Ａ〜Ｐ）が重複せず、異なるＳＲＡＭから閾値が読み出されることになる。つまり、１クロックサイクルで４×２個の閾値を取得することができる。
【００６０】
図１０（ａ）のＢＮマスク９０７は、ＢＮマスク９０１を１８０度回転させたＢＮマスクである。４×２の画素ブロックに対応する閾値は、ブロック９０８、９０９で読み出される。図１０に示すように、ブロック９０８、９０９内では、ＳＲＡＭを表示するラベル（Ａ〜Ｐ）が重複せず、異なるＳＲＡＭから閾値が読み出されることになる。つまり、１クロックサイクルで４×２個の閾値を取得することができる。
【００６１】
図１０（ｂ）のＢＮマスク９１０は、ＢＮマスク９０１を右方向に２７０度回転させたＢＮマスクである。４×２の画素ブロックに対応する閾値は、ブロック９１１、９１２で読み出される。図１０（ｂ）に示すように、ブロック９１１、９１２内では、ＳＲＡＭを表示するラベル（Ａ〜Ｐ）が重複せず、異なるＳＲＡＭから閾値が読み出されることになる。つまり、１クロックサイクルで４×２個の閾値を取得することができる。
【００６２】
また、ＢＮマスク９０１の鏡像を用いた場合であっても、ＢＮマスク９０４、ＢＮマスク９０７、ＢＮマスク９１０と同じ動作となる。つまり、異なるＳＲＡＭから複数個の閾値を読み出されることになり、１クロックサイクルで４×２個の閾値を取得することができる。
【００６３】
以上のように、本実施形態によれば、ディザマトリクスの回転パターンによらず、１クロックサイクルでＭ×Ｎ個の閾値データを読み出すことができる。さらには、必要なＢＮマスクのサイズ分の記憶領域を複数のＳＲＡＭで実現するので、ＳＲＡＭの記憶領域の使用効率を向上させることができる。
【００６４】
［第２の実施形態］
第１の実施形態では、図８に示すように、回転させたＢＮマスクを結合する形態を説明した。本実施形態では、ＢＮマスクを回転させずに、所定の画素分シフトさせたＢＮマスクを用いる形態を説明する。以下、図４及び図５を参照しながら、第１の実施形態と異なる点について説明する。
【００６５】
ディザ設定モジュール１６１がＳＲＡＭ配列１６２に閾値データを書き込む処理については、第１の実施形態におけるＳ４０１〜Ｓ４０５の説明と同様であるので、その説明を省略する。
【００６６】
ディザ処理モジュール１６３が入力データを受信してから、閾値と入力データの画素値との比較を行い、その結果を出力するまでは、Ｓ４０７以外、第１の実施形態におけるＳ４０６〜Ｓ４１３の説明と同様であるので、その説明を省略する。
【００６７】
以下、本実施形態におけるＳ４０７でのインデクス値の取得の処理について説明する。図１１は、本実施形態における画像データ１１０１にマッピングされたＢＮマスク内の各画素のインデクス値を示す図である。本実施形態では、図１１に示すように、１２８×１２８のＢＮマスク１１０２が、５１２×５１２の画像データ１１０１にマッピングされる。また、図１１に示すように、副走査方向（図中、上下方向）に１２８画素分進む度に、主走査方向（図中、左右方向）へのマッピングは、右方向に１画素シフトされる。図１１に示すように、副走査方向でのＢＮマスク間は、インデックス１６２５６の画素の下にインデックス１２７の画素が位置する。
【００６８】
本実施形態では、図１１に示すように、副走査方向でのＢＮマスク間で主走査方向へシフトされているので、マトリクス特有のパターンが目立ち難くなる。さらに、図１２で後述するように、４×２画素のブロックがＢＮマスク間を跨いだとしても、異なるＳＲＡＭから複数個の閾値を読み出されることになり、１クロックサイクルで４×２個の閾値を取得することができる。
【００６９】
インデクス取得部２１２は、着目する４×２画素のブロックに対応するインデクス情報を閾値リクエスト送信部２１３に送信する。閾値リクエスト送信部２１３は、インデクス情報を受信すると、インデクス情報とともにＳＲＡＭ配列１６２に閾値データのリードリクエストコマンドを発行する。その後、対応する閾値が読み出される。ＳＲＡＭ配列１６２がディザ処理モジュール１６３からのリードリクエストコマンドを受信後、所定の閾値を読み出すＳ４１４の処理については、第１の実施形態におけるＳ５０１〜Ｓ５０５の説明と同様であるので、その説明を省略する。
【００７０】
図１２は、本実施形態でのＳ５０４における閾値の読出動作を説明するための図である。ＢＮマスク１２０１は、無回転のＢＮマスクである。第１の実施形態で説明したように、４×２画素のブロックに対応する閾値は、１個のＢＮマスク内部に存在する場合、異なるＳＲＡＭから読み出される。
【００７１】
図１２は、４×２画素のブロック１２０２がＢＮマスク間を跨いだ場合の例を示している。図１２のようにＢＮマスクが画像データに対してマッピングされた場合には、４×２画素のブロック１２０２がＢＮマスク間を跨いだとしても、ＳＲＡＭを表示するラベル（Ａ〜Ｐ）が重複せず、異なるＳＲＡＭから閾値が読み出されることになる。つまり、１クロックサイクルで４×２個の閾値を取得することができる。
【００７２】
図１１及び図１２では、無回転のＢＮマスクを説明したが、ＢＮマスクが回転されたパターンや鏡像等の場合であっても同様に、同時に異なるＳＲＡＭから閾値が読み出されることになる。
【００７３】
以上のように、本実施形態によれば、Ｍ×Ｎ画素のブロックがＢＮマスク間を跨いだとしても、異なるＳＲＡＭから複数個の閾値を読み出されることになり、１クロックサイクルでＭ×Ｎ個の閾値を取得することができる。
【００７４】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７５】
１００  複合機：  １１２  ＣＰＵ：  １１３  ＲＡＭ：  １１６  ＲＯＭ：  ２０１  制御部
【図１】
2018098543.tif 000003
【図２】
2018098543.tif 000004
【図３】
2018098543.tif 000005
【図４】
2018098543.tif 000006
【図５】
2018098543.tif 000007
【図６】
2018098543.tif 000008
【図７】
2018098543.tif 000009
【図８】
2018098543.tif 000010
【図９】
2018098543.tif 000011
【図１０】
2018098543.tif 000012
【図１１】
2018098543.tif 000013
【図１２】
2018098543.tif 000014
【図１３】
2018098543.tif 000015
【図１４】
2018098543.tif 000016
【図１５】
2018098543.tif 000017