(57)【特許請求の範囲】
【請求項１】
視野が重複し、位置，角度，拡大率のいずれか少なくとも１つが異なるように撮像された２つの画像を補正する予め記憶された、あるいは演算により算出された補正データを読み込む補正データ読み込み部と、
前記補正データ読み込み部で読み込まれた前記補正データを用いて撮像された画像を補正する画像補正部と、
前記画像補正部で補正された２つの画像中から対応する対応領域として、人、車、建造物、路面、電柱等の構造物を対応領域として選択する、あるいは、レーンマーカ、床と壁面の境界、天井と壁面の境界、窓枠のいずれかを含む領域を選択する対応領域算出部と、
前記補正部で補正された画像上の対応領域内の輝度値の一致度を算出する、あるいは、前記対応領域の間隔を一致度として算出する一致度算出部と、
前記一致度算出部で算出された前記一致度に基づいてカメラパラメータを算出するカメラパラメータ算出部と、
前記カメラパラメータ算出部で算出された前記カメラパラメータ、又は前記カメラパラメータに基づく補正データ、を格納する補正データ格納部と、を有する画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、
前記カメラパラメータ算出部で算出された前記カメラパラメータは、前記撮像素子の焦点距離，画素の縦方向の大きさ，画素の横方向の大きさ，縦方向の拡大率，横方向の拡大率，前記撮像素子の縦軸と横軸の成す角度，光軸中心の座標、の少なくとも１からなる内部パラメータ、又は、前記撮像素子間の回転角度、前記撮像素子間の平行移動量の少なくとも１つからなる外部パラメータ、又は画像の歪みを補正する歪みパラメータである画像処理装置。
【請求項３】
請求項１記載の画像処理装置において、
前記対応領域算出部は、撮像された２つの画像中から平行なパターンの端点の組を対応領域として算出する画像処理装置。
【請求項４】
請求項３記載の画像処理装置において、
前記一致度算出部は、前記対応領域間の間隔の一致度を算出する場合、前記対応領域間の間隔の平均値、前記対応領域間の間隔の最小値、前記対応領域間の間隔の最大値の少なくとも１つから算出した値、予め記憶又は定義された平行なパターンの幅の値、外部機器から受信された平行なパターンの幅の値、の少なくとも１つを比較して一致度を算出する画像処理装置。
【請求項５】
請求項１記載の画像処理装置において、
前記一致度算出部は、前記対応領域内の輝度値，輝度変化量，輝度変化の方向，カラー情報，カラーの変化量，輝度のヒストグラム，輝度変化量のヒストグラム，カラーの変化量のヒストグラム，輝度変化の方向のヒストグラム，カラー変化の方向のヒストグラム、の少なくとも１つの画像から得られる特徴量に基づいて前記対応領域間の一致度を算出する画像処理装置。
【請求項６】
請求項１記載の画像処理装置において、
前記補正データは、予め記憶されたカメラパラメータ、又は前記カメラパラメータに基づいて算出された補正前後の対応関係を示す変換テーブルである画像処理装置。
【請求項７】
請求項６記載の画像処理装置において、
前記カメラパラメータ算出部で算出された前記カメラパラメータ、又は前記変換テーブル、を補正データとして格納する補正データ格納部を有する画像処理装置。
【請求項８】
請求項１記載の画像処理装置において、
前記画像補正部は、前記２つの撮像素子の一方の撮像素子のカメラパラメータを補正データとして他方の撮像素子で撮像された画像を補正する画像処理装置。
【請求項９】
請求項３記載の画像処理装置において、
前記対応領域算出部は、撮像された画像から検知された、歩行者，車両，路面，路面標示，建造物，構造物の少なくとも１つのパターンを含む領域を前記対応領域として算出する画像処理装置。
【請求項１０】
請求項３記載の画像処理装置において、
前記対応領域算出部は、撮像された画像から検知された、室内に存在する床と壁面の境界線，天井と壁面の境界線，窓枠、の少なくとも１つのパターンを含む領域を前記対応領域として算出する画像処理装置。
【請求項１１】
請求項１記載の画像処理装置において、
前記一致度算出部が算出した一致度に基づいて、前記撮像素子に異常が発生しているか否か、又は読み込んだ前記補正データが正常か否かを判定し、
判定した結果に基づいて、前記撮像素子の動作を停止する停止信号の出力、又はユーザに警告を発する警告信号の出力を行う画像処理装置。
【請求項１２】
請求項１記載の画像処理装置において、
前記対応領域算出部は、撮像された１つの画像に複数の対応領域が算出された画像処理装置。
【請求項１３】
請求項１２記載の画像処理装置において、
前記複数の対応領域は、前記撮像素子からの距離の異なる対応領域を有する画像処理装置。
【請求項１４】
請求項１記載の画像処理装置において、
前記撮像素子で撮像された画像は、異なるタイミングで撮像された画像である画像処理装置。
【請求項１５】
画像を撮像する２つの撮像素子と、
撮像された画像を画像処理する処理手段と、を有し、
前記処理手段は、
前記２つの撮像素子で撮像された２つの画像を補正する予め記憶された補正データを読み込む補正データ読み込み部と、
前記補正データ読み込み部で読み込まれた前記補正データを用いて撮像された画像を補正する画像補正部と、
前記画像補正部で補正された２つの画像中から対応する対応領域として、人、車、建造物、路面、電柱等の構造物を対応領域として選択する、あるいは、レーンマーカ、床と壁面の境界、天井と壁面の境界、窓枠のいずれかを含む領域を選択する対応領域算出部と、
前記補正部で補正された画像上の対応領域内の輝度値の一致度を算出する、あるいは、前記対応領域の間隔を一致度として算出する一致度算出部と、
前記一致度算出部で算出された前記一致度に基づいてカメラパラメータを算出するカメラパラメータ算出部と、を有する撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
撮像装置のキャリブレーションを実行する画像処理装置及びそれを用いた撮像装置に関する。
【背景技術】
【０００２】
近年、ステレオカメラなど複数のカメラを用いて歩行者や車両などの障害物を検出する障害物検出装置が実用化されている。ステレオカメラとは、同時刻に撮像された複数の画像上における同一対象物の位置ずれ（視差）を、テンプレートマッチングにより算出し、算出した視差をもとに対象物の実空間上の位置を、周知の変換式により算出する装置である。
【０００３】
このステレオカメラは、２台の撮像装置で撮像した１対の画像を用いて、対象物の距離を算出し、対象物の認識を行うステレオカメラ装置が、不審者の侵入や異常を検知する監視システムや車の安全走行を支援する車載システムなどに適用することができる。
【０００４】
上述の監視システムや車載システムで利用されるステレオカメラは、位置間隔をあけて撮像された一対の撮像画像に対して三角測量技術を適用して距離を求めるというものであり、このステレオカメラは、すくなくとも２つの撮像装置と、これらの撮像装置が出力する少なくとも２つの撮像画像に対して三角測量処理を適用するステレオ画像処理ＬＳＩ（Large Scale Integration）と、を備えているのが一般的である。このステレオ画像処理ＬＳＩは、一対の画像に含まれる画素情報を重ね合わせて２つの画像の一致した位置のずれ量（視差）を求めるという処理を行うことによって、三角測量処理を実現する。そのため、一対の画像間には視差以外のずれが存在しないことが理想的であり、各々の撮像装置ごとに、光学特性や信号特性のずれがないよう調整するか、カメラ間の位置関係などを求めておく必要がある。
【０００５】
図２はステレオカメラ装置の一般的な原理を示す図である。図２において、δは視差、Ｚは計測距離、ｆは焦点距離、ｂは基線長をそれぞれ表し、これらの間には式（１）で示すような関係が成り立つ。
【０００６】
【数１】
0005588812.tif 000002
【０００７】
式（１）により距離をもとめるとき、遠ければ遠いほど視差δは小さくなる。この視差δの算出性能が低下すると距離精度が低下する。そのため、視差δを正確に求めるために、各カメラのパラメータや、各カメラ間の位置関係を表すパラメータを求めるキャリブレーションが重要となる。
【０００８】
撮像装置のキャリブレーションを行う方法として、例えば、非特許文献１に記載された方法が提案されている。これは、平面上に格子模様などの予め定義したパターンを描画し、その平面パターンを異なった角度からカメラで複数回撮像して、撮像した画像中の平面パターンから予め定義した格子模様の格子点等を特徴点として検出し、その既知の特徴点を用いてキャリブレーションを行うものである。この非特許文献１に記載された方法は、撮像素子の画素サイズや画像中心，焦点距離といったカメラの内部パラメータを求めることができる。
【０００９】
また、外部パラメータと呼ばれるカメラ間の位置関係などを表すパラメータを求める方法としては、特許文献１に記載された方法が提案されている。これは、信号機などを画像処理により検出しその瞬間の視差を求め、さらにしばらく走行した後に先ほど検出した信号機を再度検出して視差を求め、これら２つの視差と走行距離を用いてカメラの角度ずれを求めるものである。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１０−３４１４５８号公報
【非特許文献】
【００１１】
【非特許文献１】Z. Zhang, et al., “A Flexible New Technique for Camera Calibration”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.22, No.11, pp. 1330-1334, Nov 2000.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、非特許文献１の手法では、予め定義したパターンが描画されている平面パターンを異なった角度から複数回撮像する必要があるため、平面パターンを動かす設備や、複数の平面を配置した設備など特別な設備が必要である。
【００１３】
また、特許文献１の方法では、求めることができる外部パラメータは、カメラの基線長と平行な方向の角度ずれのみである。さらに、異なった瞬間で求めた同一物体の視差に加え走行距離が必要であるが、走行距離の誤差などが原因で精度良く角度ずれを求めることが難しいといった課題があった。
【００１４】
本発明の目的は、簡易な設備を必要とせず、あるいは特別な設備を必要とせず、簡易且つ精度良くキャリブレーションができる画像処理装置及びそれを用いた撮像装置を提供することである。
【課題を解決するための手段】
【００１５】
前記課題を解決するために、本発明の画像処理装置及び撮像装置は主として、視野が重複し、位置，角度，拡大率のいずれか少なくとも１つが異なるように撮像された２つの画像を補正する予め記憶された、あるいは演算により算出された補正データを読み込む補正データ読み込み部と、補正データ読み込み部で読み込まれた補正データを用いて撮像された画像を補正する画像補正部と、画像補正部で補正された２つの画像中から対応する対応領域として、人、車、建造物、路面、電柱等の構造物を対応領域として選択する、あるいは、レーンマーカ、床と壁面の境界、天井と壁面の境界、窓枠のいずれかを含む領域を選択する対応領域算出部と、補正部で補正された画像上の対応領域内の輝度値の一致度を算出する、あるいは、対応領域の間隔を一致度として算出する一致度算出部と、一致度算出部で算出された一致度に基づいてカメラパラメータを算出するカメラパラメータ算出部と、カメラパラメータ算出部で算出されたカメラパラメータ、又はカメラパラメータに基づく補正データ、を格納する補正データ格納部と、を有する構成とする。
【発明の効果】
【００１６】
簡易な設備を必要とせず、あるいは特別な設備を必要とせず、簡易且つ精度良くキャリブレーションができる画像処理装置及びそれを用いた撮像装置を提供できる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る撮像装置のキャリブレーション方法の第１の実施の形態を示すブロック図である。
【図２】ステレオカメラの原理を示す図である。
【図３】ステレオカメラのレクティフィケーション処理の概要を示す図である。
【図４】本発明のキャリブレーション方法を適用したカメラユニットの一構成例を示す図である。
【図５】本発明のキャリブレーション方法を適用した車載システムの一構成例を示す図である。
【図６】本発明の対応領域算出部により画像間の対応領域を求めた結果の一例を示す図である。
【図７】本発明の一致度算出部により画像間の対応領域の位置を調整した結果の一例を示す図である。
【図８】本発明のカメラパラメータ算出部がカメラパラメータを求めることで撮像画像が平行化されていく過程の一例を示す図である。
【図９】本発明に係る撮像装置のキャリブレーション方法の第１の実施の形態の処理フローを示す図である。
【図１０】本発明に係る撮像装置のキャリブレーション方法の第２の実施の形態を示すブロック図である。
【図１１】本発明の対応領域算出部の結果と一致度算出部の結果を説明する図である。
【図１２】本発明の一致度算出部により１対の対応領域から求めた幅とパラメータがずれていない場合の幅とを用いて一致度を算出する過程を示す図である。
【図１３】本発明に係る撮像装置のキャリブレーション方法の第２の実施の形態の処理フローを示す図である。
【図１４】本発明のキャリブレーション方法において、異なったタイミングで撮像した複数の画像を用いる一例を示す図である。
【図１５】本発明のキャリブレーション方法において、異なったタイミングで撮像した複数の画像を用いる他の例を示す図である。
【図１６】本発明のキャリブレーション方法において、キャリブレーション処理を分割して実行する例を示す図である。
【図１７】本発明に係る撮像装置のキャリブレーション方法の第２の実施の形態のキャリブレーション処理を優先する処理フロー示す図である。
【図１８】本発明に係る撮像装置のキャリブレーション方法の第２の実施の形態において、特徴点を用いて対応領域を算出例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の実施の形態について説明する。
【００１９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態における撮像装置であるカメラのキャリブレーション方法を備えた画像処理装置の基本構成の例を示したブロック図である。詳細は後述する。
【００２０】
第１の実施の形態では、カメラの外部パラメータ，内部パラメータ，歪みパラメータを推定する手法である。
【００２１】
ただし、本実施例では、内部パラメータのうち横方向の拡大率と縦方向の拡大率は、右カメラを基準に左カメラを合わせるか、左カメラを基準に右カメラを合わせるか、右カメラと左カメラとも調整し左右で等しくなるように合わせるが、既知の大きさの対象や距離が既知の対象を撮像することができれば、撮像対象の実空間での大きさ、距離と撮像された画像上での大きさから横方向の拡大率と縦方向の拡大率を求めることができる。
【００２２】
つまり、図２のように右カメラのレンズ中心を車両に搭載した例では、光軸方向をＺ軸、水平方向をＸ軸、垂直方向をＹ軸とすると、外部パラメータと、内部パラメータ、歪みパラメータを求め、内部パラメータの縦横の拡大率は左右の画像の拡大率が一致するように求めることに相当する。これらのパラメータが求められれば、後述のレクティフィケーション処理により、画像平面はエピポーラ線が同一直線上になるように変換することができる。
【００２３】
本発明に係る撮像装置のキャリブレーション方法は、図４に示すような撮像装置であるカメラユニット１に適用されて、このカメラユニット１が備えるカメラ４ａ，４ｂ（撮像装置）により周囲の環境を認識する機能を実現する。このとき、カメラは３つ以上備えていても良い。あるいは、カメラを移動，パン，チルト，ズームで撮影条件の異なる画像を、1台のカメラで異なったタイミングで撮像した複数の画像を用いても良い。また、カメラとは別に図示しないコンピュータなどの処理ユニットにカメラ４ａ，４ｂから得られる画像を取り込んで処理する構成でも良い。
【００２４】
このカメラユニット１は、視野が重複するように設置された撮像素子であるカメラ４ａおよび４ｂと、これらのカメラ４ａ，４ｂにて撮像した画像を処理するための処理手段である処理手段であるＣＰＵ６、ＣＰＵ用の記録手段であるＲＡＭ９、プログラム記録手段であるプログラムＲＯＭ１０と、記録手段であるデータＲＯＭ７から構成されている。ただし、この構成は必須な要件ではなく、ＣＰＵ６に加え、さらに画像処理ＬＳＩを搭載して処理の一部を専用のＬＳＩで処理する構成や、１つのＲＡＭのみでなくを画像処理ＬＳＩ用のＲＡＭなど複数のＲＡＭを用いる構成でも良い。そして、カメラ４ａと４ｂとから得られた画像を用いて距離を計測することができるステレオカメラとして機能する構成となっている。
【００２５】
本カメラユニット１は、例えば車両車室内のルームミラーの左右にカメラが配置されるように取り付ける。以降では、右側のカメラを右カメラ、左側のカメラを左カメラと表記する。ただし、カメラは２台である必要はなく、左右に並んでいる必要もなく、視野が重複していれば本発明によりキャリブレーションすることができる。また、カメラの位置も左右方向に配置する代わりに、上下に配置するなど他の構成であっても良い。あるいは、車両が移動した際に、１台のカメラで異なったタイミングで撮像した複数の画像を用いても良い。
【００２６】
ここで、第１の実施の形態を具体的に説明する前に、キャリブレーションで求める各種パラメータについて概要を説明する。
【００２７】
一般的に撮像画像とレンズは、レンズ歪みを含まないと仮定するとピンホールカメラモデルで扱うことができる。以降では、まずレンズ歪みを含まない場合について説明し、その後、レンズ歪みを含む場合について説明する。また、近年の製造技術の進歩により撮像素子の両座標軸の成す角度は直角とみなせるようになってきているため、画像の両座標軸の成す角度が直角として説明するが、画像の両座標軸の成す角度を含む形で扱うこともできる。
【００２８】
カメラ座標系の点を（Ｘ，Ｙ，Ｚ）とし、それぞれの点の画像座標系の点を（ｕ，ｖ）とすると、ピンホールカメラモデルは式（２）で表される。
【００２９】
【数２】
0005588812.tif 000003
【００３０】
ここで、αuはカメラの横方向の拡大率、αvはカメラの縦方向の拡大率、ｕ0，ｖ0はカメラの画像中心である。ただし、αu，αvは焦点距離と画素サイズから成る。また、式（２）を同次座標を用いて行列表記すると式（３）が得られる。
【００３１】
【数３】
0005588812.tif 000004
【００３２】
ただし、ｓはスカラーである。また、撮像素子の両座標軸の成す角度θを考慮に入れて、内部パラメータを行列表記すると下記式（４）の通り表すことができる。
【００３３】
【数４】
0005588812.tif 000005
【００３４】
以降、前記拡大率や画像中心などを総称して内部パラメータと呼ぶ。
【００３５】
また、レンズを通して入射光を撮像素子で露光した際に、撮像される画像に歪みが生じる。歪みを大別すると３つに分けることができる。１つ目は、画像中心から離れるほど入射光がピンホールカメラモデルよりも内側に撮像されるレンズ歪み、２つ目は、複数枚から成るレンズの場合に各レンズ中心のずれにより発生する歪み、３つ目は、光軸と撮像面が直行せず角度ずれが発生することによる歪みである。このように歪みの原因としては、複数考えられる。
【００３６】
例えば、レンズ歪み等を考慮した歪みモデルを用いることとすると、歪みモデルは、下記の式（５），式（６）で表される。ただし、この歪みモデルは必須の要件ではなく、異なったモデルを用いても良い。
【００３７】
【数５】
0005588812.tif 000006
【００３８】
【数６】
0005588812.tif 000007
【００３９】
ここで、ｘ′，ｙ′は、式（７），式（８）で表される焦点距離ｆを１とした場合の正規化座標系における歪み補正後の座標位置であり、ｘ″，ｙ″は、正規化座標系における歪み補正前の座標位置である。
【００４０】
【数７】
0005588812.tif 000008
【００４１】
【数８】
0005588812.tif 000009
【００４２】
よって、最終的に得られる画像座標系における歪み補正前の画素位置（ｕ′，ｖ′）は、画像の拡大率と画像中心から次式（９）（１０）で求めることができる。
【００４３】
【数９】
0005588812.tif 000010
【００４４】
【数１０】
0005588812.tif 000011
【００４５】
つまり、キャリブレーションにより、ｋ1，ｋ2，ｐ1，ｐ2を求めることで歪みを補正することができる。以降では、これらのパラメータを歪みパラメータと呼ぶ。
【００４６】
次に外部パラメータについて説明する。外部パラメータとは、２つの３次元座標系の対応関係を表すパラメータであり、回転成分を表す３自由度の回転行列と、３自由度の平行移動ベクトルから成る。ステレオカメラのキャリブレーションでは、右カメラと左カメラの各カメラ座標系の対応関係を表す外部パラメータを求めることになる。右カメラ座標系の点を（ＸR，ＹR，ＺR）、左カメラ座標系の点を（ＸL，ＹL，ＺL）、回転行列をＲ、平行移動ベクトルをｔとすると、式（１１）の関係が得られる。
【００４７】
【数１１】
0005588812.tif 000012
【００４８】
ここで、任意の回転は、例えばＺ軸まわりの回転φZ、次に新しいＹ軸まわりの回転φY、最後に新しいＸ軸まわりの回転φXの３段階によって表し、回転行列Ｒは次式（１２）で表される。また、回転の表記は、オイラー角や、回転ベクトルにより回転軸と回転量を表すものであっても良い。
【００４９】
【数１２】
0005588812.tif 000013
【００５０】
また、平行移動ベクトルは次式（１３）の通りである。
【００５１】
【数１３】
0005588812.tif 000014
【００５２】
キャリブレーションでは、以上で述べた内部パラメータ，歪みパラメータ，外部パラメータの全て、あるいは一部を求める。
【００５３】
次に、上記の外部パラメータを用いて視差を求めるための方法について説明する。
【００５４】
ステレオ画像を用いて３次元計測を行う際には、左右の画像間での対応点探索が重要になる。この対応点探索の際に重要な概念が、エピポーラ幾何である。２つのカメラの幾何関係が既知の場合、一方の画像で１点が与えられると、エピポーラ平面と各画像上のエピポーラ線が決まる。３次元空間のもとの座標が未知でも他方の画像では、対応点がエピポーラ線上に限定される。従って、対応点探索は、２次元の探索ではなく、エピポーラ線に沿った１次元の探索で良い。
【００５５】
回転行列をＲの各要素ｒ11からｒ33と、平行移動ベクトルの各要素を用いると、下記の関係式（１４）〜（１７）を得る。
【００５６】
【数１４】
0005588812.tif 000015
【００５７】
【数１５】
0005588812.tif 000016
【００５８】
【数１６】
0005588812.tif 000017
【００５９】
【数１７】
0005588812.tif 000018
【００６０】
ここで、式（１３），式（１４）を式（１５）および式（１６）に代入して、Ｚを消去すると下記の方程式（１８）が成立する。
【００６１】
【数１８】
0005588812.tif 000019
【００６２】
エピポーラ線の方程式の係数ａ，ｂ，ｃは式（１９）となり、エピポーラ線を求めることができる。また、歪み補正後の左画像上の点に対する右画像上のエピポーラ線に関しても同様に求めることができる。
【００６３】
【数１９】
0005588812.tif 000020
【００６４】
上記では、エピポーラ線を算出し、そのエピポーラ線上を対応点探索する場合について述べてきたが、エピポーラ線を求める方法以外に左右の画像を平行化する方法（レクティフィケーション）が用いられる。レクティフィケーション後の画像座標系では、左右の画像内の対応点が同一水平線上に存在することになるため、対応点探索を画像の水平ライン軸に沿って行えば良い。組込みシステムでは、特に計算コストの問題からレクティフィケーションを用いることが多い。
【００６５】
図３にレクティフィケーション処理の概要を示す。このレクティフィケーション処理では、右カメラ座標系の原点ＣＲと左カメラ座標系の原点ＣＬは移動せずに、カメラ座標系を回転させることにより新しい平行な画像面を生成する。ＣＲからＣＬへの平行移動ベクトルｔの大きさは、以下式（２０）の通りである。
【００６６】
【数２０】
0005588812.tif 000021
【００６７】
このとき、以下式（２１）（２２）（２３）の３つの方向ベクトルｅ1，ｅ2，ｅ3を定義し、それぞれの方向ベクトルをレクティフィケーション後のＸＹＺ軸の方向ベクトルとすることで画像の平行化を行うことができ、新しい左右の画像平面上ではエピポーラ線が同一直線上となる。つまり、レクティフィケーション後のＸＹＺ軸が方向ベクトルｅ1，ｅ2，ｅ3と一致するように右画像を回転させる回転行列、左画像を回転させる回転行列で変換すれば良い。
【００６８】
【数２１】
0005588812.tif 000022
【００６９】
【数２２】
0005588812.tif 000023
【００７０】
【数２３】
0005588812.tif 000024
【００７１】
組込みシステムでは、リアルタイムで処理するためにレクティフィケーションのアプローチを採用するのが一般的である。以降では、レクティフィケーションにより画像を平行化する画像補正を用いた場合を例に説明する。
【００７２】
次に、前述の内部パラメータ，外部パラメータ，歪みパラメータを求める方法について説明する。以下、これらのパラメータを総称してカメラパラメータと呼ぶことにする。また、内部パラメータ，外部パラメータ，歪みパラメータはすべて求める必要がなく、いずれかを固定して求めても良い。あるいは、これらのパラメータの代わりに、これらのパラメータに変換可能なパラメータ、前述のカメラパラメータを用いたカメラモデルを近似した数式のパラメータなどを推定する構成としても良い。
【００７３】
なお、カメラパラメータをまとめると、以下のように定義される。  
・内部パラメータ：撮像素子の焦点距離，画素の縦方向の大きさ，画素の横方向の大きさ、縦方向の拡大率，横方向の拡大率，撮像素子の縦軸と横軸の成す角度，光軸中心の座標など。  
・外部パラメータ：撮像素子間の回転角度、撮像素子間の平行移動量など。  
・歪みパラメータ：画像の歪みを補正するパラメータなど。
【００７４】
撮像装置であるカメラユニット１では、プログラムＲＯＭ１０に本実施の形態に関するキャリブレーションプログラムが格納されており、電源をＯＮにするとＣＰＵ６がこれらのプログラムを実行することで、キャリブレーション機能が実現され、図１の画像処理装置の機能ブロック図のように補正データ読み込み部２１，画像補正部２２，対応領域算出部２３，一致度算出部２４，カメラパラメータ算出部２５，補正データ格納部２６として機能するようになっている。
【００７５】
補正データ読み込み部２１は、２つの撮像素子であるカメラ４ａ，４ｂで撮像された画像に補正する為に、記録手段であるデータＲＯＭ７，ＲＡＭ９等からカメラパラメータやカメラパラメータから求めた変換前後の画素位置の対応関係をテーブル化した変換テーブルなどの補正データを読み込む機能を有するものである。あるいは、ＣＰＵ６がプログラム内の変数，定数，乱数等を用いて算出したパラメータ、パラメータから求めた画像を補正する変換テーブルを用いても良い。
【００７６】
画像補正部２２は、読み込んだ補正データを用いて、撮像された画像に対して、歪みの補正、レクティフィケーション処理などの画像補正を行う機能を有するものである。なお、画像補正部２２は、２つのカメラの一方のカメラ４ａのカメラパラメータを補正データとして他方のカメラ４ｂで撮像された画像を補正しても良い。
【００７７】
対応領域算出部２３は、画像補正部２２で補正されたカメラ４ａと４ｂの画像間で対応する対応領域を求める機能を有するものである。なお、対応領域は、複数設けても良い。また、既知パターンを撮像してキャリブレーションを行う場合は、予めどの領域が対応する領域かを定義することができるため、予めプログラム内等に定義しておいても良い。または、既知パターンの特徴点をそれぞれの画像から検出し、その特徴点を照合することで対応領域を求めても良い。あるいは、図示しないＰＣ等の外部機器と接続し、外部機器から対応領域を入力できる構成としても良いことは明らかである。
【００７８】
一致度算出部２４は、カメラ４ａと４ｂにより撮像し補正された画像間の対応領域内の画像がどの程度一致しているかを表す一致度を求める機能を有するものである。具体的には、一致度算出部２４は、対応領域から抽出された画像パターンの一致度、対応領域間の座標の一致度、対応領域間の間隔の一致度、の少なくとも１つの一致度を算出する。なお、画像パターンの一致度では、対応領域内の画素の輝度値，輝度変化量，輝度変化の方向，カラー情報，カラーの変化量，カラーの変化の方向，輝度のヒストグラム，輝度変化量のヒストグラム，カラーの変化量のヒストグラム，輝度変化の方向のヒストグラム，カラー変化の方向のヒストグラム等の画像パターンを変えられる特徴量を用いることができる。対応領域間の間隔の一致度を算出する場合、対応領域間の間隔の平均値，対応領域間の間隔の最小値，対応領域間の間隔の最大値等の複数の対応領域の間隔から算出することができる値をうち少なくとも１つから算出した値、予め記憶又は定義された平行なパターンの幅の値、地図データベースや外部機器から受信された平行なパターンの幅の値、の少なくとも１つを比較して一致度を算出する。
【００７９】
カメラパラメータ算出部２５は、一致度算出部２４により求めた一致度に基づいてカメラパラメータを算出する。具体的には、算出された一致度がより高い値（あるいは低い値）になるようにカメラパメータを求める。一致度がより高い値になるようにカメラパラメータを求めるか、低い値になるようにカメラパラメータを求めるかは、一致度に用いる評価関数などの指標によって異なる。
【００８０】
補正データ格納部２６は、カメラパラメータ算出部２５で求めたカメラパラメータ（外部パラメータ，内部パラメータ，歪みパラメータ等）、又は、カメラパラメータに基づいて算出された補正前後の対応関係を示す変換テーブルを記録手段であるＲＡＭ９やデータＲＯＭ７等に一時的に保持、あるいは格納する機能を有する。または、カメラパラメータ（外部パラメータ，内部パラメータ，歪みパラメータ等）に基づいた補正データ、具体的には、カメラパラメータを用いた補正後の画素の座標と補正前の画素の座標を計算し、ルックアップテーブル等の形式で各画素を補正するための補正データを記録手段であるＲＡＭ９やデータＲＯＭ７等に格納する。
【００８１】
以上のように構成されるカメラユニット１は、上述したように、ＣＰＵ６がキャリブレーションプログラムを実行することで、カメラパラメータを求めて補正データを格納するまでのキャリブレーション処理を実行できる。ただし、キャリブレーション処理とは別にカメラユニット１で画像処理による立体物検知などの機能をカメラユニット１内で行っても良い。
【００８２】
ここで、以上のようなカメラユニット１において、キャリブレーションの一連の処理の流れをフローチャートを参照しながら説明する。
【００８３】
この図９に示す一連の処理は、電源がオンとなったときにスタートし、電源がオフとなるまで繰り返し行われる。あるいは、キャリブレーション処理を所定回数実行し、キャリブレーション処理を終了する構成としても良い。また、図４のカメラユニット１の構成の場合は、画像の補正処理は、画像処理ＬＳＩで行うと高速に処理することができる。もちろん、すべてをＣＰＵで処理しても同一の処理を実行できる。
【００８４】
まず、電源がオンとなると、カメラユニット１によりキャリブレーション処理が実行され、ＲＡＭ９の初期化処理などを実行する（ステップ１０１）。次に、キャリブレーションを実行するタイミングか否かを判定し（ステップ１０２）、ステップ１０３でキャリブレーションを実行するタイミングであればステップ１０４に移行し、キャリブレーションを実行するタイミングでなければステップ１０２に戻る。
【００８５】
このキャリブレーションのタイミング判定は、例えば図示しない外部機器によりキャリブレーションの実行の指令信号を送信し、それをカメラユニット１で受信することで判定することでカメラユニット１のメンテナンス時にキャリブレーションを実行する。または、車両に搭載して車両が走行中にキャリブレーションを行う場合は、自車両が停車中や後退中など、他の画像処理プログラムが動作する必要のないタイミング、遠方から近距離までが視野内に含まれているタイミング、昼など照明条件の良い環境や、晴天，曇り，室内など外乱の少ない環境などを、キャリブレーションタイミングとして判定する。
【００８６】
そして、キャリブレーションタイミングと判定された場合は、補正データ読み込み部２１が、補正後と補正前の画像の対応関係を保持するルックアップテーブル形式の補正テーブルや、内部パラメータ，外部パラメータ，歪みパラメータ等からなる補正データを記録手段であるデータＲＯＭ７、プログラム記録手段であるプログラムＲＯＭ１０のいずれかから読み込む（ステップ１０４）。あるいは初期化処理（ステップ１０１）で、データＲＯＭ７あるいはプログラムＲＯＭ１０に保存されている補正データを、ＲＡＭ９に保存しておき、ＲＡＭから読み込む構成等であっても良い。または、ＣＰＵ６等がプログラム内の変数，定数，乱数等を用いて算出したパラメータや、パラメータから求めた画像を補正する変換テーブルを用いても良い。
【００８７】
その後、画像補正部２２にて補正データを用いて画像を補正する（ステップ１０５）。
具体的には、ルックアップテーブル形式の補正テーブルを用いて、補正後の各画素の輝度値、カラー情報を求めるか、前述の式（２）から式（２３）で説明したカメラパラメータを用いて画像の平行化を行う。
【００８８】
そして、対応領域算出部２３が、各カメラで撮像し、画像補正部２２で補正した画像間で対応する領域を求める（ステップ１０６）。その例を、図６に示す。図６は、上段が補正後の右画像、下段が補正後の左画像であり、車両部分を第１の対応領域、歩行者部分を第２の対応領域として求めた例である。図６の例では、簡単のためレンズ歪み等を含まないが、レンズ歪みが生じている画像であっても良い。対応領域は、２つである必要はなく、３つ以上でもあるいは１つでも良い。また、図６では、対応領域は、歩行者部分と車両部分だが、これに限るものではなく、例えば、白線等のレーンマーカ，路面，速度制限標示などの路面標示，家，工場，病院などの建造物，電柱，ガードレールなどの構造物，室内に存在する床と壁面の境界線，天井と壁面の境界線，窓枠の部分を含むように対応領域としても良い。このときの補正画像は、カメラパラメータが正しく求まっていない、経年変化によりずれが発生している、キャリブレーションが未実施のため初期値を使用しているなどの理由からエピポーララインが平行になっていないものとし、説明する。
【００８９】
さらに、対応領域算出部２３では、図７に示すように対応領域の画像の垂直方向の座標が等しくなるように、片方の対応領域の位置を調整する。図７は、左画像の対応領域を調整した例であり、図７（ａ）が位置の調整前、図７（ｂ）が位置の調整後である。ただし、本実施例では左右エピポーラ線が平行かつ、画像の垂直方向の座標が等しい場合について説明しているが、エピポーラ線が平行でない場合等でも、対応領域を理想的なエピポーラ線上なるように調整する等により同様の処理が可能である。または、求めたパラメータを用いて、同一の視点からの画像にそれぞれの画像を変換しても良く、その場合は同一視点の画像であることから例えば対応領域の座標が一致するように調整する。
【００９０】
対応領域算出部２３が、対応領域を求める際に用いる領域は、例えば公知のテンプレートマッチングやサポートベクターマシンやニューラルネットワークを用いた歩行者検知、車両検知を用いて歩行者，車両等を検知して、その領域を用いて左右のカメラから得られる画像の対応領域を求める。
【００９１】
または、視差データを用いて、同じ視差を多く含む領域を求め、その領域を対応領域算出に用いても良い。このとき、対応領域算出に用いるそれぞれの領域は、距離が近い画素を多く含む領域を選択することで精度良くキャリブレーションを行うことができる。これは、距離が異なるとそれぞれの視差が異なるため原理的に対応領域間が一致しないためである。または、平面等を対応領域として用いる場合は、平面の角度や平面までの距離から各画素の視差を求めて一致度を算出することで、１つの領域内で距離が異なる場合でも本発明によりカメラパラメータを求めることができる。
【００９２】
これは、距離が異なる画素では、左右の視差が異なるため、左右の対応領域間の一致度を求める際に誤差が大きくなるためである。また、複数の対応領域を用いる場合、画像の一カ所に集中させず、画像の全体に配置することで、より精度の良いキャリブレーションを行うことができる。
【００９３】
これは、例えば画像右端のみに対応領域を配置した場合、求めたカメラパラメータでレクティフィケーションを行うと画像右側ではエピポーラ線が平行かつ同一直線上に近くなるものの画像左側では誤差が発生する可能性があるためである。
【００９４】
その後、一致度算出部２４が、対応領域間の一致度を算出する（ステップ１０８）。一致度は、例えば輝度値の差分の総和（ＳＡＤ：Sum of Absolute Difference），輝度値の差分の二乗和（ＳＳＤ：Sum of Squared Difference）、正規化相互相関（ＮＣＣ：Normalized Cross Correlation）などで求めることができる。ＳＡＤやＳＳＤなどを一致度として利用した場合は、一致度が小さいほど対応領域内の画像が一致していることになり、正規化相互相関などを利用した場合は、一致度が大きいほど対応領域内の画像が一致していることになる。
【００９５】
本実施の形態では、ＳＳＤを用いた場合を例に説明する。ＳＳＤを用いた一致度ｅは、例えば式（２４）により求めることができる。ただし、右画像と左画像の対応領域のサイズは同じとし、対応領域はＭ個の対が存在し、各対応領域内にはＮj個の画素が存在することとする。ただし、対応領域内の画素Nj個すべてを用いる必要はなく、その一部を用いて計算しても良い。また、Ｉjは右画像のｊ番目の対応領域内の画素のうち座標ｉの画素をパラメータｐを用いてＷRの座標変換を行って得られる輝度値であり、Ｔjは左画像のｊ番目の対応領域内の画素のうち座標ｉの画素をパラメータｑを用いてＷLの座標変換を行って得られる輝度値を表す。ただし、前述の通り、輝度値以外に輝度の変化量などを用いても良い。ＷRは前述のレクティフィケーション処理時にレクティフィケーション後の座標ｉから、レクティフィケーション前の座標を求める変換式であり、ＷLは座標ｉを対応領域の視差ｍj分だけシフトした座標に対する、レクティフィケーション前の座標を求める変換式である。
【００９６】
【数２４】
0005588812.tif 000025
【００９７】
なお、歪みのモデルや、回転の表現形式などは異なったものを用いても良い。ただし、対応領域内に例えば平面等が撮像されている場合は、対応領域に対して１つのｍjではなく、平面までの距離、平面の角度や法線ベクトルの方向等から対応領域内の各画素の視差を求めても良い。この場合は、ｍjではなく、平面までの距離，平面の角度や法線ベクトルの方向等を最適化する。平行な複数の平面や、距離が既知でかつ平行な複数な平面，垂直に交わる平面等が存在する場合は、平面の平行であることや垂直であること、平面間の距離が既知であることを利用して各対応領域間の視差ｍｊを求める構成としても良い。複数の平面が、平行，垂直でなくてもその平面間の成す角度が既知であれば同様である。通常の二乗誤差を最小とする問題では、片側（例えばＴ）を固定し、もう一方（例えばＩ）が固定したＴに一致するパラメータを求めるの。一方、本発明で用いる式（２４）はＴだけでなく、Ｉも変換し、それぞれを変換した際に誤差が最小となるパラメータｐ，ｑを求めるため、通常の最小二乗問題とは異なる。
【００９８】
次に、カメラパラメータ算出部２５では、一致度算出部２４で求めた一致度ｅがより小さく（ＮＣＣ等の場合は大きく）なるようにカメラパラメータを求める（ステップ１０９）。
【００９９】
カメラパラメータ算出部２５は、例えば公知の勾配法，ニュートン法，ガウスニュートン法，Levenberg−Marquardt法（修正ガウスニュートン法）などの最適化アルゴリズムを用いて、一致度ｅが最小となるように最適化処理を行うことでカメラパラメータを求めることができる。このとき、内部パラメータ，外部パラメータ，歪みパラメータのすべてを最適化しても良く、あるいはいくつかを固定値として扱いそれ以外のパラメータを最適化しても良い。例えば、内部パラメータ，歪みパラメータを固定し、外部パラメータのみを求める構成にすれば、経年変化等によりカメラの設置位置がずれた際の補正に利用することができる。
【０１００】
ここで、式（２４）の誤差が最小となるパラメータを推定する方法について説明する。
Ｉj(ＷR(ｉ；ｐ))をテイラー展開して２次以上の項は微小と仮定し無視し、同様にＴj(ＷL(ｉ；ｑ))をテイラー展開して２次以上の項は微小と仮定し無視すると次式（２５）が得られる。
【０１０１】
【数２５】
0005588812.tif 000026
【０１０２】
ただし、∇ＩはＷR(ｉ；ｐ)により得られる補正前の座標の輝度の変化量、∇ＴはＷL(ｉ；ｑ)により得られる座標の輝度の変化量である。また、Δｐはパラメータｐの更新量、Δｑはパラメータｑの更新量である。そして、式（２５）をΔｐ，Δｑで微分した値が０のときにパラメータが最適となるため、次式（２６）が得られる。
【０１０３】
【数２６】
0005588812.tif 000027
【０１０４】
よって、ΔｐおよびΔｑは式（２７），式（２８）により求めることができる。
【０１０５】
【数２７】
0005588812.tif 000028
【０１０６】
【数２８】
0005588812.tif 000029
【０１０７】
Ｈpは式（２６）をΔｐで微分した場合のヘッセ行列、Ｈqは式（２６）をΔｑで微分した場合のヘッセ行列である。また、添え字Ｔは転置を表す。
【０１０８】
この式（２７），式（２８）を求めることで誤差をより小さくするパラメータを求めることができる。具体的には、ｐにｐ＋Δｐを、ｑにｑ＋Δｑを代入してパラメータを更新すれば良い。
【０１０９】
そして、式（２）から式（２３）で説明した原理を用いて各画素の補正前と補正後の座標位置の対応関係をルックアップテーブル形式で算出し、そのルックアップテーブルを補正データとして保存する（ステップ１１０）。具体的には、例えば変換後の座標（１，１）に対応する変換前の座標は（０.８，０.６）といったように変換後の座標１画素ごと、あるいは一定間隔ごとにルックアップテーブルを作成する。
【０１１０】
次に、カメラパラメータ算出部２５で求めたカメラパラメータをデータＲＯＭ７，プログラムＲＯＭ１０，ＲＡＭ８，ＲＡＭ９のいずれかに保存する（ステップ１１１）。ただし、前記ルックアップテーブルの作成を省略し、カメラパラメータを保存するようにしても良い。
【０１１１】
そして最後に、一致度ｅが予めプログラムで設定されている閾値等よりも小さい（あるいは大きい）か、繰り返し回数が予めプログラムで設定されている上限等を超えているかなどを判定し、一致度ｅが予めプログラムで設定されている閾値等よりも小さい（あるいは大きい）場合、あるいは繰り返し回数が予めプログラムで設定されている上限等を超えている場合にキャリブレーション終了し、それ以外の場合は再度ステップ１０４からキャリブレーション処理を実行する。
【０１１２】
この過程を図８に示す。まず、上段では、カメラパラメータが求まっていないため左右のカメラでエピポーラ線が平行になっていないが、ステップ１０４からステップ１１１までのキャリブレーション処理を行うとカメラパラメータが最適な値に近づき（図８中段）、さらにステップ１０４からステップ１１１までの処理を繰り返すと最終的にはエピポーラ線を平行化することができ（図８下段）、図８下段の画像で対応領域の一致度が最小（あるいは最大）に近づく。図８の例では、左カメラのみに誤差が存在し、左カメラに関するパラメータのみが最適化されているが、左右画像ともに誤差が存在する場合でも同様に最適化することができる。
【０１１３】
ステップ１１２のキャリブレーション終了の判定において、所定回数キャリブレーションを実行後に一致度ｅが所定の値よりも大きい（あるいは小さい）場合、カメラに異常が発生している、キャリブレーションが正常に実行できなかったと判断して、撮像素子であるカメラを停止する停止信号を出力する、スピーカーから音声でドライバ、又はユーザに警告音を発する警告信号を出力する、又は、その警告信号に基づいてディスプレイに警告を表示するといった処理を行うことで、カメラの位置ずれが発生した際の誤動作を防止することができる。
【０１１４】
以上までに述べたように。第１の実施の形態を適用した撮像装置のキャリブレーション方法を用いることで、既知のパターンが描画された平面パターンなどを用いずに、左右のカメラからえられる画像の対応領域間が一致するようにカメラパラメータを求めることで、キャリブレーションを行うことができる。ただし、キャリブレーション用の既知のパターンを用いても良いことは言うまでもない。従来の手法では、特徴点を検出してキャリブレーションしていたため、特徴点の検出誤差によりキャリブレーション結果にも誤差が発生していた。
【０１１５】
本発明は、画像を直接比較するため、従来の手法よりも精度良くパラメータを求めることができる。
【０１１６】
また、第１の実施の形態を適用した撮像装置のキャリブレーション方法を用いることで、工場出荷時以外に、車両に搭載し道路を走行中、建物に監視カメラとして取り付けた後などの環境でも、キャリブレーションを行うことができる。振動や温度変化，衝撃などが原因で、カメラの外部パラメータ等がずれた場合でも、再度キャリブレーションを行うことができるといった利点もある。設置場所は、車両や建物以外でも、カメラ間の視野が重複している画像が撮像できる環境であれば、本実施の形態を適用できることは明らかである。
【０１１７】
さらに、第１の実施の形態を適用した撮像装置のキャリブレーション方法では、距離の異なる複数の対応領域を対応領域算出部で求めキャリブレーション処理を実施することで、近距離，遠距離を撮像した場合どちらにおいてもエピポーラ線が平行になるようにカメラパラメータを精度良く求めることができる。
【０１１８】
また、平面パターン上の特徴点を検出し、その特徴点を用いてキャリブレーションを行う従来の方法では、特徴点の検出時に誤差が発生するといった問題があったが、本実施の形態では特徴点の検出は行わず、直接画像を比較することでカメラパラメータを求めるため、精度良くカメラパラメータを求めることができる。さらに、対応領域算出部２３が、対応領域内に距離の近い画像が多く含まれるように対応領域を求めると、エピポーラ線を平行化した際に対応領域間の画像がより一致するため精度良くカメラパラメータを求めることができる。また、ある瞬間に撮像された画像のみではなく、複数の異なるタイミングで撮像した画像を用いてキャリブレーションを行えば、より多くの対応領域を利用することができるため、より精度良くキャリブレーション結果を得ることができる。
【０１１９】
以上までに述べた方法は、カメラを２台用いるステレオカメラに関して説明したが、カメラが３台以上存在する場合でも視野が重複していれば本実施の形態を適用することができるのは明らかである。また、カメラが１台であっても撮像する位置等が異なる画像を、例えば異なるタイミングで撮像した画像を用いれば本実施の形態を適用することができる。
【０１２０】
また、少なくとも１台のカメラの内部パラメータ，歪みパラメータ等のすべてを、あるいはその一部を、事前に別の方法（例えば、非特許文献１の方法）によって事前に求めておき、その他のカメラの内部パラメータ，歪みパラメータ，外部パラメータを求めることで、事前にカメラパラメータを求めたカメラの画像を基準として、他のカメラの内部パラメータ，歪みパラメータ等を求めることができる。
【０１２１】
また、内部パラメータ，歪みパラメータ，外部パラメータを求める代わりに、画像の拡大，回転，並行移動に関するパラメータなど、カメラパラメータによる画像補正の近似的な変換が可能なパラメータ、カメラパラメータから変換可能なパラメータを用いても良い。
【０１２２】
さらに、以上までに述べた方法は、画像の輝度値を用いて一致度算出部２４で一致度を算出したが、輝度値の代わりに輝度の変化量，カラー情報，カラーの変化量，輝度のヒストグラムなど画像から得られる各種特徴量などを用いても良い。
【０１２３】
また、カメラユニット１がディスプレイ，マウス，キーボード，タッチパネル等の入力装置を具備し、入力装置を用いてユーザが例えば人の領域や車の領域を指定する構成でも良く、人手で対応領域算出部で用いる領域を指定することで、異なった距離の画素が多く含まれる領域を除外することができ、キャリブレーションの精度が向上する等の効果がある。
【０１２４】
第１の実施の形態では、画像を平行化するレクティフィケーション処理後の画像で、対応領域が一致するようにカメラパラメータを求めたが、例えば左右のカメラの視点が同一になるような画像変換処理後の画像を用いても良い。
【０１２５】
（第２の実施の形態）
第２の実施の形態について、図面を参照して詳細に説明する。
【０１２６】
なお、第２の実施の形態に拘わるキャリブレーション方法の構成について、上述した第１の実施の形態と同様の構成については図中同一の符号を付して、重複した説明は省略する。
【０１２７】
第２の実施の形態では、図５に示すように撮像装置であるカメラユニット１に加え、コントロールユニット２とからなる車載システム３で構成されている。カメラ４ａ，４ｂは、車両に取り付けて前方を撮像するように取り付けられている例について説明するが、必ずしも車両である必要はなく、建物等に取り付けても良い。
【０１２８】
カメラユニット１は、第１の実施の形態と同一である。また、コントロールユニット２はＣＰＵ１２，ＲＡＭ１１，プログラムＲＯＭ１４，データＲＯＭ１３とから構成されている。そして、車載システム３では、このカメラユニット１とコントロールユニット２が接続されており、さらに車室内に設置されて各種画像および各種情報を表示するためのディスプレイ１５と、自車が障害物に衝突する危険性が高い場合などに警告音声を発生する、あるいはナビゲーションの音声案内等を発生するスピーカー１９と、エンジンを始動する際にＯＮとなるイグニッションスイッチ３１が接続されており、ディスプレイ１５の表示制御をはじめとして当該車載システム全体の動作をコントロールユニット２が制御する構成となっている。
【０１２９】
本実施の形態は、図１０の画像処理装置に示す機能ブロック図のように図１の第１の実施の形態に比べ、画像補正部２２と対応領域算出部２３の間に、視差算出部２７を設け、さらに視差算出部２７の次に画像認識部２８を具備することを特徴とする。
【０１３０】
本発明に係る撮像装置のキャリブレーション方法は、図５に示すような車載システム３に適用されて、カメラユニット１が備える車載カメラ４ａ，４ｂにより車両周囲の環境を認識する機能を実現する。このとき、車載カメラは３つ以上備えていても良い。あるいは、カメラが１台であっても撮像する位置等が異なる画像を、例えば異なるタイミングで撮像した画像を用いても良い。また、車載カメラ４ａ，４ｂとは別体のコントロールユニットが車載カメラ４ａ，４ｂから画像を取り込んで処理し、処理領域を車載カメラ４ａ，４ｂに設定する構成でも良い。
【０１３１】
図５に示すカメラユニット１は車両に搭載されて図５に示す車載システム３に適用される。このシステムは、例えば、車載カメラユニット１が自車両の前方に存在する障害物等を検出し、コントロールユニット２の制御の基で、検出結果に基づいて車両を制御、あるいは乗員に危険を報知するための装置である。
【０１３２】
カメラユニット１では、プログラムＲＯＭ１０に障害物等を検知する画像処理プログラムとキャリブレーションプログラムが格納されており、ＣＰＵ６がこれらのプログラムを実行することで、障害物等を検知する機能および撮像装置のキャリブレーション機能が実現されるようになっている。
【０１３３】
また、この車載カメラユニット１は、車速センサ１７，ハンドル角センサ１６，リバーススイッチ１８の情報をコントロールユニット２から受信できる構成になっている。図示しないヨーレートセンサや、ジャイロセンサ，ＧＰＳセンサ，地図データベースなどから車両の動きや位置に関する信号を受信できる構成にしても良い。
【０１３４】
さらに、エンジンを始動すると画像処理プログラムとキャリブレーションプログラムが実行され、カメラユニット１が図１０の画像処理装置の機能ブロック図のように補正データ読み込み部２１，画像補正部２２，視差算出部２７，画像認識部２８，対応領域算出部２３，一致度算出部２４，カメラパラメータ算出部２５，補正データ格納部２６として機能するようになっている。
【０１３５】
補正データ読み込み部２１，画像補正部２２，対応領域算出部２３，一致度算出部２４，カメラパラメータ算出部２５，補正データ格納部２６は、第一の実施の形態と同様の機能を有するものである。
【０１３６】
視差算出部２７は、画像補正部２２で補正された左右の撮像素子であるカメラから得られる画像の見え方の差（視差情報）を算出する機能を有するものである。
【０１３７】
画像認識部２８は、視差算出部２７から得られる視差情報、カメラ４ａ，４ｂから得られる画像、カメラ４ａ，４ｂから取得し画像補正部２２で補正した画像の少なくともいずれかを用いて障害物等（歩行者，動物，車両，家や工場や病院などの建造物、電柱やガードレールなどの構造物等）を検出する機能，画像の視点変更等の画像処理機能などの機能を有するものである。
【０１３８】
ここで、以上のような車載システム３において、撮像装置のキャリブレーション処理、および画像処理の流れをフローチャートを参照しながら説明する。
【０１３９】
この図５に示す一連の処理は、イグニッションスイッチがオンとなったときにスタートし、イグニッションスイッチがオフとなるまで繰り返し行われる。例えば、自車両が走行中であるか停止中であるか、また、ディスプレイ１５に表示されている画像がナビゲーションシステムの走行経路案内画像かその他の映像であるかに拘わらずプログラムは実行される。
【０１４０】
以下では、ステップ１０２，ステップ１０６，ステップ１０８，ステップ１０９、およびステップ１１３からステップ１１８の個々の処理について図１３に示すフローチャートに沿って説明する。
【０１４１】
ステップ１０２では、車載システム３のハンドル角センサ１６，車速センサ１７，リバーススイッチ１８等から得られる情報を用いてキャリブレーションのタイミングを判定する。例えば、ハンドル角センサ１６から得られる値が所定値以下の場合にキャリブレーションタイミングと判定する。これは、車両が旋回中に生じる画像のぶれによるキャリブレーション精度の低下を防止することができる。
【０１４２】
また、車速センサ１７等から得られる自車の速度が、所定値以下（あるいは所定値以上）の場合にキャリブレーションタイミングと判定する。これは、例えば車両が停車中に画像処理を停止して、キャリブレーションのみを実行することができる。
【０１４３】
または、自車の速度が所定値以上のときにキャリブレーションを実行タイミングと判定すれば、高速道路など見通しの良い道路でキャリブレーションを実行することができる。リバーススイッチ１８から得られる情報を用いれば、車両が後退時に画像処理を停止して、キャリブレーションのみを実行することができる。これらのキャリブレーションタイミング判定は、一例であり図示しないヨーレートセンサ，ジャイロセンサ，レーダ，カーナビゲーションや地図データベース，照度センサ，雨滴センサ等から得られる情報を用いて判定しても良い。ヨーレートセンサ，ジャイロセンサを用いれば、ハンドル角センサ１６を用いた場合と同様の判定をすることができる。レーダを用いると、自車前方の近距離に車両等の物体が存在しない場合を、キャリブレーションタイミングとして判定することができる。
【０１４４】
カーナビゲーションや地図データベースを用いれば、自車が見通しの良い道路を走行中か、走行の方角、時間帯から逆光となっていないかといった判定ができる。照度センサは、ヘッドライトのＯＮ，ＯＦＦを制御するためのものであり、昼か夜といった周囲の明るさを検知することができるため、明るさが所定値以上の場合のみをキャリブレーションタイミングと判定できる。雨滴センサは、ワイパーを自動制御するためのものであり、フロントガラスに付いた水滴を検知することができるため、フロントに水滴が付いていない場合をキャリブレーションタイミングと判定できる。
【０１４５】
そして、ステップ１０３でキャリブレーションを実行するタイミングであればステップ１１３に移行し、キャリブレーションを実行するタイミングでなければキャリブレーションタイミング判定の処理を繰り返す。
【０１４６】
キャリブレーションのタイミングと判定された場合は、キャリブレーション用の画像をＲＡＭ９などにコピーする（ステップ１１３）。キャリブレーション用の画像を複写、コピーすることで、同一の画像を用いてキャリブレーション処理を行うことができるとともに、並行して画像処理を実行することができるため、キャリブレーション処理と画像処理をマルチタスクとして実行し、例えば画像処理は一定周期で処理を繰り返し、画像処理で余った時間をキャリブレーション処理に割り当てることができる。
【０１４７】
また、ステップ１１５，ステップ１１６は、ステップ１０４，ステップ１０５と同様な処理を行う。
【０１４８】
ステップ１１４，ステップ１１７では、左右のカメラの見え方の差（視差）を求める処理を行う。例えば、右画像に８×８などの小領域を設定し、その小領域に対応する領域を左画像のエピポーラ線上を探索、あるいは左画像上を２次元探索することで検出して、各小領域毎の視差を求める処理である。この視差算出は、公知の技術によって実現できる。
対応領域算出処理（ステップ１０６）では、例えば右側の白線と左側の白線を対応する領域として検出する。白線などのレーンマーク等の路面標示以外にガードレールや縁石などの平行なパターンからなる構造物の端点を対応領域として検出しても良い。
【０１４９】
そして、一致度の算出処理（ステップ１０８）では、対応領域間の幅を求め、その幅から一致度を求める。
【０１５０】
図１１に、レーンマークの対応領域の検出結果（図１１（ａ））と、平行パターンの幅とパラメータのずれの関係（図１１（ｂ））を示す。
【０１５１】
本実施の形態では、Ｙ軸まわりの回転パラメータを求めることができる。さらに、平行パターンの幅が既知であれば、カメラ間の距離や、内部パラメータの横方向の拡大率，縦方向の拡大率を求めることができる。これは、前記パラメータが最適値（パラメータずれ無し）からずれている場合は、算出した視差に距離に関わらず一定の誤差が発生する。例えば、距離ｄ１のときの視差が６４（近距離）であった場合に誤差２画素が発生すると視差算出処理（ステップ１１４）で求めた視差は６６となり、また距離ｄ２のときの視差が４（遠距離）であった場合にも誤差２画素が発生すると視差算出処理（ステップ１１４）で求めた視差は６となるため、式（２）を用いて視差から距離を求めると遠距離ほど誤差２画素の影響が大きくなる（図１１（ｂ））。
【０１５２】
そこで、ステップ１０８では、例えば図１２のように、複数の距離のレーンマークの幅のＧ個の実測値（Ｗ(１；ａ)，Ｗ(２；ａ)，・・・，Ｗ(Ｇ；ａ)）と、パラメータずれが無い場合のレーンマークの幅Ｗｍとの差の総和，差の二乗の総和などを一致度として求める。パラメータずれが無い場合のレーンマークの幅は、カーナビゲーション等から取得するか、予めプログラム内に定義するか、データＲＯＭ７に保存しておいた値を用いても良い。
【０１５３】
平行パターンの幅を既知とすることで内部パラメータのうち横方向の拡大率と縦方向の拡大率を正確に求めることができる。または複数の距離のレーンマークの幅の実測値から、平均値，最大値，最小値といった値を求め、その実測値から求めた値をパラメータずれが無い場合のレーンマークの幅として用いても良く、あるいはある基準の距離のレーンマークの幅の実測値をパラメータずれが無い場合のレーンマークの幅として用いても良い。
そのパラメータずれが無い場合のレーンマークの幅と実測値との差の総和，差の二乗の総和などを一致度とする構成であっても良い。一致度の一例を式（２９）に示す。
【０１５４】
【数２９】
0005588812.tif 000030
【０１５５】
また、Ｗｍは、パラメータずれが無い場合の平行パターンの幅やそれぞれの対応領域からもとめた平行パターンの幅の平均値，最大値，最小値等の値である。つまり、
カメラパラメータの算出（ステップ１０９）では、前述の一致度が小さくなる（一致度の指標によっては大きくなる）ようにカメラパラメータを求める。このとき、パラメータずれが無い場合のレーンマークの幅が得られる場合は、Ｘ軸方向の平行移動パラメータも求めることができる。
【０１５６】
例えば、ａはｔｘとｄｃから成るとすると、式（３０）を満たすｔｘ、ｄｃを求めればよい。
【０１５７】
【数３０】
0005588812.tif 000031
【０１５８】
その後ステップ１１２では、キャリブレーション終了の判定を行い、一致度が所定の値よりも小さい（あるいは大きい）場合はキャリブレーションを終了する。または、キャリブレーション処理を所定回数実行済みであれば、キャリブレーションを終了する。
【０１５９】
このとき、一致度が所定の値よりも大きい（あるいは小さい）場合は、カメラに異常が発生しているか、キャリブレーションが正常に実行できなかったと判定し、カメラを停止してコントロールユニットにカメラが停止している旨の信号を送信しシステムを停止する、スピーカーから音声でドライバに警告音を発する、ディスプレイに警告を表示するといった処理を行う。
【０１６０】
ステップ１１８では、視差算出処理（ステップ１１７）で求めた視差データ、左右カメラから取得した画像データ、左右カメラから取得した画像を画像補正処理（ステップ１１６）で補正した画像データのいずれか少なくとも一つを処理することで、公知の技術により障害物やレーンマーク等を検出する。
【０１６１】
以上説明したように、本実施の形態では、平行パターンの端点を対応領域として検出し、対応領域間の幅の情報を用いてカメラパラメータを求めることができる。平行なパターンの幅を用いることで、平行パターンの一部しか視野に入っていない場合などであってもキャリブレーション処理を実行することができる。また、パターンが平行であれば良く、直線であることは必須の条件では無いといった利点がある。
【０１６２】
平行なパターンは、道路だけでなく室内などでも多く存在するため、本実施の形態は室内等で利用する監視カメラシステムにも利用することができる。室内では、例えば床と壁面の境界線，天井と壁面の境界線，窓枠などの室内に存在する平行パターンを用いればよい。つまり、撮像された画像から検知された、室内に存在する床と壁面の境界線，天井と壁面の境界線，窓枠、の少なくとも１つを含む領域を対象領域として算出しても良い。
【０１６３】
また、キャリブレーションを図１４に示すフローチャートの処理手順で実行すれば、起動時などキャリブレーションが必要な場合に、キャリブレーション処理を優先して実行することができる。例えば、キャリブレーションタイミング判定（ステップ１０２）で、システムの起動時や、温度が大きく変化した場合、前回のキャリブレーション実施から所定時間が経過した場合などにキャリブレーションタイミングと判定する。そして、キャリブレーションタイミングであればキャリブレーションが終了するまで、キャリブレーション処理を実行し、キャリブレーションが終了した後に、画像処理を行う。
【０１６４】
図１４に示す処理を繰り返すことで、キャリブレーションが必要なタイミングで、キャリブレーション処理を優先することができる。キャリブレーション処理を実行している間は、画像処理が停止している旨ディスプレイに表示する、音声等で警告する処理等を実施しても良い。また、本実施の形態は、車両の走行中以外であっても、カメラの製造ライン中の平行なパターン等を用いても良いことは明らかである。
【０１６５】
（第３の実施の形態）
第３の実施の形態について、図面を参照して詳細に説明する。
【０１６６】
なお、第３の実施の形態に拘わるキャリブレーション方法の構成について、上述した第１の実施の形態および第２の実施の形態と同様の構成については図中同一の符号を付して、重複した説明は省略する。
【０１６７】
第３の実施の形態では、対応領域算出部２３が図１８に示すように画像から物体の角などを特徴点として検出し、その検出した特徴点を他の画像からも検出して対応付ける。図１８の例では、車両の左上の角を第３の対応領域として求め、歩行者の手の先を第２の対応領域、第３の対応領域として求めた例であるが、対応領域は３つである必要はない。
【０１６８】
そして一致度算出部は例えば、それぞれの対応領域の画像の垂直方向の座標値の差を用いて一致度を算出する。Ｇ個の対応領域を求めた場合に、Ｇ個の対応領域の縦方向の座標の差を用いて式（３１）により一致度を算出する。例えば第１の対応領域の縦方向の座標の差ｅ1は、図１８の通りである。ただし、縦方向の座標の差を評価関数に用いるか否かは、カメラの設置位置により異なる。
【０１６９】
【数３１】
0005588812.tif 000032
【０１７０】
ただし、ｖR(ｊ；ｐ′)は、カメラパラメータｐ′を用いて画像補正部が右画像を補正した画像中のｊ番目の対応領域の縦方向の座標、ｖL(ｊ；ｑ′)は、カメラパラメータｑ′を用いて画像補正部が左画像を補正した画像中のｊ番目の対応領域の縦方向の座標である。ｐ′，ｑ′は例えば、第１の実施の形態と同様に左右カメラの内部パラメータ，外部パラメータ，歪みパラメータである。式（３１）の一致度が最小になるようにニュートン法，ガウスニュートン法，修正ガウスニュートン法等の公知の最適化手法を用いてｐ′，ｑ′を最適化すれば良い。
【０１７１】
以上までに説明した第１の実施の形態，第２の実施の形態，第３の実施の形態を組み合わせれば、精度良くカメラパラメータ、あるいはカメラパラメータから変換可能なパラメータ、カメラパラメータを近似したパラメータを求めることができ、誤マッチングの少ない視差データ（３次元データ）を得られるだけでなく、誤差の少ない３次元計測が可能となる。
【０１７２】
また、図１５に示すようにカメラパラメータの初期値を算出するステップ１２０をさらに具備すれば、カメラパラメータが最適な値から大きくずれた場合や、設計値が分からない場合であってもキャリブレーションを行うことができる。カメラパラメータの初期値は、キャリブレーション用のパターンを用いる公知の手法などで求めるか、画像中から複数の特徴点を検出し、検出した複数の特徴点に対応する点を他の画像中から検出してその複数の特徴点の対を用いて外部パラメータ等を求めることができる。そして、初期値を用いて画像補正データを作成し（ステップ１２１）し、補正データを格納（ステップ１２２）することで、ステップ１２０で求めた初期値からカメラパラメータの最適値を求めることができる。
【０１７３】
また図１６に示すように、異なったタイミングで撮像した画像を用いることでより多くの対応領域を用いてキャリブレーションを行うことができ、キャリブレーションの精度を向上させることができる。例えば、時刻ｔに撮像した画像に加え、時刻ｔ−１に撮像した画像を用いる。また、時刻ｔ−１に画像処理により検出した歩行者，車両等の領域を用いて、テンプレートマッチング等の公知の技術により時刻ｔの対応領域算出に用いる領域を求めても良い。さらに、画像処理とキャリブレーションを処理する際に、図１７に示すようにキャリブレーション処理をＮ回に分割し、処理周期のうち、画像処理を実施後に余った時間でキャリブレーション処理を実行することで、処理周期が低下することを防止することができる。
【符号の説明】
【０１７４】
１  カメラユニット
４ａ，４ｂ  カメラ
６  ＣＰＵ
７  データＲＯＭ
９  ＲＡＭ
１０  プログラムＲＯＭ
２１  補正データ読み込み部
２２  画像補正部
２３  対応領域算出部
２４  一致度算出部
２５  カメラパラメータ算出部
２６  補正データ格納部
【図１】
0005588812.tif 000033
【図２】
0005588812.tif 000034
【図３】
0005588812.tif 000035
【図４】
0005588812.tif 000036
【図５】
0005588812.tif 000037
【図６】
0005588812.tif 000038
【図７】
0005588812.tif 000039
【図８】
0005588812.tif 000040
【図９】
0005588812.tif 000041
【図１０】
0005588812.tif 000042
【図１１】
0005588812.tif 000043
【図１２】
0005588812.tif 000044
【図１３】
0005588812.tif 000045
【図１４】
0005588812.tif 000046
【図１５】
0005588812.tif 000047
【図１６】
0005588812.tif 000048
【図１７】
0005588812.tif 000049
【図１８】
0005588812.tif 000050