(57)【要約】【課題】両眼立体視においてブロックマッチングの有する問題点を克服し、より精度が高い三次元距離を計測可能な画像処理プログラムを提供する。【解決手段】左画像撮影手段から得られた左画像データと、右画像撮像手段から得られた右画像データとを用いて、左右の両画像データにおいて対応する画素の視差量を求めることで被写体の三次元距離データを演算可能にした画像処理プログラムであって、ブロックマッチングにより、左右両画像データについて夫々ブロック単位で概略視差量を演算する機能と、左右両画像データに含まれるエッジを夫々抽出する機能と、左右両画像データの対応するエッジを照合する際の探索範囲をブロックマッチングにより得られた概略視差量に基づいて設定する機能と、設定された探索範囲において、左右両画像データ間の対応するエッジを見つけることで、視差量を演算する機能と、をコンピュータに実行させる。【選択図】図２７
2008082870.tif 000002
【特許請求の範囲】
【請求項１】
左画像撮影手段から得られた左画像データと、右画像撮像手段から得られた右画像データとを用いて、左右の両画像データにおいて対応する画素の視差量を求めることで被写体の三次元距離データを演算可能にした画像処理プログラムであって、
ブロックマッチングにより、左右両画像データについて夫々ブロック単位で概略視差量を演算する機能と、
左右両画像データに含まれるエッジを夫々抽出する機能と、
左右両画像データの対応するエッジを照合する際の探索範囲を前記ブロックマッチングにより得られた概略視差量に基づいて設定する機能と、
設定された探索範囲において、左右両画像データ間の対応するエッジを見つけることで、視差量を演算する機能と、をコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項２】
前記ブロックマッチングにより視差量を演算するに際し、
前記ブロック単位で視差量を演算した結果、左右両画像データにおいて対応すべき画素の視差量の差が所定範囲内にあるかどうかを判定する機能と、
この判定機能により視差量の差が所定範囲内にないと判定された画素に関して、補間処理により視差量を演算する機能と、を更にコンピュータに実行させる請求項１に記載の画像処理プログラム。
【請求項３】
左右両画像データに含まれるエッジを抽出するに際し、傾き別にエッジを抽出する機能と、
傾き別に対応するエッジを照合する機能と、を更にコンピュータに実行させる請求項１又は２に記載の画像処理プログラム。
【請求項４】
左右両画像データのうちの一方側のエッジを注目エッジとし、この注目エッジの前記探索範囲内にある他方側のエッジを比較エッジとした場合、注目エッジと探索範囲内の全ての比較エッジとの重なり度合いから対応度を求める機能と、
対応度が最も大きな比較エッジを対応エッジとして設定する機能と、を更にコンピュータに実行させる請求項１〜３のいずれか１項に記載の画像処理プログラム。
【請求項５】
エッジ以外の領域の視差量を補間演算により求める機能を更に備え、この機能として、
各画素の位置をバネの節点と仮定した場合に、隣接する画素間に掛けるバネのバネ定数を当該画素の画素情報に基づいて演算する機能と、
視差量が求まっている領域については、バネの節点の初期移動量を視差量に基づいて設定する機能と、
視差量が求まっていない領域については、バネの節点の初期移動量を所定値で設定する機能と、
隣接する画素間の視差量の差に基づいて、バネの釣り合いを演算する機能と、
釣り合い計算の結果、移動量が所定値よりも大きな節点に関してバネ定数を０に設定して移動量を再演算する機能と、を更にコンピュータに実行させる請求項１〜４のいずれか１項に記載の画像処理プログラム。
【請求項６】
車体の幅方向に所定間隔をあけて搭載される左画像撮影用の第１のカメラ及び右画像撮影用の第２のカメラと、
車体の走行状態を検出する走行状態検出センサーと、
第１のカメラ及び第２のカメラから得られる左右両画像データを走行状態検出センサーから得られる信号に基づいて補正する画像補正手段と、
この補正された左右両画像データを画像処理して視差量データを演算する画像処理プログラムと、
この画像処理プログラムにより得られた視差量データに基づいて、路面の三次元位置情報を抽出し、路面状態を計測する路面状態計測手段と、を備えた路面状態計測システム。
【請求項７】
前記画像処理プログラムとして請求項１〜５のいずれか１項に記載の画像処理プログラムが用いられることを特徴とする請求項６に記載の路面状態計測システム。
【請求項８】
前記路面状態計測手段は、前記三次元位置情報として、路面の横断データと縦断データを夫々取得する機能と、
取得されたデータを基準データと比較させる機能と、を有することを特徴とする請求項６又は７に記載の路面状態計測システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、両眼立体視により被写体の三次元距離データを求めるための画像処理プログラム及びこれを用いた路面状態計測システムに関するものである。
【背景技術】
【０００２】
三次元距離を計測する技術としては、レーザーレーダを用いるものなどの能動的な手法と、ステレオ画像を利用した両眼立体視による受動的な手法が知られている。三次元距離の計測を行う場面として、例えば、路面の形状（わだち掘れやひび割れなど）を計測する場合に必要とされている。また、高速道路の橋脚の下面調査や法面の崖崩れ防止調査などにも必要とされている。レーザーによる手法で路面計測を行う場合、基本的には人手による計測作業となり、交通渋滞が発生するという問題がある。また、人手により計測装置を路面に沿って移動させる作業が必要であり、計測のために多大な時間を浪費するという問題もある。
【０００３】
これに対して、車体にカメラを搭載して路面を撮影し、この撮影された画像データに基づいて行なう両眼立体視による手法は、装置が比較的簡素であるという点や自然光の下で計測できるという長所がある。また、路面計測の場合、車体を走行するだけで計測可能であり、交通渋滞の問題もなく、作業時間も短縮化できるという長所がある（特許文献１，２参照）。
【０００４】
この両眼立体視の方法として、画像領域を小ブロックに分割し、小ブロック単位で左右画像間の相関を演算して対応点を求めるブロックマッチング手法が提案されている（例えば、非特許文献１）。ブロックマッチングは簡単な手法ではあるが、オクルージョン（隠蔽箇所）の検出が困難であるとか、被写体表面が模様のあるテクスチャーを持っていなければならないといった制約がある。
【０００５】
【特許文献１】特許第３４１８３２８号
【特許文献２】特開平８−１８４４２２号公報
【非特許文献１】野口貴司、大友友一、“評価値制限法を用いたステレオマッチング”信学論（Ｄ−II）ｖｏｌ．Ｊ８８−Ｄ−II，ｎｏ．１１，ｐｐ．１６１８−１６２７，Ｎｏｖ．２００３
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は上記実情に鑑みてなされたものであり、その課題は、両眼立体視においてブロックマッチングの有する問題点を克服し、より精度が高い三次元距離を計測可能な画像処理プログラム及びこれを用いた路面状態計測システムを提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため本発明に係る画像処理プログラムは、
左画像撮影手段から得られた左画像データと、右画像撮像手段から得られた右画像データとを用いて、左右の両画像データにおいて対応する画素の視差量を求めることで被写体の三次元距離データを演算可能にした画像処理プログラムであって、
ブロックマッチングにより、左右両画像データについて夫々ブロック単位で概略視差量を演算する機能と、
左右両画像データに含まれるエッジを夫々抽出する機能と、
左右両画像データの対応するエッジを照合する際の探索範囲を前記ブロックマッチングにより得られた概略視差量に基づいて設定する機能と、
設定された探索範囲において、左右両画像データ間の対応するエッジを見つけることで、視差量を演算する機能と、をコンピュータに実行させることを特徴とするものである。
【０００８】
かかる構成による画像処理プログラムの作用・効果について説明する。本発明は、ブロックマッチングによる手法とエッジ照合による手法を組み合わせた点に特徴がある。すなわち、ブロックマッチングによりブロック単位で概略の視差量を求めておき、この結果を踏まえて、エッジ照合により、精度の高い視差量を演算する。
【０００９】
まず、ブロックマッチングでは左画像（あるいは右画像）を小ブロックに分割し、このブロックに対応するブロックを右画像（あるいは左画像）の中から探索する。ブロックマッチングは、左画像を基準とする場合と、右画像を基準とする場合の両方が行われる。対応するブロックが見つかれば、それらブロックの相対的位置関係から視差量が求まる。ただし、ここではブロック単位での探索であり、ここで求められる視差量は概略視差量である。次に、左右両画像データに含まれているエッジを抽出する。エッジ抽出は、左画像と右画像の夫々について行なう。エッジ抽出の方法は、特定の方法に限定されるものではなく、例えば、公知のフィルター演算による画像処理手法により行なうことができる。
【００１０】
ここで各画像において抽出されるエッジの数が多大なものになると、左右両画像データのエッジ同士を照合するための処理時間が膨大なものになり効率が悪い。例えば、左画像の中から１つのエッジを選択し、これに対応するエッジを右画像から見つけるのに、右画像に含まれる全てのエッジと比較して対応関係を見つけるのは極めて効率が悪い。また、誤対応になる可能性も増加する。そこで、かかる場合において、右画像の全領域を探索するのではなく、探索範囲を限定して行なう。この探索範囲を設定するのに、ブロックマッチングにより求められた概略視差量に基づいて設定するようにしている。これにより、探索範囲を絞り込むことができ、無駄な照合処理をなくすことができ、処理時間を短縮化することができる。左右画像の対応するエッジを見つけ出すことで、より精度の高い視差量を求めることができる。その結果、両眼立体視においてブロックマッチングの有する問題点を克服し、より精度が高い三次元距離を計測可能な画像処理プログラムを提供することができる。なお、ブロックマッチングにおけるブロックの大きさについては、適宜定めることができるものである。
【００１１】
本発明において、前記ブロックマッチングにより視差量を演算するに際し、
前記ブロック単位で視差量を演算した結果、左右両画像データにおいて対応すべき画素の視差量の差が所定範囲内にあるかどうかを判定する機能と、
この判定機能により視差量の差が所定範囲内にないと判定された画素に関して、補間処理により視差量を演算する機能と、を更にコンピュータに実行させることが好ましい。
【００１２】
ブロックマッチングにおいてブロック単位で視差量を演算する場合に、得られた視差量が信頼性の高い数値であるかどうかを確認する必要がある。つまり、左画像を基準として行ったブロックマッチングと、右画像を基準として行ったブロックマッチングの結果が整合性が取れている必要がある。例えば、左画像を基準としたブロックマッチングにおいて、左画像における画素Ａに対応する右画像の画素がＢであるとする。一方、右画像を基準としたブロックマッチングで考えた場合、右画像の画素Ｂに対応する左画像の画素はＡでなければならない。両者（の視差量）が一致すれば（あるいは視差量が所定の誤差範囲内であれば）整合性が取れていると考えられる。そこで対応すべき画素の視差量が所定範囲内にない場合は、誤対応であると扱い、視差量が求まらなかったものとして扱う。そして、この誤対応の画素に関しては、視差量について整合性を有すると見なされた画素の視差量の値を用いて、補間処理により視差量を演算して求める。これにより、誤対応を抑制してより信頼性の高い視差量を求めることができる。
【００１３】
本発明において、左右両画像データに含まれるエッジを抽出するに際し、傾き別にエッジを抽出する機能と、
傾き別に対応するエッジを照合する機能と、を更にコンピュータに実行させることが好ましい。
【００１４】
エッジどうしを比較する場合に、傾き別にエッジを抽出しておいて、傾き別にエッジの照合を行なうことで、あらゆる方向のエッジについて照合を行なうことができる。また、傾き別に照合を行なうので照合の精度を高めることができ、信頼性を更に高めることができる。
【００１５】
本発明において、左右両画像データのうちの一方側のエッジを注目エッジとし、この注目エッジの前記探索範囲内にある他方側のエッジを比較エッジとした場合、注目エッジと探索範囲内の全ての比較エッジとの重なり度合いから対応度を求める機能と、
対応度が最も大きな比較エッジを対応エッジとして設定する機能と、を更にコンピュータに実行させることが好ましい。
【００１６】
左右両画像データのエッジ同士を比較する場合は、一方の画像（例えば左画像）の中から、まず１つのエッジを注目エッジとして選択する。そして、他方側の画像（例えば右画像）の中に含まれるエッジ（通常は１つではなく、かなりの多数が存在することもありうる）と比較・照合する。複数の比較エッジからどれが対応するエッジであるのかを決める時に対応度という概念を使用する。対応度とは、エッジとエッジを重ねた場合の重なり度合いを示す指標である。例えば、重なった領域の画素数や画素数のエッジ全体に対する比率などに基づいて対応度を決めることができ、対応度が高いものほど対応するエッジである確率が高くなるといえる。比較エッジは探索範囲内のものに限られるため、高い確率で対応するエッジを正確に見つけ出すことができる。
【００１７】
本発明において、エッジ以外の領域の視差量を補間演算により求める機能を更に備え、この機能として、
各画素の位置をバネの節点と仮定した場合に、隣接する画素間に掛けるバネのバネ定数を当該画素の画素情報に基づいて演算する機能と、
視差量が求まっている領域については、バネの節点の初期移動量を視差量に基づいて設定する機能と、
視差量が求まっていない領域については、バネの節点の初期移動量を所定値で設定する機能と、
隣接する画素間の視差量の差に基づいて、バネの釣り合いを演算する機能と、
釣り合い計算の結果、移動量が所定値よりも大きな節点に関してバネ定数を０に設定して移動量を再演算する機能と、を更にコンピュータに実行させることが好ましい。
【００１８】
左右画像間の対応するエッジが見つかると、そのエッジを構成する画素については視差量が定まることになる。ただし、エッジ以外の領域については視差量が求められていない。そこで、対応エッジの探索で求まった視差量を用いて補間演算することで、エッジ以外の領域の視差量を求める。これを行なうために、本発明では、バネのアナロジーという概念を用いる。そこで、まず画素の位置をバネの節点と仮定して、各節点間にバネを掛ける。このバネのバネ定数は、バネが掛けられる画素の画素情報に基づいて演算される。画素の画素情報とは、その画素が持つ色情報や輝度情報のことである。ただし、色情報と輝度情報の両方を用いてもよいし、輝度情報のみからバネ定数を決めてもよい。
【００１９】
次に、バネの節点の初期移動量を設定する。初期移動量は、エッジ照合やブロックマッチングの結果得られた視差量が設定される。初期移動量とバネ定数が定まったので、バネの釣り合い計算を行なうことができる。この結果、各画素における移動量（＝視差量）が改めて演算される。なお、誤対応などにより視差量が求まっていない場合、初期移動量として適宜の所定値（できれば小さな数値）を設定すればよい。改めて視差量を演算すると、バネの応力が大きくなるような節点が出てくる。このような節点は、エッジのすぐ近傍に存在すると考えられるので、バネ定数を０に設定することが好ましい。エッジ領域では、視差量が大きく変化するのが普通であり、これをなだらかに変化するように補間処理をすることは好ましくない。そこで、バネ定数を０に設定し、再度移動量（視差量）を演算するようにする。これにより、エッジ以外の領域の画素について、精度よく補間処理により視差量を求めることができる。
【００２０】
上記課題を解決するため本発明に係る路面状態計測システムは、
車体の幅方向に所定間隔をあけて搭載される左画像撮影用の第１のカメラ及び右画像撮影用の第２のカメラと、
車体の走行状態を検出する走行状態検出センサーと、
第１のカメラ及び第２のカメラから得られる左右両画像データを走行状態検出センサーから得られる信号に基づいて補正する画像補正手段と、
この補正された左右両画像データを画像処理して視差量データを演算する画像処理プログラムと、
この画像処理プログラムにより得られた視差量データに基づいて、路面の三次元位置情報を抽出し、路面状態を計測する路面状態計測手段と、を備えたことを特徴とするものである。
【００２１】
車体の幅方向に第１のカメラと第２のカメラを搭載し、この２つのカメラから路面を撮影した左画像データと右画像データを夫々得ることができる。これら左右両画像データを用いて、上記画像処理プログラムにより視差量を求める。また、車体の走行状態を検出するための走行状態検出センサー（例えば、三次元ジャイロセンサーなど）が設けられている。車体を移動させながら画像データを取得する場合に、車体は常に同じ状態で走行しているわけではない。つまり、車体の移動速度は常に一定ではなく、振動などの影響や路面の傾斜状態（上り坂、下り坂など）の影響を受けている。このような走行状態の影響により、取得される画像データには歪み成分が含まれることになるので、これを取り除く必要がある。そこで、走行状態検出センサーから得られる信号に基づいて左右の画像データを補正することで、歪みのない正しい画像データを得ることができる。補正された左右両画像データを用いて、画像処理プログラムにより視差量データを求めることで、信頼性の高い路面の三次元位置情報を抽出することができる。また、この視差量データから、路面の状態（わだち掘れやひび割れなど）を計測することができる。
【００２２】
本発明において、前記画像処理プログラムとして前述のブロックマッチング及びエッジ照合による画像処理プログラムが用いられることが好ましい。
【００２３】
前述のように、エッジ照合による視差量データを精度よく求めることができ、わだち掘れやひび割れの深さを正確に把握することが可能であり、メンテナンス時期の適切な判断を行なえるようになる。
【００２４】
本発明に係る路面状態計測手段は、前記三次元位置情報として、路面の横断データと縦断データを夫々取得する機能と、取得されたデータを基準データと比較させる機能とを、有することが好ましい。
【００２５】
横断データとは、道路を横切る方向の断面形状を示すデータであり、縦断データは道路の進行方向における断面形状を示すデータである。これらのデータを基準データと比較することで、メンテナンスの必要性について判断することができる。基準データとしては、路面の初期状態のデータを用いることができ、例えば、初期状態からのズレの大きさに基づいてメンテナンスの必要性を判断することができる。
【００２６】
本発明に係る路面状態計測システムは、既に述べたように、特許文献１，２などに開示されるシステムに比べると、車体を走行するだけで計測可能であり、交通渋滞の問題もなく、作業時間も短縮化できるという長所がある。また、撮影される画像データには含まれる歪み成分を正しい画像に補正することができる。そして、更に、上記システムにおいて使用される画像処理プログラムが、次の構成を備えていることが好ましい。
【００２７】
まず、第1に、左画像撮影手段から得られた左画像データと、右画像撮像手段から得られた右画像データとを用いて、左右の両画像データにおいて対応する画素の視差量を求めることで被写体の三次元距離データを演算可能にした画像処理プログラムであって、
ブロックマッチングにより、左右両画像データについて夫々ブロック単位で概略視差量を演算する機能と、
左右両画像データに含まれるエッジを夫々抽出する機能と、
左右両画像データの対応するエッジを照合する際の探索範囲を前記ブロックマッチングにより得られた概略視差量に基づいて設定する機能と、
設定された探索範囲において、左右両画像データ間の対応するエッジを見つけることで、視差量を演算する機能と、をコンピュータに実行させるものであることが好ましい。
【００２８】
更に前記画像処理プログラムが、
前記ブロックマッチングにより視差量を演算するに際し、
前記ブロック単位で視差量を演算した結果、左右両画像データにおいて対応すべき画素の視差量の差が所定範囲内にあるかどうかを判定する機能と、
この判定機能により視差量の差が所定範囲内にないと判定された画素に関して、補間処理により視差量を演算する機能と、を更にコンピュータに実行させるものであることが好ましい。
【００２９】
更に、前記画像処理プログラムが、
左右両画像データに含まれるエッジを抽出するに際し、傾き別にエッジを抽出する機能と、
傾き別に対応するエッジを照合する機能と、を更にコンピュータに実行させることが好ましい。
【００３０】
更に、前記画像処理プログラムが、
左右両画像データのうちの一方側のエッジを注目エッジとし、この注目エッジの前記探索範囲内にある他方側のエッジを比較エッジとした場合、注目エッジと探索範囲内の全ての比較エッジとの重なり度合いから対応度を求める機能と、
対応度が最も大きな比較エッジを対応エッジとして設定する機能と、を更にコンピュータに実行させるものであることが好ましい。
【００３１】
更に、前記画像処理プログラムが、
エッジ以外の領域の視差量を補間演算により求める機能を更に備え、この機能として、
各画素の位置をバネの節点と仮定した場合に、隣接する画素間に掛けるバネのバネ定数を当該画素の画素情報に基づいて演算する機能と、
視差量が求まっている領域については、バネの節点の初期移動量を視差量に基づいて設定する機能と、
視差量が求まっていない領域については、バネの節点の初期移動量を所定値で設定する機能と、
隣接する画素間の視差量の差に基づいて、バネの釣り合いを演算する機能と、
釣り合い計算の結果、移動量が所定値よりも大きな節点に関してバネ定数を０に設定して移動量を再演算する機能と、を更にコンピュータに実行させるものであることが好ましい。
【００３２】
更に、前記画像処理プログラムが、
前記路面状態計測手段は、前記三次元位置情報として、路面の横断データと縦断データを夫々取得する機能と、
取得されたデータを基準データと比較させる機能と、を有するものであることが好ましい。
【発明を実施するための最良の形態】
【００３３】
本発明に係る画像処理プログラムの好適な実施形態を図面を用いて説明する。本発明に係る画像処理プログラムは、ステレオビジョンの原理により、被写体の三次元距離を計測する目的で使用されるものである。ここで、ステレオビジョンの原理を図１により説明する。
【００３４】
＜ステレオビジョンの原理＞
ステレオビジョンでは、三角測量の原理により、被写体の三次元距離（三次元座標）を計測することができる。ステレオカメラを用いてステレオ画像を撮影する必要があり、図１において左眼から見た左画像データＩＬと右目から見た右画像データとをＩＲとを取得する。そして、図示のようにＸＹＺ座標系を設定し、被写体上のある点Ｐの座標を（ｘ，ｙ，ｚ）とする。この点Ｐの画像上における座標を夫々ＰＬ（ｘＬ，ｙＬ）、ＰＲ（ｘＲ，ｙＲ）とする。また、カメラの基線長をＬとし、焦点距離をｆとし、座標系の原点は基線長の中間位置に設定する。左右両眼におけるカメラ光軸は平行であるとし、左右両眼の画像は、同一平面上に形成されるものとする。この条件下において、各点における座標間には、次のような関係が成立する。
【００３５】
ｘ＝０．５Ｌ（ｘＬ＋ｘＲ）／（ｘＬ−ｘＲ）
ｙ＝ｙＬ×Ｌ／（ｘＬ−ｘＲ）
ｚ＝ｆ×Ｌ／（ｘＬ−ｘＲ）
ここで（ｘＬ−ｘＲ）が左右画像間におけるずれ量であり、両眼の視差量と呼ばれるものである。これらの式から分かるように、Ｌとｆは既知の値であるから、左右画像上の投影座標から、被写体上の特定の点の位置（座標）（ｘ，ｙ，ｚ）を求めることができる。また、奥行きｚ座標については、視差量のみから演算することが可能である。
【００３６】
この視差量を精度良く求めることができれば、被写体の三次元距離も精度よく計測することができる。そのためには、左画像（右画像）における特定の画素が右画像（左画像）のどの画素に対応するのかを精度よく検出する必要がある。本発明における処理手順によれば、画素の対応関係を正確に検出することができ、処理時間も短く効率がよいものとなっている。
【００３７】
＜処理手順の概略＞
まず、処理手順の概略を図２のフローチャートにより説明する。図２にも示すように、大きく分けて３つのステップから構成されている。すなわち、ブロックマッチングによる対応点の探索範囲の決定（＃０１）、傾き別のエッジ照合による視差量の抽出（＃０２）、ばねのアナロジーによる視差量の計算（＃０３）である。ブロックマッチングを行なうことで、ステップ＃０２における探索範囲が決定される。ステップ＃０２においては、画像の多項式展開を用いて、傾き別のエッジを抽出し、傾き別にエッジの照合を行なう。ステップ＃０３においては、ばねを用いた視差量の補間演算が行なわれる。各ステップの詳細については、以下個別に説明していく。
【００３８】
＜ブロックマッチング＞
まず最初にブロックマッチングによる左右画像の対応点の探索範囲の決定に関して説明する。左右の画像の対応点を探索する場合に、画像に含まれる特徴を抽出し、この特徴形状同士を対比することで対応点を探索することになる。一般的には、特徴形状としてエッジを抽出し、左右画像の対応するエッジを見つけ出すことで対応点を探索する。ただし、画像中に含まれるエッジは多数存在するため、可能な視差量の範囲ですべてのエッジに対する探索を行なうと、処理時間が膨大になってしまう。そこで、画像を所定のサイズの小ブロックに分割してブロックマッチングを行い、得られた視差量の近傍に限定してエッジの対応探索を行なうようにしている。これにより、処理時間の短縮化を図っている。
【００３９】
以下、具体的な画像を例にあげてブロックマッチングを説明する。図３は、実際にカメラを使用して撮影されたステレオ画像を示しており、（ａ）が左画像（ｂ）が右画像を夫々示している。この画像は、ペンタックス社製のデジタルカメラｉｓｔＤＳに、ステレオアダプターを装着して撮影したものである。また、左右の画像は縦３８４画素×横２５６画素に縮小処理したものを示している。図３に示す画像は実際はカラー画像であるが、視差量の演算においては、図３に示す画像を（Ｙ・Ｃｒ・Ｃｂ）色空間で表わした時のＹ成分（輝度情報）を用いて行なった。
【００４０】
ブロックマッチングにおいて使用した小ブロックの大きさは３２×３２のサイズ（正方形）に設定した。ただし、小ブロックのサイズについては、これに限定されるものではなく、目的に応じて適宜のサイズとすることができる。
【００４１】
図４は、ブロックマッチングにおける処理手順を概念的に説明する図である。まず、左画像データを（ａ）に示すように多数の小ブロックＢ11，Ｂ12，Ｂ13・・・に分割する。左画像のブロックＢ11について、右画像データ上にブロックＣをｘ方向及びｙ方向に順番に走査させて、最も近似するブロックＣを探索する。仮に、図４（ｂ）の実線で示す位置のブロックＣがブロックＢ11とが最も近似していると判定された場合、このブロックＣの位置座標とブロックＢ11の位置座標との差が視差量となる。この視差量を上記の全ての小ブロックＢ11，Ｂ12，Ｂ13・・・に関して演算する。なお、以下の説明において、視差量はｘ方向におけるずれ量のみを指すものとして扱う。これは、前述のように奥行き位置は、ｘ方向のずれによってのみ決まるからであり、重要であると考えられるからである。
【００４２】
ブロックマッチングを行う場合、画像の全範囲について行う必要はなく、限定された範囲についてのみ走査を行なうことができる。つまり、左画像と右画像は、もともと類似した画像であり、左画像の左上のブロックＢ11と類似する右画像のブロックも左上近辺に存在すると考えられるからである。これにより、ブロックマッチングに要する処理時間を短縮化することができる。
【００４３】
図４では、左画像を基準としてブロックマッチングを行なうことを説明したが、同じ処理を右画像を基準として行う。図５は、ブロックの対応関係を示す図である。左画像を基準としてブロックマッチングを行なった結果、図５（ａ）（ｂ）のようなブロックの対応関係が得られたとすると、ブロックＢ11を構成する３２×３２画素の夫々がブロックＣを構成する３２×３２画素の夫々に対応するものと仮定する。すなわち、ブロック単位で視差量を演算し、そのブロックに含まれる全画素に対して同じ視差量が付与される。この場合、ブロックＢ11内の視差量はブロック内の全画素について同じ数値となる。また、右画像を基準としてブロックマッチングを行なった結果、図５（ｃ）（ｄ）のような対応関係が得られたとすると、同様にブロックＣ11を構成する３２×３２画素の夫々がブロックＢを構成する３２×３２画素の夫々に対応するものと仮定する。このように、視差量は左右の画像について別々に演算される。
【００４４】
図６は、ブロックマッチングの結果得られた視差マップを示す図である。視差マップを表示する場合には、一般的にカラー表示が用いられ、赤は視差量が大きな領域、緑は視差量が中間の領域、青は視差量が小さな領域である。ただし、図示の都合上、白黒濃淡画像で表示している。カメラに近い領域（近距離被写体）ほど視差量が大きくなる。
【００４５】
また、図６において、画像の四辺については、額縁状に白い領域が存在する。これは、画像の四辺については、対応するブロックが存在しないと考えられるため、ブロックマッチングの処理対象外としているためである。すなわち、四辺については、仮にブロックマッチングを行なったとしても、正確な視差量を得ることが期待できないため、最初から処理対象外としている。この処理対象外の領域は、周辺１ブロック分を基本としているが、左画像の左端領域ＩL1については、２ブロック分を処理対象外としている。これは、左画像は右画像に対して視差の関係で右方向に全体的にずれているからである。また、同じ理由により、右画像の右端領域ＩR1についても、処理対象から除外され白くなっている。
【００４６】
次に、図６のように得られた視差マップに関し、整合性チェックを行なう。この整合性チェックについて、図７により説明する。例えば、左画像を基準としてブロックマッチングを行なった結果、左画像の画素ＧＬに対応する右画像の画素がＧＲであると求められたとする。この場合、右画像を基準としてブロックマッチングを行うと、右画像の画素ＧＲに対応する左画像の画素はＧＬであると求められなければならない。このような対応関係の正確さを確認するための処理が整合性チェックである。
【００４７】
上記のような整合性チェックの結果、左画像の各画素についての視差量は、その画素が対応する右画像の画素の視差量と同じとなるべきところ、これらを比較して、所定範囲の誤差に入っていない場合は、誤対応であると判定する。このような誤対応は、特に、対応する画素が右画像に存在しない場合に発生する。誤対応と判定された画素については、白い領域に変換する。すなわち、図６のように得られた視差マップについて、整合性チェックを行い、誤対応と判定された部分は除外する処理を行う。この整合性チェックを行なった結果を図８に示す。なお、図８には、左画像のみを図示しているが、右画像についても同様に整合性チェックを行なうことができる。白抜き領域以外の領域には、視差量に応じた色が付与されており（ただし図示の都合上、白黒濃淡画像）、対応関係が正しい（正しい視差量）ものとして扱われる。
【００４８】
次に、この白抜き領域が存在する視差マップについて、白抜き領域を補間する処理（四辺領域は、補外処理となる）を実行する。補間処理は、視差量が正しいとされた領域を膨張処理することにより行なうことができる。膨張処理による補間結果を図９に示す。これにより、画像を構成する全画素に対して視差量が付与された形になる。図９は、左画像に関する処理結果であるが、右画像に関しても同様の処理結果を得ることができる。この図９のように得られた結果にしたがって、以下のエッジに対する対応探索の範囲が決められる。
【００４９】
＜傾き別のエッジ抽出及び対応点の探索＞
ブロックマッチングによる視差量では概略の結果しか得られないため、以下説明するエッジ抽出による対応点の探索により精度の高い視差量を求める。図１０は、対応点の探索を行う時の概略の処理手順を示すフローチャートである。
【００５０】
図３に示した画像の輝度値（Y値）について、各画素の近傍で下記（１）（２）式に示すＨｅｒｍｉｔｅ多項式Ｈm,n（ｘ、ｙ）に展開する。なお、（ｘ、ｙ）は各画素を原点とする直交座標であり、ｍ，ｎは次数を示す。多項式展開は、左画像と右画像の夫々について行なわれる（＃１０）。
【数１】
2008082870.tif 000003
【００５１】
【数２】
2008082870.tif 000004
【００５２】
この多項式は、視覚的に表わした例が図１１である。分かりやすくいえば、ｍ＝１，ｎ＝０の場合は、ｘ方向の傾き（微分値）を抽出するためのフィルター演算であり、ｍ＝０，ｎ＝１の場合は、ｙ方向の傾き（微分値）を抽出するためのフィルター演算を行なうことになる。以下の説明においても、ｍ＝１，ｎ＝０の場合と、ｍ＝０，ｎ＝１の場合とで演算を行なっている。
【００５３】
展開係数を求めるフィルターのカーネルＷm,n（ｘ，ｙ）は、次式（３）のようになる。
【数３】
2008082870.tif 000005
【００５４】
これにより、画像の輝度データｆ（ｉ，ｊ）は画素（ｉ，ｊ）の近傍で次式（４）のように展開される。
【数４】
2008082870.tif 000006
【００５５】
ここで、展開係数ａm,n（ｉ，ｊ）は、次式（５）により求められる。
【数５】
2008082870.tif 000007
【００５６】
左画像に関して、式（５）により表わされる多項式展開を行なった結果を図１２に示す。図１２（ａ）は、ａ1,0（ｘ方向の傾き値）を表わし、（ｂ）は、ａ0,1（ｙ方向の傾き値）を示している。エッジが存在する箇所では、傾き値がほかに比べて大きく変化するため、結果としてエッジが抽出されることになる。右画像についての演算結果は図示していないが、同様に求めることができる。この図１２においては、あらゆる方向のエッジが抽出されているため、これを傾き別のエッジとして抽出するため、以下のような演算を行なう。
【００５７】
まず、各画素の近傍におけるエッジの方向（傾き）θは、次式（６）により演算される。
【数６】
2008082870.tif 000008
【００５８】
さらにエッジの強さを（（ａ0,1）2＋（ａ1,0）2）1/2で定義した場合、エッジの強さが１６．０以上の画素で、なおかつ、３６０゜の方向を３０゜間隔で分割した１２方向のエッジの画素のうち、エッジを構成する領域が８画素以上であるものを真のエッジとして抽出する。従って、図１２においては、上記の条件を満たさないエッジ（候補）も存在することになる。なお、エッジの強さを１６．０以上とする点について、このしきい値の設定は、これに限定されるものではない。また、上記において８画素以上をエッジとしているが、何画素以上とするかについては、適宜決めることができる。以上のように、傾き別エッジの抽出を行う（＃１１）。
【００５９】
図１３は、エッジの強さを演算した結果を示す図であり、（ａ）は左画像のエッジ（ｂ）は右画像のエッジを夫々示している。また、図１４は傾き別のエッジを左画像と右画像の夫々について示した図である。傾きは、垂直方向を０゜とし、右回り（時計方向周り）の角度を示している。仮に、垂直に近い線分で角度が−１５゜〜１５゜に入る場合と１６５゜〜１９５゜に入る場合、これを白と黒で区別して−１５゜〜１５゜の図に表示している。すなわち、垂直に近いエッジで輝度が右から左に増加した場合と減少した場合を区別しているものである。
【００６０】
次に、図１４のように求められた傾き別エッジの情報を用いて、対応点探索を行なう。対応点の探索は、１２方向の傾き別に行なう（＃１２）。図１４の上側に左画像において抽出されたエッジ、下側に右画像において抽出されたエッジが示されており、上下の対応する傾きの画像を比較することで対応点の探索を行なう。すなわち、−１５゜〜１５゜の左画像と右画像とを対比し、次に１５゜〜４５゜の左画像と右画像とを対比し、以下同様に傾き別に対比する。
【００６１】
また、対応点の探索を行う場合には、左画像から右画像への対応点探索と右画像から左画像への対応点探索とを別々に行なう。まず、具体的な対応点の探索手順を、左画像から右画像への対応点探索を例にあげて説明する。説明にあたり、エッジの領域特徴を表わす以下の記号を使用する。図１５は、左画像のエッジと右画像のエッジを模式的に示す図である。
【００６２】
ｘ1lは、領域（図１５ではＡで示している）の画素のうち、最も小さなｘ座標を表わす。ｘ2lは、領域の画素のうち、最も大きなｘ座標を表わす。ｙ1lは領域の画素のうち、最も小さなｙ座標を表わす。ｙ2lは領域の画素のうち、最も大きなｙ座標を表わす。対応点探索を行なう場合、まず、左画像の中からエッジ領域を１つ取り出す。例えば、図１５に示すエッジＡを取り出す。右画像の中から、このエッジＡと対応の可能性がある領域として、下記の条件式（７）を満足するエッジを取り出す。
【００６３】
（条件式）
ｙ1l≦ｙ2r＋ｈ    ｙ2l≧ｙ1r−ｈ  ・・・（７）
なお、添字のｌ，ｒは夫々左画像側、右画像側であることを示している。また、ｈは左右画像の基線のずれの許容値を画素数で表わしたものである。ここで、基線ｈとは、カメラの位置ずれによるｙ方向のずれである。すなわち、ブロックマッチングにおいて視差量を求めた時のｙ方向のずれのことを指している。このような式（７）を設定したのは、この条件式を満たさないエッジは、比較をするまでもなく対応関係にないと考えられるからである。これにより、無駄な探索処理を省略し、効率よく対応点探索を行なうものである。
【００６４】
更に、視差量ｄが、ａ≦ｄ≦ｃ  の範囲内で、かつ、基線ｈのずれｅが、−ｈ≦ｅ≦ｈ  となる画素数をカウントして、対応度を以下の式（８）により演算する。
【００６５】
ｒ（ｄ，ｅ）＝ｖａｌ／ｎｕｍｂｅｒ・・（８）
ここでａ，ｃについては、次のように定める。すなわち、図１５に示すエッジＡの場合、エッジの左右上下の端で構成される四角形内部（斜線で示す）の画素群の視差量（ｘ方向のずれ量）のうち、最小値と最大値に一定の幅を加えたものを探索範囲とする。ここで、視差量の最小値と最大値は、ブロックマッチングにより求められた結果（図９に示すもの）が利用される。すなわち、図１５において対応する候補α、β、γ・・・を探索する場合に、ある程度候補を絞ることができるようにしている。また、基線ｈ（ｙ方向）のずれ量に関しても同様の扱いとしている。これにより、効率よく対応点探索を行い、誤判定が生じないようにしている。
【００６６】
図１６は、左画像のエッジＡと右画像のエッジαとを重ねた状態を模式的に図示したものである。重なり部分を斜線で示している。前記条件を満たす重なり部分の画素数をカウントしｖａｌとする。また、ｎｕｍｂｅｒとは、上記の場合だと、エッジＡ自身の全画素数を表わす。すなわち、対応度は、注目されているエッジの全領域のうち、どの程度の割合が重なっているのかという度合いを表わすことになり、対応度が大きいほど対応するエッジの可能性が高いと推定できることになる。
【００６７】
例えば、図１５において、左画像のエッジＡの探索対象となった右画像のエッジがα，β，γであるとすれば、このα，β，γのうち、対応度が最も大きいエッジを対応するエッジとして仮決定する。例えば、エッジＡに対応するエッジはαであるという結果が得られた場合、このときの視差量がエッジＡについての視差量であると決定される。なお、視差量については、エッジαとの重なり領域の大きさに関係なく、エッジＡを構成する全画素に対して同じ視差量が設定される。以上のように、左画像についてエッジＡ，Ｂについての最も対応度の高い右画像のエッジが決まることで視差量も決まることになる。
【００６８】
同じような処理を右画像を基準としても行う。以上のようなエッジに対する対応点探索の結果得られた視差マップを図１７に示す。（ａ）は左画像に関する視差マップであり、（ｂ）は右画像に関する視差マップである。なお、実際の視差マップは図６の場合と同様にカラー表示されるが、図示の都合上、白黒の濃淡画像で表わしている。
【００６９】
次に、図１７のように得られた視差マップについて、整合性チェックを行なう（＃１３）。この整合性チェックについては、次のような理由により行われる。例えば、左画像を基準としてエッジＡに最も対応度が高いエッジがαであるとすれば、逆に右画像を基準としてエッジαに最も対応度の高いエッジはＡであるという結果が出る必要がある。しかしながら、実際にはエッジαに最も対応度が高いエッジはＢであるという結果が出る可能性もある。従って、このような矛盾した結果（誤対応）を排除するために整合性チェックを行なうものである。
【００７０】
まず、左画像の方から整合性チェックを行なう。前述の対応度の演算を行なった結果として、対応度が最大となるエッジだけでなく対応度が２番目、３番目となるエッジに関しても演算結果を保持している。
【００７１】
図１８を具体例にあげて説明すると、左画像を基準とした場合、エッジＡに関して右画像のエッジα，β，γとの対応度の演算結果が保存される。このとき、エッジα，β，γとの対応度の大きさの順番情報も合わせて保存される。エッジＢ，Ｃについても、エッジα，β，γとの対応度及びその大きさの順番情報が保存される。同様に右画像を基準とした場合に、エッジαに関して左画像のエッジＡ，Ｂ，Ｃとの対応度の演算結果及びその大きさの順番情報が保存される。同様に、エッジβ，γについても、エッジＡ，Ｂ，Ｃとの対応度及びその大きさの順番情報が保存される。
【００７２】
そこで、まず左画像に含まれるエッジのうち、１つの注目するエッジを選択する。ここでは、図１５のエッジＡを選択したものとする。右画像のエッジα・β・γの夫々について対応度が求められており、その大きさはα＞β＞γの順番に大きいものとする。この対応関係に応じて、次のような対応度の更新を行なう。対応度が大きい順番に修正係数１．４，１．２，１．０を夫々割り当てる。なお、この係数値については、適宜決めることができるものである。
【００７３】
次に、既に求められているエッジα・β・γのエッジＡに対する対応度に対して夫々１．４，１．２，１．０を掛ける（図１８参照）。図１８の例では、エッジαを注目エッジとした場合、対応度はＡ＞Ｂ＞Ｃ、エッジβについては、対応度がＡ＞Ｂ＞Ｃ、エッジγについては、対応度がＢ＞Ａ＞Ｃとなっているが、上記のような係数をかけることで、この大小の順番（対応順序）が変更されることもありうる。更新された対応度の順番情報が保存される。
【００７４】
以上、左画像の注目エッジをＡとして対応度の更新を行なったが、次に、左画像の注目エッジＢ及びＣに関しても同様の処理を行う。これにより、右画像のエッジα・β・γの夫々についてＢ及びＣに対する対応度が更新される。更新された対応度に基づいて、順番情報の更新が行なわれる。
【００７５】
以上と同じ処理を右画像に関しても行う。これにより、左画像のエッジＡ，Ｂ，Ｃのエッジα・β・γに対する対応度が更新される。また、順番情報についても更新される。
【００７６】
以上の処理を１０回繰り返す。繰り返していく毎に、対応度の順番が更新されていき、収束していくものと考えられる。その結果、誤対応が低減し、正確な対応関係を付けることができる。繰り返し回数については、特に限定されるものではなく、適宜決めることができる。１０回繰り返した結果得られた視差マップを図１９に示す。整合性チェックを行なうことで、より精度（信頼性）の高い視差量を演算することができる。図１９（ａ）は左画像の視差マップであり、（ｂ）は右画像の視差マップである。
【００７７】
＜ばねによる視差量の補間＞
次に、ばねを用いた視差量の補間演算について説明する。この補間演算の概略の処理手順は図２０のフローチャートに示される。図１９のように得られた視差マップは、エッジを中心として求められており、白い領域は視差量が求められていない領域である。従って、この白い領域についても視差量を求める必要があり、これを補間演算を行なうことで求める。処理手順は、大きく分けて図２０に示すような４つのステップから構成されている。
【００７８】
まず、画像を構成する全ての画素どうしをバネにより結合する。画像内における各画素に対応する位置がバネの結合位置とし、バネは各画素と上下左右の４方向の画素と結合しているものと扱う。そして、画素ｉと画素ｊとを結合するバネのバネ定数ｅijを次式（９）により定義する。
【００７９】
ｅij＝２５５．０−４．０（｜Ｙij｜＋｜Ｃr,ij｜＋｜Ｃb,ij｜）・・・（９）
ここで、Ｙij  ，Ｃr,ij  ，Ｃb,ijは夫々、画素ｉと画素ｊのＹ，Ｃｒ，Ｃｂ成分の差を示す。ただし、ｅij≧０とする。上記式により、バネ定数は０〜２５５（８ビット）の数値を取りうる。なお、バネ定数の定義としては、色差情報Ｃｒ，Ｃｂを用いずに輝度情報Ｙのみで定義してもよい。図２２は、上記式（９）により左画像のバネ定数を演算した結果を示す図である。図２２（ａ）は、横方向のバネ定数を示す図であり、（ｂ）は縦方向のバネ定数を示す図である。
【００８０】
図１５において色が黒い画素はバネ定数が小さく、白い画素はバネ定数が大きいことを表わしている。この図からも分かるように、エッジの部分でバネ定数が小さくなっていることが確認できる。視差が大きく変化するところはエッジ部分であるため、エッジで視差が大きく変化し、エッジでない部分は視差の変化が緩やかになるように解を求める（補間する）必要がある。従って、図１５に示すバネ定数の演算結果を利用して適切な解を求めることができると考えられる。
【００８１】
次に、バネの節点（画素の位置）の初期移動量を設定する必要があるが、エッジに対してはエッジの対応点探索結果、それ以外の画素については、ブロックマッチングの結果を利用する。エッジを構成する画素に関しては、図１９のように得られた視差マップの視差量を初期移動量として設定する。図１９では、エッジ以外の画素については視差量が求められていないため、図９に示すブロックマッチングにより得られた視差量が初期移動量として設定される。また、対応点が定まらなかったエッジに関しては、視差量の最小値（所定値）を設定している。視差量の最小値は適宜決めることができるが、バネの節点ができるだけ移動しない程度の小さな値が設定されるものである。
【００８２】
次に、以下に説明する手順を繰り返して、バネの釣り合いを求める。釣り合い状態での画素の節点に加わる荷重は次式（１０）で表わされる。
【数７】
2008082870.tif 000009
ここで、ｆｉはｉ番目の画素に加わる荷重、ｊはｉ番目の画素とバネで結合している画素の番号（４つ存在する）、ｅijはｉ番目の画素とｊ番目の画素とを結合しているバネのバネ定数、ｄｉ，ｄｊは夫々ｉ番目の画素とｊ番目の画素の移動量である。
【００８３】
次に、荷重ｆｉによりバネの移動量を次式（１１）にしたがって更新する。
【００８４】
ｄｉ＝０．００１ｆｉ・・・（１１）
なお、演算するに際しては、横方向の荷重のみを考え、移動量（＝視差量）も横方向のみを演算した。また、移動量についてはエッジを構成する画素については固定（移動しないものと扱う）し、エッジ以外の画素に対してのみ演算を行なった。ただし、エッジの対応点探索で対応点の決まらなかったエッジに対しては、移動量の演算を行なっている。なお、式（１１）に示す係数０．００１は実験的に求めた数値であり、必ずしもこの値に限定されるものではない。
【００８５】
式（１０）（１１）の計算を１０００回繰り返して求めた移動量（視差量）の演算結果（視差マップ）を図２３に示す。図２３（ａ）は左画像についての演算結果であり（ｂ）は右画像についての演算結果である。この図において、白く表示されている領域は、応力が一定以上の値を示す画素である。
【００８６】
次に、図２３の釣り合い計算の結果において、応力が大きいエッジの画素に関してバネを切断する処理を行う。図２３の例では、エッジを構成する画素で、ｆｉ＞３２．０を満足する画素に接続された４つのバネの全てを切断する。すなわち、エッジの領域では本来、視差量が大きく変化するはずであるため、エッジの近傍で視差量が徐々に変化するような演算結果が得られることのないようにする必要がある。そのために、上記のごとく、バネを切断し、正しい視差量に補間されるようにする。バネを切断して、釣り合いの再計算を行なった結果を図２４に示す。この図２４からも分かるように、物体の輪郭部分（エッジ）で視差量が不連続に変化し、正しい視差量が得られていることが分かる。
【００８７】
左画像の視差マップ上の（ｉ，ｊ）位置にある画素の視差量をｄｌ（ｉ，ｊ）とするとき、右画像の（ｉ−ｄｉ，ｊ）の位置にある視差量ｄｒ（ｉ−ｄｉ，ｊ）が、
｜ｄｌ（ｉ，ｊ）−ｄｒ（ｉ−ｄｉ，ｊ）｜≦１  ・・・（１２）
を満足する時に整合性が保たれているとする。この数値は、本来は０になるべき数値であるが、誤差なども含めて上記の数値以内であれば整合性があるものと扱うことができる。図２４において、上記式（１２）で整合性チェックを行なった結果を図２５に示す。図２５（ａ）は左画像に関する演算結果を示し、（ｂ）は右画像に関する演算結果を示す。整合性が保持されていない画素は、白抜きの領域となっている。この図からも、オクルージョンの部分や誤対応の部分が除かれていることが分かる。
【００８８】
以上のように説明してきた処理手順により正しい視差量が求まっていることを確認するため、図２５に示す視差マップを三次元空間に表示した結果が図２６に示される。図２６（ａ）は右上に視点を移動した場合を示し（ｂ）は少し低い位置の左上に視点を移動した場合を示す。いずれも、奥行き方向の位置に従って移動量がずれた自然な画像が得られていることが分かる。
【００８９】
以上のような周方向では、両眼立体視において左右の画像から傾き別のエッジを抽出し、各傾き別のエッジを照合して視差量を求めるようにしている。さらに、画素の輝度データの変化量をバネの強度で置き換えたバネのネットワークを用いて、エッジの視差量を補間する方式を採用している。これにより、誤対応が少なく精度の高い視差量を得ることができ、エッジ以外の画素の視差量についても精度良く求められるという利点がある。
【００９０】
＜機能ブロック図＞
以上説明した画像処理プログラムの機能に関して、図２７にブロック図により示す。プログラムの機能は大きく３つに分けることができる。すなわち、ブロックマッチングにより概略の視差量を演算する機能（Ｓ１）、ブロックマッチングの結果に基づいてエッジ探索を行なう機能（Ｓ２）、バネのアナロジーによりエッジ以外の領域について補間演算を行なう機能（Ｓ３）である。
【００９１】
撮影手段１０は、左画像撮像手段１０Ｌと右画像撮像手段１０Ｒとを備えている。撮像手段１０は、ステレオカメラや通常のカメラにステレオアダプターを装着して構成される。もちろん、全く別々のカメラを２つ設けて左画像撮像手段１０Ｌと右画像撮像手段１０Ｒとしてもよい。
【００９２】
左画像データ記憶手段１１Ｌは、左画像撮像手段１０Ｌにより撮影された左画像データを記憶する。右画像データ記憶手段１１Ｒは、右画像撮像手段１０Ｒにより撮影された右画像データを記憶する。記憶手段は、ハードディスク、半導体メモリなどにより構成される。
【００９３】
まず、ブロックマッチングにより概略の視差量を演算する機能（Ｓ１）を説明する。ブロックマッチング手段１２は、左画像データと右画像データを用いてブロックマッチングを行なう機能を提供する。ブロックの大きさを設定する機能も有する。ブロックマッチングの結果は視差マップ生成手段１３に引き渡され、視差マップとして画面表示させる。整合性チェック手段１４は、ブロックマッチングの結果の整合性をチェックする機能を提供する。整合性チェック手段１４は、更に視差量判定手段１４ａと、膨張処理手段１４ｂを備えている。視差量判定手段１４ａは、整合性チェックにおいて、視差量の大きさが所定値以下か否かについて判定する。膨張処理手段１４ｂは、整合性チェックの結果、誤対応であると判定された領域や、ブロックマッチングで対応するブロックが見つからなかった領域については、膨張処理で視差量の補間処理を行う。
【００９４】
次に、ブロックマッチングの結果に基づいてエッジ探索を行なう機能（Ｓ２）を説明する。エッジ抽出手段１５は、エルミート多項式に基づいて画像中のエッジの抽出を行なう。なお、エッジ抽出の方法としては、他の公知の手法等を用いてもよい。傾き別エッジ抽出手段１６は、傾き別のエッジを抽出する機能を提供する。傾き別の例として３０゜のエリアごとにエッジを分類する例を説明したが、本発明としては、この数値に限定されるものではなく、適宜設定することができる。
【００９５】
対応エッジ探索手段１７は、左画像と右画像の対応するエッジを見つけ出す機能を提供する。エッジの探索は、左画像に含まれるエッジを注目エッジとして、右画像のエッジ群から対応エッジを探索する場合と、右画像に含まれるエッジを注目エッジとする場合とがある。エッジ探索範囲設定手段１８は、エッジ探索を行う場合の探索範囲が設定される。この探索範囲は、ブロックマッチングの結果に基づいて設定されるものである。これにより、エッジ探索を行なう範囲を限定する。
【００９６】
対応度演算手段１９は、対応エッジ探索手段１７により左右画像のエッジの照合を行なうときに対応度を演算する。対応度は、どの程度２つのエッジが類似しているかを表わす指標であり、対応度が大きいほど２つのエッジは類似する。エッジ照合を行った時の比較エッジと対応度のデータは、対応度データ保存手段２０に保存される。
【００９７】
エッジ抽出整合性チェック手段２１は、抽出された対応エッジの整合性をチェックする機能を提供する。左画像を基準とした場合の対応エッジと、右画像を基準とした場合の対応エッジは、同じエッジ同士が対応していなければならない。対応関係に矛盾が生じる場合は誤対応が生じているものと扱う。
【００９８】
次に、バネのアナロジーによる視差量の補間演算を行なう機能（Ｓ３）について説明する。バネ定数設定手段２２は、画素を節点と見なして画素間に掛けるバネのバネ定数を設定する。初期移動量設定手段２３は、各節点における初期移動量を設定する。初期移動量は、エッジ抽出の結果得られた移動量が初期設定される。
【００９９】
バネ釣り合い演算手段２４は、設定されたバネ定数と初期移動量に基づいてバネの釣り合い演算を行なう。釣り合い演算を行なった結果、応力が所定値以上の画素に関してはバネを切断する（バネ定数を０にする）処理を行う。移動量更新手段２５は、バネを切断した後、再度移動量を演算する。
【０１００】
＜路面計測システムへの応用＞
次に、本発明に係る画像処理プログラムを路面計測システムに利用した場合の構成例を説明する。路面の状態は時間の経過と共に劣化するため、適宜の時期にメンテナンスを行う必要がある。このメンテナンスを行なうべきか否かを判断するために、路面情報の計測が行われている。この路面の計測において、路面の凹凸情報を集める必要があり、本発明の画像処理プログラムを用いることで路面の凹凸（三次元情報）を得ることができる。
【０１０１】
まず、路面計測を行うために使用される車の構成を図２８，図２９により説明する。車の背面側の上部に、２台のカメラ１，２が所定間隔はなれた状態で搭載されている。カメラ１，２は、例えば、ＣＣＤラインセンサーにより構成される。カメラ１，２は、支持フレーム３に取り付け支持されており、この支持フレーム３の前方側には３軸ジャイロ４（走行状態検出手段に相当）が搭載されている。この３軸ジャイロ４は、車の走行状態を検出するために設けられる。なお、走行状態検出手段としては、上記のセンサーに限定されるものではなく、また、センサーも１種類だけでなく複数種類のものを使用してもよい。
【０１０２】
カメラ１，２で撮影された画像データを処理するために、３台のパソコン６が搭載されている。また、カメラ１，２やパソコン６を駆動するための電源及び発電機７も搭載される。車の背面下部には照明５が搭載されており、夜間における路面の計測も可能としている。
【０１０３】
図３０は、カメラ１，２の撮影範囲を示す図である。Ｒ１は左側のカメラ１による撮影範囲を示し、Ｒ２は右側のカメラ２に夜撮影範囲を示す。撮影範囲Ｒ１，Ｒ２は、重なり領域を有しており、この領域の左右画像データから視差量を求めることで、路面の凹凸情報を求めることができる。寸法関係の具体例を説明すると、２つのカメラ１，２間の距離は１２００ｍｍ、カメラの取り付け高さは路面から２５００ｍｍ、２つのカメラ１，２の視野の重なり領域は、路面幅方向で５０００ｍｍである。これにより、１ｍｍ四方あたり１画素の設定になる。ただし、これらの数値は一例に過ぎないものである。
【０１０４】
画像処理プログラム３５は、補正された左画像データと補正された右画像データを用いて、視差量の演算を行なう。画像処理プログラム３５の具体的な機能については、既に図２７などで説明してきたのと同じ機能のものを使用することができる。ただし、画像処理プログラムとしては、上記のものに限定されるものではなく、ステレオ画像を処理するための任意のプログラムを用いることができる。例えば、ブロックマッチングのみを行いエッジ処理を行わないプログラムを用いてもよいし、ブロックマッチングとエッジ処理を行い、バネのアナロジーを行わないプログラムを用いてもよい。
【０１０５】
図３２は、実際に路面を撮影した画像を示し（ａ）は左画像（ｂ）は右画像を夫々示す。図３３は、図２７などにより既に説明した画像処理プログラムを用い、これにより得られた視差量データに基づいて作成された三次元表示画像である。この三次元画像は左画像あるいは右画像からの視差量データに基づいて作成することができる。また、わだち掘れやひび割れなどの深さ・大きさを数値化することも可能である。これらを数値化することで、路面をメンテナンスすべきか否かについて判断することができる。わだち掘れの程度を検出するのであれば、既に述べたバネのアナロジーを用いた解析は行なわなくても良く、エッジ処理の結果からわだち掘れの判定をしてもよい。ひび割れの深さなど、詳細なデータが必要な場合は、バネのアナロジーを行った結果を利用するのが好ましい。
【０１０６】
＜システムの機能ブロック図＞
図３１は、路面状態計測システムの機能を示すブロック図である。第1のカメラ１により撮影された左画像データは、左画像データ保存部３１に保存される。第２のカメラ２により撮影された右画像データは、右画像データ保存部３２に保存される。これら保存部３１，３２は、パソコン６に設けられたハードディスク等により構成される。左画像補正部３３は、３軸ジャイロ４の出力信号に基づいて左画像データを補正し、右画像補正部３４は、３軸ジャイロ４の出力信号に基づいて右画像データを補正する。これは、車の移動速度や車の振動状態により、取り込まれる画像データの画素間隔が伸びたり歪んだりするためであり、各補正部３３，３４によりこれらを補正して歪みのない状態の画像データを生成する。
【０１０７】
画像処理プログラム３５は、路面状態計測手段としての機能も備えており、補正された歪みのない左右両画像データを用いて視差量を求めて、三次元距離データを計測することができる。
【０１０８】
路面状態を計測する際に、路面の横断データと縦断データを取得する。かかるデータは、視差量データに基づき作成することができる。横断データについては、例えば、所定距離毎（例えば、５０ｃｍごと、１ｍごと等）に作成することができる。これにより、メンテナンスが必要な範囲を確認することができる。縦断データについても同様である。縦断データについては路面の幅方向において何箇所データを取るかについても適宜決めることができる。
【０１０９】
図３４は、縦断データの作成例を示すものであり、図３５は横断データの作成例を示すものである。また、夫々の横断データと縦断データに対して基準データを重ねて表示している。図３５においては、路面の勾配の大きさを強調した状態で図示している。
【０１１０】
以上のように、本発明に係る画像処理プログラムを用いて、視差量データを求めることで、信頼性の高い路面の三次元位置情報を抽出することができる。また、この視差量データから、路面の状態（わだち掘れやひび割れの深さなど）を計測することができる。
【０１１１】
また、レーザーによる検出に比べて車を移動しながら画像を取得するものであるから、人手による作業が軽減され、効率よくデータの取得を行うことができる。また、取得したデータを短時間で効率よく分析することができ、ライフサイクルコストの計画に活用することができる。更に、画像データや計測データをデータベース化することにより、コストパフォーマンスの高い社会資本整備計画の策定ができるとともにトレーサビリティとしての活用ができる。得られたデータは、電子データであり統一性・正確性・保存性に優れている。
【０１１２】
＜別実施形態＞
本発明に係る画像処理プログラムは、路面計測以外の目的にも使用することができる。
【図面の簡単な説明】
【０１１３】
【図１】ステレオビジョンの原理を説明する図
【図２】処理手順の概略を示すフローチャート
【図３】撮影されたステレオ画像の例を示す図
【図４】ブロックマッチングを概念的に説明する図
【図５】ブロックの対応関係を説明する図
【図６】ブロックマッチングの結果得られた視差マップを示す図
【図７】整合性チェックを説明する図
【図８】整合性チェックを行なった結果の視差マップを示す図
【図９】図８に示す視差マップに対して補間処理を行なった結果を示す図
【図１０】対応点の探索を行う時の概略の処理手順を示すフローチャート
【図１１】エルミート多項式（演算用フィルター）を視覚的に表わした図
【図１２】多項式展開フィルターによる演算結果を示す図
【図１３】エッジの強さを演算した結果を示す図
【図１４】傾き別のエッジを示す図
【図１５】エッジの形状を模式的に示す図
【図１６】エッジを重ねた状態を模式的に示す図
【図１７】エッジに対する対応点探索の結果得られた視差マップを示す図
【図１８】整合性チェックの手順を示す図
【図１９】整合性チェックの結果得られた視差マップを示す図
【図２０】ばねを用いた視差量の補間演算の手順を示すフローチャート
【図２１】画素同士をバネで結合する場合のモデルを示す図
【図２２】バネ定数の演算結果を示す図
【図２３】節点の移動量を演算結果を示す図
【図２４】バネを切断して節点の移動量の再計算を行った結果を示す図
【図２５】図２４について整合性チェックを行なった結果を示す図
【図２６】図２５の視差マップを三次元空間に表示した状態を示す図
【図２７】ブロック図
【図２８】路面計測システムに使用する車の構成を示す側面図
【図２９】路面計測システムに使用する車の構成を示す背面図
【図３０】カメラの視野範囲を示す図
【図３１】路面状態計測システムの機能を示すブロック図
【図３２】路面を撮影した左右画像を示す図
【図３３】路面の三次元形状を表示した画面を示す図
【図３４】路面の縦断データの作成例を示す図
【図３５】路面の横断データの作成例を示す図
【符号の説明】
【０１１４】
１，２      カメラ
１０        撮像手段
１０Ｌ      左画像撮像手段
１０Ｒ      右画像撮像手段
１１Ｌ      左画像データ記憶手段
１１Ｒ      右画像データ記憶手段
１２        ブロックマッチング手段
１３        視差マップ生成手段
１４        整合性チェック手段
１５        エッジ抽出手段
１６        傾き別エッジ抽出手段
１７        対応エッジ探索手段
１８        エッジ探索範囲設定手段
１９        対応度演算手段
２０        対応度データ保存手段
２１        エッジ抽出整合性チェック手段
２２        バネ定数設定手段
２３        初期移動量設定手段
２４        バネ釣り合い演算手段
２５        移動量更新手段
【図１】
2008082870.tif 000010
【図２】
2008082870.tif 000011
【図３】
2008082870.tif 000012
【図４】
2008082870.tif 000013
【図５】
2008082870.tif 000014
【図６】
2008082870.tif 000015
【図７】
2008082870.tif 000016
【図８】
2008082870.tif 000017
【図９】
2008082870.tif 000018
【図１０】
2008082870.tif 000019
【図１１】
2008082870.tif 000020
【図１２】
2008082870.tif 000021
【図１３】
2008082870.tif 000022
【図１４】
2008082870.tif 000023
【図１５】
2008082870.tif 000024
【図１６】
2008082870.tif 000025
【図１７】
2008082870.tif 000026
【図１８】
2008082870.tif 000027
【図１９】
2008082870.tif 000028
【図２０】
2008082870.tif 000029
【図２１】
2008082870.tif 000030
【図２２】
2008082870.tif 000031
【図２３】
2008082870.tif 000032
【図２４】
2008082870.tif 000033
【図２５】
2008082870.tif 000034
【図２６】
2008082870.tif 000035
【図２７】
2008082870.tif 000036
【図２８】
2008082870.tif 000037
【図２９】
2008082870.tif 000038
【図３０】
2008082870.tif 000039
【図３１】
2008082870.tif 000040
【図３２】
2008082870.tif 000041
【図３３】
2008082870.tif 000042
【図３４】
2008082870.tif 000043
【図３５】
2008082870.tif 000044