Как симулировать искажения с помощью opencv на основе реальных данных, полученных при калибровке камеры (C ++)?

Я ищу способ создания (бочкообразного) искажения с помощью OpenCV в C ++, основанного на реальных данных камеры, которые генерируются при калибровке камеры.
Поэтому моя цель — симулировать реальные искажения объектива с помощью opencv.
Для этого я откалибровал камеру с помощью OpenCV. Я использовал только первый параметр искажения k1: x ‘= x * k1 * r²
На этом этапе я получил файл калибровки с k1 = 0,129, внешней и внутренней матрицей камеры.

OpenCV предоставляет метод для калибровки изображения. И я хотел бы «инвертировать» этот метод, чтобы для тестирования было возможно следующее:
Исходное изображение -> undistort () -> unistort image -> «distort ()» -> исходное изображение

Можно ли свести на нет фактор k1 или необходимо разработать новую формулу?

Благодарю.

4

Решение

Короткий ответ: без отрицательного коэффициента это не получится.

Однако вы можете проверить инвертирование коэффициента, и вы получите обратное преобразование, если коэффициент мал. Формула не имеет тривиального обратного, поэтому путь может быть довольно сложным.

2

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

Других решений пока нет …

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