Глава 3. Программное обеспечение TrackingCam
Программное обеспечение для работы с модулем на текущий момент предлагается для 2х операционных систем — Windows и Ubuntu и представляет собой интерфейс для задания распознаваемых образов, настройки телекамеры и портов ввода-вывода, захвата изображения и иллюстрации работы алгоритмов .

Общий вид интерфейса TrackingCamApp
Рассмотрим каждый из элементов интерфейса подробнее:
Окно с видеопотоком (рис. 3.2.). В него выводится то изображение, которое видит камера модуля. Данное окно не только позволяет наводить модуль на объект, выполняя роль видоискателя, но, и самое главное, при клике с зажатым ctrl на область модуль сам настраивается с базовыми параметрами на отслеживание этой области. Если кликнуть на этом изображении на оранжевый мяч, то модуль и будет его отслеживать. Сам процесс отслеживание наблюдается на следующих окнах:

Окно Image приложения TrackingCamApp

Окно Line Blobs приложения TrackingCamApp
В окне Line blobs отображается бинаризация картинки по заданным порогам цвета, т.е. если в зоне видимости камеры будет несколько различных цветовых областей, соответствующих заданным цветовым настройкам, то в этом окне отобразятся все эти области. Но чаще всего нам необходимо распознавать строго одну область, или область, обладающую определенными признаками — для этого нам необходимо дотянуть настройки системы распознавания и посмотреть на итоговый результат в окне Blobs .

Окно Blobs приложения TrackingCamApp
Здесь будут отражены те области, которые соответствуют заданной нами морфологии объекта — размер (площадь) области, ее форма (круг, многоугольник, степень приближения к кругу). Таким образом, мы можем обозначить требуемые нам параметры области (или нескольких областей) и проверить правильно ли они у нас выделяются на фоне остальных распознанных областей. Собственно, данные о тех областях которые мы видим в этом окне и пойдут у нас на вывод по выбранному интерфейсу.
Для настроек модуля существует отдельное окно . В нем: Number of patterns to process — количество цветовых шаблонов, которые модуль будет отслеживать. Модуль способен отслеживать одновременно до 10 различных объектов, обладающих различающимися друг от друга характеристиками — цветом, формой, размером.
Pattern selected for setting up — выбор шаблона для настройки. Какой шаблон выбран (светится) тот в данный момент доступен для настройки.

Окно настройки TrackingCam приложения TrackingCamApp
Параметры для настройки распознавания области следующие:
Настройки цвета для бинаризации.
Value — яркость. Ncb — синяя цветоразность. Ncr — красная цветоразность
Настройки морфологии.
Area — площадь пятна в пикселах. Например, 10^2 — означает площадь 100 пикс Circularity — округлость, [0 — угловатая фигура, многоугольник, 100 — круг] Inertia — вытянутость, [0 — длинная узкая фигура, 100 — круг] Convexity — выпуклость [0 — внутри габаритного периметра пятна много полостей, 100 — выпуклый многоугольник] Space — площадь фигуры, ограниченной габаритным многоугольником Size — минимальная ширина (W) и высота (H) Gaps — максимальные разрывы по X и Y между пикселями при объединении в пятна

Окно Sync приложения TrackingCamApp
Кнопки вверху.
Connect — кнопка подключения к модулю Need->> — под ней скрывается кнопка записи настроек в модуль, но она становится активной после синхронизации настроек в приложении и в модуле кнопкой Sync
При выборе режима синхронизации возможны следующие операции:
- Можно загрузить сохраненные настройки из модуля
- Можно загрузить текущие настройки приложения в модуль
- Загрузить настройки из файла
- Сохранить настройки в файл
- Выход из диалогового окна
В случае выбора режима — загрузить текущие настройки в модуль, в главном окне настроек станет активная кнопка Save вместо кнопки Need. Кнопка Setup IO — позволяет выполнить настройку интерфейса модуля для обмена данными .

Окно Interface Setup приложения TrackingCamApp
Для настройки доступны такие параметры как режим работы UART, скорость обмена данными, адрес (ID) под которым модуль будет видеться в сети устройств Dynamixel, API которым будут выдаваться результаты обработки наружу и напряжение на портах — 3.3 или 5В.
Кнопка Objects открывает окно , с помощью которого можно настраивать композиции областей и формировать из них объекты. В данном случае под объектом будет пониматься совокупность областей, обладающих различными параметрами, но находящимися в строгом соотношении друг относительно друга. Т.е. мы можем обучить наш модуль распознавать не только однотонные пятна, но и области, состоящие из нескольких цветовых пятен (до 3х), которые можно в своих проектах использовать как сложные цветные маркеры.

Окно Object Detector приложения TrackingCamApp
В режиме распознавания объектов модуль может распознавать до 5 различных объектов.
Основные элементы окна.
Type (number of nodes) — число узлов, из которых может состоять объект Size measure — мера размера базового узла Node 0 указывает, что будет пониматься под размером узла при описании структуры. Нужна, чтобы задавать относительный размер связей. Max axis — большая диагональ габаритного многоугольника пятна. Width — габаритная ширина пятна. Height — габаритная высота. Area — площадь пятна. Convex area — площадь габаритного многоугольника пятна. Print — вывести информацию обо всех найденных объектах в консоль. Output — настройка вывода данных через порт Dynamixel. Sorting criteria — критерий, по которому объекты сортируются в выходной таблице: Similarity — по степени соответствия шаблону, наиболее похожие объекты первыми. Type, similarity — сначала по типу (объекты, соответствующие шаблону 0 первыми), а объекты одинакового типа уже по соответствию. Output size measure — мера размера всего объекта, которая выводится в таблицу. Close — выход из окна.
Объект может состоять из 3х пятен с обозначенными между собой связями. Настройки параметров пятен осуществляются путем выбора соответствующего узла объекта , а параметры самого объекта задаются во окне Object setup .

Окно Node setup приложения TrackingCamApp

Окно Object setup приложения TrackingCamApp
Все параметры узлов и связей настраиваются с помощью нескольких бегунков:
Goal — целевое значение, при совпадении с которым считается, что степень соответствия объекта шаблону максимальна (100% или 255). Min и max используются не только как пороговое значение, но и при расчете степени соответствия. Например, если Goal = 90, Max = 200, а реальное значение 150, то степень соответствия параметру:
Weight — весовой коэффициент при расчете общей степени соответствия узла или связи шаблону. Если вес параметра равен 0, то параметр не учитывается в подсчете соответствия, но все равно проверяются его min и max. Общий коэффициент соответствия узла S_node рассчитывается как взвешенное среднее коэффициентов соответствия всех активных параметров:
Параметры базового узла Node 0.
Type — допустимый номер шаблона одноцветной области.
Например, [0, 2] будет означать, что узлом могут становиться пятна типов 0, 1 или 2.
Cx и Cy положение объекта.
Size (мера размера) — абсолютная величина размера базового узла в соответствии с выбранной мерой. Например, Size (Area) — площадь области.
Circularity, Inertia и Convexity аналогичны морфологическим признакам шаблонов одноцветных областей, а здесь задаются, если их необходимо учесть при расчете степени похожести или сортировке. Min и Max дополнительно не проверяются, т.к. отсеяны при обнаружении пятен, но используются как границы при расчете соответствия.
Angle — абсолютный угол поворота узла Node 0. Угол поворота пятна рассчитывается как угол наклона его большей диагонали к горизонту в диапазоне [0°, 180°], т.к. у диагонали нет направления.
Параметры вторичных узлов.
Type, Circularity, Inertia и Convexity — аналогичны базовому узлу.
8 ../.. (второй бегунок) — задает отношение размера узла к размеру базового узла, а его название меняется в соответствии с заданной мерой размера. Например 8 AX1/AX0
— отношение больших диагоналей 1-го и базового узла. Цифра 8 означает, что модулю задается отношение, умноженное на 8.
Ang1-Ang01 — угол поворота узла Node 1 относительно связи Link01.
Параметры базовой связи Link 01.
L abs — абсолютная длина связи в пикс. в квадрате. Квадрат остается потому, что модуль не извлекает квадратный корень при расчете длины гипотенузы по теореме Пифагора. (8 x L/N0size)^2 — характеризует отношение длины связи к размеру базового узла (в соответствии с заданной мерой). Если мерой узла являются величины с размерностью первой степени: ширина, высота, диагональ и т. д., то они при расчете возводятся в квадрат.
Ang — абсолютный угол поворота связи [0 — слева направо, 360° — справа налево].
Ang to node — относительный угол между связью и большей диагональю базового узла.
Параметры вторичных связей.
L abs, ang — аналогично базовой связи.
(8 x L/L01)^2 — относительная длина связи в сравнении с длиной базовой связи.
Ang from base — относительный угол наклона связи к базовой связи.
Что касается параметров настройки объекта, то они следующие:
Node 0, 1, 2 — минимальная допустимая степень соответствия каждого узла.
Link 01, 02, 12 — минимальная допустимая степень соответствия каждой связи.
Overall — минимальная допустимая общая степень соответствия.
Общая степень соответствия объекта S_overall рассчитывается в свою очередь как среднее взвешенное коэффициентов соответствия всех узлов S_node и связей S_link:
Все параметры, отвечающие на настройку цветового восприятия меняют вид цветовой палитры — светлым выделяется та часть оттенков, которая будет выделяться модулем и затем использоваться для отслеживания области. Таким образом, данное окно используется для удобства настойки, т.к. сразу видно в каких цветовых областях будет выполняться поиск объекта.

Окно Palette приложения TrackingCamApp
В дополнению ко всему вышеуказанному имеется терминал , в который выводится:
- Информация об однотонной области при клике на нее в окне Blobs.
- Информация обо всех объектах при нажатии кнопки Print в меню объектов.
- Системная информация.

Окно терминала приложения TrackingCamApp
Данный модуль технического зрения совместим со всеми популярными на сегодняшний день робототехническими контроллерами.