(57)【要約】  【課題】セルスクリーン処理をハードウェアにより処理する技術を提供する。  【解決手段】プリンタコントローラに搭載し、画素ごとに階調値を持つ入力画像データを出力画像データに変換する画像処理回路１１１において、入力ラスタバッファ２０１と、セル切り出し制御部２０２と、セルバッファ２０３と、セルスクリーン処理部２０４と、ラスタバッファ書き込み制御部２１１と、ラスタバッファ読み出し制御部２１２と、出力ラスタバッファ２１３と、を有する。【選択図】図２
2008205612.tif 000002
【特許請求の範囲】
【請求項１】
プリンタコントローラに搭載し、画素ごとに階調値を持つ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、出力画像データに変換する画像処理回路において、
前記入力画像データの入力を受け付けて、前記入力画像データから、予め定めた形状でセルを切り出して、前記セルを構成する各画素の入力階調値から重心位置を求め、前記セル全体の入力階調値合計に対応するドットを、前記重心位置を基準にして成長させるように各画素の出力階調値を決定するスクリーン処理を行って、各画素の出力階調値を出力するセルスクリーン処理回路と、
前記スクリーン処理後の各画素の出力階調値を保持する出力ラスタバッファと、
前記スクリーン処理後の各画素の出力階調値を前記出力ラスタバッファに書き込む処理を行うラスタバッファ書き込み制御部と、
前記出力ラスタバッファに書き込まれた各画素の出力階調値を読み出して出力する処理を行うラスタバッファ読み出し制御部と、を有すること、
を特徴とする画像処理回路。
【請求項２】
請求項１に記載の画像処理回路であって、
前記ラスタバッファ書き込み制御部は、
前記出力ラスタバッファに書き込みを行う対象の画素が、隣接するセルの画素と重なりが生じている画素（共有画素）であるかを判断する共有画素判定機能と、
前記対象の画素が共有画素ではない場合、前記スクリーン処理が出力した当該画素の階調値を前記出力ラスタバッファに書き込む処理を行い、共有画素である場合は、前記スクリーン処理が出力した当該画素の階調値に、前記ラスタバッファ読み出し制御部が読み出した隣接するセルの当該画素の階調値を加算して、前記出力ラスタバッファに書き込む処理を行う書き込み処理機能と、を有すること、
を特徴とする画像処理回路。
【請求項３】
請求項２記載の画像処理回路であって、
前記ラスタバッファ書き込み制御部および前記ラスタバッファ読み出し制御部は、書き込みおよび読み出し対象の画素のアドレスを算出するアドレス演算部を共通に有し、
前記アドレス演算部は、
処理対象のセル行の書き込みを開始する前記ラスタバッファ内のラスタ行の位置を示す書き込み開始位置を記憶し、当該セル行の書き込み処理の終了後、前記書き込み開始位置にセル中心間の距離である垂直シフト量を加算することにより、次の処理対象であるセル行の書き込み開始位置を求め、
垂直シフト量を加算した書き込み開始位置が、前記出力ラスタバッファの最後のラスタ行の位置を超える場合、当該超過するラスタ行数を、前記出力ラスタバッファの先頭のラスタ行の位置から加算した位置を前記書き込み開始位置とし、
前記セル行の書き込み処理の終了後、前記垂直シフト量を加算する前の書き込み開始位置を読み出し開始位置とすること、
を特徴とする画像処理回路。
【請求項４】
請求項３記載の画像処理回路であって、
前記アドレス演算部は、
前記書き込み開始位置において、処理対象のセル行を構成する複数のラスタ行のうち一部のラスタ行が、前記出力ラスタバッファの最後のラスタ行の位置を超える位置になる場合、当該一部のラスタ行についての書き込み開始位置を前記出力ラスタバッファの先頭のラスタ行として、各画素の階調値を書き込むアドレスを算出すること、
を特徴とする画像処理回路。
【請求項５】
請求項１、２、３および４のいずれか一項に記載の画像処理回路であって、
前記出力ラスタバッファは、
ラスタ方向と垂直方向の幅が、少なくともセル二つ分の幅である画像処理回路。
【請求項６】
請求項１、２、３、４および５のいずれか一項に記載の画像処理回路であって、
前記セルスクリーン処理回路は、
前記入力画像データの入力を受け付けて、各画素の入力階調値を保持する入力ラスタバッファと、
前記入力ラスタバッファに格納された前記入力画像データから、予め定めた形状でセルを切り出すセル切り出し制御部と、
前記セル切り出し制御部によって切り出されたセルを一時的に保持するセルバッファと、
前記セルバッファに格納されたセルを構成する各画素の入力階調値から重心位置を求め、前記セル全体の入力階調値合計に対応するドットを、前記重心位置を基準にして成長させるように各画素の出力階調値を決定するスクリーン処理を行って、各画素の出力階調値を出力するセルスクリーン処理部と、を有することを特徴とする画像処理回路。
【請求項７】
請求項５または６に記載の画像処理回路を搭載したプリンタコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セル単位でスクリーン処理を行う画像処理回路、および、それを搭載したプリンタコントローラに関する。
【背景技術】
【０００２】
従来から、プリンタなどの画像処理装置は、画素ごとに多値の階調値を有する入力画像データに対して、ハーフトーン処理により、それよりも低い階調数（例えば２値）の出力画像データに変換して、印刷用紙に印刷が行われている。
【０００３】
ハーフトーン処理として種々の方法がある。例えば、ドット集中型ディザ法（多値ディザ法）による処理が知られている。多値ディザ法は、所定の大きさのマトリックス内に中央部からドットが成長するように閾値が配分され、各画素の入力階調値との比較により処理を行う。
【０００４】
また、複数画素から構成される所定の幾何学的形状のスクリーンセルを多階調画像に敷き詰めるように反復的に適用し、そのスクリーンセルにおいて、階調値の上昇に伴って、一定の順序に従ってドットを成長させていく処理が知られている。この処理においては、スクリーンセル内の画素それぞれに対応した、ガンマテーブル番号を示すインデックス値から構成される多値ディザマトリックス（インデックステーブル）と、各画素の入力階調値と出力階調値との対応関係を示すガンマテーブルを用い、各画素に対応するインデックス値の示すガンマテーブルを参照し、当該画素の入力階調値に対応する出力階調値を求める。
【０００５】
また、階調性と高解像度を両立させるため、複数画素から構成されるスクリーンセル内の各画素の階調値から重心位置を求め、その重心位置に各画素の階調値の和に対応するドットを成長させるようにしたものが、特許文献１に記載されている（以下「ＡＡＭ（Ａｄｖａｎｃｅｄ  ＡＭスクリーン）法」と称す）。さらに、ＡＡＭ法では、例えばセル内に細線があると円形ドットとしてまとめられしまい出力画像がぼやけてしまうなどの問題点を解決するための方法が特許文献１に記載されている。
【０００６】
【特許文献１】特開２００６−３２５１３６号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上に示したセルスクリーン処理は、一般的にはソフトウェアにより実現されており、１ページ分の画像データ（例えば、Ａ４、６００ｄｐｉ、単一色で約３５Ｍｂｙｔｅ）をＲＡＭなどのメモリに保持しながら処理を行っていた。しかし、同様のセルスクリーン処理をハードウェアで行う場合、画像データ１ページ分のメモリをＬＳＩ内部で持つことはコスト面等から現実的ではない。
【０００８】
そこで、本発明は、セルスクリーン処理の結果を保持する容量の小さい出力ラスタバッファを用いて、セルスクリーン処理をハードウェアにより処理する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、第１の態様は、プリンタコントローラに搭載し、画素ごとに階調値を持つ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、出力画像データに変換する画像処理回路において、前記入力画像データの入力を受け付けて、前記入力画像データから、予め定めた形状でセルを切り出して、前記セルを構成する各画素の入力階調値から重心位置を求め、前記セル全体の入力階調値合計に対応するドットを、前記重心位置を基準にして成長させるように各画素の出力階調値を決定するスクリーン処理を行って、各画素の出力階調値を出力するセルスクリーン処理回路と、前記スクリーン処理後の各画素の出力階調値を保持する出力ラスタバッファと、前記スクリーン処理後の各画素の出力階調値を前記出力ラスタバッファに書き込む処理を行うラスタバッファ書き込み制御部と、前記出力ラスタバッファに書き込まれた各画素の出力階調値を読み出して出力する処理を行うラスタバッファ読み出し制御部と、を有することを特徴とする。
【００１０】
また、前記画像処理回路において、前記ラスタバッファ書き込み制御部は、前記出力ラスタバッファに書き込みを行う対象の画素が、隣接するセルの画素と重なりが生じている画素（共有画素）であるかを判断する共有画素判定機能と、前記対象の画素が共有画素ではない場合、前記スクリーン処理が出力した当該画素の階調値を前記出力ラスタバッファに書き込む処理を行い、共有画素である場合は、前記スクリーン処理が出力した当該画素の階調値に、前記ラスタバッファ読み出し制御部が読み出した隣接するセルの当該画素の階調値を加算して、前記出力ラスタバッファに書き込む処理を行う書き込み処理機能とを有する構成とすることができる。
【００１１】
また、前記画像処理回路において、前記ラスタバッファ書き込み制御部および前記ラスタバッファ読み出し制御部は、書き込みおよび読み出し対象の画素のアドレスを算出するアドレス演算部を共通に有し、前記アドレス演算部は、処理対象のセル行の書き込みを開始する前記ラスタバッファ内のラスタ行の位置を示す書き込み開始位置を記憶し、当該セル行の書き込み処理の終了後、前記書き込み開始位置にセル中心間の距離である垂直シフト量を加算することにより、次の処理対象であるセル行の書き込み開始位置を求め、垂直シフト量を加算した書き込み開始位置が、前記出力ラスタバッファの最後のラスタ行の位置を超える場合、当該超過するラスタ行数を、前記出力ラスタバッファの先頭のラスタ行の位置から加算した位置を前記書き込み開始位置とし、前記セル行の書き込み処理の終了後、前記垂直シフト量を加算する前の書き込み開始位置を読み出し開始位置とする構成とすることができる。
【００１２】
また、前記画像処理回路において、前記アドレス演算部は、前記書き込み開始位置において、処理対象のセル行を構成する複数のラスタ行のうち一部のラスタ行が、前記出力ラスタバッファの最後のラスタ行の位置を超える位置になる場合、当該一部のラスタ行についての書き込み開始位置を前記出力ラスタバッファの先頭のラスタ行として、各画素の階調値を書き込むアドレスを算出する構成とすることができる。
【００１３】
また、前記画像処理回路において、前記出力ラスタバッファは、ラスタ方向と垂直方向の幅が、少なくともセル二つ分の幅である構成とすることができる。
【００１４】
また、前記画像処理回路において、前記セルスクリーン処理回路は、前記入力画像データの入力を受け付けて、各画素の入力階調値を保持する入力ラスタバッファと、
前記入力ラスタバッファに格納された前記入力画像データから、予め定めた形状でセルを切り出すセル切り出し制御部と、前記セル切り出し制御部によって切り出されたセルを一時的に保持するセルバッファと、前記セルバッファに格納されたセルを構成する各画素の入力階調値から重心位置を求め、前記セル全体の入力階調値合計に対応するドットを、前記重心位置を基準にして成長させるように各画素の出力階調値を決定するスクリーン処理を行って、各画素の出力階調値を出力するセルスクリーン処理部と、を有することができる。
【００１５】
また、前記画像処理回路を搭載したプリンタコントローラを構成することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明を実施するための最良の形態について説明する。
【００１７】
スクリーンセルを用いた処理方法において、形状が非対称であるスクリーンセルを多階調画像に敷き詰めるように反復的に適用した場合、ノイズが発生するという問題がある。そこで、本発明においては、セル周辺部の画素を、隣接する他の複数のセルと共有することでセル形状が対称になるように構成する方法を例として説明する。以下当該方法の概略を説明する。
【００１８】
図３は、入力画像に対してスクリーンセルを繰り返し適用した例を示す図である。図４は、セル周辺部の画素を他のセルと共有した場合の出力階調値の計算方法の例を示す図である。
【００１９】
図３に示すように、例えばスクリーンセル３０１の様な形状のスクリーンセルを適用すると、いずれのセルにも組み入れられない画素Ａ３０２、画素Ｂ３０３のような画素が存在することになる。これについては、画素Ａ３０２、画素Ｂ３０３いずれか一方を組み入れた形状のスクリーンセルを適用することで、入力画像の全ての画素についてスクリーンセル処理を行うことができる。しかし、この場合のスクリーンセルは形状が非対称であるため、出力画像にノイズが発生することがある。
【００２０】
そこで、画素Ａ３０２および画素Ｂ３０３を隣接するスクリーンセルで共有する。これにより、スクリーンセルの形状が対称となり、出力画像のノイズの発生を減少させることが可能となる。
【００２１】
次に、図４を用いて、画素共有を実現するための出力階調値の計算方法について説明する。図４に示す例では、形状の異なるセルＡ４００（４−Ａ参照）およびセルＢ４０１（４−Ｂ参照）を用いた場合のスクリーン処理について説明しているがこれに限られない。図３に示したように同一形状のセルを用いてもよい。共有画素についての処理は、各セルについてスクリーン処理を行った結果を使って、各セルにおける共有画素についての階調値を按分することにより行う。具体的には、次のように行う。
【００２２】
セルを構成する各画素について、共有レベルを示す値（ｒａｔｉｏ）が指定される。ｒａｔｉｏは、共有される画素のセルごとの出力割合を表す値である。図４では、セルＡ４００の共有画素４０２、４０３について、ｒａｔｉｏ＝３を適用している。また、セルＢ４０１の共有画素４０２、４０３について、ｒａｔｉｏ＝１を適用している。セルＡ４００およびセルＢ４０１の非共有画素４０４については、ｒａｔｉｏ＝４を適用している。ここで値４は最大値である（以下、ｍａｘｒａｔｉｏと呼ぶ）。なお、ｒａｔｉｏの値は、セルの形状等に応じて設定変更可能な値である。
【００２３】
例えば、セルＡ４００の共有画素４０２の階調値＝５８、セルＢ４０１の共有画素４０２の階調値＝２６であるとする。この場合、共有画素４０２の出力階調値は以下の様に求めることができる（４−Ｃ参照）。｛ｉｎｔ（（５８＊３＋２６＊１）／４）＝５０｝。
【００２４】
以上、隣接する複数のセル間で画素を共有する方法について説明した。なお、本発明は、画素共有を行わないセルスクリーン処理であっても適用できる。
【００２５】
図１は、本発明が適用されるプリンタコントローラの構成の概略を示す図である。プリンタコントローラ１１０は、例えば、図示しないインタフェースを介して、ホストコンピュータ１００と接続される。また、プリンタコントローラ１１０が生成したデータを出力する印刷エンジン１２０が接続される。
【００２６】
ホストコンピュータ１００は、例えば、アプリケーションプログラムにより文字データや図形データ等の印刷対象のデータを生成する。印刷に際し、印刷対象のデータをラスタライズした画像データをプリンタコントローラ１１０に出力する。
【００２７】
プリンタコントローラ１１０は、画像処理回路１１１と、パルス幅変調部１１２とを有する。画像処理回路１１１は、ホストコンピュータ１００から入力された入力画像データを受け付け、例えば、セルスクリーン処理や、インデックステーブルとガンマテーブルを用いたハーフトーン処理を行う（以下、セルスクリーン処理およびハーフトーン処理を含めてセルスクリーン処理と呼ぶ）。セルスクリーン処理は、入力画像データの各画素について、例えば描画レーザパルス幅を示すデータ（出力階調値）に変換した出力画像データを生成し、パルス幅変調部１１２に出力する。パルス幅変調部１１２は、入力されたデータに対応したレーザパルス幅信号を生成し、印刷エンジン１２０に出力する。印刷エンジン１２０は、入力されたレーザパルス幅信号に基づいて印刷用紙に印刷を行う。印刷エンジン１２０は、例えばレーザプリンタであれば、レーザ照射機構、感光体ドラム、紙送り機構等により構成される。
【００２８】
次に、本発明に係るセルスクリーン処理を行う画像処理回路１１１について説明する。図２は、画像処理回路１１１の構成とデータの流れを説明するためのブロック図である。
【００２９】
画像処理回路１１１は、セルスクリーン処理回路２００と、出力処理回路２１０を有する。セルスクリーン処理回路２００は、入力ラスタバッファ２０１、セル切り出し制御部２０２、セルバッファ２０３およびセルスクリーン処理部２０４を有する。また、出力処理回路２１０は、ラスタバッファ書き込み制御部２１１、ラスタバッファ読み出し制御部２１２および出力ラスタバッファ２１３を有する。
【００３０】
入力ラスタバッファ２０１は、入力画像データの入力を受け付けて各画素の入力階調値を保持するハードウェアロジック回路内蔵メモリである。例えば、デュアルポートのＤＲＡＭ、ＳＲＡＭなどが用いられる。図５に示すように、ホストコンピュータ１００から入力された、複数の画素５０１で構成される入力画像データ５００が格納される。各画素５０１に対応するアドレスには各画素の入力階調値が保持される。
【００３１】
セル切り出し制御部２０２は、入力ラスタバッファ２０１に格納された入力画像データ５００から、予め定めた形状のセルを切り出し、セルバッファ２０３に格納する。セルバッファ２０３は、例えば２面の領域を有し、セルスクリーン処理部２０４が片方の領域を読み出して処理を行っている間に、もう一方の領域に切り出した次のセルを書き込む処理を行う。図５に示すように、例えば、セル５０２の切り出し処理は右方向（ラスタ方向）に順に進む。
【００３２】
なお、図５では、説明の便宜上、５×５画素の領域をセル５０２として図示しているが、セル中心５０３を基準とした種々の形状およびサイズのセルを適用可能である。また、図５に示す例では、セル切り出し方向（ラスタ方向）のセル列について見かけ上の重なりが存在するが、説明を理解し易くするため、セル切り出し方向において隣接するセル列の間では画素の共有を回避したセル形状が適用されるものとして説明する。ここで、複数セルのラスタ方向への並びをセル行（ラスタであれば、ラスタ行）と呼び、ラスタ方向と垂直方向への並びをセル列（ラスタであれば、ラスタ列）と呼ぶものとする。また、隣接するセル行において、セル中心間の距離を垂直シフト量と呼ぶ。例えば、図５では、５０５である。
【００３３】
セルスクリーン処理部２０４は、複数画素から構成されるセル内の各画素の入力階調値から重心位置を求め、その重心位置を基準として各画素の階調値の和に対応するドットを成長させる処理を行う。
【００３４】
具体的には、セルスクリーン処理部２０４は、まず、セルバッファに２０２に格納されたセルを構成する各画素の座標、各画素の入力階調値、セル内の入力階調値の合計から重心位置を演算する。次に、多値ディザマトリックスおよびガンマテーブルを用い、セル全体の入力階調値合計を保ちながら、重心位置に最も近い画素から順に出力階調値を演算して出力する。
【００３５】
出力ラスタバッファ２１３は、セルスクリーン処理部２０４が出力した各画素の出力階調値を保持するハードウェアロジック回路内蔵メモリである。例えば、デュアルポートのＤＲＡＭ、ＳＲＡＭなどが用いられる。
【００３６】
ラスタバッファ書き込み制御部２１１は、セルスクリーン処理部２０４が出力した各画素の出力階調値を出力ラスタバッファ２１３に書き込む処理を行う。また、書き込み処理対象画素が共有画素である場合、セルスクリーン処理部２０４が出力した階調値と、ラスタバッファ読み出し制御部２１２が読み出した階調値を用いて、当該共有画素の出力階調値を決めるための演算を行い、出力ラスタバッファ２１３に書き込む処理を行う。ラスタバッファ読み出し制御部２１２は、出力ラスタバッファ２１３に書き込まれた各画素の出力階調値を読み出し、例えばパルス幅変調部１１２など、別の回路に出力する処理を行う。ラスタバッファ書き込み制御部２１１およびラスタバッファ読み出し制御部２１２は、それぞれ書き込み位置、および、読み出し位置となるアドレスを決定するためのアドレス演算部２１４（図６参照）を有する。なお、本実施形態では、アドレス演算部２１４は、ラスタバッファ書き込み制御部２１１およびラスタバッファ読み出し制御部２１２によって共有される。もちろん、これに限定されず、それぞれにアドレス演算部を設ける構成とすることもできる。
【００３７】
次に、本発明に係る、出力ラスタバッファを用いた出力処理回路２１０について具体的に説明する。図６は、第１の実施形態に係る、出力処理回路２１０の構成とデータの流れを説明する図である。図７は、第１〜３の実施形態に係る出力ラスタバッファ用いた処理を説明する図である。
【００３８】
図６、図７を参照して、第１の実施形態に係る出力ラスタバッファを用いた出力処理回路２１０の動作について説明する。なお、図７では、説明の便宜上、図５と同様に５×５画素の領域をセルとして図示しているが、セル中心７０１を基準とした種々の形状およびサイズのセルを適用可能である。また、図７に示す例では、横方向（ラスタ方向）のセル列について見かけ上の重なりが存在するが、説明を理解し易くするため、ラスタ方向において隣接するセル列の間では画素の共有を回避したセル形状が適用されるものとして説明する。
【００３９】
図６に示すように、セルスクリーン処理部２０４は、セル単位でスクリーン処理を行い、出力階調値を求めた画素から順に、その画素の出力階調値にｒａｔｉｏを乗じた値を出力する。また、処理対象の画素の座標値を出力する。
【００４０】
ラスタバッファ書き込み制御部２１１は、アドレス演算部２１４により算出されたアドレスに、セルスクリーン処理部２０４から受け付けた階調値を書き込む処理を行う。ラスタバッファ読み出し制御部２１２は、アドレス演算部２１４により算出されたアドレスから、ラスタ行毎に各画素の階調値をラスタ方向に読み出す処理を行う。また、指定されたアドレスの各画素の階調値を読み出す処理を行う。
【００４１】
また、ラスタバッファ書き込み制御部２１１は、アドレス演算部２１４により算出されたアドレスが示す処理対象の画素が共有画素であるかを判定する処理を行う。処理対象の画素が共有画素であると判定した場合は、アドレス演算部２１４により算出されたアドレスをラスタバッファ読み出し制御部２１２に通知して当該画素の階調値を読み出させる。そして、ラスタバッファ書き込み制御部２１１は、アドレス演算部２１４により通知されたアドレスに、セルスクリーン処理部２０４から受け付けた階調値と、ラスタバッファ読み出し制御部２１２から通知された階調値とを加算した値を書き込む処理を行う。共有画素ではないと判定した場合は、アドレス演算部２１４により算出されたアドレスに、セルスクリーン処理部２０４から受け付けた階調値を書き込む処理を行う。
【００４２】
アドレス演算部２１４は、例えば、セルスクリーン処理部２０４から処理対象の画素のセル内における座標値を受け取り、図示しないセル切り出し制御部２０２から当該セルの入力ラスタバッファ２０１に格納された入力画像データ内における座標値を受け取る。これらの二つの座標値から、処理対象の画素について、出力ラスタバッファ２１３における書き込みアドレスを算出する。
【００４３】
また、アドレス演算部２１４は、出力ラスタバッファ２１３内において、セル行の書き込みを開始する位置（ラスタ行）を管理している。例えば、図７に示すように、（７−Ａ）では、（ＲＡＭ０：アドレス０）を記憶しておき、当該セル行の処理が終わると、垂直シフト量４を加算した（ＲＡＭ４：アドレス０）を記憶する。当該セル行の処理が終わると（７−Ｂ参照）、垂直シフト量４を加算した（ＲＡＭ８：アドレス０）を記憶する。当該セル行の処理が終わると、次に記憶する位置は、出力ラスタバッファ２１３のラスタ行数は９であるため、（ＲＡＭ３：アドレス０）となる（７−Ｃ参照）。以降、同様に管理が行われる。
ここで、書き込み開始位置からセル行の各セルの処理を行うと、セル行を構成する複数のラスタ行の一部のラスタ行が、出力ラスタバッファ２１３の最後のラスタ行を超える位置になる場合がある。この場合は、当該一部のラスタ行の各画素については、出力ラスタバッファ２１３の最初のラスタ行から処理を行うものとする。例えば、図７に示すように、（７−Ｃ）では、セル１１（セル中心７１１を基準としたセル）の書き込み開始位置は（ＲＡＭ８：アドレス０）である。しかし、ラスタ行４行については、出力ラスタバッファ２１３の最後のラスタ行（ＲＡＭ８）を超える。そこで、アドレス演算部２１４は、ラスタ行４行の中の座標値の画素について処理を行う場合、（ＲＡＭ０〜３）のアドレスを算出する。
【００４４】
このように、アドレス演算部２１４は、座標値、書き込み開始位置、最後のラスタ行位置を用いて、各画素の階調値を書き込むアドレスを求める。処理が終了したラスタ行の読み出し位置についても同様に、読み出し開始位置の管理を行い、ラスタバッファ書き込み制御部２１１のよる書き込み処理と、ラスタバッファ読み出し制御部２１２による読み出し処理を並行して行わせる。なお、ここでは、出力ラスタバッファのラスタ行数９、セル行の垂直シフト量４として例示したがこれに限られない。セルの形状、ラスタバッファのサイズ等は適宜変更可能である。
【００４５】
具体的な書き込みおよび読み出し処理について図７を用いて説明する。先ず、ラスタバッファ書き込み制御部２１１は、セル１（セル中心７０１を基準としたセル、他のセルについても同様）の各画素についてデータの書き込み処理を行う（７−Ａ参照）。この時、非共有画素（例えば、ＲＡＭ１：アドレス１、ＲＡＭ０：アドレス３）については、階調値にｍａｘｒａｔｉｏ（この例では４とする）を乗じた値を書き込む。共有画素（例えば、ＲＡＭ４：アドレス３）については、階調値にセル１における当該画素のｒａｔｉｏ（この例では３とする）を乗じた値を書き込む。同一セル行のセル２〜セル５についても同様に処理が行われる。セル２〜セル５について処理が行われている間、セル１のデータは出力ラスタバッファ２１３に保持されている。セル１〜セル５について処理が終了すると、ＲＡＭ０〜３：アドレス０〜２１の範囲に書き込まれたデータには共有画素がないため、出力が可能となる。
【００４６】
次に、出力ラスタバッファ読み出し制御部２１２は、出力可能となったＲＡＭ０〜３：アドレス０〜２１の範囲のデータを読み出す（７−Ｂ参照）。読み出す順序は、ラスタ行毎にラスタ方向へ、ＲＡＭ０：アドレス０〜２１、ＲＡＭ１：アドレス０〜２１であり、ＲＡＭ２、ＲＡＭ３についても同様である。読み出しが終わったアドレスには値０を書き込む。読み出されたデータは、シフタ２１６により、ｍａｘｒａｔｉｏで割り算が行われ、出力階調値として次段の処理回路に出力される。
【００４７】
データの出力と並行して、セル６〜１０についてもセル単位で書き込み処理が行われる。共有画素（例えば、ＲＡＭ４：アドレス３）について処理を行う際は、出力ラスタバッファ読み出し制御部２１２を用いて、既に書き込まれたセル１における当該画素のデータ読み出し、階調値にセル６における当該画素のｒａｔｉｏ（この例では１とする）を乗じた値を、読み出したデータに加算して書き込む。加算は加算器２１５により行われる。非共有画素（例えば、ＲＡＭ８：アドレス３、ＲＡＭ７：アドレス０）については階調値に、ｍａｘｒａｔｉｏを乗じた値を書き込む。セル７〜セル１０についても同様に処理が行われる。セル７〜セル１０について処理が行われている間、セル６のデータは出力ラスタバッファ２１３に保持されている。セル６〜セル１０について処理が終了すると、ＲＡＭ４〜７：アドレス０〜２１の範囲に書き込まれたデータは、非共有画素、共有画素の両方について処理が終了しているため、出力が可能となる。
【００４８】
出力ラスタバッファ読み出し制御部２１２は、出力可能となったＲＡＭ４〜７：アドレス０〜２１の範囲のデータを読み出し（７−Ｃ参照）、出力する。また、データの出力と並行して、セル１１以降のセルについてセル単位で書き込み処理が行われる。書き込み処理は、ＲＡＭ８：アドレス０〜２１、ＲＡＭ０〜３：アドレス０〜２１に対して行われる。以降同様に書き込みと読み込みの処理が並行して行われる。
【００４９】
以上、第１の実施形態に係る、出力ラスタバッファを用いた画像処理回路について説明した。なお、セル１〜５の順序に処理を行うものとしたが、セル１、５、２、３、４の順序にしてもよい。本実施形態に係る出力ラスタバッファを実装する場合、例えば、メモリ容量は、｛（８１９２ｗｏｒｄ）＊（１０ｂｉｔ）＊（９本）＝（７２０ｋｂｉｔ）｝となる。１０ｂｉｔとなるのは、８ｂｉｔの階調値にｒａｔｉｏ（ここでは、１〜４）を掛けるため、２ｂｉｔが必要だからである。このような構成にすることにより、ハードウェアによるセルスクリーン処理を実現するとともに、大容量のメモリ（例えば１ページ分の画像データ）をＬＳＩ内部に持つ必要がなくなり、大幅なコストダウンを実現できる。また、メモリ容量の削減により消費電力削減を実現できる。
【００５０】
以下、図７、図８を参照して、第２の実施形態に係る、出力ラスタバッファを用いた画像処理回路について、第１の実施形態と異なる点を中心に説明する。図８は、第２の実施形態に係る、出力処理回路２１０の構成とデータの流れを説明する図である。
【００５１】
図８に示すように、第２の実施形態においては、シフタ２１６を、セルスクリーン処理部２０４の次段に配置する。セルスクリーン処理部２０４が出力する各画素の階調値にｒａｔｉｏを乗じた値は、シフタ２１６によりｍａｘｒａｔｉｏで割り算が行われる。すなわち、出力ラスタバッファ２１３に書き込まれるデータは、｛（各画素の階調値）＊（各画素のｒａｔｉｏ）／（ｍａｘｒａｔｉｏ）｝となる。また、出力ラスタバッファ２１３から読み出されたデータは、そのまま出力階調値となる。他の処理については、第１の実施形態と同様なので説明を省略する。
【００５２】
本実施形態では、割り算回路としてシフタを用いており、ｍａｘｒａｔｉｏで割った結果は小数点以下が切り捨てられることになる。そのため、本実施形態と第１の実施形態では共有画素の出力階調値が異なることがある。
【００５３】
例えば、セルＡおよびセルＢは画素を共有しており、セルＡにおける共有画素に関する階調値およびｒａｔｉｏは、それぞれ、階調値＝５８、および、ｒａｔｉｏ＝３である。セルＢにおける共有画素に関する階調値およびｒａｔｉｏは、それぞれ、階調値＝２６、ｒａｔｉｏ＝１である。また、ｍａｘｒａｔｉｏ＝４とする。すると、第１の実施形態における共有画素の出力階調値は、｛ｉｎｔ（（５８＊３＋２６＊１）／４）＝５０｝であり、第２の実施形態においては、｛ｉｎｔ（５８＊３／４）＋ｉｎｔ（２６＊１／４）＝４９｝となる。
【００５４】
しかし、セルスクリーン処理において、入力された２５５階調（８ｂｉｔ）全てをそのまま一対一で変換して出力階調値を得ることは行われていない。例えば、出力階調値として意味を持つのは８ｂｉｔのうち上位６ｂｉｔであり、下位２ｂｉｔは処理の便宜上拡張されているものである。従って、第１の実施形態および第２の実施形態で生じる出力階調値の差異は、実際の印刷結果には影響しない。
【００５５】
以上、第２の実施形態に係る、出力ラスタバッファを用いた画像処理回路について説明した。このような構成にすることにより、第１の実施形態における出力ラスタバッファの容量を約２０％削減できる｛（８１９２ｗｏｒｄ＊１０ｂｉｔ＊９本）−（８１９２ｗｏｒｄ＊８ｂｉｔ＊９本）＝１４４ｋｂｉｔ｝。これにより、さらにコストダウンおよび消費電力削減を実現することができる。
【００５６】
以下、図７、図９を参照して、第３の実施形態に係る。出力ラスタバッファを用いた画像処理回路について、第２の実施形態と異なる点を中心に説明する。第３の実施形態は、出力階調値として意味を持つ上位６ｂｉｔを出力ラスタバッファ２１３に書き込むようにしたものである。図９は、第３の実施形態に係る、出力処理回路２１０の構成とデータの流れを説明する図である。
【００５７】
図９に示すように、第３の実施形態においては、シフタ２１６の次段に、低ビット化処理２１７を行う。また、出力ラスタバッファ２１３に書き込みを行う前に、最大値丸め処理２１８を設けている。出力ラスタバッファ２１３から読み出すデータについては８ｂｉｔ拡張処理２１９を行う。
【００５８】
低ビット化処理２１７は、８ｂｉｔから６ｂｉｔへの変換をシフタにより行う。また、シフト処理の際に四捨五入処理を行う。これは、シフタにより８ｂｉｔから６ｂｉｔへの変換を行うと下位ビットが切り捨てられ、出力ラスタバッファ２１３に書き込まれる階調値に誤差が生じる場合があるからである。例えば、共有画素についての階調値の加算結果が最大値になるべきところ、演算結果が最大値に満たない場合がある。これに対処するため、低ビット化を行うと同時に切り捨てるビットについて四捨五入を行う。なお、加算結果が最大値を超えた場合に、最大値に丸める処理を行う最大値丸め処理２１８を設けている。また、出力ラスタバッファ２１３から読み出すデータについて８ｂｉｔ拡張処理２１９を行う。これは、次段の処理回路の入力形式に合わせるためである。他の処理については、第１、２の実施形態と同様なので説明を省略する。
【００５９】
以上、第３の実施形態に係る。出力ラスタバッファを用いた画像処理回路について説明した。このような構成にすることにより、第１の実施形態における出力ラスタバッファの容量を約４０％削減できる｛（８１９２ｗｏｒｄ＊１０ｂｉｔ＊９本）−（８１９２ｗｏｒｄ＊６ｂｉｔ＊９本）＝２８８ｋｂｉｔ｝。これにより、さらにコストダウンおよび消費電力削減を実現することができる。
【００６０】
以上、本発明について、例示的な実施形態と関連させて記載した。多くの代替物、修正および変形例が当業者にとって明らかであることは明白である。したがって、上に記載の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。
【図面の簡単な説明】
【００６１】
【図１】本発明が適用されるプリンタコントローラの構成の概略を示す図
【図２】画像処理回路の構成とデータの流れを示すブロック図
【図３】入力画像にスクリーンセルを適用した例を示す図
【図４】共有画素の出力階調値の計算方法の説明図
【図５】入力画像データについてのセルスクリーン処理の説明図
【図６】第１の実施形態に係る出力処理回路の構成とデータの流れを示すブロック図
【図７】本発明に係る出力ラスタバッファを用いた処理の説明図
【図８】第２の実施形態に係る出力処理回路の構成とデータの流れを示すブロック図
【図９】第３の実施形態に係る出力処理回路の構成とデータの流れを示すブロック図
【符号の説明】
【００６２】
１００・・・ホストコンピュータ、１１０・・・プリンタコントローラ、１１１・・・画像処理回路、１１２・・・パルス幅変調部、１２０・・・印刷エンジン、２００・・・セルスクリーン処理回路、２０１・・・入力ラスタバッファ、２０２・・・セル切り出し制御部、２０３・・・セルバッファ、２０４・・・セルスクリーン処理部、２１０・・・出力処理回路、２１１・・・ラスタバッファ書き込み制御部、２１２・・・ラスタバッッファ読み出し制御部、２１３・・・出力ラスタバッファ、２１４・・・アドレス演算部、２１５・・・加算処理、２１６・・・シフタ、２１７・・・低ビット化処理、２１８・・・最大値丸め処理、２１９・・・８ｂｉｔ拡張処理、３００・・・入力画像データ、３０１・・・セル、３０２・・・画素Ａ、３０３・・・画素Ｂ、４００・・・セルＡ、４０１・・・セルＢ、４０２・・・共有画素、４０３・・・共有画素、４０４・・・非共有画素、５００・・・入力画像データ、５０１・・・画素、５０２・・・セル、５０３・・・セルの中心、５０４・・・セル縦サイズ、５０５・・・垂直シフト量、７０１・・・セル１の中心、７０２・・・セル２の中心、７０３・・・セル３の中心、７０４・・・セル４の中心、７０５・・・セル５の中心、７０６・・・セル６の中心、７０７・・・セル７の中心、７０８・・・セル８の中心、７０９・・・セル９の中心、７１０・・・セル１０の中心、７１１・・・セル１１の中心
【図１】
2008205612.tif 000003
【図２】
2008205612.tif 000004
【図３】
2008205612.tif 000005
【図４】
2008205612.tif 000006
【図５】
2008205612.tif 000007
【図６】
2008205612.tif 000008
【図７】
2008205612.tif 000009
【図８】
2008205612.tif 000010
【図９】
2008205612.tif 000011