logo search
СРВ курсач / CPB2

3.2. Описание алгоритма программы

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

Для осуществления выбранного подхода, программа должна на каждом шаге получать новое изображение с web-камеры. Этим занимается модуль захвата изображения. На каждой итерации он опрашивает web-камеру на наличие кадров и передает их дальше, для последующей обработки.

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

На этапе вычисления разницы с предыдущим кадром мы имеем текущий и предыдущий кадр разбитые на каналы. Кадры представляют собой матрицы размерами эквивалентными разрешению кадра, захваченного с камеры. В результате мы получаем результирующие одноканальные изображения, которые объединяем с помощью функции «AND». Данная функция трактует любое ненулевое значение как «ИСТИНА», а любое нулевое значение, как «ЛОЖЬ». В результате мы получаем одноканальное изображение с пикселями 0 и 255.Такое изображение называется бинарной маской. Пиксели со значением 255 соответствуют пикселям захваченного кадра, в которых предположительно есть движение. Бинарная маска передается в следующий блок программы.

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

В случае прохождения условия, программа попадает в блок, подающий звуковой сигнал на динамик. Делается это с помощью функции Play, которой в качестве файла передается «signal.waw» находящийся по адресу «С:\shvv\». Делается это в отдельном потоке, что позволяет интерфейсу программы работать во время проигрывания сигнала.