Участник:Amolchanov/Детекция движения
Материал из MachineLearning.
На странице изложена примерная структура будущей статьи посвященной исследованию задачи детекции движения транспортных средств в видеоданных студентом Андреем Молчановым в рамках работы над дипломом |
Содержание |
Дневник исследователя
Оформил покадровую обработку как отдельный класс, отвечающий за фильтрацию. Также добавил морфологию. После добавления, изображение, как и ожидалось слегка сгладилось, дырки пропали. В ближайших планах обнаружение объектов с помощью стропов. --amolchanov 23:54, 27 апреля 2010 (MSD)
Более подробно описал работу над проектом здесь. Сейчас думаю, какую структуру данных лучше выбрать для хранения информации о пятнах и треках. --amolchanov 16:36, 10 мая 2010 (MSD)
Предпосылки
При исследовании некоторых задач, связанных с анализом поведения автомобильного потока, возникает необходимость получения экспериментальных данных, описывающих траектории движения (треки) проезжающих машин.
Примером такой задачи может быть построение модели движения автомобилей по еще не построенной трассе с целью определения вероятности возникновения пробок. Для анализа такой модели необходимо будет наполнить ее объектами-машинами, которые будут передвигаться по определенным правилам. Для того, чтобы модель как можно больше соответствовала реальности, правила, по которым будут передвигаться машины, должны основываться на данных о передвижении машин, полученных с действующих дорог.
Существует несколько методов получения таких данных. Например, могут использоваться специальные устройства, устанавливаемые в сам автомобиль и снимающие данные с его систем управления.
В настоящей работе изучается другой подход — восстановление данных по видеозаписи определенного участка трассы.
Постановка задачи
Используя видеозапись участка дороги восстановить треки машин, проезжающих по этому участку.
Могут существует некоторые причины, значительно препятствующие восстановлению, например:
- Легковой автомобиль может быть загорожен большим грузовиком или автобусом на протяжении всей записи.
- Съемка может производиться в неидеальных условиях. Дрожание камеры и плохая цветопередача могут сильно усложнять задачу.
- В вечернее время суток, машины серого цвета будут сливаться с асфальтом.
Поэтому заранее предполагается некоторый небольшой процент ошибок.
Так как данные будут использоваться лишь в отдельно проводимых далее экспериментах, задача восстановления в режиме реального времени не ставится.
В настоящей работе должен быть представлен и реализован метод выделения движущихся транспортных средств.
Описание исходных данных
Анализируемая видеозапись участка дороги. На данном этапе решения задачи, под видеозаписью понимается последовательность BMP-файлов, находящихся в одной директории. Это сделано дл того, чтобы избежать технических сложностей, связанных с обработкой видео-файлов, закодированных с помощью различных кодеков.
Кроме видеозаписи может использоваться дополнительная информация об участке дороги. Это может быть например, указанный участок кадра, в котором могут быть автомобили. Либо это может быть информация о перспективе, необходимая для перевода экранных координат в пространственные.
Требуемый результат
Восстановленные треки машин, проехавших по участку дороги и попавших на видеозапись. Под треком понимается соответствие временным точкам позиции машины в реальном пространстве.
Выходной файл должен содержать набор записей вида .
- момент времени, соответствующий отдельному кадру.
- уникальный идентификатор машины, не изменяющийся на протяжении всей видеозаписи.
- декартовы координаты машины в реальном пространстве.
Этапы решения задачи
Подготовка видеозаписи
Необходимо конвертировать видеозапись произвольного формата в последовательность кадров, сохраненных в формате Bitmap. Предполагается решение задачи вручную с использованием программы VirtualDub и соответствующих плагинов. В частности, для подготовки тестовой видеозаписи использовался плагин MPEG-2 / DVD.
Выделение перемещающихся пятен на кадрах
Вычитание и бинаризация
Для обработки траекторий машин нам необходимо обнаруживать их. Выделение множеств точек, соответствующих машинам на кадре базируется на гипотезе 1.
Гипотеза 1. Если взять разность двух последовательных кадров, то значение точки в кадре будет тем больше, чем выше вероятность того, что в этом месте находится машина (на обоих кадрах).
Обоснование гипотезы 1. Примерная скорость автомобиля на трассе - 70 километров в час, это около 20 метров в секунду. В видеозаписи на 1 секунду приходится 25 кадров. Таким образом, за один кадр машина сдвигается на расстояние чуть меньше метра. Длина машины - приблизительно 2-3 метра. В результате получается, что изменяется цвет пикселей, соответствующих объединению множеств, относящихся к позициям одной машины на соседних кадрах, и это объединение будет не сильно отличаться от множества, относящегося к машине на одном кадре.
Итак, для выделения пятен, относящихся к движущимся машинам, можно использовать последовательное вычитание соседних кадров. Кроме того, так как нам необходимо однозначно считать, относится ли пиксель к пятну или нет, необходимо выполнять бинаризацию с некоторым порогом. Значение порога было подобрано опытным путем.
Удаление отдельно находящихся точек
Кроме пятен, относящихся к движущимся машинам, на некоторых кадров появляются шумы, возникающие из-за посторонних объектов, например качающихся деревьев, или дрожания камеры. Для борьбы с этим выполняется удаление отдельно находящихся пикселей. Такое удаление возможно в соответствии с гипотезой 2.
Гипотеза 2. Пятна, состоящие из 1 пикселя, соответствуют не движущимся машинам, а шумам.
Обоснование гипотезы 2. Машина может иметь размер в 1 пиксель в следующих случаях:
- Видна лишь малая часть машины потому, что остальная ее часть находится за кадром
- Видна лишь малая часть машины потому, что остальная ее часть загорожена неподвижным объектом (например, дорожным знаком)
- Машина находится очень далеко и имеет малый размер на кадре в соответствии с законами перспективы
В первом и втором случаях мы можем проигнорировать эту машину потому, что она проявится на других кадрах в нормальном размере. В третьем случае мы не обрабатываем машину по причине того, что на таком расстоянии все равно не удастся эффективно восстанавливать треки.
Дилатация и морфологическая обработка
Мы предполагаем, что машина не имеет сквозных отверстий. Соответственно, пятна также не должны иметь внутренних полостей и мы закрашиваем их.
Для улучшения результата мы можем связать близко примыкающие области с помощью морфологической обработки. Она состоит из последовательной дилатации (расширения черных областей), закраски внутренних областей и обратной дилатации (расширение белой области). Такая обработка позволяет бороться с тем эффектом, когда машина распадается на несколько пятен. С другой стороны, она в некоторой степени способствует объединению пятен, относящимся к разным близко находящимся машинам, в одно большое пятно.
Резюме
В итоге для поиска таких пятен предпринимается следующая последовательность действий:
- Вычитание предыдущего кадра из текущего
- Бинаризация с некоторым порогом
- Удаление отдельно находящихся точек (не имеющих соседей)
- Дилатация с размером ядра 1
- Морфологическая обработка кадра
Связывание информации о пятнах между кадрами
Находится на этапе решения.
Текущие результаты
Из предложенной видеозаписи выделяются машины с высокой степенью четкости.
Ссылки на файлы
Файлы отправил на почту, так как здесь файлы не выкладываются.
Ссылки на литературу
- Р. Гонсалес, Р. Вудс, «Цифровая обработка изображений» (на OZON.ru)
- Шани Растопман (?)