{ "landmarks": { "coordSystem": "screen (image pixel: x=0 좌측, y=0 상단; left=작은 x, right=큰 x; 인물 해부학적 좌우 아님)", "eyeLeft": { "innerCorner": [ 433.39, 588.66 ], "outerCorner": [ 345.62, 578.8 ], "upperLidTop": [ 381.33, 566.28 ], "lowerLidBottom": [ 387.83, 592.8 ], "iris": { "center": [ 387.31, 576.96 ], "radius": 19.17 } }, "eyeRight": { "innerCorner": [ 550.71, 589.88 ], "outerCorner": [ 637.67, 578.54 ], "upperLidTop": [ 601.55, 566.13 ], "lowerLidBottom": [ 596.27, 593.19 ], "iris": { "center": [ 595.07, 576.86 ], "radius": 19.41 } }, "eyebrowLeft": { "inner": [ 455.8, 526.95 ], "peak": [ 369.0, 521.19 ], "outer": [ 324.2, 527.5 ] }, "eyebrowRight": { "inner": [ 526.5, 526.84 ], "peak": [ 619.5, 519.78 ], "outer": [ 667.5, 526.96 ] }, "noseTip": [ 493.52, 712.47 ], "mouthCornerLeft": [ 422.65, 806.53 ], "mouthCornerRight": [ 558.88, 808.4 ], "upperLipTopCenter": [ 493.82, 774.04 ], "lowerLipBottomCenter": [ 492.31, 834.98 ], "chinTip": [ 491.82, 932.41 ], "faceWidthAtEyeLevelLeft": [ 273.76, 630.72 ], "faceWidthAtEyeLevelRight": [ 704.05, 629.99 ] }, "landmarkDetector": "mediapipe FaceLandmarker (tasks) 1.0.1, model=face_landmarker(float16, v1)", "browCenterline": { "method": "Otsu(front lum in bbox) AND diff(F-front)>=25, morphological closing to merge hatching, single global degree-2 polyfit on column-weighted centroid with one-pass outlier removal", "diffThresh": 25.0, "bboxPad": { "x": 25.0, "yUp": 42.0, "yDown": 14.0 }, "closingKernel": [ 7, 11 ], "minComponentAreaPx": 30.0, "outlierStdMult": 2.0, "edgeInsetFrac": 0.03, "peakWindow": [ 0.25, 0.6 ], "peakFallbackFrac": 0.35, "peakFlatHeightPx": 3.0, "peakFailEdgeFrac": 0.2, "oldPoints": { "browLeft": { "inner": [ 449.0, 543.74 ], "peak": [ 352.93, 508.38 ], "outer": [ 304.12, 533.83 ] }, "browRight": { "inner": [ 534.98, 542.72 ], "peak": [ 628.43, 506.85 ], "outer": [ 676.51, 532.35 ] } }, "newPoints": { "browLeft": { "name": "browLeft", "bbox": [ 279, 466, 474, 558 ], "otsuThresh": 99.0, "colRange": [ 320, 460 ], "width": 140.0, "nColumns": 129, "nOutliersRemoved": 7, "fitCoeffs": [ 0.00157525, -1.23283377, 761.61565189 ], "inner": [ 455.8, 526.95 ], "peak": [ 369.0, 521.19 ], "outer": [ 324.2, 527.5 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.8992, "checkA_pass": true, "halfWidthInner": 5.39, "halfWidthPeak": 7.98, "halfWidthOuter": 3.424, "bandX0": 279, "bandY0": 466, "colMin": 320, "colMax": 460 }, "browRight": { "name": "browRight", "bbox": [ 510, 465, 702, 557 ], "otsuThresh": 108.0, "colRange": [ 522, 672 ], "width": 150.0, "nColumns": 147, "nOutliersRemoved": 4, "fitCoeffs": [ 0.00160062, -1.91032372, 1088.9327895 ], "inner": [ 526.5, 526.84 ], "peak": [ 619.5, 519.78 ], "outer": [ 667.5, 526.96 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.966, "checkA_pass": true, "halfWidthInner": 6.342, "halfWidthPeak": 7.979, "halfWidthOuter": 2.926, "bandX0": 510, "bandY0": 465, "colMin": 522, "colMax": 672 } }, "halfWidthLeft": [ 5.39, 7.98, 3.424 ], "halfWidthRight": [ 6.342, 7.979, 2.926 ], "halfWidthNote": "원화 눈썹 잉크 띠 반두께[inner,peak,outer](px, 중심선 법선 방향). export_rig.py가 persona.json browHalfWidthFromArt!=false(기본)면 RigBrow.halfWidth로 내보낸다.", "checkB_innerMinusPeakY": { "browLeft": 5.76, "browRight": 7.06 }, "checkD_symmetry": { "innerYDiff": 0.11, "peakYDiff": 1.41 }, "evidenceImage": "preview/v2/brow-centerline.jpg" }, "schemaVersion": "vignette.avatar.v3.layers.v1", "persona": "P7", "canvas": { "w": 1005, "h": 1566 }, "base": { "front": "base/base-front.png", "faceless": "base/base-faceless.png", "facelessPadded": "base/base-faceless-padded.png", "facelessSize": [ 1005, 1566 ], "padNote": "base-faceless.png 마지막 행을 0번 복제해 1005x1566(base-front.png 크기)으로 패딩한 것이 F다." }, "segmenter": { "model": "selfie_multiclass_256x256.tflite (mediapipe ImageSegmenter, storage.googleapis.com)", "categories": { "0": "background", "1": "hair", "2": "bodySkin", "3": "faceSkin", "4": "clothes", "5": "others" }, "categoryPixelCounts": { "0": 659577, "1": 157948, "2": 76012, "3": 183814, "4": 494322, "5": 2157 }, "hairEdgeRefine": { "dilatePx": 6, "lumThreshold": 110, "addedPixels": 7398 } }, "chinLine": { "landmarkIndex": 152, "xy": [ 491.82, 932.41 ], "marginPx": 8, "cutY": 940.41 }, "faceOval": { "landmarkLoop": [ 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288, 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136, 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109 ], "scale": 1.04, "sourceImage": "base/base-front.png" }, "layers": [ { "id": "body", "file": "layers/body.png", "source": "base-faceless-masked+regenerated-fill", "alphaBBox": [ 0, 725, 1005, 1566 ], "opaquePixels": 574074, "greenResidue": 0, "fillTargetPixels": 17280, "fillSourceRaw": "raw/body.png (rejected 재생성이 아니라 수용된 body.png의 크로마키 결과; head/hairFront와 달리 body 재생성은 승인됨)" }, { "id": "head", "file": "layers/head.png", "source": "base-faceless-masked", "alphaBBox": [ 184, 184, 806, 1043 ], "opaquePixels": 345799, "greenResidue": 0 }, { "id": "hairFront", "file": "layers/hairFront.png", "source": "base-faceless-masked", "alphaBBox": [ 258, 413, 719, 802 ], "opaquePixels": 28325, "greenResidue": 0 } ], "rejectedRawEdits": { "body": { "file": "raw/body.png", "status": "accepted-as-fill-source", "reason": "정렬 (0,0), 형태 변형 없음 — head_mask 채움 전용 소스로 재사용" } }, "composite": { "meanAbsDiff": { "full": 2.085797280095902, "face": 0.3415553669119034, "hairOutline": 7.633911850659033 }, "target": { "full": 3.0, "pass": true }, "backgroundNote": "카테고리0(배경)은 종이결 텍스처 노이즈(표준편차 ~29/채널)를 포함해 평탄한 크림(#EEE5D3)과 자체적으로 평균절대차 ~7 차이가 난다." }, "layersV2": { "chinBandFix": { "targetRegionPixels": 13086, "sourceBandHeight": 150, "rowJitterRange": [ -2.0, 2.0 ], "rngSeed": 20260930 }, "hairEdgeFix": { "bandOuterPx": 40, "bandInnerPx": 6, "lumSmoothstep": [ 205.0, 150.0 ], "minFragmentAreaPx": 60, "head": { "bandOuterPixels": 72201, "bandInnerPixels": 26037, "componentsBefore": 80, "removed": 77, "removedPixels": 684 }, "hairFront": { "bandOuterPixels": 6035, "bandInnerPixels": 15130, "componentsBefore": 129, "removed": 125, "removedPixels": 353 } }, "hairPaperGapFix": { "regionDilatePx": 6, "paperColorDistThreshold": 40.0, "paperLumThreshold": 195.0, "paperSatThreshold": 40.0, "opaqueAlphaThreshold": 0.95, "regionPixels": 169288, "head": { "targetPixels": 1261, "componentsBefore": 3, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 }, "hairFront": { "targetPixels": 11, "componentsBefore": 4, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 } }, "jawInkFix": { "mouthCenterY": 800.29, "distThresholdPx": 14.0, "mergePx": 3, "aspectThreshold": 1.0, "removedGroups": [], "keptGroups": [ { "pixels": 42, "bbox": [ 299, 801, 304, 814 ], "width": 5, "height": 13, "aspect": 0.385 }, { "pixels": 34, "bbox": [ 662, 801, 680, 836 ], "width": 18, "height": 35, "aspect": 0.514 }, { "pixels": 2, "bbox": [ 310, 825, 312, 828 ], "width": 2, "height": 3, "aspect": 0.667 } ], "removedPixels": 0, "strayFragmentCleanup": { "componentsBefore": 4, "removed": 0, "removedPixels": 0 } }, "metrics": { "body": { "haloPct": 0.502293077091068 }, "head": { "haloPct": 0.8726695755652519, "bgLeakAlphaMean": 4.8724556565942635e-05, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 }, "hairFront": { "haloPct": 0.0, "bgLeakAlphaMean": 0.0, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 } }, "layers": [ { "id": "body", "bbox": [ 0, 725, 1005, 1566 ], "opaque": 558776, "greenResidue": 1 }, { "id": "head", "bbox": [ 174, 151, 822, 1043 ], "opaque": 348927, "greenResidue": 0 }, { "id": "hairFront", "bbox": [ 220, 413, 755, 836 ], "opaque": 33451, "greenResidue": 0 } ], "faceDetail": { "browLandmarksSource": "manifest.landmarks.eyebrowLeft/Right", "region": "face", "faceInsetPx": 24.0, "matchFacelessColor": true, "matchFacelessColorDeltaRgb": { "eyeLeft": [ -16.69, -16.87, -17.95 ], "eyeRight": [ -13.76, -14.61, -16.21 ], "browLeft": [ 1.81, 0.25, -4.16 ], "browRight": [ 0.58, -0.04, -3.37 ], "mouth": [ -0.72, -0.94, -4.42 ] }, "regions": { "eyeLeft": [ 315.6, 511.2, 458.4, 662.8 ], "eyeRight": [ 525.7, 509.8, 667.7, 663.2 ], "mouth": [ 377.6, 737.5, 603.9, 917.4 ], "moles": [] }, "exclusionPixels": { "eyeLeft": 11350, "eyeRight": 10802, "browLeft": 12463, "browRight": 11270, "mouth": 16631, "union": 54127 }, "hairMaskPixels": 177726, "bbox": [ 276, 423, 701, 936 ], "textureCloneStamp": { "cloneTargetThreshold": 65.0, "avoidThreshold": 110.0, "lineOpeningIterations": 3, "featherPx": 4.0, "badTexturePixels": 217, "preservedShadowPixels": 0, "components": [ { "componentId": 1, "pixels": 3, "offset": [ 40, 40 ], "method": "clone-stamp" }, { "componentId": 2, "pixels": 2, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 3, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 4, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 5, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 6, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 7, "pixels": 1, "offset": [ -60, 0 ], "method": "clone-stamp" }, { "componentId": 8, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 9, "pixels": 4, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 10, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 11, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 12, "pixels": 2, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 13, "pixels": 26, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 14, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 15, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 16, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 17, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 18, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 19, "pixels": 1, "offset": [ -40, 0 ], "method": "clone-stamp" }, { "componentId": 20, "pixels": 4, "offset": [ 40, 40 ], "method": "clone-stamp" }, { "componentId": 21, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 22, "pixels": 1, "offset": [ -40, 0 ], "method": "clone-stamp" }, { "componentId": 23, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 24, "pixels": 1, "offset": [ -60, 0 ], "method": "clone-stamp" }, { "componentId": 25, "pixels": 1, "offset": [ -40, 0 ], "method": "clone-stamp" }, { "componentId": 26, "pixels": 2, "offset": [ 40, 40 ], "method": "clone-stamp" }, { "componentId": 27, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 28, "pixels": 5, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 29, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 30, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 31, "pixels": 7, "offset": [ 100, 0 ], "method": "clone-stamp" }, { "componentId": 32, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 33, "pixels": 1, "offset": [ 100, 0 ], "method": "clone-stamp" }, { "componentId": 34, "pixels": 1, "offset": [ 60, -100 ], "method": "clone-stamp" }, { "componentId": 35, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 36, "pixels": 1, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 37, "pixels": 2, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 38, "pixels": 1, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 39, "pixels": 15, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 40, "pixels": 2, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 41, "pixels": 2, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 42, "pixels": 1, "offset": [ 0, 60 ], "method": "clone-stamp" }, { "componentId": 43, "pixels": 8, "offset": [ 60, -100 ], "method": "clone-stamp" }, { "componentId": 44, "pixels": 7, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 45, "pixels": 8, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 46, "pixels": 4, "offset": [ 40, -40 ], "method": "clone-stamp" }, { "componentId": 47, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 48, "pixels": 2, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 49, "pixels": 10, "offset": [ -120, -60 ], "method": "clone-stamp" }, { "componentId": 50, "pixels": 1, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 51, "pixels": 2, "offset": [ 120, -60 ], "method": "clone-stamp" }, { "componentId": 52, "pixels": 4, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 53, "pixels": 2, "offset": [ 120, -60 ], "method": "clone-stamp" }, { "componentId": 54, "pixels": 2, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 55, "pixels": 1, "offset": [ 0, -60 ], "method": "clone-stamp" }, { "componentId": 56, "pixels": 4, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 57, "pixels": 3, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 58, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 59, "pixels": 4, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 60, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 61, "pixels": 1, "offset": [ 120, -60 ], "method": "clone-stamp" }, { "componentId": 62, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 63, "pixels": 3, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 64, "pixels": 1, "offset": [ -120, -60 ], "method": "clone-stamp" }, { "componentId": 65, "pixels": 1, "offset": [ 0, -40 ], "method": "clone-stamp" }, { "componentId": 66, "pixels": 1, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 67, "pixels": 1, "offset": [ 0, 60 ], "method": "clone-stamp" }, { "componentId": 68, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 69, "pixels": 6, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 70, "pixels": 1, "offset": [ 0, 60 ], "method": "clone-stamp" }, { "componentId": 71, "pixels": 3, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 72, "pixels": 2, "offset": [ 0, -60 ], "method": "clone-stamp" }, { "componentId": 73, "pixels": 1, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 74, "pixels": 9, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 75, "pixels": 2, "offset": [ 0, -60 ], "method": "clone-stamp" }, { "componentId": 76, "pixels": 5, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 77, "pixels": 1, "offset": [ -40, -40 ], "method": "clone-stamp" }, { "componentId": 78, "pixels": 2, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 79, "pixels": 2, "offset": [ 0, -60 ], "method": "clone-stamp" }, { "componentId": 80, "pixels": 3, "offset": [ 120, -60 ], "method": "clone-stamp" } ] }, "genericPatches": { "forehead": [ 530, 419, 578, 467 ], "cheekLeft": [ 338, 640, 386, 688 ], "cheekRight": [ 513, 641, 561, 689 ] }, "genericPatchBaseline": { "highFreqEnergy": 9.080476197978074, "lineEnergy": 4.482899101781223 }, "checkA_meanAbsDiff": 0.551403778535253, "checkB_seamLumDiff": 4.8619307927367, "checkC_holeDarkResiduePct": 0.33517397699597307, "checkC_violationPixels": 139, "checkD_texturePreservation": { "eyeLeft": { "insideEnergy": 11.728178068836447, "baselineEnergy": 9.080476197978074, "ratio": 1.2915818304163311, "pass": true }, "eyeRight": { "insideEnergy": 9.141842269631741, "baselineEnergy": 9.080476197978074, "ratio": 1.0067580235128342, "pass": true }, "browLeft": { "insideEnergy": 17.537053096939957, "baselineEnergy": 9.080476197978074, "ratio": 1.9312922268156913, "pass": true }, "browRight": { "insideEnergy": 13.608813222720961, "baselineEnergy": 9.080476197978074, "ratio": 1.498689377738934, "pass": true }, "mouth": { "insideEnergy": 6.004906204634735, "baselineEnergy": 9.080476197978074, "ratio": 0.6612986008345941, "pass": false } }, "checkD_allPass": false, "checkE_ghostOutline": { "eyeLeft": { "bandLineEnergy": 10.536511919699906, "baselineLineEnergy": 4.482899101781223, "ratio": 2.350379002622066, "pass": false }, "eyeRight": { "bandLineEnergy": 8.918524608958212, "baselineLineEnergy": 4.482899101781223, "ratio": 1.9894546824430086, "pass": false }, "browLeft": { "bandLineEnergy": 14.994533403406946, "baselineLineEnergy": 4.482899101781223, "ratio": 3.3448295540377115, "pass": false }, "browRight": { "bandLineEnergy": 4.481198714945496, "baselineLineEnergy": 4.482899101781223, "ratio": 0.999620694823345, "pass": true }, "mouth": { "bandLineEnergy": 4.588176972223662, "baselineLineEnergy": 4.482899101781223, "ratio": 1.023484327452431, "pass": true } }, "checkE_allPass": false, "checkDarkCircle": { "eyeLeft": { "compositeMean": 142.89866666666666, "frontMean": 142.80361904761904, "diff": 0.09504761904761949, "pass": true }, "eyeRight": { "compositeMean": 141.6638095238095, "frontMean": 141.38838095238094, "diff": 0.2754285714285629, "pass": true } }, "checkDarkCircle_allPass": true }, "paperGrain": { "sourceImage": "base/base-front.png", "sourceOrigin": [ 10, 10 ], "tileSize": 256, "personMarginPx": 20, "cleanFraction": 0.9999847412109375, "contaminatedPixelsFilled": 1, "chromaKeep": 0.3, "targetLumRange": [ 245.0, 250.0 ], "lumShift": 23.471405029296875, "finalMeanLum": 247.49236309765936, "finalLumStd": 2.192897744732887, "seamContinuity": { "leftRightDiff": 0.15942372250082334, "topBottomDiff": 0.01046539273550214 } } }, "lipTexture": { "designVersion": "A5(아랫입술 그늘 띠를 lip-shadow 조각으로 분리)", "landmarks": { "mouthCornerLeft": [ 422.65, 806.53 ], "mouthCornerRight": [ 558.88, 808.4 ], "upperLipTop": [ 493.82, 774.04 ], "lowerLipBottom": [ 492.31, 834.98 ], "mouthCenter": [ 493.23816396296024, 800.2905101180077 ] }, "capBBox": [ 409.76, 769.51, 571.76, 839.51 ], "otsuThreshLabA": 135.0, "diffThresh": 20.0, "dilatePx": 10.0, "alphaRampPx": 4.0, "splitOverlapPx": 2.0, "shadowBandPx": 18.0, "shadowTopOverlapPx": 6.0, "shadowSideRampPx": 6.0, "shadowTopRampPx": 4.0, "checks": { "lip-upper": { "regionPixelCount": 5345, "fullOpacityPixelCount": 4579, "rampPixelCount": 766, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 36, 33, 170, 50 ] }, "lip-lower": { "regionPixelCount": 5690, "fullOpacityPixelCount": 4980, "rampPixelCount": 710, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 38, 71, 164, 49 ] }, "lip-shadow": { "regionPixelCount": 3024, "fullOpacityPixelCount": 1512, "rampPixelCount": 1512, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 58, 77, 126, 51 ] }, "splitOverlapPixelCount": 327, "splitOverlapBandOk": true, "splitOverlapAlphaMaxDiff": 0, "splitOverlapConsistentOk": true, "splitCoverageMismatchPixelCount": 0, "splitCheckOk": true, "shadowLowerOverlapPixelCount": 2256, "shadowLowerOverlapMaxDiff": 25.3765628604383, "shadowLowerOverlapDiffGt1PixelCount": 106, "shadowLowerOverlapOk": false }, "check3NeutralComposite": { "fullOpacityMaxDiff": 0.0, "rampMeanAbsDiff": 3.033, "mouthBBoxMeanAbsDiff": 1.48 }, "pngFileSizes": { "lip-upper": 23136, "lip-lower": 21665, "lip-shadow": 18046 }, "canvasOrigin": { "upper": [ 406, 763 ], "lower": [ 408, 801 ], "shadow": [ 428, 807 ] }, "evidenceImage": "preview/v2/lip-texture.jpg", "check4WebpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "jaw": { "designVersion": "A5(결정문 §8.4 하관 띠 변형 — 턱 조각 원본)", "noseTip": [ 493.52, 712.47 ], "chinTip": [ 491.82, 932.41 ], "yFormula": "noseTip.y - 50 - 10 .. chinTip.y + 40", "noseToTopPx": 60.0, "chinToBottomPx": 40.0, "ovalOutsetPx": 18.0, "faceOvalSource": "export_rig.detect_face_landmarks + compute_face_oval(base-front.png, 결정적)", "bboxCanvas": [ 251, 652, 729, 973 ], "naiveXRangeForComparison": [ 251, 729 ], "checks": { "head": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 308210 }, "detail": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 356378 } }, "evidenceImage": "preview/v2/jaw-pieces.jpg", "check1VsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 2.673, "maxAbsDiffPremultipliedRgb": 34.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 1.819, "maxAbsDiffPremultipliedRgb": 38.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": true } } }, "pipelineRun": { "persona": "P7", "timestamp": "2026-10-01T21:42:40", "completed": true, "stages": [ { "stage": "brow_sprite", "ok": true, "elapsedSec": 2.84 }, { "stage": "paper_grain", "ok": true, "elapsedSec": 2.47 }, { "stage": "lip_texture", "ok": true, "elapsedSec": 2.27 }, { "stage": "jaw_pieces", "ok": true, "elapsedSec": 2.2 }, { "stage": "export_rig", "ok": true, "elapsedSec": 17.28 }, { "stage": "final_previews", "ok": true, "elapsedSec": 19.7 } ] }, "lipTexturePublish": { "quality": "lossless", "fileSizes": { "lip-upper": 15948, "lip-lower": 15146, "lip-shadow": 13252 }, "totalBytes": 44346, "budgetBytes": 81920, "webpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "jawPublish": { "quality": 80, "scale": 1.0, "fileSizes": { "jaw-head": 24328, "jaw-detail": 23986 }, "totalBytes": 48314, "budgetBytes": 204800, "vsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 2.673, "maxAbsDiffPremultipliedRgb": 34.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 1.819, "maxAbsDiffPremultipliedRgb": 38.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": true } } }, "motifPublish": null, "browSprite": { "enabled": true, "bandExtraHalfHeightPx": 8.0, "bandEndExtendPx": 6.0, "diffThresh": 25.0, "closingKernel": [ 7, 11 ], "minComponentAreaPx": 30.0, "hairSource": "layers/v2/hairFront.png alpha(게시되는 레이어 그 자체, 분할 카테고리 아님)", "hairAlphaThresh": 128.0, "hairDilateIterations": 1, "rampPx": 1.5, "inkLumMethod": "median(ink-classified pixels in band, region after hair removal)", "minAlphaForUnmix": 0.05, "hairMaskPixelCount": 37836, "left": { "bboxCanvas": [ 324, 509, 137, 29 ], "halfHeightPx": 15.98, "otsuThresh": 102.0, "lSkin": 171.333, "lInk": 39.667, "regionPixelCount": 1362, "hairOverlapPixelCount": 402, "neutralCompositeMeanAbsDiffAlphaRegion": 7.827, "pngFileSizeBytes": 5345 }, "right": { "bboxCanvas": [ 521, 509, 150, 28 ], "halfHeightPx": 15.979, "otsuThresh": 109.0, "lSkin": 179.0, "lInk": 44.667, "regionPixelCount": 2054, "hairOverlapPixelCount": 67, "neutralCompositeMeanAbsDiffAlphaRegion": 4.989, "pngFileSizeBytes": 7329 }, "canvasOrigin": { "left": [ 324.0, 509.0 ], "right": [ 521.0, 509.0 ] }, "evidenceImage": "preview/v2/brow-sprite.jpg", "checkWebpVsPngMeanAbsDiff": { "left": 0.0, "right": 0.0 } }, "eyeLineScale": { "enabled": true, "method": "눈 폭 가운데 60% 열마다 upperLidTop.y-12 ~ 홍채중심y 사이 첫 연속 어두운(lum<80) 구간 길이의 중앙값", "windowAbovePx": 12.0, "darkLumThresh": 80.0, "columnMiddleFrac": 0.6, "p1BaselinePx": 2.0, "lineScaleClampRange": [ 1.0, 2.5 ], "left": { "measuredPx": 10.0, "nColumns": 54, "ratio": 5.0, "lineScale": 2.5 }, "right": { "measuredPx": 11.0, "nColumns": 53, "ratio": 5.5, "lineScale": 2.5 } }, "browSpritePublish": { "quality": "lossless", "fileSizes": { "brow-left": 3510, "brow-right": 4848 }, "totalBytes": 8358, "budgetBytes": 61440, "webpVsPngMeanAbsDiff": { "left": 0.0, "right": 0.0 } }, "iris": { "method": "가로: 중심 y 부근 상하 각 4행에서 중심 x를 포함하는 연속 어두운(lum<100) 구간의 중앙값으로 반지름·중심x. 세로: 중심 x 부근 좌우 각 4열에서 중심 y를 포함하는 연속 어두운 구간의 아래쪽 끝 중앙값에서 가로 반지름을 빼 중심y(세로축은 윗눈꺼풀 잉크와 홍채가 같은 톤으로 이어져 위쪽 경계를 가를 수 없다).", "darkLumThresh": 100.0, "scanBandPx": 4, "left": { "measuredCenter": [ 387.5, 574.5 ], "measuredRadius": 16.5, "rigCenter": [ 387.31, 576.96 ], "rigRadius": 19.17, "nRowsHorizontal": 9, "nColsVertical": 9 }, "right": { "measuredCenter": [ 593.5, 572.5 ], "measuredRadius": 16.5, "rigCenter": [ 595.07, 576.86 ], "rigRadius": 19.41, "nRowsHorizontal": 9, "nColsVertical": 9 } } }