aresnv
Пользователи-
Количество публикаций
7 -
Зарегистрирован
-
Посещение
Репутация
1 НовичекО aresnv
-
Звание
Новичок
-
Спасибо за наводку Вычислил сдвиг и поворот из существенной матрицы с помощью SVD разложения. Затем с помощью функции triangulatePoints() получил 4-х мерные координаты в 3D пространстве. Первые 3 разделил на 4-ю координату, чтобы уйти от однородных координат, и получил для всех точек Z- координату равной единице. Я предполагал, что Z координата покажет мне насколько точка удалена от камеры, поэтому не может быть равной для ВСЕХ точек. Если сравнивать координаты на изображении и те, которые я получил в 3D, то первые всегда меньше вторых ровно в 2 раза... Например: ImagePoint №257: (336.819091796875, 236.49000549316406) ObjectPoint №257: (673.6381835937501, 472.98001098632824, 1.0) Где я мог ошибиться или как правильно интерпретировать полученые результаты? одним из параметров функции calibrationMatrixValues() является фокусное расстояние в миллиметрах. для различных разрешений фотографий (640*480, 1600*1200, 2560*1920) получаю соответсвенно 4923.64; 6857.63 и 8965.34 а в свойствах самих фотографий стоит всегда 4мм. Как это можно объяснить?
-
Спасибо за ответ, но на вход этой функции нужно передать вектор вращения, который можно было бы посчитать с помощью solvePnP, но для этого нужны координаты точек объекта. Они не известны. Единственный вариант, это извлечь из вещественной матрицы. С одной стороны E=[tx]*R с другой стороны E=K*F*K. Получаем, что K*F*K = [tx]*R. А вот как дальше- не знаю
-
После калибровки камеры (беру оттуда только внутринние параметры. внешние считаю не известными, потому что применяться будет для других снимков) и нахождения фундаментальной матрицы, расчитал вещественную матрицу E= K*F*K. Есть ли в OpenCV функция для расчета матриц вращения и сдвига из вещественной матрицы? (нужно в дальнейшем для расчета матриц проэкции и использования их в функции triangulatePoints()).
-
image_points это результат функции findChessboardCorners, судя по картикам которые рисует drawChessboardCorners доска распознается хорошо. Размер внешнего массива совпадает с количеством снимков доски, внутринние массивы отображают количество детектированых точек. object_points так же имеет длину совпадающую с количеством снимков и внутринние массивы с количесвтом детектированых точек. точки описываются 3 координатами Х = номер точки / номер квадрата); Y = номер точки % номер квадрата); Z = 0.0f; Поставил флаг CV_CALIB_FIX_ASPECT_RATIO получил следующие результаты: (в качестве эксперимента размер фотографий был выбран 320*240) Distor= 035.255336901634 R= 0.5826785808607036 T= 3.969967429365635 Fx= 4923.640688437316 Fy= 4923.640688437316 Cx= 107.38375464884622 Cy= 163.25697047296157 Стало гораздо больше похоже на правду! Спасибо! Подскажите пожалуйста, какого порядка значения дисторсии, вращения и сдвига примерно должны быть?
-
Никто не прокоментирует результаты? Может я просто не те значения из матриц достаю ?
-
Доброго времени суток! Пишу программу для калибровки камеры с использованием шахматной доски под Android. Получаю примерно следующие результаты: DistorCoeff= 0-2.74600062551539E-8 R= 1.8985174637828507E-4 T= 9.470996538536085 Fx= 0.9999999999998178 Fy= 0.9999999999998863 Cx= 0.9999999999999993 Cy= 0.9999999999999994 На мой взгляд, результаты слегка необычные кто нибудь может объяснить в чем дело? прилагаю файл с кодом Спасибо! Calibration.txt
-
Android и Java 1.7 не дружат. Используйте Java 1.6