MLエンジニアへの道 #62 - SfM

Last Edited: 6/16/2025

このブログ記事では、コンピュータビジョンにおけるSfMについて紹介します。

ML

前回の記事では、エピポーラ幾何に基づいて3Dの世界を理解するために2つの視点を持つことがいかに有用であるか、 また同時にどのような困難や限界に直面するかについて議論しました。これらの問題を軽減する方法として、 (より多くのカメラを導入したり、動くカメラで動画を撮影したりして)視点の数を増やすことで、 Structure from Motion(SfM)と呼ばれる技術を通じて3D シーンを理解しカメラパラメータを推定することを考えることができます。 そこで本記事では、SfMの基礎と、複数の視点を持つことが3D世界の理解をいかに向上させるかについて議論します。

アフィンSfM

まず始めに、SfM問題を正式に定義することができます。以下に示す一般的な設定では、カメラ投影行列MiM_iを持つmm台のカメラと、 すべてのカメラから見えると仮定されるシーン内のnn個の3D点XjX_jがあります。目的は、対応するすべての投影xijx_{ij}から、 シーンの3D点の構造(nn個の点XjX_j)とカメラの動き(mm個のカメラ投影MiM_i)の両方を復元することです。 SfM問題へのアプローチを理解するために、カメラが射影変換ではなくアフィン変換を行う、 より単純化された問題から取り組むことができます(アフィンカメラ)。

SfM

この単純化により、XXからxxへのアフィンカメラ変換は、ユークリッド座標を使用してxij=MiXj=[Aibi]Xjx_{ij}=M_iX_j=[A_i \quad b_i]X_jとして簡単に表現できます。 ここで、AA2×32 \times 3行列、bbは2Dベクトルです。したがって、カメラと点の未知数の数はそれぞれ8m88m-83n3nであり、 mnmn個の観測から得られる2mn2mn個の方程式でこれらを推定する必要があります。この未知数と方程式の数の関係(8m+3n8<2mn8m+3n-8 \lt 2mn)を使用して、 十分な観測または対応する投影があるかどうかを判断できます。

Tomasi-Kanade因子分解法

十分な数の観測から、正規化と因子分解を利用するTomasi-Kanade因子分解法を使用して、構造と動きに関する情報を推定できます。 この手法は、まず各カメラの投影の重心をxˉi=1nk=1nxik\bar{x}_i=\frac{1}{n}\sum_{k=1}^{n} x_{ik}として決定し、 x^ij=xijxˉi\hat{x}_{ij}=x_{ij}-\bar{x}_iを使用して投影を正規化します。これは以下のようにさらに導出できます。

x^ij=xijxˉi=AiXj+bi1nk=1nAiXk1nk=1nbi=Ai(Xj1nk=1nXk)=Ai(XjXˉ)=AiXj^ \hat{x}_{ij}=x_{ij}-\bar{x}_i = A_iX_j+b_i-\frac{1}{n}\sum_{k=1}^{n} A_iX_k -\frac{1}{n}\sum_{k=1}^{n} b_i \\ = A_i(X_j-\frac{1}{n}\sum_{k=1}^{n} X_k) = A_i(X_j-\bar{X}) = A_i\hat{X_j}

ここで、Xˉ\bar{X}は3D点の重心です。Xˉ\bar{X}を世界参照系の中心(0,0,0)T(0,0,0)^Tとして定義すると、Xj^=Xj\hat{X_j}=X_jと設定でき、 投影と構造・動きの関係をx^ij=AiXj\hat{x}_{ij}=A_iX_jとして単純化できます。次に、正規化された投影の集合を含む2m×n2m \times n測定行列DDを定義し (各投影が2Dベクトルであるため2m2mとなる)、関係をD=AX=MSD=AX=MSとして書き換えることができます。ここで、AAはすべてのAiA_iを行として含み、 X=SX=SはすべてのXjX_jを列として含みます。

DD2m×32m \times 3行列と3×n3 \times n行列の積として表現されるため、階数3を持ち、SVDによる階数3近似U3Σ3V3TU_3\Sigma_3V_3^Tを実行することで構造と動きSSMMを推定するために使用できます (ここでM=U3Σ3M=U_3\sqrt{\Sigma_3}S=Σ3V3TS=\sqrt{\Sigma_3}V_3^T)。しかし、この推定にはアフィン曖昧性があります。 なぜなら、任意の可逆アフィン変換(回転、平行移動、スケーリング、せん断)をD=(MA1)(AS)D=(MA^{-1})(AS)のように適用しても、同じDDが得られるからです。

透視SfM

カメラが射影変換を行う実世界のシナリオでは、同次座標におけるx=MXx = MXを用いて因数分解を実行できます。 これは、11m+3n1511m + 3n - 15個の未知数(MMは11個の未知数を持つため)を2mn2mn個の方程式で解くのに十分な観測に基づいています。 しかし、アフィンSfMと同様に、任意の可逆射影変換HHMMSSに適用できるため、推定は本質的に透視曖昧性の影響を受けます。

透視曖昧性の影響は避けられないながらも、エピポーラ幾何学に基づく代数的アプローチを使用して、十分な観測からMMSSを推定することもできます (エピポーラ幾何学について不明な場合は、記事MLエンジニアへの道 #61 - エピポーラ幾何を確認することをお勧めします)。 まず、透視曖昧性を考慮するために、M~1=M1H1=[I0]\tilde{M}_1 = M_1H^{-1} = [I \quad 0]M~2=M2H1=[Ab]\tilde{M}_2 = M_2H^{-1} = [A \quad b]X~=HX\tilde{X} = HXと表現できます。 次に、射影、構造、運動の関係をx=M~1X~=[I0]X~x = \tilde{M}_1\tilde{X} = [I \quad 0]\tilde{X}およびx=M~2X~=[Ab]X~x' = \tilde{M}_2\tilde{X} = [A \quad b]\tilde{X}として確立できます。

ここで、xx'をさらに導出してx=A[I0]X~+b=Ax+bx' = A[I \quad 0]\tilde{X} + b = Ax + bを得ることができ、これは対応する射影間の関係を表現します。 xx'bbの両方がエピポーラ平面上にあるため、それらの外積x×b=(Ax+b)×b=Ax×bx' \times b = (Ax + b) \times b = Ax \times bを取ることができ、 これはエピポーラ平面に垂直なベクトルを生成します。ここで、xx'Ax×bAx \times bに垂直なので、xT(b×Ax)=0x'^T(b \times Ax) = 0を確立できます。 外積の行列乗算表現を使用すると、xT[b×]Ax=0x'^T[b_{\times}]Ax = 0に到達し、pTFp=0p'^TFp = 0からF=[b×]AF = [b_{\times}]Aとなります。

上記から、A=[b×]FA = -[b_{\times}]FおよびM~2=[b×]Fb\tilde{M}_2 = -[b_{\times}]F \quad bを得ることができます。 さらに、bbはエピポーラ平面上にあるため、Fb=(Ax+b)b=0Fb = (Ax + b)b = 0となり、bbはエピポールeeであり、M~2=[e×]Fe\tilde{M}_2 = -[e_{\times}]F \quad eとなります。 前回の記事で扱った8点アルゴリズムを使用してFFの推定値を得ることができ、これによりM~2\tilde{M}_2の推定値を得ることができます。 最後に、これを他のすべてのカメラとのペアで実行してすべてのM~\tilde{M}の推定値を得ることができ、三角測量を使用してX~\tilde{X}を推定できます。

バンドル調整と自己キャリブレーション

上のセクションでは、一般的なケースにおいて、SVDを用いた因数分解アプローチとFFと三角測量を使用した代数的アプローチを使用して、 透視曖昧性を持つ構造と運動の推定値を得る方法を見ました。しかし、両方とも固有の制限があります。因数分解アプローチは、 すべての点がすべてのカメラに見えることを仮定しますが、これは遮蔽のためにしばしば真ではありません。 また、代数的アプローチは、カメラ視点のペアのみを処理でき、すべてのカメラの推定値を最適化することはできません。

これらの制限に対処するために、しばしばバンドル調整を使用します。これは、誤差E(M,X)=i=1mj=1nD(xij,MiXj)2E(M, X) = \sum_{i=1}^m \sum_{j=1}^n D(x_{ij}, M_iX_j)^2を最小化することにより、 (因数分解および/または代数的アプローチ後の)推定値を改良する非線形手法を適用するものです。この手法により、 最適化中により多くの視点が考慮されるため(これにより各オクルージョンと誤差の影響がある程度軽減される)、より良い推定値に到達できます。 しかし、バンドル調整後でも、対応問題の困難さと制限、および透視曖昧性により、推定値の品質に制約があります。

曖昧性に関しては、単一視点測量制約(水平線)やその他のアプローチを使用して実現できる自己キャリブレーションを通じてある程度解決できます。 自己キャリブレーションにより、カメラ射影行列MMの曖昧性を軽減できるため、バンドル調整中に透視(またはアフィン)曖昧性を類似曖昧性(回転、平行移動、スケーリング)に軽減できます。 これにより、3Dオブジェクトと3Dシーンの形状をより明確に理解できます(3D再構成に有用)。しかし、キャリブレーションされたカメラでも類似曖昧性が存在することは、 任意の数の画像からオブジェクトの絶対スケールと位置を知ることが単純に不可能であるという固有の制限を示しています。

この記事や以前の記事で議論したように、三角測量と視差を使用してオブジェクトの相対的な深度を見つけることはできますが、 さらなる仮定(オブジェクトサイズの経験則に基づく予測)を行い、より多くのデータ(世界参照システムにおける既知の位置を持つ点を使用したキャリブレーション)を収集することなしに、 それらの絶対スケールと位置を見つけることはできません。私たちの視覚のシステムは、これらすべてのプロセス (SfM、経験則に基づく予測と私たちの手のような参照点を使用したキャリブレーションによるオブジェクトスケールのある程度の曖昧性解消)を実行して、 絶対スケールと位置を推定している可能性が高いです。

結論

この記事では、複数視点を用いたアフィンおよび透視SfMと、それらがどのように1つまたは2つの視点のみを持つ場合よりも構造と運動のより良い推定値を導くかを紹介しました。 また、推定品質に影響する対応問題の既知の困難さと制限に加えて、類似曖昧性によってもたらされる固有の制限の存在を明らかにしました。 最後に、複雑な処理、推論、参照点(画像を見る際にはアクセスできない)を通じて、実世界で我々がこれらにどのように対処している可能性があるかを分析しました。 次の記事では、これまで議論した制限の一部を軽減することを目的とした代替システムについて議論します。

リソース