Задать вопрос
@Nastyanasrieva

Как склеить 2 и более изображения с помощью поиска локальных особенностей?

Склеить 2 изображения вроде как получается, с помощью SIFT или ORB. Но склеиваются они только в панорамное изображение.
Существуют ли какие-то другие способы/методы и т.д. для склейки 2 и более изображений? Либо, допустим, разумен ли следующий подход: у меня всегда 9 изображений (получается сетка 3х3?). Что если склеить сначала 1 и 2 изображение, потом 2 и 3, а потом склеить результат первых двух склеек? Т.о. у нас получится 3 панорамы (можно еще по такому принципу склеить не по горизонтали, а по вертикали, тогда еще + 3 панорамы). Но все равно я не понимаю, как получить целое изображение, а не 3 панорамы
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Средний 4 комментария
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Можно сделать так:
1. Вычисляешь матрицу преобразования, которому нужно подвергнуть изображение 2, чтобы склеить его с изображением 1 (далее, 2->1).
2. Вычисляешь матрицу преобразования 3->2.
3. Склеиваешь 3 с 2, используя матрицу 3->2.
4. Склеиваешь сумму 3 и 2 с 1, используя матрицу 2->1.
Альтернативно, ты можешь подвергнуть 3 преобразованию 3->2, а потом 2->1 (либо последовательно, либо перемножив их матрицы), чтобы перевести его в систему отсчёта изображения 1, и склеить их непосредственно.

Таким образом можно построить дерево преобразований, где все изображения приводятся к ракурсу "корневого" изображения. Большой плюс этого подхода в том, что нам не требуется физически соединять все изображения в одно огромное полотно - если мы рассчитали матрицу преобразования для каждого изображения, мы можем преобразовывать каждое изображение тогда, когда оно требуется. Но можно и соединить, почему бы нет.

Ещё я не вполне понял, что ты имеешь ввиду под "панорамное изображение".
Но я подозреваю, это может быть вызвано тем, что на выбранном корневом (первом) изображении ракурс отличается от "нормального" - строго перпендикулярного целевой плоскости. Тогда тебе нужно выбрать такое изображение, на котором ты можешь более-менее точно определить целевую плоскость. ТУт может помочь какой-нибудь маркер типо QR-кода, aruco-маркера, да хоть банальный шахматный шаблон (с ним, кстати, проще всего). Главное, чтобы его размер был известен, и он был прямоугольный. Тогда можно будет рассчитать преобразование для этого изображения, которое исправит перспективу. Мы будем "смотреть прямо" на плоскость, где расположен этот шаблон. Это исправленное изображение и будет для нас корневым, к которому мы будем "пристёгивать" остальные.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы