#image-processing #opencv
#обработка изображений #opencv
Вопрос:
Я создаю API отслеживания объектов для своей команды.
Мой код распознает объекты переднего плана в сцене камеры. Со временем он будет вызывать методы для addObject(id, pos)
, updateObject(id, newPos)
, и removeObject(id)
в экземплярах, которые реализуют мой интерфейс прослушивателя. Это события посткадровой обработки, поэтому они могут происходить 30 раз в секунду.
Как я могу убедиться, что объекты не появляются и не исчезают? Мне нужно предоставить объектам минимальное время жизни. Если объект исчезает на один кадр и появляется в том же месте в следующем кадре с новым идентификатором, это также нежелательное мерцание.
(Мои мысли до сих пор) Я думал об использовании аккумулятора маски объекта в качестве основы для создания экземпляра. Я представляю изображение в оттенках серого, где области-кандидаты для объектов будут усиливаться в аккумуляторе каждый кадр, затем, как только область объекта превысит пороговое значение, он создается, и мы вызываем addObject(id, pos)
метод. Теперь проблема в том, что объект может перемещаться вокруг порогового значения в накопителе и все еще может проявлять мерцающее поведение. Итак, я бы добавил некоторое постоянное значение в область объекта, как только он будет создан, чтобы у него было время жизни в аккумуляторе. Эта константа будет вычитаться, когда область пересекает пороговое значение аккумулятора.
Ответ №1:
В итоге я использовал решение, описанное в моем вопросе, почти без каких-либо дополнительных настроек. Это хорошо работало для того, что я делал. Однако необходимо сохранить копию предыдущего состояния накопителя, чтобы определить, увеличиваются или уменьшаются значения пикселей по сравнению с пороговым значением.