以下に、本願の開示する補償プログラム、補償方法および補償装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る補償装置の構成を示す機能ブロック図である。図1に示すように、この補償装置100は、カメラ110a,110bと、通信部120と、入力部130と、表示部140と、記憶部150と、制御部160とを有する。
カメラ110a,110bは、円周魚眼レンズによって画像を撮影するカメラである。カメラ110a,110bは、撮影した画像の情報(画像情報)を、制御部160に出力する。なお、カメラ110a,110bは、ネットワーク上に接続されていてもよい。以下の説明では、特に区別する場合を除いて、カメラ110a,110bをまとめて、「カメラ110」と表記する。
通信部120は、ネットワークを介して、他の装置とデータ通信を実行する処理部である。たとえば、ネットワーク上にカメラ110が接続されている場合には、通信部120は、ネットワークを介して、カメラ110から画像情報を受信し、受信した画像情報を制御部160に出力する。
入力部130は、利用者が各種の情報を入力するための入力装置である。入力部130は、キーボードやマウス、タッチパネル等に対応する。
たとえば、利用者は、補償装置100にキャリブレーションを実行させる場合に、予め定められた位置に、格子パターン10を配置し、カメラ110に撮影させる。予め定められた位置に格子パターン10を配置することで、補償装置100は、格子パターン10の格子点の3次元座標を既知のものとして取り扱うことができる。たとえば、利用者は、格子パターン10を配置した際に、入力部130を操作して、キャリブレーションの実行要求を、補償装置100に入力する。
表示部140は、制御部160から出力される情報を表示する表示装置である。表示部140は、液晶ディスプレイやタッチパネル等に対応する。たとえば、表示部140は、制御部160により生成される合成画像情報150eを表示する。合成画像情報150eは、カメラ110a,110bにより撮影された各画像情報を合成した情報である。
記憶部150は、バッファ150a、カメラパラメータ情報150b、ルックアップテーブル150c、展開図情報150d、合成画像情報150eを有する。記憶部150は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
バッファ150aは、カメラ110により撮影された各画像情報を格納するバッファである。たとえば、バッファ150aは、カメラ110aにより撮影された画像情報と、カメラ110bにより撮影された画像情報とを区別して格納する。
カメラパラメータ情報150bは、カメラ110の各カメラパラメータを保持する情報である。たとえば、カメラパラメータ情報150bは、カメラ110aの内部パラメータ、カメラ110bの内部パラメータ、カメラ110aとカメラ110bとの相対的な外部パラメータを含む。
内部パラメータは、焦点距離、光軸点の座標、歪み係数、後述する係数等を含む。相対的な外部パラメータは、カメラ110aとカメラ110bとの相対的な向き(回転ベクトル)、相対的なカメラの位置(並進ベクトル)とを含む。3次元上の座標は、内部パラメータおよび外部パラメータに基づいて、2次元上の座標と対応付けられる。
ここで、本実施例1では、カメラ110aの像高ρ
1と焦点距離f
1との比で、入射角θ
1を定義し、式(1)に示すものとなる。また、カメラ110bの像高ρ
2と焦点距離f
2との比で、入射角θ
2を定義し、式(2)に示すものとなる。式(1)に含まれるk
11、k
12、k
13、k
14は、カメラ110aの内部パラメータの一部である。式(2)に含まれるk
21、k
22、k
23、k
24は、カメラ110bの内部パラメータの一部である。
ルックアップテーブル150cは、画素ずれと、焦点距離の誤差との関係を示すテーブルである。画素ずれは、カメラ110により撮影された画像情報の正距円筒図と、カメラ110bにより撮影された画像情報の正距円筒図との画素ずれを示すものである。なお、ルックアップテーブル150cは、カメラ110aに対応するルックアップテーブルと、カメラ110bに対応するルックアップテーブルとを有するが、ここでは一例として、カメラ110aに対応するルックアップテーブルについて説明を行う。カメラ110bに対応するルックアップテーブルの説明は省略する。
図2は、本実施例1に係るルックアップテーブルのデータ構造の一例を示す図である。図2に示すように、ルックアップテーブル150cにおいて、縦軸は画素ずれの大きさ(たとえば、ピクセル)を示す。横軸は焦点距離の誤差(df)を示す。ルックアップテーブル150cにより、画素ずれが決まると、焦点距離の誤差dfが一意に定まる。このルックアップテーブル150cは、後述する生成部160dにより生成される。
展開図情報150dは、第1正距円筒図と第2正距円筒図とを含む。第1正距円筒図は、カメラ110aにより撮影された画像情報に基づいて生成される正距円筒図である。第2正距円筒図は、カメラ110bにより撮影された画像情報に基づいて生成される正距円筒図である。
合成画像情報150eは、第1正距円筒図と、第2正距円筒図とを合成(ブレンド処理)することで得られる画像情報である。
制御部160は、取得部160a、キャリブレーション実行部160b、推定部160c、生成部160d、展開部160e、合成部160f、算出部160gを有する。制御部160は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部160は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
取得部160aは、カメラ110から画像情報を取得し、取得した画像情報をバッファ150aに格納する処理部である。
キャリブレーション実行部160bは、バッファ150aに格納された画像情報を基にして、キャリブレーションを実行し、カメラパラメータ情報150bを生成する処理部である。キャリブレーション実行部160bは、入力部130から、キャリブレーションの実行要求を受け付けた場合に、処理を実行する。
キャリブレーション実行部160bは、どのような従来技術を用いてカメラパラメータ情報150bを生成してもよい。なお、キャリブレーション実行部160bがキャリブレーションを実行する場合には、図15で説明した、仮想球面のモデルを用いる。この仮想球面のモデルは、対象物(格子点)の距離、入射角によらず光軸中心の高さは同一であると仮定するモデルである。
たとえば、キャリブレーション実行部160bは、バッファ150aに格納された画像情報から各格子点を検出する。キャリブレーション実行部160bは、仮想球面のモデルによる入射角と像高との関係から、各格子点をそれぞれ写像し、写像された各格子点を結んだ線分が、格子状の直線となるような内部パラメータを探索する。キャリブレーション実行部160bは、カメラ110a、カメラ110bについて、内部パラメータを探索し、カメラパラメータ情報150bに設定する。
キャリブレーション実行部160bは、画像情報上の各格子点の2次元座標と、既知となる各格子点の3次元座標との対応関係から、外部パラメータを探索する。キャリブレーション実行部160bは、カメラ110a、カメラ110bについて、外部パラメータを探索する。キャリブレーション実行部160bは、各外部パラメータの相対値を、相対的な外部パラメータとして算出し、カメラパラメータ情報150bに設定する。
推定部160cは、カメラ110で用いられる円周魚眼レンズについて、光学系の入射角と像高との関係を推定する処理部である。推定部160cは、推定結果を生成部160dに出力する。
たとえば、推定部160cは、既知となる格子パターン10の各格子の交点と、画像情報から検出される各格子の交点との対応に基づき、像高ρと焦点距離fとの多項式により、入射角と像高との関係を推定する。像高ρと焦点距離fとの多項式は、式(1)、(2)に示す多項式である。ここでは、推定部160cが、自動で光学系の入射角と像高との関係を推定する場合について説明したが、利用者が手動で、光学系の入射角と像高との関係を推定し、推定結果を補償装置100に入力してもよい。推定部160cは、カメラ110aにおける、光学系の入射角と像高との関係、および、カメラ110bにおける、光学系の入射角と像高との関係を、それぞれ推定するものとする。
生成部160dは、光学系の入射角と像高との関係を用いて、ルックアップテーブル150cを生成する処理部である。図3は、本実施例1に係る生成部の処理を説明するための図である。図3のグラフの横軸は像高に対応するものであり、縦軸は入射角に対応するものである。線分25aは、推定部160cから取得する、光学系の入射角と像高との関係を示す線分である。
生成部160dは、式(3)に示す焦点距離の誤差dfを変更することで、焦点距離fを変更する。生成部160dは、誤差dfを変更し、入射角と像高との関係を変更し、変更結果から得られる像高ずれおよび入射角ずれを画素ずれに変換する処理を繰り返し実行することで、焦点距離の誤差と画素ずれの関係を得、ルックアップテーブル150cを生成する。
f=f(1+df)・・・(3)
図3に示す線分25aは、「df=0」の場合の入射角と像高との関係を示す図である。たとえば、生成部160dは、「df=0.015」に設定することで焦点距離fを変更し、この変更した焦点距離fと、式(1)とを基にして、入射角と像高との関係を示す線分25bを得る。生成部160dは、入射角0を通る線分30と、線分26bとの交点26bを通る線分27bを設定する。生成部160dは、交点26aと交点26bとの距離を、「像高ずれ(像高半径ずれ)」として算出する。交点26aは、線分30と線分25aとの交点である。生成部160dは、交点28aと交点26bとの入射角(rad)を、「入射角ずれ」として算出する。交点28aは、線分25aと線分27bとの交点である。
生成部160dは、入射角ずれと、画素ずれとの関係を定義した画素ずれ変換テーブル(図示略)を保持している。生成部160dは、交点28aと交点26bとの入射角ずれと、画素ずれ変換テーブルとを比較して、画素ずれを得る。これにより、生成部160dは、焦点距離の誤差df=0.015と、画素ずれとの関係を特定することができる。
また、生成部160dは、「df=-0.015」に設定することで焦点距離fを変更し、この変更した焦点距離fと、式(1)とを基にして、入射角と像高との関係を示す線分25cを得る。生成部160dは、入射角0を通る線分30と、線分26cとの交点26cを通る線分27cを設定する。生成部160dは、交点26aと交点26cとの距離を、「像高ずれ(像高半径ずれ)」として算出する。生成部160dは、交点28bと交点26cとの入射角(rad)を、「入射角ずれ」として算出する。交点28bは、線分25aと線分27cとの交点である。
生成部160dは、交点28bと交点26cとの入射角ずれと、画素ずれ変換テーブルとを比較して、画素ずれを得る。これにより、生成部160dは、焦点距離の誤差df=-0.015と、画素ずれとの関係を特定することができる。
生成部160dは、焦点距離の誤差dfを変えながら、誤差dfと画素ずれとの関係を算出する処理を繰り返し実行することで、カメラ110aに対応するルックアップテーブル150cの情報を生成する。同様に、生成部160dは、式(2)を基にして、焦点距離の誤差dfを変えながら、誤差dfと画素ずれとの関係を算出する処理を繰り返し実行することで、カメラ110bに対応するルックアップテーブル150cの情報を生成する。
図1の説明に戻る。後述する展開部160e、合成部160f、算出部160gは、上述したキャリブレーション実行後に処理を行う。また、展開部160e、合成部160f、算出部160gが処理を行う場合には、格子パターン10は配置されていなくてもよい。
展開部160eは、カメラパラメータ情報150bと、バッファ150aに格納された画像情報とを基にして、展開図情報150dを生成する処理部である。たとえば、展開部160eは、カメラ110aに撮影された画像情報、カメラ110aの内部パラメータ、相対的な外部パラメータを基にして、第1正距円筒図の情報を生成する。展開部160eは、カメラ110bに撮影された画像情報と、カメラ110bの内部パラメータ、相対的な外部パラメータを基にして、第2正距円筒図の情報を生成する。
展開部160eは、第1正距円筒図の情報を生成する場合に、内部パラメータ、相対的な外部パラメータを基にして、第1正距円筒図上の赤道中心位置を特定し、特定した赤道中心位置の情報を、第1正距円筒図の情報に付与する。展開部160eは、第2正距円筒図の情報を生成する場合に、内部パラメータ、相対的な外部パラメータを基にして、第2正距円筒図上の赤道中心位置を特定し、特定した赤道中心位置の情報を、第2正距円筒図の情報に付与する。
合成部160fは、展開図情報150dに含まれる第1正距円筒図と、第2正距円筒図とを合成(ブレンド処理)し、合成画像情報150eを生成する処理部である。たとえば、合成部160fは、第1正距円筒図の赤道中心位置と、第2正距円筒図の赤道中心位置とを重複させて、合成画像情報150eを生成する。
算出部160gは、合成画像情報150eを基にして、画素ずれを算出する処理部である。たとえば、算出部160gは、合成画像情報150eに含まれる第1正距円筒図と第2正距円筒図とのつなぎ目付近の領域を走査して、画素ずれを算出する。
図4は、本実施例1に係る算出部の処理を説明するための図である。図4に示す合成画像情報150eは、第1正距円筒図151aと、第2正距円筒図151bとが、赤道152a(つなぎ目)により合成されているものとする。算出部160gは、赤道152aを基準とする所定の範囲152bについて、形状検出(エッジ検出等)を行い、画素ずれを推定する。
図4に示す例では、所定の範囲152bから、形状40a,40bと、形状41a,41bとが検出されている。算出部160gは、画素値の一致率などを基にして、類似度を算出し、類似度を基にして、類似する形状の組を特定する。たとえば、形状40aは、形状40bに対応し、形状41aは、形状41bに対応するものとする。
算出部160gは、形状40aと形状40bとの画素ずれ40cを算出する。算出部160gは、形状41aと形状41bとの画素ずれ41cを算出する。算出部160gは、類似する形状の組が複数存在する場合には、各画素ずれの平均値、最大値、または、最小値を、最終的な画素ずれとして算出する。以下の説明では、最終的な画素ずれを、単に「画素ずれ」と表記する。
続いて、算出部160gは、画素ずれを算出すると、画素ずれとルックアップテーブル150cとを比較して、ずれ補償パラメータを特定し、ずれ補償パラメータにより、カメラパラメータ情報150bを修正する処理を実行する。
算出部160gは、画素ずれと、カメラ110aに対応するルックアップテーブル150cの情報とを比較して、焦点距離の誤差dfを特定する。算出部160gは、特定した誤差dfを、カメラ110aに対応する、ずれ補償パラメータdf1とする。算出部160gは、ずれ補償パラメータdf1により、カメラパラメータ情報150bを修正する。具体的には、算出部160gは、カメラ110aに対応する内部パラメータの焦点距離を焦点距離f1から焦点距離f1(1+df1)に修正する。
算出部160gが、上記の修正を行うことで、入射角と像高との関係は、式(4)に示すものとなる。
算出部160gは、画素ずれと、カメラ110bに対応するルックアップテーブル150cの情報とを比較して、焦点距離の誤差dfを特定する。算出部160gは、特定した誤差dfを、カメラ110bに対応する、ずれ補償パラメータdf2とする。算出部160gは、ずれ補償パラメータdf2により、カメラ110bに対応する内部パラメータの焦点距離を焦点距離f2から焦点距離f2(1+df2)に修正する。
算出部160gが、上記の修正を行うことで、入射角と像高との関係は、式(5)に示すものとなる。
図5は、修正前後の入射角および像高の関係を示す図である。ここでは一例として、カメラ110aの円周魚眼レンズの入射角および像高の関係について説明する。図5の縦軸は入射角に対応し、横軸は像高に対応する。線分25dは、焦点距離を修正する前の入射角と像高との関係を示すものである。線分25eは、焦点距離を修正した後に入射角と像高との関係を示すものである。線分25eは、光学系の入射角と像高との関係に合わせたものであるため、線分25dの関係で合成画像情報150eを作成した場合に発生する画素ずれを補償することが可能となる。
図15および図17で説明したように、実際の光学系と仮想球面のモデルとでは、入射角が異なっており、入射角が異なるということは、焦点距離fが異なっていることに相当するといえる。このため、焦点距離fの誤差を、ずれ補償パラメータで修正することで、像高のずれを補償し、画素ずれを補償する。
図6は、焦点距離と像高との関係を示す図である。たとえば、ある入射角で入射した点に対応する像高は、実際にはρ(1+df)となるが、仮想球面のモデルを用いると、像高はρとなる。この像高ρと像高ρ(1+df)との相違により、画素ずれが発生する。このため、補償装置100は、ずれ補償パラメータにより、焦点距離を焦点距離fから焦点距離f(1+df)に修正することで、像高ρを像高ρ(1+df)に修正し、画素ずれを補償する。
カメラパラメータ情報150bが修正されると、上述した展開部160eは、カメラパラメータ情報150bを基にして、第1正距円筒図および第2正距円筒図を再度生成し、合成部160fに出力する。
合成部160fは、再度生成された第1正距円筒図および第2正距円筒図を合成することで、合成画像情報150eを再度生成する。再度生成された合成画像情報150eは、画像ずれの影響を補償した画像情報となる。合成部160fは、合成画像情報150eを、表示部140に出力して表示させてもよいし、ネットワーク上の外部装置に送信して表示させてもよい。
図7は、修正前後の合成画像情報の一例を示す図である。図7において、合成画像情報150eaは、修正前の合成画像情報を示す。合成画像情報150ebは、修正後の合成画像情報を示す。合成画像情報150eaでは、領域7aに画素ずれが発生している。これに対して、合成画像情報150ebでは、領域7bに画素ずれが発生していない。すなわち、ずれ補償パラメータにより、カメラパラメータ情報150bを修正することで、画素ずれを補償することができる。
次に、本実施例1に係る補償装置100の処理手順の一例について説明する。図8は、本実施例1に係る補償装置の処理手順を示すフローチャートである。図8に示すように、補償装置100のキャリブレーション実行部160bは、各カメラ110のキャリブレーションを実行することで、内部パラメータと相対的な外部パラメータとを特定し、カメラパラメータ情報150bを生成する(ステップS101)。
補償装置100の推定部160cおよび生成部160dは、ルックアップテーブル生成処理を実行する(ステップS102)。補償装置100の展開部160eは、各カメラの画像情報を正距円筒図に展開する(ステップS103)。
補償装置100の合成部160fは、各正距円筒図を合成することで、合成画像情報150eを生成する(ステップS104)。補償装置100の算出部160gは、合成画像情報150eを基にして、画素ずれを算出する(ステップS105)。算出部160gは、ルックアップテーブル150cと画素ずれとを基にして、ずれ補償パラメータを算出する(ステップS106)。
算出部160gは、ずれ補償パラメータを基にして、カメラパラメータ情報150bの内部パラメータを修正する(ステップS107)。展開部160eは、修正された内部パラメータを基にして各カメラの画像情報を円距円筒図に展開する(ステップS108)。
合成部160fは、各円距円筒図を合成することで、合成画像情報150eを生成する(ステップS109)。合成部160fは、合成画像情報150eを表示部140に出力し、表示させる(ステップS110)。
次に、図8のステップS201に示したルックアップテーブル生成処理の処理手順の一例について説明する。図9は、ルックアップテーブル生成処理の処理手順を示すフローチャートである。図9に示すように、補償装置100の推定部160cは、光学系の像高と入射角との関係を推定する(ステップS201)。
補償装置100の生成部160dは、焦点距離dfを変更する(ステップS202)。生成部160dは、変更した焦点距離dfにより、像高と入射角との関係を変更する(ステップS203)。生成部160dは、入射角0における像高ずれを算出する(ステップS204)。
生成部160dは、像高ずれに対応する入射角ずれを算出する(ステップS205)。生成部160dは、入射角ずれを画素ずれに換算する(ステップS206)。生成部160dは、ルックアップテーブル150cに、焦点距離dfと画素ずれとの関係を登録する(ステップS207)。
生成部160dは、ルックアップテーブル150cを生成する処理を終了する場合には(ステップS208,Yes)、処理を終了する。一方、生成部160dは、ルックアップテーブル150cを生成する処理を終了しない場合には(ステップS208,No)、ステップS202に移行する。
次に、本実施例1に係る補償装置100の効果について説明する。補償装置100は、円周魚眼レンズの光学系の入射角と像高との関係を推定し、焦点距離dfを変更しつつ、入射角と像高との関係を変更することで、焦点距離dfに対応する画素ずれを特定して、ルックアップテーブル150cを生成する。補償装置100は、修正前のカメラパラメータ情報150bを基にして生成される合成画像情報の画素ずれと、ルックアップテーブル150cとを基にして、ずれ補償パラメータを特定し、ずれ補償パラメータにより、カメラパラメータ情報150bの内部パラメータを修正する。これにより、ずれ補償パラメータにより、入射角による像高ずれを補償でき、画素ずれの発生を抑止することができる。
たとえば、図5、図6で説明したように、ずれ補償パラメータにより、仮想球面のモデルによる入射角および像高の関係を、光学系の入射角および像高の関係に合わせることができ、画素ずれを補償することができる。
次に、本実施例2に係る補償装置について説明する。本実施例2に係る補償装置は、実施例1の補償装置100と同様にして、ルックアップテーブルを生成し、合成画像情報の画素ずれと、ルックアップテーブル150cとを基にして、ずれ補償パラメータを特定する。本実施例2に係る補償装置は、ずれ補償パラメータにより、像高を修正し、画素ずれを補償する。
たとえば、実施例1の補償装置100では、図6で説明したように、内部パラメータの焦点距離を焦点距離fから焦点距離f(1+df)に修正することで、実際の像高ρ(1+df)に合わせていた。これに対して、実施例2の補償装置は、焦点距離を修正しないで、直接、像高を像高ρから像高ρ(1+df)に修正する。
図10は、本実施例2に係る補償装置の構成を示す機能ブロック図である。図10に示すように、この補償装置200は、カメラ210,210bと、通信部220と、入力部230と、表示部240と、記憶部250と、制御部260とを有する。
カメラ210a,210bは、円周魚眼レンズによって画像を撮影するカメラである。カメラ210a,210bは、撮影した画像の情報(画像情報)を、制御部260に出力する。なお、カメラ210a,210bは、ネットワーク上に接続されていてもよい。以下の説明では、特に区別する場合を除いて、カメラ210a,210bをまとめて、「カメラ210」と表記する。
通信部220は、ネットワークを介して、他の装置とデータ通信を実行する処理部である。たとえば、ネットワーク上にカメラ210が接続されている場合には、通信部220は、ネットワークを介して、カメラ210から画像情報を受信し、受信した画像情報を制御部260に出力する。
入力部230は、利用者が各種の情報を入力するための入力装置である。入力部230は、キーボードやマウス、タッチパネル等に対応する。利用者は、実施例1と同様にして、予め定められた位置に、格子パターン10を配置し、入力部230を操作して、キャリブレーションの実行要求を、補償装置200に入力する。
表示部240は、制御部260から出力される情報を表示する表示装置である。表示部240は、液晶ディスプレイやタッチパネル等に対応する。たとえば、表示部240は、制御部260により生成される合成画像情報250eを表示する。合成画像情報250eは、カメラ210a,210bにより撮影された各画像情報を合成した情報である。
記憶部250は、バッファ250a、カメラパラメータ情報250b、ルックアップテーブル250c、展開図情報250d、合成画像情報250eを有する。記憶部250は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
バッファ250aは、カメラ210により撮影された各画像情報を格納するバッファである。たとえば、バッファ250aは、カメラ210aにより撮影された画像情報と、カメラ210bにより撮影された画像情報とを区別して格納する。
カメラパラメータ情報250bは、カメラ110の各カメラパラメータを保持する情報である。たとえば、カメラパラメータ情報250bは、カメラ210aの内部パラメータ、カメラ210bの内部パラメータ、カメラ210aとカメラ210bとの相対的な外部パラメータを含む。
内部パラメータは、焦点距離、光軸点の座標、歪み係数、後述する係数等を含む。相対的な外部パラメータは、カメラ210aとカメラ210bとの相対的な向き(回転ベクトル)、相対的なカメラの位置(並進ベクトル)とを含む。3次元上の座標は、内部パラメータおよび外部パラメータに基づいて、2次元上の座標と対応付けられる。
ルックアップテーブル250cは、画素ずれと、焦点距離の誤差との関係を示すテーブルである。ルックアップテーブル250cのデータ構造は、図2で説明したルックアップテーブル150cのデータ構造と同様である。
展開図情報250dは、第1正距円筒図と第2正距円筒図とを含む。第1正距円筒図は、カメラ210aにより撮影された画像情報に基づいて生成される正距円筒図である。第2正距円筒図は、カメラ210bにより撮影された画像情報に基づいて生成される正距円筒図である。
合成画像情報250eは、第1正距円筒図と、第2正距円筒図とを合成(ブレンド処理)することで得られる画像情報である。
制御部260は、取得部260a、キャリブレーション実行部260b、推定部260c、生成部260d、展開部260e、合成部260f、算出部260gを有する。制御部260は、CPUやMPUなどによって実現できる。また、制御部260は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部260aは、カメラ210から画像情報を取得し、取得した画像情報をバッファ250aに格納する処理部である。
キャリブレーション実行部260bは、バッファ250aに格納された画像情報を基にして、キャリブレーションを実行し、カメラパラメータ情報250bを生成する処理部である。キャリブレーション実行部260bの処理は、実施例1で説明したキャリブレーション実行部160bの処理と同様である。
推定部260cは、カメラ210で用いられる円周魚眼レンズについて、光学系の入射角と像高との関係を推定する処理部である。推定部260cは、推定結果を生成部260dに出力する。推定部260cの処理は、実施例1で説明した推定部160cの処理と同様である。
生成部260dは、光学系の入射角と像高との関係を用いて、ルックアップテーブル150cを生成する処理部である。生成部260dの処理は、実施例1で説明した生成部160dの処理と同様である。
後述する展開部260e、合成部260f、算出部260gは、上述したキャリブレーション実行後に処理を行う。また、展開部260e、合成部260f、算出部260gが処理を行う場合には、格子パターン10は配置されていなくてもよい。
展開部260eは、カメラパラメータ情報250bと、バッファ250aに格納された画像情報とを基にして、展開図情報250dを生成する処理部である。展開部260eの処理は、実施例1で説明した展開部160eの処理と同様である。
合成部260fは、展開図情報250dに含まれる第1正距円筒図と、第2正距円筒図とを合成(ブレンド処理)し、合成画像情報250eを生成する処理部である。たとえば、合成部260fは、第1正距円筒図の赤道中心位置と、第2正距円筒図の赤道中心位置とを重複させて、合成画像情報250eを生成する。
算出部260gは、合成画像情報250eを基にして、画素ずれを算出する処理部である。また、算出部260gは、画素ずれと、ルックアップテーブル250cとを基にして、ずれ補償パラメータを特定する。算出部260gが、画素ずれを算出する処理、ずれ補償パラメータを特定する処理は、実施例1で説明した算出部160gの処理と同様である。
算出部260gは、ずれ補償パラメータの情報を、展開部260eに出力する。ここで、カメラ210aに対応するずれ補償パラメータを、ずれ補償パラメータdf1とする。カメラ210bに対応するずれ補償パラメータを、ずれ補償パラメータdf2とする。
ここで、展開部260eは、算出部260gは、ずれ補償パラメータの情報を取得すると、カメラパラメータ情報150bと、バッファ150aに格納された画像情報とを基にして、展開図情報150dを生成する際に、像高を修正する。たとえば、展開部260eは、第1正距円筒図を生成する場合の像高を、式(6)に示すように修正する。展開部260eは、第2正距円筒図を生成する場合の像高を、式(7)に示すように修正する。これによって、カメラパラメータ情報250bに基づいて写像される画像情報の各点の位置(像高)を修正することができ、画素ずれを補償することができる。
ρ1=ρ1×(1+df)・・・(6)
ρ2=ρ2×(1+df)・・・(7)
次に、本実施例2に係る補償装置200の処理手順の一例について説明する。図11は、本実施例2に係る補償装置の処理手順を示すフローチャートである。図11に示すように、補償装置200のキャリブレーション実行部260bは、各カメラ210のキャリブレーションを実行することで、内部パラメータと相対的な外部パラメータとを特定し、カメラパラメータ情報250bを生成する(ステップS301)。
補償装置200の推定部260cおよび生成部260dは、ルックアップテーブル生成処理を実行する(ステップS302)。補償装置200の展開部260eは、各カメラの画像情報を正距円筒図に展開する(ステップS303)。
補償装置100の合成部260fは、各正距円筒図を合成することで、合成画像情報250eを生成する(ステップS304)。補償装置200の算出部260gは、合成画像情報250eを基にして、画素ずれを算出する(ステップS305)。算出部260gは、ルックアップテーブル150cと画素ずれとを基にして、ずれ補償パラメータを算出する(ステップS306)。
展開部260eは、ずれ補償パラメータにより像高を修正しつつ、カメラパラメータ情報250bを基にして、各カメラ210の画オズ情報を正距円筒図に展開する(ステップS307)。合成部260fは、各円距円筒図を合成することで、合成画像情報250eを生成する(ステップS308)。合成部260fは、合成画像情報250eを表示部240に出力し、表示させる(ステップS309)。
次に、本実施例2に係る補償装置200の効果について説明する。補償装置200は、カメラパラメータ情報250bと、バッファ250aに格納された画像情報とを基にして、展開図情報250dを生成する際に、ずれ補償パラメータを用いて、像高を修正する。これによって、カメラパラメータ情報250bにより特定される像高が異なっていても、ずれ補償パラメータにより像高の位置が修正されるため、合成画像情報250eの画素ずれを補償することができる。
次に、上記実施例1、2に示した補償装置100,200と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図12は、補償装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図12に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る読み取り装置304と、有線または無線ネットワークを介して他の装置との間でデータの授受を行うインタフェース装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
ハードディスク装置307は、取得プログラム307a、キャリブレーション実行プログラム307b、推定プログラム307c、生成プログラム307d、展開プログラム307e、合成プログラム307f、算出プログラム307gを有する。また、ハードディスク装置307は、各プログラム307a~307gを読み出してRAM306に展開する。
取得プログラム307aは、取得プロセス306aとして機能する。キャリブレーション実行プログラム307bは、キャリブレーション実行プロセス306bとして機能する。推定プログラム307cは、推定プロセス306cとして機能する。生成プログラム307dは、生成プロセス306dとして機能する。展開プログラム307eは、展開プロセス306eとして機能する。合成プログラム307fは、合成プロセス306fとして機能する。算出プログラム307gは、算出プロセス306gとして機能する。
取得プロセス306aの処理は、取得部160a,260aの処理に対応する。キャリブレーション実行プロセス306の処理は、キャリブレーション実行部160b,260bの処理に対応する。推定プロセス306cの処理は、推定部160c,260cの処理に対応する。生成プロセス306dの処理は、生成部160d,260dの処理に対応する。展開プロセス306eの処理は、展開部360eの処理に対応する。合成プロセス306fの処理は、合成部160f,260fの処理に対応する。算出プロセス306gの処理は、算出部160g,260gの処理に対応する。
なお、各プログラム307a~307eについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307eを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)カメラの像高および焦点距離を含むパラメータで定義される入射角と、前記像高との関係を示す第1線分を推定し、
前記焦点距離を変化させた場合の前記像高と前記入射角との関係を示す第2線分を算出し、
前記第1線分と前記第2線分と基準入射角の線分とを基にして特定される像高ずれおよび入射角ずれを画素ずれに変換することで、前記焦点距離の変化量と、前記画素ずれと対応付けたテーブルを生成し、
第1カメラに撮影された画像を前記パラメータで展開した第1展開画像と、第2カメラに撮影された画像を前記パラメータで展開した第2展開画像とを基にして画素ずれを特定し、
特定した画素ずれと前記テーブルとを基にして、焦点距離のずれ量を算出する
処理をコンピュータに実行させることを特徴とする補償プログラム。
(付記2)前記焦点距離のずれ量を基にして、前記パラメータに含まれる焦点距離を修正する処理を更にコンピュータに実行させることを特徴とする付記1に記載の補償プログラム。
(付記3)前記焦点距離のずれ量を基にして、前記第1展開画像を展開する際の像高および前記第2展開画像を展開する際の像高を修正する処理を更にコンピュータに実行させることを特徴とする付記1に記載の補償プログラム。
(付記4)前記第1展開画像と前記第2展開画像とを合成する処理を更にコンピュータに実行させることを特徴とする付記2または3に記載の補償プログラム。
(付記5)コンピュータが実行する補償方法であって、
カメラの像高および焦点距離を含むパラメータで定義される入射角と、前記像高との関係を示す第1線分を推定し、
前記焦点距離を変化させた場合の前記像高と前記入射角との関係を示す第2線分を算出し、前記第1線分と前記第2線分と基準入射角とを基にして特定される像高ずれおよび入射角ずれを画素ずれに変換することで、前記焦点距離の変化量と、前記画素ずれと対応付けたテーブルを生成し、
第1カメラに撮影された画像を前記パラメータで展開した第1展開画像と、第2カメラに撮影された画像を前記パラメータで展開した第2展開画像とを基にして画素ずれを特定し、
特定した画素ずれと前記テーブルとを基にして、焦点距離のずれ量を算出する
処理を実行することを特徴とする補償方法。
(付記6)前記焦点距離のずれ量を基にして、前記パラメータに含まれる焦点距離を修正する処理を更に実行することを特徴とする付記5に記載の補償方法。
(付記7)前記焦点距離のずれ量を基にして、前記第1展開画像を展開する際の像高および前記第2展開画像を展開する際の像高を修正する処理を更にコンピュータに実行させることを特徴とする付記5に記載の補償方法。
(付記8)前記第1展開画像と前記第2展開画像とを合成する処理を更に実行することを特徴とする付記6または7に記載の補償方法。
(付記9)カメラの像高および焦点距離を含むパラメータで定義される入射角と、前記像高との関係を示す第1線分を推定する推定部と、
前記焦点距離を変化させた場合の前記像高と前記入射角との関係を示す第2線分を算出し、前記第1線分と前記第2線分と基準入射角とを基にして特定される像高ずれおよび入射角ずれを画素ずれに変換することで、前記焦点距離の変化量と、前記画素ずれと対応付けたテーブルを生成する生成部と、
第1カメラに撮影された画像を前記パラメータで展開した第1展開画像と、第2カメラに撮影された画像を前記パラメータで展開した第2展開画像とを基にして画素ずれを特定し、特定した画素ずれと前記テーブルとを基にして、焦点距離のずれ量を算出する算出部と
を有することを特徴とする補償装置。
(付記10)前記算出部は、前記焦点距離のずれ量を基にして、前記パラメータに含まれる焦点距離を修正することを特徴とする付記9に記載の補償装置。
(付記11)前記算出部は、前記焦点距離のずれ量を基にして、前記第1展開画像を展開する際の像高および前記第2展開画像を展開する際の像高を修正することを特徴とする付記9に記載の補償装置。
(付記12)前記第1展開画像と前記第2展開画像とを合成する合成部を更に有することを特徴とする付記10または11に記載の補償装置。