Реалізація розпізнавання маркерів (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
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація розпізнавання зображень (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 обчислює дистанцію та масштаб. Неправильний розмір → об'єкт у неправильному масштабі.

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 → інспектор покаже попередження при низькій якості.

Погані маркери:

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

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

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

Трекінг на дзеркальних поверхнях

Упаковка з глянцевим покриттям, голографічні наклейки, фольговані елементи — всі вони дають блиск, який змінює появу маркера залежно від кута освітлення. ARKit втрачає трекінг, тому що feature 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 маркера та трансформацію. Працює для каталогів 100k+ зображень

Сроки

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