
EFilimonov
-
Content count
2 -
Joined
-
Last visited
Posts posted by EFilimonov
-
-
Добрый день,
Я сделал приложение на OpenCV + MFC для управления мышкой людьми с неврологическими нарушениям https://preability.com/face-controlled-mouse/ Человек сидит и двигает головой перед вебкой ноутбука, мышка двигается, он улыбается – происходит клик и пр.В целом, курсор удалось стабилизировать за счет отслеживания согласованного движения точек + EWMA фильтра (Калмана тяжелее и оказался не особо лучше). Разрежение угловых точек по всей площади тоже помогло немного. Но я вижу, что у похожей старой программы (eViacam) идет предварительная обработка изображения (с такими же древними внешними библиотеками для вебкамер). И за счет этого угловые точки стабильнее.
Я включил equalizeHist() для ROI в области лица. В темноте детектор стал работать гораздо лучше. Но лицевые точки все равно пляшут при неровном освещении. Старая прога справлялась.
Я абсолютно не в теме предварительной обработки и хочу понять, что можно сделать с видео на входе дектектора? Пробовал подключить морфологию openCV, но не особо улучшил, зато нагрузил процессор. А у многих людей ноуты на целеронах.
Подскажите, пожалуйста, кто в теме, как улучшить видео для детектора???Не обязательно библиотеки OpenCV, главное на лету и не слишком нагружая процессор...
Стабилизация лицевых точек OpenCV
in OpenCV
Posted · Report reply
Отвечу на свой вопрос, может быть кому-то пригодится.
Christoph Rackwitz дал мне хороший совет:
Я изменил алгоритм. Когда угловые точки передаются алгоритму MOSSE, а не оптическому потоку то курсор ведет себя гораздо стабильнее. Возникла небольшая проблема с дискретным перемещением, поскольку рамки объектов перемещались одновременно на равное число пикселей. Поэтому и курсор двигался скачками. Поэтому пришлось устанавливать фильтр не на курсор, а на каждую точку. Но, как видно на видео, в итоге нагрузка на процессор не увеличилась.
https://www.youtube.com/watch?v=WKwuas0GVkA
1. Lucas-Kanade optical flow:
goodFeaturesToTrack(),
cornerSubPix(),
calcOpticalFlowPyrLK(),
cursor EWMA filter
2. MOSSE object tracking:
goodFeaturesToTrack(),
cornerSubPix(),
cv::legacy::TrackerMOSSE,
all points EWMA filtration
И, конечно, мне нужно было не забывать включить библиотеку tracking453.lib to Linker. Я потратил полдня, выясняя причину unresolved external symbol LNK2001 error при включении cv::legacy::Tracker. Почему то включение трекера из основной библиотеки (cv::Tracker) не приводило к этой ошибке компиляции, это сбивало с толку.
Basel Face model, если получится, попробую для отслеживания мимики. Smorodov, спасибо что обратили внимание!