Результаты калибровки OpenCV для более искаженного изображения

#opencv

#opencv

Вопрос:

Я выполняю калибровку OpenCV, но результат без искажений не соответствует моим ожиданиям. Оно выглядит более искаженным, чем исходное изображение. Я использую только одно калибровочное изображение, поскольку обнаружил, что другие люди используют аналогичный подход, но я также пробовал использовать шаблон с несколькими квадратными изображениями.

Вот некоторые подробности о том, что я делаю:

 calibrationFlags = cv::CALIB_FIX_K4 | CALIB_FIX_K5
  

использование calibrateCamera и функции undistort.

 cv::undistort( InputImage, OutputImage, cameraMatrix, distCoeffs, cameraMatrix );
  

Я уже пробовал использовать initUndistortRectifyMap и getOptimalNewCameraMatrix, но результаты также похожи.

Чего я не понимаю?

Вот исходные и неискаженные изображения:

Оригинал
Совпадающие точки
Неискаженное

Комментарии:

1. есть причины, по которым вы исправляете k4 и k5? Правильно ли определены центры окружности?

2. @Micka Я видел другие источники, использующие исправление k4 и k5, но в результате нет разницы. Я добавил изображение с совпадающими точками.

3. Спасибо за ваше предложение, при проверке центров окружностей я обнаружил проблему с разрешением!

Ответ №1:

Я обнаружил проблему: я использовал изображение с половинным разрешением для калибровки, а затем использовал полное разрешение для применения неискажения. Все изображения в процессе должны (?) иметь одинаковое разрешение.