JP2011165208A - 画像処理アプリケーションを開発するための方法およびシステム - Google Patents

画像処理アプリケーションを開発するための方法およびシステム Download PDF

Info

Publication number
JP2011165208A
JP2011165208A JP2011102778A JP2011102778A JP2011165208A JP 2011165208 A JP2011165208 A JP 2011165208A JP 2011102778 A JP2011102778 A JP 2011102778A JP 2011102778 A JP2011102778 A JP 2011102778A JP 2011165208 A JP2011165208 A JP 2011165208A
Authority
JP
Japan
Prior art keywords
component
components
data
user
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011102778A
Other languages
English (en)
Inventor
Wolfgang Eckstein
エックシュタイン,ヴォルフガング
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MWTEC SOFTWARE GmbH
Original Assignee
MWTEC SOFTWARE GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MWTEC SOFTWARE GmbH filed Critical MWTEC SOFTWARE GmbH
Publication of JP2011165208A publication Critical patent/JP2011165208A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)

Abstract

【課題】コンピュータにより自動的に実行して画像処理アプリケーションを開発するための方法を提供する。
【解決手段】本方法は、コンピュータは複数の画像処理コンポーネント1―10およびコネクタ手段11を含み、コネクタ手段は選択されたコンポーネントを自動接続するための特別セットのメソッドおよびデータ構造であって、動作されるときに1つのインスタンスを生成するクラスとして実現される。このコンピュータは、複数の画像処理コンポーネントを受信するステップと、ユーザによって複数のコンポーネントから選択されたコンポーネント間の接続を確立するため、該選択されたコンポーネントを受信するステップと、前記コネクタ手段を動作して、前記選択されたコンポーネント間を接続する定義を要求されることなく、前記選択されたコンポーネントを互いに自動的に接続して、前記画像処理アプリケーションを生成するステップと、を含む。
【選択図】図1

Description

本発明は、画像処理アプリケーションを開発するための方法およびシステム、ならびにそのような方法を行うためのコンピュータ読取可能プログラム製品に関する。
画像処理アプリケーションの開発に関する標準の手法、およびそれに関する基本的情報は、例えば、「ビジュアルベイシック6.0 プログラマーのガイド(Visual Basic 6.0 Programmer’s Guide)」、マイクロソフト出版(Microsoft Press)、およびマシン・ビジョン・システムにおいて使用するためのアプリケーション・ソフトウェアを迅速に開発するための方法およびシステムを説明するUS−A−5 742 504で見ることができる。
以下の特徴が、当技術分野で周知の標準の手法に共通である。周知のシステムは、特定の下位問題(例えば、画像取り込みまたはblob分析)を解決するコンポーネント(例えば、ActiveX)を使用し、そのコンポーネントを組み合わせてアプリケーション(設計モード)を構築する。さらに、コンポーネントおよびそのグラフィカル・ユーザ・インターフェース(設計モード)を適応させることが、周知のシステムに共通である。コンポーネントの状態、すなわち、設計モードにおいて変更された事柄。
ただし、以下の限界が、これら従来技術のシステムに関連している。従来技術のシステムの各コンポーネントは、せいぜい1つのグラフィカル・ユーザ・インターフェースを有しているだけである。さらに、周知のシステムでは、設計モードおよびユーザ・モードという2つのモードが区別される。設計モードでは、コンポーネントが選択され、プログラムが書かれ、機能の状態が変更される。ユーザ・モードは、最終アプリケーション(実行可能)に対応する。設計モードの状態およびユーザ・モードの状態は、保管することが可能である。ただし、これは、2つの独立した両立不可能な機構で行われる。このことは、例えば、ユーザ・モードにおいて行われた変更に設計モードでアクセスできないことを意味する。さらに、設計モードの状態は、アプリケーションにコンパイルされるためアプリケーションが生成された後は変更することができない。さらに、設計モードでは、1つのコンポーネントを実行することができるだけである。最後に、周知のシステムでは、事前定義されたデータ構造だけが使用される。
オブジェクト・コンポーネントに基づく既存のシステムの抱える通常の問題は、プログラミングの必要性である。ユーザは、選択されたコンポーネントを接続するのに、制御フローを特定するのに、また画像および関心領域などのデータ・ソースを処理コンポーネントに接続するのにコードを追加しなければならない。このコンテキストでは、US−A−5 742 504が参照される。しかし、主な目標が画像処理アプリケーションを開発することである多くのユーザは、必要なプログラミング・タスクを容易に、迅速に、またプログラミングの誤りなしに達成するのに十分なプログラミング知識を有していない。
発明を解決しようとする課題
本発明の目的は、アプリケーション開発のタスクを容易にすることである。この目的は、特許請求の範囲の特徴で解決される。
プログラミングの必要性、コンポーネント関係の指定、実行の順序の指定、およびユーザがプログラム・ステータスを記憶させる必要性が除去されることが本発明の利点である。本発明によれば、これらすべてのタスクは、ユーザが行わなければならない追加のタスクが全くなしに、自動的に決定される。本発明は、ユーザが選択することができるコンポーネントに基づく。コンポーネントは、オブジェクト指向プログラミングの用語法ではオブジェクトである。コンポーネントの選択は、アプリケーションの要件に応じて行われる、すなわち、ユーザは、その要件を満たすようなサブタスクを選択する。本発明によれば、この選択によってトリガされ、コンポーネントがアプリケーションを自動的に生成する。ユーザは、グラフィカル・ユーザ・インターフェースの外観およびフィールを構成し、画像処理パラメータを指定するだけでよい。これにより、アプリケーション開発からプログラミングが完全に除かれる。さらに、アプリケーションを開発するのに必要な時間が、大幅に短縮される。
請求項1に記載の本発明によれば、選択されたコンポーネントを互いに自動的に変換するためのコネクタ手段が提供される。請求項2に記載の好ましい実施形態によれば、前記選択されたコンポーネントは、先行するステップで、前記コネクタ手段にやはり自動的に接続される。請求項15、16、ならびに請求項18ないし20の好ましい実施形態は、請求項2の実施形態に限定されないことに留意されたい。
本発明の好ましい実施形態によれば、コンポーネントの自動接続のためのコネクタ手段が提供される。コンポーネントがアプリケーションに追加される、またはアプリケーションから取り除かれるときはいつでも、コネクタ手段が呼び出される。コンポーネントをアプリケーションに追加する場合、コンポーネントは登録され、これによりコンポーネントがアプリケーションに知られ、アプリケーションにとってアクセス可能になる。すなわち、コンポーネントが、アプリケーションの一部になる。コンポーネントをアプリケーションから取り除くことにより、コンポーネントは、登録解除され、もはや使用できなくなる。コンポーネントの追加は、ユーザが、例えば、コンポーネントのアイコンをダブルクリックし、これによってコンポーネントを「フォーム」上に置くことによって行うことができる。また、コンポーネントの追加は、他のコンポーネントが生成動作を呼び出すことによって内部で呼び出すことも可能である。コンポーネントを取り除くことも同様に、ユーザが、フォームからコンポーネントを削除することにより、または他のコンポーネントが、コンポーネントの削除動作を呼び出すことによって行うことができる。
接続の生成は、特別セットのメソッドおよびデータ構造によって実現される。以下では、このセットのデータを対応するメソッドとともにコネクタと呼ぶ。コネクタは、例えば、使用されるときに1つのインスタンスを生成するクラスとして実現することができる。各コンポーネントは、コネクタにアクセスできる。これは、コネクタを各コンポーネントにリンクする(コンパイラの用語法の意味で)ことによって実施することができる。コネクタが初回に活動化されたとき、特定のセッション中、コネクタは、自らのデータ構造を初期化し、利用可能な場合、追加の情報を接続プロセスのためにロードする。特定のセッション中には、コネクタをさらに活動化しても、データ構造を再び初期化することはなく、データ構造のステータスを拡張または変更する。コネクタは、すべての登録されたコンポーネントに対する参照を保持する。これに加え、コネクタは、コンポーネント間のすべての接続、ならびにこのことから導出されたすべての情報(実行、通信、ロード/保管機構等のための)を保持する。
コネクタは、登録されたコンポーネントを、他のコンポーネントに正しく接続することができるコンポーネント、および接続することができないコンポーネントという2つのグループに分割する。コンポーネントを接続できないケースは、例えば、ユーザが、意味のあるアプリケーションに必要とされるコンポーネントの一部だけを選択した場合に生じる。この一例は、ユーザが、画像処理コンポーネントを選択したが、画像データを提供するコンポーネントを全く選択しなかった場合である。コンポーネントを選択する順序に対する制限は全く存在しないため、新しいアプリケーションをセットアップしているとき、このケースがしばしば生じる。
設計モードまたはユーザ・モードが終了した後、コネクタは、アンロードされる。コネクタをアンロードする前に、コネクタは、現在のコンポーネントおよびその接続に関する情報を保管することができる。この情報は、次回に設計モードまたはユーザ・モードでアプリケーションが呼び出されるとき、使用することができる。
次に、画像処理アプリケーションに対するコンポーネントの追加を説明する。ユーザが、例えば、コンポーネントのアイコンをダブルクリックすることによってコンポーネントをアプリケーションに追加したとき、コンポーネントの初期化メソッドが実行される。この初期化中、コネクタの登録メソッドが呼び出される。このメソッドを呼び出すことにより、コンポーネントおよび/またはコンポーネントの記述に対する参照またはポインタが、コネクタに渡される。この情報に基づき、接続プロセスが行われる。
コンポーネントを登録する際、2つのケースを区別しなければならない。新しいコンポーネントをアプリケーションのコンポーネントに接続することが可能である場合、必要な接続が構成され、そのコンポーネントは、アプリケーションの一部となる。新しいコンポーネントの組込みは、それまでに確立されている接続の再構成を必要とする可能性がある。新しいコンポーネントの組込みの後、まだ非接続コンポーネントのリストが改訂される。このことは、このリストの各コンポーネントに対して、登録プロセスが新たに実行される(コンポーネントをそれでも接続することができない場合、そのコンポーネントは、再びリストには追加されないことを例外として)ことを意味する。あるコンポーネントを他のコンポーネントに接続することができない場合、そのコンポーネントは、(まだ)非接続コンポーネントのリストに入れられる。
コンポーネントを接続することは、コンポーネントが、(i)先行のコンポーネントに対する、すなわち、入力データを提供するコンポーネントに対する参照、ポインタ、または同様の機構と、(ii)後続のコンポーネントに対する、すなわち、さらなる処理のために出力データを受け入れるコンポーネントに対する参照、ポインタ、または同様の機構と、(iii)結果を表示することができるビューアに対する参照、ポインタ、または同様の機構と、(iv)コンポーネントを制御するコンポーネントに対する参照、ポインタ、または同様の機構と、(v)すべてのコンポーネントにアクセスするスケジューラに対する参照、ポインタ、または同様の機構とを有するのが可能であることを含むが、以上には限定されない。
本発明によれば、コンポーネントがアプリケーションに追加され、接続が確立された後、システムが設計モードにあっても、そのコンポーネントを即時に実行することができる。これが可能であるのは、各コンポーネントが、コネクタを介して、または直接に任意の他のコンポーネントを呼び出すことができるからである。これにより、プログラミング環境によってサポートされるコールバックが存在しない場合でも、アプリケーション全体を実行することができ、また一度に1つのコンポーネントのインターフェースだけがアクティブであるだけでよい(例えば、マイクロソフト・ビジュアルベイシック(Microsoft Visual Basic)におけるのと同様に)。
どの時点でも、コネクタは、それまでのアプリケーションの整合性に関してユーザに知らせることができる。この例は、例えば、コンポーネントを接続できなかったこと、または重要なコンポーネントが欠如していることである。
次に、どのようにコンポーネントが接続されるかを説明する。
コンポーネントを接続することの問題は、様々なメソッドを使用することによって解決することができ、メソッドのいくつかは、最適化、インフォームド・サーチ、およびヒューリスティック・サーチに基づく。本発明の好ましい実施形態で使用するアルゴリズムは、明確な接続を割り当てることができるまで、曖昧さを段階的に除去することである。アルゴリズムは、コンポーネントの提案されたカテゴリに基づくが、それには限定されない。以下で説明するアルゴリズムは、特定のアプリケーションに関する前の情報が全く利用可能ではない、すなわち、ユーザが、新しいアプリケーションを生成するものと想定している。
ユーザによって選択されたコンポーネントが、最初に登録されるコンポーネントである場合、またはそれまでにアプリケーションの部分を構成するコンポーネントが全く存在しない場合、そのコンポーネントは、データ・ソース(入力コンポーネント)であるか否かが試験される。入力コンポーネントである場合、そのコンポーネントは、それまでに接続を全く有していないアプリケーションの最初の部分として使用される。入力コンポーネントではない場合、そのコンポーネントは、非接続コンポーネントのリストに入れられる。ただし、アプリケーションの中に既にコンポーネントが存在する場合、以下のメソッドが実行される。
第1のステップで、その他のコンポーネントに接続されなければならない選択されたコンポーネントの各入力パラメータおよび各出力パラメータが、1組の評価規則に従ってアプリケーションのコンポーネントのすべての利用可能なパラメータで検査される。接続が規則を満たす場合、その接続は、候補接続リストに追加される。さらなる規則を使用することにより、曖昧でない決定を行うことができるまで、またはプロセスが停止するまで、可能な接続の量が減らされる。候補接続リストの中に、既に接続されたコンポーネントのパラメータが含められる。この理由は、その新しいコンポーネントを、例えば、一続きの既に接続されたコンポーネントに挿入することができるからである。この例が、数値データを計算するblob分析であり、blob分析は、このデータをシリアル・インターフェースに書き込む出力コンポーネントに接続される。データ視覚化コンポーネントが、アプリケーションに追加される場合、このコンポーネントは、blob分析と出力コンポーネントの間に配置することができる。さらに、入力パラメータおよび出力パラメータは、複数回、使用できることに留意しなければならない。例えば、フレームグラッバは、画像処理のために画像を複数のコンポーネントに渡すことができる。これに加え、多くのコンポーネントを、例えば、データを表示するため、ビューアに接続することができる。
接続を選択する第1の規則は、コンポーネントのカテゴリを使用する。どのカテゴリを接続することができるかを記述する一般的規則に基づき、初期候補接続リストが決定される。このコンテキストで使用される規則は、例えば、ビューアが入力コンポーネントに接続されること、または画像検査コンポーネントがビューアに接続されることである。これらの全体的規則は、コネクタにだけ利用可能であり、通常、コンポーネントによって提供されない。これらの規則は、コンポーネントおよびアプリケーションに関する一般的知識を表す。規則は、コネクタが呼び出されたときロードすることができ、ランタイム中に変更することが可能であり、また、例えば、適用の分野(例えば、産業または医療)に応じて、またはユーザに応じて適合させることが可能である。
次のステップで、入力パラメータおよび出力パラメータのデータ・タイプが検査される。所与のタイプ規則を満たさないすべての接続候補が、リストから除去される。これらの規則の例は、より弱いタイプをより強いタイプ(例えば、整数を浮動小数点値に渡すことができる)に接続できること、または同等のタイプを接続できることである。
次のステップで、アプリケーションとの接続の整合性が検査される。これには、実行の整合性、データの整合性、および情報フローの整合性が含まれる。これは、無限ループまたはブロッキングにつながる可能性があるサイクルに関して検査する全体的なグラフ分析である。このため、各接続が有向アークとして扱われ、またコンポーネントは、対応するグラフのノードとして扱われる。各コンポーネントの入力/出力を使用して、標準のグラフ分析アルゴリズム(例えば、Petri Netsの分析のために使用される)に基づき、分析が行われる。整合性のあるアプリケーションを生成しない各接続は、除去される。このステップは、サイクルのような問題のないアプリケーションが生成されることを保証する。これは、ユーザがコンポーネントをプログラミング・ステートメントで接続しなければならない標準の手法では保証することができない。
特別なケースが、別のコンポーネントの特定のグラフィカル・ユーザ・インターフェースを実現するコンポーネントである。これらのコンポーネントは、自らのユーザ(すなわち、自らが属するコンポーネント)および自らの識別で自らを曖昧なく明らかにする。
曖昧でないセットの接続が残った場合、そのコンポーネントは、アプリケーションに追加され、選択された接続が確立される。曖昧さがある場合、さらなる規則が適用されて曖昧さが除去される。規則は、組み合わせて、または独立して使用することができる。規則の例は、以下のとおりである。(i)局所性:ユーザがデスクトップ上にコンポーネントを配置した位置の距離であり、より近いコンポーネントが、より高い確率で接続されることになる、(ii)選択の順序:引き続いて選択されたコンポーネントが、より高い確率で接続されることになる、(iii)アプリケーション・エリア:接続される確率は、アプリケーション・エリアに基づく、(iv)ユーザ:どの接続が好ましいか、システムがユーザに尋ねる、(v)ユーザ・プロファイル:前のセッションでユーザが行った決定に関する情報をシステムが使用する(学習)。
曖昧さが残る場合、そのコンポーネントは、非接続コンポーネントのリストに追加される。
また、コンポーネントをアプリケーションから除去することもできる。これは、例えば、ユーザが、コンポーネントを削除することによって行うことができる。この場合、このコンポーネントに対するすべての接続およびこのコンポーネントからのすべての接続が除去される。この後、残りのコンポーネントを再構成しなければならない可能性がある。この場合、除去されたコンポーネントが、他のコンポーネントに対する入力を提供していた場合、可能であれば、それらのコンポーネントの再接続がなされる。
ユーザがアプリケーションを開発し、コンポーネントが接続された後、その接続に関する情報をコネクタが記憶することができる。この情報は、好ましくは、アプリケーションが、設計モードまたはユーザ・モードで再び活動化されるとき、再ロードすることができる。これにより、アプリケーションが変更された場合でも、曖昧さを最小限に抑えることができる。このことから、構成に関する一般的規則が、システムによって自動的に学習されることが可能である。これは、人工知能から知られる学習メソッドを使用して行うことができる。
以上のことから、周知のシステムの次の限界が本発明に従って取り除かれる。コンポーネントが、プログラミング・ステートメントをアプリケーションに追加することによって結合される。これらのプログラミング・ステートメントは、一方のコンポーネントから他方のコンポーネントにどのようにデータを渡すかに関する情報、ならびにコンポーネントが実行される順序をどのように指定するかに関する情報を含まなければならない。データ、例えば、関心領域を使用するため、ユーザが、プログラミング・ソース・コードによってアプリケーションにデータ・コンポーネントを追加して、そのコンポーネントをその他のコンポーネントに接続しなければならない。
本発明は、以下の要件を満たすオブジェクト指向コンポーネントのアーキテクチャを提供する。
各コンポーネントは、自らの挙動を指定する記述を含む。この記述は、コンポーネントのすべての動作モードにおいてコンポーネントによって処理されることが可能な形式で利用可能である。この記述は、入力パラメータおよび出力パラメータの数、入力パラメータおよび出力パラメータのタイプ、カテゴリ、名前、説明、表明、および制約に関する情報から構成されるが、それらには限定されない。
さらに、ユーザによるコンポーネントの選択が、自動構成プロセスを呼び出す。このプロセスは、他のすべてのコンポーネントに関する情報を有する単一のコンポーネントにより、またはアプリケーションに追加されるコンポーネントによって提供される情報に基づいて任意のコンポーネントによって制御されることが可能である。自動構成は、以下のステップから成る。
(i)コンポーネントの接続:各コンポーネントが、そのコンポーネントの入力データを提供する、またはそのコンポーネントの出力データを必要とする他のコンポーネントに接続される。この接続は、直接(コンポーネント対コンポーネント)または間接(一続きのコンポーネントを介して)であることが可能である。
(ii)実行メソッドの構成:実行メソッドは、以下ような情報を決定する。
−コンポーネントが実行される順序、
−あるコンポーネントから別のコンポーネントにどのようにデータが渡されるかのメソッド、
−生成されるデータ・タイプ、
−実行中、どのようにデータが蓄積されるかのメソッド、および
−どれだけの期間、データを記憶しなければならないか、またいつデータを削除することができるか。
実行メソッドは、アプリケーションの動作モード、ユーザの対話、およびデータの入力に応じて使用されるサブメソッドを含む。サブメソッドは、例えば、入力データ(例えば、獲得トリガ信号、画像取り込み、または他の入力チャネル)の可用性によって呼び出される。この場合、この入力データを必要とするすべてのコンポーネント、およびこれらのコンポーネントに依存するコンポーネント(すなわち、そのコンポーネントの結果を必要とするコンポーネント)が実行される。さらに、サブメソッドは、入力データ(例えば、画像)とのユーザ対話によって呼び出される。この場合、この種類のユーザ対話に対して反応することが可能なすべてのコンポーネントが、操作されたデータ、ならびに対話の情報(例えば、マウス座標)を伴って実行される。さらなる例は、ユーザによるコンポーネントのパラメータの変更である。この場合、やはり、コンポーネント、ならびにそのコンポーネントに依存するすべてのコンポーネントが実行される。
この他、実行メソッドは、好ましくは、動作モードに応じて自動的に変更される。例えば、構成モードでは、較正コンポーネントが実行され、またアプリケーション・モードでは、入力データの変更に応じてパラメータを適合するコンポーネントが実行される。さらに、コンポーネントを並列に実行することができる。
(iii)すべてのコンポーネント間の広域通信:実行の順序、およびデータを渡すパスを指定するのに必要とされるコンポーネントの接続の他に、情報を渡すコンポーネント間の接続が確立される。この通信により、あるコンポーネントから別のコンポーネントに情報(例えば、コンポーネントの記述またはコンポーネントのステータス)を渡すこと、(例えば、別のコンポーネントを実行している)コンポーネント間でメッセージを送信すること、他のコンポーネントの結果またはステータスを表示すること、および別のコンポーネントのためにグラフィカル・ユーザ・インターフェースとして動作することのようなアクションが可能になる。
(iv)処理されなければならないデータの決定、すなわち、設計モードおよびユーザ・モードで生じる状態、アプリケーションの特性、およびコンポーネント間の接続。これに基づき、設計モード中およびユーザ・モード中にすべての必要なデータを記憶し、再ロードする自動プロセスが呼び出される。このデータは、ユーザ・インターフェースの外観およびフィール、コンポーネントのパラメータ、または関心領域を含むが、それらには限定されない。
前述した構成プロセスは、次の特性を有する。構成プロセスは、例えば、アプリケーションに追加のコンポーネントを導入することにより、またはアプリケーションのステータスを変更することによって繰り返し実行することができる(再構成)。ステータスの変更は、外部から実行すること(ユーザにより、またはデータの入力により)、またはシステムによって内部で実行することが可能である。さらに、構成と再構成はともに、設計時間中およびプログラム実行中に行うことができる。
以下の有利な特徴が、本発明に関連している。
・プログラミングが全く必要ない。これにより、時間が節約され、それほど技能のないユーザがアプリケーションを開発することが可能になる。
・実行メソッドが自動的に決定される。これにより、時間が節約され、プログラミングの誤りが全く導入されないことが保証される。これに加えて、余計なプログラミングの労力なしに異なる実行メソッドを使用することができる。複数の実行メソッドにより、アプリケーションの使用が非常に直観的になる。この理由は、アプリケーションが、標準の実行メソッドを自動的にサポートするが、ユーザ対話を扱うメソッドに自動的に切り替わることが可能だからである。さらに、システムは、意味のある1組のコンポーネントが選択されているか、すなわち、それらのコンポーネントをアプリケーションに接続することができるかどうか、または重要なコンポーネントが欠如しているかどうかをユーザに知らせることができる。
・本発明のコンポーネントは、処理されるデータを自動的に生成し、管理する。これにより、時間が節約され、すべての必要なデータが利用可能であること、およびプログラミングの誤りが全く導入されないことが保証される。さらに、再プログラミングが全く必要とされないため、使用されるデータ(関心領域のような)の数を変更するのが非常に容易である。
・コンポーネント間のデータの受渡しが、自動的に提供される。これにより、時間が節約され、プログラミングの誤りが全く導入されないことが保証される。
・コンポーネントが、他のコンポーネントのためのグラフィカル・ユーザ・インターフェースとして動作することができる。これにより、必要とされるグラフィカル・ユーザ・インターフェースの部分の容易な生成が可能になる。
・コンポーネントが、複数のグラフィカル・ユーザ・インターフェースを有することが可能である。これにより、グラフィカル・ユーザ・インターフェースをユーザの必要に対して最適に適合させることができるアプリケーションをユーザが開発できるようになり、その延長として、アプリケーションが、グラフィカル・ユーザ・インターフェースを動的に変更して自らを使用の要件に適合させることができる。
・設計モードのステータスおよびユーザ・モードのステータスが、同じ機構で保管される(また再ロードされる)。これにより、状態情報を失うことなく、両モード間で(両方向で)ユーザが切り替えを行うことができるようになる。さらに、状態情報がアプリケーションとは独立に記憶されるため、必要な場合、状態情報を交換することが可能である。
・本発明では、ユーザ・モードは、サブモードに下位分割される。これにより、適切なサブモードに切り替えることによってアプリケーションの挙動を容易に変更できるようになる。通常のモードは、例えば、管理者モード(例えば、アプリケーションのすべての機能に対する完全なアクセス)、構成モード(例えば、測定されなければならない新しいオブジェクトにアプリケーションを適合させるのに必要とされるすべての機能に対するアクセス)、またはアプリケーション・モード(最小限の対話および最小限のフィードバックでアプリケーションを実行する)であることが可能である。これにより、アプリケーションが、業界の要件にはるかによくかなうようになる。
・本発明では、設計モードにおいてすべてのコンポーネントを同時に実行することができる。これにより、アプリケーションをはるかに容易に試験を行うことが可能になる。これに加え、設計モードとユーザ・モードの間の混乱を招く区別が、ほどんどなくなる。さらに、これにより、より少ない数のウインドウを使用してデータを表示することができるようになる。一回につき1つのだけのコンポーネントを実行することができる場合、例えば、画像を表示し、結果を重ね合わせ、選択されたパラメータが正しいかどうかを検査するのに追加の表示が必要である。本発明では、すべてのコンポーネントに関して1つの表示を使用することができる。これにより、スクリーン上の空間が節約され、はるかに整合性の高いグラフィカル・ユーザ・インターフェースがされる。
・各コンポーネントは、コンポーネントのすべての機能を完全に使用するのに十分な記述を含む。これが、プログラミングの必要なしにコンポーネントを使用するための基礎である。
・各コンポーネントは、アプリケーションの他のすべてのコンポーネントに対して自動的にアクセスを有する。これにより、例えば、アプリケーションの挙動を容易に制御することが可能になる。
・本発明は、生のデータを記述と組み合わせるデータ要素を使用する。これにより、データのはるかに柔軟な使用が可能になる。例えば、データを必要する他のコンポーネントにそのデータを渡すことをその特定のデータ・タイプに関するメソッドを実現することなく実現することができる。
以下において、本発明をさらに詳細に説明する。加えて、提案するシステム・アーキテクチャと併せて使用できる好ましい実施形態を説明する。
実行モード
オブジェクト・コンポーネントに基づく標準のシステムは、設計モードおよびユーザ(実行)モードという2つの動作モードを区別する。設計モードでは、コンポーネントが、ユーザによって選択され、プログラミングされ、構成される。また、設計モードにおいて、(単一の)選択されたコンポーネントを実行することも可能である。ユーザ・モードにおいてだけ、完全なアプリケーションが実行される。本発明は、以下の好ましい改良を提供する。
設計モード中、単独のコンポーネントだけでなく、完全なアプリケーション(すべてのコンポーネント)も実行することができる。これは、構成プロセスに関する即時のフィードバックをユーザに提供し、したがって、開発プロセス中に時間を節約する。標準のユーザ・モードは、複数のサブモードに下位分割される。サブモードに応じて、アプリケーションは、自らの挙動および/またはグラフィカル・ユーザ・インターフェースを変更する。ユーザ・モードの例は、パラメータを適合させることが可能である構成モード、およびアプリケーションの限定された変更だけが許されるアプリケーション・モードである。また、これらのサブモードを使用して、例えば、構成モードにおいて較正コンポーネントを自動的に呼び出す、またはユーザ・レベルに応じてユーザ・インターフェースを適合させることも可能である。
自動保管−ロード機構
コンポーネント・ベースのアプリケーション開発の標準の機構は、設計モードで指定された特性を保管し、特性をもはや同じようには適合させ、保管することができないアプリケーション・コードに、その特性を組み込むことである。システムが、ユーザ・モードで値を保管し、再ロードすることを望む場合、これは、設計モードで使用したのとは異なる機構を使用して実行されなければならない。
本発明によれば、保管−ロード機構は、設計モードとユーザ・モードを区別しない。このことは、次の利点を有する。第1に、両方のモードで、システム・ステータスを記憶し、再ロードすることが可能である。第2に、この機構は、ユーザにはトランスペアレントである、すなわち、ユーザは、現在、アクティブであるモードに関して気を配る必要がない。この機構は、常に同じ仕方で動作する。第3に、設計モードにおいて記憶されたステータスが、ユーザ・モードで利用可能であるだけでなく、その逆でも利用可能である。すなわち、ユーザが、実行中にステータスを変更し、設計モードに戻った場合、そのステータスが、やはり利用可能である。第4に、ステータスがアプリケーションにコンパイルされないため、ステータスを容易に交換することができる。これを利用して、例えば、各ユーザに専用ステータスを提供することができる。
データ構造の自動的扱い
画像または関心領域などのデータ構造を扱う標準の機構は、それらのデータ構造をコンポーネントとして扱うことである。これは、ユーザが、プログラミングを適用してこれらのデータ構造をその他のコンポーネントと接続しなければならないことを意味する。さらに、ユーザが、実行中にいくつのデータ要素が必要とされるかを前もって知っていなければならないか、またはプログラミングが、いっそう複雑になる。本発明の方法では、コンポーネントが、これらのデータ構造を自動的に生成し、管理する。ユーザは、データ構造の数、データ構造の生成、またはデータ構造の破壊に気を配る必要がない。また、必要な場合、前述した機構によってデータを自動的に保管し、再ロードすることも可能である。
コンポーネント間でデータの受渡し動作
コンポーネント間でデータの受渡しを行う標準の機構は、次の制約を有する。データは、単一方向で渡される、すなわち、あるコンポーネントが、別のコンポーネントによって使用されるデータを提供するが、結果は返されない。第2の点は、データ記述およびデータの扱いに関わる。これまでは、事前定義された内容を有するデータ構造が使用されている。これは、これらのデータ構造を扱う際に、限られた柔軟性しか可能にしない。
本発明では、両方向でデータの受渡しを行うことができる。すなわち、呼出し側が、あるコンポーネントに入力データを提供する。これに応答して、コンポーネントは、後続のコンポーネントにデータを送ること、または呼出し元にデータを送り返すことが可能である。また、コンポーネントは、自らに直接に非接続別のコンポーネントにデータを送ることもできる。以上の機構により、例えば、画像および関心領域を表示し、操作するだけでなく、コンポーネントが直接に接続されているか否かとは独立に、(すべての)コンポーネントの結果を重ね合わせることも行うビュー・コンポーネントを構成することができるようになる。
本発明は、生のデータ(画像マトリックスのような)を抽象データ記述と組み合わせるデータ要素を使用する。通常のデータの例は、画像、アフィン変換、ポイント、較正データ、ストリング、座標、特徴、測定値、またはポリゴンである。データには、常に記述が伴う。記述は標準化された仕方で設計され、各コンポーネントが記述を解釈できるようにしている。これらの記述を実現する方法は、資料で見ることができる。記述は、コンポーネントが必要とするデータにアクセスできるようにするのに使用される。これに加え、この記述に基づき、コンポーネントがデータを操作することが可能である。コンポーネント間で受渡しが行われるデータは、(順序付きの)1組のデータ要素であることが可能である。スケジューラのようなコンポーネントが、例えば、利用可能なデータのタイプを検査し、そのデータ・タイプを処理することができるコンポーネント(この情報は、コンポーネントの記述を介してアクセスすることができる)にそのデータ・タイプを渡すことが可能である。また、構成プロセス中にデータ記述を使用して(コネクタを参照)、そのデータ・タイプに関してコンポーネントのどのパラメータが適合するかを検査することも可能である。
さらに、(順序付き)セットのデータの使用が、データを集約する容易なやり方をもたらす。例えば、アフィン変換のような変化検出器によって提供されるデータを関心領域に追加して、その領域の位置、向き、およびサイズを修正することができる。このデータは、コンポーネントがそのデータを必要とするか否かとは独立に、すべてのコンポーネントによって引き渡されることが可能である。各コンポーネントは、そのデータを要求し、利用可能である場合、そのデータにアクセスすることができる。他方、すべてのコンポーネントは、コンポーネントが実現されたときにこの特定のデータが知られていたかどうかとは独立に、このデータを引き渡すことができる。
複数のグラフィカル・ユーザ・インターフェース
コンポーネント・ベースのアプリケーション開発における標準の機構は、コンポーネントが、設計モードにおいて構成することの可能な所与のグラフィカル・ユーザ・インターフェースを有することである。
本発明によれば、コンポーネントは、好ましくは、複数のユーザ・インターフェースを有する。これらのインターフェースは、例えば、ユーザの必要に応じて選択される。このことは、2つの可能性をユーザに提供する。最も単純なケースでは、特定グループのユーザの必要に最も良く適合するインターフェースが選択される。画像処理エキスパートが、例えば、すべてのパラメータに対する完全なアクセスを望む。より複雑な適用例では、複数のグラフィカル・ユーザ・インターフェースを1つのプログラムに組み込まなければならない。経験を積んだユーザが、システム・セットアップ中、画像処理パラメータにアクセスする必要がある。アプリケーションが「日常モード」で実行されているときには、開始および停止のための1つのボタン、およびシステム・ステータスに関する赤の「照明」または緑の「照明」だけがあればよい可能性がある。アプリケーションは、例えば、設計モードにおいて様々なサブモードを活動化することによって生成することができる。モードに応じて、グラフィカル・ユーザ・インターフェースが構成される。ユーザ・モードでは、異なるユーザ・インターフェースの間で切り替えを行うのに、サブモードを活動化するだけでよい。
本発明の実施形態を示すブロック図である。 コンポーネント(左下)の活動化後を示す例である。 ビューアの選択後を示す図2の例である。 フレームグラッバ・コンポーネントの選択後を示す図3の例である。 オンライン画像を伴うビューアを示す図4の例である。 図5に示す例のフォーム上にズーミング・コンポーネントを置いた結果を示す図である。 ユーザ・モードにおけるアプリケーションを示す図である。 バーコード・リーダを選択した結果を示す図である。 ユーザ・モードにおけるアプリケーションを示す図である。
以下では、図面を参照しながら本発明をさらに詳細に説明する。
図1の実施形態は、フレームグラッバ12およびグラブ・イメージ・コンポーネント1を使用して画像を入力するユニットから成る。この画像は、画像を表示し、関心領域と画像処理コンポーネントの結果を重ね合わせるビューア2に接続されている。これに加え、ビューア2は、データを管理し、他のコンポーネントにデータを引き渡す。較正コンポーネント3、変化検出コンポーネント4、およびズーミング・コンポーネント5が、ビューア2に直接に接続されている。画像処理部分は、2つのシーケンスから成る。第1のシーケンスは、1つのコンポーネントだけから、すなわち、測定コンポーネント6だけから成る。他方のシーケンスは、blobファインダ7が、特徴抽出コンポーネント8に接続され、コンポーネント8が特徴表示コンポーネント9に接続されている。両方の画像処理部分の結果は、出力コンポーネント10によって出力される。コネクタ11が、活動化された様々なコンポーネント間の接続制御を行う。
この実施形態では、ユーザによって選択されたコンポーネント間で接続を自動的に確立するためのコネクタ11が提供されている。
データおよびユーザ対話の表示
本発明によるシステムは、3つの主なタスクを有する少なくとも1つの特有なコンポーネント(すなわち、ビューア)を有する。
第1のタスクは、画像のような入力データを表示すること、および他のコンポーネントの結果を表示することである。これらの結果は、通常、入力データから導出される。新しい画像が取り込まれたときはいつでも、その画像は、ビューア2において表示される。次に、画像は、画像処理コンポーネントに渡される。画像の中で画像処理コンポーネントが抽出するデータ(エッジ、ライン、座標、距離、またはポリゴン)が、ビューア2に戻され、ビューア2は、画像上にこのデータを重ね合わせ、この視覚化は、データのタイプに依存する。この機能の利点は、画像および結果に関して1つの表示だけが必要とされ、スクリーン上の空間が節約されることである。それに加え、対応するデータが一緒に提示されるため、グラフィカル・ユーザ・インターフェースが、より直観的になり、情報をより速やかに認識することができる。
ビューア2の第2のタスクは、他のコンポーネントを制御することである。アプリケーションの中で使用されるその他のコンポーネントの記述に基づき、ビューア2は、全体的制御ユニットとして動作することができる。ビューア2は、コンポーネント名、関心領域のサポートされているタイプ、または処理することができるデータ・タイプのような情報にアクセスする。この情報に基づき、ビューア2は、グラフィカル・ユーザ・インターフェースを自動的に生成することができる。他のコンポーネントの一般的プロパティを制御するのに、ユーザは、このグラフィカル・ユーザ・インターフェースと対話するだけでよい。これらの対話に基づき、ビューア2は、メッセージを対応するコンポーネントに送る。
ビューアの第3のタスクは、関心領域のような追加のデータを他のコンポーネントに提供することである。タイプ情報に基づき、ビューアは、他のコンポーネントが処理することができる入力データの種類について知る。これを使用して、コンポーネントに適合する関心領域を生成する。これらの関心領域は、画像データの上にその関心領域を重ね合わせ、例えば、マウス対話を使用して関心領域を変更または生成することにより、ビューアのグラフィックス・ウインドウの中で操作することができる。コンポーネントが実行されるとき、対応する関心領域が画像と組み合わされ、入力として渡される。
コンポーネントのカテゴリ
タスクおよびコンポーネントの挙動に依存して、コンポーネントは、カテゴリに割り当てられる。したがって、カテゴリは、同様の挙動を有する1組のコンポーネントである。カテゴリは、例えば、アプリケーションのための実行メソッドを生成するため、またはコンポーネントを接続するために使用される。以下に、カテゴリの例および対応するタスクを提示する。
・ビューア:入力データを表示し、そのデータを関心領域および他のコンポーネントの結果と重ね合わせる。
・メタ・コンポーネント:アプリケーションの全体の構造を表示し、制御フローを統計的に表示し、また実行中、使用されるリソースおよび実行時間を表示する。
・入力:シリアル・インターフェースまたはデジタルI/Oのような他のソースからの画像データおよびデータの入力
・出力:ファイル、シリアルI/O、またはバスのようなデバイスにプロセスの結果を出力する。
・較正:形状較正または放射較正のようなビジョン・システムおよび入力デバイスの較正。
・変化検出:入力データ(照明または基準オブジェクトの位置のような)における変化が検出され、変化情報が、他のコンポーネントに引き渡される。
・検査:これらのコンポーネントは、画像のような入力データから情報を抽出するのに使用される。これは、例えば、ズーミング、ヒストグラム、雑音レベル、照明、コントラスト、またはシャープネスであることが可能である。
・認証:アプリケーションを使用することを望むユーザは、自らの身元を明らかにしなければならない。この情報に基づき、アプリケーションは、使用を拒否する、自らの挙動を変更する、グラフィカル・ユーザ・インターフェースを変更する、またはユーザ・モードを選択することができる。
・グラフィカル・ユーザ・インターフェース:コンポーネントは、データ処理を行う別のコンポーネントと組合せで使用される単なるグラフィカル・ユーザ・インターフェースであることが可能である。そのようなコンポーネントは、コンポーネントの機能性の(部分的)制御を可能にする。コンポーネントは、好ましくは、例えば、ユーザまたはユーザ・モードに応じて選択することができる複数のユーザ・インターフェースを有する。
・画像処理:このコンポーネントは、図象データを入力として有し(例えば、画像、領域、またはポリゴン)、また図象データおよび/または数値データを出力する。
・データ処理:これらのコンポーネントは、特徴抽出の結果またはシリアル・インターフェースの入力のような一般的データを処理する。
実行メソッド
アプリケーションの実行は、3つのメソッドを有するが、ただし3つに限定されず、3つのメソッドは、次のとおり、ユーザの対話または他のデバイスからの入力によってトリガされる。(i)入力データ(例えば、外部トリガ、画像取り込み、または他の入力チャネル)によって駆動される:この場合、このデータを必要とするすべてのコンポーネントが実行される。これは、自動的に生成されたスケジュールに従ってすべてのコンポーネントを実行するように行われる。実行のこのシーケンスは、受動的(入力からトリガされる)または能動的(例えば、フレームグラッバからデータを要求して)であることが可能である。(ii)入力データ(例えば、画像)とのユーザ対話:この場合、この種類のユーザ対話に反応することができるすべてのコンポーネントが、その対話の情報とともに操作されたデータを伴って実行される。例として、ユーザが、画像を表示するビューアのグラフィックス・ウインドウの中でマウスを動かす。この対話は、ポイントとの組合せで画像を処理することができるすべてのコンポーネント(例えば、ズーミングのためのコンポーネント)の実行をもたらす。(iii)ユーザが、コンポーネントのステータス(パラメータ)を変更する:この場合、そのコンポーネントが、そのコンポーネントに依存するすべてのコンポーネントとともにやはり実行される。ユーザが、例えば、blob分析のしきい値を変更した場合、スケジューラが、blob分析を実行し、blob分析は、ビューアにおいて対応する画像上に重ね合わせることができる新しいセグメンテーションを生成する。
標準の実行メソッドを説明する前に、スケジューラの目的および機能を説明する。
スケジューラは、実行の順序を指定し、データを管理し、コンポーネント間でデータの受渡しを行い、コンポーネントを実行する本発明の部分である。
スケジューラを実現する3つの主なやり方が存在する。
−スケジューラは、他のすべてのコンポーネントに接続されるコンポーネントである。本発明によって提案されるコンポーネント通信のための機構、例えば、コンポーネントの実行およびデータの転送を使用することにより、このコンポーネントは、スケジューラの機能を実現する。
−スケジューラは、コネクタのようなソフトウェア・モジュールである。このモジュールは、コンポーネントがコネクタに接続する際にそのコンポーネントに接続される。この接続に基づき、スケジューラは、スケジューラの機能を実現することができる。この実現形態では、ユーザは、アプリケーションにスケジューラ・コンポーネントを追加する必要がなく、システムの使用がより容易になる。この場合、スケジューラは、コネクタにリンクされる(コンパイラの用語法における意味で)ことになる。
−スケジューラは、コンポーネントの間で記述される。あるコンポーネントに特有の機能性は、そのコンポーネントの一部である。これは、コンポーネントを実現する際に使用するライブラリを提供することによって実施することができる。この手法は、必要とされる通信がより少ないため、他の2つの手法より少しだけ高速である。これは、本発明の好ましい実施形態で使用される実現形態である。
標準の実行メソッドは、前述したメソッドの第1のメソッドに対応する。このメソッドは、所与の順序ですべてのコンポーネントに適用される1組の規則に基づく。ユーザは、この構成プロセスに気を配る必要がない。
・メイン・ループ:スケジューラは、所与の順序でコンポーネントを実行する。スケジューラは、データを入力する(例えば、画像を取り込む)コンポーネントから開始する。これらのコンポーネントが新しいデータを提供するときはいつでも、すべての直接および間接に依存するコンポーネントが実行される。シーケンスを一巡した後、プロセスは、始めから開始する。このリスタートは、トリガ信号のような外部イベントにより、またはデータを能動的に要求することによって起動されることが可能である。両方のケースで、システムは、データが利用可能になるまで待って、標準の実行シーケンスをリスタートしなければならない。例えば、ユーザによって生じさせられた対話が存在する場合はいつでも、システムは、前述した他の2つの実行メソッドの1つに切り替えることができる。この切替えは、システムが実行シーケンスの終了に到達したときに行われることが可能である。これにより、整合性のある結果だけが計算されることが確実になる。
・データの入力:第1のアクションは、画像を取り込むこと、またはその他の外部データにアクセスすることである。この入力は、能動的に起動されること、または外部信号によって起動されることが可能である。図1で、コンポーネント1が実行される。
・表示すること:サブモードおよび使用されるプロパティに応じて、画像が表示される。オプションとして、画像を関心領域またはその他の(入力)データと重ね合わせることができる。図1で、コンポーネント2(ビューア)が実行される。
・一次ビジョン・ループ:実行サブモードに応じて、特定の前処理コンポーネントが実行される。
・検査:これらのコンポーネントは、すべてのサブモードで使用される。図1で、これは、コンポーネント5(ズーミング)に対応する。
・較正:これらのコンポーネントは、構成モードで使用される。これらのコンポーネントは、実行されたとき、アプリケーション・モードで後に使用するために記憶されなければならないデータを戻す。このデータは入力データに追加されて、ビジョン・コンポーネントが、結果を較正し、自らの精度を高めることができるようにする。図1で、これはコンポーネント3に対応する。
・変化検出:アプリケーション・モードで、これらのコンポーネントは、表示によって画像に追加され、ビジョン・コンポーネントが、これらの変化を補償することができるようにするデータを戻す。図1で、これは、コンポーネント4に対応する。
・ビジョン・ループ:スケジューラは、一次コンポーネントからのデータ(例えば、較正データ3または変化検出4)を画像と組み合わせる。次に、すべての接続されたビジョン・コンポーネントのためのループが開始される。これは、それぞれの直接に接続されたビジョン・コンポーネントが、情報を提供されて、開始されることを意味する。この結果、そのコンポーネントのすべての後続のコンポーネントも実行される。それぞれの直接に接続されたビジョン・コンポーネントに関して、スケジューラは、関心領域のリストを有する。このリストも、画像データに追加される。
・実行:合成画像データが、ビジョン・コンポーネントに渡されて、実行される。
・後続のコンポーネント:コンポーネントは、後続のコンポーネントを有する場合、自らの入力データを自らの結果と合わせて後続のコンポーネントに引き渡し、後続のコンポーネントを実行する。必要な場合、コンポーネントは、後続のコンポーネントに引き渡す前に入力データを変更することができる。このプロセスが、すべての後続のコンポーネントが実行されるまで繰り返される。
・ビジョン結果:コンポーネントが結果を計算したときはいつでも、結果がビューアに戻されることが可能であり、ビューアにおいて、その結果をそれまでに表示されている画像およびその他のデータと重ね合わせることができる。結果を表示するこのやり方は、コンポーネントが直接に接続されているか否かとは独立に機能する。
・非図象結果:面積、距離、またはテキストのようなデータも、スケジューラに戻される。この場合、すべての結果が利用可能になるまでデータを収集することができる。
・制御メッセージ:コンポーネントが、ハードウェア、例えば、フレームグラッバを制御するのが必要である可能性がある。この場合、このコンポーネントは、所望のアクションを生成するメッセージをスケジューラに送り返すことができる。
図1において、2つのシーケンスが利用可能である。第1のシーケンスは、測定コンポーネント6だけから成る。このシーケンスが最初に実行される。測定の結果は、ビューア2に戻される。第2のシーケンスは、コンポーネント7、8、および9から成る。これらのコンポーネントは、この順序で実行される。結果は、最後のコンポーネント9、すなわち、シーケンスの特徴表示によってビューア2に戻される。
・出力:すべてのビジョン・コンポーネントが実行された後、ビューア2において結果のデータが利用可能である。したがって、結果のデータは、すべての接続された出力コンポーネントに渡される。図1では、1つの出力コンポーネント10が接続されている。
実行が対話によって生じさせられる場合、ユーザが実行メソッドに影響を与えることができる2つのやり方が存在する。第1のやり方によれば、ユーザは、ビューアにおいて見ることができるデータと対話する。ユーザが、画像のような入力データ上をポイントした、またはそのデータ上でクリックした場合、ビューアは、実行が標準の実行メソッドで行われる限り、それらのイベントを収集する。スケジューラが、標準の実行シーケンスを終了したとき、対話が検査され、また例えば、重複が除去される。次に、この種類のデータを処理することができるすべてのコンポーネントが、マウス位置およびボタン・プレス・データと組み合わされた現在、利用可能なデータを伴って実行される。その後、スケジューラは、標準の実行メソッドに取りかかることができる。図1で、マウス対話を処理することができる1つのコンポーネント、すなわち、ズーミング・コンポーネント5が接続される。このコンポーネントが、この場合、実行される。
別法では、ユーザは、例えば、画像処理パラメータを変更することによって任意のコンポーネントと対話する。これが行われるときはいつでも、コンポーネントは、自らが再実行されなければならないことをスケジューラに知らせる。スケジューラは、この要求を送ったコンポーネントのリストを保持する。標準の実行シーケンスが終了したとき、このリストが処理される。これは、リストのコンポーネントを含むすべてのサブシーケンスが、再実行されることを意味する。例として、ユーザが、図1のblobファインダ7と対話する。これは、コンポーネント7、8、および9の再実行をもたらす。
用途に応じて、前述した実行メソッドが、好ましく使用されるに過ぎない。前述した実行メソッドは、時間がクリティカルな重要性を有する用途では必要ない。さらに、古いデータを使用する代りに、例えば、フレームグラッバからの新しいデータとともにコンポーネントを処理することが可能である。
次に、実現の詳細を説明する。新しいコンポーネントをプログラミングする際に誤りを回避し、新しいコンポーネントを開発するタスクを容易にするため、以下の規則を適用することができる。第1に、基本データ構造、およびすべてのコンポーネントに共通するメソッドを実現するルート・クラスが使用される。このクラスは、すべてのコンポーネントに対するインターフェースとして使用される。これにより、すべてのコンポーネントが同一の基本機能性を有することが保証される。ルート・クラスは、本発明のコンポーネントに共通するすべての機能性を実現することができる。これに加えて、ルート・クラスから導出された各カテゴリごとに1つのクラスが実現される。これらのクラスは、そのカテゴリに特有のデータ構造およびメソッドを実現する。これらのクラスは、特定のカテゴリに属するコンポーネントに対するインターフェースとして使用される。最後に、各コンポーネントが、1つのカテゴリのクラスから導出される。これにより、コンポーネントが、コンポーネントの共通で有するすべての機能を有し、およびそれに加えて、カテゴリに特有の機能を有することが保証される。
設計モードおよびユーザ・モードにおけるロード/保管に関して、以下のことに留意されたい。コンポーネントが、セッション中に初めて呼び出されたとき、それが設計モードで行われるか、ユーザ・モードで行われるかとは独立に、このコンポーネントの状態が、アプリケーションのコンテキストにロードされる。アプリケーションとの組合せでコンポーネントに関する状態情報が全く利用可能でない場合、デフォルトの値が戻される。例えば、実行の終了時または設計時間の終了時にコンポーネントが破壊されるとき、そのステータスが保管される。このデータは、アプリケーションのコンテキストの中に記憶される。これは、アプリケーションの状態情報が、アプリケーションに属するコンポーネントの状態のセットとして定義されることを意味する。アプリケーションの状態情報は、例えば、ファイルの中、またはオペレーティング・システムのレジスタの中に記憶することができる。

以下の例は、カメラからの画像を取り込み、これらの画像をビューアにおいて表示し、画像の中のバーコードを調べ、そのコードを読み取り、その結果をシリアル・インターフェースに渡す通常のアプリケーションの開発を説明している。さらに、オンライン・ズーミングが、画像を検査するために追加される。
開発環境を開始すること
この例は、アプリケーションを開発するのにマイクロソフト・ビジュアルベイシック(Microsoft Visual Basic)が使用されることを想定している。したがって、この環境は、ユーザによって開始され、「標準(Standard)−EXE」が選択される。この後、ユーザは、メニュー「プロジェクト」の中でダイアログ「コンポーネント」を選択して、本発明のコンポーネントを活動化する。各コンポーネントの活動化の後、コンポーネント選択においてアイコンが表示される。この時点で、ユーザは、アプリケーションの開発を開始することができる。図2は、コンポーネント(左下)の活動化の後のビジュアルベイシックを示している。中央のエリア「(フォーム1)」を使用してアプリケーションのコンポーネントを配置する。
ビューアの選択
第1のステップとして、ユーザが、ビューアのアイコンをダブルクリックする。これは、開発中のアプリケーションのフォームの中に自動的に配置されるこのコンポーネントのインスタンスを生成する(図3参照)。ビューアのサイズ、位置、およびその他のプロパティは、ユーザが変更することができる。これは、マウスでビューアを操作することにより(例えば、位置およびサイズ)、またはプロパティを直接に変更することによって(例えば、ウインドウの右下のプロパティ・ページを使用して)行うことができる。ビューア2が、フォーム(「フォーム1」)上に配置されたとき、コンポーネントの初期化ルーチンが実行され、その後、このコンポーネントが、フォーム上に描かれる。初期化ルーチン中、コンポーネントは、コネクタ11の登録ルーチンを呼び出す。コンポーネントは、自らに対する参照をパラメータとしてコネクタに渡す。コネクタ11は、初めて呼び出されるので、自らのデータ構造を初期化する。コンポーネントに対する参照を使用して、コネクタは、コンポーネントの記述にアクセスすることができる。コネクタは、まず、そのコンポーネントが入力コンポーネントであるかどうかを調べる。ビューア2は、入力コンポーネントではないので、非接続コンポーネントのリストに入れられる。接続されているコンポーネントのリストは、空のままである。したがって、単一のビューア・コンポーネントは、アプリケーションを実現しない。
ユーザが、コンポーネントと対話するときはいつでも(マウスを使用することにより、またはプロパティを変更することにより)、コンポーネントの対応するルーチンが実行される。
フレームグラッバ・コンポーネントの選択
この例の次のステップとして、ユーザが、フレームグラッバ・コンポーネント12のアイコンをダブルクリックすることによってフレームグラッバ・コンポーネント12を選択する。この結果、このコンポーネントが、フォーム上に配置される。ビューア2と同様に、ユーザは、対話式にサイズ、位置、およびその他のプロパティを適合させる。これらのアクションの結果を図4で見ることができる。
フレームグラッバ・コンポーネント1は、フォーム上に配置されたとき、コネクタ11を呼び出す(ビューア2と同様に)。自らに対する参照をコネクタに渡すことにより、自動接続プロセスが起動される。コネクタは、まず、コンポーネントのカテゴリを調べる。このカテゴリは、「入力」であるため、フレームグラッバ1は、アプリケーションの第1のコンポーネントとなる。これまで、コンポーネントは、全く接続を有していない。第2のステップとして、コネクタは、非接続コンポーネントのリストの中のコンポーネントを再検査する。この場合、1つだけのコンポーネント、つまり、ビューアが利用可能である。この時点で、接続パラメータに関するすべての規則が試験される。この場合、フレームグラッバが、ビューアに接続される。この理由は以下のとおりである。
・入力コンポーネントは、ビュー・コンポーネントに接続することができる。
・フレームグラッバの出力タイプは、「画像」であり、また
・ビューアの入力タイプは、「画像」である。
したがって、フレームグラッバ12は、ビューア2に接続され、また、ビューア2も、フレームグラッバ12に接続される。これは、両方のコンポーネントとも、他方のコンポーネントに対する参照を獲得することを意味する。この参照を使用して、両方のコンポーネントは、データを交換し、互いのルーチンを呼び出すことができる。
設計モードにおける実行
アプリケーションを設計モードで実行するため、ユーザは、フレームグラッバ上で右マウス・ボタンをクリックする。これは、ポップアップ・メニューを生じさせ、最後のエントリ(「編集」)が選択される。これにより、ユーザは、コンポーネントのグラフィカル・エンティティ(ボタン、オプション・メニュー等)を使用できるようになる。これらのエンティティを使用して、ユーザは、適切なフレームグラッバおよびそのパラメータを選択し、フレームグラッバをオンラインに切り替える。
ユーザが、ポップアップ・メニューを使用してコンポーネントを活動化したとき、コンポーネントのすべてのデータ構造およびルーチンがアクティブになる。すなわち、ユーザの対話によってコンポーネントが呼び出されたとき、すべてが実行されることが可能である。ユーザが、フレームグラッバのパラメータを変更したとき、フレームグラッバは、カメラからの信号にアクセスする。これにより、フレームグラッバ・コンポーネント内で画像が生成される。フレームグラッバは、ビューアに接続されているので(データ・ソースとして)、その画像をビューアに渡す。これにより、ビューアが活動化され、ビューアは、その画像を表示する。フレームグラッバは、アクティブに留まっている限り、画像を生成し、画像は、ビューアに引き渡されて表示される。ユーザにとっての効果は、ビューアにおいて見ることができるオンライン画像であり、フレームグラッバ・パラメータは、フレームグラッバ・コンポーネントにおいて編集される。図5が、オンライン画像を有するビューアを示している。
オンライン・ズーミング・コンポーネントの選択
画像の品質を検査するため、ユーザは、オンライン・ズーミング・コンポーネント5を追加する。このアクションは、前の2つのコンポーネントのアクションと同じである。
この場合、ズーミング・コンポーネントは、ビューアに接続される。この理由は、ズーミング・コンポーネントのカテゴリが「検査」であり、検査コンポーネントは、ビュー・コンポーネントに接続することができ、ズーミング・コンポーネントの入力データ・タイプは、「画像」であり、またビューアは、出力データ・タイプ「画像」を提供するからである。
次に、ユーザが、ビューアを活動化する。マウスが表示の中で動かされたとき、ズーミング・コンポーネントは、マウスが位置している画像の部分を表示する。システムに関して、次の2つのアクションが、オンライン・ズーミングのために重要である。画像がビューアに渡された(フレームグラッバから)ときはいつでも、その画像が、ズーミング・コンポーネントに自動的に引き渡される。さらに、ユーザが、ビューアの表示の中でマウスを使用して対話する場合、ズーミング・コンポーネントが、画像およびマウス座標で呼び出される。
図6は、ズーミング・コンポーネントをフォーム上に配置した結果を示している。それに加えて、ビューアにおいてマウスを動かすことの効果を見ることができる。
ユーザ・モードにおける実行
図7は、ユーザ・モードにおけるアプリケーションを示している。ユーザが、ビジュアルベイシック環境の実行ボタンを押して、ユーザ・モードでアプリケーションを実行する。これにより、プログラムが独立型アプリケーションとして開始される。ユーザは、通常の仕方で(フレームグラッバ・パラメータを編集し、オンライン・ズーミング・コンポーネントにおいて画像を表示して)アプリケーションと対話することができる。最後に、ユーザは、アプリケーションを停止し、設計モードに戻る。ユーザでアプリケーションに適用された変更は、設計モードにおいて再び利用することができる。
ユーザが、実行ボタンを押したとき、アプリケーションのすべてのコンポーネントが破壊される。これが行われる前に、コンポーネントは、自らの状態情報(パラメータ設定のような)を特別状態ファイルの中に保管する。この後、ビジュアルベイシックが、実行される実行可能ファイルを作成する。これが行われたとき、すべてのコンポーネントが新たに作成され、その対応する位置に配置される。この後、コンポーネントは、ファイルから自らの状態情報を読み取り、適宜に自らを再構成する。次に、すべてのコンポーネントが、コネクタを呼び出して、設計モードにおいて使用されたのと同じ接続を生成する。最後に、アプリケーションは、ユーザの入力を待つ。ユーザが、フレームグラッバのスイッチをオンにしたとき、システムが、デフォルトの実行機構で実行される。つまり、フレームグラッバ・コンポーネントが、画像を待ち、画像をビューアに渡し、ビューアが、その画像を表示し、その画像をズーミング・コンポーネントに引き渡す。ユーザが、ビューアの表示の中でマウスを動かしたときはいつでも、そのマウス座標でズーミングに対する追加の呼出しが生成される。
ユーザが、アプリケーションを停止したとき、すべてのコンポーネントが破壊される。その前に、コンポーネントは、自らの状態情報を状態ファイルの中に保管する。
ビジュアルベイシックが、設計モードに戻ったとき、コンポーネントが新たに生成され、その状態情報が再ロードされて、コンポーネントが再接続される。
図7は、ユーザ・モードにおけるアプリケーションを示している。
バーコード・コンポーネントの選択
アプリケーションを完成させるため、ユーザは、バーコード・リーダをアプリケーションに追加する。図8は、バーコード・リーダを選択した結果を示している。このコンポーネントは、選択されて、生成されたとき、アプリケーションに接続される。以下の規則が使用される。
・バーコード・リーダは、ビジョン・コンポーネントである。
・ビジョン・コンポーネントは、ビューアに接続することができる。
・バーコード・リーダの入力タイプは、「画像」である。
・ビューアは、画像のための出力を有する。
関心領域を定義すること
最後に、グラフィカル・コンポーネントをアプリケーションに追加して関心領域を作成し、編集する。関心領域コンポーネントは、ビューアに接続される。この理由は、以下のとおりである。
・このコンポーネントのカテゴリは、「グラフィカル・ユーザ・インターフェース・コンポーネント」であり、また
・「グラフィカル・ユーザ・インターフェース・コンポーネント」は、ビューアに接続することができる。
このコンポーネントが接続された後、ビューアは、ビューアに依存するすべてのコンポーネントに関する情報をこの新しいコンポーネントに提供する。この情報から、以下が選択される。
・接続されているコンポーネントの名前
・サポートされる関心領域のタイプ
・関心領域の最大数
この情報を使用して、適宜にダイアログが構成される。
ユーザ・モードにおける実行
ユーザ・モードにおけるアプリケーションを実行するため、ユーザが、実行ボタンを押す。ユーザ・モードでは、バーコード・リーダに関する関心領域が指定される。これを行うことにより、アプリケーションが、自動的に実行され、特定の関心領域を有するバーコード・リーダが実行される。ユーザが、バーコード・リーダのパラメータを変更したとき、このコンポーネントは、新しいパラメータを伴って再実行される。フレームグラッバが新しい画像を提供したとき、ビューアが、その画像を表示し、ズーミング・コンポーネントおよびバーコード・コンポーネントを実行する。
ステータスが、設計モードからユーザ・モードに変化したとき、およびその逆のとき、前述した同一の機構が実行される。
ユーザが、関心領域コンポーネントにおいてあるコンポーネントを選択したとき、そのコンポーネントによってサポートされる関心領域のタイプを選択することができる。それらのタイプのどれかを選択することにより、ユーザは、ビューアにおいて関心領域を対話式に生成することができる。この関心領域は、それが属するコンポーネントに関する情報とともにビューアで記憶される。所与の例ではバーコード・リーダである、そのコンポーネントが実行されるときはいつでも、画像がそのコンポーネントに渡されるとき、関心領域がその画像と自動的に組み合わされる。
図9は、ユーザ・モードにおけるアプリケーションを示している。関心領域コンポーネント(左中間)において、コンポーネント「1Dバーコード」および長方形の関心領域タイプが選択される。生成された関心領域は、例えば、ビューアにおける赤の長方形として見ることができる。バーコード・コンポーネント(左上)において、復号化の結果が表示される。コードに対応する領域は、例えば、ビューアにおける青の枠として表示される。これは、セグメンテーションの結果をビューアに戻し、その結果を画像に対して重ね合わせることによって行われる。
アプリケーションを保管すること
ユーザは、設計モードに戻ったとき、標準のビジュアルベイシック機構を使用して独立型アプリケーションを生成することができる。これにより、「exe」ファイル、および状態情報を含むファイルが生成される。

Claims (23)

  1. コンピュータにより自動的に実行して画像処理アプリケーションを開発するための方法であって、前記コンピュータは複数の画像処理コンポーネント(1ないし10)およびコネクタ手段(11)を含み、前記コネクタ手段は選択されたコンポーネントを自動接続するための特別セットのメソッドおよびデータ構造であって、動作されるときに1つのインスタンスを生成するクラスとして実現され、前記コンピュータは、
    (a)複数の画像処理コンポーネント(1ないし10)を受信するステップと、
    (b)ユーザによって複数のコンポーネントから選択されたコンポーネント間の接続を確立するため、該選択されたコンポーネントを受信するステップと、
    (c)前記コネクタ手段(11)を動作して、前記選択されたコンポーネント間を接続する定義を要求されることなく、前記選択されたコンポーネントを互いに自動的に接続して、前記画像処理アプリケーションを生成するステップと、
    を含む、方法。
  2. ステップ(b)とステップ(c)の間に、前記コンピュータは前記選択されたコンポーネントを前記コネクタ手段(11)に自動的に接続するステップをさらに含む、請求項1に記載の方法。
  3. ステップ(c)において、前記選択されたコンポーネントの前記自動接続が、前記それぞれのコンポーネントによって提供される情報に基づく、請求項1または2に記載の方法。
  4. 前記コネクタ手段(11)は、初めて活動化されたときに自らのデータ構造を初期化する、請求項1、2、または3に記載の方法。
  5. 前記コネクタ手段(11)は、前記選択されたコンポーネント(1ないし10)を登録する、請求項1ないし4のいずれかに記載の方法。
  6. 前記選択されたコンポーネントは、前記コネクタ手段(11)により、各選択されたコンポーネントが他の選択されたコンポーネントに接続可能であるか否かに応じた少なくとも2つのグループにおいて登録される、請求項5に記載の方法。
  7. 各選択されたコンポーネントは、前記コネクタ手段(11)に対する参照またはポインタ、および/または自らの記述を前記コネクタ手段(11)に渡す、請求項1ないし6のいずれかに記載の方法。
  8. 前記コンピュータは、第1の選択されたコンポーネントは、入力コンポーネントである場合、初期コンポーネントとして使用、入力コンポーネントではない場合、非接続コンポーネントのリストに追加する、請求項1ないし7のいずれかに記載の方法。
  9. 1組の評価規則に従って先行の選択されたコンポーネントの利用可能なパラメータにおいて各後続のコンポーネントを検査し、接続が前記評価規則を満たす場合、前記各後続のコンポーネントを候補接続リストに追加するステップと、
    前記選択されたコンポーネントの入力パラメータおよび出力パラメータのデータ・タイプを検査するステップと、
    前記画像処理アプリケーションとの接続の整合性を検査するステップと、
    前記コンポーネントを前記画像処理アプリケーションに追加するステップと、
    前記選択された接続を確立するステップと、
    を前記コネクタ手段はさらに含む、請求項8に記載の方法。
  10. 前記評価規則は、整合性を判定し、アプリケーション実行中にデッドロックを回避するグラフ分析を含む、請求項9に記載の方法。
  11. 前記評価規則は、コンポーネントのカテゴリ、局所性、選択の順序、アプリケーション・エリア、ユーザ、および接続を確立するためのユーザ・プロファイルを利用する、請求項9または10に記載の方法。
  12. 前記コネクタ手段(11)は、現在のコンポーネントおよび前記現在のコンポーネントの接続に関する情報をアンロードされる前に保管する、請求項1ないし11に記載の方法。
  13. 前記情報は、前記画像処理アプリケーションを再び活動化する際に再ロード可能である、請求項12に記載の方法。
  14. 少なくとも1つのコンポーネント(1ないし10)は、自らの挙動を指定する記述を含み、前記記述が、入力パラメータおよび出力パラメータの数、入力パラメータのタイプおよび出力パラメータのタイプ、カテゴリ、名前、説明、表明、および制約を含むグループから選択された情報を含む、請求項1ないし13のいずれかに記載の方法。
  15. 前記選択されたコンポーネントは、設計モードにおいて同時に実行可能である、請求項1ないし14のいずれかに記載の方法。
  16. システム・ステータスは、設計モードおよび/またはユーザ・モードにおいて記憶可能かつ再ロード可能であり、設計モードにおいて記憶されたものはすべて、ユーザ・モードで再ロード可能であり、逆もまた同様である、請求項1ないし15のいずれかに記載の方法。
  17. 前記画像処理アプリケーションのデータ構造が、自動的に生成され、管理される、請求項1ないし16のいずれかに記載の方法。
  18. データは、双方向にコンポーネント間で受渡しが行われる、請求項1ないし17のいずれかに記載の方法。
  19. コンポーネントは、自らに直接に非接続コンポーネントにデータを送る、請求項1ないし18のいずれかに記載の方法。
  20. 少なくとも1つのコンポーネントは、複数のユーザ・インターフェースを有する、請求項1ないし19のいずれかに記載の方法。
  21. 前記コンピュータは、
    データの受渡しを行うために前記選択されたコンポーネント(1ないし10)を接続するステップと、
    実行メソッドを構成するステップと、
    情報の受渡しを行うためにすべての選択されたコンポーネント間で広域通信を確立するステップと、
    処理されるデータを決定するステップと、をさらに含む、請求項1ないし20のいずれかに記載の方法。
  22. 請求項1ないし21に記載の画像処理アプリケーションを開発するための方法を実行するためのプログラムを記憶したコンピュータ読取可能記録媒体。
  23. 請求項1ないし21に記載の画像処理アプリケーションを開発するための方法を実行するためのシステム。
JP2011102778A 2000-03-08 2011-05-02 画像処理アプリケーションを開発するための方法およびシステム Pending JP2011165208A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00104933A EP1132863A1 (en) 2000-03-08 2000-03-08 Method and system for developing image processing applications
EP00104933.7 2000-03-08

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001565130A Division JP2003526168A (ja) 2000-03-08 2001-03-06 画像処理アプリケーションを開発するための方法およびシステム

Publications (1)

Publication Number Publication Date
JP2011165208A true JP2011165208A (ja) 2011-08-25

Family

ID=8168058

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2001565130A Pending JP2003526168A (ja) 2000-03-08 2001-03-06 画像処理アプリケーションを開発するための方法およびシステム
JP2011102778A Pending JP2011165208A (ja) 2000-03-08 2011-05-02 画像処理アプリケーションを開発するための方法およびシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2001565130A Pending JP2003526168A (ja) 2000-03-08 2001-03-06 画像処理アプリケーションを開発するための方法およびシステム

Country Status (5)

Country Link
US (1) US7450119B2 (ja)
EP (2) EP1132863A1 (ja)
JP (2) JP2003526168A (ja)
AU (1) AU3743201A (ja)
WO (1) WO2001067389A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020868B2 (en) * 2000-11-22 2006-03-28 General Electric Company Graphic application development system for a medical imaging system
US8411151B2 (en) * 2002-03-29 2013-04-02 IQinVision, Inc. System for, and method of, processing an image
US7557964B2 (en) 2002-03-29 2009-07-07 Infoprint Solutions Company, Llc Methods, systems, and media to calibrate a reprographic system
JP4086529B2 (ja) * 2002-04-08 2008-05-14 松下電器産業株式会社 画像処理装置及び画像処理方法
US20050162651A1 (en) * 2004-01-22 2005-07-28 Seagate Technology Llc Automatic optical inspection of components using a shadow projection threshold for a data storage device
JP2005227897A (ja) * 2004-02-10 2005-08-25 Fuji Photo Film Co Ltd 画像表示方法、画像表示装置及び画像表示プログラム
JP2011142378A (ja) * 2010-01-05 2011-07-21 Seiko Epson Corp コンピューターが組み込まれた装置の制御
JP5181008B2 (ja) * 2010-10-01 2013-04-10 富士フイルム株式会社 自動処理リスト作成装置、方法並びにプログラム
US9635069B2 (en) * 2014-08-06 2017-04-25 Verizon Patent And Licensing Inc. User feedback systems and methods
US11173510B2 (en) * 2019-03-22 2021-11-16 Twenty Twenty Therapeutics Llc Imaging device for identifying a liquid within a dispenser

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62100874A (ja) * 1985-10-28 1987-05-11 Hitachi Electronics Eng Co Ltd 画像認識用プログラム開発システム
WO1999001846A1 (en) * 1997-07-02 1999-01-14 Mental Images Gmbh & Co. Kg A computer graphics system
WO1999014646A1 (en) * 1997-09-16 1999-03-25 Medar, Inc. Method and system for interactively developing a graphical control-flow and associated application software for machine vision system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768475A (en) * 1995-05-25 1998-06-16 Pavilion Technologies, Inc. Method and apparatus for automatically constructing a data flow architecture
US5742504A (en) * 1995-11-06 1998-04-21 Medar, Inc. Method and system for quickly developing application software for use in a machine vision system
US6226783B1 (en) * 1998-03-16 2001-05-01 Acuity Imaging, Llc Object oriented method of structuring a software step program
US6061602A (en) * 1998-06-23 2000-05-09 Creative Lifestyles, Inc. Method and apparatus for developing application software for home automation system
US6256625B1 (en) * 1998-09-15 2001-07-03 National Instruments Corporation Video acquisition system including objects with dynamic communication capabilities
US6389587B1 (en) * 1999-02-04 2002-05-14 Sun Microsystems, Inc. User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs
US6611735B1 (en) * 1999-11-17 2003-08-26 Ethyl Corporation Method of predicting and optimizing production
US6931602B1 (en) * 2000-12-22 2005-08-16 Cognex Corporation Approach facilitating the selection of various machine vision functionality from among different platforms
US7051317B2 (en) * 2001-06-29 2006-05-23 National Instruments Corporation System and method for specifying a computer-implemented process using different programming methodologies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62100874A (ja) * 1985-10-28 1987-05-11 Hitachi Electronics Eng Co Ltd 画像認識用プログラム開発システム
WO1999001846A1 (en) * 1997-07-02 1999-01-14 Mental Images Gmbh & Co. Kg A computer graphics system
WO1999014646A1 (en) * 1997-09-16 1999-03-25 Medar, Inc. Method and system for interactively developing a graphical control-flow and associated application software for machine vision system

Also Published As

Publication number Publication date
US7450119B2 (en) 2008-11-11
EP1269413A1 (en) 2003-01-02
AU3743201A (en) 2001-09-17
US20030039392A1 (en) 2003-02-27
WO2001067389A1 (en) 2001-09-13
JP2003526168A (ja) 2003-09-02
EP1132863A1 (en) 2001-09-12

Similar Documents

Publication Publication Date Title
JP2011165208A (ja) 画像処理アプリケーションを開発するための方法およびシステム
US8370811B2 (en) Modularizing and aspectizing graphical user interface directed test scripts
US8170901B2 (en) Extensible framework for designing workflows
US5961610A (en) Systems, methods and apparatus for generating and controlling display of medical images
US6854111B1 (en) Library manager for automated programming of industrial controls
US6668370B1 (en) Synchronous execution of object-oriented scripts and procedural code from within an interactive test facility
CA2211373C (en) Learn mode script generation in a medical imaging system
US20030200533A1 (en) Method and apparatus for creating software objects
US7237199B1 (en) Architecture for an application framework
WO2000067120A1 (en) Method and system for interactively developing graphical control-flow structure and associated software for machine vision system
JP2001516910A (ja) マシンビジョンシステムのための図形制御流れ及び関連ソフトウェアを会話形で開発する方法及びシステム
JP2006107478A (ja) ワークフローを設計するための拡張可能フレームワーク
US6707469B1 (en) Synchronous execution in a medical imaging system
JPH0334018A (ja) コンピュータプログラムのカプセル化方法及びその装置
CA2211369C (en) Cell overlap detection and correction in a medical imaging system
US6741672B2 (en) K-space based graphic application development system for a medical imaging system
WO2001054061A2 (en) Visual image processing method
JP2024506044A (ja) 視覚ソフトウェア開発システム、方法、装置及びコンピュータ記憶媒体
CN111158669A (zh) 一种图形化编程视觉系统及工业控制方法
Charalambous et al. Extension of pipe2 to support coloured generalised stochastic petri nets
Posch et al. Design and implementation of the Alida framework to ease the development of image analysis algorithms
US20130318455A1 (en) Customizable software platform for x-ray imaging equipment
Harel et al. Capturing and executing behavioral requirements: the play-in/play-out approach
Pustka Visualizing distributed systems of dynamically cooperating services
CN112685028A (zh) 一种机器视觉的可视化编程的方法、装置及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130329

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130829