Tesseract оснащен возможностью автоматизированного управления параметрами при помощи формул и скриптов. Для этого был специально разработан простой язык
⚡ ThunderScript.
Все фильтры и узлы Tesseract можно связывать между собой логикой любой сложности, используя формулы и скрипты. Параметры фильтров можно задавать формулами (как в Excel), прямо на предпросмотрах можно размещать кнопки, ползунки, флажки и прочее, связываться с ними при помощи скриптов и формул. Кнопки и ползунки могут быть нажаты прямо из видеопотока. Также можно создавать свои эффекты при помощи ⬤ GPU-шейдеров, и легко интегрировать их с видеотрактом, благодаря IDE с интерактивным просмотром.
Формулы и мастеры
Настройки фильтров можно задавать с помощью формул, почти как в Excel.
В формулах можно не только производить расчёты, но и легко анимировать изменения свойств, ссылаться на другие узлы и фильтры, и их параметры, например, на элементы управления и фильтры анализа и машинного зрения, обращаться к локальным, сетевым и онлайн-данным, переменным и клавиатуре.
Язык формул делался максимально простым для освоения: при вводе формул появляются подсказки с автозавершением, автоматически исправляется ввод в неправильной раскладке, язык не чувствителен к регистру и прощает мелкие неточности. Поддерживаются управляемые [константы], которыми можно управлять ползунками под полем ввода формул.
Для каждой настройки фильтров также предусмотрены мастеры - наборы готовых формул, позволяющих одним нажатием задать поведение параметра - колебания, зависимость от времени, движение по траектории, поворот на цель, произвольное блуждание, управление с клавиатуры или мыши, взятие образца цвета из видео и тому подобное. Всё, что нужно - нажать кнопку, и нужные формулы введутся автоматически.
Контролы и AR
Группа фильтров "Контролы" - кнопки, ползунки, флажки и прочее - позволяет создавать собственные пользовательские интерфейсы и выносить управление нужными параметрами прямо на окно предпросмотра. Контролы имеют массу настроек поведения, а также поля ввода скриптов - эти скрипты будут запускаться при наступлении событий, например, нажатии кнопки или перемещении ползунка.
Контролы поддерживают дополненную реальность: объекты и люди в видео могут нажимать кнопки, двигать ползунки и т.п. Гибкие настройки работы в режиме AR позволяют добиться максимальной точности для разных видов контента - с прозрачным и непрозрачным фоном, сжатых и несжатых видеопотоков. Есть спецконтролы для работы с файлами, COM-портом, и траекториями, контрол "Холст" для программного вывода графики.
Скрипты
Интегрированнй язык ThunderScript позволяет задавать сложные сценарии поведения видеообработки и автоматизировать задачи управления видеотрактом и стриммингом. Поля ввода скриптов имеют подсветку синтаксиса, подсказки и автозавершение с исправлением раскладки. Скрипты можно комбинировать с фильтрами анализа видеопотока, контролами и формулами.
Язык рассчитан на минимальный порог вхождения, то есть продуман так, чтобы его было как можно проще освоить - нечувствительность к регистру и раскладке клавиатуры, мелким оплошностям, динамическая типизация, простой и лёгкий доступ к локальным и онлайн-источникам данных, к видеотракту, простая анимация и работа с сочетаниями клавиш. Для работы с языком достаточно знаний формул Excel. В процессе интерпретации кода язык производит частичную асинхронную двухуровневую JIT-компиляцию, благодаря которой, с одной стороны, достигается высокая скорость исполнения кода, с другой - не происходит задержек и ожиданий прекомпиляции.
Скрипты размещаются в свойствах контролов и выполняются при наступлении событий - нажатия кнопки, перемещение ползунка и т.п.
Шейдеры GLSL
Шейдер - это программа, которая выполняется на видеокарте. Шейдеры эффективны и быстры в обработке и генерации 2D и 3D графики.
Специальные фильтры позволяют генерировать фон и обрабатывать видеопотоки с помощью произвольного алгоритма на языке GLSL. Например, можно создать процедурную генерацию фона, свой алгоритм хромакея или цветокоррекции.
В фильтр интегрирован редактор кода с подсветкой синтаксиса, поддерживается до 5 буферов рендеринга, каждый из которых может принимать на вход до 5 текстур. Текстурами могут быть статичные и анимированные изображения, другие буферы, видеопотоки из любой части видеотракта. Компиляция происходит почти мгновенно, и результат работы шейдера виден сразу.
Язык GLSL расширен возможностями быстрой интеграции с видеотрактом - например, можно прямо из кода шейдера обратиться к контролу выбора цвета или датчику движения - вся работа по преобразованию и пробросу значений в GPU произойдёт автоматически. Для безопасности, шейдер может исполняться в отдельном процессе (эту настройку можно менять в горячем режиме).
На платформе shadertoy.com размещена масса шейдеров, генерирующих потрясающие пейзажи и эффекты. Поскольку среда исполнения шейдеров Tesseract совместима с этой платформой, можно копировать шейдеры оттуда в фильтр, и они будут работать (не забывайте про лицензию).
Интеграция
ПО располагает пакетом инструментов для интеграции с информационной структурой и управления аппаратным обеспечением.
Фильтр "Сервер" позволяет организовывать web-серверы с функциями удалённого управления стриммингом, один или несколько микросервисов для обработки визуальной информации и любых других задач - ПО позволяет полностью или частично организовать backend информационной системы.
Особый пакет фильтров позволяет управлять локальной рабочей станцией, в том числе, интегрироваться с другими программными продуктами. Можно, например, автоматизировать управление презентациями PowerPoint, визуализировать и управлять состоянием клавиатуры и мыши скриптами и макросами, имитировать ввод текста, запускать и контролировать сторонние приложения обработки информации, управлять файлами, именованными и анонимными каналами, напрямую печатать кадры из видеопотока на принтере с цветокоррекцией.
В скриптах и формулах ThunderScript можно легко работать с источниками информации в форматах JSON, CSV, XML, YAML, а также с запросами REST API - не нужно задумываться о формате, процедурах асинхронной загрузки и обновления информации - всё это автоматизировано и доступно из любой части ПО.
Анализ и машинное зрение
Фильтры анализа видеопотоков позволяют считывать определённые параметры видео и звука - от простого снятия образца цвета в реальном времени до анализа частотных характеристик звука. В связке с возможностью указывать параметры любых фильтров с помощью формул, фильтры анализа создают большие возможности создания интерактивного поведения и спецэффектов в видео реального времени.
Инструмент "Градиентомер" строит графики, анализирует и записывает интенсивность каналов на строке, столбце или произвольной линии изображения в реальном времени.
Фильтры анализа звука позволяют выделять спектр, частотные и другие составляющие звука в реальном времени, обнаруживать басы и тональные сигналы, а также работать с DTMF-метками.
Инструменты для измерения отрезков, углов, периметра и площади позволяют производить замеры в реальном времени прямо на видеоизображении.
Специальный набор фильтров машинного зрения позволяет прототипировать видеотракты роботизированных систем на интуитивном уровне и автоматизировать управление обработкой видеопотоков: распознавание объектов, многоканальная GPU-свёртка с удобным редактором ядра до 7х7, фильтры трекинга, обнаружение и усиление микродвижений, усреднение видео и др. Каждый фильтр обладает расширенными возможностями оптимизации, управления каналами и разрешением обработки, а также способами вывода результата.