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

Cfr

Пользователи
  • Количество публикаций

    28
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Cfr


  1. Здесь http://www.artoolworks.com/community/osgart/index.html и здесь http://osgart.org/ можно посмотреть на arttoolkit + OpenSceneGraph. Тема определенно интересная, но слишком не прикладная что ли - узкая.

    А по поводу библиотек трехмерной реальности на базе opencv честно говоря не видел, интересно было бы посмотреть. Мы вот моделировали сцену в ogre и покадрово скармливали ее opencv, т.е. фактически независимая работа 3D-движка и библиотек CV, что не совсем то...

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

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

    Сравнительно новый подход к AR: http://www.robots.ox.ac.uk/~gk/PTAM

    Ориентированный исключительно на развлечения http://www.openframeworks.cc/ (есть биндинги к opencv и artoolkit)


  2. OpenCV, в отличие от Ipl, не поддерживает битовые изображения, как я понял из инструкции, так что придется собирать битовый массив самому. Точки можно доставать при помощи команды:

    CvScalar cvGet2D(const CvArr* arr, int idx0, int idx1);

    где arr - указатель на изображение, idx0 - x координата, а idx1 - y координата.

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

    Вроде бы CvGet2D тоже не поддерживает.

    Битовые изображения (и даже кодированные по длине) поддерживает библиотека http://camellia.sourceforge.net/

     #include <opencv/cv.h>
    
     #include <opencv/highgui.h>
    
     #include <camellia.h>
    
    
     int main() {
    
    	 CamImage *i = (CamImage*)cvLoadImage("./1.png", CV_LOAD_IMAGE_GRAYSCALE);
    
    	 CamImage t;
    
    	 camAllocateImage(&t, i->width, i->height, CAM_DEPTH_1U);
    
    
    	 camThreshold(i, &t, 100);
    
    
    	 camSavePGM(&t, "./1.bin.pgm");
    
    
    	 IplImage *b = cvLoadImage("./1.bin.pgm");
    
    	 cvNamedWindow("thr");
    
    	 cvShowImage("thr", ;
    
    	 cvWaitKey(0);
    
     }[/code]

    Хотя, не нашел как преобразовать битовое изображение в серое (кроме идиотского сохранить-загрузить) :)

    BTW, а зачем нужна битовая матрица? Чем не подходит байтовая или с числами с плавающей точкой (масштабированная к нулям и единицам)?


  3. OpenCV можно прикрутить к Matlab каким-то образом насколько я знаю... А нет ли подобных бесплатных аналогов которые можно использовать с OpenCV? Типа SciLab... Может такие возможности есть в последних версиях OpenCV?

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

    Есть биндинги OpenCV к Octave (частично совместима с Matlab) и Python (тут есть NumPy, SciPy и еще куча пакетов для научных вычислений).


  4. Ни как не могу запустить программу на другом компьютере где нет среды Builder С++.

    Что только не делал...

    Смотрел чего не хватает через Dependency Walker все dll на месте,

    И копировал все bpl, и компилировал без run time pakage. Ни как не хочет запускаться ((

    Что делать?

    Перейти уже на нормальные средства разработки :)


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

    Надо строить модель движения.


  6. Я любитель и мне эта тема очень интересна, жаль что я не могу послушать лекцию=(

    Если вам не трудно не могли бы вы посоветовать материал по этой теме?

    AR --- раздел 3D-зрения, лучшими теоретическими источниками будут [1] и [2]. Ну, это чтобы полностью всё понять, на практике хватит разобраться с главами по 3D проекциям и калибровке камеры в [3] + почитаться статьи (хотя бы википедию) про способ ARToolkit [4]. Кстати, английская страница википедии вроде неплохо всё освещает [5].

    Сейчас всё больше хотят перейти на AR без маркеров, для этого пробуют vSLAM (самая известная OSS-система -- monoSLAM [6]) и алгоритмы SFM (например, Bundle Adjustment, есть открытая софтинка PTAM [7]). Кстати, диссертация автора PTAM [8] содержит прекрасный обзор современного состояния AR.

    В сети можно найти массу туториалов и курсов, мне очень понравился [9] (отличное краткое введение в 3D трекинг) и [10]. Книги, полностью посвященные AR не смотрел.

    Лучше всего, если есть по-настоящему научный интерес, прочесть [1], если исключительно инженерный, поковырять ARToolkit и PTAM, хотя с последним будет сложно без науки разобраться :)

    [1] http://www.robots.ox.ac.uk/~vgg/hzbook/index.html

    [2] http://mitpress.mit.edu/catalog/item/defau...2&tid=10195

    [3] Стокман, Шапиро ``Компьютерное Зрение''

    [4] http://www.hitl.washington.edu/artoolkit/

    [5] http://en.wikipedia.org/wiki/Augmented_reality

    [6] http://www.doc.ic.ac.uk/~ajd/Scene/download.html

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

    [8] http://www.robots.ox.ac.uk/~gk/publication...n2006Thesis.pdf

    [9] http://130.203.133.121:8080/viewdoc/summar...=10.1.1.84.8498

    [10] http://campar.in.tum.de/Far/AugmentedRealityIISoSe2004


  7. Фильтр Кальмана - это прежде всего фильтр.

    Он не может предсказывать, но за то, может откорректировать то что Вы намеряли (рассчитали).

    Вы же определяете координаты объектов в текущий момент времени.

    Так-же можно определить положения и в следующий момент.

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

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


  8. А что вы думаете о задаче дополнения реальности (Augmented reality)? Недавно обнаружил, что большое количество маленьких и довольно больших проектов начинает выпускаться в которых используется дополнение реальности. К примеру тот проект от PleyStation о котором я писал на форуме http://www.compvision.ru/forum/index.php?showtopic=143. На западе идет активное изучение данной темы. Многие крупные компании так же ведут разработку, судя по их рекламным роликам.

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

    Кстати, если кто из Петербурга, скоро буду читать лекцию по AR (классический алгоритм как в ARToolkit + немного BundleAdjustment и SLAM), если интересно -- пишите в личку/cfr.ssvATgmail.com.

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

    Если же специализироваться только на детекторе движения, то шанс небольшой есть. Продавать его как библиотеку, как продаются библиотеки для распознавания лиц, авто и ж/д номеров и т.п. Но тут веб-камерой никак не обойтись.

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

    Ну, где ж найти такую работу? :) Я бы с удовольствием устроился (конечно, если это не институт с <10K зарплатами).

    Полнофункциональную --- в каком смысле? Раньше (хотя бы 3 года назад), когда не было OpenCV и других открытых библиотек с реализациями AdaBoost, смесей гауссианов, фильтров Калмана и MCMC, было сложно. А сейчас, это даже бакалавр сделает.


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


  10. Не знаю, как вы получили решение, но для перспективной проекции их 8 штук (4 перед камерой).

    Проблема прекрасно изучена и называется P3P.

    Чаще всего решается оптимизацией (обычно, Гаусса-Ньютона), хотя для этого желательно знать приближенное значение, иначе можно уехать в одно из трех "ненастоящих". Можно как-то выбирать из четырех аналитических. Можно воспользоваться слабо-перспективной проекцией, хотя точность не очень высока (только когда объект достаточно далеко от камеры).

    Вообще, P4P и старше прекрасно решаются, в OpenCV есть алгоритмы.


  11. Есть пара шикарных книг на английском, почти уже классика:

    Hartley & Zisserman http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook1.html

    Faugeras & Luong http://www.amazon.com/Geometry-Multiple-Im...tion/0262062208

    Можно своровать на гигапедии. На русском есть немного в Современном подходе, но я не стал бы её советовать.

    Вообще задача хорошо решена если не в реальном времени, MS уже вводят сервис типа Photo Tourism. Если покопаться, в интернете можно найти много исходников по реконструкции, например IBVH: http://people.csail.mit.edu/wojciech/


  12. Стереозрение для одной камеры -- Structure from motion :)

    В частности, как заметил Smorodov, можно сдвигать камеру и определять её координаты относительно первой (например, гомографией).


  13. Накопал в GIMP'е такой интересный эффект "постеризации" изображения (Colors->Posterise).

    Сразу прикинул, что это можно неплохо заюзать в удалении шумов :)

    Естественно, что многие(все?) алгоритмы усреднения удаляют шумы. Только, тут совсем много информации теряется, лучше гауссианом ;)

    Как указал Smorodov, похожие вещи применяются в сегментации, например, суперпикселы в легендарной "Automatic Image Popup".


  14. Накопал в и-нете интересный документик (к сожалению без титульного листа, поэтому автора не указываю):

    У нас это часто называют математической лингвистикой, а за рубежом -- вычислительной лингвистикой [1].

    Данная область достаточно сильно связана с декларативным программированием ;)

    Меня немного интересуют искуственные языки, например, Ложбан [2]

    [1] http://en.wikipedia.org/wiki/Computational_linguistics

    [2] http://ru.wikipedia.org/wiki/%D0%9B%D0%BE%...%B1%D0%B0%D0%BD


  15. Я пользователь джаббера, но в настройках сервера ничего не понимаю.

    Достучаться до xmpp://compvision.ru через gtalk(в pidgin) мне не удалось, не создать комнату и, видимо, сообщение до smorodov@compvision.ru не дошло.

    Может, нужен транспорт?

    Я добавил запись cfr@compvision.ru, вроде зарегистрировался, но создать комнату и доставить сообщение всё равно не удалось :(

    UPD: хотя, себе сообщение могу отправить :)


  16. Кстати, можно поподробнее про SVM (и скрытые марковские модели) в opencv? Что-то в хелпе их вроде не видел...

    По SVM/HMM смотрите /usr/include/opencv/ml.h (или где у вас заголовочные файлы opencv). Внятных примеров по этому поводу не встречал >_>

    В хелпе есть -- в разделе MachineLearning.

    С вейвлетами инвариантность к вращению обычно достигается (по крайней мере, так с вейвлетами Габора) за счет применения повернутого ядра :(

    Мало игрался с Виола-Джонс, не знаю как там это делается.


  17. подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры...

    как вытянуть мин/макс? cvMin?

    RTFM для обычного доступа.

    Удобно использовать макросы: CV_IMAGE_ELEM(img, uchar, i, j)

    cvMinMaxLoc для максимума и минимума.

    Изображение можно нормализовать.


  18. Начинать нужно было с простейшей задачи - выявить на изображениии лицо.

    Насколько я понимаю, SURF (SIFT) позволяет найти эталон на изображении. А если все объекты относятся к одному классу (например, самолет) и имеют сходные внешние контуры (хвост, фюзеляж, крылья), но ключевые точки для каждого будут разными (или я не прав), то эти методы не сработают (не делать же для каждой модели самолета свой эталон). А алгоритм Виола-Джонса, если я правильно понимаю, позволяет получить именно некий нечеткий эталон для определенного класса объектов. Поэтому продолжил копать в этом направлении. Или я не прав? Тема для меня новая абсолютно

    Да, с SIFT/SURF всё правильно, он точно поможет найти уже существующие в базе объекты, с классификацией это, на самом деле, не особо связано.

    Гугл подсказывает, часто используют SVM и HMM (не знаю, с какими фичами), в OpenCV они есть.

    Получается вроде здорово ^_^b


  19. Может отсюда что нибудь сгодится?

    Distinctive Image Features from Scale-Invariant Keypoints

    Вроде у них по образцу на примерах очень неплохо работает.

    Дык, SURF -- штука аналогичная SIFT, но не запатентованная. И работает быстрее.


  20. Ага, похоже вы занимаетесь Automatic Image Annotation :(

    Есть, как минимум, один проект подобного рода на OpenCV Annotator, к сожалению без исходников.

    А почему вы используете Виола-Джонс? Этот алгоритм, похоже не самый популярный в данной задаче...

×