以下、本発明の実施の形態を図面に基づき説明する。なお、以下の実施の形態において「閾値」を「しきい値」ともいう。
〔本発明の実施の形態〕
(多色画像形成装置の機構部の構成の例)
図1は、本発明の実施の形態に係る画像処理装置を実装する多色画像形成装置の機構部の構成例を示す図である。図1では、多色画像形成装置としてカラープリンタ1を示す。カラープリンタ1は、4色(Y、M、C、K)の画像をそれぞれ独立の作像系で形成し、この4色の画像を合成する4ドラムタンデムエンジンタイプの多色画像形成装置である。
(カラープリンタ1の電装・制御部のハードウェア構成)
図2は、カラープリンタ1の電装・制御部のハードウェア構成の例を示す図である。図2の電装・制御部は、プリンタコントローラボード10が、ネットワークを介してパーソナルコンピュータ(以下、「PC」という。)90に対して接続され、また、プリンタエンジン700と接続される。
プリンタコントローラボード10は、メモリコントローラ内蔵CPU40、画像処理ASIC50、及び、パネル制御ASIC80を有し、これらがバスを介して接続されている。メモリコントローラ内蔵CPU40は、さらに、メインメモリ60及びROM70と接続されている。
メモリコントローラ内蔵CPU40は、CPU41、CPU インタフェース(以下、「CPU I/F」という。)42、メモリアービタ43、通信コントローラ44、描画部45、メモリコントローラ46、及び、バスコントローラ49を有する。
CPU41は、カラープリンタ1の装置全体の制御を行う。CPU41は、また、PC90から伝送されるPDL(page description language)を解析し、描画部45に対する描画コマンドの出力、及び、画像処理ASIC50に対するパラメータの生成等を行う。CPU I/F42は、CPU41のインタフェースであり、メモリアービタ43を介してメインメモリ60及び他のコントローラ等に接続されている。
メモリアービタ43は、メモリコントローラ内蔵CPU40が有する各コントローラの、メインメモリ60に対するアクセスの調停を行う。メモリコントローラ46は、メインメモリ60の制御を行う。メモリコントローラ46は、メモリアービタ43を介して各コントローラと接続される。
バスコントローラ49は、バスに対してデータを入出力する各コントローラ及びバスの間の調停を行う。通信コントローラ44は、ネットワークに接続され、ネットワークを介して接続されたPC90等から送信される各データやコマンド等を受信する。通信コントローラ44は、また、メモリアービタ43を介して接続される各コントローラに対して受信したデータ等を出力し、各コントローラから入力されるデータ等を、PC90等に対して送信する。
描画部45は、入力されたPDLが解析され生成された描画コマンドにより、画像データの描画を行う。描画部45は、描画される画像データを、メインメモリ60に格納させる。
ROM70は、CPU41が実行するコンピュータプログラムや、文字のフォント情報等を格納する。メインメモリ60は、画像データ、画像データが圧縮された符号データ、及び、CPU41が実行するコンピュータプログラム等が格納される。メインメモリ60が格納する画像データは、PC90から入力される画像データ、及び、プリンタエンジン700から出力される画像の画像データの他に、これらの画像データに対して所定の画像処理が行われたものでもよい。
画像処理ASIC50は、画像処理部500、バスインタフェース(以下、「バスI/F」という。)58、及び、エンジンコントローラ59を有する。画像処理部500は、CPU41により生成された画像処理のパラメータが入力され、そのパラメータに従う画像処理を行う。画像処理部500は、画像処理する画像データを、メインメモリ60から読み込み、また、画像処理された画像データを、メインメモリ60の所定の領域に格納させる。
バスI/F58は、画像処理ASIC50がバスに接続される際のインタフェースである。エンジンコントローラ59は、プリンタエンジン700の制御を行う。
パネル制御ASIC80は、パネル81に接続され、CPU41からの制御コマンド等に従い、パネル81の制御を行う。パネル制御ASIC80は、パネルコントローラ89及びバスI/F88を有する。パネルコントローラ89は、パネル81に表示するデータの制御、及び、パネル81から入力される情報の取得等を行う。バスI/F88は、バスに接続され、メモリコントローラ内蔵CPU40からのデータの入出力を行う。
パネル81は、カラープリンタ1の状態の表示を行い、また、カラープリンタ1に対する操作者による指示を受け付ける。
プリンタエンジン700は、エンジンコントローラ59の制御により、画像を媒体上に形成する。PC90は、カラープリンタ1に出力させる画像のPDLを作成し、ネットワークを介してPDLをカラープリンタ1に対して出力する。
(カラープリンタ1における処理の概略のフロー図)
図3は、カラープリンタ1における処理の概略を示すフロー図である。図3では、入力された画像データが解析され、画像処理された後、プリンタエンジン700に対して出力される。図3における処理は、PDL記憶ステップS201、PDL解析ステップS202、描画処理ステップS203、RGBAバンド画像記憶ステップS204、画像処理ステップS250、及び、階調処理後ページ画像記憶ステップS206を有し、上記の順に各ステップの処理が実行される。
PDL記憶ステップS201では、メインメモリ60が、PC90から入力されるPDLデータを格納する。PDL解析ステップS202では、CPU41が、コンピュータプログラムを実行することにより、メインメモリ60に格納されているPDLデータを解析する。
描画処理ステップS203では、CPU41が、メインメモリ60に格納されているPDLデータを解析して生成した描画コマンドにより、RGB色空間で表される画像データを描画し、メインメモリ60に転送する。ここで生成される画像データは、カラープリンタ1が画像を処理する単位の一である「バンド」単位のバンドデータである。RGBバンド画像記憶ステップS204では、メインメモリ60にバンドデータが格納される。
画像処理ステップS250は、画像読み込み処理ステップS251、色変換処理ステップS252、及び、階調処理ステップS253を有する。画像読み込み処理ステップS251では、RGBバンド画像記憶ステップS204において処理されたRGBデータが読み込まれる。画像読み込み処理ステップS251は、RGBデータのうち、ラスタ順に連続する複数の画素が並列に読み込まれるとよい。
色変換処理ステップS252では、ステップS251で読み込まれたRGBデータに対し、色空間変換処理が行われ、CMYKデータが生成される。ステップS251で読み込まれた複数の画素の画素値が全て同一の場合には、一の画素に対する色空間変換が行われる。
階調処理ステップS253では、ステップS252において色空間変換が行われたCMYKデータに対し、ハーフトーン処理が行われる。ステップS251で読み込まれた複数の画素値が全て同一の場合は、ハーフトーン処理は、ステップS252で色空間変換が行われた画素の画素値を用いて行われる。
階調処理後ページ画像記憶ステップS206では、メインメモリ60に、ステップS253のハーフトーン処理により得られた画像データが格納される。ステップS206の処理の後、プリンタエンジン700が、メインメモリ60に格納された画像データを印刷して出力する。
(メインメモリ60の記憶領域)
図4は、メインメモリ60の記憶領域を説明する図である。メインメモリ60は、PDL格納メモリ領域、プログラム領域、RGBバンド画像格納領域、画像処理部パラメータ領域、階調処理後ページメモリ格納領域、及び、その他の領域を有する。
PDL格納メモリ領域は、PC90から入力されたPDLデータを格納する。プログラム領域は、CPU41が実行するコンピュータプログラムを格納する。RGBバンド画像格納領域は、描画部45により描画された画像のRGBデータを、バンド単位に格納する。
画像処理部パラメータ領域は、格子点データ格納領域、ガンマデータ格納領域、及び、閾値データ格納領域を有する。格子点データ格納領域、及び、ガンマデータ格納領域は、色変換処理ステップS252において色空間変換を行う際のパラメータを格納する。
閾値データ格納領域は、階調処理ステップS253において、ハーフトーン生成処理を行う際の閾値テーブルを格納する。閾値データ格納領域に格納される閾値テーブルは、ハーフトーン処理を行う画像データを構成する色コンポーネント毎に設けられてよい。
階調処理後ページメモリ格納領域は、C版ページメモリ格納領域、M版ページメモリ格納領域、Y版ページメモリ格納領域、及び、K版ページメモリ格納領域を有する。階調処理後ページメモリ格納領域が有す各格納領域は、階調処理された後の色コンポーネント毎に設けられるとよく、CMYK色空間の他に、例えば、RGB色空間の色コンポーネント毎に対応して設けられてもよい。
(画像処理部500のハードウェア構成)
図5は、画像処理部500のハードウェア構成を説明する図である。図5の画像処理部500は、画像読み込み部510、色変換処理部520、階調処理部530、パラメータアドレス生成部541、画像処理パラメータ読み込み部542、DMAパラメータ記憶部543、格子点データ記憶部551、ガンマテーブル記憶部552、ハーフトーンパラメータ記憶部561、奇数閾値マトリックス記憶部562、偶数閾値マトリックス記憶部563、画像処理後画像アドレス生成部581、画像処理後画像書き込み部582、画像処理後画像バッファ部583、及び、バスアービタインタフェース(以下、「バスアービタI/F」という。)590を有する。
バスアービタ−I/F590は、画像読み込み部510、画像処理パラメータ読み込み部542、及び、画像処理後画像書き込み部582のそれぞれが、バスI/F58を介してバスに対してデータを入出力する際の調停を行う。
パラメータアドレス生成部541は、メインメモリ60上の画像処理部パラメータ領域に格納されているパラメータのアドレスを生成する。画像処理パラメータ読み込み部542は、パラメータアドレス生成部541により生成されたアドレスにより、メインメモリ60に格納されている画像処理パラメータを読み出す。
DMAパラメータ記憶部543は、画像処理パラメータ読み込み部542が画像処理パラメータを読み込む際に用いたアドレス等のパラメータを、画像処理パラメータ読み込み部542から受信して格納する。DMAパラメータ記憶部543が格納するパラメータは、バンドの幅である多値RGBバンド幅、バンドの高さである多値RGBバンド高さ、バンドデータのメインメモリ60上の開始アドレスであるRGBバンドスタートアドレス、階調処理された後のバンドの幅と高さである階調処理後CMYKバンド幅及び階調処理後CMYKバンド高さ、並びに、C、M、Y、Kそれぞれの色コンポーネントのバンドデータをメインメモリ60上に格納する際のスタートアドレス等である。
画像読み込み部510は、バンド画像アドレス生成部511、ワード単位のRGBバンド画像読み込み部512、RGBデータ切り出し部513、及び、同一色判定部514を有する。
バンド画像アドレス生成部511は、メインメモリ60からバンドデータを読み出す際のアドレスを生成する。バンド画像アドレス生成部511は、メインメモリ60における画像データの水平ライン毎のアドレスにより、バンドデータを読み込むアドレスを生成する。
ワード単位のRGBバンド画像読み込み部512は、メインメモリ60上のRGBバンド画像格納領域から、複数の画素の画素データを読み込む。ワード単位のRGBバンド画像読み込み部512は、バンド画像アドレス生成部511により生成された水平ライン毎のアドレスと、メインメモリのワード単位のアドレスとにより、例えば、隣接する2画素分の画素データを同時に読み込む。より詳細には、水平ライン内のアドレスが奇数の画素と、偶数の画素とを、一の要求により読み込む。RGBA色空間による画素データの場合、2画素分の画素データは、64bitとなる。
RGBデータ切り出し部513は、ワード単位のRGBバンド画像読み出し部512により読み出された画素データを、画素毎のデータに切り分ける。RGBデータ切り出し部513は、読み出された画素データが2画素、64bitの場合には、32bitの2つの画素データに分ける。
同一色判定部514は、RGBデータ切り出し部513により切り出された2つの画素データの画素値が、同一であるか否かの判定を行う。同一色判定部514は、入力された画素データを出力し、さらに、入力された2つの画素データの画素値が同一であるか否かのフラグである同一色フラグを出力する。同一色フラグの値は、例えば、2つの画素データの画素値が同一である場合には、「1」であり、「ON」となる。
色変換処理部520は、同一色判定部514から入力される2つの画素データの画素値に対し、色空間変換処理を行う。色変換処理部520は、入力される画素データを、RGBA色空間からCMYK色空間に変換する。色変換処理部520は、入力される同一色フラグに基づいて、2つの画素の画素値が同一の場合には、一の画素の画素値に対する色空間変換を行う。色変換処理部520は、変換処理されたCMYKデータと、同一色フラグとを階調処理部530に対して出力する。
色変換処理部520は、色空間変換の他に、下色除去、色補正等の処理を行う。色変換処理部520は、処理に用いるパラメータを格子点データ記憶部551及びガンマテーブル記憶部552から取得する。
格子点データ記憶部551は、画像処理パラメータ読み込み部542から入力される格子点データを記憶する。ガンマテーブル記憶部552は、画像処理パラメータ読み込み部542から入力されるガンマ補正用のパラメータを含むガンマテーブルを記憶する。
階調処理部530は、色変換処理部520から入力されるCMYKデータの色コンポーネント毎に、ハーフトーン処理を行う。階調処理部530は、ハーフトーン処理に必要なパラメータをハーフトーンパラメータ記憶部561から読み出す。階調処理部530は、さらに、入力されるCMYKデータの奇数画素と偶数画素とのそれぞれに対し、奇数閾値マトリックスに含まれる値と偶数閾値マトリックスに含まれる値とによる比較により、ハーフトーン処理を行う。階調処理部530は、ハーフトーン処理後の画素データを、メインメモリのワード単位に出力する。
ハーフトーンパラメータ記憶部561は、メインメモリ60から読み出された階調処理部530がハーフトーン処理する際のパラメータを記憶する。奇数閾値マトリックス記憶部562及び偶数閾値マトリックス記憶部563は、それぞれ、画素データの水平ラインの位置に基づいて、奇数画素と偶数画素とに対応するハーフトーン処理のための閾値マトリックスを記憶する。
画像処理後画像バッファ部583は、階調処理部530によりハーフトーン化された画素のデータを保持する。画像処理後画像バッファ部583は、メインメモリ60に書き込み処理を行う際の、バーストレングスに対応する数のハーフトーン化された画素のデータを保持する。
画像処理後画像書き込み部582は、画像処理後画像バッファ部583に格納されているハーフトーン化された画素のデータを、バスを介してメインメモリ60に対して出力する。画像処理後画像書き込み部582は、メインメモリ60のワード単位で、画素データを出力する。
画像処理後画像アドレス生成部581は、画像処理後画像書き込み部582が画素データをメインメモリ60に格納させる際の、アドレスを生成する。画像処理後画像アドレス生成部581は、DMAパラメータ記憶部543に格納されているパラメータに基づいて、メインメモリ60上のアドレスを生成する。より詳細には、画像処理パラメータ読み込み部542が画素データを読み込む際と同様に、画像データの水平ラインのアドレスを生成する。
(画像処理部500の処理の例)
図6は、画像処理部500の処理の例を示すフロー図である。図6では、2画素の画素データに対し、色変換処理と階調処理とが行われる。図6のステップS101では、ワード単位のRGBバンド画像読み込み部512が、RGB色空間によるバンドデータのうち64ビットの2画素分の画素データを読み込む。
ステップS101に続いてステップS102に進み、RGBデータ切り出し部513が、ステップS101で読み込まれた2画素分の画素データを、1画素毎に切り分ける。ステップS102に続いてステップS103に進み、同一色判定部514が、ステップS102で切り分けられた2画素の画素値が、同一であるか否かの判断を行う。同一である場合には、ステップS104に進み、同一ではない場合には、ステップS107に進む。
ステップS103に続くステップS104では、色変換処理部520が、ステップS102で切り分けられた2画素のうち、例えば、画像データ中の水平ラインのアドレスが偶数である画素に対し、色変換処理を行い、RGB色空間からCMYK色空間による画素データに変換する。
ステップS104に続いてステップS105に進み、階調処理部530が、ステップS104で色変換処理された画素に対し、偶数位置の画素に対する閾値マトリックスにより、ハーフトーン処理を行う。これにより、偶数位置の階調変換後の画素が生成される。生成された画素は、画像処理後画像バッファ部583に格納される。
ステップS105に続いてステップS106に進み、階調処理部530が、ステップS104で色変換処理された画素に対し、奇数位置の画素に対する閾値マトリックスにより、ハーフトーン処理を行う。これにより、奇数位置の階調変換後の画素が生成される。生成された画素は、画像処理後画像バッファ部583に格納される。なお、ステップS105とステップS106とは、同時に実行されるとよい。
一方、ステップS103に続くステップS107では、色変換処理部520が、ステップS102で切り分けられた画素のうち、画像データの偶数位置のアドレスの画素に対する色変換処理を行い、RGB色空間からCMYK色空間による画素データに変換する。
ステップS107に続いてステップS108に進み、階調処理部530が、ステップS107で色変換処理された画素に対し、画像データの偶数位置のアドレスの画素に対する閾値マトリックスにより、ハーフトーン処理を行う。これにより、偶数位置の階調変換後の画素が生成される。生成された画素は、画像処理後画像バッファ部583に格納される。
ステップS108に続いてステップS109に進み、色変換処理部520が、ステップS102で切り分けられた画素のうち、画像データの奇数位置のアドレスの画素に対する色変換処理を行い、RGB色空間からCMYK色空間による画素データに変換する。
ステップS109に続いてステップS110に進み、階調処理部530が、ステップS109で色変換処理された画素に対し、画像データの奇数位置のアドレスの画素に対する閾値マトリックスにより、ハーフトーン処理を行う。これにより、奇数位置の階調変換後の画素が生成される。生成された画素は、画像処理後画像バッファ部583に格納される。
ステップS106又はステップS110に続いてステップS111に進み、画像処理後画像バッファ部583に格納されている階調変換処理後の画素データを、画像処理後画像書き込み部582が、メインメモリ60に書き込む。
ステップS111に続いてステップS112に進み、1バンド分の画素に対する処理が終了したか否かの判断がなされる。終了している場合には、処理を終了する。一方、終了していない場合には、ステップS101に戻って、画像データにおける次のアドレス位置の画素の画素データを読み込み、処理が繰り返される。
以上の処理により、画像データの偶数位置の画素と奇数位置の画素とをメインメモリ60から同時に読み込み、その2つの画素の画素値が同一であるか否かの判断に基づいて、処理を行うことにより、処理を高速に行うことができる。より詳細には、画素値が同一である場合には、偶数位置の画素の階調変換と奇数位置の画素の階調変換とを同時に行うことにより、並列処理が可能となる。
(階調処理部530のハードウェア構成)
図7は、階調処理部530のハードウェア構成を説明する図である。階調処理部530は、奇数閾値マトリックス記憶部562及び偶数閾値マトリックス記憶部563に接続される。階調処理部530は、閾値マトリックスアドレス生成部531、CMYK画像データ比較器532及び533、固定長データ生成部534を有する。なお、図7中、「CMYK画像データ比較器」を「CMYK比較」と表記する。
閾値マトリックスアドレス生成部531は、奇数閾値マトリックス記憶部562及び偶数閾値マトリックス記憶部563に格納されている閾値テーブルのうち、処理する画素に対応する閾値のアドレスを生成する。
CMYK画像データ比較器532は、奇数閾値マトリックス記憶部562から取得した奇数位置の画素に対する閾値と、入力されたCMYK色空間による奇数位置の画素の画素値との比較を行い、比較結果を出力する。これにより、ハーフトーンに対応する画素の値が得られる。
同様に、CMYK画像データ比較器533は、偶数閾値マトリックス記憶部563から取得した偶数位置の画素に対する閾値と、入力されたCMYK色空間による偶数位置の画素の画素値との比較を行い、比較結果を出力する。これにより、ハーフトーンに対応する画素の画素値が得られる。
なお、奇数位置の画素の画素値と偶数位置の画素の画素値とが一致する場合には、何れか一の画素の画素値のみを比較に用いるとよい。図7では、偶数画素の画素値を用いる例について示す。
固定長データ生成部534は、CMYK画像データ比較器532及びCMYK画像データ比較器533から出力される画素データを、32bitの固定長に変換する。
(バンドデータと1ワード分のデータの例)
図8及び図9は、画像データの構成例を示す図である。図8は、バンドデータの構成例を示す図であって、バンドの幅方向に6774個の画素が並び、バンドの高さ方向に256個のラインが並んでいる。図8では、幅方向のアドレスが奇数の画素が「奇数画素」であり、幅方向のアドレスが偶数の画素が「偶数画素」である。
図9は、メインメモリ60の1ワード分のデータの例を示す図である。図9では、2画素分、すなわち、64bitのデータの例が示されている。1ワード分のデータは、偶数画素と奇数画素との組である。そこで、ワード単位のRGBバンド画像読み込み部512は、1ワード分のデータを読み込むことにより、2画素分の画素データを一のアクセスにより読み込むことができる。
(閾値マトリックスの例)
図10は、閾値マトリックスの例を説明する図である。図10(a)は、バンドデータの画素を説明する図である。図中、ラインのアドレスが「0」、水平ライン方向のアドレスが「1」の画素を「0−1」と表記する。
図10(b)は、縦横4画素分に対応する閾値マトリックスを説明する図である。縦横4画素分の閾値マトリックスを「4*4マトリックス」と表記する。図10(c)は、図10(b)の閾値マトリックスに対応する、奇数画素の閾値テーブルと偶数画素の閾値テーブルとを示す図である。
図10(c)の偶数画素の閾値マトリックスは、図10(b)のマトリックスの要素のうち、水平方向のアドレスが偶数の画素に対応する閾値が含まれている。また、図10(c)の奇数画素の閾値マトリックスは、図10(b)のマトリックスの要素のうち、水平方向のアドレスが奇数の画素に対応する閾値が含まれている。
(階調処理の例)
図11は、階調処理部530による階調処理を説明するフロー図である。図11では、入力された画像データに対し、例えば、図10(c)の閾値マトリックスが適用される処理が行われる。
図11のステップS201では、閾値マトリックスに対応する縦方向のアドレスが計算される。より詳細には、図10に示す4*4マトリックスが用いられる場合には、縦方向のアドレスは、0ないし3の何れか一の整数となる。ここでは、閾値マトリックスに対応する縦方向のアドレスを、Yディザアドレス、横方向のアドレスを、Xディザアドレスという。
そこで、Yディザアドレスは、処理している水平ラインのアドレス、すなわち、画像データ中のY座標を、Y方向のディザサイズで除した剰余となる。なお、ディザサイズとは、閾値マトリックスのサイズである。ステップS201に続いてステップS202に進み、Xディザアドレスを値0に初期化する。Xディザアドレスは、閾値マトリックスの横方向のアドレスに対応する。
ステップS202に続いてステップS203に進み、色変換処理部520から、CMYKデータと、同一色であるか否かを示す同一色フラグを受信する。ステップS203に続いてステップS204に進み、閾値マトリックスアドレス生成部531が、閾値マトリックスのアドレスを生成する。ここでは、次式(1)により、アドレスが計算される。
閾値マトリックスのアドレス=(Yディザアドレス)*(X方向のディザサイズ)+(Xディザアドレス)・・・(1)
ステップS204に続いてステップS205に進み、ステップS204で生成された閾値マトリックスのアドレスに基づいて、奇数閾値マトリックス記憶部562及び偶数閾値マトリックス記憶部563から奇数閾値データと偶数閾値データとが読み込まれる。
ステップS205に続いてステップS206に進み、CMYK画像データ比較器532が、入力された偶数画素のCMYKデータと、奇数閾値データとの比較を行い、奇数CMYK比較結果を生成する。さらに、CMYK画像データ比較器533が、入力された偶数画素のCMYKデータと、偶数閾値データとの比較を行い、偶数CMYK比較結果を生成する。
ステップS206に続いてステップS207に進み、同一色フラグの値が1、すなわち、ONか否かの判断がなされる。同一フラグがONの場合は、ステップS210に進み、ONではない場合には、ステップS208に進む。ステップS207に続くステップS208では、CMYK画像データ比較器532が、新たなCMYKデータを受け取る。このCMYKデータは、奇数画素の画素データである。
ステップS208に続いてステップS209に進み、CMYK画像データ比較器532が、奇数画素の画素データであるCMYKデータと、奇数閾値データとを比較し、奇数CMYK比較結果を生成する。
ステップS206又はステップS209に続くステップS210では、固定長データ生成部534が、ステップS206で生成された偶数CMYK比較結果、及び、ステップS206又はステップS209で生成された奇数CMYK比較結果を固定長データに追加させる。
ステップS210に続いてステップS211に進み、固定長データ生成部534が、ステップS210でCMYK比較結果が追加された固定長データが、所定の固定長であるか否かを判断する。所定の固定長である場合には、ステップS212に進み、そうではない場合には、ステップS213に進む。
ステップS211に続くステップS212では、固定長データ生成部534が、固定長のデータを出力する。固定長のデータのビット長は、例えば、32ビットである。
ステップS211又はステップS212に続くステップS213では、Xディザアドレスの値を1インクリメントする。ステップS213に続いてステップS214に進み、Xディザアドレスが、X方向のディザサイズより小さいか否かの判断がなされる。小さい場合には、ステップS216に進み、そうではない場合には、ステップS215に進む。
ステップS214に続くステップS215では、Xディザアドレスの値を0に設定する。ステップS214又はステップS215に続くステップS216では、水平ライン分の処理が終了したか否かの判断がなされる。終了している場合には、ステップS217に進み、終了していない場合には、ステップS203に戻って処理を繰り返す。
ステップS216に続くステップS217では、1バンド分のバンドデータの処理が終了したか否かの判断がなされる。終了している場合には、処理を終了する。終了していない場合には、ステップS201に戻って処理を繰り返す。
(画像処理部500aのハードウェア構成)
図12は、画像処理部のハードウェア構成の例であって、図5とは異なる構成の例である。図12中、図5と同一の機能及び構成を有する各部は、図5と同一の符号を付し、ここでは説明を省略する。
図12の画像処理部500aは、メインメモリ60から、4画素分、すなわち128bitの画素データを、一のアクセスにより読み込んで、色変換及び階調処理を行う。画像処理部500aは、画像読み込み部510a、色変換処理部520a、階調処理部530a、パラメータアドレス生成部541、画像処理パラメータ読み込み部542、DMAパラメータ記憶部543、格子点データ記憶部551、ガンマテーブル記憶部552、ハーフトーンパラメータ記憶部561、00閾値マトリックス記憶部564、01閾値マトリックス記憶部565、10閾値マトリックス記憶部566、11閾値マトリックス記憶部567、画像処理後画像アドレス生成部581、画像処理後画像書き込み部582、画像処理後画像バッファ部583、及び、バスアービタインタフェース(以下、「バスアービタI/F」という。)590を有する。
画像読み込み部510aは、バンド画像アドレス生成部511、ワード単位のRGBバンド画像読み込み部512a、RGBデータ切り出し部513a、及び、同一色判定部514aを有する。
ワード単位のRGBバンド画像読み込み部512aは、メインメモリ60上のRGBバンド画像格納領域から、複数の画素の画素データを読み込む。ワード単位のRGBバンド画像読み込み部512aは、隣接する4画素分の画素データを、一のアクセスにより読み込む。一のアクセスにより読み込まれる4画素分の画素データのデータ長は、128bitである。
RGBデータ切り出し部513aは、ワード単位のRGBバンド画像読み出し部512により読み出された画素データを、画素毎のデータに切り分ける。RGBデータ切り出し部513aは、読み出された画素データが4画素、128bitの場合には、32bitの4つの画素データに分ける。4つの画素データは、例えば、00画素、01画素、10画素、及び、11画素である。
同一色判定部514aは、RGBデータ切り出し部513aにより切り出された4つの画素データの画素値が、同一であるか否かの判定を行う。同一色判定部514aは、入力された画素データを出力し、さらに、入力された4つの画素データの画素値が同一であるか否かのフラグである同一色フラグを出力する。なお、同一であるかの否かの判断は、全ての画素の画素値が同一である場合の他に、例えば、前から3つ、又は、前から2つの画素の画素値が同一であるか否かの判断がなされてもよい。
階調処理部530aは、色変換処理部520aから入力されるCMYKデータの色コンポーネント毎に、ハーフトーン処理を行う。階調処理部530aは、ハーフトーン処理に必要なパラメータをハーフトーンパラメータ記憶部561から読み出す。階調処理部530aは、さらに、入力されるCMYKデータの4つの画素データのそれぞれに対応する、00閾値マトリックス、01閾値マトリックス、10閾値マトリックス、及び、11閾値マトリックスに基づく比較により、ハーフトーン処理を行う。階調処理部530aは、ハーフトーン処理後の画素データを、メインメモリのワード単位に出力する。
00閾値マトリックス記憶部564、01閾値マトリックス記憶部565、10閾値マトリックス記憶部566、及び、11閾値マトリックス記憶部567は、それぞれ、画素データの水平ラインの位置に基づいて、00画素、01画素、10画素、及び、11画素に対応するハーフトーン処理のための閾値マトリックスを記憶する。
図12に示す画像処理部500aの構成により、画像データのラスタ順に隣接する4画素分の画素データの画素値が全て又は一部が同一である場合には、同一である画素の色変換処理を1の画素の色変換処理で代表させることにより、処理ステップを減じることができ、処理を高速に行うことができる。さらに、階調処理部530aにおける処理を並列に行うことができ、処理を高速に行うことができる。
(4画素の階調処理を並列に行う処理の例)
図13−1及び図13−2は、階調処理部530aによる階調処理を説明するフロー図である。図13−1のステップS301では、ワード単位のRGBバンド画像読み込み部512aが、メインメモリ60から128bitの4画素分のRGBデータを読み込む。ステップS301に続いてステップS302に進み、RGBデータ切り出し部513aが、ステップS301で読み出された128bitのデータを、1画素毎の画素データに切り分ける。切り分けられた画素データを、それぞれ、00画素、01画素、10画素、及び、11画素とする。
ステップS302に続いてステップS303に進み、同一色判定部514aが、4つの画素の画素値が全て同一であるか否かを判断する。4画素全て同一である場合には、ステップS304に進み、そうではない場合には、ステップS310に進む。ステップS303に続くステップS304では、同一色判定部514aが、同一色フラグの値を4に設定する。ステップS304に続いてステップS305に進む。
一方、ステップS303に続くステップS310では、同一色判定部514aが、ステップS302で切り分けられた4画素の画素データのうち、画像データのラスタ順において、前から3画素の画素値が同一であるか否かの判断を行う。同一である場合には、ステップS311に進み、そうではない場合には、ステップS318に進む。ステップS310に続くステップS311では、同一色判定部514aが、同意何時色フラグの値を3に設定する。ステップS311に続いてステップS312に進む。
さらに、ステップS310に続くステップS318では、同一色判定部514aが、ステップS301で切り分けられた4画素の画素データのうち、画像データのラスタ順において、前から2画素の画素値が同一であるか否かの判断を行う。同一である場合には、ステップS319に進み、そうではない場合には、ステップS327に進む。ステップS318に続くステップS319では、同一色判定部514aが、同一色フラグの値を2に設定する。ステップS319に続いてステップS320に進む。
さらに、ステップS318に続くステップS327では、同一色判定部514aが、同一色フラグの値を1に設定する。ステップS327に続いてステップS328に進む。以上の処理により、画像読み込み部510aによる画素データの読み込み、画素毎のデータへの切り分け、及び、同一色フラグの値の設定が行われる。
ステップS304に続くステップS305では、色変換処理部520aが、00画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS305に続くステップS306ないしステップS309は、処理の順を問わず、並列に行われるとよい。
ステップS306では、階調処理部530aが、ステップS305で色変換された00画素に対し、00画素の閾値マトリックスによる階調処理を行う。これにより、00画素の階調処理後の画素が生成される。
ステップS307では、階調処理部530aが、ステップS305で色変換された00画素に対し、01画素の閾値マトリックスによる階調処理を行う。これにより、01画素の階調処理後の画素が生成される。
ステップS308では、階調処理部530aが、ステップS305で色変換された00画素に対し、10画素の閾値マトリックスによる階調処理を行う。これにより、10画素の階調処理後の画素が生成される。
ステップS309では、階調処理部530aが、ステップS305で色変換された00画素に対し、11画素の閾値マトリックスによる階調処理を行う。これにより、11画素の階調処理後の画素が生成される。ステップS306ないしステップS309の処理が全て終了した後、ステップS336に進む。
一方、ステップS311に続くステップS312では、色変換処理部520aが、00画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS312に続くステップS312ないしステップS315は、処理の順を問わず、並列に行われるとよい。
ステップS313では、階調処理部530aが、ステップS312で色変換された00画素に対し、00画素の閾値マトリックスによる階調処理を行う。これにより、00画素の階調処理後の画素が生成される。
ステップS314では、階調処理部530aが、ステップS312で色変換された00画素に対し、01画素の閾値マトリックスによる階調処理を行う。これにより、01画素の階調処理後の画素が生成される。
ステップS315では、階調処理部530aが、ステップS312で色変換された00画素に対し、10画素の閾値マトリックスによる階調処理を行う。これにより、10画素の階調処理後の画素が生成される。
ステップS313ないしステップS315の処理が全て終了した後、ステップS316に進む。ステップS316では、色変換処理部520aが、11画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。
ステップS316に続いてステップS317に進み、階調処理部530aが、ステップS316で色変換された11画素に対し、11画素の閾値マトリックスによる階調処理を行う。これにより、11画素の階調処理後の画素が生成される。
また、ステップS319に続くステップS320では、色変換処理部520aが、00画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS320に続くステップS321及びステップS322は、処理の順を問わず、並列に行われるとよい。
ステップS321では、階調処理部530aが、ステップS320で色変換された00画素に対し、00画素の閾値マトリックスによる階調処理を行う。これにより、00画素の階調処理後の画素が生成される。
ステップS322では、階調処理部530aが、ステップS320で色変換された00画素に対し、01画素の閾値マトリックスによる階調処理を行う。これにより、01画素の階調処理後の画素が生成される。
ステップS322に続いてステップS323ないしステップS326の処理に進む。ステップS323ないしステップS326の処理は、10画素及び11画素に対する処理であり、画素毎に対応する処理が行われる。なお、10画素に係る処理と11画素に係る処理とは、その処理順は問われない。
ステップS323では、色変換処理部520aが、10画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS323に続くステップS324では、階調処理部530aが、ステップS323で色変換された10画素に対し、10画素の閾値マトリックスによる階調処理を行う。これにより、10画素の階調処理後の画素が生成される。
ステップS325では、色変換処理部520aが、11画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS325に続くステップS326では、階調処理部530aが、ステップS325で色変換された11画素に対し、11画素の閾値マトリックスによる階調処理を行う。これにより、11画素の階調処理後の画素が生成される。ステップS321ないしステップS326の処理が終了した後、ステップS336に進む。
また、ステップS327に続くステップS328ないしステップS335は、00画素、01画素、10画素、及び、11画素の4つの画素のそれぞれに対し、色変換処理と階調処理とが行われる。これらの処理は、画素毎に独立であってよく、画素間の処理順は問われない。
ステップS328では、色変換処理部520aが、00画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS328に続くステップS329では、階調処理部530aが、ステップS329で色変換された00画素に対し、00画素の閾値マトリックスによる階調処理を行う。これにより、00画素の階調処理後の画素が生成される。
ステップS330では、色変換処理部520aが、01画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS330に続くステップS331では、階調処理部530aが、ステップS330で色変換された01画素に対し、01画素の閾値マトリックスによる階調処理を行う。これにより、01画素の階調処理後の画素が生成される。
ステップS332では、色変換処理部520aが、10画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS332に続くステップS333では、階調処理部530aが、ステップS332で色変換された10画素に対し、10画素の閾値マトリックスによる階調処理を行う。これにより、10画素の階調処理後の画素が生成される。
ステップS334では、色変換処理部520aが、11画素に対する色変換処理を行い、RGBデータをCMYKデータに変換する。ステップS334に続くステップS335では、階調処理部530aが、ステップS334で色変換された11画素に対し、11画素の閾値マトリックスによる階調処理を行う。これにより、11画素の階調処理後の画素が生成される。ステップS328ないしS335の処理が全て終了した後、ステップS336に進む。
ステップS336では、画像処理後画像書き込み部582が、00画素、01画素、10画素、及び、11画素の4つの画素の階調処理後の画像データを、メインメモリ60のワード単位である128bit毎に格納させる処理を行う。
ステップS336に続いてステップS337に進み、1バンド分のバンドデータに対する処理が全て終了したか否かの判断がなされる。1バンド分の処理が終了している場合には、処理を終了し、1バンド分の処理が終了していない場合には、ステップS301に戻って処理を繰り返す。
(バンドデータと128ビットの1ワード分のデータの例)
図14及び図15は、画像データの構成例を示す図である。図14は、バンドデータの構成例を示す図であって、図8とは異なり、4画素毎に画素の種類が繰り返される。図14では、バンドの幅方向に6774個の画素が並び、バンドの高さ方向に256個のラインが並んでいる。図14では、幅方向に、00画素、01画素、10画素、及び、11画素が繰り返される。
図15は、メインメモリ60の1ワード分のデータの例を示す図であって、1ワードが128bitの場合の例を示す図である。図15では、4画素分の128bitのデータの例が示されている。1ワード分のデータは、4画素分のデータからなる。そこで、ワード単位のRGBバンド画像読み込み部512aは、1ワード分のデータを読み込むことにより、4画素分の画素データを一のアクセスにより読み込むことができる。
(閾値マトリックスの例)
図16は、閾値マトリックスの例を説明する図であって、4画素毎に閾値テーブルを異ならせる場合の例である。図16(a)は、バンドデータの画素を説明する図である。図中、ラインのアドレスが「0」、水平ライン方向のアドレスが「1」の画素を「0−1」と表記する。
図16(b)は、縦横4画素分に対応する閾値マトリックスを説明する図である。縦横4画素分の閾値マトリックスを「4*4マトリックス」と表記する。図16(c)は、図16(b)の閾値マトリックスに対応する、00画素、01画素、10画素、及び、11画素の閾値テーブルを示す図である。
図16(c)の00画素の閾値マトリックスは、図10(b)のマトリックスの要素のうち、水平方向のアドレスが4の倍数の画素に対応する閾値が含まれている。また、図16(c)の01画素の閾値マトリックスは、図16(b)のマトリックスの要素のうち、水平方向のアドレスが4で除した際の剰余が1である画素に対応する閾値が含まれている。
(コンピュータ等による実現)
図17は、本発明の実施の形態に係る画像処理装置を実現するコンピュータの構成を説明する図である。図17のコンピュータは、主処理部400、入力装置410、表示装置420、スキャナ430、プロッタ440、NIC460、ドライブ装置480、ハードディスク装置490、入力I/F419、表示I/F429、スキャナI/F439、プロッタI/F449、ドライブI/F489、及び、HDDI/F499を有する。
主処理部400は、コンピュータプログラムを実行して各機能を実現する。主処理部400は、例えば、CPU401、ROM408、及び、RAM409を有する。CPU401は、コンピュータプログラムを実行することにより、コンピュータが有する各デバイス等の制御を行う。ROM408は、例えば、コンピュータプログラムやパラメータ等が格納され、CPU401にそれらが供せられる。RAM409は、例えば、CPU401がコンピュータプログラムを実行する際のワークメモリとして供せられる。
入力装置410は、例えば、キーボードやマウス等の入力デバイスとして構成され、コンピュータに対する指示等が入力される。表示装置420は、コンピュータの状態等が表示される。スキャナ430は、画像を光学的に読み取って、画像データを生成する。プロッタ440は、媒体上に画像を形成して出力する。
NIC460は、コンピュータと外部とをネットワークを介して接続する際のインタフェースの機能を実現し、その制御を行う。ドライブ装置480は、記録媒体が挿入され、その記録媒体に記録された情報を読み出し、またその記録媒体に情報を記録する。HDD490は、大容量のデータを格納する記憶手段である。
入力I/F419は、表示I/F429、スキャナI/F439、プロッタI/F449、ドライブI/F489、及び、HDD−I/F499は、それぞれ、入力装置410、表示装置420、スキャナ430、プロッタ440、ドライブ装置480、及び、HDD490がバスを介して主処理部400と接続される際のインタフェースである。
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨をそこなわない範囲で変更することが可能である。
本実施の形態による画像処理装置では、複数画素をメモリから同時に読み込み、同一色であるか判断し、同一色であれば、色変換処理を一の画素に対して行なう。さらに、階調処理の際に、複数画素を並列に階調処理を行うことにより、高速化することができる。なお、同一色ではない場合は、画素毎にシリアルに処理を行う。
また、階調処理の閾値テーブルを複数画素のそれぞれに対応させて分割し、その分割された閾値テーブルをメモリに格納させ、並列にアクセスさせることにより、例えば、偶数用階調処理装置と奇数用階調処理装置とへ並列に閾値を読み込ませることができ、高速に階調処理を行うことができる。この際に、閾値テーブルのメモリは、分割しない場合に比して、増加することがない。
また、複数の画素のうち、並列処理する画素が全て同じ色の場合のみではなく、先頭から何画素分が同じであれば、同一色の画素に対して並列処理することを特徴とする。