(57)【特許請求の範囲】
【請求項１】
画像処理すべき画像データにおける第１の領域のデータを外部記憶から読み出し、外部記憶から取得したコマンドリストに含まれる複数のコマンドを順に解釈し、前記コマンドに従って前記第１の領域のデータを画像処理手段に送信する入力手段と、
前記第１の領域のデータに前記画像処理を施したデータを前記画像処理手段から受信し、該受信したデータを前記コマンドに従って前記外部記憶に書き込む出力手段と、を備え、
前記第１の領域のデータに続く第２の領域のデータの前記外部記憶からの読出しが可能になったことを示す制御信号に基づいて、前記入力手段は、解釈したコマンドが一時停止を示すコマンドであった場合、後続のコマンドの外部記憶からの読出し及び送信と、前記第２の領域データの送信とを一時停止し、
前記第１の領域のデータに続く第２の領域のデータの前記外部記憶からの読出しが可能になったことを示す制御信号に基づいて、前記出力手段は、前記一時停止を示すコマンドを受信した場合、前記外部記憶への前記第２の領域データの書き込みを一時停止し、
前記入力手段のコマンドの送信の一時停止と、前記出力手段の前記一時停止を示すコマンドの受信により、前記画像処理手段のバリア同期を実現することを特徴とするデータ処理装置。
【請求項２】
前記一時停止を示すコマンドが外部同期を指示するとき、前記入力手段は、外部からのレジスタ設定に従い、前記後続のコマンドの送信の一時停止を解除することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記一時停止を示すコマンドがＪｕｍｐを指示するとき、前記入力手段は、外部から設定されたＪｕｍｐ回数に従い、前記後続のコマンドの送信の一時停止を解除することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記一時停止を示すコマンドがＪｕｍｐを指示するとき、前記入力手段は、外部から設定されたＪｕｍｐ回数に従い、Ｊｕｍｐ動作の実行の有無を判別することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項５】
前記Ｊｕｍｐ動作の実行の有無により、前記一時停止を示すコマンドの後続のコマンドの処理の実行の有無を判別することを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記入力手段は、複数バンクの一時記憶手段を備え、前記コマンドリストの取得と送信を並列に行い、前記出力手段は、前記複数バンクの一時記憶手段を備え、前記データの受信と書き出しを並列に行うことを特徴とする請求項１乃至５何れか１項に記載のデータ処理装置。
【請求項７】
前記一時停止を示すコマンドと直前のコマンドとの間に、前記一時記憶手段の大きさに応じて別のコマンドを挿入して、前記直前のコマンドをメモリに書き出すことを特徴とする請求項６記載のデータ処理装置。
【請求項８】
前記入力手段にはＤＭＡＣが含まれることを特徴とする請求項１乃至７何れか１項に記載のデータ処理装置。
【請求項９】
前記出力手段にはＤＭＡＣが含まれることを特徴とする請求項１乃至８何れか１項に記載のデータ処理装置。
【請求項１０】
前記画像データは、スキャナが読み取った画像データであることを特徴とする請求項１乃至９何れか１項に記載のデータ処理装置。
【請求項１１】
前記入力手段は、前記外部記憶から所定の単位のデータ量で前記コマンドリストを取得することを特徴とする請求項１乃至１０何れか１項に記載のデータ処理装置。
【請求項１２】
前記一時停止を示すコマンドと前記制御信号とに基づいて、前記画像処理手段へのクロック供給を抑制することを特徴とする請求項１乃至１１何れか１項に記載のデータ処理装置。
【請求項１３】
前記一時停止を示すコマンドと前記制御信号とに基づいて、複数の周波数から選択した周波数のクロックを前記画像処理手段へ供給することを特徴とする請求項１乃至１１何れか１項に記載のデータ処理装置。
【請求項１４】
前記制御信号に基づいて、前記画像処理手段へのクロック供給の抑制を解除することを特徴とする請求項１２記載のデータ処理装置。
【請求項１５】
前記制御信号に基づいて、指定された復帰サイクルの経過後、前記画像処理手段へのクロック供給の抑制を解除することを特徴とする請求項１２記載のデータ処理装置。
【請求項１６】
コンピュータを請求項１から１５のいずれか１項に記載のデータ処理装置が備える各手段として機能させるための画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理の前後における画像データを転送するためのデータ処理装置、データ処理方法、及びプログラムに関する。
【背景技術】
【０００２】
一般に画像形成処理によって形成された画像データを出力する際には、空間フィルタ処理などの局所（近傍）画像処理が行われている。局所画像処理では、処理対象となる画素（以下、処理画素と称する）を含む空間フィルタ領域に対して、その領域のすべてまたは大半の画素を用いて所定の演算を行なう。
【０００３】
特許文献１に、このような局所画像処理を並列分散処理として行う技術が記載されている。この技術によれば、画像を副走査方向に対して領域分割（１次元分割）して、分割後の領域について逐次、もしくは並列分散による画像処理を行う。このように、画像を１次元分割した領域ごとに処理を行う方法を、バンド処理と呼ぶ。
【０００４】
一般にバンド処理においては、各バンド領域間で隙間なく局所画像処理を行うために、各バンド領域が、夫々隣接する領域との境界で一部分が互いに重なり合うように工夫している。上記特許文献１では、バンド領域に対して局所画像処理を行う際に、バンド領域の高さ方向に１画素ずつ画素を走査することによって、局所画像処理に必要な画素を保持する遅延メモリの容量を、バンド領域の高さサイズにより規定する。これにより特許文献１では、遅延メモリの省メモリ化を実現している。
【０００５】
他にも画像を二次元的に領域分割して処理を行うタイル処理等があり、画像を部分画像に分割して、逐次的、もしくは分散並列的に処理する方法を、以後、領域分割手法と総称する。
【０００６】
このように、画像を部分画像に分割して逐次処理もしくは並列分散処理を行う領域分割処理には、並列分散化による高速化や遅延メモリの省メモリ化など、様々な利点がある。
【０００７】
上記の局所画像処理の一つとして、入力した画像を拡大もしくは縮小して所望の大きさの画像に変換する解像度変換処理がある。解像度変換処理によれば、入力画素数と処理後の出力画素数とが大きく異なるため、入力時と出力時で画素数が変化しない他の局所画像処理に比べてハードウェア化が難しくなる。上記のように領域分割処理を利用すると様々な利点があるが、解像度変換のような画像処理を領域分割処理で実現すると、そのハードウェア化はさらに難しくなってしまう。
【０００８】
例えば、紙面等の画像データを領域（例えばバンド）に分割し、分割後の画像領域の各々に対して解像度変換（任意変倍）を行うとする。この解像度変換の倍率（変倍率）が整数であれば、変換後の画像領域も整数倍となるため、１画素分に満たない少数点以下の大きさの画素、すなわち解像度変換による位相ずれを考慮する必要はない。一方、倍率（変倍率）が整数でない場合には、入力する画像領域の大きさによっては、解像度変換後の画像領域において小数点以下の大きさの画素を生成することになる場合がある。しかしながら、処理後の画像領域データを外部記憶装置（グローバルバッファ）に書き込む際には、１画素に満たない画素を書き込むことはできない。そこで当然ながら、１画素に満たない画素については、これを１画素として書き込む、或いは無視して書き込まない、等の方法によって、画素数が整数となるように「丸める」必要がある。
【０００９】
このように、画像処理によって生成された１画素に満たないサイズの画素を丸める場合には、画像データの転送に用いられるＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能の設定値が分割領域毎に変化してしまう。そのため、同じ設定値を使用し続けることができない。例えば、ＤＭＡ機能を用いて画像データを転送する際に必要となる「先頭アドレス」や「繰り返し回数」等の設定値を、分割領域毎に、一連の画像処理内容を考慮して算出しなければならない。従来はこのような場合、分割領域毎の一連の画像処理内容に応じたＤＭＡ機能の設定値を、まずＣＰＵ上で動作するファームウェアで算出する。そして、ＣＰＵが分割領域毎に算出した設定値を逐次設定して、画像処理部を逐次動作させていた。
【００１０】
例えば、同時両面スキャンのように、紙面の表と裏の画像処理を、１つの画像処理装置で時分割多重した処理で実現する場合には、表と裏の画像データを領域（例えばバンド）に分割して、交互に処理することが必要になる。このような用途では、前述のＤＭＡ機能の設定値は、表の領域の設定値と裏の領域の設定値を交互に算出しなければならない。
【００１１】
一般に画像処理装置は、全体制御を行うＣＰＵ、処理対象の画像を記憶する外部記憶装置、画像を処理単位ずつ転送するＤＭＡＣ、画像処理を実行する画像処理部、等の多くのユニットから構成からなる。そして、これらユニットが同時におよび／または連携して動作することで、所望の速度による所望の画像処理が実現される。画像処理装置において画像処理対象の画像データを入力する際には、処理対象の一部の画像データを外部記憶装置から逐次読み込み、一時的に画像処理部内の入力ローカルバッファへ蓄えて画像処理を実行する。また、処理済みの画像データを出力する際には、画像処理後の一部の画像データを一時的に画像処理部内の出力ローカルバッファへ蓄えて、外部記憶装置へ逐次書き込む。このように画像処理装置は、入力／出力ローカルバッファを介して外部記憶装置との間で画像データを転送しあうことで、装置内における各ユニットの同時動作とユニット間の連係動作を実現している。
【００１２】
そして、ＣＰＵは他の装置と連携（同期）しながら部分画像単位でＤＭＡＣを制御し、部分画像を画像処理部に入力する必要がある。例えば、スキャナ装置において、Ａ４サイズ６００ｄｐｉの紙面（縦６６００画素）を、バンド領域の高さ１６画素で画像分割するなら、バンド領域の数は４１２個となる。つまり、ＣＰＵは１ページにつき４１２回のＤＭＡＣの制御が必要となる。また画像処理部からの出力について同様の制御が必要であり、ＣＰＵの制御回数は８２４回に及ぶ。
【００１３】
そして、分割回数が多いほど、ＣＰＵの制御負荷は重くなり、他の装置と連携（同期）のための通信の遅延や、割り込みの遅延といったオーバーヘッドが大きくなる。その結果、画像処理装置の高速化（リアルタイム性）の実現は難しくなる。
【００１４】
このような課題に対処するには、従来ＣＰＵが行っていた他の装置と連携（同期）のためのオーバーヘッドと、ＤＭＡＣの制御に対する処理負荷の軽減が必要となる。例えば、特許文献２では、画像処理部がコマンドリストを外部メモリから読み出し、ＣＰＵの介在なしに、コマンドリストを用いて自律的なＤＭＡＣの制御を実現している。一方、特許文献３では、他の装置と連携（同期）しながら画像処理部を起動するための命令リストを導入してＤＭＡＣを起動して連携（同期）のためのオーバーヘッドの削減を実現している。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００６−１３９６０６号公報
【特許文献２】特開２０１０−２８２４２９号公報
【特許文献３】特開２０１１−１０１０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
前述の特許文献３も同様であるが、一般的な画像処理装置においてＤＭＡＣと画像処理部とは分離されている。そして画像処理部（画像入出力部、画像処理実行部）と外部（ＣＰＵ、スキャナや映像の入力装置）との同期は、ＤＭＡＣを介してＤＭＡ転送の完了を起点として実現している。
【００１７】
そのため、外部（ＣＰＵ、スキャナや映像の入力装置）との制御点（同期点）毎に、ＤＭＡＣを起動する必要がある。当然ながら、制御点（同期点）はＤＭＡＣの転送量（転送単位）に位置することになる。
【００１８】
一方、画像処理部（画像入出力部、画像処理実行部）は、画像処理のデータフローに応じて動作している。このとき、画像処理のデータフローに応じた画像処理実行部のタスク切り替えやバリア同期等の制御点（同期点）と前記ＤＭＡＣの転送完了の制御点（同期点）が常に同一とは限らない。そこで外部（ＣＰＵ，ＳＣＡＮＮＥＲ）と画像処理部（画像入出力部、画像処理実行部）の同期を適切に行うために、ＤＭＡＣの転送量を小さく区切る。そしてＤＭＡ転送完了の制御点（同期点）を画像処理のタスク切り替えやバリア同期の制御点（同期点）に合わせやすくする必要がある。しかしながらＤＭＡ転送単位を小さくする必要があり、ＤＭＡ転送の効率は低下してしまう。また外部（ＣＰＵ）は、ＤＭＡＣの転送完了の制御点（同期点）毎にＤＭＡＣを制御することになる。その結果、外部（ＣＰＵ）は上記の制御点（同期点）の数が増えて、外部（ＣＰＵ）の制御負荷は増大するなどの課題が生じる。
【００１９】
本発明は、このような事情に鑑みてなされたもので、高度な画像処理を実現する、複雑なデータフローを実行するため柔軟に制御点（同期点）を設定できるような制御／同期方法を実現する画像処理装置を提供することを目的としている。また、画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明に係るデータ処理装置は以下の構成を備える。即ち、画像処理すべき画像データにおける第１の領域のデータを外部記憶から読み出し、外部記憶から取得したコマンドリストに含まれる複数のコマンドを順に解釈し、前記コマンドに従って前記第１の領域のデータを画像処理手段に送信する入力手段と、前記第１の領域のデータに前記画像処理を施したデータを前記画像処理手段から受信し、該受信したデータを前記コマンドに従って前記外部記憶に書き込む出力手段と、を備え、前記第１の領域のデータに続く第２の領域のデータの前記外部記憶からの読出しが可能になったことを示す制御信号に基づいて、前記入力手段は、解釈したコマンドが一時停止を示すコマンドであった場合、後続のコマンドの外部記憶からの読出し及び送信と、前記第２の領域データの送信とを一時停止し、前記第１の領域のデータに続く第２の領域のデータの前記外部記憶からの読出しが可能になったことを示す制御信号に基づいて、前記出力手段は、前記一時停止を示すコマンドを受信した場合、前記外部記憶への前記第２の領域データの書き込みを一時停止し、前記入力手段のコマンドの送信の一時停止と、前記出力手段の前記一時停止を示すコマンドの受信により、前記画像処理手段のバリア同期を実現する。
【発明の効果】
【００２１】
本発明によれば、高度な画像処理のために複雑なデータフローに対し柔軟に制御を行うことができる。
【図面の簡単な説明】
【００２２】
【図１】（Ａ）画像処理装置の全体構成と画像処理部の構成例を示すブロック図。（Ｂ）画像処理装置の全体構成と画像処理部の第１の構成例を示すブロック図。（Ｃ）画像処理装置の全体構成と画像処理部の第２の構成例を示すブロック図。（Ｄ）画像処理装置の全体構成と画像処理部の第３の構成例を示すブロック図。
【図２】（Ａ）第１の構成例の画像データの入出力に係る動作例を示す図。（Ｂ）第２の構成例の画像データの入出力に係る動作例を示す図。
【図３】バンド処理の動作の例を説明する図。
【図４】（Ａ）画像データの格納方法とデータ構造の例を説明する図。（Ｂ）画像データの格納方法とデータ構造の例を説明する図。
【図５】（Ａ）コマンドリスト（ディスプレイリスト）のＲＡＭへの格納例を説明する図。（Ｂ）コマンドのデータ構成例を説明する図。
【図６】（Ａ）待機コマンドの同期動作を説明する図。（Ｂ）Ｊｕｍｐコマンドの同期動作を説明する図。
【図７】（Ａ）データ処理装置のシーケンスの一例を説明する図。（Ｂ）データ処理装置のクロック制御シーケンスの一例を説明する図。
【図８】（Ａ）コマンドリスト（ディスプレイリスト）および画像データの一例を説明する図。（Ｂ）画像処理実行部に入力されるコマンドの一例を説明する図。（Ｃ）画像出力部から取り出されるデータの一例を説明する図。
【図９】（Ａ）リードコマンドと待機コマンドの課題を説明する図。（Ｂ）リードコマンドと待機コマンドの同期動作を説明する図。
【図１０】ラインポインタ管理を説明する図。
【図１１】データ取得コマンドのデコード時のＤＭＡ動作の一例を示すフローチャート。
【図１２】コマンドとＤＭＡ動作の対応関係を説明するシーケンス図。
【図１３】（Ａ）データ処理装置の動的クロック停止と切り替えの一例を説明する図。（Ｂ）データ処理装置の動的クロック切り替えの一例を説明する図。
【発明を実施するための形態】
【００２３】
実施形態における課題を更に詳細に述べる。
【００２４】
特に同時両面スキャンのような用途では、スキャナ・センサーの紙面に対する取り付け位置が、紙面の表と裏で異なり、画像処理の読み取り開始位置が表と裏で異なる。また紙面の表と裏で画像の読み取り範囲の指定が異なっても同じことが起きる。また紙面の表と裏で画像処理を施すときの画像形式（点順次形式、面順次形式、色数）が異なる場合には、当然ながら紙面の表と裏に対して、各々適切な設定値で画像処理を実行しなければならない。これらの目的に対して１つの画像処理装置で時分割多重した表と裏の画像処理を実現するには、表と裏の分割領域毎に画像処理を交互に切り替えることが必要になる。一方で、前述のように、任意変倍の画像データの転送に用いられるＤＭＡ機能の設定値が分割領域毎に変化してしまい、同じ設定値を使用し続けることができない。そのため、２つの課題を同時に解決することは、さらに難しいと言える。
【００２５】
また、画像処理部は、１つのバンド領域を画像処理するたびに外部装置（ＣＰＵ、スキャナ装置、プリント装置など）と同期しながら、一連のバンド毎の画像処理を動作させる。
【００２６】
このとき画像処理部は、外部装置からの外部同期信号が入力されて、次のバンド領域に対する画像処理を開始するまで待機状態である。しかしながら、この待機状態のときも、画像処理実行部にはクロックが入力されており、画像処理実行部は無駄な電力を消費してしまう。そして外部装置が例えばスキャナ等のハードウェア・デバイスの場合、これらのバンド間の待機時間は、ファームウェアが介在できないほど短い。そのため、ファームウェアが介在してクロック停止した場合、制御オーバーヘッドが発生し、画像処理（全体）の処理時間は遅くなる。一方、Ａ４サイズ１ページで４１２回のバンド領域を処理し、ＡＤＦスキャナ５０ページを連続動作させた場合、２００００回を超える待機状態が発生するため、このときの無駄な消費電力は総量では大きくなってしまう。
【００２７】
そして、画像処理のあるバンド領域と次のバンド領域のファームウェアが介在できないほどの短い待機状態のクロック制御については前述の先行技術では何ら開示していない。
【００２８】
上述したように、分割領域毎のＤＭＡ機能の設定値をファームウェアで算出する場合、分割領域毎にＣＰＵの処理が必要となるため、画像処理部において複数の分割領域を連続して処理し続けることはできない。
【００２９】
また、ローカルバッファを介してグローバルバッファとのデータ転送を制御して複数ユニットの動作を制御する場合、解像度変換処理のように入／出力の画像の画素数が分割領域毎に変化すると、データ転送が一様に規定できない。従って、分割領域毎にファームウェアで例えば出力の画素数を求め、ファームウェアでバンド毎にＤＭＡＣの設定を変更して、画像処理部を起動していた。さらに、１バンド分の画像処理が完了すると、画像処理部は割り込み等を用いてＣＰＵに処理完了を通知して、ＣＰＵと同期する必要があった。ＣＰＵはこの割り込みを受信して割り込み要因を調べて次の動作に戻るために、例えば数ｍｓの時間を要する。その結果ＣＰＵは、画像処理部の制御と同期（待ち合わせ）のために、ある程度の処理負荷が常にかかっている状態となり、画像処理の間は解放されない。したがって、装置内の各ユニットの同時動作に遅延を要したり、ユニット間の連係動作が連続的に実行できなかったりするという問題があった。
【００３０】
そこで、画像処理のデータフローに合わせた制御点（同期点）でクロックを動的に制御して画像処理装置の消費電力を抑制することを目的とする実施形態についても説明する。
【００３１】
また、画像処理の前後で画素数が変動する場合でも、データ転送を効率化する画像処理装置を提供することを目的とする。また、画像処理方法を提供することを目的とする。例えば、同時両面スキャンのように、処理すべき分割領域の設定が裏と表で切り替わるような場合にもデータ転送を効率化する実施形態についても説明する。
【００３２】
以下、添付図面を参照して実施の形態を詳細に説明する。
【００３３】
＜第１実施形態＞
●装置構成
図１Ａは、本実施形態に係る画像処理装置（コンピュータ）の全体構成例を示すブロック図である。同図に示すように本実施形態の画像処理装置は、ＣＰＵ回路部１００、画像読み取り部１２０、映像入力部１３０、画像処理部１５０、映像表示部１６０、画像印刷部１７０、等を備える。以下、これら構成による動作の概要について説明する。
【００３４】
画像読み取り部１２０は、レンズ１２４、ＣＣＤセンサ１２６、及びアナログ信号処理部１２７等を有する。すなわち、レンズ１２４を介してＣＣＤセンサ１２６に原稿１１０の画像情報が結像され、ＣＣＤセンサ１２６によりその画像情報がＲ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部１２７に入力され、Ｒ、Ｇ、Ｂの色毎に補正等が行われた後にアナログ／デジタル変換（Ａ／Ｄ変換）されることで、デジタル化されたフルカラーのデジタル画像信号（画素値）が生成される。生成されたデジタル画像信号は映像入力部１３０へ入力され、その後、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１９２へ入力される。
【００３５】
ＤＭＡＣ１９２は、ＣＰＵ１０２によって予め動作が設定されており、入力されたデジタル画像信号を、共有バス１９０を介してＣＰＵ回路部１００のＲＡＭ１０６や外部記憶装置１０８に記憶させる。なお、複数の画素についてのデジタル画像信号を１枚の画像を形成するように集合させたデータを、以下では画像データと呼ぶ。本実施形態では、デジタル画像信号は画像データの形式でＲＡＭ１０６等に記憶されるものとする。画像処理を行う場合、ＣＰＵ１０２もしくは後述の画像入出力部１５２は、ＤＭＡＣ１９４を起動してＲＡＭ１０６等に記憶された画像データを読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部１５０に入力させる。
【００３６】
画像処理部１５０は例えば、入力されたデジタル画像信号に対して、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正や、入力ガンマ補正などの色補正等を行って画像データを作成する画像データ処理装置である。そしてＤＭＡＣ１９６が、これらの画像処理が施された画像データをＲＡＭ１０６や外部記憶装置１０８に格納する。なお、ＤＭＡＣ１９６は以下のように制御される。例えばＣＰＵ１０２もしくは後述の画像入出力部１５２が予めＤＭＡＣ１９６の動作を設定し、また、ＣＰＵ１０２がＤＭＡＣ１９６を起動する。なおＤＭＡＣ１９６の動作としては、例えば処理後の画像データをＲＡＭ１０６へ書き込むように設定しておく。このように画像処理部１５０は、入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理等、画像を印刷するための画像処理を施す。そして、印刷可能な画像データを作成した後、その画像データをＤＭＡＣ１９６によりＲＡＭ１０６等に格納させる。
【００３７】
ＤＭＡＣ１９８は、ＲＡＭ１０６に格納された画像処理済みの画像データを読み出して、画像印刷部１７０へ出力する。画像印刷部１７０は例えばプリンタである。ＤＭＡＣ１９８の設定は例えばＣＰＵ１０２が行う。画像印刷部１７０は、インクジェットヘッドやサーマルヘッド等を使用した印刷出力部（不図示）を備え、入力された画像データのデジタル画像信号に基づいて記録紙上に画像を記録する。
【００３８】
なお、ここでは画像読み取り部１２０で読み取った原稿１１０の画像データを、画像印刷部１７０にて印刷出力する例を示したが、本発明はこの例に限らない。例えば、映像入力部１３０や映像表示部１６０等を用いることにより、入力された映像に対し所望の画像（映像）処理を施し、処理後の映像をディスプレイなどの映像表示装置（不図示）に表示してもよい。
【００３９】
ＣＰＵ回路部１００は、演算制御用のＣＰＵ１０２、固定データやプログラムを格納するＲＯＭ１０４、データの一時保存やプログラムのロードに使用されるＲＡＭ１０６、及び外部記憶装置１０８等を備える。ＣＰＵ回路部１００は、画像読み取り部１２０、画像処理部１５０、及び画像印刷部１７０等を制御し、本実施形態の画像処理装置のシーケンスを統括的に制御する。外部記憶装置１０８は、本実施形態の画像処理装置が使用するパラメータやプログラム、補正データを記憶するディスク等の記憶媒体である。またＲＡＭ１０６のデータやプログラム等は、外部記憶装置１０８からロードされる構成としてもよい。また本実施形態では、ＤＭＡＣ１９４，１９６を介して画像処理部１５０とのデータ転送を行うが、この転送データの格納先はＲＡＭ１０６に限らず外部記憶装置１０８であってもよい。そしてＲＡＭ１０６や外部記憶装置１０８に確保した転送データの格納先などを、以下ではグローバルバッファと総称する。
【００４０】
次に、画像データに画像処理を施す画像処理部１５０の詳細構成およびその動作について、図１Ｂを用いて説明する。なお図１Ｂでは理解を容易とするために、グローバルバッファからの画像データの読み出しを行うＤＭＡＣ１９４と、同じく書き込みを行うＤＭＡＣ１９６が、画像処理部１５０の画像入力部１５２１、画像出力部１５２３のそれぞれに含まれるように示している。
【００４１】
まずＣＰＵ１０２もしくは画像入力部１５２１がＤＭＡＣ１９４を起動し、ＤＭＡＣ１９４はグローバルバッファから画像データを読み出す。この画像データの構造については後述する。読み出された画像データは、入力ポート１５１を介して、画像処理部１５０の画像入出力部１５２へ入力される。画像入出力部１５２において画像入力部１５２１は、入力された画像データを取得すると、中間バッファ制御部１５２２に含まれる一時記憶部（中間バッファ２３２）に、該取得した画像データを記憶させる。そして画像入力部１５２１は、中間バッファに一時的に記憶された画像データを読み出しながら画素値を生成し、入力画素値１５５として画像処理実行部１５３へ入力する。なお、中間バッファ制御部１５２２に含まれる一時記憶部（中間バッファ２３２）は、前述のグローバルバッファに対比してローカルバッファと総称してもよい。
【００４２】
画像処理実行部１５３は、入力画素値１５５に対して所定の画像処理を実行し、その結果として得られた出力画素値１５６を画像入出力部１５２へ出力する。なお、画像処理実行部１５３における処理の詳細については後述する。入力画素値１５５および出力画素値１５６は１つ以上の画素値であって、複数の画素値が入力画素値１５５として入力され、それに対して１つの画素値が出力画素値１５６として出力されてもよい。
【００４３】
画像入出力部１５２において画像出力部１５２３は、処理後の出力画素値１５６から出力画像データを生成して、中間バッファ制御部１５２２内の記憶部（中間バッファ２３２）に記憶する。画像出力部１５２３は、中間バッファ２３２に一時的に記憶された処理後の画像データを読み出し、出力画像データとして出力ポート１５４を介してＤＭＡＣ１９６から送出する。ＤＭＡＣ１９６は上述したようにＣＰＵ１０２によって既に起動されており、受け取った出力画像データをＲＡＭ１０６へ書き込む。
【００４４】
このように画像処理部１５０は、画像入出力部１５２がＤＭＡＣ１９４を介して画像データを取得し、画像処理実行部１５３で該画像データに対するデータ処理を実行する。そして、データ処理後の画像データを、画像入出力部１５２がＤＭＡＣ１９６を介して出力する。すなわち画像処理部１５０は、画像処理装置内に含まれる画像データにデータ処理を施し、処理後の画像データを画像処理装置へ戻す役割を担う。また画像入出力部１５２は、データの入出力の調節を行うデータ入出力制御装置としての役割を有する。また、前述の中間バッファは、画像入力部１５２１と画像出力部１５２３から共通された記憶領域（ローカルバッファ）であり、共有メモリ（第１共有メモリ手段）で構成されている。
【００４５】
次に、画像処理部１５０の画像処理実行部１５３について、詳細に説明する。画像処理実行部１５３は、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７のＰ個の画像処理回路と、インターコネクト１５３０とで構成される。Ｐ個の画像処理回路とインターコネクト１５３０とは、入力ポート１５３２，１５３５，…，１５３８、および出力ポート１５３３，１５３６，…，１５３９等のポートを介して互いに接続される。各画像処理回路は、それぞれが１つの画像処理を行う。画像処理とは例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換、クロマ・アップサンプリング等のいずれかである。各画像処理回路は、パイプライン回路等のハードウェアで実現されてもよいし、プロセッサとプログラム（ソフトウェア）等で実現されてもよい。そして、対応する入力ポートから入力画素値１５５を受け取り、処理を施した後に、対応する出力ポートから処理後の出力画素値１５６を出力する。
【００４６】
インターコネクト１５３０は、クロスバーやリングバス等の接続手段で実現されており、入力ポートと出力ポートの接続先を任意に切り替えることができる。したがって、ＣＰＵ１０２がこれらポートの接続先の指定を設定することで、インターコネクト１５３０は、例えばＰ個の画像処理回路の実行順序を変更し、または一部の処理をバイパスすることができる。このように画像処理実行部１５３は、アプリケーションに応じて、各種の処理を取捨選択して組み合せ、所望の画像処理を実現する。また、ＣＰＵ１０２は、インターコネクト１５３０を介して、前述の中間バッファ（ローカルバッファ、第１の共有メモリ）のデータを複数の画像処理回路の何れかに入力したり、複数の画像処理回路の何れかの処理結果のデータを中間バッファに出力したりできる。そのため、中間バッファ（ローカルバッファ、第１共有メモリ手段）は、インターコネクト１５３０を介して、複数の画像処理回路から共有されていることを意味する。
【００４７】
●バンド処理
以下、本実施形態における画像データの領域分割手法として、画像データを１次元分割したバンド領域ごとに処理を行うバンド処理について説明する。
【００４８】
以下、本実施形態におけるバンド処理について、図３を用いて説明する。バンド処理では、図３（ａ）に示されるように、１枚の画像データ３００を帯状のバンド領域３０１〜３０４に分割し、この領域毎に逐次、画像処理を行う。なおバンド領域は、画像データを主走査方向または副走査方向のいずれかに分割したものであるから、バンド領域と画像データとは、主走査方向または副走査方向のいずれかにおいて長さが一致する。図３（ａ）の例では、画像データは副走査方向に対して分割され、画像データとバンド領域とでは、主走査方向で同一の長さを有し、副走査方向では異なる長さを有する。以下、この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリ、画像データを分割する行為をバンド分割と呼ぶ。バンドメモリは、システム上の適切な記憶領域に確保されれば良いが、ここでは説明を簡潔にするために、バンドメモリをＲＡＭ１０６内の記憶領域（グローバルバッファ）として確保するとする。
【００４９】
また以下では、図３（ｂ）に示すように、画像データの座標系（主走査方向−副走査方向）を、長さ方向と高さ方向という座標系（バンド領域座標系）によって定義し、バンド領域を長さ×高さで表現する。バンド領域の長さ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。図３（ａ）の例では、長さ方向は主走査方向であり、高さ方向は副走査方向である。これに対し、図３（ｄ）に示すように画像データを主走査方向において分割した場合、図３（ｅ）に示すように、長さ方向が副走査方向となり、高さ方向が主走査方向となる。図３（ｄ）のようなバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【００５０】
図３（ａ）に示すバンド処理では、まず第１のバンド領域３０１を、ＲＡＭ１０６上のバンドメモリに展開して画像処理を行う。次に第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。さらにその後、第３のバンド領域３０３を、第２のバンド領域３０２が展開されたＲＡＭ１０６上のバンドメモリに上書き展開し、画像処理を行なう。そして最後に第４のバンド領域３０４を、第３のバンド領域３０３が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して画像処理を行なう。図３（ａ）からも分かるように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくても良い。したがって、バンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図３（ａ）ではバンド領域３０１〜３０３）に応じて決定される。
【００５１】
なお本実施形態のバンド処理では、各バンド領域間で隙間なく空間フィルタ処理等の局所（近傍）画像処理を行なうために、図３（ｆ）〜（ｈ）に示すように、各バンド領域が、隣接する領域との境界で一部分が互いに重なり合うように設定される。
【００５２】
また図３（ｐ）〜（ｒ）のように、例えば画像データを主走査方向において分割した場合、図３（ｓ）に示すように、長さ方向が副走査方向となり高さ方向が主走査方向となる。図３（ｐ）〜（ｒ）のようなバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【００５３】
●画像データ構造
以下、本実施形態における画像データの構造について詳細に説明する。本実施形態では上述したように、画像データはＲＡＭ１０６内の記憶領域（グローバルバッファ）に一時的に格納される。一般的にメインメモリであるＲＡＭ１０６は安価なＤＲＡＭで構成されることが多い。したがって、本実施形態のようにＤＭＡＣを介して画像データを読み書きする場合、ＤＲＡＭが性能を落とさずに読み書きできる単位で画像データを取り扱うことが望ましい。
【００５４】
図４Ａに、ＤＲＡＭで構成されるＲＡＭ１０６における画像データの格納例、および画像データのデータ構造例を示す。同図の例では、ＲＡＭ１０６（ＤＲＡＭ）上にデータ領域（ＩＭＧ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＩＭＧ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでの領域）が確保され、ここに画像処理に必要な種々の画像データが格納される。図４Ａは、点順次形式の画像データの格納例として、ＲＡＭ１０６のデータ領域に、Ｓ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の２種の画像データが格納された例を示している。この例では、ＤＲＡＭの性能を落とさずに画像データの読み書きができるように、格納される画像データの容量の最小単位を、４０８に示すように３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとしている。すなわち、画像データＳ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の格納容量は３２Ｂｙｔｅの整数倍となる。
【００５５】
次に、画像データの構造について詳細に説明する。画像データ４４０（Ｓ５＿ＩＭＧ４２５等）は、点順次形式でＲ（Ｒｅｄ），Ｇ（Ｇｒｅｅｎ），Ｂ（Ｂｌｕｅ）の色成分ごとの画素値を有する。画像データ４４０は３２Ｂｙｔｅ単位の領域データからなり、各領域（例えば領域４４２）は、４４４で示すように、複数個（この例では８個）の画素値がパッキングされている。したがって画像データ４４０は、８Ｍ×Ｎ画素のサイズからなる。そして、４４４に含まれる８つの画素値のそれぞれには、４４６で示すようにそれぞれ１０ｂｉｔのＲ，Ｇ，Ｂの値がパッキングされている。なお、４４６における残りの２ｂｉｔは、ＤＲＡＭへのアクセスを簡単にするために、データを格納しない無効データとする。なお、図４Ａでは画像データの最小単位を、データ領域４４２のように縦１画素、横８画素からなる３２Ｂｙｔｅとして定めた例を示したが、もちろん最小単位はこの例に限らず、例えば縦２画素、横４画素を最小単位としても良い。
【００５６】
●コマンドリスト、コマンドのデータ構造
以下、図５Ａと図５Ｂを用いて本実施形態におけるコマンドリスト、コマンドのデータ構造について詳細に説明する。本実施形態では上述したように、コマンドリスト（ディスプレイリスト）、コマンドはＲＡＭ１０６内の記憶領域（グローバルバッファ）に一時的に格納される。
【００５７】
図５ＡのＤＰＬ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＤＰＬ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでが画像処理に必要な種々の描画コマンドを格納する領域である。図示の例では、この領域にＤＰＬ（１）からＤＰＬ（２）まで３種のコマンドリスト（ディスプレイリスト）が格納されている状態が示されている。ＤＲＡＭの性能を落とさずにデータをアクセスできるように、各々格納されるデータの容量の最小単位は、４０６に示すように３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとなっている。当然ながら、ＤＰＬ（１）からＤＰＬ（３）までのコマンドリスト（ディスプレイリスト）の格納容量は、３２Ｂｙｔｅの整数倍となる。ＣＰＵ１０２は、選択されたアプリケーションやユーザ操作などによって使用するコマンドリスト（ディスプレイリスト）をＤＰＬ（１）からＤＰＬ（３）の中から選択して、異なる画像処理を実行する。
【００５８】
さらに図５Ｂを用いてメインメモリとしてのＲＡＭ１０６へ格納されているコマンドリスト（ディスプレイリスト）に含まれるコマンドのデータ構成例について詳しく説明する。本実施例では、コマンドリスト（ディスプレイリスト）を構成するコマンドは、６４ｂｉｔ長のコマンドとなっており、３２Ｂｙｔｅ単位のデータ５２０に４つのコマンドが格納される。
【００５９】
またコマンドリスト（ディスプレイリスト）を構成するコマンドには、レジスタ制御コマンド５４０、データ取得コマンド５４２、終了コマンド５４６の待機コマンド５４８、Ｊｕｍｐコマンド５５０の５種が少なくとも存在する。なお、データ処理コマンド５４４は画像入力部１５２１により生成され、画像処理実行部１５３へ送出されるコマンド（詳細は後述する）である。各コマンドは上位８ｂｉｔのオペコード（ｏｐｃｏｄｅ）により識別され、下位５６ｂｉｔは各コマンドにより用途が異なる。これらのコマンドは図１Ａに記載の画像処理部１５０で機能する。以下、画像処理部１５０の構成例である図１Ｂを用いて各コマンドの動作について説明する。
【００６０】
まずコマンドリスト（ディスプレイリスト）を構成する各コマンドは、画像処理部１５０の各種画像処理回路（画像入力部１５２１、画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７、画像出力部１５２３）で機能する。画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７は、インターコネクト１５３０により接続されている。各コマンドは、インターコネクト１５３０に対して設定された接続順に沿って各画像処理回路を順番に通過する。例えば、画像入力部１５２１、画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７、画像出力部１５２３の順に各コマンドが通過する。各コマンドは各画像処理回路により、内部情報を書き換えられることはあるが、コマンド自体が途中で削除されることはない。
【００６１】
レジスタ制御コマンド５４０は、画像処理部１５０の各種画像処理回路のレジスタに対して値を読み書きするためのコマンドであり、１ｂｉｔ情報“ｒｗ”が“０”のときはレジスタリードコマンド、“ｒｗ”が“１”のときはレジスタライトコマンドとなる。７ｂｉｔの回路識別情報“ｉｐ＿ｉｄ”は、上記の各種画像処理回路を区別、特定する情報である。例えば画像入力部１５２１は“０”、画像処理回路（１）１５３１は“１”、画像処理回路（２）１５３４は“２”、画像処理回路（Ｐ）１５３７は“Ｐ”、画像出力部１５２３は“Ｐ＋１（＝３０）”であるとする。また１６ｂｉｔ情報“ａｄｄｒｅｓｓ”は、上記の各種画像処理回路ごとの所有するレジスタの番地を示す情報である。例えば、“ｒｗ＝１、ｉｐ＿ｉｄ＝１、ａｄｄｒｅｓｓ＝０ｘ０、ｄａｔａ＝０ｘＦ”であるレジスタ制御コマンドについて説明する。このレジスタ制御コマンドはライト動作をするため、便宜上、レジスタライトコマンドと呼ぶことにする。このレジスタライトコマンドは、画像入力部１５２１では、回路識別情報“ｉｐ＿ｉｄ”が異なるので無視され、インターコネクト１５３０を通って画像処理回路（１）１５３１に入力される。画像処理回路（１）１５３１では、回路識別情報“ｉｐ＿ｉｄ”が同一であるので、同コマンドが有効となり、画像処理回路（１）１５３１の“ａｄｄｒｅｓｓ＝０ｘ０”番地のレジスタに、“ｄａｔａ＝０ｘＦ”が書き込まれる。画像処理回路（１）１５３１は同コマンドを削除せず、そのままインターコネクト１５３０を介して次の画像処理回路（２）１５３４へ入力される。画像処理回路（２）１５３４以降の回路では回路識別情報“ｉｐ＿ｉｄ”が異なるため、同コマンドは無視され、最後に画像出力部１５２３で無視された後、同コマンドは画像出力部１５２３により削除される。次に“ｒｗ＝０、ｉｐ＿ｉｄ＝２、ａｄｄｒｅｓｓ＝０ｘ４、ｄａｔａ＝０ｘ０”であるレジスタ制御コマンドについて説明する。このレジスタ制御コマンドはリード動作をするため、便宜上、レジスタリードコマンドと呼ぶことにする。前述のレジスタライトコマンド同様、回路識別情報“ｉｐ＿ｉｄ＝２”である画像処理回路（２）１５３４以外では無視される。このレジスタリードコマンドは回路識別情報“ｉｐ＿ｉｄ”が同一である画像処理回路（２）１５３４で有効となる。そして、“ａｄｄｒｅｓｓ＝０ｘ４”番地のレジスタ値が読み出され、レジスタリードコマンドの“ｄａｔａ”領域がこの読み出された値に置き換わり、インターコネクト１５３０を介して後段の画像処理回路に送られる。画像出力部１５２３では、前述のレジスタライトコマンドと異なり、“ｄａｔａ”だけが抜き取られるか、レジスタリードコマンドそのものが、ＣＰＵ１０２がアクセス可能なメモリ領域に出力（記憶）される。
【００６２】
データ取得コマンド５４２は、画像入力部１５２１と画像出力部１５２３の動作を制御するコマンドである。画像入力部１５２１は、データ取得コマンドを受け取り、前述のレジスタ制御コマンドにて予め設定されたレジスタ値に従い、ＤＭＡＣ（Ｒｅａｄ）１９４を起動してメインメモリからデジタル画像データや補正データを取得する。ここで、ＤＭＡＣに予め設定されたレジスタ値とは、例えば、レジスタ制御コマンドにより設定された読出し開始アドレスと読出し回数である。次に、画像入力部１５２１は、このデータ取得コマンドを画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７、画像出力部１５２３へインターコネクト１５３０を介して送る。このように、データ取得コマンドを下流へ送ることにより、例えば、レジスタ制御と後述のデータ処理を時分割で動作を切り換えるときに、切り替え制御を容易に実現することが可能となる。そして、画像入力部１５２１は、ＤＭＡＣ１９４を用いて取得したデジタル画像データや補正データをデータ処理コマンド５４４の形式に変換する。そして、画像入力部１５２１は、データ処理コマンド５４４を画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７、画像出力部１５２３へ送る。
【００６３】
また画像出力部１５２３は、データ取得コマンドを受け取り、その後に続くデータ処理コマンドのＲＧＢ領域から情報を抜き出し、所定のパッキングを行い、３２Ｂｙｔｅ単位のデータに変換する。そして、画像出力部１５２３は、レジスタ制御コマンドにて予め設定されたレジスタ値にしたがってＤＭＡＣ（Ｗｒｉｔｅ）１９６を起動して３２Ｂｙｔｅ単位の処理後のデジタル画像データをＲＡＭ１０６へ書き出す。
【００６４】
データ処理コマンド５４４は、画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７を用いて画像処理を実行するためのコマンドである。画像処理を実行する前に予め画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７には、前述のレジスタライトコマンドにより所定のレジスタ値が設定されている。データ処理コマンド５４４は、８ｂｉｔのデータ処理識別情報“ｓｔｅｐ”を含む。また、画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７には、処理すべきデータ処理コマンドを識別するためのデータ処理識別情報“ｓｔｅｐ”が設定されている。そして、各画像処理回路は、入力されたデータ処理コマンドのデータ処理識別情報“ｓｔｅｐ”が自身の同一のデータ処理識別情報と同一のデータ処理コマンドのみ画像処理を行い、それ以外のデータ処理コマンドは無視する。各画像処理回路は、データ処理コマンドの各１６ｂｉｔのＲ、Ｇ、Ｂ領域の画像データを抜き出し、所定の画像処理を行い、処理結果をデータ処理コマンドの各１６ｂｉｔのＲ、Ｇ、Ｂ領域に格納して内部バスを介して後段の画像処理回路に送る。各画像処理回路（１）１５３１、画像処理回路（２）１５３４〜画像処理回路（Ｐ）１５３７が一連の画像処理を行うことで、パイプライン的に並列処理を行う。終了コマンド５４６は、ディスプレイリストの終了を示すコマンドであり、画像出力部１５２３は、このコマンドを受け取った後、ＣＰＵ１０２に対して終了割り込みを出力する。
【００６５】
次に、図１Ｂと図８Ａ、図８Ｂ、図８Ｃを用いて画像処理部１５０の動作とコマンドリスト（ディスプレイリスト）の関係についてさらに詳しく説明する。前述の画像読み取り部１２０により読み取られた読み取り画像（デジタル画像データ）と補正データは図４で説明したようにＲＡＭ１０６に格納されている。まずＣＰＵ１０２は、ＲＡＭ１０６に格納されたデジタル画像データを画像処理するために、図８Ａに示すようなコマンドリスト（ディスプレイリスト）を作成する。そして、ＣＰＵ１０２は、作成したコマンドリスト（ディスプレイリスト）を、ＲＡＭ１０６の図５に記載のディスプレイリスト格納領域ＤＰＬ（２）に書き込む。次にＣＰＵ１０２は、図２Ａの画像処理部１５０を制御するための専用バス２２１を介して、コマンドリスト（ディスプレイリスト）の先頭アドレスであるＤＰＬ＿ＳＴＲ＿ＡＤＤＲと連続転送量であるＤＰＬ＿ＤＭＡ＿ＬＥＮＧＴＨとを設定する。さらにＣＰＵ１０２は、専用バス２２１を介してコマンドリスト（ディスプレイリスト）の読み出し動作を起動するレジスタ（Ｋｉｃｋレジスタ）に“０ｘ１”を書き込む。その後、ＣＰＵ１０２は、画像出力部１５２３から画像処理の終了割り込みが入力されるまで解放される。
【００６６】
画像入力部１５２１は、ＤＭＡＣ（Ｒｅａｄ）１９４の設定と起動を行うことにより、ダイレクトメモリアクセスによりコマンドリスト（ディスプレイリスト）を取得する。すなわち、画像入力部１５２１は、ＤＭＡＣ１９４を用いてＲＡＭ１０６のＤＰＬ＿ＳＴＲ＿ＡＤＤＲ番地を先頭アドレスとして連続するＤＰＬ＿ＤＭＡ＿ＬＥＮＧＴＨ（例えが５１２Ｂｙｔｅ）分のコマンドリスト（ディスプレイリスト）を読み出す。画像入力部１５２１は、ＤＭＡＣ１９４からの入力を受けて、読み出したコマンドリスト（ディスプレイリスト）を画像入出力部１５２の中間バッファ制御部１５２２内の中間バッファ２３２に一旦記憶する。画像入力部１５２１はバッファ２３２に記憶されたコマンドリスト（ディスプレイリスト）を先頭から１コマンドずつ取り出して解析する。そして、取り出したコマンドがレジスタ制御コマンドであり回路識別情報“ｉｐ＿ｉｄ”が“０”の場合、画像入力部１５２１は当該レジスタ制御コマンドを処理した後に後段の画像処理回路へ送出する。また、取り出したコマンドがレジスタ制御コマンドであり回路識別情報“ｉｐ＿ｉｄ”が“０”でない場合、画像入力部１５２１は何も処理せずに当該レジスタ制御コマンドを後段の画像処理回路へ送出する。後段の画像処理回路（１）１５３１から画像処理回路（Ｐ）１５３７においても、回路識別情報“ｉｐ＿ｉｄ”によりレジスタ制御コマンドに対応した処理（レジスタライト、レジスタリード）が行われる。そして、画像出力部１５２３も同様のレジスタ設定処理を行った後に、レジスタリードコマンドに記述されている、読み出されたレジスタ値のみをＤＭＡＣ（Ｗｒｉｔｅ）１９６を用いてＲＡＭ１０６へ書き込む。
【００６７】
図８Ａのコマンドリスト（ディスプレイリスト）例の５５０、５５２、５５４はレジスタライトコマンド（ｒｗ＝１）である。すなわち、画像入力部１５２１、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７、画像出力部１５２３の画像処理時のレジスタ値を設定するためのレジスタライトコマンドがコマンドリスト（ディスプレイリスト）冒頭に並ぶ。このレジスタライトコマンドですべての回路の所望のレジスタ設定が完了すると、データ取得コマンド５５６が画像入力部１５２１に取り込まれる。画像入力部１５２１は解析したコマンドがデータ取得コマンドであった場合は、当該コマンドをそのまま後段の画像処理回路（１）１５３１へ送る。また、このとき、画像入力部１５２１は、データ取得コマンド５５６が記憶されていたバッファ２３２のアドレスを内部のテンポラリレジスタに退避して、ディスプレイリスト解析を一旦中断する。そして、先に設定されたレジスタ値にしたがってＤＭＡＣ（Ｒｅａｄ）１９４の設定と起動を行い、ダイレクトメモリアクセスにより画像データを取得する。すなわち、ＤＭＡＣ１９４は、ＲＡＭ１０６の先頭アドレスＳ０＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ番地から後述する所定の連続数で所定の繰り返し回数だけデジタル画像データを読み出す。
【００６８】
画像入力部１５２１は、ＤＭＡＣ（Ｒｅａｄ）１９４からの入力を受けて、読み出したデジタル画像データを画像入出力部１５２の中間バッファ２３２に一時的に記憶する。そして、画像入力部１５２１は、中間バッファ２３２に記憶されたデジタル画像データを、先頭から所定画素数ずつ取り出して、データ処理コマンド５４４のコマンド形式に変換して後段の画像処理回路へ送出する。画像入力部１５２１にコマンドリスト（ディスプレイリスト）が入力されたときの図８Ａと、画像入力部１５２１から出力されたコマンド例である図８Ｂを比べてみると以下のことがわかる。すなわち、図８Ｂではデータ取得コマンド５５６の後にデータ処理コマンド５７２が挿入されており、これらのコマンドはメモリから読み出されたデジタル画像データ５５８がコマンドに変換されたものである。なお、図８Ｂにおいて、ｓｔｅｐ＝０，１，２はそれぞれ画像データや参照（補正）データ等のデータの種類を区別するための情報である。また、データ処理コマンド５７２のｓｔｅｐ＝Ｍは、実施したい画像処理には関係ない別種のデータコマンドを表しており、Ｍとして０，１，２以外の数値が用いられる。
【００６９】
後段の画像処理回路（１）１５３１から画像処理回路（Ｐ）１５３７は、先に設定されたレジスタ値に従い画像処理を行い、Ｒ，Ｇ，Ｂデータを変更して画像出力部１５２３へ送出する。画像出力部１５２３は、Ｒ，Ｇ，Ｂデータをデータ処理コマンドから抜き出し、所定の形式でパッキングする。そして、パッキングを完了したら、画像出力部１５２３は、先に設定されたレジスタ値に従いＤＭＡＣ（Ｗｒｉｔｅ）１９６にレジスタ設定と起動を行う。この結果、ＤＭＡＣ１９６により、画像処理後のデジタル画像データ５９８（図８Ｃ）がＲＡＭ１０６に書き込まれる。
【００７０】
以上のように、コマンドリスト（ディスプレイリスト）のデータ取得コマンドをトリガとして、ＣＰＵ１０２の介在なしに、画像入力部１５２１によって必要な種々のデータがＲＡＭ１０６から取得される。そして、画像処理回路によって処理され、画像出力部１５２３により処理結果がＲＡＭ１０６へ書き出される。なお、図８Ａ，図８Ｂでは記載を簡潔にするため、１つのデータ取得コマンドに対して１回のＤＭＡＣ（Ｒｅａｄ）と１回のＤＭＡＣ（Ｗｒｉｔｅ）の起動となっているが、本発明はこれに限られるものではない。例えば、画像入力部１５２１と画像出力部１５２３のレジスタ設定により、一度に取得するデジタル画像データの画素数を少なく指定することができる。このような設定によれば、１つのデータ取得コマンドに対してＤＭＡＣ１９４，１９６を複数回起動し、少量のデジタル画像データずつ、分割してデータ処理を行うことが可能である。このような場合、後述に詳細説明する画像入力部１５２１と画像出力部１５２３のバッファ容量を小さくできるという利点がある。
【００７１】
データ取得コマンドに対する種々のデータの取得が終了したら、中断していたディスプレイリストの解析を再開する。図８Ａのディスプレイリスト例では、データ取得コマンド５５６の後に、レジスタリードコマンド５５８が続いている。これらのコマンドは、画像処理後の画像処理回路（１）１５３１から（Ｐ）１５３７のＳｔａｔｕｓ値を読み出すためにある。レジスタリードコマンドに対しては、画像出力部１５２３において、レジスタリードコマンド５９０の形式のままＲＡＭ１０６へ退避してもよいし、読み出されたレジスタ値だけ抜き出した形式のデータ５９２をＲＡＭ１０６へ退避してもよい（図８Ｃ）。ＣＰＵ１０２はＲＡＭ１０６のこれらのデータを参照して画像処理部１５０の動作状況を知ることができる。
【００７２】
図８Ａのディスプレイリスト例の最後に終了コマンドがあり、画像入力部１５２１はこの終了コマンドを後段の画像処理回路へ送出する。各画像処理回路も終了コマンドを後段に送出し、画像出力部１５２３は終了コマンドを受け取ると、ＣＰＵ１０２へ画像処理の終了割り込みを通知する。ＣＰＵ１０２は終了割り込みを受け付けると、本処理を終了する。そして、画像処理部１５０は、これまで説明したコマンドリスト（ディスプレイリスト）に応じた一連の自律的な動作を行った後、再びＣＰＵ１０２から起動されるまで待機する。
【００７３】
１つのディスプレイリストにデータ取得コマンドが複数回、挿入されている場合、前述のデータ取得コマンドの動作をその回数分繰り返すことで複数バンド領域に対する画像処理を実現できることは言うまでもない。つまり、同時両面スキャンの用途では、表面と裏面のために、各々のデータ取得コマンドを挿入する。またデータ取得コマンドの前後のレジスタ制御コマンドにおいて、表面、もしくは裏面の画像処理に対応するレジスタ値を設定しておけばよい。
【００７４】
先の例では、画像処理のデータを供給するためのデータ取得コマンドについて説明した。この手法を画像処理回路のＳＲＡＭ等で構成されるテーブルのレジスタ設定に応用して、テーブル設定を高速化できる。例えば、新たにレジスタ取得コマンドを定義し、画像入出力部１５２がレジスタ取得コマンドをデコードすると、データ取得コマンドと同様にグローバルバッファから画像データ形式のテーブル値（テーブルデータ）を読み出す。そして回路識別情報“ｉｐ＿ｉｄ”や“ｒｗ”や画像処理回路のテーブルの先頭アドレスを示すレジスタ（不図示）をもとに、画像入出力部１５２がテーブル値の１つごとにレジスタコマンドを生成する。そして、画像入出力部１５２は、取得したテーブルデータだけ、生成したレジスタコマンドを画像処理実行部１５３に送信して画像処理回路にテーブル設定をする。レジスタライトコマンドのみならず、レジスタリードコマンドにも同様の対応ができる。例えば、生成したレジスタリードコマンドを用いて画像処理回路のＳＲＡＭからテーブル値を読み出し、画像入出力部１５２が受信してレジスタリードコマンドを画像データ形式のテーブル値（テーブルデータ）に変換する。そして画像入出力部１５２は、データ取得コマンドと同様に、レジスタ取得コマンドに同期して、テーブルデータをグローバルバッファに書き込むことができる。ＣＰＵ１０２は書き込まれたレジスタリード値やテーブル値をグローバルバッファから参照することができる。
【００７５】
●画像データの入出力
以下、本実施形態における、ＲＡＭ１０６から画像入出力部１５２への、または画像入出力部１５２からＲＡＭ１０６への画像データの入出力処理について、図２を用いて詳細に説明する。本実施形態の画像処理装置は、図２Ａの２００１及び２００２のように、１つの画像データ３００からバンド領域３０１（幅Ｂｄｌ×高さＢｄｈ）を抜き出し、入力画像データとしてＲＡＭ１０６に格納する。このバンド領域の入力画像データは、図４Ａで説明したように、ＲＡＭ１０６で取り扱いやすくなるよう、図２Ａの２００３の２１０に示す３２Ｂｙｔｅを単位としたデータ構造からなる。
【００７６】
図２Ａにおいて、前述のデータ取得コマンドにより、ＤＭＡＣ１９４が起動する。するとＤＭＡＣ１９４は、このバンド領域の入力画像データ２１０を、図１に示した共有バス１９０を介してＲＡＭ１０６から読み出し、画像処理部１５０へ入力する。入力画像データ２１０は、上述したデータ構造にしたがって、幅３２Ｂｙｔｅ×高さＢｄｈ＿ｉｎの処理単位で、領域（１）２１１から領域（Ｍ）２１９までのＭ個の画素領域（小領域）に分けられる。そして、ＤＭＡＣ１９４は、このＭ個の小領域の入力画像データを、小領域（１）２１１から小領域（Ｍ）２１９まで順次読み出し、画像処理部１５０に入力する。画像処理部１５０は、この小領域の入力画像データを受け取り、この小領域単位で画像処理を実行する。なお、画像処理部１５０における処理単位の大きさに応じて、図２Ａの２００４のように、バンドの小領域ごとに読出し処理を行ってもよいし、バンドの全部の画素領域を一度に読出してもよい。
【００７７】
ＤＭＡＣ１９４に指示するためのＤＭＡ情報には、例えば、「読み出し先の先頭アドレス」、「連続読み出し量（３２Ｂｙｔｅ単位のデータを連続何回読み出すか）」、「インクリメント・アドレス」および「繰り返し回数」の項目が含まれる。例えば、図４Ａに示した点順次形式の画像データであれば、指示信号に含まれる各項目の内容は以下のようになる。
【００７８】
・「先頭アドレス」：Ｓ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「連続読み出し量」：１回（３２Ｂｙｔｅ）
・「インクリメント・アドレス」：１ラインのデータ量＝３２Ｂｙｔｅ×Ｍ
・「繰り返し回数」：バンド領域の高さ＝Ｂｄｈ＿ｉｎ回
この指示信号によれば、先頭アドレスＳ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲから、まず３２Ｂｙｔｅのデータすなわち小領域（１）２１１の第１行目が読み出される。そして、次のデータを取得するため、アドレスを３２Ｂｙｔｅ×Ｍだけ増加させることで、小領域（２）〜（Ｍ）の１行目のデータの読み出しが飛ばされて、小領域（１）２１１の第２行目の３２Ｂｙｔｅのデータを読み出すこととなる。そして、繰返し数Ｂｄｈ＿ｉｎ回、すなわち、小領域（１）２１１のＢｄｈ＿ｉｎ行分のデータを読み出すことにより、小領域（１）２１１の全てのデータが読み出される。小領域（２）〜小領域（Ｍ）の入力画像データの読み出しでは、「先頭アドレス」を順次３２ＢｙｔｅずつずらしてＤＭＡＣ１９４を動作させる。このように本実施形態の画像処理装置では、所望する小領域の入力画像データをＲＡＭ１０６からＤＭＡ転送で読み出す。
【００７９】
画像入出力部１５２の画像入力部１５２１は、ＤＭＡＣ１９４から入力画像データを受け取りながら、そのデータを中間バッファ制御部１５２２へ転送する。中間バッファ制御部１５２２は、図２Ａの２００５のように、中間バッファ調停回路２３０と中間バッファ２３２とで構成される。中間バッファ２３２は、入力画像データを格納する領域である入力領域２３４と、後述する出力画像データを格納する領域である出力領域２３６とで構成される。ＣＰＵ１０２は、中間バッファ２３２の入力領域および出力領域の先頭アドレスを、それぞれ入力領域先頭アドレスおよび出力領域先頭アドレスとして予め設定しておく。なお、画像入力部１５２１から入力された入力画像データは、まず中間バッファ調停回路２３０へ入力される。
【００８０】
中間バッファ調停回路２３０は、受け取った入力画像データを、中間バッファ２３２の入力領域２３４へ一時的に格納する。通常、中間バッファ２３２はＳＲＡＭ等の記憶装置で実現される。例えば、中間バッファ２３２の１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長であれば、入力領域２３４で記憶するべきワード数はバンド領域の高さに相当し、ＤＭＡ転送の繰り返し回数であるＢｄｈ＿ｉｎワードとなる。また、中間バッファ２３２の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長であれば、３２Ｂｙｔｅ長のデータを受けるのに４ワード必要となる。したがってこの場合、入力領域２３４で記憶すべきワード数は、バンド領域の高さ（ＤＭＡ転送の繰り返し回数）Ｂｄｈ＿ｉｎを４倍したワード数となる。つまり、入力領域２３４の容量は、１回のＤＭＡ転送の単位である小領域（処理単位）の入力画像データが格納できる容量である。なお、ＤＭＡＣ１９４は、ＤＭＡ転送や１つのバンド領域の入力画像データの転送が完了すると、その旨を割り込み信号２２２を用いてＣＰＵ１０２へ通知してもよい。
【００８１】
その後、画像入力部１５２１は、中間バッファ調停回路２３０を介して、一時的に記憶された小領域の入力画像データを読み出し、１画素ずつ入力画素値１５５を順次生成して、画像処理実行部１５３へ入力する。なお、画像入力部１５２１と画像出力部１５２３とは非同期で動作しても良く、例えば入力画像データにおける小領域（１）２１１と小領域（２）の一部を用いて、出力画像データの小領域（１）２５１が生成され、出力されても良い。なお、図２Ｂの画像入力部１５２１と画像出力部１５２３にはそれぞれ、本実施形態の特徴をなすポインタ管理部１５４２，１５４４が設けられているが、この動作については後述する。
【００８２】
画像処理実行部１５３は、入力された１つ以上の画素からなる画素領域に画像処理を施す。具体的な画像処理としては例えば、複数の画素からなる画素領域に対して、所定の重み係数を乗算し、それらの値を全て加算することにより、１つの出力画素を得る。そして、画素領域をバンド領域の高さ方向にスライドさせながらこのような処理を進め、高さ方向に１列分の画素値を出力すると、次の列の画素を出力するための処理を実行する。処理後の画素値は１画素ずつ、画像入出力部１５２の画像出力部１５２３へ出力される。
【００８３】
画像出力部１５２３では、処理後の出力画素値１５６から出力画像データを生成し、３２Ｂｙｔｅ単位で、中間バッファ調停回路２３０を介して中間バッファ２３２の出力領域２３６へ格納する。ここで、生成済みの出力画像データのデータ構造は図４Ａに示す点順次形式のままであるが、図２Ａの２００６のように、出力画像データ２５０ではその形式が変わっていてもよい。画像処理実行部１５３では、入力画素領域のサイズと出力画素領域のサイズが異なる様々な画像処理が実行されるため、入力画像データ２１０と出力画像データ２５０の画素数は異なる。したがって、出力画像データ２５０の出力バンド領域の高さおよび幅は入力画像データ２１０とは異なり、高さＢｄｈ＿ｏｕｔ、幅８×Ｎとなる。このように、入力画像データ２１０と出力画像データ２５０では、バンド領域の高さが異なるため、処理単位である小領域の容量が異なる。さらにバンド領域の幅も異なるため、小領域の数もＭ個からＮ個に変化する。
【００８４】
このように、入力画像データ２１０と出力画像データ２５０とでは、バンド領域の高さおよび小領域の個数が異なるものの、データ構造は同一であるため、中間バッファ２３２の出力領域２３６の容量は、入力領域２３４の容量と同様の考え方で設定できる。例えば、中間バッファ２３２の１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長であれば、出力領域２３６で記憶すべきワード数は、出力バンドの高さと同じＢｄｈ＿ｏｕｔワードとなる。また、中間バッファ２３２の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長であれば、出力領域２３６で記憶すべきワード数は、先の出力バンドの高さであるＢｄｈ＿ｏｕｔを４倍したワード数となる。
【００８５】
画像出力部１５２３は、例えば、Ｂｄｈ＿ｏｕｔ個の画素が４列分入力され、小領域（１）２５１の出力画像データが中間バッファ２３２の出力領域２３６に揃った時点で、画像処理実行部１５３からの出力画素値１５６の受け取りを停止する。そして、出力領域２３６の出力画像データを順次読み出し、ＤＭＡＣ１９６へ送出する。そしてＤＭＡＣ１９６は、ＣＰＵ１０２からの指示信号２２５に従って、処理後の画像データをＲＡＭ１０６へ書き込む。同様の動作を小領域（２）から小領域（Ｎ）まで順次実行し、図２Ａの２００７の出力バンド領域の出力画像データをすべてＲＡＭ１０６へ書き戻す。
【００８６】
●同期コマンド
データ処理装置では、画像処理のデータフローに適切な位置で制御点（同期点）を設定できるように、図５記載の同期制御コマンド（待機コマンド５４８とＪｕｍｐコマンド５５０）を備える。以下、図７Ａを用いて同期制御コマンドの動作について説明する。
【００８７】
同期制御コマンドは、前述のコマンドリストの中で、制御（同期）したいと考える任意の位置に挿入してよい。例えば、前述の図８Ａのコマンドリスト（ディスプレイリスト）例では、待機コマンド５６０が挿入されている。このコマンドの挿入位置は、基本的に１回のＤＭＡ転送単位の末尾などに置く必要はない。この位置を画像処理のデータフローの制御点（同期点）と呼称する。
【００８８】
制御点（同期点）は、画像処理の処理内容により決定される。
【００８９】
前述まので説明の通り、コマンドリストの同期制御コマンドは、他のコマンドと同様に画像入力部１５２１でデコードされた後、画像入力部１５２１から画像処理実行部１５３に送信される（Ｓ７０１）。画像入力部１５２１は同期制御コマンドをデコードし、同期制御コマンドであることを判別すると（Ｓ７１０）、コマンドリストの読み出しと送信を一時停止する（Ｓ７１５）。画像入力部１５２１は一時停止（ストール）状態になり、図１Ｂの同期部１５８に同期制御コマンドのデコードを通知する（Ｓ７１８）。画像入力部１５２１は一時停止（ストール）状態のまま待機しており、コマンドリストの同期制御コマンドの次に位置するコマンドの中間バッファ２３２からの読み出しと画像処理実行部１５３への送信は停止している（Ｓ７４０）。同期制御コマンドは画像処理実行部１５３の画像処理回路を通過する過程で画像処理のパイプラインを初期化する（Ｓ７０５）。なお、画像処理回路を通過する過程で、初期化以外の特定の処理、例えば、特定のレジスタへの特殊値の設定やステータス値の読み出しなどを実行してもよい。その後、同期制御コマンドは、画像処理実行部１５３から画像出力部１５２３に受信される（Ｓ７３１）。以上のような動作により、画像処理実行部１５３のパイプラインで処理中のコマンドは、画像出力部１５２３に到達しており、一連の画像処理は完了している。そして画像処理実行部１５３にはコマンドが存在せず、画像処理が実行されていない状態になっている。この動作を実施形態の画像処理実行部１５３の内部同期機能もしくはバリア同期機能と呼称する。画像処理実行部１５３は初期化状態のため、これ以後、画像処理部１５０の画像処理タスクが切り替わり、データフロー制御や動作が変更されても問題なく動作可能な状態である。そして画像出力部１５２３は、同期制御コマンドを受信して（Ｓ７０８）デコードし、同期制御コマンドであることを判別する（Ｓ７３０）と、同期部１５８に同期制御コマンドが画像出力部１５２３に到達したことを通知する（Ｓ７３８）。
【００９０】
上記の画像入力部１５２１と同様に画像出力部１５２３も一時停止（ストール）状態のまま待機する（Ｓ７４２）。
【００９１】
画像処理部の画像入出力部では、入力部と出力部が一体化した構成になっているので、バリア同期機能を高速に実現するのは容易である。
【００９２】
●外部同期機能
同期部１５８は、同期先である、ＣＰＵ、映像入力部（カメラ）、画像読み取り部（スキャナ）、映像表示装置（ディスプレイ）や印刷装置（プリンタ）に対して同期割り込みの通知を判断し（Ｓ７８０）、同期割り込みを通知する（Ｓ７８１）。
【００９３】
同期部１５８は、同期先からの外部同期を受け付ける（Ｓ７５０）。例えば、同期先がＣＰＵ１０２の場合には、図１ＢのレジスタＩ／Ｆ１５９を介して、画像処理部１５０の同期レジスタ１５８２に所定の値を書き込むといった手法で、外部同期を通知する（Ｓ７５２）。また、その他の同期先では、外部同期信号１３０１や同期信号１２０１を用いて、画像処理部１５０の同期レジスタ１５８２に所定の値を書き込むことで外部同期を通知する（Ｓ７５２）。
【００９４】
同期部１５８は、同期レジスタ１５８２が所定の値になり、外部同期が通知されたかを判別する（Ｓ７５５）。外部同期の通知がないとき（Ｓ７５５のＮＯ）、外部同期受付（Ｓ７５０）を継続する。
【００９５】
外部同期の通知があったとき（Ｓ７５５のＹＥＳ）、同期部１５８は待機の解除を画像入力部１５２１と画像出力部１５２３に指示する（Ｓ７６０、Ｓ７６２）。そして画像入力部１５２１は、コマンドの送信（Ｓ７０１）を再開する（Ｓ７７０）。
【００９６】
また画像出力部１５２３は、コマンドの受信（Ｓ７０８）を再開する（Ｓ７７２）。同期部１５８は待機の解除を指示したのち、同期レジスタ１５８２を初期化する。
【００９７】
なお、以上の説明では、外部同期受付（Ｓ７５０）のあとに、外部同期の通知（Ｓ７５２）がある場合を説明した。仮に外部同期受付（Ｓ７５０）の前に、外部同期の通知（Ｓ７５２）があった場合、同期部１５８は、同期レジスタ１５８２への所定の値の書き込みは実行しておく。その後、外部同期受付（Ｓ７５０）に移行したら、すぐに同期部１５８は待機の解除を実行する（Ｓ７６０、Ｓ７６２）。
【００９８】
●本実施形態の効果
以上のように本実施形態の手法では、特許文献３のように同期のためにＤＭＡ転送を起動する必要はない。そして同期が完了すると、すぐに画像処理を再開できる。具体的には、画像入出力部１５２のパイプラインのストールを解除し、中間バッファ２３２に格納済みのコマンドの読み出しと送信を、すぐさま再開するのである。
【００９９】
＜変形例＞
本実施形態における中間バッファ２３２を、２バンク構成の記憶手段に拡張することができる。例えば図２Ａに示すように、中間バッファ制御部１５２２を、記憶領域Ａと記憶領域Ｂからなる２バンク構成とする。このような２バンク構成にすることにより、中間バッファ制御部１５２２は小領域（処理単位）を同時に２つまで格納できる。そして動作状況に応じて、記憶領域を入れ替える（バンクチェンジ）。上述したように、中間バッファ制御部１５２２が１バンク構成であれば、入力画像データの読み出し（ＬＯＡＤ）動作と、入力画像データから画素値を生成する送信（ＳＥＮＤ）動作とを時分割で行っていた。また、出力画素値から出力画像データを生成する受信（ＲＥＣＶ）動作と、出力画像データの書き込み（ＳＴＯＲＥ）動作とを時分割で行っていた。本変形例では中間バッファ制御部１５２２を２バンク構成とすることで、入力画像データから画素値を生成する間にも、次の小領域（処理単位）の入力画像データを受け取れる。また、出力画素値から出力画像データを生成する間にも、生成済みの出力画像データを出力できる。したがって、ＤＭＡＣ１９４と送信部１５４１の処理を並列化でき、またＤＭＡＣ１９６と受信部１５４３の処理を並列化できる。つまり、「読み出し（ＬＯＡＤ）動作」と「送信（ＳＥＮＤ）動作」とを同時動作させ、「書き込み（ＳＴＯＲＥ）動作」と「受信（ＲＥＣＶ）動作」とを同時動作させることが可能となる。このように中間バファ２３２を複数バンクにすることで処理を高速化できる。
【０１００】
＜第２実施形態＞
●Ｊｕｍｐ機能
本実施形態では複数のコマンドリスト（ディスプレイリスト）を行き来するためのＪｕｍｐ機能について説明する。前述の同期制御コマンドには、Ｊｕｍｐ機能を実現するためＪｕｍｐコマンド５５０を備える。
【０１０１】
Ｊｕｍｐコマンド５５０も前述の待機コマンドと同様にコマンドリストの中で、制御（同期）したいと考える任意の位置に挿入してよい。例えば、前述の図８Ａのコマンドリスト（ディスプレイリスト）例では、Ｊｕｍｐコマンド５６４が挿入されている。このコマンドの挿入位置も、待機コマンドと同様に基本的に１回のＤＭＡ転送単位の末尾などに置く必要はない。
【０１０２】
以下、図８Ａと図８Ｂを用いて動作を説明する。例えばＪｕｍｐ機能を用いれば、図５ＡのＤＰＬ（２）のＪｕｍｐコマンドの挿入位置から、ＤＰＬ（３）の先頭にコマンドリストを遷移することが可能である。しかしながら、以下の説明では説明を簡潔にするため、ＤＰＬ（２）のＪｕｍｐコマンドの挿入位置５６４からＤＰＬ（２）の所定のアドレス“０ｘ２０００”へのＪｕｍｐ機能について説明する。
【０１０３】
画像入出力部１５２内の同期部１５８の同時レジスタ１５８２には、Ｊｕｍｐ先アドレスとＪｕｍｐ回数を指定できる。例えば、画像処理のデータフローから予めＣＰＵ１０２がレジスタＩ／Ｆ１５９を介して直接設定しておいてもよい。またコマンドリスト内のレジスタライトコマンドを用いて、Ｊｕｍｐコマンドの前に同時レジスタ１５８２の値を書き換えてもよい。図８Ａ、図８Ｂの一例では、Ｊｕｍｐ先アドレスに０ｘ２０００、Ｊｕｍｐ回数１回が設定されている。
【０１０４】
まず図８Ａの５５０から５６２のコマンドに対応して、画像入力部１５２１は図８Ｂの５５０から５６２を出力している。画像入力部１５２１はＪｕｍｐコマンド５６４をデコードすると、前述の待機コマンドと同様にパイプラインを停止して画像入力部１５２１を待機状態に移行する。そして前述の内部同期機能（バリア同期機能）の動作を開始する。また画像入力部１５２１は同期部１５８にＪｕｍｐコマンドのデコードを通知する。Ｊｕｍｐコマンドは画像処理実行部１５３を通過し、画像出力部１５２３は、Ｊｕｍｐコマンド５６４をデコードすると、同期部１５８にＪｕｍｐコマンドのデコードを通知する。
【０１０５】
同期部１５８は、画像入力部１５２１と画像出力部１５２３からＪｕｍｐコマンドのデコード通知を受けるとＪｕｍｐ動作の実行の有無を判断する。具体的には、先の同期レジスタ１５８２にあるＪｕｍｐ回数を参照し、正の数なら、Ｊｕｍｐ動作の実行を許可し、“０”の値ならＪｕｍｐ動作を中止する。
【０１０６】
Ｊｕｍｐ動作が中止の場合は、同期部１５８は画像入力部１５２１と画像出力部１５２３に中止を通知する。中止の場合、画像入力部１５２１は待機を解除して、中間バッファ２３２に一時記憶されたＪｕｍｐコマンドの次にコマンドの処理を再開する。画像出力部１５２３も同様に待機を解除して処理を再開する。
【０１０７】
Ｊｕｍｐ動作が実行の場合、同期部１５８は画像入力部１５２１と画像出力部１５２３に実行を通知する。そして同期部１５８は、同期レジスタ１５８２のＪｕｍｐ回数が正の値ならデクリメント（−１）する。
【０１０８】
画像出力部１５２３は、これまで受信して中間バッファ２３２に一時記憶したコマンドをＲＡＭ１０６の所定のアドレスに書き戻す。例えば、一時記憶したコマンドがレジスタリードコマンドによるリードデータを保持しているなら、必ず書き戻す必要がある。一方、一時記憶したコマンドがリードデータではないときは、必ずしもＲＡＭ１０６に一時記憶したコマンドを書き戻す必要はない。この動作を「出力コマンドのフラッシュ」と呼称する。
【０１０９】
「出力コマンドのフラッシュ」動作が完了すると、画像入力部１５２１はプログラムカウンタ（送信カウンタ）を初期化し、画像出力部１５２３はプログラムカウンタ（受信カウンタ）を初期化する。そして、コマンドリスト（ディスプレイリスト）の開始アドレスとして同期レジスタ１５８２のＪｕｍｐ先アドレスの０ｘ２０００に変更して、コマンドリスト（ディスプレイリスト）の読み出しを開始する。なお、Ｊｕｍｐ動作の前に中間バッファ２３２に一時記憶済みのコマンド（ＲＡＭ１０６に書き戻す必要がないコマンド）は、この読み出しにより上書きされ、破棄されることとなる。
【０１１０】
図８ＡのＪｕｍｐコマンド５６４でＪｕｍｐ動作したのち、図８Ａの０ｘ２０００からコマンド処理が再開するので、コマンド５５４から５６２の処理が再度実行される。そのため図８Ｂでは、図８Ａのコマンド５５４から５６２までのコマンドが２回展開されている。
【０１１１】
そして図８ＡのＪｕｍｐコマンド５６４がもう一度、画像入力部１５２１によりデコードされて、上記のＪｕｍｐコマンドの動作を再度行う。しかしながら、同期レジスタ１５８２のＪｕｍｐ回数は先ほどのＪｕｍｐ動作により、”１”から”０”にデクリメント（−１）されており、Ｊｕｍｐ回数は”０”であるため、Ｊｕｍｐ動作が中止される。そして、図８Ａの終了コマンド５６８がデコードされて、終了割り込みのアサートのあと、画像処理が完了する。
【０１１２】
上記の一例では、Ｊｕｍｐ機能を用いることにより、図８Ａのデータ取得コマンド５５６と待機コマンド５６０が図８Ｂでは２回展開されており、２回のバンド処理が実現できる。
【０１１３】
＜変形例＞
図６Ａ、図６Ｂを用いて、中間バッファ２３２の挙動について補足する。
【０１１４】
図６Ａと図６Ｂでは、前述の中間バッファ２３２が２バンク構成になっているときの挙動である。また前述の説明では、リードデータを「出力コマンドのフラッシュ」すると説明したが、以下の説明では、違いを分かりやすく説明するために、リードデータ以外のコマンドも「出力コマンドのフラッシュ」する。
【０１１５】
待機コマンド５４８の場合、待機コマンドの後続に位置するコマンド「後続のコマンド」は、待機の解除後に、図６ＡのＰｈａｓｅ＿３（時刻Ｓ６１４）で画像出力部により書き出し（ＳＴＯＲＥ）され、時刻Ｓ６１９では、ＲＡＭ１０６に書き込まれている。
【０１１６】
一方、Ｊｕｍｐコマンド５５０では、Ｊｕｍｐ動作の有無により、Ｊｕｍｐコマンドの後続に位置するコマンド「後続のコマンド」の書き出しの有無が変わる。図６Ｂは図８Ａのコマンドリストの動作である。図６Ｂの時刻Ｓ６２０〜時刻Ｓ６２６までが１回目のＪｕｍｐ動作の実行に対する中間バッファ２３２の挙動を示している。  そして、時刻Ｓ６２６〜時刻Ｓ６２９までが２回目のＪｕｍｐ動作の中止に対する中間バッファ２３２の挙動を示している。１回目のＪｕｍｐ動作の実行では、Ｊｕｍｐ後にコマンドの読み先が変わるので、「後続のコマンド」は処理されない。具体的には、時刻Ｓ６２２のＳｔｅｐ＿２のように「後続のコマンド」は送信（ＳＥＮＤ）されない。そして、Ｊｕｍｐコマンド５５０が受信（ＲＥＣＶ）された時点で、中間バッファ２３２はバンクチェンジし、時刻Ｓ６２４のＰｈａｓｅ＿３でＲＡＭ１０６に書き戻される。
【０１１７】
２回目のＪｕｍｐ動作の中止では、Ｊｕｍｐコマンド５５０が受信（ＲＥＣＶ）までは、Ｊｕｍｐ動作の実行の動作と同じであるが、その後、「後続のコマンド」も処理され、受信（ＲＥＣＶ）される。そして、「後続のコマンド」の受信（ＲＥＣＶ）の後、バンクチェンジし、時刻Ｓ６２９のＰｈａｓｅ＿６で、「後続のコマンド」も含めてＲＡＭ１０６に書き戻される。
【０１１８】
●本実施形態の効果
以上のように本実施形態の手法では、同期コマンド（待機コマンド５４８、Ｊｕｍｐコマンド５５０）を用いることで例えば、スキャナ等の外部機器による画像データの読み取りと、画像処理部１５０を１バンド毎に、連動して動作可能である。
【０１１９】
つまり、画像データの読み取り後、画像処理部１５０は１バンドの画像処理を実行し、待機コマンド５４８を用いて、外部機器の応答を待つ。
【０１２０】
外部機器は次の画像データの読み取りが完了したら、外部同期信号１２０１をアサートし、画像処理部１５０の待機を解除する。画像処理部１５０はＪｕｍｐコマンド５５０により、コマンドリスト上の必要な開始位置から画像処理を再開する。そして画像処理部１５０は、次のデータ取得コマンド５４２により画像処理を実行して次に待機コマンド５４８で外部機器の応答を待てばよい。
【０１２１】
ＣＰＵ１０２は、図８Ａの短いコマンドリスト（ディスプレイリスト）と、同期レジスタ１５８２のＪｕｍｐ回数を指定するだけで、外部機器と連動させながら、必要な回数のバンド処理を実行できる。ＣＰＵ１０２による画像処理部１５０の起動は１回だけである。画像処理部１５０が外部機器との待ち合わせを含めて自律動作することでＣＰＵ１０２の制御負荷を軽減している。
【０１２２】
＜第３実施形態＞
●外部同期前の「出力コマンドのフラッシュ」動作
図９Ａと図９Ｂを用いて、待機コマンド５４８を用いた外部同期中に、レジスタリードコマンドを用いて画像処理１５０のレジスタ値を読み出す手法について説明する。特にＣＰＵ１０２との外部同期の際に有効である。図９Ａの例では、コマンドリストの待機コマンドの前にレジスタリードコマンドが挿入されている。例えば、図８Ａのコマンドリストのコマンド５５８がレジスタリードコマンドである。図９Ａ、図９Ｂは、前述の中間バッファ２３２が２バンク構成になっているときの挙動である。
【０１２３】
前述のように中間バッファ２３２が２バンク構成になっているため、先読み（ＬＯＡＤ）と送信（ＳＥＮＤ）、書き出し（ＳＴＯＲＥ）と受信（ＲＥＣＶ）は並列動作できるが、ＲＡＭ１０６に処理後のコマンドが書き戻されるまでには時間を要する。図９Ａの時刻Ｓ９１２のＳｔｅｐ＿３で画像出力部１５２３が待機コマンド５４８をデコードしたとき、レジスタリードコマンドは既に中間バッファ２３２に格納済みである。しかしながら、待機コマンド５４８が外部同期を待つ（Ｓｔｅｐ＿４）ため、中間バッファ２３２のバンクチェンジは起こらない。
【０１２４】
外部同期のアサート（Ｓｔｅｐ＿５）のあと、待機が解除され、Ｓｔｅｐ＿６にて「後続のコマンド」が受信（ＲＥＣＶ）されたのち、ようやくバンクチェンジが起こり、時刻Ｓ９１８でレジスタリードコマンドが書き戻される。そのため、レジスタリードコマンドに対応するデータがＲＡＭ１０６に格納されるのは、時刻Ｓ９１９となる。つまり、外部同期中にＣＰＵ１０２は待機コマンド５４８の前にあるレジスタリードコマンドに対応するデータを読み出すことはできない。
【０１２５】
上記の問題に対処するためには、レジスタリードコマンドと待機コマンド５４８との間にバッファ分のＮＯＰコマンドを挿入する。そして、待機コマンド５４８による外部同期の動作の前に、ＲＡＭ１０６にレジスタリードコマンドに対応するデータをフラッシュする。本実施形態の一例では、中間バッファ２３２は２バンク構成のため、図９ＢのようにＮＯＰコマンドを２バンク分挿入する。Ｐｈａｓｅ＿１〜Ｐｈａｓｅ＿３のＬＯＡＤ動作から分かるようにレジスタリードコマンド〜待機コマンドの間にＮＯＰコマンドが挿入されている。実際には外部同期の動作の前に中間バッファをチェンジすることが目的のため、ＮＯＰコマンドでなくてもよく、レジスタ設定のためのレジスタライトコマンドでもよい。このようにダブルバッファ、トリプルバッファ、クワッドバッファなどバッファ面数に応じて、ＮＯＰコマンドを挿入する。時刻Ｓ９２６のＳｔｅｐ＿１で待機コマンドがデコードされ、外部同期のための動作に入る前の時刻Ｓ９２４でレジスタリードコマンドはＲＡＭ１０６に書き戻されている。そのため、ＣＰＵ１０２は外部同期の待機中の時間にＲＡＭ１０６に書き戻された画像処理部１５０のリードデータ（Ｓｔａｔｕｓ値）を確認できる。
【０１２６】
上記の機能を用いることで、まず同期のタイミングで、ＣＰＵ１０２は画像処理部１５０と同期して、画像処理部１５０のリードデータ（Ｓｔａｔｕｓ値）を確認する。そして、次の制御を決定して、コマンドリスト（ディスプレイリスト）を選択、もしくは変更する。そしてレジスタＩ／Ｆ１５９を介して同期レジスタ１５８２を書き換え、外部同期をアサートする。画像処理部１５０は、待機を解除してコマンドリスト（ディスプレイリスト）の処理を再開する。
【０１２７】
以上のように、同期制御コマンドとその直前のコマンドとの間に、中間バッファ２３２の大きさ（複数バンク）に応じて別のコマンド（例えばＮＯＰコマンド）を挿入することにより、直前のコマンドのＲＡＭ１０６への書き出しを保証できる。
【０１２８】
なお、本実施形態では、中間バッファの設定により、１バンクの出力バッファ容量を変更できる。このような容量変更に際し、出力バッファ容量の変更に応じて、前述のＮＯＰコマンドの挿入数を変更する。またレジスタリードコマンドについて言及したが、前述のレジスタ取得コマンドを用いたテーブルデータのリードにおいても同様である。つまり、レジスタ取得コマンド〜待機コマンドの間にＮＯＰコマンドを挿入すればよい。
【０１２９】
●本実施形態の効果
以上のように本実施形態の手法では、ＣＰＵ１０２の制御負荷は軽減しつつも、ＣＰＵ１０２は待機コマンド５４８の同期のタイミングで画像処理部１５０の状態を観測し、画像処理の内容を変更できる。
【０１３０】
＜第４実施形態＞
●動的クロック停止動作
図１Ｄを用いて、前述の実施形態と図１Ｂとの違いを説明する。前述の図１Ｂの画像処理部１５０に対してクロック供給回路１５８４と画像処理実行部１５３に非同期Ｉ／Ｆ１５５２と非同期Ｉ／Ｆ１５６２が追加されている。
【０１３１】
クロック供給回路１５８４には画像処理装置のクロック生成部（非図示）から基準となる動作周波数のクロック（基準クロックと呼ぶ）が入力されている。またクロック供給回路１５８４には、基準クロックの動作周波数に対して、１／２周期、１／４周期、１／８周期の動作周波数のクロックも入力されている（１／２周期クロック、１／４周期クロック、１／８周期クロックと呼ぶ）。ＣＰＵ１０２は、レジスタＩ／Ｆ１５９を介して、クロック供給回路１５８４に関する制御レジスタ（非図示）に値を設定することで、クロック供給回路１５８４を制御できる。例えば、ＣＰＵ１０２は、クロック供給回路１５８４から画像入出力部１５２、画像処理実行部１５３へ出力するクロックを、基準クロック、１／２周期クロック、１／４周期クロック、１／８周期クロックなどから選択できる。またＣＰＵ１０２は、クロック供給回路１５８４から画像入出力部１５２、画像処理実行部１５３へ出力するクロックの何れかを停止することができる。
【０１３２】
なお画像入出力部１５２と画像処理実行部１５３の間に非同期Ｉ／Ｆを挿入しているため、基本的に両者のクロックを任意の周波数比に切り替えても通信できる。以下では、基準クロック、１／２周期クロック、１／４周期クロック、１／８周期クロックのように周波数比の一例を用いて説明を行う。
【０１３３】
前述のようにデータ処理装置では、画像処理のデータフローに適切な位置で制御点（同期点）を設定でき、その制御点（同期点）を基準に画像処理のデータフローを制御できる。本実施形態では図７Ｂを用いて、この制御点（同期点）で画像処理実行部のクロック供給を一時的に停止する動作について説明する。
【０１３４】
基本的な動作は、図７Ａを用いた第１実施形態の動作と同様であり、以下では本実施形態の動作について説明する。画像入力部１５２１は同期制御コマンドをデコードし、同期制御コマンドであることを判別すると（Ｓ７７１０）、コマンドリストの読み出しと送信を一時停止する（Ｓ７７１５）。画像入力部１５２１は一時停止（ストール）状態になり、図１Ｄの同期部１５８に同期制御コマンドのデコードを通知する（Ｓ７７１８）。画像入力部１５２１は一時停止（ストール）状態のまま待機しており、コマンドリストの同期制御コマンドの次に位置するコマンドの中間バッファ２３２からの読み出しと画像処理実行部１５３への送信は停止している（Ｓ７７４０）。同期制御コマンドは画像処理実行部１５３の画像処理回路を通過する過程で画像処理のパイプラインを初期化する（Ｓ７７０５）。その後、同期制御コマンドは、画像処理実行部１５３から画像出力部１５２３に受信される（Ｓ７７３１）。以上のような動作により、画像処理実行部１５３のパイプラインで処理中のコマンドは、画像出力部１５２３に到達しており、一連の画像処理は完了している。そして画像処理実行部１５３にはコマンドが存在せず、画像処理が実行されていない状態になっている。そして画像出力部１５２３は、同期制御コマンドを受信して（Ｓ７７０８）デコードし、同期制御コマンドであることを判別する（Ｓ７７３０）と、同期部１５８に同期制御コマンドが画像出力部１５２３に到達したことを通知する（Ｓ７７３８）。
【０１３５】
上記の画像入力部１５２１と同様に画像出力部１５２３も一時停止（ストール）状態のまま待機する（Ｓ７７４２）。
【０１３６】
同期部１５８は、同期先である、ＣＰＵ、映像入力部（カメラ）、画像読み取り部（スキャナ）、映像表示装置（ディスプレイ）や印刷装置（プリンタ）に対して同期割り込みの通知を判断し（Ｓ７７８０）、同期割り込みを通知する（Ｓ７７８１）。次に同期部１５８は、クロック制御のためのレジスタ（不図示）をもとにクロック制御を行う（Ｓ７７８２）。
【０１３７】
具体的には同期部１５８からクロック供給回路１５８４に対しクロック制御信号１５８５で予め定められたクロック動作モードを通知する（Ｓ７７８３）。
そしてクロック供給回路１５８４はクロック動作モードに従い、動的クロック制御を実施する。
【０１３８】
図１３Ａを用いて具体的な動的クロック制御について説明する。まずクロック供給回路１５８４には前述の様々な周波数のクロックが入力されている。クロック供給回路１５８４はクロック制御信号１５８５のクロック動作モードに従い、画像処理実行部１５３に入力するクロックを選択したり、停止したりできる。なお、クロック供給回路１５８４に対して基準クロックだけを入力し、クロック供給回路１５８４が分周して１／２周波数、１／４周波数、１／８周波数のクロックを生成して選択もしくは停止する実施形態でも構わない。
【０１３９】
画像処理実行部１５３に対する同期コマンドの入出力の後、クロック供給回路１５８４はクロックＡを停止する（Ｓ７７８４）。図１３Ａのように画像入出力部には有効なクロックが入力されており画像入出力部は動作しているが、画像処理実行部に入力されるクロックＡは停止しており、画像処理実行部１５３は動作していない。
【０１４０】
やがて外部の同期先から外部同期Ｓ７７５２が通知（外部同期信号のアサートや同期レジスタの値の変更）され、同期部１５８が外部同期を受け付ける（Ｓ７７５０）。同期部１５８は、外部同期の指示を判別し（Ｓ７７５５）、外部同期であれば（Ｓ７７５５のＹＥＳ）、同期部１５８はクロック供給の再開のためのクロック制御を行う（Ｓ７７８６）。同期部１５８はクロック制御信号１５８５のクロック動作モードを切り替えて、クロック供給回路１５８４に通知する（Ｓ７７８７）。
【０１４１】
クロック供給回路１５８４はクロック動作モードから次に再開する動作周波数のクロック（クロックＢとする）を選択して画像処理実行部１５３へのクロック供給を再開する（Ｓ７７８８）。図１３Ａのように画像処理実行部に入力されるクロックＢが再開されて、画像処理実行部１５３は動作し始める。このとき、再開したクロックＢは不安定である場合を想定し、同期部１５８は復帰サイクルレジスタ（不図示）を設け、予め待機の解除をクロック供給の再開から後に遅らせることが可能である。同期部１５８は復帰サイクルレジスタの値を毎サイクル減算し（Ｓ７７９０）、復帰サイクルレジスタが０値になったとき、復帰サイクルだけ時間が経過し、クロックが安定したと判断する（Ｓ７７９２のＹＥＳ）。
【０１４２】
そして同期部１５８は待機の解除を画像入力部１５２１と画像出力部１５２３に指示する（Ｓ７７６０、Ｓ７７６２）。そして画像入力部１５２１は、コマンドの送信（Ｓ７７０１）を再開する（Ｓ７７７０）。
【０１４３】
また画像出力部１５２３は、コマンドの受信（Ｓ７７０８）を再開する（Ｓ７７７２）。同期部１５８は待機の解除を指示したのち、同期レジスタ１５８２や復帰サイクルレジスタ等を初期化する。
【０１４４】
上述の動的クロック制御において、例えば画像入出力部１５２は、画像処理部１５０の起動時に使用するクロックの動作周波数を選択する。一方、画像処理実行部１５３は、画像処理のデータフローの制御点（同期点）の区切りで画像処理の処理内容に応じて適切な動作周波数をその都度、選択できる。このとき選択するクロック動作モードは、予め定められたレジスタ（不図示）により指定し、同期部１５８がこのレジスタに従いクロック動作モードを切り替えてもよい。また選択するクロック動作モードは、同期コマンドの空いているビット領域に定義して、画像入出力部がコマンドをデコードした際に値を算出して、同期部１５８がクロック動作モードを切り替えてもよい。
【０１４５】
●本実施形態の効果
以上のように本実施形態の手法では、あるバンド領域の画像処理のあと、次のバンド領域の画像処理を開始するまでの間に発生する外部との同期待ちに対して、画像処理実行部（画像処理パイプライン）のクロック供給を一時停止できる。例えば、ＣＰＵ１０２は、画像処理部１５０の制御以外に様々な処理タスクをマルチタスクで実行している。そのため仮に画像処理部１５０からＣＰＵ１０２に外部同期の割り込み通知を行っても、ＣＰＵ１０２の外部同期に対する割り込み応答が、他の処理タスクが原因で遅れる場合がある。通常、ＣＰＵ１０２は、画像処理部１５０からの外部同期の割り込み通知を受信して画像処理部１５０の制御のための所定の処理を実行して、外部同期として同期部レジスタ１５８２に所定の値を書き込んで外部同期をアサートする。しかしながら、他の処理タスクが原因でＣＰＵ１０２の割り込み応答が遅れた場合、外部同期のアサートまでの時間は常に一定ではなく変動してしまう。そのため、ＣＰＵ１０２との同期待ちの間に画像処理実行部（画像処理パイプライン）のクロック供給を一時停止して無駄な消費電力を削減することは、変動により生じる消費電力の削減に寄与し、画像処理装置の消費電力を一定以下に抑制する効果がある。ＣＰＵ１０２による外部同期の応答における変動はソフトウェアの競合動作により起きるため、画像処理ＬＳＩの設計時に事前に応答時間を見積もることは難しい。そのため本実施形態の方法は、画像処理ＬＳＩの省電力品質を担保する上での難しい課題に対して一定の抑制効果を提供することができる。
【０１４６】
また一般には動的なクロック供給をＣＰＵ１０２がレジスタＩ／Ｆ１５９を介して実現することが多いが、ＣＰＵ１０２のソフトウェア動作の変動については対処できないことは言うまでもない。
【０１４７】
また逆に、外部同期先がカメラ入力やスキャナ入力のようなハードウェア・デバイスのとき、外部同期先は高速に外部同期に応答することが可能であり、外部同期待ちの時間は非常に短い。このような短い待機時間に対して、ＣＰＵ１０２が動的なクロック制御を行うと、上記のソフトウェアの競合動作や割り込み応答により、同期オーバーヘッドが大きく、かえって画像処理（全体）の速度が低下してしまう。
【０１４８】
画像入出力部がデータフローの制御点（同期点）で動的にクロック制御することにより、データフローに合わせて、データフロー上の待機時間の消費電力を抑制できる。そして、画像入出力部により、ＣＰＵ１０２が動的なクロック制御をする処理負荷をなくし、ＣＰＵ１０２の応答時間の変動にも対処できるのである。
【０１４９】
＜第５実施形態＞
●動的クロック切り替え動作
前述の第４実施形態では、動的なクロック停止と停止後のクロック切り替えについて説明した。本実施形態では、図１３Ｂを用いて外部同期の待機中にクロックを切り替える方法について説明する。
【０１５０】
本実施形態の基本動作は、前述の図７Ｂを用いた第４実施形態の動作と基本的には同様である。本実施形態ではクロックを停止する（Ｓ７７８４）タイミングで、同期部１５８がクロック動作モードを変更してクロックの動作周波数を切り替える。画像処理実行部１５３に対する同期コマンドの入出力の後、クロック供給回路１５８４はクロックＡをクロックＢに切り替える（Ｓ７７８４）。図１３Ｂのように、画像処理実行部に入力されるクロックＡはクロックＢに変更される。このときクロックＡからクロックＢに切り替わるときに一時的に周波数が不安定なクロック期間が生じる。しかしながら、画像処理実行部１５３へのコマンドの入出力は一時停止しており、コマンドの有効信号はディアサートされているため、問題は生じない。
【０１５１】
前述の第４実施形態と同様に、同期部１５８の復帰サイクルレジスタ（不図示）を用いて、予め待機の解除をクロック供給の再開から後に遅らせることができる。
【０１５２】
このとき、復帰サイクルが完了する前に外部の同期先から外部同期Ｓ７７５２が通知済み（Ｓ７７５０）の場合、復帰サイクルの完了後に、同期部１５８は待機の解除を画像入力部１５２１と画像出力部１５２３に指示する（Ｓ７７６０、Ｓ７７６２）。
【０１５３】
また逆に復帰サイクルが完了した後に、外部同期Ｓ７７５２の通知（Ｓ７７５０）があった場合、復帰サイクルは既に完了しているので、そのまま同期部１５８は待機の解除を画像入力部１５２１と画像出力部１５２３に指示する（Ｓ７７６０、Ｓ７７６２）。
【０１５４】
また外部同期先がＣＰＵ１０２の場合、ＣＰＵ１０２は同期割り込み通知（Ｓ７７８１）を受けて、ＣＰＵ１０２が同期部１５８のクロック動作モードを変更してクロックの動作周波数を切り替える。そしてＣＰＵ１０２が、クロックが安定するための時間を待って、外部同期Ｓ７７５２の通知（Ｓ７７５０）を行えば、復帰サイクルは不要である。前述のように画像処理（全体）の処理速度は低下する可能性はあるが、画像処理のデータフローの制御点（同期点）において、ＣＰＵ１０２が動的なクロック制御をすることができる。
【０１５５】
●本実施形態の効果
本実施形態では、画像処理実行部１５３は、画像処理のデータフローの制御点（同期点）における外部との同期待ちの間に、次の画像処理の処理内容に応じて適切な動作周波数に切り替えることができる。そのため、本実施形態では、前述の第４実施形態のようにクロックを一時停止して消費電力を抑える効果は少ないが、外部との同期待ちの時間を用いて素早くクロックの動作周波数を切り替えることが可能となる。
【０１５６】
＜変形例＞
前述までの説明では、画像入出力部１５２が行う、画像処理実行部１５３へのクロックに対する動的クロック停止動作や動的クロック切り替え動作について説明した。前述までの説明の通り、画像処理実行部１５３は、インターコネクト１５３０や画像処理回路（１）１５３１〜（Ｐ）１５３７等で構成される。
【０１５７】
そして、これらのモジュールは、大別するとコマンドリスト（ディスプレイリスト）のレジスタコマンドで設定されるレジスタやＳＲＡＭなどの記憶素子と、データ処理コマンドで画像処理するための演算回路で構成されている。また画像処理回路はプロセッサで構成することもできるが、このときのプロセッサにおいても大別すると、レジスタアレイ、ワークＲＡＭやキャッシュ等の記憶素子と、演算回路で構成されている。
【０１５８】
そこで、前述の動的クロック制御において、これらの回路要素ごとに停止の有無を選択することでさらに消費電力を削減することができる。画像処理装置は、コマンドリスト（ディスプレイリスト）を用いて画像処理のデータフローを制御している。また画像処理装置は、コマンドリスト（ディスプレイリスト）を用いて以下の工程で画像処理を実現している。
【０１５９】
・レジスタコマンドを用いたレジスタライト（書き込み）工程（Ａ）
・レジスタ取得コマンドによるレジスタライトコマンドの展開とレジスタライトコマンドを用いたＳＲＡＭライト（書き込み）工程（Ｂ）
・データ取得コマンドによるデータ処理コマンドの展開と、データ処理コマンドを用いたデータ処理工程（Ｃ）
・データ処理後のレジスタを読み出すための、レジスタリードコマンドを用いたレジスタリード（読み出し）工程（Ｄ）
・データ処理後のＳＲＡＭのデータを読み出すための、レジスタ取得コマンドによるレジスタリードコマンドの展開とレジスタリードコマンドを用いたＳＲＡＭリード（読み出し）工程（Ｅ）
そこで、例えば、画像処理回路の演算回路はデータ処理中でしか動作しないので、工程（Ｃ）のときのみ画像処理回路の演算回路にクロックを供給し、それ以外の工程では演算回路のクロックは停止する。
【０１６０】
また工程（Ｂ）と工程（Ｅ）において読み書きの対象とするＳＲＡＭにだけクロックを供給し、それ以外のＳＲＡＭのクロック供給を停止し、工程（Ｃ）のときは、すべてのＳＲＡＭにクロックを供給する。
【０１６１】
また基本的にレジスタコマンドやレジスタリードコマンドは、画像処理回路のレジスタとＳＲＡＭの両方に値を書き込んだり、値を読み出したりできる。これに対し、ＳＲＡＭへのアクセスは必ず工程（Ｂ）と工程（Ｅ）で読み書きする方針に限定すれば、工程（Ａ）と工程（Ｄ）のときにＳＲＡＭのクロック供給を停止することもできる。
【０１６２】
画像入出部１５２はコマンドリスト（ディスプレイリスト）によって表現される上述の工程を排他で実行して画像処理のデータフローを制御する。そのため各工程の開始と完了を制御する画像入出部１５２が、前述のように各工程で動作する回路要素ごとに詳細なクロック制御で、必要最小限のクロック供給を行うことで、より効果の高い消費電力削減を実現できる。
【０１６３】
また画像入出部１５２は、内包する複数バンクのＳＲＡＭで構成された中間バッファのうち、未使用のＳＲＡＭバンクのクロック供給を停止することも可能である。また画像入出部１５２は、内包するＤＭＡＣの転送がないときに、ＤＭＡＣへのクロック供給を停止することも可能である。
【０１６４】
＜第６実施形態＞
●複数バンド処理におけるＤＭＡ転送の課題
本実施形態の画像処理装置では、前述の通りバンド単位でのデータ処理を行う。しかしながら、このように複数バンドに対するデータ処理を行う際に、ＤＭＡ転送において以下のような問題が発生する。以下、解像度変換処理を行う場合を例として、複数バンドを処理する際に発生するＤＭＡ転送の課題について説明する。なお以下では、ＤＭＡ転送先をグローバルバッファ（前述のＲＡＭ１０６や外部記憶装置１０８内の記憶領域）として説明する。
【０１６５】
まず画像処理装置は、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換を含め、様々な画像処理を内包している。そして画像処理装置は、それらの内包する処理をアプリケーションに応じて取捨選択して組み合せ、装置全体で所望の高画質化を実現する。図１Ｂに示す画像処理実行部１５３には、これらの様々な画像処理が、画像処理回路（１）１５３１〜画像処理回路（Ｐ−１）１５３７として実装されている。これら複数の画像処理回路を組合せて、複雑な画像処理を上述した領域分割（バンド処理）手法により実現する場合、以下の点に注意する必要がある。
【０１６６】
空間フィルタ処理のように二次元領域の処理画素を用いた演算を行う場合、処理後の画像に対しフィルタ径に対応する周辺画素を累積した画像を画像処理回路に入力する必要がある。そしてこのような二次元領域を参照する画像処理が複数回あれば、その都度、周辺画素を累積し、すべての周辺画素を累積した、より広い範囲の画像を入力しなければならない。解像度変換処理も、このような二次元領域を参照する画像処理の１つであり、解像度変換の場合はさらに、処理の前後で出力する画像の大きさが変化する。
【０１６７】
また、入力画像のバンド高さを一定にしてバンド分割による解像度変換を行う場合、その変換倍率によって、出力画像のバンド高さはバンド毎に変化する。
【０１６８】
さらに同時両面スキャンのように、紙面の表と裏の画像処理を、１つの画像処理装置で時分割多重の画像処理で実現する場合には、表と裏の画像データに対する分割領域（例えばバンド）を交互に処理することが必要になる。このような用途では、前述のＤＭＡ機能の設定値は、表の領域の設定値と裏の領域の設定値を交互に算出しなければならない。特に同時両面スキャンのような用途では、スキャナ・センサーの紙面に対する取り付け位置が、紙面の表と裏で異なり、画像処理の読み取り開始位置が紙面の表と裏で異なる。また紙面の表と裏で画像の読み取り範囲の指定が異なっても同様に設定が異なる。また表と裏の画像データが点順次形式の画像データと面順次形式の画像データで異なる場合、ＤＭＡ機能の設定値は違った計算方法で算出しなければならない。
【０１６９】
上述したように、解像度変換の出力画像は小領域ごとにＤＭＡ転送されてグローバルバッファに記憶されるが、このＤＭＡ転送を行うための設定（「開始アドレス」や「繰り返し回数」）は、解像度変換の倍率によってはバンド毎に一様ではなくなる。そのためＤＭＡ転送の設定は困難となり、例えばＤＭＡ転送の開始アドレスは、転送毎に固定値を加算する等の単純な演算では算出できない。
【０１７０】
さらに同時両面スキャンのように紙面の表と裏の画像処理を、１つの画像処理装置で時分割多重にて画像処理するには、表と裏の分割領域（例えばバンド）に対応するＤＭＡ機能の設定を、表と裏に対して交互に算出しなければならない。
【０１７１】
このような場合、ＤＭＡ転送の設定値をバンド毎にファームウェアで計算する必要があり、バンド毎にファームウェアから画像処理の入力／出力ＤＭＡＣにパラメータを逐次設定する必要がある。そして設定後に入力／出力ＤＭＡＣを起動して、画像処理を動作させる。そのため、ファームウェアを動作させるＣＰＵ１０２は、画像処理部１５０をバンド領域の単位で定期的に算出、設定、起動を行う必要があり、また画像処理部１５０の画像処理完了の割り込みを待つ必要がある。システム構成にもよるが、ＣＰＵ１０２がこのような画像処理完了の割り込みを受信して割り込み要因を調べて次の動作に戻るために数ｍｓの時間を要することも珍しくない。その結果ＣＰＵ１０２は、画像処理部１５０の制御と同期（待ち合わせ）のために、ある程度の処理負荷が常にかかっている状態となり、画像処理の間は解放されない。
【０１７２】
●コマンドリストに対応したＤＭＡ情報の切り替え機能
本実施形態の画像処理装置では、上述したＤＭＡ転送の問題を解決するために、図１Ｂに図示したように、ＤＭＡ情報を記憶、管理するための、共有メモリ１８０を画像入出力部１５２に備える。
【０１７３】
以下、図１Ｂ、図１１、図１２を用いて詳細説明する。まず、ＣＰＵ１０２は、レジスタバス１０２１、レジスタＩ／Ｆ１５９を介して、画像入出力部１５２の共有メモリ１８０にＤＭＡ転送に用いるパラメータ（ＤＭＡ情報）を初期設定する（Ｓ９０１）。  例えば、上述の同時両面スキャンの課題においては、以下のＤＭＡ情報の初期値を共有メモリ１８０（第２共有メモリ手段）に設定する（Ｓ９０２）。
【０１７４】
・表面の入力画像データに対するＤＭＡ情報
・表面の出力画像データに対するＤＭＡ情報
・裏面の入力画像データに対するＤＭＡ情報
・裏面の出力画像データに対するＤＭＡ情報
同時両面スキャンの場合は、先の４つのＤＭＡ情報を用いるが、画像データ形式が面順次のときには色数分のＤＭＡ情報が必要となる。またＮ枚の画像データを時分割多重で画像処理するなら、入力と出力について合計Ｎ×２個のＤＭＡ情報が必要になる。共有メモリ１８０には、これらのＤＭＡ情報をＤＭＡテーブル形式で記憶してもよい。
【０１７５】
次にＣＰＵ１０２は画像入出力部１５２をＫｉｃｋして画像処理を起動する（Ｓ９１０）。前述までの説明の通り、画像入出力部１５２はＤＭＡＣ１９４を用いてコマンドリスト（ディスプレイリスト）をＲＡＭ１０６から取得（ＬＯＡＤ）して、コマンド形式で画像処理実行部１５３へ送付（ＳＥＮＤ）する。そして画像入出力部１５２は、画像処理実行部１５３から処理後のコマンドを受信（ＲＥＣＶ）して、パッキングしてコマンドリスト（ディスプレイリスト）に戻し、ＲＡＭ１０６へ格納（ＳＴＯＲＥ）する（Ｓ９２０、Ｓ１１０１）。
【０１７６】
図１２のコマンドリスト（ディスプレイリスト）Ｓ９０４は、表面の画像データを処理するためのコマンドである。前述までの説明のようにレジスタ制御コマンド［０］〜［４］で表面の画像処理のレジスタ設定を行う。
【０１７７】
レジスタ制御コマンドにより設定されるレジスタ設定の中には、画像処理で必要となるＤＭＡ情報のテーブル数Ｃｈと共有メモリ１８０のテーブルの番号が含まれており、テーブル数Ｃｈの数だけテーブル番号Ｔ［０，１，・・・，Ｃｈ−１］が指定されている。例えば、レジスタ制御コマンド［３］〜［４］がこれにあたる。
【０１７８】
画像入出力部１５２は、表面のデータ取得コマンドをデコードする（Ｓ１１０２、ＹＥＳ）。すると、テーブル数Ｃｈとテーブル番号［０，１，・・・，Ｃｈ−１］に従い（Ｓ１１０３）、共有メモリ１８０から表面のＤＭＡ情報をリロード（再取得／ＲＥＬＯＡＤ）する（Ｓ９３０、Ｓ１１０４）。
【０１７９】
ＤＭＡ情報の詳細は後述するが、「開始アドレス」、「繰り返し回数」、「ラインポインタ」、「連続読み出し量」、「インクリメント・アドレス」等である。
【０１８０】
そして、後述のＤＭＡ機能を用いて画像データのＤＭＡ転送を行い、表の画像データについて前述の動作で画像処理を行う（Ｓ９３４、Ｓ１１１０）。
【０１８１】
画像処理が完了すると、画像入出力部１５２は、処理後のＤＭＡ情報を共有メモリ１８０の所定の位置にＤＭＡ情報をリストア（退避／ＲＥＳＴＯＲＥ）する（Ｓ９３８、Ｓ１１９０）。特に後述のラインポインタ等の情報は、次回、表面の画像データの続きを画像処理する際に必要になる。
【０１８２】
データ取得コマンドと関連する画像処理が完了すると、先の説明の通り、コマンドリスト（ディスプレイリスト）からのコマンドの処理を再開する。コマンドリスト（ディスプレイリスト）Ｓ９０４のレジスタ制御コマンド［５］〜［６］は、表面のレジスタリードコマンドであり、表面の画像処理後のＳｔａｔｕｓ値などを読み出し、ＣＰＵ１０２が表面の画像処理の結果を利用する。
【０１８３】
続いて、画像入出力部１５２は、コマンドリスト（ディスプレイリスト）Ｓ９０６記載の裏面の画像処理のためのコマンドを処理する（Ｓ９４０）。裏面の画像処理のためのレジスタ設定は、レジスタ制御コマンドを用いて変更される。特に裏面の画像処理で必要となるＤＭＡ情報に対するテーブル数Ｃｈと、そのテーブル番号Ｔ［０，１，・・・，Ｃｈ−１］は表面の設定値とは異なる。そこで、必ずこれらのレジスタ設定値は必ず変更する。例えば、コマンドリスト（ディスプレイリスト）Ｓ９０６記載のレジスタ制御コマンド［３］〜［４］が、これにあたる（Ｓ１１０３）。
【０１８４】
画像入出力部１５２は、Ｓ９０６記載の裏面のデータ取得コマンドをデコードする（Ｓ１１０２、ＹＥＳ）。すると、変更されたテーブル数Ｃｈとテーブル番号［０，１，・・・，Ｃｈ−１］に従い（Ｓ１１０３）、共有メモリ１８０から裏面のＤＭＡ情報をリロード（再取得／ＲＥＬＯＡＤ）する（Ｓ９５０）。
【０１８５】
そして、後述のＤＭＡ機能を用いて画像データのＤＭＡ転送を行い、裏の画像データについて前述の動作で画像処理を行う（Ｓ９５４、Ｓ１１１０）。
【０１８６】
画像処理が完了すると、画像入出力部１５２は、処理後のＤＭＡ情報を共有メモリ１８０の所定の位置にＤＭＡ情報をリストア（退避／ＲＥＳＴＯＲＥ）する（Ｓ９５８、Ｓ１１９０）。特に後述のラインポインタ等の情報は、次回、裏面の画像データの続きを画像処理する際に必要になる。
【０１８７】
データ取得コマンドと関連する画像処理が完了すると、先の説明の通り、コマンドリスト（ディスプレイリスト）からのコマンドの処理を再開する。コマンドリスト（ディスプレイリスト）Ｓ９０６のレジスタ制御コマンド［５］〜［６］は、裏面のレジスタリードコマンドであり、裏面の画像処理後のＳｔａｔｕｓ値などを読み出し、ＣＰＵ１０２が裏面の画像処理の結果を利用する。
【０１８８】
最後に、画像入出力部１５２は、残りのコマンドリスト（ディスプレイリスト）Ｓ９０８記載のコマンドを処理し、終了コマンドをデコードするとすべての処理を完了する（Ｓ９６０）。そして終了割り込みをＣＰＵ１０２にアサートする（Ｓ９７０）。
【０１８９】
またＣＰＵ１０２は、終了割り込みを受信したあと、共有メモリ１８０の処理後のＤＭＡ情報（Ｓ９９２）を、画像処理の結果として、レジスタバス１０２１とレジスタＩ／Ｆ１５９を介して取得してもよい（Ｓ９９１）。
【０１９０】
本実施形態の画像処理装置では、上記のようなＤＭＡ情報のリロードとリストアにより、表と裏の分割領域を、各々続きから再開できるように、入力／出力の画像データを管理するためのラインポインタを導入する。ラインポインタはすなわち、バンド領域の上端ライン位置を示す。本実施形態ではラインポインタを用いることで、以下に説明するような、画像処理に特化したＤＭＡ機能を備える。
【０１９１】
●第１のＤＭＡ機能（「開始アドレス」の自動計算機能）
まず第１のＤＭＡ機能として、ラインポインタを用いてＤＭＡ転送の「開始アドレス」を自動計算する機能を有する。ここで、グローバルバッファにおける画像データの格納領域とラインポインタの関係について、図１０を用いて説明する。１ページ（１画面）分の画像データに相当する記憶領域がグローバルバッファに割り当てられている場合を図１０（上の図）に示す。
【０１９２】
その先頭アドレスがページ左上の画像データを記憶するように、予め設定されている。図１０には、入力画像データを記憶する領域ＢＩと、出力画像データを記憶する領域ＢＯとが別々に用意されており、互いが重ならないように、グローバルバッファに確保されている。上述したようにバンド領域ごとに順次画像処理が繰り返されるため、図１０には、時間経過に伴って入力画像データのバンド領域（ａ）〜（ｄ）と、出力画像データのバンド領域（ｘ）〜（ｘａ）が遷移する旨が示されている。各バンド領域の上端のライン位置を一時的に記憶するため、図２Ｂに示した画像入力部１５２１と画像出力部１５２３のそれぞれが、ポインタ管理部１５４２と１５４４を備えている。ポインタ管理部１５４２と１５４４はすなわち、ラインポインタを保持するレジスタ（不図示）を有する。
【０１９３】
ＤＭＡ転送を行う際には、ＤＭＡ転送の開始アドレスを算出する必要がある。本実施形態では、一時的に記憶されたラインポインタを利用して、ＤＭＡ転送の開始アドレスを下式に従って算出する。
【０１９４】
ＤＭＡ転送の開始アドレス＝先頭アドレス＋インクリメント・アドレス×ラインポインタ        …（１）
ここで図１０（上の図）を用いて一連のバンド処理を説明する。まず、第１バンド領域（ａ）を画像データとして入力する。このときのラインポインタｌｉｎｅ＿ｖ＿ｐｔｒ（ａ）は“０”である。そのため、画像データ入力のＤＭＡ転送の開始アドレスは、式（１）から、図１０に示す「入力バッファの先頭アドレス」となる。そして、入力された画像データを処理し、第１バンド領域（ｘ）を画像データとして出力する。このときのラインポインタｌｉｎｅ＿ｖ＿ｐｔｒ（ｘ）も“０”である。この画像データ出力のＤＭＡ転送の開始アドレスについても、入力時と同様に、図１０に示す「出力バッファの先頭アドレス」となる。
【０１９５】
次に、第２バンド領域（ｂ）を画像データとして入力する。このときのラインポインタｌｉｎｅ＿ｖ＿ｐｔｒ（ｂ）は、第１バンド（ａ）から第２バンド（ｂ）へのラインポインタの変更量（遷移量）を加算した値となる。そのため、画像データ入力のＤＭＡ転送の開始アドレスは、式（１）から、「入力バッファの先頭アドレス＋「インクリメント・アドレス」×変更量（遷移量）」となる。
【０１９６】
一方、画像処理後に出力される第２バンド領域（ｙ）のラインポインタｌｉｎｅ＿ｖ＿ｐｔｒ（ｙ）は、出力バンド領域の高さが加算された値となる。そのため、第２バンド領域を出力する際のＤＭＡ転送の開始アドレスは式（１）から、「出力バッファの先頭アドレス＋「インクリメント・アドレス」×（出力バンド高さ）」となる。
【０１９７】
さらに、第３バンド領域（ｃ）／（ｚ）の画像データを入力／出力するが、画像データ入力に関しては第２バンド領域の動作と同様であるため、説明を割愛する。上述したように、処理後のバンド領域の高さの変動に伴い、ラインポインタも一様な変更量（遷移量）にはならない。ラインポインタの管理の詳細については後述するが、出力時のＤＭＡ転送の開始アドレスは、ラインポインタに従い式（１）から自動算出される。
【０１９８】
●第２のＤＭＡ機能（「繰り返し回数」の自動取得機能）
なお、ＤＭＡＣ１９４では画像データ転送の「繰り返し回数」は一定であるから初期設定のままでよい。一方、ＤＭＡＣ１９６では画像データ転送の「繰り返し回数」は一定とは言えない。その場合、例えば、画像出力部１５２３が、画像処理実行部１５３から受信した分割領域の小領域のライン数（Ｂｄｈ＿ｏｕｔ）を自動取得し、ＤＭＡＣ１９６の「繰り返し回数」として自動設定すればよい。
【０１９９】
その後、画像出力部１５２３はＤＭＡＣ１９６を起動し、中間バッファ制御部１５２２を介して中間バッファ２３２の出力領域２３６から画像データを読み出す（ＲＥＡＤ）。そして、ＤＭＡＣ１９６は上記初期設定から開始アドレスを自動算出して、出力バンド領域の画像データをグローバルバッファに書き込む。小領域の画像データをすべて書き込むと、画像処理が完了する。
【０２００】
●第３のＤＭＡ機能（ラインポインタ管理機能）
本実施形態の画像処理装置はさらに、第３のＤＭＡ機能として、ラインポインタの管理機能を有する。以下、図１１を用いて、本実施形態におけるラインポインタ管理を伴うデータ転送処理について説明する。図１１に示す処理は、画像入力部１５２１と画像出力部１５２３の各々において実行されるが、ここでは、主に画像出力部１５２３による処理として詳細に説明を行う。
【０２０１】
図１２のＳ９１０に示したような初期設定（Ｓ９０２）を行った後、データ取得コマンドのデコードを起点に１バンドの処理を開始する（Ｓ１１１２）。まず、ポインタ管理部１５４４に保持されているラインポインタから、上記（１）式により開始アドレスを算出する（Ｓ１１１４）。そして、小領域の画像処理を開始する（Ｓ１１２０）。小領域（処理単位）毎の画像の読み出し、送信、受信、画像の書き出しの各動作は、前述の通りであり、ＤＭＡＣ情報のリロード後に、小領域単位の情報を書き換える（Ｓ１１３０）。小領域単位の情報を書き換えた後、該当する小領域の開始アドレスや繰り返し回数をＤＭＡＣに設定する（Ｓ１１３４）。該当する小領域はバンドの長さ方向（副走査方向）に走査していくため、まずバンド領域の開始アドレスを算出し、小領域の位置に合わせて「連続読み出し量」から小領域の開始アドレスを算出する。そして求めた開始アドレスをＤＭＡＣ１９６に再設定していく。繰り返し回数に関しては上述した通りである。その後、小領域のＤＭＡ動作を行って（Ｓ１１３６）、小領域の画像処理を完了する（Ｓ１１４０）。
【０２０２】
Ｓ１１４０での小領域の画像処理完了により、１バンド分のすべての小領域の処理が完了するのであれば（Ｓ１１５０のＹＥＳ）、１バンドの処理が完了したとする。一方、１バンド分のすべての小領域の処理が完了していなければ（Ｓ１１５０のＮＯ）、Ｓ１１２０に戻って次の小領域の処理を繰り返す。
【０２０３】
１バンドの処理が完了したならば（Ｓ１１５０のＹＥＳ）、１バンド単位の情報を書き換える（Ｓ１１６０）。具体的には、ポインタ管理部１５４２や１５４４に保持されているラインポインタを更新する。画像入力部１５２１のポインタ管理部１５４２では、ラインポインタの値に、予め初期設定で設定された変更量を加算して、ラインポインタを更新する。画像出力部１５２３のポインタ管理部１５４４では、ラインポインタの値に、小領域単位の情報の書き換え（Ｓ１１３０）で使用した受信ライン数を加算して、ラインポインタを更新する。これで、１バンドの処理を完了する（Ｓ１１８０）。
【０２０４】
次バンドの処理を行う際には、Ｓ１１６０と同様に所定の変更量（遷移量）か受信ライン数によって、ラインポインタが適切に更新されている。そして、更新されたラインポインタを含むＤＭＡ情報は共有メモリ１８０にリストア（Ｓ１１９０）して記憶されている。そして、次回の表面、もしくは裏面の該当するバンド処理の再開時に、バンド先頭の開始アドレスの算出（Ｓ１１１４）により、適切な開始位置からバンド処理を再開できる。
【０２０５】
以上のように本実施形態の画像処理装置においては、第１〜第３のＤＭＡ機能として、ラインポインタに基づくＤＭＡ転送「開始アドレス」の自動計算機能、ＤＭＡ転送の「繰り返し回数」の自動計算機能、ラインポインタ管理機能、を有する。これにより、画像入力部１５２１が中間バッファ２３２を介してＬＯＡＤ動作と送信動作を連動することができ、画像出力部１５２３が中間バッファ２３２を介して受信動作とＳＴＯＲＥ動作を連動することができる。これら動作の連動により、画像処理の動作状況に連動しながら、ＣＰＵ１０２を介在することなく、複数バンドの画像処理を連続的に実行することができる。
【０２０６】
●本実施形態の効果
従来の画像処理装置では、解像度変換によりバンド毎に入力／出力画像の画素数が変わることに対し、ファームウェアでの事前計算によってＤＭＡの設定を行っていた。対して本実施形態では、画像処理の入力／出力ＤＭＡＣが画像処理の結果に追従して動作することができるため、ＣＰＵによる画像処理部の設定、起動、同期などの制御が不要となる。また同時両面スキャンのように、表面と裏面の分割領域を時分割多重で交互に処理するときにも、ＣＰＵによるＤＭＡの設定の介在は不要である。その結果、ＣＰＵと画像処理部との待ち合せ時間が削減でき、画像処理全体を高速化できる。また上述したファームウェアによる一連の制御処理をＣＰＵがバンド毎に実行する必要が無くなるため、ＣＰＵの制御負荷を減らすことができる。
【０２０７】
以上説明したように本実施形態によれば、画像処理部への画像データの転送を効率化して画像処理全体を高速化し、ＣＰＵの処理負荷を軽減することができる。
【０２０８】
＜変形例＞
本実施形態における中間バッファ２３２を、２バンク構成の記憶手段に拡張することができる。例えば図２Ｂに示すように、中間バッファ制御部１５２２を、記憶領域Ａと記憶領域Ｂからなる２バンク構成とする。このような２バンク構成にすることにより、中間バッファ制御部１５２２は小領域（処理単位）を同時に２つまで格納できる。そして動作状況に応じて、記憶領域を入れ替える（バンクチェンジ）。上述したように、中間バッファ制御部１５２２が１バンク構成であれば、入力画像データの読み出し（ＬＯＡＤ）動作と、入力画像データから画素値を生成する送信（ＳＥＮＤ）動作とを時分割で行っていた。また、出力画素値から出力画像データを生成する受信（ＲＥＣＶ）動作と、出力画像データの書き込み（ＳＴＯＲＥ）動作とを時分割で行っていた。本変形例では中間バッファ制御部１５２２を２バンク構成とすることで、入力画像データから画素値を生成する間にも、次の小領域（処理単位）の入力画像データを受け取れる。また、出力画素値から出力画像データを生成する間にも、生成済みの出力画像データを出力できる。したがって、ＤＭＡＣ１９４と送信部１５４１の処理を並列化でき、またＤＭＡＣ１９６と受信部１５４３の処理を並列化できる。つまり、「読み出し（ＬＯＡＤ）動作」と「送信（ＳＥＮＤ）動作」とを同時動作させ、「書き込み（ＳＴＯＲＥ）動作」と「受信（ＲＥＣＶ）動作」とを同時動作させることが可能となる。
【０２０９】
本変形例では、処理前と処理後の２種の画像データを同時に入出力するので、中間バッファ２３２の入力領域と出力領域がそれぞれのバンク（バンクＡとバンクＢ）に分けられる。したがって、入力領域と出力領域のそれぞれについての先頭アドレスを、ＣＰＵ１０２が予め設定しておけばよい。処理を簡単に行うためには、バンクＡとバンクＢの先頭アドレスは１セットあればよい。そして各バンクの容量は、処理前と処理後の画像データの入力バンド高さと出力バンド高さの最大値をもとに算出すればよい。
【０２１０】
このように本変形例によれば、画像処理部で同時に扱う複数種の画像データに対し、各々に中間バッファを割り当てることで、画像処理を高速化することができる。
【０２１１】
＜第７実施形態＞
以下、第７実施形態について説明する。なお、第７実施形態における画像処理装置の構成は上述した第６実施形態と同様であるため、説明を省略する。上述した第６実施形態では、ＲＡＭ１０６や外部記憶装置１０８のグローバルバッファに１ページ（１画面）分の入力／出力の画像データを記憶するための記憶容量を備えていた。しかしながら、製品の製造コストを抑えるためには、ＲＡＭ１０６や外部記憶装置１０８にグローバルバッファとして１ページ分の画像データを記憶するに十分な記憶容量を備えられない場合もある。第７実施形態では、グローバルバッファが１ページ分の容量に満たない場合であっても、グローバルバッファをリング式のバッファ（以下、リングバッファと称する）として使用することで、１ページ分の画像処理を可能とする。
【０２１２】
図１０（下の図）にリングバッファを用いたバンド処理の例を示す。処理中の画像データのライン位置がバッファの下端（ｌｉｎｅ＿ｖ＿ｔｈｒ）に到達すると、ライン位置をバッファの上端（“０”）に戻して循環させるように制御する必要がある。このような循環制御を行うことで、１ページ分を処理するために必要となる記憶容量を、１ページの全体分よりも小さく抑えるこができる。図１０の例ではグローバルバッファに、入力画像データを記憶する領域ＢＩｒと、出力画像データを記憶する領域ＢＯｒが、互いに重ならない記憶領域（リングバッファ）としてグローバルバッファに確保されている。図１０においてもバンド領域ごとに順次画像処理が繰り返されるため、グローバルバッファの例と同様に、時間の経過に伴って入力画像データのバンド領域（ａ）〜（ｄ）と出力画像データのバンド領域（ｘ）〜（ｘａ）が遷移する旨が示されている。そして、第６実施形態と同様に、各バンド領域の上端のライン位置を一時的に記憶するため、画像入力部１５２１と画像出力部１５２３はそれぞれのポインタ管理部１５４２，１５４４でラインポインタを管理している。
【０２１３】
図１０において、入力画像データのバンド領域（ｃ）と出力画像データのバンド領域（ｚ）は、処理の途中でリングバッファの記憶容量が不足する。あるバンド領域がリングバッファ下端に到達すると、その後のバンド領域はリングバッファ上端からデータ記憶がなされるため、バンド領域（ｃ）は（ｃ−０）と（ｃ−１）に分割され、バンド領域（ｚ）は（ｚ−０）と（ｚ−１）に分割されてしまう。そこで第７実施形態では、データ転送処理の手順が第６実施形態とは変わってくる。
【０２１４】
●ラインポインタ管理機能
以下、図１１を用いて、第７実施形態においてリングバッファを用いる際の、ラインポインタ管理を伴うデータ転送処理について説明する。なお以下では、リングバッファを用いることによる第６実施形態からの変更点のみを説明し、第６実施形態と同様の処理については説明を省略する。
【０２１５】
図１１において、小領域単位の情報を書き換えた後（Ｓ１１３０）、該当する小領域の開始アドレスや繰り返し回数をＤＭＡＣに設定するのに先立ち、ラインポインタがリングバッファの下端に到達するか否かを判定する（Ｓ１１３２）。すなわち、ＤＭＡ転送の「繰り返し回数」は小領域のバンド高さ（副走査方向のライン長）を示すため、ラインポインタにバンド高さを加算したライン位置が、リングバッファの下端のライン位置（ｌｉｎｅ＿ｖ＿ｔｈｒ）よりも大きくなるか否かを判定する。加算したライン位置がリングバッファ下端と同じか小さいとき（Ｓ１１３２のＮＯ）、第６実施形態と同様の処理（Ｓ１１３４，Ｓ１１３６）を行う。一方、加算したライン位置がリングバッファ下端より大きいとき（Ｓ１１３２のＹＥＳ）、ＤＭＡ転送を２回起動する。
【０２１６】
１回目のＤＭＡ転送では、「開始アドレス」は第６実施形態と同様に設定するが、「繰り返し回数」はラインポインタからリングバッファ下端のライン位置（ｌｉｎｅ＿ｖ＿ｔｈｒ）までの値として設定する（Ｓ１１７２）。そして、１回目のＤＭＡ転送を行う（Ｓ１１７３）。この１回目のＤＭＡ転送により、分割された小領域の上部分（バンド領域（Ｃ−０）や（ｚ−０）が転送される。
【０２１７】
次に２回目のＤＭＡ転送では、ラインポインタをリングバッファ上端のライン位置を示す“０”として、「開始アドレス」を算出する。また、「繰り返し回数」としては、１回目のＤＭＡ転送の「繰り返し回数」をバンド高さから差し引いた残りの数を設定する（Ｓ１１７４）。そして２回目のＤＭＡ転送を行う（Ｓ１１７５）。この２回目のＤＭＡ転送により、分割された小領域の下部分（バンド領域（Ｃ−１）や（ｚ−１）が転送される。このように第７実施形態では、リングバッファ境界を跨ぐときにＤＭＡ転送が分割されない。
【０２１８】
その後、１バンドの処理が完了したならば（Ｓ１１５０のＹＥＳ）、ポインタ管理部１５４２や１５４４に保持されているラインポインタを更新するのに先立ち、ラインポインタがリングバッファ下端に到達するか否かを判定する（Ｓ１１７０）。この判定はＳ１１３２と同様である。すなわち、ラインポインタにバンド高さを加算したライン位置が、リングバッファ下端と同じか小さいとき（Ｓ１１７０のＮＯ）、第６実施形態と同様にラインポインタを更新する（Ｓ１１６０）。一方、加算したライン位置がリングバッファ下端より大きいとき（Ｓ１１７０のＹＥＳ）、リングバッファ上端（ライン位置“０”）からの２回目のＤＭＡ転送を実行した際に設定した「繰り返し回数」から１を減じた値に、ラインポインタを更新する（Ｓ１１７８）。そして１バンドの処理を完了する（Ｓ１１８０）。
【０２１９】
このようにリングバッファに対し、所定の変更量（遷移量）か受信ライン数に従ってラインポインタが適切に更新されるため、バンド先頭の開始アドレスの算出（Ｓ１１１４）により、適切な開始位置からバンド処理を再開できる。
【０２２０】
以上説明したように第７実施形態によれば、リングバッファに対応したラインポインタ管理機能を備えることで、入力／出力画像データを格納するグローバルバッファの記憶容量を削減することができる。同時両面スキャンのように複数の画像データを各々画像処理するときには各々にバッファが必要になるため、記憶容量の削減が大変重要と言える。
【０２２１】
＜第８実施形態＞
以下、第８実施形態について説明する。なお、第８実施形態における画像処理装置の構成は上述した第６実施形態と同様であるため、説明を省略する。上述した第６および第７実施形態では、処理対象である画像データが図４Ａに示す点順次形式をなす例を示した。第８実施形態では、さらに異なるデータ形式の画像データを処理する例を示す。
【０２２２】
第８実施形態における画像データの構造および格納例を図４Ｂに示す。図４Ｂは、面順次形式の画像データの格納例として、ＲＡＭ（ＤＲＡＭ）１０６のデータ領域に、Ｓ０＿ＩＭＧ４２０からＳ３＿ＩＭＧ４２３までの４種の画像データが格納された例を示している。この４種のデータは、画像読み取り部１２０で読み取られた画像データに対して色空間変換や濃度補正処理を施した後、第１色Ｋ（Ｂｌａｃｋ）、第２色Ｍ（Ｍａｇｅｎｔａ）、第３色Ｃ（Ｃｙａｎ）、第４色Ｙ（Ｙｅｌｌｏｗ）のデータに変換したものである。そしてＤＲＡＭの性能を落とさずに画像データの読み書きができるように、各々格納される画像データの容量の最小単位を、第６実施形態と同様に、４０８に示すように３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとしている。すなわち、画像データＳ０＿ＩＭＧ４２０からＳ３＿ＩＭＧ４２３の格納容量は３２Ｂｙｔｅの整数倍となる。
【０２２３】
次に、画像データの構造について詳細に説明する。画像データ４３０は、第１色Ｋ（Ｂｌａｃｋ）の画像データ（Ｓ０＿ＩＭＧ４２０）を示しており、３２Ｍ×Ｎｂｉｔのサイズからなる。画像データ４３０は３２Ｂｙｔｅ単位の領域データからなり、各領域（例えば領域４３２）は、４３４で示すように、複数個（この例では８個）の３２ｂｉｔ長がパッキングされている。そして、１つの３２ｂｉｔ長データには、４３６で示すようにそれぞれ８ｂｉｔ長のＫ（Ｂｌａｃｋ）の色要素が複数個（この例では４つ）パッキングされている。残りの第２色Ｍ〜第４色Ｙまでの画像データについても、同様の構造からなる。
【０２２４】
●画像データの入出力方法
以下、第８実施形態における、グローバルバッファから画像入出力部１５２への、または画像入出力部１５２からＲＡＭ１０６への画像データの入出力方法について、第６実施形態と同様に図２を用いて詳細に説明する。第８実施形態では、図４Ｂに示す面順次形式の画像データを処理する場合、第１色Ｋから第４色Ｙの４種の画像データについて、第６実施形態で説明した小領域（処理単位）ごとにグローバルバッファから読み出す。例えば、図２に示す小領域（１）２１１に対応する画像データついては、ＤＭＡＣ１９４の先頭アドレスとして、図４Ｂに示す以下の４種のアドレスを順に切り替えて設定し、ＤＭＡ転送を４回実行する。これにより、第１色Ｋ〜第４色Ｙの色ごとにＤＭＡ転送が行われる。
【０２２５】
・先頭アドレス［１回目］：Ｓ０＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［２回目］：Ｓ１＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［３回目］：Ｓ２＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・先頭アドレス［４回目］：Ｓ３＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
そして、上記４種のアドレスに従って読み出した４種（４色）の画像データの全てを、一旦、中間バッファ２３２へ格納する。そして、４種の画像データの所定位置（座標）における４つの色要素を読み出し、これらを１つにまとめて点順次形式の画素値（Ｃ，Ｍ，Ｙ，Ｋ）として、画像処理実行部１５３へ入力すればよい。また、画像処理実行部１５３による処理後の点順次形式の画素値（Ｃ，Ｍ，Ｙ，Ｋ）から４つの色要素を取り出し、出力領域内の４種の出力画像データの領域に各々格納する。当然ながら、出力画像データのグローバルバッファへの書き出しについても、４回のＤＭＡ転送が必要となる。
【０２２６】
そのため、共有メモリ１８０に記憶するＤＭＡ情報も４個必要となる。そして画像入出力部１５２には、テーブル数Ｃｈ＝４と、それに対応する４このテーブル番号Ｔ［０，１，・・・，３］が適切に設定される。
【０２２７】
●ラインポインタ管理機能
第８実施形態では、グローバルバッファに対する画像データの入出力の際に、面順次形式の画像データに応じた面数分、すなわち４回のＤＭＡ転送が必要となることから、上述した第６および第７実施形態の処理手順に対してＤＭＡ動作の回数が変わる。
【０２２８】
以下、図１１を用いて、第８実施形態において面順次形式の画像データを処理する際の、ラインポインタ管理と伴うデータ転送処理について説明する。図１１は、第７実施形態において図１１に示した処理手順に対し、面順次形式の画像データを扱う第８実施形態に特有の処理（Ｓ１１３８，Ｓ１１３９）を加えたものである。以下では、第７実施形態からの変更点のみを説明し、第６および第７実施形態と同様の処理については説明を省略する。
【０２２９】
図１１において、小領域単位のＤＭＡ動作（Ｓ１１３６）の後、面順次形式の面数（色数）に応じた回数（以下、ＤＭＡ面数）分のＤＭＡ動作を行う（Ｓ１１３８）。上記の例では４種（４色）の画像データであるため、ＤＭＡ動作が４回未満のときは（Ｓ１１３８のＮＯ）、所定の回数が完了するまでＤＭＡ動作を繰り返し、ＤＭＡ動作を４回行えばＤＭＡ動作を完了とする（Ｓ１１３８のＹＥＳ）。
【０２３０】
なお、ポインタ管理部１５４２，１５４４は予め、ＤＭＡ面数分のラインポインタを備えており、１バンド分の小領域の処理完了に伴い、ＤＭＡ面数分のラインポインタを更新する（Ｓ１１３９）。
【０２３１】
以上説明したように第８実施形態では、入力／出力画像データの面数に対応したラインポインタ管理機能を備えるため、様々な画像データの形式に対応して柔軟に画像処理を実現することができる。
【０２３２】
前述の第６〜第８実施形態において、画像処理のデータフローの制御点（同期点）においてデータ取得コマンドを同期コマンドとして設置している。そして画像処理の制御点（同期点）において、必要なＤＭＡ情報をリロードして画像処理を実行し、画像処理の完了後に処理結果を反映したＤＭＡ情報をリストアする。このようなデータフローの制御点（同期点）を起点としてＤＭＡ転送を制御することにより、点順次、面順次、リングバッファ、同時両面や複数面などの多彩な画像処理を柔軟に処理できる。先行技術では、予め定まったＤＭＡ転送パターンを定義し、その都度、ＤＭＡ転送を細切れに起動して画像処理をＤＭＡ転送の処理単位で実行していた。実施形態では、画像処理の制御点（同期点）毎にＤＭＡ情報の値が更新されており、一連の画像処理そのものは連続動作している。
【０２３３】
また、先の第１〜第４実施形態で示したＣＰＵ１０２との外部同期のし方を第６〜第８実施形態に応用することもできる。
【０２３４】
つまり、第６〜第８実施形態のデータフローの制御点（同期点）であるデータ取得コマンドをトリガとしてＣＰＵ１０２が共有メモリのＤＭＡ情報を読み書きする。その結果、ＣＰＵ１０２が自身のソフトウェアと連動してＤＭＡ情報を書き換えて、画像処理のＤＭＡ転送の読み先をＣＰＵ１０２の処理結果に応じて切り替えたりできる。またＣＰＵ１０２がＤＭＡ情報を読み出し、ラインポインタの値から画像処理の実行の進捗を監視することも可能である。
【０２３５】
＜＜その他の実施形態＞＞
上述した第１〜第８実施形態を応用することによって、さらに多種多様な画像処理に対応することができる。
【０２３６】
（画像形式と同期手法について）図４Ａのような点順次の画像形式でも、図４Ｂのような面順次の画像形式でも、データ取得コマンドに対応する画像データのＤＭＡ転送の回数が変わるだけである。そして同期方法では、これらの変更に柔軟に対応できる。一般的な画像処理装置ではＤＭＡ転送を起点に外部（ＣＰＵ、スキャナや映像の入力装置）と同期するため、画像形式によってＤＭＡ転送の回数が変化すると、外部（ＣＰＵ、スキャナや映像の入力装置）との制御のし方を変更する必要がある。同期方法では、画像形式の変更による制御変更の影響を軽減できる。
【０２３７】
（その他のＤＭＡ転送単位について）また画像処理装置を高速化するため、画像処理部に大容量のバッファを設け、１回の画像データのＤＭＡ転送単位を大きくする必要がある。同期手法では、またＤＭＡ転送を起点に外部（ＣＰＵ、スキャナや映像の入力装置）と同期するわけではないので、制御点（同期点）は転送単位によらない。その結果、同期方法では、１回のＤＭＡ転送単位の変更に柔軟に対応することができる。
【０２３８】
また、映像処理などで使用されるＩＰ変換なども、適用対象となる。ＩＰ変換とは、副走査方向に画素が間引かれたインターレース画像を、時間軸方向に複数フレームを用いて１フレームの画素が間引かれていないプログレッシブ画像を合成する処理である。例えば、２フレームのインターレース画像から１フレームのプログレッシブ画像を合成する場合、入力画像の総画素数と出力画像の画素数は同じとなる。しかしながら高品位なＩＰ変換では、３〜５フレームのインターレース画像から１フレームのプログレッシブ画像を合成することになるので、入力画像より出力画像の方が画素数は少なくなる。例えばＩＰ変換では、ユーザが選択した動作モード（画質モード）により入力画像と出力画像の画素数の関係が変わるため、入力画像データのＤＭＡ面数をインターレース画像のフレーム数とし、出力画像データのＤＭＡ面数を１フレームとすればよい。つまり、第６実施形態と第８実施形態とを組み合わせることで対応することができる。
【０２３９】
上述したように近年の画像処理装置は、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換を含め、様々な画像処理を内包する。そして画像処理装置は、装置全体で所望の高画質化を実現するために、それら画像処理をアプリケーションに応じて取捨選択し、組み合せて用いることが多い。このような画像処理装置において実施形態の手法を用いることで、入力画像データのラインポインタの変更量（遷移量）を一定にしつつ、出力画像データのＤＭＡＣ情報については処理後の画像データの大きさに追従して自動設定（変更）できる。そして入力画像と出力画像のＤＭＡＣ情報を共有メモリに必要な数だけ記憶し、必要なタイミングでリロード／リストアすることで、複数の画像処理を同時に実現できる。
【０２４０】
先の例では、表面、裏面を交互に画像処理するような説明をしたが、必要なＤＭＡ情報を、適切にリロード／リストアできるなら、画像処理は交互である必要はない。複数の画像処理を任意の順番に必要なだけ画像処理し、途中経過を一時記憶して、再開することを容易に実現できる画像処理装置である。そして、これらの多種多様な画像処理はコマンドリスト（ディスプレイリスト）を書き換えるだけで制御できるのである。その結果、様々な画像処理を組み合せて実行する場合でも、本発明を適用することで、分割された領域ごとにＤＭＡＣ情報を設定し、ＤＭＡＣを起動し、ＤＭＡＣと同期（待ち合わせ）するＣＰＵ１０２の負荷を軽減できる。
【０２４１】
また、上述した第６〜第８実施形態では、画像データに対する領域分割手法として、バンド処理を行う場合を例として説明した。本発明は、他の領域分割手法であるブロック（タイル）処理についても、同様に適用可能である。ブロック処理では、主走査方向と副走査方向に沿って画像データを２次元でタイル領域に分割する。上記各実施形態における小領域（処理単位）が、この２次元分割されたタイル領域に相当し、複数の小領域を順次読み出す手法はブロック処理そのものである。そして、上記各実施形態では、ラインポインタやリングバッファの閾値（下端ライン位置）をバンド高さ方向に沿って備える例を示したが、さらに、バンド長さ方向に沿ったカラムポインタとリングバッファの閾値（例えば右端位置）を備える。そして、１次元的なポインタ管理を２次元的に拡張することで、本発明の手法をバンド処理からタイル処理に拡張することができる。
【０２４２】
また、上記各実施形態では画像データの読み書きの単位を３２Ｂｙｔｅとして説明した。グローバルバッファの構成や、グローバルバッファを実現する記憶装置（ＤＲＡＭ、フラッシュＲＯＭ、ハードディスク、ＳＳＤ等）の種類、そして実行する画像処理の種類等によって、この単位は変更可能である。読み書きの単位が変わったとしても、画像データを記憶するローカルバッファ（中間バッファ２３２）に記憶される画素数が変わるだけであるため、本発明はそのまま適用可能である。
【０２４３】
また、画像データにおける３２Ｂｙｔｅ単位のデータ構造を、画像入力部１５２１と画像出力部１５２３とで、異なる画像形式として組み合せてもよい。例えば、画像入力部１５２１と画像出力部１５２３は、点順次形式（図４Ａ）と面順次形式（図４Ｂ）の所望の組合せにおいて動作できる。
【０２４４】
以上では、データフローの制御点（同期点）を指示するデータ取得コマンドにより、共有メモリ（第２の共有メモリ手段）のＤＭＡ情報を切り替えることについて説明したが、上記以外にも応用することが可能である。例えば、共有メモリ（第２の共有メモリ手段）をパラメータバッファとして考え、ＣＰＵ１０２が共有メモリに画像処理のパラメータを保持し、データフローの制御点（同期点）を指示するレジスタ取得コマンドで、共有メモリのパラメータを読み出し、レジスタライトコマンドを生成して画像処理回路の設定値を変更する。また共有メモリのパラメータからデータ取得コマンドで特定のデータ処理コマンドを生成したり、共有メモリのパラメータからＪｕｍｐコマンドの分岐先や強制的に分岐の実行を抑制したり、待機コマンドの待機条件を変更したりできる。これらの応用により、データフローの制御点（同期点）で、コマンドに従い、共有メモリに保持されたコンテキスト（ＤＭＡ情報、画像処理パラメータ、分岐先アドレス、制御パラメータなど）を選択して動作やデータフロー制御を切り替えることが可能となる。
【０２４５】
以上の実施形態により、設定したデータフローの制御点（同期点）に合わせて画像処理実行部の動的なクロック制御をすることができる。その結果、ファームウェアでは制御できない程の短い待機時間でさえ、画像処理実行部のクロックを一時的に停止し、画像処理の待機時間の消費電力を抑えることができる。そして、動的なクロック制御の際に、ファームウェアは介在しないので画像処理の速度を低下させることはない。
【０２４６】
画像処理の前後で画像処理の設定（画素数、処理範囲、画像形式）が変動する場合でも、データ転送を効率化することができる。例えば、同時両面スキャンのように、裏と表で連続する分割領域の設定が関係なく切り替わるような場合にもデータ転送を効率化できる。
【０２４７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０２４８】
１５２１  画像入力部
１９４  ＤＭＡＣ（Ｒｅａｄ）
１５４１  送信部
１５２２  中間バッファ制御部
１５２３  画像出力部
１５４３  受信部
１９６  ＤＭＡＣ（Ｗｒｉｔｅ）
１５３  画像処理実行部
５４８、５６０  同期コマンド（待機コマンド）
５５０、５６４  同期コマンド（ＪＵＭＰコマンド）
【図１】
0006732534.tif 000002
【図２】
0006732534.tif 000003
【図３】
0006732534.tif 000004
【図４】
0006732534.tif 000005
【図５】
0006732534.tif 000006
【図６】
0006732534.tif 000007
【図７】
0006732534.tif 000008
【図８】
0006732534.tif 000009
【図９】
0006732534.tif 000010
【図１０】
0006732534.tif 000011
【図１１】
0006732534.tif 000012
【図１２】
0006732534.tif 000013
【図１３】
0006732534.tif 000014