Вопросы, необходимые решить для создания навигационной системы:

1. Выбор библиотеки для стереозрения и 3D-фреймворка

OpenCV – стандарт в компьютерном зрении. В области стереозрения эта библиотека обеспечивает все необходимое – калибровку стереокамеры, нахождение светоотражающих сфер на изображении или шахматных маркеров, триангуляцию и получение трехмерных координат маркеров. Навигационную систему можно создать, не выходя за рамки одной лишь этой библиотеки компьютерного зрения.

Что касается фреймворка, то он должен позволять легко создавать простые 3D-сцены. Первые тестовые приложения должны отображать простые сцены, их разработка должна быть быстрой, наглядной. Усилия должны направляться, в первую очередь, на разработку самой системы навигации, а не на визуализацию.

Фреймворк Unity является правильным выбором для старта разработки. Приложения в этой среде создаются на C# или JavaScript достаточно просто. Большое количество обучающих материалов и хорошо документированный API помогает ускорить разработку.

2. Выбор маркеров

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

3. Конфигурация маркеров

Точность в навигационной системе крайне важна. Конфигурация маркеров (расположение светоотражающих сфер относительно друг друга) напрямую влияет на точность. Маркеры при этом зачастую проектирует сам пользователь навигационной системы. Поэтому для этого проектирования должны быть созданы такие средства и рекомендации, чтобы пользователь не создал "плохой" маркер, который не обеспечивает желаемой точности.

Важно понимать, что “точка интереса” маркированного объекта бывает разной. Для инструмента-щупа, которым проводится регистрация пациента, это его окончание. Для маркированной камеры дополненной реальности – это ее матрица. Для маркированных очков – расположение глаз. Эта точка интереса может находится довольно далеко от самого маркера и, конечно, должна быть неподвижна относительно него.

Во всех этих случаях нас интересует точность определения положения совсем не маркеров, а именно точек интереса – рабочей части инструмента, глаза или матрицы. Зная точность детектирования одной светоотражающей сферы, конфигурацию маркера и расположения точки интереса, можно узнать, с какой точность следует ожидать детектирования точки интереса. На практике эта величина – TRE (Target Registration Error) – используется, например, в медицине при выборе точек, участвующих в регистрации пациента. Также очевидно, что зона интереса должна регистрироваться с максимальной точностью. "Predicting Error in Rigid-Body Point-Based Registration" – хорошая статья про TRE. TRE уменьшается при приближении к центру масс маркера, при увеличении количества сфер и при увеличении расстояния между сферами. Эти рекомендации можно учитывать при конструировании маркера, даже не вычисляя специально TRE.

4. Количество отслеживаемых маркеров

На практике в медицине чаще всего используется один маркер. В нашей системе максимальное количество маркеров не превышает 5 (маркер для очков, на ToF-камере, на камере дополненной реальности). Для самых простых алгоритмов необходимые для слежения за маркерами вычисления растут нелинейно с увеличением их количества. Но ввиду небольшого количества маркеров эти алгоритмы можно оптимизировать в последнюю очередь.

Проекция трехмерной точки на левом и правом изображении откалиброванной стереокамеры должна лежать на одной линии (т.е. координата Y проекций должна совпадать). На практике координата Y на левом и правом изображении немного отличается. Чем хуже откалибрована камера, тем больше может быть это расстояние.

Часто бывает, что на одном изображении лежит сразу несколько точек, у которых координата Y отличается незначительно. В таком случае сложно выбрать им пару на другом изображении, чтобы впоследствии провести триангуляцию.

Для решения этой проблемы приходится перебирать все возможные комбинации проекций на левом и правом изображении. Каждый полученный набор точек из всех возможных комбинаций позже триангулируется, и в полученном наборе трехмерных точек ищутся маркеры. Побеждает тот набор проекционных точек, в котором есть максимальное количество маркеров.

5. Тестовый стенд для определения точности

Проверка точности навигационной системы должна происходить на оборудовании, точность которого превосходит точность нашей системы. Не стоит создавать такие системы, это – отдельная сложная задача. Существуют специальные координатно-измерительные машины с достаточной рабочей областью, которые хорошо справляются с это задачей.

6. Проверка калибровки, перекалибровка у производителя

Перед использование стереокамеры надо проверять качество ее работы. Калибровка, которая напрямую влияет на точность определения маркеров, может перестать быть актуальной. Это может произойти после деформации корпуса стереокамеры или просто со временем. Сама калибровка – сложная процедура, требующая специального оборудования, поэтому она обычно проходит у производителя. Но средства для определения качества калибровки должны быть в распоряжении пользователя, чтобы он смог понять, что стереокамеры необходимо отправить на перекалибровку.

Если маркер детектируется, значит стереокамера уже в какой-то степени откалибрована. Но производители придумал более интересный и надежный способ определения качества калибровки. Создается эталонный объект с большой точностью. Он состоит из двух маркеров, закрепленных между собой на определенной расстоянии. Процесс верификации калибровки заключается в том, что этот объект детектируется по всей рабочей области, при этом расстояние между маркерами должно быть одинаковым, в пределах допустимой ошибки. Проведя такую простую процедуру перед очередным использованием системы, можно быть уверенным в заявленной производителем точности.

Узнайте больше про искусственный интеллект вместе с SMedX