(57)【要約】【課題】画素成長順を決定する処理を簡易化して、スクリーン処理を現実的な回路規模で行うための技術を提供する。【解決手段】画像処理回路１００は、プリンタコントローラに搭載され、セル単位でスクリーン処理を行って、セルを構成する画素ごとに出力階調値を算出する回路である。画像処理回路１００には、セルを構成する各画素の位置情報を記憶する画素座標レジスタ２１４と、出力階調値を求める順番を決定するための画素成長順テーブル３２１を格納するメモリ３２０と、スクリーン処理を行う制御回路３１０と、を備える。画素成長順テーブル３２１には、各画素の位置情報がメモリ３２０上のアドレスの昇順に記憶され、制御回路３１０は、上記昇順で、階調値の重心位置に基づいて画素成長順テーブル３２１に記憶されている位置情報を取得して、対応する画素の出力階調値を算出する。【選択図】図１
2008205705.tif 000002
【特許請求の範囲】
【請求項１】
プリンタコントローラに搭載し、画素ごとに入力階調値をもつ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、画素ごとに出力階調値をもつ出力画像データに変換する画像処理装置において、
前記セルを構成する各画素の位置情報を記憶する記憶部と、前記出力階調値を求める順番を決定するための画素成長順テーブルを格納するメモリと、前記スクリーン処理を行う制御部と、を備え、
前記画素成長順テーブルには、前記各画素の位置情報が前記メモリ上のアドレスの順に記憶され、
前記制御部は、
前記セルを構成する各画素の入力階調値、及び、前記記憶部に記憶されている位置情報、から求められる重心位置に基づいて、前記画素成長順テーブルに記憶されている位置情報を前記順で取得する取得処理と、
取得した前記位置情報に対応する画素の出力階調値を、前記順で算出する出力階調値算出処理と、
を行う、
ことを特徴とする画像処理装置。
【請求項２】
プリンタコントローラに搭載し、画素ごとに入力階調値をもつ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、画素ごとに出力階調値をもつ出力画像データに変換する画像処理装置において、
前記セルを構成する各画素の位置情報を記憶する記憶部と、前記出力階調値を求める順番を決定するための画素成長順テーブルを格納するメモリと、前記スクリーン処理を行う制御部と、を備え、
前記記憶部は、レジスタ番号が付されている複数のレジスタから構成され、
前記各画素の位置情報は、それぞれが異なる前記レジスタに記憶され、
前記画素成長順テーブルには、前記レジスタ番号が前記メモリ上のアドレスの順に記憶され、
前記制御部は、
前記セルを構成する各画素の入力階調値、及び、前記記憶部に記憶されている位置情報、から求められる重心位置に基づいて、前記画素成長順テーブルに記憶されているレジスタ番号を前記順で取得するレジスタ番号取得処理と、
取得したレジスタ番号が付されているレジスタに格納されている位置情報を前記順で取得する位置情報取得処理と、
取得した前記位置情報に対応する画素の出力階調値を、前記順で算出する出力階調値算出処理と、
を行う、
ことを特徴とする画像処理装置。
【請求項３】
請求項１に記載される画像処理装置であって、
前記画素成長順テーブルに記憶されている各画素の位置情報は、２次元座標の情報である、
ことを特徴とする画像処理装置。
【請求項４】
請求項２に記載される画像処理装置であって、
前記レジスタ番号は、１次元の整数値からなる、
ことを特徴とする画像処理装置。
【請求項５】
プリンタコントローラに搭載し、画素ごとに入力階調値をもつ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、画素ごとに出力階調値をもつ出力画像データに変換する画像処理装置における画像処理方法であって、
前記画像処理装置は、前記セルを構成する各画素の位置情報を記憶する記憶部と、前記出力階調値を求める順番を決定するための画素成長順テーブルを格納するメモリと、前記スクリーン処理を行う制御部と、を備え、
前記画素成長順テーブルには、前記各画素の位置情報が前記メモリ上のアドレスの順に記憶され、
前記制御部は、
前記セルを構成する各画素の入力階調値、及び、前記記憶部に記憶されている位置情報、から求められる重心位置に基づいて、前記画素成長順テーブルに記憶されている位置情報を前記順で取得する取得過程と、
取得した前記位置情報に対応する画素の出力階調値を、前記順で算出する出力階調値算出過程と、
を有する、
ことを特徴とする画像処理方法。
【請求項６】
プリンタコントローラに搭載し、画素ごとに入力階調値をもつ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、画素ごとに出力階調値をもつ出力画像データに変換する画像処理装置における画像処理方法であって、
前記画像処理装置は、前記セルを構成する各画素の位置情報を記憶する記憶部と、前記出力階調値を求める順番を決定するための画素成長順テーブルを格納するメモリと、前記スクリーン処理を行う制御部と、を備え、
前記記憶部は、レジスタ番号が付されている複数のレジスタから構成され、
前記各画素の位置情報は、それぞれが異なる前記レジスタに記憶され、
前記画素成長順テーブルには、前記レジスタ番号が前記メモリ上のアドレスの順に記憶され、
前記制御部は、
前記セルを構成する各画素の入力階調値、及び、前記記憶部に記憶されている位置情報、から求められる重心位置に基づいて、前記画素成長順テーブルに記憶されているレジスタ番号を前記順で取得するレジスタ番号取得過程と、
取得したレジスタ番号が付されているレジスタに格納されている位置情報を前記順で取得する位置情報取得過程と、
取得した前記位置情報に対応する画素の出力階調値を、前記順で算出する出力階調値算出過程と、
を有する、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処置装置及び画像処理方法に関する。特に、出力画像のぼやけをなくし、入力に忠実な出力画像を得る画像処置装置等に関する。
【背景技術】
【０００２】
従来から、プリンタなどの画像処理装置は、画素ごとに多値の階調値を有する入力画像データに対して、ハーフトーン処理により、それよりも低い階調値（例えば、２値）の出力画像データに変換して、印刷用紙に印刷が行われている。
【０００３】
ハーフトーン処理としては、ドット集中型ディザ法（多値ディザ法）による処理が知られている。ドット集中型ディザ法は、所定の大きさのマトリックス内に中央部からドットが成長するように閾値が配分され、各画素の入力階調値との比較により処理を行う。
【０００４】
また、複数画素から構成される所定の幾何学的形状のスクリーンセルを多階調画像に敷き詰めるように反復的に適用し、そのスクリーンセルにおいて、階調値の上昇に伴って、一定の順序に従ってドットを成長させていく処理が知られている。この処理においては、スクリーンセル内の画素それぞれに対応した、ガンマテーブル番号を示すインデックス値から構成される多値ディザマトリックス（インデックステーブル）と、各画素の入力階調値と出力階調値との対応関係を示すガンマテーブルを用い、各画素に対応するインデックス値の示すガンマテーブルを参照し、当該画素の入力階調値に対応する出力階調値を求める。
【０００５】
また、階調性と高解像度を両立させるため、複数画素から構成されるスクリーンセル内の各画素の階調値から重心位置を求め、その重心位置に各画素の階調値の和に対応するドットを成長させるようにしたものが、特許文献１に記載されている（以下「ＡＡＭ（Ａｄｖａｎｃｅｄ  ＡＭスクリーン）法」と称す）。
【特許文献１】特開２００６−３２５１３６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したスクリーン処理では、スクリーンセル内における階調値の重心位置に応じて、ドットを成長させる画素成長順を決定しなければならない。従って、複数の画像に対してスクリーン処理を施す場合、画像ごとに、階調値の重心位置を求めて、その重心位置に応じて画素成長順を求める処理が行われる。そのため、画像ごとに画素成長順を求める処理をハードウェアで行う場合、複雑な回路を用意しなければならず、回路規模の面から現実的ではない。
【０００７】
本発明は、画素成長順を決定する処理を簡易化して、スクリーン処理を現実的な回路規模で行うための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明では、プリンタコントローラに搭載し、画素ごとに入力階調値をもつ入力画像データを、複数画素から構成されるセルに分割し、セル単位でスクリーン処理を行って、画素ごとに出力階調値をもつ出力画像データに変換する画像処理装置は、前記セルを構成する各画素の位置情報を記憶する記憶部と、前記出力階調値を求める順番を決定するための画素成長順テーブルを格納するメモリと、前記スクリーン処理を行う制御部と、を備え、前記画素成長順テーブルには、前記各画素の位置情報が前記メモリ上のアドレスの順に記憶され、前記制御部は、前記セルを構成する各画素の入力階調値、及び、前記記憶部に記憶されている位置情報、から求められる重心位置に基づいて、前記画素成長順テーブルに記憶されている位置情報を前記順で取得する取得処理と、取得した前記位置情報に対応する画素の出力階調値を、前記順で算出する出力階調値算出処理と、を行うことを特徴とする。
【発明の効果】
【０００９】
本発明の画像処理装置によれば、画素成長順を決定する処理を簡易化して、スクリーン処理を現実的な回路規模で行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の最良の実施の形態を、図面を参照して説明する。
【００１１】
本発明の実施形態に適用される画像処理回路１００のハードウェア構成の一例を、図１のブロック図に示す。画像処理回路１００は、図示するように、入力ラスタバッファ１１０と、スクリーン処理回路２００と、出力ラスタバッファ１１１と、を有する。
【００１２】
画像処理回路１００は、図２に示すような画像処理システム５０で使用される。図示するように、画像処理システム５０は、ホストコンピュータ５１と、プリンタコントローラ５２と、印刷エンジン５３と、を備えている。ここで、プリンタコントローラ５２は、例えば、図示しないインタフェースを介して、ホストコンピュータ５１に接続される。また、プリンタコントローラ５２には、プリンタコントローラ５２が生成したデータを出力する印刷エンジン５３が接続される。
【００１３】
ホストコンピュータ５１は、例えば、アプリケーションプログラムにより、テキストデータや画像データ等の印刷対象のデータを生成する。また、ホストコンピュータ５１は、印刷時に、印刷対象のデータをラスタライズしたビットマップ形式の画像データを、プリンタコントローラ５２に出力する。
【００１４】
プリンタコントローラ５２は、画像処理回路１００と、パルス幅変調回路１０１と、を有する。画像処理回路１００は、ホストコンピュータ５１から入力された画像データを受け付け、例えば、スクリーン処理や、ガンマテーブルを用いたハーフトーン処理を行う（以下では、スクリーン処理及びハーフトーン処理を含めてスクリーン処理と呼ぶ）。例えば、スクリーン処理は、ホストコンピュータ５１から入力された画像データの各画素について、描画レーザパルス幅を示すデータ（出力階調値）に変換して、これを、パルス幅変調回路１０１に出力する。また、パルス幅変調回路１０１は、入力されたデータに対応するレーザパルス幅信号を生成して、この信号を印刷エンジン５３に出力する。
【００１５】
印刷エンジン５３は、入力されたレーザパルス幅信号に基づいて印刷用紙に印刷を行う。印刷エンジン５３は、例えば、レーザプリンタであれば、レーザ照射機構、感光体ドラム、紙送り機構等により構成される。
【００１６】
図１に戻り、画像処理回路１００の入力ラスタバッファ１１０は、ホストコンピュータ５１から入力された画像データを受け付けて、画像データを構成する各画素の階調値（以下、入力階調値と呼ぶ）を格納するハードウェアロジック回路内蔵メモリである。例えば、入力ラスタバッファ１１０には、デュアルポートのＤＲＡＭ、ＳＲＡＭ等が用いられる。
【００１７】
スクリーン処理回路２００は、セルデータ読み出し回路２１０と、重心算出回路２１１と、理想階調値算出回路２１２と、ディザマトリクスシフト演算回路３００と、ラスタバッファ書き込み回路２１３と、画素座標レジスタ２１４と、階調値レジスタ２１５と、を有する。スクリーン処理回路２００は、複数画素から構成されるセル内の各画素の階調値から重心位置を求め、その重心位置を基準として各画素の階調値の和に対応するドットを成長させる処理を行う。
【００１８】
セルデータ読み出し回路２１０は、入力ラスタバッファ１１０に格納されている画像データを読み出す処理を行う回路である。例えば、セルデータ読み出し回路２１０は、入力ラスタバッファ１１０に格納されている画像データから、予め定めた形状のセルを切り出して、セル単位で画像データ（以下、セルと呼ぶ）を読み出す。ここで、読み出されるセルは、例えば、５×５画素のセルとする。セルのサイズは、任意であるが、階調性と解像性のバランスを考慮すると、最大で５×５画素程度のサイズであることが好ましい。
セルデータ読み出し回路２１０は、読み出したセルを構成する各画素の階調値を特定する階調値情報を、階調値レジスタ２１５に格納する。
また、セルデータ読み出し回路２１０は、セルを読み出したことを通知するための信号を、重心算出回路２１１に供給する。
【００１９】
画素座標レジスタ２１４は、図３（Ａ）に示すように、セルを構成する各画素の座標を特定する座標情報（例えば、（Ｘ座標，Ｙ座標）の形式）を、格納するための複数のレジスタから構成される。各レジスタには、１つの座標情報が予め格納されている。また、各レジスタには、レジスタ番号が割り当てられる。
画素座標レジスタ２１４は、セルデータ読み出し回路２１０、重心算出回路２１１、ディザマトリクスシフト演算回路３００に接続される。各回路は、画素座標レジスタ２１４に、レジスタ番号を指定してアクセスすることで、レジスタ内に格納されている座標情報を取得できる。また、各回路は、画素座標レジスタ２１４に、座標情報を指定してアクセスすることで、レジスタ番号を取得することもできる。すなわち、画素座標レジスタ２１４は、レジスタ番号と座標情報とを相互に変換するためのレジスタといってもよい。
ここで、レジスタ番号と座標情報との対応関係を、図３（Ｂ）に示す。座標情報（２，２）は、レジスタ番号「０」のレジスタに格納され、座標情報（３，２）は、レジスタ番号「１」に格納されていることを示す。また、レジスタ番号により、セル内の画素を特定することができるため、レジスタ番号を画素番号とも呼ぶ。
また、各レジスタに格納されている座標情報は、ユーザの指示に基づき変更することができる。例えば、画素座標レジスタ２１４には、図４（Ｂ）に示すセルの座標情報が、Ｘ座標の昇順、Ｙ座標の昇順に、規則正しく格納されてもよい。このときの、画素座標レジスタ２１４に格納される座標情報を、図４（Ａ）に示す。
【００２０】
階調値レジスタ２１５は、図５に示すように、セルを構成する各画素の階調値を特定する階調値情報が格納するための複数のレジスタから構成される。各レジスタには、画素座標レジスタ２１４と同様に、レジスタ番号が割り当てられる。そして、階調値レジスタ２１５のレジスタ番号と、画素座標レジスタ２１４のレジスタ番号は、１対１で対応している。従って、画素座標レジスタ２１４に格納されている座標情報で特定される画素の階調値情報は、その座標情報を格納しているレジスタと同一のレジスタ番号のレジスタ（階調値レジスタ２１５内）に格納される。例えば、座標情報レジスタ２１４のレジスタ番号「０」のレジスタに、座標情報（２，２）が格納されている場合、セルの座標（２，２）に位置する画素が有する階調値「５６」が、階調値レジスタ２１５のレジスタ番号「０」のレジスタに格納される。
また、階調値レジスタ２１５は、セルデータ読み出し回路２１０、重心算出回路２１１、理想階調値算出回路２１２、ディザマトリクスシフト演算回路３００に接続される。各回路は、階調値レジスタ２１５に、レジスタ番号を指定してアクセスすることで、所望の画素が有する階調値を取得、変更することができる。
【００２１】
重心算出回路２１１は、セルデータ読み出し回路２１０から信号が供給されたとき、画素座標レジスタ２１４及び階調値レジスタ２１５から、セルを構成する各画素の座標と各画素の階調値を取得して、セル内における階調値の重心位置を求める処理を行う回路である。例えば、重心算出回路２１１は、数１の式に従って重心位置を（ＸＧ，ＹＧ）を求める。
また、重心算出回路２１１は、重心位置を求めたときに、重心位置を求めたことを通知するための信号を、理想値階調値算出回路２１２に供給する。このとき、重心算出回路２１１は、理想階調値算出回路２１２に、求めた重心位置を供給する。
【００２２】
【数１】
2008205705.tif 000003
【００２３】
理想階調値算出回路２１２は、重心算出回路２１１から通知されたとき、セルを構成する各画素の階調値から、セル内に出力すべき理想階調値を求める処理を行う回路である。例えば、理想階調値は、セル内の階調値の合計値である。理想階調値算出回路２１２は、階調値レジスタ２１５から、各画素の階調値情報を取得して、全ての階調値の合計値を求める。
また、理想階調値算出回路２１２は、階調値の重心位置、理想階調値、をディザマトリクスシフト演算回路３００に供給する。
【００２４】
ディザマトリクスシフト演算回路３００は、制御回路３１０と、ＲＡＭ３２０と、を有する。ディザマトリクスシフト演算回路３００は、重心算出回路２１１で求めた重心位置の画素からドットが成長するようにディザマトリクス（上述した多値ディザマトリクスを指す）３２２をシフトさせ、出力階調値を求める回路である。
【００２５】
ＲＡＭ３２０には、画素成長順テーブル３２１と、ディザマトリクス３２２と、ガンマテーブル３２３と、が格納されている。
【００２６】
画像成長順テーブル３２１には、スクリーンセル内における階調値の重心位置ごとに、ドットを成長させる画素成長順を示す情報が格納されている。
例えば、本実施形態においては、画像成長順テーブル３２１は、図６に示すように、ＲＡＭアドレス欄４０１と、画素番号欄４０２と、重心番号欄４０３と、を備える。
ＲＡＭアドレス欄４０１には、ＲＡＭ上のアドレス情報が昇順に格納されている。例えば、ＲＡＭアドレス欄４０１には、「０×００１」、「０×００２」、といった順にアドレス情報が格納されている。
画素番号欄４０２には、重心位置ごとに、ドットを生成させる（出力階調値を求める）順番で、画素の位置を特定するための画素番号情報が格納されている。例えば、画素番号欄４０２の１行目から２５行目までには、重心位置が画素番号「０」の画素である場合において、ドットを生成させる順番で、画素番号情報が格納されている。また、画素番号欄４０２の２６行目から５０行目までには、重心位置が画素番号「１」の画素である場合において、ドットを生成させる順番で、画素番号情報が格納されている。従って、スクリーンセルのサイズが５×５画素である場合には、画素番号欄４０２には、２５画素×２５（取り得る重心位置の箇所）の画素番号が格納されている。
ここで、画素番号情報は、例えば、画素座標レジスタ２１４に割り当てられているレジスタ番号とする。
重心番号欄４０３には、セル内における階調値の重心位置を特定するための重心番号情報が格納されている。例えば、画素番号「０」、画素番号「１」といった、情報が格納されている。この画素番号は、上述した画素座標レジスタ２１４のレジスタ番号を示す。
【００２７】
ディザマトリクス３２２には、各画素位置において参照するガンマテーブルのテーブル番号が格納されている。
例えば、本実施形態においては、ディザマトリクス３２２は、図７（Ａ）に示すように、座標欄５０１と、テーブル番号欄５０２と、を備える。
座標欄５０１には、セルを構成する各画素の座標情報が格納されている。
テーブル番号欄５０２には、各画素位置において参照するガンマテーブルのテーブル番号情報（インデックス値）が、座標欄５０１の座標情報に対応付けて格納されている。
セルの座標とテーブル番号の対応関係を模式的に示した模式図を、図７（Ｂ）に示す。図７（Ｂ）に示す通り、ディザマトリクス３２２は、セルの中心位置に近いほど、ガンマテーブルのテーブル番号が小さいように設定される。これは、階調値の重心位置に近い画素ほど、小さな階調値でもドットが生成され易くなるようにするためである。
【００２８】
ガンマテーブル３２３には、テーブル番号（インデックス値）に対応する、出力階調値を求めるための関数を特定する情報（又は、関数を読み出すための情報）が格納されている。
例えば、本実施形態においては、ガンマテーブル３２３は、図８（Ａ）に示すように、テーブル番号欄６０１と、関数欄６０２と、を備える。
テーブル番号欄６０１には、ディザマトリクス３２２のテーブル番号欄５０２に格納されているテーブル番号情報と同一の情報が格納されている。
関数欄６０２には、セルを構成する各画素の階調値（入力階調値）から、量子化データである出力階調値を得るための関数を特定する情報が格納されている。
各テーブル番号に対応する関数を図８（Ｂ）に示す。横軸は、各画素の階調値（入力階調値）であり、縦軸は、出力階調値である。各テーブル番号に対応する関数は、テーブル番号が小さいほど、小さい階調値（入力階調値）でドットが生成され易い。
【００２９】
制御回路３１０は、ディザマトリクス演算回路３００全体の制御を行う回路である。制御回路３００は、図９に示すように、データ受付バッファ３１１と、画素成長順決定回路３１２と、シフト制御回路３１３と、出力階調値算出回路３１４と、を有する。
【００３０】
データ受付バッファ３１１には、理想階調値算出回路２１２から、重心算出回路２１１が求めた重心位置を特定する情報と、理想階調値を特定する情報とが格納される。また、データ受付バッファ３１１には、制御回路３１０が各種処置を行っている際に、画素座標レジスタ２１４に格納されている座標情報、階調値レジスタ２１５に格納されている階調値情報、等が一時的に格納される。
例えば、データ受付バッファ３１１は、重心位置情報、理想階調値情報、座標情報、階調値情報、をそれぞれ格納する領域が予め定められている。
【００３１】
画素成長順決定回路３１２は、データ受付バッファ３１１に重心位置情報が格納されたときに、重心位置情報に基づいて、ドットを成長させる画素成長順を決定する処理を行う。
例えば、画素成長順決定回路３１２は、データ受付バッファ３１１に格納されたときに、重心位置情報と一致する座標情報を、画素座標レジスタ２１４から検索する。ここで、画素成長順決定回路３１２は、一致する座標情報を格納しているレジスタのレジスタ番号情報を、取得する。画素成長順決定回路３１２は、レジスタ番号情報と一致する重心番号情報を、画素成長順テーブル３２１の重心番号欄４０３から検索する。ここで、画素成長順決定回路３１２は、一致する重心番号情報に対応付けて格納されている、画素番号欄４０２の２５行分の画素番号情報を取得する。このとき画素成長順決定回路３１２は、画素成長順成長テーブル３２１のＲＡＭアドレス欄４０１に対応するＲＡＭ上のアドレスに格納されているデータを読み出すことで、画素番号情報を取得できる。そして、画素成長順決定回路３１２は、取得した画素番号情報を、シフト制御回路３１３に供給する。
【００３２】
シフト制御回路３１３は、画素成長順決定回路３１２から、全ての画素番号情報が供給されたときに、ディザマトリクスの中心位置を、取得した重心位置に合わせる（所謂、ディザマトリクスのシフト）処理を行う。
例えば、シフト制御回路３１３は、画素成長順決定回路３１２から供給された、全ての画素番号情報を、（Ｘ，Ｙ）形式の座標に変換する処理をまず行う。具体的には、シフト制御回路３１３は、画素番号情報と一致するレジスタ番号を、画素座標レジスタ２１４から検索し、一致するレジスタに格納されている座標情報を取得する。これにより、全ての画素番号情報を、座標情報に変換できる。続いて、シフト制御回路３１３は、セルの中心位置の座標と、階調値の重心位置の座標との差分を求める処理を行う。セルのサイズが５×５であれば、中心位置の座標は（２，２）であるので、例えば、シフト制御回路３１３は、データ受付バッファ３１１に格納されている重心位置の座標情報を取得して、（２，２）−（重心位置の座標）を求める。さらに、シフト制御回路３１３は、画素番号情報から変換された全ての座標情報に対して、中心位置の座標と重心位置の座標との差分を加える処理を行う。これにより、ディザマトリクスの中心位置を、取得した重心位置に合わせたことと同じことになる。そして、シフト制御回路３１３は、差分を加えた全ての座標を、出力階調値算出回路３１４に供給する。
【００３３】
出力階調値算出回路３１４は、階調値レジスタ２１５から、各画素の階調値情報をデータ受付バッファ３１１に読み出し、各階調値情報（入力階調値）を、量子化データである出力階調値に変換する処理を行う。
例えば、出力階調値算出回路３１４は、シフト制御回路３１３から供給された座標に対応するテーブル番号を、ディザマトリクス３２２から取得する処理を行う。具体的には、出力階調値算出回路３１４は、ディザマトリクス３２２にアクセスして、シフト制御回路３１３から供給された座標情報と一致する座標情報を、座標欄５０１から検索する。そして、出力階調値算出回路３１４は、一致座標情報に対応するテーブル番号情報を、テーブル番号欄５０３から取得する。この処理を、シフト制御回路３１３から供給された順に、各座標に対して行う。続いて、出力階調値算出回路３１４は、階調値レジスタ２１５から、各画素の階調値情報（入力階調値）をデータ受付バッファ３１１に読み出して、対応する関数を用いて出力階調値を求める。具体的には、出力階調値算出回路３１４は、取得したテーブル番号情報に対応する関数を、ガンマテーブル３２３の関数欄６０２から取得する。出力階調値算出回路３１４は、取得した関数に、入力階調値を入力して、出力階調値を取得する。この処理を、出力階調値算出回路３１４は、入力階調値に対して、画素成長順に行うことで、全ての入力階調値に対応する出力階調値を得ることができる。また、出力階調値算出回路３１４は、既に求めた出力階調値の合計値と、データ受付バッファ３１１に格納されている理想階調値情報を比較して、出力階調値の合計値が理想階調値を超える場合は、未処理画素の出力階調値を求めずに処理を終了させる。出力階調値算出回路３１４は、取得した出力階調値情報を、ラスタバッファ書き込み回路２１３に出力する。
【００３４】
図１に戻って、ラスタバッファ書き込み回路２１３は、ディザマトリクスシフト演算回路３００の制御回路３１０から供給された出力階調値情報を、出力ラスタバッファ１１１に書き込む処理を行う。
【００３５】
出力ラスタバッファ１１１は、スクリーン処理回路２００のラスタバッファ書き込み回路２１３が出力した各画素の出力階調値を格納するハードウェアロジック回路内蔵メモリである。例えば、出力ラスタバッファ１１１には、デュアルポートのＤＲＡＭ、ＳＲＡＭ等が用いられる。
出力ラスタバッファ１１１に格納された各画素の出力階調値は、パルス幅変調回路１０１に出力される。
【００３６】
図１０は、ディザマトリクスシフト演算回路３００で行われる処理を説明するためのフローチャートである。
【００３７】
ディザマトリクスシフト演算回路３００の制御回路３１０が有するデータ受付バッファ３１１に、セル内における階調値の重心位置を特定する座標情報が格納されたときに、制御回路３１０は、処理を開始する。
【００３８】
まず、制御回路３１０の画素成長順決定回路３１２は、データ受付バッファ３１１に格納された重心位置情報を取得する（ステップＳ１０１）。例えば、画素成長順決定回路３１２は、データ受付バッファ３１１の所定の領域に格納された重心位置情報を、画素成長順決定回路３１２内のメモリ（図示せず）に読み出す。また、取得する重心位置情報は、例えば、（３，２）等の座標情報である。
【００３９】
続いて、画素成長順決定回路３１２は、ステップＳ１０１で取得した重心位置情報に基づいて、画素成長順を決定する（ステップＳ１０２）。例えば、画素成長順決定回路３１２は、画素座標レジスタ２１４に格納される座標情報から、重心位置の座標情報である（３，２）を検索する。このとき、画素成長順決定回路３１２は、（３，２）の座標情報を格納するレジスタのレジスタ番号を取得して、（３，２）の座標をレジスタ番号（画素番号）に変換する。ここで、レジスタ番号は、例えば、「１」等の情報である。続いて、画素成長順決定回路３１２は、取得したレジスタ番号（画素番号）から、画素生成順を決定する。具体的には、画素成長順決定回路３１２は、画素成長順テーブル３２１にアクセスして、重心番号欄４０３に「１」を格納するデータに対応付けられている、全て（２５個）の画素番号情報を、アドレス欄４０１のアドレスの昇順に取得する。例えば、画素成長順決定回路３１２は、「１，０，５，８，１１，…」等の画素成長順に並んでいる画素番号情報を取得する。さらに、画素成長順決定回路３１２は、取得した画素成長順に並んでいる画素番号情報を、シフト制御回路３１３に供給する。
【００４０】
シフト制御回路３１３は、画素成長順に並んでいる画素番号情報を、画素成長順決定回路３１２から供給されたとき、全ての画素番号情報を、座標情報に変換する（ステップＳ１０３）。例えば、シフト制御回路３１３は、画素座標レジスタ２１４にアクセスして、画素成長順に、画素番号情報と一致するレジスタ番号のレジスタに格納されている座標情報を取得する。例えば、「１，０，５，８，１１，…」等の画素成長順に並んでいる画素番号情報は、「（３，２）、（２，２）、（３，３）、（３，１）、（４，２）、…」等の座標情報に変換される。
【００４１】
続いて、シフト制御回路３１３は、セルの中心位置と、階調値の重心位置の差分を求める（ステップＳ１０４）。例えば、シフト制御回路３１３は、データ受付バッファ３１１から重心位置の座標情報（例えば、（３，２））を取得して、セルの中心位置の座標情報（例えば、（２，２））との差分を求める。例えば、シフト制御回路３１３は、（２，２）−（３，２）の演算を行い、（−１，０）を生成する。
【００４２】
ここで、シフト制御回路３１３は、ディザマトリクスの中心位置を、取得した重心位置に合わせる（所謂、ディザマトリクスのシフト）処理を行う（ステップＳ１０５）。例えば、シフト制御回路３１３は、ステップＳ１０３で変換された全ての座標情報に対して、ステップＳ１０４で求めた差分を加える。例えば、ステップＳ１０３で変換された全ての座標情報が「（３，２）、（２，２）、（３，３）、（３，１）、（４，２）…」、ステップＳ１０４で求めた差分が（−１，０）とすると、シフト制御回路３１３は、「（２，２）、（１，２）、（２，３）、（２，１）、（３，２）…」を生成する。シフト制御回路３１３は、ステップＳ１０３で生成した、画素成長順に並んだ座標情報を、出力階調値算出回路３１４に供給する。
【００４３】
出力階調値算出回路３１４は、シフト制御回路３１３から座標情報が供給されたとき、画素成長順に入力階調値を、階調値レジスタ２１５から読み出す（ステップＳ１０６）。例えば、出力階調値算出回路３１４は、ステップＳ１０２で取得した画素成長順に並んでいる画素番号情報（例えば、「１，０，５，８，１１，…」）に基づいて、入力階調値を階調値レジスタ２１５から読み出す。具体的には、出力階調値算出回路３１４は、画素番号情報に一致するレジスタ番号を有するレジスタに格納されている階調値情報（入力階調値）を、画素成長順に読み出す。
【００４４】
続いて、出力階調値算出回路３１４は、ステップＳ１０６で取得した画素成長順の入力階調値情報と、ステップＳ１０５でシフト制御回路３１３が生成した座標と、から出力階調値を求める（ステップＳ１０７）。例えば、出力階調値算出回路３１４は、シフト制御回路３１３から供給された座標（例えば、「（２，２）、（１，２）、（２，３）、（２，１）、（３，２）、…」）から、出力階調値を求めるための関数を特定する。具体的には、出力階調値算出回路３１４は、まず、ディザマトリクス３２２を参照して、シフト制御回路３１３から供給された座標に対応して格納されているテーブル番号情報を取得する。例えば、ここで取得するテーブル番号は、「０，１，１，１，１，…」となる。さらに、出力階調値算出回路３１４は、ガンマテーブル３２３を参照して、そのテーブル番号情報に対応して格納されている関数を特定する情報を取得する。例えば、ここで取得する関数を特定する情報は、「Ｙ＝Ｆ０（Ｘ）、Ｙ＝Ｆ１（Ｘ）、…」となる。出力階調値算出回路３１４は、ここで取得した関数に、ステップＳ１０６で読み出した入力階調値を入力して、出力階調値を求める。例えば、出力階調値算出回路３１４は、入力値階調「３４」を「Ｙ＝Ｆ０（Ｘ）」に入力して出力階調値を求め、次に、入力階調値「５６」を「Ｙ＝Ｆ１（Ｘ）」に入力して出力階調値を求める、といった処理を画素成長順に行う。ここで、出力階調値算出回路３１４は、各画素に対応する出力階調値を求めるたびに、既に求めた出力階調値の合計値と、データ受付バッファ３１１に格納されている理想階調値情報を比較する。出力階調値算出回路３１４は、出力階調値の合計値が理想階調値を超える場合は、未処理画素の出力階調値を求めずに処理を終了させる。一方、出力階調値の合計値が理想階調値を超えない場合は、画素成長順で次の画素に対応する出力階調値を求める処理に移行する。出力階調値算出回路３１４は、求めた出力階調値の合計値が、理想階調値に近い値となったとき、ステップＳ１０７で求めた出力階調値情報を、ラスタバッファ書き込み回路２１３に供給して、ディザマトリクスシフト演算回路３００における処理を終了させる。
【００４５】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。
例えば、上記実施形態では、画素成長順テーブル３２１の画素番号欄４０２に格納される画素番号情報は、画素座標レジスタ２１４に割り当てられているレジスタ番号としている。しかしながら、本発明はこれに限定されず、画素番号情報は、例えば、図４（Ｂ）に示すような（Ｘ座標，Ｙ座標）形式の２次元座標情報であってもよい。この場合、画素座標レジスタ２１４を用いて、画素番号情報を、レジスタ番号から座標情報に変換する必要はない。ただし、画素成長順テーブル３２１のサイズは、上記実施形態の場合と比較して大きくなる。例えば、上記実施形態では、画素成長順テーブル３２１のサイズは、「５ｂｉｔ（レジスタ番号０〜２４）×２５画素×２５個（重心位置となり得る箇所の個数）」となる。これに対して、画素番号情報を２次元座標情報とした場合、画素成長順テーブル３２１のサイズは、「３ｂｉｔ（座標値０〜４）×２５画素×２５個（重心位置となり得る箇所の個数）×２（２次元座標Ｘ、Ｙ）」となる。
【００４６】
従って、上記実施形態の発明は、画素成長順テーブル３２１のサイズを１７％ほど小さくすることができるため、ＲＡＭ３２０の回路規模を小さくすることができるといえる。これにより、上記実施形態の発明は、コストダウン、消費電力の削減を実現する。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態に係る画像処理装置のハードウェア構成図である。
【図２】本発明の実施形態に係る画像処理システムの構成の一例を示すブロック図である。
【図３】画像座標レジスタに格納されるデータの１例を説明するための説明図である。
【図４】画像座標レジスタに格納されるデータの１例を説明するための説明図である。
【図５】階調値レジスタに格納されるデータの１例を説明するための説明図である。
【図６】画素成長順テーブルのデータ構造を概念的に示す説明図である。
【図７】ディザマトリクスのデータ構造を概念的に示す説明図である。
【図８】ガンマテーブルのデータ構造を概念的に示す説明図である。
【図９】制御回路３１０の機能構成を説明するための機能構成図である。
【図１０】ディザマトリクスシフト演算回路で行われる処理を説明するためのフローチャートである。
【符号の説明】
【００４８】
５０…画像処理システム、５１…ホストコンピュータ、５２…プリンタエンジン、５３…印刷エンジン、１００…画像処理装置、１１０…入力ラスタバッファ、１１１…出力ラスタバッファ、２００…セルスクリーン処理回路、２１０…セルデータ読み出し回路、２１１…重心算出回路、２１２…理想階調値算出回路、２１３…ラスタバッファ書き込み回路、２１４…画素座標レジスタ、２１５…階調値レジスタ、３００…ディザマトリクスシフト演算回路、３１０…制御回路、３１１…データ受付バッファ、３１２…画素成長順決定回路、３１３…シフト制御回路、３１４…出力階調値算出回路、３２０…ＲＡＭ、３２１…画素成長順テーブル、３２２…ディザマトリクス、３２３…ガンマテーブル、４０１…ＲＡＭアドレス欄、４０２…画素番号欄、４０３…重心番号欄、５０２…テーブル番号欄、６０２…関数欄。
【図１】
2008205705.tif 000004
【図２】
2008205705.tif 000005
【図３】
2008205705.tif 000006
【図４】
2008205705.tif 000007
【図５】
2008205705.tif 000008
【図６】
2008205705.tif 000009
【図７】
2008205705.tif 000010
【図８】
2008205705.tif 000011
【図９】
2008205705.tif 000012
【図１０】
2008205705.tif 000013