(57)【要約】【課題】  複数の画像処理装置を効率よく使って画像認識システムを高速化するため、並列処理とパイプライン処理を柔軟に組み合わせることを可能にする。【解決手段】  複数の画像処理コマンドを一括して管理するスケジューラに、並列処理が可能な一つの画像処理コマンドを複数の画像処理装置に割り振るための判定手段と分割した処理アドレスを生成する手段を設ける。【選択図】図１
2009086789.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと画像処理専用回路とを具備する画像処理システムにおいて、
前記画像処理システムは、画像入力手段と、それぞれに画像処理コマンドを実行できる複数の画像処理手段と、複数の前記画像処理手段に対する前記画像処理コマンドを一括して受け付けるスケジューラと、を有し、
前記スケジューラは、前記画像処理コマンドが分割可能である場合であって、かつ複数の前記画像処理手段が使用可能な場合に、複数の前記画像処理手段に分割実行を指示し、
それ以外の場合では、いずれかの画像処理手段に単独実行を指示することを特徴とする画像処理システム。
【請求項２】
前記画像処理コマンドが、処理すべき入力画像を複数の領域に分割しても処理結果が変化しない画像処理コマンドであって、
前記スケジューラは分割した複数の領域に対する処理開始アドレスを生成する機能を有することを特徴とする請求項１に記載の画像処理システム。
【請求項３】
複数の前記画像処理装置の各々において実行可能な前記画像処理コマンドが異なる場合、前記スケジューラが、受け付けた前記画像処理コマンドを実行可能である前記画像処理装置を判定する手段を有することを特徴とする請求項１に記載の画像処理システム。
【請求項４】
前記スケジューラが、
複数の前記画像処理装置の実行状態を監視し、前記画像処理コマンドが、複数の前記画像処理装置で分割実行可能な種類であるかを判定する手段を有し、
複数の前記画像処理装置が使用可能でなかったために単独実行を行っている前記画像処理装置の進行状況を監視し、分割実行への変更が可能であるか否かを判定する手段を有し、
実行途中で他の前記画像処理装置が使用可能になり、かつ、進行状況から分割実行可能であると判断した場合、単独実行から分割実行に指示を変更する手段を有することを特徴とする請求項１に記載の画像処理システム。
【請求項５】
前記スケジューラが、前記画像処理コマンドを、複数の前記画像処理装置で処理可能な場合、いずれの前記画像処理装置を使用するかスケジューラに指示する手段を有することを特徴とする請求項１に記載の画像処理システム。
【請求項６】
前記スケジューラが、複数の前記画像処理装置において前記画像処理コマンドの実行状況を時系列的に測定し、記憶する手段を有することを特徴とする請求項１に記載の画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置を効率良く使うことのできる画像処理装置及びこれを利用した画像処理システムに関するものであり、特にカメラ等から入力された画像から対象物を認識する画像認識システムに係わる。
【背景技術】
【０００２】
監視カメラや車載カメラ等で撮影された画像の中から人物や標識等の対象物を認識する画像認識システムや、生産ラインにおいて不良品を検出する画像検査装置等、リアルタイムで画像を認識するシステムが広まりつつある。このようなシステムにおいては、汎用のマイクロプロセッサ（ＣＰＵ）と画像処理専用回路を組み合わせて使用するのが一般的であり、特許文献１に画像処理専用回路の例が見られる。画像認識システムにおける画像処理は、入力画像からノイズを除去したり認識したい特徴を強調したりする前処理，特徴を抽出する処理，特徴を識別する処理、等様々な画像処理を組み合わせる必要があり、特許文献１では複数の機能処理部を持つ画像処理専用回路が開示されている。なお、特許文献１における画像処理専用回路で一度に使用できる機能処理部は一つのみである。
【０００３】
特許文献１ではＣＰＵと画像処理専用回路が別なチップとして開示されているが、近年の半導体微細化技術の進歩により、一つのＬＳＩ（大規模集積回路）チップの中にＣＰＵと画像処理専用回路を内蔵するＳｏＣ（システムオンチップ）が実現可能になっており、さらに一つのチップ内に複数のＣＰＵを内蔵するマルチコア型のＬＳＩも広がりつつある。
【０００４】
一方、画像処理のように大量の演算を必要とする処理を高速化するためには複数の装置に処理を分散させることが従来より行われてきた。処理を分散させる方法には大きく分けて、処理を時系列的に分割するパイプライン方式と処理を空間的に分割する並列化方式がある。パイプライン方式の例としては特許文献２があり、あらかじめ処理内容が決まっているデジタル映像機器等で有効な方式である。並列化方式の例としては特許文献３があり、一度に多量の図形描画を行うグラフィックプロセッサ等で有効な方式である。なお、実際にはこの両方の方式を組み合わせてシステムを構成することも多い。
【０００５】
【特許文献１】特許第３５７３６１４号公報
【特許文献２】特許第３３３５４８２号公報
【特許文献３】特表２００７−５０３０５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は複数の画像処理装置を使って画像認識システムを高速化することにある。汎用のＣＰＵを使用する一般の計算機システムにおいては、一つ又は複数のＣＰＵを時分割で使用し、複数の処理を同時並行に行うマルチタスキング技術によりシステム全体の処理性能を向上させることが良く知られている。ＣＰＵにおけるマルチタスキングは、タイマ等からの割り込みによってタスクが中断された際に処理中のレジスタ内容をメモリに書き出し、処理を再開する際にメモリからレジスタ内容を復旧させるコンテキストスイッチによって実現される。
【０００７】
一方、画像処理は一括して処理するデータが大量（例えば１画面分の画像）であるため、コンテキストスイッチは出来ない（不可能ではないが非常に効率が悪い）。そのため、画像処理に関してはタスクごとに完全に独立した画像処理装置を割り当てるか、コンテキストスイッチが生じないように十分余裕を持ってタスクスイッチをするしかなく、複数の画像処理装置を使っても効率的なマルチタスキングはできなかった。
【課題を解決するための手段】
【０００８】
画像認識システムにおける画像処理は、前述したように様々な画像処理を組み合わせる必要があり、しかも認識対象や演算時間の制限によって処理の組み合わせを適宜変更する必要がある。そのため、マルチタスキングを行っても画像処理の効率を向上させるには、パイプライン方式と並列化方式を柔軟に変更できるようにすれば良い。そこで、本発明では、複数の画像処理装置に対する複数の画像処理コマンドを一括して管理するスケジューラを設け、スケジューラがコマンド種別及び画像処理装置の稼動状況を監視しながら動的に処理を振り分けることで複数の画像処理装置を柔軟に使用できるようにする。具体的には並列処理が可能な一つの画像処理コマンドを複数の画像処理装置に割り振るための判定手段と分割した処理アドレスを生成する手段を設けることを特徴とする。
【発明の効果】
【０００９】
本発明により、マルチタスクの状況でも効率よく画像認識を行うことが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下図１から図２２を用いて説明する。
【実施例１】
【００１１】
第１の実施例を説明する。図１は本発明を実現する画像処理装置の全体構成を表すもので、画像処理装置１はシステムＬＳＩ２，主メモリ３，カメラ４，カメラ５，表示装置６、から構成される。システムＬＳＩ２は、スケジューラ１０，画像処理装置２０及び画像処理装置３０，ＣＰＵ４０及び５０，画像入力回路６０，画像出力回路７０、これらが接続されるシステムバス８０，信号線１０２０及び１０３０、を内蔵する。ＣＰＵ４０および５０は汎用のプロセッサであり、マルチプロセッサを構成する。画像処理装置２０及び画像処理装置３０は画像処理を専用に行う演算回路であり、ＣＰＵ４０又はＣＰＵ５０から制御される。主メモリ３はプログラム及び画像等のデータを格納する。画像入力回路６０はカメラ４又は５から入力された画像データを主メモリ３に書き込む。画像出力回路７０は主メモリ上３にある描画データを読み出して表示装置６に表示する。スケジューラ１０はシステムバス８０を経由して指示される画像処理装置２０及び画像処理装置３０への処理コマンドを受け取り、状況に応じて信号線１０２０及び１０３０により画像処理装置２０及び画像処理装置３０に処理を分配する。
【００１２】
図２はスケジューラ１０の内部構成を表すもので、スケジューラ１０はコマンドバッファ１１及び１２，コマンド判定部１３，リソース管理部１４，制御コマンド生成部１５，実行アドレス生成部１６，コマンド情報テーブル１７及びこれらの間を接続する信号線１１１３，１１１５，１２１３，１２１５，１３１４，１３１６，１３１７，１４１６，１５１６，１６１７から構成される。コマンドバッファ１１及び１２は、それぞれ独立に画像処理コマンドを受け付けるので、独立した二つの画像認識アプリケーションを実行することが可能である。なお、本実施例では二つまでの並列度を示しているが、本発明を使用してこれ以上の並列度を実現することは容易である。コマンドバッファ１１及び１２は、システムバス８０から画像処理コマンドが書き込まれると信号線１１１３及び１２１３を使用してコマンド判定部１３に通知し、コマンドが受け付けられると信号線１１１５及び１２１５を使用して制御コマンド生成部１５にコマンドを送る。コマンド判定部１３はコマンドバッファ１１又は１２からコマンド受け取りを通知されると、リソース管理部１４から信号線１３１４を使用して画像処理装置２０及び画像処理装置３０の動作状態を受け取り、コマンド情報テーブル１６からの情報と合わせてコマンドが実行可能であるか判定し、必要に応じて信号線１３１６を使用して実行アドレス生成部１６に分割実行のアドレス生成を指示する。リソース管理部１４は信号線１０２０及び１０３０から得られる画像処理装置２０及び画像処理装置３０の実行状態及び、コマンド判定部１３から得られる実行指示から、画像処理装置２０及び画像処理装置３０の状態を把握する。制御コマンド生成部１５はコマンド判定部１３からの指示に従って画像処理装置２０及び画像処理装置３０に書き込むコマンドを生成し、信号線１０２０及び１０３０を使用して画像処理装置２０及び画像処理装置３０にコマンドを書き込む。実行アドレス生成部１６はコマンド判定部１３から分割実行が指示されると必要なアドレスを計算し、信号線１５１６を使用して制御コマンド生成部１５に渡す。コマンド情報テーブル１７はコマンド判定部１３及び実行アドレス生成部１６からの要求に従い、コマンドの分割実行に関する情報を返す。
【００１３】
図３はコマンドバッファ１１の内部構成を表すもので、コマンド保持バッファ１１０，コマンドバッファ状態管理部１１１，信号線１１２、から構成される。コマンド保持バッファ１１０は、システムバス空間上にマッピングされたレジスタとして実現され、（１）処理コマンド種、（２）入力画像アドレス１、（３）入力画像アドレス２、（４）開始座標（ｘ，ｙ）、（５）処理サイズ（ｎ，ｍ）、（６）結果格納アドレス、のフィールドからなる画像処理コマンドを保持する。コマンド種によりこれらのフィールドの一部は使用されない場合もある。
【００１４】
図４はコマンドバッファ状態管理部１１１の動作を状態遷移図で表したもので、コマンドが空の状態（１１１Ａ）からコマンド書き込みの発生を信号線１１２から知ると未処理の状態（１１１Ｂ）に遷移する。コマンドが受け付けられたことを信号線１１１３から知ると処理中の状態（１１１Ｃ）に遷移する。コマンドの実行完了を信号線１１１３から知ると空の状態（１１１Ａ）に戻る。未処理の状態でコマンドがキャンセルされたことを信号線１１２から知った場合も空の状態（１１１Ａ）に戻る。未処理の状態（１１１Ｂ）では信号線１１１３に「未処理コマンド有」を発信する。コマンドバッファ１２はコマンドバッファ１１と同じ構成及び機能を持つため説明は省略する。両者の違いはレジスタがマッピングされているアドレスの違いのみである。
【００１５】
図５はコマンド判定部１３の内部構成を表すもので、コマンド判定起動状態管理部１３１，コマンド判定状態管理部０  １３２，コマンド判定状態管理部１  １３３，コマンド判定回路１３４，信号線１３５，１３６，１３７，１３８、セレクト論理１３９、から構成される。コマンド判定起動状態管理部１３１はコマンドバッファ１１又はコマンドバッファ１２のいずれかに処理コマンドが書き込まれた場合に、コマンド判定状態管理部０  １３２又はコマンド判定状態管理部１  １３３にコマンド処理の開始を指示する。コマンド判定状態管理部０  １３２はコマンドバッファ１１の、コマンド判定状態管理部１  １３３はコマンドバッファ１２の、実行状態を管理する。コマンド判定回路１３４はコマンドがどの装置で実行できるかを判定する。セレクト論理１３９は、コマンド判定回路１３４が信号線１１１５で示されるコマンドバッファ１１からのコマンドと信号線１２１５で示されるコマンドバッファ１２からのコマンドをコマンド判定状態管理部０  １３２又はコマンド判定状態管理部１  １３３から出されるコマンド判定起動のタイミングで選択し、コマンド判定回路１３４にコマンドを渡す。
【００１６】
図６はコマンド判定起動状態管理部１３１の動作を状態遷移図で表したもので、コマンド判定状態管理部０  １３２がＩＤＬＥ状態（１３２Ａ）かつコマンドバッファ状態管理部１１１が未処理状態（１１１Ｂ）の場合はバッファ０コマンド判定起動状態（１３１Ｂ）に、コマンド判定状態管理部１  １３３がＩＤＬＥ状態（１３３Ａ）（図示せず）かつコマンドバッファ状態管理部１２１（図示せず）が未処理状態（１２１Ｂ）（図示せず）の場合はバッファ１コマンド判定起動状態（１３１Ｃ）に遷移する。バッファ０コマンド判定起動状態（１３１Ｂ）及びバッファ１コマンド判定起動状態（１３１Ｃ）は、コマンド判定状態管理部０  １３２又はコマンド判定状態管理部１  １３３が直ちにコマンド判定を実行するので、これらの状態（１３１Ｂまたは１３１Ｃ）にとどまることは無い。
【００１７】
図７はコマンド判定状態管理部０  １３２の動作を状態遷移図で表したもので、ＩＤＬＥ状態（１３２Ａ）の時にコマンドの受け付けが可能で、コマンド判定起動状態管理部１３１からコマンドバッファ１１に対するコマンド判定が起動されるとコマンド判定状態（１３２Ｂ）に遷移する。この状態の場合にコマンド判定回路１３４を起動し、コマンドが実行可能か否かを判定する。コマンド判定回路１３４が実行リソース有と判定した場合はコマンド実行中の状態（１３２Ｃ）に遷移し、実行リソース無と判定した場合はコマンド実行待ちの状態（１３２Ｄ）に遷移し、画像処理装置の実行完了を待って再びコマンド判定を行う。コマンド実行中状態（１３２Ｃ）においてコマンドの実行が完了した場合はＩＤＬＥ状態（１３２Ａ）に戻り、後述する分割実行への変更条件が成立した場合はコマンド判定状態（１３２Ｂ）に遷移する。コマンド判定状態管理部１  １３３の構成及び機能はコマンド判定状態管理部０  １３２と同等であるので説明は省略する。コマンド判定状態管理部１  １３３はコマンドバッファ１２に対するコマンド判定によって起動される。
【００１８】
図８はコマンド判定回路１３４の動作を表で表したもので、セレクト論理１３９で選択されたコマンドの種別をコマンド情報テーブル１６に問い合わせ、実行可能装置，分割実行可否、の情報を得る。また、リソース管理部１４から画像処理装置の状態を得る。これらの入力条件から、実行リソースの有無，装置への実行指示，分割単独実行開始の場合は分割可能範囲の記憶指示、を判定し、信号線１３１６，１３１７，１３７，１３８を使って出力する。ここで、非分割実行開始の指示は、コマンドを一つの装置で処理することを示す。分割前半実行開始の指示はコマンドを二つの装置で分割実行する場合の前半領域を分担することを示し、分割後半実行開始の指示はコマンドを二つの装置で分割実行する場合の後半領域を分担することを示す。分割単独実行開始の指示はコマンド種としては分割実行可能であるが二つの装置が空いていないために一つの装置で処理を開始する指示を示し、もう一つの装置が空いた場合に分割実行に変更する可能性がある。
【００１９】
図９はリソース管理部１４の内部構成を表すもので、画像処理装置０状態管理部１４０，画像処理装置１状態管理部１４１，分割可能範囲記憶部１４２，信号線１４３，１４４、から構成される。画像処理装置０状態管理部１４０は画像処理装置２０の実行状態を管理し、画像処理装置１状態管理部１４１は画像処理装置３０の実行状態を管理する。分割可能範囲記憶部１４２は信号線１４１６によって実行アドレス生成部１６から指示される分割可能範囲を記憶し、信号線１４３又は１４４を使って画像処理装置０状態管理部１４０又は画像処理装置１状態管理部１４１に記憶した値を示す。
【００２０】
図１０は画像処理装置０状態管理部１４０の動作を状態遷移図で表したもので、画像処理装置２０が動作していない場合はＩＤＬＥ状態（１４０Ａ）にあり、コマンドの実行中は実行形態により、分割前半実行の場合は状態１４０Ｂに、分割単独実行の場合は状態１４０Ｃに、分割後半実行の場合は１４０Ｄに、非分割実行の場合は１４０Ｅに、それぞれ遷移する。分割単独実行の場合（１４０Ｃ）は分割前半実行（１４０Ｂ）に遷移する場合があるが、他の場合は実行完了によってＩＤＬＥ状態（１４０Ａ）に戻る。
【００２１】
図１１は制御コマンド生成部１５の内部構成を表すもので、セレクタ１５１，１５２，装置０実行コマンドバッファ１５３，装置１実行コマンドバッファ１５４、から構成される。セレクタ１５１及び１５２は、コマンド判定回路１３４の出力信号１３１６が実行アドレス生成部１６を経由した信号１５１６に従い、コマンドバッファ１１からのコマンド、コマンドバッファ１２からのコマンド、実行アドレス生成部１６で生成された分割実行用コマンド、を選択し、画像処理装置２０及び画像処理装置３０に書き込むコマンドを装置０実行コマンドバッファ１５３及び装置１実行コマンドバッファ１５４に生成する。
【００２２】
図１２は実行アドレス生成部１６の内部構成を表すもので、実行アドレス演算部１６１，セレクタ１６２、から構成される。実行アドレス演算部１６１は、分割実行を行うために必要となる分割後のコマンド（処理パラメータ）及び分割単独実行を分割実行に変更可能な範囲を計算する。計算に必要なパラメータはコマンド情報テーブル１７から得る。セレクタ１６２はコマンド判定回路１３４の出力信号１３１６に従いコマンドバッファ１１からのコマンド又はコマンドバッファ１２からのコマンドを選択する。
【００２３】
図１３は実行アドレス演算部１６１の動作を計算式で表したものである。画像処理においては処理画像の周辺に無効領域が発生することがあるため、単純に領域を２分割するだけでなく、分割した境界を前半，後半両方で処理できるようにアドレスオフセットを使用する。
【００２４】
図１４はコマンド情報テーブル１７の動作を表で表したもので、コマンドの種別を入力として、実行可能装置，分割実行可否，分割可能な場合は単独実行の途中から分割実行に変更できる範囲判定用の値及びアドレスオフセット、を出力する。コマンドがどの装置で実行可能であるか、また、分割実行が可能であるかは画像処理装置の仕様に従い、あらかじめ決められる。なお、分割可能な画像処理の例としては、コンボリューションフィルタ（平滑化，エッジ強調等）や濃度変換，画像間演算（差分等）等がある。分割不可能な画像処理の例としてはラベリング処理等がある。
【００２５】
図１５は画像処理装置２０の内部構成を表すもので、制御回路２０１，コマンドレジスタ２０２，状態レジスタ２０３，出力バッファ２０４，入力バッファ２０５，演算回路Ａ，演算回路Ｂ，演算回路Ｃ、から構成される。コマンドレジスタ２０２に処理コマンドを書き込むことによって制御回路２０１が起動し、コマンドに従って処理データを主メモリ３からシステムバス８０経由で入力バッファ２０５に読み込み、必要な演算回路を使って処理を行い、出力バッファ２０４に書き込まれた処理結果をシステムバッファ８０経由で主メモリ３に書き出す。処理状態は状態レジスタ２０３に反映され、コマンドの実行が完了すると信号線１０２０を使ってスケジューラ１０に割り込みを上げる。本実施例ではコマンド種別と演算回路が１対１に対応するように記述したが、画像処理装置内部をどのように実現するかは本発明の範囲外であり、詳細な説明は割愛する。
【００２６】
図１６は画像処理装置３０の内部構成を表すもので、制御回路３０１，コマンドレジスタ３０２，状態レジスタ３０３，出力バッファ３０４，入力バッファ３０５，演算回路Ａ，演算回路Ｂ，演算回路Ｄ，演算回路Ｅ，演算回路Ｆ、から構成される。演算回路の構成以外は画像処理装置２０と同様であり、説明は省略する。演算回路の組み合わせが異なるのは、画像処理装置２０と画像処理装置３０で処理できるコマンドに違いがあると言うことを表している。一方、演算回路Ａ及び演算回路Ｂは両者が共通して備えており、いずれの装置においても処理できる。また、この２つの処理は分割実行可能である。
【００２７】
以下これらのハードウェア装置を使用して画像処理を行う動作について具体的に説明する。本実施例ではカメラ４から入力される画像をＣＰＵ４０が処理し、この処理とは全く独立に、カメラ５から入力される画像をＣＰＵ５０が処理する。ＣＰＵ４０及び５０はそれぞれ、画像処理装置２０及び画像処理装置３０を何回か使用しながら処理を進める。
【００２８】
図１７を使用して２つの画像処理装置による分割実行の動作を説明する。図１７は２つの画像処理タスクが並列に動作している様子を示したタイミングチャートである。図１７（ａ）は分割実行を行わない場合で、画像処理装置２０及び画像処理装置３０で星印（★）の付いた処理が本来分割実行できる処理であるとする。図１７（ｂ）は分割実行を行った場合で、星印（★）の付いた処理を画像処理装置２０及び画像処理装置３０で同時に分割実行している。このように分割実行することで複数の画像処理装置の使用効率が向上し、システム全体での処理時間が短縮される。
【００２９】
図１８を使用して途中から分割実行に移行する動作を説明する。図１８は２つの画像処理タスクが並列に動作している様子を示したタイミングチャートである。図１８（ａ）は分割実行を行わない場合で、画像処理装置２０及び画像処理装置３０で星印（★）の付いた処理が本来分割実行できる処理であるとする。図１８（ｂ）は途中から分割実行に移行した場合で、星印（★）の付いた処理は実行開始時は画像処理装置２０が空いていなかったために分割実行できなかったが、その後画像処理装置２０が空いたため、分割実行に移行している。このように処理の途中からでも分割実行に移行できることで、複数の画像処理装置の使用効率がより向上し、システム全体での処理時間が短縮される。
【００３０】
以下、分割実行を行う場合のコマンド生成について図１９から図２２を使用して詳細に説明する。図１９は本実施例における処理画像のデータ構造である。１画面の有効サイズは６４０×４８０バイトであるが、メモリ上では１０２４×５１２バイトが確保されている。
【００３１】
図２０は本実施例における主メモリ上の画像領域のマッピングで、入力画像が０ｘ１０００００００番地から格納されており、出力画像は０ｘ１００８００００番地から格納される、とする。
【００３２】
図２１は本実施例における処理コマンドの詳細であり、処理コマンドは「処理Ａ」（３×３カーネルを使用したエッジ強調処理）、処理サイズは６４０×４８０である。このコマンドは画像処理装置２０及び画像処理装置３０が使用可能であればスケジューラ１０によって分割実行可能と判断され、実行アドレス生成部１６において処理サイズｍ前半，処理サイズｍ後半，開始座標ｙ後半，結果格納アドレス後半，分割可能範囲、が生成される。分割実行前半を行う装置に対しては、元のコマンドの「処理サイズｍ」が「処理サイズｍ前半」に入れ替えられ、分割実行後半を行う装置に対しては元のコマンドの「処理サイズｍ」が「処理サイズｍ後半」，「開始座標」が「開始座標ｙ後半」，「結果格納アドレス」が「結果格納アドレス後半」に、それぞれ入れ替えられて実行指示される。もし片方の装置しか使用可能でない場合、コマンドは入力コマンドのままで「分割単独実行」の状態になる。もう片方の装置が使用可能になった時、処理済のライン数が分割可能範囲内（＝２３０ライン以内）であれば分割実行に変更され、それまで単独実行していた装置に対するコマンドの「処理サイズｍ」が更新される。後から実行可能になった装置には分割実行後半、のコマンドが渡される。図２２に本実施例における処理領域分割の様子を示す。
【実施例２】
【００３３】
以下図２３から図２６を用いて第２の実施例を説明する。第２の実施例において第１の実施例と異なっているのはリソース管理部１４及びコマンド情報テーブル１７であり、それ以外の部分は第１の実施例と同じ構成及び動作である。この２つの要素を第１の実施例と区別するため、第２の実施例ではリソース管理部１４′及びコマンド情報テーブル１７′とする。
【００３４】
図２３は本実施例におけるリソース管理部１４′の内部構成を表すもので、第１の実施例に比べプロファイラ１４５，信号線１４６及び１４７が追加されている。
【００３５】
図２４はプロファイラ１４５の内部構成を表すもので、カウンタ１４５２を内蔵した制御回路１４５１及びプロファイル記憶メモリ１４５３から構成される。制御回路１４５１は画像処理装置状態管理部１４０及び１４１から信号線１４６及び１４７を通して画像処理装置２０及び画像処理装置３０の実行状態の変化を受け取り、その時のカウンタ１４５２のカウント値（相対時刻），装置番号，実行コマンド，実行状態、をプロファイル記憶メモリ１４５３に記憶する。プロファイル記憶メモリ１４５３の記憶容量は数十から数百エントリとし、全てのエントリを使用し切った場合は上書きされる。カウンタ１４５２はシステムＬＳＩ２の動作中フリーランでカウントアップするカウンタであり、動作周波数からカウント値を相対時刻に換算するのは容易である。記録する実行状態とは、図１０における各状態と同じであり、状態遷移が起こった時点で記憶される。
【００３６】
第２の実施例においては、コマンドバッファ１１及び１２に保持されるコマンドに、コマンド種別に加え装置指定のフィールドが追加される。装置指定は、装置０，装置１，指定無し、の３種であり、元々装置０又は装置１のいずれかでしか実行できないコマンド種別に対しては装置指定フィールドは無視される。
【００３７】
図２５はコマンド情報テーブル１７′の動作を表で表したもので、装置指定されたコマンドに対しては、実行可能装置として指定された装置、分割実行は不可能、という判定を行う。装置指定されていないコマンドに対しては第１の実施例と同じ判定を行うので、第１の実施例と同様に分割実行も可能である。
【００３８】
以下第１の実施例と同じように、これらのハードウェア装置を使用して画像処理を行う動作について具体的に説明する。本実施例でもカメラ４から入力される画像をＣＰＵ４０が処理し、この処理とは全く独立に、カメラ５から入力される画像をＣＰＵ５０が処理する。ＣＰＵ４０及び５０はそれぞれ、画像処理装置２０及び画像処理装置３０を何回か使用しながら処理を進める。
【００３９】
図２６を使用して装置指定を行った場合の動作を説明する。図２６は２つの画像処理タスクが並列に動作している様子を示したタイミングチャートである。図２６（ａ）は分割実行を行った場合で、丸印（○）の付いた処理が画像処理装置２０及び画像処理装置３０で同時に分割実行されている。しかし、２回目の分割実行即ちＣＰＵ５０側の処理を行っている時にＣＰＵ４０は、画像処理装置３０が空いていないため待たされている。図２６（ｂ）はその２回目の分割実行可能なコマンドに対して装置指定を行った場合で、三角印（▲）の付いた処理は分割実行がされないため、ＣＰＵ４０側の全体処理時間が延びているが、ＣＰＵ５０側の処理は画像処理装置３０での待ちがないので全体処理時間が短縮される。ＣＰＵ５０側の処理優先度がＣＰＵ４０側の処理に対して高い場合、このように装置指定を行うことで画像処理装置の使用順序を制御でき、システム全体で最適な時間配分が可能になる。
【００４０】
図２６（ｂ）のような細かな処理のスケジューリングを行うには、各画像処理装置の使用状況が正確に把握できなければならない。そのためにプロファイラ１４５が使用される。本実施例が対象としているのは、特定の対象をリアルタイムに認識し続けるようなシステムであり、この場合、決まった画像処理コマンドが周期的に実行される。処理周期内の実行状態をプロファイラ１４５で記憶すると、図２６のようなタイミングチャートを描くために必要な情報が得られる。ここから画像処理装置の最適なスケジュールを決定するのは使用者の責任であり、本発明は指定されたコマンドを実行するのみである。
【００４１】
以上２つの実施例においてスケジューラ１０はハードウェア装置として記述したが、同等の機能はＣＰＵで動作するソフトウェアとしても実現可能である。また、これらの実施例では２つの画像処理装置の機能に差がある場合について述べたが、画像処理装置の機能に差がない場合の方がコマンド判定は簡単になるので本発明の有効性は機能に差がある場合に限定されるものではない。また、これらの実施例では２つの画像処理装置を使用して２分割処理の例を示したが、本発明は画像処理装置の数及び分割数を限定するものではなく、コマンド判定の条件を増やせばこれより多数の装置や分割数にも対応できる。
【図面の簡単な説明】
【００４２】
【図１】画像処理装置の全体構成。
【図２】スケジューラの内部構成。
【図３】コマンドバッファの内部構成。
【図４】コマンドバッファ状態管理部の状態遷移。
【図５】コマンド判定部の内部構成。
【図６】コマンド判定起動状態管理部の状態遷移。
【図７】コマンド判定状態管理部０の状態遷移。
【図８】コマンド判定回路の動作。
【図９】リソース管理部の内部構成。
【図１０】画像処理装置０状態管理部の状態遷移。
【図１１】制御コマンド生成部の内部構成。
【図１２】実行アドレス生成部の内部構成。
【図１３】実行アドレス演算部の動作。
【図１４】コマンド情報テーブルの構成。
【図１５】画像処理装置２０の内部構成。
【図１６】画像処理装置３０の内部構成。
【図１７】分割処理の動作を表すタイミングチャート。
【図１８】分割処理の途中移行動作を表すタイミングチャート。
【図１９】画像データ構成の例。
【図２０】メモリマップの例。
【図２１】分割処理によるコマンド生成の例。
【図２２】処理分割後の画像データ構成の例。
【図２３】第２の実施例におけるリソース管理部の内部構成。
【図２４】プロファイラの内部構成。
【図２５】第２の実施例におけるコマンド情報テーブルの構成。
【図２６】装置指定の動作を表すタイミングチャート。
【符号の説明】
【００４３】
１０  スケジューラ
１３  コマンド判定部
１７  コマンド情報テーブル
２０，３０  画像処理装置
４０，５０  ＣＰＵ
６０  画像入力回路
７０  画像出力回路
【図１】
2009086789.tif 000003
【図２】
2009086789.tif 000004
【図３】
2009086789.tif 000005
【図４】
2009086789.tif 000006
【図５】
2009086789.tif 000007
【図６】
2009086789.tif 000008
【図７】
2009086789.tif 000009
【図８】
2009086789.tif 000010
【図９】
2009086789.tif 000011
【図１０】
2009086789.tif 000012
【図１１】
2009086789.tif 000013
【図１２】
2009086789.tif 000014
【図１３】
2009086789.tif 000015
【図１４】
2009086789.tif 000016
【図１５】
2009086789.tif 000017
【図１６】
2009086789.tif 000018
【図１７】
2009086789.tif 000019
【図１８】
2009086789.tif 000020
【図１９】
2009086789.tif 000021
【図２０】
2009086789.tif 000022
【図２１】
2009086789.tif 000023
【図２２】
2009086789.tif 000024
【図２３】
2009086789.tif 000025
【図２４】
2009086789.tif 000026
【図２５】
2009086789.tif 000027
【図２６】
2009086789.tif 000028