Калибровка камеры и коррекция дисторсии
В случае если камера передает кадры с дисторсионным искажением, необходимо провести коррекцию дисторсии. Для коррекции потребуется выполнить калибровку камеры, т.е. определить ее внутренние и внешние параметры.
Калибровка камеры
Для проведения калибровки следуйте инструкциям ниже:
Перед калибровкой необходимо распечатать калибровочный шаблон и закрепить его на плоской поверхности, желательно черного цвета.
Существует три вида калибровочных шаблонов:
- asymmetric circles grid pattern (рекомендован к использованию)
- chessboard pattern
- circles grid pattern
Создайте объект
CameraCalibrator
с помощью методаFacerecService.createCameraCalibrator
.Выполните инициализацию объекта
CameraCalibrator
, вызвав методCameraCalibrator.initCalibration
.Сделайте снимки калибровочного шаблона в различных позициях и ориентациях с помощью камеры, которую нужно скалибровать, с передачей кадров в метод
CameraCalibrator.addImage
.Используйте метод
CameraCalibrator.getPatternSpaceCoverProgress
, чтобы получить оценку покрытия пространства позиций и ориентаций калибровочного шаблона для более точной калибровки. МетодCameraCalibrator.getTip
возвращает подсказку необходимой позиции и шаблона.Вызовите метод
CameraCalibrator.calibrate
.После успешной калибровки (true) сохраните параметры калибровки с помощью метода
CameraCalibrator.saveCameraParameters
. Если калибровка не пройдена (false), добавьте больше изображений и выполните калибровку повторно.Чтобы начать калибровку заново, вызовите метод
CameraCalibrator.initCalibration
.
Пример проведения калибровки: test_calibration.
Подробная информация по запуску и работе с сэмплом по калибровке: test_calibration
Коррекция дисторсии
Для коррекции дисторсии выполните следующие шаги:
- Загрузите сохраненные откалиброванные параметры с помощью метода
CameraCalibrator.loadCameraParameters
. - Произведите коррекцию дисторсии изображения с помощью метода
CameraCalibrator.undistort
.
Пример использования CameraCalibrator см. в test_calibration.