Sub-area divisions
Overview
Section titled “Overview”When a metric has spatial output, its measurement_locations[] array contains one entry per face sub-region. The CV uses five different division schemes depending on what each metric actually measures — there’s no single canonical face split. Knowing which split a metric uses tells you which description strings to expect and how granular the regional breakdown is.
The five schemes
Section titled “The five schemes”1. Primary division (11 regions)
Section titled “1. Primary division (11 regions)”The default sub-area scheme for metrics that benefit from finely separated face regions:
chin foreheadleft side around mouth right side around mouthnose left under-the-eye regionright under-the-eye region left side around the eyeright side around the eye left cheekright cheekUsed by: texture, redness, uneven_skin_tone, smoothness.
2. Alternative division (6 regions)
Section titled “2. Alternative division (6 regions)”Coarser regions, used by metrics where finer-grained splits don’t add diagnostic value:
left cheek right cheekforehead noseleft lower face right lower faceUsed by: acne, melasma, freckles, dark_spots, hyperpigmentation.
3. UT-zone divisions
Section titled “3. UT-zone divisions”Splits organised around the T-zone (forehead, nose) vs. U-zone (cheeks, jaw) distinction. Two granularities exist:
9-region — used by pore_dilation:
left cheek right cheekforehead left forehead center forehead rightnose chinleft lower face right lower face2-zone — used by shine, skin_type: just the aggregate zones, t-zone and u-zone. (shine additionally includes a Global entry, which holds whole-face visualization data rather than a score — see below.)
Each measurement location also carries a ut_zone field — "u-zone", "t-zone", "none", or "mixed" — useful for routine personalization (oily T-zone vs. dry U-zone).
4. Custom per-metric
Section titled “4. Custom per-metric”Some metrics define their own sub-region vocabulary that fits their specific measurement.
eyes—left eye,right eye.wrinkles— wrinkle-specific sub-region descriptions likeforehead worry lines,between-brows frown lines,left side nasolabial line,right side marionette line,left side eye crow's feet, etc. See Wrinkles for the full list.makeup— nine cosmetic-application areas:Lips,Liplines,Eyelines,Eyeshadow,Eyebrows,Nose,Left cheek,Right cheek,Skin. These are unusual in that they carry no score —valueisnullon every one. They exist purely to holdmask_shapes, so they’re only useful when you also request themaskscomponent. See Makeup.
5. No division
Section titled “5. No division”Whole-face metrics — measurement_locations[] is empty.
Used by: hair (its hair-outline shapes hang off the finding’s own mask_shapes instead), skin_age, and the derived score-only metrics such as dull_skin, radiance, skin_firmness, redness_absolute, dark_spots_adjusted and hyperpigmentation_adjusted.
Why this matters
Section titled “Why this matters”Three concrete partner-side use cases:
- Region-aware UI copy. “More redness around your cheeks than your forehead” comes from looking at the per-location
valueand picking the highest. The set of region names you can expect depends on the scheme — don’t hard-code “forehead” if the metric uses the Alternative split. - Routine personalization.
ut_zoneon each measurement location is the cheapest way to drive “oily T-zone, dry U-zone” routines. It’s present on every measurement location, and meaningfully populated on the Primary, Alternative and UT-zone schemes alike — the Alternative split maps cheeks and lower face tou-zone, forehead and nose tot-zone. Regions that belong to neither report"none"(the eye-area regions of the Primary split, for instance). - Cross-metric comparison. When you want to overlay redness and texture on the same face region, both use the Primary split — same region names, line up directly. Comparing redness regions to acne regions requires mapping (Alternative → Primary).
Cross-reference
Section titled “Cross-reference”A Global entry in measurement_locations[] is not the whole-face score, despite the name. Its value is always null; it exists as a container for whole-face visualization_data. It appears on two metrics only — shine and skin_sagging.
The whole-face score is always the finding’s top-level value, on every metric including those two. Filter Global out when you iterate regions for a score breakdown.
Related
Section titled “Related”- Visualization data — the three-tier model spatial data is layered on top of these sub-area divisions.
- Wrinkles — full custom sub-region list for the wrinkles metric.