(57)【要約】【課題】複数の画像処理機能をタスクにより実現する際、タスクの実行状況の変化による各タスクの処理周期を変更、新たな機能を追加，削除を容易に行うことができるタスクの管理を実現する。【解決手段】画像処理装置は、映像取得手段と、取得した映像にフレーム番号を付加する映像フレーム付加手段と、画像処理機能で使用する映像フレームであるか否かを判断する要求映像フレーム判別手段と、取得した映像フレームが画像処理機能で使用するフレームであった場合に、該当する画像処理タスクに映像取得を通知する要求映像フレーム取得通知手段と、画像処理機能を実現するために必要な処理タスクと、画像処理機能を実現するために必要となる映像フレームの取得を受け付ける要求映像フレーム取得受付手段とから構成される。【選択図】図１
2008027181.tif 000002
【特許請求の範囲】
【請求項１】
画像処理を行うタスクを実行する画像処理装置において、
前記タスクからの画像データの要求を受け付ける要求映像フレーム取得受付手段と、
映像取得手段により取得した画像データに識別番号を付加する映像フレーム付加手段と、
フレーム番号を付した画像データが前記タスクが要求した画像データであるか否かを判断する要求映像フレーム判別手段と、
前記フレーム番号を付した画像データが前記タスクが要求した画像データである場合には、該タスクに要求された画像データが取得されたことを通知する要求映像フレーム取得通知手段とを備え、
前記タスクからの画像データの要求は画像データを特定する情報として画像データの識別番号又は該識別番号を特定する数式を指定する情報を含む
ことを特徴とした画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、要求映像フレーム取得受付手段が前記タスクから受け付ける画像データの要求は、前記画像データを特定する情報と共に、当該要求された画像データを取得する前記映像取得手段を制御するためのカメラ制御パラメータを含むことを特徴とした画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において、前記カメラ制御パラメータは、シャッタースピード，アナログ・デジタル変換のゲイン，画角の少なくともいずれか一つを含む、取込む画像の質を決定するパラメータであることを特徴とした画像処理装置。
【請求項４】
請求項１に記載の画像処理装置において、
更に、前記タスクが要求した画像データを特定する情報と、当該タスクの識別情報とを関係付けて管理する記憶装置を備え、
前記要求した画像データを特定する情報が、前記映像フレーム付加手段により付加された画像データの識別番号と一致した場合には、前記記憶装置で管理されるタスクの識別情報に対応したタスクの割込み信号を送り、画像処理のタスクスケジューリングを行うことを特徴とした画像処理装置。
【請求項５】
請求項３に記載の画像処理装置において、
前記タスクが要求した画像データを特定する情報と、前記カメラ制御パラメータと、画像処理のタスクの識別情報とを対応付けて記憶する記憶装置を備え、
タスクから要求された画像データに対して、他のタスクが要求した画像データを共有できるか否かを、当該記憶装置のカメラ制御パラメータに基づき判断することを特徴とした画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像処理機能を実行する画像処理装置に関し、特に、画像処理機能のタスクスケジューリングに関する。
【背景技術】
【０００２】
計算機技術、及び映像技術の進化により、複数の画像処理機能を一つの画像処理装置で実現することが重要となってきている。例えば、自動車に搭載するカメラを用いた画像処理装置では、コストを低減する目的から、車線認識や障害物検知などの複数の画像処理機能を一つの装置で処理することが求められている。複数の画像処理機能を一つの装置で実行する場合、計算機は、複数ある機能をタスクといわれる細かい処理機能に分割して、処理を実行する。ここでは、複数の画像処理機能を破綻させることなく、タスクを管理することが重要となる。画像処理でのタスク管理は、多くの場合、映像入力のタイミングに同期して制御されている。自動車などに搭載される画像処理装置では、実時間で処理するため、常に映像を取込み、対象の画像データが処理可能になった後、画像処理機能を実行する必要がある。このような実時間のシステムでは、映像の記録タイミングが、タスクスケジューリングの制御間隔として使用される。
【０００３】
特許文献１では、各タスクの起動の時間間隔を規定するフレームを定義し、タスクスケジューリングを定義したフレームを用いて行っている。具体的には、ある一定周期の連続したフレームを想定して、スケジューリングテーブルを作成し、どの機能がどのフレームで動作するかをスケジューリングテーブルで制御している。画像処理装置に適用した場合、フレームは映像の同期信号で規定される間隔で定義することができる。
【０００４】
映像の同期信号を用いて、処理する画像データを特定し、処理するタイミングを規定する方法が特許文献２に開示されている。ここでは、映像データの配信に関して、映像の同期信号で定義したフレーム番号を用いて、どのフレームでどのビデオデータを配信するかを決めるスケジューリングを行っている。
【０００５】
【特許文献１】特開平６−６７８９９号公報
【特許文献２】特開２０００−２９９８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
自動車の走行環境を認識するような画像処理装置では、自動車の速度や計測対象の物体の動きに合わせて、画像処理機能を実行しなければならない。例えば、高速で移動している場合は、処理周期を短くして、対象物体を見失わないように制御をする必要がある。また、安全システムに使用される機能の場合は、状況によって、同じ処理を短時間に複数回実施して、信頼性を高めることなどが必要となる。このような場合、動作させるタスクの変更や周囲状況の変化により、頻繁にタスクの実行スケジュールを変更する必要がある。しかし、特許文献１や特許文献２で開示されているような、スケジューリングテーブルを用いたスケジュール管理方法では、スケジューリングを変更する際、スケジューリングテーブルに登録されている全てのタスクを考慮する必要が有り、変更が困難となる。例えばある１つの機能のタイミングに変更が発生する場合を想定すると、全ての機能の動作状態を把握した上でスケジューリングテーブルを変更する必要がある。しかし、あらゆる機能の詳細な動作状態まで把握することは困難であり、変更は容易でない。更に、スケジューリングテーブルを作る際、タスクの実行周期が最も長いものにあわせる必要がある。そのため、スケジュール間隔を長くできたとしても、他のタスクのスケジュールも最長の周期に合わせて作成する必要があり、管理と変更作業が複雑になる。以上のように、機能の追加や入れ替え、周期の変更が生じた際、全ての機能の状況を把握した上で、スケジューリングテーブルを変更する必要があるという問題がある。
【０００７】
本発明は、複数の画像処理機能が動作している状況で、各機能を実現するタスクの管理を容易にすることである。つまり、周囲の状況の変化により、各タスクの処理周期を変更する必要が生じた場合や、新たな機能を追加，削除を容易に行うことを目的とする。
【課題を解決するための手段】
【０００８】
本発明に関わる画像取得タイミング制御方法及び画像処理装置は、映像取得手段と、取得した映像にフレーム番号を付加する映像フレーム付加手段と、画像処理機能で使用するフレームであるか否かを判断する要求映像フレーム判別手段と、取得した映像フレームが画像処理機能で使用するフレームであった場合に、該当する画像処理タスクに映像取得を通知する要求映像フレーム取得通知手段と、画像処理機能の処理内容に応じて画像処理機能が要求する映像をフレーム単位で指定できることを特徴とし、画像処理機能を実現するために必要な処理タスクと、画像処理機能を実現するために必要となる映像フレームの取得を受け付ける要求映像フレーム取得受付手段とから構成される。
【発明の効果】
【０００９】
本発明によれば、複数の画像処理機能が動作している状況で、各機能を実現するタスクの管理を容易にすることができる。具体的には、画像処理の対象とする周囲の状況が変化したことにより発生する、各タスクの処理周期の変更，機能の追加，削除などを易に行うことができる。また、各タスクが独立に制御可能となるため、動的にプログラムをダウンロードしたり、機能別に実行プログラムの形態を別にして、機能毎にバージョンアップや機能変更の作業を実施することが可能となる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施例について、図面を参照して詳細に説明する。本実施例の画像処理装置の構成を図１を用いて説明する。本実施の形態における画像処理装置１では、ビデオカメラ，撮像素子，ハードディスクレコーダなどの映像取得手段１００から映像データを入力する。入力した映像データ１１０は、映像デコーダ１０により同期信号１１と画像データ
１２に分離される。映像データ１１０がアナログ情報である場合、映像デコーダ１０は、ビデオデコーダと呼ばれるデバイスに相当し、アナログ・デジタル変換及び同期分離機能を備えている。同期信号１１と画像データ１２は、映像入力コントローラ２０に入力される。映像入力コントローラ２０では、入力された画像データ１２が処理に使用されるデータか否かを判定して、処理に使用する場合は記憶媒体４０に転送を行う。映像入力コントローラ２０は、プロセッサ３０と記憶媒体４０と物理的な信号線５０で接続されており、通常はバス接続されている。記憶媒体４０に記録された画像データは、プロセッサ３０で処理される。処理結果は、通信手段３１によって外部のコントローラやシステムに出力される。
【００１１】
図１０を用いて実施例のソフトウェア構造を説明する。この例では、自動車向けの画像処理装置を想定しており、画像処理機能としては、画像処理を用いた自動車の運転支援や娯楽に関するアプリケーションの機能を実現している。ソフトウェアは図１に示したプロセッサ３０で処理される。画像処理機能として例えばモニタリング機能Ａ１，ドライブレコーダ機能Ａ２，車線逸脱警報機能Ａ３，割込み車両警報機能Ａ４が、アプリケーションプログラムのタスクとして動作する。各アプリケーションプログラムは複数のタスクを管理できるマルチタスク対応のオペレーションシステム上に構築される。アプリケーションプログラムの他に、主なプログラムとして、システムを初期化する初期化機能Ｐ１，起動する画像処理を選択したり、動作する画像処理機能を実行したりする画像処理タスク管理機能Ｐ２，ドライバーへの情報提供や機能の選択等を管理するユーザインタフェース機能Ｐ３，各画像処理機能の結果に応じて外部制御を指示するための通信機能Ｐ４，各画像処理機能から依頼されて映像を取込む画像取得機能Ｐ５が存在している。各画像処理機能は、画像処理に使用する画像データを取得するために、画像取込機能Ｐ５の画像取得コマンドをコールして、画像データの取得を実行する。画像処理タスク管理機能Ｐ２にて、予め実行可能なプログラムが登録されるタスク管理テーブルの例を図２に示す。
【００１２】
図１で説明した画像処理装置が処理する各種の画像処理機能は、図２のタスク管理テーブルに列挙される各画像処理機能のように、処理対象とする画像の画質の高い・低い、あるいは画像処理の処理間隔などが仕様によって規定されている。この処理間隔は、各機能が画像処理に求める応答速度が遅くてもよいものについては大きくとり、速い応答速度を求めている機能に対しては小さくとる必要がある。基本的な処理間隔は、図２に示す例のように推測できる。しかし、周囲の状況により処理間隔が「中」であったアプリケーションが、突然、処理間隔が「小」になることも考えられる。例えば、自車速度が上がり、それまでの処理間隔では、状況に追従できない場面などがこの場合の具体的な例としてある。また、先行車や対向車との車間距離が小さくなり、危険な状況になると処理間隔を小さくして危険を早めに検知する必要が生じる場合がある。このような処理間隔の変更は、実行される画像処理機能が一つだけである場合には簡単に実現できるが、多数の画像処理機能が一つのハードウェアで実行されている場合は画像の取込みタイミングや、各画像処理機能の実行に要する処理能力などを考慮する必要があり難しい。
【００１３】
また各画像処理機能を実現するためには、シャッタースピードの変更，ゲインの調整など、画像の質を制御することが行われる。しかし、説明を簡単にするために、以下の発明の実施の形態においては、複数の画像処理機能が使用する画像は一種類とする。
【００１４】
図３を用いて、複数の画像処理機能が一つの画像処理装置上でどのように動作しているのかを詳しく説明する。図３には、映像信号として垂直同期信号１１１を記載している。ここでは、垂直同期信号の一つの周期（信号のＬｏｗからＬｏｗの期間）で、一つのフレームを構成している。垂直同期信号１１１の下に記載している番号は、タスク管理で使用する映像フレーム番号である。図３では、モニタリング機能Ａ１，ドライブレコーダ機能Ａ２，車線逸脱警報Ａ３，割込み車両警報Ａ４といった複数の画像処理機能が並行して動作している状況を示している。各画像処理機能の破線上にある矩形Ｇ１０〜Ｇ４３は、画像処理で使用する画像データを示している。つまり、各画像処理機能は、矩形が描かれたタイミングの映像フレームにおける画像データを用いて処理を行っていることを示している。モニタリング機能Ａ１では、画像データを毎フレーム記録するため、記録するための画像データ（Ｇ１０〜Ｇ１６）を毎フレーム取得して処理する。ドライブレコーダ機能
Ａ２に関しては、モニタリング機能のように毎フレーム処理する必要がなく、２フレーム置きに映像データを処理することから、画像データＧ２０，Ｇ２１を読み込んで処理している。車線逸脱警報Ａ３に関しては、３フレーム間隔で画像データを取得し、画像データＧ３０，Ｇ３１が処理される。割込み車両警報Ａ４では、二枚の連続した画像データを処理する必要があるため、連続した画像フレームである画像データＧ４０，Ｇ４１の組合せと、処理周期となる３フレーム間隔を置いた画像データＧ４２，Ｇ４３の組合せが取得され、処理が行われる。
【００１５】
従来技術のように、予め各画像処理機能の処理周期を想定してタスクスケジューリング管理を行うタスクが存在し、そのタスクが各画像処理機能の状況をスケジューリングテーブルにより把握，制御する集中制御の形式をとる場合、管理する画像処理機能の数が増加すると、画像処理機能の優先順位付けなどは更に難しい問題になる。本発明は、この問題を解決する手段を提供するものであり、その具体的な仕組みについて、個々の画像処理機能がどのように処理しているかを示すことによって説明する。
【００１６】
画像処理機能として車線逸脱警報機能Ａ３を例に、処理の流れの概略を図４を用いて説明する。本実施の形態における車線逸脱警報機能Ａ３は、３フレーム間隔で取得した画像データを使用して処理を実行する。まず映像フレーム番号Ｎ−３の画像データである“画像１”が取込まれて記憶媒体４０に記録される。そして車線逸脱警報機能Ａ３を実現する処理タスクでは、“画像１”の記録終了後から車線認識や警報を実施する“処理１”を実行する。本実施の形態では、“処理１”の中で“画像２”の取込処理を実行する。この取込処理では、自動車の速度や車線の種別，周囲の車の状況などから、次に必要になる画像データの映像フレーム番号を決定し、取得手続きを行う。取得手続きは、下記の画像取得コマンドで行う。
【００１７】
CaptureImage（画像管理番号，映像フレーム番号）                      （式１）
ここで、画像管理番号とは、取得した映像フレームの画像データの処理に必要な情報を画像処理機能側から参照するための番号であり、例えば、画像データを格納する配列の先頭ポインタや管理テーブルにアクセスするために定義された番号を用いる。そしてこの画像取得コマンドにより、次に画像処理で必要とする映像フレーム番号を指定することによって、“処理１”の中で“画像２”のデータ取得の手続きを行う。図４では、次に処理を行う画像データの“画像２”は、映像フレーム番号Ｎ＋１の画像データであるため、
CaptureImage（＃（画像２），Ｎ＋１）                                （式２）
と実行する。ここで＃（画像２）は、取得した画像データを“画像２”として参照するための管理テーブルの番号を表わすものとする。この画像取得コマンドを実行することにより、車線逸脱警報機能Ａ３のタスクは、“画像２”として、映像フレーム番号Ｎ＋１の画像データを取得することができる。この時の処理について、図１，図５，図６を用いて説明する。
【００１８】
映像デコーダ１０には映像取得手段１００から出力された映像データ１１０が入力され、この映像データ１１０は同期信号１１と画像データ１２とに分けられて、映像入力コントローラ２０に出力される。映像入力コントローラ２０では、同期信号１１から垂直同期信号割込み２３を発生させる垂直同期信号割込み手段２１と、必要な画像データを選択して記憶媒体４０に転送する画像データ転送手段２２を備えている。画像処理に使用する画像データは、画像データ転送手段２２によって選択され、選択された画像データ２４は信号線５０を介して記憶媒体４０に転送され記録される。また、画像データ転送手段２２は、必要な画像データを転送し終えてから取込終了割込み２６を出力する。
【００１９】
ここで、画像処理の起動はソフトウェアによって制御される。具体的には、垂直同期信号割込み手段２１と画像データ転送手段２２が保有する映像取込制御をするレジスタに、画像の取込実行を指示する設定をすることにより、図５に示す画像取得コマンドの処理が実行される。
【００２０】
図５に画像データを取得するための画像取得コマンドが実行されてから、画像処理機能が実行されるまでの処理フローを示す。図１６のソフトウェア構成図に示すように、各画像処理機能の処理は、画像処理タスク管理機能Ｐ２によって起動され、また画像処理に使用する画像データの取得は画像取込機能Ｐ５の画像取得コマンド（CaptureImage）を実行することによって実現する。図５に示すフローを実行するプログラムや必要な情報は、画像取込機能Ｐ５で処理，管理される。次に処理の詳細について説明する。
【００２１】
まず、画像処理機能からは、画像処理に必要となる画像を取得するために、式１に示した画像取得コマンドが呼び出される。図５（ａ）に示すように、この画像取得コマンドの呼び出しにより、画像取込機能Ｐ５で画像取得コマンドを実行する（Ｓ０１）。画像取得コマンドの内部では、要求映像フレーム取得受付手段４００によって、取得する画像データの映像フレーム番号を取得フレーム情報Ｄ１のテーブルに登録する（Ｓ０２）。ここで使用するテーブルの説明については図７を用いて後述する。取得する映像フレーム番号の情報を取得フレーム情報Ｄ１に記録した後、画像取得コマンドは休止する(Ｓ０９)。そして登録した画像データが取込まれ、後述する垂直同期信号割込み処理による通知Ｗ０２によって起床処理が行われるまで画像取得待ちＳ１１となり、再び実行状態になると、画像取得コマンドを呼び出した画像処理機能に戻って、画像処理が継続される。
【００２２】
映像取得手段１００から映像データが入力されると、垂直同期信号割込み手段２１から、定期的に垂直同期信号割込み２３が発生する。この垂直同期信号割込み２３を受けて、図５（ｂ）に示す垂直同期信号割込み処理が実行される。まず、割込みが発生して、割込みルーチンに処理が入ると、映像フレーム付加手段２００により、記憶媒体４０へ転送された画像データに映像フレーム番号を付加する（Ｓ０４）。この番号は、図３に示した映像フレーム番号であり、画像データの入力に従い一連の番号が付加される。
【００２３】
本実施形態では、映像取込みが必要な画像処理機能が実行を開始すると、この映像フレーム番号の付加も毎フレーム行われ、画像処理を実行中は、入力された画像データには固有の映像フレーム番号が付加される。次に、取込んだ画像データに対して付加された映像フレーム番号と、ステップＳ０２で取得フレーム情報Ｄ１のテーブルに記録された、これまでに画像取得コマンドで指定した取得要求のあるフレーム番号とを、要求映像フレーム判別手段３００により照合する（Ｓ０５）。この照合による判定（Ｓ０６）の結果、取込んだ画像データに対して付加された映像フレーム番号が取得要求の出ているフレーム番号条件のいずれかと一致する場合、要求映像フレーム取得通知手段５００からその取得要求を出した画像処理機能のタスクに対し、通知Ｗ０２を送る（Ｓ０７）。この通知はシステムコールなどを使用して、画像処理機能のタスクを実行状態にする起床処理によって実現される。また、取得要求の対象とならないフレーム番号の場合は、起床処理Ｓ０６を実行せずに垂直同期信号割込み処理を休止して、再び垂直同期信号割込みの発生を待つ。
【００２４】
図６に画像処理機能を実行するタスクの処理フローを示す。画像処理機能では、タスク起動後に初期設定などを行い処理を開始すると、画像取得コマンドの実行Ｓ０１が行われ、通常この画像取得コマンドの実行時に要求した画像データが取得されるまで休止状態となり、要求した画像データが得られると起床処理により動作が再開されて、画像処理Ｓ10を繰り返すことになる。画像取得コマンドを実行すると、図５（ａ）の処理フローに示したように、希望する映像フレーム番号の画像データが入力されるまで待つ画像取得割込み待ちＳ１１になる。画像処理に使用する映像フレーム番号のデータが入力されると起床処理の通知Ｗ０２が実行され、画像処理機能のタスクが起床して、画像処理Ｓ１０を実行し、再び画像取得コマンドを実行する（Ｓ０１）。この一連の処理がループで実行されている。
【００２５】
これまでは、画像処理機能が一つの場合の動作に限って説明した。次に複数の画像処理機能が動作した場合について説明する。図５（ａ），（ｂ）で説明した、画像取得コマンドの処理、及び垂直同期信号割込み処理に関しては、複数の画像処理機能から非同期に処理が必要となる。このため、本実施形態では、図１６に示した画像処理機能Ａ１〜Ａ４を実現するタスク（以下、画像処理機能タスクと呼ぶ）と、画像取込機能Ｐ５を実現するタスク（以下、画像取込タスクと呼ぶ）を実行させる。画像取込タスクは、各画像処理機能から必要とする画像データの映像フレーム番号を受け取り、それをデータベースにして取得フレーム情報Ｄ１として管理し、対象となるフレーム番号の画像データが取込まれると、取得要求を行った画像処理機能タスクを起床する処理を行う。この時の取得フレーム情報Ｄ１に関する処理フローとテーブル内容とを説明する。
【００２６】
まず、取得フレーム情報Ｄ１のテーブルについて詳細を説明する。本実施形態では、各画像処理タスクが必要とする画像の質が同一のものとする。つまり、全ての処理で、取込む映像のシャッタースピード，ゲイン，ホワイトバランス等、画像の質を表現するパラメータが同じことを前提にしている。図７に取得フレーム情報Ｄ１のテーブル構成を示す。テーブルＴ０１は、配列となっており、要素は、テーブルに登録されている情報の有効／無効を示す有効フラグ，取得要求フレーム番号を登録した画像処理機能のタスクに対応したＩＤ、そして画像取得コマンドで設定された取得要求フレーム番号から構成されている。この時、タスクに対応したＩＤでは、例えばフラグ処理によって、各ビットに対して、一つのタスクＩＤを割り当てることを想定した。つまり、各ビットが一つのタスクに対応しており、そのビットに１が立つと、対応したタスクが起床されることを意味する。
【００２７】
このテーブルＴ０１に取得する映像フレーム番号を登録する取得要求フレーム番号登録処理Ｓ０２の処理フローについて図８を用いて説明する。画像取得コマンドが実行されると、テーブルＴ０１に登録済みの取得要求フレーム番号を検索して、要求のあった映像フレーム番号が既に他の画像処理機能からの取得要求があったものなのか否かを判定する
（Ｓ３１）。画像取得コマンドで要求された映像フレーム番号が、既に登録された映像フレーム番号であった場合、タスクに対応したＩＤに対しては、画像取得コマンドを実行しているタスクのタスクＩＤに対応したビットに１を立てる処理を実行して、該当する映像フレーム番号の画像データが取込まれた後に、そのタスクが起床されるように設定する
（Ｓ３２）。登録済みでない場合は、新たに情報を追加して、取得要求フレーム番号の欄に新たに取得要求のあった映像フレーム番号を登録し、タスクに対応したＩＤには、画像取得コマンドを実行しているタスクのＩＤに対応したビットに１を立てる（Ｓ３４）。このように多数の機能からの取得要求に対応した構成を備えることで、複数の画像処理機能が、個別に要求した映像フレーム番号を取得フレーム情報Ｄ１のテーブルに登録し、垂直同期信号割込みによって個別にタスクの起床処理を行うことが可能となる。
【００２８】
上記の実施形態によると、画像処理機能を処理する各タスクが、個別に映像取得タイミングを制御することが可能となり、全ての画像処理機能の状況を把握して、予めタスクスケジューリングを行っておく必要がない。このようにすることによって、例えば、ある画像処理機能が自動車の速度の変化で、タスクのスケジュールを変更したとしても、別のタスクには影響が無い。また、ある画像処理機能を追加したり、削除した場合でも、画像処理機能毎に独立にタスクスケジューリングを行っているので、簡易に画像処理機能の追加と削除が可能となる。
【００２９】
上述の実施の形態では、画像取得コマンドとして式１に示したような、画像管理番号，映像フレーム番号を指定して処理を行ったが、映像フレーム番号を直接指定するのではなく、引数に数式を入れて、この数式を評価して映像フレーム番号を指定することも考えられる。
【００３０】
CaptureImage（画像管理番号，映像フレーム番号式）                    （式３）
この場合、映像フレーム番号式とは、数列式，数式，奇数／偶数など、固有の番号ではなく、数列式に合致した映像フレーム番号の画像データを取得するという指定をすることもできる。例えば、数列式として、ｎを整数とする一次式ａ×ｎ＋ｂを指定し、係数のａとｂとを入力させるようにする。そして取込まれた画像データの映像フレーム番号がこの数列式に合致した時にその画像データを取得するようにする。不等号の数式を使用した場合、例えば、映像フレーム番号がｍ以上の場合に画像を取得するなど、不等式の条件設定で取得する映像フレーム番号を指定することも可能である。
【００３１】
これまで説明してきた実施の形態では、複数の画像処理機能が使用する映像は同じ質の画像、即ち単一のカメラ制御パラメータによる画像を取得することを前提として説明してきた。しかし、画像処理機能によっては、撮像デバイスのシャッタースピードやアナログ・デジタル変換器のゲインの調整，画角などのカメラ制御パラメータを変更して、画像処理機能が要求する質の画像を生成しなければならない場合がある。つまり、処理する画像を取得する場合に、画像管理番号，映像フレーム番号に関係する情報以外に、カメラ制御に必要な情報を指定することも有効である。この時の画像処理装置の構成は、図１の映像取得手段１００が、画像の質を変更できるようなカメラなどの撮像デバイスであることを想定している。この処理について以下に説明する。
【００３２】
図９に示すように、画像処理では認識率を高めるために、画像を取込む前に、カメラの移動速度，周辺の明るさや、検出対象物の輝度によって、ゲイン調整やシャッタースピードの調整などの露光制御を行う必要が生じる場合がある。この様なカメラ制御を行う場合、これから撮影する映像フレームを対象とした画像取得要求を出すためには、撮影タイミングを考慮したカメラ制御をするためのタスク管理が複雑になる。例えば、１０フレーム後の画像データをある決まったカメラ制御のパラメータで取得したい場合、９フレーム目にカメラ制御の処理を実行しなければならない。この様なカメラ制御の処理を別タスクで行うことを各画像処理機能で分担して行うことは煩雑となり、プログラムを作ることが難しくなる。
【００３３】
そこで、画像取得コマンドの引数に、カメラ制御用の情報を付加することでカメラ制御を行うことができるようにすれば、各画像処理機能を開発するプログラマーは一つのコマンドを実行するだけで、容易に必要なカメラ制御を行うことができる。
【００３４】
CaptureImage（画像管理番号，映像フレーム番号，シャッタースピード，ゲイン，画    角）                                                                （式４）
この場合、画像取得コマンドに、取得したい画像のシャッタースピード，アナログ・デジタル変換器のゲイン，映像の視野範囲を決定する画角を設定し、取得する画像データの映像フレーム番号と共に指定する。図５で説明した垂直同期信号割込み処理によって映像フレーム番号を付加し（Ｓ０４）、この映像フレーム番号を取得フレーム情報と照会する時に、次の映像フレーム撮影に要するカメラ制御パラメータを撮像デバイスである映像取得手段１００に設定する。図９における“露光２”は、“画像２”を取込むタイミングの１フレーム前で実行するため、そのタイミングに合わせてカメラ制御パラメータを設定する処理である。このような動作も入力している映像に対して固有のフレーム番号を連続で付加して管理しているために、事前に撮影タイミングを知ることができるため可能となる。
【００３５】
カメラ制御には、シャッタースピード，ゲイン，画角以外にも、色の調整を行うホワイトバランス，ガンマ補正の係数など、取込む画像の質を変更するパラメータが多数存在する。これらのパラメータを一つのコマンドで、必要な映像フレーム番号と合わせて要求を出すことで、プログラム開発の負荷を軽減することができる。
【００３６】
以上のように、画像処理機能を実現するために必要な映像フレームを取込む際に必要な情報を付加することにより、タスク管理を容易にし、アプリケーション開発の効率を上げることができる。ちなみに、シャッタースピードやゲイン調整などは、映像の同期信号に同期した垂直同期信号割込み処理で処理する。例えば図５のフレーム番号付加Ｓ０４の際に同時にカメラ制御を行うことができる。それぞれの画像処理機能が、各々のタイミングでカメラ制御の要求を出すため、優先順位の低いタスクからのカメラ制御の要求は、優先順位が高いタスクからのカメラ制御の要求が既にあるか、又は新たに出てきたときには、優先順位の低いタスクからのカメラ制御要求がキャンセルされ、画像処理機能のタスクはその旨の通知を受けるインタフェースを持つ。
【００３７】
次に、各画像処理機能が各々の要求するカメラ制御パラメータを設定して、取得する画像データの映像フレーム番号を指定した場合、同一映像フレーム番号の画像データに対して、複数のカメラ制御パラメータが設定されるという問題が発生する。この時の対処について、以下に説明を行う。
【００３８】
図７に示した取得フレーム情報では、取得する画像についてのカメラ制御が同一であるとしていたために、映像の共有を管理するには、要求元のタスクと取得要求のあった映像フレーム番号を対応付ければよかった。しかし、カメラ制御が異なる場合は、カメラ制御に使用したパラメータを全て管理しておき、取込まれた画像データを複数の画像処理機能で共有することができるか否かを判定する必要がある。そのために本実施例の変形における取得フレーム情報におけるテーブルＴ０２では、図１２に示すように、シャッタースピード，ゲイン，画角などのカメラ制御パラメータを取得要求フレーム番号に対応付けて管理する。そして、取得する画像データが複数の画像処理機能で共有できるものであるか否かについては、テーブルＴ０２で管理されたカメラ制御パラメータが同一である時に共有できるものとする。画像データが共有できる場合は、タスクに対応したＩＤに共有する画像処理機能のタスクＩＤを登録して、既に説明した方法で画像データをタスクに提供する。
【００３９】
次に、カメラの制御パラメータが異なり、共有できない場合を説明する。撮像デバイスが一つである場合、同一映像フレームに対して複数のカメラ制御パラメータの設定要求を受け付けることは物理的にできない。その場合は、要求を出した画像処理機能のタスク優先順位などを参照し、どのパラメータ設定を優先させるかを決定する。パラメータ設定の優先順位については、オペレーションシステムが管理している、要求元のタスクの優先順位を参照する方法と、各画像処理機能がオペレーションシステムとは別に独自に優先順位を決めて、その優先順位を管理し、設定パラメータを選択する方法とが考えられる。どちらの方法でも、優先順位が高いタスクから要求のあった場合は、それまでの設定をキャンセルして、新しく優先順位の高いタスクからの要求に基づいて設定を行う。この処理の流れを図１３を用いて説明する。
【００４０】
この場合の処理は図８に示した処理フローと基本的には同様であり、画像取込みコマンドが実行されると、まず、指定された取得要求フレーム番号に対して既に取得要求があるかを確認する（Ｓ３１）。既に取得要求があった場合、新しく取得要求のあった取込みとカメラ制御パラメータが共有化できるかを判定する（Ｓ３１０）。共有化できる場合は、画像データを共有する既存の取得要求フレーム番号のタスクに対応したＩＤにタスク番号を追加して（Ｓ３２）処理を終了する。共有化できない場合は、どちらの要求の画像取込みが優先なのかを判断して取得要求フレーム番号に対するカメラ制御のパラメータを決定する（Ｓ３１１）。上記に説明したように、オペレーションシステムが管理しているタスクの優先順位に従って決たり、別途画像取込みに対する優先順位付けを行ったりすることが考えられる。次に優先順位が低くキャンセルされた画像取得要求については、以下のような三つの対応モードがある。
（１）画像取得要求をキャンセルをして、取得要求を行ったタスクに要求がキャンセルされたことを通知する。再度、画像取得要求を出すためには、画像処理機能のタスクから新たに取得要求を実行してもらう。
（２）キャンセルされた取得要求フレームの前の映像フレームを改めて取得要求フレームとして指定する。
（３）キャンセルされた取得要求フレームの後の映像フレームを新たに取得要求フレームとして指定する。
【００４１】
これら三つの方法を選択して実行する。モード（２），（３）の対応を取った場合、再度取得要求フレーム番号が決定し（処理Ｓ３１２）、処理Ｓ３１に処理を戻して、改めて決定された取得要求フレーム番号の登録処理を行う。この処理を続けて、システムは取込む画像を決定する。ここで、映像取込みの優先順位を決める方法には、オペレーションシステムで管理している優先順位だけではなく、衝突安全など緊急を要したり、自車の速度と相関が強く、画像自体は決まった間隔で取得する必要がある場合など、周囲や自動車の状況に応じて個別に決める方法がある。
【００４２】
タスクが採用している上記のモード、及びタスクの優先順位については、図２に示したタスク管理テーブルを参照することにより知ることが出来る。タスク管理テーブルには、実現する画像処理機能毎に、各画像処理機能に対応したタスクが登録されており、登録されたタスクのタスクＩＤ、上述の画像取込がキャンセルされた場合の再取得動作のモード、登録されたタスク情報の有効／無効を表わすフラグ、タスクの優先順位、そしてタスクが実行する画像処理に要求される画質や画像取込の間隔に関する情報などの情報がタスクの実行に先立って登録されるものとする。
【００４３】
ここまで説明した実施形態では、図４で説明したように、処理がある一定周期で終了し、遅延が無い場合の説明を行った。しかし、実際には、取得した画像データの内容や画像処理以外の処理によって処理時間は変動する。処理時間が短くなった場合は、取得要求フレーム番号に変化がなければ、図４で説明した処理タイミングと同様になる。例えば、
“処理１”が短時間で終了し、“画像２”の取込処理のタイミングがＮ−２のフレームで発生する状態を考えると、“画像２”の取得要求フレーム番号がＮ＋１の場合、Ｎ＋１フレームが取込まれるのを待つため、“処理２”の処理開始タイミングには変更はない。逆に“処理１”が遅延した場合の処理について、図１４，図１５を用いて説明する。“処理１”が伸びて“画像２”を取得する予定だったＮ＋１フレームまで、“画像２”を取得するための画像取得コマンドが実行できなかった場合、改めて取得する映像フレームの映像フレーム番号を決めるため、画像処理機能のタスクでは図１５の処理フローに示すような取得フレーム番号更新処理を行う。取得フレーム番号更新処理ではまず、画像取得処理がどのタイミングで実行されるのかを把握するために、現在の映像フレーム番号を取得し
（Ｓ０１０）、その情報に基づいて遅延処理を行い画像取得要求を行う映像フレーム番号を決定する（Ｓ０１１）。そして決定された映像フレーム番号について画像取得コマンドを実行する（Ｓ０１）。
【００４４】
この映像フレーム番号を決定する時には、二つの遅延処理が考えられる。処理遅延ケース１では、処理の遅延に伴い画像データの取得要求フレーム番号をＮ＋１からＮ＋２に変更する。このケースでは画像取込処理のタイミングを単純にずらすことで処理の破綻を防ぐことができる。処理遅延ケース２では、そのまま映像フレームＮ＋１の取得要求を実行する。この為には、取得した過去の画像データを画像データの映像フレーム番号と共に記憶媒体４０に記録しておくことによって可能となる。Ｋフレーム分の画像データが記録できる記憶容量を記憶媒体４０に確保しておくことにより、画像データを記録したＫフレーム後までにその映像フレームの取得要求がきた場合には要求元のタスクに画像データを配布することが可能となる。従って、処理遅延ケース２の場合には、画像取得コマンド実行前から既に並行して画像データの取得が行われていることになるため、要求した映像フレームの取込みが終わり次第、要求元タスクでは要求した画像データを取得することができ、次の画像処理を開始することが出来る。
【００４５】
この実施形態の場合、ある画像処理機能の処理が遅延した場合、映像の取得タイミングの変更には、他の処理を参照せずに変更することができる。また、カメラ制御を必要とする画像処理機能の場合、画像取得コマンドが実行される際に、図１３で説明した画像データ共有の確認処理が行われる。要求元タスクの優先順位低い場合やカメラ制御が間に合わない場合などには、画像データが共有できず、処理周期が伸びた画像処理機能以外のタスクにも影響を及ぼす可能性がある。しかし、画像処理機能の優先順位の高い処理は画像取得に対しても優先的に処理されるため、破綻することなく処理される。
【００４６】
これまでの実施の形態では、一つの撮像デバイスで説明したが、複数の撮像デバイスが存在した場合でも、同様の方法で取得する画像のフレーム番号を指定することができる。つまり、画像取得を要求する際に、撮像デバイスを選択することによって指定が可能である。
【００４７】
本発明を使用すると多数の画像処理機能の組合せが容易になると共に、個々の画像処理機能の追加と削除が容易になる。また、通常、映像の割込み処理に関するタスクや、スケジューリング処理は、システム全体でコンパイルやリンク処理をする必要がある。この場合、実際に実車に搭載された状態で、一部の画像処理機能だけをネットワークからダウンロードして組込んだり、保守作業でバージョンアップしたりすることはできない。しかし本発明を用いれば、割込み処理やタスクのスケジュール管理を各画像処理機能と独立させて制御できるため、タスクの実行形態として独立した形で構成し、タスクをネットワークからダウンロードしたり、個別のタスク毎にバージョンアップすることが可能となる。
【００４８】
上記の場合、図１０に示すようなユーザインタフェースを持った画像処理装置が可能となる。このユーザインタフェースは、ドライバーが欲する機能を自由に選択することが出来る。このユーザインタフェースの管理は、図１６に示したユーザインタフェース機能
Ｐ３により実行される。ユーザインタフェース機能Ｐ３は、図２のタスク管理テーブルの情報に基づいて、図１０に示した画像処理機能の選択画面の表示処理を行う。この画面において、ドライバーがある画像処理機能を指定した場合、その情報はユーザインタフェース機能Ｐ３に送られる。ユーザインタフェース機能Ｐ３は、選択された画像処理機能の情報を画像処理タスク管理機能Ｐ２に送信する。画像処理タスク管理機能Ｐ２において、起動要求のあった画像処理タスク（例えば車線逸脱警報）を起動して処理を実行すると共に、タスク管理テーブルの有効フラグを“ＯＮ”に書き換える。
【００４９】
この時、起動される画像処理タスクは、それまで動作している他の画像処理タスクとは独立に実行することができる。このように本発明によって、画像処理機能の組合せを簡易に変更することが可能となるため、自由な選択が可能となる。また、各画像処理機能が独立して動作するため、画像取得処理のインタフェースを定義しておけば、実行モジュールを別ファイルにすることが可能となりダイナミックローディングに対応することが可能となる。つまり、図５，図６，図１６で説明した処理及びタスク構成を別の実行ファイル上で実現することを可能にすることで、画像処理機能Ａ１〜Ａ４などを別ファイルとすることが可能となる。この様な処理は、情報制御のプログラムでは、実行ファイルを分けるための様々な実装方法が存在する。
【００５０】
本発明によれば、機能の増減によって各機能のプログラムが影響を受けないため、コンパイルすることが不要となり、各機能を個別の実行ファイルに分割することが可能となる。機能を別ファイルに分割することで、図１１に示すように画像処理機能の実装されたファイルを通信手段３１を介してネットワークにアクセスして、希望の機能をダウンロードして図２のタスク管理テーブルに登録することで、自車の画像処理機能に追加することが可能となる。つまり、本発明によれば、図１０に示すように一部の画像処理のみを実行することが可能で、実行するアプリケーションの選択をユーザが自由に行うことができる。また、各画像処理機能がお互いに干渉せず、制御することが可能となることから、図１１に示すように、ネットワーク経由で新たな画像処理機能をダウンロードしたり、既存のアプリケーションの削除をしたりすることができる。
【図面の簡単な説明】
【００５１】
【図１】本発明を用いた画像処理装置の構成を説明する図。
【図２】タスク管理テーブルを説明する図。
【図３】画像処理機能の処理タイミングを説明する図。
【図４】画像取得処理と画像処理とのタイミングを説明する図。
【図５】画像取得コマンドと垂直同期信号割込み処理の処理フローを説明する図。
【図６】タスクにおける画像処理のフローを説明する図。
【図７】取得フレーム情報のテーブルを説明する図。
【図８】取込要求フレーム番号の登録処理のフローを説明する図。
【図９】カメラ制御の処理タイミングを説明する図。
【図１０】タスク登録のユーザインタフェースを説明する図。
【図１１】タスク登録のユーザインタフェースを説明する図。
【図１２】取得フレーム情報のテーブルの他の例を説明する図。
【図１３】取込要求フレーム番号の登録処理の他の例のフローを説明する図。
【図１４】画像取得と処理タイミングを説明する図。
【図１５】本発明の処理フローを説明する図。
【図１６】本発明を用いた画像処理装置のタスク構成を説明する図。
【符号の説明】
【００５２】
１…画像処理装置、２０…映像入力コントローラ、２１…垂直同期信号割込み手段、
２２…画像データ転送手段、３０…プロセッサ、４０…記憶媒体、１００…映像取得手段、２００…映像フレーム付加手段、３００…要求映像フレーム判別手段、４００…要求映像フレーム取得受付手段、５００…要求映像フレーム取得通知手段。
【図１】
2008027181.tif 000003
【図２】
2008027181.tif 000004
【図３】
2008027181.tif 000005
【図４】
2008027181.tif 000006
【図５】
2008027181.tif 000007
【図６】
2008027181.tif 000008
【図７】
2008027181.tif 000009
【図８】
2008027181.tif 000010
【図９】
2008027181.tif 000011
【図１０】
2008027181.tif 000012
【図１１】
2008027181.tif 000013
【図１２】
2008027181.tif 000014
【図１３】
2008027181.tif 000015
【図１４】
2008027181.tif 000016
【図１５】
2008027181.tif 000017
【図１６】
2008027181.tif 000018