Why tracking markers gets lost on glossy packaging?
Image tracking — anchoring AR content to a physical image: product packaging, poster, business card, book page. User points the camera — the image 'comes alive.' Technically it's a well-studied problem, but in production you regularly hit the same issues: tracking 'shakes' on reflective surfaces, gets lost under partial occlusion, doesn't scale to large marker catalogs. We are a team with 5+ years of AR development experience (iOS/Android) and solve these problems turnkey. 50+ AR projects completed, each with its own nuances. Contact us to evaluate your project — we guarantee stable tracking and optimal quality.
ARKit Image Tracking: how it works
ARImageTrackingConfiguration — configuration for tracking without world tracking. Initializes faster, lower CPU load, but no plane detection or world anchors.
ARWorldTrackingConfiguration with detectionImages — marker tracking in the context of full world tracking. Needed when AR content must exist in world space between frames or when plane detection is needed simultaneously with image tracking.
Reference image preparation: ARReferenceImage with physical size (physicalSize). Size is mandatory — ARKit calculates distance and scale from it. Incorrect size → object at wrong scale.
let image = UIImage(named: "marker"),
// get cgImage
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 — critical parameter. ARKit A12+ tracks up to 100 images simultaneously (detection), but active position tracking — up to 4 on older chips, up to 8 on A14+. Difference: detected — we know marker exists; tracked — we know exact real-time position.
Marker quality and why 'any image' doesn't work
ARKit evaluates quality score for each reference image. Images with low quality score track unstably or not at all. Check: add image to Xcode AR Resources group → inspector shows warning for low quality.
Bad markers:
- Solid colors or large uniform areas (logo on white background)
- Symmetric patterns (ARKit confused about orientation)
- Low contrast, faded images
- Text without other visual elements
Good markers:
- High contrast, heterogeneous patterns (magazine covers, detailed illustrations)
- Asymmetric — ARKit unambiguously determines orientation
- Physical size from 10 cm — small markers track from distance less than 30 cm
Apple recommends using images with diverse details and avoiding uniform areas.
Tracking on reflective surfaces
Packaging with glossy coating, holographic stickers, foil elements — all produce reflections that change marker appearance depending on lighting angle. ARKit loses tracking because feature points 'float.'
Solution at physical product level: matte lamination on the marker area. At code level: hysteresis for tracking loss — do not hide AR content immediately when trackingState == .limited, but with a 0.5-1 second delay. Most brief losses recover themselves.
ARCore Image Tracking: comparison with ARKit
| Parameter | ARKit | ARCore |
|---|---|---|
| Maximum tracked images | 4 (A12) / 8 (A14+) | up to 20 on modern devices |
| Marker quality | Quality score, warnings in Xcode | Check via arimg (required) |
| Cloud tracking | no | yes (Cloud Anchors) |
| Database loading | bundle | precompile or runtime |
AugmentedImageDatabase — analogue of ARKit detection images. We compile the database in advance via arcoreimg utility (command line) or AugmentedImageDatabase(session:imageBytes:) at runtime. Precompiled database loads faster.
ARCore additionally provides AugmentedImage.getTrackingMethod(): FULL_TRACKING vs LAST_KNOWN_POSE. LAST_KNOWN_POSE allows keeping AR content at the last known position even when the marker temporarily leaves the frame.
How to scale Image Tracking to hundreds of markers?
For applications with a large catalog (100+ markers — e.g., all SKUs of a product line), you cannot bundle all reference images into the app. Architecture:
- Server stores reference images + AR content
- On detecting a new marker (via external ID in QR or cloud recognition) — load content for that specific marker
- Cloud Image Target (Vuforia Cloud, Wikitude Cloud): client sends frame to server, server returns marker ID and transform. Works for catalogs of 100k+ images
What's included in turnkey Image Tracking development?
- Analysis of your markers — quality assessment, recommendations for improvement
- Preparation of reference images (conversion, cropping, size adjustment)
- Integration of ARKit or ARCore (configuration selection, state handling)
- Testing on 5+ real devices (different cameras, lighting)
- Performance optimization (CPU/GPU, battery)
- Documentation and source code delivery
- Post-launch support (2 weeks)
Contact us to get a consultation and timeline estimate.
How we work: step by step
- You send a task description and marker samples
- We analyze and prepare a commercial proposal
- After agreement — stages: analytics → design → implementation → testing → deployment
- You receive a ready solution with stable tracking guarantee
Timelines
Basic image tracking with 1-10 markers, static 3D content — from 3 to 5 days. Animated content, video overlay, catalog management via CMS — 2-3 weeks. Cloud solution for 100k+ markers — separate evaluation. Pricing determined individually.
Typical errors in Image Tracking development
- Incorrect physicalSize — object not scaled - Low quality reference image — tracking lost - Ignoring maximumNumberOfTrackedImages — FPS drop - No hysteresis — content flickersOur experience: over 5 years in AR development, certified Apple and Google engineers. Write to us — we'll evaluate your project for free.







