(57)【特許請求の範囲】
【請求項１】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が鏡面反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出する方法であって、
少なくとも１つの前記検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向と同一平面内にあって、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで入力画像を取得するステップと、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出するステップと、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得するステップと、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定するステップと、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定するステップとを備え、
前記法線方向を決定するステップは、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第１のベクトルと、当該三次元座標点を通り、かつ、前記撮像装置の方向に延びる第２のベクトルとの、二等分角に相当するベクトルを法線ベクトルとして算出するステップを含む、方法。
【請求項２】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が拡散反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出する方法であって、
少なくとも１つの前記検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで入力画像を取得するステップと、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出するステップと、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得するステップと、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定するステップと、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定するステップとを備え、
前記法線方向を決定するステップは、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出するステップを含む、方法。
【請求項３】
前記入力画像を取得するステップは、前記少なくとも１つの検出対象物に対して前記第１の方向から照明光を照射しない状態で前記撮像装置により取得された第１の画像と、前記少なくとも１つの検出対象物に対して前記第１の方向から照明光を照射した状態で前記撮像装置により取得された第２の画像との差分から前記入力画像を生成するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記中心位置を決定するステップは、前記検出対象物の円筒部分のそれぞれの中心位置から当該検出対象物の中心軸を決定するステップを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記決定した前記検出対象物の中心位置を前記検出対象物を把持するロボットのコントローラへ出力するステップをさらに備える、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が鏡面反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出する装置であって、
撮像装置と接続され、少なくとも１つの前記検出対象物を撮像した入力画像を取得するインターフェイスとを備え、前記入力画像は、前記少なくとも１つの検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向と同一平面内にあって、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで取得され、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出する手段と、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得する手段と、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定する手段と、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定する手段とを備え、
前記法線方向を決定する手段は、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第１のベクトルと、当該三次元座標点を通り、かつ、前記撮像装置の方向に延びる第２のベクトルとの、二等分角に相当するベクトルを法線ベクトルとしてとして算出する、装置。
【請求項７】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が拡散反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出する装置であって、
撮像装置と接続され、少なくとも１つの前記検出対象物を撮像した入力画像を取得するインターフェイスとを備え、前記入力画像は、前記少なくとも１つの検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで取得され、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出する手段と、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得する手段と、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定する手段と、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定する手段とを備え、
前記法線方向を決定する手段は、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出する、装置。
【請求項８】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が鏡面反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出するためのプログラムであって、当該プログラムは、コンピュータに、
少なくとも１つの前記検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向と同一平面内にあって、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで入力画像を取得するステップと、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出するステップと、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得するステップと、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定するステップと、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定するステップとを実行させ、
前記法線方向を決定するステップは、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第１のベクトルと、当該三次元座標点を通り、かつ、前記撮像装置の方向に延びる第２のベクトルとの、二等分角に相当するベクトルを法線ベクトルとして算出するステップを含む、プログラム。
【請求項９】
既知の半径を有する円筒または球を少なくとも一部に含む、その表面が拡散反射する検出対象物について、円筒または球に関する１つ以上の円状断面上の中心位置を算出するためのプログラムであって、当該プログラムは、コンピュータに、
少なくとも１つの前記検出対象物に対して第１の方向から照明光を照射した状態で、前記第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで入力画像を取得するステップと、
前記検出対象物の円筒部分または球部分の少なくとも一部を含む領域を、前記入力画像内の明るさの情報および前記検出対象物の形状の情報に基づいて、前記入力画像から抽出するステップと、
前記少なくとも１つの検出対象物に対して、前記第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記抽出された領域についての高さ情報を取得するステップと、
前記抽出された領域に含まれる複数の円筒断面の各々または球断面について、当該断面の外周上の明るさが極大となる部分を特定し、当該明るさが極大となる部分の法線方向を決定するステップと、
前記決定した前記複数の円筒断面のそれぞれの法線方向または前記球断面の法線方向と、前記既知の半径と、前記複数の円筒断面の前記明るさが極大となるそれぞれの部分の位置または前記球断面の前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の円筒部分のそれぞれの中心位置または前記検出対象物の中心位置を決定するステップとを実行させ、
前記法線方向を決定するステップは、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出するステップを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する方法、装置およびプログラムに関するものである。
【背景技術】
【０００２】
たとえば、ＦＡ（Factory Automation）分野などにおいては、省力化や自動化の観点から、製造現場で扱われる検出対象物（以下、「ワーク」とも称す。）を撮像して得られる画像に基づいて、各種の処理を自動化するような画像計測技術が開発・実用化されている。
【０００３】
このような画像計測技術の一例として、円筒状のワークを把持したりするために、当該ワークの中心位置を算出するような手法が提案されている。たとえば、特開２００４−２９４２３４号公報（特許文献１）には、円筒部分を含む物体を側面から撮影することにより距離画像を入力し、その距離画像から円筒部分の領域である円筒領域距離画像を抽出し、円筒領域距離画像の各点において法線ベクトルを演算し、法線ベクトルから主軸を演算し、主軸に垂直な平面に円筒領域距離画像を射影し、射影した円筒領域距離画像を円に近似するとともに円の中心を求め、円の中心を通る主軸を物体の位置と姿勢とする物体検出方法が開示されている。すなわち、特許文献１には、円筒を三次元計測装置で計測した三次元点群を円筒中心軸方向の平面に投影し、円筒中心と径とを算出する手法が開示されている。
【０００４】
また、特開２０００−３２９５２０号公報（特許文献２）には、スリット光走査装置が、コイルを径方向に見た場合、複数の明るさが変化した部分が存在するようにレーザスリット光を照射し、コイル演算装置が、断面形状データをコイル径方向に投影した際、複数の断面形状データが存在する部分についてコイルの幅及び幅方向中心位置を算出するコイル位置検出装置が開示されている。すなわち、特許文献２には、投光方向を変えながら光切断を行い、光沢を有する円筒状のコイルを三次元計測し、その三次元計測から得られる点群から円筒の幅および径を算出する手法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２９４２３４号公報
【特許文献２】特開２０００−３２９５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のワークがトレーなどに入れられた状態（すなわち、「ばら積み」されている状態）において、ロボットなどを用いて当該トレーから各ワークを把持するような処理には、上述したような従来技術をそのまま適用しても所望の結果を得ることはできなかった。
【０００７】
すなわち、特許文献１に開示される手法では、円フィッティングを用いて円筒中心と径とを算出するため、所定の面積を有する点の群が必要である。そのため、その表面が拡散反射するような円筒状のワークには適用できるが、光沢のある表面特性を有する（鏡面反射する）円筒状のワークでは十分な数の計測点を取得することが難しい。そのため、その表面が拡散反射面および鏡面反射面の一方には特定されないワークに対して、特許文献１の記載の発明を汎用的に適用することはできない。
【０００８】
また、特許文献２に開示される手法では、十分な数の計測点を取得するために、角度を異ならせて複数回の撮像（光切断）が必要である。そのため、一つのワークについての計測時間が比較的長くなり、実用的な時間で多数のワークを処理することができない。また、ワークについての計測点を十分な数だけ取得するためには、ワークの方向（円筒方向）がある程度既知である必要があり、上述のようなばら積み状態のワークに対しては適用することができない。
【０００９】
そこで、本発明の目的は、複数の検出対象物が任意の方向を向いて配置されている場合であっても、それぞれの検出対象物の中心位置を算出することができる方法、装置およびプログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明のある局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する方法を提供する。当該方法は、少なくとも１つの検出対象物を撮像した入力画像を取得するステップと、検出対象物の形状に相当する領域を入力画像から抽出するステップと、抽出された領域についての高さ情報を取得するステップと、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定するステップとを含む。
【００１１】
好ましくは、法線方向を決定するステップは、検出対象物の光学反射特性に依存して、法線方向の決定方法を異ならせる。
【００１２】
さらに好ましくは、入力画像は、少なくとも１つの検出対象物に対して第１の方向から照明光を照射した状態で、第１の方向とは異なる第２の方向に視線を向けて配置された撮像装置を用いて撮像することで取得される。
【００１３】
さらに好ましくは、法線方向を決定するステップは、検出対象物の表面が鏡面反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第１のベクトルと、当該三次元座標点を通り、かつ、撮像装置の方向に延びる第２のベクトルとの、二等分角に相当するベクトルを法線ベクトルとして算出するステップを含む。
【００１４】
あるいはさらに好ましくは、法線方向を決定するステップは、検出対象物の表面が拡散反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出するステップを含む。
【００１５】
あるいはさらに好ましくは、高さ情報を取得するステップは、少なくとも１つの検出対象物に対して、第１の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置によりそれぞれ撮像された複数の画像を用いて、高さ情報を取得する。
【００１６】
あるいはさらに好ましくは、入力画像を取得するステップは、少なくとも１つの検出対象物に対して第１の方向から照明光を照射しない状態で撮像装置により取得された第１の画像と、少なくとも１つの検出対象物に対して第１の方向から照明光を照射した状態で撮像装置により取得された第２の画像との差分から入力画像を生成するステップを含む。
【００１７】
好ましくは、中心位置を決定するステップは、同一の検出対象物について決定された複数の中心位置から当該検出対象物の中心軸を決定するステップを含む。
【００１８】
好ましくは、本方法は、決定した検出対象物の中心位置を出力するステップをさらに含む。
【００１９】
この発明の別の局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する装置を提供する。当該装置は、撮像装置と接続され、少なくとも１つの検出対象物を撮像した入力画像を取得するインターフェイスと、検出対象物の形状に相当する領域を入力画像から抽出する手段と、抽出された領域についての高さ情報を取得する手段と、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定する手段と、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定する手段とを含む。
【００２０】
この発明のさらに別の局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出するためのプログラムを提供する。当該プログラムは、コンピュータに、少なくとも１つの検出対象物を撮像した入力画像を取得するステップと、検出対象物の形状に相当する領域を入力画像から抽出するステップと、抽出された領域についての高さ情報を取得するステップと、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定するステップとを実行させる。
【発明の効果】
【００２１】
本発明によれば、複数の検出対象物が任意の方向を向いて配置されている場合であっても、それぞれの検出対象物の中心位置を算出することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態に係る画像処理装置を含む把持システムの全体構成を示す概略図である。
【図２】本発明の実施の形態に係る画像処理装置の概略構成図である。
【図３】本実施の形態に係る画像処理装置において実行される全体処理手順を示すフローチャートである。
【図４】本発明の実施の形態に係る前処理の処理例を示す図である。
【図５】本発明の実施の形態に係るシェーディング処理の処理例を示す図である。
【図６】本発明の実施の形態に係る三次元計測処理に用いられるパターンの一例を示す図である。
【図７】本発明の実施の形態に係る三次元計測処理の処理例を示す図である。
【図８】本実施の形態に係る法線算出処理の原理的な説明を行うための図である。
【図９】本実施の形態に係る画像処理装置において実行される法線算出処理のより詳細な手順を示すフローチャートである。
【図１０】本実施の形態に係る明るさが極大となる部分を抽出する処理の処理例を示す図である。
【図１１】本実施の形態に係る光線ベクトルの算出処理を説明するための図である。
【図１２】本実施の形態に係る法線算出処理を説明するための図である。
【図１３】本実施の形態に係る位置算出処理を説明するための図である。
【図１４】本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。
【発明を実施するための形態】
【００２３】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２４】
《Ａ．概要》
本実施の形態に係る画像処理方法は、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物（ワークＷ）の中心位置を算出する方法に向けられている。本実施の形態に係る画像処理方法においては、一種の面光源であるプロジェクタからワークＷに対して照明光（白色光）を投影し、撮像装置を用いて、当該照明光の投影によって生じる反射光を撮像する。この撮像によって得られた入力画像に対して、明るさが極大となる部分（輝度極大部分）の位置情報および高さ情報（すなわち、三次元座標系における座標値）から、ワークＷの円筒断面を考慮して、その円筒断面の半径および明るさが極大となる部分（輝度極大部分）の位置情報（三次元座標値）を用いて、ワークＷの中心位置を決定する。なお、ワークＷの反射特性に依存して、中心位置を算出する方法を異ならせることが好ましい。
【００２５】
このように、本実施の形態に係る画像処理方法は、二次元画像に対する画像処理の結果と、同一のワークＷを三次元計測することで高さ情報とを用いて、より少ない処理量でワークＷの中心位置を順次算出する。
【００２６】
《Ｂ．全体装置構成》
図１は、本発明の実施の形態に係る画像処理装置１００を含む把持システムＳＹＳの全体構成を示す概略図である。図１に例示される把持システムＳＹＳは、生産ラインなどに組み込まれ、トレーなどにばら積みされた検出対象物（ワークＷ）を１個ずつ把持するような処理を行う。なお、図１には、理解を容易にするため、トレー内に２つのワークＷのみが存在する場合を図示するが、多数のワークＷが重なった状態で配置されていてもよい。
【００２７】
ここで、ワークＷは、図示しない上流側の製造装置などから搬送されるため、そのトレー内での向きはランダムになっているものとする。そこで、把持システムＳＹＳ（主とし、画像処理装置１００）は、円筒または球を少なくとも一部に含む検出対象物（ワークＷ）の中心位置を算出し、この算出した中心位置を利用して把持動作を行う。ここで、ワークＷの寸法などは予め分かっているので、円筒部分の半径は既知であるものとする。
【００２８】
なお、以下の説明では、主として、円筒の中でも円柱形状を有するワークＷ（たとえば、ボルト）を想定して説明を行うが、Ｕ字型のパイプのような円筒形状のものや、球状のものであっても同様に適用できる。すなわち、本実施の形態に係る中心位置の算出方法は、円状の断面を有する物体について汎用的に適用可能である。
【００２９】
より具体的には、把持システムＳＹＳは、画像処理装置１００と、ロボットコントローラ２００と、ロボット３００とを含む。画像処理装置１００には、プロジェクタ（照明装置）７および撮像装置８が接続されている。
【００３０】
後述するように、プロジェクタ７は、一種の面光源として機能するとともに、画像処理装置１００からの指示に従って任意の濃淡パターンの照明光を所定位置（ワークＷを含むトレーが配置される位置）に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。
【００３１】
撮像装置８は、プロジェクタ７によって照射された照明光がワークＷの表面で反射した光を撮像する。そして、撮像装置８は、このワークＷからの反射光（ワークＷの像）を示す画像（以下、「入力画像」とも称す。）を出力する。
【００３２】
本実施の形態においては、プロジェクタ７と撮像装置８との間の相対的な位置姿勢関係は既知であるとする。すなわち、プロジェクタ７が照明光を照射する方向（第１の方向）およびその配置位置と、撮像装置８の視線方向（第２の方向）およびその配置位置とは、予め取得されている。なお、このようなプロジェクタ７と撮像装置８との間の相対的な位置姿勢関係は、キャリブレーション処理によって得られるキャリブレーションデータに反映される。このキャリブレーションデータの具体的な内容としては、プロジェクタ７と撮像装置８との三次元的な位置姿勢（三次元座標上の座標（ｘ，ｙ，ｚ）および角度（α，β，γ））やそれらの視野角など情報を含む。
【００３３】
より具体的には、プロジェクタ７は、主要なコンポーネントとして、ＬＥＤ（Light Emitting Diode）やハロゲンランプなどの光源と、プロジェクタ７の照射面の側に配置されたフィルタとを含む。プロジェクタ７に用いられる光源は、波長範囲が比較的広いものが好ましい。また、フィルタは、後述するような三次元計測に必要な濃淡パターンを発生させるものであり、画像処理装置１００などからの指令に従って、面内の透光率を任意に変化させることができる。
【００３４】
撮像装置８は、主要なコンポーネントとして、レンズなどの光学系と、ＣＣＤ（Coupled Charged Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサといった撮像素子とを含む。
【００３５】
画像処理装置１００は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム（命令コード）を実行することで、本実施の形態に係る画像処理機能を提供する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置１００にインストールされる。
【００３６】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００３７】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００３８】
図２は、本発明の実施の形態に係る画像処理装置１００の概略構成図である。図２を参照して、画像処理装置１００は、演算処理部であるＣＰＵ（Central Processing Unit）１１０と、記憶部としてのメインメモリ１１２およびハードディスク１１４と、カメラインターフェイス１１６と、入力インターフェイス１１８と、表示コントローラ１２０と、プロジェクタインターフェイス１２２と、通信インターフェイス１２４と、データリーダ／ライタ１２６とを含む。これらの各部は、バス１２８を介して、互いにデータ通信可能に接続される。
【００３９】
ＣＰＵ１１０は、ハードディスク１１４にインストールされたプログラム（コード）をメインメモリ１１２に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１１４から読み出されたプログラムに加えて、撮像装置８によって取得された入力画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク１１４には、各種設定値などが格納されてもよい。なお、ハードディスク１１４に加えて、あるいは、ハードディスク１１４に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００４０】
カメラインターフェイス１１６は、ＣＰＵ１１０と撮像装置８との間のデータ伝送を仲介する。すなわち、カメラインターフェイス１１６は、ワークＷを撮像して入力画像を生成するための撮像装置８と接続される。より具体的には、カメラインターフェイス１１６は、１つ以上の撮像装置８と接続が可能であり、撮像装置８からの入力画像を一時的に蓄積するための画像バッファ１１６ａを含む。そして、カメラインターフェイス１１６は、画像バッファ１１６ａに所定コマ数の入力画像が蓄積されると、その蓄積された入力画像をメインメモリ１１２へ転送する。また、カメラインターフェイス１１６は、ＣＰＵ１１０が発生した内部コマンドに従って、撮像装置８に対して撮像コマンドを与える。
【００４１】
入力インターフェイス１１８は、ＣＰＵ１１０とマウス１０４、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス１１８は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【００４２】
表示コントローラ１２０は、表示装置の典型例であるディスプレイ１０２と接続され、ＣＰＵ１１０における処理結果などをユーザに通知する。すなわち、表示コントローラ１２０は、ディスプレイ１０２に接続され、当該ディスプレイ１０２での表示を制御する。
【００４３】
プロジェクタインターフェイス１２２は、ＣＰＵ１１０とプロジェクタ７との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェイス１２２は、ＣＰＵ１１０が発生した内部コマンドに従って、プロジェクタ７に対して照明コマンドを与える。
【００４４】
通信インターフェイス１２４は、ＣＰＵ１１０とコンソール（あるいは、パーソナルコンピュータやサーバ装置）などとの間のデータ伝送を仲介する。通信インターフェイス１２４は、典型的には、イーサネット（登録商標）やＵＳＢ（Universal Serial Bus）などからなる。
【００４５】
データリーダ／ライタ１２６は、ＣＰＵ１１０と記録媒体であるメモリカード１０６との間のデータ伝送を仲介する。すなわち、メモリカード１０６には、画像処理装置１００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１２６は、このメモリカード１０６からプログラムを読出す。また、データリーダ／ライタ１２６は、ＣＰＵ１１０の内部指令に応答して、撮像装置８によって取得された入力画像および／または画像処理装置１００における処理結果などをメモリカード１０６へ書込む。なお、メモリカード１０６は、ＣＦ（Compact Flash）、ＳＤ（Secure Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体等からなる。
【００４６】
また、画像処理装置１００には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【００４７】
再度図１を参照して、ロボット３００は、ワークＷを把持するためのハンド機構と、当該ハンド機構を任意の位置および方向に位置決めするための関節機構とを含む。ロボット３００は、ロボットコントローラ２００によってその動作が制御される。
【００４８】
ロボットコントローラ２００は、画像処理装置１００によって算出されたワークＷの中心位置（中心軸）を示す情報に基づいて、ワークＷの位置や姿勢を認識するとともに、当該認識された各ワークＷの位置や姿勢に基づいて、ロボット３００のハンド機構を適切な位置および方向に位置決めするための指令を生成し、ロボット３００へ出力する。この指令に応答して、ロボット３００は、ワークＷの把持動作を開始する。
【００４９】
《Ｃ．全体処理》
図３は、本実施の形態に係る画像処理装置１００において実行される全体処理手順を示すフローチャートである。図３に示す各ステップは、基本的には、画像処理装置１００のＣＰＵ１１０によって実行される。
【００５０】
図３を参照して、画像処理装置１００のＣＰＵ１１０は、前処理を実行する（ステップＳ１）。この前処理は、ばら積み状態の少なくとも１つのワークＷを撮像した入力画像を取得する処理を含む。この入力画像の取得方法の典型例としては、図１に示すような撮像装置８を用いて撮像された画像を画像処理装置１００に入力する方法が挙げられる。但し、撮像装置８を用いて撮像して得られた入力画像を蓄積しておき、事後的に画像処理装置１００に入力するような形態であってもよい。このような処理方法は、ワークＷに対する把持動作に異常があった場合などの原因究明に利用されるようなときに好適である。
【００５１】
さらに、本実施の形態においては、ワークＷの周囲からの外乱光の影響を排除するために、シェーディング画像が生成される。このシェーディング画像は、プロジェクタ７から照明光を照射した状態（環境光＋照明光）で撮像して得られる画像と、プロジェクタ７から照明光を照射していない状態（環境光のみ）で撮像して得られる画像との差分によって生成される。言い換えれば、ステップＳ１に示す前処理は、少なくとも１つのワークＷに対して照明光を照射しない状態で撮像装置８により取得された画像と、当該少なくとも１つのワークＷに対して照明光を照射した状態で撮像装置８により取得された画像との差分から入力画像を生成する処理を含む。このシェーディング画像生成処理の詳細については、後述する。
【００５２】
前処理の実行後、画像処理装置１００のＣＰＵ１１０は、セグメンテーション処理を実行する（ステップＳ２）。このセグメンテーション処理は、入力画像に含まれるワークＷの位置を特定するための処理である。すなわち、セグメンテーション処理は、ワークＷの形状に相当する領域を入力画像から抽出する処理を含む。このワークＷの形状に相当する領域を便宜上「円筒領域」とも称す。このセグメンテーション処理の詳細については、後述する。
【００５３】
セグメンテーション処理の実行後、画像処理装置１００のＣＰＵ１１０は、三次元計測処理を実行する（ステップＳ３）。この三次元計測処理は、ステップＳ２において抽出された円筒領域についての高さ情報を取得する処理である。このような三次元計測処理の一例として、本実施の形態においては位相シフト法を採用する。位相シフト法を採用することで、上述のステップＳ１の前処理に必要なプロジェクタ（照明装置）７および撮像装置８を利用して、高さ情報を取得できるので、装置が簡素化できるという利点がある。
【００５４】
もちろん、円筒領域についての高さ情報を取得できれば、どのような三次元計測処理を採用してもよい。たとえば、位相シフト法に代えて、空間コード法などを採用することもできる。さらに、画像処理装置１００とは別の計測装置を用いて、ワークＷの三次元位置情報などを取得し、この取得された三次元位置情報を画像処理装置１００に入力するようにしてもよい。この三次元計測処理（位相シフト法）の詳細については、後述する。
【００５５】
三次元計測処理の実行後、画像処理装置１００のＣＰＵ１１０は、法線算出処理を実行する（ステップＳ４）。この法線算出処理は、ステップＳ２において抽出された円筒領域内において明るさ（典型的には、輝度）が極大となる部分を特定し、ワークＷにおける当該部分の法線方向を決定する処理である。このステップＳ４において決定される法線は、三次元空間におけるベクトル量として算出される。
【００５６】
特に、本実施の形態に係る画像処理装置１００においては、ワークＷの表面における反射特性を利用して法線を算出する。より具体的には、ステップＳ４の法線算出処理は、ワークＷの光学反射特性（鏡面反射／拡散反射）に依存して、法線方向の決定方法を異ならせる。この法線方向の決定方法の詳細については、後述する。
【００５７】
法線方向の決定後、画像処理装置１００のＣＰＵ１１０は、位置算出処理を実行する（ステップＳ５）。この位置算出処理は、ステップＳ４において決定した法線方向と、既知のワークＷの半径と、明るさが極大となる部分の位置と、対応する高さ情報（ステップＳ３において取得）とから、ワークＷの中心位置を決定する処理を含む。ワークＷの形状に依存して、このステップＳ５においては、同一のワークＷについて決定された複数の中心位置から当該ワークＷの中心軸を決定する処理を含む。すなわち、法線と半径情報とを利用して、円筒状のワークＷの中心軸が算出される。なお、ワークＷが球である場合には、基本的には、一つの中心位置（中心点）のみが算出されるので、中心軸は算出されない。
【００５８】
位置算出処理の実行後、画像処理装置１００のＣＰＵ１１０は、出力処理を実行する（ステップＳ６）。この出力処理は、ステップＳ５において決定されたワークＷの中心位置の情報をロボットコントローラ２００（図２）などへ出力する処理である。この出力される中心位置の情報は、三次元空間上の座標値やベクトルを示す値を含む。なお、画像処理装置１００が三次元計測によって取得する座標系と、ロボット３００の処理において利用される座標系とは一致していない場合も多いので、ロボット３００が扱う三次元空間上の座標値に変換して出力することが好ましい。また、複数のワークＷがばら積みされているような状況では、複数のワークＷについて中心位置の情報が取得された場合には、それぞれのワークＷを識別するための情報とともに、対応する中心位置の情報を出力するようにしてもよい。あるいは、最上部に位置する、すなわち算出された中心位置が最も確からしいワークＷについての情報のみを出力してもよい。図１に示すような把持システムＳＹＳでは、このワークＷの中心位置の情報が出力されることに伴って、ロボット３００が最上部のワークＷを把持するので、当該ワークＷが取り除かれた状態で再度計測処理を実行するようにしてもよい。
【００５９】
なお、図３に示すフローチャートにおいて、ステップＳ２のセグメンテーション処理と、ステップＳ３の三次元計測処理とを並列的に実行するようにしてもよい。
【００６０】
《Ｄ．前処理》
まず、図３に示す前処理（ステップＳ１）の詳細について説明する。上述したように、前処理は、環境光から撮像装置８に入射する光の影響を取り除き、プロジェクタ７からの照明光がワークＷで反射して生じる光（反射光）のみを観測するための処理である。このような環境光の影響を取り除くため、プロジェクタ７から照明光を照射していない状態で取得される画像と、プロジェクタ７から照明光を照射している状態で取得される画像との差分から差分画像（シェーディング画像）が生成される。
【００６１】
図４は、本発明の実施の形態に係る前処理の処理例を示す図である。図４を参照して、本実施の形態に係る画像処理方法においては、ワークＷの周囲からの外乱光（環境光）の影響を排除するために、（ｃ）シェーディング画像が生成される。より具体的には、プロジェクタ７から白色パターンを照明光として照射した状態で撮像される画像（図４に示す（ａ）白色パターン投影＋環境光画像）が取得される。白色パターンとは、照射面内における濃淡が均一とみなせるようなパターンを意味し、その照射面内におけるスペクトルの範囲や長さについて特に限定されるものではない。したがって、その照射面内が赤色や青色の光で均一化されているようなパターンを用いてもよい。
【００６２】
また、プロジェクタ７から照明光も照射していない状態で撮像される画像（図４に示す（ｂ）環境光画像）が取得される。
【００６３】
そして、これらの画像間の差分が計算されることで、シェーディング画像が生成される。この画像間の差分の計算とは、両画像の間で対応する画素についての色情報（たとえば、Ｒ，Ｇ，Ｂの各濃淡値）を減算するような処理を含む。
【００６４】
このような前処理については、特に、太陽光などの時間的に変化する環境光が撮像装置８の視野に入射しているような状況で有効である。言い換えれば、環境光が安定しており、プロジェクタ７が照射する照明光に対して相対的に小さいものであれば、このような前処理を省略してもよい。この場合には、図４に示す（ａ）白色パターン投影＋環境光画像のみで以降の処理を行ってもよい。
【００６５】
《Ｅ．セグメンテーション処理》
次に、図３に示すセグメンテーション処理（ステップＳ２）の詳細について説明する。上述したように、セグメンテーション処理は、入力画像に含まれるワークＷ（の一部）を示す領域（円筒領域）を抽出するための処理である。なお、入力画像としては、上述したような処理によって得られるシェーディング画像が用いられる。
【００６６】
このようなセグメンテーション処理としては、入力されたシェーディング画像（入力画像）を所定の規則で分割することで、円筒領域が抽出される。このような円筒領域の抽出方法としては、公知の各種の方法を採用することができる。シンプルな方法としては、入力画像内で明るさ（輝度または明度）がほぼ同様の値をもつ領域を特定する方法などが挙げられる。
【００６７】
本実施の形態においては、このようなセグメンテーション処理の一例として、"Normalized Cuts"法を採用する。この"Normalized Cuts"法の詳細については、「Jianbo Shi and Jitendra Malik, "Normalized Cuts and Image Segmentation", IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 22, No. 8, August 2000」などを参照されたい。
【００６８】
図５は、本発明の実施の形態に係るシェーディング処理の処理例を示す図である。図５に示す（ａ）入力画像に対して、上述の"Normalized Cuts"法を適用することで、（ｂ）セグメンテーション結果のような結果画像が生成される。このようなセグメンテーション結果に対して、ワークＷの形状に応じた条件を適用して、領域を抽出すると、（ｃ）円筒領域抽出結果のような結果画像が生成される。基本的には、この抽出された円筒領域について、後続の処理が実行される。この抽出された円筒領域は、入力画像上の二次元座標系における座標値を用いて、その範囲が特定される。
【００６９】
《Ｆ．三次元計測処理》
次に、図３に示す三次元計測処理（ステップＳ３）の詳細について説明する。上述したように、三次元計測処理は、セグメンテーション処理によって抽出された円筒領域についての高さ情報を取得するための処理である。
【００７０】
このような高さ情報を取得する処理としては、公知の三次元計測処理を用いて、ばら積み状態のワークＷの各部についての三次元座標値が算出される。上述したように、本実施の形態においては、三次元計測処理の具体例として位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像（正弦波投影画像）を用いる方法である。
【００７１】
より具体的には、照射面内の濃淡の変化周期や位相を異ならせたパターンを複数用意し、それぞれのパターンを照射したときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、これらの正弦波投影画像間における対応する部分の明るさ（輝度や明度）の変化に基づいて、各部分の高さ情報（三次元座標値）が算出される。
【００７２】
図６は、本発明の実施の形態に係る三次元計測処理に用いられるパターンの一例を示す図である。図７は、本発明の実施の形態に係る三次元計測処理の処理例を示す図である。
【００７３】
図６（ａ）〜（ｄ）に示すように、位相シフト法では、照射面内における濃淡パターンをその変化周期や位相を異ならせた複数のパターンが用いられる。このように異なる複数の濃淡パターンを用いることで、計測レンジを広げつつ計測対象物の三次元計測を行うことができる。
【００７４】
このような位相シフト法によって、図７の（ａ）正弦波投影画像群から（ｂ）高さ画像を生成することができる。なお、図７には、理解を容易化するために、高さ情報を色情報（濃淡変化）で示した高さ画像を例示するが、位相シフト法においては、各部の高さ情報を含む三次元座標値が取得されることになる。
【００７５】
このように、本実施の形態に従う三次元計測処理においては、ワークＷに対して、プロジェクタ７が所定方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置８によりそれぞれ撮像された複数の画像を用いて高さ情報が取得される。
【００７６】
《Ｇ．法線算出処理》
次に、図３に示す法線算出処理（ステップＳ４）の詳細について説明する。上述したように、法線算出処理は、ワークＷの表面に対する法線（法線ベクトル）を算出する処理である。
【００７７】
本実施の形態に係る画像処理方法においては、法線とワークＷの半径との関係から、ワークＷの中心位置を算出することで、より高速な処理を実現できる。さらに、より計測精度を高める観点から、後述するように、ワークＷの光学反射特性（鏡面反射／拡散反射）に依存して、法線方向の決定方法を異ならせることも可能である。
【００７８】
以下、法線を算出する基本的な処理手順に加えて、このようなワークＷの光学反射特性に依存して法線方向の決定方法を異ならせる処理についても説明する。
【００７９】
（ｇ１：法線算出原理）
まず、本実施の形態に係る画像処理方法において法線を算出するための原理的な説明を行う。
【００８０】
図８は、本実施の形態に係る法線算出処理の原理的な説明を行うための図である。図８には、ワークＷの表面が鏡面反射特性を有する場合と、拡散反射特性を有する場合とに区別して例示している。
【００８１】
（ｉ）鏡面反射特性を有する場合
まず、ワークＷの表面が鏡面反射特性を有する場合について説明する。ワークＷが鏡面反射特性を有する場合には、ワークＷの表面に入射した光は、その入射した位置の法線に対して定義される角度（入射角）と同じ角度で反射することになる。そのため、ワークＷの表面のある位置を基準に見れば、プロジェクタ７からの照明光は、その入射角と同じ角度をもつ方向に大部分が反射されることになる。
【００８２】
また、撮像装置８に入射する光を示す入力画像内において最も明るい位置は、プロジェクタ７からの照明光が入射したワークＷの表面位置に相当する。すなわち、図８に示す入力画像内の最大輝度の観測位置は、撮像装置８によって撮像される入力画像の輝度情報に基づいて取得することができる。そして、図８に示す入力画像内の最大輝度の観測位置を示す三次元座標値についても、上述の三次元計測処理などの結果から取得できる。
【００８３】
プロジェクタ７と撮像装置８との間の相対的な位置姿勢関係は既知であるので、プロジェクタ７と図８に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル（以下、「光源ベクトルｌ」とも称す。）と、撮像装置８と図８に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル（以下、「視線ベクトルｖ」とも称す。）とを算出することができる。
【００８４】
このように算出された光源ベクトルｌと視線ベクトルｖとの二等分角が法線方向（法線ベクトルｎ）となる。
【００８５】
すなわち、図３に示す法線算出処理（ステップＳ４）においては、ワークＷの表面が鏡面反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源（プロジェクタ７）に向けて延びる光源ベクトルｌ（第１のベクトル）と、当該三次元座標点を通り、かつ、撮像装置８の方向に延びる視線ベクトルｖとの、二等分角に相当するベクトルが法線ベクトルｎとして算出される。
【００８６】
（ｉｉ）拡散反射特性を有する場合
次に、ワークＷの表面が拡散反射特性を有する場合について説明する。ワークＷが拡散反射特性を有する場合には、ワークＷの表面に入射した光は、基本的には全方位に拡散反射する。そのため、ワークＷの表面のある位置を基準に見れば、プロジェクタ７からの照明光は、当該位置の法線方向に最も多く反射されることになる。
【００８７】
また、撮像装置８に入射する光を示す入力画像内において最も明るい位置は、プロジェクタ７からの照明光が入射したワークＷの表面位置に相当する。すなわち、図８に示す入力画像内の最大輝度の観測位置は、撮像装置８によって撮像される入力画像の輝度情報に基づいて取得することができる。そして、図８に示す入力画像内の最大輝度の観測位置を示す三次元座標値についても、上述の三次元計測処理などの結果から取得できる。
【００８８】
プロジェクタ７と撮像装置８との間の相対的な位置姿勢関係は既知であるので、プロジェクタ７と図８に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル（光源ベクトルｌ）を算出すれば、この算出された光源ベクトルｌが法線方向（法線ベクトルｎ）と一致する。
【００８９】
すなわち、図３に示す法線算出処理（ステップＳ４）においては、ワークＷの表面が拡散反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源（プロジェクタ７）に向けて延びる光源ベクトルｌが法線ベクトルｎとして算出される。
【００９０】
なお、ワークＷが円筒形状である場合には、プロジェクタ７からの照明光は複数の位置に入射するので、「入力画像内において最も明るい位置」は複数検出されることになる。したがって、上述のいずれの場合にも、ワークＷが円筒形状を有する場合には、複数の法線ベクトルｎが算出される。
【００９１】
（ｇ２：法線算出処理フロー）
図９は、本実施の形態に係る画像処理装置１００において実行される法線算出処理のより詳細な手順を示すフローチャートである。図９に示す処理手順は、図３に示すステップＳ３の処理内容をより詳細に示すものである。
【００９２】
図９を参照して、画像処理装置１００のＣＰＵ１１０は、入力画像内において明るさが極大となる部分の抽出処理を実行する（ステップＳ４１）。明るさが極大となる部分の抽出処理は、入力画像に対する画像処理によって実現される。この画像処理の内容については、後述する。このステップＳ４１の処理によって、入力画像内において輝度が極大となる部分（以下、「輝度極大部分」とも称す。）が抽出される。
【００９３】
続いて、画像処理装置１００のＣＰＵ１１０は、対象のワークＷの反射特性を取得する（ステップＳ４２）。ワークＷの反射特性は、予めユーザが入力しておいてもよいし、画像処理装置１００に対して外部の装置（工程管理サーバなど）からワークＷについての情報として入力されてもよい。
【００９４】
続いて、画像処理装置１００のＣＰＵ１１０は、光線ベクトル（図８に示す視線ベクトルｖおよび光源ベクトルｌの総称）の算出処理を実行する（ステップＳ４３）。この光線ベクトルの算出処理は、三次元座標系において実行される三次元処理である。このステップＳ４２においては、画像処理装置１００のＣＰＵ１１０は、ステップＳ４１において抽出された輝度極大部分に対応する光線ベクトル（視線ベクトルｖおよび光源ベクトルｌ）を算出する。なお、算出される光線ベクトルの種類は、ステップＳ４２において入力されるワークＷの反射特性に依存して変化する。この光線ベクトルの算出処理の詳細については、後述する。
【００９５】
最終的に、画像処理装置１００のＣＰＵ１１０は、法線算出処理を実行する（ステップＳ４４）。この法線算出処理では、反射特性に応じて法線の算出処理が実行される。
【００９６】
以上のように、法線（法線ベクトルｎ）が算出されると、図３に示すステップＳ５の処理が引き続いて実行される。
【００９７】
（ｇ３：明るさが極大となる部分の抽出）
次に、図９に示すステップＳ４１の処理（明るさが極大となる部分を抽出する処理）の詳細について説明する。図９に示すステップＳ４１においては、セグメンテーション処理（図３のステップＳ２）によって抽出された円筒領域について、輝度極大部分が抽出される。ステップＳ４１の処理においては、基本的には、円筒領域のうち最も明るい画素とその周辺領域とが輝度極大部分として抽出される。
【００９８】
図１０は、本実施の形態に係る明るさが極大となる部分を抽出する処理の処理例を示す図である。図１０を参照して、まず、セグメンテーション結果に含まれる円筒領域のうち輝度極大部分を抽出する対象が決定される。なお、複数の円筒領域のそれぞれから輝度極大部分を抽出する場合には、以下に説明するような手順をそれぞれの円筒領域に対して実施することになる。
【００９９】
より具体的には、以下の手順（１）〜（６）が対象の円筒領域の数だけ繰返し実行される。
【０１００】
（１）セグメンテーション結果に含まれる円筒領域のうち輝度極大部分を抽出する対象の円筒領域の決定
（２）円筒領域を定義する辺の長さの比から走査方向の決定
（３）入力画像を各走査方向に操作して輝度プロファイルの取得
（４）輝度プロファイルおいてある閾値より輝度が大きい領域（極大値とその周辺領域）の座標値の抽出および記録
（５）（３）および（４）の処理をすべての円筒領域に対して繰返し実行
（６）それぞれの輝度プロファイルにおける極大部分の座標値を統合して、円筒領域内の輝度極大部分の抽出
図１０には、（ａ）セグメンテーション結果に含まれる一つの円筒領域に対して走査方向が決定され、その走査方向に沿って取得された円筒領域の輝度変化を示す（（ｂ）円筒領域の輝度変化）。なお、図１０には、理解を容易化するために、円筒領域内の輝度の絶対値を色情報（濃淡変化）で示した高さ画像を例示するが、実際には、輝度の大きさの値および極大値をとる座標値などの情報が抽出される。
【０１０１】
（ｇ４：光線ベクトルの算出処理）
次に、図９に示すステップＳ４３に示す光線ベクトルの算出処理の詳細について説明する。図９に示すステップＳ４３においては、まず、ステップＳ４１の処理において抽出された輝度極大部分の座標値（ｘ，ｙ，ｚ）を基準として、三次元空間上における光線ベクトルを計算（視線ベクトルｖおよび光源ベクトルｌ）が算出される。
【０１０２】
図１１は、本実施の形態に係る光線ベクトルの算出処理を説明するための図である。図１１（ａ）を参照して、入力画像上の輝度極大部分の座標値（ｘ，ｙ，ｚ）と、撮像装置８の座標値（ｘｃ，ｙｃ，ｚｃ）とから視線ベクトルｖが算出される。この算出処理は、予め取得されているキャリブレーションデータを利用して実行される。
【０１０３】
すなわち、視線ベクトルｖ（ｖ１，ｖ２，ｖ３）は、以下のような式に従って算出される。
【０１０４】
視線ベクトルｖ（ｖ１，ｖ２，ｖ３）＝（ｘ−ｘｃ，ｙ−ｙｃ，ｚ−ｚｃ）
続いて、図１１（ｂ）を参照して、入力画像上の輝度極大部分の座標値（ｘ，ｙ，ｚ）と、プロジェクタ７の座標値（ｘｐ，ｙｐ，ｚｐ）とから光源ベクトルｌが算出される。この算出処理は、予め取得されているキャリブレーションデータを利用して実行される。
【０１０５】
すなわち、光源ベクトルｌ（ｌ１，ｌ２，ｌ３）は、以下のような式に従って算出される。
【０１０６】
光源ベクトルｌ（ｌ１，ｌ２，ｌ３）＝（ｘ−ｘｐ，ｙ−ｙｐ，ｚ−ｚｐ）
なお、視線ベクトルｖおよび光源ベクトルｌについては、後述の法線ベクトルｎの算出処理における便宜上、規格化しておくことが好ましい。
【０１０７】
（ｇ５：法線算出処理）
次に、図９に示すステップＳ４４に示す法線算出処理の詳細について説明する。図９に示すステップＳ４４においては、ワークＷの表面における反射特性に依存して法線方向（法線ベクトルｎ）の算出方法を異ならせる。
【０１０８】
図１２は、本実施の形態に係る法線算出処理を説明するための図である。図１２（ａ）には、ワークＷの表面が鏡面反射特性を有する場合の処理例を示し、図１２（ｂ）には、ワークＷの表面が拡散反射特性を有する場合の処理例を示す。
【０１０９】
図１２（ａ）を参照して、ワークＷの表面が鏡面反射特性を有する場合には、明るさが極大となる部分（輝度極大部分）では正反射光が生じることになる。したがって、上述したように、ワークＷの表面における法線ベクトルｎは、視線ベクトルｖおよび光源ベクトルｌを用いて、以下のような式に従って算出される。
【０１１０】
法線ベクトルｎ＝（視線ベクトルｖ＋光源ベクトルｌ）／２
一方、図１２（ｂ）を参照して、ワークＷの表面が拡散反射特性を有する場合には、明るさが極大となる部分（輝度極大部分）では拡散反射光が生じることになる。したがって、上述したように、ワークＷの表面における法線ベクトルｎは、光源ベクトルｌと一致するため、以下のような式に従って算出される。
【０１１１】
法線ベクトルｎ＝光源ベクトルｌ
以上のような処理によって、１つ以上の法線ベクトルｎが算出される。
【０１１２】
《Ｈ．位置算出処理》
次に、図３に示す位置算出処理（ステップＳ５）の詳細について説明する。上述したように、位置算出処理は、ワークＷの位置姿勢を算出するための処理である。本実施の形態においては、ワークＷの半径情報（半径）が既知であるので、上述した処理によって算出された法線（法線ベクトル）と、対応する輝度極大部分の三次元座標点とから、ワークＷの円筒部分の中心位置（中心軸）が算出される。
【０１１３】
図１３は、本実施の形態に係る位置算出処理を説明するための図である。
図１３（ａ）に示すように、輝度極大部分の三次元座標点（ｘ，ｙ，ｚ）および対応する法線ベクトルｎが算出されており、ワークＷの円筒断面における半径情報（半径ｒ）が既知であるので、幾何学的関係から、ワークＷの中心位置を一意に特定することができる。
【０１１４】
さらに、図１３（ｂ）に示すように、同一のワークＷに対して、複数の輝度極大部分および対応する法線ベクトルｎ１，ｎ２，ｎ３，・・・が算出されるのでそれぞれの組み合わせについて、ワークＷの中心位置が算出できる。さらに、ワークＷから抽出された複数の中心位置を用いて、ワークＷの円筒部分の中心軸を決定することができる。なお、この中心軸の決定方法としては、公知のフィッティング方法を採用することができる。
【０１１５】
《Ｉ．計測例》
図１４は、本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。図１４に示す認識結果は、複数のワークＷ（図４に示すような多数のボルト）がばら積みされている状態を撮像した入力画像から得られたものである。なお、図１４に示す線は、上述した処理によって算出されたワークＷの中心軸を示し、その周辺に描かれている円は、対応する法線ベクトルを算出する際に決定されたワークＷの半径位置（外形）を示す。
【０１１６】
このように、本実施の形態に係る画像処理方法によれば、比較的短時間で、任意の方向に配置されているワークＷの位置およびその中心軸を決定することができる。
【０１１７】
《Ｊ．変形例》
上述した例では、主として、円筒形状のワークＷに本発明に係る画像処理方法を適用した場合の処理例を示したが、上述したように球状のワークＷについても同様に適用することができる。この場合には、原理的には、ワークＷの中心位置は一つであるので、一つのワークＷからは一つの法線ベクトルのみを抽出さればよい。
【０１１８】
《Ｋ．利点》
本実施の形態に係る画像処理装置によれば、二次元画像に対する画像処理の結果と、同一のワークＷを三次元計測することで高さ情報とを用いて、より少ない処理量でワークＷの中心位置を算出することができる。
【０１１９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２０】
７  プロジェクタ
８  撮像装置
１００  画像処理装置
１０２  ディスプレイ
１０４  マウス
１０６  メモリカード
１１０  ＣＰＵ
１１２  メインメモリ
１１４  ハードディスク
１１６  カメラインターフェイス
１１６ａ  画像バッファ
１１８  入力インターフェイス
１２０  表示コントローラ
１２２  プロジェクタインターフェイス
１２４  通信インターフェイス
１２６  データリーダ／ライタ
１２８  バス
２００  ロボットコントローラ
３００  ロボット
ＳＹＳ  把持システム
Ｗ  ワーク
【図１】
0005757156.tif 000002
【図２】
0005757156.tif 000003
【図３】
0005757156.tif 000004
【図８】
0005757156.tif 000005
【図９】
0005757156.tif 000006
【図１１】
0005757156.tif 000007
【図１２】
0005757156.tif 000008
【図１３】
0005757156.tif 000009
【図１４】
0005757156.tif 000010
【図４】
0005757156.tif 000011
【図５】
0005757156.tif 000012
【図６】
0005757156.tif 000013
【図７】
0005757156.tif 000014
【図１０】
0005757156.tif 000015