@photivra/engine 1.5.0 → 2.1.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 +414 -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/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -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 +363 -0
- package/dist/facade/simulate-capture.js +1281 -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 +91 -25
- package/dist/index.js +60 -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-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- 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 +777 -2
- package/docs/QUICK_START.md +663 -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 +2253 -3
- 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 +397 -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-psf-profile.md +96 -0
- 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 -11
- 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":"iso-signal-chain.js","sourceRoot":"","sources":["../../src/sensor/iso-signal-chain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iso-signal-chain.js","sourceRoot":"","sources":["../../src/sensor/iso-signal-chain.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * ISO signal chain: picks the explicit readout regime (gain, read noise, clipping) that belongs to the\n * selected ISO and capture mode.\n *\n * Gain and noise are never derived from the ISO number itself; each regime is declared. Photons and\n * photo or dark shot noise are computed earlier in the chain. Generic tier labels do not calibrate or\n * rank real cameras.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport {\n parseIsoCapabilityProfile,\n resolveIsoCapability,\n type IsoCapabilityProfile,\n type RequestedIsoSetting,\n type ResolvedIsoCapability\n} from \"../equipment/iso-capabilities.js\";\nimport {\n parseSensorReadoutConversionProfile,\n resolveSensorReadoutRegime,\n type ResolvedSensorReadoutRegime,\n type SensorReadoutConversionProfile\n} from \"./raw-readout.js\";\nimport { requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\nexport const GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport interface GenericIsoStandardRegimeBand {\n minimumExposureIndex: number;\n maximumExposureIndex: number;\n readoutRegimeId: string;\n}\n\nexport interface GenericIsoExpandedRegimeBinding {\n expandedSettingId: string;\n readoutRegimeId: string;\n}\n\nexport interface GenericIsoCaptureModeSignalChainBinding {\n captureModeId: string;\n standardRegimeBands:\n readonly GenericIsoStandardRegimeBand[];\n expandedRegimeBindings:\n readonly GenericIsoExpandedRegimeBinding[];\n evidence:\n readonly EvidenceProvenance[];\n}\n\nexport interface GenericIsoSignalChainProfile {\n schemaVersion:\n typeof GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n scientificStatus: \"approximation\";\n isoCapabilityProfileId: string;\n readoutProfileId: string;\n behaviorMeaning:\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\";\n captureModeBindings:\n readonly GenericIsoCaptureModeSignalChainBinding[];\n photonShotNoiseOwnedUpstream:\n true;\n processedImageBehaviorIncluded:\n false;\n fixedPatternNoiseModeled:\n false;\n lowSignalColorDegradationModeled:\n false;\n evidence:\n readonly EvidenceProvenance[];\n limitations: readonly string[];\n}\n\nexport interface ResolveGenericIsoSignalChainInput {\n profile:\n GenericIsoSignalChainProfile;\n isoCapability:\n IsoCapabilityProfile;\n requestedIsoSetting:\n RequestedIsoSetting;\n captureModeId: string;\n readoutProfile:\n SensorReadoutConversionProfile;\n}\n\nexport interface ResolvedGenericIsoSignalChain {\n profileId: string;\n profileVersion: string;\n scientificStatus:\n \"approximation\";\n captureModeId: string;\n iso:\n ResolvedIsoCapability;\n readout:\n ResolvedSensorReadoutRegime;\n regimeSelectionReason:\n | \"standard-exposure-index-band\"\n | \"expanded-setting-binding\";\n capturedPhotonExpectationModified:\n false;\n photonShotNoiseStatisticsModified:\n false;\n sensorGeometryModified: false;\n processedImageBehaviorApplied:\n false;\n fixedPatternNoiseApplied:\n false;\n lowSignalColorDegradationApplied:\n false;\n isoUsedAsDirectNoiseEquation:\n false;\n exactCommercialCameraBehaviorClaimed:\n false;\n}\n\nexport type GenericIsoSignalChainPreset =\n | \"good\"\n | \"better\"\n | \"best\";\n\nexport interface GenericIsoSignalChainPresetCatalog {\n schemaVersion:\n typeof GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION;\n catalogId: string;\n catalogVersion: string;\n entries: readonly {\n preset:\n GenericIsoSignalChainPreset;\n signalChainProfileId:\n string;\n evidence:\n readonly EvidenceProvenance[];\n }[];\n performanceOrderingClaimed:\n false;\n realCameraRankingClaimed:\n false;\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction parseLimitations(\n value: unknown,\n path: string\n): readonly string[] {\n if (!Array.isArray(value)) {\n throw new InvalidConfigurationError(\n path + \" must be an array.\"\n );\n }\n const parsed =\n value.map((entry, index) =>\n requireNonEmptyString(\n entry,\n path +\n \"[\" +\n index +\n \"]\"\n )\n );\n if (\n new Set(parsed).size !==\n parsed.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must not contain duplicates.\"\n );\n }\n return parsed;\n}\n\nfunction parseStandardBand(\n value: unknown,\n path: string\n): GenericIsoStandardRegimeBand {\n const record =\n requireRecord(value, path, [\"minimumExposureIndex\", \"maximumExposureIndex\", \"readoutRegimeId\"]);\n const minimumExposureIndex =\n requirePositiveFinite(\n record.minimumExposureIndex,\n path +\n \".minimumExposureIndex\"\n );\n const maximumExposureIndex =\n requirePositiveFinite(\n record.maximumExposureIndex,\n path +\n \".maximumExposureIndex\"\n );\n if (\n minimumExposureIndex >\n maximumExposureIndex\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumExposureIndex must be less than or equal to maximumExposureIndex.\"\n );\n }\n return {\n minimumExposureIndex,\n maximumExposureIndex,\n readoutRegimeId:\n requireNonEmptyString(\n record.readoutRegimeId,\n path +\n \".readoutRegimeId\"\n )\n };\n}\n\nfunction parseCaptureModeBinding(\n value: unknown,\n path: string\n): GenericIsoCaptureModeSignalChainBinding {\n const record =\n requireRecord(value, path, [\"standardRegimeBands\", \"expandedRegimeBindings\", \"captureModeId\", \"evidence\"]);\n if (\n !Array.isArray(\n record.standardRegimeBands\n ) ||\n record.standardRegimeBands\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardRegimeBands must be a non-empty array.\"\n );\n }\n const bands =\n record.standardRegimeBands.map(\n (entry, index) =>\n parseStandardBand(\n entry,\n path +\n \".standardRegimeBands[\" +\n index +\n \"]\"\n )\n ).sort(\n (a, b) =>\n a.minimumExposureIndex -\n b.minimumExposureIndex\n );\n for (\n let index = 1;\n index < bands.length;\n index += 1\n ) {\n const prior =\n bands[index - 1]!;\n const current =\n bands[index]!;\n if (\n current.minimumExposureIndex <=\n prior.maximumExposureIndex\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardRegimeBands must not overlap.\"\n );\n }\n }\n\n if (\n !Array.isArray(\n record.expandedRegimeBindings\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedRegimeBindings must be an array.\"\n );\n }\n const expandedRegimeBindings =\n record.expandedRegimeBindings.map(\n (entry, index) => {\n const entryPath =\n path +\n \".expandedRegimeBindings[\" +\n index +\n \"]\";\n const binding =\n requireRecord(\n entry,\n entryPath, [\"expandedSettingId\", \"readoutRegimeId\"]\n );\n return {\n expandedSettingId:\n requireNonEmptyString(\n binding.expandedSettingId,\n entryPath +\n \".expandedSettingId\"\n ),\n readoutRegimeId:\n requireNonEmptyString(\n binding.readoutRegimeId,\n entryPath +\n \".readoutRegimeId\"\n )\n };\n }\n );\n const expandedIds =\n expandedRegimeBindings.map(\n (entry) =>\n entry.expandedSettingId\n );\n if (\n new Set(expandedIds).size !==\n expandedIds.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedRegimeBindings must not contain duplicate expandedSettingId values.\"\n );\n }\n\n return {\n captureModeId:\n requireNonEmptyString(\n record.captureModeId,\n path + \".captureModeId\"\n ),\n standardRegimeBands:\n bands,\n expandedRegimeBindings,\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile binds each ISO and capture-mode state to an explicit readout regime, whose gain,\n * read noise and clipping are declared separately.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseGenericIsoSignalChainProfile(\n value: unknown\n): GenericIsoSignalChainProfile {\n const record =\n requireRecord(\n value,\n \"genericIsoSignalChainProfile\", [\"schemaVersion\", \"scientificStatus\", \"behaviorMeaning\", \"photonShotNoiseOwnedUpstream\", \"processedImageBehaviorIncluded\", \"fixedPatternNoiseModeled\", \"lowSignalColorDegradationModeled\", \"captureModeBindings\", \"profileId\", \"profileVersion\", \"isoCapabilityProfileId\", \"readoutProfileId\", \"evidence\", \"limitations\"]\n );\n if (\n record.schemaVersion !==\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainProfile.schemaVersion must be \"' +\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainProfile.scientificStatus must be \"approximation\".'\n );\n }\n if (\n record.behaviorMeaning !==\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\"\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.behaviorMeaning is invalid.\"\n );\n }\n if (\n record.photonShotNoiseOwnedUpstream !==\n true ||\n record.processedImageBehaviorIncluded !==\n false ||\n record.fixedPatternNoiseModeled !==\n false ||\n record.lowSignalColorDegradationModeled !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile domain-ownership flags are invalid.\"\n );\n }\n if (\n !Array.isArray(\n record.captureModeBindings\n ) ||\n record.captureModeBindings\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.captureModeBindings must be a non-empty array.\"\n );\n }\n const captureModeBindings =\n record.captureModeBindings.map(\n (entry, index) =>\n parseCaptureModeBinding(\n entry,\n \"genericIsoSignalChainProfile.captureModeBindings[\" +\n index +\n \"]\"\n )\n );\n const modeIds =\n captureModeBindings.map(\n (entry) =>\n entry.captureModeId\n );\n if (\n new Set(modeIds).size !==\n modeIds.length\n ) {\n throw new InvalidConfigurationError(\n \"genericIsoSignalChainProfile.captureModeBindings must not contain duplicate captureModeId values.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"genericIsoSignalChainProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"genericIsoSignalChainProfile.profileVersion\"\n ),\n scientificStatus:\n \"approximation\",\n isoCapabilityProfileId:\n requireNonEmptyString(\n record.isoCapabilityProfileId,\n \"genericIsoSignalChainProfile.isoCapabilityProfileId\"\n ),\n readoutProfileId:\n requireNonEmptyString(\n record.readoutProfileId,\n \"genericIsoSignalChainProfile.readoutProfileId\"\n ),\n behaviorMeaning:\n \"iso-state-selects-explicit-readout-regime-not-noise-equation\",\n captureModeBindings,\n photonShotNoiseOwnedUpstream:\n true,\n processedImageBehaviorIncluded:\n false,\n fixedPatternNoiseModeled:\n false,\n lowSignalColorDegradationModeled:\n false,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"genericIsoSignalChainProfile.evidence\"\n ),\n limitations:\n parseLimitations(\n record.limitations,\n \"genericIsoSignalChainProfile.limitations\"\n )\n };\n}\n\nfunction regimeIdForIso(\n binding:\n GenericIsoCaptureModeSignalChainBinding,\n iso:\n ResolvedIsoCapability\n): {\n regimeId: string;\n reason:\n ResolvedGenericIsoSignalChain[\"regimeSelectionReason\"];\n} {\n if (\n iso.setting.kind ===\n \"expanded\"\n ) {\n const expandedSettingId =\n iso.setting.settingId;\n const expanded =\n binding\n .expandedRegimeBindings\n .find(\n (entry) =>\n entry\n .expandedSettingId ===\n expandedSettingId\n );\n if (expanded === undefined) {\n throw new InvalidScientificInputError(\n \"Expanded ISO setting has no signal-chain regime binding for the selected capture mode.\"\n );\n }\n return {\n regimeId:\n expanded\n .readoutRegimeId,\n reason:\n \"expanded-setting-binding\"\n };\n }\n\n const matches =\n binding\n .standardRegimeBands\n .filter(\n (band) =>\n iso\n .reportedExposureIndex >=\n band\n .minimumExposureIndex &&\n iso\n .reportedExposureIndex <=\n band\n .maximumExposureIndex\n );\n if (matches.length !== 1) {\n throw new InvalidScientificInputError(\n \"Standard ISO setting must match exactly one signal-chain regime band.\"\n );\n }\n return {\n regimeId:\n matches[0]!\n .readoutRegimeId,\n reason:\n \"standard-exposure-index-band\"\n };\n}\n\n/**\n * Picks the explicit readout regime bound to the resolved ISO and capture-mode state. Gain and noise\n * are never derived from the ISO number.\n * @param input - The input; see `ResolveGenericIsoSignalChainInput` for its fields, units and coordinates.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function resolveGenericIsoSignalChain(\n input:\n ResolveGenericIsoSignalChainInput\n): ResolvedGenericIsoSignalChain {\n requireInputKeys(input, \"resolveGenericIsoSignalChain\", [\"profile\", \"isoCapability\", \"requestedIsoSetting\", \"captureModeId\", \"readoutProfile\"]);\n const profile =\n parseGenericIsoSignalChainProfile(\n input.profile\n );\n const isoCapability =\n parseIsoCapabilityProfile(\n input.isoCapability\n );\n const readoutProfile =\n parseSensorReadoutConversionProfile(\n input.readoutProfile\n );\n\n if (\n profile.isoCapabilityProfileId !==\n isoCapability.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile isoCapabilityProfileId must match the supplied ISO capability profile.\"\n );\n }\n if (\n profile.readoutProfileId !==\n readoutProfile.profileId\n ) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile readoutProfileId must match the supplied sensor readout profile.\"\n );\n }\n if (\n typeof input.captureModeId !==\n \"string\" ||\n input.captureModeId.trim()\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"captureModeId must be a non-empty string.\"\n );\n }\n\n const binding =\n profile.captureModeBindings.find(\n (entry) =>\n entry.captureModeId ===\n input.captureModeId\n );\n if (binding === undefined) {\n throw new InvalidScientificInputError(\n \"Signal-chain profile has no binding for the selected capture mode.\"\n );\n }\n\n const iso =\n resolveIsoCapability({\n profile:\n isoCapability,\n setting:\n input\n .requestedIsoSetting,\n captureModeId:\n input.captureModeId\n });\n const regime =\n regimeIdForIso(\n binding,\n iso\n );\n const readout =\n resolveSensorReadoutRegime({\n profile:\n readoutProfile,\n regimeId:\n regime.regimeId\n });\n const gain =\n readout.regime\n .exposureIndexGain;\n if (\n gain !== undefined &&\n gain.exposureIndex !==\n iso.reportedExposureIndex\n ) {\n throw new InvalidScientificInputError(\n \"The bound readout regime declares an ISO-gain derivation for a different exposure index.\"\n );\n }\n\n return {\n profileId:\n profile.profileId,\n profileVersion:\n profile.profileVersion,\n scientificStatus:\n \"approximation\",\n captureModeId:\n input.captureModeId,\n iso,\n readout,\n regimeSelectionReason:\n regime.reason,\n capturedPhotonExpectationModified:\n false,\n photonShotNoiseStatisticsModified:\n false,\n sensorGeometryModified:\n false,\n processedImageBehaviorApplied:\n false,\n fixedPatternNoiseApplied:\n false,\n lowSignalColorDegradationApplied:\n false,\n isoUsedAsDirectNoiseEquation:\n false,\n exactCommercialCameraBehaviorClaimed:\n false\n };\n}\n\nconst PRESETS =\n new Set<GenericIsoSignalChainPreset>([\n \"good\",\n \"better\",\n \"best\"\n ]);\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * Generic tier labels in the catalogue do not calibrate or rank real cameras.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseGenericIsoSignalChainPresetCatalog(\n value: unknown\n): GenericIsoSignalChainPresetCatalog {\n const record =\n requireRecord(\n value,\n \"genericIsoSignalChainPresetCatalog\", [\"schemaVersion\", \"performanceOrderingClaimed\", \"realCameraRankingClaimed\", \"entries\", \"catalogId\", \"catalogVersion\"]\n );\n if (\n record.schemaVersion !==\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericIsoSignalChainPresetCatalog.schemaVersion must be \"' +\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.performanceOrderingClaimed !==\n false ||\n record.realCameraRankingClaimed !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must not claim physical performance ordering or real-camera ranking.\"\n );\n }\n if (\n !Array.isArray(\n record.entries\n ) ||\n record.entries.length !== 3\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must contain exactly Good, Better, and Best entries.\"\n );\n }\n\n const entries =\n record.entries.map(\n (entry, index) => {\n const path =\n \"genericIsoSignalChainPresetCatalog.entries[\" +\n index +\n \"]\";\n const parsed =\n requireRecord(\n entry,\n path, [\"preset\", \"signalChainProfileId\", \"evidence\"]\n );\n if (\n typeof parsed.preset !==\n \"string\" ||\n !PRESETS.has(\n parsed.preset as\n GenericIsoSignalChainPreset\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".preset is invalid.\"\n );\n }\n return {\n preset:\n parsed.preset as\n GenericIsoSignalChainPreset,\n signalChainProfileId:\n requireNonEmptyString(\n parsed\n .signalChainProfileId,\n path +\n \".signalChainProfileId\"\n ),\n evidence:\n parseEvidenceList(\n parsed.evidence,\n path + \".evidence\"\n )\n };\n }\n );\n\n const presets =\n entries.map(\n (entry) =>\n entry.preset\n );\n if (\n new Set(presets).size !==\n 3\n ) {\n throw new InvalidConfigurationError(\n \"Generic ISO preset catalog must contain each Good, Better, and Best preset exactly once.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION,\n catalogId:\n requireNonEmptyString(\n record.catalogId,\n \"genericIsoSignalChainPresetCatalog.catalogId\"\n ),\n catalogVersion:\n requireNonEmptyString(\n record.catalogVersion,\n \"genericIsoSignalChainPresetCatalog.catalogVersion\"\n ),\n entries,\n performanceOrderingClaimed:\n false,\n realCameraRankingClaimed:\n false\n };\n}\n\n/**\n * Picks a generic preset from the catalogue and returns the signal-chain profile it uses. It makes\n * no claim of manufacturer calibration.\n *\n * Generic tier labels do not calibrate or rank real cameras.\n * @param input - The preset catalogue and the chosen preset.\n * @returns The preset and its signal-chain profile ID. `performanceOrderingClaimed` and\n * `realCameraRankingClaimed` are always false. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function resolveGenericIsoSignalChainPreset(\n input: {\n catalog:\n GenericIsoSignalChainPresetCatalog;\n preset:\n GenericIsoSignalChainPreset;\n }\n): {\n preset:\n GenericIsoSignalChainPreset;\n signalChainProfileId:\n string;\n performanceOrderingClaimed:\n false;\n realCameraRankingClaimed:\n false;\n} {\n requireInputKeys(input, \"resolveGenericIsoSignalChainPreset\", [\"catalog\", \"preset\"]);\n const catalog =\n parseGenericIsoSignalChainPresetCatalog(\n input.catalog\n );\n if (\n !PRESETS.has(\n input.preset\n )\n ) {\n throw new InvalidConfigurationError(\n \"preset must be good, better, or best.\"\n );\n }\n const entry =\n catalog.entries.find(\n (candidate) =>\n candidate.preset ===\n input.preset\n )!;\n\n return {\n preset:\n input.preset,\n signalChainProfileId:\n entry\n .signalChainProfileId,\n performanceOrderingClaimed:\n false,\n realCameraRankingClaimed:\n false\n };\n}\n"]}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* shutter timing
|
|
8
|
-
*
|
|
9
|
-
*
|
|
2
|
+
* Links one sensor response-rate result (made by the engine) to the local exposure window of the
|
|
3
|
+
* same colour-sampling site.
|
|
4
|
+
*
|
|
5
|
+
* Only a one-to-one link between native image samples and colour sites is supported. A block
|
|
6
|
+
* binding (several sites per sample) shows which sites contribute, but not where each one sits
|
|
7
|
+
* within the sample in time. So shutter timing that varies across the sensor is rejected rather
|
|
8
|
+
* than guessing fractional positions.
|
|
9
|
+
*
|
|
10
|
+
* The result fixes timing only. It does not establish that the rate is constant through the window,
|
|
11
|
+
* so it does not by itself allow rate × duration integration.
|
|
10
12
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
11
13
|
* limits.
|
|
12
14
|
*/
|
|
@@ -23,8 +25,8 @@ export interface BindSensorRateToLocalExposureInput {
|
|
|
23
25
|
colorSamplingProfile: SensorColorSamplingProfile;
|
|
24
26
|
bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
|
|
25
27
|
/**
|
|
26
|
-
* One capture
|
|
27
|
-
*
|
|
28
|
+
* One capture (exposure) event. samplePointsNative is left out on purpose,
|
|
29
|
+
* because this function sets it.
|
|
28
30
|
*/
|
|
29
31
|
exposureWindowInput: Omit<CalculateCaptureExposureWindowsInput, "samplePointsNative">;
|
|
30
32
|
}
|
|
@@ -70,18 +72,16 @@ export interface SensorRateLocalExposureBinding {
|
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
74
|
/**
|
|
73
|
-
*
|
|
74
|
-
* window
|
|
75
|
+
* Links one engine-made sensor response-rate result to the local exposure
|
|
76
|
+
* window of the same colour-sampling site.
|
|
75
77
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* closed rather than inventing fractional positions.
|
|
78
|
+
* Only a one-to-one link between native image samples and colour sites is
|
|
79
|
+
* supported. A block binding shows which sites contribute, but not each site's
|
|
80
|
+
* timing position within the sample. So shutter timing that varies across the
|
|
81
|
+
* sensor is rejected rather than guessing fractional positions.
|
|
81
82
|
*
|
|
82
|
-
* The result
|
|
83
|
-
*
|
|
84
|
-
*
|
|
83
|
+
* The result fixes timing only. It does not establish that the optical or
|
|
84
|
+
* electrical rate is constant through the window, so it does not by itself
|
|
85
|
+
* allow rate × duration integration.
|
|
85
86
|
*/
|
|
86
87
|
export declare function bindSensorRateToLocalExposure(input: BindSensorRateToLocalExposureInput): CalculationResult<SensorRateLocalExposureBinding>;
|
|
87
|
-
//# sourceMappingURL=local-exposure-binding.d.ts.map
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* shutter timing
|
|
9
|
-
*
|
|
10
|
-
*
|
|
3
|
+
* Links one sensor response-rate result (made by the engine) to the local exposure window of the
|
|
4
|
+
* same colour-sampling site.
|
|
5
|
+
*
|
|
6
|
+
* Only a one-to-one link between native image samples and colour sites is supported. A block
|
|
7
|
+
* binding (several sites per sample) shows which sites contribute, but not where each one sits
|
|
8
|
+
* within the sample in time. So shutter timing that varies across the sensor is rejected rather
|
|
9
|
+
* than guessing fractional positions.
|
|
10
|
+
*
|
|
11
|
+
* The result fixes timing only. It does not establish that the rate is constant through the window,
|
|
12
|
+
* so it does not by itself allow rate × duration integration.
|
|
11
13
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
12
14
|
* limits.
|
|
13
15
|
*/
|
|
@@ -16,6 +18,7 @@ import { InvalidScientificInputError } from "../core/validation.js";
|
|
|
16
18
|
import { resolveNativeEffectiveRasterColorSamplingBinding } from "./capture-color-sampling-binding.js";
|
|
17
19
|
import { resolveColorSamplingSite } from "./color-sampling.js";
|
|
18
20
|
import { calculateCaptureExposureWindows } from "./exposure-window.js";
|
|
21
|
+
import { requireInputObject, requireInputKeys } from "../core/record-validation.js";
|
|
19
22
|
function requireSite(rate) {
|
|
20
23
|
if (rate.site === undefined ||
|
|
21
24
|
typeof rate.site !== "object" ||
|
|
@@ -32,6 +35,7 @@ function requireSite(rate) {
|
|
|
32
35
|
};
|
|
33
36
|
}
|
|
34
37
|
function validateRateBoundary(rate) {
|
|
38
|
+
requireInputObject(rate, "rate input");
|
|
35
39
|
if (rate.sourceResponseKind ===
|
|
36
40
|
"effective-spectral-responsivity") {
|
|
37
41
|
const current = rate;
|
|
@@ -79,20 +83,20 @@ function boundaryEvidence(boundary) {
|
|
|
79
83
|
];
|
|
80
84
|
}
|
|
81
85
|
/**
|
|
82
|
-
*
|
|
83
|
-
* window
|
|
86
|
+
* Links one engine-made sensor response-rate result to the local exposure
|
|
87
|
+
* window of the same colour-sampling site.
|
|
84
88
|
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* closed rather than inventing fractional positions.
|
|
89
|
+
* Only a one-to-one link between native image samples and colour sites is
|
|
90
|
+
* supported. A block binding shows which sites contribute, but not each site's
|
|
91
|
+
* timing position within the sample. So shutter timing that varies across the
|
|
92
|
+
* sensor is rejected rather than guessing fractional positions.
|
|
90
93
|
*
|
|
91
|
-
* The result
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
+
* The result fixes timing only. It does not establish that the optical or
|
|
95
|
+
* electrical rate is constant through the window, so it does not by itself
|
|
96
|
+
* allow rate × duration integration.
|
|
94
97
|
*/
|
|
95
98
|
export function bindSensorRateToLocalExposure(input) {
|
|
99
|
+
requireInputKeys(input, "bindSensorRateToLocalExposure", ["rate", "colorSamplingProfile", "bindingProfile", "exposureWindowInput"]);
|
|
96
100
|
const rateDomain = validateRateBoundary(input.rate);
|
|
97
101
|
const site = requireSite(input.rate);
|
|
98
102
|
const binding = resolveNativeEffectiveRasterColorSamplingBinding({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Links one sensor response-rate result (made by the engine) to the local exposure window of the\n * same colour-sampling site.\n *\n * Only a one-to-one link between native image samples and colour sites is supported. A block\n * binding (several sites per sample) shows which sites contribute, but not where each one sits\n * within the sample in time. So shutter timing that varies across the sensor is rejected rather\n * than guessing fractional positions.\n *\n * The result fixes timing only. It does not establish that the rate is constant through the window,\n * so it does not by itself allow rate × duration integration.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n approximationResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport type {\n EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport {\n resolveNativeEffectiveRasterColorSamplingBinding,\n type NativeEffectiveRasterColorSamplingBindingProfile\n} from \"./capture-color-sampling-binding.js\";\nimport {\n resolveColorSamplingSite,\n type SensorColorSamplingProfile\n} from \"./color-sampling.js\";\nimport type {\n SensorEqeElectronRate\n} from \"./eqe-electron-rate.js\";\nimport {\n calculateCaptureExposureWindows,\n type CalculateCaptureExposureWindowsInput,\n type CaptureExposureWindowSample\n} from \"./exposure-window.js\";\nimport type {\n SensorResponsivityPhotocurrent\n} from \"./responsivity-photocurrent.js\";\nimport { requireInputObject, requireInputKeys } from \"../core/record-validation.js\";\n\nexport type SensorInstantaneousRateResult =\n | SensorEqeElectronRate\n | SensorResponsivityPhotocurrent;\n\nexport interface BindSensorRateToLocalExposureInput {\n rate:\n SensorInstantaneousRateResult;\n colorSamplingProfile:\n SensorColorSamplingProfile;\n bindingProfile:\n NativeEffectiveRasterColorSamplingBindingProfile;\n /**\n * One capture (exposure) event. samplePointsNative is left out on purpose,\n * because this function sets it.\n */\n exposureWindowInput:\n Omit<\n CalculateCaptureExposureWindowsInput,\n \"samplePointsNative\"\n >;\n}\n\nexport interface SensorRateLocalExposureBinding {\n rateDomain:\n | \"eqe-electron-rate\"\n | \"responsivity-photocurrent\";\n rateIdentity: {\n responseProfileId: string;\n responseApplicationProfileId: string;\n operatingRangeProfileId: string;\n electricalApplicabilityProfileId?: string;\n };\n colorSamplingProfileId: string;\n channelId: string;\n site: {\n x: number;\n y: number;\n };\n bindingId: string;\n bindingRelationship:\n \"one-native-effective-sample-to-one-color-site\";\n timingCoordinateRule:\n \"one-to-one-color-site-center-equals-native-effective-sample-center\";\n nativeRasterPoint: {\n x: number;\n y: number;\n };\n shutterMechanism:\n CalculateCaptureExposureWindowsInput[\"shutterMechanism\"];\n timeReference:\n \"first-opening-boundary-phase\";\n localExposureWindow:\n CaptureExposureWindowSample;\n localExposureDurationSeconds:\n number;\n exposureEventMeaning:\n \"single-capture-local-exposure-window\";\n nativeImageRasterBindingEstablished: true;\n channelAtSiteValidated: true;\n physicalPhotodiodeTimingRegistrationEstablished:\n false;\n multiFrameSequenceBindingEstablished:\n false;\n timeStationarityEstablished: false;\n constantRateTemporalIntegrationAuthorized:\n false;\n temporalIntegrationApplied: false;\n componentEvidence: {\n binding:\n readonly EvidenceProvenance[];\n colorSamplingProfile:\n readonly EvidenceProvenance[];\n nominalExposureDuration:\n readonly EvidenceProvenance[];\n openingBoundary:\n readonly EvidenceProvenance[];\n closingBoundary:\n readonly EvidenceProvenance[];\n };\n}\n\nfunction requireSite(\n rate:\n SensorInstantaneousRateResult\n): {\n x: number;\n y: number;\n} {\n if (\n rate.site === undefined ||\n typeof rate.site !== \"object\" ||\n rate.site === null ||\n !Number.isSafeInteger(rate.site.x) ||\n rate.site.x < 0 ||\n !Number.isSafeInteger(rate.site.y) ||\n rate.site.y < 0\n ) {\n throw new InvalidScientificInputError(\n \"rate.site must be present as a non-negative safe-integer color-sampling-site index.\"\n );\n }\n\n return {\n x: rate.site.x,\n y: rate.site.y\n };\n}\n\nfunction validateRateBoundary(\n rate:\n SensorInstantaneousRateResult\n): \"eqe-electron-rate\" |\n \"responsivity-photocurrent\" {\n requireInputObject(rate, \"rate input\");\n if (\n rate.sourceResponseKind ===\n \"effective-spectral-responsivity\"\n ) {\n const current =\n rate as SensorResponsivityPhotocurrent;\n\n if (\n current.currentCalculated !==\n true ||\n current.chargeCalculated !==\n false ||\n current.temporalIntegrationApplied !==\n false ||\n current.exposureDurationApplied !==\n false ||\n current.detectorBandwidthModeled !==\n false ||\n current.temporalResponseModel !==\n \"quasi-static-steady-state-only\"\n ) {\n throw new InvalidScientificInputError(\n \"A/W rate must remain a quasi-static pre-temporal photocurrent result.\"\n );\n }\n return \"responsivity-photocurrent\";\n }\n\n const eqe =\n rate as SensorEqeElectronRate;\n if (\n eqe.electronRateCalculated !== true ||\n eqe.photonRateCalculated !== true ||\n eqe.electronCountCalculated !==\n false ||\n eqe.photonCountCalculated !==\n false ||\n eqe.temporalIntegrationApplied !==\n false ||\n eqe.exposureDurationApplied !==\n false\n ) {\n throw new InvalidScientificInputError(\n \"EQE rate must remain a pre-temporal photon/electron-rate result.\"\n );\n }\n\n return \"eqe-electron-rate\";\n}\n\nfunction boundaryEvidence(\n boundary:\n ReturnType<\n typeof calculateCaptureExposureWindows\n >[\"value\"][\"opening\"]\n): readonly EvidenceProvenance[] {\n if (\n boundary.schedule.kind ===\n \"simultaneous\"\n ) {\n return [];\n }\n\n return [\n ...boundary.schedule.directionNative\n .evidence,\n ...boundary.schedule\n .traversalDurationSeconds.evidence\n ];\n}\n\n/**\n * Links one engine-made sensor response-rate result to the local exposure\n * window of the same colour-sampling site.\n *\n * Only a one-to-one link between native image samples and colour sites is\n * supported. A block binding shows which sites contribute, but not each site's\n * timing position within the sample. So shutter timing that varies across the\n * sensor is rejected rather than guessing fractional positions.\n *\n * The result fixes timing only. It does not establish that the optical or\n * electrical rate is constant through the window, so it does not by itself\n * allow rate × duration integration.\n */\nexport function bindSensorRateToLocalExposure(\n input:\n BindSensorRateToLocalExposureInput\n): CalculationResult<SensorRateLocalExposureBinding> {\n requireInputKeys(input, \"bindSensorRateToLocalExposure\", [\"rate\", \"colorSamplingProfile\", \"bindingProfile\", \"exposureWindowInput\"]);\n const rateDomain =\n validateRateBoundary(input.rate);\n const site = requireSite(input.rate);\n\n const binding =\n resolveNativeEffectiveRasterColorSamplingBinding({\n nativeRaster:\n input.exposureWindowInput\n .nativeRaster,\n colorSamplingProfile:\n input.colorSamplingProfile,\n bindingProfile:\n input.bindingProfile\n });\n\n if (\n binding.colorSamplingProfileId !==\n input.rate\n .colorSamplingProfileId\n ) {\n throw new InvalidScientificInputError(\n \"Color-sampling binding must reference the same colorSamplingProfileId as the rate result.\"\n );\n }\n\n if (\n binding.relationship\n .sitesPerNativeSampleX !== 1 ||\n binding.relationship\n .sitesPerNativeSampleY !== 1\n ) {\n throw new InvalidScientificInputError(\n \"Local exposure timing currently requires a one-to-one color-site/native-effective-sample binding; multi-site blocks lack explicit sub-sample timing registration.\"\n );\n }\n\n if (\n site.x >=\n binding.colorSamplingSiteGrid\n .widthSites ||\n site.y >=\n binding.colorSamplingSiteGrid\n .heightSites\n ) {\n throw new InvalidScientificInputError(\n \"rate.site is outside the color-sampling site grid established by the binding.\"\n );\n }\n\n const resolvedSite =\n resolveColorSamplingSite({\n profile:\n input.colorSamplingProfile,\n site\n });\n if (\n resolvedSite.mapping.channelId !==\n input.rate.channelId\n ) {\n throw new InvalidScientificInputError(\n \"The rate channelId does not match the color-sampling channel assigned to rate.site.\"\n );\n }\n\n const nativeRasterPoint = {\n x: site.x + 0.5,\n y: site.y + 0.5\n };\n\n const windows =\n calculateCaptureExposureWindows({\n ...input.exposureWindowInput,\n samplePointsNative: [\n nativeRasterPoint\n ]\n }).value;\n const localExposureWindow =\n windows.samples[0];\n\n if (\n localExposureWindow === undefined ||\n localExposureWindow\n .pointNative.x !==\n nativeRasterPoint.x ||\n localExposureWindow\n .pointNative.y !==\n nativeRasterPoint.y ||\n !Number.isFinite(\n localExposureWindow\n .localExposureDurationSeconds\n ) ||\n localExposureWindow\n .localExposureDurationSeconds <= 0\n ) {\n throw new InvalidScientificInputError(\n \"Exposure-window resolution did not return a valid local sample for the bound sensor site.\"\n );\n }\n\n return approximationResult(\n {\n rateDomain,\n rateIdentity: {\n responseProfileId:\n input.rate.responseProfileId,\n responseApplicationProfileId:\n input.rate\n .responseApplicationProfileId,\n operatingRangeProfileId:\n input.rate\n .operatingRangeProfileId,\n ...(rateDomain ===\n \"responsivity-photocurrent\"\n ? {\n electricalApplicabilityProfileId:\n (\n input.rate as\n SensorResponsivityPhotocurrent\n )\n .electricalApplicabilityProfileId\n }\n : {})\n },\n colorSamplingProfileId:\n input.rate\n .colorSamplingProfileId,\n channelId:\n input.rate.channelId,\n site,\n bindingId:\n binding.bindingId,\n bindingRelationship:\n \"one-native-effective-sample-to-one-color-site\",\n timingCoordinateRule:\n \"one-to-one-color-site-center-equals-native-effective-sample-center\",\n nativeRasterPoint,\n shutterMechanism:\n windows.shutterMechanism,\n timeReference:\n windows.timeReference,\n localExposureWindow,\n localExposureDurationSeconds:\n localExposureWindow\n .localExposureDurationSeconds,\n exposureEventMeaning:\n \"single-capture-local-exposure-window\",\n nativeImageRasterBindingEstablished:\n true,\n channelAtSiteValidated:\n true,\n physicalPhotodiodeTimingRegistrationEstablished:\n false,\n multiFrameSequenceBindingEstablished:\n false,\n timeStationarityEstablished:\n false,\n constantRateTemporalIntegrationAuthorized:\n false,\n temporalIntegrationApplied:\n false,\n componentEvidence: {\n binding:\n binding.componentEvidence\n .binding,\n colorSamplingProfile:\n binding.componentEvidence\n .colorSamplingProfile,\n nominalExposureDuration:\n windows\n .nominalExposureDurationSeconds\n .evidence,\n openingBoundary:\n boundaryEvidence(\n windows.opening\n ),\n closingBoundary:\n boundaryEvidence(\n windows.closing\n )\n }\n },\n \"sensor-rate-local-exposure-binding\",\n \"1.0.0\",\n [\n \"The rate's abstract color-sampling site is mapped to the center of the same-index native effective sample only because an explicit one-to-one shared-top-left binding is present.\",\n \"Multi-site-per-native-sample relationships are blocked because contributor membership does not establish individual color-site timing coordinates.\",\n \"The mapped timing coordinate is a native-effective-raster timing coordinate; it does not establish a physical photodiode timing registration.\",\n \"The exposure schedule is recomputed from the evidence-backed opening/closing timing declarations at the bound point rather than accepting an arbitrary precomputed local duration.\",\n \"The color-sampling channel at the exact site must match the response-rate channel.\",\n \"The result represents one local exposure event only; multi-frame/pixel-shift sequence timing and combination remain outside this contract.\",\n \"This binding does not establish that the optical/electron/current rate is constant through the exposure. Motion, flicker, flash, time-varying illumination/vignetting and detector transients require a time-dependent integrand.\",\n \"Temporal integration, accumulated charge, saturation, noise, ADC/RAW conversion and reconstruction are not performed.\"\n ]\n );\n}\n"]}
|
|
@@ -3,8 +3,8 @@ export type SensorOpticalStackComponentRole = "cover-glass" | "infrared-cut" | "
|
|
|
3
3
|
export interface SensorOpticalStackComponent {
|
|
4
4
|
componentId: string;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* optical
|
|
6
|
+
* A component can have several roles, because one physical element can do
|
|
7
|
+
* more than one optical or filtering job.
|
|
8
8
|
*/
|
|
9
9
|
roles: readonly SensorOpticalStackComponentRole[];
|
|
10
10
|
evidence: readonly EvidenceProvenance[];
|
|
@@ -13,45 +13,44 @@ export interface SensorMicrolensDeclaration {
|
|
|
13
13
|
presence: "present" | "absent";
|
|
14
14
|
evidence: readonly EvidenceProvenance[];
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
* collection
|
|
16
|
+
* Being present does not establish any model of angle, spectrum, fill factor
|
|
17
|
+
* or collection efficiency.
|
|
18
18
|
*/
|
|
19
19
|
opticalEffectModel: "unresolved";
|
|
20
20
|
}
|
|
21
21
|
export interface AntiAliasingPointSplitComponent {
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
* +X right, +Y down. Units: micrometres.
|
|
23
|
+
* Physical offset on the native sensor from where the light would otherwise
|
|
24
|
+
* land. +X right, +Y down. Units: micrometres.
|
|
25
25
|
*/
|
|
26
26
|
offsetMicrometers: {
|
|
27
27
|
x: number;
|
|
28
28
|
y: number;
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Normalized weight (dimensionless). A point-splitting kernel only describes
|
|
32
|
+
* where the light goes; the stack's total throughput is not part of it.
|
|
33
33
|
*/
|
|
34
34
|
normalizedWeight: number;
|
|
35
35
|
}
|
|
36
36
|
export type SensorEffectiveAntiAliasingSpatialResponse = {
|
|
37
37
|
/**
|
|
38
|
-
* Documented absence
|
|
39
|
-
*
|
|
40
|
-
* identity.
|
|
38
|
+
* Documented absence (or cancellation) of deliberate AA splitting. It does
|
|
39
|
+
* not mean the rest of the sensor stack has no optical effect.
|
|
41
40
|
*/
|
|
42
41
|
kind: "absent";
|
|
43
42
|
evidence: readonly EvidenceProvenance[];
|
|
44
43
|
} | {
|
|
45
44
|
/**
|
|
46
|
-
* An
|
|
47
|
-
*
|
|
45
|
+
* An AA effect is known to exist, but its spatial response is not
|
|
46
|
+
* specified well enough to use.
|
|
48
47
|
*/
|
|
49
48
|
kind: "present-unresolved";
|
|
50
49
|
evidence: readonly EvidenceProvenance[];
|
|
51
50
|
} | {
|
|
52
51
|
/**
|
|
53
|
-
* Generic
|
|
54
|
-
* physical coordinates.
|
|
52
|
+
* Generic approximation: each point is split into weighted copies at
|
|
53
|
+
* offsets in native sensor physical coordinates.
|
|
55
54
|
*/
|
|
56
55
|
kind: "normalized-point-splitting-kernel";
|
|
57
56
|
evidence: readonly EvidenceProvenance[];
|
|
@@ -64,22 +63,21 @@ export interface SensorOpticalStackProfile {
|
|
|
64
63
|
profileId: string;
|
|
65
64
|
evidence: readonly EvidenceProvenance[];
|
|
66
65
|
/**
|
|
67
|
-
*
|
|
66
|
+
* In order from the side light enters towards the sensor.
|
|
68
67
|
*
|
|
69
68
|
* These components are descriptive metadata only. Their presence does not
|
|
70
|
-
* create transmission, focus-shift, aberration
|
|
69
|
+
* create transmission, focus-shift, aberration or spectral effects.
|
|
71
70
|
*/
|
|
72
71
|
orderedComponents?: readonly SensorOpticalStackComponent[];
|
|
73
72
|
/**
|
|
74
|
-
* Omitted means unknown
|
|
73
|
+
* Omitted means "unknown, not stated".
|
|
75
74
|
*
|
|
76
|
-
* This is
|
|
77
|
-
*
|
|
78
|
-
* anti-aliasing response is absent/cancelled.
|
|
75
|
+
* This is separate from which components are present, so a stack can
|
|
76
|
+
* contain low-pass hardware while its net AA effect is absent or cancelled.
|
|
79
77
|
*/
|
|
80
78
|
effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;
|
|
81
79
|
/**
|
|
82
|
-
* Omitted means unknown
|
|
80
|
+
* Omitted means "unknown, not stated".
|
|
83
81
|
*/
|
|
84
82
|
microlens?: SensorMicrolensDeclaration;
|
|
85
83
|
}
|
|
@@ -103,30 +101,28 @@ export interface ResolvedAntiAliasingSpatialKernel {
|
|
|
103
101
|
};
|
|
104
102
|
}
|
|
105
103
|
/**
|
|
106
|
-
* Parses descriptive sensor optical-stack metadata plus an optional explicitly
|
|
107
|
-
* declared
|
|
104
|
+
* Parses descriptive sensor optical-stack metadata, plus an optional explicitly
|
|
105
|
+
* declared anti-aliasing (AA) spatial response.
|
|
108
106
|
*
|
|
109
|
-
*
|
|
110
|
-
* is
|
|
111
|
-
*
|
|
112
|
-
* the physical assembly is absent.
|
|
107
|
+
* Leave out unknown facts rather than guessing them. Physical presence of a
|
|
108
|
+
* component is separate from the net AA response, so the schema can describe
|
|
109
|
+
* designs that cancel the AA effect without claiming the hardware is missing.
|
|
113
110
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* acceptance, focus shift and microlens collection
|
|
117
|
-
*
|
|
111
|
+
* In schema 0.1.0, cover glass, filters and microlenses create no optical
|
|
112
|
+
* effect. Thickness, refractive index, spectral transmission, angle of
|
|
113
|
+
* acceptance, focus shift and microlens collection need later explicit models
|
|
114
|
+
* or calibration.
|
|
118
115
|
*/
|
|
119
116
|
export declare function parseSensorOpticalStackProfile(value: unknown): SensorOpticalStackProfile;
|
|
120
117
|
/**
|
|
121
|
-
* Resolves only the
|
|
118
|
+
* Resolves only the anti-aliasing (AA) spatial kernel.
|
|
122
119
|
*
|
|
123
|
-
* This is not
|
|
124
|
-
*
|
|
125
|
-
* throughput
|
|
120
|
+
* This is not the PSF (point-spread function) of the whole optical stack. Cover
|
|
121
|
+
* glass and filter transmission, refraction, microlens behaviour, dependence on
|
|
122
|
+
* field position, wavelength or polarization, and total throughput are excluded.
|
|
126
123
|
*
|
|
127
|
-
* A documented absent
|
|
128
|
-
*
|
|
129
|
-
*
|
|
124
|
+
* A documented absent AA response gives a single component with weight 1 at zero
|
|
125
|
+
* offset (no blur). An unknown response (field omitted) or one that is present
|
|
126
|
+
* but unspecified is rejected.
|
|
130
127
|
*/
|
|
131
128
|
export declare function resolveAntiAliasingSpatialKernel(profileInput: SensorOpticalStackProfile): ResolvedAntiAliasingSpatialKernel;
|
|
132
|
-
//# sourceMappingURL=optical-stack.d.ts.map
|
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* Resolves only the effective anti-aliasing spatial kernel. This is not a whole optical-stack PSF.
|
|
12
|
-
* Cover/filter transmission, refraction, microlens behavior, field/wavelength/polarization dependence,
|
|
13
|
-
* and total throughput remain excluded. A documented absent effective anti-aliasing response resolves
|
|
14
|
-
* to an identity component at zero offset. An unknown response (field omitted) or a
|
|
15
|
-
* present-but-unresolved response fails closed.
|
|
3
|
+
* Sensor optical stack: the layers in front of the photodiodes (such as cover glass, infrared- and
|
|
4
|
+
* ultraviolet-cut filters, a birefringent low-pass filter and microlenses), described as metadata,
|
|
5
|
+
* plus an optional declared anti-aliasing (AA) blur kernel.
|
|
6
|
+
*
|
|
7
|
+
* Whether a component is physically present is recorded separately from its net AA effect. That lets
|
|
8
|
+
* the schema describe designs that cancel the AA effect without claiming the hardware is missing.
|
|
9
|
+
* Component presence alone creates no optical effect. Thickness, refractive index, spectral
|
|
10
|
+
* transmission, angle of acceptance, focus shift and microlens collection need separate models.
|
|
16
11
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
17
12
|
* limits.
|
|
18
13
|
*/
|
|
14
|
+
import { rejectUnknownFields } from "../core/record-validation.js";
|
|
19
15
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
20
16
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
21
17
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
@@ -28,12 +24,14 @@ const COMPONENT_ROLES = new Set([
|
|
|
28
24
|
"wave-plate",
|
|
29
25
|
"other-optical-filter"
|
|
30
26
|
]);
|
|
31
|
-
function requireRecord(value, path) {
|
|
27
|
+
function requireRecord(value, path, allowedKeys) {
|
|
32
28
|
if (typeof value !== "object" ||
|
|
33
29
|
value === null ||
|
|
34
30
|
Array.isArray(value)) {
|
|
35
31
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
36
32
|
}
|
|
33
|
+
if (allowedKeys !== null)
|
|
34
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
37
35
|
return value;
|
|
38
36
|
}
|
|
39
37
|
function requireNonEmptyString(value, path) {
|
|
@@ -64,7 +62,7 @@ function parseOrderedComponents(value, path) {
|
|
|
64
62
|
throw new InvalidConfigurationError(path + " must be a non-empty array.");
|
|
65
63
|
}
|
|
66
64
|
const components = value.map((entry, index) => {
|
|
67
|
-
const record = requireRecord(entry, path + "[" + index + "]");
|
|
65
|
+
const record = requireRecord(entry, path + "[" + index + "]", ["componentId", "roles", "evidence"]);
|
|
68
66
|
return {
|
|
69
67
|
componentId: requireNonEmptyString(record.componentId, path + "[" + index + "].componentId"),
|
|
70
68
|
roles: parseComponentRoles(record.roles, path + "[" + index + "].roles"),
|
|
@@ -89,8 +87,8 @@ function parsePointSplitComponents(value, path) {
|
|
|
89
87
|
throw new InvalidConfigurationError(path + " must be a non-empty array.");
|
|
90
88
|
}
|
|
91
89
|
const components = value.map((entry, index) => {
|
|
92
|
-
const record = requireRecord(entry, path + "[" + index + "]");
|
|
93
|
-
const offset = requireRecord(record.offsetMicrometers, path + "[" + index + "].offsetMicrometers");
|
|
90
|
+
const record = requireRecord(entry, path + "[" + index + "]", ["offsetMicrometers", "normalizedWeight"]);
|
|
91
|
+
const offset = requireRecord(record.offsetMicrometers, path + "[" + index + "].offsetMicrometers", ["x", "y"]);
|
|
94
92
|
const normalizedWeight = requireFiniteNumber(record.normalizedWeight, path + "[" + index + "].normalizedWeight");
|
|
95
93
|
if (normalizedWeight <= 0) {
|
|
96
94
|
throw new InvalidConfigurationError(path +
|
|
@@ -121,7 +119,7 @@ function parsePointSplitComponents(value, path) {
|
|
|
121
119
|
return components;
|
|
122
120
|
}
|
|
123
121
|
function parseAntiAliasingResponse(value, path) {
|
|
124
|
-
const record = requireRecord(value, path);
|
|
122
|
+
const record = requireRecord(value, path, ["kind", "coordinateSystem", "scope", "components", "evidence"]);
|
|
125
123
|
if (record.kind === "absent" ||
|
|
126
124
|
record.kind === "present-unresolved") {
|
|
127
125
|
if (record.coordinateSystem !== undefined ||
|
|
@@ -157,7 +155,7 @@ function parseAntiAliasingResponse(value, path) {
|
|
|
157
155
|
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
158
156
|
}
|
|
159
157
|
function parseMicrolens(value, path) {
|
|
160
|
-
const record = requireRecord(value, path);
|
|
158
|
+
const record = requireRecord(value, path, ["presence", "opticalEffectModel", "evidence"]);
|
|
161
159
|
if (record.presence !== "present" &&
|
|
162
160
|
record.presence !== "absent") {
|
|
163
161
|
throw new InvalidConfigurationError(path + ".presence is invalid.");
|
|
@@ -173,21 +171,20 @@ function parseMicrolens(value, path) {
|
|
|
173
171
|
};
|
|
174
172
|
}
|
|
175
173
|
/**
|
|
176
|
-
* Parses descriptive sensor optical-stack metadata plus an optional explicitly
|
|
177
|
-
* declared
|
|
174
|
+
* Parses descriptive sensor optical-stack metadata, plus an optional explicitly
|
|
175
|
+
* declared anti-aliasing (AA) spatial response.
|
|
178
176
|
*
|
|
179
|
-
*
|
|
180
|
-
* is
|
|
181
|
-
*
|
|
182
|
-
* the physical assembly is absent.
|
|
177
|
+
* Leave out unknown facts rather than guessing them. Physical presence of a
|
|
178
|
+
* component is separate from the net AA response, so the schema can describe
|
|
179
|
+
* designs that cancel the AA effect without claiming the hardware is missing.
|
|
183
180
|
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
* acceptance, focus shift and microlens collection
|
|
187
|
-
*
|
|
181
|
+
* In schema 0.1.0, cover glass, filters and microlenses create no optical
|
|
182
|
+
* effect. Thickness, refractive index, spectral transmission, angle of
|
|
183
|
+
* acceptance, focus shift and microlens collection need later explicit models
|
|
184
|
+
* or calibration.
|
|
188
185
|
*/
|
|
189
186
|
export function parseSensorOpticalStackProfile(value) {
|
|
190
|
-
const profile = requireRecord(value, "sensorOpticalStack");
|
|
187
|
+
const profile = requireRecord(value, "sensorOpticalStack", ["schemaVersion", "orderedComponents", "effectiveAntiAliasingSpatialResponse", "microlens", "profileId", "evidence"]);
|
|
191
188
|
if (profile.schemaVersion !== "0.1.0") {
|
|
192
189
|
throw new InvalidConfigurationError('sensorOpticalStack.schemaVersion must be "0.1.0".');
|
|
193
190
|
}
|
|
@@ -226,15 +223,15 @@ export function parseSensorOpticalStackProfile(value) {
|
|
|
226
223
|
};
|
|
227
224
|
}
|
|
228
225
|
/**
|
|
229
|
-
* Resolves only the
|
|
226
|
+
* Resolves only the anti-aliasing (AA) spatial kernel.
|
|
230
227
|
*
|
|
231
|
-
* This is not
|
|
232
|
-
*
|
|
233
|
-
* throughput
|
|
228
|
+
* This is not the PSF (point-spread function) of the whole optical stack. Cover
|
|
229
|
+
* glass and filter transmission, refraction, microlens behaviour, dependence on
|
|
230
|
+
* field position, wavelength or polarization, and total throughput are excluded.
|
|
234
231
|
*
|
|
235
|
-
* A documented absent
|
|
236
|
-
*
|
|
237
|
-
*
|
|
232
|
+
* A documented absent AA response gives a single component with weight 1 at zero
|
|
233
|
+
* offset (no blur). An unknown response (field omitted) or one that is present
|
|
234
|
+
* but unspecified is rejected.
|
|
238
235
|
*/
|
|
239
236
|
export function resolveAntiAliasingSpatialKernel(profileInput) {
|
|
240
237
|
const profile = parseSensorOpticalStackProfile(profileInput);
|