Существует два основных класса методов выделения движущихся объектов:
) путем анализа их границ (контуров);
) путем анализа всей области объекта на кадрах.
Основной идеей методов первого класса является поиск отличий векторов оптического потока с последующим построением контуров движущихся объектов. Методы второго класса, наоборот, основываются на группировании сходных векторов из оптического потока в области, которые подаются на выход алгоритма в качестве движущихся объектов. Большинство классических методов анализируют не сами кадры видеопоследовательности, а оптический поток (поле видимых смещений пикселей изображений), построенный по этим кадрам.
Для сравнительного анализа построим данные методы на базе широко используемой в компьютерном зрении общедоступной библиотеки OpenCV, содержащей реализации для некоторых шагов исследуемых методов, таких как построение оптического потока, вычисление градиента и поиск контуров, а также простой и удобный интерфейс для работы с камерами и вывод результата на экран.
Для построения оптического потока используются функции из библиотеки OpenCV, реализующие алгоритмы Хорна-Шанка (Horn-Schunck), Лукаса-Канадэ (Lucas-Kanade) и метод блочного сопоставления.
Для построения контуров движущихся объектов выполняются следующие шаги:
построение оптического потока одним из предложенных выше методов;
вычисление градиента оптического потока;
построение матрицы, каждая ячейка которой соответствует модулю градиента;
нахождение контуров на основе бинаризованного поля модуля градиента.
Общая схема построения областей движущихся объектов будет включать следующие шаги:
построение оптического потока одним из предложенных выше методов;
- сравнение вектора оптического потока в каждой точке кадра с векторами в соседних точках (сравнение ведется только с точками снизу и справа от текущей точки, поскольку сравнение с точками слева и сверху уже было выполнено при рассмотрении предыдущих точек);
- если векторы сходны, то точки объединяются в область или присоединяются к уже существующей области (для пометок областей их номера записываются в соответствующие ячейки кадра).
Таким образом, после однократного прохода по изображению получим разметку на области. В качестве функции похожести векторов оптического потока для рассматриваемых методов приемлемый результат дает использования следующего условия. Если модуль разности векторов меньше одной трети длины самого короткого, то вектора похожи. Данный критерий, хотя и выглядит эвристическим, дает хороший результат и является приемлемым при сравнении эффективности разных методов выделения движущихся объектов. Коэффициент эмпирически вытекает из спектра векторов оптического потока.
Проведем сравнение различных методов выявления движущихся объектов по критериям быстродействия, сложности реализации и качества достигаемого результата. Перечисленные характеристики важны, так как для обеспечения непрерывного видеонаблюдения требуется обработка изображений в масштабе реального времени. Однако достижение необходимого быстродействия не должно приводить к ухудшению вероятностей обнаружения объектов интереса. При всем этом для возможности легкого внедрения метода в любые проекты желательно иметь простую и очевидную реализацию.
Основной вклад в вычислительную сложность рассматриваемых методов вносит вычисление оптического потока, так как даже линейные реализации имеют очень большой коэффициент. Все остальные шаги алгоритмов выделения движущихся объектов - группирование векторов, вычисление градиента, поиск контуров - требуют лишь нескольких операций на каждый пиксель изображения. Данные методы можно назвать весьма производительными, если не брать в расчет вычисление оптического потока, так как способ его вычисления зависит от поставленных задач, условий и целей. К тому же все современные компьютеры имеют несколько ядер, и оптический поток может независимо вычисляться на своем ядре, не мешая остальному анализу. При обработке каждого нового кадра на все прочие расчеты, кроме оптического потока, для стандартного размера кадра (VGA - 64×480) тратится не более 10-60 млн. тактов, что приблизительно равно 4-20 мс процессорного времени для ядра с частотой 3 ГГц. Производительность зависит от интенсивности и сложности движения на видеоряде, поэтому точную алгоритмическую сложность подсчитать не возможно. Например, для неподвижной сцены все алгоритмы дают быстрый ответ об отсутствии объектов, но чем больше в сцене мелких движений, тем больше ресурсов требуется для их поиска. Конечно же, например, для метода объединения областей несложно придумать кадры, оптический поток которых имеет шахматный порядок, и анализ таких кадров будет, как минимум, кубической сложности. Но на практике такое не встречается, а движущиеся объекты имеют сгруппированные области на видеокадрах. Эта сгруппированность сохраняется и для оптического потока, что позволяет его анализировать со скоростью, немного меньшей, чем линейная. Таким образом, анализируемые методы применимы для использования на обычных компьютерах для обработки видео в реальном масштабе времени.
Чем проще метод, тем сложнее в нем сделать неявную ошибку, и тем этот метод надежнее. Особенно это важно, когда метод встраивается как дополнительная функциональность в уже работающую систему. Использование библиотеки OpenCV позволяет упростить реализацию методов путем написания кода сравнительно небольшого объема. Для всех сложных шагов использовались стандартные функции из библиотеки, что позволяет избежать возможных ошибок при самостоятельной реализации. Для связи сложных шагов производятся только простые операции (например, передача изображений), поэтому их реализация практически очевидна, и в ней сложно допустить ошибку.
Таким образом, анализируемые методы легко реализовать, а значит, они обладают высокой надежностью.
Рассмотренные методы являются приемлемыми по скорости работы, однако
необходимо оценить качество получаемого результата. Можно провести следующий
эксперимент: на вход алгоритмам подадим видеоряд с бытовой видеокамеры. При
стандартном комнатном освещении плавно проведем рукой перед камерой. Были
опробованы как аналоговые камеры, для оцифровки сигнала которых использовались
платы видеозахвата, так и различные WEB-камеры, которые подключаются к
компьютеру через интерфейс USB и передают уже оцифрованный сигнал. В ходе
экспериментов не выявлено существенных отличий выделяемых объектов в
зависимости от использованной камеры. На рис. 1.1 для одного и того же видеоряда
представлен результат работы алгоритмов поиска контура и объединения областей.
Рис. 1.1 Выделение движущейся руки на основе двух методов: поиск контуров
(а); объединение областей (б)
Все сравниваемые методы дают сходный по качеству результат - алгоритмы выделили шумы как движущиеся объекты, что непригодно для дальнейшего использования. Следует заключить, что причина низкого качества результата обусловлена качеством построения оптического потока, поскольку данные методы на нем основаны. Большинство алгоритмов построения оптического потока дают приемлемый результат только на искусственных и чистых кадрах, поэтому, получив на вход видео с шумами, они не обеспечивают желаемое качество выделения объекта. Все рассмотренные стандартные методы построения оптического потока очень чувствительны к уровню шумов, что отражается в найденных движущихся объектах. В ряде случаев алгоритмы вычисляют, что движется вся сцена, хотя на самом деле движения нет вообще, а на видео - равномерный шум. Также классические методы имеют сильные ограничения в допустимой скорости движения объектов - движения медленнее, чем один пиксель за кадр, не обнаруживаются вовсе.[3]
Трассирование подразумевает отслеживание движущегося объекта и значений
его параметров в течение всего времени его пребывания в кадре. При правильном
трассировании объекта появляется возможность просмотра траектории движения
объекта с любым уровнем детализации (с точностью до кадра, до 3, 5 и т.д.
кадров). Такая возможность обеспечивается сохранением положения центральной
точки объекта на каждом из кадров в специальном массиве, который введен для
этой цели при определении параметров для каждого из движущихся объектов.
Алгоритмы, трассирующие движущиеся объекты, не должны путать один объект с
другим, терять объект, если он остановился на небольшой промежуток времени или
скрылся за каким-либо препятствием (например, человек, скрывшийся за деревом),
а потом появился вновь. Для этих целей великолепно подходит применение
нормализованной функции взаимной корреляции. Функция взаимной корреляции двух
изображений - функция, показывающая степень корреляции двух изображений. Обычно
она используется для вычисления степени похожести областей на разных кадрах.
Эта функция должна давать единственный максимум только для случая двух
одинаковых изображений. Очень часто используется нормализованная функция
взаимной корреляции. Максимальным значением функции при полном совпадении
первого растра с прямоугольником на втором растре будет единица. Алгоритмы, использующие
функцию корреляции, работают следующим образом. Сначала они находят несколько
значений функции, различным образом накладывая на один растр прямоугольник,
взятый с другого растра. Затем из полученных значений выбирают максимальное.
Если наилучшее значение достаточно близко к единице, значит, на первом растре
обнаружен именно тот объект, который попал в «коррелирующий» прямоугольник,
взятый на втором растре. Степень близости значения функции корреляции к единице
- параметр, выбирая значение которого, можно добиться оптимального соотношения
количества ошибок ложного обнаружения и необнаружения вообще. Она помогает
сравнить объект с одного из предыдущих кадров с объектом, обнаруженным на вновь
полученном кадре и сделать вывод об их похожести. Даже если объект, который
можно было посчитать исчезнувшим после того, как он пропал за каким-либо
препятствием, перестал обнаруживаться, применяя алгоритм вычисления функции
корреляции можно обнаружить его снова на одном из последующих кадров и
продолжить трассировку, взяв параметры объекта в момент его последнего
обнаружения и скорректировав их по текущему кадру. Это очень важно для
построения неразрывной траектории движения. При вычислении функции корреляции с
целью обнаружения на текущем кадре объекта, обнаруженного ранее, используются
только те пиксели изображения, которым в маске движения соответствуют единицы.
В противном случае в формулу для вычисления функции корреляции могут попасть
значения цветов пикселей, лежащих внутри прямоугольной области, но за пределами
объекта, а эти пиксели совсем не обязательно должны коррелировать друг с
другом, следовательно, значение функции корреляции в этом случае уменьшится. А
если оно станет меньше выбранного порога похожести, алгоритм может ошибочно
посчитать данную прямоугольную область растра непохожей на объект, с которым
производится сравнение, даже если на самом деле это не так. Очевидно, что
вычислять функцию корреляции для двух объектов не имеет смысла, если линейные
размеры соответствующих им прямоугольников существенно различаются, поскольку и
так очевидно, что это разные объекты. Также бессмысленно, например, искать в
правом нижнем углу текущего кадра объект, обнаруженный в левом верхнем углу
предыдущего кадра, поскольку никакой интересующий нас объект не может за такое
короткое время так существенно изменить своё местоположение. Такие допущения
могут существенно сократить затраты на трассирование, в общем случае включающие
вычисление функции корреляция каждого объекта с каждым. Кроме того, для
объекта, испытавшего крайне малое смещение на соседних кадрах можно вообще не
вычислять значения функции корреляции. Ведь ещё до выполнения данной операции
становится очевидным, что два отпечатка в одной и той же области маски движения
на соседних кадрах принадлежат одному и тому же объекту.
Рис. 1.2 Последовательность обработки двух следующих друг за другом
кадров
Изображение вычитается из базового кадра, а затем поиском в глубину
находятся области, состоящие из небелых пикселей. Области на разных кадрах,
соответсствующие футболистам, обводятся в разноцветные прямоугольники. [4]
Задачи распознавания человека по изображению лица делятся на три больших класса: поиск в больших базах данных, контроль доступа и контроль фотографий в документах. Они различаются как по требованиям, предоставляемым к системам распознавания, так и по способам решения, и поэтому представляют собой отдельные классы.
Различны и требования, предъявляемые к ошибкам первого и второго рода для таких классов. Ошибкой первого рода (type I error, misdetection) называется ситуация, когда объект заданного класса не распознаётся (пропускается) системой. Ошибка второго рода (type II error, false alarm) происходит, когда объект заданного класса принимается за объект другого класса.
Следует также отметить различие понятий верификации и распознавания (идентификации). В задаче верификации неизвестный объект заявляет, что он принадлежит к некоторому известному системе классу. Система подтверждает или опровергает это заявление. При распознавании требуется отнести объект неизвестного класса к одному из известных или выдать заключение о том, что этот объект не относится к известным классам.
Высокие требования к ошибке первого рода - система распознавания должна находить изображения соответствующие данному человеку, по возможности не пропустив ни одного такого изображения. При этом допустимо, если в результирующей выборке будет присутствовать небольшое число других людей.
Обычно в большой базе данных (104-107 изображений) требуется найти изображения, наиболее похожие на заданное. Поиск должен быть произведён за разумное время. Одно из решений состоит в хранении базе данных небольших наборов заранее извлечённых ключевых признаков, максимально характеризующих изображение. При этом требования к точности не столь критичны как в задачах контроля доступа и документного контроля.
Критичны требования к ошибкам второго рода. Система распознавания не должна распознавать незнакомых людей как знакомых, возможно даже за счёт увеличения ошибок первого рода (отказов в доступ знакомым людям).
Имеется небольшая группа лиц (5-50 человек), которых система должна распознавать по изображению лица для доступа в некоторое место. Людей, не входящих в эту группу, система не должна пропускать. Возможны варианты, когда требуется установить конкретную личность по изображению лица. При этом от системы требуется высокая достоверность распознавания, возможно даже за счёт увеличения числа отказов на знакомые объекты.
В качестве тренировочных изображений обычно для каждого человека доступны несколько изображений лица, полученных при различных условиях. Например, различные ракурсы, освещённость, причёска, мимика, наличие очков и т.п.
Система должна работать в реальном масштабе времени, а процесс настройки может занимать больше времени и производиться отдельно. В процессе эксплуатации система должна дообучаться на вновь поступающих изображениях по возможности быстрее.
Ограничений на применяемые методы здесь нет, но все методы сходятся в одном. Имеется обучающий набор изображений лиц заданной группы людей (возможно при различных условиях съёмки). К этому набору система обращается в процессе распознавания, или система настраивается в процессе обучения на этот набор.
Распространён подход с использованием нейронных сетей, которые после обучения обладают хорошей обобщающей способностью.
Формулировать требования к ошибкам первого и второго рода здесь будет некорректно, поскольку система распознавания никогда не имела дело с поступающими на вход классами. Но желательно чтобы система не совершала ошибок при сравнении.
Требуется сравнить изображение лица человека, полученное в данный момент с фотографией из какого-либо документа. Системе надо ответить принадлежат ли эти лица одному человеку или нет. Данный класс задач наиболее сложен, поскольку, во-первых, система никогда раньше не сталкивалась с изображением лица данного человека. Система сравнивает всегда отличающиеся изображения, учёт всех возможных различий в процессе обучения или настройки системы затруднителен. Во вторых, здесь большее влияние оказывают возрастные и другие изменения лица. В третьих, качество и контраст отсканированной фотографии, как правило, хуже, чем изображение лица снятого камерой. Большинство методов для данного класса задач неприменимы без специальной адаптации.
В изученной литературе нет работ, напрямую связанных с применением нейросетевых методов для решения данного класса задач. Для этого можно предложить применение нейронных сетей (НС) для извлечения ключевых признаков изображений и адаптацию НС для сравнения двух изображений.
Инвариантностью к изменению масштаба обладают неокогнитроны, модификации нейронных сетей высокого порядка. Т.е. эти виды сетей не надо специально обучать на изображениях с различными масштабами объекта, обучившись некоторому изображению один раз, они способны затем распознавать объект на изображении при любых изменениях масштаба.
Так же инвариантностью к изменениям масштаба обладают моменты Лежандра, Зернике и т.п.
В остальных методах инвариантность к изменениям масштаба достигается на этапе предобработки (приведение к стандартному масштабу), либо в обучающую выборку включаются изображения с различным масштабом.
Большинство методов чувствительно к изменениям освещения - результат распознавания сильно ухудшается. Некоторого улучшения можно достичь за счёт выравнивания гистограммы яркостей, но в общем случае изменения в освещении предобработкой устранить невозможно.
Также используют алгоритм выделения линейных подпространств, который надёжно классифицирует человека по изображению лица при достаточно широком диапазоне условий освещённости. При этом обучающая выборка формировалась с использованием изображений при различных условиях освещения. Существуют так же различные эвристические подходы. Например, в модификации метода главных компонент, первые 2-3 компоненты отражают в основном различия в освещении, и поэтому при сравнении не учитываются.