Реализация распознавания маркеров (Image Tracking) в AR-приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация распознавания маркеров (Image Tracking) в AR-приложении
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    760
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    646
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1063
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    884
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    450

Реализация распознавания маркеров (Image Tracking) в AR-приложении

Image tracking — привязка AR-контента к физическому изображению: упаковке товара, плакату, визитке, странице книги. Пользователь наводит камеру — изображение «оживает». Технически это хорошо изученная задача, но в production регулярно натыкаешься на одни и те же грабли: трекинг «трясётся» на бликующих поверхностях, теряется при частичном перекрытии, не масштабируется на большой каталог маркеров.

ARKit Image Tracking: как это работает

ARImageTrackingConfiguration — конфигурация для трекинга без world tracking. Быстрее инициализируется, меньше нагрузка на CPU, но нет plane detection и world anchors.

ARWorldTrackingConfiguration с detectionImages — трекинг маркеров в контексте полного world tracking. Нужен, когда AR-контент должен существовать в мировом пространстве между кадрами или когда нужен plane detection одновременно с image tracking.

Подготовка reference image: ARReferenceImage с физическими размерами (physicalSize). Размер обязателен — от него ARKit вычисляет дистанцию и scale. Неправильный размер → объект в неправильном масштабе.

guard let image = UIImage(named: "marker"),
      let cgImage = image.cgImage else { return }

let referenceImage = ARReferenceImage(cgImage, orientation: .up, physicalSize: CGSize(width: 0.15, height: 0.10))
referenceImage.name = "product_label"
config.detectionImages = [referenceImage]
config.maximumNumberOfTrackedImages = 4

maximumNumberOfTrackedImages — критичный параметр. ARKit A12+ трекает до 100 изображений одновременно (обнаружение), но активный трекинг позиции — до 4 на старых чипах, до 8 на A14+. Разница: detected — знаем, что маркер есть; tracked — знаем точную позицию в реальном времени.

Качество маркера и почему «любое изображение» не работает

ARKit оценивает quality score каждого reference image. Изображения с низким quality score трекаются нестабильно или не детектируются вовсе. Проверка: добавить изображение в Xcode AR Resources group → в инспекторе покажет предупреждение при низком quality.

Плохие маркеры:

  • Однотонные или с большими однотонными областями (логотип на белом фоне)
  • Симметричные паттерны (ARKit путается в ориентации)
  • Низкоконтрастные, блёклые изображения
  • Текст без других визуальных элементов

Хорошие маркеры:

  • Высококонтрастные, разнородные паттерны (обложки журналов, детальные иллюстрации)
  • Асимметричные — ARKit однозначно определяет ориентацию
  • Физический размер от 10 см — мелкие маркеры трекаются с дистанции менее 30 см

Трекинг на бликующих поверхностях

Упаковка с глянцевым покрытием, голографические наклейки, фольгированные элементы — все они дают блики, которые меняют appearance маркера в зависимости от угла освещения. ARKit теряет трекинг, потому что features points «плавают».

Решение на уровне физического продукта: матовое ламинирование вместо глянца на зоне маркера. На уровне кода: hysteresis для потери трекинга — не сразу скрывать AR-контент при trackingState == .limited, а с задержкой 0.5-1 секунда. Большинство кратких потерь восстанавливаются сами.

ARCore Image Tracking

AugmentedImageDatabase — аналог ARKit detection images. Базу данных компилируем заранее через arcoreimg утилиту (командная строка) или AugmentedImageDatabase(session:imageBytes:) в runtime. Предкомпилированная база загружается быстрее.

ARCore дополнительно предоставляет AugmentedImage.getTrackingMethod(): FULL_TRACKING (полный трекинг) vs LAST_KNOWN_POSE (последняя известная позиция). LAST_KNOWN_POSE позволяет сохранять AR-контент на позиции даже при временной потере маркера из кадра.

Каталог маркеров и управление контентом

Для приложений с большим каталогом (100+ маркеров — например, все SKU продуктовой линейки) нельзя паковать все reference images в bundle. Архитектура:

  • Сервер хранит reference images + AR-контент
  • При обнаружении нового маркера (по внешнему ID в QR или через cloud recognition) — загружаем контент для конкретного маркера
  • Cloud Image Target (Vuforia Cloud, Wikitude Cloud): клиент отправляет кадр на сервер, сервер возвращает ID маркера и transform. Работает для каталогов 100k+ изображений

Сроки

Базовый image tracking с 1-10 маркерами, статичный 3D-контент — 3-5 дней. Анимированный контент, видео-overlay, управление каталогом через CMS — 2-3 недели. Cloud-решение для 100k+ маркеров — отдельная оценка. Стоимость рассчитывается индивидуально.