Обнаружение автомобилей с использованием моделей гауссовой смеси
Автор: Дарья Сапуголевцева • Сентябрь 6, 2023 • Лекция • 606 Слов (3 Страниц) • 113 Просмотры
Обнаружение автомобилей с использованием моделей гауссовой смеси
В этом примере показано, как обнаруживать и подсчитывать автомобили в видеопоследовательности с помощью детектора переднего плана на основе моделей смеси Гаусса (GMM).
• Вступление
• Шаг 1. Импорт видео и инициализация детектора переднего плана.
• Шаг 2 - Обнаружение автомобилей в начальном кадре видео
• Шаг 3. Обработка остальных видеокадров.
Вступление
Обнаружение и подсчет автомобилей можно использовать для анализа схем движения. Обнаружение также является первым шагом перед выполнением более сложных задач, таких как отслеживание или категоризация транспортных средств по их типу.
В этом примере показано, как использовать детектор переднего плана и анализ blob для обнаружения и подсчета автомобилей в видеопоследовательности. Предполагается, что камера неподвижна. Пример фокусируется на обнаружении объектов. Чтобы узнать больше об отслеживании объектов, см. Пример под названием «Отслеживание нескольких объектов на основе движения».
Шаг 1 - Импорт видео и инициализация детектора переднего плана
Вместо того, чтобы немедленно обрабатывать все видео, пример начинается с получения исходного кадра видео, в котором движущиеся объекты сегментируются от фона. Это помогает постепенно вводить этапы обработки видео.
Детектору переднего плана требуется определенное количество видеокадров для инициализации модели гауссовой смеси. В этом примере первые 50 кадров используются для инициализации трех гауссовых мод в модели смеси.
foregroundDetector = vision.ForegroundDetector('NumGaussians', 3, ...
'NumTrainingFrames', 50);
videoReader = vision.VideoFileReader('visiontraffic.avi');
for i = 1:150
frame = step(videoReader); % прочитать следующий кадр видео
foreground = step(foregroundDetector, frame);
end
После обучения детектор начинает выдавать более надежные результаты сегментации. На двух рисунках ниже показан один из видеокадров и маска переднего плана, вычисленная детектором.
figure; imshow(frame); title('Видеокадр');
[pic 1]
figure; imshow(foreground); title('Передний план');
[pic 2]
Шаг 2 - Обнаружение автомобилей в начальном кадре видео
Процесс сегментации переднего плана несовершенен и часто включает нежелательный шум. В примере используется морфологическое отверстие для удаления шума и заполнения пробелов в обнаруженных объектах.
se = strel('square', 3);
filteredForeground = imopen(foreground, se);
figure; imshow(filteredForeground); title('Чистый передний план');
[pic 3]
...