(58)【調査した分野】(Int.Cl.,DB名)
仮想空間において対象物を撮像したときの仮想撮像画像を生成し、前記仮想撮像画像を、画像処理プログラムを学習により生成するための入力画像として出力する入力画像生成部と、
前記対象物の3次元形状を示す形状データの中から、前記対象物における特徴部位に対応する特徴データの選択を受け付け、前記入力画像における前記特徴部位の投影位置を前記特徴データに基づいて算出し、前記入力画像に対応する目標画像を前記投影位置に基づいて生成する目標画像生成部と、
を有する画像処理装置。
前記目標画像生成部は、前記対象物の形状を複数のポリゴンの組み合わせとして表すポリゴンモデルを表示装置に表示させ、前記ポリゴンモデル上の頂点の中から前記特徴部位に対応する対応頂点の選択を受け付ける、
請求項2記載の画像処理装置。
前記目標画像生成部は、前記特徴データとして前記対応頂点の3次元座標を選択し、前記3次元座標を、前記対応頂点を前記入力画像に投影したときの投影座標に変換し、前記投影座標に基づいて前記特徴部位の領域を描画した前記目標画像を生成する、
請求項3記載の画像処理装置。
前記入力画像生成部は、前記仮想空間において前記対象物が設置される設備を再現した仮想設備を構築し、前記仮想設備の状態を変化させることで前記入力画像を複数生成する、
請求項5記載の画像処理装置。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る画像処理装置の構成例および処理例を示す図である。
図1に示す画像処理装置1は、画像処理プログラムを学習により生成するための入力画像および目標画像を生成する装置である。画像処理装置1は、入力画像生成部1aと目標画像生成部1bとを有する。入力画像生成部1aおよび目標画像生成部1bの処理は、例えば、画像処理装置1が備えるプロセッサが所定のプログラムを実行することで実現される。
【0013】
入力画像生成部1aは、3次元の仮想空間2において対象物3を撮像したときの仮想撮像画像を、入力画像として出力する。
図1の例では、仮想空間2上に設置されたカメラ4aから対象物3を仮想的に撮像することで、入力画像11aが生成される。また、カメラ4aとは異なる位置に設置されたカメラ4bから対象物3を仮想的に撮像することで、入力画像11bが生成される。入力画像11aと入力画像11bとの間では、対象物3が異なる方向を向いた状態で写っている。なお、入力画像は、少なくとも1枚生成されればよい。
【0014】
目標画像生成部1bは、対象物3の3次元形状を示す形状データ1cを参照可能になっている。形状データ1cは、例えば、仮想空間2における対象物3の複数の部位の3次元座標を含む。なお、形状データ1cは、例えば、画像処理装置1が有する記憶部1dに記憶されている。記憶部1dは、画像処理装置1が備える記憶装置の記憶領域として実装される。
【0015】
目標画像生成部1bは、形状データ1cの中から、対象物3における特徴部位3aに対応する特徴データの選択を受け付ける。特徴部位3aは、例えば、生成される画像処理プログラムによって画像の中から抽出される部位である。特徴データの選択は、例えば、次のようにして行われる。
【0016】
目標画像生成部1bは、対象物3の形状を表すポリゴンの頂点のうち、特徴部位3aに対応する頂点のデータの選択を受ける。より具体的な例としては、目標画像生成部1bは、対象物3の形状を複数のポリゴンの組み合わせとして表すポリゴンモデルを図示しない表示装置に表示させ、ポリゴンモデル上の頂点の中から、特徴部位3aに対応する頂点の選択を受け付ける。目標画像生成部1bは、特徴データとして、選択された頂点についてのデータを形状データ1cから抽出する。
【0017】
図1の例では、特徴部位3aは対象物3上の直線状のエッジである。そして、対象物3のポリゴンモデルからエッジ上に存在する複数の頂点5a〜5cが選択される。この場合、特徴部位3aに対応する特徴データは、例えば、頂点5a〜5cの3次元座標群として選択される。
【0018】
あるいは、特徴部位3aとして選択可能な部位にそれぞれ対応する形状データのリストの中から、所望の形状データが特徴データとして選択されてもよい。選択可能な部位としては、例えば、頂点、線分、ポリゴンなどがある。
【0019】
目標画像生成部1bは、生成された入力画像11aにおける特徴部位3aの投影位置を特徴データに基づいて算出する。目標画像生成部1bは、入力画像11aに対応する目標画像12aを、算出された投影位置に基づいて生成する。また、目標画像生成部1bは同様に、生成された入力画像11bにおける特徴部位3aの投影位置を特徴データに基づいて算出する。目標画像生成部1bは、入力画像11bに対応する目標画像12bを、算出された投影位置に基づいて生成する。
【0020】
例えば、目標画像生成部1bは、頂点5a〜5cの各3次元座標を、頂点5a〜5cを入力画像11aに投影したときの投影座標に変換し、投影座標に基づいて特徴部位3aの領域を描画した目標画像12aを生成する。
図1の例では、入力画像11aと同じサイズの目標画像12aにおける投影座標が示す位置に、特徴
部位3aが描画されている。また、目標画像生成部1bは同様に、頂点5a〜5cの各3次元座標を、頂点5a〜5cを入力画像11bに投影したときの投影座標に変換し、投影座標に基づいて特徴部位3aの領域を描画した目標画像12bを生成する。
図1の例では、入力画像11bと同じサイズの目標画像12bにおける投影座標が示す位置に、特徴部位3aが描画されている。
【0021】
ここで、例えば入力画像11aに対応する目標画像を生成する方法としては、次のような方法が考えられる。例えば、オペレータの操作により入力画像11aから特徴部位3aを抽出し、レタッチなどの画像処理を入力画像11aに施すことで、対応する目標画像を生成する方法が考えられる。しかし、入力画像11aは様々な撮像条件の下で撮像され得るので、入力画像11aに対象物3や特徴部位3aが明瞭に写っていない場合がある。この場合、オペレータは特徴部位3aの位置を正確に判断することができない。このため、生成される目標画像の品質が低下し、その結果、生成される画像処理プログラムに基づく画像処理精度が低下してしまう。
【0022】
これに対して、第1の実施の形態に係る画像処理装置1では、対象物3の3次元形状を表す形状データ1cの中から、対象物3における特徴部位3aに対応する特徴データが選択される。そして、入力画像11aにおける特徴部位3aの投影位置が、選択された特徴データに基づいて算出され、算出された投影位置に基づいて、入力画像11aに対応する目標画像12aが生成される。これにより、入力画像11aにおける特徴部位3aの写り方に関係なく、正確性の高い目標画像12aを生成することができる。
【0023】
〔第2の実施の形態〕
次に、第2の実施の形態に係るプログラム生成装置について説明する。第2の実施の形態に係るプログラム生成装置は、
図1に示した画像処理装置1と同様の入力画像および目標画像の生成機能に加えて、生成された入力画像および目標画像を用いて画像処理プログラムを自動生成する機能を備える。
【0024】
図2は、第2の実施の形態に係るプログラム生成装置のハードウェア構成例を示す図である。第2の実施の形態に係るプログラム生成装置100は、例えば、
図2に示すようなコンピュータとして実現される。
【0025】
プログラム生成装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0026】
プロセッサ101には、バス108を介して、RAM(Random Access Memory)102と複数の周辺機器が接続されている。
RAM102は、プログラム生成装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
【0027】
バス108に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、読み取り装置106および通信インタフェース107がある。
【0028】
HDD103は、プログラム生成装置100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
【0029】
グラフィック処理装置104には、表示装置104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令にしたがって、画像を表示装置104aの画面に表示させる。表示装置104aとしては、液晶ディスプレイや有機EL(ElectroLuminescence)ディスプレイなどがある。
【0030】
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0031】
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【0032】
通信インタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、プログラム生成装置100の処理機能を実現することができる。
【0033】
図3は、プログラム生成装置の処理機能の例を示すブロック図である。プログラム生成装置100は、学習データ生成部110およびプログラム生成部120を有する。学習データ生成部110およびプログラム生成部120の処理は、例えば、それぞれ個別のアプリケーションプログラムがプロセッサ101によって実行されることで実現される。あるいは、学習データ生成部110およびプログラム生成部120の処理は、一体のアプリケーションプログラムを用いて実現されてもよい。
【0034】
学習データ生成部110は、プログラム生成部120による画像処理プログラム130の生成処理において利用される学習データ200を生成する。学習データ200には、入力画像と、生成される画像処理プログラム130を用いて入力画像を処理した際の処理結果の目標を示す目標データとが含まれる。本実施の形態では例として、目標データは目標画像として生成されるものとするが、位置座標などの数値として生成されてもよい。
【0035】
プログラム生成部120は、生成された1組以上の学習データ200を用いた学習により、画像処理プログラム130を自動的に生成する。例えば、プログラム生成部120は、遺伝的プログラミングを用いて画像処理プログラム130を生成する。
【0036】
ここで、
図4は、生成される画像処理プログラムによって実現される画像処理の例を示す図である。画像処理プログラム130によって実現される画像処理としては、例えば、エッジ検出、領域検出、テンプレートマッチングなどがある。
図4では、エッジ検出処理の一例を示している。
【0037】
図4において、入力画像201は、生成された画像処理プログラム130を用いて処理される撮像画像であり、出力画像202は、その処理結果として出力される画像である。
図4の例では、入力画像201に写っている撮像対象物201aにおける特定のエッジ201bを示す直線202aが検出される。なお、直線202aのように画像全体を横切るような直線ではなく、画像201−2のようにエッジ201bの部分だけを示す線分201cが検出されてもよい。
【0038】
また、エッジ検出としては、直線形状だけでなく、円形状のエッジが検出されてもよい。また、領域検出としては、例えば、
図4中の撮像対象物201aの外形が包含されるような矩形領域を検出する処理や、撮像対象物201aに存在する欠損領域や傷のある領域を検出する処理などがある。また、テンプレートマッチングとしては、撮像対象物201aの画像をテンプレートとして用い、撮像画像における撮像対象物201aの基準点の位置座標を検出する処理などがある。
【0039】
画像処理プログラム130の用途としては、例えば、FA(Factory Automation)分野において、製品や部品を撮像した画像に画像処理を施して所望の効果を得るという用途が考えられる。例えば、製品の外観を撮像した画像に画像処理を施して、位置合わせを行う箇所を抽出する、欠陥が生じた箇所を抽出するといった用途が考えられる。
【0040】
このような用途では、撮像対象物となる製品や部品が搭載される設備の設置環境の変化、あるいは、製品や部品の変更、改良などに応じて、画像処理アルゴリズムを最適化する必要がある。この最適化のためには、設備の環境変化や製品、部品の変化に応じた適切な学習データが必要となる。
【0041】
一般的に、学習データに含まれる入力画像は、実際の設備または動作確認用の実験用設備を実際に設置し、そこに撮像対象物の実物またはその試作品を搭載した状態で、撮像対象物を撮像することによって用意される。しかし、実際に起こりうる様々な環境変化を実機を用いてすべて再現することは困難であるという問題がある。また、実機を用いて再現するための作業の手間が大きく、作業時間が長くなるという問題もある。
【0042】
また、例えば、製品の生産設備において画像処理プログラム130を用いて製品の位置合わせや外観検査を行うケースでは、生産設備は、開発設計、立ち上げというプロセスを経た後に稼働される。通常は、生産設備の立ち上げの直前のタイミングで、画像処理プログラム130の検証が行われ、画像処理精度に問題がある場合には新たな入力画像および目標画像が追加されて再学習が行われ、画像処理プログラム130が最適化される。この再学習のための入力画像に長い時間がかかると、その分だけ生産設備の稼働が遅延してしまうという問題がある。
【0043】
また、学習データに含まれる目標画像は、例えば、オペレータが、上記のように生成された入力画像の表示画面を見ながら、マウスなどの入力操作によって認識対象のエッジや領域の輪郭を指定していくことで生成される。あるいは、目標画像は、オペレータの操作によって、入力画像に様々な画像処理が施されることで生成される。
図4の例では、入力画像201に対してエッジを検出する画像処理が施されることで、撮像対象物201aの輪郭を示すエッジが抽出された画像201−1が得られている。そして、オペレータの操作により、画像201−1から必要なエッジ201b以外の部分が消去されることで、線分201cのみを含む画像201−2が得られている。
【0044】
しかし、このような方法では、オペレータの作業の手間が大きく、作業時間が長くなるという問題がある。また、オペレータのスキルや性格などにより目標画像の正確さにバラツキが発生し、その結果、生成された画像処理プログラム130による画像処理の精度が低下するという問題もある。さらに、次の
図5に示す例のように、オペレータの操作ではそもそも正しい目標画像を生成するのが困難であるというケースもある。
【0045】
図5は、入力画像の例を示す図である。
図5(A)に示す入力画像211、および
図5(B)に示す入力画像212では、どちらも撮像対象物213が撮像されている。ただし、入力画像211はボケのない画像であるのに対して、入力画像212はボケが大きい画像となっている。オペレータは、このような入力画像212からは、撮像対象物213における特定のエッジ213aがどこに存在するのかを正確に判断することができない。このため、入力画像212からオペレータの操作によって正しい目標画像を生成することは困難である。
【0046】
そこで、本実施の形態において、学習データ生成部110は、CAD(Computer Aided Design)データを用いて、撮像対象物が搭載される設備を仮想的に再現した仮想設備を構築する。また、学習データ生成部110は、仮想設備における光源の状態や可動部品の位置、撮像対象物の位置や姿勢、カメラパラメータなど、入力画像を仮想的に撮像する際の条件をどのように変化させるかを示す情報の入力を受ける。そして、学習データ生成部110は、仮想設備を入力された条件に合致する状態に設定するとともに、仮想設備上に撮像対象物を入力された条件に合致する状態で配置し、撮像対象物を仮想的なカメラによって撮像することで、入力画像を生成する。
【0047】
これにより、実際の設備を使用することなく、設備の様々な状態を仮想的に再現し、それらの状態で撮像対象物を撮像した入力画像を得ることができる。したがって、入力画像を生成する作業効率を向上させることができ、その作業時間を短縮できる。
【0048】
また、学習データ生成部110は、上記条件に基づく仮想設備および撮像対象物の状態設定とは別に、撮像対象物を示すCADデータの中から、撮像対象物における認識対象部位に対応するデータを指定するための入力を受け付ける。具体的には、学習データ生成部110は、撮像対象物のポリゴンモデルを表示装置104aに表示させ、表示されたポリゴンモデル上の頂点の中から、認識対象部位に対応する頂点をオペレータに選択させる。これにより、選択された頂点の座標データが特定される。
【0049】
学習データ生成部110は、特定された座標データに基づいて、選択された各頂点の入力画像での投影位置を算出し、この算出結果に基づいて、入力画像と同じサイズの画像上に各頂点が投影された投影画像を生成する。学習データ生成部110は、投影画像上の頂点の位置から直線や曲線、あるいは線で囲まれた領域を特定し、特定された線や領域を描画することで目標画像を生成する。
【0050】
このような方法によれば、生成された入力画像から認識対象部位をオペレータに特定させるのではなく、認識対象部位の少なくとも一部を示すCADデータが選択される。そして、選択されたCADデータを基に入力画像の生成時と同様の投影変換が再度行われることで、目標画像が生成される。これにより、正確性の高い目標画像を生成することができる。
【0051】
以下、
図3に戻って説明を続ける。
学習データ生成部110は、入力部111、仮想設備構築部112、入力画像生成部113および目標画像生成部114を有する。また、学習データ生成部110は、記憶部115を参照可能になっている。記憶部115は、例えば、RAM102またはHDD103の記憶領域として実現される。記憶部115には、部品データベース(DB)141、設備設定情報142および条件設定情報143が格納される。
【0052】
部品データベース141には、仮想設備および撮像対象物を構成する各部品を示す部品データ141a,141b,・・・が格納されている。部品データ141a,141b,・・・のそれぞれには、部品の形状や外面の色、その反射率などのデータが含まれる。仮想設備を構成する部品としては、撮像対象物が設置される部品やその位置を変動させる駆動部、カメラ、光源などが含まれる。また、各部品は、その形状を示す複数のポリゴンの頂点についてのデータによって表される。
【0053】
この部品データベース141は、例えば、CADプログラムで利用されるデータベースである。この場合、学習データ生成部110を実現するプログラムは、CADプログラムに内包されていてもよい。
【0054】
設備設定情報142は、仮想空間上に仮想設備および撮像対象物が配置された状態を再現するためのデータであり、仮想設備および撮像対象物を構成する各部品の位置や姿勢、動作状態などのデータを含む。設備設定情報142においては、位置や動作などの状態が可変の部品については、その状態を示す値としてあらかじめ決められた代表的な値が設定される。
【0055】
条件設定情報143は、入力画像を撮像する際の撮像条件を指定するための各種パラメータの設定値を含む。パラメータとしては、仮想設備の部品や撮像対象物の位置や姿勢、仮想設備の部品の動作状態、仮想設備または撮像対象物の外面の色や反射率などの光学条件などを示すパラメータがある。また、撮像対象物については、欠けや汚れの有無、サイズ、位置などを示すパラメータも適用可能である。
【0056】
動作状態を示すパラメータとしては、光源に関する光源条件のパラメータや、カメラに関するカメラパラメータがある。光源条件としては、照明強度、照射角度、距離に対する照射強度の減衰率などがある。カメラパラメータとしては、像レンズの焦点距離、画角、焦点位置、カメラの画素数、画素サイズ、歪曲収差や色収差などのレンズ収差情報がある。
【0057】
複数の入力画像が生成される場合、条件設定情報143には、各入力画像の撮像ごとに変化させる撮像条件の設定値について、その変動範囲が記述される。例えば、ある光源の照度を撮像ごとに変化させる場合、照度の変動範囲は「照度X1〜X2」あるいは「基準照度XからプラスマイナスY%」などのように設定される。この場合、例えば、ステップ数あるいは1ステップごとに変化させる値が設定されることで、変動範囲を何回に分けて値を設定するか、撮像ごとにどれだけ値を増減するかといった設定方法が決定される。また、他の例としては、ある撮像条件の設定値について、「X1,X2,X3」のように撮像ごとに設定される値が記述されていてもよい。
【0058】
入力部111は、オペレータによる入力操作に応じて、設備設定情報142および条件設定情報143の入力や、目標画像を生成するための認識対象部位および画像処理種別の指定を受け付ける。
【0059】
仮想設備構築部112は、設備設定情報142に基づき、部品データベース141内の必要な部品データを用いて3次元空間上に仮想設備を構築し、その仮想設備に撮像対象物を設置する。
【0060】
入力画像生成部113は、仮想設備構築部112によって構築された仮想設備上の部品や撮像対象物の状態を、条件設定情報143に基づいて変化させながら、カメラによって撮像対象物を仮想的に撮像する。この撮像によって入力画像が生成される。この入力画像の生成では、例えば、フォトンマッピング法やレイトレーシング法などの物理ベースシミュレーションを用いて、3次元空間上のあるカメラ位置から撮像対象物を撮像したときの撮像画像が仮想的に生成される。生成された画像においては、例えば、照明と部品との位置関係や部品表面の反射率などによって、撮像対象物やその周囲への照明の当たり方が再現される。また、カメラパラメータの設定値に基づいて、画像のボケを再現することもできる。
【0061】
目標画像生成部114は、撮像対象物についての部品データに基づいて、撮像対象物のポリゴンモデルを表示装置104aに表示させる。そして、目標画像生成部114は、表示されたポリゴンモデルの頂点の中から、認識対象部位に対応する複数の頂点の指定を入力部111を介して受け付ける。目標画像生成部114は、部品データの中から、指定された各頂点の3次元座標を特定する。この3次元座標は、例えば、仮想設備が構築された仮想空間における座標である。また、目標画像生成部114は、生成対象の画像処理プログラムにしたがって実行される画像処理種別の指定を、入力部111を通じて受け付ける。
【0062】
目標画像生成部114は、生成された各入力画像の撮像時のカメラパラメータを用いて、指定された各頂点の座標を、各頂点を各入力画像に投影したときの座標に変換する。目標画像生成部114は、変換後の各頂点の座標に基づいて、各入力画像と同じサイズの投影画像に対して、指定された画像処理種別に応じた処理を施すことにより、各入力画像に対応する目標画像を生成する。例えば、目標画像生成部114は、変換後の頂点の座標から直線や曲線、あるいは線で囲まれた領域を投影画像から特定し、特定された線や領域を描画することで目標画像を生成する。
【0063】
入力画像生成部113によって生成された入力画像と、目標画像生成部114によって生成された目標画像は、学習データ200として出力される。学習データ200においては、入力画像とこれに対応する目標画像とが対応づけられている。学習データ200は、例えば、プログラム生成装置100内のHDD103などの記憶装置を介してプログラム生成部120に受け渡される。
【0064】
次に、プログラム生成部120は、プログラム生成処理部121を有する。また、プログラム生成処理部121は、記憶部122を参照可能になっている。記憶部122は、例えば、RAM102またはHDD103の記憶領域として実現される。
【0065】
記憶部122には、学習データ生成部110によって生成された学習データ200が記憶される。プログラム生成処理部121は、学習データ200を用いて学習を行うことで、画像処理プログラム130を生成する。例えば、遺伝的プログラミングが用いられる場合、記憶部122には、画像処理プログラムを示す木構造の各ノードに設定可能な各種の部分プログラム(画像処理フィルタなど)が記憶される。プログラム生成処理部121は、学習データ200を用いた学習により、木構造の各ノードに設定する部分プログラムの組み合わせを最適化する。これにより、所望の画像処理を実現する画像処理プログラム130が生成される。
【0066】
図6は、構築される仮想設備の例を示す図である。
図6に示す仮想設備310は、設置台311、駆動機構312、カメラ313、カメラ駆動機構314、支柱315、光源316,317を有する。
【0067】
設置台311には、撮像対象物300が設置される。駆動機構312は、設置台311の位置や傾きを変化させる。カメラ313は、撮像対象物300を撮像する。カメラ駆動機構314は、カメラ313の位置や撮像方向を変化させる。支柱315には、光源316,317などの各種の部品が搭載される。光源316,317は、照明光を発光する。
【0068】
なお、仮想設備310には、この他に例えば、光源316,317の位置や発光方向を変化させる駆動機構などが含まれてもよい。また、仮想空間には、例えば、仮想設備310が設置される部屋の壁、床、窓などが構築されてもよい。さらに、光源として部屋の外から光を照射する太陽が含まれてもよい。光源として太陽が含まれる場合、例えば、仮想設備310が使用される時刻が指定されると、その時刻に応じた光源の位置や照射方向、照射強度が設定されるようにすることで、太陽の状態変化に応じた入力画像を生成することもできる。
【0069】
図7は、生成される入力画像の例を示す図である。
図7(A)に示す入力画像221と
図7(B)に示す入力画像222は、例えば、条件設定情報143に基づいて、カメラ313の位置(カメラ313と撮像対象物300との距離)や姿勢を変化させることで生成される。あるいは、入力画像221,222は、撮像対象物300が設置された設置台311の位置や回転角を変化させることで生成される。
【0070】
また、
図7(C)に示す入力画像223は、入力画像221に対してボケを発生させた画像である。この入力画像223は、例えば、合焦状態で入力画像221を撮像した状態から、カメラパラメータのうち焦点距離を変化させる、あるいは設置台311を移動させて撮像対象物300とカメラ313との距離を変化させることで生成される。
【0071】
また、
図7(D)に示す入力画像224は、入力画像221を撮像したときとは照明の当たり方が異なる状態で撮像された画像である。具体的には、入力画像224では、照明の光量が強すぎるため、撮像対象物300の表面の輝度が本来の輝度より大きくなっている。この入力画像224は、例えば、入力画像221を撮像した状態から、光源316または光源317からの光量を強くする、あるいは光源316または光源317を撮像対象物300に近づけることで生成される。
【0072】
図8は、学習データ生成部の処理手順の例を示すフローチャートである。
[ステップS11]入力部111は、オペレータの操作に応じて設備設定情報142の入力を受け付け、設備設定情報142を記憶部115に格納する。仮想設備構築部112は、格納された設備設定情報142に基づいて、撮像対象物が設置された仮想設備を3次元空間上に構築する。
【0073】
[ステップS12]入力部111は、オペレータの操作に応じて条件設定情報143の入力を受け付け、条件設定情報143を記憶部115に格納する。
[ステップS13]目標画像生成部114は、生成対象の画像処理プログラムにしたがって実行される画像処理種別の指定を、入力部111を通じて受け付ける。画像処理種別としては、例えば、直線エッジ検出、曲線エッジ検出、円エッジ検出、領域検出、テンプレートマッチングがある。直線エッジ検出とは、撮像対象物上の直線状のエッジを検出する処理である。曲線エッジ検出とは、撮像対象物上の曲線状のエッジを検出する処理である。円エッジ検出とは、撮像対象物上の円状または楕円状のエッジを検出する処理である。領域検出とは、撮像対象物における部品や欠損部、キズの領域などの特定の部位の領域を検出する処理である。テンプレートマッチングとは、テンプレート画像が写っている領域を検出する処理である。
【0074】
[ステップS14]目標画像生成部114は、撮像対象物の部品データに基づいて、撮像対象物をポリゴンの集合体として表したポリゴンモデルを表示装置104aに表示させる。
【0075】
[ステップS15]目標画像生成部114は、表示されたポリゴンモデルに対する選択操作を入力部111を通じて受け付けることにより、撮像対象物上の認識対象部位の選択を受け付ける。この処理では、目標画像生成部114は、ステップS13で指定された画像処理種別に応じた選択方法で認識対象部位の選択を受け付ける。
【0076】
例えば、画像処理種別として直線エッジ検出、曲線エッジ検出、円エッジ検出が指定された場合、目標画像生成部114は、ポリゴンモデルの表示画像から、認識対象となるエッジ上の複数の頂点を選択させる。また、画像処理種別としてテンプレートマッチングが指定された場合、目標画像生成部114は、ポリゴンモデルの表示画像から、認識対象物の外縁における複数の頂点を選択させる。これらのケースでは、目標画像生成部114は、撮像対象物の部品データの中から、選択された各頂点の座標を抽出する。なお、これらのケースでは、目標画像生成部114は、ポリゴンモデルから、頂点の代わりにポリゴンの線分の選択を受け付けてもよい。この場合、選択された線分の両端の頂点の座標が抽出される。
【0077】
一方、画像処理種別として領域検出が指定された場合、目標画像生成部114は、複数のポリゴンによって構成される部品や欠損部、キズの領域を単位として選択操作を受け付ける。例えば、撮像対象物に含まれるある部品が選択された場合、目標画像生成部114は、その部品の表示領域へのクリック操作を検出すると、その部品が選択されたと認識する。目標画像生成部114は、撮像対象物の部品データの中から、選択された部品や欠損部、キズの領域に含まれる各ポリゴンの頂点の座標を抽出する。
【0078】
なお、ここではポリゴンモデルの表示画像から頂点などを選択させる例を示したが、例えば、撮像対象物を示す部品データの中から上記の頂点や部品、欠損部、キズの領域を示すデータが、部品データの一覧の中からオペレータによって直接的に選択されてもよい。
【0079】
[ステップS16]入力画像生成部113は、条件設定情報143において設定値を変化させるように記述された項目を特定する。複数の項目が特定された場合、入力画像生成部113は、特定された各項目についての設定値の組み合わせを1組選択する。また、項目が1つだけ特定された場合には、入力画像生成部113は、その項目についての設定値を1つ選択する。
【0080】
[ステップS17]入力画像生成部113は、仮想設備およびそこに設置された撮像対象物の状態を、ステップS16で選択された設定値を反映した状態に設定する。入力画像生成部113は、この状態でカメラから撮像対象物を撮像した撮像画像を、例えば、フォトンマッピング法やレイトレーシング法などの物理ベースシミュレーションを用いて生成する。生成された画像が入力画像として出力される。
【0081】
[ステップS18]目標画像生成部114は、ステップS15で特定された各頂点の3次元座標を、ステップS17で生成された入力画像に投影したときの2次元座標に変換する。この変換では、ステップS17での撮像において設定されたカメラパラメータのうち、少なくとも、カメラと撮像対象物との位置関係を示すパラメータを用いて行われる。
【0082】
[ステップS19]目標画像生成部114は、変換後の各頂点の座標に基づいて、入力画像と同じサイズの投影画像に対して、ステップS13で指定された画像処理種別に応じた処理を施すことにより、各入力画像に対応する目標画像を生成する。
【0083】
例えば、直線エッジ検出の場合、目標画像生成部114は、投影画像上の各頂点を結ぶ直線を算出する。曲線エッジ検出の場合、目標画像生成部114は、投影画像上の各頂点を結ぶ曲線を算出する。円エッジ検出の場合、目標画像生成部114は、投影画像上の各頂点を結ぶ円または楕円を算出する。これらの直線、曲線、円または楕円は、例えば、各頂点の2次元座標を基に最小二乗法を用いて近似することで算出される。
【0084】
また、テンプレートマッチングの場合、目標画像生成部114は、投影画像上の各頂点を結ぶことにより、認識対象物の外形の形状を算出する。また、領域検出の場合、目標画像生成部114は、投影画像上の各頂点を結ぶことにより、認識対象の特定部位の外形の形状を算出した後、例えば、その形状を包含するような矩形領域の位置を算出する。
【0085】
目標画像生成部114は、以上のようにして算出された直線、曲線、円、楕円、外形の形状、矩形領域を、その他の領域とは別の輝度値で描画した画像を、目標画像として生成する。なお、テンプレートマッチングや領域検出の場合には、目標画像の代わりに、認識された領域あるいは矩形領域の投影画像における位置を示す情報が、入力画像に対応する目標データとして出力されてもよい。
【0086】
[ステップS20]目標画像生成部114は、条件設定情報143において変化させるように記述された項目の設定値をすべて選択したかを判定する。未選択の設定値がある場合、ステップS16の処理が実行される。該当するすべての設定値を選択済みの場合、学習データ200の生成処理は終了する。
【0087】
ここで、画像処理種別として直線エッジ検出が指定された場合の目標画像の生成処理の一例について、
図9,
図10を用いて説明する。
図9は、目標画像の生成処理の例を示すフローチャートである。また、
図10は、目標画像の生成処理において生成される画像の例を示す図である。
【0088】
[ステップS15a]この処理は、
図8のステップS15に対応する。目標画像生成部114は、表示されたポリゴンモデルから、認識の対象とする直線状のエッジを構成する頂点の選択入力を受け付ける。
図10の画像410は、ポリゴンモデルが表示された画像の一例である。画像410において点線で示した部分がポリゴンの境界となる。画像410の例では、オペレータにより、エッジ部412を構成する頂点411a〜411eが選択されたものとする。
【0089】
この後、
図8のステップS16,S17が実行された後、次のステップS18aが実行される。ステップS18aは、
図8のステップS18に対応する。
[ステップS18a]目標画像生成部114は、対応する入力画像の撮像時に設定されたカメラパラメータに基づいて、頂点411a〜411eの3次元座標を入力画像に投影したときの2次元座標に変換する。
【0090】
次のステップS19a〜S19cは、
図8のステップS19の処理に対応する。
[ステップS19a]目標画像生成部114は、変換された頂点411a〜411eの2次元座標に基づいて、最小二乗法などを用いて直線の式を算出する。
【0091】
[ステップS19b]目標画像生成部114は、入力画像と同じサイズであり、単色の背景を有する投影画像に、算出された式に基づく直線を背景とは別の画素値で描画する。
図10の画像420は、入力画像と同じサイズであり、単色の背景を有する画像420に、算出された式に基づく直線421が描画されている。なお、この例では、対応する入力画像を撮像した際の視野には頂点411eが含まれていない。
【0092】
[ステップS19c]目標画像生成部114は、直線421の画素のうち、認識対象とするエッジ部412の端部より外側の領域の画素と、画像420のウィンドウより外側の領域の画素とを、クリッピングする。これにより、
図10の画像420は画像420aのように変換され、この画像420aが目標画像として出力される。
【0093】
なお、このステップS19cの処理のうち、エッジ部の端部より外側の直線領域をクリッピングする処理は必須ではなく、この処理を実行するか否かはオペレータによって任意に設定可能である。
【0094】
以上説明した学習データ生成部110の処理によれば、様々な撮像条件において撮像対象画像およびその周囲領域を撮像した入力画像を、効率的に生成することができ、その生成処理時間を短縮することができる。
【0095】
また、オペレータの操作により対応する入力画像を変換することで目標画像を生成するのではなく、認識対象部位に相当するCADデータ(3次元座標)をオペレータに選択させる。これにより、例えば、入力画像に認識対象部位が明瞭に写っていない場合でも、認識対象部位が正確に選択される。そして、選択されたCADデータに基づく認識対象部位を入力画像に投影した結果を用いて、対応する入力画像に対応する目標画像が生成される。これにより、入力画像における撮像対象物の写り方に関係なく、対応する目標画像を正確に生成することができる。したがって、このように生成された目標画像を用いて画像処理プログラム130の生成のための学習が行われることで、高精度な画像処理を実現する画像処理プログラム130を生成することができる。
【0096】
次に、プログラム生成部120の処理について説明する。ここでは例として、遺伝的プログラミングを用いて画像処理プログラム130を生成する場合について説明する。
図11は、個体を構成する木構造の例を示す図である。遺伝的プログラミングを用いた画像処理プログラム130の生成処理では、個体は、1つ以上の部分プログラムを組み合わせて構成される。例えば、
図11に示すように、個体は木構造で定義される。また、個体に組み込むことが可能な複数の部分プログラムは、記憶部122にあらかじめ用意される。
【0097】
以下の説明では例として、部分プログラムはそれぞれ画像フィルタであるものとするが、部分プログラムは画像フィルタに限るものではなく、他の種類の画像処理を行うプログラムを用いることもできる。
図11において、「F1」〜「F8」は画像フィルタを示し、「I」は入力端子を示し、「O」は出力端子を示す。
図11のような木構造を有する個体によれば、入力端子Iに画像を入力することにより、例えば、前述の画像処理種別のうち、直線エッジ検出、曲線エッジ検出、円エッジ検出、領域検出の各処理を実現することができる。
【0098】
図12は、個体を構成する木構造の他の例を示す図である。
図12では、テンプレートマッチングを実現する木構造の一例を示している。
図12の個体は、2つの入力端子I1,I2を備えている。入力端子I1には入力画像が入力され、入力端子I2にはテンプレート画像が入力される。これにより、例えば、入力画像におけるテンプレート画像の領域またはその位置情報が出力される。なお、「F11」〜「F17」は画像フィルタの一例であり、「M」は、画像フィルタF17の出力画像と入力
端子I2からのテンプレート画像とのマッチング処理を実行する部分プログラムである。
【0099】
図13は、遺伝的プログラミングを用いた画像処理プログラムの生成処理手順の例を示すフローチャートである。
[ステップS31]プログラム生成処理部121は、母集団に含める複数の初期個体を生成する。各初期個体のノードには、あらかじめ用意された複数の画像フィルタの中から画像フィルタがランダムに選択されて組み込まれる。
【0100】
[ステップS32]プログラム生成処理部121は、母集団の中からランダムに一定数の親個体を選択する。以下、例として2つの親個体が選択されるものとする。
[ステップS33]プログラム生成処理部121は、選択された2つの親個体に対して進化過程の処理を施すことで、2以上の一定数の子個体を生成する。進化過程では、2つの親個体に対して交叉処理および突然変異処理が行われる。2つの親個体に対して、それぞれ異なる交叉処理や突然変異処理が行われることで、3つ以上の子個体が生成されてもよい。
【0101】
[ステップS34]プログラム生成処理部121は、ステップS32で選択された親個体、およびステップS33で生成された子個体のそれぞれについて、適応度を計算する。この処理では、対象の個体それぞれを用いた画像処理が、学習データ200に含まれる各入力画像に対して実行され、実行後の画像と対応する目標画像とが比較されることで適応度が計算される。学習データ200に入力画像と目標画像とが複数組が存在する場合、個体それぞれについて、複数組の入力画像と目標画像とを用いて得られた適応度の平均値が算出される。
【0102】
なお、ステップS31で母集団が生成された時点で母集団に含まれる初期個体の適応度が算出されてもよい。この場合、ステップS34では、生成された子個体の適応度だけが算出される。
【0103】
[ステップS35]プログラム生成処理部121は、生成された子個体および元の親個体のうちのいずれかの適応度が、所定の閾値より大きいかを判定する。いずれの適応度も閾値以下である場合には、ステップS36の処理が実行される。1以上の適応度が閾値より大きい場合には、ステップS37の処理が実行される。
【0104】
[ステップS36]プログラム生成処理部121は、ステップS32で選択された親個体、およびステップS33で生成された子個体の中から、生存選択を行う。例えば、算出された適応度が最大の個体が第1の生存個体として選択され、さらに残りの個体の中から、適応度に応じた確率で第2の生存個体が選択される。プログラム生成処理部121は、母集団に含まれる個体のうち、ステップS32で親個体として選択された2つの個体を、第1の生存個体および第2の生存個体に入れ替える。これにより、母集団の世代が更新される。
【0105】
[ステップS37]プログラム生成処理部121は、ステップS32で選択された親個体、およびステップS33で生成された子個体のうち、適応度が最大の個体を最良個体として選択する。選択された最良個体が、最適化された画像処理プログラム130となる。プログラム生成処理部121は、選択された最良個体を示す木構造データを、記憶部122などの記憶領域に保存する。
【0106】
図14は、入力画像および目標画像と、生成された画像処理プログラムを用いた画像処理についての第1の例を示す図である。
図14の例では、
図7に示した入力画像221,222と、これらに対応する目標画像221a,222aとが、学習データ生成部110によって生成されたものとする。目標画像221a,222aには、撮像対象物231におけるエッジ部231aに沿った直線221b,222bがそれぞれ描画されている。プログラム生成部120は、これらの入力画像221,222および目標画像221a,222aを用いて学習を行うことにより、画像処理プログラム130aを生成する。
【0107】
画像301は、実際の設備においてカメラによって撮像対象物231が撮像された撮像画像の例である。この画像301を生成された画像処理プログラム130aを用いて処理することで、エッジ部231aに沿った直線302aが正確に検出された画像302が出力される。
【0108】
図15は、入力画像および目標画像と、生成された画像処理プログラムを用いた画像処理についての第2の例を示す図である。
図14の処理によって生成された画像処理プログラム130aを用いて、
図7の入力画像223のようにボケが生じた撮像画像を処理した場合には、撮像画像からエッジ部231aが正確に検出されない可能性が高い。そこで、実際の設備において撮像画像にボケが生じやすくなった場合には、
図14の入力画像221,222および目標画像221a,222aに加えて、例えば
図7の入力画像223と、入力画像223に対応する目標画像223aを用いて、画像処理プログラムの再学習が実行される。これにより、画像処理プログラム130bが生成される。
【0109】
画像303は、実際の設備においてカメラによって撮像対象物231が撮像された撮像画像の例である。この画像303を生成された画像処理プログラム130bを用いて処理することで、エッジ部231aに沿った直線304aが正確に検出された画像304が出力される。
【0110】
このように、画像処理プログラムの学習において、異なる条件下で撮像された多くの入力画像と、これらに対応する目標画像とが用いられるほど、ロバスト性の高い画像処理を実現する画像処理プログラムを生成することができる。そして、プログラム生成装置100によれば、異なる条件下で撮像された多くの入力画像と、これらに対応する目標画像とを、短時間で効率的に生成することができる。また、これらの画像生成時のオペレータの作業負荷を軽減することができる。
【0111】
なお、上記の各実施の形態に示した装置(画像処理装置1およびプログラム生成装置100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0112】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0113】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【0114】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。