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

Recommended Posts

На сайте есть собственный jabber сервер.

Подключайтесь smile.gif

Формат адреса: ваш_ник@compvision.ru

Рекомендуемые программы-клиенты:

Miranda http:www.miranda-im.org

Trillian http:www.ceruleanstudios.com

Psi http:psi-im.org

Gaim/Pidgin http:www.pidgin.im

Здесь обсуждается статья: Jabber сервер на compvision.ru

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


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

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

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

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

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

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

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


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

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

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

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

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

Вот что пишет хостинг-провайдер:

Некоторые Jabber клиенты требуют указать этот адрес в явном виде.

Доступен Jabber сервер, принимающий соединения на любых TCP портах (например, даже стандартный порт 80 или 443).

Его адрес содержит в себе имя allports . Попробуйте порт 443.

Прямые адреса серверов:

jabber-l4.1gb.ru

jabber1-allports.1gb.ru

Скорее всего, с них достучаться получится.

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


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

Какие камеры используют для компьютерного зрения?

Какие вообще классы камер? Например вот, с веб камерами можно работать? Или они категорически не приемлемы в компьютерном зрении?

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


Ссылка на сообщение
Поделиться на других сайтах
Какие камеры используют для компьютерного зрения?

Какие вообще классы камер? Например вот, с веб камерами можно работать? Или они категорически не приемлемы в компьютерном зрении?

Под каждую задачу свои требования, но определенные зависимости есть:

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

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

Из недостатков существенно влияющих на качество работы алгоритмов машинного зрения можно отметить:

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

Думаю что веб-камеры с разрешением 640х480, на настоящий момент, оптимальны для сопряжения с современными компьютерами (для большинства задач).

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


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

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

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

Из недостатков существенно влияющих на качество работы алгоритмов машинного зрения можно отметить:

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

Думаю что веб-камеры с разрешением 640х480, на настоящий момент, оптимальны для сопряжения с современными компьютерами (для большинства задач).

Кстати, да, а что делает сглаживание? Усредняет точки в пределах определённой окружности?

Я почему создал эту тему.. Захотел я сделать вот такое:

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

Ну и фиг там оказалось. Срабатывает где-то в 2% случаев из кадра :) Как ты и видел наверное из темы http://www.compvision.ru/forum/index.php?showtopic=88 - камеру я использую - дай боже.. Качество отвратительное. И видишь как скачут эти пиксели. Естественно их не получится сравнивать попиксельно (как я и сделал при поиске разницы между кадрами).

Но обрати внимание на то, что у того человека (выше ссылка на ютьюб) изображение (самого человека) - также моргает "попиксельно". Абсолютно также! Но как же он выделил так чётко разницу? :)

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


Ссылка на сообщение
Поделиться на других сайтах
Кстати, да, а что делает сглаживание? Усредняет точки в пределах определённой окружности?

Я почему создал эту тему.. Захотел я сделать вот такое:

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

Ну и фиг там оказалось. Срабатывает где-то в 2% случаев из кадра :) Как ты и видел наверное из темы http://www.compvision.ru/forum/index.php?showtopic=88 - камеру я использую - дай боже.. Качество отвратительное. И видишь как скачут эти пиксели. Естественно их не получится сравнивать попиксельно (как я и сделал при поиске разницы между кадрами).

Но обрати внимание на то, что у того человека (выше ссылка на ютьюб) изображение (самого человека) - также моргает "попиксельно". Абсолютно также! Но как же он выделил так чётко разницу? :)

Ну, у того чела все просто. Фон у него синий какой нибудь, а дальше шаблоним голову и фон (по инверсии маски).

На голове синих точек нет, поэтому легко отделить (даже с плохой камерой). Как будет побольше времени сворганю пример.

Сейчас связку CUDA+OpenCV+OpenGL пытаюсь соорудить, больно уж заманчиво. Такие фильтры можно делать :)

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


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

Ух.. ну так не интересно с фоном! :) Так и я, возможно, смогу.

Кстати, у него есть исходники какие-то: http://ehci.googlecode.com/files/background.tar.gz (SDL + OpenCV. В линуксе у меня собралось отлично.)

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

Наверное интереснее даже - себя отделять по цветовому диапазону кожи. Но прийдётся перед камерой позировать голым :)

А вот видюха ещё интересная:

на 0:24. Вот тут с (вебки ли?) ищется именно разница фреймов (с человеком и текущим - без него).

Что там за камера на Макинтошах - понятия не имею.. Но неужели она чем-то особо отличается от обычных вебок? Такие же помехи даёт наверное.. но они как-то справляются с таким алгоритмом - не представляю даже как. Одно дело если камера не жонглирует так пикселями как моя.. :)

PS CUDA, это обработка вычислений за счёт проца на видюхе? Хорошая вещь должно быть. Только наверное многие пользователи не смогут воспользоваться такой программой. ATI Radeon'щики, невладельцы GeForce ниже 8го поколения.. Не знаю даже, большая ли это группа. :)

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


Ссылка на сообщение
Поделиться на других сайтах
Ух.. ну так не интересно с фоном! :) Так и я, возможно, смогу.

Кстати, у него есть исходники какие-то: http://ehci.googlecode.com/files/background.tar.gz (SDL + OpenCV. В линуксе у меня собралось отлично.)

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

Наверное интереснее даже - себя отделять по цветовому диапазону кожи. Но прийдётся перед камерой позировать голым :)

А вот видюха ещё интересная:

на 0:24. Вот тут с (вебки ли?) ищется именно разница фреймов (с человеком и текущим - без него).

Что там за камера на Макинтошах - понятия не имею.. Но неужели она чем-то особо отличается от обычных вебок? Такие же помехи даёт наверное.. но они как-то справляются с таким алгоритмом - не представляю даже как. Одно дело если камера не жонглирует так пикселями как моя.. :)

PS CUDA, это обработка вычислений за счёт проца на видюхе? Хорошая вещь должно быть. Только наверное многие пользователи не смогут воспользоваться такой программой. ATI Radeon'щики, невладельцы GeForce ниже 8го поколения.. Не знаю даже, большая ли это группа. :)

У меня возникло предположение, что нужно бы яркость и цвета корректировать, гистограмму например ровнять :), и потом после вычитания бинаризировать. Правда, если фон не очень отличается от Вас по цвету - будут дырки. Работать лучше через видеоаккумулятор (точек и др. помех намного меньше будет).

Еще один параллельный компилятор для GPU (NVidia выше 5200 и ATI): http://graphics.stanford.edu/projects/brookgpu/lang.html

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


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

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

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

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

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


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

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

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

Насчет "выровнять гистограмму" это надо cvEqualizeHist( gray, gray ); сделать.

Насчет бинаризации после вычитания, идея такая:

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

Если к этому добавить видеоаккумулятор, то должно получиться не хуже чем iChat.

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


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

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

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

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

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

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

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


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

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

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

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

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

Рубить надо как раз разницу (отсечь то что меньше порога) функцией 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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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 ) {

....

}

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

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


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

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 ) {

....

}

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

Может эта команда больше подойдет?: cvAbsDiff

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

А.. ну тогда понятно. Хотя я почему-то так и думал :)

Кстати, а скомпиленные проги с использованием OpenCV работают под любыми процессорами?

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


Ссылка на сообщение
Поделиться на других сайтах
А.. ну тогда понятно. Хотя я почему-то так и думал :)

Кстати, а скомпиленные проги с использованием OpenCV работают под любыми процессорами?

Под Интелами наверное лучше работают, а так у меня например AMD, слышал, что на процах для наладонников тоже идет.

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


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

Клёво оптимизировали, не задев особенностей архитектуры :)

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


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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×