Я пытаюсь выполнить калибровку камеры Kinect и внешней камеры с помощью Emgu/OpenCV. Я застрял, и я был бы очень признателен за любую помощь.Исправление некалиброванных камер через фундаментальную матрицу
Я выбрал это через фундаментальную матрицу, то есть эпиполярную геометрию. Но результат не такой, как я ожидал. Изображения результатов черные или вообще не имеют смысла. Mapx и точки Mapy, как правило, равны бесконечному или бесконечному, или все равны 0,00, и редко имеют регулярные значения.
Это, как я пытался сделать выпрямление:
1.) точек Поиск изображения получить два массива точек изображения (по одному для каждой камеры) из набора изображений. Я сделал это с помощью функции шахматной доски и FindChessboardCorners.
2.) Найти фундаментальную матрицу
CvInvoke.cvFindFundamentalMat(points1Matrix, points2Matrix,
_fundamentalMatrix.Ptr, CV_FM.CV_FM_RANSAC,1.0, 0.99, IntPtr.Zero);
ли я пройти все набранные баллы от всего набора изображений, или просто из двух изображений, пытаясь исправить?
3.) матрицы Поиск гомография
CvInvoke.cvStereoRectifyUncalibrated(points11Matrix, points21Matrix,
_fundamentalMatrix.Ptr, Size, h1.Ptr, h2.Ptr, threshold);
4.) Get MapX и мапы
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) ;
У меня есть проблема здесь ... так как я не использую откалиброван изображения, что такое матрица камеры и коэффициенты искажения? Как я могу получить это из фундаментальных матричных или гомографических матриц?
5.) Переоформления
CvInvoke.cvRemap(src.Ptr, destRight.Ptr, mapxRight, mapyRight,
(int)INTER.CV_INTER_LINEAR, new MCvScalar(255));
И это не возвращение хорошего результата. Буду признателен, если кто-нибудь скажет мне, что я делаю неправильно.
У меня есть набор из 25 пар изображений и размер рисунка шахматной доски 9x6.