roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 10:28

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 210 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 14  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:19 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//Ну по сути такие вектора и будут смещениями отвечающими за правильные соответствия между фрагментами изображений на левом и правом изображении.
В целом да (только не прямая, а луч), именно поэтому соот. смещение может быть задано вектором с нулевой Y-координатой и X-координатой фиксированного знака.
В исходном варианте не будут, потому что они рассчитаны на поиск более широкого класса векторных полей, а вот если влезть внутрь и добавить им в уравнения Y=0, X>0, то как раз и получим сужение рабочих методов optical-flow на нашу задачу стереозрения, должно все получиться.

Идею понял. Посмотрел функции. Там есть один минус, они работаю только на серых изображениях. Но понятно, что можно доработать, надо иметь в виду.
Есть еще один момент. Одно из изображений в стереопаре смещено относительно другого по горизонтали, соответственно при использовании алгоритмов optical-flow пары нужно совмещать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:20 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//Разве в OpenCV нет объектов? По моему их там полно, просто некоторые вещи типа фильтров нет смысла заносить в объекты, как раз должна быть возможность их добавлять по мере необходимости не создавая без надобности такие тяжелые структуры, как объекты.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:20 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//PS: По поводу анализа работ - ок, согласен.

На счет сроков анализа, надеюсь, до конца марта уложимся. Подходит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:22 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
lebaon писал(а):
Цитата:
насчет одного глаза:
тут наверное используются запомненнные размеры известных объектов, а неизвестные просто соотносит с известными  

ну так как :?:


Вопрос как объекты узнать.

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

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


Идея известная, посмотрим, будем ли использовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:23 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
lebaon писал(а):
Цитата:
насчет одного глаза:
тут наверное используются запомненнные размеры известных объектов, а неизвестные просто соотносит с известными  

ну так как :?:

Известных объектов изначально нету.

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

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

Фигасе, так проще лазерный дальномер поставить, и точность больше и проработает дольше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 19:29 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей Мальцев писал(а):
Думаю, специализированные камеры способны это сделать.

Разумеется технически проблема решаема, но нам же нужно практически :)

Сергей Мальцев писал(а):
Да и если скорости не большие это не должно быть особой проблемой.

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

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

Проще лазерный дальномер тогда поставить :)

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

Так же работает как стереозрение, только нету эпиполярных линий, сужающих круг поиска решений.

Сергей Мальцев писал(а):
Идею понял. Посмотрел функции. Там есть один минус, они работаю только на серых изображениях. Но понятно, что можно доработать, надо иметь в виду.
Есть еще один момент. Одно из изображений в стереопаре смещено относительно другого по горизонтали, соответственно при использовании алгоритмов optical-flow пары нужно совмещать.

Там много методов, которые по странным стечениям обстоятельств работают только с 1-слойными картинками (ч/б).

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

Думаю да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 20:26 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//Разумеется технически проблема решаема, но нам же нужно практически

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

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

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

//Проще лазерный дальномер тогда поставить

Да, но он будет работать только в одной горизонтальной плоскости. Или будет нужна система наводки, а это опять лишние деньги.

//Так же работает как стереозрение, только нету эпиполярных линий, сужающих круг поиска решений.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 21:34 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей Мальцев писал(а):
Ну в крайнем случае, нужно будет использовать именно такие камеры. Надо бы на счет цены узнать.

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

Да ну его, лучше синхронизацию научиться делать :)

Сергей Мальцев писал(а):
Да, но он будет работать только в одной горизонтальной плоскости. Или будет нужна система наводки, а это опять лишние деньги.

А на ходу зумом крутить это разве круто? :)

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

Так камера же не сама по себе летает :) это же мы нашей платформе сказали ехать, а уж мы знаем как ездим :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 21:45 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
=DeaD= писал(а):
Будете в одного сайт делать? :)

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

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


Вот здесь начал обсуждение:
http://www.roboforum.ru/viewtopic.htm?p=12491#12491


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 22:04 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//Да ну его, лучше синхронизацию научиться делать

Будем по ходу дела смотреть.

//А на ходу зумом крутить это разве круто?

Можно на месте, но в общем пока не важно.

//Так камера же не сама по себе летает это же мы нашей платформе сказали ехать, а уж мы знаем как ездим

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 мар 2006, 23:50 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей Мальцев писал(а):
Могут возникнуть проблемы с точностью перемещений. И, вроде, есть методы определять взаимное положение в кадрах чисто по изображениям, сейчас пытаюсь разобраться.


Думаю не должно быть таких особых проблем. А методы поиска "как мы двигались" по камере такие скорее всего действительно есть.

Кстати:
Цитата:
1.
http://sourceforge.net/projects/clone3d
3D object reconstruction based on several images

и

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.

Пустышки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 мар 2006, 14:14 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
Цитата:
Начал разбирать. Разработка вроде бы MIT от 2004 года. Должно быть актуально и по взрослому.

Чтобы мне жизнь никому легкой не казалось, а скорость зашкаливала они применили ассемблерные вставки и наборы специальных инструкций MMX и SSE2.

Далее перечисляю основные их функции (практически каждая функция имеет несколько вариаций, чем отличаются можно догадаться по тексту или по набору входных/выходных данных) и чего они делают:

(несмотря на то что библиотека позволяет работать с тройками изображений я везде по тексту буду писать "стереопара")

(не будут описываться функции производящие пакетную обработку, то есть лишь вызывающие подряд неборы других функций)

Функция №1. NormalizeImages (stereoMatching.cpp)
Приводит изображения к одному среднему уровню яркости (сразу косяк - если одна из камер словила источник света, а остальные нет - тут все съедет).

Функция №2. doReconstruction (reconst3D.cpp)
Получает на входе массив опознанных точек (idx - адрес точки на изображении, disp - смещение), на выходе выдает локальные координаты этих точек (x,y,z), используя параметры камеры.

Функция №3. estimateStereo (stereoMatching_algo.cpp)
Собственно основная их функция, на входе получает стереопару, на выходе дает массив смещений, которые удалось определить.

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

Функция №4. doStereo_grow (stereoMatching.cpp)
Пока вообще не понял чего она делает, похоже на основе первичного отбора точек каким-то образом заполняет оставшиеся нераспознанные места на стереопаре.

Важные поля и переменные объекта stereoMatching:
* nbDepth - ? (всегда кратно 8, в примере = 32)
* horopter - ? (в примере = 0)
* peakValidationThreshold - ? (в примере = 5)
* nbPartition - ? (в пакетной процедуре = 8 )
* maskSize[X|Y](оно же - correlationWindowSize) - размер окна для нахождения соответствий между левым и правым изображением (в примере = 9х9)


Хорошо бы понять какой метод они используют, я вчера немного поразбирался с вопросом, оказывается существует как минимум три метода:
-вариационный, заключающий в поиске такой функции соответствий точек, при которой она минимизирует суммарную разность яркостей, звучит страшненько, но в целом задача сводится к решению диффура.
-корреляционный, пишут, что он не очень стабильный;
-сопоставление краев, вроде как, самый лучший, но соответствия получаются только на краях, что тоже не очень хорошо, так как в остальных случаях будет одна интерполяция, и он не использует градиентные области.
Читал в Хорне, посмотри сам, познавательно.

Есть ли какие-нибудь описания к ассемблерным вставкам?
Видимо скорость работы существенно повышается с ними.

В идеале нужно посмотреть результаты работы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 мар 2006, 14:41 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей Мальцев писал(а):
Хорошо бы понять какой метод они используют, я вчера немного поразбирался с вопросом, оказывается существует как минимум три метода:
-вариационный, заключающий в поиске такой функции соответствий точек, при которой она минимизирует суммарную разность яркостей, звучит страшненько, но в целом задача сводится к решению диффура.
-корреляционный, пишут, что он не очень стабильный;
-сопоставление краев, вроде как, самый лучший, но соответствия получаются только на краях, что тоже не очень хорошо, так как в остальных случаях будет одна интерполяция, и он не использует градиентные области.
Читал в Хорне, посмотри сам, познавательно.

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

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

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

Кстати, по ходу придумал оптимизацию для своего метода - я считал мерой доступности к сопоставлению картинки среднеквадратичное отклонение по всей картинке, а нужно учитывать что сопоставлять мы будем по горизнтали и значит нас интересует среднее геометрическое от среднеквадратичных отклонений по строкам - во как! :)

Сергей Мальцев писал(а):
Есть ли какие-нибудь описания к ассемблерным вставкам?
Видимо скорость работы существенно повышается с ними.

В идеале нужно посмотреть результаты работы.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 мар 2006, 15:30 
Не в сети

Зарегистрирован: 07 мар 2006, 16:14
Сообщения: 106
Откуда: Москва
//Они пользуют корреляционный метод, я кстати его же пользовал когда стереозрение в своей версии делал, не видел в нем никакой нестабильности. Наоборот.
Про вариационный - почитаю, очень интересно какой там дифур и среди какого класса функции они ищут. Если среди хотя-бы непрерывного (а иначе какие нафиг дифуры?), то это уже косяк.
Сопоставление краев на мой взгляд - это лишь сужение корреляционного метода с соответствующим ускорением и потерей информации (какие цвета были по обе стороны от края, например).

Посмотри в главе 13 Хорна, там всего 22 страницы с картинками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 мар 2006, 14:17 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Кто-нибудь знает про Surface From Shading?
Там нужно знать карту отражательной способности - т.е. попросту: зависимость ориентации (вектор нормали к пов-ти) от яркости.
Дак вот, после предварительного построения приближенной сетки с помощью стереопары, мы и имеем приближенно зависимость яркости в этих точках от ориентации поверхности (аппроксимированной/интерполированной конечно по этим точкам).
SFS описана с формулами у Хорна. В остальных местах крайне поверхностно, по-сравнению с Хорном, там нужно численно решать элиптические ур-ия, если б не отсутствие знаний по числ. методам, то можно было бы попробовать совместить двух гигантов - стерео и SFS... Совместить с целью поймать 2х зайцев: стерео ищет краевые особые точки, а SFS работает на промежутках между краями, где градиент слабый. Т.е. получим двухитеративный способ.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 210 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 14  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO