以下、本発明の実施形態を図面に基づいて説明する。
<第1実施形態>
<情報処理システムの構成>
図1は、本発明の第1実施形態に係る情報処理システム1Aの概略構成を示す図であり、図2は、情報処理システム1Aの要部構成を示すブロック図である。
情報処理システム1Aは、2眼のステレオカメラ2と、ステレオカメラ2に対してデータ伝送可能に接続する情報処理装置3Aとを備えている。
2眼のステレオカメラ2には、それぞれ撮像素子を有する2つの撮像系21、22が設けられている。撮像系21,22は、所定方向に沿って離隔配置され、カメラ正面の被写体OBを、同期されつつ同じタイミングで異なる視点から撮像するように構成されている。撮像系21,22によって同じタイミングで撮像される2画像は、いわゆるステレオ画像であり、データ線CBを介して情報処理装置3Aに送信される。
なお、ステレオ画像を構成する2画像のうち、撮像系21によって撮像されて取得される画像を、適宜「第1撮像画像」G1と称し、撮像系22によって撮影されて取得される画像を、適宜「第2撮像画像」G2と称する。
情報処理装置3Aは、例えばパーソナルコンピュータ(パソコン)で構成され、マウスやキーボードからなる操作部31と、例えば液晶ディスプレイで構成される表示部32と、ステレオカメラ2からのデータを受信するためのインターフェース(I/F)部33とを備えている。また、情報処理装置3Aは、記憶部34と入出力部35と制御部36とを有している。
記憶部34は、例えばハードディスクなどで構成され、後述する対応点探索処理を行うためのプログラムPGaなどが格納されている。
入出力部35は、例えばディスクドライブを備えて構成され、光ディスクなどの記憶媒体9を受け付け、制御部36との間でデータの授受を行うものである。
制御部36は、プロセッサーとして働くCPU36a、および情報を一時的に記憶するメモリ36bを有し、情報処理装置3Aの各部を統括的に制御するものである。制御部36では、記憶部34内のプログラムPGaを読み込んで実行することで、各種機能や情報処理などを実現する。
制御部36のメモリ36bには、記憶媒体9に記憶されているプログラムデータを入出力部35を介して格納させることができる。これにより、この格納したプログラムを情報処理装置3Aの動作に反映させることができる。
また、制御部36は、ステレオカメラ2で取得したステレオ画像を構成する2画像(具体的には、第1および第2撮像画像G1,G2)間において対応点を探索する処理を行うが、この対応点探索処理については後述する。更に、制御部36は、図40を示して説明したように、画像間の対応点から三角測量の原理に基づき、被写体OBの3次元位置を算出する。
表示部32では、制御部36で算出された被写体OBの3次元位置に基づく被写体OBの3次元画像が可視的に出力される。
なお、本実施形態では、説明を簡素化するために、ステレオカメラ2の収差は良好に補正されており、かつ撮像系21,22は、略平行(好ましくは完全に平行)に設定されているものとする。つまり、撮像系21,22の光軸が略平行(好ましくは完全に平行)に設定され、第1および第2撮像画像G1,G2で捉えられた被写体は、第1および第2撮像画像G1,G2の外縁に対して略同一の角度関係(好ましくは完全に同一の角度関係)を有しているものとする。また、実際のステレオカメラ2の構成がこのような条件になくても、画像処理によって同等の条件下で撮像されたステレオ画像に変換することも可能である。
<対応点探索処理>
情報処理装置3Aでは、制御部36において、ステレオ画像を構成する2画像間の対応点探索処理が行われる。
対応点探索手法としては、振幅成分を抑制した相関法が知られており、位相限定相関法やDCT符号限定相関法(参考論文:「画像信号処理と画像パターン認識の融合−DCT符号限定相関とその応用」貴塚仁志)などがある。これらの相関法は、パターンの周波数分解信号から、振幅成分を抑制した位相成分のみの信号を用いて類似度演算を行うため、画像を取得するためのステレオカメラ2における撮影条件の差(ここでは、撮像系21,22における撮影条件の差)や、ノイズなどの影響を受けにくく、ロバストな対応点検索が可能である。
ここでは、位相限定相関法を用いた対応点探索の基本原理について説明する。
○位相限定相関法を用いた対応点探索の基本原理:
ステレオカメラ2の撮像系21,22により同期して取得された第1および第2撮像画像G1,G2のうち、第1撮像画像G1を基準画像として設定し、第2撮像画像G2を参照画像として設定する。以下、基準画像G1および参照画像G2とも称する。
なお、ここでは、基準画像G1および参照画像G2は、それぞれ相互に直交するX方向およびY方向に沿って多数の画素がマトリックス状に配置されて形成されているものとする。また、基準画像G1および参照画像G2では、X方向に沿って所定数(N個)の画素が配列されることで長辺が形成され、X方向とは異なるY方向に沿って所定数(M個)の画素が配列されることで短辺が形成されているものとする。
図3は、基準画像G1と参照画像G2との間において対応点探索を行う際に、基準画像G1および参照画像G2に対して設定されるウィンドウの設定態様を例示する図である。なお、図3および図3以降の図では、基準画像G1および参照画像G2の長辺に沿ったX方向と、短辺に沿ったY方向とを明示するために、XYの直交する2軸が付されている。なお、基準画像G1および参照画像G2では、左下の画素が基準(例えば原点)とされ、各画素の位置がXYの座標(X,Y)で示されるものとし、例えば、X方向に1画素ずれるとX座標の値が1増加し、Y方向に1画素ずれるとY座標の値が1増加するものとする。
まず、図3(a)で示すように、基準画像G1上で指定される点(以下「指定点」と称する)Pを中心点として内包するウィンドウ(基準領域)W1が基準画像G1上に設定される。その一方で、図3(b)で示すように、ウィンドウW1のサイズと同じサイズを有するウィンドウ(比較領域)W2が参照画像G2における複数の位置に設定される。
なお、基準領域W1および比較領域W2では、それぞれX方向およびY方向に沿って複数の画素がマトリックス状に配列されている。具体的には、X方向に沿って所定数N1の画素が配列され、Y方向に沿って所定数N2の画素が配列されている。
次に、基準領域W1および各比較領域W2が演算処理の対象となる領域(処理対象領域)とされて、基準領域W1と各比較領域W2との相関を示す値(以下「相関値」と称する)が算出される。そして、各比較領域W2に係る相関値(ここでは、後述するPOC値)に基づき、参照画像G2上で指定点Pに対応する点(対応点)が検出される。
更に、基準画像G1に対して、図4(a)の矢印で示すように、指定点Pを中心として内包する基準領域W1が、上方向(+Y方向)から順に、左から右方向(X方向)に沿って1画素ずつずらされながら時間順次に設定され、各指定点Pに対応する対応点が、参照画像G2上で検出される。
つまり、基準画像G1については、+Y方向から−Y方向に向けて並んだX方向に平行な各画素列に沿って、指定点Pが時間順次に設定される。そして、X方向に平行な1つの画素列に沿った指定点Pの設定が完了すると、1画素だけ−Y方向に位置するX方向に平行な次の画素列に沿って指定点Pが時間順次に設定される。すなわち、指定点を内包する基準領域W1によって基準画像G1の走査(スキャン)が行われる。このスキャンの方向(スキャン方向)は、X方向に沿った方向、すなわちX方向に平行な方向となる。
なお、各対応点が検出される際には、図4(b)で示すように、参照画像G2に対して、比較領域W2が、上方向(+Y方向)から順に、左から右方向(X方向)に沿って1画素ずつずらされながら時間順次に設定される。
つまり、参照画像G2については、X方向に沿って、比較領域W2が時間順次に設定され、X方向に平行な1つの画素列に沿った比較領域W2の設定が完了すると、1画素だけ−Y方向にずれた位置に、X方向に沿って比較領域W2が時間順次に設定される。すなわち、参照画像G2が比較領域W2によって走査(スキャン)される。このスキャン方向は、X方向に沿った方向、すなわちX方向に平行な方向となる。
なお、指定点Pに対応する対応点が中心点となり得る領域が比較領域W2が設定される対象となる領域(設定対象領域)とされ、その限定された領域に比較領域W2が設定されるようにスキャンが行われることが、効率良く対応点が検出される上で好ましい。この設定対象領域については、撮像系21,22の配置、撮像系21,22の撮影方向(具体的には光軸の設定)、および撮像系21,22の撮影範囲(具体的には画角)などといった撮像系21,22に係る各種設定に従って適宜設定可能である。この設定対象領域の具体例については後述するが、例えば、図4(b)で示したように、参照画像G2のほぼ全体がスキャンされるように、比較領域W2が設定される態様などが挙げられる。
図5は、位相限定相関法を用いた対応点探索処理を説明するための図である。
位相限定相関法を用いた対応点探索処理では、まず、基準画像G1に対するウィンドウW1の設定T0aと、参照画像G2に対するウィンドウW2の設定T0bとが行われる。このとき、基準画像G1上のウィンドウW1内の画像領域(基準領域)と、参照画像G2上のウィンドウ内の画像領域(比較領域)とがそれぞれ抽出される。これらの画像領域については、次の数1のように表されるものとする。
ここで、上記の数1におけるf(n1,n2)およびg(n1,n2)は、基準画像G1上のウィンドウW1内の基準領域および参照画像G2上のウィンドウW2内の比較領域を示している。また、N1およびN2は、例えばN1=2M1+1、N2=2M2+1と設定されている。
次に、基準画像G1および参照画像G2のウィンドウW1,W2内の各画像領域に対し、次の数2で示す演算式を用いた2次元のフーリエ変換処理T1a、T1bが行われる。
なお、上記の数2のただし書におけるWの添字Pには、N1、N2が代入され、またkの添字sには、1、2が代入される。
このようなフーリエ変換処理T1a、T1bが施された各画像領域に対しては、次の数3で示す演算式を用いて、画像の振幅成分を除去するための規格化処理T2a、T2bが行われる。
規格化処理T2a、T2bが完了すると、次の数4で示す演算式を用いた合成処理T3が行われるとともに、数5で示す演算式を用いた2次元の逆フーリエ変換処理T4が行われる。これにより、各画像間の相関演算が実施されることとなり、その結果(POC値)が出力される。
以上の処理により、基準領域W1と比較領域W2との相関を示す演算結果(POC値)が得られ、例えば、図6で示すような結果(POC値)が得られる。
図6においては、ウィンドウ(N1×N2)内で相関が高い箇所のPOC値が大きくなっており、POC値のピークJcに対応する参照画像G2上のウィンドウW2内の位置が、基準画像G1上の基準領域W1の中心点(指定点)Pに対応した参照画像G2上の対応点に相当することとなる。
ここでは、1つの基準領域W1と、参照画像G2上に設定された複数の比較領域W2との間で相関演算が行われ、POC値のピークJcが検出される。その結果、基準画像G1上の指定点Pに対応した参照画像G2上の対応点が検出される。
更に、同様な手法により、基準画像G1に対して、指定点Pを中心点として内包する複数の基準領域W1が設定され、各指定点Pに対応した参照画像G2上の各対応点が検出される。
以上のような位相限定相関法を用いた対応点探索処理によれば、画像の振幅成分が除去され、画像の位相成分のみで相関演算が行われるため、輝度変動やノイズの影響が抑制されて対応点が精度良く検出される。
なお、POC値は、離散的に求められるため、隣接画素間で補間演算を行い、ピークJcの位置を1画素のサイズよりも細かいサブピクセルのサイズで推定することで、更に細かく対応点の検出を行うこともできる。補間演算の手法としては、離散的に求められたPOC値の分布から放物線の関数を求める手法などが考えられる。
ここまで、位相限定相関法による対応点探索の基本原理について説明したが、基準画像G1と参照画像G2との間で、各座標点の対応付けを行うためには、多数回の2次元フーリエ変換を含む2次元演算を行う必要性がある。したがって、2次元演算を単に繰り返し行ったのでは、演算処理に多大な時間を要してしまい、画像間の各座標点の対応付けを高速で行うことができない。
そこで、本願の発明者らは、1つの画像に対して複数回の2次元演算を高速で行う手法を創出することで、画像間における座標点の対応付けを高速かつ高精度で行う技術を創出した。
以下、1つの画像に対して複数回の2次元演算を高速で行うことができる2次元演算の手法について説明する。
○2次元演算の手法:
位相限定相関法による対応点探索では、離散的に存在する画素の画素値を用いてフーリエ変換が行われるため、離散フーリエ変換(discrete Fourier transform :DFT)が行われる。
ところで、2次元的に画素が配列される画像領域に対して2次元DFTを行うことは、一方向(例えば、Y方向)に沿った画素列ごとに1次元DFTを行った後に、その1次元DFTの結果に対して、一方向とは異なる他方向(例えば、Y方向と直交するX方向)に沿った画素列ごとに1次元DFTを行うことと等価であることが知られている。
そこで、本実施形態に係る情報処理システム1Aでは、制御部36により、図7で示すように、2次元的に画素が配列される基準領域W1および比較領域W2に関して、まず、一方向(例えば、Y方向)に沿った画素列(例えば、画素列Ly)ごとに1次元DFTの演算が行われる。このとき、1次元DFTの演算結果がメモリ36bに一時的に記憶される。そして、メモリ36bに一時的に記憶された1次元DFTの結果に対して、一方向とは異なる他方向(例えば、X方向)に沿った画素列(例えば、画素列Lx)ごとに1次元DFTの演算が行われることで、2次元DFTの演算が行われる。
また、本実施形態に係る情報処理システム1Aでは、基準画像G1に対して、複数の基準領域W1が時間順次に設定されて、その複数の基準領域W1に関する2次元DFTが行われる過程で、基準画像G1に対する基準領域W1の位置が、一方向(ここではX方向)に沿って時間順次に所定画素数(ここでは1画素)ずつずらされていく。
例えば、基準画像G1に対して、図8(a)で示すように基準領域W1が設定された次に、図8(b)で示すように基準領域W1が設定される。このとき、基準領域W1を構成するY方向にそれぞれ沿った複数の画素列のうち、最も+X側のY方向に沿った画素列Lyを除く、残余の画素列Ly(図8(b)で砂地ハッチングが付された画素列)については、前回の基準領域W1を構成するY方向に沿った複数本の画素列Lyと重複する。
つまり、基準画像G1に対して、(Z−1)回目(Zは2以上の自然数)に設定される基準領域W1と、Z回目に設定される基準領域W1とは、(Z−1)回目の基準領域W1の最も−X側の画素列Ly、およびZ回目の基準領域W1の最も+X側の画素列Lyを除いて、相互に重なり合う領域(重複領域)を有する。
そして、本実施形態に係る情報処理システム1Aでは、基準画像G1に対して(Z−1)回目に設定される基準領域W1を構成する画素列Lyごとに1次元DFTの演算が行われた結果(演算結果)がメモリ36bに保存される。そして、Z回目の基準領域W1のうち、(Z−1)回目の基準領域W1との重複領域を構成する画素列Lyに関しては、画素列Lyごとの1次元DFTが再度行われることなく、メモリ36bに保存された演算結果が再利用される。
つまり、重複領域については、メモリ36bに保存された同一の演算結果が用いられつつ、メモリ36bに記憶された演算結果に対して、X方向に沿った画素列Lxごとに1次元DFTの演算が行われる。その結果、基準領域W1に関する2次元演算が行われる。
ここで、仮に、基準領域W1のサイズを規定する所定数N1,N2をそれぞれ8とし、8個の画素によって形成される各画素列について1次元DFTを行う際の所要時間をAとし、1つの基準領域W1に関して2次元DFTの演算を行う際に要する時間をT1とすると、T1=A×8+A×8=16×Aとなる。
また、基準画像G1を構成する画素数を規定する所定数N,Mについて、N≫8,M≫8の関係が成立する場合には、基準画像G1の全域に渡って、指定点Pが指定されると、基準画像G1には、約N×M個の基準領域W1が時間順次に設定される。より詳細には、あるY座標に関してX方向に沿った約M個の基準領域W1が時間順次に設定され、この約M個の基準領域W1の列が、約N列分、時間順次に設定される。
このとき、基準画像G1に対して新たな基準領域W1が設定される度に、新たに1次元フーリエ変換の演算をすべき画素列Lyが1本増加する。よって、基準画像G1のあるX方向に沿った画素列上に指定点Pが順次に設定されていく際、すなわちあるY座標については、基準画像G1のX方向に沿った画素数に相当する約M回の1次元DFTの演算が行われ、この約M回の1次元DFTの演算には、A×Mの処理時間を要する。更に、基準画像G1の各Y座標すなわち約N列について、同様の処理時間を要するため、約N×M個の基準領域W1を構成する全画素列Lyに関する1次元DFTの演算を行う際に要する時間は、約A×N×Mとなる。
一方、約N×M個の基準領域W1に関する2次元フーリエ変換の演算を完了するために、約N×M個の基準領域W1をそれぞれ構成するX方向に沿った全画素列Lxの本数(約8×N×M本)に相当する回数分、画素列Lxごとの1次元DFTの演算が行われ、その処理に要する時間は、約A×8×N×Mとなる。
したがって、約N×M個の基準領域W1に関する2次元フーリエ変換を行う際に要する時間(本実施形態の所要時間)をTtotalとすると、Ttotal≒A×N×M+A×8×N×M=9×A×N×Mとなる。
なお、仮に、従来技術のように、約N×M個の基準領域W1に関して2次元DFTが行われる際に、重複する画素列Lyごとの1次元DFTの演算結果が再利用されることなく、各基準領域W1に関して、単に画素列Lyごとに1次元DFTの演算が行われた後に、画素列Lxごとに1次元DFTの演算が行われるものとすると、約N×M個の基準領域W1に関する2次元DFTに要する時間(従来の所要時間)をTstとすると、Tst≒M×N×T1=16×A×N×Mとなる。
このように、本実施形態に係る情報処理システム1Aでは、相互に隣接し合う(Z−1),Z回目の基準領域W1については、重複領域を構成する画素列Lyごとの1次元DFTが再度行われず、メモリ36bに保存された演算結果が再利用されるため、本実施形態の所要時間Ttotalは、従来の処理時間Tstと比較して、約半分(ここでは、Ttotal/Tst≒9/16)まで大幅に短縮化される。
また、本実施形態に係る情報処理システム1Aでは、基準画像G1に対して順次に設けられる複数の基準領域W1と同様に、参照画像G2に対して順次に設定され、相互に隣接し合う(Z−1),Z回目の比較領域W2についても、重複領域を構成する画素列Lyごとの1次元DFTが再度行われず、メモリ36bに保存された演算結果が再利用される。このため、参照画像G2に対して設けられる複数の比較領域W2に関する2次元DFTに要する時間も大幅に短縮化される。したがって、1つの画像に含まれた異なる画像領域に関する複数回の2次元フーリエ変換を高速で行うことが可能となる。
なお、ここでは、重複領域が7本の画素列Lyで形成されたが、これに限られず、重複領域が少なくとも1以上の画素列によって形成されれば、重複した演算の省略が図られるため、1つの画像に含まれた異なる画像領域に関する複数回の2次元フーリエ変換が高速で行われる。
○対応点探索処理の動作フロー:
図9から図11は、対応点探索処理の動作フローを示すフローチャートである。なお、本動作フローは、制御部36でプログラムPGaが実行されることで実現され、例えば、操作部31から所定の信号が制御部36に対して入力されたことに応答して、開始され、図9のステップS1に進む。
ステップS1では、ステレオカメラ2(具体的には、撮像系21,22)によりステレオ画像(具体的には、基準画像G1、参照画像G2)が撮影され、ステレオ画像が取得される。
ステップS2では、ステップS1で取得された基準画像G1に対し、指定点P、およびこの指定点Pを中心点として内包する所定のサイズ(所定サイズ)を有するウィンドウ(基準領域)W1が設定される。なお、ここで言う「所定サイズ」は、X方向に沿って所定数N1の画素が配列され、Y方向に沿って所定数N2の画素が配列された画像領域のサイズを示す。
ステップS3では、基準画像G1上の指定点Pに対応した参照画像G2上の対応点の探索が行われる(後で詳述)。
ステップS4では、ウィンドウW1によるスキャン対象が基準画像G1に存在するかが判定される。すなわち、基準画像G1の各画素について参照画像G2の対応点が探索されたか否かが判定される。ここで、スキャン対象が存在する場合には、ステップS2に進み、スキャン対象が残存しない場合には、本フローチャートの動作が終了される。
なお、ステップS4からステップS2へ進む度に、基準画像G1に対して、新規な指定点Pおよび基準領域W1が設定される。このとき、X方向に沿って基準領域W1が順次に設定される場合には、新規な基準領域W1と前回設定された基準領域W1とは、相互に重なり合うY方向に沿った1以上(ここでは7つ)の画素列を含んだ重複領域を有する。
図10は、上記ステップS3の動作に対応しており、対応点の探索動作を示すフローチャートである。
ステップS31では、ステップS2で設定された基準領域W1に関して2次元DFTの演算が行われる(後で詳述)。このとき、2次元のフーリエ変換処理T1a、および画像の振幅成分を除去するための規格化処理T2aが行われる。
ステップS32では、ステップS1で取得された参照画像G2に対し、所定サイズを有するウィンドウ(比較領域)W2が設定される。
ステップS33では、ステップS32で設定された比較領域W2に関して2次元DFTの演算が行われる(後で詳述)。ここでは、2次元のフーリエ変換処理T1b、および画像の振幅成分を除去するための規格化処理T2bが行われる。
ステップS34では、ステップS31における演算結果と、ステップS33における演算結果とに基づき、合成処理が行われる。ここでは、数4で示した演算式を用いた合成処理T3が行われる。
ステップS35では、合成処理T3の結果に対して、数5で示した演算式を用いた2次元の逆フーリエ変換処理T4が行われる。これにより、相関値(POC値)が求められる。
ステップS36では、ステップS35で求められた相関値(POC値)が解析されて、その解析結果がメモリ36bに記憶される。例えば、図6で示すようなPOC値の分布に基づき、POC値のピークJcの値と、ピークJcに対応する参照画像G2上の座標とが検出され、メモリ35bに記憶される。
まず、ステップS36の処理が1回目の場合には、1回目に設定された比較領域W2に対して算出されたPOC値の分布から、POC値の最高値(ピーク値)と、POC値が最高値を示す座標(ピーク座標)とが検出され、ピーク値とピーク座標とを示す情報(ピーク情報)が、メモリ36bに記憶される。そして、ステップS36の処理がa回目(aは2以上の自然数)以降の場合には、a回目に設定された比較領域W2に対して算出されたPOC値の分布から、POC値のピーク値とその座標(ピーク座標)とが検出される。このとき、もしも、新規に検出されたピーク値の方が、メモリ36bに記憶されているピーク情報に係るピーク値よりも高ければ、メモリ36bに記憶されるピーク情報が、新規に検出されたピーク値に係る情報(ピーク値とピーク座標とを示す情報)に書き換えられる更新処理が行われる。
ステップS37では、ステップS1で取得された参照画像G2に対し、基準領域W1に対応する全ての設定対象領域に比較領域W2が設定されたか否か判定される。ここで、参照画像G2上で全ての設定対象領域に比較領域W2が設定されていなければ、ステップS32に進み、全ての設定対象領域に比較領域W2が設定されていれば、ステップS38に進む。
なお、ステップS37からステップS32へ進む度に、参照画像G2に対して、新規な比較領域W2が設定される。このとき、X方向に沿って比較領域W2が順次に設定される場合には、新規な比較領域W2と前回設定された比較領域W2とは、相互に重なり合うY方向に沿った1以上(ここでは7つ)の画素列を含んだ重複領域を有する。
ステップS38では、メモリ36bに記憶されているピーク情報に基づき、基準画像G1上の指定点Pに対応した参照画像G2上の対応点が検出され、対応点の探索動作のフローが終了される。ここでは、全ての比較領域W2に対するピーク値を示すピーク座標が、参照画像G2上の対応点として検出される。
図11は、上記ステップS31の動作に対応しており、2次元DFTの動作を示すフローチャートである。
ステップS41では、処理対象領域(例えば基準領域W1)が一方向(ここではY方向)に沿った画素列(ここでは画素列Ly)に分割される。
ステップS42では、ステップS41で分割・生成された画素列のうち、前回分割・生成された画素列Lyと重複した画素列が存在するか否か判定される。ここで、重複した画素列が存在しなければステップS43に進み、存在すればステップS44に進む。
具体的には、基準領域W1に関する2次元DFTを行う場合には、基準画像G1に対して1つ目の基準領域W1が設定される際には、複数の基準領域W1の間で重複した画素列は存在しないため、必然的にステップS43に進む。一方、基準画像G1に対して、1画素ずつX方向にずらされながら基準領域W1が順次に設定される際には、順次に設定される複数の基準領域W1の間で重複した画素列が存在するため、ステップS44に進む。
ステップS43では、ステップS41で分割・生成された全画素列に関して、一方向(ここではY方向)に沿った画素列ごとに1次元DFTの演算が行われる。
ステップS44では、ステップS41で分割・生成された画素列のうち、前回分割・生成された画素列と重複していない画素列に関して、一方向(ここでは、Y方向)に沿った1次元DFTの演算が行われる。
ステップS45では、ステップS43およびステップS44で求められた1次元DFTの演算結果がメモリ36bに記憶される。なお、重複した画素列についての1次元DFTの演算結果については、前回のステップS43,S44において求められてステップS45で予めメモリ36bに記憶されているため、メモリ36bに記憶されているものが採用される。このような動作により、重複した画素列に係る1次元DFTの演算が省略される。
ステップS46では、処理対象領域に係る一方向(ここではY方向)に沿った1次元DFTの演算結果を用いて、他方向(X方向)に沿った画素列ごとに1次元DFTの演算が行われる。このとき、前回の処理対象領域との重複領域に係る重複した画素列については同一の1次元DFTの演算結果が用いられつつ、メモリ36bに記憶された1次元DFTの演算結果に対して、他方向沿った画素列ごとに1次元DFTの演算が行われることで、処理対象領域に関する2次元DFTの演算が行われる。また、規格化処理T2bも行われる。
また、比較領域W2に関する2次元DFTの動作については、図11で示した基準領域W1に関する2次元DFTの動作と同様な動作が行われるため、図11は、上記ステップS33の動作にも対応する。
但し、比較領域W2に関する2次元DFTを行う場合には、ステップS42では、参照画像G2に対して1つ目の比較領域W2が設定される際には、複数の参照画像G2の間で重複した画素列は存在しないため、必然的にステップS43に進む。一方、参照画像G2に対して、1画素ずつX方向にずらされながら複数の比較領域W2が順次に設定される際には、順次に設定される複数の比較領域W2の間で重複した画素列が存在するため、ステップS44に進む。
以上のように、第1実施形態に係る情報処理システム1Aでは、1つの画像(例えば、基準画像G1や参照画像G2など)に設定された複数の処理対象領域(例えば、基準領域W1や比較領域W2)について2次元演算(例えば、2次元DFTの演算)が行われる際に、2つの処理対象領域が重複する領域については、同一の1次元演算(例えば、1次元DFTの演算)の結果が利用される。このため、演算量の低減が図られ、1つの画像に関する複数回の2次元演算が高速で行われる。
そして、2つの画像(例えば、基準画像G1と参照画像G2)の間における座標点の対応付けを行う際に、1つの画像に関する複数回の2次元演算を含む手法(例えば位相限定相関法)が用いられる場合には、演算量の低減により、画像間における座標点の対応付けが高速かつ高精度で行われる。
更に、演算の高速化が図られた位相限定相関法により、画像間における座標点の対応付けが高速かつ高精度で行われる。
また、基準画像G1に対して指定点P、およびその指定点Pを含む基準領域W1が、一方向(例えばX方向)に沿って、所定画素数ずつずらされながら順次に設定される場合、すなわち、基準画像G1が基準領域W1により一方向に沿ってスキャンされる場合には、各指定点Pに対応する対応点が高速で検出される。このため、画像間における各座標点の対応付けが高速で行われることになる。
なお、1つの画像に関する複数回の2次元演算の高速化を図る上では、処理対象領域に関して先に1次元演算がなされる方向が、スキャン方向と異なる方向である必要性はなく、1次元演算の結果を保持しておき、重複する演算が省略されれば良い。
<第2実施形態>
上記第1実施形態では、1つの画像に関する複数回の2次元演算の高速化を図る上では、処理対象領域に関して先に1次元演算がなされる方向は、スキャン方向と異なる方向である必要性はないものとして説明した。
これに対して、第2実施形態に係る情報処理システム1Bでは、処理対象領域に関して先に1次元演算がなされる方向が、スキャン方向と異なる方向であり、メモリ36bの記憶容量が低減された情報処理装置3Bの採用が可能となる。
なお、情報処理装置3Bでは、制御部36により、記憶部34内のプログラムPGbが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第2実施形態に係る情報処理システム1Bは、第1実施形態に係る情報処理システム1Aと比較して、処理対象領域に関して先に1次元演算がなされる方向が限定される点で異なるため、以下、異なる点について主に説明する。
なお、基準画像G1上での基準領域W1によるスキャン、および参照画像G2上での比較領域W2によるスキャンは、同様な動作で行われ、基準領域W1に関する2次元演算、および比較領域W2に関する2次元演算についても、同様な動作で行われる。したがって、ここでは、基準画像G1上での基準領域W1によるスキャン、および基準領域W1に関する2次元演算を例にとって説明する。
図12は、第2実施形態に係るスキャンの方向と1次元演算の態様を説明するための図である。図12では、基準領域W1の所定サイズを規定する所定数N1,N2がそれぞれ8とされ、X方向がスキャン方向Dscとされている。
図12(a)〜図12(c)で示すように、例えば、基準画像G1に対して、基準領域W1が所定画素数(1画素)ずつスキャン方向に沿ってずらされながら時間順次に設定される。そして、各基準領域W1に関して2次元DFTの演算が行われる際には、まず、各基準領域W1がスキャン方向Dscとは異なるY方向に沿った画素列Lyに分割されて、Y方向に沿った画素列Lyごとに1次元DFTの演算が行われ、その後、その1次元DFTの演算結果に対し、スキャン方向Dscに沿った1次元DFTが行われる。
このとき、図12(a)で設定された基準領域W1を構成する8本の画素列Lyのうち、右方(+X側)の7本の画素列Lyが、図12(b)で設定された基準領域W1に含まれる。つまり、図12(a)で設定された基準領域W1を構成する右方(+X側)の7本の画素列Lyに関する1次元DFTの演算結果が、図12(b)で設定された基準領域W1を構成する左方(−X側)の7本の画素列Ly(図中砂地ハッチング部)に関する1次元DFTの演算結果として利用される。
また、図12(b)で設定された基準領域W1を構成する8本の画素列Lyのうち、右方(+X側)の7本の画素列Lyが、図12(c)で設定された基準領域W1に含まれる。つまり、図12(b)で設定された基準領域W1を構成する右方(+X側)の7本の画素列Lyに関する1次元DFTの演算結果が、図12(c)で設定された基準領域W1を構成する左方(−X側)の7本の画素列Ly(図中砂地ハッチング部)に関する1次元DFTの演算結果として利用される。
このように、第2実施形態に係る情報処理システム1Bでは、Y方向に沿った画素列Lyごとの1次元演算(例えば1次元DFTの演算)の結果が、次に設定される処理対象領域に係る2次元演算(例えば2次元DFTの演算)に利用される。このため、1次元演算の結果の記憶に必要な記憶部(例えばメモリ36b)の記憶容量が少なくても済む。したがって、情報処理装置3B、および情報処理システム1Bの小型化および製造コストの低減が図られる。
ここで、1次元演算の結果の記憶に必要な記憶部の記憶容量に関し、処理対象領域に関して先に1次元演算がなされる方向が、スキャン方向Dscと異なる場合(第2実施形態)と、スキャン方向Dscと同一である場合(比較例)とを比較する。
図13は、比較例に係るスキャンの方向と1次元演算の態様を説明するための図である。図13では、図12と同様に、基準領域W1の所定サイズを規定する所定数N1,N2がそれぞれ8とされ、X方向がスキャン方向Dscとされている。
図13(a)〜図13(d)で示すように、比較例では、例えば、基準画像G1に対して、基準領域W1が所定画素数(1画素)ずつスキャン方向に沿ってずらされながら時間順次に設定される。そして、各基準領域W1に関して2次元DFTの演算が行われる際には、各基準領域W1がスキャン方向Dscに沿った画素列Lxに分割されて、画素列Lxごとに1次元DFTの演算が行われた後に、その1次元DFTの演算結果に対し、Y方向に沿った画素列ごとに1次元DFTが行われる。このとき、重複する画素列Lxに関する1次元演算が行われるのは、1つのY座標に係るX方向に沿ったスキャンが終了して、1画素分ずれたY座標に係るX方向に沿ったスキャンが行われる際となる。
例えば、b番目(例えばb=1)に設定される基準領域W1を構成する下方(−Y側)の7本の画素列Lx(例えば図13(a))が、約(b+M)番目に設定される基準領域W1の上方(+Y側)の7本の画素列Lx(例えば図13(d)の図中砂地ハッチング部)と一致する。
よって、比較例では、あるY座標に沿ってスキャンした際に計算された7本分の画素列Lxに係る1次元DFTの演算結果が、次のY座標に沿ってスキャンする際の2次元DFTの演算に利用される。このため、1次元DFTの演算結果を再利用するために、メモリ36bには、7本分の画素列Lxに係る1次元DFTの演算結果を約M回分保持できる容量が必要となる。
これに対して、第2実施形態に係る情報処理システム1Bでは、前回計算された7本分の画素列Lyに係る1次元DFTの演算結果が、直後の2次元DFTの演算に利用される。このため、1次元DFTの演算結果を再利用するために、メモリ36bには、7本分の画素列Lyに係る1次元DFTの演算結果を1回分保持できる容量があれば良い。
したがって、第2実施形態では、比較例と比べて、1次元DFTの演算結果を再利用するためのメモリ36bの記憶容量が、約1/Mに低減される。
<第3実施形態>
上記第1および第2実施形態に係る情報処理システム1A,1Bでは、一方向(例えばX方向)および他方向(例えばY方向)に沿った画素数が同一であるウィンドウ(処理対象領域)W1,W2を挙げて説明した。
これに対して、第3実施形態に係る情報処理システム1Cでは、一方向(例えばX方向)および他方向(例えばY方向)に沿った画素数が異なるウィンドウ(処理対象領域)W1c,W2cが採用され、更に、処理対象領域W1c,W2cに関して先に1次元演算がなされる方向が、処理対象領域W1c,W2cの長手方向となる情報処理装置3Cが採用されている。
なお、情報処理装置3Cでは、制御部36により、記憶部34内のプログラムPGcが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第3実施形態に係る情報処理システム1Cは、第1および第2実施形態に係る情報処理システム1A,1Bと比較して、ウィンドウ(処理対象領域)W1c,W2cの形状、および処理対象領域W1c,W2cに関して先に1次元演算がなされる方向が限定される点で異なるため、以下、異なる点について主に説明する。
なお、基準画像G1上での基準領域W1cによるスキャン、および参照画像G2上での比較領域W2cによるスキャンは、同様な動作で行われ、基準領域W1cに関する2次元演算、および比較領域W2cに関する2次元演算についても、同様な動作で行われる。したがって、ここでは、基準画像G1上での基準領域W1cによるスキャン、および基準領域W1cに関する2次元演算を例にとって説明する。
図14は、第3実施形態に係る基準領域W1cの形状と2次元演算の態様を説明するための図である。図14では、基準領域W1cの所定サイズを規定する所定数N1,N2のうちのいずれか一方が8であり、他方が4とされている。
図14で示すように、基準領域W1cは、一方向(例えばX方向またはY方向)に沿った長辺と、一方向とは異なる他方向(例えばY方向またはX方向)に沿った短辺とによってそれぞれ形成される。つまり、基準領域W1cは、一方向に沿った長手方向と、他方向に沿った短手方向とを有する。
そして、基準領域W1cに関して2次元DFTの演算が行われる際には、まず、長手方向に沿った画素列(8×1画素)ごとに1次元DFTの演算が行われる。その後、長手方向に沿った画素列(8×1画素)ごとの1次元DFTの演算結果に対して、短手方向に沿った画素列(1×4画素)ごとに1次元DFTの演算が行われる。
このように、長手方向に沿った画素列ごとの1次元演算を先に行う態様(本実施形態)では、短手方向に沿った画素列ごとの1次元演算を先に行う態様(比較例)よりも、2次元演算に要する時間(所要演算時間)が短くて済む。
なお、図14では、短手方向に沿った画素列ごとの1次元演算を先に行う態様(比較例)が破線で示されている。比較例では、短手方向に沿った画素列(1×4画素)ごとの1次元演算が先に行われ、その後、長手方向に沿った画素列(8×1画素)ごとの1次元演算が行われる。
ここで、本実施形態の所要演算時間Tc1と比較例の所要演算時間Tc2とを比較した例を示す。
まず、画素列(8×1画素)の1次元DFTの演算に要する時間(所要時間)をAc、画素列(1×4画素)の1次元DFTの演算に要する時間(所要時間)をBcとすると、本実施形態の2次元DFTの所要演算時間は、Ac×4+Bc×8となる。
一般に、高速フーリエ変換(Fast Fourier Transform:FFT)を用いる場合には、FFTの演算処理に要する時間Tfftは、演算対象となる画素値の数をCnとすると、Tfft=Cn×log2(Cn)で示される。このため、所要時間Acは、24(=8×Log28)、所要時間Bcは、8(=4×Log24)となり、Ac=3×Bcとなる。
ここで、仮に、基準領域W1cに関して、スキャン方向に対して垂直な方向に沿って、2次元DFTの演算の前段の1次元DFTの演算が行われるものとする。
まず、2次元DFTの演算の前段の1次元DFTの演算については、基準画像G1のあるY座標についてスキャンが行われる際には、基準画像G1に対して新規な基準領域W1cが設定される度に、新たに1次元DFTの演算をすべき画素列が1本ずつ追加される。よって、基準画像G1のあるY座標については、おおよそ基準画像G1のX方向に沿った画素数(M)に相当する回数のY方向に沿った画素列ごとの1次元DFTの演算が行われ、更に約M回の1次元DFTの演算が、基準画像G1のY方向に沿った画素数(N)に相当する回数分行われる。
一方、2次元DFTの演算の後段の1次元DFTの演算については、おおよそ基準画像G1を構成する画素数(N×M)に、X方向に沿った画素列の本数を乗じた回数のX方向に沿った画素列ごとの1次元DFTの演算が行われる。
よって、比較例では、2次元DFTの演算の前段の1次元DFTの演算に要する時間が、約Bc×M×Nとなり、2次元DFTの演算の後段の1次元DFTの演算に要する時間が、約(Ac×4)×M×Nとなる。このため、比較例に係る所要演算時間Tc2は、約13×Bc×M×N(=(Bc+4Ac)×M×N)となる。
これに対して、本実施形態では、2次元DFTの演算の前段の1次元DFTの演算に要する時間が、約Ac×M×Nとなり、2次元DFTの演算の後段の1次元DFTの演算に要する時間が、約(Bc×8)×M×Nとなる。このため、本実施形態に係る所要演算時間Tc1は、約11×Bc×M×N(=(Ac+8Bc)×M×N)となる。
このように、第3実施形態に係る情報処理システム1Cでは、処理対象領域に関する2次元演算が行われる際に、長辺に沿った画素列ごとの1次元演算が、短辺に沿った画素列ごとの1次元演算よりも先に行われることで、2次元演算の高速化が更に図られる。
なお、メモリ36bの記憶容量の増大を考慮しなければ、2次元演算の高速化を図る上では、処理対象領域の短手方向とスキャン方向とが一致する必要性はなく、長辺に沿った画素列ごとの1次元演算が、短辺に沿った画素列ごとの1次元演算よりも先に行われれば良い。
<第4実施形態>
上記第3実施形態では、1つの画像に関する複数回の2次元演算の高速化を図る上では、処理対象領域の短手方向とスキャン方向とが一致する必要性はないものとして説明した。
これに対して、第4実施形態に係る情報処理システム1Dでは、処理対象領域の短手方向とスキャン方向とが一致すれば、メモリ36bの記憶容量が低減された情報処理装置3Dの採用が可能となる。
なお、情報処理装置3Dでは、制御部36により、記憶部34内のプログラムPGdが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第4実施形態に係る情報処理システム1Dは、第3実施形態に係る情報処理システム1Cと比較して、処理対象領域の短辺に沿った方向とスキャン方向との関係が限定される点で異なるため、以下、異なる点について主に説明する。
なお、第4実施形態に係るウィンドウ(基準領域、比較領域)W1d,W2dは、第3実施形態に係るウィンドウ(基準領域、比較領域)W1c,W2cと同様なサイズを有しているものとする。
また、基準画像G1上での基準領域W1dによるスキャン、および参照画像G2上での比較領域W2dによるスキャンは、同様な動作で行われ、基準領域W1dに関する2次元演算、および比較領域W2dに関する2次元演算についても、同様な動作で行われる。したがって、ここでは、基準画像G1上での基準領域W1dによるスキャン、および基準領域W1dに関する2次元演算を例にとって説明する。
図15は、第4実施形態に係るスキャンの方向と1次元演算の態様を説明するための図である。図15では、基準領域W1dの所定サイズを規定する所定数N1が4、N2が8とされ、X方向がスキャン方向Dscとされている例が示されている。
図15(a)〜図15(c)で示すように、基準領域W1dの短手方向(ここではX方向)とスキャン方向Dscとが一致している。
したがって、第4実施形態に係る情報処理システム1Dでは、Y方向に沿った画素列Lyごとの1次元演算(例えば1次元DFTの演算)の結果が、次に設定される処理対象領域に係る2次元演算(例えば2次元DFTの演算)に利用される。このため、1次元演算の結果の記憶に必要な記憶部(例えばメモリ36b)の記憶容量が少なくても済む。したがって、2次元演算の更なる高速化に加えて、情報処理装置3D、および情報処理システム1Dの小型化および製造コストの低減が図られる。
<第5実施形態>
第1〜4実施形態に係る情報処理システム1A〜1Dでは、撮像系21,22が離隔配置される方向と、1次元演算が行われる方向との関係は、特に限定されなかった。
これに対して、第5実施形態に係る情報処理システム1Eでは、情報処理装置3Eにおいて、基準画像G1上での基準領域W1によるスキャン、および参照画像G2上での比較領域W2によるスキャンの方向が、撮像系21,22が離隔配置される所定方向に対応する方向、すなわち、視差が生じている方向(視差発生方向)とされて、対応点の検出の高速化が図られている。更に、処理対象領域W1,W2に関して先に1次元演算がなされる方向が、スキャン方向とは異なる方向とされて、メモリ36bの記憶容量が低減されている。
この対応点の検出の高速化、およびメモリ36bの記憶容量の低減を図るためには、例えば、第2および第4実施形態に係る情報処理システム1B,1Dにおいて、スキャン方向と視差発生方向とを一致させれば良い。
なお、情報処理装置3Eでは、制御部36により、記憶部34内のプログラムPGeが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第5実施形態に係る情報処理システム1Eは、第2実施形態に係る情報処理システム1Bにおいて、スキャン方向と視差発生方向とを一致させたものである。よって、以下、第2実施形態に係る情報処理システム1Bと異なる点について主に説明する。
図16は、第5実施形態に係るスキャンの態様を説明するための図であり、図17は、第5実施形態に係る2次元演算の前段における1次元演算について説明するための図である。図16および図17では、基準領域W1および比較領域W2の所定サイズを規定する所定数N1,N2がそれぞれ8とされ、X方向がスキャン方向Dscおよび視差発生方向とされている例が示されている。
図16(a)で示すように、基準画像G1に対して基準領域W1が設定される際には、基準領域W1の中心点である指定点Pを通り、且つ視差発生方向(X方向)に延設される線(以下「視差基準線」とも称する)Ls上に、指定点Pに対応する参照画像G2上の対応点が存在することになる。
そこで、基準画像G1上で、ある視差基準線Lsに沿って各基準領域W1が設定されるスキャン時には、各基準領域W1が設定される度に、図16(b)で示すように、参照画像G2に対して、視差基準線Ls上に中心点を有する比較領域W2がスキャン方向Dscに沿って順次に設定される。つまり、あるY座標の指定点Pを中心とする基準領域W1に対して、参照画像G2上で比較領域W2を設定すべき領域(設定対象領域)が1本の視差基準線Lsに沿った領域に限定される。
このとき、比較領域W2に関する2次元演算の前段の1次元演算が、スキャン方向Dscとは異なるY方向に沿った画素列ごとに行われる。より詳細には、1つ目の比較領域W2が設定された際に、比較領域W2を構成するY方向に沿った全画素列に関して画素列ごとの1次元演算が行われ、2つ目以降の各比較領域W2が設定された際に、前回の比較領域W2とは重複しない画素列Lyに関する1次元演算が行われる。その結果、図17で示すように、参照画像G2の左端(−X側の端部)から右端(+X側の端部)まで、視差基準線Lsを中心とし、且つY方向に沿った画素列Lyごとに1次元演算が行われる。
そして、図17で示したような1つのY座標を中心とする各画素列Lyについての1次元演算の結果がメモリ36bに記憶される。この1次元演算の結果は、基準画像G1に対して同じ視差基準線Ls上に沿った他の位置に基準領域W1が設定される際に、参照画像G2上での比較領域W2によるスキャン時に利用される。
つまり、基準画像G1上で1つのY座標について基準領域W1によるスキャンがなされる場合、スキャン方向に沿って設定される複数の比較領域を構成する画素列Lyに係る1次元演算の結果がメモリ36bに蓄積される。そして、2つ目以降の基準領域W1に対して参照画像G2上で対応点が検索される際には、各比較領域W2を構成する画素列Lyに関して1次元演算が行われることなく、メモリ36b内に既に格納された1次元演算の結果が利用される。
このため、スキャン方向に沿って複数の基準領域W1が設定される場合に、1次元演算の結果の再利用が更に図られ、対応点の探索に必要な比較領域W2に関する2次元演算に必要な時間が低減される。その結果、画像間の対応点の探索の高速化が更に図られる。
但し、このような構成を採用するためには、メモリ36bに対して、参照画像G2のX方向に沿った画素数M個分の画素列Lyに関する1次元演算の結果を記憶するための記憶
容量を持たせる必要性がある。
しかしながら、第2実施形態で説明したように、比較領域W2に関して先に1次元演算がなされる方向(ここではY方向)が、スキャン方向Dsc(ここではX方向)とは異なる方向である。このため、再利用される1次元演算の結果が、同じ視差基準線Lsに沿って並ぶ画素列に係る1次元演算の結果といった具合に、ある程度限定される。したがって、1次元演算の結果の記憶に必要なメモリ36bの記憶容量の増大が極力抑制される。
なお、仮に、比較領域W2に関して先に1次元演算がなされる方向と、スキャン方向Dsc(例えばX方向)とが同一である場合には、第2実施形態でも説明したように、1次元演算の結果の再利用を図るためには、メモリ36bの記憶容量の増大が必要となる。
<第6実施形態>
第1〜5実施形態に係る情報処理システム1A〜1Eでは、1次元演算および2次元演算として、1次元フーリエ変換および2次元フーリエ変換が行われるものについて説明した。
これに対して、第6実施形態に係る情報処理システム1Fでは、情報処理装置3Fにおいて、2次元フーリエ変換を行う前処理として、基準領域W1および比較領域W2に対し、各領域の端部にあたる境界の不連続性を除去することを目的とした窓関数を掛ける処理が更に行われる。
なお、情報処理装置3Fでは、制御部36により、記憶部34内のプログラムPGfが読み込まれて実行されることで、各種機能や情報処理などが実現される。
図18は、第6実施形態に係る位相限定相関法を用いた対応点探索処理を説明するための図である。
図18で示す対応点探索処理は、図5で示したフーリエ変換処理T1a,T1bの前に、窓関数を掛ける処理TPa,TPbが加えられたものとなっている。より詳細には、基準画像G1に対するウィンドウ設定T0aとフーリエ変換処理T1aとの間に、窓関数を掛ける処理TPaが挿入され、参照画像G2に対するウィンドウ設定T0bとフーリエ変換処理T1bとの間に、窓関数を掛ける処理TPbが挿入される。
この窓関数を掛ける処理TPa,TPbでは、基準領域W1および比較領域W2に対し、例えば、次の数6で示されるハニング窓に係る係数が掛けられる。
そして、この窓関数を基準領域W1および比較領域W2に対して2次元的にそれぞれ掛ける演算(2次元演算)は、図7で示した2次元フーリエ変換と同様に、一方向(例えばX方向)に沿った画素列ごとに窓関数を掛け、その演算結果に対して、一方向とは異なる他方向(例えばY方向)に沿った画素列ごとに窓関数を掛けることと等価である。
そこで、ここでは、一方向(例えばX方向)に沿った画素列ごとに窓関数を掛け、その演算結果に対して、一方向とは異なる他方向(例えばY方向)に沿った画素列ごとに窓関数を掛ける処理が行われる。
そして、上記第1〜5実施形態に係る2次元フーリエ変換に係る構成を、この窓関数を掛ける処理TPa,TPbに適用すれば、1つの画像に関して、2次元的に窓関数を掛ける演算を高速で複数回行うことが可能となる。このため、上記実施形態と同様に、画像間における対応点の検索の高速化も更に図られる。
なお、上記第1〜5実施形態に係る2次元フーリエ変換に係る各構成を、この窓関数を掛ける処理TPa,TPbに適用すると、2次元演算の高速化や1次元演算の保持に要するメモリ36bの記憶容量の低減などといった上記第1〜5実施形態に係る効果と同様な効果が得られる。
<第7実施形態>
上記第1〜6実施形態に係る情報処理システム1A〜1Fでは、参照画像G2に対して比較領域W2が設定される度に、未だ1次元演算がなされていない画素列に関する1次元演算が行われた。
これに対して、第7実施形態に係る情報処理システム1Gでは、情報処理装置3Gにおいて、参照画像G2上で或るY座標(例えば、y1)の中心点を有する比較領域W2によりスキャンが行われる際に、まず、中心の画素のY座標がy1であるY方向に沿った全画素列に関して1次元演算が行われ、この演算結果が、順次設定される比較領域W2に関して2次元演算を行う際に利用される。つまり、順次に設定される複数の領域を構成する複数の画素列に係る1次元演算が予めある程度まとめて行われ、順次、その演算結果の一部が利用される。
なお、情報処理装置3Gでは、制御部36により、記憶部34内のプログラムPGgが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第7実施形態に係る情報処理システム1Gは、第5実施形態に係る情報処理システム1Eにおいて、1次元演算がある程度まとめて行われ、順次、その演算結果の一部が利用されるようにしたものである。よって、以下、第5実施形態に係る情報処理システム1Eと異なる点について主に説明する。
図19は、1次元演算がまとめて行われる動作について説明するための図である。図19では、基準領域W1および比較領域W2の所定サイズを規定する所定数N1,N2がそれぞれ8とされ、X方向がスキャン方向Dscおよび視差発生方向とされている例が示されている。
図19で示すように、参照画像G2上で中心点のY座標がy1である比較領域W2でスキャンを行う場合に、まず、Y座標がy1である点を結んだ視差基準線Lsを中心とし、且つY方向に沿った全画素列Lyに関して1次元演算が行われる。つまり、参照画像G2のうち、Y方向に沿って所定数N2の画素を有し且つX方向に向けて並んだ複数の画素列Lyに関して、画素列ごとに1次元演算が行われる。このとき、全画素列Lyに係る1次元演算の結果がメモリ36bに記憶される。
ここで、1次元演算の対象となる全画素列Lyは、基準画像G1に対してY座標がy1である指定点Pを中心とする基準領域W1が設定された際に、この指定点Pに対応する対応点が中心点となり得る各比較領域W2(すなわち各設定対象領域)を形成する画素列Lyを網羅するものである。つまり、全設定対象領域に比較領域W2が順次に設定された際に、各比較領域W2を形成するY方向に沿った画素列Lyを網羅するものである。
次に、図19中の太線枠でも示すように、上記第2〜6実施形態と同様に、参照画像G2に対して、比較領域W2が、所定画素数ずつずらされながらX方向に沿って時間順次に設定される。
そして、中心点のY座標がy1であり、且つ順次に設定される各比較領域W2に関する2次元演算では、メモリ36bに記憶された1次元演算の結果に対してX方向に沿った画素列ごとに1次元演算が行われる。つまり、各比較領域W2が設定される度に、メモリ36bに記憶された各比較領域W2を構成する複数の画素列Lyに係る1次元演算の結果に対して、X方向に沿った画素列ごとに1次元演算が行われる。
このように、X方向に沿った一列に並ぶY方向に沿った全画素列Lyに関して1次元演算がまとめて行われることで、参照画像G2に対して比較領域W2が設定される度に、未だ1次元演算がなされていない画素列が判別されて1次元演算が行われるといった煩雑な演算が不必要となる。このため、1次元演算がまとめて行われる動作を、ハードウェアで構成される電子回路などを利用したパイプライン処理に適用することが容易に可能となり、複数回の2次元演算の高速化が更に図られる。
但し、このような構成を採用するためには、メモリ36bに対して、参照画像G2のX方向に沿った画素数M個分の画素列Lyに関する1次元演算の結果を記憶するための記憶
容量を持たせる必要性がある。
しかしながら、第2、5実施形態で説明したように、比較領域W2に関して先に1次元演算がなされる方向(ここではY方向)が、スキャン方向Dsc(ここではX方向)とは異なる方向である。
このため、再利用される1次元演算の結果が、同じ視差基準線Lsに沿って並ぶ画素列に係る1次元演算の結果といった具合に、ある程度限定される。したがって、1次元演算の結果の記憶に必要なメモリ36bの記憶容量の増大は極力抑制される。
ここで、2次元演算が2次元DFTの演算である場合について、対応点の探索動作の動作フローについて説明する。
図20は、第7実施形態に係る情報処理システム1Gにおいて、図9のステップS3の代わりに実行されるステップS3Aの動作に対応しており、対応点の探索動作を示すフローチャートである。つまり、図10および図11の代わりに実行される対応点の検索動作を示すフローチャートである。
ステップSP31では、図10のステップS31と同様な処理が行われる。
ステップSP32では、指定点Pすなわち基準領域W1の中心点のY座標が変更されたか否か判定される。ここで、指定点PのY座標が変更されていれば、ステップSP33に進み、変更されていなければ、ステップSP36に進む。なお、基準画像G1上に1つ目の指定点Pが設定された際には、指定点Pが変更されたと判定されるものとする。
ステップSP33では、参照画像G2において、視差基準線を中心とした全画素列が認識される。例えば、図19で示したように、Y座標がy1である点が結ばれた視差基準線Lsを中心とし、且つY方向に沿った全画素列Lyが認識される。
ステップSP34では、ステップSP32で認識された全画素列Lyに関してY方向に沿った1次元DFTの演算が行われる。
ステップSP35では、ステップSP34で求められた1次元DFTの演算結果がメモリ36bに記憶される。
ステップSP36では、参照画像G2に対して、比較領域W2が設定される。ここでは、Y座標がy1である点が結ばれた視差基準線Ls上に中心点が配置される比較領域W2が設定される。なお、ステップSP36が1回目である場合には、参照画像G2の最も−X側に比較領域W2が設定され、ステップSP36が2回目以降である場合には、前回よりも所定画素数(ここでは1画素)だけ+X側にずらした位置に比較領域W2が設定される。
ステップSP37では、メモリ36bに記憶された全画素列Lyに関する1次元DFTの演算結果のうち、ステップSP36で設定された比較領域W2を構成する画素列Lyに係る1次元DFTの演算結果が用いられ、X方向に沿った画素列ごとに1次元DFTの演算が行われる。このとき、規格化処理T2bも行われる。
ステップSP38では、ステップSP31における演算結果と、ステップSP37における演算結果とに基づき、合成処理が行われる。ここでは、数4で示した演算式を用いた合成処理T3が行われる。
ステップSP39〜SP41では、ステップS35〜S37と同様な処理が行われる。
但し、ステップSP41では、参照画像G2のうち、ステップS2で設定された基準領域W1に対応する視差基準線Lsに沿った全ての設定対象領域に比較領域W2が設定されたか否か判定される。ここで、全ての設定対象領域に比較領域W2が設定されていなければ、ステップSP36に進み、全ての設定対象領域に比較領域W2が設定されていれば、ステップSP42に進む。
なお、ステップSP41からステップSP36へ進む度に、参照画像G2に対して、視差基準線Lsに沿って新規な比較領域W2が設定される。つまり、X方向に沿って複数(例えば8つ)の画素がそれぞれ配列され、且つY方向に沿って所定数(例えば8つ)の画素がそれぞれ配列され、相互に重なり合う重複領域を有する複数の比較領域W2が参照画像G2に対して順次に設定される。
ステップSP42では、ステップS38と同様な処理が行われる。
このように、第7実施形態に係る情報処理システム1Gでは、第1方向(X方向)に沿って順次に設定される複数の領域を構成する画素列に係る1次元演算が予めまとめて行われる。このため、既に1次元演算が行われた否かといった判定が不要となり、パイプライン処理を利用した演算の高速化が可能となる。したがって、画像間における座標点の対応付けの更なる高速化が図られる。
なお、以上では、指定点PのY座標(y1)を通る参照画像G2の視差基準線Ls上に対応点が存在するものとして説明したが、撮像系21,22が並べられる方向と、基準画像G1および参照画像G2上の画素列の方向とが完全に一致しないことも有り得る。このため、例えば、視差基準線Lsから上下に若干ずれた画素についても、対応点があるか否か比較領域W2にてスキャンされても良い。
例えば、以下の動作を行うようにしても良い。
まず、指定点PのY座標がy1となると、参照画像G2上の、(i)Y座標がy1+1である点が結ばれた線を中心とし且つ視差基準線Lsに沿って並んだ全画素列Ly(図21(a))、(ii)Y座標がy1である点が結ばれた線を中心とし且つ視差基準線Lsに沿って並んだ全画素列Ly(図21(b))、(iii)Y座標がy1−1である点が結ばれた線を中心とし且つ視差基準線Lsに沿って並んだ全画素列Ly(図21(c))、に関してそれぞれY方向に沿った1次元演算が行われる。このとき、メモリ36bに、1次元演算の結果が記憶される。
次に、図21(a)〜(c)で示されたX方向に沿った3列の画素列Lyのうちの連続して並ぶ所定数の画素列Lyによって構成される比較領域W2が参照画像G2上に順次に設定される。このとき、各比較領域W2を構成する所定数の画素列Lyに係る1次元演算の結果が、メモリ36bから選択的に読み出され、その所定数の画素列Lyに係る1次元演算の結果に対して、X方向に沿った画素列ごとに1次元演算が行われることで、各比較領域W2に関する2次元演算が行われる。
このように、視差基準線Lsから上下に若干ずれた画素についても、対応点があるか否か比較領域W2にてスキャンされるような構成を採用する場合には、1次元演算の結果を保持するために必要なメモリ36bの容量が若干増加する。しかしながら、視差基準線Ls上の画素についてのみ対応点が検索されるよりも、より正確な対応点が検出される。したがって、画像間の対応点の検出における高速化と高精度化とを図ることができる。
なお、ここでは、参照画像G2上での比較領域W2におけるスキャン動作について、ある程度まとめて1次元演算が行われる例を挙げて説明したが、これに限られない。例えば、参照画像G2上での比較領域W2におけるスキャン動作と同様に、基準画像G1上での基準領域W1におけるスキャン動作において、1次元演算がある程度まとめて行われ、順次、その演算結果の一部が利用されるようにしても良い。
<第8実施形態>
上記第1〜7実施形態に係る情報処理システム1A〜1Gでは、基準画像G1に対して基準領域W1が設定されると、参照画像G2上が比較領域W2によってスキャンされることで、画像間の対応点が検出された。
これに対して、第8実施形態に係る情報処理システム1Hでは、情報処理装置3Hにおいて、まず、基準画像G1に対して指定点Pが指定されると、指定点Pを中心点として内包し、かつ所定の間引き度合いで画素列が間引かれた所定サイズと同数の画素からなる低解像度の基準領域が設定される。そして、参照画像G2から所定の間引き度合いで画素列が間引かれた所定サイズと同数の画素から成る低解像度の複数の比較領域が設定されるとともに、各比較領域に関して2次元演算が行われ、指定点Pに対応する比較画像G2上の対応点の候補(対応点候補)が検出される。その後、基準領域および比較領域を設定するための画素列の間引き度合いが低減されるとともに、対応点候補の近傍に比較領域が適宜設定されつつ、最終的に対応点が検出される。つまり、低精度で対応点候補が検出され、その対応点候補の近傍について高精度で対応点が検出される。
なお、情報処理装置3Hでは、制御部36により、記憶部34内のプログラムPGhが読み込まれて実行されることで、各種機能や情報処理などが実現される。
第8実施形態に係る情報処理システム1Hは、第7実施形態に係る情報処理システム1Gと比較して、1次元演算がある程度まとめて行われ、順次、その演算結果の一部が利用される点で同様な構成を有する。但し、低精度で対応点候補が検出され、その対応点候補の近傍について高精度で対応点が検出される点が異なっている。そこで、以下、第7実施形態に係る情報処理システム1Gと異なる点を中心として説明する。
図22〜図31は、第8実施形態に係る位相限定相関法を用いた対応点探索処理の原理を説明するための図である。
図22〜図31では、基準領域W11〜W13(後述)および比較領域W21〜W23(後述)の所定サイズを規定する所定数N1,N2がそれぞれ9とされ、X方向がスキャン方向Dscおよび視差発生方向とされている例が示されている。なお、ここでは、基準画像G1上で設定された指定点PのY座標がy1であるものとして説明する。
基準画像G1上でY座標がy1である指定点Pが設定されると、図22で示すように、第7実施形態と同様に、参照画像G2について、中心の画素のY座標がy1であるY方向に沿った全画素列に関して1次元演算が行われる。具体的には、Y座標がy1である点が結ばれた視差基準線Lsが中心とされ、且つY方向に沿った全画素列Lyに関して1次元DFTが行われる。つまり、参照画像G2のうち、Y方向に沿って所定数N2の画素を有し且つX方向に向けて並んだ複数の画素列に関して、画素列ごとに1次元演算が行われる。このとき、全画素列Lyに係る1次元演算の結果がメモリ36bに記憶される。
続いて、低精度で対応点候補が検出され、その対応点候補の近傍について高精度で対応点が検出される。ここでは、(I)比較的低精度の第1対応点候補の検出、(II)比較的中程度の精度の第2対応点候補の検出、(III)比較的高精度の対応点の検出、が時間順次に行われる。
○第1対応点候補の検出:
まず、図23で示すように、基準画像G1上で指定される指定点Pを内包する画像領域(図23では、33×9画素の画像領域)から、X方向に所定の第1の間引き度合い(ここでは4画素ごとに1画素を取得、すなわち間引き率3/4)で、所定数N1本の画素列(図23では、斜線ハッチングが付された画素列)Lyが認識される。この所定数N1本の画素列Lyが認識されることで、図24で示すように、Y方向に沿って所定数N2の画素を有し、且つX方向に沿って所定数N1の画素を有する基準領域W11が、基準画像G1に対して設定されることになる。そして、基準領域W11に対して2次元演算(ここでは、2次元DFT)が行われる。なお、ここでは、指定点Pを内包する画像領域は、指定点Pを中心点とし、指定点Pを通る視差基準線Lsに沿って並んだ複数本(図23では、33本)の画素列Lyからなる。
次に、図25(a)で示すように、視差基準線Lsに沿って並んだ複数の画素列Lyに含まれる所定数(ここでは、N本)の画素列Lyによって構成された評価対象領域AR1(図中太枠で囲まれた領域)が、参照画像G2に対して設定される。ここで言う「評価対象領域」は、対応点が存在するか否か評価される対象の領域である。
更に、評価対象領域AR1を構成する複数の画素列Lyから所定の第1の間引き度合い(ここでは間引き率3/4)で、複数の画素列(ここでは図25(a)で斜線ハッチングが付された画素列)が抽出され、間引き画像CG1が生成される。例えば、図25(b)で示すように、間引き画像CG1はN/4本の画素列Lyから構成される。
そして、図25(b)で示されるように、間引き画像CG1上に、所定サイズ(ここでは、N1×N2=9×9画素)を有する比較領域W21(図中太枠で囲まれた領域)が、左から右方向(X方向)に沿って1画素ずつずらされながら順次に設定される。なお、比較領域W21のように、画素列が間引かれて生成された比較領域を、適宜「間引き比較領域」とも称する。
具体的には、図25(b)で示す間引き画像CG1上では、合計(N/4−8)すなわち約N/4個の比較領域W21が設定される。このとき、評価対象領域AR1を構成する複数の画素列Lyから、所定の第1の間引き度合いでN1本の画素列Lyが認識および抽出されることで、N1本の画素列Lyによって構成された各比較領域W21が、参照画像G2に対して設定されることになる。なお、図25(c)は、比較領域W21に着目した図である。
次に、各比較領域W21に対して2次元演算(ここでは、2次元DFT)が行われる。具体的には、メモリ36bに記憶された1次元演算の演算結果のうち、比較領域W21を構成する画素列に関する演算結果に対して、一方向(ここではX方向)に沿った画素列ごとに1次元演算(ここでは1次元DFT)が行われる。
更に、基準領域W11に係る2次元演算の結果と、各比較領域W21に関する2次元演算の結果とに基づき、基準領域W11内の画像と、各比較領域W21内の画像とに関する相関値(ここではPOC値)が算出される。なお、POC値の算出方法については、上記第1〜7実施形態で既に説明した。
そして、上記の如く算出された基準領域W11内の画像と、各比較領域W21内の画像とに関する相関値(ここではPOC値)に基づき、指定点Pに対応する参照画像G2上の対応点の候補(第1対応点候補)が検出される。このとき、POC値の分布のうち、POC値のピーク位置が、第1対応点候補(例えば図28(a)の第1対応点候補Cp1)として検出される。
○第2対応点候補の検出:
まず、図26で示すように、基準画像G1上で指定される指定点Pを内包する画像領域(図26では、17×9画素の画像領域)から、X方向に第1対応点候補の検出時よりも間引き度合いが小さい所定の第2の間引き度合い(ここでは2画素ごとに1画素を取得、すなわち間引き率1/2)で、所定数N1本の画素列(図26では、斜線ハッチングが付された画素列)Lyが認識される。この所定数N1本の画素列Lyが認識されることで、図27で示すように、Y方向に沿って所定数N2の画素を有し、且つX方向に沿って所定数N1の画素を有する基準領域W12が、基準画像G1に対して設定されることになる。そして、基準領域W12に対して2次元演算(ここでは、2次元DFT)が行われる。なお、ここでは、指定点Pを内包する画像領域は、指定点Pを中心点とし、指定点Pを通る視差基準線Lsに沿って並んだ複数本(図26では、17本)の画素列Lyからなる。
次に、図28(a)で示すように、第1対応点候補Cp1を内包し、且つ視差基準線Lsに沿って並んだ複数の画素列Lyに含まれる所定数の画素列Lyによって構成された評価対象領域AR2(図中太枠で囲まれた領域)が、参照画像G2に対して設定される。ここでは、第1対応点候補Cp1が中心とされた25本の画素列Lyからなる評価対象領域AR2が、参照画像G2に対して設定される。
更に、評価対象領域AR2を構成する複数の画素列Lyから、所定の第2の間引き度合い(ここでは間引き率1/2)で、複数の画素列(ここでは図28(a)で斜線ハッチングが付された画素列)が抽出され、間引き画像CG2が生成される。例えば、図28(b)で示すように、間引き画像CG2は13本の画素列Lyから構成される。
そして、図28(b)で示されるように、間引き画像CG2上に、所定サイズ(ここでは、N1×N2=9×9画素)を有する比較領域W22(図中太枠で囲まれた領域)が、左から右方向(X方向)に沿って1画素ずつずらされながら順次に設定される。なお、比較領域W22は、画素列が間引かれて生成された比較領域(間引き比較領域)となっている。
具体的には、図28(b)で示す間引き画像CG2上では、合計5つの比較領域W22が設定される。このとき、評価対象領域AR2を構成する複数の画素列Lyから、所定の第2の間引き度合いでN1本の画素列Lyが認識および抽出されることで、N1本の画素列Lyによって構成された各比較領域W22が、参照画像G2に対して設定されることになる。なお、図28(c)は、比較領域W22に着目した図である。
次に、各比較領域W22に対して2次元演算(ここでは、2次元DFT)が行われる。具体的には、メモリ36bに記憶された1次元演算の演算結果のうち、比較領域W22を構成する全画素列Lyに関する演算結果に対して、一方向(ここではX方向)に沿った画素列ごとに1次元演算(ここでは1次元DFT)が行われる。
更に、基準領域W12に係る2次元演算の結果と、各比較領域W22に関する2次元演算の結果とに基づき、基準領域W12内の画像と、各比較領域W22内の画像とに関する相関値(ここではPOC値)が算出される。
そして、上記の如く算出された基準領域W12内の画像と、各比較領域W22内の画像とに関する相関値(ここではPOC値)に基づき、指定点Pに対応する参照画像G2上の対応点の候補(第2対応点候補)が検出される。このとき、POC値の分布のうち、POC値のピーク位置が、第2対応点候補(例えば図31(a)の第2対応点候補Cp2)として検出される。
○対応点の検出:
まず、図29で示すように、基準画像G1上で指定される指定点Pを内包し、Y方向に沿って所定数N2の画素をそれぞれ有する所定数N1本の画素列(図29では、斜線ハッチングが付された画素列)Lyからなる基準領域W13が、基準画像G1に対して設定される。そして、基準領域W13に対して2次元演算(ここでは、2次元DFT)が行われる。なお、基準領域13を構成する所定数N1本の画素列Lyは、基準画像G1上で、X方向に沿って隣接配置されていたものである。図30は、基準領域13に着目した図である。
次に、図31(a)で示すように、第2対応点候補Cp2を内包し、且つ視差基準線Lsに沿って並んだ複数の画素列Lyに含まれる所定数の画素列Lyによって構成された評価対象領域AR3(図中太枠で囲まれた領域)が、参照画像G2に対して設定される。ここでは、第2対応点候補Cp2が中心とされた13本の画素列Lyからなる評価対象領域AR3が、参照画像G2に対して設定される。なお、図31(b)は、評価対象領域AR3に着目した図である。
そして、図31(b)で示されるように、評価対象領域AR3上に、所定サイズ(ここでは、N1×N2=9×9画素)を有する比較領域W23(図中太枠で囲まれた領域)が、左から右方向(X方向)に沿って1画素ずつずらされながら順次に設定される。図31(b)で示す評価対象領域AR3上では、合計5つの比較領域W23が設定される。このとき、評価対象領域AR3を構成する複数の画素列LyのうちのN1本の画素列Lyによって構成された各比較領域W23が、参照画像G2に対して設定されることになる。なお、図31(c)は、比較領域W23に着目した図である。
次に、各比較領域W23に対して2次元演算(ここでは、2次元DFT)が行われる。具体的には、メモリ36bに記憶された1次元演算の演算結果のうち、比較領域W23を構成する画素列Lyに関する演算結果に対して、一方向(ここではX方向)に沿った画素列ごとに1次元演算(ここでは1次元DFT)が行われる。
更に、基準領域W13に係る2次元演算の結果と、各比較領域W23に関する2次元演算の結果とに基づき、基準領域W13内の画像と、各比較領域W23内の画像とに関する相関値(ここではPOC値)が算出される。
そして、上記の如く算出された基準領域W13内の画像と、各比較領域W23内の画像とに関する相関値(ここではPOC値)に基づき、指定点Pに対応する参照画像G2上の対応点が検出される。このとき、POC値の分布のうち、POC値のピーク位置が、対応点として検出される。
このように、本実施形態では、比較的低精度の対応点候補の検出によって、評価対象領域が絞り込まれ、絞り込まれた評価対象領域(例えば評価対象領域AR3)について、比較的高精度な対応点の検出が行われる。例えば、図22〜図31で示した例では、例えば、約N/4+10{=(N/4)+5+5}個の比較領域W21〜23に関してそれぞれ評価を行えば、1つの指定点Pに対応する参照画像G2上の対応点が検出される。
これに対して、第7実施形態と同様に、評価対象領域AR1に対して、1画素ずつずれた比較領域W2が設定される場合には、約N個の比較領域W2の設定が可能であり、約N個の比較領域W2に対して評価を行うことで、1つの指定点Pに対応する参照画像G2上の対応点が検出される。
したがって、本実施形態では、第7実施形態と比べて、更に指定点Pに対応する参照画像G2上の対応点の検出に要する演算量が低減され、対応点の検出がより高速化される。
なお、基準画像G1に対して指定点Pが設定される度に、上述した、(I)比較的低精度の第1対応点候補の検出、(II)比較的中程度の精度の第2対応点候補の検出、(III)比較的高精度の対応点の検出、が時間順次に行われ、基準画像G1の各指定点Pに対応する参照画像G2上の各対応点が検出される。
但し、指定点PのY座標が同一(例えばY=y1)である限りは、基準画像G1に対して指定点Pが設定されても、比較領域に係る2次元演算に必要となる画素列Lyに係る1次元演算の結果は同じである。このため、指定点PのY座標が変わる度に、参照画像G2のうち、中心の画素のY座標が或る値であるY方向に沿った全画素列に関して1次元演算が行われる。
ここで、第8実施形態に係る対応点の探索動作の動作フローについて説明する。
図32〜図38は、第8実施形態に係る情報処理システム1Hにおける対応点の探索動作を示すフローチャートである。なお、本動作フローは、制御部36でプログラムPGhが実行されることで実現され、例えば、操作部31から所定の信号が制御部36に対して入力されたことに応答して、開始され、図32のステップST1に進む。
ステップST1では、図9のステップS1と同様な処理が行われる。
ステップST2では、ステップST1で取得された基準画像G1に対し、指定点Pが設定される。
ステップST3では、基準画像G1上の指定点Pに対応した参照画像G2上の対応点の探索が行われる(後で詳述)。
ステップST4では、図9のステップS4と同様な処理が行われる。ここで、スキャン対象が存在する場合には、ステップST2に進み、スキャン対象が残存しない場合には、本フローチャートの動作が終了される。
図33〜図38は、上記ステップST3の動作に対応しており、対応点の探索動作を示すフローチャートである。
ステップST31では、図20のステップS32と同様な処理が行われる。ここで、指定点PのY座標が変更されていれば、ステップST32に進み、変更されていなければ、ステップST35に進む。
ステップST32〜ST34では、図20のステップSP33〜SP35と同様な処理が行われる。
ステップST35では、ステップST2で設定された指定点Pを中心として、所定の第1の間引き度合いで基準画像G1から所定数N1本の画素列Lyを認識する画素列の間引き処理が行われることで、基準画像G1に対して基準領域W11(図23,図24)が設定される。
ステップST36では、基準領域W11が一方向(ここではY方向)に沿った画素列(ここでは画素列Ly)に分割される。
ステップST37では、ステップST36で分割・生成された全画素列に関して、一方向(ここではY方向)に沿った画素列ごとに1次元DFTの演算が行われる。
ステップST38では、ステップST37で求められた1次元DFTの演算結果がメモリ36bに記憶される。なお、既に1次元DFTの演算が行われた結果を記憶しておき、その結果を適宜再利用することで、ステップST37の演算回数を低減しても良い。
ステップST39では、基準領域W11に係る一方向(ここではY方向)に沿った1次元DFTの演算結果(ここでは、ステップST37の演算結果)に対して、他方向(X方向)に沿った画素列ごとに1次元DFTの演算が行われることで、基準領域W11に関する2次元DFTの演算が行われる。また、規格化処理T2aも行われる。
図34のステップST41では、ステップST32で認識された全画素列Lyによって構成された評価対象領域AR1(例えば図25(a))が参照画像G2に対して設定される。
ステップST42では、ステップST41で設定された評価対象領域AR1を構成する複数の画素列Lyから所定の第1の間引き度合い(ここでは4画素ごとに1画素を取得、すなわち間引き率3/4)で複数の画素列が抽出され、間引き画像CG1(例えば図25(b))が生成される。
ステップST43では、第1対応点候補Cp1の検出動作における比較領域W21の設定回数を示すカウンタiが1に設定される。
ステップST44では、間引き画像CG1に対してi番目の比較領域W21が設定される(例えば図25(b),(c))。なお、ステップST44が1回目(i=1)である場合には、間引き画像CG1の最も−X側に比較領域W21が設定され、ステップST44が2回目以降(i≧2)である場合には、前回よりも所定画素数(ここでは1画素)だけ+X側にずらした位置に比較領域W21が設定される。
ステップST45では、メモリ36bに記憶された全画素列Lyに係る1次元DFTの演算結果のうち、ステップST44で設定された比較領域W21を構成する画素列Lyに係る1次元DFTの演算結果が用いられ、X方向に沿った画素列ごとに1次元DFTの演算が行われる。つまり、2次元DFTの演算が行われる。このとき、規格化処理T2bも行われる。
ステップST46では、ステップST39における演算結果と、ステップST45における演算結果とに基づき、合成処理が行われる。ここでは、数4で示した演算式を用いた合成処理T3が行われる。
ステップST47、ST48では、図10のステップS35、S36と同様な処理が行われる。
ステップST49では、カウンタi=N/4−8に達したか否か判定される。ここで、カウンタi=N/4−8に達していなければ、カウンタiが1だけ増加されて(ステップST50)、ステップST44に進む。このとき、X方向に沿って複数(例えば9つ)の画素がそれぞれ配列され、且つY方向に沿って所定数(例えば9つ)の画素がそれぞれ配列され、相互に重なり合う重複領域を有する比較領域W21が間引き画像CG1に対して順次に設定される。一方、カウンタi=N/4−8に達していれば、間引き画像CG1に対する全設定対象領域に比較画像W21が設定されたものとして、ステップST51に進む。
ステップST51では、メモリ36bに記憶されているピーク情報に基づき、基準画像G1上の指定点Pに対応した参照画像G2上の第1対応点候補Cp1が検出され、図35のステップST61に進む。
図35のステップST61では、ステップST2で設定された指定点Pを中心として、所定の第2の間引き度合いで基準画像G1から所定数N1本の画素列Lyを認識する画素列の間引き処理が行われることで、基準画像G1に対して基準領域W12(図26,図27)が設定される。
ステップST62では、基準領域W12が一方向(ここではY方向)に沿った画素列(ここでは画素列Ly)に分割される。
ステップST63では、ステップST62で分割・生成された全画素列に関して、一方向(ここではY方向)に沿った画素列ごとに1次元DFTの演算が行われる。
ステップST64では、ステップST63で求められた1次元DFTの演算結果がメモリ36bに記憶される。なお、既に1次元DFTの演算が行われた結果を記憶しておき、その結果を適宜再利用することで、ステップST63の演算回数を低減しても良い。
ステップST65では、基準領域W12に係る一方向(ここではY方向)に沿った1次元DFTの演算結果(ここでは、ステップST63の演算結果)に対して、他方向(X方向)に沿った画素列ごとに1次元DFTの演算が行われることで、基準領域W12に関する2次元DFTの演算が行われる。また、規格化処理T2aも行われる。
図36のステップST71では、ステップST51で検出された第1対応点候補Cp1を中心とした評価対象領域AR2が参照画像G2に対して設定される(例えば図28(a))。例えば、評価対象領域AR2は、第1対応点候補Cp1を中心として、X方向に沿った所定本(ここでは25本)の画素列Lyからなる。
ステップST72では、ステップST71で設定された評価対象領域AR2を構成する複数の画素列Lyから所定の第2の間引き度合い(ここでは2画素ごとに1画素を取得、すなわち間引き率1/2)で複数の画素列が抽出され、間引き画像CG2(例えば図28(b))が生成される。
ステップST73では、第2対応点候補Cp2の検出動作における比較領域W22の設定回数を示すカウンタjが1に設定される。
ステップST74では、間引き画像CG2に対してj番目の比較領域W22が設定される(例えば図28(b),(c))。なお、ステップST74が1回目(j=1)である場合には、間引き画像CG2の最も−X側に比較領域W22が設定され、ステップST74が2回目以降(j≧2)である場合には、前回よりも所定画素数(ここでは1画素)だけ+X側にずらした位置に比較領域W22が設定される。
ステップST75では、メモリ36bに記憶された全画素列Lyに係る1次元DFTの演算結果のうち、ステップST74で設定された比較領域W22を構成する画素列Lyに係る1次元DFTの演算結果が用いられ、X方向に沿った画素列ごとに1次元DFTの演算が行われる。つまり、2次元DFTの演算が行われる。このとき、規格化処理T2bも行われる。
ステップST76では、ステップST65における演算結果と、ステップST75における演算結果とに基づき、合成処理が行われる。ここでは、数4で示した演算式を用いた合成処理T3が行われる。
ステップST77、ST78では、図10のステップS35、S36と同様な処理が行われる。
ステップST79では、カウンタj=5に達したか否か判定される。ここで、カウンタj=5に達していなければ、カウンタjが1だけ増加されて(ステップST80)、ステップST74に進む。このとき、X方向に沿って複数(例えば9つ)の画素がそれぞれ配列され、且つY方向に沿って所定数(例えば9つ)の画素がそれぞれ配列され、相互に重なり合う重複領域を有する比較領域W22が間引き画像CG2に対して順次に設定される。一方、カウンタj=5に達していれば、間引き画像CG2に対する全設定対象領域に比較画像W22が設定されたものとして、ステップST81に進む。
ステップST81では、メモリ36bに記憶されているピーク情報に基づき、基準画像G1上の指定点Pに対応した参照画像G2上の第2対応点候補Cp2が検出され、図37のステップST91に進む。
図37のステップST91では、ステップST2で設定された指定点Pを中心として、基準画像G1に対して所定数N1本の画素列Lyからなる基準領域W13(図29,図30)が設定される。
ステップST92では、基準領域W13が一方向(ここではY方向)に沿った画素列(ここでは画素列Ly)に分割される。
ステップST93では、ステップST92で分割・生成された全画素列に関して、一方向(ここではY方向)に沿った画素列ごとに1次元DFTの演算が行われる。
ステップST94では、ステップST93で求められた1次元DFTの演算結果がメモリ36bに記憶される。なお、既に1次元DFTの演算が行われた結果を記憶しておき、その結果を適宜再利用することで、ステップST93の演算回数を低減しても良い。
ステップST95では、基準領域W13に係る一方向(ここではY方向)に沿った1次元DFTの演算結果(ここでは、ステップST93の演算結果)に対して、他方向(X方向)に沿った画素列ごとに1次元DFTの演算が行われることで、基準領域W13に関する2次元DFTの演算が行われる。また、規格化処理T2aも行われる。
図38のステップST101では、ステップST81で検出された第2対応点候補Cp2を中心とした評価対象領域AR3が参照画像G2に対して設定される(例えば図31(a))。例えば、評価対象領域AR3は、第2対応点候補Cp2を中心として、X方向に沿った所定本(ここでは13本)の画素列Lyからなる。
ステップST102では、対応点の検出動作における比較領域W23の設定回数を示すカウンタkが1に設定される。
ステップST103では、評価対象領域AR3に対してk番目の比較領域W23が設定される(例えば図31(b),(c))。なお、ステップST103が1回目(k=1)である場合には、評価対象領域AR3の最も−X側に比較領域W23が設定され、ステップST103が2回目以降(k≧2)である場合には、前回よりも所定画素数(ここでは1画素)だけ+X側にずらした位置に比較領域W23が設定される。
ステップST104では、メモリ36bに記憶された全画素列Lyに係る1次元DFTの演算結果のうち、ステップST103で設定された比較領域W23を構成する画素列Lyに係る1次元DFTの演算結果が用いられ、X方向に沿った画素列ごとに1次元DFTの演算が行われる。つまり、2次元DFTの演算が行われる。このとき、規格化処理T2bも行われる。
ステップST105では、ステップST95における演算結果と、ステップST104における演算結果とに基づき、合成処理が行われる。ここでは、数4で示した演算式を用いた合成処理T3が行われる。
ステップST106、ST107では、図10のステップS35、S36と同様な処理が行われる。
ステップST108では、カウンタk=5に達したか否か判定される。ここで、カウンタk=5に達していなければ、カウンタkが1だけ増加されて(ステップST109)、ステップST103に進む。このとき、X方向に沿って複数(例えば9つ)の画素がそれぞれ配列され、且つY方向に沿って所定数(例えば9つ)の画素がそれぞれ配列され、相互に重なり合う重複領域を有する比較領域W23が評価対象領域AR3に対して順次に設定される。一方、カウンタk=5に達していれば、評価対象領域AR3に対する全設定対象領域に比較画像W23が設定されたものとして、ステップST110に進む。
ステップST110では、メモリ36bに記憶されているピーク情報に基づき、基準画像G1上の指定点Pに対応した参照画像G2上の対応点が検出され、対応点の探索動作のフローが終了される。
以上のように、第8実施形態に係る情報処理システム1Hでは、第1方向(X方向)に沿って順次に設定される複数の領域を構成する画素列に係る1次元演算が予めまとめて行われる。そして、その1次元演算の結果を利用して、比較的低精度で対応点の候補(例えば第1および第2対応点候補)が検出され、その対応点の候補を含むある程度絞り込まれた領域(例えば評価対象領域AR3)について高精度で対応点が検出される。このため、演算量の低減が図られ、画像間における座標点の対応付けが更に高速で行われる。
なお、図22〜図38を示した上記説明では、(I)比較的低精度の第1対応点候補の検出、(II)比較的中程度の精度の第2対応点候補の検出、(III)比較的高精度の対応点の検出、が時間順次に行われ、評価対象領域の絞り込みが2回行われた。しかしながら、評価対象領域の絞り込みは2回である必要性はなく、例えば、1回など、少なくとも1回以上であれば良い。また、上記説明では、1次元演算および2次元演算については1次元DFTおよび2次元DFTであるものとして説明したが、1次元DFTおよび2次元DFTと併せて、1次元的に窓関数を掛ける演算および2次元的に窓関数を掛ける演算を含ませても良い。
<変形例>
以上、この発明の実施形態について説明したが、この発明は上記説明した内容のものに限定されるものではない。
◎例えば、上記第5、7実施形態では、1つの対応点を検出するために、参照画像G2上で視差基準線Lsに沿って−X側の端部から+X側の端部まで比較領域W2によってスキャンされたが、これに限られない。例えば、図39で示す参照画像G2上における位置(視差p=0の位置)Qoから、最大視差pmaxに対応した位置QmaxまでX方向に1画素ずつずらされた複数の比較領域W2が設定されて、1つの対応点が検出されても良い。この最大視差pmaxは、撮像系21,22の配置や設計から求めることができる。
このような構成が採用されれば、演算量の低減を図ることができ、画像間の画素の対応付けの高速化に資する。なお、このように最大視差pmaxに対応させて比較領域W2によってスキャンする領域を制限する構成が、第1〜4、6、8実施形態に対して適宜適用されると、演算量の低減、ひいては画像間の画素の対応付けの高速化が適宜図られる。
◎また、上記第1〜8実施形態に係る情報処理システム1A〜1Hでは、ステレオカメラ2と、情報処理装置3A〜3Hとが別々の装置として構成されたが、これに限られない。例えば、ステレオカメラ2と情報処理装置3A〜3Hとが一体的に構成された1個の装置として構成されても良いし、第1〜8実施形態に係る情報処理システム1A〜1Hを構成する各機能が適宜異なる装置に分散されて配置されても良い。
◎また、上記実施形態では、重複する1次元フーリエ変換の演算が省略されることで、複数回の2次元フーリエ変換の演算量の低減が図られたが、これに限られず、本発明を、フーリエ変換以外の1次元および2次元の周波数分解の演算に適用することもできる。1次元および2次元の周波数分解(1次元周波数分解および2次元周波数分解)としては、例えば、フーリエ変換の他に、離散コサイン変換、離散サイン変換、ウェーブレット変換、およびアダマール変換などが挙げられる。したがって、これらの周波数分解のうちのいずれかの演算に本発明が適用されることで、重複する1次元周波数分解の演算が省略されることで、複数回の2次元周波数分解の演算量の低減が図られる。
◎また、上記第1〜8実施形態に係る情報処理システム1A〜1Hでは、基準画像に対して1つの基準領域が設定される毎に、参照画像に対して複数の比較領域が設定されて、指定点に対応する対応点が検出されたが、これに限られない。例えば、基準画像に対して指定点を包含する1つの基準領域が設定される毎に、参照画像に対して1つの比較領域が設定されて、指定点に対応する対応点が検出されても良い。このような構成であっても、ある基準領域に対応して設定された1つの比較領域と、前回の基準領域に対応して設定された前回の比較領域との間で、相互に重なり合う重複領域(具体的には、一方向に沿った1以上の画素列)について、同一の1次元演算の結果が利用されつつ、基準領域と比較領域との各組合せについての2次元演算が行われれば、演算量の低減が図られる。すなわち、1つの画像に関する複数回の2次元演算が高速で行われる。
◎なお、上記第1〜8実施形態に係る各種構成については、矛盾を生じない範囲内で、適宜組み合わされても良い。