"既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する方法であって、少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、前記検出対象物の形状に相当する領域を前記入力画像から抽出するステップと、前記抽出された領域についての高さ情報を取得するステップと、前記抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、前記決定した法線方向と、前記既知の半径と、前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の中心位置を決定するステップとを備える、方法。前記法線方向を決定するステップは、前記検出対象物の光学反射特性に依存して、法線方向の決定方法を異ならせる、請求項1に記載の方法。前記入力画像は、前記少なくとも1つの検出対象物に対して第1の方向から照明光を照射した状態で、前記第1の方向とは異なる第2の方向に視線を向けて配置された撮像装置を用いて撮像することで取得される、請求項2に記載の方法。前記法線方向を決定するステップは、前記検出対象物の表面が鏡面反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第1のベクトルと、当該三次元座標点を通り、かつ、前記撮像装置の方向に延びる第2のベクトルとの、二等分角に相当するベクトルを法線ベクトルとして算出するステップを含む、請求項3に記載の方法。前記法線方向を決定するステップは、前記検出対象物の表面が拡散反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出するステップを含む、請求項3に記載の方法。前記高さ情報を取得するステップは、前記少なくとも1つの検出対象物に対して、前記第1の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記高さ情報を取得する、請求項3に記載の方法。前記入力画像を取得するステップは、前記少なくとも1つの検出対象物に対して第1の方向から照明光を照射しない状態で前記撮像装置により取得された第1の画像と、前記少なくとも1つの検出対象物に対して第1の方向から照明光を照射した状態で前記撮像装置により取得された第2の画像との差分から前記入力画像を生成するステップを含む、請求項3に記載の方法。前記中心位置を決定するステップは、同一の前記検出対象物について決定された複数の中心位置から当該検出対象物の中心軸を決定するステップを含む、請求項1に記載の方法。前記決定した前記検出対象物の中心位置を出力するステップをさらに備える、請求項1に記載の方法。既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する装置であって、撮像装置と接続され、少なくとも1つの前記検出対象物を撮像した入力画像を取得するインターフェイスと、前記検出対象物の形状に相当する領域を前記入力画像から抽出する手段と、前記抽出された領域についての高さ情報を取得する手段と、前記抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定する手段と、前記決定した法線方向と、前記既知の半径と、前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の中心位置を決定する手段とを備える、装置。既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出するためのプログラムであって、当該プログラムは、コンピュータに、少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、前記検出対象物の形状に相当する領域を前記入力画像から抽出するステップと、前記抽出された領域についての高さ情報を取得するステップと、前記抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、前記決定した法線方向と、前記既知の半径と、前記明るさが極大となる部分の位置と、対応する高さ情報とから、前記検出対象物の中心位置を決定するステップとを実行させる、プログラム。しかしながら、複数のワークがトレーなどに入れられた状態すなわち、ばら積みされている状態において、ロボットなどを用いて当該トレーから各ワークを把持するような処理には、上述したような従来技術をそのまま適用しても所望の結果を得ることはできなかった。すなわち、特許文献1に開示される手法では、円フィッティングを用いて円筒中心と径とを算出するため、所定の面積を有する点の群が必要である。そのため、その表面が拡散反射するような円筒状のワークには適用できるが、光沢のある表面特性を有する鏡面反射する円筒状のワークでは十分な数の計測点を取得することが難しい。そのため、その表面が拡散反射面および鏡面反射面の一方には特定されないワークに対して、特許文献1の記載の発明を汎用的に適用することはできない。また、特許文献2に開示される手法では、十分な数の計測点を取得するために、角度を異ならせて複数回の撮像光切断が必要である。そのため、一つのワークについての計測時間が比較的長くなり、実用的な時間で多数のワークを処理することができない。また、ワークについての計測点を十分な数だけ取得するためには、ワークの方向円筒方向がある程度既知である必要があり、上述のようなばら積み状態のワークに対しては適用することができない。そこで、本発明の目的は、複数の検出対象物が任意の方向を向いて配置されている場合であっても、それぞれの検出対象物の中心位置を算出することができる方法、装置およびプログラムを提供することである。本発明のある局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する方法を提供する。当該方法は、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、検出対象物の形状に相当する領域を入力画像から抽出するステップと、抽出された領域についての高さ情報を取得するステップと、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定するステップとを含む。好ましくは、法線方向を決定するステップは、検出対象物の光学反射特性に依存して、法線方向の決定方法を異ならせる。さらに好ましくは、入力画像は、少なくとも1つの検出対象物に対して第1の方向から照明光を照射した状態で、第1の方向とは異なる第2の方向に視線を向けて配置された撮像装置を用いて撮像することで取得される。さらに好ましくは、法線方向を決定するステップは、検出対象物の表面が鏡面反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びる第1のベクトルと、当該三次元座標点を通り、かつ、撮像装置の方向に延びる第2のベクトルとの、二等分角に相当するベクトルを法線ベクトルとして算出するステップを含む。あるいはさらに好ましくは、法線方向を決定するステップは、検出対象物の表面が拡散反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源に向けて延びるベクトルを法線ベクトルとして算出するステップを含む。あるいはさらに好ましくは、高さ情報を取得するステップは、少なくとも1つの検出対象物に対して、第1の方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置によりそれぞれ撮像された複数の画像を用いて、高さ情報を取得する。あるいはさらに好ましくは、入力画像を取得するステップは、少なくとも1つの検出対象物に対して第1の方向から照明光を照射しない状態で撮像装置により取得された第1の画像と、少なくとも1つの検出対象物に対して第1の方向から照明光を照射した状態で撮像装置により取得された第2の画像との差分から入力画像を生成するステップを含む。好ましくは、中心位置を決定するステップは、同一の検出対象物について決定された複数の中心位置から当該検出対象物の中心軸を決定するステップを含む。好ましくは、本方法は、決定した検出対象物の中心位置を出力するステップをさらに含む。この発明の別の局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出する装置を提供する。当該装置は、撮像装置と接続され、少なくとも1つの検出対象物を撮像した入力画像を取得するインターフェイスと、検出対象物の形状に相当する領域を入力画像から抽出する手段と、抽出された領域についての高さ情報を取得する手段と、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定する手段と、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定する手段とを含む。この発明のさらに別の局面に従えば、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物の中心位置を算出するためのプログラムを提供する。当該プログラムは、コンピュータに、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、検出対象物の形状に相当する領域を入力画像から抽出するステップと、抽出された領域についての高さ情報を取得するステップと、抽出された領域内において明るさが極大となる部分を特定し、当該部分の法線方向を決定するステップと、決定した法線方向と、既知の半径と、明るさが極大となる部分の位置と、対応する高さ情報とから、検出対象物の中心位置を決定するステップとを実行させる。本発明によれば、複数の検出対象物が任意の方向を向いて配置されている場合であっても、それぞれの検出対象物の中心位置を算出することができる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。《A.概要》本実施の形態に係る画像処理方法は、既知の半径を有する円筒または球を少なくとも一部に含む検出対象物ワークWの中心位置を算出する方法に向けられている。本実施の形態に係る画像処理方法においては、一種の面光源であるプロジェクタからワークWに対して照明光白色光を投影し、撮像装置を用いて、当該照明光の投影によって生じる反射光を撮像する。この撮像によって得られた入力画像に対して、明るさが極大となる部分輝度極大部分の位置情報および高さ情報すなわち、三次元座標系における座標値から、ワークWの円筒断面を考慮して、その円筒断面の半径および明るさが極大となる部分輝度極大部分の位置情報三次元座標値を用いて、ワークWの中心位置を決定する。なお、ワークWの反射特性に依存して、中心位置を算出する方法を異ならせることが好ましい。このように、本実施の形態に係る画像処理方法は、二次元画像に対する画像処理の結果と、同一のワークWを三次元計測することで高さ情報とを用いて、より少ない処理量でワークWの中心位置を順次算出する。《B.全体装置構成》図1は、本発明の実施の形態に係る画像処理装置100を含む把持システムSYSの全体構成を示す概略図である。図1に例示される把持システムSYSは、生産ラインなどに組み込まれ、トレーなどにばら積みされた検出対象物ワークWを1個ずつ把持するような処理を行う。なお、図1には、理解を容易にするため、トレー内に2つのワークWのみが存在する場合を図示するが、多数のワークWが重なった状態で配置されていてもよい。ここで、ワークWは、図示しない上流側の製造装置などから搬送されるため、そのトレー内での向きはランダムになっているものとする。そこで、把持システムSYS主とし、画像処理装置100は、円筒または球を少なくとも一部に含む検出対象物ワークWの中心位置を算出し、この算出した中心位置を利用して把持動作を行う。ここで、ワークWの寸法などは予め分かっているので、円筒部分の半径は既知であるものとする。なお、以下の説明では、主として、円筒の中でも円柱形状を有するワークWたとえば、ボルトを想定して説明を行うが、U字型のパイプのような円筒形状のものや、球状のものであっても同様に適用できる。すなわち、本実施の形態に係る中心位置の算出方法は、円状の断面を有する物体について汎用的に適用可能である。より具体的には、把持システムSYSは、画像処理装置100と、ロボットコントローラ200と、ロボット300とを含む。画像処理装置100には、プロジェクタ照明装置7および撮像装置8が接続されている。後述するように、プロジェクタ7は、一種の面光源として機能するとともに、画像処理装置100からの指示に従って任意の濃淡パターンの照明光を所定位置ワークWを含むトレーが配置される位置に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。撮像装置8は、プロジェクタ7によって照射された照明光がワークWの表面で反射した光を撮像する。そして、撮像装置8は、このワークWからの反射光ワークWの像を示す画像以下、入力画像とも称す。を出力する。本実施の形態においては、プロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は既知であるとする。すなわち、プロジェクタ7が照明光を照射する方向第1の方向およびその配置位置と、撮像装置8の視線方向第2の方向およびその配置位置とは、予め取得されている。なお、このようなプロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は、キャリブレーション処理によって得られるキャリブレーションデータに反映される。このキャリブレーションデータの具体的な内容としては、プロジェクタ7と撮像装置8との三次元的な位置姿勢三次元座標上の座標x,y,zおよび角度α,β,γやそれらの視野角など情報を含む。より具体的には、プロジェクタ7は、主要なコンポーネントとして、LEDLightEmittingDiodeやハロゲンランプなどの光源と、プロジェクタ7の照射面の側に配置されたフィルタとを含む。プロジェクタ7に用いられる光源は、波長範囲が比較的広いものが好ましい。また、フィルタは、後述するような三次元計測に必要な濃淡パターンを発生させるものであり、画像処理装置100などからの指令に従って、面内の透光率を任意に変化させることができる。撮像装置8は、主要なコンポーネントとして、レンズなどの光学系と、CCDCoupledChargedDeviceやCMOSComplementaryMetalOxideSemiconductorセンサといった撮像素子とを含む。画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム命令コードを実行することで、本実施の形態に係る画像処理機能を提供する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置100にインストールされる。このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOSOperatingSystemがインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。図2は、本発明の実施の形態に係る画像処理装置100の概略構成図である。図2を参照して、画像処理装置100は、演算処理部であるCPUCentralProcessingUnit110と、記憶部としてのメインメモリ112およびハードディスク114と、カメラインターフェイス116と、入力インターフェイス118と、表示コントローラ120と、プロジェクタインターフェイス122と、通信インターフェイス124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続される。CPU110は、ハードディスク114にインストールされたプログラムコードをメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAMDynamicRandomAccessMemoryなどの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、撮像装置8によって取得された入力画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク114には、各種設定値などが格納されてもよい。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。カメラインターフェイス116は、CPU110と撮像装置8との間のデータ伝送を仲介する。すなわち、カメラインターフェイス116は、ワークWを撮像して入力画像を生成するための撮像装置8と接続される。より具体的には、カメラインターフェイス116は、1つ以上の撮像装置8と接続が可能であり、撮像装置8からの入力画像を一時的に蓄積するための画像バッファ116aを含む。そして、カメラインターフェイス116は、画像バッファ116aに所定コマ数の入力画像が蓄積されると、その蓄積された入力画像をメインメモリ112へ転送する。また、カメラインターフェイス116は、CPU110が発生した内部コマンドに従って、撮像装置8に対して撮像コマンドを与える。入力インターフェイス118は、CPU110とマウス104、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス118は、ユーザが入力部を操作することで与えられる操作指令を受付ける。表示コントローラ120は、表示装置の典型例であるディスプレイ102と接続され、CPU110における処理結果などをユーザに通知する。すなわち、表示コントローラ120は、ディスプレイ102に接続され、当該ディスプレイ102での表示を制御する。プロジェクタインターフェイス122は、CPU110とプロジェクタ7との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェイス122は、CPU110が発生した内部コマンドに従って、プロジェクタ7に対して照明コマンドを与える。通信インターフェイス124は、CPU110とコンソールあるいは、パーソナルコンピュータやサーバ装置などとの間のデータ伝送を仲介する。通信インターフェイス124は、典型的には、イーサネット登録商標やUSBUniversalSerialBusなどからなる。データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、撮像装置8によって取得された入力画像および/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、CFCompactFlash、SDSecureDigitalなどの汎用的な半導体記憶デバイスや、フレキシブルディスクFlexibleDiskなどの磁気記憶媒体や、CD-ROMCompactDiskReadOnlyMemoryなどの光学記憶媒体等からなる。また、画像処理装置100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。再度図1を参照して、ロボット300は、ワークWを把持するためのハンド機構と、当該ハンド機構を任意の位置および方向に位置決めするための関節機構とを含む。ロボット300は、ロボットコントローラ200によってその動作が制御される。ロボットコントローラ200は、画像処理装置100によって算出されたワークWの中心位置中心軸を示す情報に基づいて、ワークWの位置や姿勢を認識するとともに、当該認識された各ワークWの位置や姿勢に基づいて、ロボット300のハンド機構を適切な位置および方向に位置決めするための指令を生成し、ロボット300へ出力する。この指令に応答して、ロボット300は、ワークWの把持動作を開始する。《C.全体処理》図3は、本実施の形態に係る画像処理装置100において実行される全体処理手順を示すフローチャートである。図3に示す各ステップは、基本的には、画像処理装置100のCPU110によって実行される。図3を参照して、画像処理装置100のCPU110は、前処理を実行するステップS1。この前処理は、ばら積み状態の少なくとも1つのワークWを撮像した入力画像を取得する処理を含む。この入力画像の取得方法の典型例としては、図1に示すような撮像装置8を用いて撮像された画像を画像処理装置100に入力する方法が挙げられる。但し、撮像装置8を用いて撮像して得られた入力画像を蓄積しておき、事後的に画像処理装置100に入力するような形態であってもよい。このような処理方法は、ワークWに対する把持動作に異常があった場合などの原因究明に利用されるようなときに好適である。さらに、本実施の形態においては、ワークWの周囲からの外乱光の影響を排除するために、シェーディング画像が生成される。このシェーディング画像は、プロジェクタ7から照明光を照射した状態環境光照明光で撮像して得られる画像と、プロジェクタ7から照明光を照射していない状態環境光のみで撮像して得られる画像との差分によって生成される。言い換えれば、ステップS1に示す前処理は、少なくとも1つのワークWに対して照明光を照射しない状態で撮像装置8により取得された画像と、当該少なくとも1つのワークWに対して照明光を照射した状態で撮像装置8により取得された画像との差分から入力画像を生成する処理を含む。このシェーディング画像生成処理の詳細については、後述する。前処理の実行後、画像処理装置100のCPU110は、セグメンテーション処理を実行するステップS2。このセグメンテーション処理は、入力画像に含まれるワークWの位置を特定するための処理である。すなわち、セグメンテーション処理は、ワークWの形状に相当する領域を入力画像から抽出する処理を含む。このワークWの形状に相当する領域を便宜上円筒領域とも称す。このセグメンテーション処理の詳細については、後述する。セグメンテーション処理の実行後、画像処理装置100のCPU110は、三次元計測処理を実行するステップS3。この三次元計測処理は、ステップS2において抽出された円筒領域についての高さ情報を取得する処理である。このような三次元計測処理の一例として、本実施の形態においては位相シフト法を採用する。位相シフト法を採用することで、上述のステップS1の前処理に必要なプロジェクタ照明装置7および撮像装置8を利用して、高さ情報を取得できるので、装置が簡素化できるという利点がある。もちろん、円筒領域についての高さ情報を取得できれば、どのような三次元計測処理を採用してもよい。たとえば、位相シフト法に代えて、空間コード法などを採用することもできる。さらに、画像処理装置100とは別の計測装置を用いて、ワークWの三次元位置情報などを取得し、この取得された三次元位置情報を画像処理装置100に入力するようにしてもよい。この三次元計測処理位相シフト法の詳細については、後述する。三次元計測処理の実行後、画像処理装置100のCPU110は、法線算出処理を実行するステップS4。この法線算出処理は、ステップS2において抽出された円筒領域内において明るさ典型的には、輝度が極大となる部分を特定し、ワークWにおける当該部分の法線方向を決定する処理である。このステップS4において決定される法線は、三次元空間におけるベクトル量として算出される。特に、本実施の形態に係る画像処理装置100においては、ワークWの表面における反射特性を利用して法線を算出する。より具体的には、ステップS4の法線算出処理は、ワークWの光学反射特性鏡面反射/拡散反射に依存して、法線方向の決定方法を異ならせる。この法線方向の決定方法の詳細については、後述する。法線方向の決定後、画像処理装置100のCPU110は、位置算出処理を実行するステップS5。この位置算出処理は、ステップS4において決定した法線方向と、既知のワークWの半径と、明るさが極大となる部分の位置と、対応する高さ情報ステップS3において取得とから、ワークWの中心位置を決定する処理を含む。ワークWの形状に依存して、このステップS5においては、同一のワークWについて決定された複数の中心位置から当該ワークWの中心軸を決定する処理を含む。すなわち、法線と半径情報とを利用して、円筒状のワークWの中心軸が算出される。なお、ワークWが球である場合には、基本的には、一つの中心位置中心点のみが算出されるので、中心軸は算出されない。位置算出処理の実行後、画像処理装置100のCPU110は、出力処理を実行するステップS6。この出力処理は、ステップS5において決定されたワークWの中心位置の情報をロボットコントローラ200図2などへ出力する処理である。この出力される中心位置の情報は、三次元空間上の座標値やベクトルを示す値を含む。なお、画像処理装置100が三次元計測によって取得する座標系と、ロボット300の処理において利用される座標系とは一致していない場合も多いので、ロボット300が扱う三次元空間上の座標値に変換して出力することが好ましい。また、複数のワークWがばら積みされているような状況では、複数のワークWについて中心位置の情報が取得された場合には、それぞれのワークWを識別するための情報とともに、対応する中心位置の情報を出力するようにしてもよい。あるいは、最上部に位置する、すなわち算出された中心位置が最も確からしいワークWについての情報のみを出力してもよい。図1に示すような把持システムSYSでは、このワークWの中心位置の情報が出力されることに伴って、ロボット300が最上部のワークWを把持するので、当該ワークWが取り除かれた状態で再度計測処理を実行するようにしてもよい。なお、図3に示すフローチャートにおいて、ステップS2のセグメンテーション処理と、ステップS3の三次元計測処理とを並列的に実行するようにしてもよい。《D.前処理》まず、図3に示す前処理ステップS1の詳細について説明する。上述したように、前処理は、環境光から撮像装置8に入射する光の影響を取り除き、プロジェクタ7からの照明光がワークWで反射して生じる光反射光のみを観測するための処理である。このような環境光の影響を取り除くため、プロジェクタ7から照明光を照射していない状態で取得される画像と、プロジェクタ7から照明光を照射している状態で取得される画像との差分から差分画像シェーディング画像が生成される。図4は、本発明の実施の形態に係る前処理の処理例を示す図である。図4を参照して、本実施の形態に係る画像処理方法においては、ワークWの周囲からの外乱光環境光の影響を排除するために、cシェーディング画像が生成される。より具体的には、プロジェクタ7から白色パターンを照明光として照射した状態で撮像される画像図4に示すa白色パターン投影環境光画像が取得される。白色パターンとは、照射面内における濃淡が均一とみなせるようなパターンを意味し、その照射面内におけるスペクトルの範囲や長さについて特に限定されるものではない。したがって、その照射面内が赤色や青色の光で均一化されているようなパターンを用いてもよい。また、プロジェクタ7から照明光も照射していない状態で撮像される画像図4に示すb環境光画像が取得される。そして、これらの画像間の差分が計算されることで、シェーディング画像が生成される。この画像間の差分の計算とは、両画像の間で対応する画素についての色情報たとえば、R,G,Bの各濃淡値を減算するような処理を含む。このような前処理については、特に、太陽光などの時間的に変化する環境光が撮像装置8の視野に入射しているような状況で有効である。言い換えれば、環境光が安定しており、プロジェクタ7が照射する照明光に対して相対的に小さいものであれば、このような前処理を省略してもよい。この場合には、図4に示すa白色パターン投影環境光画像のみで以降の処理を行ってもよい。《E.セグメンテーション処理》次に、図3に示すセグメンテーション処理ステップS2の詳細について説明する。上述したように、セグメンテーション処理は、入力画像に含まれるワークWの一部を示す領域円筒領域を抽出するための処理である。なお、入力画像としては、上述したような処理によって得られるシェーディング画像が用いられる。このようなセグメンテーション処理としては、入力されたシェーディング画像入力画像を所定の規則で分割することで、円筒領域が抽出される。このような円筒領域の抽出方法としては、公知の各種の方法を採用することができる。シンプルな方法としては、入力画像内で明るさ輝度または明度がほぼ同様の値をもつ領域を特定する方法などが挙げられる。本実施の形態においては、このようなセグメンテーション処理の一例として、NormalizedCuts法を採用する。このNormalizedCuts法の詳細については、JianboShiandJitendraMalikNormalizedCutsandImageSegmentationIEEETransactiononPatternAnalysisandMachineIntelligenceVol22No8August2000などを参照されたい。図5は、本発明の実施の形態に係るシェーディング処理の処理例を示す図である。図5に示すa入力画像に対して、上述のNormalizedCuts法を適用することで、bセグメンテーション結果のような結果画像が生成される。このようなセグメンテーション結果に対して、ワークWの形状に応じた条件を適用して、領域を抽出すると、c円筒領域抽出結果のような結果画像が生成される。基本的には、この抽出された円筒領域について、後続の処理が実行される。この抽出された円筒領域は、入力画像上の二次元座標系における座標値を用いて、その範囲が特定される。《F.三次元計測処理》次に、図3に示す三次元計測処理ステップS3の詳細について説明する。上述したように、三次元計測処理は、セグメンテーション処理によって抽出された円筒領域についての高さ情報を取得するための処理である。このような高さ情報を取得する処理としては、公知の三次元計測処理を用いて、ばら積み状態のワークWの各部についての三次元座標値が算出される。上述したように、本実施の形態においては、三次元計測処理の具体例として位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像正弦波投影画像を用いる方法である。より具体的には、照射面内の濃淡の変化周期や位相を異ならせたパターンを複数用意し、それぞれのパターンを照射したときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、これらの正弦波投影画像間における対応する部分の明るさ輝度や明度の変化に基づいて、各部分の高さ情報三次元座標値が算出される。図6は、本発明の実施の形態に係る三次元計測処理に用いられるパターンの一例を示す図である。図7は、本発明の実施の形態に係る三次元計測処理の処理例を示す図である。図6a~dに示すように、位相シフト法では、照射面内における濃淡パターンをその変化周期や位相を異ならせた複数のパターンが用いられる。このように異なる複数の濃淡パターンを用いることで、計測レンジを広げつつ計測対象物の三次元計測を行うことができる。このような位相シフト法によって、図7のa正弦波投影画像群からb高さ画像を生成することができる。なお、図7には、理解を容易化するために、高さ情報を色情報濃淡変化で示した高さ画像を例示するが、位相シフト法においては、各部の高さ情報を含む三次元座標値が取得されることになる。このように、本実施の形態に従う三次元計測処理においては、ワークWに対して、プロジェクタ7が所定方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置8によりそれぞれ撮像された複数の画像を用いて高さ情報が取得される。《G.法線算出処理》次に、図3に示す法線算出処理ステップS4の詳細について説明する。上述したように、法線算出処理は、ワークWの表面に対する法線法線ベクトルを算出する処理である。本実施の形態に係る画像処理方法においては、法線とワークWの半径との関係から、ワークWの中心位置を算出することで、より高速な処理を実現できる。さらに、より計測精度を高める観点から、後述するように、ワークWの光学反射特性鏡面反射/拡散反射に依存して、法線方向の決定方法を異ならせることも可能である。以下、法線を算出する基本的な処理手順に加えて、このようなワークWの光学反射特性に依存して法線方向の決定方法を異ならせる処理についても説明する。g1:法線算出原理まず、本実施の形態に係る画像処理方法において法線を算出するための原理的な説明を行う。図8は、本実施の形態に係る法線算出処理の原理的な説明を行うための図である。図8には、ワークWの表面が鏡面反射特性を有する場合と、拡散反射特性を有する場合とに区別して例示している。i鏡面反射特性を有する場合まず、ワークWの表面が鏡面反射特性を有する場合について説明する。ワークWが鏡面反射特性を有する場合には、ワークWの表面に入射した光は、その入射した位置の法線に対して定義される角度入射角と同じ角度で反射することになる。そのため、ワークWの表面のある位置を基準に見れば、プロジェクタ7からの照明光は、その入射角と同じ角度をもつ方向に大部分が反射されることになる。また、撮像装置8に入射する光を示す入力画像内において最も明るい位置は、プロジェクタ7からの照明光が入射したワークWの表面位置に相当する。すなわち、図8に示す入力画像内の最大輝度の観測位置は、撮像装置8によって撮像される入力画像の輝度情報に基づいて取得することができる。そして、図8に示す入力画像内の最大輝度の観測位置を示す三次元座標値についても、上述の三次元計測処理などの結果から取得できる。プロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は既知であるので、プロジェクタ7と図8に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル以下、光源ベクトルlとも称す。と、撮像装置8と図8に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル以下、視線ベクトルvとも称す。とを算出することができる。このように算出された光源ベクトルlと視線ベクトルvとの二等分角が法線方向法線ベクトルnとなる。すなわち、図3に示す法線算出処理ステップS4においては、ワークWの表面が鏡面反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源プロジェクタ7に向けて延びる光源ベクトルl第1のベクトルと、当該三次元座標点を通り、かつ、撮像装置8の方向に延びる視線ベクトルvとの、二等分角に相当するベクトルが法線ベクトルnとして算出される。ii拡散反射特性を有する場合次に、ワークWの表面が拡散反射特性を有する場合について説明する。ワークWが拡散反射特性を有する場合には、ワークWの表面に入射した光は、基本的には全方位に拡散反射する。そのため、ワークWの表面のある位置を基準に見れば、プロジェクタ7からの照明光は、当該位置の法線方向に最も多く反射されることになる。また、撮像装置8に入射する光を示す入力画像内において最も明るい位置は、プロジェクタ7からの照明光が入射したワークWの表面位置に相当する。すなわち、図8に示す入力画像内の最大輝度の観測位置は、撮像装置8によって撮像される入力画像の輝度情報に基づいて取得することができる。そして、図8に示す入力画像内の最大輝度の観測位置を示す三次元座標値についても、上述の三次元計測処理などの結果から取得できる。プロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は既知であるので、プロジェクタ7と図8に示す入力画像内の最大輝度の観測位置を示す三次元座標値とを結ぶベクトル光源ベクトルlを算出すれば、この算出された光源ベクトルlが法線方向法線ベクトルnと一致する。すなわち、図3に示す法線算出処理ステップS4においては、ワークWの表面が拡散反射する場合には、明るさが極大となる部分の位置と対応する高さ情報とから決定される三次元座標点を通り、かつ、照明光の光源プロジェクタ7に向けて延びる光源ベクトルlが法線ベクトルnとして算出される。なお、ワークWが円筒形状である場合には、プロジェクタ7からの照明光は複数の位置に入射するので、入力画像内において最も明るい位置は複数検出されることになる。したがって、上述のいずれの場合にも、ワークWが円筒形状を有する場合には、複数の法線ベクトルnが算出される。g2:法線算出処理フロー図9は、本実施の形態に係る画像処理装置100において実行される法線算出処理のより詳細な手順を示すフローチャートである。図9に示す処理手順は、図3に示すステップS3の処理内容をより詳細に示すものである。図9を参照して、画像処理装置100のCPU110は、入力画像内において明るさが極大となる部分の抽出処理を実行するステップS41。明るさが極大となる部分の抽出処理は、入力画像に対する画像処理によって実現される。この画像処理の内容については、後述する。このステップS41の処理によって、入力画像内において輝度が極大となる部分以下、輝度極大部分とも称す。が抽出される。続いて、画像処理装置100のCPU110は、対象のワークWの反射特性を取得するステップS42。ワークWの反射特性は、予めユーザが入力しておいてもよいし、画像処理装置100に対して外部の装置工程管理サーバなどからワークWについての情報として入力されてもよい。続いて、画像処理装置100のCPU110は、光線ベクトル図8に示す視線ベクトルvおよび光源ベクトルlの総称の算出処理を実行するステップS43。この光線ベクトルの算出処理は、三次元座標系において実行される三次元処理である。このステップS42においては、画像処理装置100のCPU110は、ステップS41において抽出された輝度極大部分に対応する光線ベクトル視線ベクトルvおよび光源ベクトルlを算出する。なお、算出される光線ベクトルの種類は、ステップS42において入力されるワークWの反射特性に依存して変化する。この光線ベクトルの算出処理の詳細については、後述する。最終的に、画像処理装置100のCPU110は、法線算出処理を実行するステップS44。この法線算出処理では、反射特性に応じて法線の算出処理が実行される。以上のように、法線法線ベクトルnが算出されると、図3に示すステップS5の処理が引き続いて実行される。g3:明るさが極大となる部分の抽出次に、図9に示すステップS41の処理明るさが極大となる部分を抽出する処理の詳細について説明する。図9に示すステップS41においては、セグメンテーション処理図3のステップS2によって抽出された円筒領域について、輝度極大部分が抽出される。ステップS41の処理においては、基本的には、円筒領域のうち最も明るい画素とその周辺領域とが輝度極大部分として抽出される。図10は、本実施の形態に係る明るさが極大となる部分を抽出する処理の処理例を示す図である。図10を参照して、まず、セグメンテーション結果に含まれる円筒領域のうち輝度極大部分を抽出する対象が決定される。なお、複数の円筒領域のそれぞれから輝度極大部分を抽出する場合には、以下に説明するような手順をそれぞれの円筒領域に対して実施することになる。より具体的には、以下の手順1~6が対象の円筒領域の数だけ繰返し実行される。1セグメンテーション結果に含まれる円筒領域のうち輝度極大部分を抽出する対象の円筒領域の決定2円筒領域を定義する辺の長さの比から走査方向の決定3入力画像を各走査方向に操作して輝度プロファイルの取得4輝度プロファイルおいてある閾値より輝度が大きい領域極大値とその周辺領域の座標値の抽出および記録53および4の処理をすべての円筒領域に対して繰返し実行6それぞれの輝度プロファイルにおける極大部分の座標値を統合して、円筒領域内の輝度極大部分の抽出図10には、aセグメンテーション結果に含まれる一つの円筒領域に対して走査方向が決定され、その走査方向に沿って取得された円筒領域の輝度変化を示すb円筒領域の輝度変化。なお、図10には、理解を容易化するために、円筒領域内の輝度の絶対値を色情報濃淡変化で示した高さ画像を例示するが、実際には、輝度の大きさの値および極大値をとる座標値などの情報が抽出される。g4:光線ベクトルの算出処理次に、図9に示すステップS43に示す光線ベクトルの算出処理の詳細について説明する。図9に示すステップS43においては、まず、ステップS41の処理において抽出された輝度極大部分の座標値x,y,zを基準として、三次元空間上における光線ベクトルを計算視線ベクトルvおよび光源ベクトルlが算出される。図11は、本実施の形態に係る光線ベクトルの算出処理を説明するための図である。図11aを参照して、入力画像上の輝度極大部分の座標値x,y,zと、撮像装置8の座標値xc,yc,zcとから視線ベクトルvが算出される。この算出処理は、予め取得されているキャリブレーションデータを利用して実行される。すなわち、視線ベクトルvv1,v2,v3は、以下のような式に従って算出される。視線ベクトルvv1,v2,v3=x-xc,y-yc,z-zc続いて、図11bを参照して、入力画像上の輝度極大部分の座標値x,y,zと、プロジェクタ7の座標値xp,yp,zpとから光源ベクトルlが算出される。この算出処理は、予め取得されているキャリブレーションデータを利用して実行される。すなわち、光源ベクトルll1,l2,l3は、以下のような式に従って算出される。光源ベクトルll1,l2,l3=x-xp,y-yp,z-zpなお、視線ベクトルvおよび光源ベクトルlについては、後述の法線ベクトルnの算出処理における便宜上、規格化しておくことが好ましい。g5:法線算出処理次に、図9に示すステップS44に示す法線算出処理の詳細について説明する。図9に示すステップS44においては、ワークWの表面における反射特性に依存して法線方向法線ベクトルnの算出方法を異ならせる。図12は、本実施の形態に係る法線算出処理を説明するための図である。図12aには、ワークWの表面が鏡面反射特性を有する場合の処理例を示し、図12bには、ワークWの表面が拡散反射特性を有する場合の処理例を示す。図12aを参照して、ワークWの表面が鏡面反射特性を有する場合には、明るさが極大となる部分輝度極大部分では正反射光が生じることになる。したがって、上述したように、ワークWの表面における法線ベクトルnは、視線ベクトルvおよび光源ベクトルlを用いて、以下のような式に従って算出される。法線ベクトルn=視線ベクトルv光源ベクトルl/2一方、図12bを参照して、ワークWの表面が拡散反射特性を有する場合には、明るさが極大となる部分輝度極大部分では拡散反射光が生じることになる。したがって、上述したように、ワークWの表面における法線ベクトルnは、光源ベクトルlと一致するため、以下のような式に従って算出される。法線ベクトルn=光源ベクトルl以上のような処理によって、1つ以上の法線ベクトルnが算出される。《H.位置算出処理》次に、図3に示す位置算出処理ステップS5の詳細について説明する。上述したように、位置算出処理は、ワークWの位置姿勢を算出するための処理である。本実施の形態においては、ワークWの半径情報半径が既知であるので、上述した処理によって算出された法線法線ベクトルと、対応する輝度極大部分の三次元座標点とから、ワークWの円筒部分の中心位置中心軸が算出される。図13は、本実施の形態に係る位置算出処理を説明するための図である。図13aに示すように、輝度極大部分の三次元座標点x,y,zおよび対応する法線ベクトルnが算出されており、ワークWの円筒断面における半径情報半径rが既知であるので、幾何学的関係から、ワークWの中心位置を一意に特定することができる。さらに、図13bに示すように、同一のワークWに対して、複数の輝度極大部分および対応する法線ベクトルn1,n2,n3,が算出されるのでそれぞれの組み合わせについて、ワークWの中心位置が算出できる。さらに、ワークWから抽出された複数の中心位置を用いて、ワークWの円筒部分の中心軸を決定することができる。なお、この中心軸の決定方法としては、公知のフィッティング方法を採用することができる。《I.計測例》図14は、本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。図14に示す認識結果は、複数のワークW図4に示すような多数のボルトがばら積みされている状態を撮像した入力画像から得られたものである。なお、図14に示す線は、上述した処理によって算出されたワークWの中心軸を示し、その周辺に描かれている円は、対応する法線ベクトルを算出する際に決定されたワークWの半径位置外形を示す。このように、本実施の形態に係る画像処理方法によれば、比較的短時間で、任意の方向に配置されているワークWの位置およびその中心軸を決定することができる。《J.変形例》上述した例では、主として、円筒形状のワークWに本発明に係る画像処理方法を適用した場合の処理例を示したが、上述したように球状のワークWについても同様に適用することができる。この場合には、原理的には、ワークWの中心位置は一つであるので、一つのワークWからは一つの法線ベクトルのみを抽出さればよい。《K.利点》本実施の形態に係る画像処理装置によれば、二次元画像に対する画像処理の結果と、同一のワークWを三次元計測することで高さ情報とを用いて、より少ない処理量でワークWの中心位置を算出することができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"