Чешский студент из британского университета Суррея Зденек Катал (Zdenek Kalal) в рамках практической части кандидатской диссертации разработал алгоритм Tracking-Learning-Detection (aka Predator) для отслеживания объектов в видеопотоке с самообучением (точность распознавания улучшается с каждым фреймом). Автор говорит, что собирался опубликовать исходные коды проекта, но когда получил от заинтересованных лиц сотни писем с просьбой это сделать, то передумал. Оказалось, что этот проект гораздо интереснее, чем он предполагал изначально, так что появилась вероятность что-то заработать.
Такие алгоритмы можно использовать в системах слежения (например, для беспилотных аппаратов), компьютерных и игровых интерфейсах (виртуальная мышка), в фото- и видеокамерах и т.д.
Фишка в том, что "обычный" порошокалгоритм увидит ДВА объекта, а этот видит только один - нужный. Т.е. при наличии большого количества однотипных объектов трекится все равно указанный. Но если я правильно понимаю, то перемещение объекта за кадром этот алгоритм рушит. Т.е. при уходе объекта за кадр, алгоритм ожидает его появления в том месте, где он ушел. Т.е возможна потеря и подмена объектов - т.е. магии не случается (
Хотя сам Зденек Катал был против, но исходные коды его алгоритма отслеживания объектов в видеопотоке Tracking-Learning-Detection (aka Predator) всё-таки попали в открытый доступ. Судя по всему, они были какое-то время выложены на сайте автора и кто-то успел сделать копию. А поскольку код публиковался под лицензией GPL 2.0, то не осталось никаких препятствий для его дальнейшего распространения.
Основная часть сделана на Matlab и его относительно легко можно транслировать в C за пару дней. Сам трекинг осуществляется методом Лукаса-Канаде и с помощью OpenCV.