Я ищу способ создания (бочкообразного) искажения с помощью OpenCV в C ++, основанного на реальных данных камеры, которые генерируются при калибровке камеры.
Поэтому моя цель — симулировать реальные искажения объектива с помощью opencv.
Для этого я откалибровал камеру с помощью OpenCV. Я использовал только первый параметр искажения k1: x ‘= x * k1 * r²
На этом этапе я получил файл калибровки с k1 = 0,129, внешней и внутренней матрицей камеры.
OpenCV предоставляет метод для калибровки изображения. И я хотел бы «инвертировать» этот метод, чтобы для тестирования было возможно следующее:
Исходное изображение -> undistort () -> unistort image -> «distort ()» -> исходное изображение
Можно ли свести на нет фактор k1 или необходимо разработать новую формулу?
Благодарю.
Короткий ответ: без отрицательного коэффициента это не получится.
Однако вы можете проверить инвертирование коэффициента, и вы получите обратное преобразование, если коэффициент мал. Формула не имеет тривиального обратного, поэтому путь может быть довольно сложным.
Других решений пока нет …