@photivra/engine 1.5.0 → 2.0.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.
- package/CHANGELOG.md +393 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +284 -0
- package/dist/facade/simulate-capture.js +1026 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +89 -25
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +761 -2
- package/docs/QUICK_START.md +495 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2213 -8
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +324 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -12
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-plan.js","sourceRoot":"","sources":["../../src/output/print-plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"print-plan.js","sourceRoot":"","sources":["../../src/output/print-plan.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/** Print planning: how many native pixels a print of a given size and viewing distance needs.\n * It uses native capture pixels only. It does not make an image or certify perceived quality.\n * @see docs/PRINT_PLANNING.md for equations, rounding and support limits.\n */\nimport { calculatedResult, approximationResult, type CalculationResult } from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { requireAllowlistedRecord, requirePublicOpaqueId } from \"../core/record-validation.js\";\nimport { requirePositiveFinite, requirePositiveInteger } from \"../core/validation.js\";\nimport { ENGINE_API_VERSION } from \"../core/version.js\";\nimport { resolveCaptureGeometry, type ResolveCaptureGeometryInput } from \"./capture-geometry.js\";\nimport type { RasterDimensions } from \"../sensor/sensor-geometry.js\";\n\n/** A physical length. Not to be confused with image pixels or printer dots. */\nexport interface PrintLength { value: number; unit: \"mm\" | \"cm\" | \"inches\" | \"m\" }\n/** The flat printed image area. It excludes paper margins, borders and canvas wraps. */\nexport interface PrintedImageSize { width: number; height: number; unit: PrintLength[\"unit\"] }\n/** How to choose pixel density: one of three angular criteria at the viewing distance, or a manual PPI (pixels per inch), which gives a different kind of plan. */\nexport type PrintSamplingCriterion =\n | { kind: \"angular-pixel-pitch\"; maximumArcminutesPerPixel: number }\n | { kind: \"angular-stroke\"; strokeWidthArcminutes: number; samplesPerStroke: number }\n | { kind: \"angular-line-pair\"; periodArcminutes: number; samplesPerPeriod: number }\n | { kind: \"manual-ppi\"; pixelsPerInch: number };\n/** The declared native source geometry. Not a preview or a resampled pixel count. */\nexport type PrintNativeSource =\n | { kind: \"native-retained\"; captureId: string; geometry: ResolveCaptureGeometryInput }\n | { kind: \"unavailable\"; reason: \"missing-native-raster\" | \"unverified-native-identity\" };\n/** Print lab requirements supplied by the caller. There is no vendor catalogue and no guarantee of what a lab will accept. */\nexport interface PrintProviderConstraints {\n minimumRaster?: RasterDimensions;\n exactRaster?: RasterDimensions;\n minimumPpi?: number;\n exactPpi?: number;\n}\n/** Plan input. The output keeps the exact native aspect ratio; the allowed physical aspect error is explicit and reported. */\nexport interface PrintPlanInput {\n source: PrintNativeSource;\n printedImage: PrintedImageSize;\n viewingDistance: PrintLength;\n sampling: PrintSamplingCriterion;\n fit: { kind: \"confirmed-native-aspect\"; maximumRelativeAspectError: number };\n provider?: PrintProviderConstraints;\n}\n/** Pixel density and angular pixel pitch for each axis. The angles are pure geometry, not a measure of visual acuity. */\nexport interface PrintRasterSampling {\n raster: RasterDimensions;\n pixelsPerInch: { x: number; y: number };\n angularPixelPitchArcminutes: { x: number; y: number };\n}\n/** A plan, valid only under its stated conditions. A null recommendation never means it is fine to upscale. */\nexport interface PrintPlan {\n engineApiVersion: string;\n input: PrintPlanInput;\n status: \"ready\" | \"insufficient-native-pixels\" | \"provider-conflict\" | \"crop-confirmation-required\" | \"cannot-assess\" | \"unsupported\";\n nativePixelSufficiency: \"sufficient\" | \"insufficient\" | \"cannot-assess\";\n reasons: string[];\n printedImageMm: { width: number; height: number } | null;\n viewingDistanceMm: number | null;\n guidance: CalculationResult<{ derivedPixelsPerInch: number; maximumPixelPitchMm: number; maximumArcminutesPerPixel: number | null }> | null;\n relativeAspectError: number | null;\n native: PrintRasterSampling | null;\n minimumSamplingRaster: RasterDimensions | null;\n recommended: PrintRasterSampling | null;\n resamplingScale: { x: number; y: number } | null;\n alternatives: { maximumImageMmAtCurrentDistance: { width: number; height: number }; minimumViewingDistanceMmAtCurrentSize: number | null } | null;\n capturedDetailAssessment: \"unassessed\";\n deliveryAssessment: \"unassessed\";\n}\n\nconst UNIT_MM = { mm: 1, cm: 10, inches: 25.4, m: 1000 } as const;\nconst RAD_PER_ARCMIN = Math.PI / 10800;\nfunction record(value: unknown, keys: readonly string[]): Record<string, unknown> {\n return requireAllowlistedRecord(value, keys, \"Invalid or unknown Print planning fields.\");\n}\nfunction number(value: unknown, name: string): number {\n if (typeof value !== \"number\") throw new InvalidConfigurationError(`${name} must be numeric.`);\n requirePositiveFinite(name, value); return value;\n}\nfunction unit(value: unknown): PrintLength[\"unit\"] {\n if (typeof value !== \"string\" || !Object.hasOwn(UNIT_MM, value)) throw new InvalidConfigurationError(\"Invalid Print length unit.\");\n return value as PrintLength[\"unit\"];\n}\nfunction length(value: unknown): PrintLength {\n const r = record(value, [\"value\", \"unit\"]);\n return { value: number(r.value, \"length.value\"), unit: unit(r.unit) };\n}\nfunction raster(value: unknown): RasterDimensions {\n const r = record(value, [\"pixelWidth\", \"pixelHeight\"]);\n const pixelWidth = number(r.pixelWidth, \"pixelWidth\"), pixelHeight = number(r.pixelHeight, \"pixelHeight\");\n requirePositiveInteger(\"pixelWidth\", pixelWidth); requirePositiveInteger(\"pixelHeight\", pixelHeight);\n return { pixelWidth, pixelHeight };\n}\nfunction geometry(value: unknown): ResolveCaptureGeometryInput {\n const g = record(value, [\"imagingArea\", \"nativeRaster\", \"orientation\", \"activeCaptureRect\", \"outputCropRect\", \"outputRaster\"]);\n record(g.imagingArea, [\"widthMm\", \"heightMm\"]); raster(g.nativeRaster);\n for (const key of [\"activeCaptureRect\", \"outputCropRect\"] as const) {\n if (g[key] !== undefined) record(g[key], [\"x\", \"y\", \"width\", \"height\"]);\n }\n if (g.outputRaster !== undefined) raster(g.outputRaster);\n // The capture geometry module defines units, orientations, bounds and the optical axis.\n const parsed = g as unknown as ResolveCaptureGeometryInput;\n resolveCaptureGeometry(parsed);\n return structuredCloneGeometry(parsed);\n}\nfunction structuredCloneGeometry(g: ResolveCaptureGeometryInput): ResolveCaptureGeometryInput {\n return { imagingArea: { ...g.imagingArea }, nativeRaster: { ...g.nativeRaster }, orientation: g.orientation,\n ...(g.activeCaptureRect === undefined ? {} : { activeCaptureRect: { ...g.activeCaptureRect } }),\n ...(g.outputCropRect === undefined ? {} : { outputCropRect: { ...g.outputCropRect } }),\n ...(g.outputRaster === undefined ? {} : { outputRaster: { ...g.outputRaster } }) };\n}\nfunction sampling(value: unknown): PrintSamplingCriterion {\n const tag = record(value, [\"kind\", \"maximumArcminutesPerPixel\", \"strokeWidthArcminutes\", \"samplesPerStroke\", \"periodArcminutes\", \"samplesPerPeriod\", \"pixelsPerInch\"]);\n let result: PrintSamplingCriterion;\n switch (tag.kind) {\n case \"manual-ppi\": {\n const r = record(value, [\"kind\", \"pixelsPerInch\"]);\n return { kind: \"manual-ppi\", pixelsPerInch: number(r.pixelsPerInch, \"pixelsPerInch\") };\n }\n case \"angular-pixel-pitch\": {\n const r = record(value, [\"kind\", \"maximumArcminutesPerPixel\"]);\n result = { kind: \"angular-pixel-pitch\", maximumArcminutesPerPixel: number(r.maximumArcminutesPerPixel, \"maximumArcminutesPerPixel\") }; break;\n }\n case \"angular-stroke\": {\n const r = record(value, [\"kind\", \"strokeWidthArcminutes\", \"samplesPerStroke\"]);\n const samplesPerStroke = number(r.samplesPerStroke, \"samplesPerStroke\"); requirePositiveInteger(\"samplesPerStroke\", samplesPerStroke);\n result = { kind: \"angular-stroke\", strokeWidthArcminutes: number(r.strokeWidthArcminutes, \"strokeWidthArcminutes\"), samplesPerStroke }; break;\n }\n case \"angular-line-pair\": {\n const r = record(value, [\"kind\", \"periodArcminutes\", \"samplesPerPeriod\"]);\n const samplesPerPeriod = number(r.samplesPerPeriod, \"samplesPerPeriod\"); requirePositiveInteger(\"samplesPerPeriod\", samplesPerPeriod);\n if (samplesPerPeriod < 2) throw new InvalidConfigurationError(\"A line-pair period requires at least two samples.\");\n result = { kind: \"angular-line-pair\", periodArcminutes: number(r.periodArcminutes, \"periodArcminutes\"), samplesPerPeriod }; break;\n }\n default: throw new InvalidConfigurationError(\"Invalid Print sampling convention.\");\n }\n const angle = angularLimit(result);\n if (angle <= 0 || angle >= 10800) throw new InvalidConfigurationError(\"Effective angular pixel pitch must lie in (0, 10800) arcminutes.\");\n return result;\n}\nfunction angularLimit(s: Exclude<PrintSamplingCriterion, { kind: \"manual-ppi\" }>): number {\n switch (s.kind) {\n case \"angular-pixel-pitch\": return s.maximumArcminutesPerPixel;\n case \"angular-stroke\": return s.strokeWidthArcminutes / s.samplesPerStroke;\n case \"angular-line-pair\": return s.periodArcminutes / s.samplesPerPeriod;\n }\n}\n\n/** Validates and copies an untrusted print request. It never assumes the source is native if that is not declared. */\nexport function parsePrintPlanInput(value: unknown): PrintPlanInput {\n const r = record(value, [\"source\", \"printedImage\", \"viewingDistance\", \"sampling\", \"fit\", \"provider\"]);\n const source = record(r.source, [\"kind\", \"captureId\", \"geometry\", \"reason\"]);\n let parsedSource: PrintNativeSource;\n if (source.kind === \"native-retained\") {\n record(r.source, [\"kind\", \"captureId\", \"geometry\"]);\n parsedSource = { kind: \"native-retained\", captureId: requirePublicOpaqueId(source.captureId, \"Invalid public capture ID.\"), geometry: geometry(source.geometry) };\n } else if (source.kind === \"unavailable\") {\n record(r.source, [\"kind\", \"reason\"]);\n if (source.reason !== \"missing-native-raster\" && source.reason !== \"unverified-native-identity\") throw new InvalidConfigurationError(\"Invalid native-unavailable reason.\");\n parsedSource = { kind: \"unavailable\", reason: source.reason };\n } else throw new InvalidConfigurationError(\"Invalid native source kind.\");\n const image = record(r.printedImage, [\"width\", \"height\", \"unit\"]);\n const fit = record(r.fit, [\"kind\", \"maximumRelativeAspectError\"]);\n if (fit.kind !== \"confirmed-native-aspect\" || typeof fit.maximumRelativeAspectError !== \"number\" || !Number.isFinite(fit.maximumRelativeAspectError) || fit.maximumRelativeAspectError < 0 || fit.maximumRelativeAspectError > 0.01) throw new InvalidConfigurationError(\"Declare a native-aspect fit tolerance in [0, 0.01].\");\n const parsed: PrintPlanInput = { source: parsedSource, printedImage: { width: number(image.width, \"printedImage.width\"), height: number(image.height, \"printedImage.height\"), unit: unit(image.unit) }, viewingDistance: length(r.viewingDistance), sampling: sampling(r.sampling), fit: { kind: \"confirmed-native-aspect\", maximumRelativeAspectError: fit.maximumRelativeAspectError } };\n if (r.provider !== undefined) {\n const p = record(r.provider, [\"minimumRaster\", \"exactRaster\", \"minimumPpi\", \"exactPpi\"]);\n parsed.provider = {\n ...(p.minimumRaster === undefined ? {} : { minimumRaster: raster(p.minimumRaster) }),\n ...(p.exactRaster === undefined ? {} : { exactRaster: raster(p.exactRaster) }),\n ...(p.minimumPpi === undefined ? {} : { minimumPpi: number(p.minimumPpi, \"minimumPpi\") }),\n ...(p.exactPpi === undefined ? {} : { exactPpi: number(p.exactPpi, \"exactPpi\") })\n };\n }\n return parsed;\n}\nfunction gcd(a: number, b: number): number { while (b !== 0) { const next = a % b; a = b; b = next; } return a; }\nfunction positiveSupported(...values: number[]): boolean { return values.every(v => Number.isFinite(v) && v > 0); }\n// Stepping to the adjacent double rounds outward. It is not a tolerance on the criterion.\nfunction adjacentPositive(value: number, direction: \"up\" | \"down\"): number {\n const view = new DataView(new ArrayBuffer(8)); view.setFloat64(0, value);\n view.setBigUint64(0, view.getBigUint64(0) + (direction === \"up\" ? 1n : -1n));\n return view.getFloat64(0);\n}\nfunction exactRatio(a: RasterDimensions, b: RasterDimensions): boolean {\n return BigInt(a.pixelWidth) * BigInt(b.pixelHeight) === BigInt(a.pixelHeight) * BigInt(b.pixelWidth);\n}\nfunction minimumRaster(native: RasterDimensions, width: number, height: number): RasterDimensions | null {\n const divisor = gcd(native.pixelWidth, native.pixelHeight);\n const x = native.pixelWidth / divisor, y = native.pixelHeight / divisor;\n const count = Math.max(1, Math.ceil(width / x), Math.ceil(height / y));\n const pixelWidth = count * x, pixelHeight = count * y;\n return Number.isSafeInteger(pixelWidth) && Number.isSafeInteger(pixelHeight) ? { pixelWidth, pixelHeight } : null;\n}\nfunction diagnostics(raster: RasterDimensions, width: number, height: number, distance: number): PrintRasterSampling {\n const px = width / raster.pixelWidth, py = height / raster.pixelHeight;\n return { raster, pixelsPerInch: { x: 25.4 / px, y: 25.4 / py }, angularPixelPitchArcminutes: { x: 2 * Math.atan((px / distance) / 2) / RAD_PER_ARCMIN, y: 2 * Math.atan((py / distance) / 2) / RAD_PER_ARCMIN } };\n}\n\n/** Finds the smallest file, at the exact native aspect ratio, that meets the declared sampling and lab constraints.\n * The angular guidance is an approximate rule of thumb; the geometry itself is calculated exactly.\n * It does not assess source detail, perceived quality, file writing or available resources.\n */\nexport function calculatePrintPlan(value: PrintPlanInput): CalculationResult<PrintPlan> {\n const input = parsePrintPlanInput(value);\n const plan: PrintPlan = { engineApiVersion: ENGINE_API_VERSION, input, status: \"cannot-assess\", nativePixelSufficiency: \"cannot-assess\", reasons: [], printedImageMm: null, viewingDistanceMm: null, guidance: null, relativeAspectError: null, native: null, minimumSamplingRaster: null, recommended: null, resamplingScale: null, alternatives: null, capturedDetailAssessment: \"unassessed\", deliveryAssessment: \"unassessed\" };\n const finish = (): CalculationResult<PrintPlan> => calculatedResult(plan, \"native-only-print-plan\", \"0.1.0\", [\"Declared native authority; flat image, normal viewing at image center.\", \"Output preserves the exact retained native aspect ratio; no upscale.\", \"Angular sampling is conditional guidance, not captured-detail or print-quality certification.\"]);\n const unsupported = (): CalculationResult<PrintPlan> => { plan.status = \"unsupported\"; plan.nativePixelSufficiency = \"cannot-assess\"; plan.reasons.push(\"unsupported-numeric-range\"); return finish(); };\n const width = input.printedImage.width * UNIT_MM[input.printedImage.unit], height = input.printedImage.height * UNIT_MM[input.printedImage.unit], distance = input.viewingDistance.value * UNIT_MM[input.viewingDistance.unit];\n if (!positiveSupported(width, height, distance)) return unsupported();\n plan.printedImageMm = { width, height }; plan.viewingDistanceMm = distance;\n const angle = input.sampling.kind === \"manual-ppi\" ? null : angularLimit(input.sampling);\n const pitchFactor = angle === null ? null : 2 * Math.tan((angle * RAD_PER_ARCMIN) / 2);\n const pitch = input.sampling.kind === \"manual-ppi\" ? 25.4 / input.sampling.pixelsPerInch : distance * (pitchFactor ?? 0);\n const ppi = input.sampling.kind === \"manual-ppi\" ? input.sampling.pixelsPerInch : 25.4 / pitch;\n if (!positiveSupported(pitch, ppi, width / pitch, height / pitch)) return unsupported();\n const guidance = { derivedPixelsPerInch: ppi, maximumPixelPitchMm: pitch, maximumArcminutesPerPixel: angle };\n plan.guidance = angle === null ? calculatedResult(guidance, \"manual-print-density\", \"0.1.0\", [\"Explicit manual PPI plan; no angular criterion is certified.\"]) : approximationResult(guidance, \"declared-angular-print-sampling\", \"0.1.0\", [\"Exact centered pixel angle uses 2 atan(pitch / (2 distance)); no small-angle substitution.\", \"Declared angular sampling convention is an uncalibrated usage assumption.\"]);\n if (input.source.kind === \"unavailable\") { plan.reasons.push(input.source.reason); return finish(); }\n const resolved = resolveCaptureGeometry(input.source.geometry).value;\n const native = { pixelWidth: resolved.output.cropRect.width, pixelHeight: resolved.output.cropRect.height };\n const aspectError = Math.abs((width / height) / (native.pixelWidth / native.pixelHeight) - 1);\n if (!Number.isFinite(aspectError)) return unsupported();\n plan.relativeAspectError = aspectError;\n const nativeDiagnostics = diagnostics(native, width, height, distance);\n if (!positiveSupported(nativeDiagnostics.pixelsPerInch.x, nativeDiagnostics.pixelsPerInch.y, nativeDiagnostics.angularPixelPitchArcminutes.x, nativeDiagnostics.angularPixelPitchArcminutes.y)) return unsupported();\n plan.native = nativeDiagnostics;\n if (aspectError > input.fit.maximumRelativeAspectError) { plan.status = \"crop-confirmation-required\"; plan.reasons.push(\"printed-image-and-confirmed-crop-aspect-mismatch\"); return finish(); }\n const widthInches = input.printedImage.unit === \"inches\" ? input.printedImage.width : width / 25.4;\n const heightInches = input.printedImage.unit === \"inches\" ? input.printedImage.height : height / 25.4;\n const required = input.sampling.kind === \"manual-ppi\"\n ? minimumRaster(native, widthInches * ppi, heightInches * ppi)\n : minimumRaster(native, width / pitch, height / pitch);\n if (required === null) return unsupported();\n plan.minimumSamplingRaster = required;\n const sufficient = required.pixelWidth <= native.pixelWidth && required.pixelHeight <= native.pixelHeight;\n plan.nativePixelSufficiency = sufficient ? \"sufficient\" : \"insufficient\";\n let maxScale = Math.min(native.pixelWidth * pitch / width, native.pixelHeight * pitch / height);\n let minimumDistance = pitchFactor === null ? null : Math.max(width / native.pixelWidth, height / native.pixelHeight) / pitchFactor;\n let maxWidth = width * maxScale, maxHeight = height * maxScale;\n if (!positiveSupported(maxWidth, maxHeight) || (minimumDistance !== null && !positiveSupported(minimumDistance))) return unsupported();\n const fits = (w: number, h: number, p: number): boolean => {\n const candidate = input.sampling.kind === \"manual-ppi\" ? minimumRaster(native, w / 25.4 * ppi, h / 25.4 * ppi) : minimumRaster(native, w / p, h / p);\n return candidate !== null && candidate.pixelWidth <= native.pixelWidth && candidate.pixelHeight <= native.pixelHeight;\n };\n // Return only alternatives that still pass their own documented integer rule.\n for (let i = 0; i < 8 && !fits(maxWidth, maxHeight, pitch); i++) {\n maxScale = adjacentPositive(maxScale, \"down\"); maxWidth = width * maxScale; maxHeight = height * maxScale;\n }\n if (!positiveSupported(maxWidth, maxHeight) || !fits(maxWidth, maxHeight, pitch)) return unsupported();\n if (minimumDistance !== null && pitchFactor !== null) {\n for (let i = 0; i < 8 && !fits(width, height, minimumDistance * pitchFactor); i++) minimumDistance = adjacentPositive(minimumDistance, \"up\");\n if (!positiveSupported(minimumDistance) || !fits(width, height, minimumDistance * pitchFactor)) return unsupported();\n }\n plan.alternatives = { maximumImageMmAtCurrentDistance: { width: maxWidth, height: maxHeight }, minimumViewingDistanceMmAtCurrentSize: minimumDistance };\n if (!sufficient) { plan.status = \"insufficient-native-pixels\"; plan.reasons.push(\"sampling-requires-native-upscale\"); }\n let file = required;\n const provider = input.provider;\n if (provider) {\n const density = Math.max(provider.minimumPpi ?? 0, provider.exactPpi ?? 0);\n const constrained = minimumRaster(native, Math.max(required.pixelWidth, provider.minimumRaster?.pixelWidth ?? 0, widthInches * density), Math.max(required.pixelHeight, provider.minimumRaster?.pixelHeight ?? 0, heightInches * density));\n if (constrained === null) return unsupported();\n file = provider.exactRaster ?? constrained;\n if (provider.exactPpi !== undefined) {\n const exact = { pixelWidth: widthInches * provider.exactPpi, pixelHeight: heightInches * provider.exactPpi };\n if (!Number.isSafeInteger(exact.pixelWidth) || !Number.isSafeInteger(exact.pixelHeight)) plan.reasons.push(\"exact-provider-density-has-no-integer-raster\");\n else if (provider.exactRaster && (exact.pixelWidth !== file.pixelWidth || exact.pixelHeight !== file.pixelHeight)) plan.reasons.push(\"provider-exact-raster-density-conflict\");\n else file = exact;\n }\n if (!exactRatio(file, native)) plan.reasons.push(\"provider-raster-aspect-conflict\");\n if (file.pixelWidth < constrained.pixelWidth || file.pixelHeight < constrained.pixelHeight) plan.reasons.push(\"provider-exact-requirement-below-minimum\");\n if (file.pixelWidth > native.pixelWidth || file.pixelHeight > native.pixelHeight) plan.reasons.push(\"provider-requires-native-upscale\");\n if (plan.reasons.some(r => r.startsWith(\"provider-\") || r.startsWith(\"exact-provider-\"))) { plan.status = \"provider-conflict\"; return finish(); }\n }\n if (!sufficient) return finish();\n const achieved = diagnostics(file, width, height, distance);\n if (!positiveSupported(achieved.pixelsPerInch.x, achieved.pixelsPerInch.y, achieved.angularPixelPitchArcminutes.x, achieved.angularPixelPitchArcminutes.y)) return unsupported();\n plan.status = \"ready\"; plan.recommended = achieved;\n plan.resamplingScale = { x: file.pixelWidth / native.pixelWidth, y: file.pixelHeight / native.pixelHeight };\n return finish();\n}\n\n/** Input for the largest-print-size query. It keeps the reference plan's aspect ratio and criterion.\n * With proportional viewing, the reference viewing distance scales with the image size.\n */\nexport interface PrintSizeLimitInput {\n plan: PrintPlanInput;\n viewingDistancePolicy: \"fixed\" | \"proportional-to-image-size\";\n}\n/** Result of the size query. A status says \"unbounded\" rather than using Infinity. \"no-positive-size\" is a valid answer, not an input error. */\nexport interface PrintSizeLimit {\n engineApiVersion: string;\n status: \"finite\" | \"unbounded\" | \"no-positive-size\" | \"cannot-assess\" | \"unsupported\";\n maximumImageMm: { width: number; height: number } | null;\n reasons: string[];\n referencePlan: PrintPlan;\n}\n/** Calculates the largest print size under the stated conditions. Lab constraints need individual plans,\n * so this size query reports them as unsupported rather than ignoring them.\n */\nexport function calculatePrintSizeLimit(value: PrintSizeLimitInput): CalculationResult<PrintSizeLimit> {\n const r = record(value, [\"plan\", \"viewingDistancePolicy\"]);\n if (r.viewingDistancePolicy !== \"fixed\" && r.viewingDistancePolicy !== \"proportional-to-image-size\") throw new InvalidConfigurationError(\"Invalid viewing-distance scaling policy.\");\n const referencePlan = calculatePrintPlan(parsePrintPlanInput(r.plan)).value;\n const result: PrintSizeLimit = { engineApiVersion: ENGINE_API_VERSION, status: \"cannot-assess\", maximumImageMm: null, reasons: [...referencePlan.reasons], referencePlan };\n if (referencePlan.input.provider !== undefined && Object.keys(referencePlan.input.provider).length > 0) {\n result.status = \"unsupported\"; result.reasons.push(\"size-query-with-provider-constraints-unsupported\");\n } else if (referencePlan.status === \"unsupported\") result.status = \"unsupported\";\n else if (referencePlan.alternatives !== null) {\n if (r.viewingDistancePolicy === \"proportional-to-image-size\" && referencePlan.input.sampling.kind !== \"manual-ppi\") {\n result.status = referencePlan.nativePixelSufficiency === \"sufficient\" ? \"unbounded\" : \"no-positive-size\";\n } else { result.status = \"finite\"; result.maximumImageMm = referencePlan.alternatives.maximumImageMmAtCurrentDistance; }\n }\n return calculatedResult(result, \"conditional-native-print-size-limit\", \"0.1.0\", [\"Native sampling capacity only; no perceived-quality or physical-printer bound.\", \"Proportional distance and image scaling preserve angular pixel pitch.\"]);\n}\n"]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Statistics on a region of linear image data: how processing changed it, and how it varies across repeated captures.
|
|
2
2
|
* @see docs/PRINT_REGION_STATISTICS.md for the model, protocol and exclusions.
|
|
3
3
|
*/
|
|
4
4
|
import { type CalculationResult } from "../core/calculation-result.js";
|
|
5
5
|
import { type PrintDetailSource, type PrintDetailRegion } from "./print-detail.js";
|
|
6
6
|
import { type PrintPlan, type PrintPlanInput } from "./print-plan.js";
|
|
7
|
-
/** Independent of the
|
|
7
|
+
/** Version of this protocol. Independent of the package version and of the print-detail protocol. */
|
|
8
8
|
export declare const PRINT_REGION_STATISTICS_MODEL_VERSION: "0.1.0";
|
|
9
|
-
/** Maximum
|
|
9
|
+
/** Maximum number of single-channel samples across all frames and references in one request. */
|
|
10
10
|
export declare const MAX_PRINT_REGION_STATISTICS_SAMPLES = 65536;
|
|
11
|
-
/**
|
|
11
|
+
/** An exact, unwarped, single-channel linear region of interest (ROI). Checking the samples and their hash is up to the caller. */
|
|
12
12
|
export interface PrintRegionRaster {
|
|
13
13
|
print: PrintPlanInput;
|
|
14
14
|
source: PrintDetailSource;
|
|
15
15
|
region: PrintDetailRegion;
|
|
16
16
|
samples: readonly number[];
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/** Compares the same sample sites before and after processing, from the same noise draw.
|
|
19
19
|
* A known range is a declared reference signal range, never a clipping threshold.
|
|
20
20
|
*/
|
|
21
21
|
export interface PrintRegionDifferenceInput {
|
|
@@ -29,8 +29,8 @@ export interface PrintRegionDifferenceInput {
|
|
|
29
29
|
upperRelativeLuminance: number;
|
|
30
30
|
} | null;
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Stationarity
|
|
32
|
+
/** Statistics at aligned sites across separately acquired repeat captures.
|
|
33
|
+
* Stationarity and independence are declared by the caller. A single frame is never treated as a noise sample set.
|
|
34
34
|
*/
|
|
35
35
|
export interface PrintRegionNoiseInput {
|
|
36
36
|
assessmentId: string;
|
|
@@ -43,7 +43,7 @@ export interface PrintRegionDifferenceMeasurement {
|
|
|
43
43
|
meanSignedDifferenceRelativeLuminance: number;
|
|
44
44
|
rmsDifferenceRelativeLuminance: number;
|
|
45
45
|
maximumAbsoluteDifferenceRelativeLuminance: number;
|
|
46
|
-
/** Null unless the caller supplied a reference range
|
|
46
|
+
/** Null unless the caller supplied a reference range. It does not classify halos. */
|
|
47
47
|
rangeExcursions: {
|
|
48
48
|
beforeBelowRangeCount: number;
|
|
49
49
|
beforeAboveRangeCount: number;
|
|
@@ -62,11 +62,11 @@ export interface PrintRegionNoiseMeasurement {
|
|
|
62
62
|
/** Mean of per-site sample variances with n-1 denominator, in squared linear units. */
|
|
63
63
|
meanTemporalSampleVarianceRelativeLuminanceSquared: number;
|
|
64
64
|
temporalRmsRelativeLuminance: number;
|
|
65
|
-
/**
|
|
65
|
+
/** Kept separate so scene texture and fixed-pattern variation are not mislabelled as temporal noise. */
|
|
66
66
|
perSiteMeansRelativeLuminance: readonly number[];
|
|
67
67
|
perSiteSampleVariancesRelativeLuminanceSquared: readonly number[];
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
69
|
+
/** The measurements are diagnostics only. They are not a physical noise calibration or a print verdict. */
|
|
70
70
|
export interface PrintRegionStatisticsAssessment<TInput, TMeasurement> {
|
|
71
71
|
assessmentId: string;
|
|
72
72
|
engineApiVersion: string;
|
|
@@ -81,12 +81,11 @@ export interface PrintRegionStatisticsAssessment<TInput, TMeasurement> {
|
|
|
81
81
|
uncertainty: "not-quantified";
|
|
82
82
|
overallPrintVerdict: "not-offered";
|
|
83
83
|
}
|
|
84
|
-
/**
|
|
84
|
+
/** Parses and copies an untrusted request that pairs two single-channel ROIs. */
|
|
85
85
|
export declare function parsePrintRegionDifferenceInput(v: unknown): PrintRegionDifferenceInput;
|
|
86
|
-
/**
|
|
86
|
+
/** Parses and copies an untrusted set of repeat captures, with a limit on the total number of samples. */
|
|
87
87
|
export declare function parsePrintRegionNoiseInput(v: unknown): PrintRegionNoiseInput;
|
|
88
|
-
/**
|
|
88
|
+
/** Measures how processing changed aligned samples. The residual is not automatically compression or noise. */
|
|
89
89
|
export declare function calculatePrintRegionDifference(value: PrintRegionDifferenceInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionDifferenceInput, PrintRegionDifferenceMeasurement>>;
|
|
90
|
-
/**
|
|
90
|
+
/** Measures the sample variance over time at each site (n-1 denominator), separately from spatial scene texture. */
|
|
91
91
|
export declare function calculatePrintRegionNoise(value: PrintRegionNoiseInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionNoiseInput, PrintRegionNoiseMeasurement>>;
|
|
92
|
-
//# sourceMappingURL=print-region-statistics.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
/**
|
|
2
|
+
/** Statistics on a region of linear image data: how processing changed it, and how it varies across repeated captures.
|
|
3
3
|
* @see docs/PRINT_REGION_STATISTICS.md for the model, protocol and exclusions.
|
|
4
4
|
*/
|
|
5
5
|
import { calculatedResult } from "../core/calculation-result.js";
|
|
@@ -10,9 +10,9 @@ import { ENGINE_API_VERSION } from "../core/version.js";
|
|
|
10
10
|
import { parsePrintDetailSource, parsePrintDetailRegion, MAX_PRINT_DETAIL_REGION_SAMPLES } from "./print-detail.js";
|
|
11
11
|
import { resolveCaptureGeometry } from "./capture-geometry.js";
|
|
12
12
|
import { calculatePrintPlan, parsePrintPlanInput } from "./print-plan.js";
|
|
13
|
-
/** Independent of the
|
|
13
|
+
/** Version of this protocol. Independent of the package version and of the print-detail protocol. */
|
|
14
14
|
export const PRINT_REGION_STATISTICS_MODEL_VERSION = "0.1.0";
|
|
15
|
-
/** Maximum
|
|
15
|
+
/** Maximum number of single-channel samples across all frames and references in one request. */
|
|
16
16
|
export const MAX_PRINT_REGION_STATISTICS_SAMPLES = MAX_PRINT_DETAIL_REGION_SAMPLES;
|
|
17
17
|
function record(v, keys) {
|
|
18
18
|
return requireAllowlistedRecord(v, keys, "Invalid or unknown Print region statistics fields.");
|
|
@@ -33,7 +33,7 @@ function parseRaster(v) {
|
|
|
33
33
|
const { region, samples } = parsePrintDetailRegion(r.region, source, r.samples);
|
|
34
34
|
return { print: parsePrintPlanInput(r.print), source, region, samples };
|
|
35
35
|
}
|
|
36
|
-
/**
|
|
36
|
+
/** Parses and copies an untrusted request that pairs two single-channel ROIs. */
|
|
37
37
|
export function parsePrintRegionDifferenceInput(v) {
|
|
38
38
|
const r = record(v, ["assessmentId", "before", "after", "purpose", "realizationPolicy", "referenceRange"]);
|
|
39
39
|
const before = parseRaster(r.before), after = parseRaster(r.after);
|
|
@@ -50,7 +50,7 @@ export function parsePrintRegionDifferenceInput(v) {
|
|
|
50
50
|
purpose: choice(r.purpose, ["processing-change", "decoded-file-change"]),
|
|
51
51
|
realizationPolicy: choice(r.realizationPolicy, ["same-noise-realization", "deterministic-reference"]) };
|
|
52
52
|
}
|
|
53
|
-
/**
|
|
53
|
+
/** Parses and copies an untrusted set of repeat captures, with a limit on the total number of samples. */
|
|
54
54
|
export function parsePrintRegionNoiseInput(v) {
|
|
55
55
|
const r = record(v, ["assessmentId", "ensembleId", "stationarySceneId", "repeatPolicy", "frames"]);
|
|
56
56
|
if (!Array.isArray(r.frames) || r.frames.length < 2 || r.frames.length > 256)
|
|
@@ -90,8 +90,8 @@ function applicability(frame) {
|
|
|
90
90
|
reasons.push("native-representation-raster-mismatch");
|
|
91
91
|
return reasons;
|
|
92
92
|
}
|
|
93
|
-
// Parsed records have
|
|
94
|
-
//
|
|
93
|
+
// Parsed records have a fixed field order. The comparison requires every geometry, region and
|
|
94
|
+
// print condition to match, but lets acquisition and processing identities differ.
|
|
95
95
|
function registrationKey(frame) {
|
|
96
96
|
return JSON.stringify({ geometry: frame.print.source.kind === "native-retained" ? frame.print.source.geometry : null,
|
|
97
97
|
print: { ...frame.print, source: null }, raster: frame.source.raster, region: frame.region });
|
|
@@ -136,7 +136,7 @@ function finiteMean(values) {
|
|
|
136
136
|
const mean = subnormalTerms ? normalized.value * scale : raw.value;
|
|
137
137
|
return Number.isFinite(mean) ? mean : null;
|
|
138
138
|
}
|
|
139
|
-
/**
|
|
139
|
+
/** Measures how processing changed aligned samples. The residual is not automatically compression or noise. */
|
|
140
140
|
export function calculatePrintRegionDifference(value) {
|
|
141
141
|
const input = parsePrintRegionDifferenceInput(value), { before, after } = input;
|
|
142
142
|
const result = base(input.assessmentId, input, after);
|
|
@@ -214,7 +214,7 @@ export function calculatePrintRegionDifference(value) {
|
|
|
214
214
|
result.measurement = measurement;
|
|
215
215
|
return finish(result);
|
|
216
216
|
}
|
|
217
|
-
/**
|
|
217
|
+
/** Measures the sample variance over time at each site (n-1 denominator), separately from spatial scene texture. */
|
|
218
218
|
export function calculatePrintRegionNoise(value) {
|
|
219
219
|
const input = parsePrintRegionNoiseInput(value), first = input.frames[0];
|
|
220
220
|
const result = base(input.assessmentId, input, first);
|
|
@@ -263,8 +263,8 @@ export function calculatePrintRegionNoise(value) {
|
|
|
263
263
|
offsets.push(offset);
|
|
264
264
|
meanSum.add(offset / frameCount);
|
|
265
265
|
}
|
|
266
|
-
//
|
|
267
|
-
// variance when the
|
|
266
|
+
// Centre the values while still offset. Otherwise rounding a large restored mean (DC level)
|
|
267
|
+
// could inflate the variance when the true mean falls between two adjacent doubles.
|
|
268
268
|
const meanOffset = meanSum.value, mean = subnormalMeanTerms ? normalizedMeanSum.value * scale : rawMeanSum.value;
|
|
269
269
|
let norm = 0;
|
|
270
270
|
for (const offset of offsets)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-region-statistics.js","sourceRoot":"","sources":["../../src/output/print-region-statistics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"print-region-statistics.js","sourceRoot":"","sources":["../../src/output/print-region-statistics.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/** Statistics on a region of linear image data: how processing changed it, and how it varies across repeated captures.\n * @see docs/PRINT_REGION_STATISTICS.md for the model, protocol and exclusions.\n */\nimport { calculatedResult, type CalculationResult } from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { freezeOwnedData } from \"../core/owned-data.js\";\nimport { requireAllowlistedRecord, requirePublicOpaqueId } from \"../core/record-validation.js\";\nimport { ENGINE_API_VERSION } from \"../core/version.js\";\nimport { parsePrintDetailSource, parsePrintDetailRegion, MAX_PRINT_DETAIL_REGION_SAMPLES,\n type PrintDetailSource, type PrintDetailRegion } from \"./print-detail.js\";\nimport { resolveCaptureGeometry } from \"./capture-geometry.js\";\nimport { calculatePrintPlan, parsePrintPlanInput, type PrintPlan, type PrintPlanInput } from \"./print-plan.js\";\n\n/** Version of this protocol. Independent of the package version and of the print-detail protocol. */\nexport const PRINT_REGION_STATISTICS_MODEL_VERSION = \"0.1.0\" as const;\n/** Maximum number of single-channel samples across all frames and references in one request. */\nexport const MAX_PRINT_REGION_STATISTICS_SAMPLES = MAX_PRINT_DETAIL_REGION_SAMPLES;\n\n/** An exact, unwarped, single-channel linear region of interest (ROI). Checking the samples and their hash is up to the caller. */\nexport interface PrintRegionRaster {\n print: PrintPlanInput;\n source: PrintDetailSource;\n region: PrintDetailRegion;\n samples: readonly number[];\n}\n\n/** Compares the same sample sites before and after processing, from the same noise draw.\n * A known range is a declared reference signal range, never a clipping threshold.\n */\nexport interface PrintRegionDifferenceInput {\n assessmentId: string;\n before: PrintRegionRaster;\n after: PrintRegionRaster;\n purpose: \"processing-change\" | \"decoded-file-change\";\n realizationPolicy: \"same-noise-realization\" | \"deterministic-reference\";\n referenceRange: { lowerRelativeLuminance: number; upperRelativeLuminance: number } | null;\n}\n\n/** Statistics at aligned sites across separately acquired repeat captures.\n * Stationarity and independence are declared by the caller. A single frame is never treated as a noise sample set.\n */\nexport interface PrintRegionNoiseInput {\n assessmentId: string;\n ensembleId: string;\n stationarySceneId: string;\n repeatPolicy: \"independent-stationary-captures\";\n frames: readonly PrintRegionRaster[];\n}\n\nexport interface PrintRegionDifferenceMeasurement {\n meanSignedDifferenceRelativeLuminance: number;\n rmsDifferenceRelativeLuminance: number;\n maximumAbsoluteDifferenceRelativeLuminance: number;\n /** Null unless the caller supplied a reference range. It does not classify halos. */\n rangeExcursions: {\n beforeBelowRangeCount: number;\n beforeAboveRangeCount: number;\n afterBelowRangeCount: number;\n afterAboveRangeCount: number;\n beforeMaximumUndershootRelativeLuminance: number;\n beforeMaximumOvershootRelativeLuminance: number;\n afterMaximumUndershootRelativeLuminance: number;\n afterMaximumOvershootRelativeLuminance: number;\n } | null;\n}\n\nexport interface PrintRegionNoiseMeasurement {\n frameCount: number;\n siteCount: number;\n meanRelativeLuminance: number;\n /** Mean of per-site sample variances with n-1 denominator, in squared linear units. */\n meanTemporalSampleVarianceRelativeLuminanceSquared: number;\n temporalRmsRelativeLuminance: number;\n /** Kept separate so scene texture and fixed-pattern variation are not mislabelled as temporal noise. */\n perSiteMeansRelativeLuminance: readonly number[];\n perSiteSampleVariancesRelativeLuminanceSquared: readonly number[];\n}\n\n/** The measurements are diagnostics only. They are not a physical noise calibration or a print verdict. */\nexport interface PrintRegionStatisticsAssessment<TInput, TMeasurement> {\n assessmentId: string;\n engineApiVersion: string;\n modelVersion: typeof PRINT_REGION_STATISTICS_MODEL_VERSION;\n input: TInput;\n status: \"diagnostic-only\" | \"blocked\" | \"unsupported\";\n blockers: string[];\n print: PrintPlan;\n measurement: TMeasurement | null;\n sourceArtifactVerification: \"caller-declared-unverified\";\n acquisitionQualification: \"unassessed\";\n uncertainty: \"not-quantified\";\n overallPrintVerdict: \"not-offered\";\n}\n\nfunction record(v: unknown, keys: readonly string[]): Record<string, unknown> {\n return requireAllowlistedRecord(v, keys, \"Invalid or unknown Print region statistics fields.\");\n}\nfunction id(v: unknown): string { return requirePublicOpaqueId(v, \"Invalid public Print region statistics identity.\"); }\nfunction finite(v: unknown): number {\n if (typeof v !== \"number\" || !Number.isFinite(v)) throw new InvalidConfigurationError(\"Print region statistics require finite numbers.\");\n return v;\n}\nfunction choice<T extends string>(v: unknown, options: readonly T[]): T {\n if (typeof v !== \"string\" || !options.includes(v as T)) throw new InvalidConfigurationError(\"Unknown Print region statistics enum.\");\n return v as T;\n}\nfunction parseRaster(v: unknown): PrintRegionRaster {\n const r = record(v, [\"print\", \"source\", \"region\", \"samples\"]), source = parsePrintDetailSource(r.source);\n const { region, samples } = parsePrintDetailRegion(r.region, source, r.samples);\n return { print: parsePrintPlanInput(r.print), source, region, samples };\n}\n\n/** Parses and copies an untrusted request that pairs two single-channel ROIs. */\nexport function parsePrintRegionDifferenceInput(v: unknown): PrintRegionDifferenceInput {\n const r = record(v, [\"assessmentId\", \"before\", \"after\", \"purpose\", \"realizationPolicy\", \"referenceRange\"]);\n const before = parseRaster(r.before), after = parseRaster(r.after);\n if (before.samples.length + after.samples.length > MAX_PRINT_REGION_STATISTICS_SAMPLES) throw new InvalidConfigurationError(\"Print paired ROI sample budget exceeded.\");\n let referenceRange: PrintRegionDifferenceInput[\"referenceRange\"] = null;\n if (r.referenceRange !== null) {\n const range = record(r.referenceRange, [\"lowerRelativeLuminance\", \"upperRelativeLuminance\"]);\n referenceRange = { lowerRelativeLuminance: finite(range.lowerRelativeLuminance), upperRelativeLuminance: finite(range.upperRelativeLuminance) };\n if (referenceRange.lowerRelativeLuminance >= referenceRange.upperRelativeLuminance) throw new InvalidConfigurationError(\"Reference range must be strictly increasing.\");\n }\n return { assessmentId: id(r.assessmentId), before, after, referenceRange,\n purpose: choice(r.purpose, [\"processing-change\", \"decoded-file-change\"]),\n realizationPolicy: choice(r.realizationPolicy, [\"same-noise-realization\", \"deterministic-reference\"]) };\n}\n\n/** Parses and copies an untrusted set of repeat captures, with a limit on the total number of samples. */\nexport function parsePrintRegionNoiseInput(v: unknown): PrintRegionNoiseInput {\n const r = record(v, [\"assessmentId\", \"ensembleId\", \"stationarySceneId\", \"repeatPolicy\", \"frames\"]);\n if (!Array.isArray(r.frames) || r.frames.length < 2 || r.frames.length > 256) throw new InvalidConfigurationError(\"Print noise statistics require 2 to 256 repeat frames.\");\n const frames: PrintRegionRaster[] = [];\n let count = 0;\n for (let i = 0; i < r.frames.length; i++) {\n if (!Object.hasOwn(r.frames, i)) throw new InvalidConfigurationError(\"Sparse Print noise ensembles are unsupported.\");\n const frame = parseRaster(r.frames[i]);\n count += frame.samples.length;\n if (count > MAX_PRINT_REGION_STATISTICS_SAMPLES) throw new InvalidConfigurationError(\"Print noise ensemble sample budget exceeded.\");\n frames.push(frame);\n }\n return { assessmentId: id(r.assessmentId), ensembleId: id(r.ensembleId), stationarySceneId: id(r.stationarySceneId),\n repeatPolicy: choice(r.repeatPolicy, [\"independent-stationary-captures\"]), frames };\n}\n\nfunction applicability(frame: PrintRegionRaster): string[] {\n const reasons: string[] = [], p = calculatePrintPlan(frame.print).value;\n if (frame.source.domain !== \"relative-linear-luminance\") reasons.push(\"linear-luminance-domain-required\");\n if (frame.source.registration !== \"oriented-retained-unwarped\") reasons.push(\"correction-warp-registration-unqualified\");\n if (frame.print.source.kind !== \"native-retained\") return [...reasons, \"missing-authoritative-native-geometry\"];\n if (frame.source.captureId !== frame.print.source.captureId) reasons.push(\"capture-identity-mismatch\");\n if (p.status === \"unsupported\" || p.status === \"crop-confirmation-required\") reasons.push(\"print-geometry-unavailable\");\n const geometry = resolveCaptureGeometry(frame.print.source.geometry).value, crop = geometry.output.cropRect, raster = frame.source.raster;\n if (raster.pixelWidth > crop.width || raster.pixelHeight > crop.height) reasons.push(\"represented-native-upscale-unsupported\");\n if (BigInt(raster.pixelWidth) * BigInt(crop.height) !== BigInt(raster.pixelHeight) * BigInt(crop.width)) reasons.push(\"represented-retained-aspect-mismatch\");\n if (frame.source.stage === \"native-retained-linear\" && (raster.pixelWidth !== crop.width || raster.pixelHeight !== crop.height)) reasons.push(\"native-representation-raster-mismatch\");\n return reasons;\n}\n// Parsed records have a fixed field order. The comparison requires every geometry, region and\n// print condition to match, but lets acquisition and processing identities differ.\nfunction registrationKey(frame: PrintRegionRaster): string {\n return JSON.stringify({ geometry: frame.print.source.kind === \"native-retained\" ? frame.print.source.geometry : null,\n print: { ...frame.print, source: null }, raster: frame.source.raster, region: frame.region });\n}\nfunction base<I, M>(assessmentId: string, input: I, frame: PrintRegionRaster): PrintRegionStatisticsAssessment<I, M> {\n return { assessmentId, engineApiVersion: ENGINE_API_VERSION, modelVersion: PRINT_REGION_STATISTICS_MODEL_VERSION,\n input, status: \"blocked\", blockers: [], print: calculatePrintPlan(frame.print).value, measurement: null,\n sourceArtifactVerification: \"caller-declared-unverified\", acquisitionQualification: \"unassessed\",\n uncertainty: \"not-quantified\", overallPrintVerdict: \"not-offered\" };\n}\nfunction finish<I, M>(result: PrintRegionStatisticsAssessment<I, M>): CalculationResult<PrintRegionStatisticsAssessment<I, M>> {\n return freezeOwnedData(calculatedResult(result, \"regional-linear-print-statistics\", PRINT_REGION_STATISTICS_MODEL_VERSION,\n [\"Scalar linear samples, exact source identities and registration are caller declarations.\",\n \"Repeat stationarity/independence and deterministic or shared realization policies need independent acquisition evidence.\",\n \"No clipping mechanism, artifact visibility, physical sensor noise or overall print pass is inferred.\"]));\n}\nclass Sum {\n private total = 0;\n private correction = 0;\n add(v: number): void {\n const next = this.total + v;\n this.correction += Math.abs(this.total) >= Math.abs(v) ? (this.total - next) + v : (v - next) + this.total;\n this.total = next;\n }\n get value(): number { return this.total + this.correction; }\n}\n\nfunction finiteMean(values: readonly number[]): number | null {\n let scale = 0, subnormalTerms = false;\n const raw = new Sum(), normalized = new Sum();\n for (const v of values) scale = Math.max(scale, Math.abs(v));\n if (scale === 0) return 0;\n for (const v of values) {\n if (v !== 0 && v / scale === 0) return null;\n const term = v / values.length;\n raw.add(term); normalized.add(v / scale / values.length);\n if (v !== 0 && Math.abs(term) < 2 ** -1022) subnormalTerms = true;\n }\n const mean = subnormalTerms ? normalized.value * scale : raw.value;\n return Number.isFinite(mean) ? mean : null;\n}\n\n/** Measures how processing changed aligned samples. The residual is not automatically compression or noise. */\nexport function calculatePrintRegionDifference(value: PrintRegionDifferenceInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionDifferenceInput, PrintRegionDifferenceMeasurement>> {\n const input = parsePrintRegionDifferenceInput(value), { before, after } = input;\n const result = base<PrintRegionDifferenceInput, PrintRegionDifferenceMeasurement>(input.assessmentId, input, after);\n result.blockers.push(...applicability(before), ...applicability(after));\n if (registrationKey(before) !== registrationKey(after)) result.blockers.push(\"paired-site-registration-mismatch\");\n if (before.source.captureId !== after.source.captureId) result.blockers.push(\"paired-capture-identity-mismatch\");\n if (before.source.representationId === after.source.representationId && (before.source.contentSha256 !== after.source.contentSha256 || before.source.stage !== after.source.stage || JSON.stringify(before.source.processing) !== JSON.stringify(after.source.processing))) result.blockers.push(\"representation-identity-conflict\");\n if (input.realizationPolicy === \"same-noise-realization\" && (before.source.noiseRealizationId === null || before.source.noiseRealizationId !== after.source.noiseRealizationId)) result.blockers.push(\"same-noise-realization-required\");\n if (input.realizationPolicy === \"deterministic-reference\" && (before.source.noiseRealizationId !== null || after.source.noiseRealizationId !== null)) result.blockers.push(\"deterministic-reference-has-noise-realization\");\n if (input.purpose === \"decoded-file-change\" && (before.source.stage !== \"post-resampling-linear\" || after.source.stage !== \"post-encoding-decoded-linear\")) result.blockers.push(\"exact-pre-encode-and-decoded-stages-required\");\n if (result.blockers.length) return finish(result);\n let scale = 0;\n for (const samples of [before.samples, after.samples]) for (const v of samples) scale = Math.max(scale, Math.abs(v));\n const sum = new Sum(), rawMeanSum = new Sum(), count = before.samples.length;\n let finiteDifferences = true, subnormalMeanTerms = false;\n let norm = 0, maximum = 0;\n for (let i = 0; i < count; i++) {\n const raw = after.samples[i]! - before.samples[i]!;\n if (Number.isFinite(raw)) {\n rawMeanSum.add(raw / count);\n if (raw !== 0 && Math.abs(raw / count) < 2 ** -1022) subnormalMeanTerms = true;\n } else finiteDifferences = false;\n const d = scale === 0 ? 0 : Number.isFinite(raw) ? raw / scale : after.samples[i]! / scale - before.samples[i]! / scale;\n if (raw !== 0 && d === 0) { result.status = \"unsupported\"; result.blockers.push(\"difference-dynamic-range-unsupported\"); return finish(result); }\n sum.add(d / count); norm = Math.hypot(norm, d); maximum = Math.max(maximum, Math.abs(d));\n }\n const measurement: PrintRegionDifferenceMeasurement = { meanSignedDifferenceRelativeLuminance: finiteDifferences && !subnormalMeanTerms ? rawMeanSum.value : sum.value * scale,\n rmsDifferenceRelativeLuminance: norm / Math.sqrt(count) * scale, maximumAbsoluteDifferenceRelativeLuminance: maximum * scale, rangeExcursions: null };\n if (input.referenceRange) {\n const { lowerRelativeLuminance: lo, upperRelativeLuminance: hi } = input.referenceRange;\n const excursions = (samples: readonly number[]): { below: number; above: number; under: number; over: number } => {\n let below = 0, above = 0, under = 0, over = 0;\n for (const v of samples) { if (v < lo) { below++; under = Math.max(under, lo - v); } if (v > hi) { above++; over = Math.max(over, v - hi); } }\n return { below, above, under, over };\n };\n const b = excursions(before.samples), a = excursions(after.samples);\n measurement.rangeExcursions = { beforeBelowRangeCount: b.below, beforeAboveRangeCount: b.above, afterBelowRangeCount: a.below, afterAboveRangeCount: a.above,\n beforeMaximumUndershootRelativeLuminance: b.under, beforeMaximumOvershootRelativeLuminance: b.over,\n afterMaximumUndershootRelativeLuminance: a.under, afterMaximumOvershootRelativeLuminance: a.over };\n }\n if (![measurement.meanSignedDifferenceRelativeLuminance, measurement.rmsDifferenceRelativeLuminance, measurement.maximumAbsoluteDifferenceRelativeLuminance,\n ...Object.values(measurement.rangeExcursions ?? {})].every(Number.isFinite) || (norm > 0 && measurement.rmsDifferenceRelativeLuminance === 0)) {\n result.status = \"unsupported\"; result.blockers.push(\"difference-numeric-range-unsupported\"); return finish(result);\n }\n result.status = \"diagnostic-only\"; result.measurement = measurement; return finish(result);\n}\n\n/** Measures the sample variance over time at each site (n-1 denominator), separately from spatial scene texture. */\nexport function calculatePrintRegionNoise(value: PrintRegionNoiseInput): CalculationResult<PrintRegionStatisticsAssessment<PrintRegionNoiseInput, PrintRegionNoiseMeasurement>> {\n const input = parsePrintRegionNoiseInput(value), first = input.frames[0]!;\n const result = base<PrintRegionNoiseInput, PrintRegionNoiseMeasurement>(input.assessmentId, input, first);\n const captureIds = new Set<string>(), representations = new Set<string>(), realizations = new Set<string>();\n for (const frame of input.frames) {\n result.blockers.push(...applicability(frame));\n if (registrationKey(frame) !== registrationKey(first) || frame.source.stage !== first.source.stage || JSON.stringify(frame.source.processing) !== JSON.stringify(first.source.processing)) result.blockers.push(\"repeat-acquisition-registration-or-processing-mismatch\");\n if (captureIds.has(frame.source.captureId) || representations.has(frame.source.representationId)) result.blockers.push(\"repeat-acquisition-identity-reused\");\n if (frame.source.noiseRealizationId === null || realizations.has(frame.source.noiseRealizationId)) result.blockers.push(\"distinct-repeat-noise-realizations-required\");\n captureIds.add(frame.source.captureId); representations.add(frame.source.representationId);\n if (frame.source.noiseRealizationId !== null) realizations.add(frame.source.noiseRealizationId);\n }\n if (result.blockers.length) return finish(result);\n const frameCount = input.frames.length, siteCount = first.samples.length, means: number[] = [], variances: number[] = [];\n let pooledRms = 0;\n for (let site = 0; site < siteCount; site++) {\n let scale = 0;\n for (const frame of input.frames) scale = Math.max(scale, Math.abs(frame.samples[site]!));\n const meanSum = new Sum(), rawMeanSum = new Sum(), normalizedMeanSum = new Sum(), anchor = first.samples[site]!, offsets: number[] = [];\n let subnormalMeanTerms = false;\n for (const frame of input.frames) {\n const v = frame.samples[site]!;\n rawMeanSum.add(v / frameCount);\n if (v !== 0 && Math.abs(v / frameCount) < 2 ** -1022) subnormalMeanTerms = true;\n if (v !== 0 && v / scale === 0) { result.status = \"unsupported\"; result.blockers.push(\"noise-dynamic-range-unsupported\"); return finish(result); }\n normalizedMeanSum.add(scale === 0 ? 0 : v / scale / frameCount);\n const raw = v - anchor;\n const offset = scale === 0 ? 0 : Number.isFinite(raw) ? raw / scale : v / scale - anchor / scale;\n if (raw !== 0 && offset === 0) { result.status = \"unsupported\"; result.blockers.push(\"noise-dynamic-range-unsupported\"); return finish(result); }\n offsets.push(offset); meanSum.add(offset / frameCount);\n }\n // Centre the values while still offset. Otherwise rounding a large restored mean (DC level)\n // could inflate the variance when the true mean falls between two adjacent doubles.\n const meanOffset = meanSum.value, mean = subnormalMeanTerms ? normalizedMeanSum.value * scale : rawMeanSum.value;\n let norm = 0;\n for (const offset of offsets) norm = Math.hypot(norm, offset - meanOffset);\n const rms = norm / Math.sqrt(frameCount - 1) * scale, variance = rms * rms;\n if (![mean, rms, variance].every(Number.isFinite) || (norm > 0 && (rms === 0 || variance === 0))) { result.status = \"unsupported\"; result.blockers.push(\"noise-numeric-range-unsupported\"); return finish(result); }\n means.push(mean); variances.push(variance); pooledRms = Math.hypot(pooledRms, rms / Math.sqrt(siteCount));\n }\n const mean = finiteMean(means), variance = finiteMean(variances);\n if (mean === null || variance === null || (pooledRms > 0 && variance === 0)) {\n result.status = \"unsupported\"; result.blockers.push(\"noise-numeric-range-unsupported\"); return finish(result);\n }\n const measurement: PrintRegionNoiseMeasurement = { frameCount, siteCount, meanRelativeLuminance: mean,\n meanTemporalSampleVarianceRelativeLuminanceSquared: variance, temporalRmsRelativeLuminance: pooledRms,\n perSiteMeansRelativeLuminance: means, perSiteSampleVariancesRelativeLuminanceSquared: variances };\n if (![measurement.meanRelativeLuminance, measurement.meanTemporalSampleVarianceRelativeLuminanceSquared, pooledRms].every(Number.isFinite)) { result.status = \"unsupported\"; result.blockers.push(\"noise-numeric-range-unsupported\"); return finish(result); }\n result.status = \"diagnostic-only\"; result.measurement = measurement; return finish(result);\n}\n"]}
|
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
import { type CalculationResult } from "../core/calculation-result.js";
|
|
2
2
|
export declare const SDR_RENDERING_SCHEMA_VERSION: "0.1.0";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Version of the `generic-sdr-rendering-reference` model. 0.2.0 added luminance tone curves and fixed
|
|
5
|
+
* round-to-nearest, ties up (`Math.round`; the old `Math.floor(x+.5)` rounded 0.49999999999999994 up).
|
|
6
|
+
*/
|
|
7
|
+
export declare const SDR_RENDERING_MODEL_VERSION: "0.2.0";
|
|
8
|
+
/**
|
|
9
|
+
* Tone curves. A per-channel curve acts on each exposed component separately. A luminance curve
|
|
10
|
+
* scales all three components of a pixel by f(L)/L, where L is the linear-sRGB/D65 relative
|
|
11
|
+
* luminance, so the colour (chromaticity) is kept before gamut handling.
|
|
12
|
+
* - `identity`: f(x)=x.
|
|
13
|
+
* - `positive-reinhard-per-channel`: f(x)=x/(1+x) for x>0 (Reinhard et al. 2002, eq. 3), per channel.
|
|
14
|
+
* - `extended-reinhard-luminance`: f(L)=L(1+L/Lw²)/(1+L) (Reinhard et al. 2002, eq. 4); L=Lw maps to 1.
|
|
15
|
+
* - `naka-rushton-luminance`: f(L)=g(L)/g(Lw), g(L)=Lⁿ/(Lⁿ+σⁿ) (Naka & Rushton 1966; Reinhard & Devlin
|
|
16
|
+
* 2005): a sigmoid in log luminance with contrast n and mid-response σ, i.e. a film-like S-curve.
|
|
17
|
+
*/
|
|
18
|
+
export type SdrToneCurve = "identity" | "positive-reinhard-per-channel" | "extended-reinhard-luminance" | "naka-rushton-luminance";
|
|
19
|
+
/** Required only by luminance curves; all values are relative linear luminance after rendering exposure. */
|
|
20
|
+
export type SdrToneCurveParameters = {
|
|
21
|
+
whiteLuminance: number;
|
|
22
|
+
} | {
|
|
23
|
+
exponent: number;
|
|
24
|
+
semiSaturation: number;
|
|
25
|
+
whiteLuminance: number;
|
|
26
|
+
};
|
|
27
|
+
/** Rendering choices made by the engine user. They are independent of physical exposure and display calibration. */
|
|
4
28
|
export interface SdrRenderingProfile {
|
|
5
29
|
schemaVersion: typeof SDR_RENDERING_SCHEMA_VERSION;
|
|
6
30
|
profileId: string;
|
|
7
31
|
profileVersion: string;
|
|
8
32
|
renderingExposureEv: number;
|
|
9
|
-
toneCurve:
|
|
33
|
+
toneCurve: SdrToneCurve;
|
|
34
|
+
/** Present exactly for `extended-reinhard-luminance` ({whiteLuminance}) and `naka-rushton-luminance`. */
|
|
35
|
+
toneCurveParameters?: SdrToneCurveParameters;
|
|
10
36
|
gamutHandling: "clip-components" | "reject-out-of-range";
|
|
11
37
|
outputDynamicRange: "sdr";
|
|
12
38
|
transferFunction: "srgb";
|
|
@@ -14,7 +40,7 @@ export interface SdrRenderingProfile {
|
|
|
14
40
|
rounding: "nearest-ties-up";
|
|
15
41
|
dither: "none";
|
|
16
42
|
}
|
|
17
|
-
/** Only
|
|
43
|
+
/** Only linear-sRGB/D65 data that has been explicitly colour-transformed, with all three channels at each pixel, is accepted. */
|
|
18
44
|
export interface SdrRenderingInput {
|
|
19
45
|
sourceImageStateId: string;
|
|
20
46
|
inputImageState: "color-transformed-linear-rgb";
|
|
@@ -27,9 +53,16 @@ export interface SdrRenderingInput {
|
|
|
27
53
|
samples: readonly number[];
|
|
28
54
|
profile: SdrRenderingProfile;
|
|
29
55
|
}
|
|
30
|
-
/**
|
|
56
|
+
/** Writes the three tone-mapped samples of one exposed pixel. Exposed values are finite. */
|
|
57
|
+
export type SdrPixelTone = (red: number, green: number, blue: number, out: Float64Array | number[]) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Internal shared tone operator. The reference renderer, the native SDR kernel and RAW development all
|
|
60
|
+
* call this one function, so every path uses the same per-pixel operation order. Not exported from the package.
|
|
61
|
+
*/
|
|
62
|
+
export declare function prepareSdrPixelTone(profile: Pick<SdrRenderingProfile, "toneCurve" | "toneCurveParameters">): SdrPixelTone;
|
|
63
|
+
/** Validates a rendering and encoding profile. Unknown HDR or display modes are rejected. */
|
|
31
64
|
export declare function parseSdrRenderingProfile(value: unknown): SdrRenderingProfile;
|
|
32
|
-
/** Validates declared image state and a bounded finite inline
|
|
65
|
+
/** Validates the declared image state and a bounded, finite, inline image. It never applies white balance or colour conversion. */
|
|
33
66
|
export declare function parseSdrRenderingInput(value: unknown): SdrRenderingInput;
|
|
34
67
|
export interface SdrRenderingResult {
|
|
35
68
|
schemaVersion: typeof SDR_RENDERING_SCHEMA_VERSION;
|
|
@@ -63,10 +96,15 @@ export interface SdrRenderingResult {
|
|
|
63
96
|
toneChangedSampleCount: number;
|
|
64
97
|
gamutClippedLowSampleCount: number;
|
|
65
98
|
gamutClippedHighSampleCount: number;
|
|
66
|
-
/**
|
|
67
|
-
|
|
99
|
+
/**
|
|
100
|
+
* `not-consumed`: no upstream saturation data (full well, ADC or RAW) is available, and it is never
|
|
101
|
+
* guessed from the output.
|
|
102
|
+
* `consumed-in-raw-development`: RAW development already clipped or reconstructed flagged and
|
|
103
|
+
* white-level samples before white balance (see its highlight diagnostics).
|
|
104
|
+
*/
|
|
105
|
+
captureSaturation: "not-consumed" | "consumed-in-raw-development";
|
|
68
106
|
};
|
|
69
|
-
/**
|
|
107
|
+
/** Describes the encoded output for the platform's colour management. No real display is assessed. */
|
|
70
108
|
displayAdaptation: {
|
|
71
109
|
kind: "external-platform";
|
|
72
110
|
applied: false;
|
|
@@ -75,7 +113,7 @@ export interface SdrRenderingResult {
|
|
|
75
113
|
}
|
|
76
114
|
/**
|
|
77
115
|
* Standalone SDR rendering: rendering exposure → tone → gamut → sRGB transfer → quantization.
|
|
78
|
-
* No physical capture, metering,
|
|
116
|
+
* No physical capture, metering, white balance, colour conversion, lens correction or display
|
|
117
|
+
* adaptation runs.
|
|
79
118
|
*/
|
|
80
119
|
export declare function calculateSdrRendering(input: SdrRenderingInput): CalculationResult<SdrRenderingResult>;
|
|
81
|
-
//# sourceMappingURL=sdr-rendering.d.ts.map
|