реализация OpenCV по среднему сдвигу для отслеживания одного объекта (как часть CamShift algorithm), и поэтому я не верю, что он был расширен для отслеживания нескольких объектов с использованием мультимодальных распределений. Это даст вам ограничительную рамку с центром в режиме вероятностного изображения (возвращаемого опорным проходом cv::Rect window
).
Представлены ли ваши данные в виде смеси гауссова (или какого-либо другого симметричного распределения)? Если это возможно, вы можете использовать кластеризацию k-means, чтобы найти средства для вашего распределения (которое будет режимом для симметричного распределения), хотя выбор k будет проблематичным.
В качестве альтернативы взлома, который может включать отслеживание нескольких объектов (или поиск нескольких режимов), может включать повторное вызов этой функции, извлечение режима и затем обнуление этого раздела с обратной проекционной гистограммы.
Что касается формы данных, вход функции осуществляется через cv::Mat
, поэтому вам придется конвертировать ваши данные. Однако вы утверждаете, что имеют отрицательные значения, и эта функция opencv ожидает гистограммы вероятности (которая обычно вы рассчитываете из изображения с использованием cv::calcBackProject()
), поэтому я ожидаю, что он пожалуется, если вы попытаетесь передать ему cv::Mat
, содержащий отрицательные значения.