roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 16:25 
Не в сети

Зарегистрирован: 11 дек 2006, 17:18
Сообщения: 44
Откуда: Тольятти
Хочется написать алгоритм для платформы оборудованной камерой и моторчиками который позволит етой платформе ездить не врезаясь. Т.е. замена всяких датчиков камерой. Время появилось и я коечто накидал.

Код:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <time.h>

#pragma comment(lib,"highgui.lib" )
#pragma comment(lib,"cv.lib" )
#pragma comment(lib,"cxcore.lib" )

void main (void)
{
   IplImage *src, *tmp;
   CvSeq* contour = 0;

   cvNamedWindow( "test",1 );
   cvNamedWindow( "test1",1 );
   cvNamedWindow( "test2",1 );

   CvCapture *cap = cvCaptureFromCAM(0);
   for(;;){
      tmp = cvQueryFrame(cap);
      cvShowImage( "test1",tmp );

                        // у меня 640х480 если у вас меньше то следующий 6 строк заремарьте и все будет работать идеально. Сдесь я делаю сглаживание
                        // потому что мая камера очень далека от идеала и шумы не позволяют чтото видеть
      IplImage *pyr = cvCreateImage( cvSize(320,240),8,3 );
      cvPyrDown( tmp, pyr, 7 );
      cvPyrUp( pyr, tmp, 7 );
      cvReleaseImage( &pyr );
      cvShowImage( "test2",tmp );

      src = cvCreateImage( cvGetSize(tmp),tmp->depth,1 );
      int COI = cvGetImageCOI( tmp );
      cvSetImageCOI( tmp,2 );
      cvCopy( tmp,src,0 );
      cvSetImageCOI( tmp,COI );

      cvCanny( src,src,30,70,3 );
      cvDilate( src,src,0,1 );
      cvErode( src,src,0,1 );
      
      cvZero( tmp );
      CvMemStorage* contour_storage = cvCreateMemStorage(0);

      CvContourScanner blobs = cvStartFindContours( src, contour_storage, sizeof(CvContour), CV_RETR_CCOMP,CV_CHAIN_APPROX_NONE );
      while( (contour=cvFindNextContour(blobs)) != NULL ){
         CvScalar outer = CV_RGB( 0, 255, 255 );
         CvScalar inner = CV_RGB( 255, 255, 255 );
         cvDrawContours( tmp, contour, outer, inner, 0, 0 );
      }
      contour = cvEndFindContours( &blobs );
   
      cvReleaseMemStorage( &contour_storage );

      cvShowImage( "test",tmp );
      cvWaitKey(1);

      cvReleaseImage( &src );
   }

   /* Releases contour scanner and returns pointer to the first outer
   contour */
   cvReleaseCapture( &cap );

   return;
}


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 16:33 
Не в сети
Аватара пользователя

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

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

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 17:15 
Не в сети

Зарегистрирован: 11 дек 2006, 17:18
Сообщения: 44
Откуда: Тольятти
Мой робот ростом под полтора метра и весит как два машинный акумулятора... думаю прыгать он не будет точно :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 17:38 
Не в сети
Аватара пользователя

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

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

Пробовали на ходу снять видеоролик с камеры?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 20:34 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Я принимал участие в разработке робота весом 30кг. Камера всеравно дрожит, но можно скомпенсировать попробовать.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 04 дек 2007, 21:35 
Не в сети
Аватара пользователя

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

Вот-вот, у меня тоже робот под 10-15кг весил в "максимальной комплектации" и высотой в полметра - еще как прыгал.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 10:42 
Не в сети

Зарегистрирован: 11 дек 2006, 17:18
Сообщения: 44
Откуда: Тольятти
Давайте не про робота, а про алгоритм. Хочется иметь подобный алгоритм, а проблему с дрожанием я какнибудь решу.

Есть какиенибудь идеи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 11:12 
Не в сети
Аватара пользователя

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

Есть какиенибудь идеи?

Ключевые слова - Optical-flow

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 16:13 
Не в сети

Зарегистрирован: 11 дек 2006, 17:18
Сообщения: 44
Откуда: Тольятти
По поводу камеры - посмотрите интернет, давно придуманно как ето избежать
По поводу optical flow - спасибо, помогло сильно :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 16:30 
Не в сети
Аватара пользователя

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

Будьте гуманней - дайте ссылку или ключевые слова? :)

Николай_Алексеевич писал(а):
По поводу optical flow - спасибо, помогло сильно :)

Кстати, в OpenCV по моему 3-4 метода реализовано частично из семейства optical-flow, правда вроде без калибровки.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 18:09 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Цитата:
Кстати, в OpenCV по моему 3-4 метода реализовано частично из семейства optical-flow, правда вроде без калибровки.


Ага, вот только работают они не лучшим образом, можете сами убедиться:
http://edv-detail.narod.ru/OpticalFlowEDV.html

Я какое-то время назад переписывался с Вадимом Писаревским (один из разработчиков OpenCV), так он заявил, что эти методы вообще уберут в следующей версии:
Цитата:
Actually, for one of our current projects we are now studying many
different optical flow algorithms, such as ones by Bruhn & Weickert
(http://www.mia.uni-saarland.de/Publications/bruhn-iccv05.pdf), or
Gunnar Farneback (http://www.isy.liu.se/~gf/). In particular, in this
paper by G. Farneback
http://www.cvl.isy.liu.se/ScOut/Publications/Papers/iccv01_gf.pdf
he also uses segmentation, but this is not color segmentation, this is
motion segmentation, it is built simultaneously with motion estimation,
that is, the final regions correspond to the regions that move as a whole.

We plan to include some of these implementations into the library pretty
soon, old algorithms (HS, LK, BM) will be thrown away. And to make sure
that we put the best algorithms, we plan to do some extensive
comparison/benchmarking.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 05 дек 2007, 21:21 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
EDV писал(а):
Цитата:
Кстати, в OpenCV по моему 3-4 метода реализовано частично из семейства optical-flow, правда вроде без калибровки.

Ага, вот только работают они не лучшим образом, можете сами убедиться:
http://edv-detail.narod.ru/OpticalFlowEDV.html

Интересная инфа, а что за Proposed Method? Личная разработка, я так понимаю? :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 06 дек 2007, 09:59 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Цитата:
Интересная инфа, а что за Proposed Method? Личная разработка, я так понимаю?

Да, это мой метод «Optical flow” алгоритма. Я уже на эту тему писал, подробности можно посмотреть здесь: Сегментация движений (Motion segmentation)

Вот только разработчиков OpenCV это не заинтересовало:

Цитата:
Anyway, it is very nice to see some alternative approaches.
The problem with segmentation-based algorithms is that they are not
quite robust to some noise or lighting changes - once you draw a
boundary between components, you threw away some information that may be
valuable. Also, there are some kinds of videos where segmentation does
hardly make sense, e.g. medical images, or videos from satellites.

On the other hand, there are some algorithms that try to do segmentation
and optical flow estimation simultaneously, that is, they segment image
into the regions using the motion consistency, rather than color, or
brightness, or texture or whatever.
And once you have such segmentation, you may compute the motion in each
region very accurately using least squares or some robust estimator.

Another possible direction of research is to take a look at 3d
algorithms, i.e. algorithms that consider not only 2 frames, the
previous and the next, but a few frames before and after the current
frame.


В общем, вежливо отклонили моё предложение, так что в новой версии OpenCV этого алгоритма не будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм распознающий препятствия
СообщениеДобавлено: 06 дек 2007, 10:48 
Не в сети
Аватара пользователя

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

Да, это мой метод «Optical flow” алгоритма. Вот только разработчиков OpenCV это не заинтересовало ...skipped...
В общем, вежливо отклонили моё предложение, так что в новой версии OpenCV этого алгоритма не будет.

Может у них уже лучше есть и они его уже включают в OpenCV? Всё-таки люди тоже вроде не профаны... :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


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

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
=DeaD= писал(а):
EDV писал(а):
Может у них уже лучше есть и они его уже включают в OpenCV? Всё-таки люди тоже вроде не профаны... :)


Да, конечно есть, шведский алгоритмGunnar Farneback. Правда он у них сейчас работает не достаточно быстро, но я полагаю они с этим справятся.


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

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


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

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


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

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