(57)【要約】  画像処理プログラムによる画像処理精度の低下の兆候を検出する。  記憶部（１ａ）は、複数のノード（Ｎ１〜Ｎ４）のそれぞれに部分プログラムが組み込まれた木構造をなす画像処理プログラム（２）を記憶する。演算部（１ｂ）は、画像処理プログラム（２）にしたがって、撮像装置によって撮像された撮像画像（３）に対する画像処理を実行するたびに、複数のノード（Ｎ１〜Ｎ４）のうち終端ノードを除く中間ノードのそれぞれにおける処理結果（１１〜１３）に基づいて特徴量（２０）を算出する。演算部（１ｂ）は、時間経過に伴う特徴量（２０）の変動量に基づいて、画像処理プログラム（２）の性能評価値を算出する。
2017126046.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードのそれぞれに部分プログラムが組み込まれた木構造をなす画像処理プログラムを記憶する記憶部と、
前記画像処理プログラムにしたがって、撮像装置によって撮像された撮像画像に対する画像処理を実行するたびに、前記複数のノードのうち終端ノードを除く中間ノードのそれぞれにおける処理結果に基づいて特徴量を算出し、時間経過に伴う前記特徴量の変動量に基づいて、前記画像処理プログラムの性能評価値を算出する演算部と、
を有する画像処理装置。
【請求項２】
前記演算部は、前記性能評価値に基づいて、前記画像処理プログラムを遺伝的プログラミングによって再生成すべきかを判定する、
請求項１記載の画像処理装置。
【請求項３】
前記演算部は、前記画像処理プログラムを遺伝的プログラミングによって生成する際に利用した入力画像に対して、前記画像処理プログラムにしたがって初期画像処理を施し、前記各中間ノードにおける処理結果に基づいて前記中間ノードごとにノード特徴量を算出し、前記ノード特徴量のバラツキ度合いを示す指標に基づいて閾値を算出し、
前記判定では、前記性能評価値と前記指標との比較に基づいて前記画像処理プログラムを再生成すべきかを判定する、
請求項２記載の画像処理装置。
【請求項４】
前記演算部は、前記画像処理プログラムを遺伝的プログラミングによって生成する際に利用した入力画像に対して、前記画像処理プログラムにしたがって初期画像処理を施し、前記各中間ノードにおける処理結果に基づいて初期特徴量を算出し、
前記評価値の算出では、前記特徴量と前記初期特徴量との距離を前記性能評価値として算出する、
請求項１または２記載の画像処理装置。
【請求項５】
前記評価値の算出では、直近の複数回数の前記画像処理の実行時にそれぞれ算出された前記特徴量のバラツキ度合いを示す指標を、前記性能評価値として算出する、
請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項６】
前記特徴量の算出では、前記各中間ノードに組み込まれた前記部分プログラムの種類ごとに異なる算出方法で、前記中間ノードごとにノード特徴量を算出し、前記ノード特徴量に基づいて前記特徴量を算出する、
請求項１，２，４，５のいずれか１項に記載の画像処理装置。
【請求項７】
コンピュータが、
複数のノードのそれぞれに部分プログラムが組み込まれた木構造をなす画像処理プログラムにしたがって、撮像装置によって撮像された撮像画像に対する画像処理を実行するたびに、前記複数のノードのうち終端ノードを除く中間ノードのそれぞれにおける処理結果に基づいて特徴量を算出し、
時間経過に伴う前記特徴量の変動量に基づいて、前記画像処理プログラムの性能評価値を算出する、
画像処理方法。
【請求項８】
コンピュータに、
複数のノードのそれぞれに部分プログラムが組み込まれた木構造をなす画像処理プログラムにしたがって、撮像装置によって撮像された撮像画像に対する画像処理を実行するたびに、前記複数のノードのうち終端ノードを除く中間ノードのそれぞれにおける処理結果に基づいて特徴量を算出し、
時間経過に伴う前記特徴量の変動量に基づいて、前記画像処理プログラムの性能評価値を算出する、
処理を実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法および画像処理プログラムに関する。
【背景技術】
【０００２】
所望の画像処理を実行する画像処理プログラムを、遺伝的プログラミングによって自動生成する技術が注目されている。この技術は、入力画像と目標となる処理結果（例えば、目標画像）とを用いて、画像処理のための部分プログラムを組み合わせて生成される画像処理プログラムを、遺伝的プログラミングによって最適化していくものである。【０００３】
また、画像処理アルゴリズムの作成に関する技術の例として、次のような外観検査装置が提案されている。この外観検査装置は、作成したアルゴリズムを用いて検査対象物の外観検査を実施し、その検査結果に基づいて評価値を算出し、評価値が所定の条件を満足するかによってアルゴリズムの再学習の必要性を判断する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２９３８２０号公報
【非特許文献】
【０００５】
【非特許文献１】青木紳也、長尾智晴、「木構造画像変換の自動構築法ＡＣＴＩＴ」、情報メディア学会誌Ｖｏｌ．５３，Ｎｏ．６、１９９９年６月２０日、ｐ．８９０−８９２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
遺伝的プログラミングにより生成された画像処理プログラムを用いた画像処理の実行時においては、その画像処理対象の画像が撮像される環境や撮像対象物の仕様などの条件が変化していくのにしたがって、画像処理精度は低下していく。そのため、所望の画像処理精度が維持できないと判定された時点で、撮像環境や撮像対象物を変えて撮像した入力画像とその目標となる処理結果とを加えて、画像処理プログラムの再学習が行われる。【０００７】
しかし、再学習により新たな画像処理プログラムが生成されるまでの間、画像処理プログラムを用いた画像処理を実行できない。例えば、製品の製造ライン上で部品の位置合わせや検査を行うために画像処理プログラムが用いられる場合、再学習により新たな画像処理プログラムが生成されるまで、製造ラインの運用を停止しなくてはならない。そのため、画像処理プログラムの再学習が必要となるタイミングを、画像処理精度が顕著に低下するよりどれだけ早く判定できるかが課題となる。【０００８】
１つの側面では、本発明は、画像処理プログラムによる画像処理精度の低下の兆候を検出可能な画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、次のような記憶部および演算部を有する画像処理装置が提供される。記憶部は、複数のノードのそれぞれに部分プログラムが組み込まれた木構造をなす画像処理プログラムを記憶する。演算部は、画像処理プログラムにしたがって、撮像装置によって撮像された撮像画像に対する画像処理を実行するたびに、複数のノードのうち終端ノードを除く中間ノードのそれぞれにおける処理結果に基づいて特徴量を算出し、時間経過に伴う特徴量の変動量に基づいて、画像処理プログラムの性能評価値を算出する。【００１０】
また、１つの案では、上記の画像処理装置と同様の処理がコンピュータによって実行される画像処理方法が提供される。
さらに、１つの案では、上記の画像処理装置と同様の処理をコンピュータに実行させる画像処理プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、画像処理プログラムによる画像処理精度の低下の兆候を検出できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る画像処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。
【図３】画像処理プログラムの再生成タイミングの例を示す図である。
【図４】認識率の遷移について示すグラフである。
【図５】プログラム再生成の必要性を評価するための指標の算出について説明するための図である。
【図６】部分プログラムの種類に応じたノード特徴量の算出方法の例を示す図である。
【図７】中間画像に分割領域を設定する場合の処理について説明するための図である。
【図８】時間経過に伴うノード特徴量の変化についての第１の例を示す図である。
【図９】時間経過に伴うノード特徴量の変化についての第２の例を示す図である。
【図１０】画像処理装置が備える処理機能の構成例を示すブロック図である。
【図１１】画像処理プログラムおよび基準情報の生成処理手順の例を示すフローチャートである。
【図１２】画像処理プログラムの生成処理手順の例を示すフローチャートである。
【図１３】生成された画像処理プログラムの実行時における処理手順の例を示すフローチャートである。
【図１４】特徴量の算出例を示す図である。
【図１５】第３の実施の形態に係る画像処理装置が備える処理機能の構成例を示すブロック図である。
【図１６】第３の実施の形態における画像処理プログラムおよび基準情報の生成処理手順の例を示すフローチャートである。
【図１７】第３の実施の形態における画像処理プログラムの実行時の処理手順の例を示すフローチャートである。
【図１８】第４の実施の形態に係るプログラム生成装置および画像処理装置の処理機能の構成例を示すブロック図である。
【図１９】第５の実施の形態に係る画像処理システムの構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る画像処理装置の構成例および処理例を示す図である。画像処理装置１は、記憶部１ａと演算部１ｂを有する。記憶部１ａは、例えば、ＲＡＭ（Random Access Memory）やＨＤＤ（Hard Disk Drive）などの記憶装置である。演算部１ｂは、例えば、プロセッサである。
【００１４】
記憶部１ａには、画像処理プログラム２が記憶される。画像処理プログラム２は、複数のノードのそれぞれに部分プログラムが組み込まれた木構造をなす。また、画像処理プログラム２は、遺伝的プログラミングを用いて生成されたものである。遺伝的プログラミングを用いた画像処理プログラム２の生成では、それぞれが入力画像と目標データとを含む１組以上の学習データを用いて学習が行われる。学習により、木構造におけるノードの構造や各ノードに組み込まれる部分プログラムが最適化される。
【００１５】
図１の例では、画像処理プログラム２は、ノードＮ１〜Ｎ４を有する。演算部１ｂが撮像画像３を入力として画像処理プログラム２を実行したとき、次のような処理が実行される。なお、撮像画像３は、図示しない撮像装置によって撮像された画像である。
【００１６】
ノードＮ１では、ノードＮ１に組み込まれた部分プログラムにしたがって、入力端子Ｉｎに入力された撮像画像３に対する処理が実行され、処理結果１１が出力される。ノードＮ２では、ノードＮ２に組み込まれた部分プログラムにしたがって、処理結果１１に対する処理が実行され、処理結果１２が出力される。ノードＮ３では、ノードＮ３に組み込まれた部分プログラムにしたがって、入力端子Ｉｎに入力された撮像画像３に対する処理が実行され、処理結果１３が出力される。ノードＮ４では、ノードＮ４に組み込まれた部分プログラムにしたがって、処理結果１２，１３に対する処理が実行される。ノードＮ４は終端ノードとなっており、ノードＮ４での処理結果は出力端子Ｏｕｔから出力される。
【００１７】
演算部１ｂは、図示しない撮像装置から取得された撮像画像３を入力として、画像処理プログラム２を実行する。演算部１ｂは、画像処理プログラム２にしたがって画像処理を実行するたびに、ノードＮ１〜Ｎ４のうち終端ノードを除く中間ノード、すなわちノードＮ１〜Ｎ３での処理結果１１〜１３に基づいて、特徴量２０を算出する（ステップＳ１）。
【００１８】
例えば、特徴量２０は、処理結果１１〜１３のそれぞれに基づいて算出されるノード特徴量の組み合わせとして算出される。例えば、処理結果１１〜１３が画像として得られる場合、各画像における輝度の平均値が、それぞれノード特徴量として算出される。また、例えば、各中間ノードに組み込まれた部分プログラムの種類ごとに異なる計算方法でノード特徴量が算出されてもよい。
【００１９】
演算部１ｂは、算出された特徴量２０の時間経過に伴う変動量に基づいて、画像処理プログラム２の性能評価値を算出する（ステップＳ２）。変動量は、例えば、画像処理プログラム２の生成時点で算出された初期特徴量と現在の特徴量２０との距離として算出される。あるいは、画像処理プログラム２が直近の所定回数だけ実行されたときにそれぞれ算出された特徴量の変動幅が、変動量として算出されてもよい。
【００２０】
ここで、画像処理プログラム２の生成時においては、撮像環境の変化や撮像対象物の仕様の変化の予測に応じた学習データを用いて学習が行われることで、ロバスト性の高い画像処理プログラム２が生成される。しかし、画像処理プログラム２を用いた運用を開始してから時間が経過すると、その生成時には予測がつかなかったような撮像環境の変化や撮像対象物の仕様の変化が生じる場合がある。その場合、画像処理プログラム２による画像処理精度は低下していく。ここでいう画像処理精度とは、撮像画像に対する処理結果が、画像処理プログラム２のユーザが所望するような結果にどの程度近いかを示す。
【００２１】
画像処理精度の判定方法としては、撮像画像に対する画像処理プログラム２を用いた最終処理結果から判定する方法がある。しかし、最終処理結果から画像処理精度が低いと判定された時点で画像処理プログラム２の再生成が必要となるので、画像処理プログラム２を用いた運用を一時的に停止する必要が生じる。
【００２２】
これに対して、画像処理プログラム２の中間ノードでの処理結果には、終端ノードでの最終処理結果と比較して、撮像環境の変化や撮像対象物の状態変化が大きく影響する。これは、中間ノードに組み込まれる部分プログラムの中には、画像処理の最終結果を得るために画像から特徴を抽出するための部分プログラムが含まれ、抽出される特徴が撮像環境の変化や撮像対象物の状態変化によって大きく変動する可能性があるからである。このため、中間ノードでの処理結果に基づく特徴量の変動量を用いることで、撮像環境の変化や撮像対象物の状態変化が敏感に捉えられる。
【００２３】
すなわち、上記特徴量の変動量に基づいて算出される性能評価値を用いることで、画像処理プログラム２による画像処理精度が大きく低下する前に、その精度低下の兆候を検出して、画像処理プログラム２を再生成すべきであることを判定することができる。したがって、ある程度の画像処理精度を維持した状態で画像処理プログラム２を用いた運用を継続しながら、撮像環境の変化や撮像対象物の状態変化に対応した新たな学習データを追加して画像処理プログラム２を再生成することができる。
【００２４】
［第２の実施の形態］
次に、第２の実施の形態として、図１に示した画像処理装置１が備える判定機能に加え、遺伝的プログラミングを用いた画像処理プログラムの生成機能を備えた画像処理装置について説明する。
【００２５】
図２は、第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。第２の実施の形態に係る画像処理装置１００は、例えば、図２に示すようなコンピュータとして実現される。
【００２６】
画像処理装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２７】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、画像処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２８】
バス１０９に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６、通信インタフェース１０７およびネットワークインタフェース１０８がある。
【００２９】
ＨＤＤ１０３は、画像処理装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００３０】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａの画面に表示させる。表示装置としては、液晶ディスプレイや有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００３１】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３２】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３３】
通信インタフェース１０７は、接続された外部デバイスとの間でデータの送受信を行う。本実施の形態では、通信インタフェース１０７には、外部デバイスとしてカメラ１０７ａが接続され、通信インタフェース１０７は、カメラ１０７ａから送信された画像データをプロセッサ１０１に送信する。
【００３４】
ネットワークインタフェース１０８は、ネットワーク１０８ａを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、画像処理装置１００の処理機能を実現することができる。
【００３５】
ところで、前述のように、画像処理装置１００は、遺伝的プログラミングによって画像処理プログラムを生成する機能を有する。この生成処理では、画像処理プログラムが木構造によって定義され、各ノードに部分プログラムが組み込まれる。そして、入力画像と目標となる処理結果（例えば、目標画像）とを含む学習データを用いた学習により、木構造におけるノードの構造や各ノードに組み込まれる部分プログラムが最適化される。
【００３６】
また、画像処理プログラムによって実現される画像処理としては、例えば、エッジ検出、領域検出、テンプレートマッチングがある。これらの画像処理では、例えば、入力画像における特定のエッジ、特定の領域、テンプレート画像の領域が、特定の画素値で表された画像が出力される。この場合、このような出力画像が、学習データに含まれる目標画像とされる。また、上記の画像処理では、例えば、入力画像における特定のエッジ、特定の領域、テンプレート画像の領域の位置情報が出力されてもよい。この場合、位置情報が、学習データに含まれる目標データとされる。
【００３７】
このような画像処理プログラムの用途の例としては、ＦＡ（Factory Automation）分野において、製品を撮像した画像に画像処理を施して所望の効果を得るという用途が考えられる。例えば、製品の外観を撮像した画像に画像処理を施して、欠陥が生じた箇所を抽出する、位置合わせを行う箇所を抽出する、特定の部品が搭載されているか否かを判定するといった用途が考えられる。
【００３８】
このような用途では、被写体となる製品の変更や改良、それに伴う撮像環境の変化などに応じて、画像処理アルゴリズムの再構築の必要が生じる場合がある。このため、画像処理アルゴリズムの構築の容易性が求められている。また、照明条件の変化や被写体の形状変化、位置姿勢のバラツキなどの状態変化に対するロバスト性が高い画像処理アルゴリズムを構築することが求められている。
【００３９】
遺伝的プログラミングを利用することで、入力画像とこれに対応する目標データとをあらかじめ用意しておくだけで、このような用途で使用可能な画像処理プログラムを容易に生成することができる。また、それぞれ撮像環境や撮像対象物の状態が異なる入力画像と目標データのペア（学習データ）を複数用意しておくことで、撮像環境の変化や撮像対象物の状態変化に対するロバスト性が高い画像処理アルゴリズムを自動生成することもできる。
【００４０】
ここで、図３は、画像処理プログラムの再生成タイミングの例を示す図である。画像処理プログラムの再生成が必要なタイミングを判定する方法としては、画像処理の最終処理結果に基づく画像処理精度を用いる方法が考えられる。図３では、画像処理の例として撮像対象物上の特定部分の位置を検出する処理を想定し、画像処理精度を示す指標の例として、特定部分の位置を正しく検出できた割合を示す認識率を示す。
【００４１】
例えば、ある製品を製造するための製造装置の開発が行われるとする。この場合、製造装置で用いられる画像処理プログラムも、製造装置の開発期間（期間Ｐ１）において生成される。画像処理プログラムの生成では、例えば、製品に搭載される部品５１，５２が写った撮像画像５０ａが、学習データの入力画像の１つとして用いられる。そして、撮像画像５０ａにおける部品５１のエッジ５１ａおよび部品５２のエッジ５２ａの各位置が、対応する目標データとして用いられる。
【００４２】
このようにして画像処理プログラムが生成され、製造装置も開発されると、製造装置および画像処理プログラムを用いた製品の製造が開始される（期間Ｐ２）。この期間Ｐ２において、例えば、照明の変化などの装置の周囲環境が徐々に変化していき、その変化に伴ってエッジ５１ａ，５２ａの認識率が徐々に低下していったとする。そして、タイミングＴ１において認識率が許容できないほど低下したとする。例えば、タイミングＴ１において、照明の光量低下によって部品５１，５２の明るさが低下した撮像画像５０ｂが撮像され、この撮像画像５０ｂからエッジ５１ａ，５２ａの位置を正しく検出できなかったとする。
【００４３】
この場合、部品５１，５２が暗く写った撮像画像（例えば撮像画像５０ｂ）を入力画像として含み、この撮像画像におけるエッジ５１ａ，５２ａの位置を目標データとして含む学習データが追加された学習により、画像処理プログラムが再生成される（期間Ｐ３）。そして、再生成された画像処理プログラムを用いた製品の製造が再開される（期間Ｐ４）。
【００４４】
この後、例えば、タイミングＴ２において製品の仕様が変更され、部品５１，５２の取り付け角度が変更されたとする。そして、この変更により、認識率が許容できないほど低下したとする。例えば、この仕様変更後に撮像された撮像画像５０ｃから、エッジ５１ａ，５２ａの位置を正しく検出できなかったとする。
【００４５】
この場合、部品５１，５２の取り付け位置が変更された製品を撮像した撮像画像（例えば撮像画像５０ｃを入力画像として含み、この撮像画像におけるエッジ５１ａ，５２ａの位置を目標データとして含む学習データが追加された学習により、画像処理プログラムが再生成される（期間Ｐ５）。そして、再生成された画像処理プログラムを用いた製品の製造が再開される（期間Ｐ６）。
【００４６】
以上の図３の例のように、画像処理プログラムを用いた画像処理の最終結果から画像処理精度を判断して、画像処理プログラムの再生成が必要か否かを判定することが可能である。しかし、この方法では、実際に画像処理の出力に問題が生じた時点で画像処理プログラムの再生成が行われるので、新たな画像処理プログラムが生成されるまで画像処理プログラムの利用を停止する必要があるという問題がある。
【００４７】
図４は、認識率の遷移について示すグラフである。図４のグラフ６１は、図３で説明したように画像処理の最終結果に基づく指標である認識率から画像処理精度の低下を判断し、画像処理プログラムの再生成を行った場合の認識率の遷移の例を示す。なお、時間軸方向においては画像プログラムの再生成の期間を含んでいない。グラフ６１によれば、認識率が所定の閾値まで低下した場合に、画像処理プログラムが再生成され、認識率が回復している。
【００４８】
これに対して、第２の実施の形態に係る画像処理装置１００は、グラフ６２に示すように、撮像環境の変化や撮像対象物の状態変化が生じたときに、画像処理の最終結果に基づく指標より大きく変化するような新たな指標に基づいて、画像処理プログラムの再生成が必要なタイミングを判定する。このような新たな指標が大きく変動した場合に画像処理プログラムの再生成が必要と判定することで、画像処理プログラムの精度が大きく低下する前に画像処理プログラムの再生成を開始することができる。その結果、画像処理プログラムを用いて製品の製造工程を停止させずに、画像処理プログラムを更新することができる。
【００４９】
図５は、プログラム再生成の必要性を評価するための指標の算出について説明するための図である。第２の実施の形態に係る画像処理装置１００は、画像処理プログラムの各中間ノードでの処理結果に基づいて、画像処理プログラムの再生成の必要性を評価するための指標を算出する。画像処理プログラムの中間ノードには、画像処理の最終結果を得るために入力画像内の特徴を検出するための画像フィルタが多く含まれる。これらの画像フィルタの処理結果は、撮像環境の変化や撮像対象物の状態変化に対して敏感に変化する。このため、中間ノードでの処理結果に基づく指標を用いることで、画像処理精度が劣化する兆候を早期に検知して、画像処理プログラムの再生成を開始できる。
【００５０】
図５では例として、ノードＮ１１〜Ｎ３１を有する画像処理プログラムを示している。この画像処理プログラムを用いた画像処理では、例えば、部品６２，６３が写っている撮像画像６１ａが入力されたとき、部品６２のエッジ６２ａと部品６３のエッジ６３ａの各位置が検出される。例えば、撮像画像６１ａが入力されたときの出力画像６１ｂには、エッジ６２ａに対応する直線６２ｂと、エッジ６３ａに対応する直線６３ｂとが特定の輝度で表される。
【００５１】
画像処理装置１００は、図５のような画像処理プログラムを実行するたびに、終端ノード（ノードＮ３１）を除く中間ノード（ノードＮ１１〜Ｎ３０）のそれぞれにおける処理結果に基づいて、上記の指標を算出する。図５の例では、中間ノードであるノードＮ１１〜Ｎ３０のそれぞれにおける処理結果は、画像として出力される。以下、中間ノードでの処理結果を「中間処理結果」と記載し、中間処理結果として画像が出力される場合、その画像を「中間画像」と記載する。例えば、ノードＮ１５での中間処理結果として中間画像６４が出力され、ノードＮ２６での中間処理結果として中間画像６５が出力され、ノードＮ２９での中間処理結果として中間画像６６が出力される。
【００５２】
画像処理装置１００は、各中間ノードでの中間処理結果に基づいて、画像処理プログラムの再生成の必要性を評価するための指標を算出する。以下、この指標を「特徴量」と記載する。具体的には、画像処理装置１００は、各中間処理結果に基づいて中間処理結果ごとに「ノード特徴量」を算出する。そして、特徴量は、ノード特徴量の集合として表される。画像処理プログラムの中間ノード数をｍ個とすると、特徴量Ｆは（ＭＦ1，ＭＦ2，・・・，ＭＦm）と表すことができる。
【００５３】
各中間ノードで中間画像が出力される場合、ノード特徴量は、例えば、中間画像における平均輝度として算出することができる。また、中間ノードに組み込まれている部分プログラムの種類ごとに、中間処理結果を基に異なる方法でノード特徴量が算出されてもよい。例えば、次の図６に示すような算出方法で中間画像からノード特徴量が算出されてもよい。
【００５４】
図６は、部分プログラムの種類に応じたノード特徴量の算出方法の例を示す図である。
部分プログラムがＳｍｏｏｔｈ（平滑化）フィルタまたはＩｎｖｅｒｓｅ（階調反転）フィルタの場合、ノード特徴量は、中間画像における平均輝度として算出される。
【００５５】
部分プログラムがＳｏｂｅｌ（１次微分）フィルタまたはＬａｐｌａｃｅ（２次微分）フィルタの場合、ノード特徴量は、中間画像における輝度の最大値または最小値、またはその両方として算出される。
【００５６】
部分プログラムがＳｕｂ（差分）フィルタの場合、ノード特徴量は、中間画像の画素のうち、画素値が正となる画素の数または割合、もしくは、差分値が負となる画素の数または割合、もしくはその両方として算出される。
【００５７】
部分プログラムがＡｄｄ（加算）フィルタの場合、ノード特徴量は、中間画像の画素のうち、画素値が０より大きい所定値（例えば２５５）以上となる画素の数または割合として算出される。
【００５８】
部分プログラムがＤｉｆｆ（差分の絶対値）フィルタの場合、ノード特徴量は、中間画像の画素のうち、画素値が０である画素の数または割合として算出される。
部分プログラムがＴｈｒｅｓｈｏｌｄ（閾値処理）フィルタ、Ａｎｄ（論理積）フィルタ、Ｏｒ（論理和）フィルタのいずれかである場合、ノード特徴量は、２値画像である中間画像の画素のうち、一方の画素値を有する画素（例えば白画素）の数または割合として算出される。
【００５９】
部分プログラムがＥｒｏｄｅ（収縮）フィルタの場合、ノード特徴量は、２値画像である中間画像の画素のうち、一方の画素値を有する画素（例えば白画素）の減少量として算出される。
【００６０】
部分プログラムがＤｉｌａｔｅ（膨張）フィルタの場合、ノード特徴量は、２値画像である中間画像の画素のうち、一方の画素値を有する画素（例えば白画素）の増加量として算出される。
【００６１】
これらの例のように、中間ノードに組み込まれている部分プログラムごとに異なる方法でノード特徴量を算出することで、撮像環境の変化や撮像対象物の状態変化をより正確に捉えることができる。その結果、画像処理プログラムの再生成タイミングの判定精度を向上させることができる。
【００６２】
図７は、中間画像に分割領域を設定する場合の処理について説明するための図である。図７に示すように、中間画像を複数の分割領域に分割し、分割領域ごとにノード特徴量が算出されてもよい。図７の例では、中間画像が横方向に３つに等分割されている。そして、中間画像６４における分割領域６４ａ，６４ｂ，６４ｃ、および中間画像６６における分割領域６６ａ，６６ｂ，６６ｃのそれぞれについて、ノード特徴量が算出される。また、中間画像におけるいずれか１つの分割領域からノード特徴量が算出されてもよい。
【００６３】
図８は、時間経過に伴うノード特徴量の変化についての第１の例を示す図である。また、図９は、時間経過に伴うノード特徴量の変化についての第２の例を示す図である。
図８では、図７に示したノードＮ１５から出力された中間画像を基に算出されたノード特徴量の変化を示している。ここでは、中間画像を横方向に３つに等分割して得られる分割領域ごとにノード特徴量を算出したものとする。グラフ７１ａは、中間画像のうち左側の分割領域（第１領域）に基づくノード特徴量の変化を示す。グラフ７１ｂは、中間画像のうち中間の分割領域（第２領域）に基づくノード特徴量の変化を示す。グラフ７１ｃは、中間画像のうち右側の分割領域（第３領域）に基づくノード特徴量の変化を示す。
【００６４】
また、図９では、図７に示したノードＮ２９から出力された中間画像を基に算出されたノード特徴量の変化を示している。グラフ７２ａは、中間画像のうち左側の分割領域（第１領域）に基づくノード特徴量の変化を示す。グラフ７２ｂは、中間画像のうち中間の分割領域（第２領域）に基づくノード特徴量の変化を示す。グラフ７２ｃは、中間画像のうち右側の分割領域（第３領域）に基づくノード特徴量の変化を示す。
【００６５】
なお、図８，図９のいずれにおいても、ノード特徴量は、平均輝度として算出されている。
また、図８，図９に示すグラフ７０は、画像処理プログラムの実行により入力された撮像画像から特定の領域が正しく認識されたかを示す認識結果の遷移を示す。認識結果「１」は正しく認識できたことを示し、認識結果「０」は正しく認識できなかったことを示す。グラフ７０によれば、タイミングＴ１１までは特定の領域が正しく認識できていたが、タイミングＴ１１からは特定の領域が正しく認識できなくなっている。
【００６６】
グラフ７１ａ〜７１ｃとグラフ７０とを比較すると、特にグラフ７１ｂでは、タイミングＴ１１より早い段階からノード特徴量の低下が始まっていることがわかる。また、グラフ７２ａ〜７２ｃとグラフ７０とを比較すると、特にグラフ７２ｂでは、タイミングＴ１１より早い段階からノード特徴量の低下が始まっていることがわかる。したがって、時間結果に伴うノード特徴量の低下量を指標として用いることで、実際に画像処理精度が大きく低下するより前のタイミングで、画像処理プログラムの再生成が必要であることを判定することができる。
【００６７】
また、図８，図９によれば、第１領域や第３領域より第２領域に基づくノード特徴量を用いる方が、画像処理プログラムの再生成が必要なタイミングを正確に検知できることがわかる。この原因は、認識の対象とする特定の領域が第２領域に写っていることにあると考えられる。そこで、画像処理装置１００は、各中間ノードに対応するノード特徴量を、中間画像の第２領域の情報のみから算出してもよい。これにより、再生成の必要性の判定精度を低下させることなく、ノード特徴量の算出処理時間を短縮でき、その結果、画像処理プログラムの再生成が必要かを判定するまでの時間を短縮できる。
【００６８】
中間画像に設定された分割領域のうちどの分割領域を用いてノード特徴量を算出するかは、認識の対象とする特定の領域が写っている可能性の高さから指定することができる。この指定は、例えば、製品の製造装置を管理する管理者の操作によって行うことができる。
【００６９】
次に、画像処理装置１００の詳細について説明する。
図１０は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置１００は、学習データ記憶部１１１、部分プログラム記憶部１１２、プログラム記憶部１１３、基準情報記憶部１１４、中間処理結果記憶部１１５、撮像画像取得部１２１、プログラム生成部１２２、基準情報算出部１２３、プログラム実行部１２４および判定処理部１２５を有する。
【００７０】
学習データ記憶部１１１、部分プログラム記憶部１１２、プログラム記憶部１１３、基準情報記憶部１１４および中間処理結果記憶部１１５は、例えば、ＲＡＭ１０２あるいはＨＤＤ１０３などの画像処理装置１００が備える記憶装置の記憶領域として実現される。撮像画像取得部１２１、プログラム生成部１２２、基準情報算出部１２３、プログラム実行部１２４および判定処理部１２５の各処理は、例えば、画像処理装置１００が備えるプロセッサ１０１が所定のプログラムを実行することで実現される。
【００７１】
学習データ記憶部１１１には、画像プログラムの生成時に利用される学習データが記憶される。各学習データには、入力画像と、入力画像に対して画像処理を施した場合の目標となる目標データまたは目標画像とが含まれる。
【００７２】
部分プログラム記憶部１１２は、木構造をなす画像処理プログラムの各ノードに組み込むことが可能な複数種類の部分プログラムが記憶される。
プログラム記憶部１１３には、遺伝的プログラミングによって生成された画像処理プログラムが記憶される。実際には、プログラム記憶部１１３には、生成された画像処理プログラムのノードの接続構成と、各ノードに組み込まれた部分プログラムの識別情報とが記憶されればよい。
【００７３】
基準情報記憶部１１４には、生成された画像処理プログラムを実行した際に、画像処理プログラムの再生成が必要かを判定するために利用される各種の基準情報が記憶される。
中間処理結果記憶部１１５には、生成された画像処理プログラムを実行した際に、各中間ノードでの処理によって出力された中間処理結果が記憶される。
【００７４】
撮像画像取得部１２１は、カメラ１０７ａによって撮像された撮像画像を取得する。取得された撮像画像は、例えば、学習データに含まれる入力画像として利用される。また、撮像画像取得部１２１は、生成された画像処理プログラムをプログラム実行部１２４が実行する際に、カメラ１０７ａから撮像画像を取得してプログラム実行部１２４に出力する。
【００７５】
プログラム生成部１２２は、学習データ記憶部１１１に記憶された学習データを用いて、遺伝的プログラミングによって画像処理プログラムを生成する。この生成時において、プログラム生成部１２２は、各ノードに組み込む部分プログラムを部分プログラム記憶部１１２から取得する。プログラム生成部１２２は、生成した画像処理プログラムについての情報をプログラム記憶部１１３に格納する。
【００７６】
基準情報算出部１２３は、画像処理プログラムの生成時に用いた各学習データを用いて、生成された画像処理プログラムを実行し、各中間ノードでの中間処理結果を基に基準情報を算出して、基準情報記憶部１１４に格納する。基準情報は、生成された画像処理プログラムがプログラム実行部１２４に実行された際に、画像処理プログラムの再生成が必要かを判定するために利用される。基準情報には、初期特徴量と閾値とがある。
【００７７】
プログラム実行部１２４は、プログラム記憶部１１３の情報に基づいて、生成された画像処理プログラムを構築し、撮像画像取得部１２１によって取得された撮像画像を入力として、構築された画像処理プログラムを実行する。また、プログラム実行部１２４は、中間処理結果出力部１２６を有する。中間処理結果出力部１２６は、画像処理プログラムの実行時に各中間ノードから出力された中間処理結果を、中間処理結果記憶部１１５に格納する。
【００７８】
判定処理部１２５は、中間処理結果記憶部１１５に格納された中間処理結果に基づいて特徴量を算出する。判定処理部１２５は、算出した特徴量と、基準情報記憶部１１４に格納された基準情報とに基づいて、画像処理プログラムの再生成が必要かを判定する。
【００７９】
次に、画像処理装置１００の処理についてフローチャートを用いて説明する。
まず、図１１は、画像処理プログラムおよび基準情報の生成処理手順の例を示すフローチャートである。
【００８０】
［ステップＳ１１］プログラム生成部１２２は、画像処理プログラムの生成時に用いる学習データを設定する。例えば、画像処理プログラムの初回生成時には、プログラム生成部１２２は、ユーザの操作に応じて、撮像画像取得部１２１によって取得された撮像画像を、学習データの入力画像として学習データ記憶部１１１に格納する。また、プログラム生成部１２２は、入力画像に対応する目標画像または目標データを、ユーザの操作に応じて生成し、入力画像に対応づけて学習データ記憶部１１１に格納する。これにより、学習データ記憶部１１１には、１組以上の学習データが記憶される。
【００８１】
また、画像処理プログラムの再生成時には、プログラム生成部１２２は、前回の再生成から現在までにプログラム実行部１２４でのプログラム実行時に入力画像として利用された撮像画像の少なくとも一部を、学習データの入力画像として学習データ記憶部１１１に格納する。また、プログラム生成部１２２は、それらの入力画像に対応する目標画像または目標データを、ユーザの操作に応じて生成し、入力画像に対応づけて学習データ記憶部１１１に格納する。これにより、学習データ記憶部１１１には、新たな学習データが追加される。
【００８２】
［ステップＳ１２］プログラム生成部１２２は、学習データ記憶部１１１に記憶された学習データを用いて、遺伝的プログラミングによって画像処理プログラムを生成する。プログラム生成部１２２は、生成した画像処理プログラムについての情報をプログラム記憶部１１３に格納する。
【００８３】
［ステップＳ１３］基準情報算出部１２３は、ステップＳ１２のプログラム生成処理において利用された学習データの中から、１つを選択する。
［ステップＳ１４］基準情報算出部１２３は、選択した学習データの入力画像を入力として、生成した画像処理プログラムを実行し、画像処理プログラムの各中間ノードでの中間処理結果を算出する。基準情報算出部１２３は、算出した各中間処理結果に基づいて特徴量を算出する。前述のように、特徴量は、各中間ノードでの中間処理結果に基づいて算出されたノード特徴量の集合として表される。
【００８４】
［ステップＳ１５］基準情報算出部１２３は、プログラム生成処理において利用されたすべての学習データについて処理済みかを判定する。未処理の学習データがある場合、ステップＳ１３に戻り、未処理の学習データが１つ選択される。一方、すべての学習データについて処理済みの場合、ステップＳ１６の処理が実行される。
【００８５】
［ステップＳ１６］基準情報算出部１２３は、各学習データに基づいて算出された特徴量を用いて、基準情報として初期特徴量Ｆ０と閾値ＴＨとを算出し、基準情報記憶部１１４に格納する。
【００８６】
ステップＳ１２のプログラム生成処理でｎ組の学習データが利用されたとすると、ステップＳ１６が実行される時点でｎ組の特徴量が算出されている。基準情報算出部１２３は、これらのｎ組の特徴量の平均を、初期特徴量Ｆ０として算出する。具体的には、基準情報算出部１２３は、ｎ組の特徴量に含まれる中間ノードごとのノード特徴量の平均値を算出する。画像処理プログラムのノード数をｍとすると、この演算により、ノード特徴量の平均値がｍ個含まれる初期特徴量Ｆ０が算出される。なお、図６に示したように中間ノードに組み込まれている部分プログラムの種類ごとに異なる方法でノード特徴量が算出された場合には、各ノード特徴量が正規化された上で平均値が算出される。
【００８７】
また、基準情報算出部１２３は、ｎ組の特徴量のバラツキ度合いを示す数値を、閾値ＴＨとして算出する。例えば、基準情報算出部１２３は、ｎ組の特徴量のそれぞれと初期特徴量Ｆ０との距離を算出する。距離としては、例えば、ユークリッド距離またはマハラノビス距離が算出される。基準情報算出部１２３は、算出されたｎ個の距離の平均値ＡＶＥと標準偏差σとを算出する。基準情報算出部１２３は、平均値ＡＶＥと標準偏差σとの加算値を、閾値ＴＨとして算出する。
【００８８】
図１２は、画像処理プログラムの生成処理手順の例を示すフローチャートである。この図１２の処理は、図１１のステップＳ１２の処理に対応する。
［ステップＳ１２１］プログラム生成部１２２は、母集団に含める複数の初期個体を生成する。各初期個体のノードには、部分プログラム記憶部１１２に記憶された複数種類の部分プログラムの中から部分プログラムがランダムに選択されて組み込まれる。
【００８９】
［ステップＳ１２２］プログラム生成部１２２は、母集団の中からランダムに一定数の親個体を選択する。以下、例として２つの親個体が選択されるものとする。
［ステップＳ１２３］プログラム生成部１２２は、選択された２つの親個体に対して進化過程の処理を施すことで、２以上の一定数の子個体を生成する。進化過程では、２つの親個体に対して交叉処理および突然変異処理が行われる。２つの親個体に対して、それぞれ異なる交叉処理や突然変異処理が行われることで、３つ以上の子個体が生成されてもよい。
【００９０】
［ステップＳ１２４］プログラム生成部１２２は、ステップＳ１２２で選択された親個体、およびステップＳ１２３で生成された子個体のそれぞれについて、適応度を算出する。この処理では、対象の個体それぞれを用いた画像処理が、各学習データに含まれる各入力画像に対して実行され、実行後の画像と対応する目標画像または目標データとが比較されることで適応度が計算される。学習データが複数組存在する場合、個体それぞれについて、複数組の学習データをそれぞれ用いて得られた適応度の平均値が算出される。
【００９１】
なお、ステップＳ１２１で母集団が生成された時点で母集団に含まれる初期個体の適応度が算出されてもよい。この場合、ステップＳ１２４では、生成された子個体の適応度だけが算出される。
【００９２】
［ステップＳ１２５］プログラム生成部１２２は、生成された子個体および元の親個体のうちのいずれかの適応度が、所定の閾値より大きいかを判定する。すべての適応度が閾値以下である場合には、ステップＳ１２６の処理が実行される。１以上の適応度が閾値より大きい場合には、ステップＳ１２７の処理が実行される。
【００９３】
［ステップＳ１２６］プログラム生成部１２２は、ステップＳ１２２で選択された親個体、およびステップＳ１２３で生成された子個体の中から、生存選択を行う。例えば、算出された適応度が最大の個体が第１の生存個体として選択され、さらに残りの個体の中から、適応度に応じた確率で第２の生存個体が選択される。プログラム生成部１２２は、母集団に含まれる個体のうち、ステップＳ１２２で親個体として選択された２つの個体を、第１の生存個体および第２の生存個体に入れ替える。これにより、母集団の世代が更新される。
【００９４】
［ステップＳ１２７］プログラム生成部１２２は、ステップＳ１２２で選択された親個体、およびステップＳ１２３で生成された子個体のうち、適応度が最大の個体を最良個体として選択する。選択された最良個体が、最適化された画像処理プログラムとなる。プログラム生成部１２２は、選択された最良個体を表す情報をプログラム記憶部１１３に保存する。
【００９５】
図１３は、生成された画像処理プログラムの実行時における処理手順の例を示すフローチャートである。
［ステップＳ２１］撮像画像取得部１２１は、カメラ１０７ａに画像を撮像させ、撮像画像をカメラ１０７ａから取得する。
【００９６】
［ステップＳ２２］プログラム実行部１２４は、プログラム記憶部１１３の情報に基づいて、生成された画像処理プログラムを構築する。プログラム実行部１２４は、撮像画像取得部１２１によって取得された撮像画像を入力として、構築された画像処理プログラムを実行し、最終処理結果を出力する。また、中間処理結果出力部１２６は、画像処理プログラムの実行時に各中間ノードから出力された中間処理結果を中間処理結果記憶部１１５に格納する。
【００９７】
［ステップＳ２３］判定処理部１２５は、中間処理結果記憶部１１５に記憶された中間ノードごとの中間処理結果に基づいて、特徴量Ｆを算出する。この算出では、判定処理部１２５は、中間ノードごとに、中間処理結果に基づいてノード特徴量を算出する。ノード数がｍの場合、特徴量Ｆにはｍ個のノード特徴量が含まれる。
【００９８】
［ステップＳ２４］判定処理部１２５は、算出した特徴量Ｆと、基準情報記憶部１１４に記憶された初期特徴量Ｆ０との距離Ｄ１を算出する。距離Ｄ１は、図１１のステップＳ１６と同じ方法で計算される。この距離Ｄ１は、画像処理プログラムの性能評価値を示す。
【００９９】
［ステップＳ２５］判定処理部１２５は、算出した距離Ｄ１と、基準情報記憶部１１４に記憶された閾値ＴＨとを比較する。判定処理部１２５は、距離Ｄ１が閾値ＴＨより大きい場合、画像処理プログラムの再生成が必要と判定して、ステップＳ２６の処理を実行する。一方、判定処理部１２５は、距離Ｄ１が閾値ＴＨ以下の場合、画像処理プログラムの再生成が不要と判定して処理を終了する。
【０１００】
［ステップＳ２６］判定処理部１２５は、例えば、画像処理プログラムの再生成が必要である旨を示す情報を表示装置１０４ａに表示する。そして、遺伝的プログラミングによって画像処理プログラムが再生成される。このとき、判定処理部１２５は、例えば、プログラム実行部１２４が直近の複数回画像処理プログラムを実行したときに入力された撮像画像を、新たな学習データの入力画像として学習データ記憶部１１１に格納する。また、ユーザの操作に応じた処理により、新たな入力画像に対応する目標画像または目標データが生成され、入力画像に対応付けて学習データ記憶部１１１に格納される。これにより、学習データ記憶部１１１に新たな学習データが追加される。そして、図１１に示した処理が実行される。図１１のステップＳ１１では、プログラム生成部１２２は、既存の学習データと追加された学習データとを、プログラム生成により利用する学習データに設定する。
【０１０１】
図１４は、特徴量の算出例を示す図である。この図１４では、説明を簡単にするために、画像処理プログラムに第１ノードおよび第２ノードの２つの中間ノードのみ含まれるものとする。
【０１０２】
図１４のグラフ８１は、プログラム生成部１２２によって画像処理プログラムが生成された際の特徴量の分布を示す。グラフ８１における丸印は、それぞれ個別の入力画像を入力として画像処理プログラムを実行したときに算出された特徴量についての、第１ノードのノード特徴量と第２ノードのノード特徴量の座標空間における位置を示す。図１１のステップＳ１６では、これらの特徴量に基づいて初期特徴量Ｆ０と閾値ＴＨが算出される。グラフ８１に示すように、初期特徴量Ｆ０を中心として閾値ＴＨを半径とする円８３の中に上記各特徴量が含まれるように、初期特徴量Ｆ０と閾値ＴＨが算出される。
【０１０３】
一方、図１４のグラフ８２は、生成された画像処理プログラムがプログラム実行部１２４によって実行された際の特徴量の分布を示す。グラフ８２における丸印は、それぞれ個別の撮像画像を入力として画像処理プログラムを実行したときに算出された特徴量についての、第１ノードのノード特徴量と第２ノードのノード特徴量の座標空間における位置を示す。図１３のステップＳ２５の判定処理は、算出された特徴量の座標空間上の位置が円８３に含まれるか否かを判定することと同等である。
【０１０４】
特徴量の位置が円８３に含まれる場合、プログラム生成時からの特徴量の変動量が一定の範囲内に収まっていることから、撮像環境の変化や撮像対象物の状態変化が大きくないと判断される。この場合、画像処理プログラムの再生成の必要がないと判定される。一方、特徴量の位置が円８３の範囲外である場合、プログラム生成時からの特徴量の変動量が一定の範囲から逸脱していることから、撮像環境の変化または撮像対象物の状態変化が許容できないほど大きくなったと判断される。この場合、画像処理プログラムの再生成が必要であると判定される。
【０１０５】
このように、第２の実施の形態に係る画像処理装置１００によれば、生成された画像処理プログラムを実行するたびに、画像処理プログラムの性能低下の兆候を正確に捉え、画像処理精度が大きく低下する前に画像処理プログラムの再生成が必要であることを判定できる。その結果、画像処理プログラムを用いた運用を停止せずに、再学習により画像処理プログラムを生成し直すことができる。
【０１０６】
［第３の実施の形態］
次に、第３の実施の形態に係る画像処理装置について説明する。第３の実施の形態に係る画像処理装置は、第２の実施の形態に係る画像処理装置１００の処理の一部を変形したものである。
【０１０７】
図１５は、第３の実施の形態に係る画像処理装置が備える処理機能の構成例を示すブロック図である。図１５では、図１０と共通する構成要素には同じ符号を付して示している。第３の実施の形態に係る画像処理装置１００ａは、図１０の基準情報記憶部１１４、中間処理結果記憶部１１５、基準情報算出部１２３、判定処理部１２５の代わりに、基準情報記憶部１１４ａ、中間処理結果記憶部１１５ａ、基準情報算出部１２３ａ、判定処理部１２５ａを備える。
【０１０８】
基準情報算出部１２３ａは、基準情報として閾値ＴＨのみ算出する点で図１０の基準情報算出部１２３とは異なり、基準情報記憶部１１４ａは、基準情報として閾値ＴＨのみ記憶する点で図１０の基準情報記憶部１１４とは異なる。判定処理部１２５ａは、プログラム実行部１２４により画像処理プログラムが実行された際に算出した特徴量を、中間処理結果記憶部１１５ａに格納する点と、距離Ｄ１の代わりに指標Ｄ２を算出する点で、図１０の判定処理部１２５とは異なる。中間処理結果記憶部１１５ａは、プログラム実行部１２４によって直近のｐ回、画像処理プログラムが実行された際に判定処理部１２５ａによって算出された特徴量をさらに保持する点で、図１０の中間処理結果記憶部１１５と異なる（なお、ｐは２以上の整数）。すなわち、中間処理結果記憶部１１５ａは、中間処理結果に加え、ｐ組の特徴量を保持する。
【０１０９】
図１６は、第３の実施の形態における画像処理プログラムおよび基準情報の生成処理手順の例を示すフローチャートである。この図１６の処理では、図１１の処理におけるステップＳ１６がステップＳ１６ａに置き換えられている。なお、ステップＳ１３〜Ｓ１５の処理は、基準情報算出部１２３の代わりに基準情報算出部１２３ａによって実行されるが、その処理内容は同じである。
【０１１０】
［ステップＳ１６ａ］基準情報算出部１２３ａは、各学習データに基づいて算出された特徴量を用いて、基準情報として閾値ＴＨを算出し、基準情報記憶部１１４ａに格納する。閾値ＴＨの算出方法は、図１１のステップＳ１６と同様である。
【０１１１】
図１７は、第３の実施の形態における画像処理プログラムの実行時の処理手順の例を示すフローチャートである。この図１７の処理は、図１３の処理におけるステップＳ２３〜Ｓ２５がステップＳ２３ａ〜Ｓ２５ａに置き換えられている。なお、ステップＳ２２では、中間処理結果は中間処理結果記憶部１１５ａに格納される。
【０１１２】
［ステップＳ２３ａ］判定処理部１２５ａは、図１３のステップＳ２３と同様の手順で、中間処理結果記憶部１１５ａに記憶された中間ノードごとの中間処理結果に基づいて、特徴量Ｆを算出する。中間ノードの数がｍの場合、特徴量Ｆにはｍ個のノード特徴量が含まれる。判定処理部１２５ａは、算出した特徴量Ｆを中間処理結果記憶部１１５ａに保存する。このとき、判定処理部１２５ａは、直近に算出されたｐ組の特徴量Ｆだけが中間処理結果記憶部１１５ａに保持されるように制御する。
【０１１３】
［ステップＳ２４ａ］判定処理部１２５ａは、中間処理結果記憶部１１５ａからｐ組の特徴量Ｆを読み込む。判定処理部１２５ａは、ｐ組の特徴量Ｆのバラツキ度合いを示す指標Ｄ２を算出する。この指標Ｄ２は、画像処理プログラムの性能評価値を示す。
【０１１４】
指標Ｄ２は、例えば、閾値ＴＨと同様の計算方法によって算出される。すなわち、判定処理部１２５ａは、まず、ｐ組の特徴量Ｆの平均である平均特徴量を算出する。具体的には、判定処理部１２５ａは、ｐ組の特徴量に含まれる中間ノードごとのノード特徴量の平均値を算出する。画像処理プログラムのノード数をｍとすると、この演算により、ノード特徴量の平均値がｍ個含まれる平均特徴量が算出される。なお、図６に示したように中間ノードに組み込まれている部分プログラムの種類ごとに異なる方法でノード特徴量が算出された場合には、各ノード特徴量が正規化された上で平均値が算出される。次に、基準情報算出部１２３ａは、ｐ組の特徴量のそれぞれと平均特徴量との距離を算出する。基準情報算出部１２３ａは、算出されたｎ個の距離の平均値と標準偏差とを算出する。基準情報算出部１２３ａは、平均値と標準偏差との加算値を、指標Ｄ２として算出する。
【０１１５】
［ステップＳ２５ａ］判定処理部１２５ａは、算出した指標Ｄ２と、基準情報記憶部１１４に記憶された閾値ＴＨとを比較する。判定処理部１２５ａは、指標Ｄ２が閾値ＴＨより大きい場合、画像処理プログラムの再生成が必要と判定して、ステップＳ２６の処理を実行する。一方、判定処理部１２５ａは、指標Ｄ２が閾値ＴＨ以下の場合、画像処理プログラムの再生成が不要と判定して処理を終了する。
【０１１６】
以上の画像処理装置１００ａによれば、直近の所定回数の画像処理プログラムの実行時にそれぞれ算出された特徴量Ｆの変動量に基づいて、撮像環境の変化や撮像対象物の状態変化の大きさが検出される。これにより、画像処理プログラムの性能低下の兆候を正確に捉え、画像処理精度が大きく低下する前に画像処理プログラムの再生成が必要であることを判定できる。
【０１１７】
なお、上記の画像処理装置１００ａは、直近の所定回数の画像処理プログラムの実行時にそれぞれ算出された特徴量Ｆを用いて指標Ｄ２を算出した。しかし、他の例として、画像処理装置１００ａは、直近の一定時間内に画像処理プログラムを実行したときにそれぞれ算出された特徴量Ｆを用いて、指標Ｄ２を算出してもよい。この場合、指標Ｄ２の算出のために利用される特徴量Ｆの数は可変となる。
【０１１８】
［第４の実施の形態］
第２の実施の形態に係る画像処理装置１００、または第３の実施の形態に係る画像処理装置１００ａが備えるプログラム生成機能とプログラム実行機能は、それぞれ個別の装置が備えていてもよい。以下、そのようなシステムを第４の実施の形態として例示する。
【０１１９】
図１８は、第４の実施の形態に係るプログラム生成装置および画像処理装置の処理機能の構成例を示すブロック図である。この図１８では、第２の実施の形態に係る画像処理装置１００が備えるプログラム生成機能とプログラム実行機能を、それぞれプログラム生成装置２００、画像処理装置３００が備えるものとする。なお、図１８では、図１０と同じ構成要素には同じ符号を付している。また、プログラム生成装置２００および画像処理装置３００は、例えば、図２に示したようなハードウェア構成のコンピュータとして実現可能である。
【０１２０】
プログラム生成装置２００は、学習データ記憶部１１１、部分プログラム記憶部１１２、プログラム生成部１２２および基準情報算出部１２３を有する。ただし、プログラム生成部１２２は、学習データに入力画像として登録する撮像画像をカメラから取得する場合には、例えば、撮像画像を画像処理装置３００の撮像画像取得部１２１を介して取得する。また、プログラム生成部１２２は、生成した画像処理プログラムを画像処理装置３００に送信し、画像処理装置３００のプログラム記憶部１１３に格納する。また、基準情報算出部１２３は、算出した基準情報を画像処理装置３００に送信し、画像処理装置３００の基準情報記憶部１１４に保存する。
【０１２１】
画像処理装置３００は、プログラム記憶部１１３、基準情報記憶部１１４、中間処理結果記憶部１１５、撮像画像取得部１２１、プログラム実行部１２４および判定処理部１２５を有する。なお、画像処理装置３００にはカメラ１０７ａが接続されており、撮像画像取得部１２１は、カメラ１０７ａから撮像画像を取得する。
【０１２２】
このような構成により、遺伝的プログラミングによる画像処理プログラムの生成および基準情報の算出が、プログラム生成装置２００で実行される。そして、生成された画像処理プログラムの実行および画像処理プログラムを再生成すべきかの判定が、画像処理装置３００で実行される。
【０１２３】
なお、第３の実施の形態に係る画像処理装置１００ａが備えるプログラム生成機能とプログラム実行機能を、それぞれプログラム生成装置２００、画像処理装置３００が備える場合には、図１８の構成は次のように変形される。プログラム生成装置２００は、基準情報算出部１２３の代わりに基準情報算出部１２３ａを備える。画像処理装置３００は、基準情報記憶部１１４、中間処理結果記憶部１１５、判定処理部１２５の代わりに、基準情報記憶部１１４ａ、中間処理結果記憶部１１５ａ、判定処理部１２５ａを備える。
【０１２４】
［第５の実施の形態］
図１９は、第５の実施の形態に係る画像処理システムの構成例を示す図である。第５の実施の形態に係る画像処理システムは、複数台の端末装置４１０，４２０，４３０とサーバ装置４４０とを有する。端末装置４１０，４２０，４３０は、ネットワーク４５０を介してサーバ装置４４０と接続されている。また、端末装置４１０，４２０，４３０には、カメラ４１１，４２１，４３１がそれぞれ接続されている。なお、端末装置４１０，４２０，４３０およびサーバ装置４４０は、例えば、図２に示したようなハードウェア構成のコンピュータとして実現可能である。
【０１２５】
図１９に示した構成の画像処理システムにおいて、第２の実施の形態に係る画像処理装置１００または第３の実施の形態に係る画像処理装置１００ａの各処理機能を実現することができる。例えば、画像処理装置１００または画像処理装置１００ａの処理機能を、サーバ装置４４０が備える。この場合、サーバ装置４４０は、カメラ４１１，４２１，４３１で撮像された撮像画像を、それぞれ端末装置４１０，４２０，４３０を介して取得する。また、サーバ装置４４０は、画像処理装置１００または画像処理装置１００ａの処理を、カメラ４１１，４２１，４３１ごとに個別に実行する。あるいは、サーバ装置４４０は、画像処理プログラムおよび基準情報の生成処理については共通に実行してもよい。
【０１２６】
また、他の例として、図１８のプログラム生成装置２００の処理機能がサーバ装置４４０で実現され、画像処理装置３００の処理機能が端末装置４１０，４２０，４３０で実現されてもよい。この場合、例えば、プログラム生成装置２００の処理機能は、端末装置４１０，４２０，４３０のそれぞれについて個別に実現されてもよいし、共通に実現されてもよい。後者の場合、サーバ装置４４０で共有に生成された画像処理プログラムと基準情報が、端末装置４１０，４２０，４３０に配信される。
【０１２７】
なお、上記の各実施の形態に示した装置（画像処理装置１，１００，１００ａ，３００、プログラム生成装置２００、端末装置４１０，４２０，４３０、サーバ装置４４０）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１３０】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１３１】
１  画像処理装置
１ａ  記憶部
１ｂ  演算部
２  画像処理プログラム
３  撮像画像
１１〜１３  処理結果
２０  特徴量
【図１】
2017126046.tif 000003
【図２】
2017126046.tif 000004
【図３】
2017126046.tif 000005
【図４】
2017126046.tif 000006
【図５】
2017126046.tif 000007
【図６】
2017126046.tif 000008
【図７】
2017126046.tif 000009
【図８】
2017126046.tif 000010
【図９】
2017126046.tif 000011
【図１０】
2017126046.tif 000012
【図１１】
2017126046.tif 000013
【図１２】
2017126046.tif 000014
【図１３】
2017126046.tif 000015
【図１４】
2017126046.tif 000016
【図１５】
2017126046.tif 000017
【図１６】
2017126046.tif 000018
【図１７】
2017126046.tif 000019
【図１８】
2017126046.tif 000020
【図１９】
2017126046.tif 000021
【国際調査報告】
2017126046.tif 000022
2017126046.tif 000023
2017126046.tif 000024