(57)【要約】実行可能なソフトウェア・ステップ・プログラムのオブジェクト指向の構成方法は、一連の自立したソフトウェア・オブジェクトすなわちステップ（２００）を、実行順序、インプット（５１０）のアウトプット（２３４）との関連、及びアウトプット・データの変換を規定する階層型構造に構成することによって、プログラムを作成する。このステップ階層は、また同様なオペレーションを実行するステップ間の共通性を利用している。本方法は、難しいアプリケーションが規定され、実行されることを確実にする一方で、アプリケーションを非常に容易に設定し、動作させるようにする。プログラムは、レシピ・データベースから、あるいは使い易いポイント＆クリック・グラフィカル・ユーザ・インターフェイスを用いて直接的に構築される。本方法は、またステップ・プログラムに、そのプログラムを動作させるプラットフォーム（コンピュータあるいはシステム）に備わっているＧＵＩ（グラフィカル・ユーザ・インターフェイス）（６９０）ライブラリを用いたパラメータのトレーニング及び設定を可能にする、ユーザ・インターフェイス・コンポーネントを作成するための機能を与える。従って、機械視覚プログラムのようなステップ・プログラムは、様々なＣＰＵアーキテクチャ上で変化させずに動作させることができ、画像処理アクセラレーション・ハードウェアが用意されていれば、それを利用することもできる。
2004515826.tif 000002
【特許請求の範囲】
【請求項１】
実行可能なステップ・プログラムのオブジェクト指向の構成方法であって、該ステップ・プログラムは、該ステップ・プログラムの理解、処理、及び実行を可能にする複数のソフトウェア・オブジェクトを含み、前記方法は、
ａ）前記プログラムの複数の個々のステップを定義する工程であって、該複数のステップのそれぞれは、該ステップにより受け入れられるインプット、該ステップにより実行されるオペレーション及び該ステップにより生成されるアウトプットを含む、一連のステップ・プログラム・オブジェクトを含む工程と、
ｂ）前記プログラムに含まれる各ステップ・プログラム・オブジェクトに名称を付ける工程と、
ｃ）前記ステップ・プログラム・オブジェクトを階層型ツリー構造に構成する工程と、
を含む、実行可能なステップ・プログラムのオブジェクト指向の構成方法。
【請求項２】
請求項１に記載の方法において、前記ステップ・プログラム・オブジェクトを構成する前記工程は、更に、関連するオペレーションを親ステップ及び格納された子ステップを含む関連ステップとして実行する分類作業工程を含むことを特徴とする、方法。
【請求項３】
請求項２に記載の方法において、前記ステップ・プログラム・オブジェクトは、前記ステップ・プログラムを形成するために結合される、インプット・データ、アウトプット・データ及びリソース・データを含むデータを含むステップと、全てのビュー及びユーザ・インターフェイス制御手段を作成するエディタ・オブジェクトとを含むことを特徴とする、方法。
【請求項４】
請求項３に記載の方法において、前記エディタ・オブジェクトは、前記実行可能なステップ・プログラムがロードされ動作するコンピュータ上で動作するオペレーティング・システムに備わっている、グラフィカル・ユーザ・インターフェイスを用いて、全てのビュー及びユーザ・インターフェイス制御手段を作成することを特徴とする、方法。
【請求項５】
請求項３に記載の方法において、更に、
全世界レベルで固有の識別子（ＧＵＩＤ）を各ステップに割り当てる工程と、
前記実行可能なステップ・プログラムを動作させるべきシステム上のオペレーティング・システムにより管理されるデータベースに、各ＧＵＩＤを保存する工程と、
を含むことを特徴とする、方法。
【請求項６】
請求項５に記載の方法において、前記子ステップが、関連する親ステップより先に実行される前処理ステップ、オペレータがステップパラメータを設定するのを補佐するトレーニングステップ、及び関連する親ステップの後に実行される後処理ステップとして分類されることを特徴とする、方法。
【請求項７】
請求項２に記載の方法において、関連するオペレーションを実行する前記ステップの前記分類作業工程は、格納ステップのリストの各親ステップへの組込みを含むことを特徴とする、方法。
【請求項８】
請求項７に記載の方法において、更に、２つ以上の子ステップに対する少なくとも１つの共通インプットの供給を含むことを特徴とする、方法。
【請求項９】
請求項３に記載の方法において、前記リソース・データは、関連ステップがそのオペレーションを実行できるようにするために設定されるべきパラメータを含むことを特徴とする、方法。
【請求項１０】
請求項１に記載の方法において、更に、前記ステップ・プログラムにより生成された少なくとも１つのステップ・プログラム・オブジェクトに、ステップ・プログラムが生成する該少なくとも１つのステップ・プログラム・オブジェクトに関して固有のアドレスとして機能するＵＲＬインターネット・アドレス・コード化を組み合わせることを含め、名称を付ける工程を含むことを特徴とする、方法。
【請求項１１】
請求項７に記載の方法において、関連するオペレーションを実行する前記ステップの前記分類作業工程は、更に、共通データを利用するオブジェクトあるいはオブジェクトの値が変化した際に通知されるべきオブジェクトを列挙したレファレンス・リストの、各親ステップへの組込みを含むことを特徴とする、方法。
【請求項１２】
請求項１１に記載の方法において、前記分類作業工程は、更に、あるステップのインプットを他のステップのアウトプットと関連させるレファレンス要素フィールドの各データ・オブジェクトへの組込みを含むことを特徴とする、方法。
【請求項１３】
実行可能な視覚装置ステップ・プログラムのオブジェクト指向の構成方法であって、該ステップ・プログラムは、該ステップ・プログラムの理解、処理、及び実行を可能にする複数のソフトウェア・オブジェクトを含み、前記方法は、
ａ）前記視覚装置プログラムの複数の個々のステップを定義する工程であって、該複数のステップのそれぞれは、該ステップにより受け入れられるインプット、該ステップにより実行されるオペレーション及び該ステップにより生成されるアウトプットを含む、一連のステップ・プログラム・オブジェクトを含む工程と、
ｂ）前記視覚装置ステップ・プログラムに含まれる各ステップ・プログラム・オブジェクトに名称を付ける工程と、
ｃ）前記視覚装置ステップ・プログラム・オブジェクトを階層型ツリー構造に構成する工程と、
を含む、実行可能な視覚装置ステップ・プログラムのオブジェクト指向の構成方法。
【請求項１４】
ソフトウェア・ステップ・プログラムに高度の移植性を提供するためのソフトウェア・ステップ・プログラム構成方法であって、該方法は、
前記プログラムが能力を利用するためにロードされるコンピュータをスキャンする、特殊な格納ステップ・オブジェクトを前記ステップ・プログラム中に組込む工程と、
前記ステップ・プログラムのランタイムにおける性能を最大限にするために、前記コンピュータの画像メモリを、自動的に好適な位置に割り当てる工程と、
前記コンピュータ上で前記ステップ・プログラムを実行するために、最も効率的なランタイム・コードを自動的に作成する工程と、
を含む、方法。
【請求項１５】
請求項１３に記載の方法において、最も効率的なランタイム・コードを自動的に作成する前記工程は、メモリ内における画像の物理的な位置に基づいて、最速に画像を処理する低レベル・ソフトウェア・オブジェクトを構築するために、遅延束縛・ソフトウェア・プログラミング法を用いて、画像処理ステップを作成することを含むことを特徴とする、方法。
【発明の詳細な説明】
【０００１】
発明の技術分野
本発明は、一般にコンピュータプログラムに関するものであり、より明確には、オブジェクト指向表現及びそういったソフトウェアプログラムのアーキテクチャ、並びに様々な製造及び処理制御アプリケーションのリアルタイム制御を記述し達成するために用いられるプログラムといったコンピュータプログラムの表現及び特性に関する。
発明の背景
コンピュータ（アプリケーション）プログラムの最終目標は、ある形式のデータのオペレーション又は処理を制御することである。より明確に言うと、機械視覚システムアプリケーションプログラムの目標は、画像データから重要な特徴を抽出することであり、そこから、分類、報告及び決定を行うために、画像におけるオブジェクトの記述、解釈又は理解を、機械（コンピュータ）により提供することができる。
【０００２】
機械視覚アプリケーションでは、例えば、一式のオペレーション又はステップが、連続して実行される。典型的な機械視覚プログラムの流れ図が、図１に示されている。一般に、ステップは、ステップ１として、カメラによって捕らえられ、メモリ内に置かれた入力画像の取得で始まる。ステップ２では、画像がセグメントに分割され、そこから特徴が抽出される前に、任意で画像の前処理が行われる。ステップ３では、例えば、オブジェクトの境界線を抽出することにより、一つ以上の明瞭なオブジェクトへの画像のセグメンテーション及び特徴抽出が達成される。特徴は、大きさ、領域、長さ、距離又はパラメータ等、カメラ背景におけるパーツ、特徴（孔等）、及びオブジェクトを記述又は識別するものであれば、いかなるデータであっても良い。
【０００３】
特徴は、通常、画像の上部左隅といった画像におけるある一定の位置に対し、画像における一つの特徴の幾何学的位置を記述する画素単位（画像座標系とも呼ばれる）で表されるか、あるいは、背景におけるカメラの位置が分かっている場合、又はそれを測定することができる（通常、カメラを較正すると言う）場合には、“ｍｍ”やインチのような物理的単位（カメラ座標系とも呼ばれる）で表される。これらの特徴は、通常、ステップ４で公差と照合されるか、あるいは様々なカテゴリーに分類され、その後、ステップ５で判定が行われ、ステップ６で合格／不合格の状況や結果が得られる。ステップ７では、処理アプリケーションを詳細に述べた報告書を生成することも可能である。更に、ステップ８では、特定の特徴に対する処理の実行の間、公差照合を促進したり、公称公差値を与えたりするために、外部制御入力が用いられる。
発明の要約
ソフトウェアステッププログラムを構成するためのオブジェクト指向方法は、ここに記載された本発明の主題であると共に、以下のような多くの利点を有する。
【０００４】
１） 簡単な視覚アプリケーションをセットアップしたり、トレーンしたり、実行することを非常に容易にする一方で、複雑なアプリケーションも容易に構成可能にすることを確実にする。
２） ドロップイン機能を言語に依存しないソフトウェアコンポーネントの形状で与えることにより、プログラムを拡張する方法を提供する。新たな機械視覚オペレーションを随意にシステムに追加することが可能であると同時に、それらのために新たなユーザインターフェースを追加することも可能である。実施可能なオペレーションのタイプや、これらのコンピュータプログラムが戻すことのできるデータに、任意の制限はない。
【０００５】
３） レシピデータベースからプログラムを構築すること、又は使用が容易なポイントアンドクリックグラフィカルユーザインターフェースを直接使用することをサポートする。
４） 局所的、又はネットワーク上のいずれかにおける記述を容易にし、又自由形式の表現をサポートするために、名前によるステッププログラム中のデータのアクセスを可能にする。
【０００６】
５） 例えば、オブジェクトがあまりに大きくて一つのカメラ画像に納まり切らない時、異なるカメラで捕らえた特徴間の距離を容易に算出することができるように、ステッププログラムにおける結果データを異なる座標系で表すための機構を提供する。
【０００７】
６） 上記のような名前の付いたデータを、局所的に、あるいはインターネット又はインターネットネットワーク上のリモートホストマシンからデータにアクセスするための、ユニフォームリソースロケータ（ＵＲＬ）アドレスとして知られるインターネットアドレッシング体系と互換性のある形式でコード化することができる。
【０００８】
７） プログラムがロードされているプラットフォーム（コンピュータ又はシステム）に本来備わっているＧＵＩ（グラフィカルユーザインターフェース）ライブラリを用いて、パラメータのトレーニング及びセッティングを可能にするユーザインターフェースコンポーネントを作り出すための機械視覚プログラム用機構を提供する。
【０００９】
８） ホスト上で、同一のホストコンピュータの周辺拡張バスに差し込まれた、又はセットアップ及びトレーニングホストとして同一ネットワーク上に存在する異なるホストコンピュータの周辺拡張バスに差し込まれた視覚プロセッサを用いて、機械視覚プログラムのトレーニング及びトライアウト（即ち、試行）を行うことができる。
【００１０】
９） ホストシステムネットワークに接続されたスタンドアロン視覚プロセッサを用いて、ホストコンピュータ上での機械視覚プログラムのトレーニング及びトライアウトができる。
１０） 異なるＣＰＵアーキテクチャ上でも機械視覚コンピュータプログラムを変更することなく実行させたり、利用可能な場合には、画像処理加速ハードウェアを利用する。より明確には、アーキテクチャが、次の物を含めて、（援用される、１９９７年１１月２１日に出願された、共通の所有者による、共に係属中の米国仮特許出願番号６０／０６６，３３９に開示されたような実行時間構成に対応する）様々な処理モデルをサポートする：
ａ）ホストコンピュータの周辺拡張バスに差し込まれた視覚プロセッサボード（ターゲット）上でのプログラムの実行。
【００１１】
ｂ）画像取得及び加速された画像処理のための拡張バスに差し込まれた視覚ボードを用いたホスト上でのプログラムの実行。
ｃ）画像取得（フレームグラバ）のための視覚ボードを用いたホスト上でのプログラムの実行。
【００１２】
ｄ）生成された各出力又は各結果に対して、この出力が表された単位を規定する座標系が添えられる。
ｅ）ネットワーク上でホストに接続されたスタンドアロン視覚プロセッサシステム（ターゲット）上でのプログラムの実行。
【００１３】
１０） ローカルホスト又はリモートホストからの診断及びデバッギングという目的で、視覚プロセッサボード又は視覚プロセッサターゲット上で実行されると直ちに、機械視覚プログラムがモニターされることもできる。
本発明は、各ステップで、またステップ間で、実行順序及び入力と出力とのつながりを提供する、階層構造に自己組織化された一組のソフトウェアオブジェクト又はステップを構成することによって、機械視覚プログラムを作成する、ソフトウェアステッププログラムを構成するためのオブジェクト指向方法について説明する。
【００１４】
また、ステップは、類似のオペレーションを行うステップ間の共有性を利用するために、オブジェクト指向ソフトウェア階層にも組織化されている。
ステッププログラムは、豊富な情報をコード化する。例えば、ステッププログラムは：
ａ）機械視覚アプリケーションを共に構成するオペレーションのリストを含む。
【００１５】
ｂ）各ステップ（オペレーション）毎に、パラメータの設定及びそのステップ（オペレーション）を首尾よく実行するために必要とされるセッティングをコード化する。
ｃ）各ステップ（オペレーション）毎に、そのステップ（オペレーション）が受け入れる入力と、生成される出力又は結果を規定する。
【００１６】
ｄ）結果を実物理的単位で表すことができるように、生成される出力に対し、座標系情報を添える。
ｅ）インチやミリメートルのような物理的リアルワールド単位への座標系の較正を許容すると共に、ある座標系から別の座標系への結果の変換を許容する情報を含む。
【００１７】
ｆ）座標系間の物理的関係を、パートステップツリーと呼ばれる階層木構造に組織化することによって、それらの物理的関係を規定する。その結果、カメラ座標系とワールド座標系（通常、全装置がボルトで固定されたテーブル又は固定具）との間に、ステージパートステップ（即ち、カメラが搭載された動作装置）を挿入することにより、例えば、移動カメラの記述が許容される。
【００１８】
ｇ）システムを首尾よく動作させることができる前に、システムのオペレータにより、特定のオペレーションがセットアップ又はトレーンされる必要があるか否かを検知するための情報を含む。
ｈ）各オペレーション毎に、ステッププログラムがロードされたＧＵＩ（グラフィカルユーザインターフェース）環境に関わらず、ステッププログラムをセットアップしたりトレーンしたりする際にオペレータを補佐する、必要なユーザインターフェースコンポーネントを呼び出すための情報を含む。
【００１９】
ｉ）各オペレーション毎に、ホストＰＣ上又は視覚ターゲットボード上で直接動作する、又、動的にハードウェアを検知したり、利用可能な際にはハードウェア加速を利用する、実行可能なコンピュータプログラムを構成することができる。
【００２０】
ｊ）入力、出力、セッティング、パラメータと同様に、各ステップオペレーションに名前を付け、その結果、式、スプレッドシート、又はスクリプトから、ステッププログラムにおける何らかの結果に名前でアクセスするための簡単な機構を提供する。
【００２１】
視覚オペレーションの順序を記述することに加えて、開示されたステッププログラムアーキテクチャは、しばしば視覚処理と連係して実行されなければならない様々な他のセル制御オペレーションについて記述するために用いられることも可能である。そのようなプログラムは、Ｉ／Ｏ、通信、及び動作制御アプリケーションを含むが、これらに限定されるわけではない。ステッププログラムアーキテクチャは、更に、視覚処理を全く含んでいないセル制御プログラムを独占的に記述するために用いられることもできる。
本発明のこれら及び他の特徴並びに利点は、次の図面を参照に、以下の詳細な説明を読むことによって、更に詳しく理解されるであろう：
実施例の詳細な説明
本発明の要旨である機械視覚ステップ・プログラムのアーキテクチャは、階層型ツリー構造に構築されたステップと呼ばれる一式のソフトウェア・オブジェクトにより実行されるのが好ましい。この表示により、クライアント・コードがソフトウェア・オブジェクト及びソフトウェア・オブジェクトの構成を統一的に処理することができる。ステップ・プログラムのツリー構造表示の一例が図２に示されている。
ステップ・プログラム・オブジェクトの構成
例示のために本文中で説明されているように、ステップとはステップ・プログラムを形成するために組み合わされたソフトウェア・オブジェクト（すなわちＣ＋＋クラス）である。ステップは、ツリー状あるいは階層状に構成されており、ステップがトレーニング、前処理、座標変換及び後処理作業を行うために（子ステップと呼ばれる）他のステップを含むことができる。ステップは、データ・オブジェクトを利用して、互いにパラメータ及び結果をやり取りする。
【００２２】
データ・オブジェクトは、視覚アプリケーションにおいて検出される全ての結果に対して標準型を与え、一つのステップの結果（アウトプット）が他のステップへのインプットとして使用されるのを可能にするソフトウェア・オブジェクトである。ステップ及びデータ・オブジェクト（データ）は、ツリー・コントロール、リスト・コントロール、テキスト・コントロール及び／あるいは画像コントロールのような、一般的コンポーネント型エディタの一つ以上等の、当業界において公知の標準的なＧＵＩコンポーネント・オブジェクト・エディタを用いることにより、グラフィック的に編集することができる。
【００２３】
エディタは、ポイント−アンド−クリック・ユーザ・インターフェイスを用いてステップ及びデータを変更するための、全ての必要なビュー及びユーザ・インターフェイス・コントロールを作成することができる、ソフトウェア・オブジェクトである。図２は、ステップ・プログラム全体をツリー・コントロール・ウィンドウにグラフィック的に表示するために作成された、エディタ・オブジェクトを示している。
【００２４】
更に、ステップ・プログラムにおける各ステップ及びデータは、ユーザがパラメータ及び設定を変更したり、ステップあるいはデータを調整したりできるエディタ・オブジェクトを、そのステップ及びデータが動的に作成することを可能にする、特定の識別子あるいはＧＵＩＤ（Ｇｌｏｂａｌｌｙ Ｕｎｉｑｕｅ ＩＤｅｎｔｉｆｉｅｒ）を含んでいる。ＧＵＩＤは、ステップあるいはデータ・オブジェクト自体の内部に保存されているとともに、マイクロソフト・ウィンドウズ・オペレーティング・システムにおいて時に“レジストリ”と称される、ホスト上の特定のデータベース内に保存される。
【００２５】
ホストは、ＧＵＩＤを動的に与えられたオブジェクトを作成するために、標準オペレーティング・システム ＡＰＩｓ（ａｐｐｌｉｃａｔｉｏｎ ｐｒｏｇｒａｍｍｅｒ ｉｎｔｅｒｆａｃｅｓ）を提供する。これは、本質的に、あらゆるランタイム・ステップあるいはデータが、ステップ・パラメータ及びインプットを操作するためのユーザ・インターフェイスを提供するエディタ・オブジェクトへのポインタを含むという二重オブジェクト階層を創り出す。次に、ホスト上のこれらのエディタ・オブジェクトが、好適な実施例においてウィンドウズ９５あるいはＮＴオペレーティングシステム用のＡｃｔｉｖｅＸコントロールとして実施されているソフトウェア・コンポーネントを作成し、ステップ・パラメータを編集・トレーニングするための見慣れたビュー・ウィンドウ及び／またはダイアログを提供する。
【００２６】
ターゲット上では、これらの識別子はステップ・プログラムがホストによって制御されている間無視されているか、あるいは機械視覚ステップ・プログラムがスタンドアロン・コンフィギュレーション（次のセクションに記載）で実行されている間、ステップインプットを操作するためのランタイム・ユーザ・インターフェイス・エディタを創り出すために使用されているかのいずれかである。
【００２７】
あるステップは、ランタイム処理及びセットアップあるいは調整を処理するための他のステップを作成する。これらのステップは、セットアップ時にオペレータのインテリジェント・トレーニングを補佐することができる点において、特に有用である。インテリジェント・トレーニングとは、ステップが、ランタイム中に検知する必要がある特徴を代表する１つのサンプル・イメージを提示され、ランタイム設定及びパラメータの最適組み合わせを自己決定するためのトレーニング・オペレーションを実行するオペレーションである。
【００２８】
実行命令は、まずツリーにおけるステップのポジション、すなわちそれらの名前を左から右に及び上から下に読むことにより列挙するであろう順番により、ステップ・プログラム１００によってコード化される。これは、全てのステップが探索されるまでに各ポジションが一度は探索されたことを確認する、ツリーのウォーキングあるいは全探索と称される。
【００２９】
実行命令は、ツリーの各ステップに付された特定の属性値によって更にコード化され、これにより前記のルールを修正することができる。例えば、ステッププログラム１００のステップ１１２は、ステップ１１０の前にステップ１１２が実行されるようにする、従って前記のツリー探索ルールにより規定された実行順序を変更させるような属性値を有していてもよい。これは、前処理ステップあるいは更に厳密には前処理属性値がＯＮになっているステップと呼ばれる。以下で説明するように、属性値は、実行順序を変更するものに限定される訳ではない。
【００３０】
図２において、各アイコン画像は、本発明によるステップ・プログラム１００の個々のステップ・オペレーションを表している。インデントされたステップは、それらのツリー構造に加えて次のような属性値を有している。
・前処理ステップ、すなわちその親ステップより先に実行されるステップ。
【００３１】
（Ｆｉｎｄｐｉｎ１、ステップ１１６が前処理ステップの一例である）
・トレーニング・ステップ、すなわちオペレーションのパラメータ設定時にオペレータを補佐するステップ。
（Ｆｉｎｄ Ｓｅｔｕｐ、ステップ１１８がトレーニング・ステップの一例である）
・後処理ステップ、すなわちその親ステップの後に実行されるステップ。
【００３２】
（Ｗａｒｐ Ｓｔｅｐ、ステップ１２２が後処理ステップの一例である）
従って、実行順序は、ツリーにおけるステップのポジションと設定及び選択された前／後処理属性値の両方によるステップ・プログラムによって、コード化されている。
【００３３】
コンテナ・ステップと呼ばれる特別のステップは、子ステップをグループ化し、その実行順序を設定する。これらのコンテナ・ステップは、その子ステップに共通のインプットを与えてもよい。例えば、ＳｎａｐＳｈｏｔステップ（ステップ１１０）は、それに含まれる子ステップの全て（ステップ１１２−１２８）が処理するインプット画像を規定しているが、子ステップの順序が実行の順位を指示している。
【００３４】
図３は、図２のステッププログラム１００のステッププログラム実行順序を示している。ステッププログラムの実行は、画像の捕捉（ステップ１１２）に始まる。画像の捕捉に続いて、プログラムは階層における次のステップ、すなわち２ＰｉｎＦｉｎｄステップ（ステップ１１４）に移動する。しかし、２ＰｉｎＦｉｎｄステップが３つの格納子ステップ、すなわちＦｉｎｄＰｉｎ１、ＦｉｎｄＰｉｎ２及びＷａｒｐ Ｓｔｅｐ（それぞれステップ１１６、１２０及び１２２）を含んでいるため、プログラムは、その子ステップを正しい順序で実行するために、子ステップの前／後処理属性値を検知しなければならない。
【００３５】
本例では、ＦｉｎｄＰｉｎ１及びＦｉｎｄＰｉｎ２（それぞれステップ１１６及び１２０）が前処理ステップのタグを付されているので、それらの親ステップ、すなわち２ＰｉｎＦｉｎｄステップ（ステップ１１４）より先に実行される。（ＦｉｎｄＰｉｎ１ステップ（ステップ１１６）が実行される際、その格納子ステップ、すなわちＦｉｎｄＳｅｔｕｐステップ（ステップ１１８）は、付されているＳＥＴＵＰという属性値がそのステップをＴｒａｉｎのみのステップでありランタイム・ステップではないと表示するため、完全にスキップされることに注目。）
実行順序における次のステップは、親ステップ（ステップ１１４）すなわち２ＰｉｎＦｉｎｄステップである。親ステップ（ステップ１１４）の実行後、プログラムは、本例ではＷａｒｐ Ｓｔｅｐ（ステップ１２２）及びその格納ステップ、すなわちＤｅｆｅｃｔＦｉｎｄｅｒ 及びＯＣＶ Ｆｏｎｔｌｅｓｓ Ｔｏｏｌｓ ステップ（それぞれステップ１２４及び１２６）を含む格納された後処理ステップの全てを実行する。最後に、ステッププログラムはＩ／Ｏ Ｏｕｔｐｕｔステップ（ステップ１２８）を実行し、ステッププログラムが完了される。
【００３６】
図２に示されたステップ・プログラムの例から、実行順序が指定されるのに加えて、子ステップのインプットが、自動的にその親コンテナのアウトプットに関連付けられていることが分る。
３つの基本ソフトウェア・オブジェクトは、この内部データ及び実行フローをコード化する。図４は、これらのソフトウェア・オブジェクトの詳細な構造を示している。これらオブジェクトは、ステップ・オブジェクトを含むが、それは２００及び３００のような親オブジェクトあるいは子オブジェクトであってもよい。追加的な種類のオブジェクトは、参照オブジェクト ４００のような参照オブジェクト、及びデータオブジェクト５００のようなデータオブジェクトである。これらのオブジェクトは、図６に示されるように、他のステップがそこから導き出される継承オブジェクト指向階層に構成されている。
【００３７】
階層型構造を更に規定するために、図２に示されたように、同じインデントレベルにあるステップ（例えば、ステップ１１２及び１１４あるいはステップ１２４及び１２６）が、マップと呼ばれるデータ構造内に物理的に保存される。このマップ保存は、これらの子ステップの全てを含む親ステップオブジェクト、すなわち子ステップがそこから直接インデントしているステップの一部分である。マップは、一連の任意オブジェクトを一緒に保存し、リンクさせるために使用される、標準Ｃ＋＋ライブラリ・コンテナ・オブジェクトである。更に、リストの各オブジェクトは、属性値によるタグを個々に付すことができる。本発明において、属性値は、ステップの実行順序（すなわち前処理及び後処理）を細かく規定するとともに、特別な種類のステップ（ＳＥＴＵＰステップ及びＰＡＲＴステップ）を表示するために用いられる。
【００３８】
１つのプログラムのどのステップも、図４の＃ｃｈｉｌｄｒｅｎ ｌｉｓｔ（以下子リストという） ２１０と呼ばれる格納されたステップのリストを含んでいる。子リスト中の各工程は、その親ステップに関して実行されるべき順序を制御するために、ＰＲＥ（前処理）（例えばステップ２１１及び２１２）、ＳＥＴＵＰ（Ｔｒａｉｎ）（例えばステップ２１３）、ＰＡＲＴ（調整、座標変換）（例えばステップ２１５）、あるいはＰＯＳＴ（後処理）（例えばステップ２１４）のうちいずれかのタグを付される。データリスト２３０は、ステップインプット（ＩＮ） ２３１及び２３２、アウトプット（ＯＵＴ） ２３４、及びリソース（ＲＥＳ） ２３３のリストを含んでいる。リソース（あるいはリソース・データ）は、そのステップがオペレーションを実行するために設定する必要のあるパラメータあるいは条件である。
【００３９】
更に、親オブジェクトは、オブジェクト・データを使用するか、もしくはオブジェクト値が変化する際に通知されるべき一連のオブジェクトを列挙した、＿ｒｅｆｌｉｓｔｓ ２２０を含んでいる。このリストは通常、システムのオペレータに、ステップあるいはデータのスクリーン上のグラフィック／ビューを提供するエディタ・オブジェクトを含む。前記図２は、そうしたエディタ・オブジェクトの一例である。
【００４０】
エディタは、各ステップあるいはデータ内に保存されている、現ステップのパラメータ及び条件を変更するためのユーザ・インターフェイス・コントロールを提供することができるオブジェクトのタイプを規定する、ＧＵＩＤ（Ｇｌｏｂａｌｌｙ Ｕｎｉｑｕｅ Ｉｄｅｎｔｉｆｉｅｒ）２４０を用いて作成される。
【００４１】
ステップ実行中に、（図５）データ １、２及び３（それぞれ５１２、５１４及び５１６）等の、ＩＮデータ ５１０としてタグを付されたデータの全てが、そのステップによって読み込まれ、ＲＥＳデータ１、２及び３（２３５、２３７及び２３９）等の内部リソースデータに基づいて、ＯＵＴデータ１、２及び３（２３６、２３８および２４２）等のアウトプットデータが、ステップの実行しているオペレーションに従って演算される。
【００４２】
各アウトプットデータは、Ｐａｒｔステップと呼ばれる特定のステップ・オブジェクトを指すポインタを有する。Ｐａｒｔステップは、アウトプットデータ用のユニットに関する情報を含んでいる。１つのＰａｒｔステップは、“部分ツリー”と呼ばれる個々のオブジェクト・ツリーの一部であり、ステッププログラムが作成される際に構築される。図２のＳｎａｐＳｈｏｔステップ １１０のようなオブジェクトの構成における特定のステップは、ステッププログラム・ツリー内に挿入される際に、自身のアウトプットデータに座標系あるいは単位を提供するための追加的なステップを作成する。
【００４３】
ＳｎａｐＳｈｏｔステップの場合、アウトプット画像は、Ｓｎａｐ Ｐａｒｔステップと呼ばれる特定のＰａｒｔステップと連携している。このＳｎａｐ Ｐａｒｔステップは、ＳｎａｐＳｈｏｔステップの子リストに保存され、座標系タイプのオブジェクトであることを示す属性値（ＰＡＲＴ）を付される。これら特定のオブジェクトは、ランタイムに実行されるのではなく、固定カメラ用の堅固なスタンド上、あるいは移動カメラ用の移動台上にカメラが一旦物理的に配置されると、その調整法を補助するものである。
【００４４】
図２に示すステップ・プログラムに関して、部分ツリーは以下のように見える。
＋ＷｏｒｌｄＰａｒｔ＜＜常に存在し、全てがそこから測定されるＷｏｒｌｄ座標系
＋ＳｎａｐＰａｒｔ＜＜各カメラは、Ｗｏｒｌｄ内でのポジションを有している。
【００４５】
＋ＷａｒｐＰａｒｔ＜＜何らかの視覚手段が回転し、画像を数学的に動かし、これらもまた座標系を創り出す。
前記の画像において、ＷｏｒｌｄＰａｒｔは、何らかの周知の物理的位置（例えば、装置が置かれている台あるいは部屋）に関して、システム全体の座標系を表す。これは、あるステッププログラムがディスクからロードされるか、あるいはエディタ・オブジェクトを用いて作成されるときには必ず作成されるデフォルトの座標系である。
【００４６】
ＳｎａｐＰａｒｔは、図２のＳｎａｐＳｈｏｔステップ １１０により作成された領域におけるカメラの位置を表す。
ＷａｒｐＰａｒｔは、図２のＷａｒｐＳｔｅｐ（ステップ１２２）により作成された画像をワープさせる処理を経て、画像座標がどのように変換されるかを表す。
【００４７】
ＯＵＴデータ １、２及び３（２３６、２３８及び２４２）等の各アウトプットデータは、そのアウトプットにより使用される単位をコード化する座標系（オブジェクト）へのポインタを格納する、部分ステップ（すなわち図４の５０１）を含んでいる。例えば２つの数ｘ及びｙによりコード化される画像の特徴（穴など）の位置等のアウトプット結果について、座標系は、ｘが画像の水平軸に沿ったピクセル位置を表し、ｙが画像の垂直軸に沿ったその特徴のピクセル位置を表している２つの軸から成り、ピクセル位置０、０は画像の左上の角である。
【００４８】
その座標系オブジェクトは、それ自身、図４の５０１で示されるようにアクティブな属性値“ＰＡＲＴ”を有するステップである。これらのＰａｒｔステップは、結果アウトプットデータの１つとして画像を生成するステップが作成される度に、ステッププログラムに挿入される。
【００４９】
例えば、個々のカメラ画像における特徴（本例では“穴”）の間の物理的距離を計算するステッププログラムであり、２つのＳｎａｐＳｈｏｔステップ ７０２及び７０４から成り、そのそれぞれがカメラから画像を取り込むための１つの前処理ステップ ＡｃｑｕｉｒｅＳｔｅｐ ７０６と、所望の画像属性値、例えば（穴）（各カメラ画像座標系における“穴”の中心のｘ及びｙ座標）のそれぞれの位置を決定するための１つの後処理ステップ ＦｉｎｄＳｔｅｐ ７０８を含んでいる、図９のステッププログラム ７００について、各ＳｎａｐＳｈｏｔステップ ７０４がＳｎａｐＳｈｏｔＳｔｅｐ ＰａｒｔＳｔｅｐ（すなわち属性値“ＰＡＲＴ”が付されたステップ）を作成し、それを図４の２１５で示すように自身の子リスト ＿ｃｈｉｌｄｌｉｓｔに挿入する。ＳｎａｐＰａｒｔＳｔｅｐは、特定のＳｎａｐＳｈｏｔＳｔｅｐのアウトプット画像データに添付された座標系の原点０，０及び軸（水平及び垂直）の位置をコード化する。また、その画像から演算された特徴が伝達されるべき測定単位もコード化する。
【００５０】
一般に、カメラ画像から引き出された全ての特徴及び結果は、カメラがインチあるいはミリメートルの単位に調整されるまで、ピクセル値で伝達される。同様に、ＳｎａｐＳｈｏｔＳｔｅｐのアウトプット画像データが、図４のデータリストでアウトプットデータ・アイテム ５００ｄとして示されたＳｎａｐＰａｔｒＳｔｅｐへのポインタを含んでいる。
【００５１】
カメラの調整とは、一旦カメラの位置が測定されるか、ワールド内で事前に分れば（すなわち、図９のテーブル座標系 ＷｏｒｌｄＰａｒｔ ７０５におけるカメラ １（７１０）及びカメラ ２（７１２）の位置）、所与のカメラ画像の位置を、それによって場面（“ワールド”）内での位置に変換することができる過程のことである。図９のステップ・プログラム ７００に関して、ＦｉｎｄＳｔｅｐ ７０８は、求める画像における各“穴”あるいは他の特性の位置（ｘ，ｙ）を、前述のようにピクセル座標に伝達する。
【００５２】
次に、２つの穴の物理的距離が演算可能となる前に、ＳｎａｐｓｈｏｔＳｔｅｐ アウトプット画像データの各ＳｎａｐＳｈｏｔ７０２／７０４ ＰａｒｔＳｔｅｐによって、ｘ，ｙの位置が領域あるいは場面Ｘ，Ｙ座標に変換される。これら２つの座標系は、図９においてＳｎａｐＰａｒｔＣａｍ１（Ｘ１，Ｙ１） ７１０及びＳｎａｐＰａｒｔＣａｍ２（Ｘ２，Ｙ２） ７１２で示されている。
【００５３】
Ｓｎａｐ ＰａｒｔＳｔｅｐは、ランタイムに実行される際、図９における各穴のｘ，ｙ位置のような特徴をピクセル座標からカメラ座標に変換し、これによって例えば２つの穴の距離の測定が、演算可能になる。実際、図９のステッププログラムのＳｎａｐＰａｒｔＳｔｅｐステップは、各穴のｘ，ｙ位置を全カメラに共通の座標系（すなわち図９のＷｏｒｌｄＰａｒｔ座標系 ７０５）に変換する。
【００５４】
ＷｏｒｌｄＰａｒｔＳｔｅｐ ７０５（図９）は、２つのカメラが据え付けられている物理的台あるいは物体のような何らかの周知の物理的位置に関する、システム全体の座標系を表すもので、あるステッププログラムがホストコンピュータ上、あるいは視覚処理装置上のシステムにロードされる度に作成される。図９のステッププログラムにおける各穴あるいは他の画像特性の位置が、各ＳｎａｐＰａｒｔＳｔｅｐ によって共通座標系（ｔｈｅ ＷｏｒｌｄＰａｒｔ）に変換されると、Ｐｔ−Ｐｔ Ｄｉｓｔａｎｃｅステップ ７１４が、その穴あるいは他の画像特性間のＷｏｒｌｄＰａｒｔ単位における距離（通常インチあるいはミリメートル）を演算する。
【００５５】
全データ・オブジェクトの＿ｒｅｆｔｏ領域（例えば図６の６２２）は、あるステップのインプットと他のステップのアウトプットとの関連を処理している。この領域は、ステップ・プログラムの実行中、そのステップにより使用されるべき値を含む同種のデータを常に指している。
【００５６】
図６は、基礎オブジェクトが構成される過程を説明している。全ての基本オブジェクトは子オブジェクトを含むことが可能であり、このことは複合オブジェクト ６００により示されている。ステップは、インプットを受け取り、アウトプット結果を演算するためのデータ・オブジェクト ６２０も含む複合オブジェクトである。各データ・オブジェクト ６２０は、１つ以上の参照部分 ６２２（＿ｒｅｆｔｏ）を含み、それによって、ステップが自らのアウトプットを介して互いに関連付けられることができる。この例におけるアウトプットデータは、その＿ｒｅｆｔｏポインタがそれ自身を示しているデータである。エディタ・オブジェクト ６３０は、ホスト・ディスプレー・オブジェクト ６４０へのインプットとしての役割を果たす。
【００５７】
この構造の直接的利点は、関連付けられたデータすなわちインプットあるいはリソース型のデータが、実行中に使用されるものとは別にそれ自身の値を保持することもできる点である。これは、通常名目値を保存するために用いられる。
ステップ・プログラムにおける全てのオブジェクトに呼称が付けられているため、そのプログラムにおける結果データのポジションあるいはアドレスを一義的に表す文字列を構成することができる。これによって、スクリプト言語あるいは表計算セル用の式が、ステッププログラムの実行後にステップデータを直接操作する複雑な式を構築することが可能になる。例えば、図２において、ＦｉｎｄＰｉｎ１ステップ（ステップ１１６）は、画像中のパターンを捜し出し、その位置を２つの座標［ｘ，ｙ］を有する点として返す。このアウトプットされた点が、ＦｉｎｄＰｉｎ１ステップ内で“ベストマッチ”と呼ばれる。その点のｘ座標をスクリプトから操作するために、オペレータは単に“ＦｉｎｄＰｉｎ１．ＢｅｓｔＰｏｉｎｔ．ｘ”と打ち込めばよい。（“ＦｉｎｄＰｉｎ１．ＢｅｓｔＭａｔｃｈ”が、ステッププログラムにおけるこの点を一義的に識別することに注目。）一義的であることが保証されるフルアドレスは、
“ＶｉｓｉｏｎＢｏａｒｄ０．ＩｎｓｐｅｃｔｉｏｎＳｔｅｐ．
ＳｎａｐＳｈｏｔＳｔｅｐ．２ＰｉｎＦｉｎｄＳｔｅｐ．
ＦｉｎｄＳｔｅｐ１．ＢｅｓｔＰｏｉｎｔ．ｘ”である。
この座標がゼロより大きいかゼロであるかを確かめる式は、
“ＦｉｎｄＰｉｎ１．ＢｅｓｔＰｏｉｎｔ．ｘ＞＝０”である。
この例及びホスト・システムが視覚プロセッサとローカル・ネットワーク（図８Ａに示すようなホスト・システムに搭載された視覚プロセッサ）あるいは図８Ｂ及び８Ｃに示すような有形のネットワークにより接続され、また引用により本文中に含まれている、名称が「埋め込みプロセッサ及びホストプロセッサ用の、その間における見かけ上のネットワークインターフェイス」である同時係属中の米国特許出願Ｎｏ．０９／０２６，０５２によっても裏付けられているという事実により、実行中の機械視覚ステッププログラムにより演算された結果をホスト上に表示するために、視覚プロセッサの位置をデータ・アドレス内にコード化することが可能である。
【００５８】
この説明は、視覚プロセッサボード及び／あるいはホスト・システムがウェブ・サーバとして設定され、従ってローカル・ホスト・システム（図８Ａ）上、あるいはリモート・ホスト・システム（図８Ｂ及び８Ｃ）上で動作するウェブ・ブラウザからの通信に応答することができるという事実に基づいている。
【００５９】
フル・アドレスは、ホストにより制御される視覚プロセッサ・ボードあるいは視覚プロセッサ・システムの、Ｕｎｉｆｏｒｍ Ｒｅｓｏｕｒｃｅ ＬｏｃａｔｏｒアドレスすなわちＵＲＬと連結されている。これは、視覚プロセッサ上で実行中の機械視覚ステッププログラムにより演算されているデータ値を、ホスト上のウェブ・ページ内に表示するために利用することができる。上記の式について、ＵＲＬアドレスは、
ｈｔｔｐ：／／ＶｉｓｉｏｎＰｒｏｃｅｓｓｏｒＮｅｔｗｏｒｋＮａｍｅ／ｅｘｅｃ／ＳｈｏｗＶａｌｕｅ？ＩｎｓｐｅｃｔｉｏｎＳｔｅｐ．
ＳｎａｐＳｈｏｔＳｔｅｐ．２ＰｉｎＦｉｎｄＳｔｅｐ．ＦｉｎｄＳｔｅｐ１．ＢｅｓｔＰｏｉｎｔ．ｘであり、ここにおいて
ａ）ｈｔｔｐ：／／ＶｉｓｉｏｎＰｒｏｃｅｓｓｏｒＮｅｔｗｏｒｋＮａｍｅ／は、ホストが接続されている視覚プロセッサ・ボードあるいはシステムを識別する。
【００６０】
ｂ）ｅｘｅｃ／ＳｈｏｗＶａｌｕｅは、機械視覚ステッププログラムにより演算されたデータの値を得るために呼び出すべき視覚プロセッサ・ボードあるいはシステム上のプログラムを特定する。ＩｎｓｐｅｃｔｉｏｎＳｔｅｐ．．．．ＢｅｓｔＰｏｉｎｔ．ｘは、前述のようにアクセスする必要があるステップ・プログラムにおけるデータのアドレスである。
ステップ・プログラムの高移植性の実行
ステップ・プログラムは、ハードウェアとすることもコード化されたソフトウェアとすることもでき、様々なＣＰＵアーキテクチャ上で実行することが可能で、ランタイムに画像処理オペレーション用のハードウェア・アクセラレーションを利用することもできる。これは、ステッププログラムがその上で動作されるべきハードウェア・プラットフォームへの、ステップ・プログラムの遅延束縛によって為される。
【００６１】
Ｃ＋＋のようなオブジェクト指向言語において、メモリ内に割り当てられた各オブジェクトも初期化する必要がある。コンストラクタと呼ばれるオブジェクトの特別な関数の呼び出しが、オブジェクトを初期化する。オブジェクトの関数あるいは方法を実行するステップコードは、そのＣＰＵ上で動作するアプリケーション・コードの一部であって、ディスクに保存されたステッププログラムの一部ではないため、オブジェクトあるいはステップ関数を、そのオブジェクトやステップがどこにロードされるかによって異なったように実行することが可能である。
【００６２】
図７は、ランタイムに効率的にステッププログラムを実行するために用いられる手法を示している。
１．ステッププログラムの基礎は、Ｔａｒｇｅｔ オブジェクトと呼ばれる特別なコンテナ・オブジェクトであり、それは、作成される際すなわちステップ・プログラムがメモリにロードされてその作成法が呼び出される際に、ハードウェア・リソースを捜してコンピュータをスキャンする。具体的には、画像取り込み装置及びパイプライン・画像アクセラレーション・ハードウェア（引用により本文中に含まれている、共有された同時係属中の米国特許出願Ｎｏ．０８／９５３，７７２に記載されたアキュイティ・ヴィジョン・プロセッサ・ボード上に見受けられるような）が検出される。更に、カメラから、デジタル化された画像を、ハードウェアにより効率的に分析することができる場所において受け取るために、メモリが割り当てられる。
ランタイムにおいて、画像処理オペレーションを行う図７のステップ ６５０は、画像を分析するために、エージェント ６５２ａ−６５２ｃと呼ばれる低レベル・ソフトウェア・オブジェクトを作成する。これらのソフトウェア・エージェントは、遅延束縛法と呼ばれる手法を用いて作成される。遅延束縛は、処理オペレーション（すなわち画像処理ステップ）を実行するためのソフトウェア・オブジェクトを、そのステップ自身が作成する処理法である。遅延束縛は、多数の考えられ得る実行可能なコードの組み合わせから、現在ある有形のＣＰＵ、オペレーティング・システム、メモリの種類等の一定の特徴に基づき、性能を最大限にするために、実行可能なコードが選択／生成される処理法である。本発明において、遅延束縛は、画像メモリ内における画像の物理的位置に基づいて画像処理装置の性能を最適化するために用いられている。
【００６３】
その結果、本ステップ・プログラムは、ユーザが気付くことなく多数のランタイム・モデルをサポートしているのである。例えば、
・ 本ステッププログラムは、どちらも引用により本文中に含まれている同時係属中の仮特許出願Ｎｏ．６０／０６６、３３９及び先に出願された「フレキシブル処理ハードウェア・アーキテクチャ」という名称の米国特許出願Ｎｏ．０９／０３０、４１１（１９９８年２月２５日出願）に記載されたデジタイザのようなデジタイザ・ハードウェアをホストＣＰＵ ＰＣＩバスに直接接続されたフレーム取り込みボードとして用いて、ホストＣＰＵ上で実行することができる。
【００６４】
・ 本ステッププログラムは、ホストＣＰＵ上で実行することができる。しかし、画像処理オペレーションは、引用により本文中に含まれている同時係属中の共有の米国特許出願Ｎｏ．０８／９５３，７７２に記載されているような視覚プロセッサを用いることにより高速化することが可能である。
【００６５】
・ 本ステッププログラムは、同時係属中の共有の米国特許出願Ｎｏ．０９／０３０，４１１に記載されているような、ホストＣＰＵ ＰＣＩバス内に埋め込まれたターゲットＣＰＵボード上で実行することができる。
・ 本ステッププログラムは、前記の米国特許出願Ｎｏ．０９／０３０，４１１に記載されているような、ネットワークを介してホストＣＰＵに接続されているか、あるいは全く接続されていない独立型ターゲットＣＰＵボード上で実行することができる。
【００６６】
熟練した当業者による改造及び代替は、以下の請求の範囲による以外は限定されるべきでない、本発明の範囲に含まれると考えられる。
【図面の簡単な説明】
【図１】機械視覚プログラムを構成する典型的なソフトウェアコンポーネントを示す図である。
【図２】ホストグラフィカルユーザインターフェースウィンド内のステッププログラムのサンプルユーザインターフェースビューを示す図である。
【図３】図２のステッププログラムがどのように実行され、どのような順序でステップが実行されるかを示す図である。
【図４】この実行モデルをサポートする内部ステップオブジェクト表現を示す図である。
【図５】一つのステップが実行された時、そのステップにおけるデータの流れを詳細に示す図である。
【図６】ステップ実行及びデータフローモデルの両方をサポートするオブジェクト指向継承階層を示す図である。
【図７】最適化のためのステップ実行遅延束縛をサポートするオブジェクト指向継承階層を示す図である。
【図８Ａ−８Ｃ】機械視覚プログラム等のアプリケーションプログラムを作成し、セットアップし、試行する目的で、本発明のオブジェクト指向方法によってサポートされたホスト及びターゲットシステムネットワーク接続性を示す概略ブロック図である。
【図９】ステッププログラムにより生成された出力結果と、別々のカメラ画像における特徴間の距離を算出する二つのカメラサンプルステッププログラムに関する座標系との間の関係を示す図である。
【図１】
2004515826.tif 000003
【図２】
2004515826.tif 000004
【図３】
2004515826.tif 000005
【図４】
2004515826.tif 000006
【図５】
2004515826.tif 000007
【図６】
2004515826.tif 000008
【図７】
2004515826.tif 000009
【図８】
2004515826.tif 000010
【国際公開パンフレット】
2004515826.tif 000011
2004515826.tif 000012
2004515826.tif 000013
2004515826.tif 000014
2004515826.tif 000015
2004515826.tif 000016
2004515826.tif 000017
2004515826.tif 000018
2004515826.tif 000019
2004515826.tif 000020
2004515826.tif 000021
2004515826.tif 000022
2004515826.tif 000023
2004515826.tif 000024
2004515826.tif 000025
2004515826.tif 000026
2004515826.tif 000027
2004515826.tif 000028
2004515826.tif 000029
2004515826.tif 000030
2004515826.tif 000031
2004515826.tif 000032
2004515826.tif 000033
2004515826.tif 000034
2004515826.tif 000035
2004515826.tif 000036
2004515826.tif 000037
2004515826.tif 000038
2004515826.tif 000039
2004515826.tif 000040
2004515826.tif 000041
2004515826.tif 000042
2004515826.tif 000043
2004515826.tif 000044
2004515826.tif 000045
【手続補正書】
【提出日】平成11年9月28日(1999.9.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
削除
【請求項２】
請求項２６に記載の方法において、前記ステップ・プログラム・オブジェクトを構成する前記工程は、更に、関連するオペレーションを親ステップ及び格納された子ステップを含む関連ステップとして実行する分類作業工程を含むことを特徴とする、方法。
【請求項３】
請求項２に記載の方法において、前記ステップ・プログラム・オブジェクトは、前記ステップ・プログラムを形成するために結合される、インプット・データ、アウトプット・データ及びリソース・データを含むデータを含むステップと、全てのビュー及びユーザ・インターフェイス制御手段を作成するエディタ・オブジェクトとを含むことを特徴とする、方法。
【請求項４】
請求項３に記載の方法において、前記エディタ・オブジェクトは、前記実行可能なステップ・プログラムがロードされ動作するコンピュータ上で動作するオペレーティング・システムに備わっている、グラフィカル・ユーザ・インターフェイスを用いて、全てのビュー及びユーザ・インターフェイス制御手段を作成することを特徴とする、方法。
【請求項５】
請求項３に記載の方法において、更に、
全世界レベルで固有の識別子（ＧＵＩＤ）を各ステップに割り当てる工程と、
前記実行可能なステップ・プログラムを動作させるべきターゲット・システム上のオペレーティング・システムにより管理されるデータベースに、各ＧＵＩＤを保存する工程と、
を含むことを特徴とする、方法。
【請求項６】
請求項５に記載の方法において、前記子ステップが、関連する親ステップより先に実行される前処理ステップ、オペレータがステップ・パラメータを設定するのを補佐するトレーニング・ステップ及び関連する親ステップの後に実行される後処理ステップとして分類されることを特徴とする、方法。
【請求項７】
請求項２に記載の方法において、関連するオペレーションを実行する前記ステップの前記分類作業工程は、格納ステップのリストの各親ステップへの組込みを含むことを特徴とする、方法。
【請求項８】
請求項７に記載の方法において、更に、２つ以上の子ステップに対する少なくとも１つの共通インプットの供給を含むことを特徴とする、方法。
【請求項９】
請求項３に記載の方法において、前記リソース・データは、関連ステップがそのオペレーションを実行できるようにするために設定されるべきパラメータを含むことを特徴とする、方法。
【請求項１０】
請求項１６に記載の方法において、更に、前記ステップ・プログラムの少なくとも１つの選択されたステップに関連する少なくとも１つのステップ・プログラム・オブジェクトに、前記開発されるステップ・プログラムに関連する該少なくとも１つのステップ・プログラム・オブジェクトに関して固有のアドレスとして機能するＵＲＬインターネット・アドレスのコード化を組み合わせることを含め、名称を付ける工程を含むことを特徴とする、方法。
【請求項１１】
請求項７に記載の方法において、関連するオペレーションを実行する前記ステップの前記分類作業工程は、更に、共通データを利用するオブジェクトあるいはオブジェクトの値が変化した際に通知されるべきオブジェクトを列挙したレファレンス・リストの、各親ステップへの組込みを含むことを特徴とする、方法。
【請求項１２】
請求項１１に記載の方法において、前記分類作業工程は、更に、あるステップのインプットを他のステップのアウトプットと関連させるレファレンス要素フィールドの、各データ・オブジェクトへの組込みを含むことを特徴とする、方法。
【請求項１３】
削除
【請求項１４】
ソフトウェア・ステップ・プログラムに高度の移植性を提供するためのソフトウェア・ステップ・プログラム構成方法であって、該方法は、
前記プログラムが能力を利用するためにロードされるコンピュータをスキャンする、特殊な格納ステップ・オブジェクトを前記ステップ・プログラム中に組込む工程と、
前記ステップ・プログラムのランタイムにおける性能を最大限にするために、前記コンピュータの画像メモリを、自動的に好適な位置に割り当てる工程と、
前記コンピュータ上で前記ステップ・プログラムを実行するために、最も効率的なランタイム・コードを自動的に作成する工程とを含む、方法。
【請求項１５】
請求項１４に記載の方法において、最も効率的なランタイム・コードを自動的に作成する前記工程は、メモリ内における画像の物理的な位置に基づいて、最速に画像を処理する低レベル・ソフトウェア・オブジェクトを構築するために、遅延束縛ソフトウェア・プログラミング法を用いて、画像処理ステップを作成することを含むことを特徴とする、方法。
【請求項１６】
実行可能なステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法であって、前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの１つにおいて実行可能であり、該方法は、
ａ）利用可能なステップ・プログラムのステップのリストから、少なくとも１つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、該選択された少なくとも１つのステップ・プログラムのステップのそれぞれは、少なくとも１つのステップ・オブジェクトに関連しており、該少なくとも１つのステップ・オブジェクトのそれぞれは、ターゲット・システム上で前記関連ステップを実行するための少なくとも１つのステップ・エージェントを選択する工程と、
ｂ）前記ステップ・プログラムが動作されるべき少なくとも１つのターゲット・システムを供給する工程であって、
該ターゲット・システムは、複数の固有のステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも１つの選択されたステップ・プログラムのステップに関連する前記少なくとも１つのステップ・オブジェクトに応答して、各該少なくとも１つの選択されたステップ・プログラムのステップに関連する該少なくとも１つのステップ・オブジェクトに対して、少なくとも１つの該ターゲット・システム上で動作が可能なステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連ステップを実行し、該ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程、
とを含むことを特徴とする、方法。
【請求項１７】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムが前記ステップ・プログラム開発システムであることを特徴とする、方法。
【請求項１８】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムがスタンドアロン・システムであることを特徴とする、方法。
【請求項１９】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムが前記ステップ・プログラム開発システムに接続されていることを特徴とする、方法。
【請求項２０】
請求項１９に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記接続がネットワークを介していることを特徴とする、方法。
【請求項２１】
請求項１９に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記接続がコンピュータ・バスを介していることを特徴とする、方法。
【請求項２２】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムに固有のエージェントが、該ターゲット・システム上で関連ステップを最も速く動作させるために最適化されていることを特徴とする、方法。
【請求項２３】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ターゲット・システムはユニフォーム・リソース・ロケータ（ＵＲＬ）アドレスにより識別可能であり、前記ステップ・プログラムのステップを生成する前記工程は、該ターゲット・システム及び該ターゲット・システム上で実行すべき各ステップの名称を、該ターゲット・システムのＵＲＬを利用して識別することを含み、更に該ターゲット・システム上で実行すべき該各ステップに関する情報は、ワールド・ワイド・ウェブ・ブラウザを用いて入手することができることを特徴とする、方法。
【請求項２４】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記生成されたステップ・プログラムは、前記ターゲット・システム上で実行される前に、前記ステップ・プログラム開発システム上で動作及び編集されることを特徴とする、方法。
【請求項２５】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、更に、
ａ）前記開発されるステップ・プログラムの少なくとも１つの選択されたステップに名称を付ける工程と、
ｂ）複数の前記選択されたステップ・プログラムのステップを、階層型ツリー構造に構成する工程とを含むことを特徴とする、方法。
【請求項２６】
請求項１６に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、更に、
ａ）前記開発されるステップ・プログラムの前記少なくとも１つの選択されたステップに関連する、前記関連ステップ・オブジェクトに名称を付ける工程と、
ｂ）複数の前記選択されたステップ・プログラムのステップ・オブジェクトを、階層型ツリー構造に構成する工程とを含むことを特徴とする、方法。
【請求項２７】
実行可能な機械視覚システム・ステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法であって、前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの１つにおいて実行可能であり、該方法は、
ａ）利用可能な視覚ステップ・プログラムのステップのリストから、少なくとも１つの視覚ステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
該選択された少なくとも１つの視覚ステップ・プログラムのステップのそれぞれは、少なくとも１つの視覚ステップ・オブジェクトに関連しており、該少なくとも１つの視覚ステップ・オブジェクトのそれぞれは、ターゲット・システム上で前記関連ステップを実行するための少なくとも１つの視覚ステップ・エージェントを選択する工程と、
ｂ）前記視覚ステップ・プログラムが動作されるべき少なくとも１つのターゲット・システムを供給する工程であって、
該ターゲット・システムは、複数の固有の視覚ステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも１つの選択された視覚ステップ・プログラムのステップに関連する前記少なくとも１つの視覚ステップ・オブジェクトに応答して、各該少なくとも１つの選択された視覚ステップ・プログラムのステップに関連する該少なくとも１つの視覚ステップ・オブジェクトに対して、該ターゲット・システム上で動作が可能な少なくとも１つの視覚ステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連視覚ステップを実行し、該視覚ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程、
とを含むことを特徴とする、方法。
【請求項２８】
実行可能なステップ・プログラムをステップ・プログラム開発システム上で開発するオブジェクト指向の方法において、前記開発されるステップ・プログラムは、関連ステップ・プログラムのステップに固有の少なくとも１つのエディタ・オブジェクトを有する、少なくとも１つのステップを含み、該方法は、
ａ）利用可能なステップ・プログラムのステップのリストから、少なくとも１つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
該選択された少なくとも１つのステップ・プログラムのステップは、少なくとも１つのステップ・エディタ・オブジェクトに関連しており、該少なくとも１つのステップ・エディタ・オブジェクトは、該ステップに関連するステップに固有のデータの編集を可能にするために、少なくとも１つのステップ・エディタ・ＧＵＩ・ネイティブ・オブジェクトを選択する工程と、
ｂ）前記エディタ・オブジェクトを用いて、選択された少なくとも１つのステップ・エディタ・ＧＵＩ・ネイティブ・オブジェクトを編集する工程であって、
前記開発されるステップ・プログラムは、少なくとも１つの関連ステップ・エディタ・オブジェクトを含み、前記編集工程は、前記関連ステップに関してシステム利用者により編集され得るステップに固有のデータのみを、コンピュータ・システムに接続されたディスプレイ画面上に表示することを含む工程、
とを含むことを特徴とする、方法。
【請求項２９】
請求項２８に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、特定のステップ・プログラムのステップに関連する前記ステップ・エディタ・オブジェクトは、前記ステップ・オブジェクトのパラメータ・データ・タイプに基づいたユーザ・インターフェイス・コントロールを表示することを特徴とする、方法。
【請求項３０】
請求項２９に記載の実行可能なステップ・プログラムを開発するオブジェクト指向の方法において、前記ユーザ・インターフェイス・コントロールは、数値入力フィールド、文字入力フィールド、チェック・ボックス、ポップ−アップ−リスト、ドロップ−ダウン・リスト及びラジオボタンから成るグループから選択されることを特徴とする、方法。
【請求項３１】
実行可能なステップ・プログラムをステップ・プログラム開発システム上に開発するオブジェクト指向の方法であって、前記開発されるステップ・プログラムは、複数の予想されるターゲット・システムのうちの１つにおいて実行可能であり、該方法は、
ａ）利用可能なステップ・プログラムのステップのリストから、少なくとも１つのステップ・プログラムのステップを選択することを含む前記ステップ・プログラムを生成する工程であって、
該選択された少なくとも１つのステップ・プログラムのステップのそれぞれは、少なくとも１つのステップ・オブジェクト及び少なくとも１つのステップ・エディタ・オブジェクトに関連しており、該少なくとも１つのステップ・オブジェクトは、該ステップに関連するステップに固有のデータの編集を可能にするために、少なくとも１つのステップ・エディタ・ＧＵＩ・ネイティブ・オブジェクトを選択する工程と、
ｂ）前記ステップ・プログラムが動作されるべき少なくとも１つのターゲット・システムを供給する工程であって、
該ターゲット・システムは、複数の固有のステップ・エージェントを含んでおり該ターゲット・システム上で動作が可能な、該ターゲット・システムに固有のステップ・エンジンを備え、該ターゲット・システムに固有のステップ・エンジンは、前記少なくとも１つのステップ・オブジェクトに応答して、該少なくとも１つのステップ・オブジェクトのそれぞれに対して、該ターゲット・システム上で動作が可能な少なくとも１つのステップ・エージェントを選択し、前記ステップ・プログラムのステップを動作させるべきターゲット・システム上で前記関連ステップを実行し、該ステップ・プログラムを該ターゲット・システム上で該ターゲット・システムに固有のステップ・エンジンを用いて動作させる工程と、
ｃ） 前記エディタ・オブジェクトを用いて、選択された少なくとも１つのステップ・エディタ・ＧＵＩ・ネイティブ・オブジェクトを編集する工程であって、
前記開発されるステップ・プログラムは、少なくとも１つの関連ステップ・エディタ・オブジェクトを含み、前記編集工程は、前記関連ステップに関してシステム利用者により編集され得るステップに固有のデータのみを、コンピュータ・システムに接続されたディスプレイ画面上に表示することを含む工程、
とを含むことを特徴とする、方法。
【国際調査報告】
2004515826.tif 000046
2004515826.tif 000047