{ "landmarks": { "coordSystem": "screen (image pixel: x=0 좌측, y=0 상단; left=작은 x, right=큰 x; 인물 해부학적 좌우 아님)", "eyeLeft": { "innerCorner": [ 435.06, 593.75 ], "outerCorner": [ 346.29, 589.44 ], "upperLidTop": [ 382.51, 570.06 ], "lowerLidBottom": [ 386.71, 602.25 ], "iris": { "center": [ 394.43, 584.74 ], "radius": 20.58 } }, "eyeRight": { "innerCorner": [ 552.12, 583.64 ], "outerCorner": [ 640.75, 564.73 ], "upperLidTop": [ 600.78, 552.08 ], "lowerLidBottom": [ 601.04, 583.93 ], "iris": { "center": [ 596.13, 567.87 ], "radius": 20.39 } }, "eyebrowLeft": { "inner": [ 437.98, 513.19 ], "peak": [ 354.9, 519.79 ], "outer": [ 312.02, 530.82 ] }, "eyebrowRight": { "inner": [ 521.26, 505.36 ], "peak": [ 609.3, 496.5 ], "outer": [ 654.74, 500.99 ] }, "noseTip": [ 499.58, 704.43 ], "mouthCornerLeft": [ 432.63, 803.41 ], "mouthCornerRight": [ 583.64, 792.2 ], "upperLipTopCenter": [ 505.16, 769.79 ], "lowerLipBottomCenter": [ 509.44, 832.35 ], "chinTip": [ 518.27, 935.21 ], "faceWidthAtEyeLevelLeft": [ 271.58, 658.08 ], "faceWidthAtEyeLevelRight": [ 727.33, 621.97 ] }, "landmarkDetector": "mediapipe FaceLandmarker (tasks) 1.0.1, model=face_landmarker(float16, v1)", "pipelineRun": { "persona": "P3", "timestamp": "2026-10-01T22:00:44", "completed": true, "stages": [ { "stage": "brow_sprite", "ok": true, "elapsedSec": 2.67 }, { "stage": "paper_grain", "ok": true, "elapsedSec": 2.44 }, { "stage": "lip_texture", "ok": true, "elapsedSec": 2.24 }, { "stage": "jaw_pieces", "ok": true, "elapsedSec": 5.76 }, { "stage": "export_rig", "ok": true, "elapsedSec": 15.14 }, { "stage": "final_previews", "ok": true, "elapsedSec": 19.25 } ] }, "schemaVersion": "vignette.avatar.v3.layers.v1", "persona": "P3", "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": 559937, "1": 207575, "2": 71269, "3": 219079, "4": 515826, "5": 144 }, "hairEdgeRefine": { "dilatePx": 6, "lumThreshold": 110, "addedPixels": 10285 } }, "chinLine": { "landmarkIndex": 152, "xy": [ 518.27, 935.21 ], "marginPx": 8, "cutY": 943.21 }, "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, 848, 1005, 1566 ], "opaquePixels": 609331, "greenResidue": 0, "fillTargetPixels": 35617, "fillSourceRaw": "raw/body.png (rejected 재생성이 아니라 수용된 body.png의 크로마키 결과; head/hairFront와 달리 body 재생성은 승인됨)" }, { "id": "head", "file": "layers/head.png", "source": "base-faceless-masked", "alphaBBox": [ 152, 155, 870, 1044 ], "opaquePixels": 425507, "greenResidue": 0 }, { "id": "hairFront", "file": "layers/hairFront.png", "source": "base-faceless-masked", "alphaBBox": [ 255, 398, 739, 941 ], "opaquePixels": 24248, "greenResidue": 0 } ], "rejectedRawEdits": { "body": { "file": "raw/body.png", "status": "accepted-as-fill-source", "reason": "정렬 (0,0), 형태 변형 없음 — head_mask 채움 전용 소스로 재사용" } }, "composite": { "meanAbsDiff": { "full": 1.9005205983704294, "face": 0.49715101986881705, "hairOutline": 11.53726341942018 }, "target": { "full": 3.0, "pass": true }, "backgroundNote": "카테고리0(배경)은 종이결 텍스처 노이즈(표준편차 ~29/채널)를 포함해 평탄한 크림(#EEE5D3)과 자체적으로 평균절대차 ~7 차이가 난다." }, "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": [ 443.39, 528.19 ], "peak": [ 388.1, 499.38 ], "outer": [ 303.13, 541.4 ] }, "browRight": { "inner": [ 528.36, 521.71 ], "peak": [ 617.58, 482.54 ], "outer": [ 673.41, 510.91 ] } }, "newPoints": { "browLeft": { "name": "browLeft", "bbox": [ 278, 457, 468, 555 ], "otsuThresh": 109.0, "colRange": [ 308, 442 ], "width": 134.0, "nColumns": 127, "nOutliersRemoved": 10, "fitCoeffs": [ 0.0014127, -1.19951702, 767.56190241 ], "inner": [ 437.98, 513.19 ], "peak": [ 354.9, 519.79 ], "outer": [ 312.02, 530.82 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.9055, "checkA_pass": true, "halfWidthInner": 6.995, "halfWidthPeak": 8.34, "halfWidthOuter": 3.812, "bandX0": 278, "bandY0": 457, "colMin": 308, "colMax": 442 }, "browRight": { "name": "browRight", "bbox": [ 503, 441, 698, 536 ], "otsuThresh": 113.0, "colRange": [ 517, 659 ], "width": 142.0, "nColumns": 143, "nOutliersRemoved": 6, "fitCoeffs": [ 0.00149431, -1.79001855, 1032.39992065 ], "inner": [ 521.26, 505.36 ], "peak": [ 609.3, 496.5 ], "outer": [ 654.74, 500.99 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.8951, "checkA_pass": true, "halfWidthInner": 3.896, "halfWidthPeak": 6.997, "halfWidthOuter": 1.973, "bandX0": 503, "bandY0": 441, "colMin": 517, "colMax": 659 } }, "halfWidthLeft": [ 6.995, 8.34, 3.812 ], "halfWidthRight": [ 3.896, 6.997, 1.973 ], "halfWidthNote": "원화 눈썹 잉크 띠 반두께[inner,peak,outer](px, 중심선 법선 방향). export_rig.py가 persona.json browHalfWidthFromArt!=false(기본)면 RigBrow.halfWidth로 내보낸다.", "checkB_innerMinusPeakY": { "browLeft": -6.6, "browRight": 8.86 }, "checkD_symmetry": { "innerYDiff": 7.83, "peakYDiff": 23.29 }, "evidenceImage": "preview/v2/brow-centerline.jpg" }, "layersV2": { "chinBandFix": { "targetRegionPixels": 15342, "sourceBandHeight": 150, "rowJitterRange": [ -2.0, 2.0 ], "rngSeed": 20260930 }, "hairEdgeFix": { "bandOuterPx": 40, "bandInnerPx": 6, "lumSmoothstep": [ 205.0, 150.0 ], "minFragmentAreaPx": 60, "head": { "bandOuterPixels": 102178, "bandInnerPixels": 41504, "componentsBefore": 175, "removed": 170, "removedPixels": 963 }, "hairFront": { "bandOuterPixels": 6606, "bandInnerPixels": 16598, "componentsBefore": 191, "removed": 179, "removedPixels": 536 } }, "hairPaperGapFix": { "regionDilatePx": 6, "paperColorDistThreshold": 40.0, "paperLumThreshold": 195.0, "paperSatThreshold": 40.0, "opaqueAlphaThreshold": 0.95, "regionPixels": 230717, "head": { "targetPixels": 821, "componentsBefore": 5, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 }, "hairFront": { "targetPixels": 0, "componentsBefore": 12, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 } }, "jawInkFix": { "mouthCenterY": 796.4, "distThresholdPx": 14.0, "mergePx": 3, "aspectThreshold": 1.0, "removedGroups": [ { "pixels": 838, "bbox": [ 554, 900, 608, 942 ], "width": 54, "height": 42, "aspect": 1.286 } ], "keptGroups": [ { "pixels": 2419, "bbox": [ 288, 797, 388, 898 ], "width": 100, "height": 101, "aspect": 0.99 }, { "pixels": 1884, "bbox": [ 634, 797, 714, 884 ], "width": 80, "height": 87, "aspect": 0.92 }, { "pixels": 84, "bbox": [ 434, 924, 444, 934 ], "width": 10, "height": 10, "aspect": 1.0 } ], "removedPixels": 838, "strayFragmentCleanup": { "componentsBefore": 11, "removed": 0, "removedPixels": 0 } }, "metrics": { "body": { "haloPct": 0.17023346303501946 }, "head": { "haloPct": 0.0, "bgLeakAlphaMean": 0.0, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 }, "hairFront": { "haloPct": 0.06115272894052897, "bgLeakAlphaMean": 0.0, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 } }, "layers": [ { "id": "body", "bbox": [ 0, 848, 1005, 1566 ], "opaque": 609284, "greenResidue": 0 }, { "id": "head", "bbox": [ 132, 156, 874, 1044 ], "opaque": 438690, "greenResidue": 1 }, { "id": "hairFront", "bbox": [ 237, 398, 777, 933 ], "opaque": 29897, "greenResidue": 1 } ], "faceDetail": { "browLandmarksSource": "manifest.landmarks.eyebrowLeft/Right", "region": "face", "faceInsetPx": 24.0, "matchFacelessColor": true, "matchFacelessColorDeltaRgb": { "eyeLeft": [ -11.32, -12.21, -12.78 ], "eyeRight": [ -10.52, -12.16, -13.3 ], "browLeft": [ -0.25, 1.09, 1.48 ], "browRight": [ -0.9, -0.03, -0.07 ], "mouth": [ -3.26, -3.73, -4.96 ] }, "regions": { "eyeLeft": [ 316.3, 509.8, 460.1, 672.2 ], "eyeRight": [ 527.1, 486.5, 670.8, 653.9 ], "mouth": [ 387.6, 729.4, 628.6, 920.2 ], "moles": [] }, "exclusionPixels": { "eyeLeft": 11485, "eyeRight": 10642, "browLeft": 11017, "browRight": 9084, "mouth": 18995, "union": 58172 }, "hairMaskPixels": 225679, "bbox": [ 279, 397, 722, 939 ], "textureCloneStamp": { "cloneTargetThreshold": 65.0, "avoidThreshold": 110.0, "lineOpeningIterations": 3, "featherPx": 4.0, "badTexturePixels": 5, "preservedShadowPixels": 0, "components": [ { "componentId": 1, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 2, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 3, "pixels": 1, "offset": [ 60, -100 ], "method": "clone-stamp" }, { "componentId": 4, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 5, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" } ] }, "genericPatches": { "forehead": [ 468, 398, 516, 446 ], "cheekLeft": [ 326, 650, 374, 698 ], "cheekRight": [ 519, 631, 567, 679 ] }, "genericPatchBaseline": { "highFreqEnergy": 10.784726068172136, "lineEnergy": 3.811262288996353 }, "checkA_meanAbsDiff": 0.41166174567512276, "checkB_seamLumDiff": 0.06290680428432438, "checkC_holeDarkResiduePct": 0.03185918241373131, "checkC_violationPixels": 16, "checkD_texturePreservation": { "eyeLeft": { "insideEnergy": 9.147273470585267, "baselineEnergy": 10.784726068172136, "ratio": 0.8481692917153162, "pass": true }, "eyeRight": { "insideEnergy": 9.392379443644488, "baselineEnergy": 10.784726068172136, "ratio": 0.8708964311447152, "pass": true }, "browLeft": { "insideEnergy": 11.064785620046433, "baselineEnergy": 10.784726068172136, "ratio": 1.0259681655430088, "pass": true }, "browRight": { "insideEnergy": 11.025329524088622, "baselineEnergy": 10.784726068172136, "ratio": 1.0223096492572543, "pass": true }, "mouth": { "insideEnergy": 9.73095282876833, "baselineEnergy": 10.784726068172136, "ratio": 0.9022902174109272, "pass": true } }, "checkD_allPass": true, "checkE_ghostOutline": { "eyeLeft": { "bandLineEnergy": 5.365413565857688, "baselineLineEnergy": 3.811262288996353, "ratio": 1.4077786200515212, "pass": true }, "eyeRight": { "bandLineEnergy": 5.572405832019536, "baselineLineEnergy": 3.811262288996353, "ratio": 1.4620893051910517, "pass": true }, "browLeft": { "bandLineEnergy": 4.320421303108777, "baselineLineEnergy": 3.811262288996353, "ratio": 1.1335932757980045, "pass": true }, "browRight": { "bandLineEnergy": 4.382619320579252, "baselineLineEnergy": 3.811262288996353, "ratio": 1.149912807951446, "pass": true }, "mouth": { "bandLineEnergy": 3.0566944722024156, "baselineLineEnergy": 3.811262288996353, "ratio": 0.8020162981245137, "pass": true } }, "checkE_allPass": true, "checkDarkCircle": { "eyeLeft": { "compositeMean": 145.38990476190475, "frontMean": 145.17142857142855, "diff": 0.2184761904761956, "pass": true }, "eyeRight": { "compositeMean": 145.47980952380954, "frontMean": 145.4384761904762, "diff": 0.041333333333341216, "pass": true } }, "checkDarkCircle_allPass": true }, "paperGrain": { "sourceImage": "base/base-front.png", "sourceOrigin": [ 739, 10 ], "tileSize": 256, "personMarginPx": 20, "cleanFraction": 0.9979400634765625, "contaminatedPixelsFilled": 135, "chromaKeep": 0.3, "targetLumRange": [ 245.0, 250.0 ], "lumShift": 23.88299560546875, "finalMeanLum": 247.47297462295472, "finalLumStd": 2.194378158845552, "seamContinuity": { "leftRightDiff": 0.1583767181773131, "topBottomDiff": 0.03202277288771901 } } }, "lipTexture": { "designVersion": "A5(아랫입술 그늘 띠를 lip-shadow 조각으로 분리)", "landmarks": { "mouthCornerLeft": [ 432.63, 803.41 ], "mouthCornerRight": [ 583.64, 792.2 ], "upperLipTop": [ 505.16, 769.79 ], "lowerLipBottom": [ 509.44, 832.35 ], "mouthCenter": [ 507.2048154473305, 796.4007625579834 ] }, "capBBox": [ 427.13, 766.07, 589.13, 836.07 ], "otsuThreshLabA": 139.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": 5597, "fullOpacityPixelCount": 4832, "rampPixelCount": 765, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 37, 30, 173, 51 ] }, "lip-lower": { "regionPixelCount": 6060, "fullOpacityPixelCount": 5346, "rampPixelCount": 714, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 36, 66, 171, 54 ] }, "lip-shadow": { "regionPixelCount": 3552, "fullOpacityPixelCount": 1953, "rampPixelCount": 1599, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 46, 65, 148, 63 ] }, "splitOverlapPixelCount": 339, "splitOverlapBandOk": true, "splitOverlapAlphaMaxDiff": 0, "splitOverlapConsistentOk": true, "splitCoverageMismatchPixelCount": 0, "splitCheckOk": true, "shadowLowerOverlapPixelCount": 2593, "shadowLowerOverlapMaxDiff": 15.339100346020729, "shadowLowerOverlapDiffGt1PixelCount": 115, "shadowLowerOverlapOk": false }, "check3NeutralComposite": { "fullOpacityMaxDiff": 0.0, "rampMeanAbsDiff": 7.457, "mouthBBoxMeanAbsDiff": 1.516 }, "pngFileSizes": { "lip-upper": 23244, "lip-lower": 24183, "lip-shadow": 24527 }, "canvasOrigin": { "upper": [ 424, 756 ], "lower": [ 423, 792 ], "shadow": [ 433, 791 ] }, "evidenceImage": "preview/v2/lip-texture.jpg", "check4WebpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "jaw": { "designVersion": "A5(결정문 §8.4 하관 띠 변형 — 턱 조각 원본)", "noseTip": [ 499.58, 704.43 ], "chinTip": [ 518.27, 935.21 ], "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": [ 243, 644, 755, 976 ], "naiveXRangeForComparison": [ 243, 755 ], "checks": { "head": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 381852 }, "detail": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 416090 } }, "evidenceImage": "preview/v2/jaw-pieces.jpg", "check1VsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 3.222, "maxAbsDiffPremultipliedRgb": 38.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 1.885, "maxAbsDiffPremultipliedRgb": 36.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": true } } }, "lipTexturePublish": { "quality": "lossless", "fileSizes": { "lip-upper": 15788, "lip-lower": 16602, "lip-shadow": 17250 }, "totalBytes": 49640, "budgetBytes": 81920, "webpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "jawPublish": { "quality": 80, "scale": 1.0, "fileSizes": { "jaw-head": 46270, "jaw-detail": 25322 }, "totalBytes": 71592, "budgetBytes": 204800, "vsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 3.222, "maxAbsDiffPremultipliedRgb": 38.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 1.885, "maxAbsDiffPremultipliedRgb": 36.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": 36954, "left": { "bboxCanvas": [ 314, 502, 129, 38 ], "halfHeightPx": 16.34, "otsuThresh": 111.0, "lSkin": 181.667, "lInk": 46.667, "regionPixelCount": 1559, "hairOverlapPixelCount": 183, "neutralCompositeMeanAbsDiffAlphaRegion": 8.002, "pngFileSizeBytes": 6225 }, "right": { "bboxCanvas": [ 517, 486, 142, 32 ], "halfHeightPx": 14.997, "otsuThresh": 117.0, "lSkin": 181.0, "lInk": 48.833, "regionPixelCount": 1750, "hairOverlapPixelCount": 8, "neutralCompositeMeanAbsDiffAlphaRegion": 6.26, "pngFileSizeBytes": 6292 }, "canvasOrigin": { "left": [ 314.0, 502.0 ], "right": [ 517.0, 486.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": 1.5, "nColumns": 54, "ratio": 0.75, "lineScale": 1.0 }, "right": { "measuredPx": 2.0, "nColumns": 54, "ratio": 1.0, "lineScale": 1.0 } }, "iris": { "method": "가로: 중심 y 부근 상하 각 4행에서 중심 x를 포함하는 연속 어두운(lum<100) 구간의 중앙값으로 반지름·중심x. 세로: 중심 x 부근 좌우 각 4열에서 중심 y를 포함하는 연속 어두운 구간의 아래쪽 끝 중앙값에서 가로 반지름을 빼 중심y(세로축은 윗눈꺼풀 잉크와 홍채가 같은 톤으로 이어져 위쪽 경계를 가를 수 없다).", "darkLumThresh": 100.0, "scanBandPx": 4, "left": { "measuredCenter": [ 389.0, 580.0 ], "measuredRadius": 20.0, "rigCenter": [ 394.43, 584.74 ], "rigRadius": 20.58, "nRowsHorizontal": 9, "nColsVertical": 9 }, "right": { "measuredCenter": [ 593.5, 558.5 ], "measuredRadius": 19.5, "rigCenter": [ 596.13, 567.87 ], "rigRadius": 20.39, "nRowsHorizontal": 9, "nColsVertical": 9 } }, "browSpritePublish": { "quality": "lossless", "fileSizes": { "brow-left": 3972, "brow-right": 3772 }, "totalBytes": 7744, "budgetBytes": 61440, "webpVsPngMeanAbsDiff": { "left": 0.0, "right": 0.0 } } }