Есть видео с action-камеры, которая при записи применяет эффект типа рыбьего глаза. Область, которая должна быть прямоугольной, имеет несколько скруглённую форму - в сниппете она отмечена красным. Хотелось бы растянуть её обратно до синего прямоугольника. Я могу нарисовать 2 вертикальные или даже все 4 линии, по которым можно определить искажение. Как выполнить трансформацию?
Если я правильно понимаю, то можно использовать фильтр lenscorrection в ffmpeg, но я не знаю, как подобрать параметры. Попробовал взять один кадр и поиграться с ним в Gimp'е, но из этого ничего не вышло. В принципе, меня устраивает алгоритм, а точнее формула, по которой для каждого пикселя нового изображения можно вычислить координаты в исходном. При этом входными данными являются кривые безье, которые я могу нарисовать. Гарантируется, что рамка будет иметь именно такой вид: 4 ломаных точки с направляющими (в идеале обойтись только двумя вертикальными линиями):
Ответом на вопрос может быть любой вариант из следующих: Готовая программа, которая выполняет задачу для видео или кадра. Способ подобрать корректные параметры для ffmpeg. Формула для вычисления старых координат пикселя по координатом на изображении-результате. Другое представление графической трансформации. ...
Ответ Это задача может быть решена при помощи трансформации текстурных координат во фрагментном шейдере.