1

射影変換を行うコードを書こうとしていますが、4 つ以上の重要なポイントがあります。この役立つガイドを見つけましたが、4 つの参照点を使用しています https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript

私は、matlab がそれを処理する関数 tcp2form を使用していることを知っていますが、これまでのところ方法を見つけていません。

その方法について、誰かが私にいくつかのガイダンスを与えることができますか? (最小二乗) を使用して方程式を解くことはできますが、3*3 より大きい行列があり、同次座標を乗算できないため、行き詰まっています。

ありがとう

4

1 に答える 1

0

コントロール ポイントが 5 つ以上ある場合は、過決定方程式系になります。考えられるシナリオは 2 つあります。あなたのポイントはすべて同じ変換と互換性があります。その場合、任意の 4 つのポイントを使用でき、残りは変換に正確に一致します。少なくとも理論上は。数値の安定性のために、共線から遠く離れたポイントを選択することをお勧めします。

または、ポイントのすべてが単一の射影変換と互換性があるわけではありません。この場合、期待できるのは近似値だけです。最良の概算が必要な場合は、「最良」が何を意味するか、つまり何らかのエラー測定値について、より具体的にする必要があります。通常、多くの恣意的な決定が含まれるため、射影セットアップで物事を測定することは本質的に注意が必要です。

試してみることができるのは、1 つのマトリックス エントリ (たとえば、右下の 1 対 1) を修正し、残りの 8 つの座標の条件を線形方程式のシステムとして記述し、最小二乗近似を実行することです。しかし、行列の代表の選択 (つまり、ここで 1 つのエントリを修正) は最小二乗誤差の測定に影響しますが、幾何学的意味には影響しないため、これはかなり恣意的な選択です。目的の行列の右下のエントリがたまたまゼロになると、オーバーフローのために計算で数値の問題が発生します。

于 2015-08-28T12:59:00.530 に答える