(57)【要約】【課題】ステレオカメラに理想的な輻輳角とは異なる輻輳角が設定されている場合であってもステレオマッチングに適した画像を得る。【解決手段】本発明の一態様によれば、画像処理装置は、位置データ取得部と、パラメータ取得部と、画像データ取得部と、オフセット算出部と、画像補正部とを含む。位置データ取得部は、移動可能な第１および第２のカメラの位置データを取得する。画像データ取得部は、第１および第２のカメラによって撮影された第１および第２の画像データを取得する。オフセット算出部は、第１および第２のカメラの輻輳角およびカメラ間隔と、位置データとに基づいて、予め定められた基準線と第１および／または第２の画像データの中心線との差分であるオフセットを算出する。画像補正部は、オフセットに基づいて第１および／または第２の画像データを補正する。【選択図】      図２
2020181324.tif 000002
【特許請求の範囲】
【請求項１】
移動可能な第１のカメラおよび第２のカメラの位置データを取得する位置データ取得部と、
前記第１のカメラおよび前記第２のカメラの輻輳角およびカメラ間隔を示すパラメータを取得するパラメータ取得部と、
前記第１のカメラによって撮影された第１の画像データと、前記第２のカメラによって撮影された第２の画像データとを取得する画像データ取得部と、
前記輻輳角と、前記カメラ間隔と、前記位置データとに基づいて、予め定められた基準線と前記第１の画像データおよび前記第２の画像データの少なくとも一方の中心線との差分であるオフセットを算出するオフセット算出部と、
前記オフセットに基づいて前記第１の画像データおよび前記第２の画像データの少なくとも一方を補正する画像補正部と
を具備する、画像処理装置。
【請求項２】
前記輻輳角は、前記第１のカメラおよび前記第２のカメラが可動範囲内のいずれかの位置にある場合の前記第１の画像データの中心線および前記第２の画像データの中心線が前記基準線に略一致するように定められる、請求項１に記載の画像処理装置。
【請求項３】
前記第１のカメラおよび前記第２のカメラは、基準面に置かれたワークを撮影し、
前記基準線は、前記基準面に比べて前記第１のカメラおよび前記第２のカメラに近い平面上に定められる、
請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記画像補正部は、前記第１の画像データおよび前記第２の画像データの少なくとも一方の画素を水平方向に前記オフセットに基づく補正量分シフトさせる、請求項１乃至請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
前記第１の画像データ内の画素の前記第２の画像データ内の画素に対する視差を同定する同定部をさらに具備する、請求項１乃至請求項４のいずれか１項に記載の画像処理装置。
【請求項６】
同定された前記視差に基づいて、前記第１の画像データ内の画素に対応する被写体の点から前記第１のカメラおよび前記第２のカメラまでの距離を推定する距離推定部をさらに具備する、請求項５に記載の画像処理装置。
【請求項７】
前記距離の推定結果に基づいて、前記被写体の３Ｄ形状を推定する３Ｄ形状推定部をさらに具備する、請求項６に記載の画像処理装置。
【請求項８】
前記被写体の３Ｄ形状の推定結果を、予め用意されている１または複数の物品の３Ｄモデルとマッチングし、前記被写体の位置および姿勢の少なくとも一方を推定する位置姿勢推定部をさらに具備する、請求項７に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体に対する３Ｄ計測のための画像処理技術に関する。
【背景技術】
【０００２】
従来、例えばピッキング、パッキングなどのアクションを行うロボット、例えばロボットハンド、ロボットアーム、などを制御するために、ワークを撮影した画像データ間でステレオマッチングが行われ、当該ワークの３Ｄ形状が推定される。さらに、予め用意されているワークの３Ｄモデルとのマッチングにより、撮影されたワークがどのような位置でどのような姿勢を取っているかが推定される。そして、かかるロボットは、ワークの推定位置姿勢に応じてアクションを行うように制御される。
【０００３】
一般に、ステレオカメラの理想的な輻輳角は、ワークまでの距離に依存して決まる。ステレオカメラの輻輳角が適切に設定されていない場合には、カメラ間の視野のずれが大きくなるのでステレオマッチングの効率が低下するという問題がある。特許文献１には、撮像素子から被写体までの距離に応じて右目用画像及び左目用画像の切り出し枠を設定する電子的輻輳角制御手段が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−１４９５１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技法によれば、撮像を行う度に、撮像素子から被写体までの距離を測定する必要がある。すなわち、かかる技法をロボットの制御に用いたとすれば、ピッキング、パッキングなどのアクションを取る度に距離の測定を行うことによる遅延が加わることとなる。
【０００６】
本発明は、ステレオカメラに理想的な輻輳角とは異なる輻輳角が設定されている場合であってもステレオマッチングに適した画像を得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、画像処理装置は、位置データ取得部と、パラメータ取得部と、画像データ取得部と、オフセット算出部と、画像補正部とを含む。位置データ取得部は、移動可能な第１のカメラおよび第２のカメラの位置データを取得する。パラメータ取得部は、第１のカメラおよび第２のカメラの輻輳角およびカメラ間隔を示すパラメータを取得する。画像データ取得部は、第１のカメラによって撮影された第１の画像データと、第２のカメラによって撮影された第２の画像データとを取得する。オフセット算出部は、輻輳角と、カメラ間隔と、位置データとに基づいて、予め定められた基準線と第１の画像データおよび第２の画像データの少なくとも一方の中心線との差分であるオフセットを算出する。画像補正部は、オフセットに基づいて第１の画像データおよび第２の画像データの少なくとも一方を補正する。
【発明の効果】
【０００８】
本発明によれば、ステレオカメラに理想的な輻輳角とは異なる輻輳角が設定されている場合であってもステレオマッチングに適した画像を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る画像処理装置を含む３Ｄ計測システムを例示する図。
【図２】実施形態に係る画像処理装置を例示するブロック図。
【図３】カメラユニットの位置毎に理想的な輻輳角を設定した場合の当該カメラユニットの視野の説明図。
【図４】図３の例において、カメラユニットが第１の位置にある時に当該カメラユニットによって生成される画像を例示する図。
【図５】図３の例において、カメラユニットが第２の位置にある時に当該カメラユニットによって生成される画像を例示する図。
【図６】図３の例において、カメラユニットが第３の位置にある時に当該カメラユニットによって生成される画像を例示する図。
【図７】カメラユニットの輻輳角を固定した場合の当該カメラユニットの視野の説明図。
【図８】図７の例において、カメラユニットが第２の位置にある時に当該カメラユニットによって生成される画像を例示する図。
【図９】図７の例において、カメラユニットが第３の位置にある時に当該カメラユニットによって生成される画像を例示する図。
【図１０】図２の画像処理装置の動作を例示するフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら実施形態の説明を述べる。なお、以降、説明済みの要素と同一または類似の要素には同一または類似の符号を付し、重複する説明については基本的に省略する。
【００１１】
（実施形態）  
実施形態に係る画像処理装置は、例えば図１に示す３Ｄ計測システムに組み込むことができる。この３Ｄ計測システムは、カメラユニット１０と、プロジェクタ２０と、ロボット３０と、カメラ制御部４０と、プロジェクタ制御部５０と、ロボット制御部６０と、メインコントローラ７０と、本実施形態に係る画像処理装置１００とを含む。
【００１２】
カメラユニット１０は、例えばロボットハンド、ロボットアームなどのロボット３０のマニピュレータ付近に取り付けられ、当該マニピュレータとともに移動可能である。そして、カメラユニット１０は、ワーク８０が設置された基準面を見下ろす形で当該ワーク８０を撮影することになる。ここで、ワーク８０は、対象物と呼ぶこともできる。対象物は、１つの物品を指していてもよいし、同種または異種の複数の物品を指していてもよい。後述する位置姿勢の推定を実現するために、各対象物と同種の物品の３Ｄモデルが予め用意され得る。
【００１３】
なお、図１によれば、カメラユニット１０は２つのカメラ１１，１２を備えているが、３つ以上のカメラを備えていてもよい。また、カメラユニット１０は、例えば手動によりカメラ１１およびカメラ１２に設定される輻輳角および／またはカメラ間隔を調整するための機構を備えていてもよい。
【００１４】
カメラ制御部４０は、メインコントローラ７０からの命令に従ってカメラユニット１０を制御する。具体的には、カメラ制御部４０は、プロジェクタ２０によってワーク８０に後述される３Ｄ計測を行うための既定の計測用パターンが投影されている間に、カメラユニット１０にワーク８０の撮影を命令する。
【００１５】
プロジェクタ２０は、プロジェクタ制御部５０からの命令に従って、計測用パターンをワーク８０に投影する。そして、カメラユニット１０に含まれるカメラ１１およびカメラ１２は、カメラ制御部４０からの命令に従って撮影を行い、それぞれ画像データを生成する。
【００１６】
プロジェクタ制御部５０は、メインコントローラ７０からの命令に従ってプロジェクタ２０を制御する。具体的には、プロジェクタ制御部５０は、プロジェクタ２０に、計測用パターンの投影を命令する。
【００１７】
ロボット３０は、例えば、ロボットハンド、ロボットアーム、などに相当し、例えばその一端がベース部、他端がマニピュレータであり得る。ロボット３０は、さらに、例えばそのベース部からマニピュレータまでの間にジョイントと当該ジョイントを駆動するためのアクチュエータとを有しており、ロボット制御部６０からの命令に従ってマニピュレータの位置および／または姿勢を変更することができる。ロボット３０のマニピュレータの付近にはカメラユニット１０が取り付けられている。故に、カメラユニット１０の位置および／または姿勢は、ロボット３０のマニピュレータの位置および／または姿勢の変更に伴って変化し得る。
【００１８】
ロボット制御部６０は、メインコントローラ７０からの命令に従ってロボット３０のマニピュレータの位置および／または姿勢を制御する。そして、ロボット制御部６０は、ロボット３０のマニピュレータの位置および／または姿勢を推定し、推定結果を示すデータをメインコントローラ７０へ報告し得る。
【００１９】
メインコントローラ７０は、カメラ制御部４０、プロジェクタ制御部５０、ロボット制御部６０および画像処理装置１００を制御し、図１の３Ｄ計測システムを機能させる。
【００２０】
画像処理装置１００は、カメラユニット１０から複数枚の画像データを取得し、これら画像データにおいて生じ得るオフセットを補正してから、補正後の画像データに基づいて後述される種々の３Ｄ計測を行う。画像処理装置１００は、例えば、カメラユニット１０における視差、カメラユニット１０からワーク８０までの距離、ワーク８０の３Ｄ形状、およびワーク８０の位置姿勢などを推定したりする。
【００２１】
画像処理装置１００は、入出力制御、通信制御、読み書き制御、および種々の画像処理（例えば、後述されるオフセットの算出、画像データの補正、３Ｄ計測、など）を行うプロセッサを含む。
【００２２】
ここで、プロセッサは、典型的にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および／またはＧＰＵ(Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ)であるが、マイコン、ＦＰＧＡ(Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ)、またはＤＳＰ(Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ)、などであってもよい。
【００２３】
画像処理装置１００は、さらに、かかる処理を実現するためにプロセッサによって実行されるプログラムおよび当該プログラムによって使用されるデータ、例えば画像データ、カメラパラメータ、カメラユニット１０の位置データ、オフセット、視差データ、距離データ、デプスマップデータ、点群データ、３Ｄデータ、１または複数の物品の３Ｄモデルデータ、などを一時的に格納するメモリを含んでいる。メモリは、かかるプログラム／データが展開されるワークエリアを有するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含み得る。
【００２４】
画像処理装置１００は、さらに、例えば、カメラ制御部４０、ロボット制御部６０、メインコントローラ７０、などの外部装置に接続するためのインタフェース（Ｉ／Ｆ）を利用可能である。Ｉ／Ｆは、画像処理装置１００に内蔵されていてもよいし、画像処理装置１００に外付けされていてもよい。
【００２５】
Ｉ／Ｆは、例えば、カメラ制御部４０および／またはメインコントローラ７０から画像データ、カメラパラメータ、カメラユニット１０の位置データ、などを受け取る。Ｉ／Ｆは、例えば光ファイバケーブル、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ケーブル、などの有線通信Ｉ／Ｆであってもよいし、例えばＢｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）などの無線通信技術を利用する無線通信Ｉ／Ｆであってもよい。
【００２６】
以下、図２を用いて画像処理装置１００の構成例の説明を続ける。  
図２に例示されるように、画像処理装置１００は、カメラパラメータ取得部１０１と、位置データ取得部１０２と、オフセット算出部１０３と、画像データ取得部１０４と、画像補正部１０５と、視差同定部１０６と、距離推定部１０７と、３Ｄ形状推定部１０８と、位置姿勢推定部１０９と、３Ｄモデル記憶部１１０とを含む。
【００２７】
カメラパラメータ取得部１０１は、カメラ制御部４０またはメインコントローラ７０から、カメラユニット１０のパラメータの少なくとも一部を取得する。カメラパラメータ取得部１０１は、少なくとも、カメラ１１およびカメラ１２に設定されている輻輳角（θ０）を示すパラメータ（データ）と、カメラ１１およびカメラ１２のカメラ間隔（Ｔ）を示すパラメータ（データ）とを取得する。カメラパラメータ取得部１０１は、取得したパラメータをオフセット算出部１０３へ送る。カメラパラメータ取得部１０１は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００２８】
位置データ取得部１０２は、ロボット制御部６０またはメインコントローラ７０から、カメラユニット１０の位置データを取得する。カメラユニット１０の位置データは、少なくとも、カメラユニット１０の移動方向に平行な軸（Ｚ軸）上の座標を直接的または間接的に表す。換言すれば、カメラユニット１０の位置データは、かかる軸と直交する軸（Ｘ軸およびＺ軸）上の座標を表さないこともあり得る。位置データ取得部１０２は、取得した位置データをオフセット算出部１０３へ送る。位置データ取得部１０２は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００２９】
オフセット算出部１０３は、カメラパラメータ取得部１０１からカメラ１１およびカメラ１２に設定されている輻輳角（θ０）を示すパラメータと、カメラ１１およびカメラ１２のカメラ間隔（Ｔ）を示すパラメータとを受け取る。さらに、オフセット算出部１０３は、位置データ取得部１０２からカメラユニット１０の位置データを受け取る。そして、オフセット算出部１０３は、これらのパラメータの示す輻輳角（θ０）およびカメラ間隔（Ｔ）と位置データの示すカメラユニット１０から基準面までの距離（Ｚ）とに基づいて、当該位置データの示す位置に対応するオフセットを算出する。オフセット算出部１０３は、算出したオフセットを示すオフセットデータを画像補正部１０５へ送る。オフセット算出部１０３は、例えば前述のプロセッサに相当し得る。
【００３０】
ここで、オフセットとは、第１の画像データおよび第２の画像データにおいて予め定められた基準線（に対応する画素ライン）と、当該第１の画像データおよび第２の画像データの中心線との差分である。
【００３１】
また、基準線とは、カメラ１１およびカメラ１２の輻輳角の較正するために参照される仮想的な線であって、カメラ１１およびカメラ１２を結ぶ線分の平行線に対して垂直である。基準線は、例えば基準面上に定義されるが、基準面よりもカメラユニット１０に近く基準面に平行な平面上に定義されてもよい。輻輳角は、基準面までの距離に応じて設定するよりも、最もカメラユニット１０に近いワーク８０までの距離に応じて設定することがより好ましい。そこで、例えばワーク８０の高さを考慮して基準面よりもカメラユニット１０側に位置する平面上に基準線を定義することで、探索範囲を的確に絞り込んでステレオマッチングの効率を高めることができる。さらに、中心線とは、画像の中心を通る画素ラインであって、典型的には画像のＹ軸に平行である。
【００３２】
具体的には、カメラユニット１０の位置を例えば図３に例示されるように変更したとする。図３の例では、カメラユニット１０が第１の位置にある時に当該カメラユニット１０からワーク８１およびワーク８２が置かれた基準面までの距離はＺ０であり、カメラユニット１０が第２の位置にある時に当該カメラユニット１０から基準面までの距離はＺ１であり、カメラユニット１０が第３の位置にある時に当該カメラユニット１０から基準面までの距離はＺ２である。また、図３において、αは、カメラ１１およびカメラ１２の画角を表す。
【００３３】
一般に、カメラユニット１０から基準面までの距離が小さいほど、理想的な輻輳角は大きくなる。そして、図３から明らかなように、Ｚ２＜Ｚ０＜Ｚ１である。すなわち、カメラユニット１０が第１の位置、第２の位置、および第３の位置にある時の理想的な輻輳角をそれぞれθ０、θ１、およびθ２とすると、θ１＜θ０＜θ２が成り立つ。ここで、基準面に、カメラ１１およびカメラ１２を結ぶ線分の平行線に垂直な基準線を定める。そして、カメラユニット１０が第１の位置、第２の位置、および第３の位置にある時に理想的な輻輳角がそれぞれ設定されていたならば、図４、図５および図６に例示されるように、第１の画像データの中心線および第２の画像データの中心線は、この基準線（に対応する画素ライン）に一致する。図４、図５および図６の例によれば、ワーク８１およびワーク８２が、第１の画像データおよび第２の画像データの中心付近に写り込むので、この中心付近に探索範囲を設定して効率的なステレオマッチングが可能となる。図４、図５および図６の
左側の画像はカメラ１１によって撮影された画像データに対応し、右側の画像はカメラ１２によって撮影された画像データに対応している。
【００３４】
図３によれば、カメラユニット１０の理想的な輻輳角は、以下の数式（１）に示すように、カメラユニット１０から基準面までの距離（Ｚ）の関数θ（Ｚ）として表すことができる。θの符号は反時計回りを正とする。
【００３５】
【数１】
2020181324.tif 000003
【００３６】
さらに、理想的な輻輳角が設定されている場合のカメラユニット１０の視野サイズは、以下の数式（２）に示すように、カメラユニット１０から基準面までの距離（Ｚ）の関数Ｌｉ（Ｚ）として表すことができる。ここで、視野サイズとは、カメラユニット１０の基準面における視野のうちカメラ１１およびカメラ１２を結ぶ線分に平行な方向の長さを意味する。なお、θ（Ｚ）が小さい場合、例えば５度未満の場合には、数式（２）の代わりに、Ｌｉ（Ｚ）≒２Ｚｔａｎ（α／２）の近似式を用いることもできる。
【００３７】
【数２】
2020181324.tif 000004
【００３８】
次に図７に例示するように、カメラ１１およびカメラ１２の輻輳角を、カメラユニット１０が第１の位置（基準面までの距離＝Ｚ０）にある時の理想的な輻輳角であるθ０に固定したまま、カメラユニット１０の位置を図３と同様に変更したとする。ここで、カメラユニット１０の可動範囲がＺ２＜Ｚ＜Ｚ１であったとすると、Ｚ０は、後述する視野サイズの減少幅を抑える観点から、可動範囲内の値、例えばＺ１およびＺ２の平均値、に略一致するように定められてよい。
【００３９】
カメラユニット１０が第２の位置にある時には、カメラ１１およびカメラ１２は理想的な輻輳角θ１に比べて大きな輻輳角θ０を設定されることになる。故に、図８に例示されるように、第１の画像データおよび第２の画像データの中心線と、基準線との間にはオフセットが生じることとなる。同様に、カメラユニット１０が第３の位置にある時には、カメラ１１およびカメラ１２は理想的な輻輳角θ２に比べて小さな輻輳角θ０を設定されることになる。故に、図９に例示されるように、第１の画像データおよび第２の画像データの中心線と、基準線との間にはオフセットが生じることとなる。オフセット算出部１０３はかかるオフセットを以下のように算出できる。
【００４０】
具体的には、図７によれば、輻輳角がθ０に固定されている場合の第１の画像データおよび第２の画像データのオフセットは、以下の数式（３）に示すように、カメラユニット１０から基準面までの距離（Ｚ）の関数Ｏ（Ｚ）として表すことができる。
【００４１】
【数３】
2020181324.tif 000005
【００４２】
さらに、輻輳角がθ０に固定されている場合のカメラユニット１０の視野サイズは、以下の数式（４）に示すように、カメラユニット１０から基準面までの距離（Ｚ）の関数Ｌ（Ｚ）として表すことができる。なお、θ０が小さい場合、例えば５度未満の場合には、数式（４）の代わりに、Ｌｉ（Ｚ）≒２Ｚｔａｎ（α／２）−２｜Ｚθ０＋Ｃｘ｜の近似式を用いることもできる。
【００４３】
【数４】
2020181324.tif 000006
【００４４】
画像データ取得部１０４は、カメラ制御部４０またはメインコントローラ７０から、それぞれ、カメラ１１およびカメラ１２によってワーク８０（対象物）を撮影した第１の画像データおよび第２の画像データをそれぞれ取得する。画像データ取得部１０４は、取得した第１の画像データおよび第２の画像データを画像補正部１０５へ送る。画像データ取得部１０４は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００４５】
画像補正部１０５は、オフセット算出部１０３からオフセットデータを受け取り、画像データ取得部１０４から第１の画像データおよび第２の画像データを受け取る。画像補正部１０５は、第１の画像データおよび第２の画像データをオフセットデータに基づいて補正し、補正済みの第１の画像データおよび補正済みの第２の画像データを視差同定部１０６へ送る。なお、画像補正部１０５は、第１の画像データおよび第２の画像データの一方を補正し、他方を実質的に補正しないこともある。しかしながら、便宜的に、かかる場合であっても、画像補正部１０５の出力データを補正済みの第１の画像データおよび補正済みの第２の画像データと称することとする。画像補正部１０５は、例えば前述のプロセッサに相当し得る。
【００４６】
具体的には、画像補正部１０５は、オフセットデータに基づいて第１の画像データおよび第２の画像データの補正量を計算し、第１の画像データおよび第２の画像データの画素を水平方向に補正量分シフトさせることで、第１の画像データの指定線（例えば中心線）および第２の画像データの同線を前述の基準線に略一致させることができる。例えば、第１の画像データの中心線が基準線からＰ画素左側にずれていて、第２の画像データの中心線が基準線からＰ画素右側にずれていたとすれば、画像補正部１０５は、第１の画像データの画素を右側にＰ（＋ｑ）画素分シフトさせ、第２の画像データの画素を左側にＰ（−ｑ）画素分シフトさせることで、補正された第１の画像データおよび第２の画像データを生成してもよい。この例では、指定線は中心線から右側にｑ画素ずれた位置を通り当該中心線に並行である。ここで、ｑは任意の数であり、ｑ＝Ｐまたはｑ＝−Ｐであってもよい。すなわち、画像補正部１０５は、第１の画像データの画素を右側に２Ｐ画素分シフトさせ、または第２の画像データを左側に２Ｐ画素分シフトさせてもよい。
【００４７】
視差同定部１０６は、画像補正部１０５から補正済みの第１の画像データおよび補正済みの第２の画像データを受け取る。視差同定部１０６は、これら２つの画像データのステレオマッチング、すなわち第１の画像データ内の画素の第２の画像データ内の画素に対する視差の同定を行う。視差同定部１０６は、ステレオマッチングの効率を向上させるために、前述の指定線上の点、例えば中点、の周囲に探索範囲を設定し、当該探索範囲内の画素に限ってＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅｓ）を指標とするブロックマッチングを行ってもよい。視差同定部１０６は、例えば探索範囲内の画素の視差の同定結果を表す視差データを生成し、これを距離推定部１０７へ送る。視差データは、例えば第１の画像データの各画素の座標と当該画素に関する視差ベクトルとを含み得る。また、視差同定部１０６は、視差データを外部装置、例えばメインコントローラ７０、へ送ってもよい。視差同定部１０６は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００４８】
距離推定部１０７は、視差同定部１０６から視差データを受け取る。距離推定部１０７は、視差データに基づいて、第１の画像データの（ブロックマッチングに成功した）画素毎に、ワーク８０の表面における当該画素に対応する点からカメラ１１およびカメラ１２までの推定距離、すなわち推定デプスを算出する。距離推定部１０７は、推定距離を表す距離データを３Ｄ形状推定部１０８へ送る。距離データは、例えば第１の画像データの各画素の座標と当該画素の距離（デプス）とを含み得る。また、距離推定部１０７は、距離データを外部装置、例えばメインコントローラ７０、へ送ってもよい。距離推定部１０７は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００４９】
３Ｄ形状推定部１０８は、距離推定部１０７から距離データを受け取る。３Ｄ形状推定部１０８は、距離データに基づいて、第１の画像データおよび第２の画像データに写り込んだワーク８０（対象物）の３Ｄ形状を推定する。具体的には、３Ｄ形状推定部１０８は、距離データを例えば画像化し、デプスマップ（データ）を生成してもよい。デプスマップは、例えば画像データであって、各画素がその対応する距離に比例する画素値を有する。また、３Ｄ形状推定部１０８は、デプスマップに加えて、またはデプスマップの代わりにワーク８０の点群データを生成してもよい。点群データは、ワーク８０の表面の多数の点の３Ｄ位置データを含み得る。３Ｄ形状推定部１０８は、推定３Ｄ形状を表す３Ｄデータ（例えば、デプスマップおよび／または点群データ）を位置姿勢推定部１０９へ送る。また、３Ｄ形状推定部１０８は、３Ｄデータを外部装置、例えばメインコントローラ７０、へ送ってもよい。３Ｄ形状推定部１０８は、例えば前述のプロセッサ（およびＩ／Ｆ）に相当し得る。
【００５０】
位置姿勢推定部１０９は、３Ｄ形状推定部１０８からワーク８０の３Ｄデータを受け取り、３Ｄモデル記憶部１１０から１または複数の物品の３Ｄモデルデータを読み出す。位置姿勢推定部１０９は、ワーク８０の３Ｄデータを、読み出した３Ｄモデルデータとマッチングし、ワーク８０の位置および／または姿勢を推定する。位置姿勢推定部１０９は、推定位置および／または推定姿勢を表す位置／姿勢データを外部装置、例えば、ロボット制御部６０、またはメインコントローラ７０、へ送る。位置姿勢推定部１０９は、例えば前述のプロセッサおよびＩ／Ｆに相当し得る。
【００５１】
ここで、ワーク８０が複数種類の物品のいずれかに該当する場合には、位置姿勢推定部１０９は、ワーク８０の位置姿勢を推定するよりも前に、当該ワーク８０の物品認識処理を行ってもよい。すなわち、位置姿勢推定部１０９は、ワーク８０の３Ｄモデルデータとマッチングされるべき物品の３Ｄモデルデータがいずれであるかを判定してもよい。
【００５２】
３Ｄモデル記憶部１１０は、予め用意された１または複数の物品の３Ｄモデルデータを保存する。３Ｄモデル記憶部１１０には、例えばピックアップなどの対象となる物品の３Ｄモデルデータが保存され得る。３Ｄモデル記憶部１１０に保存された３Ｄモデルデータは、位置姿勢推定部１０９によって読み出される。３Ｄモデル記憶部１１０は、例えば前述のメモリまたは補助記憶装置に相当し得る。ここで、補助記憶装置は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、フラッシュメモリ、などであってよい。
【００５３】
以下、図１０を用いて、図２の画像処理装置の動作を説明する。  
まず、カメラパラメータ取得部１０１は、カメラ１１およびカメラ１２に設定されている輻輳角（θ０）を示すパラメータと、カメラ１１およびカメラ１２のカメラ間隔（Ｔ）を示すパラメータとを取得する（ステップＳ２０１）。なお、ステップＳ２０１の前に、カメラ１１およびカメラ１２に輻輳角（θ０）および／またはカメラ１１およびカメラ１２のカメラ間隔（Ｔ）を調整するステップが追加されてもよい。
【００５４】
ステップＳ２０１の後は、カメラユニット１０の移動（ステップＳ２０２）、またはカメラユニット１０による撮影の実行（ステップＳ２０５）を待つことになる。カメラユニット１０が移動すると、処理はステップＳ２０３へ進む。他方、カメラユニット１０が撮影を行うと、処理はステップＳ２０６へ進む。
【００５５】
ステップＳ２０３において、位置データ取得部１０２は、カメラユニット１０の移動後の位置を示す位置データを取得する。そして、オフセット算出部１０３は、ステップＳ２０１において取得されたカメラパラメータと、ステップＳ２０３において取得された位置データとに基づいて、カメラユニット１０の移動後の位置に対応するオフセットを算出する（ステップＳ２０４）。
【００５６】
ステップＳ２０４の後も、カメラユニット１０の移動（ステップＳ２０２）、またはカメラユニット１０による撮影の実行（ステップＳ２０５）を待つことになる。カメラユニット１０が移動すると、処理はステップＳ２０３へ進む。他方、カメラユニット１０が撮影を行うと、処理はステップＳ２０６へ進む。
【００５７】
ステップＳ２０６において、画像データ取得部１０４は、カメラ１１によって撮影された第１の画像データおよびカメラ１２によって撮影された第２の画像データを取得する。そして、画像補正部１０５は、ステップＳ２０６において取得された第１の画像データおよび第２の画像データを、ステップＳ２０４において算出されたオフセットに基づいて補正する（ステップＳ２０７）。
【００５８】
視差同定部１０６は、ステップＳ２０７において得られた補正済みの第１の画像データおよび補正済みの第２の画像データのステレオマッチングを行って視差を同定する（ステップＳ２０８）。
【００５９】
距離推定部１０７は、ステップＳ２０８における各画素についての視差の同定結果（視差データ）に基づいて、当該画素に対応するワーク８０（対象物）の表面上の点からカメラユニット１０までの距離を推定する（ステップＳ２０９）。
【００６０】
３Ｄ形状推定部１０８は、ステップＳ２０９における距離の推定結果（距離データ）に基づいて、ワーク８０の３Ｄ形状を推定する（ステップＳ２１０）。
【００６１】
位置姿勢推定部１０９は、ステップＳ２１０におけるワーク８０の３Ｄ形状の推定結果（ワーク８０の３Ｄデータ）を、３Ｄモデル記憶部１１０から読み出した、１または複数の物品の３Ｄモデルデータとマッチングし、当該ワーク８０の位置および／または姿勢を推定する（ステップＳ２１１）。
【００６２】
ステップＳ２１１の後も、カメラユニット１０の移動（ステップＳ２０２）、またはカメラユニット１０による撮影の実行（ステップＳ２０５）を待つことになる。カメラユニット１０が移動すると、処理はステップＳ２０３へ進む。他方、カメラユニット１０が撮影を行うと、処理はステップＳ２０６へ進む。
【００６３】
以上説明したように、実施形態に係る画像処理装置は、カメラユニットの位置およびカメラパラメータに基づいて当該位置に対応する、ステレオ画像データのオフセットを算出する。そして、この画像処理装置は、ステレオ画像データをこのオフセットに基づいて補正してから視差の同定を行う。故に、この画像処理装置によれば、カメラユニットに理想的な輻輳角とは異なる輻輳角が設定されている場合であっても、ステレオ画像データにおける中心線などの指定線を予め定められた基準線（に対応する画素ライン）に略一致させることができる。すなわち、探索範囲を的確に絞り込んでステレオマッチングの効率を高めることができる。また、この画像処理装置によれば、カメラユニットから被写体までの距離を測定する必要がないので、輻輳角を測定距離に基づいて制御する技法に比べて、短時間でステレオマッチング用の画像を準備することができる。従って、この画像処理装置によれば、ロボットが、大量に山積みされたワークをピックアップするユースケースにおいて、ロボットがワークをピックアップしてから次のワークをピックアップするまでの時間を短縮させ作業を高速化させることができる。
【００６４】
上述の実施形態は、本発明の概念の理解を助けるための具体例を示しているに過ぎず、本発明の範囲を限定することを意図されていない。実施形態は、本発明の要旨を逸脱しない範囲で、様々な構成要素の付加、削除または転換をすることができる。
【００６５】
上述の実施形態では、いくつかの機能部を説明したが、これらは各機能部の実装の一例に過ぎない。例えば、１つの装置に実装されると説明された複数の機能部が複数の別々の装置に亘って実装されることもあり得るし、逆に複数の別々の装置に亘って実装されると説明された機能部が１つの装置に実装されることもあり得る。
【００６６】
上記各実施形態において説明された種々の機能部は、回路を用いることで実現されてもよい。回路は、特定の機能を実現する専用回路であってもよいし、プロセッサのような汎用回路であってもよい。
【００６７】
上記各実施形態の処理の少なくとも一部は、例えば汎用のコンピュータに搭載されたプロセッサを基本ハードウェアとして用いることでも実現可能である。上記処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどである。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【符号の説明】
【００６８】
１０・・・カメラユニット
１１，１２・・・カメラ
２０・・・プロジェクタ
３０・・・ロボット
４０・・・カメラ制御部
５０・・・プロジェクタ制御部
６０・・・ロボット制御部
７０・・・メインコントローラ
８０，８１，８２・・・ワーク
１００・・・画像処理装置
１０１・・・カメラパラメータ取得部
１０２・・・位置データ取得部
１０３・・・オフセット算出部
１０４・・・画像データ取得部
１０５・・・画像補正部
１０６・・・視差同定部
１０７・・・距離推定部
１０８・・・３Ｄ形状推定部
１０９・・・位置姿勢推定部
１１０・・・３Ｄモデル記憶部
【図１】
2020181324.tif 000007
【図２】
2020181324.tif 000008
【図３】
2020181324.tif 000009
【図４】
2020181324.tif 000010
【図５】
2020181324.tif 000011
【図６】
2020181324.tif 000012
【図７】
2020181324.tif 000013
【図８】
2020181324.tif 000014
【図９】
2020181324.tif 000015
【図１０】
2020181324.tif 000016