2017-07-03 14 views
1

マイカメラが異なる解像度 1280持つ* 480 640 * 240 320 * 120C++ OpenCVの校正

I 1280の解像度を有するカメラを較正するOpencv3のアルゴリズムを使用しています* 480と私はこの解像度のカメラ行列(fx fy cx cy)と歪み行列(k1 k2 p1 p2 k3)を得ました。

しかし、私はこれらのカメラマトリックスと歪みマトリックスを使用して320 * 120の解像度でカメラを較正したいと思います。私は解像度1280 * 480のこれらの2つのマトリックスを320 * 120の解像度に適用する方法を知らない。 PSイメージが小さすぎてOpencvのアルゴリズムがチェス盤を見つけることができないため、私は320 * 120の解像度でカメラを較正していません。

カメラのマトリックス(fx fy cx cy)と歪みマトリックス(k1 k2 p1 p2 k3)が解像度1280 * 480を320 * 120に変更すると、どのように変化するか知りたいと思います。

のOpenCVのアルゴリズムは、次のいずれかです。 http://docs.opencv.org/3.0-beta/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

+0

1)1280x480の較正パラメータ2)1280x480の歪みのない画像3)320x120の同じシーンの未保存の画像。 –

+0

[これは関連しているようです](http://ksimek.github.io/2013/08/13/intrinsic/)私はこれを完全には検証していませんが、線形にスケーリングする必要があると思われますので、 'fx'、' fy'、 'cx'、' cy'を4で除算しますオリジナル)。 –

+0

十分な答えを書くにはもう少し手間がかかりますが、考え方は次のとおりです。カメラのビンが2x2と4x4と低い解像度を得ると仮定すると、FOVは同じままであり、(仮想)ピクセルはより大きい。 'cx'と' cy'は中心点の座標です - 線形スケーリングが適用されます。 | 'fx'と' fy'はピクセル単位の焦点距離です - 同じ原則が両方に当てはまるので、 'fx'に固執しましょう。実際の焦点距離に対する関係は、Fx = fx *(W/w)であり、ここで「W」はセンサ幅であり、「w」はセンサ幅(ピクセル)である。 ...(cont) –

答えて

0

あなたは、歪み行列を変更する必要はありません。カメラマトリックス(fx, fy, cx, cyを含むもの)に関しては、あなたの場合は4で割る必要があります。一般式は以下のとおりです。

fx' = (dimx'/dimx) * fx 
fy' = (dimy'/dimy) * fy 

fx'があなたの新しい解決のための値であり、fxあなたはすでにあなたの元の解像度を持っている値であり、dimx'はx軸に沿った新しい解像度で、dimxはオリジナルのものです。 fyも同様です。

cxおよびcyは、これらすべての値がピクセル座標で表されるため、同様に計算されます。 OpenCV docs 1として

カメラ行列について:カメラからの画像はファクタによってスケーリングされている場合

、これら パラメータの全ては、同じ によって(それぞれ、分割/乗算)スケーリングされなければなりません因子。

+0

あなたの答えをありがとう。私は解像度を変更するときにカメラのマトリックスが変化するかどうかを知りたいですか?つまり、fx、fy、cx、cyを意味します。あなたの答えを待っている。 – Meng

+0

@KjMag質問を誤解しているようです。彼は同じカメラについて話しているだけで、別の解像度に設定しています。これは、すべての光学系が同じであり、解像度の比率が与えられていることを意味します。私は、カメラが2x2と4x4のビニングを行う可能性が高いと言います。 |カメラのマトリックスについて議論するチュートリアルでは、「使用するカメラ解像度に関係なく歪み係数は同じですが、較正解像度からの現在の解像度に合わせて調整する必要があります。 IMHOこれはOPが好奇心をそそるものです。 –

+0

@DanMašekありがとう。同じ解像度のカメラについて話します。私が理解していないのは、使用されるカメラ解像度に関係なく歪み係数は同じですが、較正解像度からの現在の解像度に合わせてスケーリングする必要があります。 "どのようにカメラfx fy cx cyの行列と歪み行列k1 k2 p1 p2 k3を変更することができます。 – Meng

関連する問題