Перейти к содержимому
Compvision.ru
brutalis

слежение за объектом и распознание маркеров

Recommended Posts

Приветствую вас, товарищи форумчане. нужна ваша помощь.

есть программа(см. вложение.).

1.нужно получить координаты точек расставляемых на картинке.( с целью удержания их в центре за счет вращения камеры. но это потом)

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

сам не могу это сделать. :(

projekt.rar

video.cpp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот бы увидеть на видео, как выглядят твои стрелочки в реальности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да - документ-то я видел. Но твоя программа - это же не сканер по распознаванию документов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может лучше не стрелочки, а AR маркеры ?

И либы есть готовые: http://www.uco.es/investiga/grupos/ava/node/26

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В такой недостаточной формулировке лучше всего посоветовать обучить классификатор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, ТЗ оставляет желать лучшего. Но маркеры под запрошенные подзадачи подходят :).

В ТЗ должно быть (желательно с иллюстрациями):

1) Цель проекта (что должно получиться в результате, для чего это вообще, и что оно должно делать).

2) Накладываемые ограничения.

2.1) Железо на котором будет выполняться программа.

2.2) Жестко заданные условия (например, жестко определен набор маркеров, ...)

2.3) Язык (среда) реализации.

..................................

2.n) .....

3) Допустимые погрешности, неточность и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, ТЗ оставляет желать лучшего. Но маркеры под запрошенные подзадачи подходят :).

В ТЗ должно быть (желательно с иллюстрациями):

1) Цель проекта (что должно получиться в результате, для чего это вообще, и что оно должно делать).

2) Накладываемые ограничения.

2.1) Железо на котором будет выполняться программа.

2.2) Жестко заданные условия (например, жестко определен набор маркеров, ...)

2.3) Язык (среда) реализации.

..................................

2.n) .....

3) Допустимые погрешности, неточность и т.д.

ТЗ

Исходные данные для разработки

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

1. Обзор работ по решаемой проблеме и постановка задачи по разработке и реализации аппаратно-программного обеспечения системы визуальной навигации вездеходного робота-разведчика

Основные разделы по специальности (в соответствии с требованиями Государственных образовательных стандартов)

2. Исследовательский раздел (материал по исследованию предметной области, предмета проектирования, анализ вариантов решения задач, выбор конкретного варианта):

2.1. Обзор существующих систем визуальной навигации роботов

2.2. Принципы построения систем визуальной навигации роботов

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

3. Специальный раздел (раскрываются все аспекты проектируемой области):

3.1 Разработка архитектуры системы визуальной навигации вездеходного робота-разведчика

3.2. Разработка механизмов доступа к видеокамере и предобработки видеоинформации

3.3. Разработка и реализация подсистемы навигации вездеходного робота-разведчика на базе алгоритма отслеживания множества точек

3.4. Разработка и реализация подсистемы навигации вездеходного робота-разведчика по маякам

По поводу железа. вся обработка ведется на пк. на роботе установлена ip камера(пока это D-Link DCS-932L ).

Реализуем на QT(mingw) с opencv. под винду.

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

ps да это диплом

pss после успешной защиты постараюсь всю расписать и выложить на форуме

Поделиться сообщением


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

Моно SLAM ? Оччень интересная задачка :)

Полезные ссылки:

https://openslam.org/

Отсюда тестил этот:

http://webdiis.unizar.es/~jcivera/code/1p-ransac-ekf-monoslam.html

МАТЛАБовский вариант есть в исходниках, сишный они не выкладывали.

Вот видео работы проги:

http://www.robots.ox.ac.uk/~gk/PTAM/

А если маяки для робота специально развешиваются, то лучше юзать маркеры как я советовал выше.

И еще библиотека для мобильных роботов: http://www.mrpt.org/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

помогите пожалуйста. пытаюсь собрать библиотеки отсюда http://www.uco.es/in...pos/ava/node/26. не собираются.ругается как на картинкеpost-6418-0-69446500-1400088450_thumb.jp. или может я что не так делаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

самому не получается. и сроки уже поджимают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

видеопоток с камеры я получаю так

{

    {

    CvCapture* capture =  cvCaptureFromCAM( KAMIND );// где  KAMIND индекс камеры в системе

    //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    if(capture == NULL)// Если камер не обнаружено

     proverka();assert( capture );


                          cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 320);//1280);

                          cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT,240);//960);

                           int counter=0;

                           char filename[512];

                            while(true){

                                    // получаем кадр

                                    frame = cvQueryFrame( capture );

                                    // показываем


                                     cvShowImage("Video", frame);


                                    char c = cvWaitKey(33);

                                    if (c == 27) {break;} // нажата ESC

                                           else if(c == 13) { // Enter сохраняем кадр в файл

                                            sprintf(filename, "Image%d.jpg", counter);

                                            printf("[i] capture... %s\n", filename);

                                            cvSaveImage(filename, frame);cvSaveImage(filename, dst);

                                            counter++;}}

                            // освобождаем ресурсы

                            cvReleaseCapture( &capture );

                            cvDestroyWindow("capture");cvDestroyAllWindows();

}

где KAMIND индекс камеры в системе. камеру регистрирую через IP Camera DS Filter.

так что камеру можно использовать любую.

обрабатывается потоковое видео с камеры. само видео с камеры не записывал.

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

с точками немного сложнее.

за точками слежу как написанно тут http://recog.ru/library/opencv/opencvtrackingpoint.pdf

мне нужно получить координаты точки(лучше центра масс нескольких точек)и желательно без сильной привязки к цвету т.к. картинка большую часть времени идет чб из-за особенностей используемой нами камеры камеры. из виде могу только самого робота показать.тут ранняя версия робота. первые 6-7 ссылок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

самое просто это взять что то готовое по marker tracking и разобраться как оно работает.

например

http://www.hitl.washington.edu/artoolkit/documentation/index.html

но возможно вам вообще не надо в 3д.(т.е. маркер не может быть под углом)

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

хотя легче даже так

делать detect marker на каждом кадре, и смотреть какой у него размер.

чтобы вам легче было, каждый из ваших "дорожных знаков" вы обрамляете толстой черной квадратной рамкой и ищете на каждом кадре рамки с помощью find rectangles (пример есть в opencv)

что то типа

http://stackoverflow.com/questions/8667818/opencv-c-obj-c-detecting-a-sheet-of-paper-square-detection

http://stackoverflow.com/questions/2068013/finding-location-of-rectangles-in-an-image-with-opencv

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже не знаю, что сказать. Как захватывать видео с камеры - все знают. Про пирамидального Лукаса-Канаде тоже, благо пример с ним уже много лет входит в поставку с OpenCV. Получить координаты точек тоже легко, если была произведена калибровка камеры.

Ты лучше скажи, как тебе помочь? Что сделать? Написать код, работоспособность которого писавший не сможет проверить? А смысл тогда писать? Допустим, кто-нибудь возьмёт и напишет реализацию слежения за маркером и... что? Что он должен дальше делать? Купить робота, чтобы проверить качество написанного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Максимально похожее на Ваше творчество я нашел вот что (не знаю насколько это соответствует тому что Вам нужно, в принципе без цвета тоже должно работать, надо только дескрипторы найти (http://docs.opencv.org/doc/tutorials/features2d/feature_detection/feature_detection.html#feature-detection) ):

RobotProjectOpenCV.pdf

Что касается трекинга и маркеров.

ARToolkitPlus не привязан к OpenCV, нормально компилируется на vs2010 берет на вход картинку с маркером, на выходе матрица трансформации.

Есть набор маркеров, утилита для калибровки камеры, и т.п.

Что то типа такого:

На входе:

post-1-0-36432300-1400580135_thumb.jpg

На выходе:

ARToolKitPlus: CamSize 320 , 240
ARToolKitPlus: Dist.Factor 159.00 139.00 -84.90 0.98


Found marker 31 (confidence 100%)

Pose-Matrix:
0.44 0.36 -0.82 0.00
0.90 -0.22 0.38 0.00
-0.04 -0.90 -0.42 0.00
42.54 57.27 351.50 1.00[/code]

Кое какая документация есть в файле: ART02-Tutorial.pdf в подпапке doc/

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

Программа не простая, даже если плотно работать полгода.

То, что Вы приводите, это что то вроде: "Я знаю как сложить два числа, кто бы по-быстрому объяснил, как решить систему нелинейных диффуров?".

Тут накатом за 2 дня не получится.

Еще посмотрите книжку: http://www.intechopen.com/books/mobile-robots-navigation

Эксперименты (и презентацию к защите сделать) можно с помощью V-REP PRO она бесплатна для образовательных целей. И может работать с OpenCV.

Базовые обучалки здесь (см. ссылки в описании):

(Первое видео серии.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже не знаю, что сказать. Как захватывать видео с камеры - все знают. Про пирамидального Лукаса-Канаде тоже, благо пример с ним уже много лет входит в поставку с OpenCV. Получить координаты точек тоже легко, если была произведена калибровка камеры.

Ты лучше скажи, как тебе помочь? Что сделать? Написать код, работоспособность которого писавший не сможет проверить? А смысл тогда писать? Допустим, кто-нибудь возьмёт и напишет реализацию слежения за маркером и... что? Что он должен дальше делать? Купить робота, чтобы проверить качество написанного?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но ведь маркер надо обнаруживать на видео! А ни у кого на форуме нет видео с маркерами, сделанными камерой робота. Можно ли написать пример обнаружения маркера на видео, не имея при этом видео с маркером? По-моему, нет. А ты как думаешь?

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

1. Какого физического размера должны они быть?

2. Надо ли из вырезать по контуру или прямоугольником, или эллипсом?

3. Снимать камерой с каким фокусным расстоянием, какой оптикой, какой матрицей?

4. Снимать в каких условиях освещённости? Ночью?

5. Камера расположена на какой высоте и под какими углами?

6. Проведена ли калибровка камеры?

7. С какой частотой кадров снимает камера?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2Smorodov: С обычными стрелками есть смысл заморачиваться, если робот после будет участвовать в каких-нибудь соревнованиях, где используются именно такие указатели. Ну или строится прототип автопилотируемого автомобиля, который в будущем будет уметь понимать разметку.

Это да, но я думаю есть смысл заменить детектор на такую "заглушку" для отработки функций управления более высокого уровня.

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

Сам детектор - это что-то вроде "пальца на стопе" его одного далеко не достаточно для управления роботом.

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

А дальше вниз по иерархии заниматься реализацией блоков. Заодно и с постановкой задачи все наладится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но ведь маркер надо обнаруживать на видео! А ни у кого на форуме нет видео с маркерами, сделанными камерой робота. Можно ли написать пример обнаружения маркера на видео, не имея при этом видео с маркером? По-моему, нет. А ты как думаешь?

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

1. Какого физического размера должны они быть?

2. Надо ли из вырезать по контуру или прямоугольником, или эллипсом?

3. Снимать камерой с каким фокусным расстоянием, какой оптикой, какой матрицей?

4. Снимать в каких условиях освещённости? Ночью?

5. Камера расположена на какой высоте и под какими углами?

6. Проведена ли калибровка камеры?

7. С какой частотой кадров снимает камера?

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

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

1.маркеры изначально планировалось делать на листе А4 в виде различных указателей типа срелок но это не принципиально.

2.вырезать не надо.

3.камера D-Link DCS-932L.

4.условия различные. в основном темно.

5.высота и угол изменяемы. тк движется не только робот но и "голова". голова еще и вращается

6.нет

7.окло 30 fps

видео не снимали так как не думали что это важно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот ARToolkitPlus к которому я сделал пример (лежит там же) (OpenGL - ный чайник на маркер клеит).

В текущей конфигурации реагирует на маркеры из папки std-border.

Разрешение камеры - 640х480.

post-1-0-48141700-1400600804_thumb.png

Вам-то нужны, собственно, оси и номер маркера.

Калибровку камеры не делал, там нужно чтобы разрешение совпадало, остальное и так катит, под 320х240 стоял файл LogitechPro4000.dat.

Если большие искажения, то надо калибровать (понимает матлабовский и ARToolkit-овский форматы).

Калибровщики не собирал (лень мне), но проекты для vs6 там есть, они нормально преобразуются в vs2010.

ArToolkitVS2010.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всем доброго времени суток. нашел такую штуку. пытаюсь запустить пример и при компиляции выдается следующееюpost-6418-0-00128900-1400698259_thumb.pn. не подскажите в чем проблема.

пример пытаючь собрать в qt(mingw)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Суда по всему какая то библиотека (.lib файл) не прилинкована к проекту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

с библиотеками разобрался, все собралось. теперь всплыла другая проблемма. при запуске ругается наpost-6418-0-64892100-1400704560_thumb.jp.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×