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

ProgerX

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

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

  • Посещение

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


  1. Или floodfill в OpenCV только начальную точку надо указать и точность заливки, то есть какой диапазон цветов считать одним цветом.

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

    Изначально задаём необходимое количество цветов (финальное, которое будет в постеризованном изображении), ну и используя поиск ближайшего цвета в палитре: http://algolist.manual.ru/graphics/find_col.php чего-нибудь делаем для достижения результата :)

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


  2. Спасибо за туториал!

    Я думаю для кроссплатформенной работы со звуком PortAudio подойдёт.. хотя не работал с ним ещё. Только выполнил пару примеров снятия микрофонного звука и проигрывания его.. работает :)


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

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

    А какой алгоритм может быть у такой штуки?

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


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


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

    Тоже верно, конечно :)

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


  6. mmsystem.h - это виндовый заголовок (часть winAPI), отвечающий за мультимедиа. Звуки воспроизводить он умеет тем же способом (через API). Класс нашел в инете, подробно не изучил, еще.

    А непосредственно захват звука что производит? OpenCV или WinAPI?


  7. Поправлю опечатку гугл находит "Loquendo".

    Скачать пощупать можно здесь (торрент): http://torrents.ru/forum/viewtopic.php?t=1177463

    ёёёмоё... послушал демо - это просто нечто! Последний раз когда я игрался с разными Speech API от майкрософта... :) Ну в общем, это просто несравнимо.

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


  8. Кстати, а когда работают с "бинокулярным зрением" (когда используют две и более камеры), обязательно ли нужно, чтобы эти камеры были идентичными моделями или нет? Просто я так представил человека с разными глазами.. но с другой стороны, разное зрение у глаз одного человека - бывает :)


  9. Погоди, а в OpenCV даже аудиозахват есть? Фигасе.. пошёл срочно изучать эту тему! :)

    А "mmsystem.h" для чего используется? (подключено, по крайней мере :) ). А воспроизводить и генерировать звуки оно не умеет случаем?


  10. А MeanShift это что?

    Читал описание функции "GoodFeaturesToTrack", по-моему на этом сайте скачанном.. :)

    GoodFeaturesToTrack

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

    А что понимается под сильными угловыми точками и вообще собственными числами?


  11. Под такими системами слежения за объектами я понимаю что-то типа такого:

    Причём, "изображение" людей тут пересекаются, при этом система продолжает отлично функционировать и следить.

    Вот ещё понравилось такое видео:

    Система следит за машиной, а когда из неё выходит человек, система следит за обеими объектами :)

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

    Вот ещё наглядное видео с какими-то отмеченными точками на объектах:

    А какими способами достигается подобное?

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


  12. Есть ли вообще какие-то среды разработки для распознавания речи?

    Может даже OpenCV что-то умеет в подобном направлении?

    В принципе распознавание образов, наверное, одно для всех, а основа здесь - это предобработка полученных данных. А дальше уже кластеризировать образы - кто во что горазд :)


  13. А ещё сходу придумать можно такое:

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

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


  14. Я вот могу предложить некоторый алгоритм поиска подобной точки (непосредственно поиска центра).

    Строим решётку по всей плоскости. Расстояния между точками должны быть такими, меньше которого точка у нас не поместилась бы.. Таким образом мы быстро натыкаемся на нашу точку (определяем например по порогу). После того как мы определили любую точку нашего лазера - в разные стороны запускаемся попиксельно (проверяя где пятно==цвет ещё существует). После мы получаем минимум по Х, по У и их максимумы. Делим пополам - получаем центр.

    Интересно, в OpenCV алгоритм оптимальнее? :)

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


  15. По заливке сложно представить как я буду угадывать - фон это или тело..

    По поводу cvAbsDiff - да это тоже самое, наверное, в принципе.. Только его надо разово применить, а далее обрабатывать полученный массив разниц. В чём отличие этих cv* функций, они быстрее? Я просто смотрю, что много в OpenCV есть таких функций, которые есть, в принципе, везде :) И зачем они их только наделали :) может они быстрее работают, чем возможные мои реализации подобных функций..

    Кстати, сейчас запустил эту программу. Подрегулировал баланс белого - и почти отлично стало!

    Баланс я как регулировал.. Поднял saturation до потолка - так отлично видно как пиксели скачут. И далее поймал такой баланс, где амплитуда скачков минимальна.. ну и вот - уже смотрибельно :) Дырки некоторые есть, но для начала сойдёт!

    Тем более что никакую цель я не преследую сейчас. Исключительно научиться работать с камерой и OpenCV. Да и плюс к тому - я ещё ни HSV не использовал, ни видеоаккумулятор, поэтому всё ещё впереди! А для начала - вполне!


  16. Кстати, попробовал сделать вот так:

    c1 = cvGetAt( bgWithoutFace, i, j );

    c2 = cvGetAt( currentFrame, i, j );

    int dSum = abs( c1.val[ 0 ] - c2.val[ 0 ] ) + abs( c1.val[ 1 ] - c2.val[ 1 ] ) + abs( c1.val[ 2 ] - c2.val[ 2 ] );

    if ( dSum < 30 ) {

    ....

    }

    чё.. весело :) Хотя бы уже что-то. Получаем вырезание себя и вклеивание на фон, только у "себя" дырки в теле частенько появляются внушительных размеров :)


  17. >> Рубить надо как раз разницу (отсечь то что меньше порога)

    Т.е. мы фоновое изображение и текущий кадр разбиваем на 3 отдельные компоненты и сравниваем их между собой.

    При этом разницу мы ищем так? "компонента1 - компонента2" => разница. Но если разница получится отрицательной.. Возьмём её по модулю, получим: Abs( comp1 - comp2 )

    так? А потом именно такую разницу мы срезаем по порогу?

    Если разница больше порога => принимаем разницу (ставим в маску еденицу), иначе за разницу это не считаем (т.к. незначительно :) ) - ставим ноль на текущую позицию пикселя в маске.

    Соответственно мы получаем 3 маски (для трёх компонент своя).

    Потом 3 компоненты мы объединяем через логический операнд OR и получаем одну финальную маску.

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

    Правильно ли я пока что понимаю процесс?

    Кстати, маску хранить где удобнее всего? В двумерном массиве?


  18. Я, действительно, чистую разницу и смотрел, поэтому ничего и не получил положительного..

    Не понял с "обрубить маску по порогу". А как же обрубить её?

    Честно говоря, не уловил ещё общий ход алгоритма..

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

    А на основе чего же рубить маску? :) Среди бинарной инфы мы ведь не выберем где шум, а где не очень..


  19. А что такое "выровнять гистограмму"? :) Бинаризировать после вычитания? Вот тут не понял идеи.. По началу я подумал, что изначально оба фрейма бинаризировать (по определённому порогу), а потом сравнивать их. Правда.. рискованная операция :)

    Попробую поработать с видеоаккумулятором.

    PS говорят, что iChat (выше ссылка про 0:24 :) ) работает с любыми вебками. И говорят, что довольно успешно..

×