(58)【調査した分野】(Int.Cl.,DB名)
前記マッピング手段は、前記マトリクスがマッピングされる位置を所定の画素分シフトさせながら、前記マトリクスを前記画像データにマッピングすることを特徴とする請求項3に記載の画像形成装置。
【発明を実施するための形態】
【0014】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【0015】
[第1の実施形態]
図1(a)は、画像形成装置100のブロック構成を示す図である。デジタル複合機100は、コントローラユニット110、操作部120、スキャナ130、プリンタ140を含む。コントローラユニット110には、操作部120が接続され、また、画像入力デバイスであるスキャナ130や画像出力デバイスであるプリンタ140が接続される。プリンタ140は、インクジェット記録方式や電子写真方式等により、記録媒体への画像の記録を行う。本実施形態では、画像形成装置100として複合機を説明するが、記録媒体への画像形成処理が行われる前のハーフトーン処理が実行されるのであれば、複合機(MFP)ではなく、印刷機能を有するSFPであっても良い。
【0016】
コントローラユニット110は、装置全体を統括的に制御するコントローラボードであり、CPU112を含む。CPU112は、ROM116に記憶されているブートプログラムによりOSを起動する。コントローラユニット110は、このOS上で、HDD115に記憶されているアプリケーションプログラムを実行して各種処理を実行する。RAM113は、CPU112の作業領域として用いられる。HDD115は、上記アプリケーションプログラムや各種データを記憶する。本実施形態の動作も、例えば、CPU112がROM116やHDD115に記憶されているプログラムをRAM113上に読み出して実行することにより実現される。
【0017】
CPU112には、システムバス119を介して、例えば、HDD115、ROM116、RAM113、操作部インタフェース(I/F)111、デバイスI/F114、ネットワークI/F117、画像処理部118が接続される。操作部I/F111は、タッチパネル等の表示部を有する操作部120とのインタフェースである。操作部I/F111は、操作部120に表示する各種設定データなどの情報を操作部120に送出したり、ユーザ操作により入力された情報を操作部120から受信してCPU112に送出する。デバイスI/F114には、例えば、スキャナ130およびプリンタ140が接続され、データや制御信号の入出力が行われる。ネットワークI/F117は、外部のネットワーク150に接続され、ネットワーク150を介してネットワーク150上の各装置との間で通信を行う。画像処理部118は、例えば、スキャナ130で光学的に原稿を読み取られた画像データに対する各種処理や、プリンタ140で印刷を行うための、画像回転、画像圧縮、解像度変換、色空間変換、階調変換などの画像データに対する各種処理を実行する。
【0018】
画像形成装置100が外部のPC等からネットワーク150を介して印刷対象のPDLデータを受信すると、CPU112の制御により、画像処理部118は、レンダリング処理が実行された多値の画像データを生成する。そして、画像処理部118は、スクリーン処理を実行し、多値の画像データから、プリンタ140の各色材色に対応した二値の画像データ(ハーフトーンデータ)を生成する。本実施形態では、画像処理部118は、ディザ法を用いるスクリーン処理システムを含み、そのスクリーン処理システムによりスクリーン処理を実行する。プリンタ140は、生成された二値の画像データに基づいて、記録媒体に画像を記録し、その後、印刷出力される。外部からのPDLデータの受信から印刷出力までの間で、上記以外にも、必要な処理が適宜行われる。例えば、PDLデータに付加された属性情報に基づいて、画像の加工や変換等の処理が行われる場合がある。
【0019】
図1(b)は、画像処理部118のスクリーン処理システムの構成を示す図である。スクリーン処理システム160は、ディザ法により、入力された画像データをM×N画素のブロック単位で二値の画像データに変換していく。その際に、スクリーン処理システム160は、128×128サイズのブルーノイズマスク(以下、BNマスク)を用いて、入力データ164と閾値との比較を行うことにより二値化データ165を生成する。入力データ164は、画像データのうちM×N画素のブロックに対応する画像データの画素値である。本実施形態では、スクリーン処理システム160は、4×2画素のブロック単位で二値化データ165への変換を行う。
図1(b)は、入力データ164の4×2画素のブロックの画素値(1、3、7、12、1、5、12、32)と、BNマスクの閾値(2、3、2、4、1、5、12、21)とが各画素について比較され、二値化データ165が生成される様子を示している。以下、ブロックを4×2画素として説明するが、プロセッサの処理能力や記憶素子の構成等に応じて、他の画素数で構成されても良い。
【0020】
スクリーン処理システム160は、ディザ設定モジュール161、SRAM配列162、ディザ処理モジュール163を含む。ディザ設定モジュール161は、SRAM配列162内に構成された複数の記憶素子、本実施形態では複数のSRAMのうち、特定のSRAMのアドレスに閾値を書き込む。ディザ処理モジュール163は、入力データの画素値と閾値との比較を行い、二値化データ165を生成して出力する。また、
図1(b)に示すように、クロック信号が、ディザ処理モジュール163とSRAM配列162とに入力されており、1個のSRAMについて、1クロックサイクルで1個の閾値が読み出される。つまり、複数のSRAMから各1個の閾値を1クロックサイクルで読み出すことが可能である。
【0021】
図2(a)は、ディザ設定モジュール161の構成の一例を示す図である。ディザ設定モジュール161は、例えば半導体集積回路装置で構成され、制御部201、情報格納部202、閾値設定送信部203を含む。制御部201は、例えばCPU或いは専用制御モジュールを含み、情報格納部202と閾値設定送信部203を制御する。制御部201は、
図1のCPU112の制御により動作する場合もある。情報格納部202は、不図示のRAMやROM等の記憶部を含み、ディザマトリクス内の閾値を記憶する。閾値設定送信部203は、SRAM配列162の特定のSRAMの特定のアドレスに対して閾値を書き込むリクエストコマンドを生成し、SRAM配列162に送信する。
【0022】
図2(b)は、ディザ処理モジュール163の構成の一例を示す図である。ディザ処理モジュール163は、例えば半導体集積回路装置で構成され、画像入力部211、インデクス取得部212、閾値リクエスト送信部213、閾値データ受信部214、画像処理部215、及び画像出力部216を含む。
【0023】
画像入力部211は、メモリ或いは他のモジュールから、画像データを受信する回路であり、1クロックサイクルで4×2個の入力データ、即ち画素値を受信する。また、画像入力部211は、受信した入力データを画像処理部215に送信する機能、及び、入力データを受信する度に、インデクス取得部212にインデクス取得指令を発行する機能を有する。
【0024】
インデクス取得部212は、画像入力部211からインデクス取得指令を受ける度に、当面の回転パターンに従い、入力データに対応する閾値を取得するためのインデクス値を取得する回路である。本実施形態では、インデクス値は、4×2個取得される。インデクス値は、BNマスク内での画素の位置を示す情報であり、BNマスクから該当する閾値を検索する際に使用される。取得されたインデクス値は、閾値リクエスト送信部213に送信される。閾値リクエスト送信部213は、インデクス取得部212により取得されたインデクス値を受信し、閾値のリードリクエストコマンドを生成してインデクス値とともにSRAM配列162に送信する。
【0025】
閾値データ受信部214は、SRAM配列162から、1クロックサイクルで4×2個の閾値データを受信し、画像処理部215に送信する。画像処理部215は、画像入力部211からの入力データと、閾値データ受信部214からの閾値データを受信し、入力データの画素値と閾値データの閾値との比較を行い、比較結果を二値化データとして、画像出力部216に送信する回路である。画像出力部216は、画像処理部215からの二値化データを受信し、メモリ或いは他のディザ処理モジュールに送信する。本実施形態では、1クロックサイクルで4×2画素分の二値化データを送信する。
【0026】
図3は、SRAM配列162の構成の一例を示す図である。SRAM配列162は、例えば半導体集積回路装置で構成され、リクエスト受信部301、SRAM選択部302、アドレス生成部303、データ格納部304、及び出力制御部305を含む。
【0027】
リクエスト受信部301は、ディザ処理モジュール163からリードリクエストコマンドを受信し、そのリードリクエストコマンドを、SRAM選択部302、アドレス生成部303、及び出力制御部305に送信する。SRAM選択部302は、リクエスト受信部301から受信したリードリクエストコマンドからインデクス情報を抽出し、該当するインデクス情報に対応する閾値を格納するSRAMを選択する選択信号を生成し、データ格納部304に送信する。
【0028】
アドレス生成部303は、リクエスト受信部301から受信したリードリクエストコマンドからインデクス情報を抽出し、該当するインデクス情報に対応する閾値を格納するSRAM中の位置信号(アドレス信号)を生成し、データ格納部304に送信する。データ格納部304は、Max(M,N)×Max(M,N)個、即ち、最大値の二乗個の比較的に小さい容量のSRAMの配列を含んで構成される。例えば、本実施形態では4×2画素のブロックであるので、Max(4,2)×Max(4,2)=4×4、即ち16個のSRAMの配列を含む。また、データ格納部304に含まれるSRAMの配列の総サイズは、BNマスクを格納するための最小サイズであり、本実施形態では、128×128である。つまり、1個のSRAMのサイズは、128×128÷16=1024アドレス分となる。
【0029】
データ格納部304は、SRAM選択部302とアドレス生成部303からのSRAM選択信号とアドレス信号を受信し、所定のSRAMの所定のアドレスから、閾値を読み出して出力制御部305に送信する。出力制御部305は、データ格納部304から閾値を受信し、リクエスト受信部301から受信したリードリクエストコマンドからインデクス情報を抽出する。そして、16個のSRAMの出力のうち特定の4×2個のSRAMの出力をディザ処理モジュール163に送信する。
【0030】
図4は、ディザマトリクスの閾値の設定から二値化データが出力されるまでの処理を示すフローチャートである。S401〜S405では、ディザ設定モジュール161がSRAM配列162に閾値データを書き込む処理を示す。S401〜S405の処理は、例えば、制御部201のCPUがROMに記憶されたプログラムを読み出して実行することにより実現される。
【0031】
S401において、制御部201は、既に設定した閾値の数とBNマスクのサイズとに基づき、閾値の設定が終了したか否かを判定する。閾値の設定が終了していないと判定された場合、S402において、制御部201は、情報格納部202から、所定の閾値データを読み出す。一方、閾値の設定が終了していると判定された場合、後述のS406へ進む。
【0032】
S403において、制御部201は、注目する閾値の書き込み先のSRAMを特定し、S404において、閾値の書き込み先のSRAMの中の位置(アドレス)を特定する。S405において、制御部201は、閾値設定送信部203を介して、SRAM配列214に対して、閾値の書込みリクエストを発行する。その後、S401からの処理を繰り返す。
【0033】
図6(a)は、S403のSRAMの特定を説明するための図である。BNマスク601は、128×128サイズのマトリクスである。注目閾値602をSRAM配列162に書き込む際、制御部201は、注目閾値の位置(X_Cord、Y_Cord)を確認する。ここで、X_Cordは、注目閾値602と注目閾値602が属する行の先頭との距離であり、本実施形態では、0〜127の値をとる。また、Y_Cordは、注目閾値602と注目閾値602が属する列の先頭との距離であり、本実施形態では、0〜127の値をとる。そして、上記のX_CordとY_Cordの値に基づき、式(1)に従い、書き込む先のSRAMの番号を特定する。
【0034】
X_Cord%max(M,N)+Y_Cord%max(M,N)*max(M,N) ・・・(1)
ここで、「%」は剰余を表す。本実施形態では、5%4+3%4*4=1+12=13となり、注目閾値602を書き込むSRAMは、
図6(a)のSRAM13であることを特定する。
【0035】
図6(b)は、S404のアドレスの特定を説明するための図である。X_CordとY_Cordは、上記で説明したとおりである。MatrixWidthは、BNマスクの幅であり、本実施形態では、128である。本実施形態では、X_Cord、Y_CordとMatrixWidthに基づき、式(2)に従い、書き込む先のアドレスを特定する。
【0036】
X_Cord/max(M,N)+(Y_Cord/(max(M,N))*(MatrixWidth/max(M,N)) ・・・(2)
ここで「/」は商を表す。本実施形態では、5/4+(3/4)*(128/4)=1+0=1となり、注目閾値602を書き込むSRAM13のアドレスは1であることを特定する。
【0037】
本実施形態では、
図6(a)及び
図6(b)の方法により、BNマスク601内の閾値は16個のSRAMに分散して格納される。
図7には、表示の便宜上、16個のSRAMをA〜Pで表し、BNマスク701内の閾値は対応するSRAMに格納されることを示す。例えば、矢印で示される4つの閾値Aは、SRAM−Aのアドレス0、1、32、33に格納される。
【0038】
図7では、BNマスクが128×128の場合を示している。
図13及び
図14は、本願の概念を容易に説明するための図である。
【0039】
図13(a)は、BNマスクが仮に8×8の場合を示す図である。ブロック単位は、上記と同様に、4×2画素である。ここで、
図13(a)に示すように、各ブロックをブロックA〜Hとする。そして、各ブロック内の位置を、左上から右上に向かって1、2、3、4と規定し、左下から右下に向かって5、6、7、8と規定する。つまり、ブロックAには、閾値A1、A2、A3、A4、A5、A6、A7、A8の8つの閾値がある。他のブロックB〜Hについても同様である。
図13(b)は、式(1)及び(2)を
図13(a)に適用した場合に、SRAM0〜15にどのように格納されるかを示す図である。
図13(b)のSRAM0〜15の並びは、
図3や
図6(a)で示した並びと同じである。つまり、4×2画素のブロックであるので、最大値4の二乗、16個のSRAMが構成されている。
【0040】
図13(b)に示すように、ブロックAについて、8つの閾値A1〜A8が、8つのSRAM0〜7から読み出される。また、ブロックBについて、8つの閾値B1〜B8が、8つのSRAM0〜7から読み出される。また、ブロックCについて、8つの閾値C1〜C8が、8つのSRAM8〜15から読み出される。また、ブロックDについて、8つの閾値D1〜D8が、8つのSRAM8〜15から読み出される。
【0041】
ブロックEについて、8つの閾値E1〜E8が、8つのSRAM0〜7から読み出される。また、ブロックFについて、8つの閾値F1〜F8が、8つのSRAM0〜7から読み出される。また、ブロックGについて、8つの閾値G1〜G8が、8つのSRAM8〜15から読み出される。また、ブロックHについて、8つの閾値H1〜H8が、8つのSRAM8〜15から読み出される。
【0042】
このように、どのブロックについても、異なるSRAMから閾値が読み出されることになる。つまり、どのブロックについても、1クロックサイクルでそのブロックの閾値を読み出すことができる。また、各SRAMについて必要な記憶容量は、
図13(b)に示すように、アドレス0〜3の4アドレス分で良く、BNマスクの8×8=64アドレスを確保しなくて良い。
【0043】
図14(a)は、BNマスクが仮に16×16の場合を示す図である。ブロック単位は、上記と同様に、4×2画素である。ここで、
図16(a)に示すように、各ブロックをブロックA〜Zfとする。そして、各ブロック内の位置を、左上から右上に向かって1、2、3、4と規定し、左下から右下に向かって5、6、7、8と規定する。つまり、ブロックAには、閾値A1、A2、A3、A4、A5、A6、A7、A8の8つの閾値がある。他のブロックB〜Zfについても同様である。
図14(b)は、式(1)及び(2)を
図14(a)に適用した場合に、SRAM0〜15にどのように格納されるかを示す図である。
図14(b)のSRAM0〜15の並びは、
図3や
図6(a)で示した並びと同じである。つまり、4×2画素のブロックであるので、最大値4の二乗、16個のSRAMが構成されている。
【0044】
図の簡略上、
図14(b)のSRAM0には、「A1〜D1、I1〜L1、Q1〜T1、Y1〜Zb1」と表記している。これは、A1、B1、C1、D1、I1、J1、K1、L1、Q1、R1、S1、T1、Y1、Z1、Za1、Zb1を表す。他のSRAM1〜15についても同様に表記している。
【0045】
図14(b)に示すように、例えば、ブロックAについて、8つの閾値A1〜A8が、8つのSRAM0〜7から読み出される。また、ブロックBについて、8つの閾値B1〜B8が、8つのSRAM0〜7から読み出される。また、ブロックCについて、8つの閾値C1〜C8が、8つのSRAM8〜15から読み出される。また、ブロックDについて、8つの閾値D1〜D8が、8つのSRAM8〜15から読み出される。
【0046】
他のブロックについても同様であり、どのブロックについても、異なるSRAMから閾値が読み出されることになる。つまり、どのブロックについても、1クロックサイクルでそのブロックの閾値を読み出すことができる。また、各SRAMについて必要な記憶容量は、
図14(b)に示すように、アドレス0〜15の16アドレス分で良く、BNマスクの16×16=256アドレスを確保しなくて良い。
図13及び
図14の効果は、
図7の場合でも同様であり、各SRAMについて必要な記憶容量は、アドレス0〜1023の1024アドレス分で良く、BNマスク701の128×128=16384アドレスを確保しなくても良い。
【0047】
再び、
図4を参照する。S406〜S413は、ディザ処理モジュール163が入力データを受信し、SRAM配列162にリードリクエストコマンドを送信し、読み込んだ閾値と入力データの画素値との比較を行い、その結果を出力する処理を示す。
【0048】
S406において、画像入力部211は、入力データを受信したか否かを判定する。入力データを受信したと判定された場合、S407において、画像入力部211は、受信した4×2画素のブロックを画像処理部215に送信するとともに、インデクス取得部212にインデクス取得コマンドを送信する。
【0049】
S408において、インデックス計算部212は、インデクス取得コマンドを受信すると、入力されたブロックに対応する閾値の4×2個のインデクスを取得する。インデクス取得部212は、その取得結果を閾値リクエスト送信部213に送信する。閾値リクエスト送信部213は、インデクス取得結果であるインデクス値を受信すると、インデクス値とともにSRAM配列162に閾値データのリードリクエストコマンドを発行する。SRAM配列162で行われるS414については後述する。
【0050】
S409において、閾値データ受信部214は、発行されたリードリクエストコマンドに対応する閾値データ、即ち4×2個の閾値を受信する。閾値データ受信部214は、受信された閾値データを画像処理部215に送信する。S410において、画像処理部215は、画像入力部211から送信された入力データの画素値と閾値データ受信部214から送信された閾値データの閾値との比較を行う。画素値が閾値より大きいと判定された場合、画像処理部215は、出力結果に“1”を代入し、データ出力部216に送信する。一方、画素値が閾値より大きくないと判定された場合、画像処理部215は、出力結果に“0”を代入し、データ出力部216に送信する。
【0051】
S413において、データ出力部216は、画像処理部215から送信された比較結果、即ち4×2画素の二値化データをディザ処理モジュール163の外部に出力する。本実施形態では、以上のように、入力データを二値化データに変換する。
【0052】
図8は、S407のインデクス値の取得結果を示す図である。本実施形態では、画像データが512×512サイズであるとする。本実施形態では、画像処理部118は、スクリーン処理を行う場合には、画像データ801に対して、
図8に示すように、128×128のBNマスク802と、BNマスク802を右方向に90度回転したBNマスク803とを結合するようにマッピングしている。このようなBNマスクのマッピングにより、マトリクス特有のパターンを目立ち難くしつつ、一般的には256×256サイズ以上のBNマスクが要求されるところSRAMに格納しておくBNマスクの容量を128×128のサイズに抑えることができる。
【0053】
S407で取得されるインデクスは、BNマスク内での画素の位置を示している。本実施形態では、
図8に示すように、BNマスク内で、各画素の位置を表す位置情報がインデクス値0〜16383として定められている。S407では、4×2画素のブロックに対応する8個のインデクス値が取得される。また、BNマスク802内で割り当てられたブロックのインデクス値0に対応するBNマスク803内での値は、インデクス値16256となる。
【0054】
再び、
図4を参照する。S414は、SRAM配列162がディザ処理モジュール163からのリードリクエストコマンドを受信した後に、所定の閾値を読み出す処理を示すフローチャートである。また、
図5は、S414の処理の詳細を示すフローチャートである。
【0055】
S501において、リクエスト受信部301は、ディザ処理モジュール163からリードリクエストコマンドを受信したか否かを判定する。ディザ処理モジュール163からリードリクエストコマンドを受信したと判定された場合、リクエスト受信部301は、リードリクエストコマンド及びインデクス取得結果をSRAM選択部302、アドレス生成部303、出力制御部305に送信する。
【0056】
S502において、SRAM選択部302は、受信したインデクス取得結果に基づいて、
図6(a)で説明した動作によりSRAMを特定する。S503において、アドレス生成部303は、受信したインデクス取得結果に基づいて、
図6(b)で説明した動作によりアドレスを特定する。
【0057】
S504において、データ格納部304は、SRAMを特定する情報とアドレスを特定する情報に基づき、所定のSRAMから閾値を読み出して出力制御部305に送信する。S505において、出力制御部305は、16個の閾値の中からリクエスト受信部301に送信されたインデクス情報に基づき、必要な8個の閾値を選択してディザ処理モジュール163に送信する。
【0058】
図9、
図10は、BNマスクの異なる回転パターンを用いる場合の、S504での閾値データの読出動作を説明するための図である。
図9(a)のBNマスク901は、無回転のBNマスクであり、
図8のBNマスク802に対応する。BNマスク901において、4×2の画素ブロックに対応する閾値は、ブロック902、903で読み出される。
図13及び
図14で説明したように、ブロック902、903内では、SRAMを表示するラベル(A〜P)が重複せず、異なるSRAMから閾値が読み出されることになる。つまり、1クロックサイクルで4×2個の閾値を取得することができる。
【0059】
図9(b)のBNマスク904は、BNマスク901を右方向に90度回転させたBNマスクであり、
図8のBNマスク803に対応する。4×2の画素ブロックに対応する閾値は、ブロック905、906で読み出される。
図9(b)に示すように、ブロック905、906内では、SRAMを表示するラベル(A〜P)が重複せず、異なるSRAMから閾値が読み出されることになる。つまり、1クロックサイクルで4×2個の閾値を取得することができる。
【0060】
図10(a)のBNマスク907は、BNマスク901を180度回転させたBNマスクである。4×2の画素ブロックに対応する閾値は、ブロック908、909で読み出される。
図10に示すように、ブロック908、909内では、SRAMを表示するラベル(A〜P)が重複せず、異なるSRAMから閾値が読み出されることになる。つまり、1クロックサイクルで4×2個の閾値を取得することができる。
【0061】
図10(b)のBNマスク910は、BNマスク901を右方向に270度回転させたBNマスクである。4×2の画素ブロックに対応する閾値は、ブロック911、912で読み出される。
図10(b)に示すように、ブロック911、912内では、SRAMを表示するラベル(A〜P)が重複せず、異なるSRAMから閾値が読み出されることになる。つまり、1クロックサイクルで4×2個の閾値を取得することができる。
【0062】
また、BNマスク901の鏡像を用いた場合であっても、BNマスク904、BNマスク907、BNマスク910と同じ動作となる。つまり、異なるSRAMから複数個の閾値を読み出されることになり、1クロックサイクルで4×2個の閾値を取得することができる。
【0063】
以上のように、本実施形態によれば、ディザマトリクスの回転パターンによらず、1クロックサイクルでM×N個の閾値データを読み出すことができる。さらには、必要なBNマスクのサイズ分の記憶領域を複数のSRAMで実現するので、SRAMの記憶領域の使用効率を向上させることができる。
【0064】
[第2の実施形態]
第1の実施形態では、
図8に示すように、回転させたBNマスクを結合する形態を説明した。本実施形態では、BNマスクを回転させずに、所定の画素分シフトさせたBNマスクを用いる形態を説明する。以下、
図4及び
図5を参照しながら、第1の実施形態と異なる点について説明する。
【0065】
ディザ設定モジュール161がSRAM配列162に閾値データを書き込む処理については、第1の実施形態におけるS401〜S405の説明と同様であるので、その説明を省略する。
【0066】
ディザ処理モジュール163が入力データを受信してから、閾値と入力データの画素値との比較を行い、その結果を出力するまでは、S407以外、第1の実施形態におけるS406〜S413の説明と同様であるので、その説明を省略する。
【0067】
以下、本実施形態におけるS407でのインデクス値の取得の処理について説明する。
図11は、本実施形態における画像データ1101にマッピングされたBNマスク内の各画素のインデクス値を示す図である。本実施形態では、
図11に示すように、128×128のBNマスク1102が、512×512の画像データ1101にマッピングされる。また、
図11に示すように、副走査方向(図中、上下方向)に128画素分進む度に、主走査方向(図中、左右方向)へのマッピングは、右方向に1画素シフトされる。
図11に示すように、副走査方向でのBNマスク間は、インデックス16256の画素の下にインデックス127の画素が位置する。
【0068】
本実施形態では、
図11に示すように、副走査方向でのBNマスク間で主走査方向へシフトされているので、マトリクス特有のパターンが目立ち難くなる。さらに、
図12で後述するように、4×2画素のブロックがBNマスク間を跨いだとしても、異なるSRAMから複数個の閾値を読み出されることになり、1クロックサイクルで4×2個の閾値を取得することができる。
【0069】
インデクス取得部212は、着目する4×2画素のブロックに対応するインデクス情報を閾値リクエスト送信部213に送信する。閾値リクエスト送信部213は、インデクス情報を受信すると、インデクス情報とともにSRAM配列162に閾値データのリードリクエストコマンドを発行する。その後、対応する閾値が読み出される。SRAM配列162がディザ処理モジュール163からのリードリクエストコマンドを受信後、所定の閾値を読み出すS414の処理については、第1の実施形態におけるS501〜S505の説明と同様であるので、その説明を省略する。
【0070】
図12は、本実施形態でのS504における閾値の読出動作を説明するための図である。BNマスク1201は、無回転のBNマスクである。第1の実施形態で説明したように、4×2画素のブロックに対応する閾値は、1個のBNマスク内部に存在する場合、異なるSRAMから読み出される。
【0071】
図12は、4×2画素のブロック1202がBNマスク間を跨いだ場合の例を示している。
図12のようにBNマスクが画像データに対してマッピングされた場合には、4×2画素のブロック1202がBNマスク間を跨いだとしても、SRAMを表示するラベル(A〜P)が重複せず、異なるSRAMから閾値が読み出されることになる。つまり、1クロックサイクルで4×2個の閾値を取得することができる。
【0072】
図11及び
図12では、無回転のBNマスクを説明したが、BNマスクが回転されたパターンや鏡像等の場合であっても同様に、同時に異なるSRAMから閾値が読み出されることになる。
【0073】
以上のように、本実施形態によれば、M×N画素のブロックがBNマスク間を跨いだとしても、異なるSRAMから複数個の閾値を読み出されることになり、1クロックサイクルでM×N個の閾値を取得することができる。
【0074】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。