(57)【特許請求の範囲】
【請求項１】
ソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の座標変換方法であって、
ソース座標系とターゲット座標系がルート座標系以外の共通座標系に連結されるように、ルート座標系から延び、ソース座標系及びターゲット座標系を含む複数の他の座標系へ分岐する、座標系変換ツリーを定める手順と、
ルート座標系へ戻ることなく延びる枝に沿って、ソース座標とターゲット座標の間で座標変換を実行する座標変換手順と、
を有する座標変換方法。
【請求項２】
少なくとも一つの隣接した座標系との座標変換を実行するため、前後関係データを各座標系の夫々の座標と関連付ける手順を更に含む請求項１記載の座標変換方法。
【請求項３】
付加的な座標系を座標系変換ツリーに追加する手順と、
付加的な座標系が共通座標系を経由して少なくとも一つの他の座標系へ連結されたかどうかを検証する手順と、
検証が成功した場合に、変換を実行する手順と、
を更に有する請求項１記載の座標変換方法。
【請求項４】
ソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の座標変換方法であって、
共通座標系から延び、少なくとも一つの介在中間変換系が間に存在するソース座標系及びターゲット座標系へ分岐する座標系変換ツリーの少なくとも一部分を定める手順と、
ソース座標系から共通座標系とターゲット座標系へ延びる枝に沿ってソース座標系とターゲット座標系の間で座標変換を実行する座標変換手順と、
を有し、
座標は、少なくとも一つの隣接した座標系との座標変換を実行するため、座標系毎に前後関係データが関連付けられている、
座標変換方法。
【請求項５】
付加的な座標系を座標系変換ツリーの一部分に追加する手順と、
付加的な座標系が共通座標系を経由して少なくとも一つの他の座標系へ連結されたかどうかを検証する手順と、
検証が成功した場合に、変換を実行する手順と、
を更に有する請求項４記載の座標変換方法。
【請求項６】
ソース座標系におけるソース座標での画像データをターゲット座標系におけるターゲット座標へ変換するプロセッサを含む装置であって、
上記プロセッサは、
共通座標系から延び、少なくとも一つの介在中間変換系が間に存在するソース座標系及びターゲット座標系へ分岐する座標系変換ツリーの少なくとも一部分を定める手段と、
少なくとも一つの隣接した座標系との座標変換を実行するため座標系毎に前後関係データが関連付けられた座標に関して、ソース座標系から共通座標系とターゲット座標系へ延びる枝に沿ってソース座標系とターゲット座標系の間で座標変換を実行する座標変換手段と、
を有し、
上記プロセッサに接続され、ターゲット座標系に変換された画像データを表示するディスプレイが更に設けられている、
装置。
【請求項７】
座標変換手段は、ソース座標系から少なくとも一つの隣接した座標系へ、共通座標系との変換が行われるまで、座標系変換ツリーの一部分を上って順次に座標変換を実行する、請求項６記載の装置。
【請求項８】
座標変換手段は、共通座標系から少なくとも一つの隣接した座標系へ、ターゲット座標系との変換が行われるまで、座標系変換ツリーの一部分を下って順次に座標変換を実行する、請求項６記載の装置。
【発明の詳細な説明】
【０００１】
本発明は、データ処理の分野に係り、特に、ソース座標系からターゲット座標系へ座標を変換する方法及び装置に関する。
【０００２】
多数の科学的及び工学的なソフトウェア・アプリケーションは、ソース座標系からターゲット座標系へ座標を変換又は変形することを要求する。たとえば、衛星を打ち上げ、追跡するために種々の座標系が使用され、各座標系は特定の対象物をサポートする。
【０００３】
たとえば、軌道内の衛星の位置を追跡する役割を担うレンジ人員は、地上座標系の中心に基づく第１の座標系を使用する。第２の座標系は、衛星を発射台から打ち上げるため下方推進段の責任を負う人員によって使用される。同様に、第３の座標系は、上方推進段の役割を担う人員によって使用される。第２の座標系及び第３の座標系は、推進段及び発射台に関する座標系に基づいている。
【０００４】
種々の座標系間で座標値を変換する必要があるので、ソース座標系からターゲット座標系への座標変換が必要になる。あらゆる予想される座標系の問題空間を十分に記述できる唯一の座標系は存在しないので、ソフトウェア・プログラムは、衛星を打ち上げ、追跡する特定の目的に意味のある座標系を定義する。
【０００５】
座標データが別の座標系へ渡され、ソース座標系が不明であるとき、必ず、曖昧性の問題が生じる。曖昧性は立証可能であるが、これは、座標データが前後関係の外で使用される場合に起こる一般的なエラーを防止するためには効果の無い方法である。たとえば、メートル単位で渡された座標データは、フィート単位に翻訳される。
【０００６】
この種の問題はミスを修正することが困難である。なぜならば、座標データが誤って解釈されなかった場合でも、後のプロセスで間違いが最終的に誤った結果を生じるときに欠陥が現れるからである。ソフトウェアプログラマーは、症状から、すなわち、原因ではなく、メートルをフィートのように誤って解釈するという誤った結果から、問題のデバッグを強いられる。
【０００７】
定義される座標系の数は無制限であるため、全体的な解空間を与えることは困難である。換言すると、衛星を打ち上げ、追跡するため全てのソフトウェアプログラマーによって使用されるべき単一の座標系を提供することは困難である。上述の３種類の座標系が集中座標系に構成された場合、９通りの座標変換若しくは座標変形が実行される可能性がある。３種類の座標系の間で予想される９通りの座標変換は、ＡＡ、ＡＢ、ＡＣ、ＢＡ、ＢＢ、ＢＣ、ＣＡ、ＣＢ及びＣＣのように表現される。このアプローチの欠点は、ソフトウェアプログラマーが、ソース座標系及びターゲット座標系と、予想される各座標変換に適用される変換を知る必要がある、という点である。
【０００８】
集中座標系の別の欠点は、ソース座標系から新座標系への座標変換をサポートする順応性に欠ける点である。４番目の座標系をサポートするためには、たとえば、１６通りの座標変換をサポートしなければならない。これに応じて、ソフトウェアプログラマーは、ＡＤ、ＢＤ、ＣＤ、ＤＡ、ＤＢ、ＤＣ及びＤＤで表現され得る７通りの新しい座標変換を定義しなければならない。付加的な座標変換を追加するためには既存のソフトウェアを修正することが必要である。ソフトウェアの修正は望ましくない。なぜならば、新たなプログラミングエラーが既にコード化され検証済みのソフトウェアに取り込まれるかもしれないからである。その結果として、ソース座標系とターゲット座標系の間で、特に、ソース座標系と新座標系の間で座標を変換する場合には、高い信頼性で座標を変換しなければならない。
【０００９】
従来技術を鑑みて、本発明は、効率的な変換が行われ、付加的な座標系を追加するため容易に拡張可能である座標系フレームワークの提供を目的とする。
【００１０】
本発明の上記目的及びその他の目的と、本発明による特徴及び効果は、ソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の変換方法によって達成される。この本発明の変換方法は、ソース座標系とターゲット座標系がルート座標系以外の共通座標系に連結されるように、ルート座標系から延びてソース座標系及びターゲット座標系を含む複数の他の座標系へ分岐する座標系変換ツリーを定める手順を含む。座標変換は、好ましくは、ソース座標系から共通座標系へ至り、共通座標系に戻ることなくターゲット座標系へ至る枝に沿って、ソース座標値とターゲット座標値の間で実行される。すなわち、ソース座標系及びターゲット座標系は、ルート座標系に戻る変換を必要としない座標系変換ツリーによって関連付けられる。
【００１１】
本発明の方法は、好ましくは、少なくとも一つの隣接した座標系との座標変換を実行するため、前後関係データを各座標系の夫々の座標と関連付ける手順を更に含む。
【００１２】
座標系変換ツリーを使用する一つの有利な特徴は、各座標系と関連付けられた前後関係データが、座標系をターゲット座標系へ変換する方法が既知であるソース座標系を用いることなく、ソース座標系システムを隣接した座標系へ変換できるようにさせることである。座標変換を実行する手順は、好ましくは、ソース座標系から少なくとも一つの隣接した座標系へ、共通座標系を用いた変換が行われるまで、座標系変換ツリーを上って、順次に座標変換を実行する手順を含む。同様に、座標変換を実行する手順は、好ましくは、共通座標系から少なくとも一つの隣接した座標系へ、ターゲット座標系を用いた変換が行われるまで、座標系変換ツリーを下って、順次に座標変換を実行する手順を含む。
【００１３】
座標は夫々の座標系の関連した前後関係データに基づいて隣接した座標系に変換され得るので、集中座標系を回避できる利点が得られる。座標変換は共通座標系に関して行われるので、分散座標系フレームワークがソース座標系とターゲット座標系の間で高信頼性の座標変換を行うため設けられる。
【００１４】
本発明の方法は、好ましくは、付加的な座標系を座標系変換ツリーに追加する手順と、付加的な座標系が共通座標系を経由して少なくとも一つの他の座標系へ連結されたかどうかを検証する手順と、を更に含む。ソース座標系と新座標系の間の座標変換は、この検証が成功した場合に実行される。検証する手順が不成功であった場合、好ましくは、警告が与えられる。
【００１５】
さらに、本発明による方法は拡張性がある。新座標系を追加するためコード化するモジュールの量は、システムに追加される機能の量、すなわち、実現可能性のある変換の個数が線形的に増加しても、一定のままである。分散座標系フレームワークは、既に定義された座標系を修正すること無しに、任意のユーザ定義座標系をサポートするよう拡張され得る。このフレームワークは自由に拡張できるが、既存の稼動中の試験済みのコードの修正は制約されている。基本的なフレームワークに修正を加える必要が無いので、この方法は、市販の在庫品（ＣＯＴＳ）のヘッダファイルと、特定ユーザの要求を満たすように派生させることによって拡張された共有ライブラリのセットとして供給され得る。ユーザの新座標系は、予め定義された座標系の組に簡単に関係付けられ、座標系変換ツリーを経由して任意の関連した座標系への変換に関与し得る。
【００１６】
座標系は、原子座標系、地球空間（地理）座標系、又は、ｎ次元座標系を含む。
【００１７】
本発明の別の局面は、共通座標系から延び、少なくとも一つの介在中間変換系が間に存在するソース座標系及びターゲット座標系へ分岐する座標系変換ツリーの少なくとも一部分を定めることにより、ソース座標系におけるソース座標と、ターゲット座標系におけるターゲット座標の間で変換を行う。座標変換は、好ましくは、ソース座標系から共通座標系とターゲット座標系へ延びる枝に沿ってソース座標系とターゲット座標系の間で実行される。座標は、好ましくは、少なくとも一つの隣接した座標系を用いて座標変換を実行するため、座標系毎に前後関係データが関連付けられる。
【００１８】
本発明の更なる局面は、上述のようにソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の変換をコンピュータに実現させるため、コンピュータ読み取り可能な命令が記録されたコンピュータ読み取り可能な記録媒体を提供することである。
【００１９】
本発明の更に別の局面は、ソース座標系におけるソース座標での画像データをターゲット座標系におけるターゲット座標へ変換するプロセッサを含む装置を提供することである。このプロセッサは、好ましくは、共通座標系から、少なくとも一つの介在中間変換系が間に存在するソース座標系及びターゲット座標系へ延びる座標系変換ツリーの少なくとも一部分を定める手順を実行する。画像データの座標変換は、好ましくは、ソース座標系から共通座標系へ延び、ターゲット座標系へ延びる枝に沿って、ソース座標とターゲット座標の間で行われる。この装置は、変換された画像データを表示するディスプレイを更に含む。
【００２０】
座標は、好ましくは、少なくとも一つの隣接した座標系を用いて座標変換を実行するため、座標系毎に前後関係データが関連付けられる。
【００２１】
以下では、本発明の好ましい実施例が示された添付図面を参照して、本発明を詳細に説明する。しかし、本発明は、種々の形態で具現化され、以下に説明する実施例に限定されるものではない。実施例は、本発明を満遍なく完全に開示するために与えられたものであり、本発明の範囲を当業者に十分に伝えるであろう。図面を通じて、同じ番号は同じ要素を示す。
【００２２】
最初に、図１及び図２を参照して、本発明によるソース座標系１０におけるソース座標とターゲット座標系２０におけるターゲット座標の間の変換を行う方法を説明する。スタート（ステップ５０）から始まり、ステップ５２で、ルート座標系２４から延び、ソース座標系１０及びターゲット座標系２０を含む複数の他の座標系へ分岐する座標系変換ツリー２２は、ソース座標系及びターゲット座標系がルート座標系以外の共通座標系２６へ連結されるように定義される。座標変換は、ソース座標系１０から共通座標系２６へ延び、更に、ルート座標系２４へ戻ることなくターゲット座標系２０へ延びる枝２８、３０、３２及び３４に沿って、ソース座標とターゲット座標の間で行われる。
【００２３】
このように、ソース座標系１０とターゲット座標系２０は、ルート座標系２４から延びて、ソース座標系及びターゲット座標系を含む他の複数の座標系へ分岐する座標系変換ツリー２２によって関連付けられる。この方法は、少なくとも一つの隣接した座標系と座標変換を実行するため、前後関係データを各座標系の夫々の座標と関連付ける手順を更に含む。
【００２４】
座標系変換ツリー２２を使用する一つの有利な特徴は、各座標系と関連付けられた前後関係データが、座標系をターゲット座標系２０へ変換する方法が既知であるソース座標系１０を用いることなく、ソース座標系システムを隣接した座標系へ変換できるようにさせることである。座標変換を実行する手順は、ソース座標系１０から少なくとも一つの隣接した座標系１２へ、たとえば、共通座標系２６を用いた変換が行われるまで、座標系変換ツリー２２を上って、順次に座標変換を実行する手順（ステップ５４）を含む。同様に、座標変換を実行する手順は、共通座標系２６から少なくとも一つの隣接した座標系２２へ、たとえば、ターゲット座標系２０を用いた変換が行われるまで、座標系変換ツリー２２を下って、順次に座標変換を実行する手順（ステップ５６）を含む。この変換はステップ５８で完了する。
【００２５】
座標は夫々の座標系の関連した前後関係データに基づいて隣接した座標系に変換され得るので、集中座標系を回避できる利点が得られる。座標変換は共通座標系２６に関して行われるので、分散座標系フレームワークがソース座標系とターゲット座標系の間で高信頼性の座標変換を行うため設けられる。
【００２６】
本方法の別の局面は、付加的な座標系４０を座標系変換ツリー２２への追加を簡単化すること関係する。付加的な座標系が追加された場合、この方法は、付加的な座標系が共通座標系を経由して少なくとも一つの他の座標系へ連結されたかどうかを検証する。ソース座標系１０と新座標系４０の間の座標変換は、この検証が成功した場合に実行される。検証する手順が不成功であった場合、好ましくは、警告が与えられる。
【００２７】
本発明による方法は、型安全性と実行時安全性を備えている。コンパイラは、共通座標系を経由して少なくとも相互に連結されていない座標系間の誤った動作を阻止するので、型安全性がある。また、共通座標系を経由して少なくとも相互に連結されていない座標系間の誤った動作に対し例外処理が通告が出されるので、実行時安全性がある。たとえば、座標データがフィート単位ではなくメートル単位に変換された場合、ソフトウェアプログラマーは、ソフトウェアプログラムの大部分をデバッグしなくても、エラーを発見することができる。
【００２８】
図３乃至１２を参照して、ソース座標系とターゲット座標系の間で座標データを変換する方法をより詳細に説明する。本発明による方法は、分散型、拡張性、オブジェクト指向型の座標系変換クラス及び幾何学的オブジェクトの組のフレームワークに基づいている。以下では、このフレームワークを簡単にCoordSysと呼ぶ。
【００２９】
CoordSysは、ある座標系から別の座標系への変換を要求する任意のソフトウェア・アプリケーション領域で使用可能であるが、地球空間情報処理システムに適用可能である。CoordSysは、アプリケーションのオブジェクトを、別のシステム若しくはシナリオの時間（１次元座標系）、任意の数学的アプリケーションにおける平面変換（２次元座標系）、又は、画像若しくは位相的アプリケーションにおける空間変換（３次元座標系）と同期させるため使用される。CoordSysは、任意の個数の成分（Ｎ次元座標系）を伴う特別の座標系を定義するため使用される。さらに、CoordSysは、原子座標系を基礎においてもよい。
【００３０】
CoodSysオブジェクトは、座標系安全性がある、といえる。換言すれば、CoorｄSysオブジェクトは、前後関係を離れては（理由なくして）使用できない。異なる座標系からのオブジェクトと共にCoordSysを使用する試みは、コンパイル時エラーか、又は、実行時エラーを生じる。図３に示された座標系を参照すると、入力引数ポイントは、誤って、ユーザの座標系に存在するものとみなされている。次に、ユーザは、原点から入力引数ポイントまでの距離を計算しようとする。これは、次のコードで与えられる。
【００３１】
【表１】
0004472229.tif 000002
基底クラスCsPointは、サブクラスXyCspointから減算できないので、コンパイル時エラーが発生する。別のXyCsPointだけがXyCsPointから減算され得る。CoordSysフレームワークにおける強いタイプの照合は、前後関係から離れたデータの使用を防止する第１保護レベルである。コンパイラを通過させる一つの方法は、XyCsPointを明示的に選ぶように、メソッドの署名を変更することである。しかし、この場合も、図４及び以下のコードに示されるように、依然として問題が残る。
【００３２】
【表２】
0004472229.tif 000003
これにより、任意の二つのXyCsPointを相互に減算できないので、実行時例外事象が発生する。二つのXyCsPointは全く同じ座標系に∈必要がある。CoordSysフレームにおける実行時座標系検査は、前後関係から離れたデータの使用を防止する第２保護レベルである。これは、プログラマーが入力データの見通しを誤っているので、実行時エラーと呼ばれる。プログラマーは、入力ポイントが自分の座標系に属していると信じているのに対し、入力ポイントは、実際には、元のXyCsを並進及び回転させた別のXyCsからのポイントである。二つの座標系の正しい見方は図５に示されている。ここでは、プログラマーの間違いが明らかになっている。
【００３３】
CoodSysは、共通の間違いを防止しないが、プログラマーが入力座標系のタイプ（型）について事前知識を持たない場合でも入力引数を変換できるようにする。入力引数はCsPointであるので、入力変数は他の関連した座標系に変換する必要があるrootCsへの継承的情報を伴う。適切なアプローチは、最初に、argPtをターゲット座標系へ変換し、次に、図６及び以下のコードに示されるように、オブジェクトを信頼して使用する。
【００３４】
【表３】
0004472229.tif 000004
入力引数は、比較的簡単な方法でユーザの座標系へ変換される。
【００３５】
【表４】
0004472229.tif 000005
入力ポイントが同じルート座標系に何らかの関係がある限り、CoordSys変換アルゴリズムは、いずれかの関与している座標系の中の前後関係でポイントを作成することが可能である。一般的に、関連した座標系内のオブジェクトから固有の座標系システム内のオブジェクトを作成できる。
【００３６】
【表５】
0004472229.tif 000006
かくして、CoordSysは、幾何学的オブジェクトを定義するため使用される基準として定義される。ポイントは、座標値、たとえば、（ｘ，ｙ，ｘ）＝（５，６，２）を宣言することによって定義される幾何学的オブジェクトである。座標値の大きさと意味の定義は、座標系である。殆どの座標系は、別の座標系に関して相対的に定義される。すなわち、座標系に関して、基準座標系と、その座標系自体と基準座標系の間でオブジェクトを変換する方法とがわかっている。
【００３７】
一部の座標系は独立形式で定義され得る。すなわち、これらの座標系は、他の座標系に関して相対的に定義されない。独立型座標系は、ルート座標系と呼ばれる。ルートという用語は、図７に最もわかりやすく示されているように、関連した座標系の間にツリー構造が存在することを示唆するために使用される。一つのルート座標系２４は、ルート座標系に関して相対的に定義された多数の分岐座標系６０、６２及び６４を含む。各分岐座標系は、たとえば、更なる分岐座標系６６、６８及び７０を含む。ルート座標系の個数は、一般的に、分岐座標系の個数よりもはるかに少ない。
【００３８】
関連した座標系間の関係は、複雑になる可能性がある。任意の座標系と他の関連した全ての座標系との相対的な関係を表現するため数学的式を導出することができる。しかし、これらの式は、非常に冗長になるであろう。
【００３９】
本発明の場合、この関係は、分岐座標系を、唯一の基準座標系若しくは隣接した座標系に対して定義することによって簡単化される。このような前提条件の下で、関連した全座標系は、共通ルート座標系を共有する。すなわち、ある座標系で定義されたオブジェクトは、最初に、ルート座標系へ変換し、次に、ターゲット座標系へ変換することにより、関連した他の任意の座標系へ変換することが可能である。
【００４０】
座標系変換の効率は、ルート座標系ではない共通座標系が潜在的に存在することを認識することによって高められる。図２に示された例は、ソース座標系１０とターゲット座標系２０の両方に共通した座標系２６を示す。ソース座標系１０からターゲット座標系２０への変換は、不要な変換を削除することによって、非常に効率的に実現され得る。たとえば、ソース座標系１０から共通座標系２６へ変換し、次に、共通座標系からターゲット座標系２０へ変換する場合、常に、ルート座標系２４へ戻す変換を行う場合よりも効率的である。共通座標系２６とルート座標系２４の間の変換は冗長であり、効率化のため避けることができる。
【００４１】
本発明の方法を実現する基本変換アルゴリズムは、再帰的であり、座標系変換ツリー２２を上るときに、基準座標系への変換を反復的に呼び出す。再帰的なレベルから戻ったとき、座標系変換ツリー２２を下るときに、基準座標系からの変換が反復的に呼び出される。変換ツリー２２を辿るための疑似コードは、
変換ポイントアルゴリズム
要求：ある座標系における引数ポイント
リターン：同じ座標系における変換後のポイント
｛入力引数ポイントからソース座標系を取得し、
ソース座標系がこの座標系に関連しているかどうかを照合し、
入力引数ポイントの複製である作業ポイントを作成し、
ソース座標系がこの座標系よりも高い位置にある間、
｛現在作業ポイントをその基準座標系へ変換することにより、新作業ポイントを作成し、
ソース座標系を新作業ポイントの座標系にセットし｝
ソース座標系がこの座標系と一致しない場合、
｛基準座標系の変換ポイント法を呼び出すことにより、新作業ポイントを作成し、
現在作業ポイントをその基準座標系へ変換することにより新作業ポイントを作成し｝
作業ポイントを返す。｝
のようになる。
【００４２】
最も基本的な形式での座標系オブジェクトは、ポイントとその基準座標系との間での変換法を知っている単なるオブジェクトである。対応した名前と、成分の数と、変換細則とが設けられた多数の型の座標系が存在するので、基準座標系と、２個の純粋仮想関数convToRef()及びconvFromRef()とを構成された基本クラスCoordSysが当然に予想される。
【００４３】
【表６】
0004472229.tif 000007
これは、所望のゴールを実現するための簡単な方法であるが、CoordSysオブジェクトは、多様な特性を示すために、ヒープ上に動的に割り当てられる。多様性は、関数が基底クラスへのポインタ若しくはリファレンスを使用するとき、関数は、導出されたクラスのオブジェクトを、それを知らなくても、使用可能でなければならない、というLiskov置換原理に従う。ユーザは、オブジェクトを固有の空間へ変換するためにオブジェクトの座標系の型を知らなくてもよい。導出された型の変換は、基底クラスの純粋仮想インタフェースを介して呼び出しを行うことによってその変換を扱う。
【００４４】
このような設計は、新しい演算の乱用に本質的に伴うコストのため、CoordSysオブジェクトの多数のインスタンスが作成される予定である場合には、実行時に効率的ではない。また、この設計は例外安全性を欠く。なせならば、例外事象は、CoordSysオブジェクトの作成後に起こる可能性があり、おそらく、メモリ・リソースのリークを招くからである。
【００４５】
より安全性が高く、かつ、より効率的な実施形態では、CoordSysクラスが二つの部分に分割される。図８に示されるように、非仮想プロキシは仮想RealSubject(Design  Patterns)を有する。CoordSysクラス７０（プロキシ）は、動的に割り当てられたRepCs７２(RealSubject)の代役であるクライアントによって静的に割り当てられる。直接的ではない余分なレベルによって、幾つかの主要な利点が得られる。
【００４６】
CoordSysオブジェクトは、例外安全性がある。なぜならば、全ての分割部分が例外後のスタックの巻戻しの間に適切に発火するからである。CoordSysクラス７０は、新CoordSysクラスが構成若しくは変更されているときに、新しいRepCs７２だけが割り当てられるように、基準カウンティング機構を利用し得る。RepCsオブジェクトは、最後のCoordSysプロキシがCoordSysオブジェクトを順に回すことに関連した生存期間争点を除去する範囲から出るまで削除されない。RepCsオブジェクトは、公開CoordSysインタフェースを使用するプログラマと、非公開RepCsクラスのインプリメンテーションとの間にバッファを設ける。変換アルゴリズムは修正可能であり、新しい共有ライブラリは、コスト的に高くつく可能性のあるベースライン全体の再コンパイルではなく、アプリケーションコードの再リンクだけを必要とする開発者に配給される。
【００４７】
クラスCoordSysとクラスRepCsの間に存在する特殊な関係を強調するため、クラスCoordSys及びクラスRepCsの代わりに、クラスCoordSysProxy及びクラスCoorSysと呼ぶ。Proxy-Repパターンは、ユーザから見えないようにされるべきである。ユーザ中心の見方は、Proxyクラスに対しエレガントな名称を維持する。なぜならば、普通の開発者は、repクラスの名称を知らないからである。
【００４８】
次の詳細なレベルについて説明すると、RepCsには、基本的に２種類の変形、すなわち、ルート座標系７４と依存型座標系７６がある。ルート座標系７４は、参照先のない座標系であり、変換ツリーのルート（根）ノード（節点）を表わす。ここで、RepCsであるRepRootCs７４を定義する。convToRef及びconvFromRefの実行は、単に論理エラーを生じるだけである。なぜならば、変換アルゴリズムは、これらのメソッドを呼び出さないからである。このようにすることは、ツリーのルートノードを横切ることと等価である。
【００４９】
【表７】
0004472229.tif 000008
依存型座標系７６は、ルート座標系若しくは別の依存型座標系を参照先とする座標系である。依存型座標系は、座標系変換ツリー２２内のリーフ（葉）ノードを表現する。依存型座標系は、基準座標系又は親ノードとの間の変換方式を伴っている。基準CoordSysオブジェクトを有するRepCsであるRepDependentCs７６を定義する。convToRefメソッド及びconvFromRefメソッドは、バーチャルのままである。なぜならば、変換の詳細は、RepDependentCsの具体的なサブクラスに委ねられているからである。
【００５０】
このメソッドを説明するため、具体的な座標系を定義する。一例として、独立型座標系であるルートＸＹ座標系と、並進Ｘ’Ｙ’座標系とを使用する。RepRootCsから導出されるRepRootXyCs７６と、RepDependentCsから導出されるRepTransXyCs７８を定義する。RepRootXyCsクラス７６は、変換用のインプリメンテーションを与える必要は無く、ある種の管理上の仮想インタフェースを無効にするためだけに存在する。
【００５１】
次に、座標系変換の実行の一例を説明する。RepTransXyCs７８は、RepCsの具体的なサブクラスであるので、純粋仮想インタフェースを実現しなければならない。RepTransXyCsは変換された座標系であるので、Ｘ方向及びＹ方向の並進成分は、クラスが構築されたときから保持されていると仮定する。また、一部のより上位レベルの座標系変換アルゴリズムは、適当な時機にconvToRefメソッド及びconvFromRefメソッドを呼び出す役目を担う。本発明による方法は、非常に簡単になる。たとえば、convToRefは以下のように実現される。
【００５２】
【表８】
0004472229.tif 000009
入力ポイントは、この座標系内にあることがわかっているポイントである。このメソッドは、基準座標系に新しいポイントを割り当てる役割がある.基準座標系内の局所ポイントは、Ｏに初期設定された成分を用いて作成される。この成分は、次に、適当な変換アルゴリズムを用いて埋め戻される。並進ＸＹ座標系の簡単な例の場合、Ｘ及びＹ方向での並進は、入力ポイント成分に加えられる。ポイントは変換されると、ヒープ上に動的に割り当てられたポイントとして返される。
【００５３】
メソッドconvFromRefは非常に類似している。入力ポイントは基準座標系にある。局所ポイントがこの座標系内で作成され、逆変換が適用される。この場合の逆変換は、入力ポイント成分から減算されたＸ及びＹ方向の並進である。再度、新しいポイントが割り当てられ、呼び出し元へ返される。
【００５４】
【表９】
0004472229.tif 000010
この変換は、説明の便宜上、意図的に冗長に記述されている。局所一時的ポイントの作成は、不必要であり、全ての引数を返却するポイントの作成側へそのまま渡すことによって省略することが可能である。ポイントは、基底クラスポインタとして動的に返却される必要がある。なぜならば、上位レベル変換アルゴリズムは、当該座標系のポイント型について特別の知識が無くても、convToRef及びconvFromRefを呼び出すからである。効率に関する事項は後述する。
【００５５】
図９を参照するに、上述のＸＹ座標系クラスの静的ビューの概要と、ＸＹ座標系クラスの相互関係が示されている。変換ツリー内の座標系基準を変更し、ツリーを辿る仮想メカニズムを許容する独特の設計のため、CoordSysフレームワークは拡張性がある。ｎ個の座標系毎に、ｎ２個の変換が考えられる。たとえば、二つの座標系Ａ及びＢが与えられた場合、４個の変換（Ａ→Ａ、Ａ→Ｂ、Ｂ→Ａ、Ｂ→Ｂ）が考えられる。同様に、３個の座標系が与えられた場合、９通りの変換が考えられる。
【００５６】
アプリケーションに新しい座標系が追加されると、全ての座標系を他の全ての座標系へ変換できるようにするためには、２ｎ−１個の明示的な変換をコード化しなければならない。CoordSysフレームワークを使用することにより、ｎ２個の全ての変換は、基準座標系との間の２個の新しい変換を与えるだけでサポートされる。すなわち、機能性が指数関数的に増加したとしても、作業量は一定のままである。この様子は、図１０のグラフ８０、８２及び８４に明瞭に示されている。
【００５７】
座標系変換のメカニズムは、座標系幾何学オブジェクトを用いて取り扱われる。最も単純な座標系幾何学オブジェクトはCsPointである。オブジェクトCsPoint９０は、図１１に示されるように、ポイントオブジェクト９２と座標系オブジェクト９４の集まりである。ポイントオブジェクト９２は、成分値を保持し、ポイントに期待されるすべての動作を与える。座標系は、そのポイントに対する前後関係情報を格納し、必要に応じて変換を実行する。説明の便宜上、変換は、ポイントの作成時に実行される場合を考える。構成パラメータは、ターゲット座標系と、引数ポイントである。
【００５８】
【表１０】
0004472229.tif 000011
上述の最初の例に戻って、座標系オブジェクトの一体的な変更について説明する。原則として、問題空間は、３個の関連したＸＹ座標系と、ルート座標系ＸＹと、並進座標系Ｘ’Ｙ’と、並進・回転座標系Ｘ”Ｙ”である。ルート座標系ＸＹ  １００は、他の座標系には依存していないので、簡単に宣言することができる。
【００５９】
RootXy  CsrootCs;
並進座標系Ｘ’Ｙ’はルートに依存する。並進座標系Ｘ’Ｙ’を構築するため、本例のルート座標系の原点を表現するポイントXyCsPointだけを作成する。この原点は、本例のTransXyCs１０２の構造パラメータとして使用される。
【００６０】
XyCsPoint  myOrigInRoot(rootCs,1,1);
TransXyCs  myCs(myOrigInRoot);
並進・回転座標系Ｘ”Ｙ”もルートに依存する。並進・回転座標系は２ステップで構築する。最初に、並進座標系１０４を上述と同じように作成する。
【００６１】
XyCsPoint  theirOrigInRoot(rootCs,3,3);
TransXyCs  theirCs(theirOrigInRoot);
並進座標系を基準として使用することにより、基準に対し、反時計周りに所定の角度で回転させられた依存型座標系１０６を構築できるようになる。
【００６２】
RotatedXyCs  theirCs(transCs,Degree(-45));
ここまでで、図１２の動的ビューに示されるように、４個の座標系オブジェクトが作成された。CoordSysオブジェクトの構築によって確立された座標系ツリーを用いることにより、簡単に使用され、オブジェクト指向の一般性を備えた座標系変換が行われる。そのコードのある場所で、座標系を使用してポイントが定義される。
【００６３】
XyCsPoint  argPt(theirCs,2,2);
最後に、このポイントがｍｙコードへ渡される。座標系変換は、変換ツリーを遡りながら、元ルート座標系へ戻す回転と並進を行う。ポイントは、座標系ツリーを下りながら、ｏｕｒ座標系に変換される。この変換は、ポイントの承継に関する事前知識を用いることなく、ポイントをｏｕｒ座標系内に構築することだけによって行われる。
【００６４】
XyCsPoint  myPoint(myCs,ArgPt)"  //終わり。
【００６５】
オブジェクト指向設計において、一般化及び抽象化は非常に強力なツールではあるが、本願出願人らは、実行時効率の低下の影響を認識している。後述の多数の最適化手法は、CoordSysフレームワーク全体を通じて仮想関数呼び出し及びヒープ割当のオーバーヘッドを最小限に抑えるため組み込まれた。
【００６６】
第１の最も重要な最適化は、座標系が作成される回数は、夫々の生存期間内でパスし、コピーされた回数よりもはるかに少ない、という前提の下で、CoordSysプロキシによって与えられる参照カウンティングである。この議論は、（１）画像ファイルのオープン時、或いは、（２）画像を表示するビューアーコントロールへのユーザ修正の際に、座標系が作成される画像処理分野において成り立つ。
【００６７】
この回数は、座標系が画像空間（衛星カメラのバックプレーン）から、地上交差面（地球）を介して、ユーザの投影シーン空間（Ｘ端末上のビューアー）へ、画素情報を再標本化及び再マッピングする間に使用される何百万回もの回数に匹敵する。参照カウンティングは、座標系を作成するため必要とされるヒープ動作の大半を、既存座標系内のカウンタ変数値の単純な増減で置き換える。
【００６８】
２番目に重要な最適化は、再帰的ツリー探索（トレース）中のポイントのメモリ管理である。作業ポイントは、ソース座標系型を知ることなく作成しなければならないので、ポイントはヒープ上に動的に割り当てられる。重大な性能向上は、種々のポイント型のメモリプールを維持し、高コストの動的割当を、ポイントアドレスの、予め割り当てられたポイントのスタックへの単純なプッシュ若しくはポップ動作で置き換えることによって、実現される。メモリプールは、所定のアプリケーションのための最適サイズまで幾何学的に成長するよう設計してもよく、使用されなくなったポイントのガーベージコレクションを行う抑制型手段が設けられる。
【００６９】
別の重要な改善は、変換ツリー内で頻繁に参照されるノードを一つの最適化された変換に崩すことによって達成される。たとえば、画像処理分野において、完全解像度画像空間座標系（典型的に、１３６Ｍｂの画素データ）は、データを管理し易くするため、通常、２倍ずつの反復的な縮小によって、幾つかの低解像度の座標系に圧縮される。
【００７０】
圧縮画像の周りの縁は、画像解像度が縮小しているので、半画素分だけシフトしなければならない場合がある。並進ラスタ座標系を縮小ラスタ座標系に繋ぐのではなく、最適化されたTransScaledRasterCsが両方の変換で同時に行われる。内部変換マトリックスを用いることによって、より複雑な変換を簡単に処理できるようになる。頻繁に参照されるノードの崩壊は、アルゴリズムにおける再帰の深さを減少させ、作成される作業ポイントの個数を減少させる。
【００７１】
座標系検査のオーバーヘッドは、座標系が問題ではなく、効率が非常に重要視される状況において、非常に高コストになり得る。たとえば、画像フィルタ再標本化器において、ポイントは、対応した入力座標系及び出力座標系で、FilterResamplerに入り、FilterResamplerから出る。しかし、FilterResampleオブジェクト内では、多数の計算を実行しなければならない。ポイントが再標本化器のための適切な座標系に入ると、以降の座標系照合は不要であり、コストを低減できる。処理要求の８０％に対し、CoordSys検査に関連したオーバーヘッドは、それによって得られる実行時安全性と比較すると重大ではない。しかし、殆どの処理が行われる２０％の厳しくループさせられたコードの場合、余計な検査は大打撃になり得る。
【００７２】
全てのCoordSys幾何学オブジェクトは、プログラマが安全性よりも効率を選択できるように、未加工要素成分へアクセスする手段を与える。経験則によれば、幾何学オブジェクトは、CoordSysオブジェクトとして公開インタフェースへ出し入れされ、同時に、内部的には（内部検査若しくは内部変換が実行されたとき）幾何学オブジェクトは必要に応じて未加工幾何学オブジェクトとしてアクセスされる。
【００７３】
多少重要性の低い性能向上は、２次元座標系及び３次元座標系に対し専用化したクラスを与えることによって獲得される。これにより、制御構造のループ、及び、アレイを経由した間接的なデータアクセスによるオーバーヘッドを伴うことなく、座標系成分への直接的なアクセスが可能になる。これは、殆どの座標系変換は、２次元及び３次元の幾何学的オブジェクトに対して実行され、Ｎ次元オブジェクトの一般化を必要とする事例は非常に限られている、という仮定に基づいている。
【００７４】
最後の最適化は、変換アルゴリズム自体の最適化である。任意の座標系からルート座標系へ変換する特殊なケースでは、僅かな最適化が行われている。探索の方向は、常に、上向きであることが保証されているので、再帰を必要とせず、また、僅かなテスト条件だけを必要とするより強固なアルゴリズムが得られる。さらに、変換アルゴリズムは、非常にスマートであるため冗長な変換を回避することができ、変換ツリー内の２個のノードの間の最短パスを常に辿るであろう。
【００７５】
本発明の別の局面は、ソース座標系におけるソース座標と、ターゲット座標系におけるターゲット座標の間の変換方法であって、この方法は、共通座標系から延び、少なくとも一つの介在中間変換系が間に存在するソース座標系及びターゲット座標系へ分岐する座標系変換ツリーの少なくとも一部分を定める手順を含む。座標変換は、好ましくは、ソース座標系から共通座標系へ延び、そして、ターゲット座標系へ延びる枝に沿ってソース座標系とターゲット座標系の間で実行される。座標は、好ましくは、少なくとも一つの隣接した座標系を用いて座標変換を実行するため、座標系毎に前後関係データが関連付けられる。
【００７６】
本発明の更なる局面は、上述のようにソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の変換をコンピュータに実現させるため、コンピュータ読み取り可能な命令が記録されたコンピュータ読み取り可能な記録媒体を提供することである。
【００７７】
本発明の更に別の局面は、図１３に示されるように、ソース座標系１０におけるソース座標での画像データをターゲット座標系２０におけるターゲット座標へ変換するプロセッサ１１２を含む装置１１０を提供することである。このプロセッサ１１２は、好ましくは、共通座標系２６から延び、少なくとも一つの介在中間変換系が間に存在するソース座標系１０及びターゲット２０座標系へ分岐する座標系変換ツリー２２の少なくとも一部分を定める手順を実行するアルゴリズムを備える。画像データの座標変換は、好ましくは、ソース座標系１０から共通座標系２６へ延び、そして、ターゲット座標系２０へ延びる枝に沿って、ソース座標とターゲット座標の間で行われる。
【００７８】
座標は、好ましくは、少なくとも一つの隣接した座標系を用いて座標変換を実行するため、座標系毎に前後関係データが関連付けられる。この装置１１０は、ターゲット座標系に変換された画像データを表示するディスプレイ１１４を含む。データ画像ポイントは、たとえば、衛星に取り付けられたカメラ１１６によって供給される。
【００７９】
上記説明及び添付図面に記載された教示の恩恵を受ける当業者は、本発明の多数の変形及び他の実施例を想到するであろう。したがって、本発明は、開示された特定の実施例に限定されることはなく、種々の変形及び実施例が請求項に係る発明の範囲に包摂されることが理解されるべきである。
【００８０】
ソース座標系におけるソース座標とターゲット座標系におけるターゲット座標の間の変換方法は、ソース座標系とターゲット座標系がルート座標系以外の共通座標系に連結されるように、ルート座標系から延び、ソース座標系及びターゲット座標系を含む複数の他の座標系へ分岐する座標系変換ツリーを定める手順を含む。座標変換は、ソース座標系から共通座標系へ至り、共通座標系に戻ることなくターゲット座標系へ至る枝に沿って、ソース座標値とターゲット座標値の間で実行される。隣接した座標系への変換が行えるように、前後関係データが座標に関連付けられる。座標変換は共通座標系に関して行われるので、分散座標系フレームワークがソース座標系とターゲット座標系の間で高信頼性の座標変換を行うため設けられる。新しい座標系は簡単にツリーに追加され得る。
【図面の簡単な説明】
【図１】  本発明によるソース座標系のソース座標とターゲット座標系のターゲット座標の間の変換方法を説明するフローチャートである。
【図２】  本発明による座標系変換ツリーの説明図である。
【図３】  本発明の方法を説明する座標系変換の説明図（その１）である。
【図４】  本発明の方法を説明する座標系変換の説明図（その２）である。
【図５】  本発明の方法を説明する座標系変換の説明図（その３）である。
【図６】  本発明の方法を説明する座標系変換の説明図（その４）である。
【図７】  図２とは別の座標系変換ツリーの説明図である。
【図８】  本発明によるCoordSysオブジェクトデータの内訳の説明図である。
【図９】  本発明によるＸＹ座標系クラスの静的な配置と相互関連性の説明図である。
【図１０】  本発明による座標系の個数に対する変換の数を表わすグラフである。
【図１１】  本発明によるCoordSys幾何学的オブジェクトデータの内訳の説明図である。
【図１２】  本発明による４個の座標系オブジェクトの動的な配置と相互関連性の説明図である。
【図１３】  本発明による装置のブロック図である。
【図１】
0004472229.tif 000012
【図２】
0004472229.tif 000013
【図３】
0004472229.tif 000014
【図４】
0004472229.tif 000015
【図５】
0004472229.tif 000016
【図６】
0004472229.tif 000017
【図７】
0004472229.tif 000018
【図８】
0004472229.tif 000019
【図９】
0004472229.tif 000020
【図１０】
0004472229.tif 000021
【図１１】
0004472229.tif 000022
【図１２】
0004472229.tif 000023
【図１３】
0004472229.tif 000024