В 2020 году в условиях угрозы распространения коронавирусной инфекции большинство учебных заведений перешло на дистанционное обучение. В связи с резким переходом на новый формат обучения, многие ученики, студенты и преподаватели оказались не готовы к проведению занятий в дистанционном формате. Проводя занятия из лекционных аудиторий, педагоги были ограничены полем зрения камеры, в связи с чем многим преподавателям приходилось отвлекаться, и поворачивать камеру, чтобы захватить необходимую часть учебной доски.
Для таких занятий оказывается невозможным использовать обычный подход с камерой на штативе. А в случае распространения вирусной инфекции становиться невозможным и вариант с оператором, управляющем камерой. Необходимо использовать иной подход для управления камерой во время проведения дистанционных занятий.
Взаимодействие пользователя с аппаратным модулем будет производиться с помощью приложения с графическим интерфейсом, которое будет анализировать изображение и отправлять команды на аппаратный модуль.
Интерфейс программы будет реализовываться на.NET MAUI, что позволит расширить платформы, на которых доступен программный модуль. Для анализа изображения и определения положение пользователя приложение использует OpenCV. После чего генерирует программу на языке G-code и отправляет её посредством USB на аппаратный модуль, который в свою очередь исполняет полученную программу поворачиваясь на преподавателя. [1]
Для создания пользовательского интерфейса будет использоваться фреймворк.NET MAUI. Поскольку он кроссплатформенный и поддерживает множество ОС, как указано в таблице 1. Так же он является единственным официально поддерживаемым фреймворком для создания пользовательского интерфейса на платформе.NET. За счет одной кодовой базы для разных платформ фреймворк позволяет облегчить поддержку множества операционных систем и уменьшить стоимость разработки.
Таблица 1
Сравнение фреймворков для создания пользовательского интерфейса [1, 2, 3]
Windows |
Linux |
macOS |
iOS |
Android |
Tizian |
|
Windows forms |
+ |
- |
- |
- |
- |
- |
Xamarin |
+ |
- |
- |
+ |
+ |
- |
WPF |
+ |
- |
- |
- |
- |
- |
Avalonia UI |
+ |
+ |
+ |
- |
- |
- |
MAUI |
+ |
+ |
+ |
+ |
+ |
+ |
OpenCV — набор алгоритмов компьютерного зрения, численных методов и обработки изображения с открытым кодом. OpenCV написан на C++. Он поддерживается на многих языках, таких как Python, Java и MATLAB/OCTAVE, C#. [4]
Рис. 1 Среднее время обработки кадра (мс)
Таблица 2
Преимущества и недостатки алгоритмов слежения [5, 6]
Преимущества |
Недостатки |
|
KCF |
Точность и скорость выше, чем MIL. Оповещения об ошибках отслеживания лучше, чем BOOSTING и MIL |
Не восстанавливается после полной окклюзии |
MIL |
Довольно хорошая производительность. Не дрейфует так сильно, как BOOSTING, и неплохо справляется с частичной окклюзией |
Не достоверное оповещение об ошибках отслеживания. Не восстанавливается после полной окклюзии |
GOTURN |
Устойчив к изменениям точки зрения, изменениям освещения и деформации |
Плохо справляется с окклюзией |
BOOSTING |
Нет |
Производительность отслеживания посредственная. Нет достоверного оповещения об ошибке отслеживания |
CSRT |
Высокая точность отслеживания объектов |
Работает со сравнительно низким количеством кадров в секунду |
MOSSE |
Легко реализовать, он такой же точный, как и другие сложные трекеры, и намного быстрее. Обнаруживает окклюзию на основе соотношения peak-to-sidelobe, что позволяет трекеру останавливаться и возобновлять работу с места остановки |
По производительности отстает от трекеров, основанных на глубоком обучении |
TLD |
Лучше всего работает при окклюзии на нескольких кадрах. Кроме того, лучше всего отслеживаются изменения масштаба |
Много ложных срабатываний, что делает алгоритм практически непригодным для использования |
MEDIANFLOW |
Отличные отчеты об ошибках отслеживания. Работает очень хорошо, когда движение предсказуемо и нет окклюзии |
Ошибается при быстром движении |
Для анализа изображение будет использоваться алгоритм слежение MOSSE, за его скорость, как показано на рисунке 1, и возможность продолжать работу после полной окклюзии объекта слежения, что будет полезно, если преподавателю необходимо отойти, что описано в таблице 2.
Аналогов программному модулю нет, но есть аналоги связки программного модуля и аппаратного модуля, все они поставляются в комплекте с сенсором, что не только дороже, но и уменьшает возможности применения. Например, если камеру нужна поставить позади рядов лекционной аудитории, то следует использовать объектив с большим приближением, а если камера стоит на кафедре, то следует использовать объектив с меньшим приближением и большим углом обзора. К тому же, интегрированность сенсора уменьшает потенциальный срок службы, если сенсор выйдет из строя его нельзя будет просто заменить на новый.
Литература:
- Supported platforms for.NET MAUI apps [Электронный ресурс] / Microsoft https://learn.microsoft.com/en-us/dotnet/maui/supported-platforms
- Xamarin.Forms supported platforms [Электронный ресурс] / Microsoft https://learn.microsoft.com/en-us/xamarin/get-started/supported-platforms?tabs=macos
- Desktop Guide (WPF.NET) [Электронный ресурс] / Microsoft https://learn.microsoft.com/en-us/dotnet/desktop/wpf/overview/?view=netdesktop-6.0
- OpenCV About [Электронный ресурс] / OpenCV team https://opencv.org/about/#:~:text=OpenCV %20(Open %20Source %20Computer %20Vision,perception %20in %20the %20commercial %20products.
- Object tracking using OpenCV [Электронный ресурс] / Satya Mallic https://learnopencv.com/object-tracking-using-opencv-cpp-python/
- Comparison of tracking algorithms implemented in OpenCV, Peter Janku, Karel Koplik, Tomas Dulik1, and Istvan Szabo // MATEC Web of Conferences 76, 04031 (2016)