Гомография при переводе камеры (для сшивания)

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

Заранее спасибо.

1 ответ

Поскольку вы фотографируете плоскую поверхность (в вашем случае экран телевизора), все ее изображения с помощью перспективной камеры будут связаны с помощью гомографий. Это то же самое, если ваша камера перемещается и / или вращается. Поэтому, чтобы сшить различные изображения поверхности, вам не нужно выполнять какую-либо обработку трехмерной геометрии (вычисление основной матрицы / триангуляция и т. Д.).

Для решения вашей проблемы вам необходимо сделать следующее:

  1. Вы определяете гомографии между вашими изображениями. Поскольку у вас есть только два изображения, вы можете выбрать первое как "источник", а второе как "цель" и вычислить гомографию от цели к источнику. Это классически сделано с обнаружением признаков и надежной подгонкой гомографии. Обозначим эту гомографию матрицей 3x3 H.
  2. Вы деформируете свое целевое изображение в источник, используя H. Вы можете сделать это в openCV с warpPerspective метод.
  3. Объедините ваш источник и искривленную цель, используя функцию смешивания.

Проект с открытым исходным кодом для выполнения именно этих шагов здесь.

Если в вашем телевизоре отсутствуют четкие функции или имеется много фоновых помех, метод оценки H может быть недостаточно надежным. В этом случае вы можете вручную щелкнуть четыре или более соответствий на телевизоре в целевых и исходных изображениях и вычислить H, используя OpenCV. findHomography метод. Обратите внимание, что ваши соответствия не могут быть полностью произвольными. В частности, не должно быть трех коллинеарных соответствий (в этом случае H не может быть вычислено). На них также следует нажимать как можно точнее, поскольку ошибки повлияют на окончательную строчку и станут причиной появления побочных эффектов.

Важная оговорка, если ваша камера имеет значительные искажения объектива. В этом случае ваши изображения не будут связаны омографиями. Вы можете справиться с этим, выполнив калибровку камеры с помощью OpenCV, а затем вам необходимо предварительно обработать ваши изображения, чтобы отменить искажение объектива (используя OpenCV undistort метод).

Другие вопросы по тегам