(57)【特許請求の範囲】
【請求項１】
画像処理を行う対象の画像である対象画像を撮像する画像撮像手段と、
前記対象画像に画像処理を行う画像処理手段と、
前記画像処理の結果を表示する画像兼グラフィック表示手段と、
操作入力手段と
を備え、
前記画像処理手段は、
前記画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、前記画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行い、
前記画像処理の各処理項目ごとの前記設定事項の設定内容の入力においては、前記画像処理手段は、
（Ａ）前記画像兼グラフィック表示手段に対して、前記対象画像と前記画像処理の各処理項目毎の前記設定事項を一覧可能に表した画像処理メニューとを表示させ、
（Ｂ）前記対象画像を前記画像兼グラフィック表示手段に表示させつつ前記操作入力手段を用いた操作を通じて、前記対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、
（Ｃ）前記操作入力手段を用いた前記画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、前記設定事項の設定内容の入力を受ける処理を行い、および
（Ｄ）前記画像処理領域と前記設定事項の設定内容とを番号もしくは文字列を用いて名前を付けてメモリに記憶させる内容の入力を受ける処理を行い、
前記画像処理の各処理項目の前記実行順の設定内容の入力においては、前記画像処理手段は、
前記画像兼グラフィック表示手段に対して、前記実行順の設定を一覧可能に表したプログラムメニューを表示させ、
前記画像処理手段は、
（ａ）前記操作入力手段を用いた前記プログラムメニュー中の項目を選択する視覚的な操作方法を通じて、前記画像処理の各処理項目で前記メモリに記憶された番号もしくは文字列を用いて前記画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、
（ｂ）先に実施した前記画像処理の処理結果を参照して次に続く前記画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、および
（ｃ）前記画像処理の際に前記画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理を、行う
画像処理装置。
【請求項２】
画像処理を行う対象の画像である対象画像を撮像する画像撮像手段と、
前記対象画像に画像処理を行う画像処理手段と、
前記画像処理の結果を表示する画像兼グラフィック表示手段と、
操作入力手段と
を備え、
前記画像処理手段は、
前記画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、前記画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行い、
前記画像処理の各処理項目ごとの前記設定事項の設定内容の入力においては、前記画像処理手段は、
（Ａ）前記画像兼グラフィック表示手段に対して、前記対象画像と前記画像処理の各処理項目毎の前記設定事項を一覧可能に表した画像処理メニューとを表示させ、
（Ｂ）前記対象画像を前記画像兼グラフィック表示手段に対して表示させつつ前記操作入力手段の操作を通じて、前記対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、
（Ｃ）前記操作入力手段を用いた前記画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、前記設定事項の設定内容の入力を受ける処理を行い、および
（Ｄ）前記画像処理領域と前記設定事項の設定内容とを番号もしくは文字列の名前を持つオブジェクトとして登録する内容の入力を受ける処理を行い、
前記画像処理の各処理項目の前記実行順の設定内容の入力においては、前記画像処理手段は、
前記画像兼グラフィック表示手段に対して前記実行順の設定を一覧可能に表したプログラムメニューを表示させ、
前記画像処理手段は、
（ａ）前記操作入力手段を用いたコマンドを入力する方法、あるいは、前記操作入力手段を用いた高級言語によりプログラムを記述する方法を通じて、前記画像処理の各処理項目で登録した番号もしくは文字列の名前を持つ前記オブジェクトを用いて前記画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、
（ｂ）先に実施した前記画像処理の処理結果を参照して次に続く前記画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、および
（ｃ）前記画像処理の際に前記画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理、を行う
画像処理装置。
【請求項３】
請求項１に記載の画像処理装置であって、
前記画像処理プログラムの前記処理項目の実行後に得られる処理結果に対して、さらなる演算処理を行うことが可能で、
前記演算処理は、プログラミング言語で記述される
画像処理装置。
【請求項４】
請求項１または請求項２に記載の画像処理装置であって、
前記画像処理メニューにおいて、前記画像処理の各処理項目について、前記画像処理領域と前記設定事項の設定内容とを、番号もしくは文字列を用いて複数個、登録できる
画像処理装置。
【請求項５】
請求項１または請求項２に記載の画像処理装置であって、
前記プログラムメニューにおいて、設定を終了したプログラムを、番号もしくは文字列を用いて複数個、登録できる
画像処理装置。
【請求項６】
請求項１または請求項２に記載の画像処理装置であって、
前記画像処理メニューを、前記設定事項の一部を設定可能な簡易設定メニューと、前記設定事項の全てを設定可能な詳細設定メニューとで構成する
画像処理装置。
【請求項７】
請求項１または請求項２に記載の画像処理装置であって、
前記画像処理メニューあるいは前記プログラムメニューにおいて、最大３段階までの階層構造とするように構成する
画像処理装置。
【請求項８】
請求項１または請求項２に記載の画像処理装置であって、
前記画像処理メニューにおいて、前記画像処理の各処理項目ごとに試験的実行を行うことが可能な
画像処理装置。
【請求項９】
請求項１または請求項２に記載の画像処理装置であって、
前記プログラムメニューにおいて、設定した前記実行順で画像処理プログラムの試験的実行を行うことが可能な
画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理に関する各種設定の入力を行って画像処理プログラムを容易に作成するための画像処理プログラム作成方法、および、その画像処理プログラム作成方法が実現できる画像処理装置に関する。
【０００２】
【従来の技術】
画像処理技術は、各種製品の製造ラインにおける不良品検査技術や、その他、防犯技術、医療技術等、多彩な分野で応用がなされている。
【０００３】
実際に画像処理を行うに当たっては、画像処理の処理内容や複数の画像処理のフローを記述した画像処理プログラムが作成され、コンピュータを含む画像処理装置上でその画像処理プログラムが実行される。この画像処理プログラムは従来、Ｃ言語やＢＡＳＩＣなどのプログラム言語を用いて作成されていた。
【０００４】
しかし、プログラム言語を用いて画像処理プログラムを作成するには、その言語を習得したプログラマーが必要となり、プログラム言語の専門的知識を有しない者が画像処理プログラムを作成することは困難であった。
【０００５】
そこで、例えば特開平９−９１１２７号公報に示された画像処理プログラム作成方法のように、プログラム言語の専門的知識を有しない者であっても画像処理プログラムの作成を可能とする技術が提案されている。
【０００６】
図１８および図１９は、上記公報に示された画像処理プログラム作成方法における、画像処理プログラム作成の処理フローを示す図、およびプログラム作成中のモニタ画面を表示した図である。図１９のモニタ画面６０に示されているように、この画像処理プログラム作成方法によれば、プログラム言語によってではなく、表示された画像処理の各処理項目ごとに各種数値等の設定事項を順次設定し、その処理項目の順序をプロセスとして設定する。このようにすることで、画像処理の処理内容や複数の処理のフローが容易に設定でき、画像処理プログラムが作成される。
【０００７】
また、図１８のステップＳＳ３に示すように、画像処理の各設定（ステップＳＳ３１）、流れ設定（ステップＳＳ３２）、およびＩ／Ｏ設定（ステップＳＳ３３）を独立に設定するプログラム方法が採用されることによって、従来、Ｃ言語やＢＡＳＩＣなど記述的なプログラム方式でなければ実現できなかった複雑な画像処理が容易に実現できるようになった。
【０００８】
【発明が解決しようとする課題】
しかしながら、上記の特開平９−９１１２７号公報に記載の画像処理プログラム作成方法では、処理対象となる画像を表示しながら画像処理プログラムを視覚的に確認しつつ作成することができないので、濃淡テンプレートマッチング処理（後述）など対象画像を見ながら各種の設定を行う必要のある画像処理プログラムの作成が困難であるという問題点があった。
【０００９】
また、上記公報においては、画像の全画面中の一部を画像処理領域とする指定を行うことはなんら記述されていない。そのため、全画面でなく特定の部分領域のみに対する画像処理の各設定および実行が行えない。このような特定の部分領域のみに対する画像処理は、画像処理プログラム作成を行うに当たってユーザから強く要求される点である。
【００１０】
また、上記公報に記載の技術では、図１９に示した画像処理メニューから所望の処理項目を選択してその処理に必要とされる設定事項を設定するが、そのように単に処理項目を選択して設定事項を設定するだけでは、１つのプログラムのフロー中で同一の画像処理を複数回行う場合に、その処理を登録するたびに設定事項の設定作業が繰り返し必要となり煩雑であるという問題点もあった。
【００１１】
また、同一プログラム中だけでなく、異なる画像処理プログラム間であっても同じ画像処理を既設定の設定事項をそのままにして流用したい場合や、同種の画像処理だが設定事項のパラメータの一部を異なる値に変えて使いたい場合などには不便であるという問題点もあった。
【００１２】
このように、画像処理の既設定の設定事項の流用が困難であるため、上記公報に記載の技術では、予期していた使い易さが実現できていない。
【００１３】
また、上記公報に記載の画像処理プログラム作成方法では、画像処理設定、流れ設定、Ｉ／Ｏ設定が独立に行えるだけなので、画像処理により得られた処理データへのさらなる加工（例えば、画像中のある領域の面積を求め、その数値データに加減乗除等の演算を行うなど、ユーザ独自のデータ加工）ができず、すこし複雑な画像処理には対応できないという問題点があった。
【００１４】
そこで、この発明の課題は、画像処理の対象領域が設定可能で、処理対象となる画像を表示しながら画像処理プログラムを視覚的に確認しつつ作成することができ、画像処理の既設定の設定事項の流用が簡単で、画像処理により得られた処理データへのさらなる加工を行うことが可能な画像処理プログラム作成方法を提供し、さらに、その画像処理プログラム作成方法を実現できる画像処理装置を提供することにある。
【００２４】
【課題を解決するための手段】
請求項１に記載の発明は、画像処理を行う対象の画像である対象画像を撮像する画像撮像手段と、前記対象画像に画像処理を行う画像処理手段と、前記画像処理の結果を表示する画像兼グラフィック表示手段と、操作入力手段とを備え、前記画像処理手段は、前記画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、前記画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行い、前記画像処理の各処理項目ごとの前記設定事項の設定内容の入力においては、前記画像処理手段は、（Ａ）前記画像兼グラフィック表示手段に対して、前記対象画像と前記画像処理の各処理項目毎の前記設定事項を一覧可能に表した画像処理メニューとを表示させ、（Ｂ）前記対象画像を前記画像兼グラフィック表示手段に表示させつつ前記操作入力手段を用いた操作を通じて、前記対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、（Ｃ）前記操作入力手段を用いた前記画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、前記設定事項の設定内容の入力を受ける処理を行い、および（Ｄ）前記画像処理領域と前記設定事項の設定内容とを番号もしくは文字列を用いて名前を付けてメモリに記憶させる内容の入力を受ける処理を行い、前記画像処理の各処理項目の前記実行順の設定内容の入力においては、前記画像処理手段は、前記画像兼グラフィック表示手段に対して、前記実行順の設定を一覧可能に表したプログラムメニューを表示させ、前記画像処理手段は、（ａ）前記操作入力手段を用いた前記プログラムメニュー中の項目を選択する視覚的な操作方法を通じて、前記画像処理の各処理項目で前記メモリに記憶された番号もしくは文字列を用いて前記画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、（ｂ）先に実施した前記画像処理の処理結果を参照して次に続く前記画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、および（ｃ）前記画像処理の際に前記画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理を、行う画像処理装置である。
【００２５】
請求項２に記載の発明は、画像処理を行う対象の画像である対象画像を撮像する画像撮像手段と、前記対象画像に画像処理を行う画像処理手段と、前記画像処理の結果を表示する画像兼グラフィック表示手段と、操作入力手段とを備え、前記画像処理手段は、前記画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、前記画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行い、前記画像処理の各処理項目ごとの前記設定事項の設定内容の入力においては、前記画像処理手段は、（Ａ）前記画像兼グラフィック表示手段に対して、前記対象画像と前記画像処理の各処理項目毎の前記設定事項を一覧可能に表した画像処理メニューとを表示させ、（Ｂ）前記対象画像を前記画像兼グラフィック表示手段に対して表示させつつ前記操作入力手段を用いたの操作を通じて、前記対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、（Ｃ）前記操作入力手段を用いた前記画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、前記設定事項の設定内容の入力を受ける処理を行い、および（Ｄ）前記画像処理領域と前記設定事項の設定内容とを番号もしくは文字列の名前を持つオブジェクトとして登録する内容の入力を受ける処理を行い、前記画像処理の各処理項目の前記実行順の設定内容の入力においては、前記画像処理手段は、前記画像兼グラフィック表示手段に対して前記実行順の設定を一覧可能に表したプログラムメニューを表示させ、前記画像処理手段は、（ａ）前記操作入力手段を用いたコマンドを入力する方法、あるいは、前記操作入力手段を用いた高級言語によりプログラムを記述する方法を通じて、前記画像処理の各処理項目で登録した番号もしくは文字列の名前を持つ前記オブジェクトを用いて前記画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、（ｂ）先に実施した前記画像処理の処理結果を参照して次に続く前記画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、および（ｃ）前記画像処理の際に前記画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理、を行う画像処理装置である。
【００２６】
請求項３に記載の発明は、請求項１に記載の画像処理装置であって、前記画像処理プログラムの前記処理項目の実行後に得られる処理結果に対して、さらなる演算処理を行うことが可能で、前記演算処理は、プログラミング言語で記述される画像処理装置である。
【００２７】
請求項４に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記画像処理メニューにおいて、前記画像処理の各処理項目について、前記画像処理領域と前記設定事項の設定内容とを、番号もしくは文字列を用いて複数個、登録できる画像処理装置である。
【００２８】
請求項５に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記プログラムメニューにおいて、設定を終了したプログラムを、番号もしくは文字列を用いて複数個、登録できる画像処理装置である。
【００２９】
請求項６に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記画像処理メニューを、前記設定事項の一部を設定可能な簡易設定メニューと、前記設定事項の全てを設定可能な詳細設定メニューとで構成する画像処理装置である。
【００３０】
請求項７に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記画像処理メニューあるいは前記プログラムメニューにおいて、最大３段階までの階層構造とするように構成する画像処理装置である。
【００３１】
請求項８に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記画像処理メニューにおいて、前記画像処理の各処理項目ごとに試験的実行を行うことが可能な画像処理装置である。
【００３２】
請求項９に記載の発明は、請求項１または請求項２に記載の画像処理装置であって、前記プログラムメニューにおいて、設定した前記実行順で画像処理プログラムの試験的実行を行うことが可能な画像処理装置である。
【００３３】
【発明の実施の形態】
＜実施の形態１＞
図１は、この発明の実施の形態１に係る画像処理プログラムの作成方法における処理フローを説明するための図である。図１において、画像兼グラフィック表示手段に表示されたメインメニュー（S1）より、各画像処理毎に用意された画像処理メニュー（S2）の１つ、例えば「２値特徴量」を選択すると、「２値特徴量」に対応した簡易設定メニュー（S21）が現れるので、画像兼グラフィック表示手段によって表示されている対象画像を見ながら、画像処理を行う画像処理領域および、必要最小限の画像処理パラメータを、操作入力手段を用いて設定する。
【００３４】
さらに、詳細な画像処理パラメータを設定する必要があれば、詳細設定メニュー（S22）を選択して設定を行うが、詳細設定メニューによる設定はパスすることもできる。このように最初に簡易設定メニューを用いることで設定の手間を大きく省くことができる。
【００３５】
次に、画像処理の試行（S23）を行い、望みの画像処理が正しく実行できているかを確認し、できていなければ、簡易設定あるいは詳細設定に戻って画像処理領域あるいは画像処理パラメータを設定し直す。なお、この試行（S23）は必ずしも行う必要はなく、パスすることも可能である。
【００３６】
最後に、画像処理領域と画像処理パラメータが正しく設定できたら、番号もしくは文字列で構成された名前をつけて登録（S24）を行い、画像処理の内容を保存する。この際、例えば、最初に登録名を「２値特徴量01」として登録し、次に同じ画像処理で異なるパラメータをもつ処理については「２値特徴量02」として登録できるように構成する。このように、過去に記憶させた登録名に対して、内容に変更を加えた後、再度、記憶させようとしたときに、登録名を別名に変更して記憶させれば、異種の画像処理の設定が保存できるだけでなく、同種の画像処理に関しても複数のパラメータ等の設定が別名で保存できる。すると、後述するプログラムメニューにおいて、既設定の画像処理の利用や以前登録した画像処理を呼び出して変更すること（流用）が可能になり開発効率が向上する。登録後は自動的にメインメニュー（S1）に戻る。
【００３７】
なお、この登録に関しては、例えば設定ごとにひとつのファイルとしてファイル名をつけて行うようにしてもよいし、複数の設定をまとめてひとつのファイルとしてファイル名をつけて行うようにしてもよい。また、ファイル形式ではなく、画像処理手段内の記憶領域に全ての設定の登録を行うようにしてもよい。
【００３８】
１つ以上の画像処理の設定、登録が完了していた場合、メインメニュー（S1）からプログラムメニュー（S3）を選択することができる。プログラムメニューでは、既に登録されている異種あるいは同種の画像処理を、任意に複数個選択し、その実行順番を設定できる（S311）。
【００３９】
例えば、異種の画像処理ならば「２値特徴量01」と「輝度計測01」、同種の画像処理ならば、「２値特徴量01」と「２値特徴量02」などを選択し、並べ替えをすることができる。登録された画像処理の選択、実行順の指定だけでは、希望する処理結果が得られない場合、例えば、画像処理の計算結果に対して、（画像処理Ａの結果＋画像処理Ｂの結果）などの数値計算（実施の形態３にて詳述）が必要な場合は、数値計算設定（S312）を選択して、数値計算の手順を設定する。この数値計算設定（S312）は必ずしも行う必要はなく、パスすることも可能である。
【００４０】
次に、画像処理を複数行った場合など、画像処理結果が複数得られている場合に、どの処理結果を出力するかを設定する（S313）。
【００４１】
次に、プログラムの試行（S314）を行い、選択、順序設定した画像処理が正しく実行できているかを確認し、できていなければ、画像処理のプログラムメニューの設定を見直す、あるいは、画像処理メニューに戻って画像処理の設定を見直す。なお、この試行（S314）も必ずしも行う必要はなく、パスすることも可能である。
【００４２】
最後にプログラムが正しく設定できたら、番号もしくは文字列で構成された登録名をつけて登録（S315）を行い、プログラムの内容を保存する。この際、例えば登録名を「プログラム01」として登録し、次に別のプログラムについては「プログラム02」として登録して、複数のプログラムの設定が保存できるように構成する。
【００４３】
このように、過去に記憶させた登録データに対して、内容に変更を加えた後、再度、記憶させようとしたときに、登録名を別名に変更して記憶させれば、複数のプログラムが管理でき、また、画像処理実行時にプログラムの切り替えを行うことができて有用である。また、プログラム作成時においても以前登録したプログラムを呼び出して変更すること（流用）が可能になりプログラム開発効率が向上する。登録後は自動的にメインメニュー（S1）に戻る。
【００４４】
最低１つの画像処理が登録されていないとプログラムの作成はできないが、一旦、プログラムを作成した後に、画像処理を追加設定し、それをプログラムで追加選択するということも可能である。すなわちプログラムで用いる画像処理の設定が、あらかじめ全て終わっていないとプログラムが作成できないということはなく、画像処理設定とプログラム設定は、交互に、同時進行的に進めることが可能である。
【００４５】
また、環境設定メニューなど（S4）は、画像処理装置に接続するカメラの種類の設定など、装置の環境に関係した設定を行うメニューである。このメニューの設定はプログラム作成前に行うのが通常であるが、カメラを変更した時など、プログラム作成後に設定を行ってもかまわない。
【００４６】
図２は、実施の形態１の画像処理プログラムの作成方法を適用する画像処理装置を説明するための図である。図２において、１は起動信号、２は画像撮像手段、３は画像処理手段、４は画像兼グラフィック表示手段、５は操作入力手段、６は出力結果信号である。
【００４７】
起動信号１は画像処理手段３に対して、処理実行命令を行う信号である。起動信号１は操作入力手段５より発生させることも可能である。画像撮像手段２は、例えばＣＣＤカメラなどにより構成される。
【００４８】
画像処理手段３は、ＲＯＭおよびＲＡＭ等が接続された一般的なＣＰＵ内において所定のソフトウェアプログラムによって動作する機能部品であって、本発明による画像処理プログラム作成方法を実行する手段が含まれている。画像処理プログラム作成時には、画像処理手段３がメニューを表示し、画像撮像手段２、画像兼グラフィック表示手段４、操作入力手段５と連携動作して人間のプログラム作成を支援する。
【００４９】
プログラム実行時には、画像処理手段３は起動信号１を受けて、プログラムが指定する画像撮像手段２を用いて画像を撮像し、画像処理を実行し、画像処理結果である出力結果信号６を出力する。複数のプログラムが登録されている場合は、どのプログラムを実行するかの情報が含まれている起動信号１を受けて、設定保存されているプログラムのうち正しいプログラムを選んで、プログラムの実行を行う。
【００５０】
操作入力手段５は主としてマウスなどのポインティングデバイスのみで構成されるが、キーボードとマウスなどの入力装置で構成する場合もある。出力結果信号６は、同時に画像兼グラフィック表示手段４に出力して結果をグラフィック表示しても良い。
【００５１】
また、上記図２では、画像処理プログラム作成方法が画像処理手段３に装備されている場合について説明したが、画像処理プログラム作成方法が必ずしも画像処理手段３に含まれていなくてもかまわない。
【００５２】
例えば、図３の様に、画像処理装置に対して、ＬＡＮケーブル等の接続手段１０によってパーソナルコンピュータ７を接続し、パーソナルコンピュータ７上で画像処理プログラム作成方法を実行しても良い。この際はパソコンの操作入力手段９と表示手段８とを用いてプログラミング操作を行う様にしてもよい。あるいは、画像処理装置と画像処理プログラム作成方法を実行する装置が直接に接続されていなくてもかまわない。この際は、作成されたプログラムデータを、例えばフロッピーディスク、ＭＯ、フラッシュＰＣカードなどの記録媒体を用いて画像処理装置に移動すればよい。
【００５３】
次に、動作とフローについて詳細に説明する。図４は本発明の画像処理のプログラム作成方法におけるメニューの初期状態の構成例を示すものである。初期状態では、メインメニュー１１（ファイル管理１１ａ、画像処理設定１１ｂ、プログラム設定１１ｃ、環境設定１１ｄ、ツール１１ｅ、バージョン情報１１ｆの各コマンドが表示されている）と、画像表示部分１２と、コマンドメニュー１３（オンライン／オフライン切り替え１３ａ、複数カメラ切り替え１３ｂ、画像のライブ／フリーズ表示切り替え１３ｃ、表示画像上への線画のオーバレイ表示の切り替え１３ｄなどのボタンスイッチなどが並ぶ）と、操作入力手段５によって制御されるポインタ１４とが表示されている。また、図４ではＸＹ座標系を示す基準線１２ａが線画としてオーバレイ表示されている。コマンドメニュー１３の画像ライブ／フリーズ表示切替ボタン１３ｃによって、カメラから画像を取りこみ、表示することができる。
【００５４】
なお、ここでいう「オンライン／オフライン」とは、起動信号１が受付可能となっているかどうかを指し、この画像処理装置に起動信号１を発する別の装置（図示せず）からの起動信号１を受け付けるかどうか、を示している。
【００５５】
また、ここでいう「ライブ／フリーズ」とは、動画表示か静止画表示かを示す。より正確には、画像撮像手段２が現在撮像中の動画を表示させるか、過去に撮像した静止画像データを表示させるか、を表す。
【００５６】
図５は、画像撮像手段２から画像を取り込み、画像表示部分１２に画像１２ｂ（例として野菜の画像）を表示した後、メインメニュー１１を表示している状態（図１のS1）から、画像処理メニュー１１ｂを選択した状態を示す（図１のS2）。
【００５７】
このとき図５の様に画像処理メニュー一覧１５がプルダウンし、複数の画像処理の処理項目が選択できる様になる。図５では、画像処理の処理項目として濃淡テンプレートマッチング、２値特徴量、輝度計測、濃淡エッジ計測、２値エッジ計測の５つが選択できるようになっている。
【００５８】
ここでいう濃淡テンプレートマッチングとは、濃淡画像を用いたテンプレートマッチング（テンプレートと呼ばれる基準画像を対象画像から探し出してその場所や一致度（スコア）を出力する画像処理のこと）を指す。また、２値特徴量とは、画像を２値化し、その画像内の白画素あるいは黒画素について塊毎にラベル付けを行い、その各々の画素塊毎に、面積、重心などを計測する画像処理である。輝度計測とは、濃淡画像の輝度を計測し、ある領域内の画素についてその輝度の平均値や分散値などを計算する画像処理のことである。そして、濃淡エッジ計測、２値エッジ計測は、濃淡画像や２値画像に現れるエッジ（輝度勾配が大きい部分）の位置を求める画像処理のことを指す。
【００５９】
以下では、２値特徴量が選択された場合を例にとって説明する。上記メニューで２値特徴量を選択すると、図６の様に、設定事項を一覧可能に表した画像処理メニューの１つである２値特徴量メニュー１６が表示される（図１のS21）。２値特徴量メニュー１６は、簡易設定メニューとなっており、２値特徴量計測についての最低限のパラメータの設定、すなわち、２値化方法設定、および２値化方法に伴うパラメータ（図６に示される「固定しきい値」を用いた２値化方法の場合は２値化レベルがそれに相当する。また、「Ｐタイル２値化」方法（ある領域に関して、予めＰタイル値と呼ばれる全体の画素に対する白画素の割合を指定しておき、白画素の割合が指定したＰタイル値になるように２値化のしきい値を計算し、そのしきい値で２値化を行う方法）ならば、画像中に占める白画素の割合がそれに相当する）、と画像処理領域の設定のみが可能である。
【００６０】
新規に画像処理を設定する際は、処理Noを指定するドロップダウンリストより、画像処理が未登録であることを示す例えば灰色化された名前（番号）のうちから名前を一つ選択する。既に登録された画像処理プログラムを変更する場合は、ドロップダウンリストより例えば黒色化された名前のうちから画像処理を選択する。
【００６１】
２値化方法の設定は、ドロップダウンリストの中から項目を選択できる様になっており、ポインタ１４によるボタン操作（クリック操作）だけで簡単に選択できる。また２値化レベルも、スライダあるいはアップダウンボタンの操作で簡単に設定できる。
【００６２】
なお、処理領域は既定値として全画面になっているが、２値特徴量メニュー１６の「領域」ボタンを押すことで設定できる。「領域」ボタンを押した後の画面の状態である領域設定画面を図７に示す。領域設定画面ではポインタ１４を用いて、画像処理領域１７を視覚的に容易に設定することができる。また操作入力手段がキーボードなどの場合、コマンドメニュー上で処理領域を示すボックス（始点Ｘ、Ｙ、幅Ｘ、Ｙ）に値を設定することでも画像処理領域を設定できる。
【００６３】
細かな設定の必要がなければ、この簡易設定メニューの設定だけで、２値特徴量の設定を終了することができるが、さらに詳細な設定を行う場合には、簡易設定メニューである２値特徴量メニュー１６中の「詳細設定」ボタンを押すと、図８に示される２値特徴量詳細設定メニュー１８が表示される（図１のS22）。
【００６４】
ここでは、簡易設定では設定できないすべての画像処理パラメータが設定可能である。例えば、測定する２値塊対象を白画素あるいは黒画素にする設定、計測する２値特徴量の種類の設定、３×３膨張フィルタ（注目画素の周囲８画素中での最大の輝度値に注目画素の輝度値を修正する処理）や３×３収縮フィルタ（注目画素の周囲８画素中での最小の輝度値に注目画素の輝度値を修正する処理）に代表される各種ノイズフィルタなど２値特徴量を計算する前の前処理の設定、計算結果の出力順番を指定の項目に応じて整列させる機能である結果ソーティング機能の設定も可能である。
【００６５】
野菜の画像１２ｂを用いたここでの例の場合、対象である野菜は背景より暗いので、測定する２値塊を黒画素にすれば良い。設定を完了後、２値特徴量詳細設定メニュー１８の「確定」ボタンを押すと、２値特徴量メニュー１６に戻る。
【００６６】
次に、２値特徴量メニュー１６中の「試行」ボタンを押して（図１のS23）、設定したパラメータで画像処理が正しく動作するかを調べる。「試行」ボタンを押すと図９に示すように試行結果の画像１９ａが表示され、同時に画像処理の試行結果１９ｂも表示される。ここで希望する結果が得られなかった場合、２値特徴量メニュー１６あるいは２値特徴量詳細設定メニュー１８に戻って設定をやり直す。なお、この「試行」は設定に関して必須の操作ではなく、飛ばしてもかまわない。
【００６７】
設定完了後、２値特徴量メニュー１６の「登録」ボタンを押すと「処理No」で指定された文字列（この例の場合は「２値特徴量01」）で設定したパラメータが登録できる（S24）。
【００６８】
また、２値特徴量詳細設定メニュー１８の「コピー」、「ペースト」ボタンを用いると、既存のパラメータ設定のデータを別の登録名で登録できる。例えば、既存の登録データ「２値特徴量02」について、ユーザが、２値特徴量詳細設定メニュー１８を開き、「コピー」ボタンを押すと、画像処理手段３は、パラメータ値をいったん画像処理手段３の一時メモリ内に記憶させ、次に「処理No」のドロップダウンリストを表示する。ここでパラメータが設定されていないことを示す灰色表示されたパラメータ設定名「２値特徴量03」をユーザが選択し、「ペースト」ボタンを押すと、コピーされたパラメータ値が表示される。ここでユーザが「設定」ボタンを押すと、自動的に「処理No」は「２値特徴量03」にされ、２値特徴量メニュー１６に戻る。
【００６９】
ここで「登録」ボタンを押せば、「２値特徴量02」のパラメータ設定を別の登録名「２値特徴量03」で登録できる。登録後は、登録名は例えば黒色表示される。なお、ある画像処理について雛型のパラメータをつくっておき、この雛型の画像処理について上記の方法で別名で登録し、これに変更を行い実験するという使い方も可能である。
【００７０】
登録したパラメータ設定の登録データの削除は、次の様に行う。まず２値特徴量メニュー１６で、「処理No」のドロップダウンリストで削除したいパラメータ設定の登録名（例えば「２値特徴量03」）を選択する。この操作により過去に登録したパラメータを呼び出して参照したことになる。次に「削除」ボタンを押せばパラメータ設定は削除される。削除されるとパラメータ設定名は例えば灰色化する。
【００７１】
以上の様にして、各画像処理毎に操作入力手段５を用いて視覚的にパラメータ設定を行い、番号もしくは文字列で登録名をつけて登録していく。
【００７２】
なお他の画像処理の例として、図１０に輝度計測メニュー（簡易設定メニュー）２０ａ、図１１に領域設定画面、図１２に輝度計測詳細設定メニュー２０ｄを示す。輝度計測の場合は、１つのパラメータ設定（例えば「輝度計測01」）で複数の処理領域２０ｂ、２０ｃを設定できるように構成している。
【００７３】
画像処理を１つ以上登録した後は、メインメニュー１１よりプログラムメニュー１１ｃを選択し、画像処理の実行順序等の設定を含むプログラムを規定する。図１３は、プログラムメニュー２１が表示された図である（図１のS3）。なお、図１３では、プログラムメニュー２１が表示領域の大部分を覆ってしまっているため見えないが、画像処理の対象画像である画像１２ｂは画像表示部分１２に表示され続けている。
【００７４】
新規にプログラムを記述する際は、プログラムNoを指定するドロップダウンリストより、プログラムが登録されていないことを示す例えば灰色化された番号のうちからプログラム番号を一つ選択する。既に登録されたプログラムを変更する場合は、ドロップダウンリストより例えば黒色化された番号のうちからプログラム番号を選択する。
【００７５】
次に、既に登録した画像処理の処理項目を選択して、その順番、出力設定を規定する（図１のS311）。最初の位置補正とは、濃淡テンプレートマッチングなどの位置ズレ量が計測できる画像処理を用いることで、あらかじめ設定された画像処理領域の位置補正を行う処理である。画像処理の対象の位置決め精度が悪い場合は、まず位置補正に用いる画像処理で位置ズレ量を計測し、その計測結果を参照して、既にパラメータ設定されている画像処理領域の位置を補正する。
【００７６】
もちろん画像処理対象の位置決め精度が十分あればこの位置補正は不要である。位置補正処理に用いる画像処理は、例えば、濃淡テンプレートマッチングや濃淡エッジ計測などがあげられる。位置補正処理が必要な場合は、既に登録されている画像処理から適切な画像処理を（例えば濃淡テンプレートマッチング処理における設定「濃淡TM01」など）を選択する。
【００７７】
次に、画像処理の処理項目の順番を規定する。「画像処理」という項目中の「選択」ボタンを用いて、既に登録してある画像処理を追加選択する。選択できる画像処理は、ユーザが登録した画像処理だけでなく、パラメータ不要の定型画像処理、例えば３×３ロバーツエッジフィルタ（注目画素の周囲８画素中の所定の画素の輝度値を用いて注目画素の輝度値を修正する処理）なども選択可能である。画像処理の順番の変更は「↑上」、「↓下」ボタンを用いて、画像処理の削除は「削除」ボタンを用いて行うことができる。
【００７８】
なお、画像処理のうち２値特徴量における２値化処理や、３×３ロバーツエッジフィルタなどのフィルタ処理は対象画像を加工して、次の画像処理に画像をわたす。したがって画像処理の順番は、画像処理結果に影響を及ぼす。一方、各画像処理設定で存在する前処理はその画像処理を行う際に一時的に画像を加工するだけであり、後続する画像処理に引きわたす画像を加工するわけではない。
【００７９】
あらかじめ設定された画像処理の処理項目を選択して並べるだけでは不十分で、画像処理結果を四則演算などで加工する必要がある場合は、「数値計算」を「有」にし、「フロー」で数値計算の処理フローを記述する（図１のS312）。「数値計算」については実施の形態３において記述する。
【００８０】
次に、画像処理の出力設定を行う（図１のS313）。画像処理の順番である「１」〜「６」の左横にあるチェックボックスにチェックマークをいれると、その画像処理で計測された計測値を出力結果信号６として出力する。ここでは、必要な画像処理にだけチェックマークを付けることができ、処理のフローとしては必要だが、結果出力は必要でない画像処理についてはチェックしないことで、不要なデータの出力を行わないようにできる。なお、位置補正処理に関しても、位置補正のチェックボックスにマークすることで見つかった位置や位置ずれ量などの出力を行うことができる。
【００８１】
その他、使用するカメラの番号、結果出力の座標系を、画像座標で行うのか、それとも外界の世界（ワールド）座標系で行うのか、単位は画素単位であるか、物理単位（ｍｍ）であるか、レンズの光学的歪みを補正したデータを参照し、出力を歪み補正して出力するかどうかの選択を行う。ただし、世界座標系の選択、物理単位の選択、歪み補正の利用を行うためには、あらかじめ、外界座標と画像座標の間で変換係数を求めておく操作（キャリブレーション）が必要である。本発明の実施の例では、キャリブレーション操作は、図４のメインメニュー１１の「ツール」に含ませておき、「ツール」を選択したときに、キャリブレーション操作、データ登録が可能となるようにすればよい。
【００８２】
画像処理の選択、順番決定、画像処理結果出力設定が終了し、プログラムメニュー２１の「試行設定」を行なった後、「試行」ボタンを押すと、図１４に示される試行画面が表示され、画像処理結果２１ｂを確認することができる（図１のS314）。この試行画面では、選択した既登録の画像処理のパラメータ設定の登録名（例えば「輝度計測01」）で画像処理結果が参照できる。希望する結果が得られなかった場合は、プログラムメニュー２１にもどって画像処理の処理項目の選択、並び替えを変更、あるいは、画像処理メニューに戻ってパラメータ設定の変更、画像処理の処理項目の追加設定等を行う。
【００８３】
なお、「試行設定」は、「現画像についてテスト（１回）」、「画像取込後テスト（１回）」、「画像取込後テスト（連続）」から選択できるようにしている。「現画像についてテスト（１回）」とは、現在、画像処理手段３中の画像メモリ内にある画像データ（例えば外部から読み込んだ画像データなど）に対して試行動作を行うことを指す。また、「画像取込後テスト（１回）」とは、画像撮像手段２から新しく画像データを取り込んで、その画像データに１回の試行を行うことを指す。また、「画像取込後テスト（連続）」とは、画像撮像手段２から新しく画像データを取り込んで、その画像データに試行を行った後、再び画像撮像手段２から新しく画像データを取り込んで、その画像データに試行を行い、中断するまでこれを繰り返すことを指す。これらの試行は、画像処理プログラムに必須の操作ではないのは、画像処理の設定と同様である。
【００８４】
設定完了後、プログラムメニュー２１の「登録」ボタンを押すと、「処理No」で指定した登録名（図１３の場合は「プログラム01」、あるいは「01」となる）で、プログラムが登録できる（図１のS315）。なお、図１３では画像処理の内容を自動的にコメントとして含めて表示している（「プログラム01：輝度計測、２値特徴量」と表示している）。
【００８５】
「コピー」「ペースト」ボタンは画像処理メニューと同様の使い方であり、プログラムを別名で登録する場合や、雛型としてプログラムをコピーした後、変更を行う場合などに用いる。また、「削除」ボタンはプログラムの削除に用いる。「取消」ボタンは、設定を行わずにプログラムメニューを閉じる場合に用いる。
【００８６】
上記で説明した手順でプログラムを作成後、実際の画像処理プログラムの処理実行は、起動信号１によって行われる。通常、起動信号１には起動するプログラムNoの情報が含まれており、この情報により画像処理手段３は、所定のプログラムを実行し、結果出力手段６に画像処理結果を出力する。
【００８７】
本実施の形態に係る画像処理プログラム生成方法および画像処理装置によれば、画像処理装置が、ユーザが画像処理プログラムの作成を行う際に、対象画像を画像兼グラフィックス表示手段４に表示させる。よって、ユーザは、画像処理プログラムを視覚的に確認しつつ作成することができ、濃淡テンプレートマッチング処理など、対象画像を見ながら各種の設定を行う必要のある画像処理プログラムを容易に作成できる。
【００８８】
また、画像処理の各処理項目ごとの設定事項には、対象画像のうち全部または一部を画像処理の対象として設定する事項が含まれる。よって、ユーザは全画面でなく特定の部分領域のみに対する画像処理の設定および実行が行える。
【００８９】
また、画像処理手段３は、ユーザが行った画像処理の処理項目ごとの設定事項の設定、および／または、ユーザが行った処理項目の実行に関する設定（プログラムの設定）を、登録データとして記憶可能である。よって、１つのプログラムのフロー中で同一の画像処理を複数回行う場合や、異なる画像処理プログラム間で同じ画像処理を既設定の設定事項をそのままにして流用したい場合、同種の画像処理だが設定事項のパラメータの一部を異なる値に変えて使いたい場合などに、ユーザは過去に行った登録データを呼び出して、画像処理プログラム作成に簡単に流用することができる。また、ユーザが、過去に記憶させた登録データに対して、内容に変更を加えて、再度、記憶させようとしたときに、画像処理手段３は、登録データの登録名を別名に変更して記憶する。よって、同種の画像処理だが設定事項のパラメータの一部を異なる値に変えて使う場合に、自動的に過去に行った登録データと区別して新たな登録データとして記憶させることができる。
【００９０】
また、画像処理手段３は、処理項目ごとの設定事項をメニュー形式で表示し、メニュー形式には、設定事項の一部を設定可能な簡易設定メニュー形式と、設定事項の全てを設定可能な詳細設定メニュー形式とが含まれる。よって、必要性に応じて、容易に画像処理プログラムを作成することも、詳細に画像処理プログラムを作成することも、可能となる。
【００９１】
また、画像処理装置は、画像処理プログラムの作成を行う際に、設定された設定事項に基づく対象画像への画像処理の試行結果、および／または、設定された実行に関する設定（プログラムの設定）に基づく対象画像への画像処理の試行結果、を画像兼グラフィックス表示手段４に表示させることが可能である。よって、ユーザは、設定事項が希望どおりに設定されたか、および／または、画像処理プログラムが希望どおりに実行されるか、について判定することができ、容易に画像処理プログラムの動作を確認することができる。
【００９２】
なお、本実施の形態では、画像処理メニューは、画像処理（簡易設定）メニュー、画像処理詳細設定メニューの２段階で構成しているが、これに補助的なメニューを加えて３段階での構成にしてもよい。３段階を超えるメニューは入れ子が深すぎて、ユーザに使いづらい構成となるので避けるのが望ましい。
【００９３】
また、本実施の形態では、プログラムメニューは１段階であるが、実施の形態３で詳述する数値計算のメニューを入れると２段階となる。これに補助的なメニューを加えて３段階での構成にしてもよい。３段階を超えるメニューは入れ子が深すぎて、ユーザに使いづらい構成となるので避けるのが望ましい。
【００９４】
また、本実施の形態では、画像処理メニュー、およびプログラムメニューに試行の機能を設けているが、これは画像処理の設定およびプログラムの設定に必須のものではなく、必ずしも本発明において具備していなければならない機能ではない。
【００９５】
また、本実施の形態では、画像処理パラメータの組み合わせを異なった文字列の名前で複数登録できる様に構成しているが、最低１つ以上、登録できればよい。同様にプログラムも異なった文字列の名前で複数登録できる様に構成しているが、最低１つ以上登録できればよい。
【００９６】
＜実施の形態２＞
本実施の形態では、プログラムが操作入力手段５によるタイピング動作を主としたコマンド入力方法あるいは高級言語によるプログラミング記述方式を用いて、前記プログラムメニューを構成する場合の一例について説明する。
【００９７】
図１５は、本実施の形態における画像処理プログラム作成方法の処理フローを説明するための図である。なお、本実施の形態においては、画像処理の設定方法に関しては、実施の形態１と全く同様の方法で行うことができるため、実施の形態１と異なる点、すなわちプログラムメニューの構成（S3,S321〜S324）について説明する。
【００９８】
図１６は本実施の形態におけるプログラムメニューの構成例である。プログラムメニュー２３では、コマンド入力、あるいは高級言語プログラミング開発が可能な開発環境が提供される。このプログラムメニュー２３は、プロジェクトウィンドウ２４、コードウィンドウ２５、アウトプットウィンドウ２６および各種ボタンで構成され、この例では、プログラム番号１つについて、１つのプロジェクト（ひとつの実行モジュールを作成する際に必要なソースプログラム、コンパイル条件、各種環境設定などを一まとめにしたデータ）が管理されている。そして、プロジェクトを構成するソースファイル名はプロジェクトウィンドウ２４に表示され、ソースファイルの内容はコードウィンドウ２５に表示される。ソースコードウィンドウ２５で表示されているソースファイル名は、プロジェクトウィンドウ２４で例えば灰色マーク付きで表示されている。アウトプットウィンドウ２６は、デバッグ時の変数の監視や、ソースコードのビルト時のエラーを表示するのに用いられる。
【００９９】
次に動作について詳細に説明する。最初にプログラムを作成する場合は、プログラムNoを指定し、「プロジェクト設定」ボタンを押す。「プロジェクト設定」ボタンでは、ソースファイルの追加指定や、開発に用いる高級言語に関する各種設定など、開発に伴う環境設定を行う（図１５のS321）。
【０１００】
プロジェクトの設定がおわると、プロジェクトウィンドウ２３にソースファイル名が表示されるので、そこで編集したいソースファイル名をクリックする。するとコードウィンドウ２４にソースコードであるソースファイルの内容が表示されるので、キーボードとマウス等の操作入力手段５を用いてソースコードの編集を行う（図１５のS322）。既登録のプログラムに関しては、プログラムNoを指定した段階でプロジェクトの読み込みが行われる。
【０１０１】
なお、図１６では、開発用の言語としてC++を用いて、濃淡テンプレートマッチングを行う例を示している。ここでは、画像処理メニューを用いて既に設定済みの処理項目（濃淡テンプレートマッチング０１）を、TM[1]というオブジェクトの配列で用いている。[]内の配列の添字はプログラムNoに一致している。
【０１０２】
例えば、濃淡テンプレートマッチングの実行はTM[1]に関するメンバ関数呼び出しの形で実現でき（図１６の例ではTM[1].Exec（）の呼び出し）、実行結果の参照は、TM[1]のオブジェクトのメンバ変数を参照することで実現できる（図１６の例では、TM[1].Cand[1].xの参照など。Cand[1]は濃淡テンプレートマッチングの第１候補を指す）。
【０１０３】
このようにして、既に設定された画像処理を、それに相当した既定のオブジェクトを用いることで、容易に使用できる。さらに、異なるプログラムに対して大域的に用いることのできるオブジェクトまたはオブジェクト配列を準備しておくと、異なるプログラム間で結果のやりとりを行うことも可能になる。すなわち、異なるプログラム間でデータの受け渡しができるように、データを譲渡するプログラムが終了した後も、そのデータを保持して、データを受領するプログラムに受け渡すことが可能な領域を、メモリの中にオブジェクトまたはオブジェクト配列として設けておくのである。
【０１０４】
例えば、大域的なオブジェクト配列GLOBAL[]を設けておき、「プログラム01」の実行で計算した値をGLOBAL[1]に、「プログラム02」の実行で計算した値をGLOBAL[2]に代入しておくと、「プログラム03」の実行時には、GLOBAL[1]とGLOBAL[2]を参照して、そこに記憶されたデータを計算に用いることができるようにしておく。
【０１０５】
ソースコードを作成後、プログラムメニュー２３の「ビルド」ボタンを押すと、ソースコードをコンパイルしたオブジェクトコード、あるいは中間コードが生成される（図１５のS323）。なお使用する言語の種類によってはビルド操作が不要な場合もある。
【０１０６】
ビルドの際、文法エラーがあると、アウトプットウィンドウ２６に、エラーの内容、エラーの生じた行番号などの情報が表示されるので、この情報に基づいてソースコードをデバッグする（図１５のS324）。ソースコードが完成すると、プログラムメニュー２３の「試行」ボタンを押すと試行が行われ、実行結果が図１４のような形で表示されるのは、実施の形態１と全く同様である（図１５のS324）。
【０１０７】
また、試行時においても文法エラーが生じた場合には、プログラムメニューのアウトプットウィンドウ２６に、エラーの内容、エラーの生じた行番号などの情報が表示されるので、この情報に基づいてソースコードをデバッグすることが可能である。その他にも、プログラムメニュー２３の「デバッグ」ボタンを押してデバッグ設定を行うことで、ソースプログラムにおけるブレークポイント（一時停止点）の指定や、ステップ実行（プログラムの各行の逐次実行）、ウオッチする変数の登録などの各種のデバッグ操作が可能になる。ウオッチする変数は、例えばアウトプットウィンドウ２６内に表示することができる。
【０１０８】
その他のボタン、例えば「プログラムNo」を選択するボタンや、「コピー」、「ペースト」、「登録」、「削除」、「取消」ボタンの使い方は、実施の形態１と同様であり、プログラム作成後は「登録」ボタンを押して画像処理プログラムを登録する（図１５のS325）。
【０１０９】
このように、プログラムメニューを、コマンド入力方法あるいは高級言語によるプログラミング記述方式を用いて構成すると、前記実施の形態１で説明した、ボタン操作を主とした視覚的な操作方法によるプログラミングと比較してプログラムの柔軟性が飛躍的に向上する。
【０１１０】
例えば、前記実施の形態１で説明した、ボタン操作を主とした視覚的な操作方法によるプログラミングでは、１つの画像処理結果（画像処理で得られた直接のデータ）を参照して、あるいは、画像処理結果の加工後のデータ（画像処理で得られた直接のデータにさらに加減乗除等の数値計算を行うなどして得られたデータ）を参照して次の画像処理を行うことは不可能ではない（前述した「位置補正」では計測した位置ずれ量を用いて、以下に続く画像処理の処理領域を変更することを行っている）。しかし、一般的にはやりにくい。
【０１１１】
一方、本実施の形態によるプログラム作成方法では、このような制限は一切生じない。なお、この実施の形態で用いられる開発言語は、例にあげたC++に限らず、特別に設計されたコマンド形式でも良いし、他の高級言語、例えば、JAVA, BASICなどでもよい。
【０１１２】
＜実施の形態３＞
本実施の形態では、実施の形態１で説明したプログラムメニュー２１における「数値計算」の構成について詳細に説明する。実施の形態１では、処理項目の選択や順番の指定は可能であるが、画像処理結果のデータに対する加減乗除など、より複雑な処理の設定は、そのままでは不可能である。「数値計算」はそれを補う機能を有している。
【０１１３】
図１３のプログラムメニュー２１において「数値計算」ボタンを「有」に設定し、「フロー」ボタンを押した時に表示される数値計算フローメニュー２７の構成例を図１７に示す。図１７の数値計算フローメニュー２７では、選択された画像処理の実行結果について、数種のコマンドを所定のプログラミング言語で記述することにより、加減乗除計算、sin、cos等三角関数の計算、絶対値の計算などの数値計算が行える様になっている。また、簡単な条件分岐も記述できる。図１７の数値計算フローメニューのコマンド形式は、例えば、
１．変数  変数（画像処理結果）
２．変数  即値
３．変数  関数［変数、変数、…］
４．      文［変数または即値］
といった文法になっており、変数が左端に現れている場合、その変数を左辺値として、即値、変数、あるいは関数の返す値を左辺値に代入するという意味になっている。例えば、図１７の数値計算フローメニュー２７中の１行目の、
A01  TM01.S.1
は、A01という一時変数に対して、濃淡テンプレートマッチング01の画像処理結果のうちマッチング対象の第１候補のスコアS.1が入っている変数の値を代入している。すなわち
A01 = TM01.S.1
という意味である。また、５行めの
C01  1.000
は、C01という特別な変数に対して1.000という即値を代入している。つまり、
C01 = 1.000
という意味である。なお、C01などCで始まる変数に代入された値は、画像処理結果として外部に値が出力される。
【０１１４】
また、３行目の
A03  GTR  A01  A02
は、A01 > A02 ならば、一時変数A03に値1を代入し、そうでなければ値0を代入する。GTRはGreaTeR than を略したコマンドである。その他にも、GTE（Grater Than Equal）、LST（LeSs Than）、LSE（LeSs than Equal）などの比較コマンドや、ABS（ABSolute）などの絶対値コマンド、ADD（加算）、SUB（減算）、MUL（乗算）、DIV（除算）、MOD（剰余）の四則演算関数コマンドや、SIN（sin）、COS（cos）、ATN（ArcTaN）、SQR（SQuare Root）などの関数コマンドも存在する。
【０１１５】
なお、４、６、８行目は、IF 〜 THEN 〜 ENDIFの条件分岐の文コマンド（ステートメント）であり左辺値をとらない。
【０１１６】
また、「コメントにする」ボタンを用いることで、ある行をコメント行にすることも可能である。その際は、行の先頭にREM（REMark）が表示され、例えば
REM  A02  70.000
となる。
【０１１７】
これらのコマンドの入力は、操作入力手段５のマウスなどのポインティングデバイスを用いて、数値計算フローメニューで視覚的に行うことができる。まず左辺値である変数を選択し、次に関数、結果、変数、即値のうち、いずれか１つを選んで設定する。画像処理結果は例えば、濃淡テンプレートマッチングならTM??（？には数字が入る）、２値特徴量ならBA??、輝度計測ならGM??、濃淡エッジ計測ならGE??、２値エッジ計測ならBE??で参照できる。これらの参照名は、画像処理の登録時の登録名の文字列とリンクした関係になっているので、数値計算の処理フローにおいても容易に画像処理結果を参照することができる。
【０１１８】
以上の説明より、図１７に示した数値計算例は、濃淡テンプレートマッチング01の第１候補のスコアが70より大きければ、結果として値１を出力し、そうでなければ値ゼロを出力するというものであることがわかる。
【０１１９】
この他にも、例えば２つの物体の位置の中心を計算するという応用もある。この場合、画像処理で２つの物体のそれぞれ位置を求めたあとに、各座標の平均を求めれば良い。すなわち、実施の形態１において記述した（画像処理Ａの結果＋画像処理Ｂの結果）に相当する。これは、前記のADD,DIV関数を用いることで容易に実現できる。
【０１２０】
この数値計算はプログラム間にまたがる画像処理結果の計算にも使用することができる。図１３のプログラムメニュー２１において、「プログラム03」の設定で、画像処理になにも選択せず、カメラ入力を「無」にし、数値計算だけ設定する。各プログラムが使用する数値計算の変数（例えば前述のA01や、TM01.S.1）が、プログラム終了後も値が保持される様に構成、あるいは設定しておくと、例えば「プログラム01」で値が代入されたA05と「プログラム02」で値が代入されたA01に関して、「プログラム03」の数値計算で
C01  ADD  A05  A01
とし、「プログラム01」と「プログラム02」の実行後に「プログラム03」を実行すれば、「プログラム01」の画像処理結果と「プログラム02」の画像処理結果を加工し（この場合は加算）、その結果を変数C01として出力することが可能になる。
【０１２１】
この様に、実施の形態１において数値計算方法を付加して用いると、画像処理の四則演算ができる。また、そのほかにも例えば、画像処理結果のデータが輝度値等である場合は、設定されたしきい値を超えるかどうかの判定を結果出力することも可能になる。
【０１２２】
本実施の形態に係る画像処理プログラム生成方法および画像処理装置によれば、画像処理プログラムの処理項目の実行後に得られる処理結果に対して、さらなる演算処理を行うことが可能で、その演算処理は、プログラミング言語で記述される。よって、画像処理により得られた処理結果に対して、所望する演算処理を、プログラミング言語で詳しく正確に記述することができ、複雑な画像処理を行うことも可能となる。
【０１３２】
【発明の効果】
請求項１に記載の発明によれば、画像処理手段は、画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行う。そして、画像処理の各処理項目ごとの設定事項の設定内容の入力においては、画像処理手段は、画像兼グラフィック表示手段に対して、対象画像と画像処理の各処理項目毎の設定事項を一覧可能に表した画像処理メニューとを表示させ、対象画像を画像兼グラフィック表示手段に対して表示させつつ操作入力手段を用いた操作を通じて、対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、操作入力手段を用いた画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、設定事項の設定内容の入力を受ける処理を行い、画像処理領域と設定事項の設定内容とを番号もしくは文字列を用いて名前を付けてメモリに記憶させる内容の入力を受ける処理を行う。また、画像処理の各処理項目の実行順の設定内容の入力においては、画像処理手段は、画像兼グラフィック表示手段に対して、実行順の設定を一覧可能に表したプログラムメニューを表示させる。さらに、画像処理手段は、操作入力手段を用いたプログラムメニュー中の項目を選択する視覚的な操作方法を通じて、画像処理の各処理項目でメモリに記憶された番号もしくは文字列を用いて画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、先に実施した画像処理の処理結果を参照して次に続く画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、画像処理の際に画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理を行う。よって、画像処理各処理項目の設定事項の設定、各画像処理領域の設定、および画像処理の実行順の設定などの一連の画像処理のプログラムがマウスなどの操作入力手段を用いて視覚的な簡単操作で容易に作成できるという効果がある。
【０１３３】
請求項２に記載の発明によれば、画像処理手段は、画像処理の各処理項目ごとの設定事項の設定内容の入力を受ける処理と、画像処理の各処理項目の実行順の設定内容の入力を受ける処理とを、各々異なる画面を介して行う。そして、画像処理の各処理項目ごとの設定事項の設定内容の入力においては、画像処理手段は、画像兼グラフィック表示手段に対して、対象画像と画像処理の各処理項目毎の設定事項を一覧可能に表した画像処理メニューとを表示させ、対象画像を画像兼グラフィック表示手段に対して表示させつつ操作入力手段を用いた操作を通じて、対象画像のうち全部または一部を画像処理領域として決定する内容の入力を受ける処理を行い、操作入力手段を用いた画像処理メニュー中の項目を選択する視覚的な操作方法を通じて、設定事項の設定の内容の入力を受ける処理を行い、画像処理領域と設定事項の設定内容とを番号もしくは文字列の名前を持つオブジェクトとして登録する内容の入力を受ける処理を行う。また、画像処理の各処理項目の実行順の設定内容の入力においては、画像処理手段は、画像兼グラフィック表示手段に対して実行順の設定を一覧可能に表したプログラムメニューが表示させる。さらに、画像処理手段は、操作入力手段を用いたコマンドを入力する方法、あるいは、操作入力手段を用いた高級言語によりプログラムを記述する方法を通じて、画像処理の各処理項目で登録した番号もしくは文字列の名前を持つオブジェクトを用いて画像処理の各処理項目の選択指定を行う内容の入力を受ける処理、並び替えを行う内容の入力を受ける処理、先に実施した画像処理の処理結果を参照して次に続く画像処理を実施させる画像処理結果参照設定の内容の入力を受ける処理、画像処理の際に画像処理によって算出された演算結果である計測値を結果信号として出力させる出力設定の内容の入力を受ける処理を行う。よって、マウスなどの簡単な視覚的な操作で設定を行った画像処理各処理項目の設定事項の設定、各画像処理領域の設定を用いて、複雑な画像処理のプログラムが容易に作成できるという効果がある。
【０１３４】
請求項３に記載の発明によれば、画像処理装置上で、画像処理プログラムの処理項目の実行後に得られる処理結果に対して、さらなる演算処理を行うことが可能で、その演算処理は、プログラミング言語で記述される。よって、画像処理により得られた処理結果に対して、所望する演算処理を、プログラミング言語で詳しく正確に記述することができ、複雑な画像処理を行うことも可能となる。
【０１３５】
請求項４に記載の発明によれば、画像処理メニューにおいて、画像処理の各処理項目について、画像処理領域と設定事項の設定内容とを、番号もしくは文字列を用いて複数個、登録できる。よって、画像処理プログラムにおいて、各処理項目の設定事項の設定内容の利用、および流用が容易になるという効果がある。
【０１３６】
請求項５に記載の発明によれば、プログラムメニューにおいて、設定を終了したプログラムを、番号もしくは文字列で複数個、登録できる。よって、複数の画像処理プログラムを切り替えて実行することや、画像処理プログラムの流用が容易になるという効果がある。
【０１３７】
請求項６に記載の発明によれば、画像処理メニューを、設定事項の一部を設定可能な簡易設定メニューと、設定事項の全てを設定可能な詳細設定メニューとで構成する。よって、必要性に応じて、容易に画像処理プログラムを作成することも、詳細に画像処理プログラムを作成することも、可能となる。
【０１３８】
請求項７に記載の発明によれば、画像処理メニューあるいはプログラムメニューにおいて、最大３段階までの階層構造とするように構成する。よって、メニュー構成が単純でユーザに理解しやすくなり、プログラミング作業が容易になるという効果がある。
【０１３９】
請求項８に記載の発明によれば、画像処理メニューにおいて、画像処理の各処理項目ごとに試験的実行を行うことが可能である。よって、設定した各処理項目の設定事項が適正かどうかをすぐに判定することができ、プログラミング作業が容易になるという効果がある。
【０１４０】
請求項９に記載の発明によれば、プログラムメニューにおいて、設定した実行順で画像処理プログラムの試験的実行を行うことが可能である。よって、作成したプログラムが正しく動作するかをすぐに判定することができ、プログラミング作業が容易になるという効果がある。
【図面の簡単な説明】
【図１】  実施の形態１に係る画像処理プログラム作成方法を示すフローチャートである。
【図２】  実施の形態１に係る画像処理装置の構成例を示す図である。
【図３】  実施の形態１に係る画像処理装置の他の構成例を示す図である。
【図４】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図５】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図６】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図７】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図８】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図９】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１０】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１１】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１２】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１３】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１４】  実施の形態１に係る画像処理装置において表示される画面例を示す図である。
【図１５】  実施の形態２に係る画像処理プログラム作成方法を示すフローチャート図である。
【図１６】  実施の形態２に係る画像処理装置において表示される画面例を示す図である。
【図１７】  実施の形態３に係る画像処理装置において表示される画面例を示す図である。
【図１８】  従来の画像処理プログラム作成方法を示すフローチャートである。
【図１９】  従来の画像処理プログラム作成方法において表示される画面例を示す図である。
【符号の説明】
１  起動信号、２  画像撮像手段、３  画像処理手段、４  画像兼グラフィック表示手段、５  操作入力手段、６  出力結果信号、７  パーソナルコンピュータ、８  モニタ（画像兼グラフィック表示手段）、９  操作入力手段、１０  接続手段、１１  メインメニュー、１２  画像表示部分、１３  コマンドメニュー、１４  ポインタ、１５  画像処理メニュー一覧、１６  ２値特徴量簡易設定メニュー、１７  画像処理領域、１８  ２値特徴量詳細設定メニュー、１９ｂ  試行結果、２０ａ  輝度計測簡易設定メニュー、２０ｄ  輝度計測詳細設定メニュー、２１  プログラムメニュー（実施の形態１）、２３  プログラムメニュー（実施の形態２）、２４  プロジェクトウィンドウ、２５  コードウィンドウ、２６  アウトプットウインドウ、２７  数値計算ウィンドウ。
【図１】
0003967885.tif 000002
【図２】
0003967885.tif 000003
【図３】
0003967885.tif 000004
【図４】
0003967885.tif 000005
【図５】
0003967885.tif 000006
【図６】
0003967885.tif 000007
【図７】
0003967885.tif 000008
【図８】
0003967885.tif 000009
【図９】
0003967885.tif 000010
【図１０】
0003967885.tif 000011
【図１１】
0003967885.tif 000012
【図１２】
0003967885.tif 000013
【図１３】
0003967885.tif 000014
【図１４】
0003967885.tif 000015
【図１５】
0003967885.tif 000016
【図１６】
0003967885.tif 000017
【図１７】
0003967885.tif 000018
【図１８】
0003967885.tif 000019
【図１９】
0003967885.tif 000020