4. カメラキャリブレーションソリューション

1. ホモグラフィー行列

カメラ キャリブレーション ソリューションを学ぶ前に、まずホモグラフィー行列という概念を理解します。ホモグラフィー行列は、ある平面から別の平面への投影マッピングとして定義されるため、世界座標系の物体平面と結像平面の間のマッピングを理解できます。ホモグラフィー関係。カメラのキャリブレーションでは一般にキャリブレーション ボードを使用してキャリブレーションを行うことが知られているため、世界座標系の平面はキャリブレーション ボードの平面になります。

キャリブレーション プレート平面上の点を仮定するQ=[X,Y,Z,1]^{T}と、結像面にマッピングされた点は でありq=[x,y,1]^{T}、この 2 つの間にはホモグラフィー関係が満たされます。q=s\cdot H\cdot Qここで、H はホモグラフィー行列、s はスケール係数、ホモグラフィー行列には 8 つのパラメーターがあります。つまり、8 つのパラメータを解く必要があるため、8 つの方程式が必要であり、8 つの方程式は 4 つの点を通じて取得できるため、ホモグラフィー関係を解くには少なくとも 4 つの点が必要です。

opencv はインターフェイスを提供します。 fingHomography は、ホモグラフィー行列を解くために使用されます。

2. 基本方程式

2.1 基本的な変数

m=[u,v]^{T}ワールド座標系 の 3 次元空間点に対応するピクセル座標系 の点を定義しますM= [X,Y,Z]^{T}。計算の便宜上、1 を追加して拡張ベクトルを取得します\widetilde{m}=[u,v,1]^{T}\widetilde{M}=[X,Y,Z,1]^{T}前で説明した小穴イメージング原理に従って、この章では、3 次元点と投影点の関係は次のように説明できます。s\ワイドティルデ{m}=A[R,t]\ワイドティルデ{M}ここで、s はスケール係数、[R,t] は外部パラメータの回転および平行移動行列です。A は内部参照です。

A = \begin{bmatrix} f_{x} &\gamma &u_{0} \\ 0& f_{y} &v_{0} \\ 0&0 &1 \end{bmatrix}

\ガンマこれは 2 つの座標系の傾き角ですが、デフォルトでは 2 つの座標軸は垂直になっていますが、実際には垂直ではない可能性があるため、上では触れていません。

2.2 カメラのキャリブレーション

キャリブレーション ボードの平面ワールド座標系の z 座標が 0、R の i 番目の列が であると仮定するとr_{i}、次のようになります。

s\begin{bmatrix} u\\v \\ 1 \end{bmatrix}=A\begin{bmatrix} r_{1} & r_{2} &r_{3} &t \end{bmatrix}\begin{bmatrix} X \\ Y\\ 0\\ 1 \end{bmatrix}=A\begin{bmatrix} r_{1} &r_{2} &t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 1 \end{ b行列}

キャリブレーション平面とイメージング平面の間のホモグラフィー関係: s\ワイドティルダ{m}=H\ワイドティルダ{M}、  H =A\begin{bmatrix} r_{1} & r_{2} &t \end{bmatrix}.\

前に述べたように、2 つの平面上の複数の点を通じてホモグラフィー行列 H を解くことができます。

仮定するとH=\begin{bmatrix} h_{1} & h_{2} & h_{3} \end{bmatrix}\ライトアロー\begin{bmatrix} h_{1} &h_{2} &h_{3} \end{bmatrix} = \lambda A\begin{bmatrix} r_{1}& r_{2} &t \end{bmatrix}

上記の式によれば、次のことが得られます。

\left\{\begin{行列} h_{1}=\lambda \cdot A\cdot r_{1}\\ h_{2}=\lambda \cdot A\cdot r_{2} \\ h_{3}= \lambda \cdot A\cdot \end{行列}\right。

したがって:

\left\{\begin{行列} r_{1}=\frac{1}{\lambda }\cdot A^{-1}\cdot h_{1} \\ r_{2}=\frac{1}{ \lambda }\cdot A^{-1}\cdot h_{2} \\ t=\frac{1}{\lambda }\cdot A^{-1}\cdot h_{3} \end{行列}\右。

カメラの画像処理には 2 つの制約があります。

1. 回転ベクトルはr_{1}、r_{2}それぞれ x 軸と y 軸の周りの回転を表すため、これら 2 つのベクトルは直交し、次のようになります。

r_{1}^{T}r_{2}=0、 となることによって:h_{1}^{T}A^{-T}A^{-1}h_{2}=0

2. 回転ベクトルは単位ベクトルであるため、次のものがあります。

r_{1}^{T}r_{1}=r_{2}^{T}r_{2}そして\左 |  \左 |r_{1} \右 |  \右 |=\左 |  \左 |r_{2} \右 |  \右 |

そして、次のものを取得します。

h_{1}^{T}A^{-T}A^{-1}h_{1}=h_{2}^{T}A^{-T}A^{-1}h_{2}

3. クローズドソリューション

カメラ画像の 2 つの制約については上で説明しました。

次に中間変数を定義しますB= A^{-T}AA^{-1}=\begin{bmatrix} B_{11} &B_{12} &B_{13} \\ B_{21}& B_{22} &B_{23} \\ B_ {31}& B_{32} &B_{33} \end{bmatrix}=\begin{bmatrix} \frac{1}{f_{x}^{2}} & -\frac{\gamma }{f_{x }^{2}f_{y}} & \frac{v_{0}\gamma -u_{0}f_{y}}{f_{x}^{2}f_{y}}\\ -\frac{ \gamma }{f_{x}^{2}f_{y}} &\frac{\gamma ^{2}}{f_{x}^{2}f_{y}^2} +\frac{1} {f_{y}^2} & -\frac{\gamma (v_{0}\gamma -u_{0}f_{y}))}{f_{x}^{2}f_{y}^2} -\frac{v_{0}}{f_{y}^2}\\ \frac{v_{0}\gamma -u_{0}f_{y}}{f_{x}^{2}f_{y }}& -\frac{\gamma (v_{0}\gamma -u_{0}f_{y}))}{f_{x}^{2}f_{y}^2}-\frac{v_{ 0}}{f_{y}^2} & -\frac{(v_{0}\gamma -u_{0}f_{y}))}{f_{x}^{2}f_{y}^2 }+\frac{v_{0}^2}{f_{y}^2}+1 \end{bmatrix}

B は対称行列なので、解決する必要があるパラメーターは 6 つだけです。b=\begin{bmatrix} B_{11} & B_{12} & B_{22} & B_{13} & B_{23} &B_{33} \end{bmatrix}

ホモグラフィー行列の列ベクトルを分解します。h_{i}=\begin{bmatrix} h_{i1} &h_{i2} & h_{i3} \end{bmatrix}

上記の式に代入すると、次のようになります。h_{i}^{T}Bh_{j}=v_{ij}b

v_{ij}=\begin{bmatrix} h_{i1}h_{j1}& h_{i1}h_{j2}+h_{i2}h_{j1} &h_{i2}h_{j2} &h_{i3}h_{ j1}+h_{i1}h_{j3} &h_{i3}h_{j2}+h_{i2}h_{j3} & h_{i3}h_{j3} \end{bmatrix}

上記の式に代入すると、次のようになります。

\begin{bmatrix} v_{12}^{T}\\ (v_{11}-v_{22})^{T}) \end{bmatrix}b=0

キャリブレーション ボードの N 枚の写真を撮ることで、上記の N 個の方程式をまとめることができ、次の結果を得ることができます。Vb=0

V は 2n*6 行列であり、b には 6 つのパラメータがあり、b は方程式を解くことで計算できます。b には 6 つのパラメータがあるため、少なくとも 3 つのホモグラフィ行列が必要です。つまり、少なくとも 3 つの異なる角度が必要です。キャリブレーションボードの写真を撮りました。

b を計算した後、カメラの内部パラメータを解決できます。

v_{0}=(B_{12}B_{13}-B_{11}B_{23})/(B_{11}B_{22}-B_{12}^{2})

\lambda =B_{33}-[B_{13}^2+v_{0}(B_{12}B_{13}-B_{11}B_{23})]/B_{11}

f_{x}=\sqrt{\lambda /B_{11}}

f_{y}=\sqrt{\lambda B_{11}/(B_{11}B_{22}-B_{12}^2)}

\gamma =-B_{12}f_{x^2}f_{y}/\lambda

u_{0}=\gamma v_{0}/f_{y}-B_{13}f_{x}^2/\lambda

回転 - 平行移動行列を計算します。\begin{bmatrix} h_{1} &h_{2} &h_{3} \end{bmatrix}=\lambda A\begin{bmatrix} r_{1} &r_{2} &t \end{bmatrix}次のようになります。

r_{1}=\lambda ^{-1}\cdot A^{-1}\cdot h_{1}

r_{2}=\lambda ^{-1}\cdot A^{-1}\cdot h_{2}

r_{3}=r_{1}\times r_{2}

t=\lambda ^{-1}\cdot A^{-1}\cdot h_{3}

4. 放射状歪みパラメータの解決

先ほど、放射状歪みモデルについて説明しました。

\left\{\begin{行列} x_{歪み} = x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6}))\ \ y_{歪んだ} = y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})) \end{行列}\right。

このうちr^{2}=x^{2}+y^{2}、放射状歪みでは通常、最初の 2 つの項目のみが考慮されます。

したがって:

\left\{\begin{行列} \widehat{x}=x+x[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2)] \\ \ワイドハット{y}=y+y[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2)] \end{行列}\right 。

ここで(x,y)、 は画像座標系における点の理想的な座標、つまり歪みのない座標、 は(\ワイドハット{x},\ワイドハット{y}) 画像座標系における実際の点の座標、つまり歪み後の座標です。

ピクセル座標系では:

\left\{\begin{行列} \widehat{u}=u+(u-u_{0})[k_{1}(x^2+y^2)+k_{2}(x^2+y^ 2)^2)]\\ \ワイドハット{v}=v+(v-v_{0})[k_{1}(x^2+y^2)+k_{2}(x^2+y^2) )^2)] \end{行列}\右。

ここで(う、う)、 はピクセル座標系における点の理想的な座標、つまり歪みのない座標であり、 は(\ワイドハット{u},\ワイドハット{v}) ピクセル座標系における実際の点の座標、つまり歪み後の座標です。

上記の方程式は行列形式で表されます。

\begin{bmatrix} (u-u_{0}(x^2+y^2) &(u-u_{0}(x^2+y^2)^2 \\ (v-v_{0}( x^2+y^2) & (v-v_{0}(x^2+y^2)^2 \end{bmatrix}\begin{bmatrix} k_{1}\\k_{2} \end{ bmatrix}=\begin{bmatrix} \widehat{u}-u\\ \widehat{v}-v \end{bmatrix}

このうち、( う、う)はカメラの内部パラメータと外部パラメータを解くことで求めることができ、(\ワイドハット{u},\ワイドハット{v})コーナー点は画像認識によって求めることができ、(x,y)についても同様である。

キャリブレーション ボードの n 枚の写真が撮影され、各写真に m 個のコーナー ポイントがあると仮定すると、2分方程式を取得して行列形式で記述することができます。

DK=d、でK=\begin{bmatrix} k_{1} &k_{2} \end{bmatrix}^{T}

 最小二乗法 (方程式の数が未知数よりも多い状況を解決するために使用されるデータの最適な一致を見つけるために二乗平均平方根誤差を最小限に抑える) に従って方程式を解くと、歪み係数は次のようになります。上の方程式に従って解かれます。

おすすめ

転載: blog.csdn.net/csucmee502/article/details/129880822