以下、本発明の各実施形態について、図面を参照して説明する。
(第1の実施形態)
本発明の一実施形態に係る画像処理装置の基本的な構成について説明する。図1は、本実施形態に係る画像処理装置の一構成例を示す図である。
(画像処理装置100の構成)
図1に示すように、画像処理装置100は、画像取得部101、パラメータ取得部102、回転校正部103、ずれ範囲算出部104、及び、ずれ量算出部105、及び、判定部106を備えている。
画像取得部101は、少なくとも2枚の視点画像を取得する。該少なくとも2枚の視点画像は、例えば、ステレオカメラシステムを構成する2台のカメラによって略同時に撮影された2枚の視点画像であってもよい。
パラメータ取得部102は、カメラパラメータ等(カメラパラメータ、及び、撮像距離に関するパラメータ)を取得する。
回転校正部103は、前記少なくとも2枚の画像をカメラパラメータに基づいて回転補正する。
ずれ範囲算出部104は、カメラパラメータに基づき、2枚の画像の並進ずれ範囲を算出する。
ずれ量算出部105は、前記少なくとも2枚の画像間の対応点に基づき、並進ずれ量を算出するずれ量算出部105と、
判定部106は、前記ずれ範囲と前記ずれ量を比較することで、カメラパラメータのずれ判定(カメラパラメータに誤差が生じているか否かの判定)を行う。
なお、前記並進ずれ範囲は、「前記カメラパラメータに基づく三次元測定を一定以上の精度で行うことが可能な前記並進ずれ量の範囲」を示している。
画像処理装置100の各部の処理は、例えば、FPGA(Field Programmable Gate Array)やDSP(Disital Signal Processor)、GPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)、などの電子回路によって実装されてもよい。もしくは、画像処理装置100は、CPU(Central Processing Unit)等のプロセッサがプログラムを実行することにより、上記各部の処理を行ってもよい。
(画像処理装置100の動作)
次に、画像処理装置100の動作について図2を参照しながら説明する。図2は、画像処理装置100の処理の流れを示す図である。
ステップS101において、画像取得部101は、複数(2つ以上)の異なる視点から撮影された複数の視点画像を含む多視点画像データを取得する。
画像取得部101が取得する多視点画像データとしては、例えば、以下のような多視点画像データが挙げられる。
・CMOS(Complementary Metal Oxide Semiconductor)やCCD(Charge Coupled Device)などの撮像素子と、レンズなどの光学部品と、から構成される1つの撮像装置が、平行移動台に乗った状態で平行移動しながら対象物を複数回撮影することによって得る複数の視点画像を含む多視点画像データ
・前記撮像装置を複数具備するように構成した多眼撮像システムが撮影した複数の視点画像を含む多視点画像データ
・1つの撮像素子に対して複数の光学経路を有するように構成されたレンズシステムを取り付けることで多視点画像を撮影できる多眼撮像システムにより撮影された複数の視点画像を含む多視点画像データ
・サイドバイサイドやフレームパッキングなどの多視点画像の保存フォーマットで保存された多視点画像データ
以降では、画像取得部101が取得する多視点画像データが、左右に並べて配置した2台のカメラを備えたステレオカメラシステムにより得られる視点画像データである例を挙げながら、画像処理装置100の動作を説明する。
また、以降では、2台のカメラのうちの左カメラを基準カメラ、2台のカメラのうちの右カメラを参照カメラと呼び、左カメラによって撮影された視点画像のデータを基準画像データ、右カメラによって撮影された視点画像のデータを参照画像データと呼ぶ。また、2台のカメラが並んでいる左右方向を長手方向と呼び、2台のカメラの上下方向を短手方向と呼びながら、画像処理装置100の動作を説明する。
また、左右方向をX軸方向、上下方向をY軸方向、前後方向をZ軸方向として定義づけて説明を行う。ここで、本説明においては、世界座標系の原点および座標軸方向は、基準カメラにおける座標の原点および座標軸系と一致するものとして説明する。
なお、画像取得部101が取得する多視点画像データが、上下に並べて配置した2台のカメラを備えたステレオカメラシステムにより得られる視点画像データである場合における、画像処理装置100の動作については、当業者であれば、以降の説明文における「X軸方向」を「Y軸方向」と、「Y軸方向」を「X軸方向」と読み替えることによって、理解できるであろう。
また、画像取得部101が取得する多視点画像データが3枚以上の視点画像を含む多視点画像データである場合、画像処理装置10は、上記3枚以上の視点画像のうちの1つの視点画像のデータを基準画像データとして取扱い、上記3枚以上の視点画像のうちの残りの各視点画像のデータを参照画像データとして取り扱うことによって、以降で説明する動作と同様の動作を行うことが可能である。
画像取得部101が取得する基準画像データおよび参照画像データは、予めレンズ歪パラメータと内部パラメータが校正された多視点画像撮影システムにより撮影された校正済みの画像(校正画像)のデータであってもよいし、これらのパラメータが校正されていない多視点画像撮影システムにより撮影された校正前の画像のデータであってもよい。
後者の場合においては、画像取得部101または図示していない画像データ処理部が、パラメータ取得部102からレンズ歪パラメータと内部パラメータを受け取り、各パラメータに基づいて基準画像データおよび参照画像データに校正処理を施した後、校正後の各画像データを回転校正部103に送信するようにしても良い。
なお、例えば、上記画像データ処理部は、レンズ歪パラメータと内部パラメータを校正した画像を利用した画像処理を行う場合においては、前者のような校正済みの画像データを読み込むようにすることで、少ない処理負荷で上記画像処理を行うことができる。
ステップS102において、パラメータ取得部102は、カメラパラメータおよび撮像距離に関するパラメータを読み込む。
前記カメラパラメータは、例えば、カメラキャリブレーションによって算出したカメラパラメータ(レンズ歪パラメータ、内部パラメータ、外部パラメータ)、もしくは、計測システムで利用している(補正後の)カメラパラメータ、等である。
前記撮像距離に関するパラメータは、例えば、焦点位置、被写界深度、画像中心の仮距離(仮に算出した距離)、カメラから被写体までの推定距離、前記カメラキャリブレーションを行った距離、等である。
ここで、画像中心の仮距離とは、〔背景技術〕に記載の三次元計測処理によって算出される、画像中心画素における被写体の距離(Z方向の距離)である。なお、画像中心画素は、画像の中心の1画素であっても良い。あるいは、上記仮距離は、画像中心領域における被写体の距離であってもよい。即ち、上記仮距離は、画像の中心と同じ位置を中心とする所定の領域(例えば、縦5画素x横5画素の画像中心領域)に関する計測結果の平均距離でも良い。
また、「前記カメラキャリブレーションを行った距離」は、例えば、前記カメラキャリブレーションにおいて、キャリブレーション用の参照ボードを設置した際のカメラから参照ボードまでの距離であってもよいし、カメラのピント距離であってもよい。
なお、前記多視点画像データおよび前記カメラパラメータは、特定のフォーマットのファイルに含まれていてもよい。例えば、カメラパラメータは、多視点画像の画像ファイルのヘッダ情報として画像ファイル内に含まれていてもよい。画像処理装置100は、図示しないデコード部がこのフォーマットのファイルをデコードし、それぞれのデータを画像取得部101およびパラメータ取得部102が受け取るように構成することができる。
ステップS103において、回転校正部103は、パラメータ取得部102からカメラパラメータを受け取り、このカメラパラメータに基づいて、画像取得部101から受け取った画像データを校正する。
回転校正部103が受け取るカメラパラメータの詳細について説明する。カメラパラメータは、レンズ歪パラメータ、内部パラメータ、外部パラメータに分類することができる。更に、外部パラメータは、回転パラメータと並進パラメータとに分類することができる。回転校正部103は、カメラパラメータの内、外部パラメータ、特に、回転パラメータを受け取る。回転パラメータR、RY、RL、RRは、次の式(式3)によって示される。
Rは、基準カメラのカメラ座標系における座標(基準カメラ座標)から参照カメラのカメラ座標系における座標(参照カメラ座標)への回転変換行列に相当する。RYは、基準カメラのカメラ座標系のXY平面と参照カメラのカメラ座標系のXY平面とを互いに平行にするための回転パラメータであって、参照カメラのカメラ座標系のXY平面をY軸方向にαラジアン回転させることを示す。RLおよびRRは、それぞれ基準画像データに対する回転パラメータ、参照画像データに対する回転パラメータである。回転校正前の座標データ(回転校正前の画像上のある位置を示す座標データ)と回転校正後の座標データ(回転校正後の画像上の同じ位置を示す座標データ)との関係を示す式(式4)を以下に示す。
(XL、YL、ZL)は、校正前の基準カメラ座標、(XL’、YL’、ZL’)は、校正後の基準カメラ座標、(XR、YR、ZR)は、校正前の参照カメラ座標、(XR’、YR’、ZR’)は、校正後の参照カメラ座標をそれぞれ示している。回転校正部103は、上記の式(式4)を用いて画像変換処理を実行することによって、回転校正した画像を得ることができる。
なお、Y軸方向の回転ずれを無視できる場合、式3においてα=0となるため、基準カメラ座標値は、(XL’、YL’、ZL’)=(XL、YL、ZL)となり、行列計算を省略することができる。
回転校正した画像の概念について、図3に基づいて説明する。
図3の(a)は、校正前の基準画像および参照画像の関係を示す一例である。図3の(b)は、従来行われている一般的な平行化処理後の基準画像と参照画像との関係を示す一例である。図3の(c)は、回転校正部103によって生成される基準画像と参照画像との関係を示す一例である。
一般的なステレオカメラを用いた計測システムにおいては、画像間のブロックマッチング処理における計算量削減を図るため、図3の(b)に示すように、基準画像と参照画像とに平行化処理を施す。平行化処理後においては、基準画像と参照画像との間の回転ずれおよび並進ずれが校正される。即ち、ステレオカメラシステムが左右に配置された2つのカメラを備えている場合、平行化処理後の2つの画像は、Y軸方向の回転ずれがない状態の2つのカメラであってX軸方向に基線長分(距離Bだけ)だけ離れている2つのカメラによって撮影された2つの画像に相当する。これにより、視差算出のためのブロックマッチング処理における探索方向はX軸方向に限定することができる。
一方、本実施形態においては、回転校正部103は、図3の(c)に示すように、回転パラメータのみを校正するので、回転校正部103が生成する2つの画像は、Y軸方向の回転ずれがない状態の2つのカメラであって、X軸方向にBxだけ離れ、Y軸方向にByだけ離れた2つのカメラによって撮影された2つの画像に相当する。即ち、回転校正部103は、回転パラメータに応じた回転ずれが校正され、並進パラメータに応じたずれ量(Bx、By)の並進ずれが校正されていない2つの校正画像を生成する。ここで、Bxは上記2つのカメラの長手方向の並進ずれ量(長基線長)を示し、Byは、上記2つのカメラの短手方向の並進ずれ量(短基線長)を示す。BxおよびByは、並進パラメータ(tx、ty、tz)に基づき、以下の式(式5)によって算出される。
ステップS104において、ずれ範囲算出部104は、パラメータ取得部102から、カメラパラメータと撮像距離に関するパラメータと、を受け取り、これらのパラメータを参照して、2つの画像における並進ずれ範囲を算出する。
ずれ範囲Sx1_near、Sx1_far、Sy1_near、Sy1_far、は、以下の式(式6)によって算出される。
ここで、fは内部パラメータとして算出される焦点距離、Lnearは基準撮影範囲の近点距離、Lfarは基準撮影範囲の遠点距離、Bx、Byは式5によって算出される並進ずれ量である。式6における各パラメータの関係は図4に示す通りである。基準カメラの座標中心107から参照カメラの座標中心108のX軸方向の距離がBx、同Y軸方向の距離がByとなる。基準撮影距離LnearおよびLfarは、基準カメラ座標から、それぞれ基準撮影距離近点109、基準撮影距離遠点110までのZ軸方向の距離であって、前記撮像距離に関するパラメータから設定される。以上のように、パラメータの相似関係を利用することで、ずれ範囲Sx1_near、Sx1_far、Sy1_near、Sy1_farは算出される。ずれ範囲は、X軸方向のずれ範囲と、Y軸方向のずれ範囲と、に分解される。Sx1_nearからSx1_farまでの範囲がX軸方向のずれ範囲、Sy1_nearからSy1_farまでの範囲がY軸方向のずれ範囲となる。
前述の通り、LnearよびLfarは、前記撮像距離に関するパラメータであって、例えば、被写界深度、画像中心の仮距離(仮に算出した距離)、カメラから被写体までの推定距離、前記カメラキャリブレーション距離の各パラメータが、近点に関するパラメータと遠点に関するパラメータとの2つのパラメータから構成されていてもよい。ずれ範囲算出部104は、前記撮像距離に関するパラメータとして、上記の全ての対について、当該対を成す2つのパラメータを読み込んでもよいし、上記のうちの任意の対について、当該対を成す2つのパラメータを読み込んでもよい。
以上の説明においては、近点に関するパラメータと遠点に関するパラメータとの2つのパラメータを読み込む構成について説明したが、例えば、ずれ範囲算出部104は、基準撮影距離L=Lnear=Lfarと見做して、前記撮像距離に関するパラメータ群の中からただ1つのパラメータを読み込むように構成されていてもよい。また、後述するずれ量算出部105によって算出されるずれ量Sx2を用いて、基準撮影距離L=Sxとすることもできる。このようにただ1つのパラメータを読み込む場合、ずれ範囲算出部104は、式6の代わりに以下の式(式7)を用いて、ずれ範囲の代わりに、ずれ距離を求めてもよい。
ここで、Sx1、Sy1は、ずれ距離である。
ステップS105において、ずれ量算出部105は、回転校正処理が施された基準画像データおよび参照画像データを受け取り、長手方向および短手方向の位置ずれの量を検出し、検出したずれ量を判定部106に送る。
ずれ量算出部105は、基準画像上の任意の基準点に対する、参照画像上の「当該基準点に対応する対応点」のX軸方向およびY軸方向のずれ量(Sx2,Sy2)を検出する。ここで、Sx2は画像上のX軸方向へのずれ量、Sy2は画像上のY軸方向へのずれ量を示す。すなわち、これらのずれ量は、上下方向の視差量および左右方向の視差量として検出される。ずれ量は、一般的なステレオ画像における視差算出手段と同様に、例えばブロックマッチングを利用した方法で算出される。ブロックマッチングでは、前記基準画像における基準点とその周辺画素からなるテンプレートを生成し、もう一方の参照画像上でマッチング位置の探索を行うことによって、それぞれの方向に対するずれを算出する。マッチングの評価には、例えば、SAD(Sum of Absolute Difference)やSSD(Sum of Squared Difference)、ZNCC(Zero−mean Normalized Cross−Correlation)などを利用してもよい。なお、ブロックマッチングにおいては2つの画像間のずれ量が算出される。そのため、前述の式2に基づいて、2つの画像間のずれ量(画像座標系におけるずれ量)をカメラ座標系におけるずれ量に変換する。
ここで、基準点について説明する。任意の基準点は少なくとも1点以上が選択される。例えば、基準画像の中心領域に属し、かつ、基準画像上で予め決められた領域に属する範囲内の、エッジ強度が所定の閾値よりも大きい1以上の点、などが基準点として選択される。なお、エッジ強度は、例えば、Sobelフィルタ、Prewitフィルタ、DoG(Difference of Gaussian)の出力値等を利用して算出されてもよい。
任意の基準点の他の指定方法として、例えば、ステレオカメラシステムを備えた画像処理装置100を固定して使用する場合には、予め撮影された背景画像(背景の像を含み、被写体の像を含まない画像)と、基準画像(当該背景の像の一部と被写体の像とを含む画像)とから定まる特定の領域(2つの画像間の画素値の差分が0ではない領域)内における、エッジ強度が所定の閾値よりも大きい1以上の点を設定することもできる。この方法は、背景がエッジを検出できないような平面であるような画像上の基準点や、全体が被写体の像に覆われるような画像上の基準点を決める場合などに有用である。さらに、このような画像処理装置100を計測装置として使用する場合には、計測する点を基準点とすることができる。もしくは、画像処理装置100は、カメラパラメータの誤差を検出する動作をユーザ操作に従って実行する場合には、画像内の特定のマーカーパターン(市松模様や任意の色)を検出し、該マーカーパターンが存在する領域内の任意の点を基準点として利用してもよいし、ユーザによって指定された画像上の任意の点を、基準点として利用してもよい。
任意の基準点として複数点選択した場合は、ずれ量算出部105は、複数の基準点の各々について、当該基準点に対する、前述の「当該基準点に対応する対応点」のずれ量を算出してもよい。そして、ずれ量算出部105は、算出した複数のずれ量に基づいて、ずれ量の代表値を決定してもよい。例えば、ずれ量算出部105は、ずれ量の代表値として、前記複数のずれ量の平均値や中央値などの統計値を利用するようにしても良いし、前記複数のずれ量のうちの、最もエッジ強度の大きい基準点に対する、「当該基準点に対応する対応点」のずれ量を、ずれ量の代表値に決定してもよい。
ここで、画像処理装置100は、LnearおよびLfarを、カメラからZ軸方向にLnearおよびLfarだけ進んだ位置が画像撮像装置の被写界深度の範囲内に含まれるように、設定することが望ましい。エッジ強度に基づいて基準点を検出すると、基準撮影距離の範囲内の計測点を検出する確率が高まるからである。なお、例えば、全ての基準点におけるエッジ強度が所定の閾値を超えなかった場合、基準点が基準撮影距離の範囲内において検出できなかったと判定し、後段の判定処理を行わないようにしても良い。
また、ステレオカメラシステムを用いた計測システムに画像処理装置100を利用する場合、LnearおよびLfarの値を、それぞれ、カメラから計測システムが想定する計測範囲の近点までの距離を示す値、および、カメラから該計測範囲の遠点までの距離を示す値とし、任意の計測点を基準点として利用するように画像処理装置100を構成することもできる。
撮影範囲が限られる場合(例えば、カメラからの距離が1〜5mの範囲しか画角内に収まらない場合)においては、Lnearの値を1mに設定するとともに、Lfarの値を5mに設定し(即ち、LnearおよびLfarに、それぞれ、カメラから撮影範囲の近点までの距離を示す値、および、カメラから撮影範囲の遠点までの距離を示す値を割り当て)、撮影された被写体上の任意の点を基準点として設定するように構成することもできる。
更には、工場などのライン検査システムに画像処理装置100を利用する場合、画像内のおける、部品などの動被写体の映り込む範囲が分かるため、LnearとLfarの設定値を限定できる。たとえば、検査システムをラインの400mm上方に設置し、ライン上を通過する部品のサイズが10mmである場合、Lnearを390mm、Lfarを400mmのように設定し、部品上の点を基準点として設定するように構成することもできる。
このように、LnearおよびLfarの値を対象物の大きさに応じた値とすることにより、算出されるずれ範囲が実際の対象物の大きさを元にした範囲となる。そのため、このような基準点の設定方法は、カメラパラメータの誤差を小さくすることができる好適な設定方法であると言える。
以上の通り、ステップS103およびステップS104によって、カメラパラメータによって推定されるずれ範囲と、回転校正後の2つの撮影画像に関するずれ量と、が算出されることとなる。
ステップS106において、判定部106は、ずれ範囲算出部104からずれ範囲を受け取るとともに、ずれ量算出部105からずれ量を受け取り、ずれ判定を行う。具体的には、判定部106は、以下の各式(式8および式9)に示す判定式に基づいて、ずれ判定を行う。
ここで、Sx1_near、Sx1_far、Sy1_near、及び、Sy1_farは、ステップS104において算出されたX軸方向およびY軸方向のずれ範囲を示す値であり、Sx2、及び、Sy2は、ステップS105において検出されたX軸方向およびY軸方向のずれ量を示す値であり、THx_far、THx_near、THy_far、THy_nearは、任意の閾値である。
すなわち、基準撮影距離範囲のずれ量(Sx1_near、Sx1_far、Sy1_near、Sy1_far)と任意の閾値(THx_far、THx_near、THy_far、THy_near)に基づいて、画像に基づくずれ量Sx2、Sy2の判定を行う。なお、任意の閾値(THx_far、THx_near、THy_far、THy_near)は、THx_farとTHx_nearとが異なり、且つ、THy_farとTHy_nearとが異なるように設定しても、THx_far=THx_near、THy_far=THy_nearとなるように設定しても良い。
上記の式8および式9の何れも成り立つ場合において、判定部106は、「カメラパラメータに誤差が生じていない」と判定する。一方、そうでない場合において、判定部106は、「カメラパラメータに誤差が生じている」と判定し、判定結果を示す値を出力する。なお、例えば、「カメラパラメータに誤差が生じていない」との判定結果を示す値はフラグ値0であり、「カメラパラメータがずれている」との判定結果を示す値はフラグ値1であってもよい。フラグ値は、例えば、他の処理部で処理を行うためのバイナリデータとして出力しても良い。
あるいは、判定部106は、「カメラパラメータに誤差が生じていない」と判定した場合には電子回路(判定部106)の出力電圧のレベルがHighになり、「カメラパラメータに誤差が生じている」と判定した場合には電子回路(判定部106)の出力電圧のレベルがLowとなるように構成されていてもよい。
あるいは、ステップS106において、判定部106は、ずれ範囲算出部104から式7によって算出されるずれ距離を受け取った場合においては、以下の各式(式10および式11)に示す判定式に基づいて、ずれ判定を行ってもよい。
ここで、Sx1及びSy1は、それぞれ、ステップS104において算出されたX軸方向およびY軸方向のずれ距離を示す値、Sx2及びSy2は、それぞれ、ステップS105において検出されたX軸方向およびY軸方向のずれ量を示す値である。また、THx_far、THx_near、THy_far、THy_nearは、任意の閾値である。すなわち、式7によって算出されたずれ距離(Sx1、Sy1)と任意の閾値(THx_far、THx_near、THy_far、THy_near)に基づいて、画像に基づくずれ量Sx2、Sy2の判定を行う。
式10および式11の何れも成り立つ場合において、判定部106は、「カメラパラメータに誤差が生じていない」と判定する。一方、そうでない場合において、判定部106は、「カメラパラメータに誤差が生じている」と判定し、判定結果を示す値を出力する。なお、例えば、「カメラパラメータに誤差が生じていない」との判定結果を示す値はフラグ値0であり、「カメラパラメータがずれている」との判定結果を示す値はフラグ値1であってもよい。
ずれ範囲算出部104と、ずれ量算出部105と、判定部106とは、図1に示すように、それぞれ別個の処理部として画像処理装置100に設けられていてもよいが、図5に示すように、以上の3つの処理部を1つのずれ判定部111として構成することもできる。ずれ判定部111は、ずれ範囲算出部104と同様の処理によってずれ範囲を算出し、当該ずれ範囲についてずれ量算出部105と同様にブロックマッチングを行い、ブロックマッチングによって算出される類似度の最大値が所定の値を超えなかった場合において、パラメータがずれていると判定する。
以上の処理によって、画像処理装置100は、ずれ範囲算出部104およびずれ量算出部105のずれ算出結果や、判定部106のフラグ値を外部に出力することができる。
また、図6に示すように、画像処理装置100は、画像撮像装置112の一部として構成することができる。
画像撮像装置112は、図6に示すように、前記画像処理装置100と、少なくとも2つの画像を撮像する撮像部113と、カメラパラメータや画像処理結果などを保持するデータ保持部114と、前記画像処理結果などをユーザに提示する情報提示部115と、各ユニット間でやりとりされるデータが通過するデータバス116と、を備える。
撮像部113は、複数(2つ以上)の異なる視点から見た様子を示す複数の視野画像を撮像する撮像装置である。撮像部113は、例えば、CMOS(Complementary Metal Oxide Semiconductor)やCCD(Charge Coupled Device)などの撮像素子と、レンズなどの光学部品と、から構成される撮像装置であってもよい。
この場合、撮像部113は、平行移動台に乗った状態で平行移動しながら対象物を複数回撮影してもよい。
あるいは、撮像部113は、前記撮像装置を複数具備するように構成した多眼撮像システムであってもよい。
あるいは、撮像部113は、1つの撮像素子に対して複数の光学経路を有するように構成されたレンズシステムを取り付けることで多視点画像を撮影できる多眼撮像システムであってもよい。
データ保持部114は、例えば、HDD(Hard Disk Drive)、SSD(SolidState Drive)、などの記憶装置によって構成される。
データ保持部114は、画像処理装置100により読み込まれる、カメラパラメータ、撮像距離に関するパラメータ、画像処理装置100による画像処理の結果を示すデータ(フラグ値等)、撮像部113によって撮影された画像などのデータを保持する。
情報提示部115は、例えば、LED(Light Emitting Diode)などの発光部であって、判定部106による判定結果に応じた発光制御を行う発光部である。情報提示部115は、例えば、判定部106がフラグ値0を出力した場合には発光せず、判定部106がフラグ値1を出力した場合には発光することにより、ユーザに判定結果を通知できる。あるいは、情報提示部115は、例えば、LCD(Liguid Crystal Display)やOLED(Organic Light Emitting Diode)などの表示部に、前記フラグ値に応じた、テキストや画像による警告メッセージを表示することもできる。また、情報提示部115は、例えば、スピーカであって、フラグ値が1の場合(カメラパラメータに誤差が生じている場合)に、警告音を出力することも可能である。
データバス116は、例えば、PCI(Peripheral Component Interconnect)、SCSI(Small Computer System Interface)などのコンピュータ用のバスである。もしくは、各ユニットをイーサネット(登録商標)規格に基づいて接続するための電子線である。
以上のように構成された画像撮像装置112は、カメラパラメータに誤差が生じたことを検出し、ユーザに検出結果を提示することができる。なお、画像撮像装置112は、ずれ判定処理を必ずしも全ての撮影に対して実施する必要はなく、ユーザによって指定された場合にのみ、ずれ判定処理を実施するようにしても良い。
また、本実施形態の誤差検出方法では、既知の対象物だけでなく任意の対象物の撮影時において誤差を検出すること、そして選択する基準点を最小限に抑えることができるという効果がある。
即ち、従来(特許文献1など)の既知の対象物間利用する方法では新たなカメラパラメータを推定するためには、カメラパラメータ推定における未知の変数が8点であるため、2つのカメラ画像間で共通する特徴点を少なくとも4点以上検出しておく必要がある。これに対し、本実施形態の方法では少なくとも1点の基準点を定めるだけで、カメラパラメータの誤差を検出することが可能である。更に、既知の対象物を検出するためには、2つの画像に対して物体認識の処理を施すことが必須となるため、計算量が増大していたが、本実施形態では1つの画像に対して物体認識の処理を施すだけでよく、計算量を抑えることができる。
(付記事項)
回転校正部103は、回転パラメータに応じた回転ずれが校正され、並進パラメータに応じた、長手方向及び短手方向のうちの一方の方向のずれ量の並進ずれが校正され、他方の方向のずれ量(BxまたはBy)が校正されていない2つの校正画像を生成してもよい。
長手方向のずれ量(Bx)が校正されていない2つの校正画像が生成された場合、ずれ範囲算出部104は、式6を用いてずれ範囲Sx1_nearおよびSx1_farを算出し、判定部106は、式8の判定式に従って、ずれ判定を行ってもよい。
あるいは、短手方向のずれ量(By)が校正されていない2つの校正画像が生成された場合、ずれ範囲算出部104は、式6を用いてずれ範囲Sy1_nearおよびSy1_farを算出し、判定部106は、式9の判定式に従って、ずれ判定を行ってもよい。
(第2の実施形態)
第2の実施形態においては、ステレオカメラシステムによる三次元計測処理に、画像処理装置100を適用した例について説明する。なお、本実施形態の説明においては、既述の実施形態と共通する各部の詳細な説明は省略する。
図7は、本実施形態における画像処理装置100が三次元計測処理部200を備えた構成例である。
三次元計測処理部200は、カメラパラメータを補正するカメラパラメータ補正部201と、取得した2つの視野画像を平行化する画像平行化部202と、平行化した2つの視野画像に基づき、視差を算出する視差算出部203と、算出した視差とカメラパラメータとから計測点の三次元座標を算出する三次元座標算出部204と、を備える。
カメラパラメータ補正部201と、画像平行化部202と、視差算出部203と、三次元座標算出部204と、は、例えば、FPGAやDSP、GPU、ASICなどの電子回路によって実装されてもよい。もしくは、三次元計測処理部200は、CPU(Central Processing Unit)等のプロセッサがプログラムを実行することにより、上記各部の処理を行ってもよい。
(三次元計測処理部200の動作)
次に、三次元計測処理部200の動作について図8を参照しながら説明する。図8は、三次元計測処理部200の処理の流れを示す図である。
ステップS201において、カメラパラメータ補正部201は、判定部106からのフラグ値情報を受け取り、判定処理を行う。フラグ値が0の場合、すなわち、カメラパラメータに誤差が生じていない場合(S201:Yes)、ステップS202に進む。フラグ値が1の場合、すなわち、カメラパラメータに誤差が生じている場合(S201:No)、ステップS203に進む。
ステップS202において、カメラパラメータ補正部201は、パラメータ取得部102が取得したカメラパラメータに誤差が生じていないと判断する。図7には示していないデータ保持部から、パラメータ取得部102が取得したカメラパラメータをそのまま読み込み、カメラパラメータを画像平行化部202に送る。
ステップS203において、カメラパラメータ補正部201は、カメラパラメータに誤差が生じていると判断し、カメラパラメータを補正する処理を行い、補正したカメラパラメータを画像平行化部202に送る。カメラパラメータ補正部201は、以下の各式(式12および式13)に基づき、X軸方向の補正量とY軸方向の補正量を算出する。
ここで、CorXおよびCorYは、それぞれX軸方向のカメラパラメータ補正量、Y軸方向のカメラパラメータ補正量である。なお、その他の変数(前述の式8および式9でも用いられている変数)については既に説明済であるので、ここでは、その他の変数についての説明を省略する。
カメラパラメータ補正部201は、データ保持部114から補正前のカメラパラメータを読み込み、パラメータの補正を行う。カメラパラメータ補正部201は、例えば、以下の式(式14)からわかるように、並進パラメータを補正する。
ここで、(tx’、ty’、tz’)は補正後の並進パラメータであり、(tx、ty、tx)は補正前の並進パラメータである。
カメラパラメータ補正部201は、補正後のカメラパラメータと、補正量(補正前の並進パラメータのX成分値txからの補正量であるCorX、及び、補正前の並進パラメータのY成分値tyからの補正量であるCorY)をデータ保持部114に保存する。
カメラパラメータ補正部201は、例えば、補正前のカメラパラメータを補正後のカメラパラメータで上書きしても良いし、補正後のカメラパラメータを、補正前のカメラパラメータとは別に保存するようにしても良い。カメラパラメータ補正部201は、カメラパラメータを上書き保存する場合、補正量(CorX、CorY)の累計量を保存することで、初期のカメラパラメータからの累積のずれ量を確認することができる。
また、カメラパラメータ補正部201は、補正回数を示す値をデータ保持部114に記憶しても良い。即ち、カメラパラメータ補正部201は、カメラパラメータが補正されるごとに補正回数を示す値をインクリメントすることにより、カメラパラメータが補正された回数を示す値を保持してもよい。
なお、カメラキャリブレーションが再度実施された場合(即ち、カメラパラメータが最新のパラメータに更新された場合)には、カメラパラメータ補正部201は、累積ずれ量を示す値、および、補正回数を示す値を0にリセットしてもよい。累積ずれ量を示す値や補正回数を示す値は、情報提示部115を介して、ユーザに提示されてもよい。これにより、ユーザは、提示された情報を通じて、再キャリブレーションの必要性の有無や、補正後のカメラパラメータによって算出された三次元計測結果の信頼性を判断できる。
ステップS204において、画像平行化部202は、画像取得部101から基準画像データおよび参照画像データを受け取るとともに、カメラパラメータ補正部201からカメラパラメータを受け取り、カメラパラメータと基準画像と参照画像とから、2枚の平行化画像を生成する。2枚の平行化画像とは、図3の(b)に示したような、互いに平行化された基準画像および参照画像からなる2枚の画像である。
ステップS205において、視差算出部203は、三次元計測を行う計測点が設定する。視差算出部203は、例えば、基準画像における、参照画像に対応点が存在するような全ての画素からなる範囲(特定範囲)内の全ての点、上記特定範囲内のエッジとして検出される複数の点、上記基準画像における、上記基準画像内に被写体として映っているマーカーを指し示す点などを、計測点として自動的に設定してもよい。
もしくは、三次元計測処理部200がユーザ指定部(図示せず)を備え、ユーザ指定部が、ユーザが指定した任意の点を計測点に設定してもよい。
ステップS206において、視差算出部203は、上記選択された計測点の視差を算出する。視差は例えば、ブロックマッチングによって、算出される。
ステップS207において、三次元座標算出部204は、各計測点の三次元座標を前述の式1に基づいて算出する。ここで算出される三次元座標は、カメラ座標系に基づく三次元座標である。ただし、三次元座標算出部204は、カメラ座標系から他の座標系への座標変換行列を用いることで、カメラ座標系に基づく三次元座標を、他の座標系の三次元計測値に変換することができる。
また、三次元座標算出部204は、他の計測結果と比較するために、計測した三次元計測値は、データ保持部114に保持してもよい。ユーザが、2つの計測点間の距離や対象物の体積を求めたり、対象物に関する現在の計測結果と、当該対象物に関する過去の計測結果とを比較したりすることができるからである。
以上の処理によって、三次元計測処理部200は、各計測点の三次元座標を得ることができる。三次元計測処理部200は、算出した三次元座標およびカメラパラメータの補正情報を、例えば、図9に示すように、情報提示部115に表示する。なお、この場合における情報提示部115は、LCD、OLEDなどのディスプレイ装置である。
情報提示部115に表示される画像205には、撮影画像領域206と、計測結果表示領域207と、カメラパラメータ警告領域208とが、含まれている。なお、図9の例は、三次元計測処理部200が、撮影画像領域206と、計測結果表示領域207と、カメラパラメータ警告領域208を、異なる位置に表示する例を示しているが、三次元計測処理部200は、撮影画像領域206に対して、計測結果表示領域207と、カメラパラメータ警告領域208とを重畳して表示するようにしても良い。
三次元計測処理部200は、撮影画像領域206に、任意の計測対象209が映っている画像を表示する。
三次元計測処理部200は、計測結果表示領域207に、任意の計測対象209の領域のうち計測点となった位置を示す三次元位置情報を表示する。例えば、三次元計測処理部200は、計測結果表示領域207に、カメラから任意の計測対象209までの距離を示す情報を表示する。
三次元計測処理部200は、カメラパラメータ警告領域208に、ステップS203においてデータ保持部114に保存した、補正回数や累積ずれ量等の情報を表示する。
三次元計測処理部200は、補正回数や累積ずれ量を示す数値ではなく、補正回数や累積ずれ量に応じた図形(警告マークなどの図形など)を表示してもよい。例えば、三次元計測処理部200は、補正回数及び/又は累積ずれ量が所定の閾値以上である場合、上記図形を点滅表示(強調表示)してもよい。これにより、ユーザへの注意喚起が成される。
なお、カメラパラメータ警告領域208は、補正回数が0の場合においては、カメラパラメータ警告領域208を表示しないようにしてもよい。
以上の構成によって、三次元計測処理部200は、カメラパラメータに誤差が生じている場合において、補正した(誤差が低減された)カメラパラメータを用いて計測した三次元計測結果を表示するとともに、カメラパラメータを補正した旨を示す情報をユーザに提示することができる。
(第3の実施形態)
第1および第2の実施形態に係る画像処理装置100は、カメラパラメータに誤差が生じていないにも関わらずカメラパラメータのずれ判定処理を行うケースがあり、これらの画像処理装置100には、無駄な処理の量を削減する余地が残っている。
第3の実施形態に係る画像処理装置100は、カメラパラメータのずれ判定処理を実行すべきタイミングを自動で判定して、そのようなタイミングにおいてずれ判定処理を行うようになっている。なお、本実施形態の説明においては、既述の実施形態と共通する各部の詳細な説明は省略する。
図10は、本実施形態に係る画像処理装置が備える三次元計測処理部300の一例である。なお、図10には示していないが、本実施形態に係る画像処理装置は、実施形態2に係る画像処理装置が備える各部を備えている。
三次元計測処理部300は、第2の実施形態に係る三次元計測処理部200と同様に、カメラパラメータ補正部201と、画像平行化部202と、視差算出部203と、三次元座標算出部204と、を備えるとともに、新たに異常値判定部301を備えるように構成されている。
(三次元計測処理部300の動作)
次に、三次元計測処理部300の動作について図11を参照しながら説明する。図11は、三次元計測処理部300の処理の流れを示す図である。
ステップS301において、三次元計測処理部300は、第2の実施形態と同様の工程(S201〜S207)を実行することによって、三次元座標を算出し、算出した三次元座標値を異常値判定部301に送る。
ステップS302において、異常値判定部301は、三次元座標算出部204から受け取った計測結果を示す値と、データ保持部114に記録されている過去の計測結果とを参照し、異常値判定を行う。異常値判定とは、三次元座標算出部204から受け取った計測結果を示す値(測定点の三次元座標値)が異常値であるか否かの判定を意味している。
または、予め形状の分かっている被写体を撮影する場合においては、上記被写体のCAD(Conputer Aided Design)データなどの正解データを受け取り、三次元座標算出部204から受け取った計測結果と正解データとを比較するように、異常値判定をおこなってもよい。
例えば、本実施形態に係る画像処理装置が、工場のライン検査に用いられる場合であって、ラインを流れてくるパーツのサイズなどが既知である場合、異常値判定部301は、当該の既知のサイズと、計測結果が示すサイズと、の差分値を算出し、その差分値が閾値以上になる場合において、異常値判定フラグをONとしてもよい。あるいは、異常値判定部301は、パーツの既知の設置傾きと当該パーツの計測結果が示す設置傾きとの差分値を算出し、その差分値が閾値以上になる場合において、異常値判定フラグをONとするように構成してもよい。
一方、異常値判定部301は、計測結果を示す値が異常値でない場合(差分値が閾値を超えない場合)には、異常値フラグをOFFとしてもよい。
ステップS303において、異常値判定部301は、異常値判定フラグがONであるか否かを判定する。異常値判定部301は、異常値判定フラグがONであると判定した場合(S303:Yes)、ステップS304に進む。異常値判定部301は、異常値判定フラグがOFFであると判定した場合(S303:No)、S306に進む。なお、異常値判定部301は、異常値判定がONであると判定した場合、異常値判定回数を示す値として“1”をデータ保持部114に保持しておく。
ステップS304において、異常値判定部301は、異常値判定フラグがOFFであると判定するか、異常値判定フラグがONであるとの判定回数が所定の回数を超えるまで、判定異常値判定の繰り返し判定を行う。なお、異常値判定部301は、異常値判定フラグがONであると判定する度に、データ保持部114に記録されている、異常値判定回数を示す値をインクリメントする。
異常値判定部301は、上記判定回数が所定の回数を超えた場合(S304:Yes)においては、カメラパラメータの誤差が補正できないほどの大きさになっていると判断し、情報提示部115にエラーメッセージを出力する(ステップS307)。上記判定回数が所定の回数を超える前に異常値判定フラグがOFFであると判定した場合(S304:No)、ステップS305に進む。
ステップS305において、画像処理装置100は、第1の実施形態と同様の工程(S102〜S105)を実行することによって、カメラパラメータのずれ判定処理を行う。
以上のように、異常値判定部301は、計測結果の値として異常値が検出された場合にのみ、ずれ判定処理を行うことになる。
ステップS306において、第2の実施形態と同様に、計測結果を情報提示部115に表示する。
以上で説明した本実施形態に係る画像処理装置は、カメラパラメータの誤差の判定を、計測結果を受けて実行するようになっている。そのため、本実施形態に係る画像処理装置は、実施形態1、2に係る画像処理装置と比べて、カメラパラメータに誤差が生じていないときの処理量が低減されていると言える。
(第4の実施形態)
第4の実施形態においては、画像処理装置100を車載システムに応用した一例について説明する。なお、本実施形態の説明においては、既述の実施形態と共通する各部の詳細な説明は省略する。
本実施形態に係る車載システム401は、図12に示すように、車両400の前方もしくは後方を撮影するためのステレオカメラ402と、各種制御処理を行う制御部403と、車両の制動を行う制動部404と、各種情報を提示できるマルチメディアユニット405と、を備える。なお、図12には示していないが、本実施形態に係る車載システム401は、実施形態2に係る画像処理装置が備える各部を備えている。
本実施形態に係る車載システム401は、ステレオカメラ402が捉えた対象物(車両400の前方もしくは後方の他車両、人物、構造物等)と車両400との距離に基づいて、ブレーキ制御を行うシステム(衝突防止システム)である。車載システム401は、カメラパラメータの誤差に関する情報をユーザに提示するようになっている。
ステレオカメラ402は、実施形態1に係る画像処理装置100の各部の処理を実行するように構成されている。即ち、ステレオカメラ402は、上記各部の処理を実行するプログラムが組み込まれた組み込み機器である。
制御部403は、FPGAやCPU等の各種処理装置によって構成され、車載システム401の全体のシステム制御を行う。
制動部404は、例えば、油圧式ブレーキ装置であって、制御部403からの指示に応じて、車両速度を減少させるように制動動作を行う。
マルチメディアユニット405は、例えば、カーナビゲーションシステムなどであって、LCDやOLEDなどのディスプレイ装置と、スピーカシステムなどの音声提示装置を有する。
(車載システム401の動作)
次に、車載システム401の動作について図13を参照しながら説明する。図13は、車載システム401の処理の流れを示す図である。
ステップS401において、ステレオカメラ402は、前述の実施形態2に係る画像処理装置100と同様の処理によって、計測点の三次元座標値とカメラパラメータのずれ判定に関する情報を算出する。なお、本実施形態においては、例えば、ステレオカメラ402によって撮影された基準画像における、第2の実施形態で説明した特定範囲内の複数のエッジ点(計測対象物と背景との境界に対応する点)を、計測点として利用する。また、ステレオカメラ402は、算出したエッジ上の各計測点の三次元座標値のうち、一部の計測点の三次元座標値(例えば、Smirnov−Grubbs検定などによって外れ値と判断された三次元座標値)を除く、残りの計測点の三次元座標値をデータ保持部114に保存する。また、ステレオカメラ402は、上記残りの計測点の各々について、当該計測点までの距離を示す距離データを、当該測定点のデータとして、データ保持部114に保存する。
ステップS402において、制御部403は、データ保持部114に保持されたカメラパラメータに基づくフラグ値が0であるか否かを判定する。制御部403は、フラグ値が1であると判定した場合(カメラパラメータに誤差が生じている場合、S402:Yes)にはステップS403に進み、フラグ値が0で有ると判定した場合(カメラパラメータがずれていない場合、S402:No)にはステップS404に進む。
ステップS403において、制御部403は、ステップS401において距離算出された計測点のデータのうちの、車両400に最も距離が近い計測点までの距離を示す距離データを参照し、当該距離と所定の距離閾値Aとの比較を行う。
制御部403は、最も距離が近い計測点までの距離が所定の距離閾値Aよりも小さい場合(S403:Yes)、ステップS406に進む。制御部403は、そうでない場合(S403:No)、ステップS405に進む。
ステップS404において、制御部403は、ステップS401において距離算出された計測点のデータのうちの、車両400に最も距離が近い計測点までの距離を示す距離データを参照し、当該距離と、所定の距離閾値Bとの比較を行う。
制御部403は、最も距離が近い計測点までの距離が所定の距離閾値Bよりも小さい場合(S404:Yes)、ステップS406に進む。制御部403は、そうでない場合(S404:No)、ステップS405に進む。
ステップS405において、制動部404は、ブレーキ制御を行わないことを決定する。
ステップS406において、制動部404は、制御部403からのブレーキ指示に従ってブレーキ制御を行う。
ここで、ステップS403およびステップS404における距離閾値Aと距離閾値Bは、A≧Bの関係となるように設定される。カメラパラメータに誤差が生じた場合、計測点までの距離の測定値が実際の距離値よりも大きくなってしまう可能性があるため、上記のように、カメラパラメータに誤差が生じた場合に参照する距離閾値Aを、そうでない場合に参照する距離閾値Bよりも大きい値に設定する。
なお、距離閾値Aと距離閾値Bとを等しい値に設定してもよい。この場合においては、制御部403は、カメラパラメータに誤差が生じていることが検出されたときは、カメラパラメータに誤差が生じていることが検出されていないときよりも、強い制動をかけるように、制動部404に指示してもよい。
また、制御部403は、カメラパラメータに誤差が生じた場合には、マルチメディアユニット405の表示装置に対して、カメラパラメータに誤差が生じたことを示す警告を提示してもよい。また、制御部403は、マルチメディアユニット405のスピーカシステムを介して、ユーザに音声で警告してもよい。あるいは、制御部403は、ステレオカメラ401の筺体につけられたLEDを点滅させることで、ユーザに警告を提示するように構成することもできる。
制御部403は、これらの警告を常時提示してもよいが、例えば、エンジン始動直後における、車載システム401への通電が開始された時点にのみ、これらの警告を提示してもよい。あるいは、車両400がオートマティックトランスミッション車両である場合、シフトレバーが「パーキング」を指し示す位置から他の位置に変更された時点などに、警告を提示してもよい。
なお、以上の説明において、画像処理装置100の各種処理をステレオカメラ402が実行するものとしたが、画像処理装置100の各種処理を制御部403が実行するようにしてもよい。
(第5の実施形態)
第5の実施形態においては、三次元画像表示システムの一例について説明する。なお、本実施形態の説明においては、既述の実施形態と共通する各部の詳細な説明は省略する。
本実施形態に係る画像処理装置500の構成例を図14に示す。画像処理装置500は、第1の実施形態における画像処理装置100と同様に、画像取得部101と、パラメータ取得部102と、回転校正部103と、ずれ範囲算出部104と、ずれ量算出部105と、判定部106と、を備え、画像平行化部501と、表示画像生成部502と、を更に備える。また、画像処理装置500は、データバス116を介して、外部の表示装置(表示部503)と接続される。
表示部503は、以下の(a)〜(c)に例示される表示装置である。
(a)アナグリフ、偏光メガネ、液晶シャッターメガネなどによって、三次元画像として表示できるメガネ式の三次元表示装置
(b)パララックスバリア方式やレンチキュラー方式などの裸眼式の三次元表示装置
(c)左右の目に異なる映像を提示することができるヘッドマウントディスプレイ装置
画像平行化部501は、画像取得部101から基準画像データおよび参照画像データを受け取るとともに、パラメータ取得部102からカメラパラメータを受け取る。画像平行化部501は、カメラパラメータと基準画像と参照画像とから、2枚の平行化画像を生成する。2枚の平行化画像とは、図3の(b)に示したような、互いに平行化された基準画像および参照画像からなる2枚の画像である。
表示画像生成部502は、画像平行化部501から2枚の平行化画像を受け取るとともに、判定部106からフラグ値を受け取り、2枚の平行化画像とフラグ値とを用いて、表示部503に表示するための三次元画像を生成する。
判定部106から受け取ったフラグ値が0の場合、すなわち、「カメラパラメータに誤差が生じていない」と判定された場合、表示画像生成部502は、平行化された基準画像データのデータと平行化された参照画像のデータとの組を、表示部503で表示するための三次元画像フォーマットのデータに変換し、変換後のデータを表示部503に送る。
一方、判定部106から受け取ったフラグ値が1の場合、すなわち、「カメラパラメータに誤差が生じている」と判定された場合、表示画像生成部502は、平行化された基準画像のデータもしくは平行化された参照画像のデータのいずれかのデータを複製する。そして、表示画像生成部502は、同じ内容の2つの画像(基準画像又は参照画像)のデータの組を、表示部503で表示するための三次元画像フォーマットに変換し、変換後のデータを表示部503に送る。このため、表示部503に表示される画像は、実質的に二次元画像となる。
以上の構成によって、本実施形態に係る三次元画像表示システムは、カメラパラメータに誤差が生じていない場合には三次元表示を行い、カメラパラメータに誤差が生じている場合には二次元表示を行うことができる。
<第1乃至第5の実施形態について>
上記の各実施形態において、添付図面に図示されている構成等については、あくまで一例であり、本発明は、これらに限定されるものではない。各実施形態の構成は、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて各実施形態の構成を適宜変更して実施することが可能である。
〔ソフトウェアによる実現例〕
画像処理装置100の制御ブロック(特に画像取得部101、パラメータ取得部102、回転校正部103、ずれ範囲算出部104、ずれ量算出部105、判定部106、情報提示部115、カメラパラメータ補正部201、視差算出部203、及び、三次元座標算出部204)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、画像処理装置100は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1に係る画像処理装置(画像処理装置100、画像撮像装置112)は、少なくとも2つの視点画像(基準画像、参照画像)を取得する画像取得部と、並進パラメータと回転パラメータとを含むカメラパラメータに基づいて、2つの前記視点画像から2つの校正画像を生成する画像校正部(回転校正部103)と、前記カメラパラメータに誤差が生じているか否かを判定する判定部(判定部106)とを備え、前記画像校正部は、前記並進パラメータに応じた、長手方向および短手方向の少なくとも一方の方向の並進ずれが校正されておらず、前記回転パラメータに応じた回転ずれが校正された前記2つの校正画像を生成し、前記判定部は、前記カメラパラメータに基づいて、前記2つの校正画像における、前記少なくとも一方の方向のずれ範囲を算出し、前記2つの校正画像のうちの一方の校正画像における任意の基準点に対する、他方の校正画像における前記基準点に対応する対応点の、前記少なくとも一方の方向のずれ量を算出し、前記ずれ範囲と前記ずれ量を比較することで、前記カメラパラメータに誤差が生じているか否かを判定する。
上記の構成によれば、前記画像処理装置は、撮影画像(視点画像)にサイズが既知の対象物が映り込んでいるか否かに関わらず、カメラパラメータの値に誤差が生じたことを検知できる、という効果を奏する。
本発明の態様2に係る画像処理装置(画像撮像装置112)は、前記態様1において、前記判定部による判定結果を示す情報を提示する情報提示部(情報提示部115)を備えていてもよい。
上記の構成によれば、前記画像処理装置は、カメラパラメータの値に誤差が生じているか否かをユーザに認識させることができる、という更なる効果を奏する。
本発明の態様3に係る画像処理装置(画像処理装置100)は、前記態様1または2において、前記カメラパラメータに誤差が生じていると前記判定部が判定した場合に、前記ずれ範囲と前記ずれ量に基づいて前記並進パラメータの補正量を算出するパラメータ更新処理部(カメラパラメータ補正部201)を備え、前記パラメータ更新処理部は、前記補正量の補正を前記並進パラメータに施すようになっていてもよい。
上記の構成によれば、前記画像処理装置は、カメラパラメータに誤差が生じている場合に、カメラパラメータの誤差を自動的に低減することができる、という更なる効果を奏する。
本発明の態様4に係る画像処理装置(画像処理装置100)は、前記態様1から3のいずれかの態様において、前記2つの校正画像間の視差を算出する視差算出部(視差算出部203)と、前記視差算出部による算出結果に基づき、測定点の三次元座標値を算出する三次元座標値算出部(三次元座標算出部204)と、を更に備え、前記判定部は、前記三次元座標値が異常値であるか否かを判定し、前記三次元座標値が異常値であると判定した場合に、前記カメラパラメータに誤差が生じているか否かの判定を行ってもよい。
上記の構成によれば、前記画像処理装置が前記カメラパラメータに誤差が生じているか否かの判定を行うのは、前記三次元座標値が異常値であると前記画像処理装置が判定した場合である。
即ち、前記画像処理装置は、前記カメラパラメータに誤差が生じている可能性が高い場合に、前記カメラパラメータに誤差が生じているか否かの判定を行う。
従って、前記画像処理装置には、前記カメラパラメータに誤差が生じているか否かを判定する処理(負荷のかかる処理)を無駄に実行しない、という更なる利点がある、と言える。
本発明の態様5に係る誤差判定方法は、画像処理装置による誤差判定方法であって、少なくとも2つの視点画像を取得する画像取得ステップと、並進パラメータと回転パラメータとを含むカメラパラメータに基づいて、2つの前記視点画像から2つの校正画像を生成する画像校正ステップと、前記カメラパラメータに誤差が生じているか否かを判定する判定ステップとを含み、前記画像校正ステップにて、前記並進パラメータに応じた、長手方向および短手方向の少なくとも一方の方向の並進ずれが校正されておらず、前記回転パラメータに応じた回転ずれが校正された前記2つの校正画像を生成し、前記判定ステップは、前記カメラパラメータに基づいて、前記2つの校正画像における、長手方向および短手方向の少なくとも一方の方向のずれ範囲を算出するステップと、前記2つの校正画像のうちの一方の校正画像における任意の基準点に対する、他方の校正画像における前記基準点に対応する対応点の、前記少なくとも一方の方向のずれ量を算出するステップと、前記ずれ範囲と前記ずれ量を比較することで、前記カメラパラメータに誤差が生じているか否かを判定するステップとを含んでいる。
上記の構成によれば、上記態様5に係る誤差判定方法は、上記態様1に係る画像処理装置と同様の作用効果を奏する。