私はEmin/OpenCVを使ってKinectカメラと外部カメラの校正をしようとしています。 私は立ち往生しており、本当に助けに感謝します。基本マトリックスを介した未校正カメラの修正
私は基本行列、すなわちエピポーラ幾何によってこれを選択しました。 しかし、結果は私が期待したとおりではありません。結果画像は黒色であり、全く意味がない。 MapxポイントとMapyポイントは、通常、すべて無限または無限に等しいか、またはすべてが0.00に等しく、まれに通常の値を持ちます。
これは私が整流を行うことを試みた方法です:
1)検索画像ポイントは、画像のセットから画像ポイント(すべてのカメラのための1)の二つの配列を取得します。私はチェス盤とFindChessboardCorners機能でこれをやった。
2)基礎行列検索
CvInvoke.cvFindFundamentalMat(points1Matrix, points2Matrix,
_fundamentalMatrix.Ptr, CV_FM.CV_FM_RANSAC,1.0, 0.99, IntPtr.Zero);
私は、画像の、あるいは単に是正しようとする二つの画像から、セット全体から収集されたすべてのポイントを通過していますか?
3)私はここに問題を抱えている...私はキャリブレーションを使用していないので、mapxとmapy
double scale = 0.02;
CvInvoke.cvInvert(_M1.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU);
CvInvoke.cvMul(_H1.Ptr, _M1.Ptr, _R1.Ptr,scale);
CvInvoke.cvMul(_iM.Ptr, _R1.Ptr, _R1.Ptr, scale);
CvInvoke.cvInvert(_M2.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU);
CvInvoke.cvMul(_H2.Ptr, _M2.Ptr, _R2.Ptr, scale);
CvInvoke.cvMul(_iM.Ptr, _R2.Ptr, _R2.Ptr, scale);
CvInvoke.cvInitUndistortRectifyMap(_M1.Ptr,_D1.Ptr, _R1.Ptr, _M1.Ptr,
mapxLeft.Ptr, mapyLeft.Ptr) ;
をゲット)ホモグラフィ行列に
CvInvoke.cvStereoRectifyUncalibrated(points11Matrix, points21Matrix,
_fundamentalMatrix.Ptr, Size, h1.Ptr, h2.Ptr, threshold);
4.を探します画像、カメラマトリックスと歪み係数は何ですか?どのように基本行列またはホモグラフィ行列からそれを得ることができますか?
5)リマップ
CvInvoke.cvRemap(src.Ptr, destRight.Ptr, mapxRight, mapyRight,
(int)INTER.CV_INTER_LINEAR, new MCvScalar(255));
そして、これは良い結果を返すことはありません。誰かが私に何が間違っているか教えてもらえればと思う。
私は25組の画像とチェス盤パターンのサイズが9x6です。