Я уже нашел много вопросов и ответов по поводу сшивания и деформации изображения с помощью OpenCV, но я так и не смог найти ответ на свой вопрос.
У меня есть две камеры типа «рыбий глаз», которые я успешно откалибровал, поэтому искажение снимается на обоих изображениях.
Теперь я хочу сшить эти выпрямленные изображения вместе. Так что я в значительной степени следую этому примеру, который также упоминается во многих других вопросах:
Пример сшивания изображения
Поэтому я делаю обнаружение ключевой точки и дескриптора. Я нахожу совпадения, а также получаю матрицу гомографии, чтобы я мог деформировать одно из изображений, что в результате дает мне действительно растянутое изображение. Другое изображение остается нетронутым. Растяжение — это то, чего я хочу избежать. Так что я нашел хорошее решение здесь:
Эластичное решение.
На слайде 7 вы можете видеть, что оба изображения деформированы. Я думаю, что это уменьшит растяжение одного изображения (по моему мнению, растяжение будет разделено, например, 50:50). Если я ошибаюсь, пожалуйста, скажите мне.
У меня проблема в том, что я не знаю, как деформировать два изображения, чтобы они соответствовали друг другу. Должен ли я рассчитывать две гомографии? Должен ли я определить базовую плоскость как Rect () или что-то? Как добиться результата деформации, как показано на слайде 7?
Чтобы было понятно, я не учусь в TU Dresden, так что это то, что я нашел во время исследований.
Деформирование одного из двух изображений в системе координат другого является более распространенным, поскольку это проще: можно напрямую рассчитать преобразование 2D деформации из соответствий изображений.
Деформация обоих изображений в новый координатный фрейм возможна, но более сложна, потому что она включает в себя 3D-преобразования и требует точного определения нового 3D-координатного фрейма относительно начальных двух.
Основная идея (очень грубо) представлена на чертеже на слайде № 2 в связанной презентации. Я сделал больше:
В основном, процедура будет выглядеть следующим образом:
T2<-1 = R2<-1 * [Я3 | 0]
TN<-1 = square_root (R2<-1) * [Я3 | 0]
TN<-2 = ТN<-1 * T2<-1-1
ЧАСN<-1 = К * РN<-1 * К-1
ЧАСN<-2 = К * РN<-2 * К-1
Обратите внимание, что на шаге 3 предполагается, что изображения взяты из одной и той же точки пространства (чистое вращение камеры), в противном случае между изображениями может возникнуть параллакс, что может привести к видимым дефектам сшивания.
Надеюсь это поможет.
Ссылка: [HZ03] Хартли, Ричард и Эндрю Циссерман. Многообразие геометрии в компьютерном зрении. Издательство Кембриджского университета, 2003.