Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сегментация изображения в видеопотоке.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.34 Mб
Скачать

2 Разработка математической модели системы

Пусть у нас имеется видеопоследовательность, получаемая из файла, или стационарной видеокамеры. Пусть первые n кадров перед видеокамерой не происходит никакого движения, а начиная с n+1 кадра перед камерой могут появляться объекты интереса, т.е. люди машины или что-то еще. Для каждого кадра последовательности требуется получить бинарное изображение (маску) переднего плана (движущихся объектов). В полученной маске 0/черный соответствует заднему плану, а 1/белый соответствует переднему плану. Пример успешной сегментации можно увидеть на рисунке 1.

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

Рис 1. Пример сегментации кадра видеопоследовательности.

Рассмотрим два алгоритма:

1) Простейший алгоритм.

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

. (2.1)

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

, (2.2)

где w и h это ширина и высота картинки соответственно, то пиксель (i,j) считается переднеплановым, иначе он считается заднеплановым.

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

2) Алгоритм с нормальным распределением.

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

(2.3)

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

1) Обучение модели заднего плана по первым n кадрам. Для оценки параметров модели и для каждого пикселя можно применять математическое ожидание и среднее квадратичное отклонение значений в данном пикселе т.е.

(2.4)

где - значения в пикселе по первым n кадрам.

2) Далее для каждого следующего кадра и для каждого пикселя. Обозначим за с значение в текущем кадре для (i,j) пикселя. Если

(2.5)

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

Параметр e влияет на чувствительность алгоритма и выбирается из след. соображений. Фиксируется некоторое число После этого относительно e решается уравнение

(2.6)

где Число a есть ни что иное как вероятность того, что отклонение вызванное шумом камеры попадет в указанную выше e-окрестность. Очень часто пользуются e = 3 (т.н. Mahalanobis distance) которому соответствует значение . Данный алгоритм решает проблему шума камеры т.к. имеет адаптивный вероятностный порог, но все остальные проблемы остаются в силе.  Заметим, что данный алгоритм допускает реализации не только для полутоновых но и, например, для RGB изображений, что улучшает качество работы алгоритма. При реализации в RGB следует использовать 3х мерное нормальное распределение вместо одномерного и построить вероятностный порог для 3х мерной сл. величины.

3 Разработка концептуальной объектной модели системы

В программе существует два класса TBackground и наследуемый от него TNRBackround. Класс TBackground описывает задний план для простого алгоритма. В нем необходимо обеспечить хранение заднего плана. Задний план Mask будет строиться в конструкторе объекта. Так как необходимо обеспечить различные уровни настройки работы алгоритма, то существуют различные переменные:

- AStep, отвечает за шаг алгоритма(например при значении 2, будут обрабатываться только каждые вторые пиксели);

- delt, отвечает за точность, (формула 2.2)

- count, счетчик сегментированных в передний план пикселей для текущего кадра.

- Sensetiv, хранит значение параметра, для установления является ли текущий кадр переднеплановым, или нет.

Для всех этих параметров предусмотрены свойства для чтения и записи.

Необходима функция CompImg для сравнения текущего кадра с задним планом. В нее необходимо передавать текущий кадр и флаг, который будет равен true при условии, что Sensetiv будет меньше, чем количество пикселей, которые сегментируются в передний план. Функция будет возвращать изображение типа TBitmap для текущего кадра, в которой черный цвет соответствует, что пиксель сегментировался в передний план, белый, что пиксель сегментировался в задний план.

Класс TNRBackground наследует все поля, свойства и методы от предка, кроме поля Mask. Так как этот класс используется для описания заднего плана при нормальном распределении, то поле Mask будет представлять собой два двумерных массива, в одном будет храниться математическое ожидание, в другом – среднее квадратичное отклонение (формула 2.4). В нем поле delt тоже отвечает за точность e (формула 2.5). Конструктор и функция сравнения в этом классе будут перекрываться. В конструктор уже необходимо передавать первые n кадров, то есть массив, а для функции сравнения необходима другая реализация.

Так как обработка кадра довольно трудоемкий процесс, поэтому ее необходимо выполнять в отдельном потоке. Для вывода и обработки кадров используется класс TShowAnim типа TThread.