(57)【特許請求の範囲】
【請求項１】
画像処理パラメータが設定されるレジスタと、
メインメモリ上の画像処理パラメータを読み出して前記レジスタに設定する第１のDMACと、
該第１のDMACにより前記レジスタに設定された画像処理パラメータに基づいて、画像データに対し画像処理を施す画像処理手段と、
プロセッサがページ毎に前記メインメモリに前記画像処理パラメータを書き込んだ後に出力する起動信号に基づいて前記第1のDMACを起動する起動制御手段と、
前記起動制御手段により起動され、前記メインメモリ上の画像データを読み出して前記画像処理手段に転送する第２のDMACと、
前記起動制御手段により起動され、前記画像処理手段で処理された画像データを前記メインメモリに転送する第３のDMACとを有し、
前記第２のDMAC、第３のDMACの各々の動作を記述するディスクリプタのうち、各ページの先頭のディスクリプタはページ内で共通の情報の拡張領域を有し、それ以外のディスクリプタは各ディスクリプタ特有の情報を有し、
連続した複数ページの画像データを処理するときは、前記プロセッサによる各ページの画像処理パラメータの書き込み及び起動信号の出力を、前記第1のDMAC及び画像処理手段の各ページの処理の終了を待たずに行うことを特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、
前記起動信号の入力によりインクリメントし、１ページの画像処理の終了に基づいてデクリメントするカウンタと、該カウンタの値が０に低下したときに、前記プロセッサに完了通知の割り込みを行う手段とを有することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタに設定した画像処理パラメータに基づいて、画像処理手段により画像データに画像処理を施す画像処理装置に関する。
【背景技術】
【０００２】
デジタル複合機では、スキャナで読み取った画像データに各種の画像処理を施し、プリンタで画像出力を行う。代表的な画像処理はγ変換処理、フィルタ処理、色補正処理、階調処理などである。
【０００３】
これらの画像処理を行うときは、メインメモリ上の未処理の画像データをDMAC（Direct Memory Access Controller）の制御により、それぞれの画像処理モジュールに転送し、画像処理済みの画像データをDMACの制御により、画像処理モジュールからメインメモリに転送する。
【０００４】
また、各画像処理を設定された画質モードで実行するために、各画像処理モジュールは画像処理パラメータを保持するためのレジスタを内蔵している。一般にこれらのパラメータのレジスタへの設定はCPU（Central Processing Unit）が行うため、CPUの負荷が重く、レジスタに対するパラメータの書き込みから画像処理終了までの時間も長くなる。
【０００５】
そこで、CPUが予めメインメモリ上に画像処理パラメータを記憶しておき、パラメータ転送用のDMACにより、メインメモリ上の画像処理パラメータをレジスタに転送し、かつ画像データ転送用のDMACと連動させることにより、CPUの負荷を軽減するとともに、画像処理終了までの時間を短縮した画像処理装置が提案されている（特許文献１参照）。
【０００６】
図１１はこの画像処理装置の機能ブロック図である。
この画像処理装置はCPU、ROM（Read Only Memory）及びRAM（Random Access Memory）を含むマイクロコンピュータによって実現される制御部101と、画像処理モジュール102と、メモリ103とを有する。
【０００７】
画像処理モジュール102は、例えば特定用途向け集積回路（Application Specific Integrated Circuit：ASIC）によって実現され、レジスタ104と、いずれもCPUを介すことなく直接データ転送を行うパラメータDMAC105、データリードDMAC106、及びデータライトDMAC107とからなり、各DMACが連動して画像処理を行う。
【０００８】
まずステップS101〜103で、制御部101がメモリ103に対してデータリードDMAC106とデータライトDMAC107の各DMAC用のディスクリプタ情報と、パラメータDMAC105の画像処理パラメータ用のディスクリプタ情報とを書き込む。
【０００９】
次いでステップS104で、制御部101が画像処理モジュール102に対してレジスタ情報を書き込んで必要なレジスタを設定する。ステップS105で、制御部101が画像処理モジュール102に対して起動レジスタを使って起動させる。画像処理モジュール102は、制御部101により起動されたら、レジスタ104からパラメータDMAC105、データリードDMAC106、データライトDMAC107に対してそれぞれ起動信号EXECを同時に送る。従って、パラメータDMAC105、データリードDMAC106、データライトDMAC107は同時に起動する。
【００１０】
次にステップS106で、レジスタ104から起動信号EXECを受けたデータリードDMAC106が、メモリ103からデータリードDMAC用のディスクリプタ情報を読み込んで取得し、内部レジスタに設定する。ステップS107で、レジスタ104から起動信号EXECを受けたパラメータDMAC105が、レジスタに設定で指定されたメモリ103のアドレスから画像処理パラメータ用のディスクリプタ情報を読み込んで取得し、内部レジスタに設定する。ステップS108で、レジスタ104から起動信号EXECを受けたデータライトDMAC107が、メモリ103からデータライトDMAC用のディスクリプタ情報を読み込んで取得し、内部レジスタに設定する。上記ステップS106〜108の処理は同時に行われ、これによりパラメータDMAC105とデータリードDMAC106とデータライトDMAC107とがメモリ103に設定されたそれぞれのディスクリプタ情報を同時に読み込んで取得する。
【００１１】
次にステップS109で、パラメータDMAC105が、データリードDMAC106に対して画像処理パラメータ用のディスクリプタ情報を内部レジスタに設定して終了したことを示す終了通知を送る。ステップS110で、データリードDMAC106が、上記終了通知に基づいてパラメータDMAC105の内部レジスタに画像処理パラメータ用のディスクリプタ情報が設定されたことを確認し、ステップS105で取得したディスクリプタ情報に基づいてメモリ103から画像データを読み込み、画像処理モジュール102はその画像データに画像処理を行う。
【００１２】
ステップS111で、データライトDMAC107が、ステップS108で取得したディスクリプタ情報に基づいて画像処理モジュール102による画像処理後の画像データを順次メモリ103に書き込む。
【００１３】
ステップS112で、データリードDMAC106が、データライトDMAC107に対して画像データを全て読み込んだことを示す終了通知を送る。ステップS113で、データライトDMAC107が、メモリ103に全ての画像処理後の画像データを書き込み、かつデータリードDMAC106から終了通知が来たことを確認後、制御部101に対して画像処理終了を示す終了通知を送り、制御部101はその終了通知に基づいて終了の割り込み処理を行う。
【００１４】
このようにして、パラメータDMAC105の画像処理パラメータ用のディスクリプタ情報を設定する内部レジスタに、そのディスクリプタ情報を制御部101が直接設定するのではなく、一旦メモリ103に記憶してからDMA処理によって画像処理モジュール102が読み込むので、制御部101のCPUの負荷の低減と画像処理時間の短縮が可能になる。
【００１５】
しかしながら、この画像処理装置では、連続した複数ページの処理を行う場合、各DMACはページ毎に内部レジスタにディスクリプタ情報を設定する必要があり、制御部101は各ページの画像処理が終了してからレジスタの設定を行って起動を繰り返すことになる。従って、ページ数が多くなると、制御部101のCPUが割り込みを待機する処理が多くなることで、ソフトの処理効率が低下するという問題がある。
【００１６】
【特許文献１】特開２００７−１８８４３４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明は、このような問題を解決するためになされたものであり、その目的は、プロセッサによりメインメモリにページ毎に書き込まれる画像処理パラメータをDMACにより読み出してレジスタに設定し、レジスタに設定される画像処理パラメータに基づいて、画像処理手段で連続した複数ページの画像データ処理を行うときに、プロセッサの処理効率の低下を抑えるとともに、画像処理に要する時間を短縮することである。
【課題を解決するための手段】
【００１８】
本発明は、画像処理パラメータが設定されるレジスタと、メインメモリ上の画像処理パラメータを読み出して前記レジスタに設定する第１のDMACと、該第１のDMACにより前記レジスタに設定された画像処理パラメータに基づいて、画像データに対し画像処理を施す画像処理手段と、プロセッサがページ毎に前記メインメモリに前記画像処理パラメータを書き込んだ後に出力する起動信号に基づいて前記第1のDMACを起動する起動制御手段と、前記起動制御手段により起動され、前記メインメモリ上の画像データを読み出して前記画像処理手段に転送する第２のDMACと、前記起動制御手段により起動され、前記画像処理手段で処理された画像データを前記メインメモリに転送する第３のDMACとを有し、前記第２のDMAC、第３のDMACの各々の動作を記述するディスクリプタのうち、各ページの先頭のディスクリプタはページ内で共通の情報の拡張領域を有し、それ以外のディスクリプタは各ディスクリプタ特有の情報を有し、連続した複数ページの画像データを処理するときは、前記プロセッサによる各ページの画像処理パラメータの書き込み及び起動信号の出力を、前記第1のDMAC及び画像処理手段の各ページの処理の終了を待たずに行うことを特徴とする画像処理装置である。
【発明の効果】
【００１９】
本発明によれば、プロセッサによりメインメモリにページ毎に書き込まれる画像処理パラメータをDMACにより読み出してレジスタに設定し、レジスタに設定される画像処理パラメータに基づいて、画像処理手段で連続した複数ページの画像データ処理を行うときに、プロセッサの処理効率の低下を抑えるとともに、画像処理に要する時間を短縮することができる。また、１ページを多数のディスクリプタで構成する場合のディスクリプタ用のメモリ領域の増大を抑えつつ、各ページ共通の情報をレジスタに保持する必要をなくすことができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について図面を参照しながら説明する。
図1は、本発明の実施形態の画像処理装置の全体構成を示すブロック図である。この画像処理装置は、エンジン1000と、コントローラ2000とを備えている。
【００２１】
エンジン1000は、スキャナ1100、スキャナ画像処理ASIC1200、プロッタ1300、プロッタ制御ASIC1400、RAM1500、エンジンCPU1600、フラッシュメモリ1700、エンジンASIC1800からなり、原稿の読み取りおよび画像の出力を行う。
【００２２】
スキャナ1100は、原稿の読み取りを行うユニットであり、スキャナ動作、コピー動作、FAX送信動作時に原稿の画像データを出力する。スキャナ画像処理ASIC1200は、スキャナ1100で読み取られた画像データに補正を行った画像データ、及び原稿における文字部/写真部、有彩/無彩を判定した画像分離データを生成して出力する。
【００２３】
プロッタ1300は、プロッタ制御ASIC1400から出力される画像データに基づいて用紙上に画像形成を行って出力する。プロッタ制御ASIC1400は、プロッタ1300からの同期信号に合わせて、エンジンASIC1800から入力される画像データをプロッタ1300へ出力する。
【００２４】
RAM1500は、エンジンCPU1600がエンジン制御を行うための作業用メモリで、エンジンCPU1600により、プログラム実行中の変数記憶領域などに使用される。エンジンCPU1600は、スキャナ制御、用紙の搬送、作像、定着など、エンジン1000全般の制御を行う。フラッシュメモリ1700は、エンジンCPU1600が各種制御を実行するときに使用するプログラムを記憶するための書き換え可能な不揮発性メモリである。
【００２５】
エンジンASIC1800は、ビデオ出力部1810、アービタ1820、コミュニケーションバッファ1830、解像度変換部1840、及び圧縮伸張部1850を備え、コントローラ2000とエンジンCPU1600、コントローラ2000とプロッタ制御ASIC1400との間のデータのインタフェースを行う。
【００２６】
ビデオ出力部1810は、出力する画像の画像データを後述するメインメモリ2400から読み込み、マスク処理、合成処理、フォーマット変換などを行ってプロッタ制御ASIC1400へ出力する。アービタ1820は、エンジンASIC1800内の各モジュールから後述するコントローラCPU2300へのアクセスの調停を行う。コミュニケーションバッファ1830は、エンジンCPU1600とコントローラCPU2300との間の通信のためのバッファである。解像度変換部1840は、プリンタ動作、FAX動作時に、メインメモリ2400上の低解像度の画像データからプロッタ1300に適合する高解像度の画像データへの変換を行い、変換後の画像データをメインメモリ2400に出力する。圧縮伸張部1850は、メインメモリ2400上の画像データ領域を削減するために、画像データを圧縮してメインメモリ2400に送出し、メインメモリ2400から出力された圧縮画像データを伸張する。
【００２７】
コントローラ2000は、画像処理装置の全体の制御や各種アプリケーションの実行を行う制御装置であり、コントローラASIC2100、ハードディスク2200、コントローラCPU2300、及びメインメモリ2400を備えている。
【００２８】
コントローラASIC2100は、ビデオ入力部2110、アービタ2120、配信画像処理部2140、画像処理コントローラ2150、及びハードディスクI/F（インタフェース）2160を有しており、エンジン1000から入力される画像データのメインメモリ2400への転送、コピー時の画像処理、ハードディスク2200へのリード/ライト制御などを行う。
【００２９】
ビデオ入力部2110は、スキャナ画像処理ASIC1200から出力された画像データを圧縮してメインメモリ2400へ転送する。アービタ2120は、コントローラASIC2100内の各モジュールからコントローラCPU2300へのアクセスの調停を行う。配信画像処理部2140は、メインメモリ2400上の画像データをネットワーク経由で配信するために、画像データの変換処理を行い、変換後の画像データをメインメモリ2400へ出力する。画像処理コントローラ2150は、メインメモリ2400上の圧縮画像データを展開し、フィルタ処理、色変換処理、階調処理などを行ってメインメモリ2400へ転送する。ハードディスクI/F2160は、ハードディスク2200へのリード/ライト制御を行う。
【００３０】
ハードディスク2200は、各種画像データの蓄積や、コントローラCPU2300の一時記憶領域に使用する記憶装置である。コントローラCPU2300は、メモリコントローラ及びPCI（Peripheral Component Interconnect） Express（登録商標）、PCIの汎用インタフェースを備え、メインメモリ2400の領域確保及びリード/ライト制御、並びにプリンタの画像描画、コピー、スキャナ、FAX、配信などの各種アプリケーションを実行する。メインメモリ2400は、コントローラCPU2300が各種アプリケーションを実行するための作業用メモリであり、コントローラCPU2300により、各種データの一時記憶領域や、DMAC用ディスクリプタ領域などに使用される。
【００３１】
図２は、画像処理コントローラ2150の構成例、及びメインメモリ2400との間のデータの流れを示す図である。
画像処理コントローラ2150は、画像処理モジュール群2151、レジスタ制御部2152、データリードDMAC2153、パラメータDMAC2154、第１〜第４のデータライトDMAC2155〜2158を備えている。
【００３２】
パラメータDMAC2154は、メインメモリ2400上に予めロードされた画像処理パラメータ2402を読み出して、レジスタ制御部2152内のパラメータレジスタ（図示せず）に設定する。データリードDMAC2153は、メインメモリ2400から、画素順次のRGB画像データと分離データＸ（入力画像データ2401）を読み出して、画像処理モジュール群2151へ送出する。画像処理モジュール群2151は、入力画像データに各種画像処理を施すモジュールの集まりであり、γ変換モジュール、フィルタモジュール、色補正モジュール、階調処理モジュールなどから構成される。第１〜第４のデータライトDMAC2155〜2158は、画像処理モジュール群2151から送出された画像処理後のCMYK面順次の画像データそれぞれをメインメモリ2400へ出力する（出力画像データ2403〜2406）。
【００３３】
レジスタ制御部2152は、画像処理モジュール群2151の中の、各画像処理モジュールが画像処理を行う際に使用するパラメータを保持する。また、各DMACに起動を指示するためのEXECレジスタや、割り込みのステータスを保持する割り込みステータスレジスタ、各DMACのディスクリプタポインタレジスタなどを備え、各DMACの起動処理及びコントローラCPU2300への割り込み信号の出力を行う。
【００３４】
図３は、データリードDMAC用、データライトDMAC用のディスクリプタの例を示す図である。ここで、Ａは各ページの先頭のディスクリプタ2411であり、Ｂはそれ以外のディスクリプタ2412である。各ページの先頭のディスクリプタ2411及びそれ以外のディスクリプタ2412、即ち全てのディスクリプタは下記のエントリを持つ。
【００３５】
NDP（ネクスト・ディスクリプタ・ポインタ）には、次のディスクリプタのアドレスを設定する。１ページ分の画像領域をメインメモリ2400上に連続して確保できない場合は、飛び飛びに画像領域を確保し、それぞれの領域に対してディスクリプタを作成して、次のディスクリプタのアドレスをここに書き込んでおくことにより、飛び飛びの画像領域に対して連続して処理を行うことが出来る。
【００３６】
SA（スタートアドレス）には、データを入力或いは出力する先頭のアドレスを設定する。データリードDMACの場合は、このアドレスから画像データの読み出しを行い、データライトDMACの場合は、このアドレスから画像データを書き込んでいく。
【００３７】
LINE（ライン）には、２次元画像の副走査方向のライン数、又は１次元データのデータ数を設定する。MODE（モード）には、転送データの種類や、割り込み、繰り返しなどを設定する。
【００３８】
また、ページの先頭のディスクリプタ2411は、上記のエントリに加え、ページ内に共通の情報のエントリを持つ。MWIDTH（メモリ幅）には、２次元画像の主走査方向のメモリ上の幅を設定する。DMACは、この値を単位として１ライン分の画像データ読み込み或いは書き込み（出力）を行う。IWIDTH（イメージ幅）には、２次元画像の主走査方向の幅を設定する。CTRL（コントロール）には、回転などの動作モードを設定する。FILL（フィルパターン）には、メモリのクリアを行う場合に書き込む値を設定する。
【００３９】
このような構成にすることにより、１ページを多数のディスクリプタで構成する場合のディスクリプタ用のメモリ領域の増大を抑えつつ、各ページ共通の情報をレジスタに保持する必要をなくすことができる。
【００４０】
図４は、パラメータDMAC用のディスクリプタの例を示す図である。
パラメータDMAC用のディスクリプタ2413は、各画像処理モジュールに設定するパラメータのスタートアドレス（SA）のエントリを持つ。γ変換用パラメータのSAには、γ変換に使用するテーブルの値などのパラメータのスタートアドレスを設定する。フィルタ用パラメータのSAには、平滑化やエッジ強調に使用するフィルタ係数などのパラメータのスタートアドレスを設定する。色補正用パラメータのSAには、RGBからCMYKに変換する際に使用するマスキング係数などのパラメータのスタートアドレスを設定する。階調処理用パラメータのSAには、階調処理を行う際に使用するディザテーブルなどのパラメータのスタートアドレスを設定する。
【００４１】
図５は、画像処理コントローラ2150のレジスタ制御部2152内のレジスタの構成例を示す図である。
この図のＡに示されているEXECレジスタは、画像処理コントローラ2150を起動するレジスタである。割り込みステータスレジスタは、画像処理コントローラ2150の各DMACの終了割り込みや、エラーなどの割り込み情報を保持する。割り込みマスクレジスタには、画像処理コントローラ2150の各割り込みのマスク制御を設定する。動作モードレジスタには、画像処理コントローラ2150の動作モードを設定する。
【００４２】
パラメータDMAC DP1〜パラメータDMAC DPnには、複数ページの設定を行う場合に各ページ（１〜ｎページ）の画像処理パラメータのディスクリプタのアドレス（ディスクリプタポインタ）を設定する。
【００４３】
データリードDMAC DP1〜データリードDMAC DPnには、複数ページの設定を行う場合に各ページの入力画像データの先頭のディスクリプタのアドレスを設定する。
【００４４】
データライトDMAC1 DP1〜データライトDMAC1 DPnには、複数ページの設定を行う場合に第１のデータライトDMAC2155用の各ページの出力画像データの先頭のディスクリプタのアドレスを設定する。同様に、データライトDMAC2 DP1〜データライト DMAC2 DPnには、第２のデータライトDMAC2156用の各ページの出力画像データの先頭のディスクリプタのアドレスを設定し、データライトDMAC3 DP1〜データライトDMAC3 DPnには、第３のライトDMAC2157用の各ページの出力画像データの先頭のディスクリプタのアドレスを設定し、データライトDMAC4 DP1〜データライトDMAC4 DPnには、第４のライトDMAC2158用の各ページの出力画像データの先頭のディスクリプタのアドレスを設定する。
【００４５】
この図のＢに示されている各レジスタはパラメータDMAC2154により設定される。γ変換用パラメータは、γ変換に使用するテーブルの値などのパラメータを保持し、フィルタ用パラメータは、平滑化やエッジ強調に使用するフィルタ係数などのパラメータを保持し、色補正用パラメータは、RGBからCMYKに変換する際に使用するマスキング係数などのパラメータを保持し、階調処理用パラメータは、階調処理を行う際に使用するディザテーブルなどのパラメータを保持する。
【００４６】
図６は、コントローラCPU2300のソフト制御フローを示す図である。
まずステップST１で画像処理パラメータをメインメモリ2400上に準備する。これは、例えばROMやハードディスク2200などの記憶装置に記憶しておき、それをメインメモリ2400にロードすることで実現する。
【００４７】
次に、ステップST２でパラメータDMAC2154用、データリードDMAC2153用、及び第１〜第４のデータライトDMAC2155〜2158用のディスクリプタをメインメモリ2400上に作成する。次いで、作成したディスクリプタのアドレスを、ステップST３でレジスタ制御部2152内のディスクリプタポインタレジスタに設定する。これらの設定が終了したら、ステップST４でレジスタ制御部2152内のEXECレジスタに1を書き込むことで、画像処理コントローラ2150に起動をかける。
【００４８】
次いでステップST５で次のページの有無を判断し、ある場合は（ST5：yes）、引き続きステップST１〜ST４の動作を繰り返す。最後のページまで終了したら（ST5：no）、処理を終了する。コントローラCPU2300は、後述する画像処理コントローラ2150の全ての処理が終了するまで、別のタスクを行うことが出来る。
【００４９】
図７は、画像処理コントローラ2150の動作フローを示す図である。
画像処理コントローラ2150は、コントローラCPU2300のソフトにより起動（EXEC）がかけられるまでは、ステップST11でアイドル状態を継続する。起動がかけられると（ステップST11：yes）、動作フローはステップST12及びST15の２つに分岐し、並行して進行する。
【００５０】
分岐した一方のステップST12では、レジスタ制御部2152に保持する起動回数のカウンタをインクリメントする。この後、再び起動がかけられたら（ステップST13：yes）、再び起動回数のカウンタをインクリメントする。かけられていなくて（ステップST13：no）、かつカウンタの値が０より大きいときには（ステップST14：yes）、起動がかけられるのを待つ。かけられていなくて、カウンタの値が０になったら、ステップST25に進み、コントローラCPU2300に動作完了割り込み信号を出力して終了する。
【００５１】
分岐した他方のステップST15では、パラメータDMAC2154用のディスクリプタをメインメモリ2400から読み出す。ディスクリプタの読み込みが終了したら、ステップST16でメインメモリ2400上の画像処理パラメータ2402を読み出し、レジスタ制御部2152内のレジスタに設定する。パラメータDMAC2154によるパラメータ設定が終了したら、ステップST17で、データリードDMAC2153、及び第１〜第４のデータライトDMAC2155〜2158は、ページの先頭の拡張領域つきディスクリプタ2411をメインメモリ2400から読み出す。
【００５２】
データリードDMAC2153は、ディスクリプタの読み出しが終了したら、そのディスクリプタの内容に従って、メインメモリ2400から画像データを読み込み、画像処理モジュール群2151に出力する。画像処理モジュール群2151は、レジスタ制御部2152内のレジスタに設定されたパラメータに従って画像処理を行い、処理後の画像データを各データライトDMACに出力する。各データライトDMACは、画像処理モジュール群2151からの画像データをメインメモリ2400に出力する。これらがステップST18の処理である。
【００５３】
ステップST19で次の領域の有無、即ち１ページ分の画像領域がメインメモリ2400上で分割されているか否かを判断する。そして、次の領域がない場合はステップST23へ進み、起動回数のカウンタをデクリメントする。
【００５４】
一方、次の領域がある場合はステップST20へ進み、データリードDMAC2153、及び第１〜第４のデータライトDMAC2155〜2158は、メインメモリ2400から拡張領域を持たないディスクリプタ2412を読み出す。
【００５５】
データリードDMAC2153は、ディスクリプタの読み出しが終了したら、そのディスクリプタの内容に従って、メインメモリ2400から、分割されている領域の画像データを読み込み、画像処理モジュール群2151に出力する。画像処理モジュール群2151は、レジスタ制御部2152内のレジスタに設定されたパラメータに従って画像処理を行い、処理後の画像データを各データライトDMAC2155〜2158に出力する。各データライトDMAC2155〜2158は、画像処理モジュール群2151からの画像データをメインメモリ2400に出力する。これらがステップST21の処理である。
【００５６】
ステップST21により上記の２つ目の領域の処理が終了後、ステップST22でさらに次の領域があるか否かを判断し、ある場合（ST22：yes）はST20へ戻り、ページ内の分割されたすべての領域の画像処理が終了するまでS20及びS21を繰り返す。
【００５７】
次の領域がなくなったら（ST22：no）、ステップST23で起動回数のカウンタをデクリメントする。デクリメントした後、ステップST24でカウンタの値が０より大きいか否かを判断し、大きければ次のページの設定が終了して起動がかけられているので、ST15へ戻り、次のページの処理を行う。カウンタの値が０の場合は、次のページの起動がかけられていないため、ST25へ進み、動作完了割り込みを出力して、動作を終了する。
【００５８】
図８は、メインメモリ2400上のディスクリプタ及びパラメータ並びに画像領域の配置例を示す図である。この例では、ページ数が２であり、各ページの画像領域が２つに分割されている。以下、分割されている領域をバンドと呼ぶ。この図のＡは１ページ目、Ｂは２ページ目である。
【００５９】
この図のＡのPD1は、パラメータDMAC2154用の１ページ目のディスクリプタであり、このディスクリプタポインタがPDP1である。P1は、1ページ目のパラメータであり、この領域に、γ変換、フィルタ、色補正、階調処理のそれぞれのパラメータをロードしておく。このスタートアドレスがPSA1である。
【００６０】
DRD1_1は、データリードDMAC2153用の１ページ目の１バンド目のディスクリプタであり、このディスクリプタポインタがDRDP1_1である。このディスクリプタはページの先頭のディスクリプタなので、拡張領域を持つ。DR1_1は、データリードDMAC用の１ページ目の１バンド目の画像領域であり、画像処理を行う元の画像データをこの領域にロードしておく。このスタートアドレスがDRSA1_1である。
【００６１】
DRD1_2は、データリードDMAC2153用の１ページ目の２バンド目のディスクリプタであり、このディスクリプタポインタがDRDP1_2である。このディスクリプタはページの先頭のディスクリプタではないので、拡張領域を持たない。DR1_2は、データリードDMAC2153用の１ページ目の２バンド目の画像領域であり、画像処理を行う元の画像データをこの領域にロードしておく。このスタートアドレスがDRSA1_2である。
【００６２】
DWD1_1は、第１〜第４のデータライトDMAC2155〜2158用の１ページ目の１バンド目のディスクリプタであり、このディスクリプタポインタがDWDP1_1である。このディスクリプタはページの先頭のディスクリプタなので、拡張領域を持つ。DW1_1は、第１〜第４のデータライトDMACC2155〜2158用の１ページ目の１バンド目の画像領域であり、画像処理を行った後の画像データがこの領域に出力される。このスタートアドレスがDWSA1_1である。なお、ここでは便宜上、４つのータライトDMAC2155〜2158用のディスクリプタ及び画像領域をそれぞれ１つずつ図示したが、実際は４つずつ設けている。
【００６３】
DWD1_2は、第１〜第４のデータライトDMACC2155〜2158用の１ページ目の２バンド目のディスクリプタであり、このディスクリプタポインタがDWDP1_2である。このディスクリプタはページの先頭のディスクリプタではないので、拡張領域を持たない。DR1_2は、第１〜第４のデータライトDMAC2155〜2158用の１ページ目の２バンド目の画像領域であり、画像処理を行った後の画像データがこの領域に書き込まれる。このスタートアドレスがDWSA1_2である。
【００６４】
この図のＢに示されているPD2は、パラメータDMAC2154用の２ページ目のディスクリプタであり、このディスクリプタポインタがPDP2である。P2は、２ページ目のパラメータであり、この領域に、γ変換、フィルタ、色補正、階調処理のそれぞれのパラメータをロードしておく。このスタートアドレスがPSA2である。
【００６５】
DRD2_1は、データリードDMAC2153用の２ページ目の１バンド目のディスクリプタであり、このディスクリプタポインタがDRDP2_1である。このディスクリプタはページの先頭のディスクリプタなので、拡張領域を持つ。DR2_1は、データリードDMAC2153用の２ページ目の１バンド目の画像領域であり、画像処理を行う元の画像データをこの領域にロードしておく。このスタートアドレスがDRSA2_1である。
【００６６】
DRD2_2は、データリードDMAC2153用の２ページ目の２バンド目のディスクリプタであり、このディスクリプタポインタがDRDP2_2である。このディスクリプタはページの先頭のディスクリプタではないので、拡張領域を持たない。DR1_2は、データリードDMAC2153用の２ページ目の２バンド目の画像領域であり、画像処理を行う元の画像データをこの領域にロードしておく。このスタートアドレスがDRSA2_2である。
【００６７】
DWD2_1は、第１〜第４のデータライトDMAC2155〜2158用の２ページ目の１バンド目のディスクリプタであり、このディスクリプタポインタがDWDP2_1である。このディスクリプタはページの先頭のディスクリプタなので、拡張領域を持つ。DW2_1は、第１〜第４のデータライトDMAC2155〜2158の２ページ目の１バンド目の画像領域であり、画像処理を行った後の画像データがこの領域に書き込まれる。このスタートアドレスがDWSA2_1である。
【００６８】
DWD2_2は、第１〜第４のデータライトDMAC2155〜2158用の２ページ目の２バンド目のディスクリプタであり、このディスクリプタポインタがDWDP2_2である。このディスクリプタはページの先頭のディスクリプタではないので、拡張領域を持たない。DR2_2は、第１〜第４のデータライトDMAC2155〜2158用の２ページ目の２バンド目の画像領域であり、画像処理を行った後の画像データがこの領域に書き込まれる。このスタートアドレスがDWSA2_2である。
【００６９】
図９及び図１０は、以上説明したコントローラCPU2300及び画像処理コントローラ2150の動作シーケンスを示す図である。ここでは、図８と同様にページ数が２、各ページの画像領域が２つに分割されている場合の例を示している。なお、画像処理を行う元画像データはすでにメインメモリ2400上に記憶されているものとする。また、この図の「ソフト」がコントローラCPU2300のソフト処理である。
【００７０】
ステップS0では初期状態であり、レジスタ制御部2152の起動回数のカウンタは０である。
ステップS1〜S12は１ページ目に対するソフトの処理である。まずステップS1で１ページ目のパラメータをメインメモリ2400上にロードし、ステップS2で１ページ目のパラメータのディスクリプタをメインメモリ2400上に作成する。ステップS3で、レジスタ制御部2152内のパラメータDMAC2154用のDP1にPDP1を設定する。ステップS4で、データリードDMAC2153用の１ページ目の１バンド目のディスクリプタDRD1_1をメインメモリ2400上に作成する。ステップS5で、レジスタ制御部2152内のデータリードDMAC2153用のDP1にDRDP1_1を設定する。ステップS6で、データリードDMAC2153用の１ページ目の２バンド目のディスクリプタDRD1_2をメインメモリ2400上に作成する。ステップS7で、レジスタ制御部内のデータリードDMAC2153用のDP2にDRDP1_2を設定する。ステップS8で、第１〜第４のデータライトDMAC2155〜2158用の１ページ目の１バンド目のディスクリプタDWD1_1をメインメモリ2400上に作成する。ステップS9で、レジスタ制御部2152内の第１〜第４のデータライトDMAC2155〜2158用のDP1にDWDP1_1を設定する。ステップS10で、第１〜第４のデータライトDMAC2155〜2158用の１ページ目の２バンド目のディスクリプタDWD1_2をメインメモリ2400上に作成する。ステップS11で、レジスタ制御部2152内の第１〜第４のデータライトDMAC2155〜2158用のDP2にDWDP1_2を設定する。ステップS12で、レジスタ制御部2152内のEXECレジスタに1を書き込み、1ページ目の起動をかける。
【００７１】
レジスタ制御部2152では起動がかけられると、ステップS13で起動回数のカウンタをインクリメントし、その結果、カウンタの値は１になる。
【００７２】
以下のステップS14〜S25は２ページ目に対するソフトの処理である。ステップS14で、２ページ目のパラメータをメインメモリ2400上にロードする。ステップS15で、２ページ目のパラメータのディスクリプタをメインメモリ2400上に作成する。ステップS16で、レジスタ制御部2152内のパラメータDMAC2154用のDP2にPDP2を設定する。ステップS17で、データリードDMAC2153用の２ページ目の１バンド目のディスクリプタDRD2_1をメインメモリ2400上に作成する。ステップS18で、レジスタ制御部2152内のデータリードDMAC2153用のDP3にDRDP2_1を設定する。ステップS19で、データリードDMAC2153用の２ページ目の２バンド目のディスクリプタDRD2_2をメインメモリ2400上に作成する。ステップS20で、レジスタ制御部2152内のデータリードDMAC2153用のDP4にDRDP2_2を設定する。ステップS21で、第１〜第４のデータライトDMAC2155〜2158用の２ページ目の１バンド目のディスクリプタDWD2_1をメインメモリ2400上に作成する。ステップS22で、レジスタ制御部2152内の第１〜第４のデータライトDMAC2155〜2158用のDP3にDWDP2_1を設定する。ステップS23で、第１〜第４のデータライトDMAC2155〜2158用の２ページ目の２バンド目のディスクリプタDWD2_2をメインメモリ2400上に作成する。ステップS24で、レジスタ制御部2152内の第１〜第４のデータライトDMAC2155〜2158用のDP4にDWDP2_2を設定する。ステップS25で、レジスタ制御部2152内のEXECレジスタに１を書き込み、２ページ目の起動をかける。
【００７３】
レジスタ制御部2152は、起動がかけられると、ステップS26で起動回数のカウンタをインクリメントし、その結果、カウンタの値は２になる。
【００７４】
以下のステップS27〜S67は画像処理コントローラ2150の処理である。
アイドル状態で起動がかけられたレジスタ制御部2152は、ステップS27でパラメータDMAC2154を起動する。パラメータDMAC2154は、ステップS28で、メインメモリ2400にある１ページ目のディスクリプタPD1を読み出し、ステップS29で、メインメモリ2400にある１ページ目のパラメータP1を読み出し、ステップS30で、パラメータP1をレジスタ制御部2152内のレジスタに設定する。パラメータDMAC2154は、このようにして全てのパラメータ設定が終了したら、ステップS31で転送終了信号をレジスタ制御部2152に送出する。
【００７５】
レジスタ制御部2152は、パラメータDMAC2154から転送終了信号を受け取ったら、ステップS32でデータリードDMAC2153を起動し、ステップS33で第１〜第４のデータライトDMAC2155〜2158を起動する。
【００７６】
起動されたデータリードDMAC2153は、ステップS34で、メインメモリ2400上の１ページ目の１バンド目のディスクリプタDRD1_1を読み出す。また、起動された第1〜第4のデータライトDMAC2155〜2158は、ステップS35で、メインメモリ2400上の１ページ目の１バンド目のディスクリプタDWD1_1を読み出す。ステップS36で、データリードDMAC2153は、メインメモリ2400上の１ページ目の１バンド目の画像データDR1_1を読み出し、画像処理モジュール群2151に出力する。
【００７７】
画像処理モジュール群2151は、ステップS37で、データリードDMAC2153から入力された画像データに対して、パラメータで設定された画像処理を行い、第１〜第４のデータライトDMAC2155〜2158へ出力する。第１〜第４のデータライトDMAC2155〜2158は、ステップS38で、画像処理モジュール群2151から出力された１ページ目の１バンド目の画像処理後の画像データDW1_1をメインメモリ2400に出力する。
【００７８】
ステップS39で、データリードDMAC2153は、メインメモリ2400上の１ページ目の２バンド目のディスクリプタDRD1_2を読み出す。ステップS40で、第１〜第４のデータライトDMAC2155〜2158は、メインメモリ2400上の１ページ目の２バンド目のディスクリプタDWD1_2を読み出す。ステップS41で、データリードDMAC2153は、メインメモリ2400上の１ページ目の２バンド目の画像データDR1_2を読み出し、画像処理モジュール群2151に出力する。そして、読み出しが終了したら、ステップS44で転送終了信号をレジスタ制御部2152に出力する。
【００７９】
ステップS42で、画像処理モジュール群2151は、データリードDMAC2153から入力された画像データに対して、パラメータで設定された画像処理を行い、第１〜第４のデータライトDMAC2155〜2158へ出力する。ステップS43で、第１〜第４のデータライトDMAC2155〜2158は、画像処理モジュール群2153から出力された１ページ目の２バンド目の画像処理後の画像データDW1_2をメインメモリ2400に出力する。そして、出力が終了したら、ステップS45で転送終了信号をレジスタ制御部2152に出力する。
【００８０】
レジスタ制御部2152は、第１〜第４のデータライトDMAC2155〜2158からの転送終了信号を受け取ったら、ステップS46で起動回数のカウンタをデクリメントし、その結果、カウンタの値は１になる。デクリメント後のカウンタの値が０でないため、ステップS47で、レジスタ制御部2152は再びパラメータDMAC2154を起動する。
【００８１】
起動されたパラメータDMAC2154は、ステップS48で、メインメモリ2400上の２ページ目のディスクリプタPD2を読み出し、ステップS49で、メインメモリ2400上の２ページ目のパラメータP2を読み出し、ステップS50で、パラメータP2をレジスタ制御部2152内のレジスタに設定する。そして、全てのパラメータ設定が終了したら、ステップS51で転送終了信号をレジスタ制御部2152に出力する。
【００８２】
レジスタ制御部2152は、パラメータDMA2154Cからの転送終了信号を受け取ったら、ステップS52でデータリードDMAC2153を起動し、ステップS53で第１〜第４のデータライトDMAC2155〜2158を起動する。
【００８３】
起動されたデータリードDMAC2153は、ステップS54で、メインメモリ2400上の２ページ目の１バンド目のディスクリプタDRD2_1を読み出す。起動された第１〜第４のデータライトDMAC2155〜2158は、ステップS55で、メインメモリ2400上の２ページ目の２バンド目のディスクリプタDWD2_1を読み出す。データリードDMAC2153は、ステップS56で、メインメモリ2400上の２ページ目の１バンド目の画像データDR2_1を読み出し、画像処理モジュール群2151に出力する。
【００８４】
画像処理モジュール群2151は、ステップS57で、データリードDMAC2153から入力された画像データに対して、パラメータで設定された画像処理を行い、第１〜第４のデータライトDMAC2155〜2158へ出力する。第１〜第４のデータライトDMAC2155〜2158は、ステップS58で、画像処理モジュール群2151から出力された２ページ目の１バンド目の画像処理後の画像データDW2_1をメインメモリ2400に出力する。
【００８５】
次にステップS59で、データリードDMAC2153は、メインメモリ2400上の２ページ目の２バンド目のディスクリプタDRD2_2を読み出し、ステップS60で、第１〜第４のデータライトDMAC2155〜2158は、メインメモリ2400上の２ページ目の２バンド目のディスクリプタDWD2_2を読み出す。ステップS61で、データリードDMAC2153は、メインメモリ2400上の２ページ目の２バンド目の画像データDR2_2を読み出し、画像処理モジュール群2151に出力する。そして、読み出しが終了したら、ステップS64で転送終了信号をレジスタ制御部2152に出力する。
【００８６】
画像処理モジュール群2151は、ステップS62で、データリードDMAC2153から入力された画像データに対して、パラメータで設定された画像処理を行い、第１〜第４のデータライトDMAC2155〜2158へ出力する。第１〜第４のデータライトDMAC2155〜2158は、ステップS63で、画像処理モジュール群2151から出力された２ページ目の２バンド目の画像処理後の画像データDW2_2をメインメモリ2400に出力する。そして、出力が終了したら、ステップS65で、転送終了信号をレジスタ制御部2152に出力する。
【００８７】
レジスタ制御部2152は、第１〜第４のデータライトDMAC2155〜2158からの転送終了信号を受け取ったら、ステップS66で起動回数のカウンタをデクリメントし、カウンタの値は０になる。レジスタ制御部2152は、起動回数のカウンタが０になったので、ステップS67で、CPUコントローラ2300に転送終了割り込み信号を出力する。
【００８８】
以上詳細に説明したように、本発明の実施形態によれば、下記（１）〜（３）の効果が得られる。
（１）レジスタ制御部2152がデータリードDMAC2153用、及び第１〜第４のデータライトDMAC2155〜2158用の各々のディスクリプタレジスタを複数持ち、画像処理コントローラ2150が起動回数のカウンタを持ち、画像処理終了後、起動カウンタが０でない場合は、再びパラメータDMAC2154を起動し、パラメータDMAC2154によるパラメータの転送が終了したら、データリードDMAC2153及び第１〜第４のデータライトDMAC2155〜2158の起動を行うことを繰り返すことにより、コントローラCPU2300は、１ページ分の画像処理後にパラメータ及びディスクリプタのメインメモリ2400への書き込みなどを行うという制約がなくなり、複数ページ分をまとめて書き込むことができるようになるため、ソフトの処理効率を向上させることができる。
（２）データリードDMAC2153用、及び第１〜第４のデータライトDMAC2155〜2158用の各々のディスクリプタのうち、ページの最初のディスクリプタのみに拡張領域を持たせることにより、保持しておく未処理のページ用のレジスタを削減することができ、ハードウェア規模の増大を抑えることが出来る。
（３）全てのページの処理が終わり、起動カウンタの値が０になった場合に終了割り込みを出すことにより、割り込み処理の回数が削減されるため、ソフトの処理効率を向上させることができる。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施形態の画像処理装置の全体構成を示すブロック図である。
【図２】図１の画像処理コントローラの構成例、及びメインメモリとの間のデータの流れを示す図である。
【図３】図２のデータリードDMAC、データライトDMACのディスクリプタの例を示す図である。
【図４】図２のパラメータDMACのディスクリプタの例を示す図である。
【図５】図２の画像処理コントローラのレジスタ制御部内のレジスタの構成例を示す図である。
【図６】図２のコントローラCPUのソフト制御フローを示す図である。
【図７】図２の画像処理コントローラの動作フローを示す図である。
【図８】図２のメインメモリ上のディスクリプタ及びパラメータ並びに画像領域の配置例を示す図である。
【図９】図２のコントローラCPU及び画像処理コントローラの動作シーケンスを示す図の前半部である。
【図１０】図２のコントローラCPU及び画像処理コントローラの動作シーケンスを示す図の後半部である。
【図１１】従来の画像処理装置の機能ブロック図である。
【符号の説明】
【００９０】
2150・・・画像処理コントローラ、2152・・・レジスタ制御部、2153・・・データリードDMAC、2154・・・パラメータDMAC、2155〜2158・・・第１〜第４のデータライトDMAC、2300・・・コントローラCPU、2400・・・メインメモリ。
【図１】
0004895394.tif 000002
【図２】
0004895394.tif 000003
【図３】
0004895394.tif 000004
【図４】
0004895394.tif 000005
【図５】
0004895394.tif 000006
【図６】
0004895394.tif 000007
【図７】
0004895394.tif 000008
【図８】
0004895394.tif 000009
【図９】
0004895394.tif 000010
【図１０】
0004895394.tif 000011
【図１１】
0004895394.tif 000012