Перейти к содержимому
Compvision.ru

EFilimonov

Пользователи
  • Количество публикаций

    2
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем EFilimonov


  1. Отвечу на свой вопрос, может быть кому-то пригодится.

    Christoph Rackwitz дал мне хороший совет: 

    Цитата

    Не отслеживайте всю голову. Отслеживайте каждую часть лица. И не используйте эти трекеры, они слишком сложные. Используйте MOSSE. Он тупой, но очень точный, пока объект (который должен быть крошечной частью лица) не сильно меняется.

    MOSSE приближается к оптическому потоку. Методы расчета оптического потока работают так же, как MOSSE, за исключением того, что они используют более простую математику и меньшие области, поэтому результат более шумный. MOSSE использует большую площадь (для одного трека / точки, конечно) и более сложную математику для более точного результата.

    Я изменил алгоритм. Когда угловые точки передаются алгоритму 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, спасибо что обратили внимание!

    • Thanks 1

  2. Добрый день,
    Я сделал приложение на OpenCV + MFC для управления мышкой людьми с неврологическими нарушениям  https://preability.com/face-controlled-mouse/  Человек сидит и двигает головой перед вебкой ноутбука, мышка двигается, он улыбается – происходит клик и пр.

    В целом, курсор удалось стабилизировать за счет отслеживания согласованного движения точек + EWMA фильтра (Калмана тяжелее и оказался не особо лучше). Разрежение угловых точек по всей площади тоже помогло немного. Но я вижу, что у похожей старой программы (eViacam) идет предварительная обработка изображения (с такими же древними внешними библиотеками для вебкамер). И за счет этого угловые точки стабильнее. 
    Я включил equalizeHist() для ROI в области лица. В темноте детектор стал работать гораздо лучше. Но лицевые точки все равно пляшут при неровном освещении. Старая прога справлялась.
    Я абсолютно не в теме предварительной обработки и хочу понять, что можно сделать с видео на входе дектектора? Пробовал подключить морфологию openCV, но не особо улучшил, зато нагрузил процессор. А у многих людей ноуты на целеронах. 
    Подскажите, пожалуйста, кто в теме, как улучшить видео для детектора???

    Не обязательно библиотеки OpenCV, главное на лету и не слишком нагружая процессор...

×