@photivra/engine 1.1.0 → 1.3.0

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.
Files changed (244) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/CITATION.cff +1 -1
  3. package/NOTICE +29 -0
  4. package/README.md +6 -6
  5. package/THIRD_PARTY.md +10 -0
  6. package/dist/composition/image-formation-plan.d.ts.map +1 -1
  7. package/dist/composition/image-formation-plan.js +17 -8
  8. package/dist/composition/image-formation-plan.js.map +1 -1
  9. package/dist/core/version.d.ts +1 -1
  10. package/dist/core/version.js +1 -1
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/optics/complex-pupil-psf.d.ts +6 -0
  16. package/dist/optics/complex-pupil-psf.d.ts.map +1 -1
  17. package/dist/optics/complex-pupil-psf.js +10 -7
  18. package/dist/optics/complex-pupil-psf.js.map +1 -1
  19. package/dist/output/native-capture-sdr.d.ts +78 -0
  20. package/dist/output/native-capture-sdr.d.ts.map +1 -0
  21. package/dist/output/native-capture-sdr.js +171 -0
  22. package/dist/output/native-capture-sdr.js.map +1 -0
  23. package/dist/output/print-contrast-reference.d.ts +47 -0
  24. package/dist/output/print-contrast-reference.d.ts.map +1 -0
  25. package/dist/output/print-contrast-reference.js +95 -0
  26. package/dist/output/print-contrast-reference.js.map +1 -0
  27. package/dist/output/print-detail.d.ts +7 -0
  28. package/dist/output/print-detail.d.ts.map +1 -1
  29. package/dist/output/print-detail.js +20 -11
  30. package/dist/output/print-detail.js.map +1 -1
  31. package/dist/output/print-region-statistics.d.ts +92 -0
  32. package/dist/output/print-region-statistics.d.ts.map +1 -0
  33. package/dist/output/print-region-statistics.js +300 -0
  34. package/dist/output/print-region-statistics.js.map +1 -0
  35. package/dist/sensor/environment-photo-signal.d.ts +8 -1
  36. package/dist/sensor/environment-photo-signal.d.ts.map +1 -1
  37. package/dist/sensor/environment-photo-signal.js +16 -6
  38. package/dist/sensor/environment-photo-signal.js.map +1 -1
  39. package/docs/API_REFERENCE.md +52 -1
  40. package/docs/API_STYLE.md +1 -1
  41. package/docs/ARCHITECTURE.md +1 -1
  42. package/docs/AUTOMATION_COORDINATION.md +1 -1
  43. package/docs/CAPTURE_COLOR.md +1 -1
  44. package/docs/CAPTURE_CORRECTED_SDR.md +1 -1
  45. package/docs/CAPTURE_EXPORT_METADATA.md +1 -1
  46. package/docs/CAPTURE_SDR.md +3 -1
  47. package/docs/DEVELOPERS.md +6 -4
  48. package/docs/DIGITAL_OPTICS_FOUNDATION.md +1 -1
  49. package/docs/ENVIRONMENT_RAW_CAPTURE.md +23 -4
  50. package/docs/EXPORT_ACCEPTANCE.md +1 -1
  51. package/docs/GENERIC_TIER_PRESETS.md +1 -1
  52. package/docs/GEOMETRIC_PREPARATION_REUSE.md +1 -1
  53. package/docs/IMAGE_FORMATION.md +1 -1
  54. package/docs/LINEAR_CAPTURE_ENCODING.md +1 -1
  55. package/docs/MOTION_AND_SIGNAL.md +1 -1
  56. package/docs/NATIVE_CAPTURE_SDR.md +70 -0
  57. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +37 -0
  58. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +34 -0
  59. package/docs/NUMERICAL_CORRECTNESS.md +1 -1
  60. package/docs/PERFORMANCE_BASELINE.md +1 -1
  61. package/docs/PHOTOGRAPHIC_EXPORT.md +1 -1
  62. package/docs/PHYSICS_FOUNDATION.md +1 -1
  63. package/docs/POC_API.md +1 -1
  64. package/docs/POC_PROJECTION_REUSE.md +1 -1
  65. package/docs/PRINT_195_196_REVIEW.md +93 -0
  66. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +45 -0
  67. package/docs/PRINT_CONTRAST_REFERENCE.md +43 -0
  68. package/docs/PRINT_DETAIL_ASSESSMENT.md +1 -1
  69. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +36 -0
  70. package/docs/PRINT_DETAIL_VALIDATION.md +1 -1
  71. package/docs/PRINT_PLANNING.md +3 -1
  72. package/docs/PRINT_REGION_STATISTICS.md +38 -0
  73. package/docs/PROCESSED_OUTPUT.md +1 -1
  74. package/docs/PRODUCTION_COMPOSITION.md +1 -1
  75. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +1 -1
  76. package/docs/PROVENANCE.md +1 -1
  77. package/docs/PSF_FOUNDATION.md +11 -1
  78. package/docs/RAW_FRAME_ENVELOPE.md +1 -1
  79. package/docs/RAW_FRAME_RECONSTRUCTION.md +1 -1
  80. package/docs/RELEASE_1_2_0.md +51 -0
  81. package/docs/RELEASE_1_3_0.md +15 -0
  82. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +1 -1
  83. package/docs/SCENE_SENSOR_QUADRATURE.md +1 -1
  84. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +1 -1
  85. package/docs/SCIENTIFIC_ASSURANCE.md +1 -1
  86. package/docs/SCIENTIFIC_CONFORMANCE.md +1 -1
  87. package/docs/SDR_RENDERING.md +1 -1
  88. package/docs/SENSOR_ENVIRONMENT_QUERY.md +1 -1
  89. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +1 -1
  90. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +1 -1
  91. package/docs/SENSOR_PSF_QUADRATURE.md +1 -1
  92. package/docs/SENSOR_RAW_FRAME.md +1 -1
  93. package/docs/SENSOR_RAW_PRODUCER.md +1 -1
  94. package/docs/SIGNAL_CONFORMANCE.md +1 -1
  95. package/docs/SIMULATED_CAPTURE.md +1 -1
  96. package/docs/STABILIZATION.md +1 -1
  97. package/docs/TEMPORAL_PHOTO_RAW.md +1 -1
  98. package/docs/TIER_ACCEPTANCE.md +1 -1
  99. package/docs/TIER_PRESET_ACCEPTANCE.md +1 -1
  100. package/docs/USAGE.md +3 -1
  101. package/docs/V1_COMPOSITION_MAP.md +1 -1
  102. package/docs/V1_HELPER_REUSE_REVIEW.md +1 -1
  103. package/docs/V1_PERFORMANCE_DISPOSITION.md +1 -1
  104. package/docs/api/camera-equivalent-focal-length.md +1 -1
  105. package/docs/api/camera-field-of-view.md +1 -1
  106. package/docs/api/camera-projected-object-size.md +1 -1
  107. package/docs/api/capture-capture-export-metadata.md +1 -1
  108. package/docs/api/capture-environment-raw-producer.md +1 -1
  109. package/docs/api/capture-focus-control.md +1 -1
  110. package/docs/api/capture-linear-encoding.md +1 -1
  111. package/docs/api/capture-photographic-export.md +1 -1
  112. package/docs/api/capture-raw-frame-reconstruction.md +1 -1
  113. package/docs/api/capture-release-sequence.md +1 -1
  114. package/docs/api/capture-sensor-raw-frame.md +1 -1
  115. package/docs/api/capture-sensor-raw-producer.md +1 -1
  116. package/docs/api/capture-simulated-capture.md +1 -1
  117. package/docs/api/color-capture-color.md +1 -1
  118. package/docs/api/color-white-balance.md +1 -1
  119. package/docs/api/composition-image-formation-plan.md +1 -1
  120. package/docs/api/composition-plan-consumer.md +1 -1
  121. package/docs/api/core-calculation-result.md +1 -1
  122. package/docs/api/core-configuration-error.md +1 -1
  123. package/docs/api/core-image-formation.md +1 -1
  124. package/docs/api/core-scientific-assurance.md +1 -1
  125. package/docs/api/core-spectral-composition.md +1 -1
  126. package/docs/api/core-spectral.md +1 -1
  127. package/docs/api/core-validation.md +1 -1
  128. package/docs/api/core-version.md +2 -2
  129. package/docs/api/equipment-exposure-capabilities.md +1 -1
  130. package/docs/api/equipment-generic-tier-assets.md +1 -1
  131. package/docs/api/equipment-generic-tier-presets.md +1 -1
  132. package/docs/api/equipment-iso-capabilities.md +1 -1
  133. package/docs/api/equipment-metering-capabilities.md +1 -1
  134. package/docs/api/equipment-release-capabilities.md +1 -1
  135. package/docs/api/exports.json +152 -2
  136. package/docs/api/exposure-exposure-duration-control.md +1 -1
  137. package/docs/api/exposure-exposure-mode-resolver.md +1 -1
  138. package/docs/api/exposure-exposure.md +1 -1
  139. package/docs/api/exposure-flash.md +1 -1
  140. package/docs/api/exposure-metering-scene-radiance.md +1 -1
  141. package/docs/api/exposure-metering-target.md +1 -1
  142. package/docs/api/exposure-metering-temporal.md +1 -1
  143. package/docs/api/exposure-metering.md +1 -1
  144. package/docs/api/exposure-program-line.md +1 -1
  145. package/docs/api/motion-camera-rotation.md +1 -1
  146. package/docs/api/motion-capture-rotation-inverse-mapping.md +1 -1
  147. package/docs/api/motion-capture-rotation-temporal-quadrature.md +1 -1
  148. package/docs/api/motion-capture-rotation-trajectory.md +1 -1
  149. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +1 -1
  150. package/docs/api/motion-extended-object-projection.md +1 -1
  151. package/docs/api/motion-projected-motion.md +1 -1
  152. package/docs/api/optics-aperture.md +1 -1
  153. package/docs/api/optics-circle-of-confusion.md +1 -1
  154. package/docs/api/optics-complex-pupil-psf.md +7 -1
  155. package/docs/api/optics-depth-of-field.md +1 -1
  156. package/docs/api/optics-diffraction.md +1 -1
  157. package/docs/api/optics-focus-breathing.md +1 -1
  158. package/docs/api/optics-focus-state.md +1 -1
  159. package/docs/api/optics-front-of-lens-filter.md +1 -1
  160. package/docs/api/optics-illumination-vignetting.md +1 -1
  161. package/docs/api/optics-lateral-chromatic-aberration.md +1 -1
  162. package/docs/api/optics-lens-psf-profile.md +1 -1
  163. package/docs/api/optics-polygon-diffraction.md +1 -1
  164. package/docs/api/optics-profile-contract.md +1 -1
  165. package/docs/api/optics-psf-foundation.md +1 -1
  166. package/docs/api/optics-radial-distortion.md +1 -1
  167. package/docs/api/optics-scene-to-sensor-irradiance.md +1 -1
  168. package/docs/api/optics-scene-to-sensor-quadrature.md +1 -1
  169. package/docs/api/optics-sensor-environment-query.md +1 -1
  170. package/docs/api/optics-sensor-psf-quadrature.md +1 -1
  171. package/docs/api/optics-stray-light.md +1 -1
  172. package/docs/api/optics-thin-lens.md +1 -1
  173. package/docs/api/output-capture-corrected-sdr.md +1 -1
  174. package/docs/api/output-capture-geometry.md +1 -1
  175. package/docs/api/output-capture-sdr.md +1 -1
  176. package/docs/api/output-crop.md +1 -1
  177. package/docs/api/output-geometric-transforms.md +1 -1
  178. package/docs/api/output-lens-corrections.md +1 -1
  179. package/docs/api/output-native-capture-sdr.md +150 -0
  180. package/docs/api/output-print-contrast-reference.md +82 -0
  181. package/docs/api/output-print-detail.md +1 -1
  182. package/docs/api/output-print-plan.md +1 -1
  183. package/docs/api/output-print-region-statistics.md +165 -0
  184. package/docs/api/output-sdr-rendering.md +1 -1
  185. package/docs/api/output-subject-framing-crop.md +1 -1
  186. package/docs/api/schema-camera.md +1 -1
  187. package/docs/api/schema-illumination-spectral.md +1 -1
  188. package/docs/api/schema-illumination-temporal.md +1 -1
  189. package/docs/api/schema-illumination.md +1 -1
  190. package/docs/api/schema-scene-radiance-temporal.md +1 -1
  191. package/docs/api/schema-scene-radiance.md +1 -1
  192. package/docs/api/schema-scene.md +1 -1
  193. package/docs/api/schema-validation.md +1 -1
  194. package/docs/api/sensor-accumulated-charge.md +1 -1
  195. package/docs/api/sensor-architecture.md +1 -1
  196. package/docs/api/sensor-camera-saturation-capacity.md +1 -1
  197. package/docs/api/sensor-capture-color-sampling-binding.md +1 -1
  198. package/docs/api/sensor-capture-mode-timing.md +1 -1
  199. package/docs/api/sensor-capture-mode.md +1 -1
  200. package/docs/api/sensor-color-sampling.md +1 -1
  201. package/docs/api/sensor-constant-rate-temporal-integration.md +1 -1
  202. package/docs/api/sensor-dark-current.md +1 -1
  203. package/docs/api/sensor-environment-photo-signal.md +6 -3
  204. package/docs/api/sensor-eqe-electron-rate.md +1 -1
  205. package/docs/api/sensor-eqe-local-exposure.md +1 -1
  206. package/docs/api/sensor-eqe-temporal-exposure.md +1 -1
  207. package/docs/api/sensor-exposure-window.md +1 -1
  208. package/docs/api/sensor-iso-signal-chain.md +1 -1
  209. package/docs/api/sensor-local-exposure-binding.md +1 -1
  210. package/docs/api/sensor-optical-stack.md +1 -1
  211. package/docs/api/sensor-photon-energy.md +1 -1
  212. package/docs/api/sensor-physical-charge-capacity.md +1 -1
  213. package/docs/api/sensor-pixel-pitch.md +1 -1
  214. package/docs/api/sensor-radiometry-readiness.md +1 -1
  215. package/docs/api/sensor-raw-readout.md +1 -1
  216. package/docs/api/sensor-raw-reconstruction.md +1 -1
  217. package/docs/api/sensor-readout-exposure-linkage.md +1 -1
  218. package/docs/api/sensor-readout-timing.md +1 -1
  219. package/docs/api/sensor-response-application-compatibility.md +1 -1
  220. package/docs/api/sensor-response-operating-range.md +1 -1
  221. package/docs/api/sensor-responsivity-photocurrent.md +1 -1
  222. package/docs/api/sensor-sampling-aperture.md +1 -1
  223. package/docs/api/sensor-scene-eqe-temporal-exposure.md +1 -1
  224. package/docs/api/sensor-sensor-geometry.md +1 -1
  225. package/docs/api/sensor-signal-noise.md +1 -1
  226. package/docs/api/sensor-spatial-sample-reduction.md +1 -1
  227. package/docs/api/sensor-spatial-sampling-quadrature.md +1 -1
  228. package/docs/api/sensor-spatio-spectral-reduction.md +1 -1
  229. package/docs/api/sensor-spectral-coverage.md +1 -1
  230. package/docs/api/sensor-spectral-quadrature.md +1 -1
  231. package/docs/api/sensor-spectral-response.md +1 -1
  232. package/docs/api/sensor-temporal-photo-signal.md +1 -1
  233. package/docs/api/simulation-poc-simulation.md +1 -1
  234. package/docs/api/stabilization-camera-shake.md +1 -1
  235. package/docs/api/stabilization-system.md +1 -1
  236. package/docs/licenses/castleCSF-MIT.txt +21 -0
  237. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +4 -0
  238. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +3 -0
  239. package/docs/validation/print-196-candidate-capabilities.json +28 -0
  240. package/docs/validation/print-196-candidate-evidence.json +356 -0
  241. package/docs/validation/print-196-engine-acceptance.json +81 -0
  242. package/docs/validation/print-detail-capabilities.json +4 -1
  243. package/docs/validation/print-detail-jpeg-evidence.json +116 -0
  244. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ /** Static D65 neutral Gabor detection reference; no photographic visibility verdict.
2
+ * @see docs/PRINT_CONTRAST_REFERENCE.md for exact source, applicability and review gates.
3
+ */
4
+ import { type CalculationResult } from "../core/calculation-result.js";
5
+ export declare const PRINT_CONTRAST_REFERENCE_MODEL_VERSION: "0.1.0";
6
+ /** Exact MIT-licensed numerical-model source, not a local calibration identity. */
7
+ export declare const PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION: "f4b0b722af83001d7af979281e06ca642d36e4e8";
8
+ /** Narrow reference stimulus, separate from any measured photographic ROI.
9
+ * Positive but out-of-domain quantities return unsupported rather than extrapolation.
10
+ */
11
+ export interface PrintContrastReferenceInput {
12
+ referenceId: string;
13
+ stimulus: "static-neutral-d65-gabor";
14
+ observer: "published-binocular-natural-pupil-reference";
15
+ /** Uniform D65 background/carrier mean; not the average of a finite photographic ROI. */
16
+ meanLuminanceCdPerSquareMeter: number;
17
+ spatialFrequencyCyclesPerDegree: number;
18
+ gaussianEnvelopeSigmaDegrees: number;
19
+ temporalFrequencyHz: number;
20
+ eccentricityDegrees: number;
21
+ /** Neutral carrier fractional amplitude before the Gaussian envelope; not arbitrary ROI extrema. */
22
+ modulationMichelson: number;
23
+ }
24
+ export interface PrintContrastReference {
25
+ referenceId: string;
26
+ engineApiVersion: string;
27
+ modelVersion: typeof PRINT_CONTRAST_REFERENCE_MODEL_VERSION;
28
+ upstreamRevision: typeof PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION;
29
+ input: PrintContrastReferenceInput;
30
+ status: "model-estimate" | "unsupported";
31
+ blockers: string[];
32
+ estimate: {
33
+ contrastSensitivity: number;
34
+ thresholdModulationMichelson: number;
35
+ suppliedModulationToModelThresholdRatio: number;
36
+ } | null;
37
+ observerApplicability: "population-reference-unverified-for-individual";
38
+ naturalImageVisibility: "unassessed";
39
+ printStimulusMatch: "unassessed";
40
+ uncertainty: "not-quantified";
41
+ overallPrintVerdict: "not-offered";
42
+ }
43
+ /** Strictly parse/copy explicit reference conditions; no defaults infer an observer. */
44
+ export declare function parsePrintContrastReferenceInput(value: unknown): PrintContrastReferenceInput;
45
+ /** Estimate the restricted published-model threshold; no individual invisibility claim. */
46
+ export declare function calculatePrintContrastReference(value: PrintContrastReferenceInput): CalculationResult<PrintContrastReference>;
47
+ //# sourceMappingURL=print-contrast-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-contrast-reference.d.ts","sourceRoot":"","sources":["../../src/output/print-contrast-reference.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAMxF,eAAO,MAAM,sCAAsC,EAAG,OAAgB,CAAC;AACvE,mFAAmF;AACnF,eAAO,MAAM,0CAA0C,EAAG,0CAAmD,CAAC;AAE9G;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,0BAA0B,CAAC;IACrC,QAAQ,EAAE,6CAA6C,CAAC;IACxD,yFAAyF;IACzF,6BAA6B,EAAE,MAAM,CAAC;IACtC,+BAA+B,EAAE,MAAM,CAAC;IACxC,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oGAAoG;IACpG,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AACD,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,sCAAsC,CAAC;IAC5D,gBAAgB,EAAE,OAAO,0CAA0C,CAAC;IACpE,KAAK,EAAE,2BAA2B,CAAC;IACnC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAAC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE;QAAE,mBAAmB,EAAE,MAAM,CAAC;QAAC,4BAA4B,EAAE,MAAM,CAAC;QAAC,uCAAuC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxI,qBAAqB,EAAE,gDAAgD,CAAC;IACxE,sBAAsB,EAAE,YAAY,CAAC;IACrC,kBAAkB,EAAE,YAAY,CAAC;IACjC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,mBAAmB,EAAE,aAAa,CAAC;CACpC;AAED,wFAAwF;AACxF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAe5F;AAgCD,2FAA2F;AAC3F,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,2BAA2B,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAwB7H"}
@@ -0,0 +1,95 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // castleCSF numerical model material: Copyright (c) 2023 Graphics and Displays
3
+ // group - University of Cambridge. MIT terms retained in NOTICE and
4
+ // docs/licenses/castleCSF-MIT.txt. Original bounded TypeScript adapter.
5
+ /** Static D65 neutral Gabor detection reference; no photographic visibility verdict.
6
+ * @see docs/PRINT_CONTRAST_REFERENCE.md for exact source, applicability and review gates.
7
+ */
8
+ import { estimatedResult } from "../core/calculation-result.js";
9
+ import { InvalidConfigurationError } from "../core/configuration-error.js";
10
+ import { freezeOwnedData } from "../core/owned-data.js";
11
+ import { requireAllowlistedRecord, requirePublicOpaqueId } from "../core/record-validation.js";
12
+ import { ENGINE_API_VERSION } from "../core/version.js";
13
+ export const PRINT_CONTRAST_REFERENCE_MODEL_VERSION = "0.1.0";
14
+ /** Exact MIT-licensed numerical-model source, not a local calibration identity. */
15
+ export const PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION = "f4b0b722af83001d7af979281e06ca642d36e4e8";
16
+ /** Strictly parse/copy explicit reference conditions; no defaults infer an observer. */
17
+ export function parsePrintContrastReferenceInput(value) {
18
+ const r = requireAllowlistedRecord(value, ["referenceId", "stimulus", "observer", "meanLuminanceCdPerSquareMeter", "spatialFrequencyCyclesPerDegree",
19
+ "gaussianEnvelopeSigmaDegrees", "temporalFrequencyHz", "eccentricityDegrees", "modulationMichelson"], "Invalid Print contrast reference fields.");
20
+ const number = (key, positive) => {
21
+ const v = r[key];
22
+ if (typeof v !== "number" || !Number.isFinite(v) || (positive ? v <= 0 : v < 0))
23
+ throw new InvalidConfigurationError("Print contrast reference quantities must be finite and in their numeric domain.");
24
+ return v === 0 ? 0 : v;
25
+ };
26
+ if (r.stimulus !== "static-neutral-d65-gabor" || r.observer !== "published-binocular-natural-pupil-reference")
27
+ throw new InvalidConfigurationError("Unknown Print reference stimulus/observer.");
28
+ const modulationMichelson = number("modulationMichelson", false);
29
+ if (modulationMichelson > 1)
30
+ throw new InvalidConfigurationError("Reference Michelson modulation must be at most one.");
31
+ return { referenceId: requirePublicOpaqueId(r.referenceId, "Invalid public Print contrast reference identity."), stimulus: r.stimulus, observer: r.observer,
32
+ meanLuminanceCdPerSquareMeter: number("meanLuminanceCdPerSquareMeter", true), spatialFrequencyCyclesPerDegree: number("spatialFrequencyCyclesPerDegree", true),
33
+ gaussianEnvelopeSigmaDegrees: number("gaussianEnvelopeSigmaDegrees", true), temporalFrequencyHz: number("temporalFrequencyHz", false),
34
+ eccentricityDegrees: number("eccentricityDegrees", false), modulationMichelson };
35
+ }
36
+ // Separately authored scalar evaluation of the licensed numerical model.
37
+ // Stable log1p/expm1 evaluation retains the small hyperbolic saturation term.
38
+ function luminanceDependency(p, luminance) {
39
+ if (p.length === 2)
40
+ return p[1] * luminance ** p[0];
41
+ const first = p[0] * Math.exp(-p[2] * Math.log1p(p[1] / luminance));
42
+ return p.length === 3 ? first : first * -Math.expm1(-p[4] * Math.log1p(p[3] / luminance));
43
+ }
44
+ function component(frequency, area, peak, peakFrequency, bandwidth, lowFrequencyFloor, a0, f0) {
45
+ const logDifference = Math.log10(frequency) - Math.log10(peakFrequency);
46
+ const parabola = 10 ** (-logDifference * logDifference / 2 ** bandwidth);
47
+ const shape = frequency < peakFrequency ? Math.max(parabola, lowFrequencyFloor) : parabola;
48
+ const criticalArea = a0 / (1 + (frequency / f0) ** 2);
49
+ return peak * shape * Math.sqrt(criticalArea / (1 + criticalArea / area)) * frequency;
50
+ }
51
+ function staticNeutralSensitivity(luminance, frequency) {
52
+ const area = Math.PI * 1.5 ** 2;
53
+ const sustained = component(frequency, area, luminanceDependency([56.4947, 7.54726, .144532, 5.58341e-7, 9.66862e9], luminance), luminanceDependency([1.78119, 91.5718, .256682], luminance), .000213047, 1 - .100207, 157.103, .702338);
54
+ const transient = component(frequency, area, luminanceDependency([.193434, 2748.09], luminance), .000316696, 2.6761, 1 - .000241177, 3.81611, 3.01389);
55
+ const omegaPeak = Math.log10(luminance) * 2.41482 + 4.7036;
56
+ const achromatic = sustained + transient * Math.exp(-((omegaPeak ** .1898) ** 2) / .0844836);
57
+ const redGreen = component(frequency, area, luminanceDependency([681.434, 38.0038, .480386], luminance), .0178364, 2.42104, 1, 2816.44, .0711058);
58
+ const yellowViolet = component(frequency, area, luminanceDependency([166.683, 62.8974, .41193], luminance), .00425753, 2.68197, 1, 2.82789e7, .000635093);
59
+ // Equal fractional modulation of the upstream D65 LMS background [L,M,S].
60
+ // All three mechanism responses remain, including nonzero opponent projections.
61
+ const redGreenProjection = Math.abs(.6991 - 2.3112 * .3009);
62
+ const yellowVioletProjection = Math.abs(-.6991 - .3009 + 50.9875 * .0198);
63
+ return Math.hypot(achromatic, redGreenProjection * redGreen, yellowVioletProjection * yellowViolet);
64
+ }
65
+ /** Estimate the restricted published-model threshold; no individual invisibility claim. */
66
+ export function calculatePrintContrastReference(value) {
67
+ const input = parsePrintContrastReferenceInput(value), l = input.meanLuminanceCdPerSquareMeter, f = input.spatialFrequencyCyclesPerDegree;
68
+ const result = { referenceId: input.referenceId, engineApiVersion: ENGINE_API_VERSION, modelVersion: PRINT_CONTRAST_REFERENCE_MODEL_VERSION,
69
+ upstreamRevision: PRINT_CONTRAST_REFERENCE_UPSTREAM_REVISION, input, status: "unsupported", blockers: [], estimate: null,
70
+ observerApplicability: "population-reference-unverified-for-individual", naturalImageVisibility: "unassessed", printStimulusMatch: "unassessed",
71
+ uncertainty: "not-quantified", overallPrintVerdict: "not-offered" };
72
+ if (l < 1 || l > 1000 || f < .25 || f > 16 || input.gaussianEnvelopeSigmaDegrees !== 1.5 || input.temporalFrequencyHz !== 0 || input.eccentricityDegrees !== 0)
73
+ result.blockers.push("outside-static-neutral-reference-domain");
74
+ else {
75
+ const sensitivity = staticNeutralSensitivity(l, f), threshold = 1 / sensitivity, ratio = input.modulationMichelson * sensitivity;
76
+ if (![sensitivity, threshold, ratio].every(Number.isFinite) || sensitivity <= 0 || threshold <= 0)
77
+ result.blockers.push("contrast-reference-numeric-range-unsupported");
78
+ else {
79
+ result.status = "model-estimate";
80
+ result.estimate = { contrastSensitivity: sensitivity, thresholdModulationMichelson: threshold, suppliedModulationToModelThresholdRatio: ratio };
81
+ }
82
+ }
83
+ return freezeOwnedData(estimatedResult(result, "castlecsf-static-neutral-d65-reference", PRINT_CONTRAST_REFERENCE_MODEL_VERSION, ["Static foveal D65 equal-fraction LMS Gabor; Gaussian envelope sigma is exactly 1.5 degrees.",
84
+ "Published population model reference; personal eyesight, natural-image masking and actual print-stimulus matching remain unassessed.",
85
+ "The numerical envelope is restricted; published model-fit errors do not become an individual confidence interval or a print verdict."], {
86
+ validRanges: [
87
+ { parameterPath: "meanLuminanceCdPerSquareMeter", unit: "cd/m^2", minimum: 1, maximum: 1000, note: "Restricted numerical reference envelope; no individual calibration." },
88
+ { parameterPath: "spatialFrequencyCyclesPerDegree", unit: "cycles/degree", minimum: .25, maximum: 16 },
89
+ { parameterPath: "gaussianEnvelopeSigmaDegrees", unit: "degree", minimum: 1.5, maximum: 1.5 },
90
+ { parameterPath: "temporalFrequencyHz", unit: "Hz", minimum: 0, maximum: 0 },
91
+ { parameterPath: "eccentricityDegrees", unit: "degree", minimum: 0, maximum: 0 }
92
+ ], notes: ["Uncertainty is not quantified; numerical conformance is distinct from stimulus/observer qualification."]
93
+ }));
94
+ }
95
+ //# sourceMappingURL=print-contrast-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-contrast-reference.js","sourceRoot":"","sources":["../../src/output/print-contrast-reference.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,13 @@ export interface PrintRegionDetailAssessment {
95
95
  unassessed: readonly ("captured-system-mtf" | "optical-motion-attribution" | "noise" | "aliasing" | "halos" | "compression" | "color" | "perceived-quality" | "printer-substrate")[];
96
96
  overallPrintVerdict: "not-offered";
97
97
  }
98
+ /** Internal shared source boundary for the regional measurement protocols. */
99
+ export declare function parsePrintDetailSource(value: unknown): PrintDetailSource;
100
+ /** Internal shared ROI boundary; no target or signal interpretation is inferred. */
101
+ export declare function parsePrintDetailRegion(value: unknown, source: PrintDetailSource, sampleValues: unknown): {
102
+ region: PrintDetailRegion;
103
+ samples: number[];
104
+ };
98
105
  /** Parse/copy bounded, untrusted region/source/target data and existing Print geometry.
99
106
  * Unknowns, sparse arrays and factual-reference-only numeric samples fail closed.
100
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"print-detail.d.ts","sourceRoot":"","sources":["../../src/output/print-detail.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG5F,OAAO,EAA8B,KAAK,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAG/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAkE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAA2C,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/G,yEAAyE;AACzE,eAAO,MAAM,iCAAiC,EAAG,OAAgB,CAAC;AAClE,2EAA2E;AAC3E,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AAErD,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,8BAA8B,CAAC;IAC5F,MAAM,EAAE,2BAA2B,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAC1E,YAAY,EAAE,4BAA4B,GAAG,gCAAgC,CAAC;IAC9E,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC;AACD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;IACtE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AACD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,kBAAkB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AACD,2FAA2F;AAC3F,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AACD,wFAAwF;AACxF,MAAM,WAAW,0BAA0B;IACzC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qCAAqC,EAAE,MAAM,CAAC;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,oCAAoC,EAAE,MAAM,CAAC;CAC9C;AACD,0FAA0F;AAC1F,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,iCAAiC,CAAC;IACvD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAC;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC/C,UAAU,EAAE;QACV,YAAY,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,oBAAoB,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,gBAAgB,EAAE,MAAM,CAAC;QACzB,iCAAiC,EAAE,MAAM,CAAC;KAC3C,GAAG,IAAI,CAAC;IACT,mCAAmC,EAAE,OAAO,CAAC;IAC7C,0BAA0B,EAAE,4BAA4B,CAAC;IACzD,SAAS,EAAE,2BAA2B,CAAC;IACvC,UAAU,EAAE,SAAS,CAAC,qBAAqB,GAAG,4BAA4B,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,EAAE,CAAC;IACrL,mBAAmB,EAAE,aAAa,CAAC;CACpC;AA8BD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAoClF;AAkBD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CAAC,2BAA2B,CAAC,CA4DxH"}
1
+ {"version":3,"file":"print-detail.d.ts","sourceRoot":"","sources":["../../src/output/print-detail.ts"],"names":[],"mappings":"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"}
@@ -50,12 +50,9 @@ function raster(value) {
50
50
  return { pixelWidth, pixelHeight };
51
51
  }
52
52
  function nullableDistance(value) { return value === null ? null : positive(value); }
53
- /** Parse/copy bounded, untrusted region/source/target data and existing Print geometry.
54
- * Unknowns, sparse arrays and factual-reference-only numeric samples fail closed.
55
- */
56
- export function parsePrintRegionDetailInput(value) {
57
- const r = record(value, ["assessmentId", "print", "source", "region", "target", "samples"]);
58
- const s = record(r.source, ["captureId", "representationId", "contentSha256", "raster", "stage", "domain", "registration", "processing", "noiseRealizationId", "evidence"]);
53
+ /** Internal shared source boundary for the regional measurement protocols. */
54
+ export function parsePrintDetailSource(value) {
55
+ const s = record(value, ["captureId", "representationId", "contentSha256", "raster", "stage", "domain", "registration", "processing", "noiseRealizationId", "evidence"]);
59
56
  if (typeof s.contentSha256 !== "string" || !/^[a-f0-9]{64}$/.test(s.contentSha256))
60
57
  throw new InvalidConfigurationError("Print detail source requires a lowercase SHA-256 declaration.");
61
58
  const processing = record(s.processing, ["id", "version"]);
@@ -66,7 +63,7 @@ export function parsePrintRegionDetailInput(value) {
66
63
  const evidence = parseEvidenceList(s.evidence, "printDetail.source.evidence");
67
64
  if (evidence.some(e => e.reuseStatus === "factual-reference-only"))
68
65
  throw new InvalidConfigurationError("Numeric sample data require owned/reusable provenance.");
69
- const source = {
66
+ return {
70
67
  captureId: id(s.captureId), representationId: id(s.representationId), contentSha256: s.contentSha256,
71
68
  raster: raster(s.raster), stage: choice(s.stage, ["native-retained-linear", "post-resampling-linear", "post-encoding-decoded-linear"]),
72
69
  domain: choice(s.domain, ["relative-linear-luminance", "transfer-encoded-luma", "unknown"]),
@@ -74,7 +71,10 @@ export function parsePrintRegionDetailInput(value) {
74
71
  processing: { id: id(processing.id), version: id(processing.version) },
75
72
  noiseRealizationId: s.noiseRealizationId === null ? null : id(s.noiseRealizationId), evidence
76
73
  };
77
- const regionRecord = record(r.region, ["id", "rect", "role", "subjectDistanceM", "focusDistanceM"]);
74
+ }
75
+ /** Internal shared ROI boundary; no target or signal interpretation is inferred. */
76
+ export function parsePrintDetailRegion(value, source, sampleValues) {
77
+ const regionRecord = record(value, ["id", "rect", "role", "subjectDistanceM", "focusDistanceM"]);
78
78
  const rr = record(regionRecord.rect, ["x", "y", "width", "height"]);
79
79
  const rect = { x: integer(rr.x, true), y: integer(rr.y, true), width: integer(rr.width), height: integer(rr.height) };
80
80
  requirePositiveInteger("region.width", rect.width);
@@ -83,14 +83,23 @@ export function parsePrintRegionDetailInput(value) {
83
83
  if (rect.x > source.raster.pixelWidth - rect.width || rect.y > source.raster.pixelHeight - rect.height)
84
84
  throw new InvalidConfigurationError("Print region must fit the represented raster.");
85
85
  const sampleCount = rect.width * rect.height;
86
- if (!Number.isSafeInteger(sampleCount) || sampleCount > MAX_PRINT_DETAIL_REGION_SAMPLES || !Array.isArray(r.samples) || r.samples.length !== sampleCount)
86
+ if (!Number.isSafeInteger(sampleCount) || sampleCount > MAX_PRINT_DETAIL_REGION_SAMPLES || !Array.isArray(sampleValues) || sampleValues.length !== sampleCount)
87
87
  throw new InvalidConfigurationError("Print detail requires a bounded exact row-major ROI array.");
88
88
  const samples = Array.from({ length: sampleCount }, (_, i) => {
89
- if (!Object.hasOwn(r.samples, i))
89
+ if (!Object.hasOwn(sampleValues, i))
90
90
  throw new InvalidConfigurationError("Sparse Print detail sample arrays are unsupported.");
91
- return finite(r.samples[i]);
91
+ return finite(sampleValues[i]);
92
92
  });
93
93
  const region = { id: id(regionRecord.id), rect, role: choice(regionRecord.role, ["selected-subject", "field-diagnostic", "intentional-defocus"]), subjectDistanceM: nullableDistance(regionRecord.subjectDistanceM), focusDistanceM: nullableDistance(regionRecord.focusDistanceM) };
94
+ return { region, samples };
95
+ }
96
+ /** Parse/copy bounded, untrusted region/source/target data and existing Print geometry.
97
+ * Unknowns, sparse arrays and factual-reference-only numeric samples fail closed.
98
+ */
99
+ export function parsePrintRegionDetailInput(value) {
100
+ const r = record(value, ["assessmentId", "print", "source", "region", "target", "samples"]);
101
+ const source = parsePrintDetailSource(r.source);
102
+ const { region, samples } = parsePrintDetailRegion(r.region, source, r.samples);
94
103
  const t = record(r.target, ["id", "version", "kind", "cyclesAcrossRegion", "referenceModulation"]);
95
104
  const cycles = record(t.cyclesAcrossRegion, ["x", "y"]);
96
105
  const referenceModulation = positive(t.referenceModulation);
@@ -1 +1 @@
1
- {"version":3,"file":"print-detail.js","sourceRoot":"","sources":["../../src/output/print-detail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"print-detail.js","sourceRoot":"","sources":["../../src/output/print-detail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /** Bounded linear-region processing differences and repeat-capture statistics.
2
+ * @see docs/PRINT_REGION_STATISTICS.md for the model, protocol and exclusions.
3
+ */
4
+ import { type CalculationResult } from "../core/calculation-result.js";
5
+ import { type PrintDetailSource, type PrintDetailRegion } from "./print-detail.js";
6
+ import { type PrintPlan, type PrintPlanInput } from "./print-plan.js";
7
+ /** Independent of the root distribution and coherent-detail protocol. */
8
+ export declare const PRINT_REGION_STATISTICS_MODEL_VERSION: "0.1.0";
9
+ /** Maximum scalar samples across every frame/reference in one request. */
10
+ export declare const MAX_PRINT_REGION_STATISTICS_SAMPLES = 65536;
11
+ /** Exact, unwarped scalar linear ROI; sample and hash verification remains external. */
12
+ export interface PrintRegionRaster {
13
+ print: PrintPlanInput;
14
+ source: PrintDetailSource;
15
+ region: PrintDetailRegion;
16
+ samples: readonly number[];
17
+ }
18
+ /** Compare identical sample sites through processing, without mixing noise draws.
19
+ * A known range is a declared reference signal range, never a clipping threshold.
20
+ */
21
+ export interface PrintRegionDifferenceInput {
22
+ assessmentId: string;
23
+ before: PrintRegionRaster;
24
+ after: PrintRegionRaster;
25
+ purpose: "processing-change" | "decoded-file-change";
26
+ realizationPolicy: "same-noise-realization" | "deterministic-reference";
27
+ referenceRange: {
28
+ lowerRelativeLuminance: number;
29
+ upperRelativeLuminance: number;
30
+ } | null;
31
+ }
32
+ /** Sample statistics at registered sites over independently acquired repeats.
33
+ * Stationarity/independence are declarations; a single frame is never a noise ensemble.
34
+ */
35
+ export interface PrintRegionNoiseInput {
36
+ assessmentId: string;
37
+ ensembleId: string;
38
+ stationarySceneId: string;
39
+ repeatPolicy: "independent-stationary-captures";
40
+ frames: readonly PrintRegionRaster[];
41
+ }
42
+ export interface PrintRegionDifferenceMeasurement {
43
+ meanSignedDifferenceRelativeLuminance: number;
44
+ rmsDifferenceRelativeLuminance: number;
45
+ maximumAbsoluteDifferenceRelativeLuminance: number;
46
+ /** Null unless the caller supplied a reference range; not a halo classifier. */
47
+ rangeExcursions: {
48
+ beforeBelowRangeCount: number;
49
+ beforeAboveRangeCount: number;
50
+ afterBelowRangeCount: number;
51
+ afterAboveRangeCount: number;
52
+ beforeMaximumUndershootRelativeLuminance: number;
53
+ beforeMaximumOvershootRelativeLuminance: number;
54
+ afterMaximumUndershootRelativeLuminance: number;
55
+ afterMaximumOvershootRelativeLuminance: number;
56
+ } | null;
57
+ }
58
+ export interface PrintRegionNoiseMeasurement {
59
+ frameCount: number;
60
+ siteCount: number;
61
+ meanRelativeLuminance: number;
62
+ /** Mean of per-site sample variances with n-1 denominator, in squared linear units. */
63
+ meanTemporalSampleVarianceRelativeLuminanceSquared: number;
64
+ temporalRmsRelativeLuminance: number;
65
+ /** Separately retained so scene texture/fixed pattern is not relabelled temporal noise. */
66
+ perSiteMeansRelativeLuminance: readonly number[];
67
+ perSiteSampleVariancesRelativeLuminanceSquared: readonly number[];
68
+ }
69
+ /** Measurements remain diagnostic. No physical-noise calibration or print verdict. */
70
+ export interface PrintRegionStatisticsAssessment<TInput, TMeasurement> {
71
+ assessmentId: string;
72
+ engineApiVersion: string;
73
+ modelVersion: typeof PRINT_REGION_STATISTICS_MODEL_VERSION;
74
+ input: TInput;
75
+ status: "diagnostic-only" | "blocked" | "unsupported";
76
+ blockers: string[];
77
+ print: PrintPlan;
78
+ measurement: TMeasurement | null;
79
+ sourceArtifactVerification: "caller-declared-unverified";
80
+ acquisitionQualification: "unassessed";
81
+ uncertainty: "not-quantified";
82
+ overallPrintVerdict: "not-offered";
83
+ }
84
+ /** Parse/copy an untrusted paired scalar ROI request. */
85
+ export declare function parsePrintRegionDifferenceInput(v: unknown): PrintRegionDifferenceInput;
86
+ /** Parse/copy an untrusted repeat-capture ensemble with a total scalar work bound. */
87
+ export declare function parsePrintRegionNoiseInput(v: unknown): PrintRegionNoiseInput;
88
+ /** Measure registered processing changes; residual is not automatically compression/noise. */
89
+ export declare function calculatePrintRegionDifference(value: PrintRegionDifferenceInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionDifferenceInput, PrintRegionDifferenceMeasurement>>;
90
+ /** Measure n-1 per-site temporal sample variance, independently of scene spatial texture. */
91
+ export declare function calculatePrintRegionNoise(value: PrintRegionNoiseInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionNoiseInput, PrintRegionNoiseMeasurement>>;
92
+ //# sourceMappingURL=print-region-statistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-region-statistics.d.ts","sourceRoot":"","sources":["../../src/output/print-region-statistics.ts"],"names":[],"mappings":"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"}