Привет. Небольшая предыстория: временами занимаюсь наложением cgi на реальную съемку, мне нужны одинаковые размеры объектов при вращении камерой. Когда впервые задумался об оптических искажениях на фото/видео, то взял камеру и обнаружил там примерно такую картину. На тот момент мне пришла неправильная (как оказалось) идея - нужно добиться того, чтобы линии были прямыми. Желаемое получил, но проблему изменения геометрических размеров объектов это не решило.
Поясню что имею в виду под изменением размеров: устанавливаем камеру на штатив, смотрим на какой-то статичный объект, вращаем камеру вокруг оси Z, в разных участках матрицы размер объект будет различен.
Поразмыслив ещё немного я пришел к выводу, что дело всё в том, что на края матрицы влезает меньше изображения, самый большой угол видимости расположен в центре. Это легко подтверждается следующим опытом: ставим камеру на штатив, смотрим на неподвжный объект, вращаем камеру вокруг Z, объект будет двигаться (проекция на матрицу) по следующей траектории. Вообще это несколько контринтуитивно учитывая загнутые вниз линии на скрине раннее. Полагаю, что дело в перспективных искажениях, т.е. меньший охват краями матрицы (обусловненный оптикой/формой матрицы и подобными факторами) компенсируется перспективными искажениями (в углах объекты дальше, значит они более маленькие, это с запасом компенсирует особенности оптики и загибает линии на первом снимке).
Ну и главный вопрос - как разогнуть кадры не на статичном а на группе кадров со вращающейся камерой, чтобы предметы имели одинаковые размеры? Если правильно всё понимаю, то это состояние, когда в тесте с вращением камеры объект будет иметь траектории в виде прямой линии. А кадр после обработки будет растянут в центральной части (т.е. на статичном первом снимке линии загнутся ещё сильнее к центру).
Как это сделать правильно? У меня были надежды на lensfun, там есть target_geomerty=fisheye_orthographic, звучит подходяще, но на деле все режимы работают одинаково и разгибают линии с первого снимка, мне нужно другое. Правда коэффиценты для lensfun я выводил сам, моей камеры нет в базе, может что-то не заполнил для возможности гнуть разными способами.
Пока в голову приходит вывести ещё раз коэффиценты самому, но для случая с вращающейся камерой.
Какие есть мысли/опыт по этому вопросу? Инфа для моей камеры из lensfun базы (можно ли заюзать их для моего кейса, чтобы не выводить новые?):
<cropfactor>5.62</cropfactor>
<calibration>
<distortion model="ptlens" focal="24" a="0.00328" b="-0.03471" c="0.01753"/>
</calibration>