(57)【要約】【課題】ステレオカメラ画像間のマッチングを効率的に行う。【解決手段】本発明の一態様によれば、画像処理装置は、取得部と、探索部と、同定部とを含む。取得部は、第１のカメラによって対象物を撮影した第１の画像と第２のカメラによって対象物を撮影した第２の画像とを取得する。探索部は、第１の画像内の画素の第２の画像内の対応する画素に対する視差を予め定められた上限値から降順に同定し、視差の同定済みである画素を含み、かつ視差の同定済みである画素の面積が閾値を超える領域を探索する。同定部は、領域を包含する探索範囲を設定し、前記探索範囲内の画素の視差を同定する。【選択図】      図２
2020170390.tif 000002
【特許請求の範囲】
【請求項１】
第１のカメラによって対象物を撮影した第１の画像と第２のカメラによって前記対象物を撮影した第２の画像とを取得する取得部と、
前記第１の画像内の画素の前記第２の画像内の対応する画素に対する視差を予め定められた上限値から降順に同定し、前記視差の同定済みである画素を含み、かつ前記視差の同定済みである画素の面積が閾値を超える第１の領域を探索する探索部と、
前記第１の領域を包含する探索範囲を設定し、前記探索範囲内の画素の視差を同定する視差同定部と
を具備する、画像処理装置。
【請求項２】
前記同定部は、同定済みの視差よりもさらに小さな第１の値について前記探索範囲内の画素の前記視差を同定して前記第１の領域を更新し、前記第１の領域が前記探索範囲の境界に達した場合に前記探索範囲が当該第１の領域を包含するまで拡大して再設定してから前記第１の値よりもさらに小さな第２の値について前記探索範囲内の画素の前記視差を同定する、請求項１に記載の画像処理装置。
【請求項３】
前記同定部は、同定済みの視差よりもさらに小さな第１の値について前記探索範囲内の画素の前記視差を同定して前記第１の領域を更新し、前記第１の領域が前記探索範囲の境界に達した場合に前記探索範囲が当該第１の領域を包含するまで拡大して再設定してから、前記上限値から前記第１の値まで、拡大された前記探索範囲内の画素の前記視差を同定する、請求項１に記載の画像処理装置。
【請求項４】
前記同定部は、拡大された前記探索範囲内の画素の中から前記第１の値よりも大きな視差が同定された第２の領域を検出し、かつ前記第２の領域が前記第１の領域と不連続である場合に、設定中の前記探索範囲を破棄し、前記第２の領域を包含する探索範囲を新たに設定して前記視差の同定を再開する、請求項３に記載の画像処理装置。
【請求項５】
前記同定部は、前記探索範囲内で前記視差の同定済みである画素を含む領域のサイズが予め定められた目標値に達した場合に前記視差の同定を終了する、請求項１乃至請求項４のいずれか１項に記載の画像処理装置。
【請求項６】
同定された前記視差に基づいて、前記探索範囲内の画素に対応する前記対象物の点から前記第１のカメラおよび前記第２のカメラまでの距離を推定する距離推定部をさらに具備する、請求項１乃至請求項５のいずれか１項に記載の画像処理装置。
【請求項７】
前記距離の推定結果に基づいて、前記探索範囲における前記対象物の３Ｄ形状を推定する３Ｄ形状推定部をさらに具備する、請求項６に記載の画像処理装置。
【請求項８】
前記対象物の３Ｄ形状の推定結果を、予め用意されている１または複数の物品の３Ｄモデルとマッチングし、前記対象物の位置および姿勢の少なくとも一方を推定する位置姿勢推定部をさらに具備する、請求項７に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体に対する３Ｄ計測のための画像処理技術に関する。
【背景技術】
【０００２】
従来、例えばピッキング、パッキングなどを行うロボットハンドを制御するために、対象物を撮影したステレオカメラ画像間でマッチングが行われ、当該対象物の３Ｄ形状が推定される。さらに、予め用意されている対象物の３Ｄモデルとのマッチングにより、撮影された対象物がどのような位置でどのような姿勢を取っているかが推定される。そして、かかるロボットハンドは、ピッキング、パッキングなどのアクションを対象物の推定位置姿勢に応じて行うように制御される。
【０００３】
特許文献１には、距離センサを用いて取得した粗い距離情報に基づいて複数のフォーカス位置で複数回の撮像を行い、これらの画像を合成することにより全焦点画像を得て、高低差のある被写体を精密に計測することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−０２０８９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述のステレオカメラ画像間のマッチングは、通常はカメラの視野全体に亘って行われる。同様に、対象物の位置姿勢を推定するための３Ｄモデルとのマッチングも、通常はカメラの視野全体に亘って行われる。これらの計算量はステレオカメラ画像の画素数に依存して増大するが、マッチングの精度を確保する観点からすると画像の解像度を不用意に下げることは好ましくない。さらに、多数の対象物が存在する場合には、１つの対象物に対するアクションが終わる度にこれらの処理を再度行う必要があるので、当該処理に関わる計算量が大きいことによる悪影響はより深刻となる。例えば、大量に山積みされた部品をピックアップするなどの作業の高速化が困難となり得る。
【０００６】
特許文献１に記載の技法は、マッチングの精度向上に寄与する可能性はあるものの、マッチングに関する計算量そのものは変わらない。
【０００７】
本発明は、ステレオカメラ画像間のマッチングを効率的に行うことを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、画像処理装置は、取得部と、探索部と、同定部とを含む。取得部は、第１のカメラによって対象物を撮影した第１の画像と第２のカメラによって対象物を撮影した第２の画像とを取得する。探索部は、第１の画像内の画素の第２の画像内の対応する画素に対する視差を予め定められた上限値から降順に同定し、視差の同定済みである画素を含み、かつ視差の同定済みである画素の面積が閾値を超える第１の領域を探索する。同定部は、第１の領域を包含する探索範囲を設定し、前記探索範囲内の画素の視差を同定する。
【発明の効果】
【０００９】
本発明によれば、ステレオカメラ画像間のマッチングを効率的に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る画像処理装置を含む３Ｄ計測システムを例示する図。
【図２】第１の実施形態に係る画像処理装置を例示するブロック図。
【図３】図２の画像処理装置によって行われる被写体領域の探索処理の説明図。
【図４】図３の例において視差が２５画素の場合の累積結果画像を例示する図。
【図５】図３の例において視差が２１画素の場合の累積結果画像を例示する図。
【図６】図３の例において視差が１７画素の場合の累積結果画像を例示する図。
【図７】図２の画像処理装置の動作を例示するフローチャート。
【図８】図７のステップＳ２１０の詳細を例示するフローチャート。
【図９】図７のステップＳ２２０の詳細を例示するフローチャート。
【図１０】図２の画像処理装置によって行われる探索範囲の設定処理の説明図。
【図１１】第２の実施形態に係る画像処理装置を例示するブロック図。
【図１２】図１１の画像処理装置によって行われる被写体領域の探索処理の説明図。
【図１３】図１２の例において視差が２０画素の場合の累積結果画像を例示する図。
【図１４】図１２の例において視差が１６画素の場合の累積結果画像を例示する図。
【図１５】図１２の例において視差が１２画素の場合の累積結果画像を例示する図。
【図１６】図１１の画像処理装置の動作を例示するフローチャート。
【図１７】図１６のステップＳ４２０の詳細を例示するフローチャート。
【図１８】図１１の画像処理装置によって行われる探索範囲の設定処理の説明図。
【図１９】対象物の３Ｄモデルを例示する図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態の説明を述べる。なお、以降、説明済みの要素と同一または類似の要素には同一または類似の符号を付し、重複する説明については基本的に省略する。
【００１２】
（第１の実施形態）  
第１の実施形態に係る画像処理装置は、例えば図１に示す３Ｄ計測システムに組み込むことができる。この３Ｄ計測システムは、多眼カメラ１０と、プロジェクタ２０と、プロジェクタ／カメラ制御装置３０と、本実施形態に係る画像処理装置１００とを含む。
【００１３】
多眼カメラ１０は、例えばロボットハンドに取り付けられ、被写体６０が設置された台７０を見下ろす形で当該被写体６０を撮影することになる。ここで、被写体６０は、対象物と呼ぶこともできる。対象物は、１つの物品を指していてもよいし、同種または異種の複数の物品を指していてもよい。後述する位置姿勢の推定を実現するために、各対象物と同種の物品の３Ｄモデルが予め用意され得る。なお、図１によれば、多眼カメラ１０は２つのカメラを備えているが、３つ以上のカメラを備えていてもよい。
【００１４】
プロジェクタ／カメラ制御装置３０は、多眼カメラ１０およびプロジェクタ２０を制御する。具体的には、プロジェクタ／カメラ制御装置３０は、プロジェクタ２０に、後述される３Ｄ計測を行うための既定の計測用パターンの投影を命令する。また、プロジェクタ／カメラ制御装置３０は、計測用パターンが投影されている間に、多眼カメラ１０に被写体６０の撮影を命令する。
【００１５】
プロジェクタ２０は、プロジェクタ／カメラ制御装置３０からの命令に従って、計測用パターンを投影する。そして、多眼カメラ１０に含まれるカメラ１１およびカメラ１２は、プロジェクタ／カメラ制御装置３０からの命令に従って撮影を行い、それぞれ撮影画像を生成する。
【００１６】
画像処理装置１００は、多眼カメラ１０から複数枚の撮影画像を取得し、これら画像に対して後述される種々の３Ｄ計測を行う。例えば、多眼カメラ１０における視差、多眼カメラ１０から被写体６０までの距離、被写体６０の３Ｄ形状、および被写体６０の位置姿勢などを推定したりする。
【００１７】
画像処理装置１００は、入出力制御、通信制御、読み書き制御、および種々の画像処理（例えば、後述される被写体領域の探索、探索範囲の設定、３Ｄ計測、など）を行うプロセッサを含む。
【００１８】
ここで、プロセッサは、典型的にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および／またはＧＰＵ(Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ)であるが、マイコン、ＦＰＧＡ(Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ)、またはＤＳＰ(Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ)、などであってもよい。
【００１９】
画像処理装置１００は、さらに、かかる処理を実現するためにプロセッサによって実行されるプログラムおよび当該プログラムによって使用されるデータ、例えば画像データ、被写体領域を定義するデータ、探索範囲を定義するデータ、視差データ、距離データ、デプスマップデータ、点群データ、３Ｄデータ、１または複数の物品の３Ｄモデルデータ、などを一時的に格納するメモリを含んでいる。メモリは、かかるプログラム／データが展開されるワークエリアを有するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含み得る。
【００２０】
画像処理装置１００は、さらに、例えば多眼カメラ１０などの外部装置に接続するためのインタフェース（Ｉ／Ｆ）を利用可能である。Ｉ／Ｆは、画像処理装置１００に内蔵されていてもよいし、画像処理装置１００に外付けされていてもよい。
【００２１】
Ｉ／Ｆは、例えば、多眼カメラ１０から画像を受け取る。Ｉ／Ｆは、例えば光ファイバケーブル、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ケーブル、などの有線通信Ｉ／Ｆであってもよいし、例えばＢｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）などの無線通信技術を利用する無線通信Ｉ／Ｆであってもよい。
【００２２】
以下、図２を用いて画像処理装置１００の構成例の説明を続ける。  
図２に例示されるように、画像処理装置１００は、画像取得部１０１と、領域探索部１０２と、視差同定部１０３と、距離推定部１０５と、３Ｄ形状推定部１０６と、位置姿勢推定部１０７と、３Ｄモデル記憶部１０８とを含む。
【００２３】
画像取得部１０１は、多眼カメラ１０に含まれるカメラ１１およびカメラ１２から、それぞれ、当該カメラ１１およびカメラ１２によって被写体６０（対象物）を撮影した第１の画像および第２の画像をそれぞれ取得する。画像取得部１０１は、取得した第１の画像および第２の画像を領域探索部１０２へ送る。画像取得部１０１は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００２４】
領域探索部１０２は、画像取得部１０１から第１の画像および第２の画像を受け取る。領域探索部１０２は、被写体６０（対象物）のうちカメラ１１およびカメラ１２からの距離が相対的に近い部分が写っている領域を、第１の画像および／または第２の画像から探索する。かかる領域は、被写体領域と呼ぶこともできる。領域探索部１０２は、例えば前述のプロセッサに相当し得る。
【００２５】
例えば、ロボットハンドが、大量に山積みされた対象物をその上方からピックアップするユースケースでは、ロボットハンドは、視野内にどれだけの対象物が存在しようとも、通常はその時々で最も近い、つまり最も高い位置に積まれている対象物から順にピックアップしていくことになる。故に、かかる被写体領域の周辺にマッチングの探索範囲を制限すれば、ロボットハンドの動きを害することなくマッチングに関わる計算量を大幅に削減することができる。
【００２６】
具体的には、領域探索部１０２は、予め定められた上限値（ｋ）から順に、第１の画像内の画素の、第２の画像内の対応する画素に対する視差を同定する。すなわち、領域探索部１０２は、図３に例示されるように、２５画素、・・・、２１画素、・・・１７画素、・・・のように、対象となる値を減じながら視差の同定を行う。なお、以降の説明では、第１の画像を基準とし、第２の画像をずらしてマッチングを行っているが、これらは逆であってもよい。ここで、上限値とは、理論上の上限値、例えばエピポーラ線の長さに基づいて定められてもよいし、図１の３Ｄ計測システムの実用環境に即した値に定められてもよい。
【００２７】
まず、領域探索部１０２は、第２の画像に含まれる各画素をエピポーラ線に沿ってｋ画素ずらして比較用の画像を生成し、第１の画像内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、領域探索部１０２は、第１の画像に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅｓ）を計算する。そして、領域探索部１０２は、ＳＡＤが閾値未満、すなわちマッチングが成功であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上、すなわちマッチングが失敗であれば当該画素の値を「０」として、視差＝ｋの結果画像（例えば２値画像）を生成する。この結果画像に含まれる各画素の値は、第１の画像において当該画素と同一位置にある画素についての視差がｋであるか否か（「１」／「０」）を意味する。領域探索部１０２は、この視差＝ｋの結果画像を（最初の）累積結果画像（例えば２値画像）として保存する。
【００２８】
次に、領域探索部１０２は、より小さな視差について同定を行う。すなわち、領域探索部１０２は、第２の画像に含まれる各画素をエピポーラ線に沿って、ｋ−１画素ずらして比較用の画像を生成し、第１の画像内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、領域探索部１０２は、第１の画像に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、領域探索部１０２は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｋ−１の結果画像を生成する。この結果画像に含まれる各画素の値は、第１の画像において当該画素と同一位置にある画素についての視差がｋ−１であるか否か（「１」／「０」）を意味する。領域探索部１０２は、累積結果画像にこの視差＝ｋ−１の結果画像を加算して更新する。この累積結果画像に含まれる各画素の値は、第１の画像において当該画素と同一位置にある画素についての視差がｋ−１以上であるか否か、換言すれば視差が同定済みであるか否か（「１」／「０」）を意味する。
【００２９】
このように、領域探索部１０２は、必要に応じてｋ−２，ｋ−３，・・・と順に減じながら視差の同定を行い、累積結果画像を更新する。この結果、視差＝ｉの結果画像を加算して更新された累積結果画像に含まれる各画素の値は、第１の画像において当該画素と同一位置にある画素についての視差がｉ以上であるか否か、換言すれば視差が同定済みであるか否か（「１」／「０」）を意味する。このように、累積結果画像において、「１」の値を持つ画素は段々と増えていくことになる。一例として、図４は視差＝２５画素の場合の累積結果画像、図５は視差＝２１の場合の累積結果画像、および図６は視差＝１７画素の場合の累積結果画像をそれぞれ示す。各図において、「１」の値を持つ画素は黒、「０」の値を持つ画素は白でそれぞれ描かれている。
【００３０】
領域探索部１０２は、累積結果画像が保存され、または更新される毎に、当該累積結果画像において「１」の値を持つ画素を含み、かつ「１」の値を持つ画素の面積が閾値を超える領域（被写体領域）を探索する。ここで、かかる領域は、「１」の値を持つ画素が連続する領域であってもよいし、例えばある画素を基準とした所定形状、例えばＮ画素＊Ｎ画素の矩形、の領域であってもよい。また、連続とは、「１」の値を持つ画素が少なくとも水平または垂直方向に隣接している場合を指すが、斜め方向に隣接している場合もさらに指すことがあり得る。また、隣接とは、「１」の値を持つ画素が少なくとも「０」の値を持つ画素によって隔てられることなく並んでいる場合を指すが、「１」の値を持つ画素が１つまたはそれ以上の「１」の値を持つ画素によって隔てられる場合もさらに指すことがあり得る。例えば、水平または垂直方向に、「１」、「１」、「０」、「１」、「１」の順に画素が並んでいた場合に、これら５つの画素は連続すると解されてもよいし、連続しないと解されてもよい。領域探索部１０２は、かかる被写体領域が探索された場合には、当該領域を定義するデータを生成し、これを第１の画像および第２の画像と共に視差同定部１０３へ送る。
【００３１】
視差同定部１０３は、領域探索部１０２から、第１の画像、第２の画像、および被写体領域を定義するデータを受け取る。視差同定部１０３は、被写体領域を包含する探索範囲を設定し、探索範囲内の画素の視差を同定する。視差同定部１０３は、探索範囲内の画素についての視差の同定結果を表す視差データを生成し、これを距離推定部１０５へ送る。視差データは、例えば第１の画像の各画素の座標と当該画素に関する視差ベクトルとを含み得る。また、視差同定部１０３は、視差データを図示されない外部装置へ送ってもよい。視差同定部１０３は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００３２】
視差同定部１０３は、領域探索部１０２によって同定済みである視差よりも小さな値から順に視差の同定を継続し、被写体領域の拡大とこれに伴う探索範囲の拡大（再設定）とを行ってもよい。
【００３３】
具体的には、視差同定部１０３は、領域探索部１０２によって探索された被写体領域を包含する探索範囲を設定する。例えば、視差同定部１０３は、被写体領域を包含する矩形を探索範囲としてもよいし、被写体領域の縁に沿って当該被写体よりも大きな探索範囲を設定してもよい。
【００３４】
そして、視差同定部１０３は、領域探索部１０２によって同定済みである値（ここではｍとする）よりも小さな視差について同定を行う。すなわち、視差同定部１０３は、第２の画像に含まれる各画素をエピポーラ線に沿ってｍ−１画素ずらして比較用の画像を生成し、第１の画像の探索範囲内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、視差同定部１０３は、第１の画像の探索範囲に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、視差同定部１０３は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｍ−１の結果画像を生成する。この結果画像に含まれる各画素の値は、第１の画像の探索範囲において当該画素と同一位置にある画素についての視差がｍ−１であるか否か（「１」／「０」）を意味する。視差同定部１０３は、累積結果画像にこの視差＝ｍ−１の結果画像を加算して被写体領域を更新する。この累積結果画像に含まれる各画素の値は、第１の画像の少なくとも探索範囲において当該画素と同一位置にある画素についての視差がｍ−１以上であるか否か、換言すれば視差が同定済みであるか否か（「１」／「０」）を意味する。
【００３５】
続いて、視差同定部１０３は、このように更新した被写体領域が、現在設定されている探索範囲の境界に達したか否かを判定する。被写体領域が現在設定されている探索範囲の境界に達していなければ、視差同定部１０３はより小さな視差の同定を行う。他方、被写体領域が探索範囲の境界に達していれば、視差同定部１０３は、被写体領域が探索範囲に包含されるように、探索範囲を以下に説明するように拡大して再設定することになる。
【００３６】
具体的には、視差同定部１０３は、現在の累積結果画像における被写体領域を包含するように探索範囲を拡大して再設定する。ただし、前述のように、視差同定部１０３は、再設定前の探索範囲よりも外側の画素についてマッチングを行っていないので、実際には視差がｍ−１以上である被写体領域は、再設定後の探索範囲の境界にも達するおそれがある。故に、視差同定部１０３は、探索範囲のうち再設定により拡大した部分について前述のマッチングを視差＝ｍ−１について行って、累積結果画像を再更新する。そして、視差同定部１０３は、被写体領域が、現在設定されている探索範囲の境界に達したか否かを再判定する。被写体領域が探索範囲の境界に達していれば、視差同定部１０３は同様の処理を繰り返す必要がある。他方、被写体領域が探索範囲の境界に達していなければ、視差同定部１０３はより小さな視差の同定と、必要であれば探索範囲の拡大とを行うことになる。最終的に、視差の同定済みである画素を含む領域（被写体領域）のサイズが予め定められた目標値に達した場合に、視差同定部１０３は視差の同定を終了することになる。
【００３７】
例えば、視差同定部１０３は、被写体領域に外接する矩形の対角線の長さが、対象物の３Ｄ形状に基づいて定められる目標値に達した場合に、視差の同定を終了し得る。ここで、対象物の３Ｄ形状は、例えば図１９に示される３Ｄモデルとして登録され得る。３Ｄモデルは、対象物のＣＡＤデータに基づいて作成されてもよいし、対象物の３Ｄ撮影データに基づいて作成されてもよい。図１９の３Ｄモデルをロボット（ハンド）が対象物を把持する方向から見たときに外接する最小の矩形の頂点をＡ、Ｂ、Ｃ、およびＤとする。この矩形の対角線の長さＡＤまたはＢＣに基づいて、かかる目標値が定められてよい。かかる対角線の長さは、頂点Ａおよび頂点Ｄの間の三次元ユークリッド距離、または頂点Ｂおよび頂点Ｃの間の三次元ユークリッド距離として算出可能である。
【００３８】
視差同定部１０３による探索範囲の設定例を図１０に示す。図１０の例では、視差＝ｋ−１の時に、被写体領域の探索が済んでいる。故に、段階Ｓ１では、視差同定部１０３は、視差＝ｋ−１以上である被写体領域を包含するように探索範囲を設定する。
【００３９】
段階Ｓ２では、視差同定部１０３は、現在設定されている探索範囲内で視差＝ｋ−２についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（右端）に達している。
【００４０】
故に、段階Ｓ３では、視差同定部１０３は、探索範囲を拡大し、この拡大した部分の中で視差＝ｋ−２についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（右端）に達している。
【００４１】
故に、段階Ｓ４では、視差同定部１０３は、探索範囲を拡大し、この拡大した部分の中で視差＝ｋ−２についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲によって包含されている。
【００４２】
次に、段階Ｓ５では、視差同定部１０３は、現在設定されている探索範囲内で視差＝ｋ−３についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（右端）に達している。
【００４３】
故に、段階Ｓ６では、視差同定部１０３は、探索範囲を拡大し、この拡大した部分の中で視差＝ｋ−３についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（右端）に達している。
【００４４】
故に、段階Ｓ７では、視差同定部１０３は、探索範囲を拡大し、この拡大した部分の中で視差＝ｋ−３についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲によって包含されている。
【００４５】
次に、段階Ｓ８では、視差同定部１０３は、現在設定されている探索範囲内で視差＝ｋ−４についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域のサイズは予め定められた目標値に達している。故に、視差同定部１０３は、視差の同定を終了する。
【００４６】
距離推定部１０５は、視差同定部１０３から視差データを受け取る。距離推定部１０５は、視差データに基づいて、第１の画像の探索範囲内の（マッチングに成功した）画素毎に、被写体６０の表面における当該画素に対応する点からカメラ１１およびカメラ１２までの推定距離、すなわち推定デプスを算出する。距離推定部１０５は、推定距離を表す距離データを３Ｄ形状推定部１０６へ送る。距離データは、例えば第１の画像の探索範囲内の各画素の座標と当該画素の距離（デプス）とを含み得る。また、距離推定部１０５は、距離データを図示されない外部装置へ送ってもよい。距離推定部１０５は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００４７】
３Ｄ形状推定部１０６は、距離推定部１０５から距離データを受け取る。３Ｄ形状推定部１０６は、距離データに基づいて、探索範囲における被写体６０（対象物）の３Ｄ形状を推定する。具体的には、３Ｄ形状推定部１０６は、距離データを例えば画像化し、（探索範囲内の）デプスマップ（データ）を生成してもよい。デプスマップは、例えば画像データであって、各画素がその対応する距離に比例する画素値を有する。また、３Ｄ形状推定部１０６は、デプスマップに加えて、またはデプスマップの代わりに（探索範囲内の）被写体６０の点群データを生成してもよい。点群データは、被写体６０の表面の多数の点の３Ｄ位置データを含み得る。３Ｄ形状推定部１０６は、推定３Ｄ形状を表す３Ｄデータ（例えば、デプスマップおよび／または点群データ）を位置姿勢推定部１０７へ送る。また、３Ｄ形状推定部１０６は、３Ｄデータを図示されない外部装置へ送ってもよい。３Ｄ形状推定部１０６は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００４８】
位置姿勢推定部１０７は、３Ｄ形状推定部１０６から被写体６０の３Ｄデータを受け取り、３Ｄモデル記憶部１０８から１または複数の物品の３Ｄモデルデータを読み出す。位置姿勢推定部１０７は、被写体６０の３Ｄデータを、読み出した３Ｄモデルデータとマッチングし、被写体６０の位置および／または姿勢を推定する。位置姿勢推定部１０７は、推定位置および／または推定姿勢を表す位置／姿勢データを図示されない外部装置、例えばロボットハンド（の制御装置）へ送る。位置姿勢推定部１０７は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００４９】
ここで、被写体６０が複数種類の物品のいずれかに該当する場合には、位置姿勢推定部１０７は、被写体６０の位置姿勢を推定するよりも前に、当該被写体６０の物品認識処理を行ってもよい。すなわち、位置姿勢推定部１０７は、被写体６０の３Ｄデータとマッチングされるべき物品の３Ｄモデルデータがいずれであるかを判定してもよい。
【００５０】
３Ｄモデル記憶部１０８は、予め用意された１または複数の物品の３Ｄモデルデータを保存する。３Ｄモデル記憶部１０８には、例えばピックアップなどの対象となる物品の３Ｄモデルデータが保存され得る。３Ｄモデル記憶部１０８に保存された３Ｄモデルデータは、位置姿勢推定部１０７によって読み出される。３Ｄモデル記憶部１０８は、例えば前述のメモリまたは補助記憶装置に相当し得る。ここで、補助記憶装置は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリ、などであってよい。
【００５１】
以下、図７乃至図９を用いて、図２の画像処理装置の動作を説明する。  
まず、同定済みの視差をカウントするための変数ｐが、予め定められた上限値（ｋ）に初期化される（ステップＳ２０１）。
【００５２】
領域探索部１０２は、ステップＳ２０１において初期化された変数ｐを減じながら、第１の画像および第２の画像のマッチングを行い、被写体領域を探索する（ステップＳ２１０）。なお、ステップＳ２１０の具体例は、図８を用いて後述される。
【００５３】
視差同定部１０３は、被写体領域のサイズが予め定められた目標値に達するまで、ステップＳ２１０に引き続き当該変数ｐを減じながら探索範囲内の画素の視差を同定して被写体領域を拡大させると共に当該被写体領域を包含するように探索範囲を設定する（ステップＳ２２０）。なお、ステップＳ２２０の具体例は、図９を用いて後述される。
【００５４】
距離推定部１０５は、ステップＳ２２０における各画素についての視差の同定結果（視差データ）に基づいて、当該画素に対応する被写体６０（対象物）の表面上の点からカメラ１１およびカメラ１２までの距離を推定する（ステップＳ２４５）。
【００５５】
３Ｄ形状推定部１０６は、ステップＳ２４５における距離の推定結果（距離データ）に基づいて、被写体６０の３Ｄ形状を推定する（ステップＳ２４６）。
【００５６】
位置姿勢推定部１０７は、ステップＳ２４６における被写体６０の３Ｄ形状の推定結果（被写体６０の３Ｄデータ）を、３Ｄモデル記憶部１０８から読み出した、１または複数の物品の３Ｄモデルデータとマッチングし、当該被写体６０の位置および／または姿勢を推定する（ステップＳ２４７）。
【００５７】
次に、図８を用いて、ステップＳ２１０の詳細を説明する。図８の例では、処理はステップＳ２１１から開始する。  
ステップＳ２１１において、領域探索部１０２は、視差＝ｐについて、ブロックマッチングを行い、結果画像を生成する。具体的には、領域探索部１０２は、第２の画像に含まれる各画素をエピポーラ線に沿ってｐ画素ずらして比較用の画像を生成し、第１の画像内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、領域探索部１０２は、第１の画像に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、領域探索部１０２は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｐの結果画像を生成し得る。
【００５８】
次に、領域探索部１０２は、累積結果画像にステップＳ２１２において生成した視差＝ｐの結果画像を加算して、累積結果画像を更新する（ステップＳ２１２）。なお、ステップＳ２１２を初めて行う場合には、視差＝ｐ＝ｋの結果画像がそのまま（最初の）累積結果画像として保存され得る。
【００５９】
続いて、領域探索部１０２は、ステップＳ２１２において更新した累積結果画像において「１」の値を持つ画素を含む領域を検出する（ステップＳ２１３）。領域探索部１０２は、ステップＳ２１３において検出した領域に含まれる「１」の画素の面積が閾値を超えるか否かを判定する（ステップＳ２１４）。
【００６０】
ステップＳ２１４において領域に含まれる「１」の画素の面積が閾値以下であると判定された場合に処理はステップＳ２１５へ進む。他方、ステップＳ２１４において領域に含まれる「１」の画素の面積が閾値を超えると判定された場合に、領域探索部１０２はステップＳ２１３において検出された領域を被写体領域の探索結果として決定し、当該被写体領域を定義するデータを生成、出力して、処理が終了する。ステップＳ２１５において、領域探索部１０２は変数ｐをデクリメントし、処理はステップＳ２１１に戻る。
【００６１】
次に、図９を用いて、ステップＳ２２０の詳細を説明する。図９の例では、処理はステップＳ２２１から開始する。  
ステップＳ２２１において、視差同定部１０３は、ステップＳ２１０において探索された被写体領域を包含する探索範囲を設定し、処理はステップＳ２２２に進む。ステップＳ２２２において、視差同定部１０３は、変数ｐをデクリメントする。
【００６２】
次に、視差同定部１０３は、ステップＳ２２２においてデクリメントされた視差＝ｐについて、探索範囲内のブロックマッチングを行い、結果画像を生成する（ステップＳ２２３）。具体的には、視差同定部１０３は、第２の画像に含まれる各画素をエピポーラ線に沿ってｐ画素ずらして比較用の画像を生成し、第１の画像の探索範囲内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、視差同定部１０３は、第１の画像の探索範囲に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、視差同定部１０３は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｐの結果画像を生成する。
【００６３】
続いて、視差同定部１０３は、累積結果画像にステップＳ２２３において生成した視差＝ｐの結果画像を加算して、累積結果画像を更新する（ステップＳ２２４）。領域探索部１０２は、ステップＳ２２４において更新した累積結果画像において「１」の値を持つ画素を含む領域を検出する（ステップＳ２２５）。
【００６４】
視差同定部１０３は、ステップＳ２２５において検出した領域のサイズが目標値に達したか否かを判定する（ステップＳ２３２）。ステップＳ２３２において、領域のサイズが目標値に達していると判定されれば処理が終了する。他方、ステップＳ２３２において、領域のサイズが目標値に達していないと判定されれば処理はステップＳ２２６へ進む。
【００６５】
ステップＳ２２６では、視差同定部１０３は、ステップＳ２２５において検出した領域が現在設定されている探索範囲の境界に達したか否かを判定する。ステップＳ２２６において領域が探索範囲の境界に達していないと判定されれば、処理はステップＳ２２２に戻る。他方、ステップＳ２２６において領域が探索範囲の境界に達したと判定されれば、処理はステップＳ２２７へ進む。
【００６６】
ステップＳ２２７において、視差同定部１０３は、ステップＳ２２５において検出された（拡大した）被写体領域を包含するように、探索範囲を拡大して再設定する。
【００６７】
次に、視差同定部１０３は、現在の視差＝ｐについて、探索範囲内、より正確にはステップＳ２２７において拡大した部分のブロックマッチングを行い、結果画像を生成する（ステップＳ２２８）。具体的には、視差同定部１０３は、第２の画像に含まれる各画素をエピポーラ線に沿ってｐ画素ずらして比較用の画像を生成し、第１の画像の探索範囲（の拡大部分）内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、視差同定部１０３は、第１の画像の探索範囲に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、視差同定部１０３は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｐの結果画像を生成する。
【００６８】
続いて、視差同定部１０３は、累積結果画像にステップＳ２２８において生成した視差＝ｐの結果画像を加算して、累積結果画像を更新する（ステップＳ２２９）。領域探索部１０２は、ステップＳ２２９において更新した累積結果画像において「１」の値を持つ画素を含む領域を検出する（ステップＳ２３０）。
【００６９】
視差同定部１０３は、ステップＳ２３０において検出した領域のサイズが目標値に達したか否かを判定する（ステップＳ２３３）。ステップＳ２３３において、領域のサイズが目標値に達していると判定されれば処理が終了する。他方、ステップＳ２３３において、領域のサイズが目標値に達していないと判定されれば処理はステップＳ２３１へ進む。
【００７０】
ステップＳ２３１では、視差同定部１０３は、ステップＳ２３０において検出した領域が現在設定されている探索範囲の境界に達したか否かを判定する。ステップＳ２３１において領域が探索範囲の境界に達していないと判定されれば、処理はステップＳ２２２に戻る。他方、ステップＳ２３１において領域が探索範囲の境界に達したと判定されれば、処理はステップＳ２２７に戻る。
【００７１】
以上説明したように、第１の実施形態に係る画像処理装置は、ステレオカメラ画像の各画素に関する視差を予め定められた上限値から降順に同定し、カメラに近い被写体の（一部の）領域を早期に探索する。そして、この画像処理装置は、探索された領域を包含するように探索範囲を設定して、当該探索範囲内で視差を同定する。故に、この画像処理装置によれば、視差同定のためのマッチングや、被写体の位置姿勢の推定のためのマッチングを行う範囲をカメラの視野の一部に制限することができる。すなわち、カメラの視野全体を探索範囲とした場合に比べて、マッチングの実行回数を削減する、すなわちマッチングに関する計算量を削減しながらも、カメラに近い被写体に関する視差の同定および／または位置姿勢の推定をすることができる。従って、この画像処理装置によれば、例えば、ロボットハンドが、大量に山積みされた対象物をその上方からピックアップするユースケースにおいて、ロボットハンドが対象物をピックアップしてから次の対象物をピックアップするまでの時間を短縮させることで作業を高速化させることができる。
【００７２】
（第２の実施形態）  
図１に例示した３Ｄ計測システムは、前述の画像処理装置１００に代えて、第２の実施形態に係る画像処理装置３００を組み込むこともできる。
【００７３】
画像処理装置３００は、前述の画像処理装置１００と同様に、多眼カメラ１０から複数枚の撮影画像を取得し、これら画像に対して種々の３Ｄ計測を行う。また、画像処理装置３００は、画像処理装置１００と同様のハードウェア構成を有し得る。
【００７４】
以下、図１１を用いて画像処理装置３００の構成例の説明を続ける。  
図１１に例示されるように、画像処理装置３００は、画像取得部１０１と、領域探索部１０２と、視差同定部３０３と、距離推定部１０５と、３Ｄ形状推定部１０６と、位置姿勢推定部１０７と、３Ｄモデル記憶部１０８とを含む。
【００７５】
視差同定部３０３は、領域探索部１０２から、第１の画像、第２の画像、および被写体領域を定義するデータを受け取る。視差同定部３０３は、被写体領域を包含する探索範囲を設定し、探索範囲内の画素の視差を同定する。視差同定部３０３は、探索範囲内の画素についての視差の同定結果を表す視差データを生成し、これを距離推定部１０５へ送る。視差データは、例えば第１の画像の各画素の座標と当該画素に関する視差ベクトルとを含み得る。また、視差同定部３０３は、視差データを図示されない外部装置へ送ってもよい。視差同定部３０３は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００７６】
視差同定部３０３は、領域探索部１０２によって同定済みである視差よりも小さな値から順に視差の同定を継続し、被写体領域の拡大とこれに伴う探索範囲の拡大（再設定）とを行ってもよい。後述するように、視差同定部３０３は、ある値についての視差の同定の結果、探索範囲を拡大した場合に、拡大された探索範囲に対して、予め定められた上限値から当該ある値まで視差を同定する点、そして、拡大された探索範囲内により有望な被写体領域が存在した場合に、設定中の探索範囲をリセットして視差の同定を再開する点で、前述の視差同定部１０３とは異なる。
【００７７】
具体的には、視差同定部３０３は、領域探索部１０２によって探索された被写体領域を包含する探索範囲を設定する。例えば、視差同定部３０３は、被写体領域を包含する矩形を探索範囲としてもよいし、被写体領域の縁に沿って当該被写体よりも大きな探索範囲を設定してもよい。
【００７８】
そして、視差同定部３０３は、領域探索部１０２によって同定済みである値（ここではｍとする）よりも小さな視差について同定を行う。すなわち、視差同定部３０３は、第２の画像に含まれる各画素をエピポーラ線に沿ってｍ−１画素ずらして比較用の画像を生成し、第１の画像の探索範囲内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、視差同定部３０３は、第１の画像の探索範囲に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、視差同定部３０３は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｍ−１の結果画像を生成する。この結果画像に含まれる各画素の値は、第１の画像の探索範囲において当該画素と同一位置にある画素についての視差がｍ−１であるか否か（「１」／「０」）を意味する。視差同定部３０３は、累積結果画像にこの視差＝ｍ−１の結果画像を加算して被写体領域を更新する。この累積結果画像に含まれる各画素の値は、第１の画像の少なくとも探索範囲において当該画素と同一位置にある画素についての視差がｍ−１以上であるか否か、換言すれば視差が同定済みであるか否か（「１」／「０」）を意味する。
【００７９】
続いて、視差同定部３０３は、このように更新した被写体領域が、現在設定されている探索範囲の境界に達したか否かを判定する。被写体領域が現在設定されている探索範囲の境界に達していなければ、視差同定部３０３はより小さな視差の同定を行う。他方、被写体領域が探索範囲の境界に達していれば、視差同定部３０３は、被写体領域が探索範囲に包含されるように、探索範囲を以下に説明するように拡大して再設定することになる。
【００８０】
具体的には、視差同定部３０３は、現在の累積結果画像における被写体領域を包含するように探索範囲を拡大して再設定する。ただし、前述のように、視差同定部３０３は、再設定前の探索範囲よりも外側の画素についてマッチングを行っていないので、実際には視差がｍ−１以上である被写体領域は、再設定後の探索範囲の境界にも達するおそれがある。故に、視差同定部３０３は、探索範囲のうち再設定により拡大した部分について前述のマッチングを予め定められた上限値からｍ−１まで行って、累積結果画像を再更新する。
【００８１】
ここで、探索範囲のうち再設定により拡大した部分に、ｍ−１より大きい、すなわち上限値からｍまでの視差が同定された領域が存在し、さらにこの領域が現在の探索範囲内の被写体領域と不連続である場合には、当該領域は現在の探索範囲内の被写体領域に対応する被写体よりもカメラに近い位置にある被写体に対応する可能性がある。そこで、視差同定部３０３は、設定中の探索範囲（および当該探索範囲によって包含される被写体領域）を破棄してこの（被写体）領域を包含する探索範囲を新たに設定（すなわち、探索範囲をリセット）して、当該探索範囲内の画素について視差の同定を再開する。そして、視差同定部３０３は、被写体領域が、現在設定されている探索範囲の境界に達したか否かを再判定する。被写体領域が探索範囲の境界に達していれば、視差同定部３０３は同様の処理を繰り返す必要がある。他方、被写体領域が探索範囲の境界に達していなければ、視差同定部３０３はより小さな視差の同定と、必要であれば探索範囲の拡大とを行うことになる。最終的に、視差の同定済みである画素を含む領域（被写体領域）のサイズが予め定められた目標値に達した場合に、視差同定部３０３は視差の同定を終了することになる。
【００８２】
ここで、２つの被写体６１および被写体６２が図１２に例示されていたとする。図１２の例では、被写体６２は、被写体６１に被さっており、被写体６１よりも被写体６２がカメラに近い位置にある。しかしながら、被写体６１および被写体６２の姿勢の影響で、被写体６１の一部が、被写体６２よりもカメラに近い位置に突き出ている。
【００８３】
被写体６１および被写体６２がこのように配置されていたとすると、領域探索部１０２は、被写体６１の一部を被写体領域として探索する可能性がある。それから視差同定部３０３は、被写体６１のうちカメラからより遠い部分について視差を同定し、探索範囲を拡大することになる。ここで、仮に、ある値について探索範囲内の画素の視差を同定し、さらに探索範囲を拡大した場合に、この拡大した部分の画素の視差を当該ある値についてのみ同定したとする。探索範囲の拡大部分の画素の視差をこのように同定すると、被写体６１および被写体６２の重なった部分では被写体６２の方が被写体６１よりも視差が大きいので、当該拡大部分に被写体６２が存在していたとしても、これが見落とされるおそれがある。
【００８４】
そこで、視差同定部３０３は、探索範囲の拡大部分の画素の視差も、予め定められた値から現在注目する値まで同定することで、かかる見落としを防ぐ。図１３、図１４、および図１５に、図１２の例において、視差が２０画素、１６画素、および１２画素の場合、の累積結果画像をそれぞれ示す。図１３の段階では被写体６１の一部が探索範囲に含まれているが、図１４の段階では被写体６２の一部を包含するように探索範囲がリセットされ、図１５の段階では、被写体６１および被写体６２の位置関係、すなわち被写体６２が被写体６１に被さっていることが理解できる。
【００８５】
視差同定部３０３による探索範囲の設定例を図１８に示す。図１８の例では、視差＝ｋ−１の時に、被写体領域の探索が済んでいる。故に、段階Ｓ１１では、視差同定部３０３は、視差＝ｋ−１以上である被写体領域を包含するように探索範囲を設定する。
【００８６】
段階Ｓ１２では、視差同定部３０３は、現在設定されている探索範囲内で視差＝ｋ−２についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（上端および右端）に達している。
【００８７】
故に、段階Ｓ１３では、視差同定部３０３は、探索範囲を拡大する。そして、段階Ｓ１４では、視差同定部３０３は、この拡大した部分の中で視差＝ｋ、ｋ−１およびｋ−２についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（上端および右端）に達している。
【００８８】
故に、段階Ｓ１５では、視差同定部３０３は、探索範囲をさらに拡大する。そして、段階Ｓ１６では、視差同定部３０３は、この拡大した部分の中で視差＝ｋ、ｋ−１およびｋ−２についてのマッチングを行う。この結果、視差＝ｋおよび／またはｋ−１が同定された領域が検出され、かつ現在の探索範囲内の被写体領域と不連続であったため、探索範囲がリセットされた。さらに、累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲の境界（左端）に達している。
【００８９】
故に、段階Ｓ１７では、視差同定部３０３は、探索範囲をさらに拡大する。そして、段階Ｓ１８では、視差同定部３０３は、この拡大した部分の中で視差＝ｋ、ｋ−１およびｋ−２についてのマッチングを行う。累積結果画像において「１」の値を持つ領域は現在設定されている探索範囲によって包含されている。
【００９０】
次に、段階Ｓ１９では、視差同定部３０３は、現在設定されている探索範囲内で視差＝ｋ−３についてのマッチングを行う。この結果、累積結果画像において「１」の値を持つ領域のサイズは目標値に達した。故に、視差同定部３０３は、視差の同定を終了する。
【００９１】
以下、図１６および図１７を用いて、図１１の画像処理装置の動作を説明する。図１６のフローチャートは、図７のフローチャートにおけるステップＳ２２０をステップＳ４２０に置き換えたものである。
【００９２】
ステップＳ４２０において、視差同定部３０３は、被写体領域のサイズが予め定められた目標値に達するまで、ステップＳ２１０に引き続き当該変数ｐを減じながら探索範囲内の画素の視差を同定して被写体領域を拡大させると共に当該被写体領域を包含するように探索範囲を設定する（ステップＳ４２０）。なお、ステップＳ４２０の具体例は、図１７を用いて後述される。
【００９３】
次に、図１７を用いて、ステップＳ４２０の詳細を説明する。図１７のフローチャートは、図９のフローチャートにおけるステップＳ２２８およびステップＳ２２９をステップＳ４２８およびステップＳ４２９にそれぞれ置き換え、さらにステップＳ４３４およびステップＳ４３５を追加したものである。
【００９４】
ステップＳ４２８において、視差同定部３０３は、予め定められた上限値（ｋ）から現在の視差＝ｐまで、拡大された探索範囲内、すなわちステップＳ２２７において拡大した部分のブロックマッチングを行い、それぞれ結果画像を生成する（ステップＳ４２８）。具体的には、視差同定部３０３は、ｐ≦ｉ≦ｋを満足する任意の整数ｉに関して、第２の画像に含まれる各画素をエピポーラ線に沿ってｉ画素ずらして比較用の画像を生成し、第１の画像の探索範囲の拡大部分内の画素毎に当該比較用の画像とのブロックマッチングを行う。例えば、視差同定部３０３は、第１の画像の探索範囲に含まれる注目画素を中心とする画素ブロックと、比較用の画像において当該注目画素と同一位置にある画素を中心とする画素ブロックとのＳＡＤを計算する。そして、視差同定部３０３は、ＳＡＤが閾値未満であればこの注目画素と同一位置にある画素の値を「１」、逆にＳＡＤが閾値以上であれば当該画素の値を「０」として、視差＝ｉの結果画像を生成する。
【００９５】
続いて、視差同定部１０３は、視差＝ｋ〜ｐ＋１について、画素値＝「１」の領域が検出され、かつ探索範囲内の被写体領域と不連続であるか否かを判定する（ステップＳ４３４）。かかる領域が検出されれば処理はステップＳ４３５へ進む、検出されなければ処理はステップＳ４２９へ進む。
【００９６】
ステップＳ４３５において、視差同定部１０３は、現在設定中の探索範囲を破棄し、検出された領域を包含する探索範囲を新たに設定して、処理はステップＳ４２９へ進む。
【００９７】
ステップＳ４２９において、視差同定部３０３は、累積結果画像にステップＳ４２８において生成した視差＝ｋ〜ｐの結果画像を加算して、累積結果画像を更新する。
【００９８】
以上説明したように、第２の実施形態に係る画像処理装置は、ある値について探索範囲内の画素の視差を同定し、さらに探索範囲を拡大した場合に、拡大した部分について予め定められた上限値から当該ある値まで視差の同定を行う点、そして、拡大された探索範囲内により有望な被写体領域が存在した場合に、設定中の探索範囲をリセットして視差の同定を再開する点で、第１の実施形態に係る画像処理装置とは異なる。この画像処理装置は、第１の実施形態に係る画像処理装置に比べて、視差の同定のための演算量が増加するおそれはあるものの、最初に探索された被写体領域とは離れた箇所に当該被写体領域に対応する第１の被写体よりもカメラに近い第２の被写体が存在する場合に、当該第２の被写体を見落としにくくなる。
【００９９】
上述の実施形態は、本発明の概念の理解を助けるための具体例を示しているに過ぎず、本発明の範囲を限定することを意図されていない。実施形態は、本発明の要旨を逸脱しない範囲で、様々な構成要素の付加、削除または転換をすることができる。
【０１００】
上述の実施形態では、いくつかの機能部を説明したが、これらは各機能部の実装の一例に過ぎない。例えば、１つの装置に実装されると説明された複数の機能部が複数の別々の装置に亘って実装されることもあり得るし、逆に複数の別々の装置に亘って実装されると説明された機能部が１つの装置に実装されることもあり得る。
【０１０１】
上記各実施形態において説明された種々の機能部は、回路を用いることで実現されてもよい。回路は、特定の機能を実現する専用回路であってもよいし、プロセッサのような汎用回路であってもよい。
【０１０２】
上記各実施形態の処理の少なくとも一部は、例えば汎用のコンピュータに搭載されたプロセッサを基本ハードウェアとして用いることでも実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどである。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【符号の説明】
【０１０３】
１０・・・多眼カメラ
１１，１２・・・カメラ
２０・・・プロジェクタ
３０・・・プロジェクタ／カメラ制御装置
６０，６１，６２・・・被写体
７０・・・台
１００，３００・・・画像処理装置
１０１・・・画像取得部
１０２・・・領域探索部
１０３，３０３・・・視差同定部
１０５・・・距離推定部
１０６・・・３Ｄ形状推定部
１０７・・・位置姿勢推定部
１０８・・・３Ｄモデル記憶部
【図１】
2020170390.tif 000003
【図２】
2020170390.tif 000004
【図３】
2020170390.tif 000005
【図４】
2020170390.tif 000006
【図５】
2020170390.tif 000007
【図６】
2020170390.tif 000008
【図７】
2020170390.tif 000009
【図８】
2020170390.tif 000010
【図９】
2020170390.tif 000011
【図１０】
2020170390.tif 000012
【図１１】
2020170390.tif 000013
【図１２】
2020170390.tif 000014
【図１３】
2020170390.tif 000015
【図１４】
2020170390.tif 000016
【図１５】
2020170390.tif 000017
【図１６】
2020170390.tif 000018
【図１７】
2020170390.tif 000019
【図１８】
2020170390.tif 000020
【図１９】
2020170390.tif 000021