Выделение области на изображении, работа с образами

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Выделение области на изображении, работа с образами

Re: Выделение области на изображении, работа с образами

dr.Jekill » 14 дек 2009, 04:37

После длительного перерыва возвращаюсь к этой задаче. В результате некоторых размышлений подход к решению данной задачи значительно изменился. Пробую реализовать метод выделения объектов на основе оптического потока. Вот вкратце что предполагается сделать:
Есть два кадра, первый снят во время t0 (далее предыдущий кадр), а второй во время t (далее текущий кадр). Кадры разбиваются на блоки пикселов и для каждого блока пикселов текущего кадра находится вектор движения (определяет смещение блока пикселов по x и y, относительно предыдущего кадра, основываясь на том, что интенсивность каждого пиксела постоянна). После этого производится обход блоков и сравнение их векторов движения, при этом блоки с похожими (по направлению, длине и т.п.) векторами движения объеденяются. Все эти действия направленны на сегментацию изображений, т.е. на выделение объектов отличных от статичного фона.
Проблема следующая: необходимо подобрать (как вариант усовершенствовать/разработать) быстрый алгоритм нахождения векторов движения (для начала можно предположить, что у нас нет проблем с освещеностью, что текстура объектов хорошо выраженна). Главными требованиями для этого алгоритма будут: небольшая вычислительная сложность (соотв. время вычислений), и минимальное кол-во ложных векторов движения, не соотв. реальному движению нестатичных объектов. В идеале это кол-во должно приближаться к количеству, как при методе полного перебора (где-то ~35% от общего количества). В сущности проблема в выборе алгоритма. Однако можно подумать в направлении предварительной обработки изображений для сужения зоны поиска и/или последующего исключения ложных векторов вижения, чтобы снизить риск рассегментации и потери объекта. В общем проблема такая и совсем не тривиальная.

Re: Выделение области на изображении, работа с образами

dr.Jekill » 12 ноя 2009, 20:17

atavin-ta писал(а):Анализировать только координату при опеределении расстояния нельзя, так как машина с камерой может подняться на какой-нибудь холм, а впередиидущаяя - спуститься во впадину + повороты вокруг поперечной горизонтали.
Точно подметили, над этим предстоит подумать. Но пока это не главное, а главное чтобы выделить объект. Если у нас будет выделенный объект, мы уже сможем разобраться по дистанции и т.п.
С появлением объекта в кадре вроде разобрался:
1. Разбиваем изображение на 4 части
2. Строим цветовую гистограмму по принципу куба, т.е. цветовое RGB-пространство рассматривается как трехмерный куб, каждая ось которого соответствует одному из трех основных цветов (красному, зеленому или синему), деления на осях пронумерованы от 0 до 255. Для построения цветовой гистограммы каждая сторона делится на n (n=4) равных интервалов, соответственно RGB-куб делится на N (N=64) прямоугольных параллелепипедов. Vi – множество цветов, все компоненты которых попадают в определенные интервалы. Гистограмма изображения отражает распределение точек RGB-пространства, соответствующих цветам пикселов изображения, по параллелепипедам.
3. Рассчитываются расстояния между гистограммами четвертей данного кадра и предыдущего, итоговым результатом считается корень из суммы квадратов расстояний.

Никак не въеду как определить положение объекта на кадре. Нужно вывести зависимость распределения однородных цветовых зон от координат
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Оказывается, что каждый однородно окрашенный объект проецируется в нелинейное цветовое пространство (в моём случае RGB) как точечный кластер или кластер в форме отрезка кривой с преимущественной ориентацией вдоль оси яркости. Это подтверждается экспериментальным исследованием изображений, полученных с реальных камер.
Необходимо находить в цветовом пространстве кластеры типа криволинейных отрезков:
1. разбиение цветового пространства на слои семейством плоскостей, нормальных к главной диагонали цветового пространства;
2. послойная кластеризация с помощью алгоритма поиска водоразделов;
3. сборка кластеров;
4. обратное проецирование на плоскость изображения с целью получения карты сегментации.
Нужно использовать разбиение изображения на небольшие, плотно покрывающие изображение, прямоугольные области, каждая из которых сегментируется независимо. При этом при сегментации текущей области анализируется цветовое распределение, взятое по большей области. При этом объект, далёкий от текущей области, уже не зашумляет её локальное цветовое распределение, а близкие объекты вносят существенный вклад, даже если их вклад по площади в сегментируемую область мал. Для устранения границ между «областями внимания» используется процедура слияния областей с помощью ГСО. Функция для меры несходства определенна.

Re: Выделение области на изображении, работа с образами

atavin-ta » 12 ноя 2009, 06:21

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

Re: Выделение области на изображении, работа с образами

dr.Jekill » 11 ноя 2009, 14:31

atavin-ta писал(а):...по динамике фона - это примерно так, как пассажир автомобиля, не видя спидометра, оценивает скорость визуально, глядя в окно.
А при при быстром приближении программа ещё ругается матом :)
Хыиуду писал(а):Таким образом, если раньше перед нами была машина на 200 метрах, а теперь на 100 метрах, она увеличилась вдвое - начинаем панику.
Мы не проверяем все растояние от капота до верхней границы кадра, а доходим лишь до опредленной границы (примерно 15-20 метров от капота). Уточню: если по анализу 2-3 кадров площадь объекта увеличилась в разы, то начинаем панику. Именно так, иначе следующего кадра просто не будет потому, что камера будет разбита при столкновении.
atavin-ta писал(а):При анализе динамики фона, выдели один неподвижный объект в разных кадрах. Определили, что это за объект и сопоставляя его линейный размер с угловым (пиксели соотвествуют углам, поэтому размер в кадре - угловой), определеи расстояние до объекта. Далее, сопоставляя парралакс с расстоянием оцени собственную скорость.
Не совсем понял Вашу мысль, в частности какие объекты будут неподвижны.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Еще вопрос: я строю гистограммы по бинарному изображению. Как лучше построить по цвету, если каждый пиксел RGB? Сейчас сделал процедуру сглаживания увеличением преобладающего цвета пиксела. Это позволяет нам отбросить оттенки, тени и освещение и выделить одинаковые цветовые области. Если будут процедуры быстрого построения гистограмм и их сравнения, мы сможем отслеживать границы любого объекта, и проводить необходимы манипуляции. Работаю над этим.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Вот что получается: находим расстояние от камеры (от середины нижней границы области слежения) до середины нижней границы прямоугольника, описывающего объект. Площадь может быть одинаковой, но это расстояние (дистанция) не зависит от размера объекта. Если отойти от площади, то для скорости приближения объекта:
0. Есть кадр.
1. Взять точку M0[x0,y0] равную середине нижней стороны прямоугольника предыдущего кадра, во время t0;
2. Взять точку M[x,y] равную середине нижней стороны прямоугольника данного кадра, во время t;
3. Найти расстояние S от точки M0 до точки M;
4. Найти скорость приближения V=S/(t-t0).

Главное сейчас правильно выделить объект по цветовому распределению, что-то никак не разберусь с этим.

Re: Выделение области на изображении, работа с образами

Игорь Акопян » 11 ноя 2009, 13:51

&quot писал(а):Всё бы хорошо, если цвет объекта не близок к цвету фона
у номера соотношение сторон известное, можно отбросить то что не подходит. Только вот ГРЗ могут быть не только РФ, хотя не так их и много вариантов.
&quot писал(а):выдели один неподвижный объект в разных кадрах
как узнать что именно этот объект неподвижный?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
перечитал сначала...
&quot писал(а):Цитата:
Программа реагирует не на размер, а на быстроту его увеличения. Для этого и необходимо описать квадрат вокруг предмета, чтобы по нескольким кадрам можно было анализировать эту самую быстроту.
дык вот именно, нафик номер - вцепились в объект впереди (в ограниченной зоне) и сечь изменение размеров

Re: Выделение области на изображении, работа с образами

atavin-ta » 11 ноя 2009, 12:09

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

Re: Выделение области на изображении, работа с образами

Хыиуду » 11 ноя 2009, 09:09

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

Re: Выделение области на изображении, работа с образами

atavin-ta » 11 ноя 2009, 07:11

Собственная скорость по динамике фона - это примерно так, как пассажир автомобиля, не видя спидометра, оценивает скорость визуально, глядя в окно. Как это формализовать, а тем более, программное реализовать, я не знаю. Но впринципе такой способ оценки собственной скорости вполне возможен.

Re: Выделение области на изображении, работа с образами

dr.Jekill » 10 ноя 2009, 19:34

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

Re: Выделение области на изображении, работа с образами

Хыиуду » 10 ноя 2009, 15:02

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

Вернуться к началу