roboforum.ru

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

Универсальное зрение для навигации - 3D-реконструкция

Сергей Мальцев » 10 мар 2006, 12:55

По сути это тоже векторное поле, просто все вектора имеют координату X одного знака, а координату Y нулевую.

Не совсем понятно, можешь объяснить поподробнее?

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


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

CalcOpticalFlowHS
CalcOpticalFlowLK
CalcOpticalFlowBM
CalcOpticalFlowPyrLK

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


Посмотрю как будет время. Но мне, почему то казалось, что со стереозрением они работать не будут.

=DeaD= » 10 мар 2006, 13:03

Сергей Мальцев писал(а):Что за проблемы с синхронизацией?

А как обеспечить, чтобы обе камеры сделали снимок синхронно? :)

Сергей Мальцев писал(а):Мне кажется что большие расстояния не очень нужны, по крайней мере на начальном этапе. А ты уверен что motion-flow на больших расстояниях хорошо работает?

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

Сергей Мальцев писал(а):А вот тут точно не известно что при рассматривании с разных сторон используется больше. Это может использоваться стереозрением для запоминания максимальной информации о предмете.

Ок, оставим спорный вопрос, хотя тогда становится интересным - действительно ли при получении информации не используется старая информация? Ведь стереозрение это пока однонаправленный процесс. По крайней мере в классическом понимании.

Сергей Мальцев писал(а):Еще есть соображение, что внутри области однородной закраски будет достаточно ровная поверхность, без резких выпадов, иначе бы скорее всего в силу освещения однородной закраски не было бы.

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

=DeaD= » 10 мар 2006, 13:07

Сергей Мальцев писал(а):
По сути это тоже векторное поле, просто все вектора имеют координату X одного знака, а координату Y нулевую.

Не совсем понятно, можешь объяснить поподробнее?

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

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

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

Сергей Мальцев писал(а):
Это функции по OpticalFlow, но скорее всего их можно раздраконить и загнать в них учет тех самых эпиполярных линий, если я правильно понял что это такое.

Посмотрю как будет время. Но мне, почему то казалось, что со стереозрением они работать не будут.

В исходном варианте не будут, потому что они рассчитаны на поиск более широкого класса векторных полей, а вот если влезть внутрь и добавить им в уравнения Y=0, X>0, то как раз и получим сужение рабочих методов optical-flow на нашу задачу стереозрения, должно все получиться.

Сергей Мальцев » 10 мар 2006, 13:47

Некрасиво, что под Win32 все сделано, причем только под одну среду разработки - Visual Studio. А в целом нужно разбирать


Я кстати ее и предпочитаю. Но тебе, вроде, Borland среда нравится. Так что надо будет и под ту, и под другую чтоб работало.

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


Я думаю, надо бы в объектно-ориентированной модели писать? Ты как на это смотришь? Просто, в этом случае как то все более структурированнно получается.

=DeaD= » 10 мар 2006, 17:59

Сергей Мальцев писал(а):Я думаю, надо бы в объектно-ориентированной модели писать? Ты как на это смотришь? Просто, в этом случае как то все более структурированнно получается.

Хм, а смысл? Лучше придерживаться стиля заданного в OpenCV по возможности. То есть по возможности обходится готовыми объектами и писать обработчики этих объектов в виде функций. Или писать функции получающие на входе одни объекты, а возвращающие другие. Это по сути есть некоторое отклонение от чистого ООП, ввиду наличия внешних функций, зато создавая объект "изображение" сразу прописывать миллион возможных фильтров к нему.

lebaon » 10 мар 2006, 18:41

насчет одного глаза:
тут наверное используются запомненнные размеры известных объектов, а неизвестные просто соотносит с известными :idea:  :?:

Сергей Мальцев » 10 мар 2006, 19:25

=DeaD= писал(а):
Сергей Мальцев писал(а):Я думаю, надо бы в объектно-ориентированной модели писать? Ты как на это смотришь? Просто, в этом случае как то все более структурированнно получается.

Хм, а смысл? Лучше придерживаться стиля заданного в OpenCV по возможности. То есть по возможности обходится готовыми объектами и писать обработчики этих объектов в виде функций. Или писать функции получающие на входе одни объекты, а возвращающие другие. Это по сути есть некоторое отклонение от чистого ООП, ввиду наличия внешних функций, зато создавая объект "изображение" сразу прописывать миллион возможных фильтров к нему.


Мне не очень нравится отсутвие инкапсуляции, если использовать только С код. Но в принципе для меня это не так важно. Так что можно и в стиле OpenCV.

Сергей Мальцев » 10 мар 2006, 19:31

=DeaD= писал(а):В целом надо сначала провести исследование состояния дел в этой области - сколько времени на это заложим?

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

СТЕРЕОЗРЕНИЕ:

1.
http://sourceforge.net/projects/clone3d
3D object reconstruction based on several images

2.
http://sourceforge.net/projects/estereo
EStereo is a computer vision C++ library for real-time disparity estimation. The library contains various functions for dense stereo matching from 2 or 3 rectified images and 3D scene reconstruction.

3.
http://sourceforge.net/projects/kljh
Stereovision and multivision library Takes multiple image, detects and tracks points of interest, determines camera parameters and makes a basic 3D reconstruction or build a panorama.

4.
http://sourceforge.net/projects/mrhd
Software for creating Depth Maps and DEMs from image pairs taken using a Stereo Camera Rig. Currently works on images from Parallel Cameras. Create your own depth maps and 3d terrain from any images, such as NASA Mars Rover Image Pairs.

5.
http://sourceforge.net/projects/svfx
Stereo vision for special effects: The aim of the project is to implement a stereo vision algorithm based on color segmentation and graph cuts. It will be possible to extend the code to multicamera scene reconstruction.

6.
http://sourceforge.net/projects/argus3d
A small stereo vision library.

7.
http://sourceforge.net/projects/rodney
Rodney is an upper torso humanoid robot with stereo vision, speech recognition and a wide variety of body and head movements. This project is designed to be an open source repository for the software which comprises its control system.

8.
http://sourceforge.net/projects/stevision
Given a video feed consisting of a pair of stereo images to determine wat are the various objects in the scence and how far they are from the camera. This would ultimately be a visual navigation tool for robots.

9.
http://sourceforge.net/projects/binocle
The goal of this project is to develop a libray which implements functions related to stereovision and stereo-correlation. In other terms, whith two pictures of a same object taken from different angles, this library can generate a ZBuffer of the pictures.

Как будем делить? Если что - естерео я уже скачал :)


Я сейчас несколько неукладываюсь по времени. Есть такое предложение: на данный момент ты можешь смотреть начиная с начала списка. Я по мере возможностей буду смотреть с конца списка. При этом еще буду заниматься созданием сайта.
Я там несколько ссылок просматривал, там нет исходников, так что можно будет их быстро откидывать.
Пойдет такой вариант?

=DeaD= » 10 мар 2006, 20:28

Сергей Мальцев писал(а):Я сейчас несколько неукладываюсь по времени. Есть такое предложение: на данный момент ты можешь смотреть начиная с начала списка. Я по мере возможностей буду смотреть с конца списка. При этом еще буду заниматься созданием сайта.
Я там несколько ссылок просматривал, там нет исходников, так что можно будет их быстро откидывать.
Пойдет такой вариант?

Будете в одного сайт делать? :)

Может темку создать и структуру там обсудить?
Ибо одна голова хорошо, а две лучше :)

Да и помочь наверное чем-то смогу.

PS: По поводу анализа работ - ок, согласен.

=DeaD= » 10 мар 2006, 20:29

Сергей Мальцев писал(а):Мне не очень нравится отсутвие инкапсуляции, если использовать только С код. Но в принципе для меня это не так важно. Так что можно и в стиле OpenCV.


Разве в OpenCV нет объектов? По моему их там полно, просто некоторые вещи типа фильтров нет смысла заносить в объекты, как раз должна быть возможность их добавлять по мере необходимости не создавая без надобности такие тяжелые структуры, как объекты.

Сергей Мальцев » 10 мар 2006, 20:33

=DeaD= писал(а):
Сергей Мальцев писал(а):Я сейчас несколько неукладываюсь по времени. Есть такое предложение: на данный момент ты можешь смотреть начиная с начала списка. Я по мере возможностей буду смотреть с конца списка. При этом еще буду заниматься созданием сайта.
Я там несколько ссылок просматривал, там нет исходников, так что можно будет их быстро откидывать.
Пойдет такой вариант?

Будете в одного сайт делать? :)

Может темку создать и структуру там обсудить?
Ибо одна голова хорошо, а две лучше :)

Да и помочь наверное чем-то смогу.

PS: По поводу анализа работ - ок, согласен.


Ну, так даже лучше. :)

lebaon » 10 мар 2006, 21:22

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

=DeaD= » 10 мар 2006, 22:14

lebaon писал(а):а что про мою идею(см.пред.пост) :?:
да и еще можно использовать эффект размытия изображения
при движении для определения дальности, только датчики
движения использовать придется....но вместе со всеми другими
методами работать будет неплохо :!:


Какие еще датчики движения? Вы про что? Зачем нам датчики, если мы сами в курсе едем мы или нет.

И как это использовать эффект размытия? Может просто предмет не в фокусе.

lebaon » 11 мар 2006, 18:36

Какие еще датчики движения? Вы про что? Зачем нам датчики, если мы сами в курсе едем мы или нет.

тьфу, блин, забыл :oops:
насчет одного глаза:
тут наверное используются запомненнные размеры известных объектов, а неизвестные просто соотносит с известными  

ну так как :?:

И как это использовать эффект размытия? Может просто предмет не в фокусе.

о, идея, переменный фокус :idea: ,
если стоим, то наводя фокус на максимальную контрастность объекта,
можно определить расстояние до него  :shock:  :!:

Сергей Мальцев » 11 мар 2006, 19:19

//А как обеспечить, чтобы обе камеры сделали снимок синхронно?

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

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

Кстати говоря, пока не очень себе представляю, как должно работать motion-flow. Надо смотреть литературу.
На счет стереозрения, мне казалось, что дальность, по крайней мере, на порядок больше, есть точные данные по этому параметру?

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

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

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

Да, ты прав. Но тогда это еще действительно для любых дырок, через которые видно однородный тон.


Rambler\'s Top100 Mail.ru counter