Jump to content
Compvision.ru

Smorodov

Главные администраторы
  • Content count

    3,833
  • Joined

  • Last visited

  • Days Won

    343

Everything posted by Smorodov

  1. Базовый проект OpenCV + CUDA

    Время обработки одного кадра: GPU Geforce8200 (встроенный) 0.05-0.06 ms CPU Athlon x 2 5000 примерно 10 ms Померять можно так: //До кода ставим: // Создаем и запускаем таймер unsigned int timer = 0; cutilCheckError(cutCreateTimer(&timer)); cutilCheckError(cutStartTimer(timer)); //--------------------- // Измеряемый код //--------------------- // После кода ставим: // Останавливаем и освобождаем таймер cutilCheckError(cutStopTimer(timer)); printf("Processing time: %f (ms) \n", cutGetTimerValue(timer)); cutilCheckError(cutDeleteTimer(timer));[/code]
  2. Как прикрутить OpenCV к билдеру?

    Вроде и без них нормально работает , картинки, во всяком случае грузит нормально. Создание проекта ничем не отличается от Builder 6.
  3. Не очень в теме, а что еще должно быть? Есть тут еще что то: http://mytts.forum2x2.ru/
  4. Программка калибрующая камеру

    Не работает, так как рассчитано на то, что Builder 6 установлен (это его библиотеки). Можно скачать отсюда и бросить в папку с программой: http://smorodov.narod.ru/Downloads/Libs.zip Если чего не хватит, можно в инете найти и в папку с программой бросить.
  5. Поправлю опечатку гугл находит "Loquendo". Скачать пощупать можно здесь (торрент): http://torrents.ru/forum/viewtopic.php?t=1177463
  6. Алгоритм Вороного

    Спасибо, интересный файлик. Вот залил: OnTheApplicationOfVoronoiDiagramsToPageSegmentation.pdf
  7. Про углы здесь : http://www.compvision.ru/forum/index.php?a...=post&id=87 Про собственные значения и собственные векторы : http://elib.ispu.ru/library/math/sem1/pyartli1/node79.html
  8. Можно звук в вейвлет, а вейвлет OpenCV скормить. Вообще слышал что для распознавания звуков скрытые марковские модели применяют.
  9. Мне думается так: 1) MeanShift + предположение о том где будет объект после пересечения (исходя их текущего вектора скорости) 2) Здесь чисто отделение движущихся объектов от статичной фотографии (машины которые не отслеживаюся сфотканы). 3) MeanShift + оптический поток. Точки - это так называемые GoodFeaturesToTrack или просто "угловые" точки. Используются для разделения объектов в трудных ситуациях.
  10. Поиск точки от лазерной указки

    В OpenCV нет этой функции, это моя реализация, причем достаточно прямолинейная Конечно лучше искать решетом, а потом методом дихотомии или попиксельным сканированием (вопрос оптимизации) находить границы и центр. Может так получиться (при определенном диапазоне размеров изображения), что найти координаты ненулевых точек в сплошных блоках памяти будет быстрее чем извлекать отдельные точки, особенно принадлежащие вертикальным линиям.
  11. Алгоритм Вороного

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

    Точно не могу сказать, но думаю что это они "потресканную" поверхность так называют (то что коме скелета), переводится как "корка" или "литосфера", видимо из геологии пришло.
  13. Под Интелами наверное лучше работают, а так у меня например AMD, слышал, что на процах для наладонников тоже идет.
  14. Как прикрутить OpenCV к билдеру?

    Все собралось и подключилось (с либами из этой темы (см. выше), часть на которые он ругался (говорил что нет dll libjasper, libjpeg, libpng и тп.) удалил). Поищу завтра как подключить их обратно, а пока вот
  15. Как прикрутить OpenCV к билдеру?

    Попробую завтра поставить BDS2009 (еще скачать надо) посмотрю что там не так.
  16. Да, cv* функции намного быстрее работают, их еще интелловцы оптимизировали на глубоком ассемблере (лучше сделать очень сложно), они как раз для однотипных операций над большими объемами данных придуманы.
  17. Как прикрутить OpenCV к билдеру?

    Такие ошибки могут быть реакцией на функцию cvGetSize(), хоть у willowgarage и написано что её можно заставить работать, выставив совместимость с MS VC, но у меня на шестом билдере выдает ошибки лучше использовать cvSize(ширина, высота). А вообще надежда есть, там они упоминают BDS2006 : http://opencv.willowgarage.com/wiki/C%2B%2BBuilder Посмотрите отладчиком, в какой строке возникает ошибка. Приведите кусок кода. PS: Попробуйте собрать самый минимальный проект + убрать вывод на форму (вывод делать в стандартное окно OpenCV). PS:PS: Библиотеки вроде должны и с этого форума подходить.
  18. Как прикрутить OpenCV к билдеру?

    Пока могу сюда перенаправить: http://www.qtcentre.org/forum/f-qt-program...tion-11655.html
  19. Может эта команда больше подойдет?: cvAbsDiff А дырки и залить можно floodfill есть для этого. Можно заливать фон, где нибудь в углу брать точку и заливать каким-нибудь цветом, а потом что не этим цветом заменить на второй цвет - это и будет тело.
  20. Рубить надо как раз разницу (отсечь то что меньше порога) функцией cvThreshold( gray, gray, Val,255,CV_THRESH_BINARY); а не маску. Маска получается после бинаризации (это и есть процесс "обрубания" по порогу) разницы. В простейшем случае это делается для каждого канала и получившиеся маски объединяется по "или" командой cvOr, в более сложных случаях необходимо работать с векторами. Маска, это бинарное изображение, где интересующие нас участки содержат "1" , а не интересующие "0". Во многих функциях OpenCV, например в cvCopy, есть параметр mask, определяющий, над какими точками производить действие, а какие не трогать. Выравнивать гистограмму надо на всех цветовых слоях и у фона и у захваченного изображения, этим можно уменьшить (но не исключить) влияние освещенности. Это самый простейший случай. Отдельные компоненты цвета могут совпадать у разных цветов. Возможное решение - переход на другую цветовую схему, например HSV. (насчет необходимости выравнивания гистограммы в данном случае (HSV) сомневаюсь) Сделать можно так (фрагмент кода) cvCvtColor( rgb_image, hsv_image, CV_BGR2HSV ); if(!h_plane_obj) h_plane_obj = cvCreateImage( cvSize(rgb_image->width,rgb_image->height), 8, 1 ); if(!s_plane_obj) s_plane_obj = cvCreateImage( cvSize(rgb_image->width,rgb_image->height), 8, 1 ); if(!v_plane_obj) v_plane_obj = cvCreateImage( cvSize(rgb_image->width,rgb_image->height), 8, 1 ); // Выделили память // Разобьем hsv по компонентам cvCvtPixToPlane( hsv_image, h_plane_obj, s_plane_obj, v_plane_obj, 0 ); Фрагмент преобразует RGB изображение в HSV и разбивает по цветовым плоскостям. Про цветовые схемы смотреть здесь: http://www.mandelbrot-dazibao.com/HSV/HSV.htm Как видно из иллюстраций, компоненту V (value) - интенсивность можно не учитывать, или дать больший порог бинаризации. И вот еще кусочек книжки, там про отделение фона: BackGroundSubtraction.pdf
  21. Насчет "выровнять гистограмму" это надо cvEqualizeHist( gray, gray ); сделать. Насчет бинаризации после вычитания, идея такая: Мир непостоянен, меняется освещенность, тени, электроны в детекторе , соответственно если смотреть чистую разницу, то получим белый шум малой амплитуды, но тем не менее, мешающий нам создать маску. Если обрубить разность по некоторому порогу, то можно избавиться от большой части мусора. Если к этому добавить видеоаккумулятор, то должно получиться не хуже чем iChat.
  22. У меня возникло предположение, что нужно бы яркость и цвета корректировать, гистограмму например ровнять , и потом после вычитания бинаризировать. Правда, если фон не очень отличается от Вас по цвету - будут дырки. Работать лучше через видеоаккумулятор (точек и др. помех намного меньше будет). Еще один параллельный компилятор для GPU (NVidia выше 5200 и ATI): http://graphics.stanford.edu/projects/brookgpu/lang.html
  23. Ну, у того чела все просто. Фон у него синий какой нибудь, а дальше шаблоним голову и фон (по инверсии маски). На голове синих точек нет, поэтому легко отделить (даже с плохой камерой). Как будет побольше времени сворганю пример. Сейчас связку CUDA+OpenCV+OpenGL пытаюсь соорудить, больно уж заманчиво. Такие фильтры можно делать
  24. Под каждую задачу свои требования, но определенные зависимости есть: Чем выше разрешение, тем выше качество изображения и , следовательно больше информации надо переваривать программе. В некоторых задачах это необходимо, но большое количество систем машинного зрения в таких случаях обходится анализом фотографий, сделанных цифровым фотоаппаратом. Во многих случаях, для улучшения качества работы алгоритмов, изображение сглаживается, так зачем тогда высокое разрешение (в разумных пределах)? Из недостатков существенно влияющих на качество работы алгоритмов машинного зрения можно отметить: Мешает шум (особенно при малом разрешении), и плохая контрастность (разрешение по цвету), в некоторых случаях, мешает также, маленькая частота кадров при малой освещенности (не существенно в промышленных применениях, так как освещенность там, как правило, настроена оптимально). Думаю что веб-камеры с разрешением 640х480, на настоящий момент, оптимальны для сопряжения с современными компьютерами (для большинства задач).
  25. распознавание движушегося фона

    Это разреженный оптический поток, границы контуров получить не выйдет, Вам нужен плотный ОП (dense optical flow), поэтому я и дал ссылки на CUDA-библиотеки для работы с оптическим потоком. Он такие векторы в каждой точке изображения вычисляет. Как вариант можно рассмотреть использование шаблонов движения .
×