Перейти к содержимому
Compvision.ru

aresnv

Пользователи
  • Количество публикаций

    7
  • Зарегистрирован

  • Посещение

Репутация

1 Новичек

О aresnv

  • Звание
    Новичок
  1. Калибровка камеры для Android

    Спасибо за наводку Вычислил сдвиг и поворот из существенной матрицы с помощью 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мм. Как это можно объяснить?
  2. Калибровка камеры для Android

    Спасибо за ответ, но на вход этой функции нужно передать вектор вращения, который можно было бы посчитать с помощью solvePnP, но для этого нужны координаты точек объекта. Они не известны. Единственный вариант, это извлечь из вещественной матрицы. С одной стороны E=[tx]*R с другой стороны E=K*F*K. Получаем, что K*F*K = [tx]*R. А вот как дальше- не знаю
  3. Калибровка камеры для Android

    После калибровки камеры (беру оттуда только внутринние параметры. внешние считаю не известными, потому что применяться будет для других снимков) и нахождения фундаментальной матрицы, расчитал вещественную матрицу E= K*F*K. Есть ли в OpenCV функция для расчета матриц вращения и сдвига из вещественной матрицы? (нужно в дальнейшем для расчета матриц проэкции и использования их в функции triangulatePoints()).
  4. Калибровка камеры для Android

    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 Стало гораздо больше похоже на правду! Спасибо! Подскажите пожалуйста, какого порядка значения дисторсии, вращения и сдвига примерно должны быть?
  5. Калибровка камеры для Android

    Никто не прокоментирует результаты? Может я просто не те значения из матриц достаю ?
  6. Доброго времени суток! Пишу программу для калибровки камеры с использованием шахматной доски под 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
  7. openCV + Android

    Android и Java 1.7 не дружат. Используйте Java 1.6
×