(57)【特許請求の範囲】
【請求項１】
対象を異なる方向から撮影した画像を用いて対象の三次元形状を求めることにより距離画像を生成する画像処理装置において、
基準画像におけるエピポーラ線に沿って基準画素データを読み取る基準画像読み取り手段と、
前記基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る参照画像読み取り手段と、
前記参照画像読み取り手段によって読み出された参照画素データを一時的に保持するエピポーラ画素記憶手段と、
を有することを特徴とする画像処理装置。
【請求項２】
参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に保持するエピポーラ画素記憶手段の領域を動的に変化させる制御手段を有することを特徴とする請求項１記載の画像処理装置。
【請求項３】
参照画像読み取り手段は、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶することを特徴とする請求項１又は請求項２記載の画像処理装置。
【請求項４】
参照画像読み取り手段は、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むことを特徴とする請求項１から請求項３のうちのいずれか１項記載の画像処理装置。
【請求項５】
複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する制御手段を有することを特徴とする請求項１から請求項４のうちのいずれか１項記載の画像処理装置。
【請求項６】
対象を異なる方向から撮影した画像を用いて対象の三次元形状を求めることにより距離画像を生成する画像処理のプログラムにおいて、
基準画像におけるエピポーラ線に沿って基準画素データを読み取る第１のステップと、
前記基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る第２のステップと、
前記第２のステップによって読み出された参照画素データをエピポーラ画素記憶手段に一時的に記憶する第３のステップと、
を有することを特徴とする画像処理のプログラム。
【請求項７】
参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に記憶するエピポーラ画素記憶手段の領域を動的に変化させる第４のステップをさらに有することを特徴とする請求項６記載の画像処理のプログラム。
【請求項８】
第２のステップは、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶することを特徴とする請求項６又は請求項７記載の画像処理のプログラム。
【請求項９】
第２のステップは、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むことを特徴とする請求項６から請求項８のうちのいずれか１項記載の画像処理のプログラム。
【請求項１０】
複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する第５のステップをさらに有することを特徴とする請求項６から請求項９のうちのいずれか１項記載の画像処理のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理装置及び画像処理のプログラムに関するものである。
【０００２】
【従来の技術】
ビデオカメラ等で撮影される二次元の動画像、もしくは多視点の静止画像から三次元情報を復元することは、自動制御等の分野で活用が期待できるため、多くの研究がなされている。
【０００３】
その基本的な原理は、三角測量の原理を利用したステレオ法であり、これは２つ以上の異なる視点から同一対象物を撮影した画像間での各画像の対応点を見つけることで、その位置関係を求めることにより計測対象までの距離を計測する方法である。ある視点の画像から別の視点の画像の対応点を求める場合には、各画像の撮影位置や撮影方向等に関するパラメータが分かっていれば、これを制約条件として奥行きを未知とする一次元の探索問題になる。
【０００４】
その一例として、「複数視点画像からの三次元形状復元−局所アフィン変形ウィンドウによるステレオマッチング−」、情報処理学会研究報告、９８−ＣＶＩＭ−１０９、ｐｐ．３３−４０には、ある視点の画像に撮影位置や撮影方向と奥行きをパラメータとするアフィン変換をほどこすことにより、別の視点の画像に変形でき、これを利用して画像の対応点を探索することにより三次元情報が得られることが示されている。
【０００５】
また、別の例としては、「信頼性情報をもったオプティカルフローからの形状復元とその移動物体検出への応用」、電子情報通信学会論文誌Ｄ−ＩＩ  Ｖｏｌ．Ｊ７６−Ｄ−ＩＩ  Ｎｏ．８  ｐｐ．１５６２−１５７１では、カメラが並進速度Ｔ、回転速度Ｒで移動したときに生じるオプティカルフローから画像の対応点を求めることが示されている。
【０００６】
これらの文献の場合では、２つの画像の対応する点は、エピポーラ方程式と呼ばれる式を満たし、エピポーラ線と呼ばれる線上に乗る。図８は、２つの画像の対応する点のエピポーラ線を示す図である。図８において、３０（３０−１，３０−２，３０−３）は被写体としての物体、３１はある基準用カメラ（図示せず）によりある視点から物体３０を撮像した基準となる画像（これ以降、「基準画像」と称する）、３２は他の参照用カメラ（図示せず）により別の視点から同一の物体３０を撮像した参照用の画像（これ以降、「参照画像」と称する）、Ｐは基準画像３１における物体３０の基準画像、Ｑ１，Ｑ２，Ｑ３は参照画像３２における物体３０の参照画像である。
【０００７】
次に、動作について説明する。
物体３０が基準用カメラの一定の視線上に存在する限り、基準画像３１から物体３０までの距離がＺ１，Ｚ２，Ｚ３というようにその視線上で変化しても、すなわち、物体３０が物体３０−１，３０−２，３０−３のように移動しても、基準画像３１上の点Ｐの位置（座標）は変化しない。一方、参照用カメラで移動する物体３０−１，３０−２，３０−３を撮像した場合には、参照画像３２上では、Ｑ１，Ｑ２，Ｑ３のように、エピポーラ線Ｅ上に現れて、物体３０が基準用カメラの一定の視線上に存在する限り、参照画像３２上での物体３０の画像はエピポーラ線Ｅ上から外れることはない。
【０００８】
このような、幾何光学的な性質を利用して、点Ｐに対する対応点を探索することにより、点Ｐにおける対象物体までの距離を求めることができる。この方法を画面上の全ての画素について行うことにより三次元情報を取得できる。
【０００９】
対応点を探索する方法としては、例えば、「複数の基線長を利用したステレオマッチング」、電子情報通信学会論文誌Ｄ−ＩＩ  Ｖｏｌ．Ｊ７５−Ｄ−ＩＩ  Ｎｏ．８  ｐｐ．１３１７−１３２７にあるマルチベースラインステレオ法がある。ここには、複数の画像間の自乗誤差の総和を用いて対応点を判断する方法が示されている。マルチベースラインステレオ法では、想定される距離Ｚの逆数１／Ｚを変化させることにより、基準画像と参照画像の対応点にあたる画素の誤差の総和を求め、最も誤差の小さくなる時の距離の逆数１／Ｚをその画素での三次元情報（奥行き）とする。また、このような手法を用いれば、３つ以上の異なる視点から撮影された画像から三次元情報を復元することも可能になる。
【００１０】
【発明が解決しようとする課題】
しかしながら、上述のような複数の視点の二次元画像から三次元情報を復元しようとする場合、一般的にエピポーラ線は、参照画像のＸＹ座標軸に対して斜めの直線になる。このため、三次元情報の復元を行う画像処理装置を構成した場合、参照画像をメモリ等の記憶装置から読み取るには、離散的にメモリアクセスを行わなくてはならない。特に、二次元の動画像のような、連続的に変化する画像から三次元情報を復元する場合、エピポーラ線の傾き等も動的に変化するため、メモリへのアクセスも動的に変化することになる。
【００１１】
従来は、複数の視点の二次元画像から三次元情報を復元する際に、対応点を求める等の処理の負荷が大きく、その演算に時間がかかるため、メモリのアクセス時間が問題になるようなことはなかった。しかし、半導体技術等の向上により、これらの処理が高速に実行できるようになり、メモリの読み取り速度が全体の処理に対するボトルネックになる可能性が出てきた。また、この場合、読み取りデータは連続的ではなく離散的であるため、バースト転送によりアドレス指定等を省略するといった手法により、読み取りを高速化することが困難である。
このような問題の解決方法として、読み取り速度の速いメモリを使用する方法があるが、このようなメモリは極めて高価であるため製品のコストが高くなり、装置の規模も大きくなってしまう。
すなわち、上記従来の画像処理装置においては、読み取りを高速化することと製品のコストダウンを図ることがトレードオフの関係になっていて、双方の要求を満たすことができないという課題があった。
【００１２】
この発明は上記のような課題を解決するためになされたもので、複数の視点の二次元画像から三次元情報を復元する装置を構成しようとする場合に、画素データの読み取りを高速かつ効率的に行うことにより全体の処理の高速化を可能にするとともに、製品のコストダウンを図ることが可能な画像処理装置及び画像処理のプログラムを得ることを目的とする。
【００１３】
【課題を解決するための手段】
この発明に係る画像処理装置は、基準画像におけるエピポーラ線に沿って基準画素データを読み取る基準画像読み取り手段と、基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る参照画像読み取り手段と、参照画像読み取り手段によって読み出された参照画素データを一時的に保持するエピポーラ画素記憶手段とを有するものである。
【００１４】
この発明に係る画像処理装置は、参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に保持するエピポーラ画素記憶手段の領域を動的に変化させる制御手段を有するものである。
【００１５】
この発明に係る画像処理装置の参照画像読み取り手段は、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶するようにしたものである。
【００１６】
この発明に係る画像処理装置の参照画像読み取り手段は、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むようにしたものである。
【００１７】
この発明に係る画像処理装置は、複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する制御手段を有するものである。
【００１８】
この発明に係る画像処理のプログラムは、基準画像におけるエピポーラ線に沿って基準画素データを読み取る第１のステップと、基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る第２のステップと、第２のステップによって読み出された参照画素データをエピポーラ画素記憶手段に一時的に記憶する第３のステップとを有するものである。
【００１９】
この発明に係る画像処理のプログラムは、参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に記憶するエピポーラ画素記憶手段の領域を動的に変化させる第４のステップをさらに有するものである。
【００２０】
この発明に係る画像処理のプログラムにおける第２のステップは、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶するようにしたものである。
【００２１】
この発明に係る画像処理のプログラムにおける第２のステップは、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むようにしたものである。
【００２２】
この発明に係る画像処理のプログラムは、複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する第５のステップをさらに有するものである。
【００２３】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１は、この発明の実施の形態１における画像処理装置の構成を示すブロック図である。図１において、１は画像処理装置、２は基準画像と参照画像の画素データを入力する画像入力手段、３は画像入力手段２が搭載された移動手段、４は画像入力手段２から送られてきた基準画像を記憶する基準画像記憶手段、５は画像入力手段２から送られてきた参照画像を記憶する参照画像記憶手段（主記憶装置）、６は基準画像のどの画素データを読み取るかを決めて基準画像記憶手段４からの読み取りを実行する基準画像読み取り手段、７は基準読み取り手段６が基準画像のどの画素を読み取ったかに基づいて、参照画像のどの画素データを読み取るかを決めて参照画像の画素データの読み取りを実行する参照画像読み取り手段、８は参照画像読み取り手段７の指示に従い、参照画像記憶手段５から読み出された参照画像の画素データを一時的に記憶する一時記憶手段（エピポーラ画素記憶手段）、９は基準画像の画素データとそれに対応する参照画像の画素データから距離画像を作成する距離画像生成手段、１０は距離画像作成手段９で算出した距離画像のデータを出力する距離画像出力手段、１１は画像入力手段２が画像を取得した際の位置情報と方位情報を計測する三次元位置方位センサである。
【００２４】
なお、図１には記載されていないが、この画像処理装置１を全体的に制御する制御手段があり、移動手段３、基準画像読み取り手段６、参照画像読み取り手段７、距離画像生成手段９、距離画像出力手段１０にシステムバス等を介して接続されており、これらの各手段を制御する。ただし、以下においては説明を簡潔にするために、基準画像読み取り手段６、参照画像読み取り手段７、距離画像生成手段９等が自らデータ処理を実行するものとする。
【００２５】
また、上述の基準画像記憶手段４と参照画像記憶手段５は、例えば距離画像生成手段９の外部に接続されているメモリで構成されている。一方、一時記憶手段８は、これらのメモリと比較して、参照画像読み取り手段７と高速にデータ受け渡しが可能であるが、記憶容量の小さな内部メモリもしくはキャッシュ等で構成されている。しかしながら、この発明は上記構成に限定されるものではない。すなわち、基準画像読み取り手段６、参照画像読み取り手段７、一時記憶手段８、距離画像生成手段９は別々の装置（デバイス）で構成される必要はなく、１つのＬＳＩ等で構成されていてもよい。
【００２６】
また、上述の画像入力手段２は、例えばカメラなどの撮影手段を想定しているが、外部の記憶装置からの入力や、他の画像処理装置からの入力などであってもよい。また、距離画像出力手段１０は、例えばディスプレイ等であるが、外部の記憶装置や他の画像処理装置への出力であってもよい。
【００２７】
次に、動作について説明する。
まず、この画像処理装置１による画像処理方法の概略について以下の（１）〜（７）の順に従って説明する。
（１）  画像入力手段２は撮影対象を撮影し、これを基準画像として基準画像記憶手段４に送る。また、撮影時に三次元位置方位センサ１１は位置情報と方位情報を取得し、基準画像記憶手段４に送る。基準画像記憶手段４は、画像データと位置情報、方位情報を１つのセットとして記憶する。
【００２８】
（２）  移動手段３により、基準画像を撮影した位置から移動する。次に、画像入力手段２は撮影対象を撮影し、これを参照画像として参照画像記憶手段５に送る。また、撮影時に三次元位置方位センサ１１は位置情報と方位情報を取得し、参照画像記憶手段５に送る。参照画像記憶手段５は、画像データと位置情報、方位情報を１つのセットとして記憶する。
【００２９】
（３）  基準画像読み取り手段６は、基準画像記憶手段４と参照画像記憶手段５から、処理の対象となる基準画像と参照画像の位置情報と方位情報をそれぞれ読み取る。次に、基準画像読み取り手段６はこれらの位置情報と方位情報から、基準画像と参照画像上のエピポーラ線の傾きをそれぞれ算出する。算出した傾きは参照画像読み取り手段７に送られる。
【００３０】
（４）  基準画像読み取り手段６は、基準画像上の画素データをエピポーラ線に沿うようにして、基準画像記憶手段４から読み取る。基準画像読み取り手段６は、画素データをひとつ読み取る毎に、読み取った画素データとその画像上の位置を距離画像生成手段９に送る。また、読み取った画素の画像上の位置の情報を参照画像読み取り手段７に送る。あるエピポーラ線上のすべての画素データを読み取った後は、エピポーラ線をずらして（シフトして）、順次読み取りを行い、基準画像上のすべての画素データを読み取るようにする。
【００３１】
（５）  参照画像読み取り手段７は、基準画像読み取り手段６が新たなエピポーラ線の画素データを読み取る場合、それに対応する参照画像上のエピポーラ線を求め、その線に沿う画素データを参照画像記憶手段５から読み取り、一時記憶手段８に書き込んでおく。
【００３２】
（６）  参照画像読み取り手段７は、基準画像読み取り手段６から送られてきた、基準画像上の画素に対応する参照画像上の画素を算出する。その後、一時記憶手段８から対応する画素データを読み取り、距離画像生成手段９に送る。
【００３３】
（７）  距離画像生成手段９は、基準画像読み取り手段６から送られてきた画素データと、参照画像読み取り手段７から送られてきた画素データから距離画像を算出し、距離画像出力手段１０に送る。
画像処理装置１は、以上の動作により距離画像を生成する。
【００３４】
図２は、この発明の実施の形態１において基準画像における画素の配列及びエピポーラ線を示す図である。図２において、２１は基準画像である。基準画像２１上の任意のエピポーラ線（図２の点線）を想定し、そのエピポーラ線に沿った各画素データと、後述する図４の参照画像のエピポーラ線に沿った複数の画素データとによって、距離画像を生成する。
【００３５】
この例では、エピポーラ方程式から、基準画像上でのエピポーラ線の傾きの角度がα、後述する図４の参照画像上でのエピポーラ線の傾きがβになったものとする。ただし、ここでは、−π／２＜α≦π／２、−π／２＜β≦π／２とする。α，βは基準画像と参照画像の位置情報と方位情報から、２つの画像間の並進速度Ｔと回転速度Ｒを求め、それからエピポーラ方程式を導くことにより求めることができる。
【００３６】
また、基準画像、参照画像の画像のサイズを共に横６４画素、縦６４画素とし、画像の左下すみの画素を原点（０，０）として、横軸をＸ軸、縦軸をＹ軸とし、原点から右側ｘ画素目、上側ｙ画素目の点の座標を（ｘ，ｙ）と表すものとする。また、対象までの距離ＺはＺ０からＺ８までの範囲で９段階の距離をとるものとして、Ｚの探索を行うものとする。また、以下の例では、基準画像上の画素Ｐ（ｘ，ｙ）に対する参照画像上の対応点Ｑ（ｘ’，ｙ’）の画素データは、ｘ’，ｙ’の値の小数点以下を切り捨てて整数値とした時の画素データを用いるものとする。
【００３７】
まず、基準画像読み取り手段６の動作を以下の手順（Ａ１）〜（Ａ４）に従って説明する。
（Ａ１）  基準画像読み取り手段６は、αの角度により、以下のようにして場合分けを行う。
（ｉ）      ０＜α＜π／２
（ｉｉ）    −π／２＜α＜０
（ｉｉｉ）  α＝０  もしくは  α＝π／２
以下では、まず、（ｉ）  ０＜α＜π／２の場合について説明する。
【００３８】
（Ａ２）  最初に、基準画像読み取り手段６は、基準画像上の左上すみの画素（０，６３）の画素データを読み取る。次に、画素（０，６３）の乗るエピポーラ線（図形的には、画素（０，６３）を通るエピポーラ線）を算出する。このときのエピポーラ線はｙ＝（ｔａｎα）ｘ＋６３となる。
【００３９】
（Ａ２−１）  基準画像読み取り手段６は、エピポーラ線上にある画素（０，６３）の画素データを、距離画像生成手段９に送り、画素の位置を示す（０，６３）という情報を参照画像読み取り手段７に送る。基準画像読み取り手段６は、参照画像読み取り手段７が、画素（０，６３）に対する対応点を全て距離画像生成手段９に送り終えるまで、この読み取り処理を休止する。
（Ａ２−２）  画素（０，６３）の処理が完了した時点で、基準画像読み取り手段６内部で画素（０，６３）を０列目（ｘ＝０の列）の画素の「処理完了画素」として記録する。図３は、この発明の実施の形態１における処理完了画素を記録する表を示している。図３に示すように、列毎に処理の完了した画素の中で最も行番号（ｙの値）の小さい画素を記憶するような表を作成し、処理を行った画素を記録する。なお、処理の開始時にこの表の各列の値は全て６４（又は、それ以上のデフォルト値）になっているものとする。
【００４０】
（Ａ３）  次に、エピポーラ線のｙ切片を１つシフトして、ｙ＝（ｔａｎα）ｘ＋６２を新たなエピポーラ線とする。この後、基準画像読み取り手段６は、参照画像読み取り手段７に、エピポーラ線を更新（シフト）した旨の信号を送り、現時点でのエピポーラ線ｙ＝（ｔａｎα）ｘ＋６２上の画素である（０，６２）と、１つ前のエピポーラ線ｙ＝（ｔａｎα）ｘ＋６３上の画素である（０，６３）の情報を送る。以下、（Ａ３−１）〜（Ａ３−３）の処理を行い、ｙ＝（ｔａｎα）ｘ＋６３とｙ＝（ｔａｎα）ｘ＋６２の間にある画素を読み取っていく。各エピポーラ線上のみの画素を読み取るとすると、エピポーラ線の角度αによっては画素の欠落のおそれがあるので、２つのエピポーラ線の間にある画素を読み取るのである。
【００４１】
（Ａ３−１）  ｘ＝０でエピポーラ線上にある画素を求める。ただし、これ以降、ｙの値は小数点以下の値を切り上げるようにする。この場合は（０，６２）になる。この画素を（Ａ２−１）のように処理する。
（Ａ３−２）  次に、ｘ＝１の場合のエピポーラ線上にある画素を求める。この場合はｙの値を切り上げて（１，６３）になる。このとき、基準画像読み取り手段６はこの画素が処理完了画素であるかどうかを確認し、過去に処理した画素を２度処理することがないようにする。また、画素を求める際の切り上げ等の演算の丸め誤差等で処理の飛ばされた画素がないかを確認し、飛ばされた画素があればその画素を処理する。具体的には、図３の表の１列目の数値と現在処理中の画素のｙの値（この場合は６３）を比較する。
この時点で、表の１列目の数値は６４であるため、画素（１，６３）は初めて処理される画素であり、また、ｘ＝１の画素にしては処理の飛ばされた画素はないものとして処理を継続する。これらの処理の後、画素（１，６３）を（Ａ２−１）のように処理する。また、処理の終了した時点で（Ａ２−２）のようにして「処理完了画素」として記録する。
（Ａ３−３）  ｘ＝２以降についても同様の処理を行い、エピポーラ線ｙ＝（ｔａｎα）ｘ＋６２とｙ＝（ｔａｎα）ｘ＋６３の間にある画素（２，６３），（３，６３）について、（Ａ２−１），（Ａ２−２）と同様の処理を行う。
【００４２】
（Ａ４）  以下、同様にして、エピポーラ線のｙ切片を１つずつシフトして順次処理を行っていく。最後の画素に当たる画素（６３，０）が処理されるまで処理を行う。
【００４３】
次に、（ｉｉ）  −π／２＜α＜０の場合では、画素（６３，６３）を通るエピポーラ線から処理を開始し、順次ｙ切片を下げて最後の画素に当たる（０，０）が処理されるまで処理を行うようにする。それ以外は、（ｉ）  ０＜α＜π／２の場合と同様の処理となる。
また、（ｉｉｉ）  α＝０  もしくは  α＝π／２の場合では、Ｘ軸もしくは、Ｙ軸に沿って画素を順次読み取り処理を実行する。これは、従来の一般的な画像処理での操作と同様であるので、説明は省略する。
【００４４】
以上のように処理を行うことにより、基準画像読み取り手段６は、基準画像２１におけるエピポーラ線に沿う画素毎に、画素データの読み取りを実行する。
【００４５】
図４は、この発明の実施の形態１において参照画像における画素の配列及びエピポーラ線を示す図である。図５は一時記憶手段８の記憶エリアを示している。図５に示すように、一時記憶手段８は６４×８個（総計５１２個）のブロック（アドレス）からなり、各ブロックは１つの画素データを保持できるものとする。また、各ブロックには識別のため、０番から５１１番までの通し番号が割り当てられている。
【００４６】
次に、参照画像読み取り手段７と一時記憶手段８の動作を以下の手順（Ｂ１）〜（Ｂ６）に従って説明する。ここでの動作は上述の基準画像読み取り手段６の動作と連動しているものとする。
【００４７】
（Ｂ１）  最初に、参照画像読み取り手段７は、基準画像読み取り手段６から基準画像上の画素（０，６３）の情報を受け取る。これは、上述の（Ａ２）での基準画像読み取り手段６の動作に対応している。その後、参照画像読み取り手段７は、基準画像上の画素（０，６３）の対応する画素を以下の手順で求め、参照画像記憶手段５から読み取り、距離画像生成手段９に送る。なお、このときの処理では、一時記憶手段８への書き込み、読み取り等は行われない。
【００４８】
（Ｂ１−１）  まず、参照画像読み取り手段７は、対象までの距離がＺ０の場合の基準画像上の画素（０，６３）に対する対応点を求める。対応点の求め方については様々な方法があるが、すでに周知の技術であるので詳細な説明は省略する。いま、画像間の併進速度を（Ｔｘ，Ｔｙ，Ｔｚ）、回転速度を（Ｒｘ，Ｒｙ，Ｒｚ）とすると、基準画像上の点Ｐ（ｘ，ｙ）に対する対応点Ｑ（ｘ’，ｙ’）は、以下のようになる。ただし、ここでは、距離の単位を焦点距離（焦点距離＝１）としたものとする。
ｘ’＝ｘ＋（−Ｔｘ＋ｘ×Ｔｚ）／Ｚ０＋ｘ×ｙ×Ｒｘ−（ｘ２−１）
×Ｒｙ＋ｙ×Ｒｚ
ｙ’＝ｙ＋（−Ｔｙ＋ｙ×Ｔｚ）／Ｚ０−ｘ×ｙ×Ｒｙ＋（ｙ２−１）
×Ｒｘ−ｘ×Ｒｚ
参照画像読み取り手段７は、この画素データを参照画像記憶手段５から読み取り、距離画像生成手段９に送る。
（Ｂ１−２）  参照画像読み取り手段７は、距離Ｚ１からＺ８までについても（Ｂ１−１）と同様に対応点を求め、画素データを参照画像記憶手段５から読み取り、距離画像生成手段９に送る。その後、参照画像読み取り手段７は、基準画像上の画素（０，６３）に対応する画素を全て距離画像生成手段９に送った時点で、上述の（Ａ２）にあるように、基準画像読み取り手段６は次に処理を行う画素の読み取り処理を再開する。
【００４９】
（Ｂ２）  次に、参照画像読み取り手段７は、基準画像読み取り手段６から基準画像上での、エピポーラ線を更新した旨の信号を受け取り、現時点でのエピポーラ線上の画素（０，６２）と、１つ前のエピポーラ線上の画素（０，６３）の情報を受け取る。これは、上述の（Ａ３）での基準画像読み取り手段６の動作に対応している。その後、参照画像読み取り手段７は、以下の（Ｂ２−１）〜（Ｂ２−５）のようにして、参照画像記憶手段５から画素データを読み取り、一時記憶手段８に書き込む。
【００５０】
（Ｂ２−１）  参照画像読み取り手段７は、基準画像上の画素（０，６３）と（０，６２）の対応する点を（Ｂ１−１）と同様にして求め、その点の通るエピポーラ線を算出する。このとき、図４のように、画素（０，６３）に対応する点の通るエピポーラ線Ｅ０及び画素（０，６２）に対応する点の通るエピポーラ線Ｅ１をそれぞれ下記の式とする。
Ｅ０  ｛ｙ＝（ｔａｎβ）ｘ＋Ｃ０｝
Ｅ１  ｛ｙ＝（ｔａｎβ）ｘ＋Ｃ１｝
（Ｂ２−２）  参照画像読み取り手段７は、一時記憶手段８をＬブロック毎の仮想的な領域に分割する。このとき、Ｌはエピポーラ線Ｅ１とＥ０の間にある画素か、もしくはどちらかの線をも含んでいる画素を列毎に分けて格納できるような大きさであればよい。例えば、Ｌを「Ｌ＞｜Ｃ１−Ｃ０｜＋｜ｔａｎβ｜＋１を満たすような最小の整数」というように、エピポーラ線の傾きｔａｎβと、ｙ切片Ｃ１とＣ０の間隔に応じて決めてもよい。この例では、Ｌを４とする。以後、一時記憶手段８において領域毎に分けたブロックの「ｍ領域目のｋ番目のブロック」を［ｍ，ｋ］ブロックと表記する。このとき、図５のように、一時記憶手段８の０番のブロックが［０，０］ブロック、１番のブロックが［０，１］ブロック、・・・となるものとする。なお、一時記憶手段８の最後尾の領域がＬブロックに満たない場合（一時記憶手段８がＬで割り切れない場合）は最後尾の領域は使用しないものとする。
【００５１】
（Ｂ２−３）  参照画像読み取り手段７は、図４において、エピポーラ線Ｅ０とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素の中で最小の列番号（最も左側にある列の番号）を「列番号のオフセット開始値」として記録する。図４では５６となる。その後、参照画像読み取り手段７は、５６列の画素の中で、エピポーラ線Ｅ０とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素を行番号の小さい順に一時記憶手段８の“０”の領域に書き込む。例えば、画素（５６，６３）は［０，０］ブロックに書き込まれる。ただし、画素（５６，６４），（５６，６５）は存在しないので、［０，１］，［０，２］ブロックは何も書き込まない。
【００５２】
（Ｂ２−４）  次に、５７列の画素を同様にして“１”の領域に書き込む。例えば、画素（５７，６２）は［１，０］ブロックに、画素（５７，６３）は［１，１］ブロックに書き込まれる。以下、同様にして、６３列までの画素を各領域に書き込んでいく。
（Ｂ２−５）  上述で一時記憶手段８に対応する画素が書ききれない場合があり得る。例えば、一時記憶手段８をＬブロック毎に分割する際にＬが８より大きく、かつ０列から６３列までのエピポーラ線Ｅ０とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素が０列から６３列まで存在する場合である。この場合には、参照画像読み取り手段７は、一時記憶手段８に書き込むことのできた最後の列を「列番号のオフセット終了値」として記録する。それ以降の列の画素は一時記憶手段８に書き込まないものとする。
【００５３】
（Ｂ３）  次に、参照画像読み取り手段７は、基準画像読み取り手段６から基準画像上の画素（０，６２）の情報を受け取る。
（Ｂ３−１）  その後、参照画像読み取り手段７は、距離がＺ０の場合の基準画像上の画素（０，６２）の対応する点を（Ｂ１−１）と同様にして求める。この点は、下記のエピポーラ線上
ｙ＝（ｔａｎβ）ｘ＋Ｃ１
にあるので、対応する点の画素データは一時記憶手段８に格納されている。この画素データを（ｘ１，ｙ１）とする。このとき、参照画像読み取り手段７は、以下の（Ｂ３−１−１）〜（Ｂ３−２）のように、一時記憶手段８から対応する画素データを読み取る。
【００５４】
（Ｂ３−１−１）  まず、参照画像読み取り手段７は、画素（ｘ１，ｙ１）のｘ１が「列番号のオフセット開始値」以上であり、「列番号のオフセット終了値」以下であることを確認する。そうでない場合は、対応する画素が一時記憶手段８に格納されていないので、参照画像記憶手段５から直接対応する画素データを読み取り、距離画像生成手段９に送る。
（Ｂ３−１−２）  次に、参照画像読み取り手段７は、ｘ＝ｘ１の時のエピポーラ線Ｅ１のｙの値を算出し、これを「行番号のオフセット開始値」とする。この場合には
ｙ＝（ｔａｎβ）ｘ１＋Ｃ１
となる（ただし、端数は切捨てられる）。このとき、一時記憶手段８の［ｘ１−（列番号のオフセット開始値），ｙ１−（行番号のオフセット開始値）］ブロックに画素（ｘ１，ｙ１）の画素データが格納されているので、その画素データを呼び出し、距離画像生成手段９に送る。なお、ここでは、図４のように、エピポーラ線Ｅ１がＥ０の下にあるため、「行番号のオフセット開始値」の算出にエピポーラ線Ｅ１を使用した。もし、エピポーラ線Ｅ１がＥ０の上にあるならば、Ｅ０を使用して「行番号のオフセット開始値」を算出する。
（Ｂ３−２）  同様にして、参照画像読み取り手段７は、距離がＺ１からＺ８までの場合の基準画像上の画素（０，６２）の対応する点についても（Ｂ３−１），（Ｂ３−１−１），（Ｂ３−１−２）と同様にして求める。ただし、このとき「行番号のオフセット開始値」を逐次算出する。
【００５５】
（Ｂ４）  次に、参照画像読み取り手段７は、基準画像読み取り手段６から基準画像上の画素（１，６３）の情報を受け取る。この場合も、（Ｂ３）と同様に処理をする。画素（１，６３）は、基準画像上の下記の２つのエピポーラ線
ｙ＝（ｔａｎα）ｘ＋６３
ｙ＝（ｔａｎα）ｘ＋６２
の間にあるので、参照画像上の対応点は下記の２つのエピポーラ線
ｙ＝（ｔａｎβ）ｘ  ＋  Ｃ１
ｙ＝（ｔａｎβ）ｘ  ＋  Ｃ０
の間にある。このため、（Ｂ３）と同様に画素データを一時記憶手段８から読み取ることができる。
【００５６】
（Ｂ５）  参照画像読み取り手段７が受け取る、画素（２，６３），（３，６３）に関しても（Ｂ３）と同様に処理する。
【００５７】
（Ｂ６）  次に、参照画像読み取り手段７は、基準画像読み取り手段６から基準画像上でのエピポーラ線を更新した旨の信号を受け取り、現時点でのエピポーラ線上の画素（０，６１）と、一つ前のエピポーラ線上の画素（０，６２）の情報を受け取る。この場合、画素（０，６１）に対応する点の通るエピポーラ線を
２｛ｙ＝（ｔａｎβ）ｘ＋Ｃ２｝
とすると、エピポーラ線上Ｅ２とＥ１に関して、（Ｂ２）の（Ｂ２−２）〜（Ｂ２−５）と同様の処理を行う。ただし、一時記憶手段内部にすでにある画素データは、参照画像記憶手段５から読み込まないようにする。
例えば、図４で、列６０においてのエピポーラ線Ｅ２とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素は、（６０，５９），（６０，６０），（６０，６１）であるが、画素（６０，６１）の画像データはすでに一時記憶手段８の［１，０］，［１，１］ブロックにそれぞれ格納されているので、画素（６０，５９），（６０，６０）の画素データのみを読み取る。この後、画素（６０，５９）〜（６０，６２）までの画素を、一時記憶手段８の［１，０］〜［１，３］ブロックに書き込む。  以上のように処理を行うことにより、参照画像読み取り手段７と一時記憶手段８は、エピポーラ線に沿う画素毎に画素データの読み取り処理、画素データの書き込み処理を実行する。
【００５８】
次に、距離画像生成手段９の動作を説明する。
距離画像生成手段９は、基準画像読み取り手段６から送られてきた画素データと、参照画像読み取り手段７から送られてきた画素データの差をとり、その差の絶対値が最小となるような距離Ｚを出力する。
【００５９】
例えば、距離画像生成手段９が、基準画像読み取り手段６から基準画素上の画素（０，６３）の画素データを受け取る。次に、参照画像読み取り手段７から参照画像上の対応画素Ｑ０〜Ｑ８を受け取る。ただし、Ｑ０は距離をＺ０とした場合の対応画素とし、同様にＱ１は距離Ｚ１の場合の対応画素、・・・とする。その後、距離画像生成手段９は、画素（０，６３）の画素データと画素Ｑ０〜Ｑ８の画素データそれぞれとの差を取る。このとき、これら９組の組み合わせの中で、差の絶対値が最も小さい値となるものが画素（０，６３）と画素Ｑ３の組だったとする。この場合、距離画像生成手段９はＺ３を結果として出力する。
【００６０】
以上のように処理を行うことにより、距離画像生成手段９は距離を出力する。なお、上述の距離画像生成手段９の処理では、画素毎に差を取っているが、複数の画素が含まれる領域毎に差を取るようにしてもよい。
【００６１】
図６及び図７は、上記画像処理装置１の図示しない制御手段によって実行される画像処理のプログラムを示す概略のフローチャートである。このプログラムは制御手段のＲＯＭ等のメモリに予め記憶されていてもよいが、プログラム自体を装置とは独立に存在するものとし、フロッピー（登録商標）ディスクやＣＤ等の外部記憶媒体、又はインターネット等の通信回線を介して、書き込み可能なメモリにインストールするようにしてもよい。この場合には、画像処理のプログラムの発明として成立する。
【００６２】
図６において、まず、基準画像記憶手段４に記憶された基準画像の最初の画素を指定する（ステップＳＴ１）。図２の例では画素（０，６３）を指定する。次に、指定画素により基準画像のエピポーラ線Ａを算出する（ステップＳＴ２）。次に、そのエピポーラ線Ａ上の画素データ（厳密には、上記したように２つのエピポーラ線Ａに乗る画素データもあるので、エピポーラ線Ａに沿った画素データ）を基準画像読み取り手段６によって基準画像記憶手段４から読み取って、距離画像生成手段９に送出する（ステップＳＴ３）。また、指定画素の座標（位置）により参照画像のエピポーラ線Ｂを算出する（ステップＳＴ４）。
【００６３】
次に、エピポーラ線Ｂ上の参照画素（エピポーラ線Ｂに沿った参照画素）の座標を各距離（Ｚ０からＺ８まで）毎に指定する（ステップＳＴ５）。次に、指定した参照画素データを参照画像読み取り手段７によって参照画像記憶手段５から読み取って、一時記憶手段８に記憶する（ステップＳＴ６）。そして、エピポーラ線Ｂ上に次の参照画素があるか否かを判別し（ステップＳＴ７）、次の参照画素がある場合にはその画素を指定する（ステップＳＴ８）。そして、ステップＳＴ５に移行して、その参照画素の座標を各距離（Ｚ０からＺ８まで）毎に指定し、ステップＳＴ６、ステップＳＴ７の処理を行う。
すなわち、エピポーラ線Ｂ上に次の参照画素がある限り、ステップＳＴ５〜ステップＳＴ８のループ処理を繰り返して、図５に示したように、参照画素の画素データを一時記憶手段８に順に記憶する。
【００６４】
エピポーラ線Ｂ上におけるすべての参照画素の画素データを参照画像記憶手段５から読み取って一時記憶手段８に記憶した後、すなわち、ステップＳＴ７において次の参照画素がない場合には、一時記憶手段８に記憶したエピポーラ線Ｂ上の参照画素を距離画像生成手段９に送出する（ステップＳＴ９）。次に、距離画像生成手段９によって距離画像生成処理が実行される（ステップＳＴ１０）。
【００６５】
なお、距離画像生成手段９によって実行される距離画像生成処理は、次の図７のフローチャートに示すように、各基準画素毎になされるので、基準画像における１つのエピポーラ線Ａに関するエピポーラ線Ｂ上のすべての参照画素が一時記憶手段８に記憶されなくとも、参照画像読み取り手段７は一時記憶手段８から参照画素を読み取って、距離画像生成手段９に送出できるものとする。
【００６６】
基準画像の１つのエピポーラ線Ａについて、ステップＳＴ３からステップＳＴ１０までの処理が終了したときは、エピポーラ線Ａをシフトする（ステップＳＴ１１）。このシフトの結果、基準画像記憶手段４に基準画素がないか否かを判別する（ステップＳＴ１２）。すなわち、シフトされたエピポーラ線Ａを通る基準画素がないか否かを判別する。シフトされたエピポーラ線Ａを通る基準画素がある場合には、ステップＳＴ３に移行して、ステップＳＴ１２までのループ処理を繰り返す。シフトされたエピポーラ線Ａを通る基準画素がない場合、例えば、図２において、右下の画素（６３，０）を通るエピポーラ線Ａがさらに下にシフトされた場合には、このフローを終了する。
【００６７】
図７は、図６のステップＳＴ１０における距離画像生成処理のフローチャートである。まず、距離画像生成手段９に送出された基準画素Ｐを指定する（ステップＳＴ２１）。次に、この指定した基準画素Ｐと比較される各距離（この場合は、Ｚ０からＺ８まで）毎の参照画素を指定するポインタｎに０（初期値）をストアし、基準画素の画素データと参照画素の画素データとの最小値を求めるためのレジスタｄ（ｍｉｎ）にデフォルトの最大値ＭＡＸをストアする（ステップＳＴ２２）。そして、ｎの値をインクリメントしながら、すなわち、この場合、距離Ｚ０からＺ８までに対応する参照画素データを順に指定しながら、ステップＳＴ２３〜ステップＳＴ２８のループ処理を繰り返す。
【００６８】
このループ処理では、距離Ｚ（ｎ）における参照画素Ｑ（ｎ）を指定し（ステップＳＴ２３）、基準画素Ｐの画素データと参照画素Ｑ（ｎ）の画素データとの差分の絶対値をレジスタｄ（ｎ）にストアする（ステップＳＴ２４）。そして、ｄ（ｎ）の値がｄ（ｍｉｎ）の値よりも小さいか否かを判別する（ステップＳＴ２５）。ｎの値が０の場合は、ｄ（ｍｉｎ）の値は最大値であるので、ｄ（０）の値はｄ（ｍｉｎ）の値よりも小さい。ｄ（ｎ）の値がｄ（ｍｉｎ）の値よりも小さい場合には、ｄ（ｍｉｎ）の値をｄ（ｎ）の値に更新する（ステップＳＴ２６）。したがって、ｎの値が０の場合は、ｄ（ｍｉｎ）の値はｄ（０）の値に更新される。
【００６９】
次に、ｎの値をインクリメントして（ステップＳＴ２７）、ｎの値が最大値ｎＭＡＸ（この場合は８）より大きくなったか否かを判別する（ステップＳＴ２８）。ｎの値が最大値以内である場合には、ステップＳＴ２３に移行して、上記ループ処理を繰り返す。ステップＳＴ２５において、ｄ（ｎ）の値がｄ（ｍｉｎ）の値以上の場合は、ｄ（ｍｉｎ）の値を更新することなく、ステップＳＴ２７においてｎの値をインクリメントする。
【００７０】
このループ処理において、複数の参照画素Ｑの中で基準画素Ｐの画素データとの差分の絶対値が最小となる参照画素を求める。ステップＳＴ２８において、ｎの値が最大値ｎＭＡＸより大きくなったとき、すなわち、指定した１つの基準画素Ｐと、すべての距離Ｚ（ｎ）における参照画素Ｑ（ｎ）との比較が終了したときは、ｄ（ｎ）の値が最小となる参照画素Ｑ（ｎ）の距離Ｚ（ｎ）を距離画素出力手段１０に出力する（ステップＳＴ２９）。
【００７１】
この後に、次の基準画素があるか否かを判別する（ステップＳＴ３０）。次の基準画素がある場合には、ステップＳＴ２１に移行してその基準画素を指定し、ステップＳＴ３０までの上記処理を繰り返す。ステップＳＴ３０において、比較対象となる次の基準画素がない場合には、このフローを終了して図６のフローに戻る。
【００７２】
以上のように、この実施の形態１によれば、エピポーラ線に沿って基準画像２１と参照画像２２の画素データの読み取りを行い、それを一時記憶手段８にバッファリング（一時的に記憶）することによって、参照画像記憶手段５からのデータ読み取りの回数を減らすことができる。このため、二次元の動画像もしくは多視点の静止画像から三次元情報を復元する際に、画素データの読み取りを高速かつ効率的に行うことにより全体の処理の高速化を可能にするという効果が得られる。
また、一時記憶手段８を用いることによって、高速動作の高価な参照画像記憶手段を必要としないので、製品のコストダウンを図ることが可能になるという効果が得られる。
【００７３】
なお、この実施の形態１では、三次元位置方位センサ１１を用いて、撮影した画像の位置情報と方位情報を取得し、それを用いてエピポーラ線等を算出しているが、基準画像２１と参照画像２２との画像処理等により、画像間の並進ベクトルと回転行列等を求め、それを用いてエピポーラ線等を算出するようにしてもよい。
また、画像の撮影時に位置情報と方位情報を取得する必要はなく、画像撮影前もしくは後に位置情報や方位情報を取得して、基準画像記憶手段４や参照画像記憶手段５等に記録し、その後に処理を行うようにしてもよい。
【００７４】
また、この実施の形態１では、基準画像上の画素Ｐ（ｘ，ｙ）に対する参照画像上の対応点Ｑ（ｘ’，ｙ’）の画素データは、ｘ’，ｙ’の小数点以下の値を切り捨てて整数値とした時の画素データを用いたが、複数の画素の間に対応点がある場合には、バイリニア補間等の手段を用いて、複数の画像間で補間を行うようにしてもよい。
【００７５】
また、この実施の形態１では、参照画像のエピポーラ線上に沿う画素データを全て一括して呼び出しているが、一時記憶手段８に画素データがない場合には、必要な画素データのみ、参照画像記憶手段５から逐次読み取るような構成にしてもよい。この場合には、必要な画素データの読み取り欠落を回避できるという効果が得られる。
【００７６】
また、この実施の形態１によれば、参照画像におけるエピポーラ線Ｂの傾きβに応じて、一時記憶手段８の領域を動的に変化させるので、参照画像におけるエピポーラ線の傾きに応じて一時記憶手段８の領域を柔軟に活用できるという効果がある。
【００７７】
実施の形態２．
上述の実施の形態１では、一時記憶手段８の記憶容量は６４×８のブロックがあり、８行分の画素データを保持できる大きさがあった。そして、一時記憶手段８に対応する画素データが書ききれない場合には、書き込むことのできた最後の列を列番号の「列番号のオフセット終了値」として記録し、「列番号のオフセット開始値」と「列番号のオフセット終了値」の間の画素データを書き込むようにしていた。
【００７８】
これに対して、一時記憶手段８の記憶容量がさらに小さくて１行程度の画素データしか保持できない場合には、その一時記憶手段８に対応する画素が書ききれない状態が多くなり、参照画像上のエピポーラ線の端（始めの部分）の画素データのみが一時記憶手段８に書き込まれることになる。しかし、参照画像上のエピポーラ線における中央部分の画素を一時記憶手段８に書き込むようにしたほうが、対応点を含む画素データが一時記憶手段８にバッファリングされる可能性が多くなる。
【００７９】
このため、エピポーラ線を含む画素の中で最も左側にある列と、最も右側にある列を算出し、一時記憶手段８に対応する画素が書ききれない場合には、中央部分の列が一時記憶手段８に書き込まれるようにしてもよい。そこで、この実施の形態２による画像処理方法においては、実施の形態１の参照画像読み取り手段７と一時記憶手段８の動作において、（Ｂ２−３）〜（Ｂ２−５）の処理を以下の（Ｂ’２−３）〜（Ｂ’２−５）ようにする。それ以外の画像処理については、実施の形態１と同じである。
【００８０】
（Ｂ’２−３）  参照画像読み取り手段７は、図４において、エピポーラ線Ｅ０とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素の中で、最小の列番号（最も左側の列番号）と最大の列番号（最も右側の列番号）をそれぞれ、開始列番号Ｈｓと終了列番号Ｈｅとして記録する。ここで、ＨｓとＨｅとＬの値に応じて以下の（ｉ），（ｉｉ）どちらかの処理を行う。以下、動作について説明する。
【００８１】
（ｉ）  一時記憶手段８に書き込むことができる列の数（この場合、６４×６／Ｌと６４のどちらか小さい方。以降この値をＨとする）が、エピポーラ線Ｅ０とＥ１の間にある列か、もしくはどちらかの線をも含んでいる列の数（Ｈｅ−Ｈｓ＋１）よりも小さい場合、（Ｈｅ−Ｈｓ＋１−Ｈ）／２を開始列番号Ｈｓに足した値を「列番号のオフセット開始値」とする。また、「列番号のオフセット開始値」にＨ−１を足した値を「列番号のオフセット終了値」とする。
（ｉｉ）  一時記憶手段８に書き込むことができる列の数（この場合、６４×６／Ｌと６４のどちらか小さい方。以降この値をＨとする）が、エピポーラ線Ｅ０とＥ１の間にある列か、もしくはどちらかの線をも含んでいる列の数（Ｈｅ−Ｈｓ＋１）以上の場合、開始列番号Ｈｓを「列番号のオフセット開始値」、終了列番号Ｈｅを「列番号のオフセット終了値」とする。
【００８２】
（Ｂ’２−４）  「列番号のオフセット開始値」の列の画素の中で、エピポーラ線Ｅ０とＥ１の間にある画素か、もしくはどちらかの線をも含んでいる画素を行番号の小さい物から順に一時記憶手段８の“０”の領域に書き込む。同様にして、「列番号のオフセット開始値」＋１以降の列を、“１”以降の領域に順次書き込んでいく。
【００８３】
（Ｂ’２−５）  「列番号のオフセット終了値」より後ろの列の画素は一時記憶手段８に書き込まないものとする。
これ以降の処理は、実施の形態１における（Ｂ３）以降の動作と同じである。
【００８４】
以上のように、この実施の形態２によれば、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域（この場合は、中央部分の列であるが、この範囲に限定するものではない）のみを一時記憶手段８に記憶するので、一時記憶手段の記憶容量が小さい場合でも、画素データのバッファリングがある程度可能になり、参照画像記憶手段からのデータ読み取りの回数をさらに減らすことができ、画像処理をさらに高速化することができるという効果が得られる。また、一時記憶手段の記憶容量が小さくてもよいので、製品のさらなるコストダウンを図ることが可能になるという効果が得られる。
【００８５】
実施の形態３．
上述の実施の形態１では、１つの基準画像及び１つの参照画像からなる２つの画像から距離画像を算出する構成にしたが、この実施の形態３では３つ以上の画像から距離画像を算出した画像処理方法を行う。以下、動作について説明する。
【００８６】
３つ以上の画像のうち１つを基準画像とし、残りを複数の参照画像として、それぞれ基準画像との対応点の差をとり、各画像の差を加算して距離画像を算出する。この場合でも、実施の形態１のように、エピポーラ線に沿ってデータを読み取る処理を各参照画素で並列して実行することにより、処理を高速に行うことができる。ただし、この場合、各参照画像でエピポーラ線は異なる。この場合には、基準画像上では異なる傾きの複数のエピポーラ線となる。このため、基準画像読み取り手段は、これら複数のエピポーラ線の中間の角度、又は、適宜の角度の直線、すなわち共通の１つのエピポーラ線を算出し、その算出した共通のエピポーラ線に沿ってデータを読み取るようにする。
【００８７】
以上のように、この実施の形態３によれば、３つ以上の画像から距離画像を算出して一時記憶手段８にデータをバッファリングすることにより、極めて高速の画像処理を実現できるという効果が得られる。
【００８８】
【発明の効果】
以上のように、この発明によれば、画像処理装置を、基準画像におけるエピポーラ線に沿って基準画素データを読み取る基準画像読み取り手段と、基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る参照画像読み取り手段と、参照画像読み取り手段によって読み出された参照画素データを一時的に保持するエピポーラ画素記憶手段とを有するように構成したので、画素データの読み取りを高速かつ効率的に行うことにより全体の処理の高速化を可能にするという効果がある。また、製品のコストダウンを図ることが可能になるという効果がある。
【００８９】
この発明によれば、画像処理装置を、参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に保持するエピポーラ画素記憶手段の領域を動的に変化させる制御手段を有するように構成したので、参照画像におけるエピポーラ線の傾きに応じてエピポーラ画素記憶手段の領域を柔軟に活用できるという効果がある。
【００９０】
この発明によれば、画像処理装置の参照画像読み取り手段を、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶するように構成したので、エピポーラ画素記憶手段の記憶容量を少なくすることにより、製品のさらなるコストダウンを図ることが可能になるという効果がある。
【００９１】
この発明によれば、画像処理装置の参照画像読み取り手段を、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むように構成したので、必要な画素データの読み取り欠落を回避できるという効果がある。
【００９２】
この発明によれば、画像処理装置を、複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する制御手段を有するように構成したので、極めて高速の画像処理を実現できるという効果がある。
【００９３】
この発明によれば、画像処理のプログラムを、基準画像におけるエピポーラ線に沿って基準画素データを読み取る第１のステップと、基準画像におけるエピポーラ線に対応する参照画像におけるエピポーラ線に沿って参照画素データを読み取る第２のステップと、第２のステップによって読み出された参照画素データをエピポーラ画素記憶手段に一時的に記憶する第３のステップとを有するように構成したので、画素データの読み取りを高速かつ効率的に行うことにより全体の処理の高速化を可能にするという効果がある。また、製品のコストダウンを図ることが可能になるという効果がある。
【００９４】
この発明によれば、画像処理のプログラムを、参照画像におけるエピポーラ線の傾きによって参照画素データを一時的に記憶するエピポーラ画素記憶手段の領域を動的に変化させる第４のステップをさらに有するように構成したので、参照画像におけるエピポーラ線の傾きに応じてエピポーラ画素記憶手段の領域を柔軟に活用できるという効果がある。
【００９５】
この発明によれば、画像処理のプログラムにおける第２のステップを、参照画像におけるエピポーラ線の傾きによってそのエピポーラ線に沿った参照画像の特定の領域のみをエピポーラ画素記憶手段に記憶するように構成したので、エピポーラ画素記憶手段の記憶容量を少なくすることにより、製品のさらなるコストダウンを図ることが可能になるという効果がある。
【００９６】
この発明によれば、画像処理のプログラムにおける第２のステップを、エピポーラ画素記憶手段に対応する参照画素データがない場合には、主記憶装置から参照画素データを読み込むように構成したので、必要な画素データの読み取り欠落を回避できるという効果がある。
【００９７】
この発明によれば、画像処理のプログラムを、複数の参照画像を用いて各参照画像のエピポーラ線を算出し、算出した各エピポーラ線に対応する基準画像の複数のエピポーラ線から共通のエピポーラ線を算出する第５のステップをさらに有するように構成したので、極めて高速の画像処理を実現できるという効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１における画像処理装置の構成を示すブロック図である。
【図２】  この発明の実施の形態１において基準画像における画素の配列及びエピポーラ線を示す図である。
【図３】  この発明の実施の形態１における処理完了画素を記録する表を示す図である。
【図４】  この発明の実施の形態１において参照画像における画素の配列及びエピポーラ線を示す図である。
【図５】  この発明の実施の形態１における一時記憶手段の記憶エリアを示す図である。
【図６】  この発明の実施の形態１における画像処理のプログラムを示すフローチャートである。
【図７】  図６における距離画像生成処理のフローチャートである。
【図８】  ２つの画像の対応する点のエピポーラ線を示す一般的な図である。
【符号の説明】
１  画像処理装置、２  画像入力手段、３  移動手段、４  基準画像記憶手段、５  参照画像記憶手段（主記憶装置）、６  基準画像読み取り手段、７  参照画像読み取り手段、８  一時記憶手段（エピポーラ画素記憶手段）、９  距離画像生成手段、１０  距離画像出力手段、１１  三次元位置方位センサ、２１  基準画像、２２  参照画像、３０−１，３０−２，３０−３  物体、３１  基準画像、３２  参照画像、Ｐ  物体の基準画像、Ｑ１，Ｑ２，Ｑ３  物体の参照画像、Ｚ１，Ｚ２，Ｚ３  基準画像から物体までの距離。
【図１】
0004159798.tif 000002
【図２】
0004159798.tif 000003
【図３】
0004159798.tif 000004
【図４】
0004159798.tif 000005
【図５】
0004159798.tif 000006
【図６】
0004159798.tif 000007
【図７】
0004159798.tif 000008
【図８】
0004159798.tif 000009