vignette/docs/avatar-art/p6-linocut/manifest.json
Yun Chan ded312acdc P2~P7 리노컷 캐스트 원화·리그와 세션 활성화
- 추천 원화(P2 b·P3 v2b·P4 v2b·P5 v2a·P6 v2b·P7 v2b)로 얼굴 없는 기본형·몸 원본 codex 편집, 정렬·정규화 후 공통 파이프라인 실행
- 게시 자산 apps/web/public/avatar/v3/p2~p7, 리그 rigs/p2Rig~p7Rig
- 세션 레지스트리 P1~P7 전원 활성, Lab은 생성된 리그 자동 수집
- P3·P6 기본 눈 감김을 줄여 중립 렌더를 원화 눈매에 맞춤
- 표정 E2E를 v3 렌더러 기대로 갱신(검사 의도 유지)
2026-10-01 22:38:45 +09:00

1346 lines
No EOL
29 KiB
JSON

{
"landmarks": {
"coordSystem": "screen (image pixel: x=0 좌측, y=0 상단; left=작은 x, right=큰 x; 인물 해부학적 좌우 아님)",
"eyeLeft": {
"innerCorner": [
432.37,
593.74
],
"outerCorner": [
341.43,
583.87
],
"upperLidTop": [
378.12,
565.98
],
"lowerLidBottom": [
383.39,
600.15
],
"iris": {
"center": [
388.77,
581.09
],
"radius": 20.65
}
},
"eyeRight": {
"innerCorner": [
548.91,
589.6
],
"outerCorner": [
639.76,
570.83
],
"upperLidTop": [
601.39,
555.92
],
"lowerLidBottom": [
598.38,
591.82
],
"iris": {
"center": [
594.19,
571.71
],
"radius": 20.75
}
},
"eyebrowLeft": {
"inner": [
451.92,
530.26
],
"peak": [
367.6,
517.35
],
"outer": [
324.08,
521.47
]
},
"eyebrowRight": {
"inner": [
518.29,
525.41
],
"peak": [
606.95,
510.29
],
"outer": [
652.71,
515.57
]
},
"noseTip": [
495.58,
716.54
],
"mouthCornerLeft": [
423.83,
811.05
],
"mouthCornerRight": [
575.09,
805.14
],
"upperLipTopCenter": [
498.47,
778.0
],
"lowerLipBottomCenter": [
501.51,
841.17
],
"chinTip": [
506.07,
930.63
],
"faceWidthAtEyeLevelLeft": [
274.49,
635.04
],
"faceWidthAtEyeLevelRight": [
708.42,
617.94
]
},
"landmarkDetector": "mediapipe FaceLandmarker (tasks) 1.0.1, model=face_landmarker(float16, v1)",
"pipelineRun": {
"persona": "P6",
"timestamp": "2026-10-01T22:02:58",
"completed": true,
"stages": [
{
"stage": "brow_sprite",
"ok": true,
"elapsedSec": 2.67
},
{
"stage": "paper_grain",
"ok": true,
"elapsedSec": 2.23
},
{
"stage": "lip_texture",
"ok": true,
"elapsedSec": 2.14
},
{
"stage": "jaw_pieces",
"ok": true,
"elapsedSec": 2.12
},
{
"stage": "export_rig",
"ok": true,
"elapsedSec": 15.98
},
{
"stage": "final_previews",
"ok": true,
"elapsedSec": 19.27
}
]
},
"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": [
444.36,
539.65
],
"peak": [
348.93,
502.68
],
"outer": [
300.84,
531.41
]
},
"browRight": {
"inner": [
532.29,
536.84
],
"peak": [
623.51,
491.68
],
"outer": [
674.23,
515.8
]
}
},
"newPoints": {
"browLeft": {
"name": "browLeft",
"bbox": [
276,
461,
469,
554
],
"otsuThresh": 110.0,
"colRange": [
320,
456
],
"width": 136.0,
"nColumns": 137,
"nOutliersRemoved": 10,
"fitCoeffs": [
0.00193771,
-1.43485171,
782.95866324
],
"inner": [
451.92,
530.26
],
"peak": [
367.6,
517.35
],
"outer": [
324.08,
521.47
],
"peakMethod": "fallback35",
"peakFracFromOuterEdge": 0.35,
"peakFail": false,
"checkA_fracColumnsFitWithinMask": 0.9854,
"checkA_pass": true,
"halfWidthInner": 15.731,
"halfWidthPeak": 10.999,
"halfWidthOuter": 7.875,
"bandX0": 276,
"bandY0": 461,
"colMin": 320,
"colMax": 456
},
"browRight": {
"name": "browRight",
"bbox": [
507,
450,
699,
551
],
"otsuThresh": 107.0,
"colRange": [
514,
657
],
"width": 143.0,
"nColumns": 144,
"nOutliersRemoved": 8,
"fitCoeffs": [
0.00212651,
-2.56332945,
1282.72280877
],
"inner": [
518.29,
525.41
],
"peak": [
606.95,
510.29
],
"outer": [
652.71,
515.57
],
"peakMethod": "fallback35",
"peakFracFromOuterEdge": 0.35,
"peakFail": false,
"checkA_fracColumnsFitWithinMask": 0.9028,
"checkA_pass": true,
"halfWidthInner": 5.647,
"halfWidthPeak": 25.496,
"halfWidthOuter": 4.891,
"bandX0": 507,
"bandY0": 450,
"colMin": 514,
"colMax": 657
}
},
"halfWidthLeft": [
15.731,
10.999,
7.875
],
"halfWidthRight": [
5.647,
25.496,
4.891
],
"halfWidthNote": "원화 눈썹 잉크 띠 반두께[inner,peak,outer](px, 중심선 법선 방향). export_rig.py가 persona.json browHalfWidthFromArt!=false(기본)면 RigBrow.halfWidth로 내보낸다.",
"checkB_innerMinusPeakY": {
"browLeft": 12.91,
"browRight": 15.12
},
"checkD_symmetry": {
"innerYDiff": 4.85,
"peakYDiff": 7.06
},
"evidenceImage": "preview/v2/brow-centerline.jpg"
},
"schemaVersion": "vignette.avatar.v3.layers.v1",
"persona": "P6",
"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": 492868,
"1": 349798,
"2": 71758,
"3": 188365,
"4": 471041
},
"hairEdgeRefine": {
"dilatePx": 6,
"lumThreshold": 110,
"addedPixels": 16042
}
},
"chinLine": {
"landmarkIndex": 152,
"xy": [
506.07,
930.63
],
"marginPx": 8,
"cutY": 938.63
},
"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,
844,
1005,
1566
],
"opaquePixels": 586434,
"greenResidue": 0,
"fillTargetPixels": 66153,
"fillSourceRaw": "raw/body.png (rejected 재생성이 아니라 수용된 body.png의 크로마키 결과; head/hairFront와 달리 body 재생성은 승인됨)"
},
{
"id": "head",
"file": "layers/head.png",
"source": "base-faceless-masked",
"alphaBBox": [
70,
81,
905,
1146
],
"opaquePixels": 534350,
"greenResidue": 0
},
{
"id": "hairFront",
"file": "layers/hairFront.png",
"source": "base-faceless-masked",
"alphaBBox": [
257,
399,
720,
944
],
"opaquePixels": 26531,
"greenResidue": 0
}
],
"rejectedRawEdits": {
"body": {
"file": "raw/body.png",
"status": "accepted-as-fill-source",
"reason": "정렬 (0,0), 형태 변형 없음 — head_mask 채움 전용 소스로 재사용"
}
},
"composite": {
"meanAbsDiff": {
"full": 1.40462036348695,
"face": 0.4177874589464975,
"hairOutline": 7.014684261853622
},
"target": {
"full": 3.0,
"pass": true
},
"backgroundNote": "카테고리0(배경)은 종이결 텍스처 노이즈(표준편차 ~29/채널)를 포함해 평탄한 크림(#EEE5D3)과 자체적으로 평균절대차 ~7 차이가 난다."
},
"layersV2": {
"chinBandFix": {
"targetRegionPixels": 14071,
"sourceBandHeight": 150,
"rowJitterRange": [
-2.0,
2.0
],
"rngSeed": 20260930
},
"hairEdgeFix": {
"bandOuterPx": 40,
"bandInnerPx": 6,
"lumSmoothstep": [
205.0,
150.0
],
"minFragmentAreaPx": 60,
"head": {
"bandOuterPixels": 105949,
"bandInnerPixels": 58333,
"componentsBefore": 173,
"removed": 171,
"removedPixels": 951
},
"hairFront": {
"bandOuterPixels": 0,
"bandInnerPixels": 16912,
"componentsBefore": 149,
"removed": 147,
"removedPixels": 307
}
},
"hairPaperGapFix": {
"regionDilatePx": 6,
"paperColorDistThreshold": 40.0,
"paperLumThreshold": 195.0,
"paperSatThreshold": 40.0,
"opaqueAlphaThreshold": 0.95,
"regionPixels": 380353,
"head": {
"targetPixels": 1237,
"componentsBefore": 3,
"removed": 1,
"removedPixels": 1,
"faceSkinAlphaDiff": 0.0
},
"hairFront": {
"targetPixels": 1,
"componentsBefore": 2,
"removed": 0,
"removedPixels": 0,
"faceSkinAlphaDiff": 0.0
}
},
"jawInkFix": {
"mouthCenterY": 803.47,
"distThresholdPx": 14.0,
"mergePx": 3,
"aspectThreshold": 1.0,
"removedGroups": [
{
"pixels": 7827,
"bbox": [
311,
804,
681,
945
],
"width": 370,
"height": 141,
"aspect": 2.624
}
],
"keptGroups": [],
"removedPixels": 7827,
"strayFragmentCleanup": {
"componentsBefore": 5,
"removed": 3,
"removedPixels": 3
}
},
"metrics": {
"body": {
"haloPct": 3.2908268202385846
},
"head": {
"haloPct": 0.3532219570405728,
"bgLeakAlphaMean": 0.0,
"hairPaperOpaquePct": 0.0,
"disconnectedFragmentsUnder60px": 0
},
"hairFront": {
"haloPct": 0.0,
"bgLeakAlphaMean": 0.0,
"hairPaperOpaquePct": 0.0,
"disconnectedFragmentsUnder60px": 0
}
},
"layers": [
{
"id": "body",
"bbox": [
0,
844,
1005,
1566
],
"opaque": 586357,
"greenResidue": 0
},
{
"id": "head",
"bbox": [
37,
83,
924,
1146
],
"opaque": 547008,
"greenResidue": 0
},
{
"id": "hairFront",
"bbox": [
257,
399,
720,
928
],
"opaque": 27620,
"greenResidue": 0
}
],
"faceDetail": {
"browLandmarksSource": "manifest.landmarks.eyebrowLeft/Right",
"region": "face",
"faceInsetPx": 24.0,
"matchFacelessColor": true,
"matchFacelessColorDeltaRgb": {
"eyeLeft": [
-17.96,
-18.35,
-19.46
],
"eyeRight": [
-21.14,
-21.78,
-21.82
],
"browLeft": [
-1.83,
-1.9,
-4.89
],
"browRight": [
-2.88,
-3.74,
-7.0
],
"mouth": [
-1.85,
-0.97,
-2.98
]
},
"regions": {
"eyeLeft": [
311.4,
507.4,
457.4,
670.1
],
"eyeRight": [
523.9,
500.3,
669.8,
661.8
],
"mouth": [
378.8,
741.5,
620.1,
915.6
],
"moles": []
},
"exclusionPixels": {
"eyeLeft": 12236,
"eyeRight": 12954,
"browLeft": 11741,
"browRight": 13108,
"mouth": 19919,
"union": 57733
},
"hairMaskPixels": 370233,
"bbox": [
272,
404,
711,
933
],
"textureCloneStamp": {
"cloneTargetThreshold": 65.0,
"avoidThreshold": 110.0,
"lineOpeningIterations": 3,
"featherPx": 4.0,
"badTexturePixels": 66,
"preservedShadowPixels": 0,
"components": [
{
"componentId": 1,
"pixels": 29,
"offset": [
60,
0
],
"method": "clone-stamp"
},
{
"componentId": 2,
"pixels": 1,
"offset": [
40,
40
],
"method": "clone-stamp"
},
{
"componentId": 3,
"pixels": 1,
"offset": [
40,
40
],
"method": "clone-stamp"
},
{
"componentId": 4,
"pixels": 8,
"offset": [
40,
40
],
"method": "clone-stamp"
},
{
"componentId": 5,
"pixels": 1,
"offset": [
0,
-150
],
"method": "clone-stamp"
},
{
"componentId": 6,
"pixels": 1,
"offset": [
0,
-120
],
"method": "clone-stamp"
},
{
"componentId": 7,
"pixels": 2,
"offset": [
60,
-100
],
"method": "clone-stamp"
},
{
"componentId": 8,
"pixels": 1,
"offset": [
-40,
40
],
"method": "clone-stamp"
},
{
"componentId": 9,
"pixels": 1,
"offset": [
0,
-60
],
"method": "clone-stamp"
},
{
"componentId": 10,
"pixels": 9,
"offset": [
0,
-80
],
"method": "clone-stamp"
},
{
"componentId": 11,
"pixels": 1,
"offset": [
0,
-150
],
"method": "clone-stamp"
},
{
"componentId": 12,
"pixels": 1,
"offset": [
60,
-100
],
"method": "clone-stamp"
},
{
"componentId": 13,
"pixels": 2,
"offset": [
40,
-40
],
"method": "clone-stamp"
},
{
"componentId": 14,
"pixels": 2,
"offset": [
0,
-80
],
"method": "clone-stamp"
},
{
"componentId": 15,
"pixels": 2,
"offset": [
0,
-60
],
"method": "clone-stamp"
},
{
"componentId": 16,
"pixels": 1,
"offset": [
0,
-120
],
"method": "clone-stamp"
},
{
"componentId": 17,
"pixels": 1,
"offset": [
0,
-40
],
"method": "clone-stamp"
},
{
"componentId": 18,
"pixels": 1,
"offset": [
-40,
0
],
"method": "clone-stamp"
},
{
"componentId": 19,
"pixels": 1,
"offset": [
-40,
-40
],
"method": "clone-stamp"
}
]
},
"genericPatches": {
"forehead": [
443,
410,
491,
458
],
"cheekLeft": [
331,
648,
379,
696
],
"cheekRight": [
515,
639,
563,
687
]
},
"genericPatchBaseline": {
"highFreqEnergy": 9.2469051470674,
"lineEnergy": 4.048168758136364
},
"checkA_meanAbsDiff": 0.4896796010315382,
"checkB_seamLumDiff": 0.5417158200004906,
"checkC_holeDarkResiduePct": 0.15155003069367712,
"checkC_violationPixels": 79,
"checkD_texturePreservation": {
"eyeLeft": {
"insideEnergy": 9.229265393541892,
"baselineEnergy": 9.2469051470674,
"ratio": 0.9980923613636178,
"pass": true
},
"eyeRight": {
"insideEnergy": 10.786136096647196,
"baselineEnergy": 9.2469051470674,
"ratio": 1.166459039548811,
"pass": true
},
"browLeft": {
"insideEnergy": 8.548916746600598,
"baselineEnergy": 9.2469051470674,
"ratio": 0.9245165393863519,
"pass": true
},
"browRight": {
"insideEnergy": 9.979914063921097,
"baselineEnergy": 9.2469051470674,
"ratio": 1.0792707295246957,
"pass": true
},
"mouth": {
"insideEnergy": 8.022835014361053,
"baselineEnergy": 9.2469051470674,
"ratio": 0.867623803506349,
"pass": true
}
},
"checkD_allPass": true,
"checkE_ghostOutline": {
"eyeLeft": {
"bandLineEnergy": 7.355716132534533,
"baselineLineEnergy": 4.048168758136364,
"ratio": 1.8170477991438403,
"pass": false
},
"eyeRight": {
"bandLineEnergy": 7.604336496690048,
"baselineLineEnergy": 4.048168758136364,
"ratio": 1.8784633129254276,
"pass": false
},
"browLeft": {
"bandLineEnergy": 3.446691194533974,
"baselineLineEnergy": 4.048168758136364,
"ratio": 0.8514198395525168,
"pass": true
},
"browRight": {
"bandLineEnergy": 3.9400153277490557,
"baselineLineEnergy": 4.048168758136364,
"ratio": 0.9732833691357525,
"pass": true
},
"mouth": {
"bandLineEnergy": 3.3578240037031386,
"baselineLineEnergy": 4.048168758136364,
"ratio": 0.8294673973149687,
"pass": true
}
},
"checkE_allPass": false,
"checkDarkCircle": {
"eyeLeft": {
"compositeMean": 133.09809523809525,
"frontMean": 132.64361904761904,
"diff": 0.454476190476214,
"pass": true
},
"eyeRight": {
"compositeMean": 135.7567619047619,
"frontMean": 135.64457142857142,
"diff": 0.11219047619047728,
"pass": true
}
},
"checkDarkCircle_allPass": true
},
"paperGrain": {
"sourceImage": "base/base-front.png",
"sourceOrigin": [
739,
10
],
"tileSize": 256,
"personMarginPx": 20,
"cleanFraction": 0.98858642578125,
"contaminatedPixelsFilled": 748,
"chromaKeep": 0.3,
"targetLumRange": [
245.0,
250.0
],
"lumShift": 22.521382649739564,
"finalMeanLum": 247.44620143538134,
"finalLumStd": 3.3603736380015956,
"seamContinuity": {
"leftRightDiff": 0.1671720490391048,
"topBottomDiff": 0.34696069563338483
}
}
},
"lipTexture": {
"designVersion": "A5(아랫입술 그늘 띠를 lip-shadow 조각으로 분리)",
"landmarks": {
"mouthCornerLeft": [
423.83,
811.05
],
"mouthCornerRight": [
575.09,
805.14
],
"upperLipTop": [
498.47,
778.0
],
"lowerLipBottom": [
501.51,
841.17
],
"mouthCenter": [
499.7782923281193,
803.4675067663193
]
},
"capBBox": [
418.46,
774.59,
580.46,
844.59
],
"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": 5306,
"fullOpacityPixelCount": 4597,
"rampPixelCount": 709,
"preserveMaxDiffFullOpacity": 0,
"check1Preserve": true,
"spriteBBoxWorkingLocal": [
42,
30,
158,
49
]
},
"lip-lower": {
"regionPixelCount": 6041,
"fullOpacityPixelCount": 5354,
"rampPixelCount": 687,
"preserveMaxDiffFullOpacity": 0,
"check1Preserve": true,
"spriteBBoxWorkingLocal": [
41,
69,
160,
48
]
},
"lip-shadow": {
"regionPixelCount": 3360,
"fullOpacityPixelCount": 1880,
"rampPixelCount": 1480,
"preserveMaxDiffFullOpacity": 0,
"check1Preserve": true,
"spriteBBoxWorkingLocal": [
51,
72,
140,
53
]
},
"splitOverlapPixelCount": 316,
"splitOverlapBandOk": true,
"splitOverlapAlphaMaxDiff": 0,
"splitOverlapConsistentOk": true,
"splitCoverageMismatchPixelCount": 0,
"splitCheckOk": true,
"shadowLowerOverlapPixelCount": 2445,
"shadowLowerOverlapMaxDiff": 21.91372549019607,
"shadowLowerOverlapDiffGt1PixelCount": 116,
"shadowLowerOverlapOk": false
},
"check3NeutralComposite": {
"fullOpacityMaxDiff": 0.0,
"rampMeanAbsDiff": 10.831,
"mouthBBoxMeanAbsDiff": 2.13
},
"pngFileSizes": {
"lip-upper": 21193,
"lip-lower": 21453,
"lip-shadow": 20989
},
"canvasOrigin": {
"upper": [
420,
765
],
"lower": [
419,
804
],
"shadow": [
429,
807
]
},
"evidenceImage": "preview/v2/lip-texture.jpg",
"check4WebpVsPngMeanAbsDiff": {
"upper": 0.0,
"lower": 0.0,
"shadow": 0.0
}
},
"jaw": {
"designVersion": "A5(결정문 §8.4 하관 띠 변형 — 턱 조각 원본)",
"noseTip": [
495.58,
716.54
],
"chinTip": [
506.07,
930.63
],
"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,
656,
733,
971
],
"naiveXRangeForComparison": [
251,
733
],
"checks": {
"head": {
"pngRoundTripMaxDiff": 0,
"pngRoundTripOk": true,
"pngFileSize": 333372
},
"detail": {
"pngRoundTripMaxDiff": 0,
"pngRoundTripOk": true,
"pngFileSize": 366349
}
},
"evidenceImage": "preview/v2/jaw-pieces.jpg",
"check1VsPublishedLayerAbsDiff": {
"head": {
"comparedAgainstPublishedLayer": "head.webp",
"meanAbsDiffPremultipliedRgb": 3.533,
"maxAbsDiffPremultipliedRgb": 52.0,
"meanAbsDiffAlpha": 0.0,
"maxAbsDiffAlpha": 0.0,
"meetsTarget": false
},
"detail": {
"comparedAgainstPublishedLayer": "face-detail.webp",
"meanAbsDiffPremultipliedRgb": 1.784,
"maxAbsDiffPremultipliedRgb": 40.0,
"meanAbsDiffAlpha": 0.0,
"maxAbsDiffAlpha": 0.0,
"meetsTarget": true
}
}
},
"lipTexturePublish": {
"quality": "lossless",
"fileSizes": {
"lip-upper": 14714,
"lip-lower": 15166,
"lip-shadow": 15138
},
"totalBytes": 45018,
"budgetBytes": 81920,
"webpVsPngMeanAbsDiff": {
"upper": 0.0,
"lower": 0.0,
"shadow": 0.0
}
},
"jawPublish": {
"quality": 80,
"scale": 1.0,
"fileSizes": {
"jaw-head": 31190,
"jaw-detail": 24094
},
"totalBytes": 55284,
"budgetBytes": 204800,
"vsPublishedLayerAbsDiff": {
"head": {
"comparedAgainstPublishedLayer": "head.webp",
"meanAbsDiffPremultipliedRgb": 3.533,
"maxAbsDiffPremultipliedRgb": 52.0,
"meanAbsDiffAlpha": 0.0,
"maxAbsDiffAlpha": 0.0,
"meetsTarget": false
},
"detail": {
"comparedAgainstPublishedLayer": "face-detail.webp",
"meanAbsDiffPremultipliedRgb": 1.784,
"maxAbsDiffPremultipliedRgb": 40.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": 30780,
"left": {
"bboxCanvas": [
323,
504,
134,
49
],
"halfHeightPx": 23.731,
"otsuThresh": 111.0,
"lSkin": 184.333,
"lInk": 42.667,
"regionPixelCount": 2898,
"hairOverlapPixelCount": 43,
"neutralCompositeMeanAbsDiffAlphaRegion": 5.492,
"pngFileSizeBytes": 9675
},
"right": {
"bboxCanvas": [
514,
492,
137,
57
],
"halfHeightPx": 33.496,
"otsuThresh": 107.0,
"lSkin": 183.0,
"lInk": 42.333,
"regionPixelCount": 2888,
"hairOverlapPixelCount": 77,
"neutralCompositeMeanAbsDiffAlphaRegion": 4.641,
"pngFileSizeBytes": 10134
},
"canvasOrigin": {
"left": [
323.0,
504.0
],
"right": [
514.0,
492.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": 2.0,
"nColumns": 55,
"ratio": 1.0,
"lineScale": 1.0
},
"right": {
"measuredPx": 2.0,
"nColumns": 56,
"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": [
386.5,
577.5
],
"measuredRadius": 20.5,
"rigCenter": [
388.77,
581.09
],
"rigRadius": 20.65,
"nRowsHorizontal": 9,
"nColsVertical": 9
},
"right": {
"measuredCenter": [
595.0,
568.0
],
"measuredRadius": 20.0,
"rigCenter": [
594.19,
571.71
],
"rigRadius": 20.75,
"nRowsHorizontal": 9,
"nColsVertical": 9
}
},
"browSpritePublish": {
"quality": "lossless",
"fileSizes": {
"brow-left": 6056,
"brow-right": 6426
},
"totalBytes": 12482,
"budgetBytes": 61440,
"webpVsPngMeanAbsDiff": {
"left": 0.0,
"right": 0.0
}
}
}