@simprints/simface-sdk 0.12.1 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { FaceDetector, FilesetResolver } from '@mediapipe/tasks-vision';
2
2
  import { evaluateFaceQuality } from './face-quality.js';
3
+ import { computeSharpnessScore } from './sharpness.js';
3
4
  const WASM_CDN = 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/wasm';
4
5
  const MODEL_URL = 'https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite';
5
6
  // Minimum confidence to consider a face detected
@@ -40,13 +41,28 @@ export async function assessFaceQuality(imageElement) {
40
41
  height: imageElement.naturalHeight,
41
42
  });
42
43
  }
44
+ // Reusable offscreen canvas for sharpness computation (avoids allocation per frame)
45
+ let sharpnessCanvas = null;
43
46
  export async function assessFaceQualityForVideo(videoElement, timestamp) {
44
47
  const detector = await getVideoDetector();
45
48
  const result = detector.detectForVideo(videoElement, timestamp);
49
+ const detections = mapDetections(result.detections);
46
50
  return evaluateFaceQuality({
47
- detections: mapDetections(result.detections),
51
+ detections,
48
52
  width: videoElement.videoWidth,
49
53
  height: videoElement.videoHeight,
54
+ resolveSharpnessScore: detections.length === 1 && detections[0].boundingBox
55
+ ? () => {
56
+ const bbox = detections[0].boundingBox;
57
+ sharpnessCanvas ?? (sharpnessCanvas = document.createElement('canvas'));
58
+ return computeSharpnessScore(videoElement, {
59
+ x: bbox.originX,
60
+ y: bbox.originY,
61
+ width: bbox.width,
62
+ height: bbox.height,
63
+ }, sharpnessCanvas);
64
+ }
65
+ : undefined,
50
66
  });
51
67
  }
52
68
  function mapDetections(detections) {
@@ -1 +1 @@
1
- {"version":3,"file":"face-detection.js","sourceRoot":"","sources":["../../src/services/face-detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"face-detection.js","sourceRoot":"","sources":["../../src/services/face-detection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,QAAQ,GAAG,2DAA2D,CAAC;AAC7E,MAAM,SAAS,GAAG,8HAA8H,CAAC;AAEjJ,iDAAiD;AACjD,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,IAAI,cAAc,GAA6D,IAAI,CAAC;AACpF,IAAI,qBAAqB,GAA0C,IAAI,CAAC;AACxE,IAAI,qBAAqB,GAA0C,IAAI,CAAC;AAExE,SAAS,SAAS;IAChB,cAAc,KAAd,cAAc,GAAK,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAC;IAC5D,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB;IACvB,qBAAqB,KAArB,qBAAqB,GAAK,cAAc,CAAC,OAAO,CAAC,EAAC;IAClD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,qBAAqB,KAArB,qBAAqB,GAAK,cAAc,CAAC,OAAO,CAAC,EAAC;IAClD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,WAA8B;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,OAAO,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAC5C,WAAW,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;QAC1C,WAAW;QACX,sBAAsB,EAAE,cAAc;KACvC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,YAA8B;IACpE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7C,OAAO,mBAAmB,CAAC;QACzB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5C,KAAK,EAAE,YAAY,CAAC,YAAY;QAChC,MAAM,EAAE,YAAY,CAAC,aAAa;KACnC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,IAAI,eAAe,GAA6B,IAAI,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,YAA8B,EAC9B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEpD,OAAO,mBAAmB,CAAC;QACzB,UAAU;QACV,KAAK,EAAE,YAAY,CAAC,UAAU;QAC9B,MAAM,EAAE,YAAY,CAAC,WAAW;QAChC,qBAAqB,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW;YACzE,CAAC,CAAC,GAAG,EAAE;gBACH,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC;gBACxC,eAAe,KAAf,eAAe,GAAK,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAC;gBACrD,OAAO,qBAAqB,CAC1B,YAAY,EACZ;oBACE,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,CAAC,EAAE,IAAI,CAAC,OAAO;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,EACD,eAAe,CAChB,CAAC;YACJ,CAAC;YACH,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,UAAuB;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACpC,WAAW,EAAE,SAAS,CAAC,WAAW;YAChC,CAAC,CAAC;gBACE,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO;gBACtC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO;gBACtC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK;gBAClC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;aACrC;YACH,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC,EAAE,QAAQ,CAAC,CAAC;YACb,CAAC,EAAE,QAAQ,CAAC,CAAC;SACd,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -18,6 +18,10 @@ interface FaceQualityInput {
18
18
  width: number;
19
19
  height: number;
20
20
  detections: FaceDetectionSnapshot[];
21
+ /** Normalised sharpness score (0–1) for the face region. Omit when unavailable (e.g. image mode). */
22
+ sharpnessScore?: number;
23
+ /** Lazily compute sharpness only after framing and pose checks pass. */
24
+ resolveSharpnessScore?: () => number;
21
25
  }
22
26
  export declare function evaluateFaceQuality(input: FaceQualityInput): FaceQualityResult;
23
27
  export {};
@@ -1,20 +1,31 @@
1
+ import { MIN_SHARPNESS_SCORE } from './sharpness.js';
1
2
  const MIN_FACE_AREA_RATIO = 0.1;
2
3
  const MAX_FACE_AREA_RATIO = 0.42;
3
4
  const IDEAL_FACE_AREA_RATIO = 0.24;
4
5
  const CENTER_TOLERANCE_X = 0.14;
5
6
  const CENTER_TOLERANCE_Y = 0.18;
7
+ /** Yaw: max horizontal nose offset / interocular distance. */
6
8
  const MAX_NOSE_OFFSET_RATIO = 0.12;
9
+ /** Roll: max eye vertical difference / interocular distance. */
10
+ const MAX_EYE_TILT_RATIO = 0.2;
11
+ /** Pitch ceiling: live BlazeFace signal shows higher ratios when the chin is tucked / looking down. */
12
+ const MAX_PITCH_RATIO = 0.95;
13
+ /** Pitch floor: live BlazeFace signal shows lower ratios when the chin is raised / looking up. */
14
+ const MIN_PITCH_RATIO = 0.2;
15
+ /** Image-mode sharpness is unavailable, so do not penalise captures for a missing live-video metric. */
16
+ const DEFAULT_SHARPNESS_SCORE = 1;
7
17
  const KEYPOINT_RIGHT_EYE = 0;
8
18
  const KEYPOINT_LEFT_EYE = 1;
9
19
  const KEYPOINT_NOSE = 2;
10
20
  export function evaluateFaceQuality(input) {
11
- const { detections, width, height } = input;
21
+ const { detections, width, height, sharpnessScore, resolveSharpnessScore } = input;
12
22
  if (detections.length === 0) {
13
23
  return createQualityResult({
14
24
  hasFace: false,
15
25
  faceCount: 0,
16
26
  confidence: 0,
17
27
  captureScore: 0,
28
+ sharpnessScore: 0,
18
29
  isCentered: false,
19
30
  passesQualityChecks: false,
20
31
  feedback: 'no-face',
@@ -27,6 +38,7 @@ export function evaluateFaceQuality(input) {
27
38
  faceCount: detections.length,
28
39
  confidence: detections[0]?.confidence ?? 0,
29
40
  captureScore: 0,
41
+ sharpnessScore: 0,
30
42
  isCentered: false,
31
43
  passesQualityChecks: false,
32
44
  feedback: 'multiple-faces',
@@ -41,6 +53,7 @@ export function evaluateFaceQuality(input) {
41
53
  faceCount: 1,
42
54
  confidence: detection.confidence,
43
55
  captureScore: 0,
56
+ sharpnessScore: 0,
44
57
  isCentered: false,
45
58
  passesQualityChecks: false,
46
59
  feedback: 'face-unclear',
@@ -68,34 +81,50 @@ export function evaluateFaceQuality(input) {
68
81
  if (faceCenterY > 0.5 + CENTER_TOLERANCE_Y) {
69
82
  return createFrameAdjustmentResult(detection.confidence, 'move-up', 'Move your face slightly up.');
70
83
  }
71
- const turnFeedback = detectTurnFeedback(detection.keypoints);
72
- if (turnFeedback) {
73
- return createFrameAdjustmentResult(detection.confidence, turnFeedback.feedback, turnFeedback.message);
84
+ const poseFeedback = detectPoseFeedback(detection.keypoints);
85
+ if (poseFeedback) {
86
+ return createFrameAdjustmentResult(detection.confidence, poseFeedback.feedback, poseFeedback.message);
87
+ }
88
+ const resolvedSharpness = sharpnessScore ?? resolveSharpnessScore?.() ?? DEFAULT_SHARPNESS_SCORE;
89
+ if (resolvedSharpness < MIN_SHARPNESS_SCORE) {
90
+ return createQualityResult({
91
+ hasFace: true,
92
+ faceCount: 1,
93
+ confidence: detection.confidence,
94
+ captureScore: calculateCaptureScore(detection.confidence, faceCenterX, faceCenterY, faceAreaRatio, resolvedSharpness),
95
+ sharpnessScore: resolvedSharpness,
96
+ isCentered: true,
97
+ passesQualityChecks: false,
98
+ feedback: 'too-blurry',
99
+ message: 'Hold still so the image is not blurry.',
100
+ });
74
101
  }
75
102
  return createQualityResult({
76
103
  hasFace: true,
77
104
  faceCount: 1,
78
105
  confidence: detection.confidence,
79
- captureScore: calculateCaptureScore(detection.confidence, faceCenterX, faceCenterY, faceAreaRatio),
106
+ captureScore: calculateCaptureScore(detection.confidence, faceCenterX, faceCenterY, faceAreaRatio, resolvedSharpness),
107
+ sharpnessScore: resolvedSharpness,
80
108
  isCentered: true,
81
109
  passesQualityChecks: true,
82
110
  feedback: 'good',
83
111
  message: 'Hold still. Capturing automatically...',
84
112
  });
85
113
  }
86
- function detectTurnFeedback(keypoints) {
114
+ function detectPoseFeedback(keypoints) {
87
115
  const rightEye = keypoints[KEYPOINT_RIGHT_EYE];
88
116
  const leftEye = keypoints[KEYPOINT_LEFT_EYE];
89
117
  const nose = keypoints[KEYPOINT_NOSE];
90
118
  if (!rightEye || !leftEye || !nose) {
91
119
  return null;
92
120
  }
93
- const eyeMidpointX = (rightEye.x + leftEye.x) / 2;
94
- const eyeDistance = Math.abs(leftEye.x - rightEye.x);
95
- if (eyeDistance === 0) {
121
+ const eyeDistanceX = Math.abs(leftEye.x - rightEye.x);
122
+ if (eyeDistanceX === 0) {
96
123
  return null;
97
124
  }
98
- const noseOffsetRatio = (nose.x - eyeMidpointX) / eyeDistance;
125
+ // Yaw: horizontal nose offset relative to eye midpoint
126
+ const eyeMidpointX = (rightEye.x + leftEye.x) / 2;
127
+ const noseOffsetRatio = (nose.x - eyeMidpointX) / eyeDistanceX;
99
128
  if (noseOffsetRatio <= -MAX_NOSE_OFFSET_RATIO) {
100
129
  return {
101
130
  feedback: 'turn-left',
@@ -108,6 +137,35 @@ function detectTurnFeedback(keypoints) {
108
137
  message: 'Turn slightly right so your face points at the camera.',
109
138
  };
110
139
  }
140
+ // Roll: head tilt detected via eye vertical difference
141
+ const eyeTiltRatio = (rightEye.y - leftEye.y) / eyeDistanceX;
142
+ if (eyeTiltRatio >= MAX_EYE_TILT_RATIO) {
143
+ return {
144
+ feedback: 'tilt-left',
145
+ message: 'Straighten your head — it is tilting to the right.',
146
+ };
147
+ }
148
+ if (eyeTiltRatio <= -MAX_EYE_TILT_RATIO) {
149
+ return {
150
+ feedback: 'tilt-right',
151
+ message: 'Straighten your head — it is tilting to the left.',
152
+ };
153
+ }
154
+ // Pitch: nose vertical offset relative to eye midpoint
155
+ const eyeMidpointY = (rightEye.y + leftEye.y) / 2;
156
+ const pitchRatio = (nose.y - eyeMidpointY) / eyeDistanceX;
157
+ if (pitchRatio >= MAX_PITCH_RATIO) {
158
+ return {
159
+ feedback: 'look-up',
160
+ message: 'Raise your chin slightly so your face points at the camera.',
161
+ };
162
+ }
163
+ if (pitchRatio <= MIN_PITCH_RATIO) {
164
+ return {
165
+ feedback: 'look-down',
166
+ message: 'Lower your chin slightly so your face points at the camera.',
167
+ };
168
+ }
111
169
  return null;
112
170
  }
113
171
  function createFrameAdjustmentResult(confidence, feedback, message) {
@@ -116,6 +174,7 @@ function createFrameAdjustmentResult(confidence, feedback, message) {
116
174
  faceCount: 1,
117
175
  confidence,
118
176
  captureScore: 0,
177
+ sharpnessScore: 0,
119
178
  isCentered: false,
120
179
  passesQualityChecks: false,
121
180
  feedback,
@@ -125,12 +184,12 @@ function createFrameAdjustmentResult(confidence, feedback, message) {
125
184
  function createQualityResult(result) {
126
185
  return result;
127
186
  }
128
- function calculateCaptureScore(confidence, faceCenterX, faceCenterY, faceAreaRatio) {
187
+ function calculateCaptureScore(confidence, faceCenterX, faceCenterY, faceAreaRatio, sharpnessScore) {
129
188
  const xPenalty = Math.abs(faceCenterX - 0.5) / CENTER_TOLERANCE_X;
130
189
  const yPenalty = Math.abs(faceCenterY - 0.5) / CENTER_TOLERANCE_Y;
131
190
  const centerScore = 1 - Math.min((xPenalty + yPenalty) / 2, 1);
132
191
  const maxAreaDistance = Math.max(Math.abs(IDEAL_FACE_AREA_RATIO - MIN_FACE_AREA_RATIO), Math.abs(MAX_FACE_AREA_RATIO - IDEAL_FACE_AREA_RATIO));
133
192
  const sizeScore = 1 - Math.min(Math.abs(faceAreaRatio - IDEAL_FACE_AREA_RATIO) / maxAreaDistance, 1);
134
- return Number((confidence * 0.55 + centerScore * 0.3 + sizeScore * 0.15).toFixed(4));
193
+ return Number((confidence * 0.40 + centerScore * 0.25 + sizeScore * 0.10 + sharpnessScore * 0.25).toFixed(4));
135
194
  }
136
195
  //# sourceMappingURL=face-quality.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"face-quality.js","sourceRoot":"","sources":["../../src/services/face-quality.ts"],"names":[],"mappings":"AA0BA,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC;YACzB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,KAAK;YACjB,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,wEAAwE;SAClF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC;YACzB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC;YAC1C,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,KAAK;YACjB,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC;IAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,mBAAmB,CAAC;YACzB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,KAAK;YACjB,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,oEAAoE;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACpE,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;QACxC,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;QACxC,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,6BAA6B,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5D,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;IAE9D,IAAI,WAAW,GAAG,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,sCAAsC,CAAC,CAAC;IAChH,CAAC;IAED,IAAI,WAAW,GAAG,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,uCAAuC,CAAC,CAAC;IAClH,CAAC;IAED,IAAI,WAAW,GAAG,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,+BAA+B,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,WAAW,GAAG,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAC3C,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,6BAA6B,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,2BAA2B,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACxG,CAAC;IAED,OAAO,mBAAmB,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,YAAY,EAAE,qBAAqB,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;QAClG,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,IAAI;QACzB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,wCAAwC;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAyB;IACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,WAAW,CAAC;IAC9D,IAAI,eAAe,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,uDAAuD;SACjE,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,IAAI,qBAAqB,EAAE,CAAC;QAC7C,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,wDAAwD;SAClE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAkB,EAClB,QAA0B,EAC1B,OAAe;IAEf,OAAO,mBAAmB,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;QACZ,UAAU;QACV,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,KAAK;QACjB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyB;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,WAAmB,EACnB,WAAmB,EACnB,aAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,kBAAkB,CAAC;IAClE,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,EACrD,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,CACtD,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAErG,OAAO,MAAM,CAAC,CAAC,UAAU,GAAG,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"face-quality.js","sourceRoot":"","sources":["../../src/services/face-quality.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Image sharpness estimation via Laplacian variance.
3
+ *
4
+ * A sharp image has strong edges (high second-derivative response) and
5
+ * therefore a high variance in the Laplacian-filtered output. A blurry
6
+ * image has weak edges and low variance.
7
+ */
8
+ export interface SharpnessRegion {
9
+ x: number;
10
+ y: number;
11
+ width: number;
12
+ height: number;
13
+ }
14
+ /** Minimum sharpness score (0–1) below which a frame is considered too blurry. */
15
+ export declare const MIN_SHARPNESS_SCORE = 0.15;
16
+ /**
17
+ * Compute a normalised sharpness score (0–1) for the given video frame.
18
+ *
19
+ * The score is the Laplacian variance of the face region, clamped and
20
+ * mapped to [0, 1] using {@link REFERENCE_VARIANCE} as the ceiling.
21
+ *
22
+ * @param video The video element to sample from.
23
+ * @param region The face bounding box in pixel coordinates.
24
+ * @param canvas An optional reusable offscreen canvas (avoids allocation per call).
25
+ */
26
+ export declare function computeSharpnessScore(video: HTMLVideoElement, region: SharpnessRegion, canvas?: HTMLCanvasElement): number;
27
+ /**
28
+ * Compute the Laplacian variance of an ImageData buffer.
29
+ *
30
+ * 1. Convert RGBA → luminance using BT.601 luma weights.
31
+ * 2. Convolve with the 3×3 Laplacian kernel: [[0,1,0],[1,-4,1],[0,1,0]]
32
+ * 3. Return the variance of the filtered values.
33
+ *
34
+ * Exported for direct unit-testing with synthetic ImageData.
35
+ */
36
+ export declare function laplacianVariance(imageData: ImageData, grayBuffer?: Float32Array): number;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Image sharpness estimation via Laplacian variance.
3
+ *
4
+ * A sharp image has strong edges (high second-derivative response) and
5
+ * therefore a high variance in the Laplacian-filtered output. A blurry
6
+ * image has weak edges and low variance.
7
+ */
8
+ /**
9
+ * Reference Laplacian variance used to normalise the raw variance into a
10
+ * 0–1 score. Values at or above this are mapped to 1.0. This was tuned
11
+ * empirically against 640×480 webcam frames; it may need adjustment for
12
+ * significantly different resolutions.
13
+ */
14
+ const REFERENCE_VARIANCE = 800;
15
+ const GRAY_BUFFER_GROWTH_FACTOR = 1.5;
16
+ /** Minimum sharpness score (0–1) below which a frame is considered too blurry. */
17
+ export const MIN_SHARPNESS_SCORE = 0.15;
18
+ const grayBuffersByCanvas = new WeakMap();
19
+ /**
20
+ * Compute a normalised sharpness score (0–1) for the given video frame.
21
+ *
22
+ * The score is the Laplacian variance of the face region, clamped and
23
+ * mapped to [0, 1] using {@link REFERENCE_VARIANCE} as the ceiling.
24
+ *
25
+ * @param video The video element to sample from.
26
+ * @param region The face bounding box in pixel coordinates.
27
+ * @param canvas An optional reusable offscreen canvas (avoids allocation per call).
28
+ */
29
+ export function computeSharpnessScore(video, region, canvas) {
30
+ const target = canvas ?? document.createElement('canvas');
31
+ target.width = region.width;
32
+ target.height = region.height;
33
+ const ctx = target.getContext('2d');
34
+ if (!ctx)
35
+ return 0;
36
+ ctx.drawImage(video, region.x, region.y, region.width, region.height, 0, 0, region.width, region.height);
37
+ const imageData = ctx.getImageData(0, 0, region.width, region.height);
38
+ const grayBuffer = canvas ? getReusableGrayBuffer(canvas, region.width * region.height) : undefined;
39
+ const variance = Math.max(laplacianVariance(imageData, grayBuffer), 0);
40
+ return Math.min(Math.max(variance / REFERENCE_VARIANCE, 0), 1);
41
+ }
42
+ /**
43
+ * Compute the Laplacian variance of an ImageData buffer.
44
+ *
45
+ * 1. Convert RGBA → luminance using BT.601 luma weights.
46
+ * 2. Convolve with the 3×3 Laplacian kernel: [[0,1,0],[1,-4,1],[0,1,0]]
47
+ * 3. Return the variance of the filtered values.
48
+ *
49
+ * Exported for direct unit-testing with synthetic ImageData.
50
+ */
51
+ export function laplacianVariance(imageData, grayBuffer) {
52
+ const { data, width, height } = imageData;
53
+ // --- Step 1: grayscale luminance ---
54
+ const pixelCount = width * height;
55
+ const gray = grayBuffer && grayBuffer.length >= pixelCount
56
+ ? grayBuffer
57
+ : new Float32Array(pixelCount);
58
+ for (let i = 0; i < pixelCount; i++) {
59
+ const offset = i * 4;
60
+ // ITU-R BT.601 luma weights
61
+ gray[i] = data[offset] * 0.299 + data[offset + 1] * 0.587 + data[offset + 2] * 0.114;
62
+ }
63
+ // --- Step 2: Laplacian convolution (skip 1-pixel border) ---
64
+ const innerPixels = (width - 2) * (height - 2);
65
+ if (innerPixels <= 0)
66
+ return 0;
67
+ let sum = 0;
68
+ let sumSq = 0;
69
+ for (let y = 1; y < height - 1; y++) {
70
+ for (let x = 1; x < width - 1; x++) {
71
+ const idx = y * width + x;
72
+ const lap = gray[idx - width] + // top
73
+ gray[idx - 1] + // left
74
+ -4 * gray[idx] + // center
75
+ gray[idx + 1] + // right
76
+ gray[idx + width]; // bottom
77
+ sum += lap;
78
+ sumSq += lap * lap;
79
+ }
80
+ }
81
+ // variance = E[X²] - E[X]²
82
+ const mean = sum / innerPixels;
83
+ return Math.max(sumSq / innerPixels - mean * mean, 0);
84
+ }
85
+ function getReusableGrayBuffer(canvas, pixelCount) {
86
+ const existing = grayBuffersByCanvas.get(canvas);
87
+ if (existing && existing.length >= pixelCount) {
88
+ return existing;
89
+ }
90
+ const nextSize = existing
91
+ ? Math.max(pixelCount, Math.ceil(existing.length * GRAY_BUFFER_GROWTH_FACTOR))
92
+ : pixelCount;
93
+ const next = new Float32Array(nextSize);
94
+ grayBuffersByCanvas.set(canvas, next);
95
+ return next;
96
+ }
97
+ //# sourceMappingURL=sharpness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharpness.js","sourceRoot":"","sources":["../../src/services/sharpness.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAmC,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAuB,EACvB,MAAuB,EACvB,MAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IAEnB,GAAG,CAAC,SAAS,CACX,KAAK,EACL,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAC/C,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAClC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoB,EAAE,UAAyB;IAC/E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE1C,sCAAsC;IACtC,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU;QACxD,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,4BAA4B;QAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACvF,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAE/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,GACP,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAY,MAAM;gBACnC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAgB,OAAO;gBACpC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAe,SAAS;gBACtC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAgB,QAAQ;gBACrC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAW,SAAS;YACxC,GAAG,IAAI,GAAG,CAAC;YACX,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC;QACrB,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAyB,EAAE,UAAkB;IAC1E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC;QAC9E,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -6,6 +6,10 @@ export declare class CameraAccessError extends Error {
6
6
  }
7
7
  export interface ReusableFrameCapture {
8
8
  captureBlob: (video: HTMLVideoElement) => Promise<Blob>;
9
+ /** Snapshot the current video frame to an internal working canvas. */
10
+ captureWorkingFrame: (video: HTMLVideoElement) => void;
11
+ /** Copy the working canvas to the best-frame canvas, replacing any previous best. */
12
+ promoteWorkingToBest: () => void;
9
13
  storeBestFrame: (video: HTMLVideoElement) => void;
10
14
  hasStoredBestFrame: () => boolean;
11
15
  storedBestFrameToBlob: () => Promise<Blob>;
@@ -78,6 +78,18 @@ export function createReusableFrameCapture() {
78
78
  drawFrame(video, workingCanvas);
79
79
  return canvasToBlob(workingCanvas);
80
80
  },
81
+ captureWorkingFrame(video) {
82
+ drawFrame(video, workingCanvas);
83
+ },
84
+ promoteWorkingToBest() {
85
+ if (!workingCanvas.width || !workingCanvas.height) {
86
+ throw new Error('No working frame to promote.');
87
+ }
88
+ bestFrameCanvas.width = workingCanvas.width;
89
+ bestFrameCanvas.height = workingCanvas.height;
90
+ getContext(bestFrameCanvas).drawImage(workingCanvas, 0, 0);
91
+ hasStoredBestFrame = true;
92
+ },
81
93
  storeBestFrame(video) {
82
94
  drawFrame(video, bestFrameCanvas);
83
95
  hasStoredBestFrame = true;
@@ -1 +1 @@
1
- {"version":3,"file":"capture-runtime.js","sourceRoot":"","sources":["../../src/shared/capture-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-runtime.js","sourceRoot":"","sources":["../../src/shared/capture-runtime.ts"],"names":[],"mappings":"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"}
@@ -187,6 +187,9 @@ export class CameraCaptureSessionController {
187
187
  this.analysisInFlight = true;
188
188
  this.lastAnalysisTimestamp = timestamp;
189
189
  try {
190
+ // Snapshot the current frame BEFORE the async assessment so that
191
+ // the stored image matches the frame that was actually evaluated.
192
+ this.frameCapture.captureWorkingFrame(this.videoElement);
190
193
  const qualityResult = await this.assessLiveQuality(this.videoElement, timestamp);
191
194
  if (this.stopped)
192
195
  return;
@@ -197,7 +200,7 @@ export class CameraCaptureSessionController {
197
200
  this.countdownStartedAt = timestamp;
198
201
  }
199
202
  if (qualityResult.captureScore > this.bestCaptureScore) {
200
- this.frameCapture.storeBestFrame(this.videoElement);
203
+ this.frameCapture.promoteWorkingToBest();
201
204
  this.bestCaptureScore = qualityResult.captureScore;
202
205
  this.bestQualityResult = qualityResult;
203
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capture-session.js","sourceRoot":"","sources":["../../src/shared/capture-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-session.js","sourceRoot":"","sources":["../../src/shared/capture-session.ts"],"names":[],"mappings":"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"}