Отслеживание постоянных объектов OpenCV и стратегия гистерезиса

#image-processing #opencv

#обработка изображений #opencv

Вопрос:

Я создаю API отслеживания объектов для своей команды.

Мой код распознает объекты переднего плана в сцене камеры. Со временем он будет вызывать методы для addObject(id, pos) , updateObject(id, newPos) , и removeObject(id) в экземплярах, которые реализуют мой интерфейс прослушивателя. Это события посткадровой обработки, поэтому они могут происходить 30 раз в секунду.

Как я могу убедиться, что объекты не появляются и не исчезают? Мне нужно предоставить объектам минимальное время жизни. Если объект исчезает на один кадр и появляется в том же месте в следующем кадре с новым идентификатором, это также нежелательное мерцание.


(Мои мысли до сих пор) Я думал об использовании аккумулятора маски объекта в качестве основы для создания экземпляра. Я представляю изображение в оттенках серого, где области-кандидаты для объектов будут усиливаться в аккумуляторе каждый кадр, затем, как только область объекта превысит пороговое значение, он создается, и мы вызываем addObject(id, pos) метод. Теперь проблема в том, что объект может перемещаться вокруг порогового значения в накопителе и все еще может проявлять мерцающее поведение. Итак, я бы добавил некоторое постоянное значение в область объекта, как только он будет создан, чтобы у него было время жизни в аккумуляторе. Эта константа будет вычитаться, когда область пересекает пороговое значение аккумулятора.

Ответ №1:

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