Подсчет транспортных средств на основе BackgroundSubtractorMOG
Я работаю над проектом под названием ATCS(Автоматическая система управления движением), он будет изменять продолжительность светофора в зависимости от количества автомобилей перед светофором.
Я использовал openCV и BackgroundSubtractorMOG для обнаружения транспортного средства, он успешно работает, когда транспортные средства движутся, но когда красный сигнал включен, все транспортное средство неисчислимо. Конечно, это заставит мое программное обеспечение не работать.
До сих пор я знаю, что фоны SububtractorMOG являются наилучшим решением, потому что эта система работает во многих вариациях, связанных с погодой, интенсивностью света и т. Д. Она будет сравнивать текущий кадр и предыдущий кадр, так что движущийся объект определяется как передний план (CMIIW). так как насчет транспортного средства, которое двигалось и остановилось - потому что горит красный сигнал светофора, и это заставляет водителя остановить свое транспортное средство? Будет ли он все еще обнаруживаться как объект переднего плана?
Поэтому я хочу попросить наиболее подходящий алгоритм сделать это. Как подсчитать количество транспортного средства при его движении, в том числе, когда транспортное средство перестало двигаться, потому что красный сигнал - он все равно обнаружен как транспортное средство.
благодарю вас:)
3 ответа
Как вы обновляете свой фон? Из-за изменений в состоянии освещения (облака, день, ночь, сумерки, погода) вы не можете вести статистику, однако присутствие остановленного автомобиля все еще можно обнаружить, если вы все еще знаете внешний вид фона, то есть дорога, если машины там нет. Если на изображении есть участок, где автомобиль не проезжает, вы можете использовать его, чтобы понять, меняются ли условия освещения.
Какой у вас угол обзора для автомобилей? Существует вероятность, что, комбинируя детектор Viola Jones с трекером KLT, вы получите более качественные и более общие результаты.
Если у вас работает фоновое вычитание (как вы сказали), я бы попытался добавить еще одну фоновую модель. Затем вы можете выполнить вычитание фона два раза, один раз для предыдущего изображения (работает для всех движущихся объектов) и один раз для вашего long term background model
который обнаружит все остановленные транспортные средства (и движущиеся тоже), но может иметь некоторые недостатки для различных условий освещения.
Вы могли бы взглянуть на ViBe
или же Gaussian-Mixture-Models
для создания этих фоновых моделей.
Другой способ - ввести механизм отслеживания, как уже упоминал Антонио. Как только транспортное средство обнаружено путем вычитания фона (на изображении появятся только движущиеся объекты), вы запустите отслеживание, и вы узнаете, что они есть, даже если они не будут обнаружены снова (потому что они не двигаются). Таким образом, вам нужен метод отслеживания, который не "отслеживание по обнаружению", а какой-то другой метод. Я бы порекомендовал фильтр Калмана или фильтрацию частиц, или, возможно, отслеживание среднего смещения.
РЕДАКТИРОВАТЬ: один метод, часто используемый для обнаружения транспортных средств, который похож на методы вычитания фона Local Binary Patterns (LBP)
Я бы предложил использовать скрытый SVM-детектор с моделью "автомобиль" и "автобус" для обнаружения транспортных средств, а затем применить простое отслеживание к полученным ограничительным рамкам.
Скрытый SVM-детектор: http://docs.opencv.org/modules/objdetect/doc/latent_svm.html