(57)【要約】【課題】各処理対象データの処理に要する時間が異なる場合であっても、処理結果を時系列で安定的に出力することができる処理装置を提供すること。【解決手段】時系列順の処理対象データの処理を行う処理装置であって、複数の処理ユニット、これら処理ユニットを管理する管理ユニット、及び複数のバッファ領域を有するバッファメモリを備え、管理ユニットが、所定の順番で複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定部、実行可能状態であると判定された一の処理ユニットに処理させる処理対象データを複数のバッファ領域のうちの一のバッファ領域に格納する格納処理部、実行可能状態であると判定された一の処理ユニットに、前記一のバッファ領域に格納された処理対象データの処理を依頼する処理依頼部、及び処理を依頼した前記一の処理ユニットの一巡前の処理結果データを出力する結果出力部を装備する。【選択図】図２
2020123255.tif 000002
【特許請求の範囲】
【請求項１】
時系列順に入力される処理対象データに対して所定の処理を行う処理装置であって、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備え、
前記管理ユニットが、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定部と、
該判定部により実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理部と、
前記判定部により実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼部と、
該処理依頼部により処理が依頼された前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力部とを備え、
前記一の処理ユニットが、
前記処理依頼部からの依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を行うものであることを特徴とする処理装置。
【請求項２】
前記管理ユニットが、
前記判定部により実行可能状態であると判定された前記一の処理ユニットと、
前記格納処理部により前記処理対象データが格納される前記一のバッファ領域と、
前記一巡前の処理結果データの有無状態と、
前記一巡前の処理結果データが格納されたバッファ領域と、
を紐付けて管理するものであることを特徴とする請求項１記載の処理装置。
【請求項３】
前記判定部が、
前記一の処理ユニットの一巡前の処理が終了していない場合に、前記一の処理ユニットが実行可能状態ではないと判定するものであり、
前記一の処理ユニットが実行可能状態ではないと判定した場合、前記一の処理ユニットに処理させるタイミングの前記処理対象データを処理対象から外すことを特徴とする請求項１又は請求項２記載の処理装置。
【請求項４】
前記処理対象データが、画像データであり、
前記所定の処理が、所定の画像処理であることを特徴とする請求項１〜３のいずれかの項に記載の処理装置。
【請求項５】
ドライバを撮影するカメラと、
請求項４記載の処理装置とを備え、
前記画像データが、前記カメラで撮影された画像データであり、
前記所定の画像処理が、前記ドライバの状態を把握するための画像処理であることを特徴とするドライバモニタリングシステム。
【請求項６】
時系列順に入力される処理対象データに対して所定の処理を行う処理方法であって、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備えた装置を用い、
前記管理ユニットが、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定ステップと、
該判定ステップにより実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理ステップと、
前記判定ステップにより実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼ステップと、
該処理依頼ステップにより処理が依頼された前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力ステップとを含み、
前記一の処理ユニットが、
前記処理依頼ステップによる依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を行うことを特徴とする処理方法。
【請求項７】
時系列順に入力される処理対象データに対して所定の処理をプロセッサに実行させるためのプログラムであって、
前記プロセッサが、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備え、
前記管理ユニットに、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定ステップと、
該判定ステップにより実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理ステップと、
前記判定ステップにより実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼ステップと、
該処理依頼ステップにより処理が依頼された前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力ステップとを実行させ、
前記一の処理ユニットに、
前記処理依頼ステップによる依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置、ドライバモニタリングシステム、処理方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、センサからのデータを時系列に記憶する解析用キューと、解析用キューのデータを解析する複数のインスタンスを有するデータ解析手段とを備え、データ解析手段の複数のインスタンスが並行して解析用キューのデータを解析する技術について記載されている。
【０００３】
特許文献２には、２以上のプロセッサを単方向のリング状バスで接続し、これら各プロセッサ間でデータの転送を可能とし、リングに沿った順序で、各プロセッサに接続された各ローカルメモリに対して、連続する時系列画像を順次入力させるように制御する技術について記載されている。
【０００４】
特許文献３には、逐次処理を行う回路を前半の分割部と後半の分割部とに分割して並列処理し、最後に統合部により各段の結果を統合する処理を実行する技術について記載されている。
【０００５】
特許文献４には、並列演算手段のデータ並列性を発現する並列数よりも小さい値で画像上の並列数を決定し、画像識別手法に含まれる複数の小識別器を順番に判断する判断順にしたがって当該画像識別手法に含まれる全ての小識別器の個数である全数の値よりも十分に小さく且つ早期棄却の間隔に近い値の個数を含むようにグループを決定し、決定された画像上の並列数とグループ内の小識別器の個数とを乗じた個数を処理単位として画像識別手法にしたがって並列演算手段に並列処理させ、その処理結果から、各画像位置毎に早期棄却を行うか否かの判断、識別結果の出力、画像上の識別位置の移動を行う技術について記載されている。
【０００６】
［発明が解決しようとする課題］
特許文献１記載の技術では、解析が終わった順に結果が反映されるため、並列解析される各データの解析時間にばらつきがある場合、入力データの順番に結果が反映されず、時系列の結果を得ることが保証されないという課題があった。
【０００７】
特許文献２記載の技術では、プロセッサ間で中間結果を転送して時系列処理を行うので、中間処理に要する時間が変動する場合、処理の待ちや詰まりが発生し、時系列の結果を安定的に得ることができないという課題があった。
【０００８】
特許文献３記載の技術では、複数の入力データに対する一連の演算処理が前半と後半に分割される構成となっているが、処理時間がデータ入力の時点で分かっていなければ、前半と後半を正確に分割することができず、時系列の結果を安定的に得ることができないという課題があった。
【０００９】
また、特許文献４記載の技術では、画像の内容で処理時間が異なる場合、効果的な並列化が困難であり、次の並列化までの待ちが発生し、時系列の結果を安定的に得ることができないという課題があった。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−８７１９０号公報
【特許文献２】特開平１０−１６２１２９号公報
【特許文献３】特開２０１７−１９１４０５号公報
【特許文献４】特開２０１６−１８９１０８号公報
【発明の概要】
【課題を解決するための手段及びその効果】
【００１１】
本発明は上記課題に鑑みなされたものであって、各処理対象データの処理時間にばらつきが生じたりして、各処理が起動順に終了しないような場合であっても、処理結果を時系列で安定的に出力することができる処理装置、ドライバモニタリングシステム、処理方法、及びプログラムを提供することを目的としている。
【００１２】
上記目的を達成するために本開示に係る処理装置（１）は、時系列順に入力される処理対象データに対して所定の処理を行う処理装置であって、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備え、
前記管理ユニットが、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定部と、
該判定部により実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理部と、
前記判定部により実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼部と、
該処理依頼部により処理が依頼された前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力部とを備え、
前記一の処理ユニットが、
前記処理依頼部からの依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を行うものであることを特徴としている。
【００１３】
上記処理装置（１）によれば、前記判定部により、前記複数の処理ユニットのうちの一の処理ユニットが実行可能状態であることが巡回的に判定され続けた場合、時系列順に入力される処理対象データの入力間隔（例えば、時間Ｔとする）と、前記複数の処理ユニットの数（例えば、Ｎ個：Ｎは２以上とする）とを掛け合わせた間隔（Ｔ×Ｎ時間）内で、各処理ユニットが前記所定の処理を巡回的に実行できることとなる。したがって、各処理ユニットで実行される、前記処理対象データの処理時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その処理時間が前記Ｔ×Ｎ時間内であれば、全ての処理対象データの処理結果データを、前記Ｔ×Ｎ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる。
【００１４】
また本開示に係る処理装置（２）は、上記処理装置（１）において、
前記管理ユニットが、
前記判定部により実行可能状態であると判定された前記一の処理ユニットと、
前記格納処理部により前記処理対象データが格納される前記一のバッファ領域と、
前記一巡前の処理結果データの有無状態と、
前記一巡前の処理結果データが格納されたバッファ領域と、
を紐付けて管理するものであることを特徴としている。
【００１５】
上記処理装置（２）によれば、前記管理ユニットによって、前記処理対象データの処理を依頼する前記一の処理ユニットと、前記処理対象データが格納される前記一のバッファ領域と、前記一巡前の処理結果データの有無状態と、前記一巡前の処理結果データが格納されたバッファ領域とが紐付けて管理される。したがって、これらの管理情報を前記処理対象データの処理毎に更新することで、前記一の処理ユニットにより実行される前記処理対象データの処理と、当該一の処理ユニットにより実行される前記一巡前の処理結果データの出力とを時系列で安定的に行えるように適切に管理することができる。
【００１６】
また本開示に係る処理装置（３）は、上記処理装置（１）又は（２）において、
前記判定部が、
前記一の処理ユニットの一巡前の処理が終了していない場合に、前記一の処理ユニットが実行可能状態ではないと判定するものであり、
前記一の処理ユニットが実行可能状態ではないと判定した場合、前記一の処理ユニットに処理させるタイミングの前記処理対象データを処理対象から外すことを特徴としている。
【００１７】
上記処理装置（３）によれば、前記一の処理ユニットの一巡前の処理が終了していない場合（換言すれば、一巡前の処理が継続して行われている場合）、前記判定部によって、前記一の処理ユニットが実行可能状態ではないと判定され、この場合は、前記一の処理ユニットに処理させるタイミングの前記処理対象データが処理対象から外される（例えば、前記処理対象データは破棄される）。これにより、前記一の処理ユニットの一巡前の処理が終了した後、前記複数の処理ユニットの個数分の時間（一巡するまでの間）の処理結果データの出力が一時的に遅れることとなるが、その後の処理は全て時系列で実行することができる。また、処理対象から外された前記処理対象データの処理結果データは得られないこととなるが、その処理結果データが欠けるだけで、その他の処理結果データは時系列に安定的に出力することができる。
【００１８】
また本開示に係る処理装置（４）は、上記処理装置（１）〜（３）のいずれかにおいて、
前記処理対象データが、画像データであり、
前記所定の処理が、所定の画像処理であることを特徴としている。
【００１９】
上記処理装置（４）によれば、時系列順に入力される画像データに対して所定の画像処理を行う場合に、上記処理装置（１）〜（３）のいずれかの効果を得ることができ、各処理ユニットで実行される画像処理時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その画像処理時間が前記Ｔ×Ｎ時間内であれば、全ての画像データの処理結果データを、前記Ｔ×Ｎ時間（一巡）遅れの時系列で安定的に出力することができる。
【００２０】
また本開示に係るドライバモニタリングシステムは、
ドライバを撮影するカメラと、
上記処理装置（４）とを備え、
前記画像データが、前記カメラで撮影された画像データであり、
前記所定の画像処理が、前記ドライバの状態を把握するための画像処理であることを特徴としている。
【００２１】
上記ドライバモニタリングシステムによれば、前記ドライバの状態を時系列で安定的に把握することが可能となり、前記ドライバのリアルタイムでのモニタリング精度を高めることができる。
【００２２】
また本開示に係る処理方法は、時系列順に入力される処理対象データに対して所定の処理を行う処理方法であって、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備えた装置を用い、
前記管理ユニットが、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定ステップと、
該判定ステップにより実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理ステップと、
前記判定ステップにより実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼ステップと、
該処理依頼ステップにより処理を依頼した前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力ステップとを含み、
前記一の処理ユニットが、
前記処理依頼ステップによる依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を行うことを特徴としている。
【００２３】
上記処理方法によれば、前記判定ステップにより、前記複数の処理ユニットのうちの一の処理ユニットが実行可能状態であることが巡回的に判定され続けた場合、時系列順に入力される処理対象データの入力間隔（例えば、時間Ｔとする）と、前記複数の処理ユニットの数（例えば、Ｎ個：Ｎは２以上とする）とを掛け合わせた間隔（Ｔ×Ｎ時間）内で、各処理ユニットが前記所定の処理を巡回的に実行できることとなる。したがって、各処理ユニットで実行される処理時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その処理時間が前記Ｔ×Ｎ時間内であれば、全ての処理対象データの処理結果データを、前記Ｔ×Ｎ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる。
【００２４】
また本開示に係るプログラムは、時系列順に入力される処理対象データに対して所定の処理をプロセッサに実行させるためのプログラムであって、
前記プロセッサが、
前記所定の処理を行う複数の処理ユニットと、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニットと、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリとを備え、
前記管理ユニットに、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定ステップと、
該判定ステップにより実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理ステップと、
前記判定ステップにより実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼ステップと、
該処理依頼ステップにより処理を依頼した前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力ステップとを実行させ、
前記一の処理ユニットに、
前記処理依頼ステップによる依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を実行させるためのプログラムであることを特徴としている。
【００２５】
上記プログラムによれば、上記処理方法と同様の効果を得ることができ、各処理ユニットで実行される処理時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その処理時間が前記Ｔ×Ｎ時間内であれば、全ての処理対象データの処理結果データを、前記Ｔ×Ｎ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる装置、又はシステムを実現することができる。上記プログラムは、記憶媒体に保存されたプログラムであってもよいし、通信ネットワークを介して転送可能なプログラムであってもよい。
【図面の簡単な説明】
【００２６】
【図１】実施の形態に係る処理装置が適用されたドライバモニタリングシステムの概略ブロック図である。
【図２】実施の形態に係る処理装置の機能構成例を示すブロック図である。
【図３】実施の形態に係る処理装置を構成するバッファメモリの構成例を示す模式図である。
【図４】実施の形態に係る処理装置を構成する各部の動作を説明するためのタイミングチャートであり、処理コア数×フレームレート間隔の時間内に、画像データの処理が実行できている場合の動作例を示す図である。
【図５】実施の形態に係る処理装置を構成する各部の動作を説明するためのタイミングチャートであり、処理コア数×フレームレート間隔の時間内に、画像データの処理が実行できない場合が発生したときの動作例を示す図である。
【図６】実施の形態に係る処理装置を構成する管理コアと処理コアとが行う処理動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明に係る処理装置、ドライバモニタリングシステム、処理方法、及びプログラムの実施の形態を図面に基づいて説明する。
【００２８】
［適用例］
図１は、実施の形態に係る処理装置が適用されたドライバモニタリングシステムの概略ブロック図である。
【００２９】
ドライバモニタリングシステム３は、車両１のドライバ２の顔を含む画像を撮影するカメラ４と、カメラ４に接続された処理装置１０とを含んで構成されている。処理装置１０は、バス５を介して、情報系ＥＣＵ（Electronic Control Unit）群６、走行系ＥＣＵ群７、及び安全機能系ＥＣＵ群８などに接続されている。バス５を介して接続された処理装置１０と各ＥＣＵ群とは、例えば、ＣＡＮ（Controller Area Network）プロトコルなどの通信規格に従って相互通信可能に構成されている。なお、処理装置１０は、情報系ＥＣＵ群６に含まれるＥＣＵの一つとして構成してもよいし、バス５に接続させないで、独立したシステムとして構成してもよい。
【００３０】
ドライバモニタリングシステム３は、カメラ４で撮影された画像を処理装置１０に出力し、処理装置１０で所定の画像処理を実行して、ドライバ２の状態（例えば、運転可能な状態であるか否か）をリアルタイムで検出し、その検出結果に基づいて、所定の制御信号を出力するシステムである。
【００３１】
カメラ４は、ドライバ２を撮影する装置であり、所定のフレームレート（例えば、毎秒３０〜６０フレーム）で画像を撮影し、撮影した画像データを処理装置１０へ出力する。カメラ４は、例えば、図示しないレンズ部、撮像素子部、光照射部、及びこれら各部を制御するカメラ制御部などを含んで構成される。カメラ制御部は、撮像素子部や光照射部を制御して、該光照射部から光（例えば、近赤外線など）を照射し、撮像素子部でその反射光を撮像し、撮像された画像データを処理装置１０へ出力する制御などを行う。
【００３２】
カメラ４の数は、１台でもよいし、２台以上であってもよい。カメラ４の設置位置は、少なくともドライバ２の顔を含む視野を撮影できる位置であれば、特に限定されない。また、カメラ４は、処理装置１０と別体（別筐体）で構成してもよいし、処理装置１０と一体（同一筐体）で構成してもよい。
【００３３】
情報系ＥＣＵ群６は、インフォテイメント装置、テレマティクス装置、又はＩＴＳ（Intelligent Transport Systems）関連装置が含まれている。インフォテイメント装置には、カーナビゲーション装置、又はオーディオ機器などが含まれ、テレマティクス装置には、携帯電話網等へ接続するための通信ユニットなどが含まれている。ＩＴＳ関連装置には、ＥＴＣ（Electronic Toll Collection System）、又はＩＴＳスポットなどの路側機との路車間通信、若しくは車々間通信を行うための通信ユニットなどが含まれている。
【００３４】
走行系ＥＣＵ群７には、駆動系ＥＣＵと、シャーシ系ＥＣＵとが含まれている。駆動系ＥＣＵには、エンジン、モータ、燃料、電池、又はトランスミッション等の「走る」機能に関する制御ユニットが含まれている。シャーシ系ＥＣＵには、ブレーキ、又はステアリング等の「止まる、曲がる」機能に関する制御ユニットが含まれている。
【００３５】
安全機能系ＥＣＵ群８には、自動ブレーキ、車線維持制御、又は車間距離制御等、走行系ＥＣＵ群７などとの連携により自動的に安全性の向上、又は快適な運転を実現する機能に関する制御ユニットが含まれている。
【００３６】
これらＥＣＵ群の他に、さらにボディ系ＥＣＵ群、ゲートウェイＥＣＵ、又は外部インターフェースがバス５に接続されてもよい。ボディ系ＥＣＵ群には、ドアロック、パワーウインドウ、エアコン、ライト、又はウインカ等の車体の機能に関する制御ユニットが含まれている。ゲートウェイＥＣＵは、バス５を介して接続された各ＥＣＵ群などとの間で、ＣＡＮプロトコルに従ってフレームデータの授受を安全に実行するための制御ユニットである。
【００３７】
処理装置１０は、カメラ４から時系列順に（すなわち、所定のフレームレートで）入力される画像データに対して所定の画像処理を行う装置であり、プロセッサ１１と、メモリ２０とを含んで構成されている。プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）などの演算処理装置を含んで構成されている。メモリ２０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）などを含んで構成されている。プロセッサ１１に実行させるための、本実施の形態に係るプログラム、及び該プログラムの実行に必要なデータなどがメモリ２０のＲＯＭに記憶され、プロセッサ１１が実行するプログラムやデータがメモリ２０のＲＡＭに一時的に格納されるようになっている。
【００３８】
処理装置１０で実行される所定の画像処理には、例えば、カメラ４で撮影された各画像データからドライバ２の顔を検出する処理、検出された顔の領域から、目、鼻、口、眉などの顔器官の位置又は形状を検出する処理、顔器官の位置又は形状に基づいてドライバ２の顔の向き、若しくはドライバ２の視線方向を検出する処理などが含まれる。これら画像処理により、撮影された各画像データからドライバ２の状態（例えば、ドライバ２が運転可能な状態であるか否かなどの状態）が検出される。そして、その検出結果に基づいて、所定の制御信号、例えば、運転可能な状態ではない場合に、ドライバ２に警告するための警報信号などがバス５を介して所定のＥＣＵに出力されるようになっている。
【００３９】
上記した各画像データの画像処理に要する時間は、常に同一ではなく、処理時間が短い（換言すれば、処理負荷が小さい）画像データもあれば、処理時間が長い（換言すれば、処理負荷が大きい）画像データもあり、処理時間にばらつきが生じることもあり、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）することもある。
【００４０】
本実施の形態では、ドライバ２の状態を把握するための画像処理が高速かつ安定的に実行できるように、処理装置１０に搭載されているプロセッサ１１は、複数のコアプロセッサが搭載されたマルチコアプロセッサで構成されている。なお、マルチコアプロセッサに代えて、例えば、シングルコアプロセッサを処理装置１０に複数搭載し、複数のシングルコアプロセッサによりプロセッサ１１と同様の機能を実現するように構成してもよい。
【００４１】
そして、プロセッサ１１では、複数（例えば、３つ以上）のコアプロセッサのうちの一つを管理ユニットとして機能させ、残りの２以上のコアプロセッサを、画像処理を行う処理ユニットとして機能させるように構成されている。なお、一つのコアプロセッサに、管理ユニットとしての機能と、処理ユニットとしての機能を実行させるようにしてもよい。
【００４２】
管理ユニットは、複数の処理ユニットに、カメラ４から取得した画像データを時系列順に分散させて、所定の画像処理を巡回的に実行させるための管理を行う。管理ユニットは、所定の順番で複数の処理ユニットのうちの一の処理ユニットに画像データの処理を依頼するために、該処理を依頼する一の処理ユニットと、処理対象の画像データ及びその処理結果データが格納されるバッファとを紐付けて管理する。そして、管理ユニットが、上記一の処理ユニットへの画像データの処理依頼と、一巡前に依頼した画像データの処理結果データの出力とを管理するようになっている。
【００４３】
処理装置１０によれば、時系列順に入力される画像データの入力間隔（フレームレート）を例えば、時間Ｔとし、複数の処理ユニットの数を、例えば、Ｎ個（Ｎは２以上）とした場合、各処理ユニットで実行される画像処理の時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、画像データの処理時間がＴ×Ｎ時間内であれば、全ての画像データの処理結果データを、Ｔ×Ｎ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することが可能となる。
【００４４】
［構成例］
図２は、実施の形態に係る処理装置１０の機能構成例を示すブロック図である。
処理装置１０は、時系列順に入力される画像データ（処理対象データ）に対して所定の画像処理を行う装置である。処理装置１０に搭載されているプロセッサ１１は、例えば、１つのパッケージ内に複数のコアプロセッサが搭載されたマルチコアプロセッサで構成されている。
【００４５】
図２に示す例では、プロセッサ１１に４つのコアプロセッサが搭載されている。４つのコアプロセッサのうち、１つのコアプロセッサが管理ユニット（以下、管理コアという）１２として動作し、残りの３つのコアプロセッサが第１〜第３処理ユニット（以下、第１〜第３処理コアという）１３〜１５として動作する構成となっている。すなわち、処理装置１０は、管理コア１２と、第１処理コア１３、第２処理コア１４、及び第３処理コア１５とを含み、さらにバッファメモリ２１を含んで構成されている。バッファメモリ２１は、例えば、メモリ２０のＲＡＭ内に設けられ、カメラ４から取得した画像データと当該画像データの処理結果データとが時系列順に格納される複数のバッファ領域を有している。
【００４６】
図３は、バッファメモリ２１の構成例を示す模式図である。
図３に示す例では、バッファメモリ２１は、第１〜第５バッファ領域（以下、第１〜第５バッファという）２３〜２７を有するリングバッファ２２を含んで構成されている。第１バッファ２３〜第５バッファ２７のそれぞれには、管理コア１２が各処理コアに画像処理を依頼する画像データと、当該画像データの処理結果データとが時系列順に格納される領域が設けられている。なお、リングバッファ２２のバッファ数は、処理コアの数よりも多くなるように構成されている。
【００４７】
管理コア１２は、第１処理コア１３〜第３処理コア１５に画像データを時系列順に分散させて、所定の画像処理を巡回的に実行させるための管理を行う。管理コア１２は、画像取得部１２ａ、判定部１２ｂ、格納処理部１２ｃ、処理依頼部１２ｄ、及び結果出力部１２ｅを含んで構成されている。
【００４８】
画像取得部１２ａは、カメラ４から所定のフレームレートで撮影された時系列の画像データを取得する。
【００４９】
判定部１２ｂは、所定の順番で第１処理コア１３〜第３処理コア１５のうちの一の処理コアの実行可能状態を判定する処理を行う。実行可能状態の判定は、例えば、処理コアが新たな画像データの画像処理を実行できるReady状態であるか、又は新たな画像処理を実行できないBusy状態（前回依頼した処理が終わっていない状態）であるかを判定する。
【００５０】
格納処理部１２ｃは、判定部１２ｂにより実行可能状態であると判定された一の処理コアに処理させる画像データを、バッファメモリ２１に設けられたリングバッファ２２の第１バッファ２３〜第５バッファ２７のうちの、指定された一のバッファ領域に格納する処理を行う。
【００５１】
処理依頼部１２ｄは、判定部１２ｂにより実行可能状態であると判定された一の処理コアに、格納処理部１２ｃによって一のバッファ領域に格納された画像データの画像処理を依頼する処理を行う。
【００５２】
結果出力部１２ｅは、処理依頼部１２ｄにより処理が依頼された一の処理コアの一巡前の処理結果データをリングバッファ２２から取り込んで出力する処理を行う。当該一の処理コアの一巡前の処理結果データは、一巡前に処理依頼された画像データが格納されたバッファ領域に格納されている。
【００５３】
第１処理コア１３、第２処理コア１４、及び第３処理コア１５は、管理コア１２の処理依頼部１２ｄからの依頼に基づいて、リングバッファ２２の一のバッファ領域から画像データを取り込んで、所定の画像処理を行い、その処理結果データを前記一のバッファ領域（すなわち、処理依頼された画像データが格納されていたバッファ領域）に格納する処理を行う。
【００５４】
図４は、実施の形態に係る処理装置１０を構成する各部の動作を説明するためのタイミングチャートである。図４は、各処理コアが、処理コア数（Ｎ＝３）×フレームレート間隔（時間Ｔ）の時間３Ｔ内に、画像データの処理を実行できている場合の動作例を示す図である。
【００５５】
管理コア１２の内部メモリ（例えば、キャッシュメモリ、またはレジスタなど）には、［１］依頼コア、［２］画像データ格納バッファ、［３］処理結果の有無、及び［４］処理結果格納バッファを含む管理情報（インデックス情報）が紐付けて格納されるようになっている。これら管理情報は、例えば、管理コア１２が［１］依頼コアの対象となっている処理コアへの処理依頼を実行する度に更新されるようになっている。
【００５６】
内部メモリの［１］依頼コアの格納領域には、処理依頼部１２ｄが画像データの処理を依頼する処理コアの情報、本例では、第１処理コア１３〜第３処理コア１５のいずれかの情報が格納され、更新される。
［２］画像データ格納バッファの格納領域には、格納処理部１２ｃにより処理対象の画像データが格納される一のバッファ領域の情報、本例では、第１バッファ２３〜第５バッファ２７のいずれかの情報が格納され、更新される。
［３］処理結果の有無の格納領域には、［１］の処理コアにおける一巡前の処理結果データの有無に関する情報が格納される。
［４］処理結果格納バッファの格納領域には、［１］の処理コアにおける一巡前の処理結果データが格納されたバッファ領域の情報が格納され、更新される。
【００５７】
図４では、カメラ４の起動後、画像データＦ１〜Ｆ７が、所定のフレームレート間隔（時間Ｔ）で、処理装置１０に取り込まれる場合について説明する。
【００５８】
カメラ４の起動後、管理コア１２は、管理情報（［１］〜［４］）の初期値を読み込む。時刻ｔ１において、管理コア１２は、画像データＦ１を取得すると、管理情報（［１］依頼コア）に基づいて、画像データＦ１を分散させる処理コアを決定する。本例では、カメラ４の起動後、第１処理コア１３から第３処理コア１５の順に巡回させながら画像データを分散させるようにプログラムされており、［１］依頼コアの初期値に第１処理コア１３が設定されている。したがって、管理コア１２は、第１処理コア１３の実行可能状態を判定する。
【００５９】
具体的には、判定部１２ｂが、第１処理コア１３の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。なお、カメラ４の起動後、第１処理コア１３〜第３処理コア１５での画像処理が一巡するまでは、いずれの処理コアもReady状態となっている。
【００６０】
判定部１２ｂが、第１処理コア１３のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第４バッファ２６（本例では、初期値が「処理コア数＋１」のバッファ領域に設定されている）に、処理対象データである画像データＦ１を格納する。
【００６１】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第１処理コア１３に、第４バッファ２６に格納された画像データＦ１の処理を依頼する。一方、第１処理コア１３は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第４バッファ２６の画像データ格納領域に格納された画像データＦ１を取り込み、所定の画像処理を開始する。図４では、矢印の長さが、処理時間の長さを示している。
【００６２】
なお、起動時に、格納処理部１２ｃが、最初の処理対象データを処理コアの個数分ずらしたバッファ領域（処理コア数＋１のバッファ領域）に格納する理由として、以下の理由が挙げられる。すなわち、本例において、画像データの処理依頼のタイミングにおいて結果出力部１２ｅから出力される処理結果データは、当該処理コアで一巡前に処理依頼された画像データの処理結果データとなる。そのため、起動時に、第１バッファ２３に格納された結果（換言すれば、結果格納位置のカウンタ１の結果）から出力されるようにするために、起動時には、最初の処理対象となる画像データを処理コアの個数分ずらしたバッファ領域に格納する構成となっている。
【００６３】
また、起動時、各処理コアでの処理が一巡するまでは、［１］依頼コアである第１処理コア１３における一巡前の処理結果データはない。そのため、［３］処理結果の有無の管理情報には、各処理コアでの処理が一巡するまで、結果無を示す情報が格納されるようになっている。
【００６４】
また、［４］処理結果格納バッファの管理情報には、第１バッファ２３の情報が初期値として格納されているが、起動時には、［１］依頼コアである第１処理コア１３における一巡前の処理結果データはない。したがって、結果出力部１２ｅは、第１バッファ２３の処理結果データがない状態を示す信号を出力するようになっている。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００６５】
次に時刻ｔ２において、管理コア１２は、画像データＦ２を取得すると、画像データＦ２を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第２処理コア１４の実行可能状態を判定する。具体的には、判定部１２ｂが、第２処理コア１４の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。
【００６６】
判定部１２ｂが、第２処理コア１４のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第５バッファ２７に、処理対象データである画像データＦ２を格納する。
【００６７】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第２処理コア１４に、第５バッファ２７に格納された画像データＦ２の処理を依頼する。一方、第２処理コア１４は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第５バッファ２７の画像データ格納領域に格納された画像データＦ２を取り込み、所定の画像処理を実行する。
【００６８】
なお、起動時、各処理コアでの処理が一巡するまでは、［１］依頼コアである第２処理コア１４における一巡前の処理結果データはない。そのため、［３］処理結果の有無の管理情報には、結果無を示す情報が格納されている。
【００６９】
また、［４］処理結果格納バッファの管理情報には、第２バッファ２４の情報が初期値として格納されているが、起動時には、［１］依頼コアである第２処理コア１４における一巡前の処理結果データはない。したがって、結果出力部１２ｅは、第２バッファ２４の処理結果データがない状態を示す信号を出力するようになっている。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００７０】
次に時刻ｔ３において、第１処理コア１３に依頼した画像データＦ１の画像処理が終了すると、第１処理コア１３は、画像データＦ１の処理結果データを第４バッファ２６の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【００７１】
次に時刻ｔ４において、管理コア１２は、画像データＦ３を取得すると、画像データＦ３を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第３処理コア１５の実行可能状態を判定する。具体的には、判定部１２ｂが、第３処理コア１５の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。
【００７２】
判定部１２ｂが、第３処理コア１５のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、第１バッファ２３の情報を格納し、リングバッファ２２の第１バッファ２３に、処理対象データである画像データＦ３を格納する。
【００７３】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第３処理コア１５に、第１バッファ２３に格納された画像データＦ３の処理を依頼する。一方、第３処理コア１５は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第１バッファ２３の画像データ格納領域に格納された画像データＦ３を取り込み、所定の画像処理を実行する。
【００７４】
なお、起動時、各処理コアでの処理が一巡するまでは、［１］依頼コアである第３処理コア１５における一巡前の処理結果データはない。そのため、［３］処理結果の有無の管理情報には、結果無を示す情報が格納されている。
【００７５】
また、［４］処理結果格納バッファの管理情報には、第３バッファ２５の情報が初期値として格納されているが、起動時には、［１］依頼コアである第３処理コア１５における一巡前の処理結果データはない。したがって、結果出力部１２ｅは、第３バッファ２５の処理結果データがない状態を示す信号を出力するようになっている。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００７６】
次に時刻ｔ５において、第２処理コア１４に依頼した画像データＦ２の画像処理が終了すると、第２処理コア１４は、画像データＦ２の処理結果データを第５バッファ２７の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【００７７】
次に時刻ｔ６において、管理コア１２は、画像データＦ４を取得すると、画像データＦ４を分散させる処理コアを決定する。すなわち、管理コア１２は、更新された管理情報（［１］依頼コア）に基づいて、第１処理コア１３の実行可能状態を判定する。
【００７８】
具体的には、判定部１２ｂが、第１処理コア１３の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。第１処理コア１３は、時刻ｔ３において画像処理を終え、Ready状態となっている。
【００７９】
判定部１２ｂが、第１処理コア１３のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第２バッファ２４に、処理対象データである画像データＦ４を格納する。
【００８０】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第１処理コア１３に、第２バッファ２４に格納された画像データＦ４の処理を依頼する。一方、第１処理コア１３は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第２バッファ２４の画像データ格納領域に格納された画像データＦ４を取り込み、所定の画像処理を開始する。
【００８１】
また、第１処理コア１３は、時刻ｔ３において、一巡前の画像処理を終え、その画像データＦ１の処理結果データが、第４バッファ２６の処理結果データ格納領域に格納されている。また、［３］処理結果の有無の管理情報には、起動後、第１処理コア１３、第２処理コア１４、及び第３処理コア１５による処理が一巡した後、結果有を示す情報が格納されるようになっている。
【００８２】
また、［４］処理結果格納バッファの管理情報には、第４バッファ２６の情報が格納されているので、結果出力部１２ｅは、第４バッファ２６の処理結果データとして、一巡前の画像データＦ１の処理結果データを出力する。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００８３】
次に時刻ｔ７において、第１処理コア１３に依頼した画像データＦ４の画像処理が終了すると、第１処理コア１３は、画像データＦ４の処理結果データを第２バッファ２４の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【００８４】
次に時刻ｔ８において、管理コア１２は、画像データＦ５を取得すると、画像データＦ５を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第２処理コア１４の実行可能状態を判定する。
【００８５】
具体的には、判定部１２ｂが、第２処理コア１４の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。第２処理コア１４は、時刻ｔ５において画像処理を終え、Ready状態となっている。
【００８６】
判定部１２ｂが、第２処理コア１４のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第３バッファ２５に、処理対象データである画像データＦ５を格納する。
【００８７】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第２処理コア１４に、第３バッファ２５に格納された画像データＦ５の処理を依頼する。一方、第２処理コア１４は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第３バッファ２５の画像データ格納領域に格納された画像データＦ５を取り込み、所定の画像処理を実行する。
【００８８】
また、第２処理コア１４は、時刻ｔ５において、一巡前の画像処理を終え、その画像データＦ２の処理結果データが、第５バッファ２７の処理結果データ格納領域に格納されている。
【００８９】
また、［４］処理結果格納バッファの管理情報には、第５バッファ２７の情報が格納されているので、結果出力部１２ｅは、第５バッファ２７の処理結果データとして、一巡前の画像データＦ２の処理結果データを出力する。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００９０】
次に時刻ｔ９において、第３処理コア１５に依頼した画像データＦ３の画像処理が終了すると、第３処理コア１５は、画像データＦ３の処理結果データを第１バッファ２３の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【００９１】
次に時刻ｔ１０において、管理コア１２は、画像データＦ６を取得すると、画像データＦ６を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第３処理コア１５の実行可能状態を判定する。
【００９２】
具体的には、判定部１２ｂが、第３処理コア１５の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。第３処理コア１５は、時刻ｔ９において画像処理を終え、Ready状態となっている。
【００９３】
判定部１２ｂが、第３処理コア１５のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第４バッファ２６に、処理対象データである画像データＦ６を格納する。
【００９４】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第３処理コア１５に、第４バッファ２６に格納された画像データＦ６の処理を依頼する。一方、第３処理コア１５は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第４バッファ２６の画像データ格納領域に格納された画像データＦ６を取り込み、所定の画像処理を実行する。
【００９５】
また、第３処理コア１５は、時刻ｔ９において、一巡前の画像処理を終え、その画像データＦ３の処理結果データが、第１バッファ２３の処理結果データ格納領域に格納されている。
【００９６】
また、［４］処理結果格納バッファの管理情報には、第１バッファ２３の情報が格納されているので、結果出力部１２ｅは、第１バッファ２３の処理結果データとして、一巡前の画像データＦ３の処理結果データを出力する。その後、管理コア１２は、管理情報（［１］〜［４］）を、次の画像データを処理するための情報に更新する。
【００９７】
次に時刻ｔ１１において、第２処理コア１４に依頼した画像データＦ５の画像処理が終了すると、第２処理コア１４は、画像データＦ５の処理結果データを第３バッファ２５の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【００９８】
次に時刻ｔ１２において、管理コア１２は、画像データＦ７を取得すると、画像データＦ７を分散させる処理コアを決定する。すなわち、管理コア１２は、更新された管理情報（［１］依頼コア）に基づいて、第１処理コア１３の実行可能状態を判定する。
【００９９】
具体的には、判定部１２ｂが、第１処理コア１３の実行可能状態（すなわち、Ready状態であるか、又はBusy状態であるか）を判定する。第１処理コア１３は、時刻ｔ７において一巡前の画像処理を終え、Ready状態となっている。
【０１００】
判定部１２ｂが、第１処理コア１３のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、第５バッファ２７の情報を格納し、リングバッファ２２の第５バッファ２７に、処理対象データである画像データＦ７を格納する。
【０１０１】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第１処理コア１３に、第５バッファ２７に格納された画像データＦ７の処理を依頼する。一方、第１処理コア１３は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第５バッファ２７の画像データ格納領域に格納された画像データＦ７を取り込み、所定の画像処理を開始する。
【０１０２】
また、第１処理コア１３は、時刻ｔ７において、一巡前の画像処理を終え、その画像データＦ４の処理結果データが、第２バッファ２４の処理結果データ格納領域に格納されている。
【０１０３】
また、［４］処理結果格納バッファの管理情報には、第２バッファ２４の情報が格納されているので、結果出力部１２ｅは、第２バッファ２４の処理結果データとして、一巡前の画像データＦ４の処理結果データを出力し、その後、管理情報（［１］〜［４］）を更新する。以下同様にして、第１処理コア１３〜第３処理コア１５に画像データを時系列順に分散させて、所定の画像処理と、処理結果データの出力処理とを巡回的に実行させるようになっている。
【０１０４】
図４に示す処理装置１０では、時系列順に入力される画像データの入力間隔が時間Ｔ、処理コア数Ｎが３となっており、第１処理コア１３〜第３処理コア１５のそれぞれで実行される画像処理の時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その処理時間がＮ×Ｔ＝３Ｔの時間内であれば、全ての画像データの処理結果データを、Ｔ×Ｎ＝３Ｔの時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することが可能となっている。
【０１０５】
図５は、実施の形態に係る処理装置１０を構成する各部の動作を説明するためのタイミングチャートである。図５は、処理コア数（Ｎ＝３）×フレームレート間隔（時間Ｔ）＝時間３Ｔ内に、画像データの処理が実行できない場合が発生したときの動作例を示す図である。
【０１０６】
図５に例示する時刻ｔ２１〜ｔ２４における各部の動作は、図４に例示した時刻ｔ１〜ｔ４における各部の動作と同一であるので、その説明を省略し、また、その他の同様の動作の説明も省略する。図５に示す例では、第２処理コア１４が、時刻ｔ２２で開始した画像データＦ２の処理が、時間３Ｔ内に完了できなかった場合を示している。
【０１０７】
時刻ｔ２４後の時刻ｔ２５において、管理コア１２は、画像データＦ４を取得すると、画像データＦ４を分散させる処理コアを決定する。時刻ｔ２５における、管理コア１２の動作は、図４に例示した時刻ｔ６における動作と同じである。
【０１０８】
次に時刻ｔ２６において、第１処理コア１３に依頼した画像データＦ４の画像処理が終了すると、第１処理コア１３は、画像データＦ４の処理結果データを第２バッファ２４の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１０９】
次に時刻ｔ２７において、管理コア１２は、画像データＦ５を取得すると、画像データＦ５を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第２処理コア１４の実行可能状態を判定する。
【０１１０】
具体的には、判定部１２ｂが、第２処理コア１４の実行可能状態を判定する。第２処理コア１４は、時刻ｔ２７において、一巡前の画像データＦ２の画像処理を継続している状態、すなわち、Busy状態となっている。
【０１１１】
判定部１２ｂが、第２処理コア１４のBusy状態を判定すると、その後の一連の処理（すなわち、格納処理部１２ｃによるリングバッファ２２への画像データＦ５の格納処理、処理依頼部１２ｄによる第２処理コア１４への画像データＦ５の処理依頼、及び結果出力部１２ｅによる一巡前の画像データＦ２の処理結果データの出力処理）を実行することなく、これら一連の処理を飛ばす。
【０１１２】
この場合、管理情報は更新されずに保持され、出力結果として、前回の結果（この場合、画像データＦ１の処理結果）が保持されるようになっている。
【０１１３】
また、時刻ｔ２７において取得した画像データＦ５は、画像処理されずに、処理対象から外される（例えば、破棄される）。このため、画像データＦ５の処理結果データが欠けることとなる。
【０１１４】
次に時刻ｔ２８において、第２処理コア１４に依頼した画像データＦ２の画像処理が終了すると、第２処理コア１４は、画像データＦ２の処理結果データを第５バッファ２７の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１１５】
次に時刻ｔ２９において、第３処理コア１５に依頼した画像データＦ３の画像処理が終了すると、第３処理コア１５は、画像データＦ３の処理結果データを第１バッファ２３の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１１６】
次に時刻ｔ３０において、管理コア１２は、画像データＦ６を取得すると、画像データＦ６を分散させる処理コアを決定する。すなわち、管理コア１２が、保持された管理情報（［１］依頼コア）に基づいて、第２処理コア１４の実行可能状態を判定する。時刻ｔ３０における、管理コア１２の動作は、図４に例示した時刻ｔ８における動作と基本的に同じであるが、図４に例示した場合と比較して、結果出力部１２ｅによって第５バッファ２７から出力される、画像データＦ２の処理結果データの出力が、１フレームレート分（時間Ｔ）遅れることとなる。
【０１１７】
次に時刻ｔ３１において、管理コア１２は、画像データＦ７を取得すると、画像データＦ７を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第３処理コア１５の実行可能状態を判定する。時刻ｔ３１における、管理コア１２の動作は、図４に例示した時刻ｔ１０における動作と基本的に同じであるが、図４に例示した場合と比較して、結果出力部１２ｅによって第１バッファ２３から出力される、画像データＦ３の処理結果データの出力が、１フレームレート分（時間Ｔ）遅れることとなる。
【０１１８】
次に時刻ｔ３２において、第２処理コア１４に依頼した画像データＦ６の画像処理が終了すると、第２処理コア１４は、画像データＦ６の処理結果データを第３バッファ２５の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１１９】
次に時刻ｔ３３において、管理コア１２は、画像データＦ８を取得すると、画像データＦ８を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第１処理コア１３の実行可能状態を判定する。時刻ｔ３３における、管理コア１２の動作は、図４に例示した時刻ｔ１２における動作と基本的に同じであるが、図４に例示した場合と比較して、結果出力部１２ｅによって第２バッファ２４から出力される、画像データＦ４の処理結果データの出力が、１フレームレート分（時間Ｔ）遅れることとなる。
【０１２０】
次に時刻ｔ３４において、第３処理コア１５に依頼した画像データＦ７の画像処理が終了すると、第３処理コア１５は、画像データＦ７の処理結果データを第４バッファ２６の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１２１】
次に時刻ｔ３５において、第１処理コア１３に依頼した画像データＦ８の画像処理が終了すると、第１処理コア１３は、画像データＦ８の処理結果データを第５バッファ２７の処理結果データ格納領域に格納して処理を終え、Ready状態で待機する。
【０１２２】
次に時刻ｔ３６において、管理コア１２は、画像データＦ９を取得すると、画像データＦ９を分散させる処理コアを決定する。すなわち、管理コア１２が、更新された管理情報（［１］依頼コア）に基づいて、第２処理コア１４の実行可能状態を判定する。
【０１２３】
第２処理コア１４は、時刻ｔ３２において画像処理を終え、Ready状態となっている。判定部１２ｂが、第２処理コア１４のReady状態を判定すると、次に格納処理部１２ｃが、管理情報（［２］画像データ格納バッファ）に基づいて、リングバッファ２２の第１バッファ２３に、処理対象データである画像データＦ９を格納する。
【０１２４】
次に処理依頼部１２ｄが、［１］依頼コアの対象となっている第２処理コア１４に、第１バッファ２３に格納された画像データＦ９の処理を依頼する。一方、第２処理コア１４は、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、第１バッファ２３の画像データ格納領域に格納された画像データＦ９を取り込み、所定の画像処理を実行する。
【０１２５】
なお、第２処理コア１４は、時刻ｔ３２において、一巡前の画像処理を終え、その画像データＦ６の処理結果データが、第３バッファ２５の処理結果データ格納領域に格納されている。
【０１２６】
また、［４］処理結果格納バッファの管理情報には、第３バッファ２５の情報が格納されているので、結果出力部１２ｅは、第３バッファ２５の処理結果データとして、一巡前の画像データＦ６の処理結果データを出力し、以下同様の処理が繰り返されるようになっている。
【０１２７】
図４に例示した場合と比較して、図５に例示した場合では、時刻ｔ２７において、第２処理コア１４がBusy状態であったため、その後の時刻ｔ３０、ｔ３１、ｔ３３において、結果出力部１２ｅが出力する画像データＦ２、Ｆ３、Ｆ４の処理結果データの出力タイミングが、１フレームレート分（時間Ｔ）遅れることとなるが、時系列は確保される。
【０１２８】
そして、画像データＦ５は処理対象から外され、画像データＦ５の処理結果データは出力されないため、時刻ｔ３６において、画像データＦ６の処理結果データが出力されることとなり、図４に示した場合（すなわち、各処理コアが、時間３Ｔ内に画像データの処理を実行できた場合）と同じ状態に復旧し、処理結果データの出力の遅延も解消されることとなる。
【０１２９】
［動作例］
図６は、実施の形態に係る処理装置１０を構成する管理コア１２と、［１］依頼コアの対象となっている処理コアとで実行される処理動作を示したフローチャートである。本処理は、処理装置１０が、起動後にカメラ４から画像データを取得するタイミング（すなわち、フレームレート間隔）で実行される。
【０１３０】
まず、ステップＳ１では、管理コア１２は、カメラ４から画像データを取得して、ステップＳ２に処理を進める。ステップＳ２では、管理コア１２が、管理情報に基づいて、［１］依頼コアの対象となっている処理コア（第１処理コア１３、第２処理コア１４、又は第３処理コア１５）の実行可能状態（Ready状態であるか、又はBusy状態であるか）を判定する。なお、管理コア１２は、起動後、内部メモリの管理情報（［１］〜［４］の初期値）を読み込む。
【０１３１】
ステップＳ２において、管理コア１２が、［１］依頼コアの対象となっている処理コアがBusy状態（前回依頼した処理が終わっていない状態）であると判定すれば、ステップＳ３に処理を進める。ステップＳ３では、管理コア１２は、ステップＳ１で取得した画像データを処理対象から外す処理を行い、その後処理を終える。ステップＳ３では、例えば、ステップＳ１で取得した画像データを破棄する処理を行ってもよい。
【０１３２】
一方ステップＳ２において、管理コア１２が、［１］依頼コアの対象となっている処理コアがReady状態であると判定すれば、ステップＳ４に処理を進める。ステップＳ４では、ステップＳ１で取得した画像データをリングバッファ２２の一のバッファ領域に格納する処理を行い、ステップＳ５に処理を進める。前記一のバッファ領域は、管理情報（［２］画像データ格納バッファ）に指定されているバッファ領域である。
【０１３３】
ステップＳ５では、管理コア１２は、［１］依頼コアに、前記一のバッファ領域に格納された画像データの処理を依頼し、ステップＳ６に処理を進める。
【０１３４】
ステップＳ６では、管理コア１２は、管理情報における［３］の処理結果が有るか否かを判定し、ステップＳ６において、処理結果はない、すなわち、起動後、各処理コア（第１処理コア１３、第２処理コア１４、第３処理コア１５）における処理が一巡していない状態であると判定すれば、ステップＳ７に処理を進める。
【０１３５】
ステップＳ７では、管理コア１２は、処理結果を出力せずに、その後ステップＳ９に処理を進める。
【０１３６】
一方ステップＳ６において、管理コア１２が、［３］の処理結果が有る、すなわち、起動後、各処理コア（第１処理コア１３、第２処理コア１４、第３処理コア１５）における処理が一巡している状態（一巡後の状態）であると判定すれば、ステップＳ８に処理を進める。
【０１３７】
ステップＳ８では、管理コア１２は、管理情報（［４］処理結果格納バッファ）に基づいて、［１］依頼コアの対象となっている処理コア（同一コア）の一巡前の処理結果データが格納されたバッファ領域から、一巡前の処理結果データを取り込んで出力する処理を行い、その後ステップＳ９に処理を進める。
【０１３８】
ステップＳ９では、管理コア１２は、管理情報［１］〜［４］を更新する。すなわち、［１］の依頼コアは、次に処理を依頼する対象となる処理コアの情報に更新される。
［２］の画像データ格納バッファは、次の処理対象の画像データが格納される一のバッファ領域の情報に更新される。
［３］の処理結果の有無は、起動後、各処理コアでの処理が一巡するまでは、「無し」の情報、一巡後は、「有り」の情報に更新される。なお、［３］の処理結果の有無はフラグ（１又は０）で示してもよい。
［４］の処理結果格納バッファは、［１］の依頼コアの対象となっている処理コアにおける一巡前の処理結果データが格納されるバッファ領域の情報に更新される。これら管理情報を更新した後、処理を終える。
【０１３９】
一方、ステップＳ５において、管理コア１２から画像データの処理依頼を受けた処理コア（［１］依頼コアの対象となっている処理コア）は、ステップＳ２１において、管理コア１２からの処理依頼に基づいて、Ready状態からBusy状態に移行し、ステップＳ２２に処理を進める。
ステップＳ２２では、処理コアは、［２］の画像データ格納バッファに指定されているリングバッファ２２のバッファ領域から画像データを取り込み、ステップＳ２３に処理を進め、ステップＳ２３では、所定の画像処理を実行し、ステップＳ２４に処理を進める。
【０１４０】
ステップＳ２４では、処理コアは、その処理結果データを［２］の画像データ格納バッファに指定されているバッファ領域に格納する処理を行い、ステップＳ２５に処理を進める。ステップＳ２５では、処理コアは、Busy状態からReady状態に移行し、その後処理を終える。
【０１４１】
［作用・効果］
上記した実施の形態に係る処理装置１０によれば、判定部１２ｂにより、第１処理コア１３〜第３処理コア１５のうちの一の処理コアが実行可能状態であることが巡回的に判定され続けた場合、時系列順に入力される画像データの入力間隔（時間Ｔ）と、処理コア数（Ｎ＝３個）とを掛け合わせた間隔（時間Ｔ×Ｎ＝３Ｔ）内で、第１処理コア１３〜第３処理コア１５のそれぞれが所定の画像処理を巡回的に実行できることとなる。したがって、第１処理コア１３〜第３処理コア１５のそれぞれで実行される画像処理時間にばらつきが生じたりして、各処理が起動順に終了せず、処理の終了タイミングが逆転（前後）した場合であっても、その処理時間が時間Ｔ×Ｎ＝３Ｔ内であれば、全ての画像データの処理結果データを、Ｔ×Ｎ＝３Ｔ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる。
【０１４２】
また、実施の形態に係る処理装置１０によれば、管理コア１２によって、［１］当該処理を実行する処理コアと、［２］処理対象の画像データが格納されるバッファ領域と、［３］一巡前の処理結果データの有無状態と、［４］一巡前の処理結果データが格納されたバッファ領域とが紐付けて管理される。したがって、これらの管理情報を画像データの処理毎に更新することで、［１］依頼コアの対象となる処理コアにより実行される画像データの処理と、当該一の処理コアにより実行される一巡前の処理結果データの出力とを時系列で安定的に行えるように適切に管理することができる。
【０１４３】
また、実施の形態に係る処理装置１０によれば、［１］依頼コアの対象となる処理コアの一巡前の処理が終了していない場合（換言すれば、一巡前の処理が継続して行われている場合）、判定部１２ｂによって、処理コアがBusy状態と判定され、この場合は、画像データが処理対象から外される。これにより、処理コアの一巡前の処理が終了した後、第１処理コア１３〜第３処理コア１５の個数分の時間（一巡するまでの間）の処理結果データの出力が一時的に遅れることとなるが、その後の処理は全て時系列で実行することができる。また、処理対象から外された画像データの処理結果データは得られないこととなるが、その処理結果データが欠けるだけで、その他の処理結果データは時系列で安定的に出力することができる。
【０１４４】
また、実施の形態に係るドライバモニタリングシステム３によれば、カメラ４と、処理装置１０とを含んで構成されているので、ドライバ２の状態を時系列で安定的に把握することが可能となり、複雑な処理構成とすることなく、シンプルな処理構成でドライバ２のリアルタイムでのモニタリング精度、又は高速安定処理の性能を高めることができる。
【０１４５】
［変形例］
以上、本発明の実施の形態を詳細に説明したが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく、種々の改良や変更を行うことができることは言うまでもない。
【０１４６】
例えば、上記実施の形態に係る処理装置１０では、プロセッサ１１に、１つの管理コア１２と、３つの処理コアが装備されていたが、処理コアの数は、２以上であればよい。
例えば、２つの処理コアが装備される場合は、各処理コアでの画像処理時間が時間Ｔ×Ｎ＝２Ｔ内であれば、全ての画像データの処理結果データを、Ｔ×Ｎ＝２Ｔ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる。
【０１４７】
また、８つの処理コアが装備される場合は、各処理コアでの画像処理時間が時間Ｔ×Ｎ＝８Ｔ内であれば、全ての画像データの処理結果データを、Ｔ×Ｎ＝８Ｔ時間遅れ（すなわち、一巡遅れ）の時系列で安定的に出力することができる。処理コア数が多くなると、一つの処理コアで実行させる処理時間を確保しやすくなり、負荷の大きい処理であっても時系列で安定的に処理結果を出力することが可能となる。
【０１４８】
また、上記実施の形態に係る処理装置１０では、各処理コアが、１フレームずつ画像データを処理するように構成されているが、各処理コアで実行させる処理はこれに限定されない。例えば、各処理コアに、２以上の処理を並列的に行う並列処理を実行させる構成としてもよい。係る構成によれば、処理コア毎に並列処理を巡回的に実行させて、並列処理の結果を時系列で安定的に出力することが可能となる。
【０１４９】
また、上記実施の形態に係る処理装置１０では、処理対象データが、カメラ４から取得する画像データである場合について説明したが、処理対象データは、画像データに限定されるものではない。本発明に係る処理装置は、カメラ４の他、各種の計測装置、制御装置、又はセンサなどから時系列順に入力される処理対象データに対して、所定周期で所定の処理を実行する装置に広く適用することができ、所定の処理の結果を時系列で安定的に取り出すことが可能となる。
【０１５０】
［付記］
本発明の実施の形態は、以下の付記の様にも記載され得るが、これらに限定されない。
（付記１）
時系列順に入力される処理対象データに対して所定の処理を行う処理装置（１０）であって、
前記所定の処理を行う複数の処理ユニット（１３、１４、１５）と、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニット（１２）と、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリ（２１）とを備え、
前記管理ユニット（１２）が、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定部（１２ｂ）と、
該判定部（１２ｂ）により実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理部（１２ｃ）と、
前記判定部（１２ｂ）により実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼部（１２ｄ）と、
該処理依頼部（１２ｄ）により処理が依頼された前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力部（１２ｅ）とを備え、
前記一の処理ユニット（１３、１４、１５）が、
前記処理依頼部（１２ｄ）からの依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理を行うものであることを特徴とする処理装置。
【０１５１】
（付記２）
時系列順に入力される処理対象データに対して所定の処理を行う処理方法であって、
前記所定の処理を行う複数の処理ユニット（１３、１４、１５）と、
これら複数の処理ユニットに前記処理対象データを時系列順に分散させて、前記所定の処理を巡回的に実行させるための管理を行う管理ユニット（１２）と、
前記処理対象データと当該処理対象データの処理結果データとが時系列順に格納される複数のバッファ領域を有するバッファメモリ（２１）とを備えた装置（１０）を用い、
前記管理ユニット（１２）が、
所定の順番で前記複数の処理ユニットのうちの一の処理ユニットの実行可能状態を判定する判定ステップ（Ｓ４）と、
該判定ステップ（Ｓ４）により実行可能状態であると判定された前記一の処理ユニットに処理させる前記処理対象データを、前記複数のバッファ領域のうちの一のバッファ領域に格納する格納処理ステップ（Ｓ６）と、
前記判定ステップ（Ｓ４）により実行可能状態であると判定された前記一の処理ユニットに、前記一のバッファ領域に格納された前記処理対象データの処理を依頼する処理依頼ステップ（Ｓ７）と、
該処理依頼ステップ（Ｓ７）により処理を依頼した前記一の処理ユニットの一巡前の処理対象データが格納されたバッファ領域に格納されている、一巡前の処理結果データを出力する結果出力ステップ（Ｓ１０）とを含み、
前記一の処理ユニット（１３、１４、１５）が、
前記処理依頼ステップ（Ｓ７）による依頼に基づいて、前記一のバッファ領域から前記処理対象データを取り込んで、前記所定の処理を行い、その処理結果データを前記一のバッファ領域に格納する処理（Ｓ２４、Ｓ２５、Ｓ２６）を行うことを特徴とする処理方法。
【符号の説明】
【０１５２】
１  車両
２  ドライバ
３  ドライバモニタリングシステム
４  カメラ
５  バス
６  情報系ＥＣＵ群
７  走行系ＥＣＵ群
８  安全機能系ＥＣＵ群
１０  処理装置
１１  プロセッサ
１２  管理コア（管理ユニット）
１２ａ  画像取得部
１２ｂ  判定部
１２ｃ  格納処理部
１２ｄ  処理依頼部
１２ｅ  結果出力部
１３  第１処理コア（第１処理ユニット）
１４  第２処理コア（第２処理ユニット）
１５  第３処理コア（第３処理ユニット）
２０  メモリ
２１  バッファメモリ
２２  リングバッファ
２３  第１バッファ
２４  第２バッファ
２５  第３バッファ
２６  第４バッファ
２７  第５バッファ
【図１】
2020123255.tif 000003
【図２】
2020123255.tif 000004
【図３】
2020123255.tif 000005
【図４】
2020123255.tif 000006
【図５】
2020123255.tif 000007
【図６】
2020123255.tif 000008