Pore dilation
Overview
Section titled “Overview”Pore dilation measures the visible size and density of skin pores — a function of sebum production, age, sun damage, and skin type. The metric is highly sensitive to image resolution; the model returns a status warning when the face area is too small to resolve individual pores reliably.
component: pore_dilationrequest: query: "components=pore_dilation,pore_dilation_visualization"response_path: "results[].description == \"pore_dilation\""value_range: [0, 1] # value is null when analysis is aborted (see below)also_request: - pore_dilation_visualizationwarnings: [2000, 2001]face_width_px: minimum: 600 # below this -> 2000 (error), analysis aborted, value null full_quality: 1200 # 600-1199 -> 2001 (warning); >=1200 -> no warningReference imagery
Section titled “Reference imagery”Reference imagery for this metric is not yet published.
Rendering notes
Section titled “Rendering notes”const pores = response.results.find((r) => r.description === "pore_dilation");
// The finding is present whenever requested, but `value` is null when the// analysis was aborted (face under 600 px). Guard on the value, not the finding.if (!pores || pores.value == null) { // hide the pores card; surface the resolution warning (2000 / 2001) if present}The visualization channel returns polygon-area features with 2 intensity levels by default (the count follows your visualization_thresholds; default [0.0, 0.5]). Render them like any polygon-area metric — draw each feature’s coordinate path, low intensity to high. Paste-ready code: Rendering recipes → Polygon areas.
Regional breakdown
Section titled “Regional breakdown”measurement_locations[] carries one entry per face zone — left cheek, right cheek, forehead left, forehead center, forehead right, nose, left lower face, right lower face, chin — each with its own value, AOI, and mask shapes. Note the global value is the average of only four zones (left cheek, right cheek, forehead left, forehead right); nose, chin, the lower-face zones, and forehead center are still returned but do not feed the headline score.
On faces analysed as male, the three lower-face zones — left lower face, right lower face and chin — are skipped and return value: null, since beard area can’t be measured reliably. The entries are still present, so guard per-region as well as at finding level. Note this is null, not the -1 that the pigmentation metrics use for an unavailable region.
Edge cases
Section titled “Edge cases”- Face width under 600 px → status
2000, analysis aborted,value: null; treat as “data unavailable” rather than zero. - Face width 600–1199 px → status
2001; scores are returned but flagged unreliable. - Smoothing / beauty filters applied client-side remove the fine detail the metric measures, so scores drop toward zero regardless of the user’s actual pores.
- Heavy foundation fills and conceals pores, lowering the score.
local_warnings[]
Section titled “local_warnings[]”2000(error) — face area resolution too low (face width under 600 px); pore analysis aborted,valueisnull.2001(warning) — face area resolution low (face width 600–1199 px); results returned via an upsizing fallback and may be unreliable.
These are the only codes the metric emits. (The canonical 2000 text reads “…at minimum 1200 pixels wide,” which the spec marks as outdated — the effective floor is 600 px.)
Related
Section titled “Related”- Visualization data — Cat D (AOI + mask + advanced); 2 intensity levels by default.
- Rendering recipes → Polygon areas — paste-ready polygon-area renderer.