roboforum.ru

Технический форум по робототехнике.

Сегментация движений (Motion segmentation)

Сегментация движений (Motion segmentation)

Сообщение EDV » 06 июн 2007, 15:29

Здравствуйте.

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

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

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

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

Изображение
http://edv-detail.narod.ru/vm0001.jpg

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

Я испробовал три способа:

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

Изображение
http://edv-detail.narod.ru/m1vm0001.jpg

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

Изображение
http://edv-detail.narod.ru/hist0001.jpg

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

Исходное сегментированное изображение:

Изображение
http://edv-detail.narod.ru/m3seg0001.jpg

После объединения похожих фрагментов:

Изображение
http://edv-detail.narod.ru/m3fseg0001.jpg

К сожалению и тут результаты не радуют.

  Ну вот, хочу с вами посоветоваться, может в вашей практике встречались подобные задачи,
и вы можете посоветовать что-нибудь полезное по данной тематике.
Последний раз редактировалось EDV 12 июл 2007, 17:08, всего редактировалось 1 раз.
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Сообщение Master » 06 июн 2007, 16:52

Боюсь в этой области вы самый продвинутый на этом форуме. Т. к. это ваша работа, а здесь в основном любители. Я максимум что делал так это следил за перемещением пятна от лазерного фонарика.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение EDV » 06 июн 2007, 17:49

Боюсь в этой области вы самый продвинутый на этом форуме. Т. к. это ваша работа, а здесь в основном любители. Я максимум что делал так это следил за перемещением пятна от лазерного фонарика.


Ну, это навряд ли, я сам занимаюсь компьютерным зрением всего то около двух лет, и это не моя основная работа, а хобби. Компьютерное зрение очень уж сложная тема, так что не так то я в ней продвинулся за это время  :D
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Re: Сегментация движений (Motion segmentation)

Сообщение =DeaD= » 06 июн 2007, 20:05

Добрый день!

EDV писал(а):Мне удалось разработать вполне приемлемый алгоритм расчёта карты векторов движений
пикселей в видеопоследовательности, но извлечь от туда границы объектов пока не удаётся.

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

Гипотеза - если на выходе алгоритма кроме векторов выдавать еще и скаляр "качество распознавания вектора", который у вас скорее всего сгенерировать проще простого, то применив к полученной карте "неопределенности направления" несложные преобразования и выделения границ - вы получите искомые границы.
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение Master » 06 июн 2007, 21:09

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

[off]Во загнул.  :shock: [/off]
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение Myp » 06 июн 2007, 21:45

[off]тсссс
серьёзные люди разговаривают
вот на таких отечественная робототехника зиждется![/off]
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Виталий » 07 июн 2007, 00:39

А вы что знаете вектор движения каждого пиксела?
Если так(во что я не верю), то чем плох алгоритм сегментации, но не 3-х мерного (RGB),  а 4-мерного изображения (RGB+вектора). Достаточно будет, я думаю, сменить меру в пространстве.
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Сообщение =DeaD= » 07 июн 2007, 09:58

Виталий писал(а):А вы что знаете вектор движения каждого пиксела?
Если так(во что я не верю), то чем плох алгоритм сегментации, но не 3-х мерного (RGB),  а 4-мерного изображения (RGB+вектора). Достаточно будет, я думаю, сменить меру в пространстве.

А смысл? Задача же вроде распознать тела, а не пятна на них?
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение EDV » 07 июн 2007, 10:46

Значит, что бы устранить всякие неясности, рассказываю, как я получаю карту движений:
1. сегментируем исходное изображение;
2. для каждого сегмента по периметру находим точки излома линии контура
   (контур сегмента преобразовывается в ломаную, соответственно находим точки излома);
  a) найденные точки каждого сегмента, прослеживаем по изображениям двух смежных кадров
     с помощью block matching. Берём блок пикселей исходного изображения размером 17x17
     с центром соответствующем прослеживаемой точке, затем находим разницу по абсолютному
     значению между искомым блоком и блоками в следующем кадре в окрестности прослеживаемой точки.
     Находим минимальную разницу между искомым блоком и блоком в следующем кадре и определяем
     смещение прослеживаемой точки (dX, dY);
  b) аппроксимируем значение смещения каждого пикселя сегмента по значениям смещений
     прослеживаемых контурных точек этого сегмента;
3. полученную карту векторов движения складываем с предыдущей  картой движения и размываем Гауссом.

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


не понятно, если можно по подробнее  :?

чем плох алгоритм сегментации, но не 3-х мерного (RGB),  а 4-мерного изображения (RGB+вектора). Достаточно будет, я думаю, сменить меру в пространстве.


Если замешать сюда RGB, то мы получим цветовую сегментацию а не сегментацию движений (появятся границы обусловленные перепадами яркости-цвета).
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Сообщение EDV » 07 июн 2007, 12:42

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

Карта движений теперь выглядит так:

Изображение
Последний раз редактировалось EDV 12 июл 2007, 17:11, всего редактировалось 1 раз.
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Сообщение Виталий » 07 июн 2007, 12:57

А смысл? Задача же вроде распознать тела, а не пятна на них?

Это будет зависеть от меры, учет цветовых данных может быть минимальным, ведь так? =)

Может попробовать как-то сгонять вектора во "фронты" движения? Чем больше векторов придерживаются фронта, тем больше объект и мощнее фронт. А также можно ввести степени "доверия" фронтам в зависимости от мощности.
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Сообщение GraphD » 07 июн 2007, 15:10

EDV писал(а):2. для каждого сегмента по периметру находим точки излома линии контура
   (контур сегмента преобразовывается в ломаную, соответственно находим точки излома);

точки излома - имеете ввиду точки, где нарушается выпуклость?
если да, то почему именно такие точки? Есть ведь признаки с большой стабильностью, например точки с большой кривизной (детектор Harris'а).

Если вы сделали сегментацию в п.1, то какого рода улучшение картинки вы хотите в дальнейшем? Все следующие шаги по-сути на форму краев не влияют, а только ищут сопряженные в следующих кадрах.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение EDV » 07 июн 2007, 15:47

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


Аппроксимация контура выполняется с помощью библиотечной функции cvApproxPoly библиотеки Inte OpenCV. Думаю если показать визуально, будет понятней:

Изображение

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


После сегментации получается много мелких фрагментов, которые не дают ответ на вопрос: «Сколько мы видим объектов сцены, и каковы их границы». Вот это я и собираюсь выяснить с помощью сегментации движений.
Последний раз редактировалось EDV 12 июл 2007, 17:12, всего редактировалось 1 раз.
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

Сообщение =DeaD= » 07 июн 2007, 15:58

EDV писал(а):Значит, что бы устранить всякие неясности, рассказываю, как я получаю карту движений:

Ой :) ничего вы загнули, тогда действительно не подходит мой совет. А классические подходы Optical Flow не пользовали?

А так да - после сегментации уже ничего не восстановить, вы там всё грохнули.
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение EDV » 07 июн 2007, 17:03

А классические подходы Optical Flow не пользовали?


   А что бы это мне дало? Мне же не нужно прослеживать перемещение так называемых feature points на N-ное количество кадров (да и вообще для трекинга лучше использовать CONDENSATION алгоритм http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/ISARD1/condensation.html).
   Мне нужно получить карту движений, которая описывает характер движения объектов сцены в общем, что бы потом извлечь от туда информацию об объектах.

   A Optical Flow вообще работает с «corner sub-pixel», и его устойчивость зависит от наличия таких особенных точек (то есть изображение должно быть контрастным, с четкими границами), а если камера например облако движущееся заснимет, тогда он и вовсе работать не будет.
Аватара пользователя
EDV
 
Сообщения: 1016
Зарегистрирован: 06 июн 2007, 15:19
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев

След.

Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5