【実施例1】
【0023】
<1 オプティカルフロー処理装置>
<1.1 表示ブロック>
まず、本実施形態の実施例1を開示する。実施例1は、オプティカルフロー処理装置100であって、車間距離の変化による検出誤差を低減するために、三次元の仮想ブロックIBと二次元の表示ブロックBDとを対応させる。これにより、二次元で検出したフローFlwの有効性を三次元情報の参酌により判定処理可能とするものである。
【0024】
実施例1のオプティカルフロー処理装置100は、その主要な要素として、カメラ10と、フロー抽出部12と、表示ブロック管理部14と、フロー判定処理部16とを備えている。
図1に示す例では、表示ブロック管理部14が、表示ブロック半径関連処理18と、仮想ブロック特定処理20と、仮定地上高処理22と、表示半径マップ34とを備えている。
【0025】
カメラ10は、自車MTの周辺を連続して撮像する。撮像した画像IMはフロー抽出部12に入力される。このカメラ10について、カメラ10の姿勢を示す外部パラメータと、レンズ歪み等を示す内部パラメータとを予めキャリブレーション等により求めておくと良い。カメラ10のレンズは、通常のものでも良いし、広角でも良い。駐車支援用の後方確認用カメラ10を使用しても良い。
【0026】
フロー抽出部12は、カメラ10から入力される画像IMをテンプレートTで区画画像AIMに区画すると共に、時間的に前後する前記区画画像AIM間のフローFlwを抽出する。
図2に示すように、フロー抽出部12は、画像IMにテンプレートTを重ねることで、画像IMの各領域を多数の区画画像AIMに区画する。区画は、隙間をとって配置すると良いが、隙間無く配置することもできる。そして、フロー抽出部12は、時間的に前後する2つの区画画像IM間で、区画画像AIMの特徴が一致する区画間にフローのFlw始点[U0, V0]と終点[U1, V1]とを定義する。この「一致」は、上述のように完全な一致のみではなく、特徴量の一致度が高い場合を含む。
フローFlwの始点[U0, V0]は時間的に前の画像IMに、フローFlwの終点[U1, V1]は時間的に後(現在)の画像IMに配置する。フローFlwの始点[U0, V0]と終点[U1, V1]とでは区画画像AIMの特徴が一致するため、このフローFlwは、接近車MA等の同一部分が近づいてきている状態を表す。
図2に示す例では、画像IMの全面にテンプレートTを配置しているが、画像IM中、接近車MAが走行可能な範囲に対してのみテンプレートTを配置するようにしても良い。
フローFlwの抽出の情報処理自体は、従来例と同様の手法を採用することができる。
【0027】
本実施例1では、表示ブロック管理部14は、前記画像IMに撮像される範囲の三次元空間にて予め定められた位置及び大きさの仮想ブロックIBを前記画像IMの二次元の画像座標系UVに表示ブロックBDとして投影する。仮想ブロックIBは三次元形状で、表示ブロックBDは二次元形状である。三次元空間に多数生成する仮想ブロックIBは、同一の大きさとすると情報処理が容易となるが、個別に位置を管理可能な際には異なる大きさとしても良い。
カメラ10の近くの仮想ブロックIBは、遠方の仮想ブロックIBよりも画像座標系UVにて大きく投影される。すなわち、遠近法により、無限遠点の仮想ブロックIBは極小で、遠くの仮想ブロックIBは小さく、カメラ10に近づくにつれて大きくなる。
表示ブロックBDは、画像座標系UVの座標値(位置)と関連づけられた仮想ブロックIBの大きさである。従って、三次元空間の物体が、画像IM上、遠近法により大きさが変わる程度を表すことができる。この表示ブロックBDは、必要な際に投影処理等をして算出するようにしても良いし、実施例2等の手法を用いて予め算出しておき、表示半径マップ34のデータを記録しておくようにしても良い。
【0028】
フロー判定処理部16は、前記フローFlwの始点[U0, V0]又は終点[U1, V1]での前記表示ブロックBDの大きさを参照して当該フローFlwの有効性を判定処理する。
フロー判定処理部16は、表示ブロックBDの大きさを判別材料として、フローFlwの有効性を判定処理する。表示ブロックBDは、画像IM上、遠近法により三次元空間の物体の大きさが変わる程度を表している。このため、フロー判定処理部16は、画像IM上のみを対象とする画像処理の工夫によりフローFlwの有効性を判定するのではなく、抽出されたフローFlwの実際の三次元空間での大きさを参照してフローFlwの有効性を判定することができる。このため、特に、接近車MAなど画像IM内で移動する対象物のフローFlwを効果的に抽出することができる。
【0029】
そして、フロー判定処理部16による有効性の判定処理は、直接的に個々のフローFlwの有効・無効を判定する処理の他、表示ブロックを使用してフローFlwをグループ化することで間接的にフローFlwの有効・無効を判定する処理や、フローFlwの連続性についての有効性を判定する処理や、そのために新たなテンプレートTの配置位置を求める処理や、このようなテンプレートTの動的な配置等の連続的な処理によりフローFlwの有効性を判定する処理等を含む。
【0030】
図3に示すように、本実施形態では、図中左側のワールド座標系XYZにて、フローFlwは、仮想ブロックIBが始点[U0, V0]から終点[U1, V1]に移動したと判定する。
図3に示す例では、この仮想ブロックIBは球体で、大きさ(仮想ブロック半径IBr)は同一である。この同一の大きさの球体は、画像座標系UVでは、遠近法(自車MTとの車間距離)に応じて画像IMでの表示上の大きさが変化する。すなわち、カメラ10から奥行き方向(
図11(A)のz軸)に遠方となるほど小さくなり、カメラ10に近づくほど仮想ブロックIBは大きく撮像される。
【0031】
図4(A)に接近車MAの一例を示す。本実施形態では、
図4(B)に示すように、接近車MAを仮想ブロックIBの集合として扱う。
図4(B)に示す例では、フローFlwが検出された位置に、有効な仮想ブロックIBが存在すると考える。すなわち、フローFlwは、車両を構成する仮想的なブロック群のうちの「ある1つのブロック」の移動を元に発生したものと考える。このように、本実施例では、接近車MAを三次元空間上に存在する仮想的な平面状のブロックの集合体としてモデル化する。
そして、この仮想ブロックIBを二次元画像IM上へ投影変換可能とする。フローFlw抽出位置を実空間三次元座標(ワールド座標系XYZ)に変換し、変換した実空間位置に対し設定した仮想ブロックIBを、透視変換により再度二次元画像IMの平面上へ変換することで、車間距離と物体の表示サイズに関するギャップに対応する。
すなわち、
図4(C)に示すように、仮想ブロックIBを基準にフローFlwの有効性の判定処理をすると、車間距離による表示ギャップに対応することができる。
【0032】
各仮想ブロックIBを実空間で同一のサイズとしても、カメラ10からの距離及び画像IMの歪曲に応じて二次元画像IM上ではその表示サイズが変化する。フローFlwは、この三次元空間での仮想ブロックIBの全体のうち、一部の仮想ブロックIB群の移動について、二次元画像IMに現れる変化を捉えたものとして取り扱う。フローFlwの源泉を仮想ブロックIBの集合とするため、フローFlwの始点[U0, V0]及び終点[U1, V1]の仮想ブロックIBの周辺には、他にも性質を同類とする仮想ブロックIBによる集合が存在すると仮定することができる。この実空間上に想定した仮想ブロックIBとその画像IM上での表示サイズに基づく処理により、接近車MAの一部を示すフローFlwに対して、自車MTとの車間距離の遠近に応じて変化する画像IMの平面上の表示サイズとのギャップに左右されにくい処理を実現する。
【0033】
・1.1 表示ブロックの効果
上述のように、フロー抽出部12が、時間的に前後する前記区画画像AIM間のフローFlwを抽出すると、表示ブロック管理部14が、三次元空間にて予め定められた位置及び大きさの仮想ブロックIBを画像IMの二次元の画像座標系UVに表示ブロックBDとして投影する。そして、フロー判定処理部16は、フローFlwの始点[U0, V0]又は終点[U1, V1]での前記表示ブロックBDの大きさを参照して当該フローFlwの有効性を判定処理する。
従って、フロー判定処理部16は、三次元空間での対象物の大きさを参照しつつ、その表示ブロックBDの範囲内外のフローFlwの有効性を判定することができる。このため、車間距離に応じた表示大のギャップを表示ブロックBDの参照により解消して、精度良くフローFlwの有効性を判定することができる。
このように、画像IMのみを対象とする画像処理ではなく、実際の三次元空間での対象物の大きさを参照してフローFlwの有効性を判定するため、自車MTと接近車MA等の移動体との車間距離に変化があっても、フローFlwの検出やそのグループ化の精度を安定させることができる。そして、フローFlw群に基づいて同一の移動体の移動を連続して安定的に抽出することができる。
表示ブロックBDを使用したフローFlwの有効性判定処理により、車間距離に応じた表示大のギャップ解消し、移動体の検出精度を向上させることができる。
特に、自車MTと接近車MAとの車間距離が刻々と変化する接近車MAの検出では、遠近法の影響により同一の接近車MAから抽出されるフローFlwの数が接近に伴って増加し、また範囲が拡大しても、表示ブロックBDを参照することで、フローFlwの有効性、接近車MAの同一性、フローFlwのグループ化、及び無効なフローFlwの除去等を効果的に処理することができる。
【0034】
<1.2 表示ブロック半径>
実施例1では、表示ブロックを表すデータ構造をより簡易な仕組みとすることができる。この例では、表示ブロック管理部14が、表示ブロック半径関連処理18を備える。
この表示ブロック半径関連処理18は、当該表示ブロックBDを円近似するとともに、近似した円の半径を表示ブロック半径BDrとして当該表示ブロックBDの大きさに関連させる。
【0035】
再度
図3を参照すると、表示ブロックBDを円近似すると、その表示ブロック半径BDrの値を特定するのみで、表示ブロックBDの特徴を管理することができる。すなわち、表示ブロック管理部14は、仮想ブロックIBの仮想ブロック半径IBrの長さに対応する表示ブロック半径BDrを管理することで、実空間の大きさが画像IMの座標値[U, V]毎にどの程度の大きさとなるか、表示ブロック半径BDrを用いて管理することができる。
この表示ブロック半径BDrは、リアルタイムに必要な時点で算出するようにしても良いし、実施例2の手法により予め算出しマップ化しておくようにしても良い。マップ化しておく場合、表示ブロック管理部14は、予め、この表示半径マップ34を記憶する。
また、表示ブロックBD又は表示ブロック半径BDrを画像IMの座標値[U, V]に対応させるのではなく、実空間での位置を表すワールド座標系XYZの座標値[X, Y, Z]に対応させる際には、予め画像座標系UVとワールド座標系XYZとを対応させたマップ(特許文献5の計測マップ,XZtoUVマップ)を使用して対応させると良い。
【0036】
図5(A)及び(B)に示すように、表示ブロック半径BDrで特定される円近似した表示ブロックBDは遠近(車間距離)に応じた表示ギャップを良好に表すことができる。このため、簡易なデータ構造を使用して正確な処理を高速に実行することができる。さらに、
図5(A)に示す広角レンズを用いた画像IMであっても、そのゆがみの影響をなくしてフローFlwの有効性判定処理を単純化することができる。
【0037】
・1.2 表示ブロック半径の効果
上述のように、表示ブロック半径関連処理18が、当該表示ブロックBDを円近似するとともに、近似した円の半径を表示ブロック半径BDrとして当該表示ブロックBDの大きさに関連させるため、半径という簡易なデータで、三次元空間での遠近に対応した表示ブロックBDの情報を特定し、表現することができる。そして、座標値と表示ブロック半径BDrという簡易なデータ構造とすることで、処理を正確かつ高速にすることができ、特に、リアルタイム処理を低コストで実現することができる。
【0038】
<1.3 仮想ブロックと検出用速度>
実施例1では、表示ブロックBDの参照により静止物等から生じるフローFlwを良好に無効とすることができる。この例では、前記表示ブロック管理部14が、仮想ブロック特定処理20を備える。
この仮想ブロック特定処理20は、前記三次元空間にて前記自車MTに接近する車両について予め定められた検出用速度に基づいて、前記仮想ブロックIBの前記三次元空間での大きさを特定する。
【0039】
再度
図3を参照すると、それぞれの表示ブロックBDの大きさは仮想ブロックIBの位置及び大きさに応じて定められる。そして、仮想ブロックIBの大きさは、球体とする際には、仮想ブロック半径IBrの長さとして任意に設定できる。この仮想ブロック半径IBrは、ワールド座標系XYZでの実際の長さに応じて定めても良いが、この例では、検出用速度に応じて定めることで、無効なフローFlwの判定処理を簡易に実現する。
【0040】
例えば、ビデオレート(1/30 [sec] )間で接近する接近車MAの移動により検出したフローFlwの始点[U0, V0]から終点[U1, V1]を実空間上の直線移動成分として速度に換算し、その検出用速度(設定上限速度)で指定したしきい値条件を満足するかの判定を行うことで、無効なフローFlwを排除することができる。すなわち、路面等の背景は静止しており速度が0 [m/sec]であるため、路面等から生じたフローFlwの速度は検出用速度以下となる。
【0041】
仮想ブロックIBがフローFlw発生の源泉であるため、この仮想ブロックIBの大きさを検出用速度に応じて定めると無効なフローFlwを排除しやすくなり、さらに、表示ブロックBDの大きさが有効なフローFlwに必要な速度以上の速度と対応するため、表示ブロックBDを参照としたフローFlwの有効性判定処理にて、同様に、速度が0で無効となるフローFlwを排除しやすくなる。
このように、仮想ブロックIBを、検出用速度に応じた半径に持つ球(あるいはN角形)を設定することで、フローFlwの有効性を判定する最適な大きさを得ることができる。
【0042】
・1.3 仮想ブロックと検出用速度の効果
上述のように、仮想ブロック特定処理20が、三次元空間にて前記自車MTに接近する車両について予め定められた検出用速度に基づいて、前記仮想ブロックIBの前記三次元空間での大きさを特定するため、表示ブロックBDで特定される三次元空間での大きさに満たないフローFlwがある際には、当該フローFlwは検出用速度に満たないため、無効と判定することができる。このように、検出用速度に基づいて仮想ブロックBDの大きさを定めることで、仮想ブロックIB及び表示ブロックBDフローFlwの有効性を自然に判定できる最適な大きさとすることができる。
【0043】
<1.4 仮定地上高Yconst>
実施例1では、画像IMの2つの座標値[U, V]とワールド座標系の3つの座標値[X, Y, Z]とを実用的に対応させることができる。この例では、表示ブロック管理部14が、仮定地上高処理22を備えた。
仮定地上高処理22は、仮想ブロックIBの三次元空間での高さを当該三次元空間にて予め定められた仮定地上高Yconstに仮定して、仮想ブロックIBを画像座標系UVでの表示ブロックBDの位置に投影する。
【0044】
図6を参照すると、実施例1ではカメラ10を自車MTの後方に設置し、自車MTの後方の走行環境を撮影する。カメラ10を下向きに傾けて設置することで、接近車MA等の移動体を撮像できる範囲を広くしている。そして、カメラ10の光軸(z軸)を法線とする平面でカメラ10の焦点位置にある平面がイメージプレーンIP(特許文献5での理想平面)である。
図6に示すように、仮定地上高Yconstは、フローFlwを抽出する特徴量の多いバンパー付近の高さとすると良い。第1の仮定地上高Yconst1はバンパーと車体とのつなぎ目、第2の仮定地上高Yconst2はバンパー下部と路面GTとの境界で輝度差が大きく現れやすい高さである。
【0045】
図7(A)に示すように、仮定地上高Yconstを使用すると、撮像範囲の三次元空間に仮定地上高Yconstによる切断平面を定義することができる。そして、フローFlwは仮定地上高Yconst平面上を移動する。
図7(B)に示すように、
図7(A)に示すフローFlwの終点[U1, V1]の表示ブロックBDを参照すると、カメラ10に近い側の表示ブロックBDが大きく現れる。
この例では、仮定地上高Yconstによる切断平面上にて、表示ブロックBDの大きさを参照して、各フローFlwの有効性を判断することができるため、各フローFlwが同一の接近車MAから生じているか否かの判定や、個々のフローFlwが同一の接近車MAによる連続したフローFlwであるのかの判定や、接近車MAの車速を計算して各フローFlwが次に現れる予想位置の算出などを高精度に行うことができる。
すなわち、仮定地上高Yconstと、表示ブロックBDとを使用することで、各フローFlwの有効性の判定処理を低コストで効果的に行うことができる。
【0046】
・1.4 仮定地上高Yconstの効果
上述のように、仮定地上高処理22が、前記仮想ブロックIBの前記三次元空間での高さを当該三次元空間にて予め定められた仮定地上高Yconstに仮定して、前記仮想ブロックIBを前記画像座標系UVでの前記表示ブロックBDの位置に投影するため、画像IMの2つの座標値[U, V]とワールド座標系XYZの3つの座標値[X, Y, Z]とを実用的に対応させることができる。しかも、対象物の高さを一定値に仮定することで、抽出されるFlwの連続性を高めることができる。
そして、仮想ブロックIBの高さを仮定地上高Yconstとするため、表示ブロックBDは同一の高さの仮想ブロックIBについての遠近による大きさの相違を示すデータとなり、遠方から至近距離まで直線的で円錐型となる表示ブロックBDを得ることができる。
【0047】
<1.5 有効性判定処理>
本実施例1では、表示ブロック管理部14は、表示ブロックBDを生成するのではなく、予め作成された表示ブロックBDについてのデータをマップとして記憶しておき、フローFlwの有効性判定処理に際して参照するようにしても良い。
【0048】
この例では、表示ブロック管理部14は、表示半径マップ34を記憶すると良い。
表示半径マップ34は、画像IMに撮像される範囲の三次元空間にて予め定められた位置及び同一の大きさの仮想ブロックIBを前記画像の二次元の画像座標系UVに表示ブロックBDとして予め投影したデータである。この表示半径マップ34に含まれるデータは、画像IMの座標値[U, V]又はこの座標値に対応するワールド座標系XYZでの座標値[X, Y, Z]と、表示ブロックBDの大きさやその表示ブロック半径BDrとを対応させたデータである。この表示ブロック半径BDrを対応させたマップを特に表示半径マップ34という。
そして、フロー判定処理部16は、フローFlwの有効性の判定に際して、表示半径マップ34を参照することで、前記フローFlwの始点[U0, V0]又は終点[U1, V1]での前記表示ブロックBDの大きさのデータを使用することができる。
【0049】
フロー判定部16は、表示ブロック管理部14が生成するデータを参照する場合も、表示半径マップ34を参照する場合も、同一の情報処理を行うことができる。
フロー判定部16による有効性判定処理はニーズや必要な精度に応じて多様であるが、ここでは、上述した有効性判定処理の他、(1).グループ化、(2).動的テンプレート、(3).他のマップとの関係について開示する。
【0050】
・1.5(1) グループ化
フローFlwの有効性判定処理の一種に、接近車MAの識別と接近の程度等の判定がある。
一般に、検出したフロー群のうち、フロー位置、フロー長及びフロー向きに基づいて接近車MAの可能性のあるフローFlwを抽出し、このフローFlwに隣接するフローFlwの集合をグループ化して、このフローグループFlwGが接近車MAに起因するフロー群であるとして、接近車MAを特定する。
そして、1台の接近車MAを細かくパーツ単位(例えば、タイヤ・窓・ライト・ボディ・・・)で監視したとしても、全てのパーツの持つ移動量や移動方向は接近車MAとの移動と一体であるため、同じ移動成分となる。従って、等しい性質(速度、方向、その連続性)を持つフローFlwの集合を接近車MAと推定することができる。
【0051】
このように、カメラ10から入力される画像IMに基づいてフローFlwを抽出する後方監視システム等では、検出したフローFlwのグループ化により、接近車MAの有無及びその接近の程度等を判定することができる。
また、フローFlwの性質に強い類似性のあるフローグループFlwGがある領域と、そうでない領域とを情報処理により区別することができる。このフローFlwの分布に基づいた評価を併用することもできる。一方、任意のある時点(画像間)で単独に存在するフローFlwと、その他類似要素から発生するノイズや誤検出フローを分別して接近車MAの存在を判定するのは困難である。
【0052】
フローFlwのグループ化処理はフローFlwの有効性判定に有用である。しかし、フローFlwが理想的に集合した分布をなす車間距離の範囲は短く、車間が離れすぎても近づきすぎても隣接フロー群の評価が困難で、望ましいグループ化の処理ができなくなる。
【0053】
図8に示す例では、フロー判定処理部16は、
図8(A)にて抽出したフローFlwを
図8(B)に示す表示ブロックBDに変換している。
図8(A)では、フローFlwであることが判明するようにフローFlwを示す矢印を大きく描いている。
【0054】
図8(B)に示す例では、 フロー判定処理部16は、表示ブロックBDの重なり合いに基づいてフローFlwをグループ化する。抽出されたフローFlwは、フローグループFlwG(1)と、フローグループFlwG(2)と、フローグループFlwG(3)とに区分される。
このようにフローFlwをグループ化することで、画像IMでの大きさではなく、実空間での大きさに基づいてグループ化することができる。このグループ化により、個別のフローFlwを対象とした接近車MAの判定処理よりも容易に接近車MAの有無を判定することができる。
このように、フロー終点[U1, V1]の表示ブロックBDに基づいてフローFlwをグループ化することで、接近車MAの検出精度を向上させることができる。
【0055】
・1.5(2) 動的テンプレート
上述したグループ化処理により接近車MAを発見しても、さらに車間距離が縮まると、接近車MAがズームアップされた状態となり、区画画像AIMに対して接近車MAの特徴が大きくなりすぎることで、フローFlwが離散化し、グループを構成するフローFlwがなくなり、単独フローFlwのみとなると、接近車MAを見失ってしまう。
この場合、単独フローFlwに関しても、周辺にテンプレートT(区画)を動的に追加できれば、単独フローFlwから派生するフローFlwで再びグループを形成できる。このテンプレートTの動的追加により、車間が詰まった状態でも接近車MAの連続検出性能を確保できる。
この動的なテンプレートTの配置に際して、表示ブロックBDを使用すると、極めて効果的な位置にテンプレートTを配置することができる。
また、全体のテンプレートTを粗くすることで情報処理量を減少させつつ、接近車MAの候補となるフローFlwが検出された際にその周辺に動的にテンプレートTを配置することで接近車MAの検出精度を高める際にも、表示ブロックBDを参照した動的テンプレートの配置が有効である。
【0056】
この動的テンプレートTの追加は、正規のフローFlwの検出位置に存在する仮想ブロックIBの周辺には、別の仮想ブロックIBが存在するものと仮定し、動的テンプレートTを配置する処理である。動的テンプレートTは、表示ブロックBDに基づいて配置することで、すなわち、フローFlwの検出位置から投影された二次元画像平面での仮想ブロックIBの表示サイズを基に配置することで、車間距離と物体の表示サイズに関するギャップに対応し、接近車MAを効果的に抽出することができる。
この例では、検出したフローFlwの終点[U1, V1]、さらに終点[U1, V1]の周囲に位置する表示ブロックBDの範囲内に新たなテンプレートを動的に追加することで、次画像IM、次々画像IMと連続してフローFlwを抽出することができる。
そして、連続検出されるフローFlwの挙動や連続検出性を確認処理することで、接近車MAの存在を判断しドライバーへ情報提示することができる。
【0057】
BDr[U, V]を画像IMの座標値[U, V]での半径マップの参照値とする。フローFlwの検出位置[U, V]に対し、線分[U ± BDr[U, V], V]はYconst平面と仮想ブロックIBの交線であるとして扱い、この線分 [U ± BDr[U, V], V]をM等分した分割点座標[U[i],V[i]]を求める。
[U[i],V[i]]=[(U[i]−2×R[i])+2×R[i]/M, V[i]] そして、分割点座標[U[i],V[i]]へ計M個の区画(テンプレートT)を登録する。
【0058】
この表示ブロックBDや表示ブロック半径BDrを用いた動的な区画の配置により、テンプレートマッチングを最適化することができ、かつ、この処理を低コストで行うことができる。そして、2つの画像IM間の最適化ではなく、テンプレートTの配置の連続的な最適化を継続することで、移動体の特徴部分を確実に追跡し続けることができる。
【0059】
検出した接近フローFlwの終端の表示ブロック半径BDrに基づいて、この終端の周辺に区画を動的に配置する手法では、検出フローFlwが接近車MAの輪郭部の位置から検出された場合でも、車間距離の遠近に関わらず、最低1/2以上は接近車MAの本体を示す位置へ区画を配置することができる。
【0060】
・1.5(3) 他のマップとの関係
表示ブロックBDを用いることで、画像IMの二次元座標にてフローFlwの有効性判定を行うことができるが、接近車MAの車速と関係する情報などワールド座標系XYZであるとより正確な判定が可能な項目もある。
このため、画像座標系UVとワールド座標系XYZとを相互に変換可能であると便利であるが、カメラ10が広角で線形とするには補正が必要となる場合などは、複雑な非線形方程式や多項方程式を求める必要があり、また、二次元での2つの情報では三次元の3つの情報(位置)を求めることはできない。
【0061】
同一出願人及び発明者の特許文献5には、駐車支援用の広角レンズを使用したバックアイカメラ10を元に画像座標系UVの二次元座標と、実空間のワールド座標系XYZの座標値との相関を円滑に取得するための計測マップが開示されている。
仮想ブロックIBの仮想ブロック中心IBcを、ある任意の高さYconst平面に位置するよう設定することで、特許文献5に開示した手法により、画像座標系UVの表示ブロック中心BDc[U,V]をワールド座標系XYZでの仮想ブロック中心IBc[X,Yconst,Z]に変換することができる。
さらに実施例2で開示する円盤円周点ICeiと仮想ブロック円周点IBeiとを対応させておくと、画像IMでの当該表示ブロックBDの円周分布や表示サイズ、表示ブロック半径BDrに関するワールド座標系XYZでのデータを取得することができる。
【0062】
画像座標系UVとワールド座標系XYZとを対応させるには、特許文献5記載の手法では、イメージプレーンIPで広角の補正処理をする際、中心からの距離が所定値以下の際にはTsaiの歪曲近似を実施し、所定値を超える際には対数近似を計算する。
同一出願人の特許文献6記載の手法では、所定値ではなく、所定範囲で連続的・段階的に補正手法を変化させて計算する。
表示ブロックBDを使用したフローFlwの有効性判定処理との関係では、どちらの補正手法も採用でき、また、計測マップの作成手法もどのようなものであっても良い。
【0063】
・1.5 有効性判定処理の効果
上述のように、表示ブロックBD又は表示ブロックBDrは様々なフロー有効性判定処理に有用であり、グループ作成、動的テンプレート登録、連続検出したフローFlw毎の評価(連続性の確認・移動成分の変化)などの処理の効率を高め安定させることができる。
【実施例2】
【0064】
<2 表示半径マップ生成装置>
<2.1 表示半径マップの生成>
次に、実施例2を開示する。実施例2は、表示半径マップ生成装置であって、三次元情報を簡易なデータ構造で二次元に投影させておくことで、オプティカルフローの処理に際してリアルタイムに三次元の情報を参酌しようとするものである。
表示ブロックBDのサイズを求める際に、浮動少数演算や除算処理を数回必要とするため、非常に高いシステム計算能力が必要とされる。すると、リアルタイム性を要求される接近車検出システムへの実装が難しい。そこで事前にオフライン計算した後、あらかじめ表示ブロックBDの大きさ、例えば表示ブロック半径BDrをフローFlwの有効検出範囲に絞りマップとして登録しておくと良い。事前にマップ化することによって、数値計算ではなくデータマップの参照という形で必要に応じて表示ブロックBDのデータを取得することができるため、処理の高速化が可能となり、高い計算コストを有しない安価なシステムでの実装が可能となる。
【0065】
実施例2の表示半径マップ生成装置200は、その主要な要素として、仮想ブロック生成部24と、表示ブロック算出部26と、面積算出部28と、表示ブロック半径算出部30と、相関生成部32と、表示半径マップ34とを備えている。
【0066】
図9を参照して各部(各工程)の内容を説明する。各部の情報処理は後述の仮想円盤ICによる算出とすることもできるため、対応する算式の番号を明記するが、
図9に示す例では、各数式による以外の情報処理によっても計算結果(表示半径マップ34)を得ることができる。また、各部の動作を時間的に順序づけて把握すると、一連の方法を構成する工程となる。各部及び対応する各工程の情報処理は、ECU等で実行されるプログラムによって実現することができる。
【0067】
まず、仮想ブロック生成部24は、画像IMに撮像される範囲の三次元空間で予め定められた同一の大きさの複数の仮想ブロックIBを生成する(仮想ブロック生成工程,式(2))。
表示ブロック算出部26は、当該複数の前記仮想ブロックIBをそれぞれ前記画像IMの二次元の画像座標系UVに投影することで表示ブロックBDを算出する(表示ブロック算出工程,式(3),(4),(5),(6),(7);(10))。
面積算出部28は、前記表示ブロックBDの面積を表示ブロック面積BDaとして算出する(面積算出工程, 式(8))。
図10に示すように、N角形の表示ブロック面積BDaから表示ブロック半径BDrを求めることができる。
表示ブロック半径算出部30は、前記表示ブロック面積BDaを円の面積とした際の半径を算出することで表示ブロック半径BDrを算出する(表示ブロック半径算出工程,式(9))。
相関生成部32は、前記表示ブロック半径BDrと前記画像IMの位置とを相関させることで表示半径マップ34を生成する(相関生成工程)。
これら各部の各処理(工程)は、対応する算式及び
図12に示す手順による計算処理を備えるようにしても良い。
【0068】
表示半径マップ34への登録値は、直径や面積そのものでも良いが、表示半径マップ34への登録値を半径とすることで、接近車MAの判定処理に都合が良い。なお、カメラ10と接近車MAとが接近しすぎると半径は発散していくため、適当な上限をつけ上限をクリップし、実用的には、表示マップ34への登録は適当な上限値までとすると良い。
この仮想ブロックIBおよび表示半径マップ34は、テンプレートTの動的な登録、フローFlwの連続性の確認や移動成分の変化を評価する基準、フローグループFlwGを生成して連続計測結果や履歴をFlwで共有する手法、ノイズ判定の際の制御用のパラメータなどに使用することができる。
【0069】
・計測マップとの関係
ワールド座標系XYZの座標値を使用して車両後方で有効監視エリアを定める。画像IMの左右方向に対応するX方向について最小値をXmin、最大値をXmaxとし、上下方向に対応するZ方向について最小値をZmin、最大値をZmaxとする。
有効監視エリアを[Xmin〜Xmax][Zmin〜Zmax]とし計測マップを8ビットとする。画像座標UV上の座標[U, V]は、X計測マップXmap、Z計測マップZmap上の座標データXmap[U, V]、Zmap[U, V]を参照することで、実空間の三次元座標[X,Y,Z]の8ビット換算値[Xpa, Yconst, Zpa]: −128 ≦ Xpa ≦ 127 0 ≦ Zpa ≦ 255(単位はマップbitとする。Z:255[マップbit]で実空間Zmax [mm])として取得できる。
【0070】
仮定地上高Yconstは計測マップ作成時に設定した固定値であるので、取り得るXpa, ,Zpaの値は256×256通りの組み合わせとなる。
従って、256×256サイズの表示半径マップ34(データテーブル)を作成し、Yp = Yconstと固定し、Xpa ,ZpaをもとのXp ,Zpへ換算した後、仮想ブロックIBの仮想ブロック中心IBcの位置を[Xp, Yconst, Zp]と定義することで、画像IM上に検出される全てのフローFlwに対応した表示ブロックBDの情報を表示半径マップ34に登録することができる。
表示ブロックBDの情報を表示ブロック半径BDrとする際には、この例では、表示半径マップ34は256×256サイズとなる。
【0071】
表示半径マップ34への登録を表示ブロック面積BDaではなく、表示ブロック半径BDr(直径でも良い)とすることで、表示半径マップ34への登録値を小さくしリソースを節約することができる。例えば、半径で20ピクセルの場合、表示半径マップ34登録に5ビット必要で、直径で40ピクセルの場合登録に6ビット必要となる。面積で1256ピクセルであると、マップ登録に11ビット必要となってしまう。
【0072】
このように、計測マップのX, Z位置を座標軸(参照キー)に持ち、対応する表示ブロックBDの表示サイズをデータ化した表示半径マップ34を作成することができる。
実空間上に想定した仮想円盤ICの表示サイズ(表示ブロック半径BDr)を定義した表示半径マップ34の導入により、接近車MAの判定をリアルタイム処理できる。すなわち、仮想ブロックIBを円盤に見立て、浮動少数演算、乗算処理などを必要とする仮想ブロックIBの画像上の表示サイズ計算を事前にオフライン計算しマップ化することで、フローFlwの有効性判定処理の計算コストを低減することができる。
特に画像IMに歪を含むよう広角カメラ10での対応において効率的に処理を実施できる。
【0073】
また、計測マップ上の三次元座標と、画像平面状の座標との逆相関を取るため、X, Z位置と画像IM上のU, V座標をマップ(以下 XZtoUVマップ)化すると良い。このXZtoUVマップの利用により、フローFlwの処理中の複雑な数値演算を回避することができ、効率的な処理を実現できる。
【0074】
・2.1 表示半径マップの生成の効果
上述のように、面積算出部28が、表示ブロックBDの面積を表示ブロック面積BDaとして算出し、表示ブロック半径算出部30が、前記表示ブロック面積BDaを円の面積とした際の半径を算出することで表示ブロック半径BDrを算出するため、実空間での三次元形状の大きさが遠近によって変化する程度を半径という簡易な長さの情報で表すことができる。そして、相関生成部32が、前記表示ブロック半径BDrと前記画像IMの位置とを相関させた表示半径マップ34を生成するため、画像IMのフローFlwの座標値[U, V]を特定すると対応する三次元空間での車間距離を反映させた大きさの情報を得ることができる。そして、画像座標系UVの座標値[U, V]をワールド座標系XYZの座標値[X , Y, Z]に予め対応させておく例では、フローFlwのワールド座標系での座標値[X , Y, Z]を特定すると、その位置での仮想ブロックBDの大きさを直ちに参照することができる。
また、画像IMの上下方向に対応する遠近について表示ブロックBD大きさの相違を半径として表す他、画像IMの左右方向にて表示ブロックBDの形状に歪みが生じても、表示ブロック半径BDrで管理することで表示ブロックBDを円にて扱うこととなるため、表示ブロックBDを使用した様々な有効性判定処理を低コストで安定して実行することができる。
このように、表示半径マップBDrを予め算出し、画像IMの座標値[U, V]又はワールド座標系XYZの座標値[X , Y, Z]に対応させておくことで、三次元を良好に二次元化し、高速処理が可能となり、フローFlwの有効性判定処理を低コストで高精度に実行することができる。
さらに、この例では、カメラ10の姿勢や、広角の有無及び程度や、画角や、その他レンズ歪みなどハードウエアの状態を設計上唯一の状態としなくとも、個別に表示ブロック半径BDrを算出することで遠近ギャップ等をソフトウエアの処理で解消することができる。すなわち、表示ブロック半径BDrを算出する手法により、カメラ10や撮像範囲についての設計上の選択肢を大幅に向上させることができる。
【0075】
<2.2 仮想円盤による算出>
本実施例2では、ワールド座標系XYZの仮想ブロックIBをカメラ座標系xyzでの計算を介して画像座標系UVの表示ブロック半径BDrと関連させるよりも具体的な情報処理を開示する。この例では、仮想ブロックIBを球とし、計算上、球体である仮想ブロックIBを二次元に投影するために仮想円盤ICを定め、この仮想円盤ICに情報処理を加えることで表示ブロックBDを算出する。
【0076】
すなわち、この例では、仮想ブロックIBの形状を円盤として扱うことができる。例えば、ワールド座標系の座標値[X,Y,Z] = [Xp,Yp,Zp]の位置で接近車MAを示すフローFlwが検出された場合、接近車MAを構成する仮想円盤ICの内の任意の一つがこの[Xp,Yp,Zp]を中心に移動したと考え、仮想円盤ICが画面に表示されるサイズ(表示ブロックBDの大きさ)を以下の手順1から手順9の情報処理により画像IM上への仮想円盤ICの投影面積として求める。
【0077】
図11に座標系の定義例を示す。
図11(A),(B)に示す例では、カメラ座標系xyzのx軸とワールド座標系XYZのX軸と画像座標系UVのU軸とは平行であり、カメラ座標系xyzのy軸と世界座標系XYZのY軸と画像座標系UVのV軸とが平行である。ワールド座標系XYZのZ軸は路面と平行で車両の後方に向き、カメラ座標系xyzのz軸はカメラ10の光軸と一致する。
以下、数式のデータ名(値や符号)の名称の末尾にwを付した値は特にワールド座標系XYZでの座標値であることを示し、末尾にcを付した値はカメラ座標系xyzでの座標値であることを示す。w又はcを付していない場合には、どちらであっても計算可能であることを示す。
【0078】
図12に示す例では、仮想円盤ICによる算出処理は、手順1から手順9までで、手順3から5はカメラ座標系xyzでの計算、手順6はワールド座標系XYZでの計算、手順7から9は画像座標系UVでの計算である。
【0079】
まず、カメラ座標系xyzの原点OCを、次のように表す。このカメラ座標原点OCは、レンズ焦点位置で、画像座標系U,Vの中心からカメラ座標系のz方向に焦点距離fの位置にある。
ワールド座標系[X, Y, Z] = [OrgXw, OrgYw, OrgZw]
カメラ座標系 [x, y, z] = [OrgXc, OrgYc, OrgZc] =[0,0,0]
求める仮想ブロック(球体又は円盤)の中心位置は、仮定地上高Yconstを採用し、次の通りである。
ワールド座標系[X, Y, Z] = [Xp, Yconst, Zp]
【0080】
・手順1: カメラ座標原点OCをワールド座標系XYZへ変換する。
カメラ座標原点OCの位置は[x, y, z] = [0,0,0]であるので、カメラキャリブレーションデータrnn, tnを用いると次式(1a)と表すことができ、カメラ座標原点ワールド座標 [OrgXw, OrgYw, OrgZw]は次式(1b)で求めることができる。なお、レンズ焦点位置はイメージプレーンIP上の中心となるのでレンズ歪の有無に関わらず、この座標変換式(1b)を適用することができる。
なお、式の番号を示す数字にa,b,c等のアルファベットが付されている式について、その式の番号を示す数字で言及する際には、アルファベットで識別するすべての式を含む。例えば、式(2)というときには、式(2a)と式(2b)とを含む。
式(1b)の添字の-1は逆行列てあることを示す
【0081】
【数1】
【0082】
・手順2:仮想ブロックベクトルIBvを算出する。
図13に示すように、仮想ブロック生成部24は、カメラ座標原点ワールド座標系OW[OrgXw, OrgYw, OrgZw]から前記仮想ブロックIBの中心IBo[Xp, Yp, Zp]までのベクトルVecを、仮想ブロックベクトルIBv[VecX, VecY, VecZ]として当該ワールド座標系にて算出する。仮想ブロックIBの中心IBoの高さYpは、ここでは仮定地上高Yconstであり、仮想ブロック生成部24は、次式(2)により仮想ブロックベクトルIBvを算出することができる。
【0083】
【数2】
【0084】
・手順3:仮想ブロック回転角IBeiを算出する。
仮想ブロック生成部24は、当該仮想ブロックベクトルIBv[VecX, VecY, VecZ]をカメラ座標系xyzに変換するとともに、当該仮想ブロックベクトルIBv[VecX, VecY, VecZ]の前記原点OCを中心とした回転角度を仮想ブロック回転角IBei[0, φ、ψ]として算出する。
すなわち、仮想ブロック生成部24は、ワールド座標系の仮想ブロックベクトルIBv[VecXw, VecYw, VecZw]をカメラの外部パラメータを使用してカメラ座標系の仮想ブロックベクトルIBv[VecXc, VecYc, VecZc]に変換する。
そして、仮想ブロック生成部24は、カメラ座標系xyzにて、原点(レンズ焦点)周りに各三次元軸まわりの回転角度[θ,φ,ψ]を求める。仮想円盤ICの回転は面積変化とは独立するのでθ=0.0(固定)と仮定する。すると、空間の回転変換より、次式(3a)が成り立つため次式(3b)及び(3c)にて仮想ブロック回転角IBei[0,φ,ψ]を求めることができる。
ここで、Y軸周り回転角φについてはφとφ±πの2通りの解が発生するが、表裏の関係となり、計算結果に影響は及ばず、調整不要である。
【0085】
【数3】
【0086】
・手順4:円盤円周点ICeiを算出する。
図14(A)に示すように、仮想ブロック生成部24は、前記原点OCの周りに、前記仮想ブロックIBの大きさに対応した半径rの仮想円盤ICを生成する。そして、仮想ブロック生成部24は、当該仮想円盤ICの円周上の点をN分割することで円盤円周点ICei[Xei, Yei, Zei]を算出する。記号eiのiは円周点の番号である。
ここでは、仮想円盤ICの初期角度[θ0,φ0,ψ0]=[0,0,0]とする。すなわち、仮想円盤ICをカメラ座標系xyzのyz平面に設定する。この仮想円盤ICの円周上の点を360度/N分割して、分割点の番号をeiとし、各円周上の分割点ICei[Xei, Yei, Zei]の位置を次式(4)により求める。仮想円盤ICの半径rは、仮想ブロックIBの実空間での大きさに応じて定めても良いし、上述した「1.3仮想ブロックと検出用速度」にて開示した手法で定めるようにしても良い。
【0087】
【数4】
【0088】
・手順5:円盤円周点ICeiを回転変換する。
図14(B)に示すように、仮想ブロック生成部24は、当該カメラ座標系xyzにて当該複数の前記円盤円周点ICei[Xei, Yei, Zei]を式(5)によりそれぞれ前記仮想ブロック回転角IBei[0, φ、ψ]で回転変換する。
【0089】
【数5】
【0090】
仮想円盤ICを構成するN角形のN点を求める計算についてワールド座標系を基準に計算(別解として後述)をしても良いが、ここでは、カメラ座標系を基準に回転等の変換計算を行う。カメラ座標系xyzの原点周りで回転の計算をすると、不要な虚像等が生じずに計算量や判別処理を低減することができる。
【0091】
・手順6:仮想ブロック円周点IBeiを算出する。
図14(C)に示すように、仮想ブロック生成部24は、回転変換した当該複数の前記円盤円周点ICei[Xeiθ, Yeiφ, Zeiψ]を前記ワールド座標系XYZに変換するとともに、次式(6)の計算により前記仮想ブロックベクトルIBv[VecX, VecY, VecZ]でシフト移動させることで、当該ワールド座標系XYZにて仮想ブロック円周点IBei[Xeiθp, Yeiφp, Zeiψp]を求める。
【0092】
【数6】
【0093】
このように、仮想ブロック生成部24は、外部パラメータの逆変換を使用して円盤円周点ICei[Xeiθ, Yeiφ, Zeiψ]の各頂点を一旦ワールド座標系に戻し、続いて、仮想円盤ICの各ワールド座標[Xeiθ, Yeiφ, Zeiψ]に仮想ブロックベクトルIBv[VecX, VecY, VecZ]を加算することで、ワールド座標系で表される実空間上でシフト移動し、オフセット分を調整する。
【0094】
・手順7:表示ブロック円周点BDeiを算出する。
前記表示ブロック算出部26は、ワールド座標系XYZの前記仮想ブロック円周点IBei[Xeiθp, Yeiφp, Zeiψp]を透視座標変換することで、次式(7)のように前記画像IMの画像座標系UVでの表示ブロック円周点BDei[Uei, Vei]に変換する。
すなわち、表示ブロック算出部26は、仮想ブロックIBの全円周点IBei[Xeiθp, Yeiφp, Zeiψp]を二次元の画像座標系UVに投影することで、表示ブロック円周点BDei[Uei, Vei]を算出する。
【0095】
【数7】
【0096】
・手順8:表示ブロック面積BDaを算出する。
前記面積算出部28は、当該複数の前記表示ブロック円周点BDei[Uei, Vei]に囲まれた前記表示ブロックBDの面積を表示ブロック面積BDaとして算出する。
すなわち、画像IM上の投影点[Ue1, Ve1]〜[UeN, VeN]に囲まれた領域について、表示ブロック面積BDaを求める。この、表示ブロック面積BDaは実際に画像IMに[Ue1, Ve1]〜[UeN, VeN]で囲まれた領域を描画して、その描画画素数から求めることもできるが、例えば、以下のように仮想円盤をN角形と見立ててヘロンの公式などを利用して近似的に求めることもできる。
【0097】
まず[Ue1,Ve1]〜[UeN, VeN]と同様に、仮想円盤ICの中心ICo[Xp Yconst, Zp]に関して投影座標変換を行い画像平面上の位置[Ue0, Ve0]を求める。
そして、[Ue0, Ve0]と[Uei, Vei], [Uei+1,Vei+1]の隣り合う2点で囲まれる3角形に着目する。
3点を結ぶ辺[ai,bi,ci]を次式(8a)により求める。
これを[Ue1, Ve1]〜[UeN, VeN]まで繰り返し実行して、ヘロンの面積公式で求めた各分割三角形の面積総和により、次式(8b),(8c)により仮想円盤ICの画像IM上での表示ブロック面積BDaを求める。
【0098】
【数8】
【0099】
なお、[Ue0, Ve0]あるいは[Ue1, Ve1]〜[UeN, VeN]が画像IMの外に変換されるときは、該当辺を画像IMの枠との交点でクリップ(切り取り)し、画面の隅とクリップ点で囲まれる領域を計算する。
全ての点が画面外に変換されるときや、三角形が一つも形成されないような位置は面積を0でクリップし無効扱いとする。
【0100】
・手順9:表示ブロック半径BDrを算出する。
続いて、表示ブロック半径算出部30は、前記表示ブロック面積BDaを円の面積とした際の半径を算出することで表示ブロック半径BDrを算出する。
すなわち、仮想円盤ICの大きさを示す場合、表示面積で取り扱うのではなく、求めた表示ブロック面積BDaについて表示ブロック半径BDrを次式(9)により変換して近似半径として扱うことが可能である。
特に歪みを持つカメラ10では、歪みの影響で投影した影響で外部に移る点が画面中央側へ偏芯するため表示仮想円盤がより真円に近くなる。よって円によるN角形の近似効率が良い。
【0101】
【数9】
【0102】
・手順10: 表示半径マップを生成する。
そして、相関生成部32は、前記表示ブロック半径BDrと前記画像IMの位置とを相関させることで表示半径マップ34を生成する(ステップS10)。
【0103】
図15(A)は広角カメラ10を使用した原画像、
図15(B)は特許文献5記載の手法で広角歪みを補正した補正画像で両者とも本実施例での画像IMである。
仮定地上高Yconstを設定し、画像座標系の解像度に応じた無限遠点に相当する位置から自車MTの近くまでに配置した球体の仮想ブロックIBの表示ブロックBDを求めた。この表示ブロックBDを画像IMに重ねた図を
図15(C)及び(D)に示す。
図15(E)及び(F)はそれぞれ
図15(C)及び(D)の表示ブロックBDのみを抜き出した図である。
このように、表示ブロックはカメラ10の広角の程度や、補正の手法等にかかわらず事後的な計算により求めることができる。
【0104】
次に、
図16から
図18を参照して仮想ブロックIBから表示ブロックBDを生成する際の変形について説明する。手順8では、表示ブロック面積BDaを算出する際に、仮想円盤ICをN角形で近似した。このN角形は、本来、真円を近似した正N角形とする。
【0105】
図16に示すように、画像IM上の表示では、投影時の遠近等により定義した仮想球体(球体の仮想ブロックIB)の設定位置(中心位置)によって異なる変形・扁平度を持つN角形が発生する。この変形度には、カメラ10のレンズの歪みや視差も影響する。
このため、表示ブロックBDは、厳密には円ではなく変形したN角形を使用してフローの有効性等の判定処理をすると理想的である。しかし、画像IMの座標値(位置)に応じて多様なN角形を個別に取り扱うのは非常に困難である。
このため、表示ブロックBDを近似円で取り扱うと良い。この近似円である表示ブロックBDであっても、(1)フローFlwの有効性判定処理時に、実空間への変換なく画像IM[U, V]の範囲でフローFlwの正誤評価等が可能であり、(2)画像IM[U, V]で評価する場合、半径で取り扱う方が容易である。
【0106】
再度
図15(C)を参照すると、広角歪み有りの非線形状態の画像IMでは、N角形は円に近い。
図15(D)を参照すると、広角歪みを補正した画像IMでのN角形は、楕円形状となっている。これら表示ブロックBDは、表示ブロック半径BDrから円を描画する手法では、画像の歪みや補正にかかわらず円形となる。
【0107】
次に、
図17から
図18を参照して
図12に示した上記手順5等の別解を検討する。
図12に示す手順の番号をnとして、手順nの別解にはaを付加して手順naとする。例えば、
図12に示す手順4の別解は手順4aである。
表示半径マップ34の作成に関しては、別解として、次のような円盤モデルを元にしても求めることができる。仮想ブロックIB(球体)の中心座標を[X,Y,Z] = [Xp,Yconst,Zp]半径をRとする。手順3までは上述した手法と同様である。
手順1:カメラ座標原点ワールド系OWを求める。
手順2:
図17に示すように、カメラ座標原点ワールド系OWと球体の中心を結ぶ距離L(ベクトルの長さ)を次式(10)により求める。
【0108】
【数10】
【0109】
そして、さらに球体の中心位置[Xp, Yconst, Zp]をカメラ座標系[xp, yp, zp]へ変換する。
手順3:カメラ座標系にて、[xp, yp, zp]への回転角度[θ,φ,ψ]を求める。
但し、θ:x軸周り、φ:y軸周り、ψ:z軸周りのカメラ座標系xyzでの回転角度である。また、ベクトルの回転を求めるため、拘束条件としてθ=0とする。
【0110】
手順4a:
図18(A)のように仮想円盤ICと、円盤中心を通る長さLのベクトルで構成されたモデルを定義する。この仮想円盤ICはN角形で定義してN個の頂点座標で与えると良い。
手順5a:
図18(B)及び(C)のように、仮想円盤ICと、円盤中心を通る長さLのベクトルを[θ,φ,ψ]= [θa,φa,ψa]分カメラ座標系で回転させる。
【0111】
手順6a: 仮想円盤ICを逆変換によりワールド座標系XYZへ戻す。別解では手順7以降は
図12に示す手順と同様である。
但し、この別解では、この時にφ については解がφaとφ±πの2つ発生するので、別途判別をしなければならない。よって、以下手順4b以降のように、
図12に示す提案した現手法で対応する方が判別の手間を省くことができ、かつ間違いが少ない。
【0112】
ここで、
図19を参照して
図12に示した手順での計算例を、手順nbとして再説明する。
手順4b:
図19(A)に示すように、仮想円盤をyz平面に設定したモデル定義する。仮想円盤はN角形で定義してN個の頂点座標で与える。
手順5b:
図19(B)に示すように、仮想円盤と、円盤中心を通る長さLのベクトルを[θ,φ,ψ]= [θa,φa,ψa]分カメラ座標系で回転させる。
【0113】
手順6b: 仮想円盤を逆変換によりワールド座標系へ戻す。
手順7b: ワールド座標系に戻した座標群について、カメラ座標原点分および仮想球体中心分のオフセット量を考慮し[Vecx, Vecy, Vecz]で円盤をシフトさせ仮想円盤N頂点をワールド座標系で求める。
つまりこの操作では、設定時にカメラ座標原点OCからの距離Lが無ければ(独立に扱えば)、φについて発生した解がφaとφ±πのどちらの場合でも、
図19(B)及び(C)に示すように、円盤面の裏表の関係となるので座標系操作に影響を与えない。
【0114】
・2.2 仮想円盤による算出の効果
上述のように、仮想ブロック生成部24が、仮想ブロックベクトルIBvと仮想ブロック回転角IBbとを算出し、これと前後して、仮想ブロック生成部24は、原点に前記仮想ブロックの大きさに対応した半径の仮想円盤ICを生成して当該仮想円盤ICの円周上の点をN分割することで円盤円周点ICeiを算出する。そして、仮想ブロックIB自体を対象として計算するのではなく、カメラ座標原点ワールド系OWを中心とする仮想円盤ICの円盤円周点ICeiを対象として回転変換すると、計算上判別の難しい虚像が現れることなく、位置が同一の仮想円盤ICの表裏として現れる。従って、個別に虚像であるか否かの判別をする必要がない。さらに、ワールド座標系XYZの前記仮想ブロック円周点ICeiを透視座標変換することで前記画像IMの画像座標系UVでの表示ブロック円周点BDeiに変換し、当該複数の前記表示ブロック円周点BDeiに囲まれた前記表示ブロックの面積を表示ブロック面積として算出するため、レンズ歪みや画角との関係等で表示ブロック円周点BDeiの形状が真円ではなくなる場合でも、N角形の形状として歪みを面積に正確に表すことができ、さらに、歪みのあるN角形の面積から表示ブロック半径BDrを求めることで表示ブロックBDを円形に修正することができる。
このように、仮想円盤を用いた算出により、虚像の判別等の計算量を低減し、さらに、広角その他の歪みがあっても歪みによる大きさ(面積)の変化に精度良く対応した表示ブロック半径BDrを求めることができる。