(57)【要約】【課題】異なるバウンダリで格納するメモリ間でデータ転送を行う場合に、データの配列を変更して転送先のメモリに格納する技術を提供する。【解決手段】本出願の画像処理装置１０は、印刷対象の画像データに対してスクリーンデータを用いて処理を施す画像処理装置１０であって、スクリーンデータを１バイトバウンダリで格納する入力用メモリ１００と、スクリーンデータを４バイトバウンダリで格納する出力用メモリ１４０と、入力用メモリ１００に格納された１バイトバウンダリのスクリーンデータに対して、４バイトバウンダリの配列に変換するバウンダリ変換回路１２０と、配列が変換されたスクリーンデータを、出力用メモリ１４０に４バイトバウンダリで格納するメモリインタフェース１３０と、を備える。【選択図】図１
2009193485.tif 000002
【特許請求の範囲】
【請求項１】
印刷対象の画像データに対してスクリーンデータを用いて処理を施す画像処理装置であって、
前記スクリーンデータを第１のバウンダリで格納する第１のメモリと、
前記スクリーンデータを第２のバウンダリで格納する第２のメモリと、
前記第１のバウンダリで前記第１のメモリに格納されたスクリーンデータに対して、前記第２のバウンダリの配列に変換する変換回路と、
前記変換回路で配列が変換されたスクリーンデータを、前記第２のメモリに前記第２のバウンダリで格納する書込回路と、
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記スクリーンデータは、画素を２次元行列に配列した構成からなり、
前記変換回路は、
前記２次元行列の各行の先頭画素が、前記第２のメモリにおいて前記第２のバウンダリで区切られる行の先頭位置に配置されるように、前記第１のメモリに格納されたスクリーンデータを、前記第２のバウンダリの配列に変換する、
ことを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記スクリーンデータを構成する前記画素は、有効データ又は無効データであり、
前記第１のメモリは、前記スクリーンデータに含まれる有効データのみを前記第１のバウンダリで格納し、
前記変換回路は、
無効データを生成し、
前記２次元行列の各行の先頭画素が、前記第２のメモリにおいて前記第２のバウンダリで区切られる行の先頭位置に配置されるように、前記第１のメモリに格納された有効データを、生成した前記無効データとともに出力し、
前記書込回路は、
前記変換回路から出力された有効データ及び無効データを、前記第２のメモリに前記第２のバウンダリで書き込む、
ことを特徴とする画像処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の画像処理装置であって、
前記第１のメモリから所定の画素数ずつ前記スクリーンデータを前記変換回路に転送する転送回路と、
前記変換回路は、ＦＩＦＯと、複数のセレクタと、を備え、
前記ＦＩＦＯは、
前記転送回路から前記所定の画素数ずつ前記スクリーンデータが転送される毎に、当該スクリーンデータを記憶していき、
連続して記憶した２回分の前記スクリーンデータを、同タイミングで所定の前記セレクタに出力し、
前記セレクタは、
同タイミングで入力された前記スクリーンデータのうちの１つのスクリーンデータを、所定の規則に従って選択し、前記書込回路に出力する、
ことを特徴とする画像処理装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の画像処理装置であって、
前記書込回路は、カウンタを備え、
前記カウンタは、
前記スクリーンデータを前記第２のメモリに書き込んだ画素数をカウントし、
前記書込回路は、
前記カウンタがカウントした値に従って、前記スクリーンデータの書き込み先となる前記第２のメモリ上のアドレスを決定する、
ことを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の画像処理装置であって、
前記第１のバウンダリは、１バイトバウンダリであり、
前記第２のバウンダリは、４バイトバウンダリである、
ことを特徴とする画像処理装置。
【請求項７】
請求項１乃至６のいずれか１項に記載の画像処理装置であって、
前記第１のメモリは、ＤＲＡＭであり、
前記第２のメモリは、ＳＲＡＭである、
ことを特徴とする画像処理装置。
【請求項８】
請求項１乃至７のいずれか１項に記載の画像処理装置であって、
印刷対象の画像データに対してスクリーンデータを用いて施す前記処理は、前記画像データを構成する各画素の濃度値を２値化する２値化処理であり、
前記スクリーンデータは、画素ごとに、前記濃度値を２値化する基準となる閾値を有する２値化処理用スクリーンである、
ことを特徴とする画像処理装置。
【請求項９】
印刷対象の画像データに対してスクリーンデータを用いて処理を施す画像処理装置を備えるプリンタであって、
前記スクリーンデータを第１のバウンダリで格納する第１のメモリと、
前記スクリーンデータを第２のバウンダリで格納する第２のメモリと、
前記第１のバウンダリで前記第１のメモリに格納されたスクリーンデータに対して、前記第２のバウンダリの配列に変換する変換回路と、
前記変換回路で配列が変換されたスクリーンデータを、前記第２のメモリに前記第２のバウンダリで格納する書込回路と、
を備えることを特徴とするプリンタ。
【請求項１０】
印刷対象の画像データに対してスクリーンデータを用いて処理を施す画像処理装置を備える複合機であって、
前記スクリーンデータを第１のバウンダリで格納する第１のメモリと、
前記スクリーンデータを第２のバウンダリで格納する第２のメモリと、
前記第１のバウンダリで前記第１のメモリに格納されたスクリーンデータに対して、前記第２のバウンダリの配列に変換する変換回路と、
前記変換回路で配列が変換されたスクリーンデータを、前記第２のメモリに前記第２のバウンダリで格納する書込回路と、
を備えることを特徴とする複合機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、プリンタ、および、複合機に関する。
【背景技術】
【０００２】
印刷機能を有する複合機は、印刷に使用する各種データを、一方のメモリから他方のメモリにＤＭＡ（Direct Memory Access）転送することがある。
【０００３】
ここで、転送元のメモリと、転送先のメモリと、に異なるバウンダリでデータが格納される場合、転送するデータの種類によっては、転送時にデータの配列を変更する必要がでてくる。例えば、配列を変更する必要があるデータには、２値化処理用スクリーンなどがある。ここで、２値化処理用スクリーンとは、印刷対象の画像データを２値化する場合に用いる閾値データを指す。
【０００４】
特許文献１には、画像処理に用いるデータを、一方のメモリから他方のメモリにＤＭＡ（Direct Memory Access）転送することについて記載されている。
【特許文献１】特開２００６−３３０８７１号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、転送元のメモリと、転送先のメモリと、に異なるバウンダリでデータが格納される場合に、特許文献１に記載された技術を用いても、２値化処理用スクリーンなどのデータの配列を、転送時に変更することはできない。
【０００６】
本発明は、異なるバウンダリでデータを格納するメモリ間で、データ転送を行う場合に、データの配列を変更して転送先のメモリに格納する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するための本願発明の画像処理装置は、印刷対象の画像データに対してスクリーンデータを用いて処理を施す画像処理装置であって、前記スクリーンデータを第１のバウンダリで格納する第１のメモリと、前記スクリーンデータを第２のバウンダリで格納する第２のメモリと、前記第１のバウンダリで前記第１のメモリに格納されたスクリーンデータに対して、前記第２のバウンダリの配列に変換する変換回路と、前記変換回路で配列が変換されたスクリーンデータを、前記第２のメモリに前記第２のバウンダリで格納する書込回路と、を備える。
【発明の効果】
【０００８】
本発明の画像処理装置によれば、異なるバウンダリでデータを格納するメモリ間で、データ転送を行う場合に、データの配列を変更して転送先のメモリに格納することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態の一例を図面を参照して説明する。
【００１０】
図１は、本発明の実施形態が適用された画像処理装置１０のハードウェア構成の概要を説明するためのブロック図である。図示するような画像処理装置１０は、プリンタや複合機などの印刷機能を有する機器に備えられ、例えば、２値化処理などの各種画像処理を専用に行うＡＳＩＣ（Application Specific Integrated Circuit）である。
【００１１】
図示するように、画像処理装置１０は、入力用メモリ１００と、メモリコントローラ１１０と、バウンダリ変換回路１２０と、メモリインタフェース（Ｉ／Ｆ）１３０と、出力用メモリ１４０と、画像処理回路１５０と、を有する。
【００１２】
入力用メモリ１００は、画像処理装置１０全体を制御するＣＰＵ（図示せず）が生成したデータを格納するメモリである。入力用メモリ１００には、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＤＲＡＭ（Synchronous DRAM）、ＳＲＡＭ（Static Random Access Memory）などが用いられる。
【００１３】
入力用メモリ１００は、印刷対象の画像データや、画像データを２値化するために用いる２値化処理用スクリーンなどのデータを格納する。入力用メモリ１００は、１バイトバウンダリでデータを格納する。ここで、１バイトバウンダリとは、１バイト単位で処理を行うことをいう。
【００１４】
図２（Ａ）は、２値化処理用スクリーンを説明するためのイメージ図である。図示するように、２値化処理用スクリーンは、２値化処理に実際に使用する有効データ（斜線部分のデータ）と、２値化処理に実際には使用しない無効データ（無地部分のデータ）と、から構成される。有効データには、画像データを２値化するための判断基準となる閾値が画素（１バイト）ごとに格納されており、無効データには、無効データであることを示すデータ（Ｎ／Ａ）が画素ごとに格納されている。また、有効データのサイズは、２値化する対象の画像データの繰り返し周期によって定まる。例えば、図示するように、水平方向にｈ個の画素（ｈバイト）が入り、垂直方向にｖ個の画素（ｖバイト）が入る。また、２値化処理用スクリーンの最大サイズは、後述する出力用メモリ１４０の記憶容量によって定まる。例えば、水平方向にＨＭＡＸ個の画素（ＨＭＡＸバイト）が入り、垂直方向にＶＭＡＸ個の画素（ＶＭＡＸバイト）が入る。
【００１５】
図２（Ｂ）は、１バイトバウンダリの入力用メモリ１００に２値化処理用スクリーンを格納した状態を示す図である。図示するように、１バイトバウンダリの入力用メモリ１００には、２値化処理用スクリーンの無効データ（例えば、図２（Ａ）の座標（ｈ＋１，１）〜（ＨＭＡＸ，１）の無効データ）は記憶せず、有効データだけを記憶させる。また、以下では、簡単のため、入力用メモリ１００のアドレスを１次元アドレスとする。例えば、図示するように、座標（１，１）、（２，１）、（３，１）、（４，１）、（５，１）のデータが格納されているアドレスを、それぞれ、アドレス「０」、「１」、「２」、「３」、「４」といったようにする。
【００１６】
そして、１次元アドレスの昇順に、図２（Ａ）の２値化処理用スクリーンの有効データは、順次、入力用メモリ１００に格納される。例えば、２値化処理用スクリーンの１行分の有効データ（例えば、座標（１，１）〜座標（ｈ，１）の有効データ）は、図２（Ｂ）に示すように、ｘ座標の昇順に、入力用メモリ１００に格納される。また、各行の有効データは、図２（Ｂ）に示すように、ｙ座標の昇順に、入力用メモリ１００に格納される。また、上述したように、無効データは入力用メモリ１００には記憶されないため、例えば、座標（ｈ，１）の有効データと、座標（１，２）の有効データは、入力用メモリ１００の連続するアドレスの位置に格納される。
【００１７】
図１に戻り、メモリコントローラ１１０は、入力用メモリ１００を制御する。例えば、メモリコントローラ１１０は、入力用メモリ１００に入力された２値化処理用スクリーンを、４画素（４バイト）づつ、バウンダリ変換回路１２０にＤＭＡ（Direct Memory Access）転送する。すなわち、メモリコントローラ１１０は、入力用メモリ１００において同一行に格納されている全画素（４画素）を、パラレルにバウンダリ変換回路１２０に転送する。また、メモリコントローラ１１０は、入力用メモリ１００に入力された印刷対象の画像データを、画像処理回路１５０にＤＭＡ転送する。
【００１８】
また、メモリコントローラ１１０は、入力用メモリ１００に入力された２値化処理用スクリーンのヘッダを参照して、後述するバウンダリ変換回路１２０内の各セレクタ（１２６ａ〜ｄ）に、選択させるデータの指示を供給する。具体的には、メモリコントローラ１１０は、バウンダリ変換回路１２０に出力した２値化処理用スクリーンの画素数をカウントする。そして、メモリコントローラ１１０は、カウントしたカウント値と、２値化処理用スクリーンのヘッダに含まれている有効データのサイズ（ｈ，ｖ）と、から、各セレクタ（１２６ａ〜ｄ）が選択すべきデータを決定する。各セレクタ（１２６ａ〜ｄ）における、より具体的な選択アルゴリズムについては、後述する。
【００１９】
バウンダリ変換回路１２０は、入力用メモリ１００からＤＭＡ転送されてきた２値化処理用スクリーンを、２値化処理に適した配列の２値化処理用スクリーンに変換する。例えば、図３は、バウンダリ変換回路１２０で変換された２値化処理用スクリーンが、出力用メモリ１４０に格納された状態を示す図である。
【００２０】
図示するように、出力用メモリ１４０に格納される２値化処理用スクリーンは、図２（Ａ）に示す最大サイズ（ＨＭＡＸ，ＶＭＡＸ）の２値化処理用スクリーンに対応している。出力用メモリ１４０に格納される２値化処理用スクリーンは、図２（Ａ）に示す２値化処理用スクリーンにおける各行の先頭画素が、それぞれ、出力用メモリ１４０の行の先頭アドレスの位置に格納される。そして、先頭画素と同行の全ての有効データ及び無効データは、先頭画素が格納された位置を基準として、出力用メモリ１４０の連続したアドレスの位置に格納される。なお、出力用メモリ１４０のアドレスは、入力用メモリ１００と同様の１次元アドレスとする。
【００２１】
図４は、バウンダリ変換回路１２０のハードウェア構成の概要を説明するためのブロック図である。図示するように、バウンダリ変換回路１２０は、４個のＦＩＦＯ（First In First Out）１２１と、４個のセレクタ１２６と、を有する。
【００２２】
各ＦＩＦＯ（１２１ａ、１２１ｂ、１２１ｃ、１２１ｄ）は、それぞれ、直列に接続した複数のラッチレジスタを備えている。図示する例では、各ＦＩＦＯ（１２１ａ〜ｄ）は、入力段ラッチレジスタ（１２２ａ〜ｄ）と、中間段ラッチレジスタ（１２３ａ〜ｄ）と、出力前段ラッチレジスタ（１２４ａ〜ｄ）と、出力後段ラッチレジスタ（１２５ａ〜ｄ）と、を備えている。また、各ＦＩＦＯ（１２１ａ〜ｄ）は、入力段ラッチレジスタ（１２２ａ〜ｄ）に書き込まれたデータを出力待ち行列の最後のラッチレジスタへ順々に先送りするためのコントローラ（図示せず）を備えている。
【００２３】
各入力段ラッチレジスタ（１２２ａ〜ｄ）には、それぞれ、メモリコントローラ１１０から同タイミングで１画素分（１バイト）のデータが入力される。入力段ラッチレジスタ（１２２ａ〜ｄ）は、１画素分のデータが入力されると、コントローラ（図示せず）からのクロックパルス信号に応じて、入力されたデータを中間段ラッチレジスタ（１２３ａ〜ｄ）に出力する。
【００２４】
各中間段ラッチレジスタ（１２３ａ〜ｄ）には、それぞれ、各入力段ラッチレジスタ（１２２ａ〜ｄ）から１画素分（１バイト）のデータが入力される。中間段ラッチレジスタ（１２３ａ〜ｄ）は、コントローラ（図示せず）からのクロックパルス信号に応じて、保持しているデータを、出力前段ラッチレジスタ（１２４ａ〜ｄ）に出力する。
【００２５】
各出力前段ラッチレジスタ（１２４ａ〜ｄ）には、それぞれ、各中間段ラッチレジスタ（１２３ａ〜ｄ）から１画素分（１バイト）のデータが入力される。出力前段ラッチレジスタ（１２４ａ〜ｄ）は、コントローラ（図示せず）からのクロックパルス信号に応じて、保持しているデータを、出力後段ラッチレジスタ（１２５ａ〜ｄ）と、セレクタ（１２６ａ〜ｄ）と、に出力する。
【００２６】
より具体的には、図示するように、第１の出力前段ラッチレジスタ１２４ａは、第１の出力後段ラッチレジスタ１２５ａと、第２のセレクタ１２６ｂと、第３のセレクタ１２６ｃと、第４のセレクタ１２６ｄと、にデータを出力する。また、第２の出力前段ラッチレジスタ１２４ｂは、第２の出力後段ラッチレジスタ１２５ｂと、第３のセレクタ１２６ｃと、第４のセレクタ１２６ｄと、にデータを出力する。また、第３の出力前段ラッチレジスタ１２４ｃは、第３の出力後段ラッチレジスタ１２５ｃと、第４のセレクタ１２６ｄと、にデータを出力する。また、第４の出力前段ラッチレジスタ１２４ｄは、第４の出力後段ラッチレジスタ１２５ｄに、データを出力する。
【００２７】
各出力後段ラッチレジスタ（１２５ａ〜ｄ）には、それぞれ、各出力前段ラッチレジスタ（１２４ａ〜ｄ）から１画素分（１バイト）のデータが入力される。出力後段ラッチレジスタ（１２５ａ〜ｄ）は、コントローラ（図示せず）からのクロックパルス信号に応じて、保持しているデータを、セレクタ（１２６ａ〜ｄ）に出力する。
【００２８】
より具体的には、図示するように、第１の出力後段ラッチレジスタ１２５ａは、第１のセレクタ１２６ａに、データを出力する。また、第２の出力後段ラッチレジスタ１２５ｂは、第１のセレクタ１２６ａと、第２のセレクタ１２６ｂと、にデータを出力する。また、第３の出力後段ラッチレジスタ１２５ｃは、第１のセレクタ１２６ａと、第２のセレクタ１２６ｂと、第３のセレクタ１２６ｃと、にデータを出力する。また、第４の出力後段セレクタ１２５ｄは、第１のセレクタ１２６ａと、第２のセレクタ１２６ｂと、第３のセレクタ１２６ｃと、第４のセレクタ１２６ｄと、にデータを出力する。
【００２９】
上述のように、各ＦＩＦＯ（１２１ａ〜ｄ）は、出力前段ラッチレジスタ（１２４ａ〜ｄ）と、出力後段ラッチレジスタ（１２５ａ〜ｄ）と、が保持しているデータを、所定のセレクタ（１２６ａ〜ｄ）に同タイミングで出力する。
【００３０】
各セレクタ（１２６ａ〜ｄ）は、出力前段ラッチレジスタ（１２４ａ〜ｄ）と、出力後段ラッチレジスタ（１２５ａ〜ｄ）と、から同タイミングで入力されたデータのうち、１つのデータを選択して、メモリＩ／Ｆ１３０に出力する。また、各セレクタ（１２６ａ〜ｄ）は、入力されたいずれのデータも選択せずに、無効データをメモリＩ／Ｆ１３０に出力することもできる。ここで、各セレクタ（１２６ａ〜ｄ）が選択する出力データは、メモリコントローラ１１０からの指示に基づいて決定される。
【００３１】
以下に、各セレクタ（１２６ａ〜ｄ）が出力データを選択するアルゴリズムについて、図５〜８を参照して説明する。また、以下では、図２（Ａ）に示す２値化処理用スクリーンの連続する２行分のデータのうち、ｙ座標が小さい方を「前行」とよび、ｙ座標が大きい方を「後行」とよぶ。例えば、連続する第１行目のデータと第２行目のデータのうち、第１行目を「前行」、第２行目を「後行」とよぶ。
【００３２】
図５（Ａ）は、少なくとも第１〜第４の出力後段ラッチレジスタ（１２５ａ〜ｄ）に前行の有効データが保持された状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。
【００３３】
図示する状態の場合、第１〜第４のセレクタ（１２６ａ〜ｄ）は、それぞれ、第１〜第４の出力後段ラッチレジスタ（１２５ａ〜ｄ）から出力された有効データを選択する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００３４】
次に、図５（Ｂ）は、第１〜第３の出力後段ラッチレジスタ（１２５ａ〜ｃ）に前行の有効データが保持され、第４の出力後段ラッチレジスタ１２５ｄ及び第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。
【００３５】
図示する状態の場合、第１〜第３のセレクタ（１２６ａ〜ｃ）は、それぞれ、第１〜第３の出力後段ラッチレジスタ（１２５ａ〜ｃ）から出力された有効データを選択する。また、第４のセレクタ１２６ｄは、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００３６】
次に、図５（Ｃ）は、第１、第２の出力後段ラッチレジスタ（１２５ａ、ｂ）に前行の有効データが保持され、第３、第４の出力後段ラッチレジスタ（１２５ｃ、ｄ）及び第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。
【００３７】
図示する状態の場合、第１、第２のセレクタ（１２６ａ、ｂ）は、それぞれ、第１、第２の出力後段ラッチレジスタ（１２５ａ、ｂ）から出力された有効データを選択する。また、第３、第４のセレクタ（１２６ｃ、ｄ）は、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００３８】
次に、図５（Ｄ）は、第１の出力後段ラッチレジスタ１２５ａに前行の有効データが保持され、第２〜第４の出力後段ラッチレジスタ（１２５ｂ〜ｄ）及び第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。
【００３９】
図示する状態の場合、第１のセレクタ１２６ａは、第１の出力後段ラッチレジスタ１２５ａから出力された有効データを選択する。また、第２〜第４のセレクタ（１２６ｂ〜ｄ）は、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００４０】
次に、図６（Ａ）〜（Ｄ）は、第１の出力後段ラッチレジスタ１２５ａに保持されているデータが、既にメモリＩ／Ｆ１３０に出力済みである状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。そして、図６（Ａ）は、少なくとも第２〜第４の出力後段ラッチレジスタ（１２５ｂ〜ｄ）及び第１の出力前段ラッチレジスタ１２４ａに前行の有効データが保持された状態である。
【００４１】
図示する状態の場合、第１のセレクタ１２６ａは、第２の出力後段ラッチレジスタ１２５ｂから出力された有効データを選択する。また、第２のセレクタ１２６ｂは、第３の出力後段ラッチレジスタ１２５ｃから出力された有効データを選択する。また、第３のセレクタ１２６ｃは、第４の出力後段ラッチレジスタ１２５ｄから出力された有効データを選択する。また、第４のセレクタ１２６ｄは、第１の出力前段ラッチレジスタ１２４ａから出力された有効データを選択する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００４２】
次に、図６（Ｂ）は、第２〜第４の出力後段ラッチレジスタ（１２５ｂ〜ｄ）に前行の有効データが保持され、第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態である。
【００４３】
図示する状態の場合、第１〜第３のセレクタ（１２６ａ〜ｃ）は、それぞれ、図６（Ａ）の状態と同様に、第２〜第４の出力後段ラッチレジスタ（１２５ｂ〜ｄ）から出力された有効データを選択する。また、第４のセレクタ１２６ｄは、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００４４】
次に、図６（Ｃ）は、第２、第３の出力後段ラッチレジスタ（１２５ｂ、ｃ）に前行の有効データが保持され、第４の出力後段ラッチレジスタ１２５ｄ及び第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態である。
【００４５】
図示する状態の場合、第１、第２のセレクタ（１２６ａ、ｂ）は、それぞれ、図６（Ａ）の状態と同様に、第２、第３の出力後段ラッチレジスタ（１２５ｂ、ｃ）から出力された有効データを選択する。また、第３、第４のセレクタ（１２６ｃ、ｄ）は、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００４６】
次に、図６（Ｄ）は、第２の出力後段ラッチレジスタ１２５ｂに前行の有効データが保持され、第３、第４の出力後段ラッチレジスタ（１２５ｃ、ｄ）及び第１〜第４の出力前段ラッチレジスタ（１２４ａ〜ｄ）に後行の有効データが保持された状態である。
【００４７】
図示する状態の場合、第１のセレクタ１２６ａは、図６（Ａ）の状態と同様に、第２の出力後段ラッチレジスタ１２５ｂから出力された有効データを選択する。また、第２〜第４のセレクタ（１２６ｂ〜ｄ）は、無効データを生成する。各セレクタ（１２６ａ〜ｄ）は、それぞれ、選択した有効データ、及び、生成した無効データを、同タイミングでメモリＩ／Ｆ１３０に出力する。
【００４８】
そして、図７（Ａ）〜（Ｄ）は、第１、第２の出力後段ラッチレジスタ（１２５ａ、ｂ）に保持されているデータが、既にメモリＩ／Ｆ１３０に出力済みである状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。また、図８（Ａ）〜（Ｄ）は、第１〜第３の出力後段ラッチレジスタ（１２５ａ〜ｃ）に保持されているデータが、既にメモリＩ／Ｆ１３０に出力済みである状態で、各セレクタ（１２６ａ〜ｄ）が選択する出力データを説明する説明図である。
図７（Ａ）〜（Ｄ）及び図８（Ａ）〜（Ｄ）に示す状態においても、各セレクタ（１２６ａ〜ｄ）は、図６（Ａ）〜（Ｄ）で説明した処理と同様に、図示する太枠の有効データを選択して出力するか、或いは、無効データを生成して出力する。
【００４９】
以上のアルゴリズムに従って、バウンダリ変換回路１２０は、メモリコントローラ１１０から連続して転送された各有効データを、２値化処理に適した配列に変換して出力する。
【００５０】
図１に戻り、メモリＩ／Ｆ１３０は、出力用メモリ１４０を制御する。メモリＩ／Ｆ１３０は、例えば、バウンダリ変換回路１２０の各セレクタ（１２６ａ〜ｄ）から出力された２値化処理用スクリーンを出力用メモリ１４０に書き込む処理を行う。また、メモリＩ／Ｆ１３０は、２値化処理用スクリーンを書き込む先のアドレスをカウントアップするためのアドレスカウンタ１３５を備える。具体的な書き込み処理については、後述する。また、メモリＩ／Ｆ１３０は、画像処理回路１５０で処理された画像データを出力用メモリ１４０に書き込む処理も行う。
【００５１】
出力用メモリ１４０は、バウンダリ変換回路１２０、画像処理回路１５０で処理されたデータを格納するメモリである。出力用メモリ１４０には、例えば、ＳＲＡＭ、ＳＤＲＡＭ、ＤＲＡＭなどが用いられる。出力用メモリ１４０は、４バイトバウンダリであり、４バイト単位で区切られる各行の先頭アドレスを指定してデータの入出力を行う。出力用メモリ１４０に書き込まれた２値化処理用スクリーンは、例えば、画像処理回路１５０で画像データを２値化する際に、画像処理回路１５０などに読み出される。また、出力用メモリ１４０に書き込まれた画像データは、例えば、印刷の際に、画像処理装置１０全体を制御するＣＰＵ（図示せず）などに読み出される。
【００５２】
画像処理回路１５０は、入力された画像データに対して２値化処理などの各種画像処理を施す。具体的には、画像処理回路１５０は、処理対象である画像データの濃度値と、出力用メモリ１４０に先に作成しておいた２値化処理用スクリーンの閾値と、を対応する画素ごとに比較する。比較の結果、画像データの濃度値が、閾値を超えているか否かに応じて、画像データを画素ごとに２値化する。また、画像処理回路１５０は、２値化処理の他に、解像度を変換する処理、画像の拡大縮小処理、画像の回転処理、符号処理、復号化処理、などの各種画像処理を行う。
【００５３】
次に、上記構成からなる画像処理装置１０のメモリＩ／Ｆ１３０による、２値化処理用スクリーンの出力用メモリ１４０への書き込み処理について説明する。図９は、書き込み処理を示すフローチャートである。
【００５４】
メモリＩ／Ｆ１３０は、バウンダリ変換回路１２０の各セレクタ（１２６ａ〜ｄ）からデータが供給された場合に、書き込み処理を開始する。
【００５５】
書き込み処理を開始後、メモリＩ／Ｆ１３０は、出力用メモリ１４０の先頭アドレスを指定する（ステップＳ１０１）。これとともに、メモリＩ／Ｆ１３０は、アドレスカウンタ１３５のカウンタ値を初期化する。ここで初期化するカウンタ値には、ｘ座標カウンタ値ｉ（初期値０）と、ｙ座標カウンタ値ｊ（初期値０）と、が含まれる。このｘ座標カウンタ値ｉ及びｙ座標カウンタ値ｊをカウントすることによって、出力用メモリ１４０に書き込み中の画素が、図２（Ａ）に示す２値化処理用スクリーン内のどの位置（座標）の画素であるか特定できる。
【００５６】
次に、メモリＩ／Ｆ１３０は、アドレスカウンタ１３５のｙ座標カウンタ値ｊを取得し、取得したｙ座標カウンタ値ｊが、図２（Ａ）に示す有効データの最大画素数ｖ（垂直方向）に等しいか否かを判別する（ステップＳ１０２）。
【００５７】
メモリＩ／Ｆ１３０は、等しくないと判定した場合（ステップＳ１０２；Ｎｏ）、出力用メモリ１４０に書き込むべき有効データが残っていることになるため、書き込み先の指定アドレス（ＭＡＤＤＲ）を更新する（ステップＳ１０３）。具体的には、メモリＩ／Ｆ１３０は、先頭アドレス（ＳＴ＿ＡＤＤＲ）に、書き込み完了した画素の個数に一致する値（ＨＭＡＸ×ｊ＋ｉ）を加えて、指定アドレスを更新する。
【００５８】
続いて、メモリＩ／Ｆ１３０は、アドレスカウンタ１３５のｘ座標カウンタ値ｉを取得し、取得したｘ座標カウンタ値ｉが、図２（Ａ）に示す有効データの最大画素数ｈ（水平方向）−４以上か否かを判別する（ステップＳ１０４）。
【００５９】
メモリＩ／Ｆ１３０がｈ−４未満であると判定した場合（ステップＳ１０４；Ｎｏ）、図２（Ａ）に示す２値化処理用スクリーンのｙ座標カウンタ値ｊが指す行において、出力用メモリ１４０に書き込むべき有効データが残っていることになる。このとき、メモリＩ／Ｆ１３０は、各セレクタ（１２６ａ〜ｄ）から出力されたデータ（４画素分）を、出力用メモリ１４０の同一行に書き込む（ステップＳ１０５）。
【００６０】
続いて、アドレスカウンタ１３５は、その時点でのｘ座標カウンタ値ｉに、ステップＳ１０５で出力用メモリ１４０に書き込んだ画素数（ここでは「４」）を加える（ステップＳ１０６）。
【００６１】
続いて、メモリＩ／Ｆ１３０は、処理をステップＳ１０２に戻す。
【００６２】
一方、メモリＩ／Ｆ１３０がｈ−４以上であると判定した場合（ステップＳ１０４；Ｙｅｓ）、図２（Ａ）に示す２値化処理用スクリーンのｙ座標カウンタ値ｊが指す行において、書き込むべき全ての有効データが出力用メモリ１４０に書き込まれたことになる。このとき、アドレスカウンタ１３５は、ｙ座標カウンタ値ｊをインクリメントし、ｘ座標カウンタ値ｘを初期値０に戻す。これにより、次回のステップＳ１０３における指定アドレスの更新によって、指定アドレスを、有効データを書き込むべきアドレスまでスキップさせることができる。
【００６３】
続いて、メモリＩ／Ｆ１３０は、処理をステップＳ１０２に戻す。
【００６４】
また、ステップＳ１０２において、メモリＩ／Ｆ１３０が等しいと判定した場合（ステップＳ１０２；Ｙｅｓ）、書き込むべき全ての有効データが、出力用メモリ１４０に書き込まれたことになる。このとき、アドレスカウンタ１３５は、ｙ座標カウンタ値ｊを、２値化処理用スクリーンの最大サイズの値（垂直方向の値ＶＭＡＸ）にし、ｘ座標カウンタ値ｘを初期値０に戻す（ステップＳ１０９）。これにより、指定アドレスを、出力用メモリ１４０の最終行のアドレス（ＨＭＡＸ×ＶＭＡＸ）までスキップさせることができる。（ステップＳ１０９）。
【００６５】
続いて、メモリＩ／Ｆ１３０は、書き込み処理を終了する。
【００６６】
以上の書き込み処理をメモリＩ／Ｆ１３０が行うことによって、出力用メモリ１４０に、２値化処理に適した２値化処理用スクリーンを書き込むことができる。
【００６７】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。
【００６８】
例えば、本実施形態では、ＦＩＦＯ１２１を多段ラッチ構成にしているが、これに限定されない。ＦＩＦＯ１２１は、例えば、リングバッファ構成などのＦＩＦＯであってもよい。
【００６９】
また、上記実施形態では、書き込み処理のステップＳ１０７及びステップＳ１０８において、指定アドレスをスキップさせている。しかしながら、これに限定されない。例えば、ステップＳ１０７及びステップＳ１０８では、指定アドレスをスキップさせる代わりに、上記実施形態でスキップさせた全アドレスの位置で、無効データを書き込むようにしてもよい。
【００７０】
また、上記実施形態では、ＦＩＦＯ（１２１ａ〜ｄ）は、１つの中間段ラッチレジスタ（１２３ａ〜ｄ）を備えている。しかし、これに限定されず、複数の中間段ラッチレジスタを備えるようにしてもよい。
【００７１】
また、上記実施形態では、入力用メモリ１００が１バイトバウンダリの場合について説明している。しかし、入力用メモリ１００は、１バイトバウンダリに限らず、例えば、４バイトバウンダリであってもよい。
【００７２】
例えば、図１０は、入力用メモリ１００が４バイトバウンダリの場合に、２値化処理用スクリーンを格納した状態を示す図である。４バイトバウンダリの場合、入力用メモリ１００は、１画素ずつ処理できず、４画素単位（行単位）でデータの読み書きを行う。従って、図示するように、入力用メモリ１００には、２値化処理用スクリーンの一部の無効データが記憶されることがある。このような場合でも、バウンダリ変換回路１２０は、上記実施形態と同様の変換を、入力用メモリ１００から入力された２値化処理用スクリーンに対して行う。そして、メモリＩ／Ｆ１３０が、図９に示す書き込み処理を行うことにより、２値化処理に適した２値化処理用スクリーンを、出力用メモリ１４０に生成することができる。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施形態に係る画像処理装置のハードウェア構成図である。
【図２】（Ａ）２値化処理用スクリーンのイメージ図である。（Ｂ）２値化処理用スクリーンが１バイトバウンダリの入力用メモリに格納された状態を示す図である。
【図３】２値化処理用スクリーンが出力用メモリに格納された状態を示す図である。
【図４】バウンダリ変換回路のハードウェア構成図である。
【図５】（Ａ）〜（Ｄ）各セレクタが出力データを選択するアルゴリズムの第１の説明図である。
【図６】（Ａ）〜（Ｄ）各セレクタが出力データを選択するアルゴリズムの第２の説明図である。
【図７】（Ａ）〜（Ｄ）各セレクタが出力データを選択するアルゴリズムの第３の説明図である。
【図８】（Ａ）〜（Ｄ）各セレクタが出力データを選択するアルゴリズムの第４の説明図である。
【図９】メモリＩ／Ｆが行う書き込み処理を説明するためのフローチャートである。
【図１０】２値化処理用スクリーンが４バイトバウンダリの入力用メモリに格納された状態を示す図である。
【符号の説明】
【００７４】
１０・・・画像処理装置、１００・・・入力用メモリ、１１０・・・メモリコントローラ、１２０・・・バウンダリ変換回路、１２１（ａ〜ｄ）・・・ＦＩＦＯ、１２２（ａ〜ｄ）・・・入力段ラッチレジスタ、１２３（ａ〜ｄ）・・・中間段ラッチレジスタ、１２４（ａ〜ｄ）・・・出力前段ラッチレジスタ、１２５（ａ〜ｄ）・・・出力後段ラッチレジスタ、１２６（ａ〜ｄ）・・・セレクタ、１３０・・・メモリインタフェース、１３５・・・アドレスカウンタ、１４０・・・出力用メモリ、１５０・・・画像処理回路。
【図１】
2009193485.tif 000003
【図２】
2009193485.tif 000004
【図３】
2009193485.tif 000005
【図４】
2009193485.tif 000006
【図５】
2009193485.tif 000007
【図６】
2009193485.tif 000008
【図７】
2009193485.tif 000009
【図８】
2009193485.tif 000010
【図９】
2009193485.tif 000011
【図１０】
2009193485.tif 000012