Как создать 2D карту комнаты по нескольким изображениям / кадрам фильма? - PullRequest
5 голосов
/ 03 мая 2010

Я хотел бы создать простую 2D-карту комнаты, получая изображения (потолок) всех направлений (360 ° - например, кадры фильма), распознавать стены по обнаружению краев, удалять другие нежелательные объекты, объединять изображения в правильное положение (см. стены, панорама) и, наконец, создайте приблизительную 2D-карту (глядя на нее сверху). Получение шкалы будет другим параметром, который может быть полезен.

У меня есть несколько собственных идей на данный момент, например, используя алгоритм Собеля, но было бы интересно, если бы кто-нибудь уже знал, что какой-то проект или программное обеспечение (GPL, бесплатное программное обеспечение предпочтительно) уже делают это, так как я все еще ищу некоторые примеры, которые могут мне помочь.

Спасибо.

Ответы [ 4 ]

1 голос
/ 11 мая 2010

У меня был похожий проект "кое-что" для стажировки, и в конце концов стажировка так и не была закончена, потому что у всех нас не хватило времени (3 месяца и денег ни на что).

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

Во-вторых, мы собирались поместить «хорошо известный / понятый» объект рядом / на каждой стене и использовать его для интерполяции размера (длины / высоты) каждой стены.

Теперь этот метод потребует больше«время» для установки, потому что вам нужно будет поместить объект на каждую стену, а затем сфотографировать каждую стену с небольшим наложением, чтобы в последствии вы могли иметь возможность соединить его вместе.Затем пользователь сообщит программе, где расположен каждый «угол / край», чтобы программа знала «общую форму» комнаты, а затем использовал объект, расположенный на стене, для интерполяции длины / высоты каждой стены.

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

1 голос
/ 08 мая 2010

Я вижу, как это (вроде) работает два способа:

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

2) Создать реальный объект управления, который устройство может использовать в качестве «базового уровня». Создайте отвратительно ярко-красный куб, размер которого 10х10х10 см; поместите это в углу комнаты; возьмите фото / видео стены из угла в угол, используйте обнаружение изображения, чтобы найти границы стены и распознавание объекта для куба; вычисление размеров стен - простая математика с тех пор. В зависимости от объектива этот метод может быть менее чувствителен к искажению фокусного расстояния и т. П., Но для точного считывания я бы подумал, что вам все равно придется учитывать характеристики объектива.

Удачи с этим, это не маленькое начинание. Обнаружение изображения только для стен будет проблемой. :)

0 голосов
/ 28 июня 2014

Я думаю, что вам нужна структура из движения, это метод получения трехмерных облаков точек из 2D движущихся изображений (видео), я мог бы порекомендовать вам следующие страницы:

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

С Nexus One это будет медленным, но, возможно, с новыми телефонами вы могли бы использовать их GPU и оптимизировать некоторый код, чтобы он работал быстрее. Если бы это был я, я бы предпочел снять видео и сделать настольное приложение, а затем перенести его на Android, но я мало знаю о разработке Android.

0 голосов
/ 12 мая 2010

Звучит как интересная проблема. Вот ссылка на исследовательскую статью Microsoft, которая может иметь отношение к делу.

Фототуризм: изучение фотоколлекций в 3D

В частности, посмотрите раздел «Моделирование на основе изображений» (3.1).

...