Модель калибровки Pinhole OpenCV уменьшает FOV, я должен использовать Fisheye?

У меня широкоугольная камера, в спецификациях говорится, что она составляет около 150°, но мне кажется больше ~100° по горизонтали и ~80° по вертикали. В любом случае, после калибровки эти поля зрения уменьшаются на ~20 градусов каждая.

Это верно как для значений, возвращаемых функцией cv::calibMatrixValues, так и для выпрямленных кадров, в которых обрезаются относительно большие внешние части.

Это нормальное поведение? Если да, могу ли я избежать этой проблемы, используя более новую модель камеры Fisheye? С помощью Fisheye можно узнать измеренные поля зрения? Я не могу найти что-то вроде fisheye::calibMatrixValues.

2 ответа

Решение

cv::getOptimalNewCameraMatrix может сделать эту работу.

Я думаю, что для вашего случая лучшее решение - использовать модуль cv:: fisheye из Open CV 3.4.X. (C++, MS Windows). Неискаженное изображение будет намного больше исходного, но будет иметь некоторый конечный размер.

В моем случае я использовал cv:: fisheye:: calibrate, чтобы сделать K и D (матрица камеры и матрица коэффициентов радиального искажения). Затем я использовал cv::fisheye::initUndistortRectifyMap для создания карт для координат X и Y. И, наконец, я использовал cv:: remap, чтобы удалить изображение с камеры "рыбий глаз" через карты из initUndistortRectifyMap.

Другие вопросы по тегам