(57)【特許請求の範囲】
【請求項１】
撮影部において撮影された画像に生ずる座標のずれを、記憶部において記憶された補正パラメータにより補正する補正部と、
前記撮影部により撮影された画像に基づいて前記補正パラメータを生成し、前記記憶部に記憶されている前記補正パラメータを更新する更新部と、
前記撮影部において撮影された前記画像に含まれる対象を認識する認識部と、
前記認識部により認識された対象を追跡する追跡部と、
を有し、
前記更新部は、前記補正部により補正された画像に基づく処理状況に応じて前記補正パラメータを更新し、前記追跡部が追跡状態にある場合に、前記補正パラメータの更新を行わない、
ことを特徴とする画像処理装置。
【請求項２】
前記更新部は、前記処理状況が前記画像に含まれる被写体を参照していることを示すものであるときは、前記補正パラメータの更新を行わない、
請求項１記載の画像処理装置。
【請求項３】
前記記憶部は、揮発性記憶部と不揮発性記憶部とを有し、
前記更新部は、生成された前記補正パラメータによって前記揮発性記憶部に記憶されている前記補正パラメータを更新し、または、生成された前記補正パラメータを前記不揮発性記憶部に定期的に記憶する、
請求項１または２に記載の画像処理装置。
【請求項４】
前記記憶部は、揮発性記憶部と不揮発性記憶部とを有し、
前記更新部は、生成された前記補正パラメータによって前記揮発性記憶部に記憶されている前記補正パラメータを更新し、または、生成された前記補正パラメータによって前記揮発性記憶部に記憶されている前記補正パラメータの更新が一定期間において行われていないとき、生成された前記補正パラメータを前記不揮発性記憶部に記憶する、
請求項１または２に記載の画像処理装置。
【請求項５】
前記記憶部は、揮発性記憶部と不揮発性記憶部とを有し、
前記更新部は、生成された前記補正パラメータによって前記揮発性記憶部に記憶されている前記補正パラメータを更新し、または、当該更新部を停止させる信号を受信したときに、生成された前記補正パラメータを前記不揮発性記憶部に記憶する、
請求項１または２に記載の画像処理装置。
【請求項６】
前記記憶部は、揮発性記憶部と不揮発性記憶部とを有し、
前記更新部は、生成された前記補正パラメータによって前記揮発性記憶部に記憶されている前記補正パラメータを更新し、または、当該更新部が停止する信号を受信したときに、前記不揮発性記憶部に記憶されている前記補正パラメータを更新する、
請求項１または２に記載の画像処理装置。
【請求項７】
対象の画像を撮影する撮影部と、
前記撮影部により撮影された画像に基づいて生成される補正パラメータを記憶する記憶部と、
請求項１乃至６のいずれかに記載の画像処理装置と、
を備えることを特徴とする撮影装置。
【請求項８】
前記撮影部を少なくとも２つ備え、
前記撮影部のそれぞれが撮影した対象の画像に対する補正後の画像に基づいて、前記対象における視差を算出する視差算出部を備える
請求項７記載の撮影装置。
【請求項９】
コンピュータに、請求項１乃至６のいずれかに記載の画像処理装置の各機能を実現させるプログラム。
【請求項１０】
請求項７または８に記載の撮影装置と、
当該撮影装置を用いて取得した情報に基づいて機器の動作を制御する制御部と、
を備えることを特徴とする機器制御システム。
【請求項１１】
請求項１０に記載の機器制御システムを備えることを特徴とする機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、撮影装置、プログラム、機器制御システム及び機器に関するものである。
【背景技術】
【０００２】
２台の撮影ユニットを備える撮影装置であるステレオカメラは、被写体に含まれる障害物等の特定の物までの距離を算出するための情報を生成することができる。このステレオカメラを車両に搭載して、車両制御システムと連動させることで、車両前方の被写体に含まれる障害物等を検知し、車両における回避動作などを行うことができる。
【０００３】
ステレオカメラは、２台の撮影ユニットで同時に同じ被写体を撮影するので、各撮影画像内の被写体像の差分から上記特定の物までの距離の算出に利用できる情報を生成できる。ステレオカメラと車両制御システムを連動させる場合、ステレオカメラは一定のフレーム間隔で撮影と上記情報の生成を繰り返して実行し、撮影画像内の被写体に含まれる特定の物までの距離に関する情報を含む視差画像を動画として生成する。車両制御システムは、当該視差画像を利用して車線や障害物等を検知し、回避制御等に利用する。
【０００４】
ステレオカメラによって、正確に距離を計測するには、各撮影ユニットが備える撮影レンズ、撮影素子などの構成部材の相対位置などが既知でなければならない。しかしながら、現実には、経時変化や温度特性等に起因する撮影装置の微小な変形は避けられない。そのため、周期的な動作と並行して、撮影画像の座標のずれを補正する自動キャリブレーション技術を用いる撮影装置が知られている（例えば、特許文献１を参照）。
【０００５】
特許文献１記載の撮影装置は、撮影画像の座標のずれの補正量が大きい場合でも、補正された撮影画像を利用する車両制御システムにおいて障害物等を誤認識しないように、座標のずれを補正する補正式の係数を複数回に分けて更新する。しかし、障害物等に対する距離の算出精度をより向上させるためには、更なる工夫の余地がある。
【０００６】
例えば、補正された撮影画像を車両制御システムが利用するタイミングと、補正式の係数を更新するタイミングが重なると、障害物標等を誤認識する可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで本発明は、撮影画像における座標のずれの補正を適切なタイミングで行う画像処理装置等を提供することを目的にする。
【課題を解決するための手段】
【０００８】
本発明は、撮影部において撮影された画像に生ずる座標のずれを、記憶部において記憶された補正パラメータにより補正する補正部と、前記撮影部により撮影された画像に基づいて前記補正パラメータを生成し、予め記憶部に記憶されている前記補正パラメータを前記生成された補正パラメータによって更新する更新部と、を有し、前記更新部は、前記補正部により補正された画像に基づく処理状況に応じて前記補正パラメータを更新する、ことを最も主な特徴とする。
【発明の効果】
【０００９】
本発明によれば、撮影画像における座標のずれの補正を適切なタイミングで行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係るステレオカメラの斜視図である。
【図２】本実施形態に係る車両の例を示す正面図である。
【図３】本実施形態に係る車両制御システムの例を示す全体構成図である。
【図４】上記ステレオカメラのハードウェア構成の例を示すハードウェアブロック図である。
【図５】上記ステレオカメラを用いた距離の計測原理を説明する図である。
【図６】本実施形態に係るステレオカメラおよび画像処理装置の例を示す機能ブロック図である。
【図７】上記撮影装置において実行される撮影画像の座標のずれの補正の例を模式的に示す図である。
【図８】上記撮影装置の各機能を実現させるプログラムの処理の流れの例を示すフローチャートである。
【図９】上記プログラムの一部における詳細な処理の流れの例を示すフローチャートである。
【図１０】上記プログラムの一部における詳細な処理の流れの別の例を示すフローチャートである。
【図１１】上記プログラムの一部における詳細な処理の流れのさらに別の例を示すフローチャートである。
【図１２】上記プログラムの一部における詳細な処理の流れのさらに別の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら本発明の実施形態について説明する。まず、撮影装置の実施形態としてステレオカメラ１０と、ステレオカメラ１０を備える車両５００を例に用いて説明する。図１に示すようにステレオカメラ１０は、筐体１１０から１対の撮影レンズ１２ａ，１２ｂが外部に露出している。ステレオカメラ１０は、図２に示すように車両５００のフロントガラス５１１の内側（車室側）の上部に取り付けられる。具体的には、車両５００のインナーリアビューミラー５２０の設置位置付近に取り付けられる。なお、ステレオカメラ１０の取付位置は、上記の位置に限るものではなく、車両５００の進行方向の前方の状況を認識するための情報を取得できる位置であればよい。本実施形態において、車両５００の幅方向（紙面左右方向）を車幅方向、紙面を貫く方向を車両進行方向とする。
【００１２】
ステレオカメラ１０は、測定対象との距離が変化する機器に設置される。ステレオカメラ１０を設置する機器は、本実施形態のような車両５００に限定されるものではない。例えば、船舶や鉄道等の移動体などに設置することもできる。また、ＦＡ（Factory Automation）に用いることもでき、この場合に建物などの固定物にステレオカメラ１０を設置すればよい。ステレオカメラ１０は、後述するように撮影した被写体を含む画像データから被写体（測定対象）までの距離を求める（距離情報を取得する）。ステレオカメラ１０の測定対象は、他の移動体や人物や動物などである。
【００１３】
次に、機器制御システムの実施形態である車両制御システム３００について説明する。図３に示すように、ステレオカメラ１０は、車両５００の進行方向を撮影できるように設置される。そのため、撮影レンズ１２ａ、１２ｂは所定の方向に向けられている。車両制御システム３００は、ステレオカメラ１０と連動して、車両５００の進行方向に存在する物体（認識対象）を撮影する。
【００１４】
車両制御システム３００は、ステレオカメラ１０と、制御装置３０１と、ステアリングホイール３０２と、ブレーキペダル３０３と、を備えている。
【００１５】
ステレオカメラ１０は、図４に示すように２つの単体カメラを有している。２つの単体カメラとは、第１カメラ１と第２カメラ２である。第１カメラ１とは、例えば、撮影レンズ１２ａに対応する撮影素子を備える単体カメラである。第２カメラ２とは、例えば、撮影レンズ１２ｂに対応する撮影素子を備える単体カメラである。また、ステレオカメラ１０は、制御部３、主記憶部４、補助記憶部５、通信Ｉ／Ｆ部６、を有している。第１カメラ１と第２カメラ２、制御部３、主記憶部４、補助記憶部５、通信Ｉ／Ｆ部６は、バス７を介して互いに接続されている。
【００１６】
ここで、ステレオカメラ１０と車両制御システム３００との関係について説明する。図３に示す車両制御システム３００の制御装置３０１は、ステレオカメラ１０から受信した視差画像１１５に基づいて算出される情報により、車両５００の各種の制御を実行する。なお、視差画像１１５の説明は後述する。
【００１７】
制御装置３０１において実行される制御は、例えば、ステレオカメラ１０から受信した視差画像１１５に基づき算出される物体までの距離に応じて、ステアリングホイール３０２を含むステアリング系統（制御対象）を動作させる制御である。このステアリング制御によって、車両５００の進行方向に存在する物体（障害物）を回避するように車両５００を動作させることができる。また、ステレオカメラ１０から受信した視差画像１１５に基づき算出される物体までの距離に応じて、ブレーキペダル３０３を含むブレーキ系統（制御対象）を動作せる制御である。このブレーキ制御により、車両５００を自動的に減速または停止させることができる。以上例示したように、車両制御システム３００は、車両５００のステアリング制御やブレーキ制御をステレオカメラ１０から受信した視差画像１１５に基づいて実行させることができる。これによって、車両５００の運転時の安全性を向上させることができる。
【００１８】
なお、上記の説明では、ステレオカメラ１０の撮影対象を車両５００の前方にしたが、これに限定されるものではない。すなわち、車両５００にステレオカメラ１０を設置するときに、車両５００の後方または側方を撮影するように設置してもよい。この場合、ステレオカメラ１０は、車両５００の後方の後続車、または側方を並進する他の車両等の距離を検出することができる。そして、制御装置３０１は、車両５００の車線変更時または車線合流時等における危険を検知して、上記の制御を実行することができる。
【００１９】
また、制御装置３０１は、車両５００の駐車時等におけるバック動作において、ステレオカメラ１０によって検出された車両５００の後方の障害物の視差画像１１５に基づいて、衝突の危険があると判断した場合に、上記の制御を実行することができる。
【００２０】
図４に戻る。制御部３は、補助記憶部５から主記憶部４に読み出されたプログラム１００を実行するＣＰＵである。主記憶部４は、不揮発性記憶部であるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や揮発性記憶部であるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を備える記憶部である。補助記憶部５は、メモリカード等である。通信Ｉ／Ｆ部６は、ネットワークを介して、他の装置と通信するためのインタフェースである。
【００２１】
ステレオカメラ１０において実行されるプログラム１００は、主記憶部４に含まれるＲＯＭに予め組み込まれているものとする。プログラム１００の詳細な説明は後述する。
【００２２】
なお、プログラム１００は、上記のように予め主記憶部４に組み込まれる「組み込みタイプ」以外のものでもよい。例えば、プログラム１００をステレオカメラ１０に対して後にインストールできる形式にして、コンピュータで読み取り可能な記録媒体に記録されてコンピュータ・プログラム・プロダクトとして提供してもよい。コンピュータで読み取り可能な記録媒体とは、例えば、ＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等である。
【００２３】
また、プログラム１００をインターネット等のネットワークに接続されたコンピュータ上に格納し、ステレオカメラ１０にプログラム１００をネットワーク経由でダウンロードさせて、これをインストールする方式で提供するように構成してもよい。
【００２４】
ステレオカメラ１０の場合、制御部３がＲＯＭからプログラム１００を読み出して実行することで、後述する各機能を実行することができる。
【００２５】
なお、各機能の一部、又は全部を、ソフトウェアにより実現せずに、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現してもよい。なお、本実施形態のステレオカメラ１０では、２つの単体カメラを備えるものを例にしている。しかしながら、撮影部の数は２つに限られず、１以上の撮影部であればよい。例えば、１の撮影部を備える単眼カメラにおいても同様の構成とすることができる。
【００２６】
ここで、ステレオカメラ１０を用いた距離の計測原理について説明する。図５は、ステレオカメラ１０が有する第１カメラ１および第２カメラ２の配置と、第１カメラ１および第２カメラ２によって撮影される被写体Ａとの関係を示す図である。図５において、第１カメラ１と第２カメラ２の並び方向をＸ軸方向、Ｘ軸方向に直交し被写体Ａのある方向すなわち第１カメラ１と第２カメラ２の光軸方向をＺ軸方向、Ｘ軸方向とＺ軸方向に直交する方向をＹ軸方向として表している。
【００２７】
第１カメラ１の焦点距離をｆ、光学中心をＯ０、第１カメラ１が備える撮影素子において被写体Ａの像が結像する撮影面をＳ０とする。同様に、第２カメラ２の焦点距離をｆ、光学中心をＯ１、第２カメラ２が備える撮影素子において被写体Ａの像が結像する撮影面をＳ１とする。撮影面Ｓ０と撮影面Ｓ１は、それぞれ、Ｚ軸方向を向いていて、第１カメラ１と第２カメラ２の光軸方向に直交している。また、第１カメラ１と第２カメラ２は、Ｘ軸方向に基線長Ｂだけ離れた位置に配置されている。
【００２８】
第１カメラ１の光学中心Ｏ０からＺ軸方向に距離ｄだけ離れた位置にある被写体Ａの像は、直線Ａ−Ｏ０と撮影面Ｓ０の交点である位置Ｐ０に結ばれる。一方、同じ被写体Ａの像が第２カメラ２の撮影面Ｓ１では、位置Ｐ１に結ばれる。
【００２９】
ここで、第２カメラ２の光学中心Ｏ１を通る直線であって直線Ａ−Ｏ０と平行な直線と撮影面Ｓ１との交点を位置Ｐ０’とする。また、位置Ｐ０’と位置Ｐ１の差を視差ｐとする。視差ｐは、同じ被写体Ａを第１カメラ１と第２カメラ２で撮影したときの各画像における被写体Ａの結像位置のずれ量に相当する。以下において、この結像位置のずれ量を視差ｐと表記する。
【００３０】
図５に示すように、上記の条件において規定される三角形Ａ−Ｏ０−Ｏ１と、三角形Ｏ１−Ｐ０’−Ｐ１は相似形である。したがって、被写体Ａまでの距離ｄはＢ×ｆ／ｐという式によって得ることができる。以上のとおり、ステレオカメラ１０を用いて被写体Ａまでの距離ｄを算出するには、第１カメラ１と第２カメラ２の乖離距離である基線長Ｂと、各カメラの焦点距離ｆと、被写体Ａの結像位置のずれ量である視差ｐを明らかにすればよい。
【００３１】
次に、本実施形態に係るステレオカメラ１０が備える画像処理装置１１について図を用いて説明する。図６に示すようにステレオカメラ１０は、第１撮影部１０１と、第２撮影部１０２と、画像処理装置１１と、記憶部１０３と、を有してなる。図６は、ステレオカメラ１０の機能ブロック図である。画像処理装置１１は、すでに説明をしたステレオカメラ１０のハードウェア資源（図４参照）を使用して実行するプログラム１００により実現される。
【００３２】
ステレオカメラ１０が有する画像処理装置１１は、更新部１０４と、補正部１０６と、視差算出部１０７と、認識部１０８と、追跡部１０９と、を有してなる。画像処理装置１１の各機能ブロックは、すでに説明をしたステレオカメラ１０のハードウェア資源（図４参照）を使用して実行されるプログラム１００により実現される。なお、視差算出部１０７や、認識部１０８、追跡部１０９は、画像処理装置１１とは分離して、ステレオカメラ１０とは異なる別のハードウェア上で実行されてもよい。
【００３３】
認識部１０８は、第１撮影部１０１および第２撮影部１０２において取得された画像中の物体を認識する認識処理を実行する。認識処理としては、テンプレートマッチングやＨｏｇ特徴量の利用等による公知の処理方法を利用できる。
【００３４】
追跡部１０９は、第１撮影部１０１および第２撮影部１０２において取得された画像中の前フレームにおいて認識された物体を現フレームにおいて特定する追跡処理を実行する。追跡処理としては、オプティカルフローを用いる等の公知の処理方法を利用できる。
【００３５】
第１撮影部１０１は、第１カメラ１の撮影動作の制御と、第１カメラ１の撮影素子から出力される信号に基づいて第１撮影画像を生成する処理を実行する。第２撮影部１０２は、第２カメラ２の撮影動作の制御と、第２カメラ２の撮影素子から出力される信号に基づいて第２撮影画像を生成する処理を実行する。第１撮影部１０１と第２撮影部１０２によって、第１カメラ１と第２カメラ２は互いの撮影タイミングを同期して撮影することができる。したがって、第１撮影画像と第２撮影画像は、同じ方向を同時に撮影して得られた画像である。
【００３６】
第１撮影画像と第２撮影画像は、記憶部１０３によって主記憶部４に含まれるＲＡＭに撮影画像１１１として記憶される。以下の説明において、第１撮影画像と第２撮影画像を区別しないときは、単に、撮影画像１１１と表記する。
【００３７】
記憶部１０３は、第１撮影部１０１、第２撮影部１０２、更新部１０４、補正部１０６、視差算出部１０７、からの各種情報を主記憶部４に含まれるＲＡＭまたはＲＯＭへ記憶・保存する処理を実行する。また、記憶部１０３は、ＲＡＭまたはＲＯＭに記憶・保存されている各種情報を読み出す処理を実行する。記憶部１０３によってＲＡＭまたはＲＯＭに記憶される各種情報は、図３に示すように、撮影画像１１１、補正パラメータ１１２、補正画像１１４、視差画像１１５などである。
【００３８】
更新部１０４は、ＲＡＭまたはＲＯＭに記憶されている撮影画像１１１を読み出し、この撮影画像１１１に基づいて、補正パラメータ１１２を生成する処理を実行する。また、更新部１０４は、生成された補正パラメータ１１２をＲＡＭまたはＲＯＭに記憶する。
【００３９】
補正パラメータ１１２は、第１カメラ１および第２カメラ２の経時的な位置ずれに起因する第１撮影画像と第２撮影画像の座標のずれを補正するためのパラメータである。更新部１０４は定期的に補正パラメータ１１２を生成する。生成された補正パラメータ１１２は、更新部１０４によりＲＡＭまたはＲＯＭに記憶される。補正パラメータ１１２が生成されたとき、すでにＲＡＭに補正パラメータ１１２が記憶されているときは、更新部１０４が新たに生成された補正パラメータ１１２を用いて古い補正パラメータ１１２を上書きする。この上書き処理を「補正パラメータ１１２の更新」という。
【００４０】
なお、補正パラメータ１１２の更新処理を実行する前に、一旦、新たに生成された補正パラメータ１１２をＲＯＭに書き込んで記憶するように処理すれば、更新処理の前段でステレオカメラ１０の電源がオフになったとしても、最新の補正パラメータ１１２を保護することができる。この場合、ステレオカメラ１０の電源がオンになったとき、ＲＯＭに補正パラメータ１１２が記憶されていれば、この最新の補正パラメータ１１２を用いてＲＡＭを初期化すればよい。
【００４１】
なお、補正パラメータ１１２の更新は、種々の方法のうち、適宜選択して用いればよい。例えば、補正パラメータ１１２を、変換前の座標と変換後の座標の組から、最小二乗法等によって近似することにより更新してもよい。
【００４２】
補正部１０６は、記憶部１０３によってＲＡＭから補正パラメータ１１２を読み出し、これを用いて撮影画像１１１に対する補正処理を実行する。この補正処理によって撮影画像１１１から補正画像１１４が生成される。生成された補正画像１１４は、記憶部１０３によってＲＡＭに記憶される。
【００４３】
ここで、補正部１０６において実行される補正処理について説明する。ＲＡＭに記憶されている撮影画像１１１は、すでに述べたとおり、第１撮影画像と第２撮影画像である。補正パラメータ１１２は、第１カメラ１および第２カメラ２の経時的な位置ずれに起因する第１撮影画像と第２撮影画像の座標のずれを補正する補正式に用いられる補正係数である。例えば、補正パラメータ１１２を用いる補正式は以下の式（１）のようになる。
【００４４】
式（１）
ｘ’＝ａ０＋ａ１ｘ＋ａ２ｙ＋ａ３ｘ２＋ａ４ｘｙ＋ａ５ｙ２
ｙ’＝ｂ０＋ｂ１ｘ＋ｂ２ｙ＋ｂ３ｘ２＋ｂ４ｘｙ＋ｂ５ｙ２
【００４５】
上記の補正式において、ｘとｙは変換元の座標であって、ｘ’とｙ’は変換後の座標である。補正パラメータ１１２は、ａ０〜ａ５及びｂ０〜ｂ５である。すなわち、記憶部１０３によってＲＡＭには、このａ０〜ａ５及びｂ０〜ｂ５が記憶されている。
【００４６】
なお、上記の補正式において、補正後の画像である補正画像１１４の座標をｘとｙとし、補正前の画像である撮影画像１１１の座標をｘ’とｙ’として補正処理を実行してもよい。すなわち、上記の補正式を用いた補正処理では、座標変換後の座標を基準にしてもよいし、座標変換前の座標を基準にしてもよい。また、補正パラメータ１１２は、上記の多項式の係数だけでなく、ルックアップテーブルのようなものでもよい。例えば、画素あるいは画素群ごとに補正値（ｘ方向の画素ずれ量とｙ方向の画素ずれ量）を記憶しておき、それらを補正パラメータ１１２としてもよい。なお、多項式を用いる方が、記憶する補正パラメータ１１２の量を削減できるので好ましい。
【００４７】
以上のとおり、記憶部１０３によって主記憶部４のＲＡＭに記憶される補正画像１１４は、補正部１０６によって、上記の式（１）と補正パラメータ１１２を用いた補正処理を撮影画像１１１に対して行って得られた画像である。
【００４８】
ここで、補正部１０６において実行される撮影画像１１１の座標のずれの補正について図７を用いてさらに説明する。補正部１０６において実行される座標のずれの補正は、座標変換処理である。補正部１０６は、すでに説明をした補正式と補正パラメータ１１２を用いて、補正後画像である補正画像１１４の座標と補正前画像である撮影画像１１１の座標を変換する処理を実行する。
【００４９】
なお、補正画像１１４の画素値を決定するために、補正式により対応する撮影画像１１１の画素値を参照する。このとき、変換後の座標の値が整数にならないことがある。
そこで補正部１０６は、図７において点線で示すように、座標の値が整数にならない座標の画素値を撮影画像１１１上の周囲の画素値から補間する画素値補間処理を実行する。
【００５０】
補正部１０６は、例えば、双１次補間すなわちバイリニア補間により画素値補間処理を行う。補正部１０６は、全画素について、上記の補正式による座標変換と画素値補間処理とを実行し、撮影画像１１１の幾何補正を行って補正画像１１４を生成する。
【００５１】
図６に戻る。視差算出部１０７は、補正された撮影画像１１１である補正画像１１４を用いて、すでに説明をした測距原理に基づいて視差ｐを算出する処理を実行する。また、視差算出部１０７は、視差ｐを用いて、撮影画像１１１の座標の視差情報を含む視差画像１１５を生成する。生成された視差画像１１５は、記憶部１０３によってＲＡＭに記憶される。
【００５２】
視差算出部１０７における視差算出方法は、周知の平行等位ステレオカメラにおける視差算出方法と同である。例えば、第１撮影画像を基準画像にした場合、第１撮影画像から抽出される特徴点周辺の画像領域と、比較対象の画像となる第２撮影画像上の対象候補となる画像領域を、１画素単位でずらしながら、両画像領域の相関の指標となる値を算出する。相関の指標となる値は、例えば、両画像領域内の画素の輝度値の総和を比較した値である。また、相関の指標となる値としてＳＡＤ（Sum of Absolute Difference）やＮＣＣ（Normalized Cross Correlation）が利用できる。算出された値の最大値付近を、放物線などを用いて補完することにより、画素単位以下の精度で視差ｐを算出する。
【００５３】
なお、１画素以下の視差ｐは信頼性が低くなるため、視差算出部１０７は１画素以下の視差ｐは１画素に切り上げる。すなわち、ステレオカメラ１０における最小の視差画素は１画素になる。
【００５４】
ステレオカメラ１０において、上記のプログラム１００が有する各部の処理は、周期的に実行される。これによって、撮影画像１１１の撮影、補正パラメータ１１２の算出と更新、補正画像１１４の生成と記憶、視差画像１１５の生成と記憶は、周期的に繰り返し実行される。すなわち、ステレオカメラ１０において、視差画像１１５は繰り返し生成されて、主記憶部４に含まれるＲＡＭに記憶される。
【００５５】
すでに説明したとおり、ステレオカメラ１０は、撮影画像１１１の撮影処理から補正パラメータ１１２の更新処理を実行して、その後、視差画像１１５を生成する処理までを周期的に実行する。
【００５６】
ここで、車両制御システム３００が障害物等の認識や追跡を行っている最中に、ステレオカメラ１０側で、補正パラメータ１１２の更新が行われた場合に生じる車両制御システム３００における誤認識について説明する。更新された補正パラメータ１１２に基づいて視差画像１１５が生成されると、同じ撮影画像１１１に基づく視差画像１１５であっても、車両制御システム３００における障害物等の認識結果が異なる可能性がある。
【００５７】
例えば、車両５００からの実際の距離が１００ｍの障害物等をステレオカメラ１０が撮影した場合に生成される視差画像１１５において、障害物等の視差ｐが１画素になると仮定する。また、ステレオカメラ１０における、上記の障害物等を含む撮影画像１１１に対する視差の誤差が−０．５画素であると仮定する。このステレオカメラ１０を用いて、あるフレームで得られた撮影画像１１１に基づき視差画像１１５を生成すると、上記の障害物等に関する視差ｐは１画素になるべきところ、誤差の影響によって０．５画素になる。この結果に基づく車両制御システム３００の認識処理では、０．５画素に対応する距離を認識することになるので、当該障害物等との距離は２００ｍとして認識する。
【００５８】
車両制御システム３００が障害物等の認識や追跡をする処理を実行中に、ステレオカメラ１０側では、次のフレームにおいて、補正パラメータ１１２が更新されることがある。そうすると、上記のような視差の誤差が正しく補正された補正画像１１４に基づいて視差画像１１５が生成されることになる。この場合、誤差−０．５画素の影響を受けないから、このフレームにおける障害物等に関する視差ｐは１画素になる。つまり、車両制御システム３００は、前のフレームでは２００ｍにあると認識した障害物等が、このフレームでは１００ｍにあると認識する結果になる。これらの結果から車両制御システム３００が次のフレームにおける障害物等の距離を予測すると、その距離は０ｍになる。そうすると、車両制御システム３００は、障害物等への衝突を予想して、この障害物等を回避するような緊急制動などを実行する可能性がある。
【００５９】
通常の車両制御システム３００では、上記のような制御を開始するまでに複数回の衝突判定を行う等のマージンを設けている。すなわち、数フレームにわたって衝突する可能性があると判定された場合に、車両５００に対するステアリング制御やブレーキ制御を実行するようにし、車両制御の安定性を確保する構成を備える。そのため、上記のような状況において必ずしも不要な制御が発生するとは限らない。しかし、ステレオカメラ１０単体の信頼性は高い方が望ましい。
【００６０】
通常は、ステレオカメラ１０における補正処理が有効に働いていれば、座標のずれが生じても即補正される。そのため、上に説明したような視差の誤差の影響は生じないことが多い。しかし、ステレオカメラ１０の起動後や、最初の自動キャリブレーション更新時、短時間でカメラ特性が大きく変化する場合などでは、ある程度大きな座標のずれが一度に計測される可能性がある。補正部１０６がこの座標のずれを補正すると、計測結果の距離が大きく変化してしまう可能性がある。
【００６１】
なお、短時間でステレオカメラ１０の特性が大きく変化する場合として、例えば、日影から日向へ車両５００を移動させた場合や、車内冷暖房の稼働を稼働させた場合に起きる温度変化等があげられる。本実施形態においては、経時変化や上記の温度変化等に対応するため、車両５００の走行時において自動キャリブレーションを行う。自動キャリブレーションの方法は、例えば、特開平１０−３４１４５８等に記載の種々の公知の方法を取り得る。
【００６２】
次に、本実施形態に係るステレオカメラ１０において実行されるプログラム１００の処理の流れについて図８のフローチャートを用いて説明する。なお、各処理ステップをＳ１、Ｓ２、Ｓ３、・・・のように表記する。
【００６３】
まず、第１撮影部１０１および第２撮影部１０２により、撮影画像１１１である第１撮影画像と第２撮影画像を取得する撮影処理を実行する（Ｓ１）。続いて、撮影処理（Ｓ１）によって得られた撮影画像１１１に基づいて認識部１０８が、撮影画像１１１中の物体を認識する認識処理を行う（Ｓ２）。認識処理（Ｓ２）の結果、物体が認識された場合は、撮影画像１１１中において当該物体に相当する画素群に対して認識フラグＲが立てられる。ここで「認識フラグＲが立つ」とは、認識フラグＲに値「１」を設定することをいう。したがって、以下の処理において、認識フラグＲの値が「１」になっている画素群が、追跡部１０９による追跡処理の対象とされる。なお、本実施形態においては、認識フラグＲが立てられた画素が存在する場合、追跡部１０９が追跡状態にあるものとする。
【００６４】
そして、更新部１０４が、第１カメラ１、第２カメラ２に生じた経時的な位置ずれに起因する座標のずれを補正するための係数である補正パラメータ１１２を生成する処理を実行する（Ｓ３）。続いて、先に生成されている補正パラメータ１１２を、新たに生成された補正パラメータ１１２に基づいて更新するにあたり、更新しても良いタイミングであるか否かを判定する更新タイミング判定処理を更新部１０４が実行する（Ｓ４）。
【００６５】
ここで、更新タイミング判定処理（Ｓ４）の詳細な流れについて、図９のフローチャートを用いて説明する。
【００６６】
例えば、車両制御システム３００が、自らの処理状況を示す情報である処理状況情報を適宜更新し続けているものとする。また、更新された処理状況情報は車両制御システム３００の制御装置３０１に記憶されているものとする。
【００６７】
まず、ステレオカメラ１０の更新部１０４が、処理状況要求処理を実行する（Ｓ４１）。処理状況要求処理（Ｓ４１）において、更新部１０４が上記の認識フラグＲを取得する要求を認識部１０８に出す。これによって、更新部１０４は認識フラグＲの値を認識部１０８から取得する。更新部１０４は、取得した認識フラグＲに「１」を含む画素群があるか否かを判定する（Ｓ４２）
【００６８】
認識フラグＲに「１」を含む画素群がある場合は、その画素群に対して追跡部１０９による追跡処理が行われる。すなわち、撮影画像１１１に含まれる被写体を参照する処理が行われる。この場合、更新部１０４による補正パラメータ１１２の更新が行われると、認識フラグＲの値が「１」である画素群に係る追跡対象の追跡処理に対して、不具合が生じるので好ましくない。そこで、認識フラグＲの値が「１」を含む画素群が有る場合は更新タイミングではないと判定し（Ｓ４２のＮｏ）、更新処理（Ｓ４３）を行わずに更新タイミング判定処理（Ｓ４）を終了する。
【００６９】
一方、認識フラグＲに「１」を含む画素群が無い場合、すなわち、認識フラグＲの値が「０」の画素ばかりである場合は、追跡部１０９による追跡処理は行われない。この場合、更新部１０４による補正パラメータ１１２の更新が行われても上記のような追跡処理への不具合は生じない。そこで、認識フラグＲの値が「０」の画素ばかりの場合は更新タイミングであると判定し（Ｓ４２のＹｅｓ）、補正パラメータ１１２の更新処理が実行される（Ｓ４３）。
【００７０】
更新処理（Ｓ４３）は、補正パラメータ生成処理（Ｓ３）において生成された補正パラメータ１１２に基づいて、先に生成されＲＡＭに記憶されている補正パラメータ１１２を上書き更新する処理である。そして、更新タイミング判定処理（Ｓ４）に続いて、補正部１０６が補正処理（Ｓ５）を実行する。補正処理（Ｓ５）は、補正パラメータ１１２を用いて撮影画像１１１に基づく補正画像１１４を生成する処理である。当該処理で使用される補正パラメータ１１２は、上に示した更新タイミング判定処理（Ｓ４）において、更新されなかった補正パラメータ１１２か、更新された補正パラメータ１１２のいずれかである。
【００７１】
以上の説明では、更新タイミングの判定に認識フラグＲを利用する処理を例示した。本実施形態に係るプログラム１００の処理の流れは、これに限られるものではない。例えば、処理状況要求処理（Ｓ４１）と更新タイミング判定処理（Ｓ４２）との間で、状況判定処理を実行してもよい。状況判定処理とは、車両制御システム３００において実行中の処理が特定の処理に該当するか否かを判定する処理である。仮に、車両制御システム３００が特定の処理を実行中の場合は、更新処理（Ｓ４３）を実行しないようにすればよい。なお、特定の処理とは、例えば、車両制御システム３００において障害物等を認識する認識処理、または、障害物等を追跡する追跡処理である。
【００７２】
車両制御システム３００が、例示した処理を実行している最中であれば（Ｓ４２のＮｏ）、補正パラメータ１１２を更新すると、障害物等の認識において誤差が生ずる可能性がある。したがって、更新部１０４は更新処理（Ｓ４３）を実行せずに、更新タイミング判定処理（Ｓ４）を終了する。
【００７３】
一方、車両制御システム３００の実行中の処理が、上に例示した特定の処理でなければ（Ｓ４２のＹｅｓ）、更新部１０４は更新処理（Ｓ４３）を実行する。更新部１０４は、更新処理（Ｓ４３）を実行した後に、更新タイミング判定処理（Ｓ４）を終了する。
【００７４】
なお、処理状況の通知は、更新部１０４からの要求によらず、自発的に適宜繰り返して通知されるように構成してもよい。この場合、処理状況要求処理（Ｓ４１）は実行されずに、更新部１０４は予め通知されている処理状況に基づいて更新タイミング判定処理（Ｓ４２）を実行すればよい。
【００７５】
以上説明したステレオカメラ１０によれば、撮影画像１１１の座標のずれを補正する際に、車両制御システム３００が障害物等を認識中または追跡中であるか否かを判断した結果に応じて、補正パラメータ１１２の更新タイミングを制御する。
【００７６】
車両制御システム３００が障害物等を認識中だったり、追跡中だったりする障害物等認識状態であれば、補正パラメータ１１２の更新を行わず、すでに生成されていた補正パラメータ１１２を用いて補正画像１１４を生成する。車両制御システム３００が、障害物等認識状態ではないとき、すなわち、障害物等非認識状態であるとき、補正パラメータ１１２の更新を行ない、更新後の補正パラメータ１１２を用いて補正画像１１４を生成する
【００７７】
したがって、本実施形態に係るステレオカメラ１０によれば、補正画像１１４に基づいて生成される視差画像１１５を利用する車両制御システム３００において誤認識を発生させることなく、座標のずれを補正して精度良く距離を算出することができる。
【００７８】
次に、本実施形態に係るステレオカメラ１０において実行されるプログラム１００の処理の流れの別の例について説明する。なお、すでに説明をした処理と同じ処理には、同じ符号を付して詳細な説明を省略する。
【００７９】
図１０に示すように、本実施形態に係るプログラム１００において、認識処理（Ｓ２）と補正パラメータ生成処理（Ｓ３）を並行して実行してもよい。この場合、ステレオカメラ１０が制御部３を２つ備えている等、並行処理ができるハードウェア資源をステレオカメラ１０が備えていることが前提になる。認識処理（Ｓ２）と補正パラメータ生成処理（Ｓ３）の実行を並行することによって、プログラム１００における処理速度を向上させることができる。
【００８０】
図１０に示すフローチャートのように、撮影処理（Ｓ１）の後、認識処理（Ｓ２）と補正パラメータ生成処理（Ｓ３）を並行して実行する。このとき、認識処理（Ｓ２）は、必ず更新タイミング判定処理（Ｓ４）より前に実行される。更新タイミング判定処理（Ｓ４）では、認識処理（Ｓ２）によって生成される認識フラグＲを利用する。そのため、認識処理（Ｓ２）の実行が更新タイミング判定処理（Ｓ３）の後になると、補正画像１１４に基づいて生成される視差画像１１５を利用する車両制御システム３００において、誤認識が生ずる可能性があるからである。上記のように、認識処理（Ｓ２）の実行を更新タイミング判定処理（Ｓ４）よりも前に行い、かつ、補正パラメータ生成処理（Ｓ３）と認識処理（Ｓ２）を並行することで、座標のずれを補正して精度良く距離を算出することを高速に行うことができる。
【００８１】
以上説明した本実施形態に係るステレオカメラ１０において実行されるプログラム１００は、条件によって補正パラメータ１１２の更新処理（Ｓ４３）が実行されない場合がある。補正パラメータ１１２は、ステレオカメラ１０の電源がオフになると消去されてしまう。この場合、その後においてステレオカメラ１０の電源をオンにしたときの補正パラメータ１１２は最適なものではなくなっている。このまま補正画像１１４を生成する補正処理（Ｓ５）が実行されると、誤差を含んだ補正画像１１４が生成される可能性がある。
【００８２】
そこで、補正パラメータ１１２の更新処理（Ｓ４３）が行われるか否かに関わらず、補正パラメータ１１２が生成されたタイミングで定期的にＲＯＭに対して補正パラメータ１１２を書き込むようにしてもよい。この場合、更新処理（Ｓ４３）が実行されていない補正パラメータ１１２は、電源がオンになったときに、判定して更新処理（Ｓ４３）を行えばよい。
【００８３】
なお、補正パラメータ１１２のＲＯＭへの書き込みは、定期的なものでなくともよい。例えば、更新処理（Ｓ４３）が一定期間以上実行されていないときに補正パラメータ１１２をＲＯＭへ書き込む処理が実行されてもよい。
【００８４】
また、図１１に示すフローチャートのようにしてもよい。まず、更新部１０４（図６参照）が電源オフの信号を確認した場合（Ｓ５１のＹｅｓ）、補正パラメータ１１２のＲＯＭへの書込処理を実行してから（Ｓ５２）、電源オフ処理を実行する（Ｓ５３）。これによって、次回、電源がオンになったときに補正パラメータ１１２を利用することができる。
【００８５】
また、図１２に示すフローチャートのようにしてもよい。まず、更新部１０４（図６参照）が電源オフの信号を確認した場合（Ｓ６１のＹｅｓ）、補正パラメータ１１２の更新処理を実行してから（Ｓ６２）、電源オフ処理を実行する（Ｓ５３）。これによって、次回、電源がオンになったときに、常に最新の補正パラメータ１１２を利用することができる。
【００８６】
なお、本実施形態のステレオカメラ１０を、車両制御システム以外に使用してもよい。
【符号の説明】
【００８７】
１      第１カメラ
２      第２カメラ
３      制御部
４      主記憶部
１１    画像処理装置
１００  プログラム
１０１  第１撮影部
１０２  第２撮影部
１０３  記憶部
１０４  更新部
１０６  補正部
１０８  認識部
１０９  追跡部
１１１  撮影画像
１１２  補正パラメータ
３００  車両制御システム
３０１  制御装置
５００  車両
【先行技術文献】
【特許文献】
【００８８】
【特許文献１】特開２０１４−１３８３３１号公報
【図１】
0006674127.tif 000002
【図２】
0006674127.tif 000003
【図３】
0006674127.tif 000004
【図４】
0006674127.tif 000005
【図５】
0006674127.tif 000006
【図６】
0006674127.tif 000007
【図７】
0006674127.tif 000008
【図８】
0006674127.tif 000009
【図９】
0006674127.tif 000010
【図１０】
0006674127.tif 000011
【図１１】
0006674127.tif 000012
【図１２】
0006674127.tif 000013