(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0013】
[A.概要]
本発明の実施の形態は、少なくとも第1画像と第2画像との間で対応点を探索する対応点探索方法に向けられている。すなわち、対応点の探索対象となる複数の画像は、同一の被写体(の少なくとも一部)の画像を共通に含み得る画像を意味し、3つ以上の画像であってもよい。このような複数の画像は、典型的には、複数の撮像装置(カメラ)を用いて同一の被写体を異なる視点から撮像することで得られる。より具体的には、所定距離だけ離して配置された複数のカメラ(典型的には、ステレオカメラ)によって同一の被写体を撮像することでそれぞれの画像が得られる。
【0014】
以下の説明においては、説明の便宜上、第1画像に注目画素(注目点)を設定し、当該設定した注目点に対する第2画像上の対応点を探索するものとする。このような対応点の探索処理において、第1画像を「基準画像」と称し、第2画像を「参照画像」と称する。また、3つ以上の画像間で対応点探索を行なう場合には、いずれか1つの画像を「基準画像」として設定するとともに、それを撮像する撮像装置(カメラ)を「基準画像」の撮像用のカメラとして設定する。一方、それ以外の画像についてはいずれも「参照画像」として設定するとともに、それらを撮像する撮像装置(カメラ)を「参照画像」の撮像用のカメラとして設定する。このような拡張方法によって、本実施の形態に従う対応点探索方法を3つ以上の画像間における対応点の探索にも適用できる。
【0015】
また、本実施の形態に従う対応点探索方法は、典型的には、ステレオ撮像された画像間の対応点を探索して立体視画像を生成する処理に向けられるが、これに限られることなく、パノラマ画像の生成処理などにも適用できる。
【0016】
本実施の形態に従う対応点探索方法によって得られる対応関係を、以下「対応点探索結果」と記す。この対応点探索結果は、典型的には、基準画像上のそれぞれの画素位置(各注目点の座標位置)と、当該それぞれの画素位置に対応する参照画像上の画素位置とを含む。
【0017】
図1および
図2は、本発明の実施の形態に従う対応点探索方法の概要を説明するための図である。
【0018】
本実施の形態に従う対応点探索方法は、基準画像と参照画像との間の位相情報の差(以下「位相差情報」とも称す。)を用いて、画像間の対応点を探索する。位相情報および位相差情報は、基準画像および参照画像にそれぞれ設定されるウィンドウ単位で周波数(空間周波数)別に算出されることになる。すなわち、所定の周波数範囲にわたる位相情報が算出される。
【0019】
このとき、空間周波数によってその波長の長さは異なるため、同一のサイズのウィンドウ(領域)を設定した場合、その中に含まれる波数は、空間周波数の大きさに依存して変化することになる。すなわち、
図1に示すように、空間周波数が低い場合には、より大きなサイズを有するウィンドウを設定しなければ、一周期分の情報を取得することができず、一方、空間周波数が高い場合には、より小さなサイズを有するウィンドウであっても、十分な周期分の情報を取得することができる。
【0020】
そこで、本実施の形態においては、基準画像および参照画像に対して、それぞれウィンドウを設定し、設定されたそれぞれのウィンドウに含まれる画像に対して周波数分解を行なうことで位相情報を抽出し、それぞれのウィンドウから抽出された位相情報を比較することで、基準画像と参照画像との間の対応点を決定する。このとき、対応する周波数分解の計算に使用する周波数に応じたサイズのウィンドウが設定される。
【0021】
すなわち、
図2に示すように、周波数分解に使用される周波数f1,f2,…,fn(f1<f2<…<fn)について、それぞれ対応するサイズのウィンドウ1,2,…nが設定され、設定された一対のウィンドウの間で位相差情報が算出される。すなわち、周波数f1,f2,…,fnの位相差情報1,2,…,nは、対応するサイズのウィンドウ内の画像情報が取得される。そして、これらの位相差情報1,2,…,nを総計して、周波数−位相差の情報を取得し、さらに、位相限定相関法(Phase−Only Correlation;以下、「POC法」とも称す。)での評価値であるPOC値が算出される。最終的に、POC値が参照画像の各注目の別に算出され、POC値が最大となる注目点が探索される。
【0022】
上述したように、空間周波数が高いほど、ウィンドウ内により多くの波数を抽出できるので、空間周波数が低い場合に比較して空間周波数が高い場合に設定されるウィンドウのサイズは、当該空間周波数が低い場合のサイズと同じか、より小さくなるように設定される。言い換えれば、第1の周波数に対応して第1のサイズのウィンドウを設定させるとともに、第1の周波数より高い第2の周波数に対応して、第1のサイズと同じまたはより小さい第2のサイズのウィンドウが設定される。
【0023】
なお、ウィンドウを設定する計算コストも考慮すると、
図2に示すように、空間周波数が異なればサイズが異なるように設定することもできるが、同一のサイズのウィンドウが複数の空間周波数に対応付けられてもよい。
【0024】
このように、本実施の形態に従う対応点探索処理においては、周波数分解に用いるウィンドウのサイズを固定するのではなく、周波数分解に使用される周波数に応じた素のウィンドウをそれぞれ設定することで、演算時間を短縮化する。
【0025】
以下、対応点探索処理のより詳細な内容について説明する。
[B.システム構成]
まず、本発明の実施の形態に従う対応点探索処理を実現する画像処理装置の実装例について説明する。
【0026】
《b1:パーソナルコンピューターによる実現例》
図3は、本発明の実施の形態に従う対応点探索処理をパーソナルコンピューターにより実現した場合の構成を示すブロック図である。
【0027】
図3を参照して、パーソナルコンピューターにより実現される画像処理装置100は、主として、汎用的なアーキテクチャーを有するコンピューター上に実装される。
図3を参照して、画像処理装置100は、主たるコンポーネントとして、CPU(Central Processing Unit)102と、RAM(Random Access Memory)104と、ROM(Read Only Memory)106と、ネットワークインターフェイス(I/F)108と、補助記憶装置110と、表示部120と、入力部122と、メモリーカードインターフェイス(I/F)124とを含む。各コンポーネントは、バス130を介して、互いに通信可能に接続されている。
【0028】
CPU102は、ROM106や補助記憶装置110などに格納された、オペレーティングシステム(OS:Operating System)や画像処理プログラムなどの各種プログラムを実行することで、画像処理装置100の全体を制御する。RAM104は、CPU102でプログラムを実行するためのワーキングメモリとして機能し、プログラムの実行に必要な各種データを一次的に格納する。ROM106は、画像処理装置100において起動時に実行される初期プログラム(ブートプログラム)などを格納する。
【0029】
ネットワークインターフェイス108は、各種の通信媒体を介して、他の装置(サーバー装置など)とデータを遣り取りする。より具体的には、ネットワークインターフェイス108は、イーサネット(登録商標)などの有線回線(LAN(Local Area Network)やWAN(Wide Area Network)など)、および/または、無線LANなどの無線回線を介してデータ通信を行なう。
【0030】
補助記憶装置110は、典型的には、ハードディスクなどの大容量磁気記憶媒体などからなり、本実施の形態に従う各種処理を実現するための画像処理プログラム(対応点探索処理プログラム112)および処理対象の処理対象画像114などを格納する。さらに、補助記憶装置110には、オペレーティングシステムなどのプログラムが格納されてもよい。
【0031】
処理対象画像114は、処理対象の少なくとも2つの画像を含む。但し、画像処理装置100本体が被写体を撮像する機能を有していなくともよい。この場合、後述するようなデジタルカメラに類似した機構を用いて、少なくとも2つの画像を取得し、それらの画像を任意の方法で画像処理装置100へ入力するようにしてもよい。より具体的には、上述のネットワークインターフェイス108やメモリーカードインターフェイス124を介して、画像が画像処理装置100へ入力される。
【0032】
表示部120は、オペレーティングシステムが提供するGUI(Graphical User Interface)画面や対応点探索処理プログラム112の実行によって生成される画像などを表示する。好ましくは、表示部120は、対応点探索処理プログラム112の実行によって得られる対応点探索結果、などから生成される立体視画像を用いて、被写体を立体視表示する。この場合、表示部120としては、3次元表示方式に対応した任意の表示デバイスによって構成される。このような3次元表示方式としては、パララックスバリア方式などを採用することができる。このパララックスバリア方式では、液晶表示面にパララックスバリアを設けることで、ユーザーの右眼で右眼用画像を視認させ、ユーザーの左眼で左眼用画像を視認させることができる。あるいは、シャッタメガネ方式を採用してもよい。このシャッタメガネ方式では、左眼用画像および右眼用画像を交互に高速で切り替えて表示するとともに、この画像の切り替えに同期して開閉するシャッターが搭載された専用メガネをユーザーが装着することで、立体視表示を楽しむことができる。
【0033】
入力部122は、典型的には、キーボード、マウス、タッチパネルなどからなり、ユーザーから受付けた指示の内容をCPU102などへ出力する。
【0034】
メモリーカードインターフェイス124は、SD(Secure Digital)カードやCF(Compact Flash(登録商標))カードなどの各種メモリーカード(不揮発性記憶媒体)126との間で、データの読み書きを行なう。典型的には、メモリーカードインターフェイス124には、何らかの装置で取得した処理対象画像を格納したメモリーカード126が装着され、そのメモリーカード126から読み出された処理対象画像が補助記憶装置110へ格納(コピー)される。
【0035】
補助記憶装置110に格納される対応点探索処理プログラム112は、CD−ROM(Compact Disk−Read Only Memory)などの記憶媒体に格納されて流通し、あるいは、ネットワークを介してサーバー装置などから配信される。対応点探索処理プログラム112は、画像処理装置100(パーソナルコンピューター)で実行されるオペレーティングシステムの一部として提供されるプログラムモジュールのうち必要なモジュールを、所定のタイミングおよび順序で呼出して処理を実現するようにしてもよい。この場合、対応点探索処理プログラム112自体には、オペレーティングシステムによって提供されるモジュールは含まれず、オペレーティングシステムと協働して画像処理が実現される。また、対応点探索処理プログラム112は、単体のプログラムではなく、何らかのプログラムの一部に組込まれて提供されてもよい。このような場合にも、対応点探索処理プログラム112自体には、当該何らかのプログラムにおいて共通に利用されるようなモジュールは含まれず、当該何らかのプログラムと協働して画像処理が実現される。このような一部のモジュールを含まない対応点探索処理プログラム112であっても、本実施の形態に従う画像処理装置100の趣旨を逸脱するものではない。
【0036】
さらに、対応点探索処理プログラム112によって提供される機能の一部または全部を専用のハードウェアによって実現してもよい。
【0037】
《b2:デジタルカメラ類似の構成による実現例》
図4は、本発明の実施の形態に従う対応点探索処理をデジタルカメラ類似の構成により実現した場合の構成を示すブロック図である。
【0038】
図4を参照して、画像処理装置200は、実際に被写体を撮像することで、少なくとも2つの処理対象画像を取得し、この取得した処理対象画像に対して、対応点探索処理を実行する。画像処理装置200は、主たるコンポーネントとして、画像処理エンジン202と、入力部204と、表示部206と、一対のレンズ212,222と、一対のCCD(Charge Coupled Device)イメージセンサー214,224とを含む。
【0039】
画像処理エンジン202は、本実施の形態に従う対応点探索処理を含む各種のデジタル処理を実行する。画像処理エンジン202は、典型的には、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、LSI(Large Scale Integration)、FPGA(Field−Programmable Gate Array)などからなる。
【0040】
入力部204は、典型的には、各種キーボタン、タッチパネルなどからなり、ユーザーから受付けた指示の内容を画像処理エンジン202へ出力する。
【0041】
表示部206は、被写体の撮像などに関するユーザーインターフェイス画面を表示する。好ましくは、表示部206は、画像処理エンジン202によって得られる対応点探索結果、などから生成される立体視画像を用いて、被写体を立体視表示する。この場合、表示部206としては、上述の表示部120(
図3)と同様に、3次元表示方式に対応した任意の表示デバイスによって構成される。
【0042】
一対のレンズ212,222は、画像処理装置200の本体の異なる位置に設けられており、被写体を異なる視点でそれぞれ撮像することできる。すなわち、一対のレンズ212,222には、被写体からの互いに異なる反射光がそれぞれ入射する。一対のCCD214,224は、一対のレンズ212,222にそれぞれ対応付けられており、レンズ212,222によって集光された被写体からの光(像)を受光するとともに、その像を示す電気信号を画像処理エンジン202へ出力する。
【0043】
《b3:その他の構成による実現例》
上述したパーソナルコンピューターにより実現する例、および、デジタルカメラ類似の構成による実現する例に加えて、携帯電話上に実装してもよい。さらに、少なくとも1つのサーバー装置が本実施の形態に従う処理を実現する、いわゆるクラウドサービスのような形態であってもよい。この場合、ユーザーは、自身の端末(パーソナルコンピューターやスマートフォンなど)を用いて、少なくとも2つの処理対象画像をサーバー装置(クラウド側)へ送信し、当該送信された処理対象画像に対して、サーバー装置側が本実施の形態に従う画像処理を行なうような構成が想定される。さらに、サーバー装置側がすべての機能(処理)を行なう必要はなく、ユーザー側の端末とサーバー装置とが協働して、本実施の形態に従う画像処理を実現するようにしてもよい。
【0044】
[C.機能構成]
次に、本実施の形態に従う画像処理装置および/または画像処理プログラムの機能構成について説明する。
【0045】
図5は、本発明の実施の形態に従う画像処理装置の機能構成を示すブロック図である。
図6は、
図5に示す対応点探索部のより詳細な機能構成を示すブロック図である。
【0046】
図5を参照して、本実施の形態に従う画像処理装置は、その主たる機能構成として、画像取得部13と、対応点探索部14と、周波数演算制御部15とを含む。これらの機能構成は、
図3に示す画像処理装置100においては、CPU102が対応点探索処理プログラムを実行することで実現され、
図4に示す画像処理装置200においては、画像処理エンジン202によって実現される。
【0047】
《c1:画像取得部13》
画像取得部13は、カメラ11および12(カメラAおよびカメラB)がそれぞれ被写体を撮像することで生成される入力画像(ステレオ画像)を取得する。上述したように、一対の画像を取得した場合には、一方の画像を基準画像と称し、他方の画像を参照画像と称する。画像取得部13は、少なくとも2つの画像を取得するための各種インターフェイスとして実現される。すなわち、カメラ11および12から直接的に入力画像を受付けてもよいし、各種の記録媒体やネットワークを介して、入力画像を受付けてもよい。画像取得部13が取得した複数の入力画像は、対応点探索部14へ出力される。
【0048】
《c2:対応点探索部14》
対応点探索部14は、入力された2つ以上の入力画像に対して、対応点探索処理を行ない、対応点探索結果を出力する。すなわち、対応点探索部14は、基準画像上に設定される各注目点(注目画素)についての応点を参照画像上から探索する。
【0049】
本実施の形態において、対応点探索部14は、入力画像(基準画像および参照画像)にそれぞれ設定されるウィンドウ(探索ウィンドウ)のパターンに対して周波数分解を行なうことで抽出される位相情報(振幅成分を抑制した信号成分)の類似度に基づいて、画像間の対応関係を演算する。以下の実施の形態においては、このような代表的な手法として、位相限定相関法(Phase−Only Correlation;POC法)を用いた構成について説明する。但し、本発明は、POC法を用いる場合に限られず、少なくとも位相情報を用いる方法であれば任意の方法に適用可能である。例えば、文献1(植村 淳志、伊藤 泉、貴家 仁志、「DCT符号相関を用いたサブピクセル精度画像マッチング」、社団法人電子情報通信学会、電子情報通信学会技術研究報告.IE,画像工学107(489),77−82,2008−02−12)などに記載の方法なども適用可能である。
【0050】
図6には、位相限定相関法を用いて対応点探索処理を行なう場合の対応点探索部14の実装例を示す。より具体的には、対応点探索部14は、基準ウィンドウ設定部141と、参照ウィンドウ設定部142と、フーリエ変換部143,144と、位相取出部145,146と、位相差算出部147と、逆フーリエ変換部148と、最大値選択部149とを含む。
【0051】
基準ウィンドウ設定部141および参照ウィンドウ設定部142は、基準画像および参照画像に対して、それぞれウィンドウを設定する。後述するように、基準ウィンドウ設定部141および参照ウィンドウ設定部142は、周波数演算制御部15からのサイズ情報に基づいて、設定するウィンドウのサイズを決定する。
【0052】
例えば、基準画像上のある点Kに対応する参照画像上の点Sを探索するような対応点探索処理を考える。この場合には、まず、基準ウィンドウ設定部141が点Kを含むように、基準画像上に基準ウィンドウを設定する。なお、基準ウィンドウ内における点Kの相対位置は、任意に決定できるが、ここでは、点Kがその重心位置になるように基準ウィンドウを設定するものとする。
【0053】
参照画像上にも同様にウィンドウを設定するが、参照画像側では対応する点がわかっていないので、参照ウィンドウ設定部142は、予め決められた候補点S’がその重心位置になるように参照ウィンドウを設定する。候補点S’については、例えば、ステレオ画像間での視差が大きくないようなアプリケーションの場合には、点Kと同じ座標を用いればよい。また、ステレオ画像間での視差レンジが広い場合には、後述する多重解像度を用いた粗密戦略などを用いることで、最初の候補点を点Kと同じ座標値を用いることが可能になる。
【0054】
フーリエ変換部143は、基準画像上に設定された基準ウィンドウに対して、フーリエ変換を行なうことで画像情報を周波数空間の情報へ変換する。同様に、フーリエ変換部143は、参照画像上に設定された参照ウィンドウに対して、フーリエ変換を行なうことで画像情報を周波数空間の情報へ変換する。この変換された周波数空間の情報は、周波数毎の振幅情報および位相情報を含む。すなわち、フーリエ変換部143および144は、それぞれのウィンドウに含まれる部分画像に対して周波数分解を行なう。
【0055】
まず、本実施の形態におけるフーリエ変換部143および144の理解のために、一般的なフーリエ変換について説明する。
【0056】
例えば、ウィンドウサイズがN×Mの場合、横方向の周波数の全域は、直流成分と周波数F1〜Fx_max=(N−1)/2(但し、Nは奇数サイズとする)の交流成分で表され、縦方向の周波数の全域は、直流成分と周波数F1〜Fy_max=(M−1)/2(但し、Mは奇数サイズとする)で表される。なお、実際には、交流成分は、N個またはM個存在するが、直流成分を中心とした対称的な情報を有するので、有意な情報としては、Fx_max×Fy_max個しか存在しない。
【0057】
フーリエ変換の計算結果は、実部および虚部を含む複素数形式で出力される。典型的には、(1)式に従って、フーリエ変換が実行される。
【0059】
すなわち、周波数情報は、実部Re(u,v)および虚部Im(u,v)を含む複素数形式で出力される。また、実部および虚部の値を用いて、振幅情報A(u,v)および位相情報θ(u,v)に変換できる。
【0060】
振幅情報および位相情報と、実部および虚部を含む複素数表現との関係式は、(2)式のようになる。
【0062】
なお、フーリエ変換の結果は、振幅と位相とを組み合わせた形式で保存してもよいし、実部と虚部とを組み合わせた形式で保存してもよい。
【0063】
以上に説明したフーリエ変換においては、1つのN×Mのウィンドウサイズのデータを用いて全ての周波数成分を算出することが可能である。しかしながら、本実施の形態においては、周波数に応じて異なるウィンドウサイズのデータを用い、各ウィンドウサイズで算出する周波数成分を限定してフーリエ変換を行う。この点に関しては、周波数演算制御部15の説明で後述する。
【0064】
位相取出部145および146は、それぞれフーリエ変換部143および144から出力されるフーリエ変換の結果(典型的には、複素数形式)を用いて、基準ウィンドウおよび参照ウィンドウについての位相情報を抽出する。
【0065】
位相差算出部147は、位相取出部145および146により抽出されたそれぞれのウィンドウについての位相情報の差を算出する。すなわち、位相差算出部147は、位相差情報を生成する。
【0066】
逆フーリエ変換部148は、位相差算出部147によって算出された位相差情報に対して逆フーリエ変換を行なうことで、それぞれ設定されているウィンドウに含まれる部分画像間の類似度を示すPOC値を算出する。このPOC値を算出する処理は、参照ウィンドウ設定部142が参照画像上に設定する参照ウィンドウの位置を更新する毎に繰り返し実行される。なお、POC値の算出に係る詳細な手順としては、文献2(“A Sub−Pixel Correspondence Search Technique for Computer Vision Applications”, IEICE Transactions. Fundamentals, E87−A, No. 8, pp. 1913−−1923, Aug. 2004)などを参照されたい。
【0067】
図7は、本発明の実施の形態に従う対応点探索部14により算出されるPOC値の一例を示す図である。
図7に示すように、参照ウィンドウの設定位置に関連付けられた複数のPOC値が算出される。
【0068】
最大値選択部149は、
図7に示すような参照ウィンドウの設定位置(候補点S’)に関連付けられたPOC値のマップから、最大値をとるPOCを選択することで、参照画像上の対応点を決定する。
【0069】
《c3:周波数演算制御部15》
本実施の形態においては、フーリエ変換などの周波数演算において、周波数成分毎に計算に使用する情報量を変更する。本実施の形態では、1次元のフーリエ変換を用いるが、2次元のフーリエ変換を用いてもよい。
【0070】
1次元のフーリエ変換は、(3)式のように表わすことができる。
【0072】
ウィンドウサイズがN×1の場合、フーリエ変換により周波数成分を算出可能な周波数は、1〜Fmax=(N−1)/2となる。一般的なフーリエ変換では、いずれの周波数成分を算出する場合であっても、等しいN×1のウィンドウサイズを使用していたが、本実施の形態においては、演算対象の周波数が高くなるにつれて、周波数演算に使用するウィンドウサイズを小さくし、演算対象の周波数に限定してフーリエ変換を行う。
【0073】
フーリエ変換は、ウィンドウサイズがN×1で全ての周波数の周波数成分を得る場合、N2の演算時間がかかるが、直流成分を中心に点対称な結果が得られるので、実際にはN2/2の演算時間となる。一方で、各周波数F(=u)について、演算に使用するウィンドウサイズを(N+1)−F(この場合、Nはウィンドウサイズの最大値である)とし、演算対象の周波数を限定することで、トータルの演算量は、(4)式のようになる。
【0074】
Fmax×(2×N+1−Fmax)/2=3(N2−1)/8 …(4)
つまり、Nがある程度大きいと、上述の式(4)の定数項は無視できるので、通常の演算時間N2/2に対して、全体の演算時間を約75%に削減できる。
【0075】
(c3.1:設定例1)
上述の例では、各周波数Fについての演算に使用するウィンドウサイズが(N+1)−Fの場合、すなわちウィンドウサイズが周波数F毎に異なる場合を説明したが、これ以外の設定方法を採用してもよい。例えば、N−P×[F/P](但し、Nはウィンドウサイズの最大値、Pは2以上の整数であり、[・]はガウス記号を示す)のように周波数Fに応じて離散的にウィンドウサイズを設定してもよい。つまり、周波数演算制御部15は、周波数分解の計算に使用する周波数に応じて、ウィンドウのサイズを離散的に変更させる。
【0076】
具体的には、例えば、N=33、P=2のときの周波数Fおよびウィンドウサイズの関係は、以下のようになる。なお、この場合、同じウィンドウサイズの複数の周波数Fについては一度のフーリエ変換により周波数成分を演算すればよい。つまり、周波数演算制御部15は、周波数分解の計算に使用する周波数ごとにウィンドウのサイズを変更させる。
【0077】
周波数F= 1→ウィンドウサイズ33
周波数F= 2→ウィンドウサイズ31
周波数F= 3→ウィンドウサイズ31
周波数F= 4→ウィンドウサイズ29
周波数F= 5→ウィンドウサイズ29
周波数F= 6→ウィンドウサイズ27
周波数F= 7→ウィンドウサイズ27
周波数F= 8→ウィンドウサイズ25
周波数F= 9→ウィンドウサイズ25
周波数F=10→ウィンドウサイズ23
周波数F=11→ウィンドウサイズ23
周波数F=12→ウィンドウサイズ21
周波数F=13→ウィンドウサイズ21
周波数F=14→ウィンドウサイズ19
周波数F=15→ウィンドウサイズ19
周波数F=16→ウィンドウサイズ17
(c3.2:設定例2)
上述したウィンドウサイズの設定方法は、等間隔にウィンドウサイズを設定する方法であるが、低周波側と高周波側とでウィンドウサイズの設定方法を変更するようにしてもよい。例えば、1≦F<Q(Q<N/2)の周波数Fに対しては、N−P1×[F/P1]でウィンドウサイズを決定し、Q≦Fの周波数Fに対しては、N−P2×[F/P2](P1≠P2)でウィンドウサイズを決定してもよい。具体的には、例えば、N=33、P1=2、P2=4、Q=8のときの周波数Fおよびウィンドウサイズの関係は、以下のようになる。
【0078】
周波数F= 1→ウィンドウサイズ33
周波数F= 2→ウィンドウサイズ31
周波数F= 3→ウィンドウサイズ31
周波数F= 4→ウィンドウサイズ29
周波数F= 5→ウィンドウサイズ29
周波数F= 6→ウィンドウサイズ27
周波数F= 7→ウィンドウサイズ27
周波数F= 8→ウィンドウサイズ25
周波数F= 9→ウィンドウサイズ25
周波数F=10→ウィンドウサイズ25
周波数F=11→ウィンドウサイズ25
周波数F=12→ウィンドウサイズ21
周波数F=13→ウィンドウサイズ21
周波数F=14→ウィンドウサイズ21
周波数F=15→ウィンドウサイズ21
周波数F=16→ウィンドウサイズ17
なお、上述の例では、周波数FをQ以上とQ未満との2つに分割した設定例を示したが、3つ以上に分割してもよい。
【0079】
[D.処理手順]
次に、本実施の形態に従う対応点探索方法の全体手順について説明する。
【0080】
図8は、本発明の実施の形態に従う対応点探索方法の全体手順を示すフローチャートである。
図8に示す各ステップは、典型的には、CPU102(
図3)が対応点探索処理プログラム112を実行するなどして実現される。
【0081】
図8を参照して、まず、CPU102は、ステレオ画像(基準画像および参照画像)を取得する(ステップS2)。続いて、CPU102は、基準画像上に処理対象となる画素(注目画素)を設定する(ステップS4)とともに、基準画像上に設定された処理対象となる画素に対応する、参照画像上の画素を探索するための初期位置を設定する(ステップS6)。そして、以下に示すような探索処理が実行される。
【0082】
すなわち、CPU102は、周波数分解の計算に使用する周波数に応じたウィンドウサイズを決定する(ステップS8)。そして、CPU102は、基準画像上の処理対象の画素がその重心位置になるように、決定したウィンドウサイズをもつ基準ウィンドウを設定するとともに、参照画像上の探索候補の画素がその重心位置になるように、決定したウィンドウサイズをもつ参照ウィンドウを設定する(ステップS10)。
【0083】
続いて、CPU102は、ステップS10において設定された、基準画像上の基準ウィンドウおよび参照画像上の参照ウィンドウに含まれる部分画像に対してフーリエ変換を実行する(ステップS12)。このフーリエ変換によって算出される周波数情報は、処理対象の周波数と関連付けて格納される。そして、CPU102は、周波数分解の計算に使用するすべての周波数についてフーリエ変換が完了したか否かを判断する(ステップS14)。
【0084】
周波数分解の計算に使用するすべての周波数についてフーリエ変換が完了していない場合(ステップS14においてNOの場合)には、CPU102は、周波数分解の計算に使用する次の周波数を選択し、ステップS8以下の処理を繰返し実行する。
【0085】
これに対して、周波数分解の計算に使用するすべての周波数についてフーリエ変換が完了している場合(ステップS14においてYESの場合)には、CPU102は、基準ウィンドウおよび参照ウィンドウから算出されるそれぞれの周波数情報から位相情報のみを抽出し(ステップS16)、両者の位相差を算出する(ステップS18)。すなわち、ステップS16においては、必要なすべての周波数についてのフーリエ変換が完了しているので、周波数毎の振幅および位相が算出されている。CPU102は、これらの情報を用いて、周波数−位相差の情報を算出する。さらに、CPU102は、算出した位相差情報を逆フーリエ変換することで、POC値を算出する(ステップS20)。このPOC値は、参照画像に設定されている探索候補の画素の位置に関連付けて格納される。
【0086】
続いて、CPU102は、参照画像に設定可能なすべての探索候補についてPOC値が算出されたか否かを判断する(ステップS22)。参照画像に設定可能なすべての探索候補のうちPOC値が算出されていない探索候補がある場合(ステップS22においてNOの場合)には、CPU102は、参照画像上の探索候補となる画素の位置を設定し(ステップS24)、ステップS8以下の処理を繰返し実行する。
【0087】
参照画像に設定可能なすべての探索候補についてPOC値が算出された場合(ステップS22においてYESの場合)には、CPU102は、POC値の分布からピークに対応する位置を決定する(ステップS26)。すなわち、CPU102は、参照画像に含まれる探索候補のうち、最も高いPOC値を示す位置を抽出し、当該抽出した位置を基準画像上に設定されている画素(注目画素)の対応点であると決定する。
【0088】
その後、CPU102は、基準画像上で対応点探索の対象となるすべての画素について処理が完了しているか否かを判断する(ステップS28)。基準画像上で対応点探索の対象となる画素のうち処理が完了していないものがある場合(ステップS28においてNOの場合)には、CPU102は、基準画像上に処理対象となる別の画素(注目画素)を設定する(ステップS30)とともに、ステップS6以下の処理を繰返し実行する。
【0089】
基準画像上で対応点探索の対象となるすべての画素について処理が完了している場合(ステップS28においてYESの場合)には、処理は終了する。
【0090】
[E.変形例1:2のべき乗に沿ったウィンドウサイズの変更]
コンピューターを用いてフーリエ変換を実行する場合、バタフライ演算を特徴とする高速フーリエ変換(FFT:Fast Fourier Transformation)を用いることで、演算時間をより短縮化できる。
【0091】
この場合、設定されるウィンドウのサイズは、2のべき乗の条件を満足する必要がある。すなわち、演算速度の観点からは、ウィンドウのサイズは、2のべき乗とすることが好ましい。本変形例では、周波数分解の計算に使用する周波数に応じて、ウィンドウのサイズを2のべき乗に沿って変更させる例について説明する。
【0092】
例えば、最大のウィンドウのサイズを32×16とした場合、横方向の周波数は、直流成分と周波数1〜15の交流成分とで表され、縦方向の周波数は、直流成分と周波数1〜7の交流成分とで表される。
【0093】
一般的に、通常のフーリエ変換の演算量がN2である場合、高速フーリエ変換(FFT)を用いると、演算量がN×log2Nとなることが知られている。例えば、ウィンドウのサイズが32×32の場合、通常のフーリエ変換では演算量が1024になるのに対して、高速フーリエ変換(FFT)では演算量が160となり、80%以上の高速化が実現できる。
【0094】
上記の点を考慮して、上述の実施の形態において、高速フーリエ変換(FFT)を用いる場合に、ウィンドウのサイズを無秩序に変更した場合、演算量が増加する可能性がある。
【0095】
そのため、高速フーリエ変換(FFT)を用いる場合には、演算対象の情報(ウィンドウサイズ)を2のべき乗サイズになるようにすることで、演算量を低減することが可能になる。例えば、ウィンドウサイズ8のFFT演算量は、8×log28=24である。仮に、周波数1〜4だけを計算する場合には、演算量は半分の12となる。そして、周波数5〜8については、ウィンドウサイズ4の情報について計算した場合には、演算量は4×log24=8となり、全体としての演算量は12+8=20となる。すなわち、このケースでは約17%の演算量の低減効果が得られる。
【0096】
このような演算量の低減効果を得るための、ウィンドウのサイズの設定例としては、以下のようになる。
【0097】
周波数F=1,2,3,4→ウィンドウサイズ8(23)
周波数F=5,6,7,8→ウィンドウサイズ4(22)
[F.変形例2:窓関数の適用]
フーリエ変換は、ウィンドウに含まれる画像の両端における連続性を前提として行なわれるが、現実には、連続性は保たれていない。そのため、フーリエ変換を行なう前の前処理として、窓関数を適用して、画像の連続性を担保するという信号処理を採用することが一般的である。このような窓関数としては、ハミング窓、カイザー窓、ハニング窓といった各種のものが定義されており、任意の窓関数を採用することができる。
【0098】
例えば、1次元のハニング窓は、(5)式のように定義できる。
【0100】
上述の実施の形態においては、低い空間周波数の位相情報の計算に使用するウィンドウのサイズに比較して、高い空間周波数の位相情報の計算に使用するウィンドウはより狭い範囲に設定される。ここで、より狭い範囲の両端における連続性は担保されないので、精度が劣化する可能性がある。
【0101】
そこで、空間周波数の別に設定されるウィンドウのサイズに応じた窓関数を都度適用することで、周波数演算の精度を安定化することができる。すなわち、本変形例において、対応点探索部14は、ウィンドウに含まれる画像に対して窓関数による畳み込み演算を行なう。このとき、窓関数は、対象のウィンドウのサイズに応じて設定される。言い換えれば、周波数演算の前に行なわれる窓関数の畳み込み演算は、設定されたウィンドウのサイズに合わせてそれぞれ実施される。
【0102】
なお、ウィンドウのサイズの別に窓関数の畳み込み演算を行なうことで、演算量が増加する可能性があるが、サイズの設定を適切に行なうことで、精度を保ちつつ、演算量を低減できる。例えば、上述の変形例1に記載した例の場合、周波数5〜8についての周波数情報を演算するために用いる情報(ウィンドウサイズ4)に対して、窓関数を新たに適用する必要がある。このときの窓関数の適用に係る演算量は、4/2=2となる。なお、フーリエ変換は、実部および虚部の両方を演算する必要があるのに対して、窓関数は、実部のみを演算すればよいので、比率的にはサイズの約半分の演算量に相当することになる。このように、窓関数をウィンドウサイズの別に適用した場合であっても、演算量の低減効果を発揮することができる。
【0103】
なお、上述の説明では、1次元のフーリエ変換について説明したが、2次元のフーリエ変換に拡張することもできる。例えば、2次元のハニング窓は、(6)式のように定義できる。
【0105】
窓関数を適用する場合には、(5)式をまとめて1回だけ適用すればよいので、1次元のフーリエ変換の場合よりも、演算量の低減効果を高めることができる。
【0106】
[G.変形例3:多重解像度を用いた粗密戦略]
本発明の実施の形態の変形例3として、多重解像度を用いた粗密戦略を組み合わせて、対応点を探索する処理について説明する。
【0107】
上述したように、本実施の形態においては、周波数分解を行なう際、周波数毎に計算に使用するウィンドウサイズを制限することで、演算時間を短縮化する。しかしながら、このように周波数分解に使用するウィンドウのサイズを小さくすることによって、探索できる範囲を狭めてしまう可能性がある。例えば、全ての周波数で計算に使用するウィンドウサイズを制限するということは、ウィンドウを小さくすることと同じであり、対応点の探索可能範囲が制限される可能性がある。
【0108】
この探索可能範囲が制限されることは、基準画像上に設定される基準ウィンドウでは生じず、参照画像上に設定される参照ウィンドウでのみ生じる。基準画像側では、求めたい注目点がその重心位置になるように基準ウィンドウが設定されるので、計算で使用するウィンドウサイズを小さくしても求めたい点が必ず内包される。一方で、参照画像側に設定される参照ウィンドウの場合は、求めたい点が参照ウィンドウの重心位置になるとは限らないため、計算に使用するウィンドウサイズを小さくすると求めたい点が内包されない(あるいは、ウィンドウサイズの端の方にかろうじて含まれる状態である)可能性があり、その結果、探索できる範囲を狭めるという結果になる。
【0109】
以上のように、本実施の形態においては、探索範囲をカバーするために、低い周波数ではウィンドウのサイズをそのまま用いて(すなわち、全ての情報を用いて)周波数分解を行なう一方で、高い周波数についてのみ計算に使用するウィンドウサイズを制限しているが、高周波がカバーできる探索範囲が実質的に狭くなるため、広い探索範囲が必要である場合には、精度に影響を与える可能性がある。
【0110】
そこで、本変形例においては、多重解像度を用いた粗密戦略(多重解像度戦略)と組み合わせることで、対応点探索の精度を維持しつつ、演算時間を短縮化するという高い効果を発揮できる。言い換えれば、多重解像度戦略を利用することで、探索範囲をある程度限定できるため、高い周波数について、計算に使用するウィンドウサイズを制限しても、精度への影響を抑制できる。すなわち、周波数演算制御部15は、周波数分解の計算に使用する周波数を低周波側と高周波側とに分けたときに、低周波側では細かくウィンドウサイズを変更させ、高周波側では粗くウィンドウサイズを変更させる。
【0111】
多重解像度を用いた粗密戦略(多重解像度戦略)は、入力画像(基準画像および参照画像)を複数の解像度を有する画像群に変換し、解像度の異なる画像についての対応点探索の結果を用いて、入力画像(基準画像および参照画像)の間の対応点を決定する。より具体的には、まず、解像度の低い画像間で対応点を探索する。解像度が低いことで、対応点探索処理の演算時間は短くて済むが、探索された位置の精度は相対的に低い(対応する解像度の精度が限界となる)。続いて、より解像度の高い画像間で対応点が探索される。このとき、先に実行された対応点探索処理の結果を利用して、限定された範囲内で探索が行なわれる。そのため、解像度が高くとも、演算時間を短縮できる。以下同様の処理を行なうことで、最も解像度の高い画像において探索された対応点が対応点探索結果として出力される。
【0112】
図9は、本発明の実施の形態の変形例2に従う画像処理装置の機能構成を示すブロック図である。
図9に示すブロック図の構成要素のうち、
図5に示すブロック図と同一の構成要素には同一の符号を付している。すなわち、本変形例に従う画像処理装置は、
図5に示す本実施の形態に従う画像処理装置に比較して、多重解像度画像生成部16と、対応点探索制御部17と、初期位置設定部18とをさらに加えたものである。その他の構成要素については、上述したので、詳細な説明は繰り返さない。
【0113】
《g1:多重解像度画像生成部16》
図10は、本発明の実施の形態の変形例2において生成される解像度の異なる画像群を示す模式図である。
図11は、本発明の実施の形態の変形例2において生成される解像度の異なる画像群の一例を示す図である。
【0114】
多重解像度画像生成部16は、入力されたステレオ画像(基準画像および参照画像)のそれぞれから、
図10および
図11に示すような解像度の異なる複数の画像を生成する。
【0115】
入力画像の解像度がVGA(640×480)であり、変換倍率を1/2、レイヤー数を4とした場合、多重解像度画像生成部16は、例えば、基準画像および参照画像のそれぞれについて、「VGA(640×480)」、「QVGA(320×240)」、「160×120」、「80×60」の画像群を生成される。なお、入力層のVGAをレイヤー0、QVGAをレイヤー1、160×120をレイヤー2、80×60をレイヤー3とも記載する。
【0116】
このような解像度の異なる画像群の間では、変換倍率に応じて、以下のような関係が正立する。すなわち、レイヤー3における座標(x,y)の画素値は、レイヤー2における座標(2x,2y)、座標(2x+1,2y)、座標(2x,2y+1)、座標(2x+1,2y+1)からなる2×2の画素の平均値として算出される。
【0117】
なお、変換倍率は1/2に限らず、1/3といったより小さい値を採用してもよい。この場合には、必要なレイヤー数が少なくできるので、より高速な処理が必要なときに利用できる。あるいは、変換倍率として、1/1.5といったより大きな値を採用してもよい。こうすることで必要なレイヤー数が増加して、演算負荷は相対的に高くなるが、より細かく探索していくので、ロバスト性を高めることができる。
【0118】
また、レイヤー間で変換倍率を同一にする必要はなく、例えば、入力画像に近いところでは、より小さな変換倍率を採用して、低解像度になるにつれて変換倍率を大きくしてよい。このような変換倍率を変化させることで、距離混合が激しい低解像度ではより細かく探索してロバスト性を担保することができ、一方、高解像度ではロバスト性よりも高速化に重きを置くことで、トータルバランスのとれた対応点探索処理が可能になる。
【0119】
《g2:対応点探索制御部17》
対応点探索制御部17は、次に説明するような手順に従って、入力画像(基準画像および参照画像)の間の対応点探索処理を実行する。ここでは、上述のように、入力画像の解像度がVGA(640×480)であり、変換倍率を1/2、レイヤー数を4とした場合について説明する。
【0120】
図12は、本発明の実施の形態の変形例2に従う多重解像度を用いた粗密戦略の処理内用を説明するための図である。
【0121】
図12を参照して、例えば、レイヤー3において、基準画像上の座標(x3,y3)の画素に対応する参照画像上の座標(p3,q3)の画素が対応点探索によって算出されたとする。次に、レイヤー2において、の基準画像上の座標(x2,y2)の画素に対応する参照画像上の画素を求めるとき、レイヤー3における対応点探索の結果が利用される。具体的には、レイヤー3において求めた参照画像上の座標(p,q)の近傍に正解位置があるので、レイヤー2においては、レイヤー3での参照画像上の座標(p,q)をおよそ2倍にした座標の近傍にあると考えられる。そのため、レイヤー2における対応点探索の結果を利用して、次は、レイヤー1における参照画像上での正解位置のおよその位置を求める。このように、低解像度の結果を高解像度の初期位置になるように徐々に正解に近付けていく。このような探索方式は、一般に、多重解像度戦略、あるいは粗密戦略と称される。
【0122】
《g3:初期位置設定部18》
初期位置設定部18は、上述した多重解像度戦略(粗密戦略)におけるレイヤー変更時の初期位置を設定する。
【0123】
図13は、本発明の実施の形態の変形例2に従う多重解像度を用いた粗密戦略において初期位置を設定する処理を説明するための図である。より具体的には、
図13には、基準画像および参照画像のレイヤー2およびレイヤー3の一部を抜き出した図である。
【0124】
例えば、レイヤー3における基準画像上の座標(bx,by)の画素は、レイヤー2におけるにおける基準画像上の座標(BX,BY)、座標(BX+1,BY)、座標(BX,BY+1)、座標(BX+1,BY+1)の2×2の平均値として算出される。レイヤー3において、参照画像上の座標(bx,by)の画素は、参照画像上の座標(rx,ry)の画素に対応付けられたとする。初期位置設定部18は、レイヤー3における対応点探索の結果から、レイヤー2における対応点探索のための初期位置を参照画像側に設定する。この設定方法は、以下のように行なわれる。
【0125】
(RX,RY)=(2×rx,2×ry)
(RX+1,RY)=(2×rx+1,2×ry)
(RX,RY+1)=(2×rx,2×ry+1)
(RX+1,RY+1)=(2×rx+1,2×ry+1)
このように初期位置を設定することで、その設定精度をより正確にできる。なお、演算をより簡略化するために、(RX,RY)、(RX+1,RY)、(RX,RY+1)、(RX+1,RY+1)に対して、一律同じ初期位置(2×rx,2×ry)を与えるようにしてもよい。
【0126】
《g4:小括》
本変形例によれば、対応点探索における探索範囲が制限されることなく、演算時間を短縮化できる。
【0127】
[H.適用例1]
上述した本実施の形態およびその変形例に従う画像処理装置は、例えば、ステレオ計測に適用できる。より具体的には、ステレオカメラで対象物を撮像し、その撮像によって得られた画像間の対応付けの結果から、対象物の距離などを計測する。
【0128】
図14は、本発明の実施の形態に従う画像処理装置の適用例1を説明するための図である。
図15は、
図14に示すステレオ計測の原理を説明するための図である。
【0129】
図14を参照して、ステレオ計測においては、2台のカメラ(ステレオカメラ)で同時に対象物を撮像する。画像処理装置は、撮像によって得られた2枚の入力画像(基準画像および参照画像)に対して対応点探索処理を行なって、画像間の対応付けを行なう。さらに、画像処理装置は、三角測量の原理に基づいて、対応付け結果から対象物までの距離情報を取得する。
【0130】
図15に示すように、基準画像を生成する基準カメラと参照画像を生成する参照カメラとの対応点位置の差(視差)がΔdである場合には、対象物までの距離Dは、次式で算出される。
【0131】
D=fB/Δd
但し、Bはカメラの基線長であり、fはカメラレンズの焦点距離である。
【0132】
さらに、対象物の3次元位置(X,Y,Z)は、次式で算出される。
X=x×D/f
Y=y×D/f
Z=D
但し、x,yは、基準画像上の注目画素の座標である。
【0133】
[I.適用例2]
上述の適用例1においては、時間的に同時に撮像した画像間の対応付けを行なう例を説明したが、異なる時間で撮像された画像間の対応付けを行なってもよい。
【0134】
図16は、本発明の実施の形態に従う画像処理装置の適用例2を説明するための図である。
図16に示すように、1台のカメラが時系列に画像を撮像するとともに、画像処理装置は、時間的に異なる2枚の画像の間で対応点探索処理を実行する。この対応付けの結果を用いて、対象物の時間的な移動の情報(動き情報)を算出し、それを表示する。例えば、
図16に示すように、被写体がどの方向にどのような速度で移動しているかを視覚的に表現する。
【0135】
[J.利点]
本実施の形態によれば、周波数分解を行なう際、周波数毎に計算に使用するウィンドウサイズを制限することで、演算時間の短縮化することができる。すなわち、より高い周波数については、周波数分解に用いる情報を低減することで、全体的な処理量を低減できる。特に、対応点探索処理に用いられる周波数分解は、演算負荷が高いので、本実施の形態に従う方法を採用することで、より効率的に演算負荷を低減できる。
【0136】
[K.別形態]
本発明の実施の形態としては、以下のような態様を含む。
【0137】
本発明のある局面に従う対応点探索方法は、概略同等の2以上の画像を取得する画像取得ステップと、画像取得ステップにおいて取得された2以上の画像に対して、それぞれウィンドウを設定するステップと、設定した各ウィンドウに対して周波数分解を行なうことで位相情報を取出すステップと、取出した各位相情報の差を計算することで、画像取得ステップにおいて取得された2以上の画像の第1画像における点に対応する点を第2画像上から決定するステップと、周波数分解を行なう際、周波数毎に計算に使用する予め定められたウィンドウサイズに設定して、各周波数を算出するステップとを含む。
【0138】
好ましくは、少なくとも低い周波数に比べて高い周波数で使用するウィンドウサイズが同じか小さくなるように設定される。
【0139】
好ましくは、周波数毎に計算に使用するウィンドウサイズは、2のべき乗になるように小さくされる。
【0140】
好ましくは、周波数演算の前に行なう窓関数の畳み込み演算は、設定されたウィンドウサイズに合わせてそれぞれ実施される。
【0141】
好ましくは、取得したステレオ画像を複数の解像度に変換するステップと、粗密戦略に基づいて、各解像度で位相限定相関法による対応点探索を実行するステップとをさらに含む。
【0142】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。