roboforum.ru

Технический форум по робототехнике.

Определение плоскостей при помощи одной движущейся камеры

Определение плоскостей при помощи одной движущейся камеры

Wolfkiller » 26 мар 2014, 07:14

Доброго времени суток.

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

Если кто-то занимался чем-то похожим, или же имеет представление - пожалуйста, подскажите, в каком направлении копать.

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

Охотно принимаю критику, советы, рекомендации. Возможно, кто-то сталкивался с такой темой и знает, что почитать/где поискать. С английским у меня довольно туго, книгу не осилю, но статью или документацию перевести в состоянии.

Очень надеюсь на вашу помощь. Заранее спасибо.

Re: Определение плоскостей при помощи одной движущейся камер

Myp » 26 мар 2014, 14:00

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

Re: Определение плоскостей при помощи одной движущейся камер

Madf » 26 мар 2014, 15:48

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

Re: Определение плоскостей при помощи одной движущейся камер

Wolfkiller » 26 мар 2014, 17:42

Myp писал(а):одна движущаяся камера это аналог множеству неподвижных
подвигали камерой секунду - получили 25 фотографий из разных точек, как будто у нас есть аж 25 камер.
ну или хотябы две фотографии с двух камер, одна в начале движения, другая в конце.
а это уже стереозрение.


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

Madf писал(а):можно одну матрицу разделить на две половинки, но тогда нужна оптика/призма, делящая изображения по полом, с разных точек...правда камера тогда должна быть в идеале с норм. разрешением.


С призмой не свяжусь - у меня обычная вебка, к тому же не очень хорошая - но, вроде бы, картинка чёткая. Разрешение 640х480, не думаю, что это то, что нужно.

Хотя бы в теории - моя идея рабочая?
Есть ли какие-то статьи, которые порекомендуете почитать? Буду крайне признателен.

Re: Определение плоскостей при помощи одной движущейся камер

Myp » 26 мар 2014, 21:36

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

Re: Определение плоскостей при помощи одной движущейся камер

Wolfkiller » 27 мар 2014, 04:10

Myp писал(а):с вебкой будут проблемы в плане того что в движении она выдаёт смазанную картинку.
надо покупать либо дорогую хорошую вебку либо картинку с камеры брать только когда она остановилась.


спасибо за совет, постараюсь это учесть в работе. Можно, теоретически, отфильтровать изображения на предмет "нашёл-не нашёл контрольные точки". Или просто двигать медленно.)
Ещё рекомендации?

Re: Определение плоскостей при помощи одной движущейся камер

Myp » 27 мар 2014, 14:17

я бы порекомендовал поделиться потом с общественностью проектом
потому как вопрос достаточно интересный для робототехники =)

Re: Определение плоскостей при помощи одной движущейся камер

RootAdmin » 27 мар 2014, 22:01

OpenCV, поиск контуров. Не, я буду продолжать лазер вверх-вниз гонять.
А смазанность зависит от освещения.

Re: Определение плоскостей при помощи одной движущейся камер

Wolfkiller » 28 мар 2014, 07:20

Myp писал(а):я бы порекомендовал поделиться потом с общественностью проектом
потому как вопрос достаточно интересный для робототехники =)


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


RootAdmin писал(а):OpenCV, поиск контуров. Не, я буду продолжать лазер вверх-вниз гонять.
А смазанность зависит от освещения.


Обязательно посмотрю, спасибо. Освещение предполагается тёплое, ламповое довольно яркое. Во всяком случае, заметного глазу отставания картинки при движении объекта(то есть, меня) при имеющемся освещении не наблюдал.

Re: Определение плоскостей при помощи одной движущейся камер

WETErok » 17 апр 2014, 05:44

Вашу задачу можно решить с одной камерой.
Есть готовый алгоритм PTAM http://www.robots.ox.ac.uk/~gk/PTAM/, реализация под ROS http://wiki.ros.org/ptam

Так же рекомендую лекции с обзором существующих методов компьютерного зрения, поможет в теоретической части.
http://www.lektorium.tv/course/22847

Сразу скажу о недостатках восстановления 3D окружения с одной камерой. Первое это нетерпимость к повороту камеры вокруг своей оси. Что бы алгоритм работал камеру нужно перемещать вперед-назад, вправо-влево и только тогда поворачивать.
Второе это нет реального масштаба восстановленной сцены. Например получили вы плоскости но какое расстояние между ними вы определить не сможете, это может быть 1 метр или 10 метров этого не узнать.

Камеру лучше брать с широким углом зрения больше 90 градусов.

Re: Определение плоскостей при помощи одной движущейся камер

BeS » 17 апр 2014, 15:46

WETErok писал(а):Вашу задачу можно решить с одной камерой.
Есть готовый алгоритм PTAM http://www.robots.ox.ac.uk/~gk/PTAM/, реализация под ROS http://wiki.ros.org/ptam

Так же рекомендую лекции с обзором существующих методов компьютерного зрения, поможет в теоретической части.
http://www.lektorium.tv/course/22847

Сразу скажу о недостатках восстановления 3D окружения с одной камерой. Первое это нетерпимость к повороту камеры вокруг своей оси. Что бы алгоритм работал камеру нужно перемещать вперед-назад, вправо-влево и только тогда поворачивать.
Второе это нет реального масштаба восстановленной сцены. Например получили вы плоскости но какое расстояние между ними вы определить не сможете, это может быть 1 метр или 10 метров этого не узнать.

Камеру лучше брать с широким углом зрения больше 90 градусов.


Проблема поворотов вокруг оси довольно успешно решается при помощи соответстующих методов оптимизации, например путем минимазации ZSSD расстояния между соседними кадрами для оценки поворота, а затем уже оценки переноса.

А главный недостаток моно слэма - это пожалуй привязка всего процессинга к начальной оценке 3D облака и сложности восстановления трекинга в случае падения. Хороших методов релокализации до сих пор не придумали...


cron
Rambler\'s Top100 Mail.ru counter