OpenCV удаляет только центральную часть изображения «рыбий глаз»

Я пытаюсь выполнить калибровку камеры «рыбий глаз» через OpenCV 3.4.0 (C ++, MS Windows).

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

https://www.youtube.com/watch?v=Ll8KCnCw4iU

а также

https://www.youtube.com/watch?v=p1kCR1i2nF0

Насколько вы можете видеть, эти результаты очень похожи на мои результаты.
У кого-нибудь есть решение этой проблемы?

3

Решение

Я проанализировал много статей за последние 2 недели. Я думаю, что нашел источник проблемы. В OpenCV 3.4.0 метод искажения типа «рыбий глаз» основан на модели камеры с точечным отверстием. У нас есть угол между оптической осью камеры и лучом света от какого-либо объекта. У нас также есть угол между направлением на неискаженную точку этого объекта и оптической осью камеры. Если изображение «рыбий глаз» было неискаженным правильно, эти два угла должны быть равны. FOV моей камеры «рыбий глаз» составляет 180 градусов. Это означает, что расстояние от неискаженного центра изображения и точки, соответствующей краю неискаженного изображения, равно бесконечности.
Другими словами, если у нас есть камера «рыбий глаз» с углом обзора около 180 градусов, искажение (через OpenCV) 100% поверхности изображения «рыбий глаз» невозможно.

3

Другие решения

Это может быть достигнуто только с помощью проекция вместо того, чтобы пытаться undistort Это.

Больше информации здесь Калибровка OpenCV «рыбий глаз» обрезает слишком много полученного изображения

Пример результата:

введите описание изображения здесь

0

По вопросам рекламы [email protected]