Сшивание с большим параллаксом

Сшивание с большим параллаксом

Мне нужно сшить изображения с 5 камер вместе. Камеры установлены по бокам подводного дистанционно управляемого аппарата. По сути, это купол размерами 2,1 м x 1,3 м x 1,85 м. Камеры установлены по бокам этого купола. Итак, одна камера спереди, одна сзади, одна справа, одна слева и одна снизу, направленная вниз. Все камеры имеют объективы типа «рыбий глаз» с углом обзора 180° или более и имеют разрешение 4k. Цель состоит в том, чтобы сшить изображения в реальном времени и просмотреть результат с помощью гарнитуры виртуальной реальности.

Я попробовал чисто геометрический подход, в котором я использовал только позиции и параметры камер. Это сработало нормально, но шов между изображениями действителен только для очень определенного расстояния просмотра. В противном случае шов очень заметен, и мне удалось сшить только горизонтальные камеры, а не нижнюю.

Я также пробовал vrWorks 360 от NVidia, но это работает только для горизонтально выровненных камер, поэтому нижняя камера игнорируется. Также результат сшивания для горизонтальных камер был действительно плохим.

Я также наткнулся наСшивание изображений, устойчивое к параллаксусэта реализация. Но он также работает только для горизонтально выровненных изображений и не поддерживает объективы «рыбий глаз».

Мой последний подход заключался в использовании калибровкиPTGuiи использовать эту калибровку встежокEmкоторая раньше была коммерческим программным обеспечением для сшивания, но теперь имеет открытый исходный код. Это дало наилучшие результаты на данный момент. Но все еще есть некоторые ошибки выравнивания, и это работает нормально только если рядом мало или совсем нет объектов.

Я также пытался использовать OpenCV напрямую, но это оказалось для меня слишком сложным, поскольку существует так много вариантов использования API и так много модулей для настройки.

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

решение1

Я предполагаю, что когда вы говорите о "реальном времени", вы имеете в виду быструю обработку изображений при сшивании. Если так, взгляните на это решение с открытым исходным кодом, с большим количеством элементов управления, опций, обработкой на GPU и возможностью создания панорам с нижними изображениями:

Если вы имеете в виду настоящий "реальный режим", вам, вероятно, нужно использовать adhoc-систему с использованием OpenCV, и, вероятно, обработка в реальном времени будет зависеть от компромисса между скоростью и разрешением. Ниже приведена ссылка на базовый пример:

Ваше здоровье!

Связанный контент