2011-07-08 13 views
0

私は、A *アルゴリズム(Thanks, Patrick Lester, for a great tutorial)を使ってパスを見つけることに関わるプロジェクトに取り組んでいます。一連のPNGマップが提供され、関心のあるポイントはWebサービスから受け取った座標で指定され、問題はそれらのポイント間のパスを表示することです。いろいろなレベルが同じ座標系に位置していなかったので、最初は少し災害だったので、あるレベルから別のレベルに移動すると、zを変更するだけではなく、x座標とy座標の意図しない移動が発生しました。レベルが完全に奇妙に変化し、いくつかの非常に最適ではないパスが生成されます。イメージと変換されたイメージを指定して変換行列を導出しますか?

これを修正するには、パス計算をレベル別ソリューションに分割して、中間レベルの非計算ステップとして新しいレベルに移行する必要がありました。代わりに、すべてのレベルマップを1つの座標系の一部にすることで、あるレベルのリフトを見ると、同じx座標とy座標で到達するすべてのレベルにリフトが表示されるようにしました。

問題は、元のマップで使用されている関心のある点の座標だけです。これらの座標は、新しいマップ上で意味のあるものとは一致しません。パスの開始点と終了点がマップシステムで正しくプロットされていないため、システム全体がうまく機能していると確信しています。

古いマップから新しいマップ(すべて1座標空間にある)を取得するには、それぞれ単純かつ反復可能な方法で変換されました。私が座標を取得し、それが参照するマップに適用されたのと同じ変換を適用すると、すべてがうまくいくとわかります。マップは回転、サイズ変更、翻訳されます。

与えられた画像と結果の変換画像には、変換行列を導き出す方法がありますか? iPhoneプロジェクトなので、理想的には私はCGAffineTransformを探しています。マップごとに古いマップを再度操作して新しいマップを取得し、変換を記録することができましたが、ここで後方に作業する方法があるかどうか不思議です。

(読者 - あなたがタグを助けることができるならば、この問題はもっと良い、それは少し私のエリアの外にいてください)

+0

変換はアフィン1であるため、厳密な意味での行列ではありません –

+0

変換の式を書き留めることができるように、元のPOIと変換されたPOIがあるかどうかはわかりません。 –

+0

元の地図の座標系にPOIを持つ。私は元のマップだけでなく、変換されたマップを持っています。私はPOIに適用して新しいマップの座標系に変換することができるように、元々のマップと変換されたマップ(主に学術的関心からのもの)を使用して変換を導き出すことを望んでいます。変換を導出するならば、古いマップと新しい(変換された)マップの両方から任意のPOIを取得できます。 –

答えて

1

変換を見つけるには、パラメータの数に等しいポイント座標(元と変換済み)の最小値が必要です。

完全な幾何学的エンティティではなく画像で作業している場合は、Least Squaresの計算がはるかに優れています。より多くの点を使用することで、空間量子化(つまりピクセル)によって引き起こされる誤差を減らすことができます。

"fit affine transformation least squares"の場合は、this oneを含むこの目的のためのいくつかの関数のコードをPythonで見つけることができます。

HTH!

0

私はあなたの質問を読んですくい取る - 申し訳ありません!しかし、タイトルと数学のちょっとしたことから、道があるはずです。いくつかの行列代数を使用して:

xA = B 

//Where A is the original image, B is the transform, and x is the transform matrix. 
//Now to find x: 

x = B(A^-1) 

つまり、あなたがXを見つけることができるようになりますAの逆数によって両側を乗じ、変換行列は、(逆行列のhere以上を参照してください)。

これをCGAffineTransformにどのように適用するか、またはあなたのケースでイメージの逆を見つける方法は、あまりよく分かりません。しかし、上記の数学は、あなたが求めるものは間違いなく実行可能であることを示しています。お役に立てれば!

+1

OPには、アフィン変換ではなく、Affine変換が必要です。類似していますが、アフィン変換による数学は、線形の数学と同様にきれいではありません。 http://en.wikipedia.org/wiki/Affine_transformation –

+0

@belisarius私を訂正してくれてありがとう - 私はそれが事実であることを知らなかった! –

関連する問題