1

通常、私はこの種の matlab コードを使用して、参照点の単一セットで射影変換を行います。

fixedpoints = [0 0; 50 0; 50 100; 0 100];
movingpoints= [752 361; 888 361; 885 609; 736 609];
transformationtype='projective';
tform = fitgeotrans(movingpoints,fixedpoints,transformationtype);
Imagepr = imwarp(Image,tform);

今、私は何枚か (たとえば 10 枚) のごちゃごちゃした紙のシートを写した写真を持っています。それぞれのサイズは既知で、無地の大きなテーブルの上に置かれています。これらのシート間の距離は不明です。

したがって、射影変換行列を取得するために 10 個の 4 基準点セットがあり、後で 2 次元テーブル サーフェスの投影画像が得られます。

最適化された変換行列 (および後で投影された画像) を生成するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

2

この問題を次のように再定式化する必要があると感じています。同じサイズ*の長方形のシートが任意の位置に配置されたテーブルと、任意の位置にカメラで撮影された画像があります。テーブルの平面を画像に (またはその逆に) マッピングするホモグラフィック変換を計算する必要があります。すべてのシートの四隅の座標は画像ではわかっていますが、テーブルではわかっておらず、点の対応もありません。テーブルの基準座標系は任意です。

OPで示唆されているように、コーナーに「テーブル」座標を割り当てることで、シートごとに問題を個別に解決できます。方程式は線形です。(とにかく、シートの長辺と短辺を交換することで、2 つの解決策が可能です。)

シートの相対的な配置が不明であり、係数が無関係であるため、シートごとのさまざまなソリューションを組み合わせることは不可能のようです。

最初の解から始めて、最小二乗法を使用して解を改良し、既知の辺の長さと変換によって推定された辺の長さとの間の総不一致を最小限に抑えることを考えることができます。(既知の辺と対角線を使用できますが、これらの 6 つの要素の 1 つを他の 5 つの要素から導き出すことができます。向きのあいまいさは、矛盾が最小になる向きを取得することによって解決されます。)

残念ながら、方程式は適切ではなく、Levenberg-Marquardt または制約付き最小化 (スレッジ ハンマー) が必要です。

OPは優れた提案をしました。すべてのシートの投影問題を解決し、それぞれの不一致メトリックを計算し、不一致が最も少ないソリューションを維持します。これは、RANSAC を思い起こさせます。RANSAC では、ランダムな試行ではなく、徹底的な検索が行われます**。

このソリューションをさらに改善したい場合 (おそらく、すでにかなり優れたソリューションです)、シンプレックス (Nelder–Mead)、フックジーブス パターン、または逐次降下法などの導関数のない方法を考えて、不一致メトリックを改善しようとします。

少数の最適解を採用することには、係数に適用する増分の桁数を与えるという利点があります。「テーブル」の座標系が固定されていないため、さらに困難が生じます。ソリューションのドリフトを回避するには、リファレンス シートの隅までの距離などの制約を追加する必要があります。

※シートのサイズが異なる場合でも、シートの対応が分かれば同様の対応が可能です(正確な角の対応は不要です)。

**必要に応じて、ロバスト性を高めるために、最小化に異常値除去プロセスを統合できる必要があります。


画像への平面の射影は、ホモグラフィ関係によって記述されます。

X = (a x + b y + c) / (g x + h y + 1) 
Y = (d x + e y + f) / (g x + h y + 1)

不明なパラメーターは 8 つあり、それらを特定するには 4 つの点の対応が必要です。

これらの方程式は次のように簡単に線形化されます。

a x + b y + c                 - g X x - h X y = X
                d x + e y + f - g Y x - h Y y = Y
于 2016-01-28T13:40:07.597 に答える