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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация распознавания маркеров (Image Tracking) в AR-приложении
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    744
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    562

Почему трекинг маркеров теряется на глянцевой упаковке?

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

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 см

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

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

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

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

ARCore Image Tracking: сравнение с ARKit

Параметр ARKit ARCore
Максимум трекаемых изображений 4 (A12) / 8 (A14+) до 20 на современных устройствах
Качество маркера Quality score, предупреждения в Xcode Проверка через arimg (требуется)
Cloud-трекинг нет есть (Cloud Anchors)
Загрузка базы bundle предкомпил или runtime

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

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

Как масштабировать Image Tracking на сотни маркеров?

Для приложений с большим каталогом (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. Анализ ваших маркеров — оценка качества, рекомендации по улучшению
  2. Подготовка reference images (конвертация, обрезка, настройка размера)
  3. Интеграция ARKit или ARCore (выбор конфигурации, обработка состояний)
  4. Тестирование на 5+ реальных устройствах (разные камеры, освещение)
  5. Оптимизация производительности (CPU/GPU, батарея)
  6. Документация и передача исходников
  7. Поддержка после запуска (2 недели)

Закажите разработку — получите консультацию и оценку сроков.

Как мы работаем: пошагово

  • Вы присылаете описание задачи и примеры маркеров
  • Мы анализируем и готовим коммерческое предложение
  • После согласования — этапы: аналитика → проектирование → реализация → тестирование → деплой
  • Вы получаете готовое решение с гарантией стабильного трекинга

Сроки

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

Типичные ошибки при разработке Image Tracking - Неправильный physicalSize — объект не масштабируется - Низкое качество reference image — трекинг теряется - Игнорирование maximumNumberOfTrackedImages — падение FPS - Отсутствие hysteresis — контент мерцает

Наш опыт: более 5 лет на рынке AR-разработки, сертифицированные инженеры Apple и Google. Пишите — оценим ваш проект бесплатно.

Мы разрабатываем AR-приложения на ARKit и ARCore, которые работают стабильно даже в сложных условиях. Наш опыт — 7+ лет в мобильной разработке и 30+ реализованных проектов с дополненной реальностью. Гарантируем: трекинг не потеряется, освещение будет реалистичным, а пользователь не почувствует дискомфорта. Сертифицированные разработчики Apple и Google.

Почему трекинг теряется и как это исправить?

ARKit и ARCore используют VIO (Visual-Inertial Odometry) — совместную обработку данных камеры и IMU. Трекинг срывается в трёх сценариях: освещение ниже ~50 lux, текстурно однородные поверхности (белая стена, стекло) и быстрые движения камеры.

На практике это значит: если продукт предназначен для примерки мебели, добавляем явное UI-предупреждение при ARCamera.TrackingState.limited(.insufficientFeatures). Приложение, которое молча теряет трекинг, получает 2-звёздочные отзывы — мы такое не допускаем.

Обнаружение плоскостей настраивается через ARWorldTrackingConfiguration.planeDetection = [.horizontal, .vertical]. Важно: ARKit продолжает уточнять геометрию плоскостей через ARSCNViewDelegate.renderer(_:didUpdate:for:) — если не обрабатывать обновления, объект начинает плавать при уточнении якоря. Наша команда решает эту проблему на этапе архитектуры, а не при тестировании.

AR Foundation: кросс-платформа с нюансами

Unity AR Foundation — слой абстракции поверх ARKit и ARCore. Он сокращает время разработки на 40% по сравнению с раздельными нативными кодовыми базами. Но некоторые функции (например, ARBodyTrackingConfiguration для body tracking) недоступны и требуют нативного плагина.

Для React Native и Flutter прямой AR Foundation отсутствует. Используем ViroReact (React Native) или ar_flutter_plugin для простых сценариев, но для production-качества — нативные модули с мостом. Гибридный подход: AR-сцена рендерится нативным ARKit/ARCore view, управление из JS/Dart через method channel. Входит в нашу стандартную поставку.

Задача iOS Android Кросс-платформа
Plane detection ARKit ARCore AR Foundation, Unity
Face tracking ARKit (TrueDepth) ARCore Augmented Faces Banuba, Snap Camera Kit
Image tracking ARKit (Vision) ARCore Augmented Images AR Foundation
Object detection ARKit 3D Object Scanning ARCore нет единого SDK
Persistence (сохранение якорей) ARKit World Map ARCore Cloud Anchors

Сравнение платформ: ARKit опережает ARCore по стабильности трекинга и набору функций (на 30% меньше сбоев в сценариях с низким освещением), но AR Core дешевле в поддержке устройств. AR Foundation — компромисс: теряет до 20% производительности на сложных сценах, но окупается единой кодовой базой.

Try-on: примерка товаров через AR

Примерка очков, украшений, косметики — отдельный класс задач. Здесь нужен face tracking, а не plane detection.

ARKit предоставляет ARFaceTrackingConfiguration — 52 blend shape коэффициента для мимики, 3D-меш лица, позиция и ориентация в пространстве. Работает только на устройствах с TrueDepth-камерой (iPhone с Face ID).

Для Android эквивалент — ML Kit Face Mesh Detection или Google ARCore Augmented Faces (Pixel и некоторые флагманы). Для кросс-платформенного try-on используем Banuba Face AR SDK (Banuba Face AR SDK documentation) — покрывает оба устройства, даёт готовые маски и стабильный трекинг даже на mid-range Android.

Качество try-on критически зависит от 3D-моделей товаров. Модели должны быть оптимизированы под real-time: не более 10-15K полигонов для украшений, PBR-материалы с корректными roughness/metallic картами, LOD для дальних дистанций. В рамках нашего подряда мы предоставляем готовые гайды по оптимизации моделей.

Как добиться реалистичного освещения в AR?

ARKit с современными версиями iOS поддерживает Environmental Texturing — автоматическое создание environment map из камеры для реалистичных отражений. Включается через ARWorldTrackingConfiguration.environmentTexturing = .automatic. Без этого металлические и стеклянные материалы выглядят пластиково.

ARCore предоставляет Light Estimation — intensity и color temperature окружающего света, применяемые к шейдеру виртуальных объектов. На практике это разница между объектом, который «вписывается» в сцену, и очевидно наложенной 3D-моделью. Мы гарантируем, что финальное изображение не выдаёт виртуальности.

Что входит в работу

  • Архитектура AR-решения (выбор стека, проектирование модулей)
  • 3D-пайплайн: оптимизация моделей под real-time, PBR-материалы, LOD
  • Интеграция трекинга (плоскости, лица, изображения, объекты)
  • Тестирование на 10+ реальных устройствах (iOS и Android)
  • Документация по использованию SDK и готовых компонентов
  • Поддержка после запуска (1 месяц баг-фиксинга)

Сроки и оценка

Простая AR-сцена с размещением одной 3D-модели на плоскости — 1–2 недели. Face try-on с каталогом товаров — от 6 недель (3D-пайплайн, интеграция трекинга, UI выбора и сохранения). Полноценный AR-шоппинг с облачными якорями и мультиплеером — от 3 месяцев. Оценим проект за 1 день — пишите, обсудим вашу AR-идею.