@photivra/engine 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +401 -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 +118 -5
- package/dist/capture/native-raw-development.js +224 -59
- 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 +67 -10
- package/dist/capture/native-raw.js +90 -24
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +284 -0
- package/dist/facade/simulate-capture.js +1026 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +89 -25
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +761 -2
- package/docs/QUICK_START.md +495 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -4
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +23 -8
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2213 -8
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +324 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -12
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/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 -47
- 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_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/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/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":"color-sampling.js","sourceRoot":"","sources":["../../src/sensor/color-sampling.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"color-sampling.js","sourceRoot":"","sources":["../../src/sensor/color-sampling.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Colour-sampling layout: which colour channel each sensor site measures. Examples are monochrome,\n * a repeating mosaic such as a Bayer CFA (colour filter array), or a layered (stacked) sensor.\n *\n * Sites form an abstract grid with zero-based integer indices, origin at the top left, +X right and\n * +Y down. A site is not necessarily one physical photodiode. The mosaic's repeat pattern is fixed to\n * this grid, so later crops or orientation changes must keep the original native site indices.\n * Layered layouts are described structurally only, because real layered sensors may sample each layer\n * at different densities or offsets.\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 { requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type NativeColorSamplingSiteCoordinateSystem =\n \"native-sensor-color-sampling-site-index\";\n\nexport type SensorColorSamplingProfileCoordinateSystem =\n | NativeColorSamplingSiteCoordinateSystem\n | \"native-sensor-layered-spatial-relationship-not-resolved\";\n\nexport interface NativeColorSamplingSiteIndex {\n /**\n * Zero-based integer site index from the native sensor's left edge.\n *\n * It indexes the abstract grid of colour-sampling sites. It is not a\n * NativeImageRaster coordinate and does not claim one site is one physical\n * photodiode.\n */\n x: number;\n /**\n * Zero-based integer site index from the native sensor's top edge.\n *\n * +Y points downward in native sensor-facing coordinates.\n */\n y: number;\n}\n\nexport interface MonochromeColorSamplingLayout {\n kind: \"monochrome\";\n /**\n * A name for the measured channel only. It is not a spectral response\n * curve, wavelength, colour primary or calibration.\n */\n channelId: string;\n}\n\nexport interface PeriodicMosaicColorSamplingLayout {\n kind: \"periodic-mosaic\";\n /**\n * Number of color-sampling sites in one horizontal repeat period.\n */\n repeatWidthSites: number;\n /**\n * Number of color-sampling sites in one vertical repeat period.\n */\n repeatHeightSites: number;\n /**\n * Channel IDs for one repeating tile, in row-major order.\n *\n * Length must equal repeatWidthSites × repeatHeightSites.\n */\n siteChannelIds: readonly string[];\n /**\n * The repeat tile starts at native sensor site (0, 0).\n *\n * Active-area crops and camera orientation must not silently reset this phase.\n */\n anchor: \"native-sensor-top-left-site\";\n}\n\nexport interface LayeredColorSamplingLayout {\n kind: \"layered\";\n /**\n * Names for the layers or channels only. They do not define spectral\n * response, depth order, sampling density or alignment between layers.\n */\n layerChannelIds: readonly string[];\n /**\n * Layered layouts are described structurally only for now, because real\n * layered sensors may sample each layer differently.\n */\n spatialSamplingRelationship: \"not-resolved\";\n}\n\nexport type SensorColorSamplingLayout =\n | MonochromeColorSamplingLayout\n | PeriodicMosaicColorSamplingLayout\n | LayeredColorSamplingLayout;\n\nexport interface SensorColorSamplingProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n /**\n * Evidence for this exact layout.\n *\n * Descriptive sensor-architecture metadata is a separate type.\n */\n evidence: readonly EvidenceProvenance[];\n coordinateSystem: SensorColorSamplingProfileCoordinateSystem;\n layout: SensorColorSamplingLayout;\n}\n\nexport interface ResolveColorSamplingSiteInput {\n profile: SensorColorSamplingProfile;\n site: NativeColorSamplingSiteIndex;\n}\n\nexport interface ResolvedColorSamplingSite {\n profileId: string;\n coordinateSystem: NativeColorSamplingSiteCoordinateSystem;\n site: NativeColorSamplingSiteIndex;\n mapping:\n | {\n kind: \"monochrome\";\n channelId: string;\n }\n | {\n kind: \"periodic-mosaic\";\n channelId: string;\n repeatCoordinate: {\n x: number;\n y: number;\n };\n repeatWidthSites: number;\n repeatHeightSites: number;\n };\n /**\n * States what this profile does not establish, for downstream code.\n */\n spectralResponseEstablished: false;\n nativeImageRasterBindingEstablished: false;\n physicalPhotodiodeBindingEstablished: 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 + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveSafeInteger(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a positive safe integer.\"\n );\n }\n return value;\n}\n\nfunction parseChannelIds(\n value: unknown,\n path: string,\n options: {\n allowDuplicates: boolean;\n exactLength?: number;\n }\n): readonly string[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty array.\"\n );\n }\n\n if (\n options.exactLength !== undefined &&\n value.length !== options.exactLength\n ) {\n throw new InvalidConfigurationError(\n path +\n \" length must equal the declared repeating-tile site count.\"\n );\n }\n\n const ids = value.map((entry, index) =>\n requireNonEmptyString(\n entry,\n path + \"[\" + index + \"]\"\n )\n );\n\n if (\n !options.allowDuplicates &&\n new Set(ids).size !== ids.length\n ) {\n throw new InvalidConfigurationError(\n path + \" must not contain duplicate channel IDs.\"\n );\n }\n\n return ids;\n}\n\nfunction parseLayout(\n value: unknown,\n path: string\n): SensorColorSamplingLayout {\n const record = requireRecord(value, path, [\"kind\", \"repeatWidthSites\", \"repeatHeightSites\", \"siteChannelIds\", \"anchor\", \"layerChannelIds\", \"spatialSamplingRelationship\", \"channelId\"]);\n\n if (record.kind === \"monochrome\") {\n if (\n record.repeatWidthSites !== undefined ||\n record.repeatHeightSites !== undefined ||\n record.siteChannelIds !== undefined ||\n record.anchor !== undefined ||\n record.layerChannelIds !== undefined ||\n record.spatialSamplingRelationship !== undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" monochrome layout must omit mosaic/layered fields.\"\n );\n }\n\n return {\n kind: \"monochrome\",\n channelId: requireNonEmptyString(\n record.channelId,\n path + \".channelId\"\n )\n };\n }\n\n if (record.kind === \"periodic-mosaic\") {\n if (\n record.channelId !== undefined ||\n record.layerChannelIds !== undefined ||\n record.spatialSamplingRelationship !== undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" periodic-mosaic layout must omit monochrome/layered fields.\"\n );\n }\n\n const repeatWidthSites =\n requirePositiveSafeInteger(\n record.repeatWidthSites,\n path + \".repeatWidthSites\"\n );\n const repeatHeightSites =\n requirePositiveSafeInteger(\n record.repeatHeightSites,\n path + \".repeatHeightSites\"\n );\n const repeatSiteCount =\n repeatWidthSites * repeatHeightSites;\n\n if (!Number.isSafeInteger(repeatSiteCount)) {\n throw new InvalidConfigurationError(\n path +\n \" repeating-tile site count must be a safe integer.\"\n );\n }\n\n if (record.anchor !== \"native-sensor-top-left-site\") {\n throw new InvalidConfigurationError(\n path +\n '.anchor must be \"native-sensor-top-left-site\".'\n );\n }\n\n return {\n kind: \"periodic-mosaic\",\n repeatWidthSites,\n repeatHeightSites,\n siteChannelIds: parseChannelIds(\n record.siteChannelIds,\n path + \".siteChannelIds\",\n {\n allowDuplicates: true,\n exactLength: repeatSiteCount\n }\n ),\n anchor: \"native-sensor-top-left-site\"\n };\n }\n\n if (record.kind === \"layered\") {\n if (\n record.channelId !== undefined ||\n record.repeatWidthSites !== undefined ||\n record.repeatHeightSites !== undefined ||\n record.siteChannelIds !== undefined ||\n record.anchor !== undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" layered layout must omit monochrome/mosaic fields.\"\n );\n }\n\n if (\n record.spatialSamplingRelationship !==\n \"not-resolved\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.spatialSamplingRelationship must be \"not-resolved\" for the first layered contract.'\n );\n }\n\n return {\n kind: \"layered\",\n layerChannelIds: parseChannelIds(\n record.layerChannelIds,\n path + \".layerChannelIds\",\n {\n allowDuplicates: false\n }\n ),\n spatialSamplingRelationship: \"not-resolved\"\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\n/**\n * Parses an exact colour-sampling layout. It is not tied to NativeImageRaster,\n * physical photodiodes, spectral response or a manufacturer's layout name.\n *\n * Repeating mosaics use an abstract grid of native sensor sites with zero-based\n * integer indices, origin at the top left, +X right and +Y down. The repeat\n * pattern is fixed to this grid, so later crops or orientation changes must keep\n * the original native site indices.\n *\n * Layered layouts are described structurally only, because real layered sensors\n * may sample each layer at different densities or offsets. There is no per-site\n * lookup for layered layouts until that is modelled explicitly.\n */\nexport function parseSensorColorSamplingProfile(\n value: unknown\n): SensorColorSamplingProfile {\n const profile = requireRecord(\n value,\n \"sensorColorSampling\", [\"schemaVersion\", \"layout\", \"coordinateSystem\", \"profileId\", \"evidence\"]\n );\n\n if (profile.schemaVersion !== \"0.1.0\") {\n throw new InvalidConfigurationError(\n 'sensorColorSampling.schemaVersion must be \"0.1.0\".'\n );\n }\n\n const layout = parseLayout(\n profile.layout,\n \"sensorColorSampling.layout\"\n );\n\n const expectedCoordinateSystem =\n layout.kind === \"layered\"\n ? \"native-sensor-layered-spatial-relationship-not-resolved\"\n : \"native-sensor-color-sampling-site-index\";\n\n if (\n profile.coordinateSystem !==\n expectedCoordinateSystem\n ) {\n throw new InvalidConfigurationError(\n \"sensorColorSampling.coordinateSystem does not match the declared layout kind.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n profile.profileId,\n \"sensorColorSampling.profileId\"\n ),\n evidence: parseEvidenceList(\n profile.evidence,\n \"sensorColorSampling.evidence\"\n ),\n coordinateSystem: expectedCoordinateSystem,\n layout\n };\n}\n\nfunction requireNativeSiteIndex(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n path +\n \" must be a non-negative safe integer native color-sampling-site index.\"\n );\n }\n return value;\n}\n\n/**\n * Returns which channel one native site measures, for monochrome or repeating\n * mosaic layouts.\n *\n * It deliberately takes no NativeImageRaster. A separate binding\n * (capture-color-sampling-binding) must say how a capture mode's sample grid\n * maps onto this site grid before RAW or CFA sampling can be simulated.\n *\n * Layered layouts are rejected, because how their layers line up spatially is\n * not defined yet.\n */\nexport function resolveColorSamplingSite(\n input: ResolveColorSamplingSiteInput\n): ResolvedColorSamplingSite {\n requireInputKeys(input, \"resolveColorSamplingSite\", [\"profile\", \"site\"]);\n const profile =\n parseSensorColorSamplingProfile(input.profile);\n\n if (\n typeof input.site !== \"object\" ||\n input.site === null\n ) {\n throw new InvalidConfigurationError(\n \"site must be an object.\"\n );\n }\n\n const x = requireNativeSiteIndex(\n input.site.x,\n \"site.x\"\n );\n const y = requireNativeSiteIndex(\n input.site.y,\n \"site.y\"\n );\n\n if (profile.layout.kind === \"layered\") {\n throw new InvalidScientificInputError(\n \"Layered color sampling is structural-only in schema 0.1.0; per-site resolution requires an explicit per-layer spatial sampling relationship.\"\n );\n }\n\n if (\n profile.coordinateSystem !==\n \"native-sensor-color-sampling-site-index\"\n ) {\n throw new InvalidScientificInputError(\n \"Resolvable color sampling requires the native sensor color-sampling-site coordinate system.\"\n );\n }\n\n if (profile.layout.kind === \"monochrome\") {\n return {\n profileId: profile.profileId,\n coordinateSystem: profile.coordinateSystem,\n site: { x, y },\n mapping: {\n kind: \"monochrome\",\n channelId: profile.layout.channelId\n },\n spectralResponseEstablished: false,\n nativeImageRasterBindingEstablished: false,\n physicalPhotodiodeBindingEstablished: false\n };\n }\n\n const repeatX =\n x % profile.layout.repeatWidthSites;\n const repeatY =\n y % profile.layout.repeatHeightSites;\n const index =\n repeatY * profile.layout.repeatWidthSites +\n repeatX;\n const channelId =\n profile.layout.siteChannelIds[index];\n\n if (channelId === undefined) {\n throw new InvalidScientificInputError(\n \"Periodic color-sampling tile resolution failed.\"\n );\n }\n\n return {\n profileId: profile.profileId,\n coordinateSystem: profile.coordinateSystem,\n site: { x, y },\n mapping: {\n kind: \"periodic-mosaic\",\n channelId,\n repeatCoordinate: {\n x: repeatX,\n y: repeatY\n },\n repeatWidthSites:\n profile.layout.repeatWidthSites,\n repeatHeightSites:\n profile.layout.repeatHeightSites\n },\n spectralResponseEstablished: false,\n nativeImageRasterBindingEstablished: false,\n physicalPhotodiodeBindingEstablished: false\n };\n}\n"]}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* window. This function is intentionally limited to the constant-rate approximation. It does not
|
|
10
|
-
* sample or integrate a time-varying signal.
|
|
2
|
+
* Constant-rate exposure: multiplies a sensor response rate by the exposure time.
|
|
3
|
+
*
|
|
4
|
+
* This shortcut (rate × duration) is allowed only when the caller declares the rate constant
|
|
5
|
+
* (stationary) for this exact site and local shutter interval. With EQE (external quantum
|
|
6
|
+
* efficiency) the result is expected photons and electrons. With A/W responsivity it is charge in
|
|
7
|
+
* coulombs, with no assumed conversion to electrons. Counts stay fractional expected values, before
|
|
8
|
+
* any random sampling. Time-varying signals are not handled here.
|
|
11
9
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
12
10
|
* limits.
|
|
13
11
|
*/
|
|
@@ -101,26 +99,24 @@ export interface SensorResponsivityExposureIntegration extends SensorTemporalInt
|
|
|
101
99
|
}
|
|
102
100
|
export type SensorStationaryRateExposureIntegration = SensorEqeExposureIntegration | SensorResponsivityExposureIntegration;
|
|
103
101
|
/**
|
|
104
|
-
*
|
|
105
|
-
* missing required fields and
|
|
102
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
103
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
106
104
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
112
|
-
* @returns SensorRateTemporalStationarityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
105
|
+
* The profile declares that a rate is constant (stationary) for an exact site and local shutter
|
|
106
|
+
* interval, which is what allows rate × duration.
|
|
107
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
108
|
+
* @returns The result. Success does not imply calibration.
|
|
113
109
|
*
|
|
114
|
-
* @see docs/API_REFERENCE.md for the
|
|
110
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
115
111
|
*/
|
|
116
112
|
export declare function parseSensorRateTemporalStationarityProfile(value: unknown): SensorRateTemporalStationarityProfile;
|
|
117
113
|
/**
|
|
118
|
-
* Integrates one
|
|
119
|
-
*
|
|
114
|
+
* Integrates one response rate, declared constant, over its exact local
|
|
115
|
+
* exposure window.
|
|
120
116
|
*
|
|
121
|
-
* This
|
|
122
|
-
*
|
|
117
|
+
* This is the constant-rate approximation only. It does not sample or
|
|
118
|
+
* integrate a time-varying signal. EQE rates give expected photons and
|
|
119
|
+
* electrons; A/W rates give coulombs. Counts stay fractional.
|
|
123
120
|
*/
|
|
124
121
|
export declare function integrateStationarySensorRateOverLocalExposure(input: IntegrateStationarySensorRateInput): CalculationResult<SensorStationaryRateExposureIntegration>;
|
|
125
122
|
export {};
|
|
126
|
-
//# sourceMappingURL=constant-rate-temporal-integration.d.ts.map
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* window. This function is intentionally limited to the constant-rate approximation. It does not
|
|
11
|
-
* sample or integrate a time-varying signal.
|
|
3
|
+
* Constant-rate exposure: multiplies a sensor response rate by the exposure time.
|
|
4
|
+
*
|
|
5
|
+
* This shortcut (rate × duration) is allowed only when the caller declares the rate constant
|
|
6
|
+
* (stationary) for this exact site and local shutter interval. With EQE (external quantum
|
|
7
|
+
* efficiency) the result is expected photons and electrons. With A/W responsivity it is charge in
|
|
8
|
+
* coulombs, with no assumed conversion to electrons. Counts stay fractional expected values, before
|
|
9
|
+
* any random sampling. Time-varying signals are not handled here.
|
|
12
10
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
13
11
|
* limits.
|
|
14
12
|
*/
|
|
@@ -16,12 +14,15 @@ import { approximationResult, calculatedResult } from "../core/calculation-resul
|
|
|
16
14
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
17
15
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
18
16
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
19
|
-
|
|
17
|
+
import { requireInputObject, requireInputKeys, rejectUnknownFields } from "../core/record-validation.js";
|
|
18
|
+
function requireRecord(value, path, allowedKeys) {
|
|
20
19
|
if (typeof value !== "object" ||
|
|
21
20
|
value === null ||
|
|
22
21
|
Array.isArray(value)) {
|
|
23
22
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
24
23
|
}
|
|
24
|
+
if (allowedKeys !== null)
|
|
25
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
25
26
|
return value;
|
|
26
27
|
}
|
|
27
28
|
function requireNonEmptyString(value, path) {
|
|
@@ -48,20 +49,18 @@ function requireFinite(value, path) {
|
|
|
48
49
|
return value;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
|
-
*
|
|
52
|
-
* missing required fields and
|
|
52
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
53
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
53
54
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
59
|
-
* @returns SensorRateTemporalStationarityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
55
|
+
* The profile declares that a rate is constant (stationary) for an exact site and local shutter
|
|
56
|
+
* interval, which is what allows rate × duration.
|
|
57
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
58
|
+
* @returns The result. Success does not imply calibration.
|
|
60
59
|
*
|
|
61
|
-
* @see docs/API_REFERENCE.md for the
|
|
60
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
62
61
|
*/
|
|
63
62
|
export function parseSensorRateTemporalStationarityProfile(value) {
|
|
64
|
-
const record = requireRecord(value, "sensorRateTemporalStationarity");
|
|
63
|
+
const record = requireRecord(value, "sensorRateTemporalStationarity", ["schemaVersion", "rateDomain", "site", "localExposureWindow", "stationarityMeaning", "status", "limitation", "profileId", "colorSamplingProfileId", "channelId", "bindingId", "evidence"]);
|
|
65
64
|
if (record.schemaVersion !== "0.1.0") {
|
|
66
65
|
throw new InvalidConfigurationError('sensorRateTemporalStationarity.schemaVersion must be "0.1.0".');
|
|
67
66
|
}
|
|
@@ -71,8 +70,8 @@ export function parseSensorRateTemporalStationarityProfile(value) {
|
|
|
71
70
|
"responsivity-photocurrent") {
|
|
72
71
|
throw new InvalidConfigurationError("sensorRateTemporalStationarity.rateDomain is invalid.");
|
|
73
72
|
}
|
|
74
|
-
const site = requireRecord(record.site, "sensorRateTemporalStationarity.site");
|
|
75
|
-
const localExposureWindow = requireRecord(record.localExposureWindow, "sensorRateTemporalStationarity.localExposureWindow");
|
|
73
|
+
const site = requireRecord(record.site, "sensorRateTemporalStationarity.site", ["x", "y"]);
|
|
74
|
+
const localExposureWindow = requireRecord(record.localExposureWindow, "sensorRateTemporalStationarity.localExposureWindow", ["timeReference", "startOffsetSecondsFromOpeningReference", "endOffsetSecondsFromOpeningReference"]);
|
|
76
75
|
if (localExposureWindow.timeReference !==
|
|
77
76
|
"first-opening-boundary-phase") {
|
|
78
77
|
throw new InvalidConfigurationError('sensorRateTemporalStationarity.localExposureWindow.timeReference must be "first-opening-boundary-phase".');
|
|
@@ -127,6 +126,7 @@ function sameSite(a, b) {
|
|
|
127
126
|
return a.x === b.x && a.y === b.y;
|
|
128
127
|
}
|
|
129
128
|
function requireRateSite(rate) {
|
|
129
|
+
requireInputObject(rate, "rate input");
|
|
130
130
|
if (rate.site === undefined ||
|
|
131
131
|
!Number.isSafeInteger(rate.site.x) ||
|
|
132
132
|
rate.site.x < 0 ||
|
|
@@ -253,13 +253,15 @@ function requireNonNegativeFiniteRate(value, path) {
|
|
|
253
253
|
return value;
|
|
254
254
|
}
|
|
255
255
|
/**
|
|
256
|
-
* Integrates one
|
|
257
|
-
*
|
|
256
|
+
* Integrates one response rate, declared constant, over its exact local
|
|
257
|
+
* exposure window.
|
|
258
258
|
*
|
|
259
|
-
* This
|
|
260
|
-
*
|
|
259
|
+
* This is the constant-rate approximation only. It does not sample or
|
|
260
|
+
* integrate a time-varying signal. EQE rates give expected photons and
|
|
261
|
+
* electrons; A/W rates give coulombs. Counts stay fractional.
|
|
261
262
|
*/
|
|
262
263
|
export function integrateStationarySensorRateOverLocalExposure(input) {
|
|
264
|
+
requireInputKeys(input, "integrateStationarySensorRateOverLocalExposure", ["rate", "exposureBinding", "stationarityProfile"]);
|
|
263
265
|
const binding = validateBinding(input.rate, input.exposureBinding);
|
|
264
266
|
const stationarity = parseSensorRateTemporalStationarityProfile(input.stationarityProfile);
|
|
265
267
|
validateStationarity(stationarity, input.exposureBinding, binding.rateDomain, binding.site);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant-rate-temporal-integration.js","sourceRoot":"","sources":["../../src/sensor/constant-rate-temporal-integration.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AA2IpE,SAAS,aAAa,CACpB,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACpB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,qBAAqB,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,KAAsB,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,8BAA8B,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,KAAK,GAAG,CAAC,EACT,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,uCAAuC,CAC1C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CACpB,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EACvB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,kBAAkB,CAC1B,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0CAA0C,CACxD,KAAc;IAEd,MAAM,MAAM,GAAG,aAAa,CAC1B,KAAK,EACL,gCAAgC,CACjC,CAAC;IAEF,IACE,MAAM,CAAC,aAAa,KAAK,OAAO,EAChC,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,IACE,MAAM,CAAC,UAAU;QACf,mBAAmB;QACrB,MAAM,CAAC,UAAU;YACf,2BAA2B,EAC7B,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CACxB,MAAM,CAAC,IAAI,EACX,qCAAqC,CACtC,CAAC;IACF,MAAM,mBAAmB,GACvB,aAAa,CACX,MAAM,CAAC,mBAAmB,EAC1B,oDAAoD,CACrD,CAAC;IAEJ,IACE,mBAAmB,CAAC,aAAa;QACjC,8BAA8B,EAC9B,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IAED,IACE,MAAM,CAAC,mBAAmB;QAC1B,qDAAqD,EACrD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,IACE,MAAM,CAAC,MAAM,KAAK,aAAa;QAC/B,MAAM,CAAC,MAAM,KAAK,eAAe,EACjC,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,qBAAqB,CACnB,MAAM,CAAC,UAAU,EACjB,2CAA2C,CAC5C,CAAC;IAER,IACE,MAAM,CAAC,MAAM,KAAK,eAAe;QACjC,UAAU,KAAK,SAAS,EACxB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GACT,aAAa,CACX,mBAAmB;SAChB,sCAAsC,EACzC,2FAA2F,CAC5F,CAAC;IACJ,MAAM,GAAG,GACP,aAAa,CACX,mBAAmB;SAChB,oCAAoC,EACvC,yFAAyF,CAC1F,CAAC;IAEJ,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,yBAAyB,CACjC,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO;QACtB,SAAS,EACP,qBAAqB,CACnB,MAAM,CAAC,SAAS,EAChB,0CAA0C,CAC3C;QACH,UAAU,EACR,MAAM,CAAC,UAAU;QACnB,sBAAsB,EACpB,qBAAqB,CACnB,MAAM,CAAC,sBAAsB,EAC7B,uDAAuD,CACxD;QACH,SAAS,EACP,qBAAqB,CACnB,MAAM,CAAC,SAAS,EAChB,0CAA0C,CAC3C;QACH,IAAI,EAAE;YACJ,CAAC,EAAE,6BAA6B,CAC9B,IAAI,CAAC,CAAC,EACN,uCAAuC,CACxC;YACD,CAAC,EAAE,6BAA6B,CAC9B,IAAI,CAAC,CAAC,EACN,uCAAuC,CACxC;SACF;QACD,SAAS,EACP,qBAAqB,CACnB,MAAM,CAAC,SAAS,EAChB,0CAA0C,CAC3C;QACH,mBAAmB,EAAE;YACnB,aAAa,EACX,8BAA8B;YAChC,sCAAsC,EACpC,KAAK;YACP,oCAAoC,EAClC,GAAG;SACN;QACD,mBAAmB,EACjB,qDAAqD;QACvD,MAAM,EACJ,MAAM,CAAC,MAAM;QACf,QAAQ,EACN,iBAAiB,CACf,MAAM,CAAC,QAAQ,EACf,yCAAyC,CAC1C;QACH,GAAG,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,CAA2B,EAC3B,CAA2B;IAE3B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CACtB,IAC+B;IAK/B,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACf,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACf,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACf,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAC+B,EAC/B,OACgC;IAUhC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEnC,IACE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,sBAAsB;YAC5B,IAAI,CAAC,sBAAsB;QAC7B,OAAO,CAAC,SAAS;YACf,IAAI,CAAC,SAAS,EAChB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,IAAI,CAAC,kBAAkB;QACrB,iCAAiC;QACjC,CAAC,CAAC,2BAA2B;QAC7B,CAAC,CAAC,mBAAmB,CAAC;IAE1B,IACE,OAAO,CAAC,UAAU;QAChB,UAAU;QACZ,OAAO;aACJ,mCAAmC;YACpC,IAAI;QACN,OAAO,CAAC,sBAAsB;YAC5B,IAAI;QACN,OAAO;aACJ,yCAAyC;YAC1C,KAAK;QACP,OAAO,CAAC,2BAA2B;YACjC,KAAK;QACP,OAAO,CAAC,0BAA0B;YAChC,KAAK;QACP,OAAO;aACJ,oCAAoC;YACrC,KAAK,EACP,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,IACE,OAAO,CAAC,YAAY;SACjB,iBAAiB;QAClB,IAAI,CAAC,iBAAiB;QACxB,OAAO,CAAC,YAAY;aACjB,4BAA4B;YAC7B,IAAI,CAAC,4BAA4B;QACnC,OAAO,CAAC,YAAY;aACjB,uBAAuB;YACxB,IAAI,CAAC,uBAAuB,EAC9B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED,IACE,UAAU;QACR,2BAA2B,EAC7B,CAAC;QACD,MAAM,OAAO,GACX,IAAsC,CAAC;QACzC,IACE,OAAO,CAAC,YAAY;aACjB,gCAAgC;YACnC,OAAO;iBACJ,gCAAgC,EACnC,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,4EAA4E,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IACL,OAAO,CAAC,YAAY;SACjB,gCAAgC;QACjC,SAAS,EACX,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,OAAO,CAAC,mBAAmB,CAAC;IAC9B,MAAM,QAAQ,GACZ,MAAM;SACH,oCAAoC;QACvC,MAAM;aACH,sCAAsC,CAAC;IAE5C,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1B,QAAQ,IAAI,CAAC;QACb,CAAC,MAAM,CAAC,QAAQ,CACd,OAAO,CAAC,4BAA4B,CACrC;QACD,OAAO,CAAC,4BAA4B;YAClC,QAAQ,EACV,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,YACuC,EACvC,OACgC,EAChC,UAC8C,EAC9C,IAGC;IAED,IACE,YAAY,CAAC,UAAU;QACrB,UAAU;QACZ,YAAY;aACT,sBAAsB;YACvB,OAAO,CAAC,sBAAsB;QAChC,YAAY,CAAC,SAAS;YACpB,OAAO,CAAC,SAAS;QACnB,CAAC,QAAQ,CACP,YAAY,CAAC,IAAI,EACjB,IAAI,CACL;QACD,YAAY,CAAC,SAAS;YACpB,OAAO,CAAC,SAAS;QACnB,YAAY;aACT,mBAAmB;aACnB,aAAa;YACd,OAAO,CAAC,aAAa;QACvB,YAAY;aACT,mBAAmB;aACnB,sCAAsC;YACvC,OAAO,CAAC,mBAAmB;iBACxB,sCAAsC;QAC3C,YAAY;aACT,mBAAmB;aACnB,oCAAoC;YACrC,OAAO,CAAC,mBAAmB;iBACxB,oCAAoC,EACzC,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,GAAG,CAAC,EACT,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,IAAI;YACF,oDAAoD,CACvD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8CAA8C,CAC5D,KACoC;IAEpC,MAAM,OAAO,GACX,eAAe,CACb,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,eAAe,CACtB,CAAC;IACJ,MAAM,YAAY,GAChB,0CAA0C,CACxC,KAAK,CAAC,mBAAmB,CAC1B,CAAC;IACJ,oBAAoB,CAClB,YAAY,EACZ,KAAK,CAAC,eAAe,EACrB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,IAAI,CACb,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,sBAAsB,EACpB,KAAK,CAAC,IAAI;aACP,sBAAsB;QAC3B,SAAS,EACP,KAAK,CAAC,IAAI,CAAC,SAAS;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EACP,KAAK,CAAC,eAAe,CAAC,SAAS;QACjC,qBAAqB,EACnB,YAAY,CAAC,SAAS;QACxB,kBAAkB,EAChB,YAAY,CAAC,MAAM;QACrB,aAAa,EACX,KAAK,CAAC,eAAe;aAClB,aAAa;QAClB,sCAAsC,EACpC,KAAK,CAAC,eAAe;aAClB,mBAAmB;aACnB,sCAAsC;QAC3C,oCAAoC,EAClC,KAAK,CAAC,eAAe;aAClB,mBAAmB;aACnB,oCAAoC;QACzC,4BAA4B,EAC1B,OAAO,CAAC,QAAQ;QAClB,iBAAiB,EACf,6CAAsD;QACxD,2BAA2B,EACzB,IAAa;QACf,0BAA0B,EACxB,IAAa;QACf,uBAAuB,EACrB,IAAa;QACf,2BAA2B,EACzB,KAAc;QAChB,4BAA4B,EAC1B,KAAc;QAChB,kBAAkB,EAChB,KAAc;QAChB,mBAAmB,EACjB,KAAc;QAChB,6BAA6B,EAC3B,mBAA4B;QAC9B,oCAAoC,EAClC,KAAc;QAChB,oCAAoC,EAClC,KAAc;QAChB,kBAAkB,EAChB,KAAc;QAChB,gBAAgB,EACd,KAAc;QAChB,gBAAgB,EACd,KAAc;QAChB,sBAAsB,EACpB,KAAc;QAChB,oBAAoB,EAClB,KAAc;QAChB,iBAAiB,EAAE;YACjB,YAAY,EACV,YAAY,CAAC,QAAQ;YACvB,eAAe,EACb,KAAK,CAAC,eAAe;iBAClB,iBAAiB;SACvB;KACF,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,iHAAiH;QACjH,0HAA0H;QAC1H,uMAAuM;QACvM,sLAAsL;QACtL,uJAAuJ;QACvJ,6HAA6H;QAC7H,4FAA4F;KAC7F,CAAC;IAEF,IACE,OAAO,CAAC,UAAU;QAChB,mBAAmB,EACrB,CAAC;QACD,MAAM,IAAI,GACR,KAAK,CAAC,IACiB,CAAC;QAC1B,MAAM,UAAU,GACd,4BAA4B,CAC1B,IAAI,CAAC,2BAA2B,EAChC,kCAAkC,CACnC,CAAC;QACJ,MAAM,YAAY,GAChB,4BAA4B,CAC1B,IAAI;aACD,sCAAsC,EACzC,6CAA6C,CAC9C,CAAC;QACJ,MAAM,WAAW,GACf,UAAU;YACV,OAAO,CAAC,QAAQ,CAAC;QACnB,MAAM,aAAa,GACjB,YAAY;YACZ,OAAO,CAAC,QAAQ,CAAC;QAEnB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC/B,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GACqB;YAC7B,GAAG,MAAM;YACT,IAAI,EACF,qBAAqB;YACvB,2BAA2B,EACzB,UAAU;YACZ,sCAAsC,EACpC,YAAY;YACd,2BAA2B,EACzB,WAAW;YACb,8BAA8B,EAC5B,aAAa;YACf,0BAA0B,EACxB,IAAI;YACN,yBAAyB,EACvB,KAAK;YACP,2BAA2B,EACzB,KAAK;YACP,gBAAgB,EAAE,KAAK;YACvB,iBAAiB,EAAE,KAAK;SACzB,CAAC;QAEJ,OAAO,YAAY,CAAC,MAAM;YACxB,aAAa;YACb,CAAC,CAAC,gBAAgB,CACd,MAAM,EACN,4CAA4C,EAC5C,OAAO,EACP,WAAW,CACZ;YACH,CAAC,CAAC,mBAAmB,CACjB,MAAM,EACN,4CAA4C,EAC5C,OAAO,EACP;gBACE,GAAG,WAAW;gBACd,YAAY,CAAC,UAAW;aACzB,CACF,CAAC;IACR,CAAC;IAED,MAAM,IAAI,GACR,KAAK,CAAC,IAC0B,CAAC;IACnC,MAAM,OAAO,GACX,4BAA4B,CAC1B,IAAI,CAAC,4BAA4B,EACjC,mCAAmC,CACpC,CAAC;IAEJ,IACE,IAAI,CAAC,qBAAqB;QACxB,gCAAgC;QAClC,IAAI,CAAC,wBAAwB;YAC3B,KAAK;QACP,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAC/B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,uFAAuF,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GACV,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,2BAA2B,CACnC,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAER;QACE,GAAG,MAAM;QACT,IAAI,EACF,kCAAkC;QACpC,4BAA4B,EAC1B,OAAO;QACT,4BAA4B,EAC1B,MAAM;QACR,qBAAqB,EACnB,IAAI,CAAC,qBAAqB;QAC5B,oBAAoB,EAClB,+CAA+C;QACjD,oBAAoB,EAAE,KAAK;QAC3B,uBAAuB,EACrB,KAAK;QACP,qBAAqB,EACnB,KAAK;QACP,wBAAwB,EACtB,KAAK;KACR,CAAC;IAEN,OAAO,YAAY,CAAC,MAAM;QACxB,aAAa;QACb,CAAC,CAAC,gBAAgB,CACd,MAAM,EACN,qDAAqD,EACrD,OAAO,EACP,WAAW,CACZ;QACH,CAAC,CAAC,mBAAmB,CACjB,MAAM,EACN,qDAAqD,EACrD,OAAO,EACP;YACE,GAAG,WAAW;YACd,YAAY,CAAC,UAAW;SACzB,CACF,CAAC;AACR,CAAC"}
|
|
1
|
+
{"version":3,"file":"constant-rate-temporal-integration.js","sourceRoot":"","sources":["../../src/sensor/constant-rate-temporal-integration.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Constant-rate exposure: multiplies a sensor response rate by the exposure time.\n *\n * This shortcut (rate × duration) is allowed only when the caller declares the rate constant\n * (stationary) for this exact site and local shutter interval. With EQE (external quantum\n * efficiency) the result is expected photons and electrons. With A/W responsivity it is charge in\n * coulombs, with no assumed conversion to electrons. Counts stay fractional expected values, before\n * any random sampling. Time-varying signals are not handled here.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n approximationResult,\n calculatedResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\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 type {\n SensorEqeElectronRate\n} from \"./eqe-electron-rate.js\";\nimport type {\n SensorInstantaneousRateResult,\n SensorRateLocalExposureBinding\n} from \"./local-exposure-binding.js\";\nimport type {\n SensorResponsivityPhotocurrent\n} from \"./responsivity-photocurrent.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type SensorRateStationarityStatus =\n | \"established\"\n | \"approximation\";\n\nexport interface SensorRateTemporalStationarityProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n rateDomain:\n SensorRateLocalExposureBinding[\"rateDomain\"];\n colorSamplingProfileId: string;\n channelId: string;\n site: {\n x: number;\n y: number;\n };\n bindingId: string;\n localExposureWindow: {\n timeReference:\n \"first-opening-boundary-phase\";\n startOffsetSecondsFromOpeningReference:\n number;\n endOffsetSecondsFromOpeningReference:\n number;\n };\n stationarityMeaning:\n \"reported-rate-constant-through-bound-local-exposure\";\n status:\n SensorRateStationarityStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n}\n\nexport interface IntegrateStationarySensorRateInput {\n rate:\n SensorInstantaneousRateResult;\n exposureBinding:\n SensorRateLocalExposureBinding;\n stationarityProfile:\n SensorRateTemporalStationarityProfile;\n}\n\ninterface SensorTemporalIntegrationCommon {\n colorSamplingProfileId: string;\n channelId: string;\n site: {\n x: number;\n y: number;\n };\n bindingId: string;\n stationarityProfileId: string;\n stationarityStatus:\n SensorRateStationarityStatus;\n timeReference:\n \"first-opening-boundary-phase\";\n startOffsetSecondsFromOpeningReference:\n number;\n endOffsetSecondsFromOpeningReference:\n number;\n localExposureDurationSeconds:\n number;\n integrationMethod:\n \"constant-rate-times-local-exposure-duration\";\n timeStationarityEstablished: true;\n temporalIntegrationApplied: true;\n exposureDurationApplied: true;\n timeVaryingSignalIntegrated: false;\n multiFrameSequenceIntegrated: false;\n darkChargeIncluded: false;\n otherChargeIncluded: false;\n accumulatedSignalCompleteness:\n \"photo-signal-only\";\n physicalFullWellAssessmentAuthorized:\n false;\n cameraSaturationAssessmentAuthorized:\n false;\n saturationAssessed: false;\n shotNoiseApplied: false;\n readNoiseApplied: false;\n adcQuantizationApplied: false;\n rawCodeValueProduced: false;\n componentEvidence: {\n stationarity:\n readonly EvidenceProvenance[];\n exposureBinding:\n SensorRateLocalExposureBinding[\"componentEvidence\"];\n };\n}\n\nexport interface SensorEqeExposureIntegration\n extends SensorTemporalIntegrationCommon {\n kind: \"eqe-expected-counts\";\n incidentPhotonRatePerSecond: number;\n expectedGeneratedElectronRatePerSecond:\n number;\n expectedIncidentPhotonCount: number;\n expectedGeneratedElectronCount:\n number;\n countsAreExpectationValues: true;\n integerPhotonCountSampled: false;\n integerElectronCountSampled: false;\n chargeCalculated: false;\n currentCalculated: false;\n}\n\nexport interface SensorResponsivityExposureIntegration\n extends SensorTemporalIntegrationCommon {\n kind:\n \"responsivity-photocurrent-charge\";\n photocurrentMagnitudeAmperes: number;\n photochargeMagnitudeCoulombs:\n number;\n currentSignConvention:\n \"magnitude-only-no-circuit-polarity\";\n chargeSignConvention:\n \"magnitude-only-no-carrier-or-circuit-polarity\";\n carrierCountInferred: false;\n electronCountCalculated: false;\n photonCountCalculated: false;\n detectorBandwidthModeled: false;\n}\n\nexport type SensorStationaryRateExposureIntegration =\n | SensorEqeExposureIntegration\n | SensorResponsivityExposureIntegration;\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 + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requireNonNegativeSafeInteger(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value < 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a non-negative safe integer.\"\n );\n }\n return value;\n}\n\nfunction requireFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be finite.\"\n );\n }\n return value;\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 declares that a rate is constant (stationary) for an exact site and local shutter\n * interval, which is what allows rate × duration.\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 parseSensorRateTemporalStationarityProfile(\n value: unknown\n): SensorRateTemporalStationarityProfile {\n const record = requireRecord(\n value,\n \"sensorRateTemporalStationarity\", [\"schemaVersion\", \"rateDomain\", \"site\", \"localExposureWindow\", \"stationarityMeaning\", \"status\", \"limitation\", \"profileId\", \"colorSamplingProfileId\", \"channelId\", \"bindingId\", \"evidence\"]\n );\n\n if (\n record.schemaVersion !== \"0.1.0\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorRateTemporalStationarity.schemaVersion must be \"0.1.0\".'\n );\n }\n\n if (\n record.rateDomain !==\n \"eqe-electron-rate\" &&\n record.rateDomain !==\n \"responsivity-photocurrent\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorRateTemporalStationarity.rateDomain is invalid.\"\n );\n }\n\n const site = requireRecord(\n record.site,\n \"sensorRateTemporalStationarity.site\", [\"x\", \"y\"]\n );\n const localExposureWindow =\n requireRecord(\n record.localExposureWindow,\n \"sensorRateTemporalStationarity.localExposureWindow\", [\"timeReference\", \"startOffsetSecondsFromOpeningReference\", \"endOffsetSecondsFromOpeningReference\"]\n );\n\n if (\n localExposureWindow.timeReference !==\n \"first-opening-boundary-phase\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorRateTemporalStationarity.localExposureWindow.timeReference must be \"first-opening-boundary-phase\".'\n );\n }\n\n if (\n record.stationarityMeaning !==\n \"reported-rate-constant-through-bound-local-exposure\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorRateTemporalStationarity.stationarityMeaning is invalid.\"\n );\n }\n\n if (\n record.status !== \"established\" &&\n record.status !== \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorRateTemporalStationarity.status is invalid.\"\n );\n }\n\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n \"sensorRateTemporalStationarity.limitation\"\n );\n\n if (\n record.status === \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorRateTemporalStationarity.limitation is required for an approximation.\"\n );\n }\n\n const start =\n requireFinite(\n localExposureWindow\n .startOffsetSecondsFromOpeningReference,\n \"sensorRateTemporalStationarity.localExposureWindow.startOffsetSecondsFromOpeningReference\"\n );\n const end =\n requireFinite(\n localExposureWindow\n .endOffsetSecondsFromOpeningReference,\n \"sensorRateTemporalStationarity.localExposureWindow.endOffsetSecondsFromOpeningReference\"\n );\n\n if (!(end > start)) {\n throw new InvalidConfigurationError(\n \"sensorRateTemporalStationarity.localExposureWindow end must be greater than start.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"sensorRateTemporalStationarity.profileId\"\n ),\n rateDomain:\n record.rateDomain,\n colorSamplingProfileId:\n requireNonEmptyString(\n record.colorSamplingProfileId,\n \"sensorRateTemporalStationarity.colorSamplingProfileId\"\n ),\n channelId:\n requireNonEmptyString(\n record.channelId,\n \"sensorRateTemporalStationarity.channelId\"\n ),\n site: {\n x: requireNonNegativeSafeInteger(\n site.x,\n \"sensorRateTemporalStationarity.site.x\"\n ),\n y: requireNonNegativeSafeInteger(\n site.y,\n \"sensorRateTemporalStationarity.site.y\"\n )\n },\n bindingId:\n requireNonEmptyString(\n record.bindingId,\n \"sensorRateTemporalStationarity.bindingId\"\n ),\n localExposureWindow: {\n timeReference:\n \"first-opening-boundary-phase\",\n startOffsetSecondsFromOpeningReference:\n start,\n endOffsetSecondsFromOpeningReference:\n end\n },\n stationarityMeaning:\n \"reported-rate-constant-through-bound-local-exposure\",\n status:\n record.status,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"sensorRateTemporalStationarity.evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\nfunction sameSite(\n a: { x: number; y: number },\n b: { x: number; y: number }\n): boolean {\n return a.x === b.x && a.y === b.y;\n}\n\nfunction requireRateSite(\n rate:\n SensorInstantaneousRateResult\n): {\n x: number;\n y: number;\n} {\n requireInputObject(rate, \"rate input\");\n if (\n rate.site === undefined ||\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 is required for temporal integration.\"\n );\n }\n return {\n x: rate.site.x,\n y: rate.site.y\n };\n}\n\nfunction validateBinding(\n rate:\n SensorInstantaneousRateResult,\n binding:\n SensorRateLocalExposureBinding\n): {\n rateDomain:\n SensorRateLocalExposureBinding[\"rateDomain\"];\n site: {\n x: number;\n y: number;\n };\n duration: number;\n} {\n const site = requireRateSite(rate);\n\n if (\n !sameSite(site, binding.site) ||\n binding.colorSamplingProfileId !==\n rate.colorSamplingProfileId ||\n binding.channelId !==\n rate.channelId\n ) {\n throw new InvalidScientificInputError(\n \"rate and exposureBinding must reference the same color site/channel.\"\n );\n }\n\n const rateDomain =\n rate.sourceResponseKind ===\n \"effective-spectral-responsivity\"\n ? \"responsivity-photocurrent\"\n : \"eqe-electron-rate\";\n\n if (\n binding.rateDomain !==\n rateDomain ||\n binding\n .nativeImageRasterBindingEstablished !==\n true ||\n binding.channelAtSiteValidated !==\n true ||\n binding\n .constantRateTemporalIntegrationAuthorized !==\n false ||\n binding.timeStationarityEstablished !==\n false ||\n binding.temporalIntegrationApplied !==\n false ||\n binding\n .multiFrameSequenceBindingEstablished !==\n false\n ) {\n throw new InvalidScientificInputError(\n \"exposureBinding must remain an unintegrated local timing binding for the same rate domain.\"\n );\n }\n\n if (\n binding.rateIdentity\n .responseProfileId !==\n rate.responseProfileId ||\n binding.rateIdentity\n .responseApplicationProfileId !==\n rate.responseApplicationProfileId ||\n binding.rateIdentity\n .operatingRangeProfileId !==\n rate.operatingRangeProfileId\n ) {\n throw new InvalidScientificInputError(\n \"exposureBinding response-rate identity must match the rate.\"\n );\n }\n\n if (\n rateDomain ===\n \"responsivity-photocurrent\"\n ) {\n const current =\n rate as SensorResponsivityPhotocurrent;\n if (\n binding.rateIdentity\n .electricalApplicabilityProfileId !==\n current\n .electricalApplicabilityProfileId\n ) {\n throw new InvalidScientificInputError(\n \"exposureBinding electrical applicability identity must match the A/W rate.\"\n );\n }\n } else if (\n binding.rateIdentity\n .electricalApplicabilityProfileId !==\n undefined\n ) {\n throw new InvalidScientificInputError(\n \"EQE exposureBinding must not carry an A/W electrical applicability identity.\"\n );\n }\n\n const window =\n binding.localExposureWindow;\n const duration =\n window\n .endOffsetSecondsFromOpeningReference -\n window\n .startOffsetSecondsFromOpeningReference;\n\n if (\n !Number.isFinite(duration) ||\n duration <= 0 ||\n !Number.isFinite(\n binding.localExposureDurationSeconds\n ) ||\n binding.localExposureDurationSeconds !==\n duration\n ) {\n throw new InvalidScientificInputError(\n \"exposureBinding local duration must exactly equal end minus start and remain positive.\"\n );\n }\n\n return {\n rateDomain,\n site,\n duration\n };\n}\n\nfunction validateStationarity(\n stationarity:\n SensorRateTemporalStationarityProfile,\n binding:\n SensorRateLocalExposureBinding,\n rateDomain:\n SensorRateLocalExposureBinding[\"rateDomain\"],\n site: {\n x: number;\n y: number;\n }\n): void {\n if (\n stationarity.rateDomain !==\n rateDomain ||\n stationarity\n .colorSamplingProfileId !==\n binding.colorSamplingProfileId ||\n stationarity.channelId !==\n binding.channelId ||\n !sameSite(\n stationarity.site,\n site\n ) ||\n stationarity.bindingId !==\n binding.bindingId ||\n stationarity\n .localExposureWindow\n .timeReference !==\n binding.timeReference ||\n stationarity\n .localExposureWindow\n .startOffsetSecondsFromOpeningReference !==\n binding.localExposureWindow\n .startOffsetSecondsFromOpeningReference ||\n stationarity\n .localExposureWindow\n .endOffsetSecondsFromOpeningReference !==\n binding.localExposureWindow\n .endOffsetSecondsFromOpeningReference\n ) {\n throw new InvalidScientificInputError(\n \"stationarityProfile must apply to the exact bound rate domain, site, binding, and local exposure window.\"\n );\n }\n}\n\nfunction requireNonNegativeFiniteRate(\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 InvalidScientificInputError(\n path +\n \" must be finite and greater than or equal to zero.\"\n );\n }\n return value;\n}\n\n/**\n * Integrates one response rate, declared constant, over its exact local\n * exposure window.\n *\n * This is the constant-rate approximation only. It does not sample or\n * integrate a time-varying signal. EQE rates give expected photons and\n * electrons; A/W rates give coulombs. Counts stay fractional.\n */\nexport function integrateStationarySensorRateOverLocalExposure(\n input:\n IntegrateStationarySensorRateInput\n): CalculationResult<SensorStationaryRateExposureIntegration> {\n requireInputKeys(input, \"integrateStationarySensorRateOverLocalExposure\", [\"rate\", \"exposureBinding\", \"stationarityProfile\"]);\n const binding =\n validateBinding(\n input.rate,\n input.exposureBinding\n );\n const stationarity =\n parseSensorRateTemporalStationarityProfile(\n input.stationarityProfile\n );\n validateStationarity(\n stationarity,\n input.exposureBinding,\n binding.rateDomain,\n binding.site\n );\n\n const common = {\n colorSamplingProfileId:\n input.rate\n .colorSamplingProfileId,\n channelId:\n input.rate.channelId,\n site: binding.site,\n bindingId:\n input.exposureBinding.bindingId,\n stationarityProfileId:\n stationarity.profileId,\n stationarityStatus:\n stationarity.status,\n timeReference:\n input.exposureBinding\n .timeReference,\n startOffsetSecondsFromOpeningReference:\n input.exposureBinding\n .localExposureWindow\n .startOffsetSecondsFromOpeningReference,\n endOffsetSecondsFromOpeningReference:\n input.exposureBinding\n .localExposureWindow\n .endOffsetSecondsFromOpeningReference,\n localExposureDurationSeconds:\n binding.duration,\n integrationMethod:\n \"constant-rate-times-local-exposure-duration\" as const,\n timeStationarityEstablished:\n true as const,\n temporalIntegrationApplied:\n true as const,\n exposureDurationApplied:\n true as const,\n timeVaryingSignalIntegrated:\n false as const,\n multiFrameSequenceIntegrated:\n false as const,\n darkChargeIncluded:\n false as const,\n otherChargeIncluded:\n false as const,\n accumulatedSignalCompleteness:\n \"photo-signal-only\" as const,\n physicalFullWellAssessmentAuthorized:\n false as const,\n cameraSaturationAssessmentAuthorized:\n false as const,\n saturationAssessed:\n false as const,\n shotNoiseApplied:\n false as const,\n readNoiseApplied:\n false as const,\n adcQuantizationApplied:\n false as const,\n rawCodeValueProduced:\n false as const,\n componentEvidence: {\n stationarity:\n stationarity.evidence,\n exposureBinding:\n input.exposureBinding\n .componentEvidence\n }\n };\n\n const assumptions = [\n \"The reported instantaneous rate is explicitly declared constant through this exact bound local exposure window.\",\n \"The integration is therefore rate × local duration; no temporal quadrature or time-varying signal samples are generated.\",\n \"Motion, flicker, flash, time-varying illumination/vignetting, shutter modulation and other temporal scene/optical effects are excluded unless already proven irrelevant by the stationarity evidence.\",\n \"A/W stationarity additionally treats the quasi-static detector-terminal photocurrent result as valid throughout the window; detector bandwidth/transient response remains unmodeled.\",\n \"This result contains photo-signal accumulation only. Dark current, defects, leakage, charge injection and other charge contributors are not included.\",\n \"Physical full-well and camera/digital saturation must not be assessed from this incomplete photo-signal accumulation alone.\",\n \"Shot/read noise, conversion gain, ADC/RAW conversion and reconstruction remain downstream.\"\n ];\n\n if (\n binding.rateDomain ===\n \"eqe-electron-rate\"\n ) {\n const rate =\n input.rate as\n SensorEqeElectronRate;\n const photonRate =\n requireNonNegativeFiniteRate(\n rate.incidentPhotonRatePerSecond,\n \"rate.incidentPhotonRatePerSecond\"\n );\n const electronRate =\n requireNonNegativeFiniteRate(\n rate\n .expectedGeneratedElectronRatePerSecond,\n \"rate.expectedGeneratedElectronRatePerSecond\"\n );\n const photonCount =\n photonRate *\n binding.duration;\n const electronCount =\n electronRate *\n binding.duration;\n\n if (\n !Number.isFinite(photonCount) ||\n !Number.isFinite(electronCount)\n ) {\n throw new InvalidScientificInputError(\n \"EQE constant-rate temporal integration must remain finite.\"\n );\n }\n\n const result:\n SensorEqeExposureIntegration = {\n ...common,\n kind:\n \"eqe-expected-counts\",\n incidentPhotonRatePerSecond:\n photonRate,\n expectedGeneratedElectronRatePerSecond:\n electronRate,\n expectedIncidentPhotonCount:\n photonCount,\n expectedGeneratedElectronCount:\n electronCount,\n countsAreExpectationValues:\n true,\n integerPhotonCountSampled:\n false,\n integerElectronCountSampled:\n false,\n chargeCalculated: false,\n currentCalculated: false\n };\n\n return stationarity.status ===\n \"established\"\n ? calculatedResult(\n result,\n \"sensor-stationary-eqe-exposure-integration\",\n \"1.0.0\",\n assumptions\n )\n : approximationResult(\n result,\n \"sensor-stationary-eqe-exposure-integration\",\n \"1.0.0\",\n [\n ...assumptions,\n stationarity.limitation!\n ]\n );\n }\n\n const rate =\n input.rate as\n SensorResponsivityPhotocurrent;\n const current =\n requireNonNegativeFiniteRate(\n rate.photocurrentMagnitudeAmperes,\n \"rate.photocurrentMagnitudeAmperes\"\n );\n\n if (\n rate.temporalResponseModel !==\n \"quasi-static-steady-state-only\" ||\n rate.detectorBandwidthModeled !==\n false ||\n rate.chargeCalculated !== false\n ) {\n throw new InvalidScientificInputError(\n \"A/W input must remain a quasi-static current result with no prior charge integration.\"\n );\n }\n\n const charge =\n current * binding.duration;\n if (!Number.isFinite(charge)) {\n throw new InvalidScientificInputError(\n \"A/W constant-current temporal integration must remain finite.\"\n );\n }\n\n const result:\n SensorResponsivityExposureIntegration =\n {\n ...common,\n kind:\n \"responsivity-photocurrent-charge\",\n photocurrentMagnitudeAmperes:\n current,\n photochargeMagnitudeCoulombs:\n charge,\n currentSignConvention:\n rate.currentSignConvention,\n chargeSignConvention:\n \"magnitude-only-no-carrier-or-circuit-polarity\",\n carrierCountInferred: false,\n electronCountCalculated:\n false,\n photonCountCalculated:\n false,\n detectorBandwidthModeled:\n false\n };\n\n return stationarity.status ===\n \"established\"\n ? calculatedResult(\n result,\n \"sensor-stationary-responsivity-exposure-integration\",\n \"1.0.0\",\n assumptions\n )\n : approximationResult(\n result,\n \"sensor-stationary-responsivity-exposure-integration\",\n \"1.0.0\",\n [\n ...assumptions,\n stationarity.limitation!\n ]\n );\n}\n"]}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* thermal electron rate. Exact-temperature or sampled linear interpolation is supported only within
|
|
11
|
-
* declared applicability; no universal doubling-temperature law is inferred. Population means remain
|
|
12
|
-
* approximations and do not model hot-pixel/DCNU structure.
|
|
2
|
+
* Dark current: electrons generated by heat in a sensor site even with no light, and the dark charge
|
|
3
|
+
* they add over one exposure.
|
|
4
|
+
*
|
|
5
|
+
* The dark-current rate (electrons per second, before any compensation) is declared separately as a
|
|
6
|
+
* function of temperature. It is given either at an exact temperature or as samples, interpolated
|
|
7
|
+
* log-linearly (or with the legacy linear rule) only within the declared range. No universal
|
|
8
|
+
* "doubles every N degrees" law is assumed. Rates are population means, an approximation; hot pixels
|
|
9
|
+
* and DCNU (dark-current non-uniformity) are not modelled.
|
|
13
10
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
11
|
* limits.
|
|
15
12
|
*/
|
|
@@ -34,6 +31,7 @@ export type SensorDarkCurrentTemperatureModel = {
|
|
|
34
31
|
referenceTemperatureC: number;
|
|
35
32
|
darkCurrentElectronsPerSecond: number;
|
|
36
33
|
} | {
|
|
34
|
+
/** Legacy interpolation, linear in rate. Between samples of an exponential curve it gives values that are too high. */
|
|
37
35
|
kind: "piecewise-linear-temperature-table";
|
|
38
36
|
interpolation: "piecewise-linear";
|
|
39
37
|
outsideRangeBehavior: "fail-closed";
|
|
@@ -41,6 +39,20 @@ export type SensorDarkCurrentTemperatureModel = {
|
|
|
41
39
|
temperatureC: number;
|
|
42
40
|
darkCurrentElectronsPerSecond: number;
|
|
43
41
|
}[];
|
|
42
|
+
} | {
|
|
43
|
+
/**
|
|
44
|
+
* Linear interpolation of ln(rate) between neighbouring samples. That makes the rate exponential
|
|
45
|
+
* in temperature within each interval, matching the roughly exponential (Arrhenius, or
|
|
46
|
+
* "doubling temperature") behaviour of thermally generated dark current. Rates must be strictly
|
|
47
|
+
* positive. No single doubling temperature is imposed; each interval follows its own two samples.
|
|
48
|
+
*/
|
|
49
|
+
kind: "log-linear-temperature-table";
|
|
50
|
+
interpolation: "log-linear";
|
|
51
|
+
outsideRangeBehavior: "fail-closed";
|
|
52
|
+
samples: readonly {
|
|
53
|
+
temperatureC: number;
|
|
54
|
+
darkCurrentElectronsPerSecond: number;
|
|
55
|
+
}[];
|
|
44
56
|
};
|
|
45
57
|
export interface SensorDarkCurrentProfile {
|
|
46
58
|
schemaVersion: "0.1.0";
|
|
@@ -97,7 +109,7 @@ export interface SensorDarkCurrentCharge {
|
|
|
97
109
|
exposure: SensorEqeExposureIntegration["componentEvidence"];
|
|
98
110
|
};
|
|
99
111
|
}
|
|
100
|
-
/** Dark charge
|
|
112
|
+
/** Dark charge for the exact same time-resolved photo event. It has no stationarity ID. */
|
|
101
113
|
export type SensorTemporalDarkCurrentCharge = Omit<SensorDarkCurrentCharge, "stationarityProfileId" | "temporalIntegrationId" | "componentEvidence"> & {
|
|
102
114
|
stationarityProfileId?: never;
|
|
103
115
|
temporalIntegrationId: string;
|
|
@@ -107,63 +119,55 @@ export type SensorTemporalDarkCurrentCharge = Omit<SensorDarkCurrentCharge, "sta
|
|
|
107
119
|
};
|
|
108
120
|
export type SensorPhotoDarkCurrentCharge = SensorDarkCurrentCharge | SensorTemporalDarkCurrentCharge;
|
|
109
121
|
/**
|
|
110
|
-
*
|
|
111
|
-
* missing required fields and
|
|
122
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
123
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
112
124
|
*
|
|
113
|
-
*
|
|
114
|
-
* or
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* @
|
|
118
|
-
* @returns SensorDarkCurrentProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
125
|
+
* The profile declares the dark-current rate (before compensation) against temperature, at an exact
|
|
126
|
+
* temperature or as samples. Interpolation (log-linear, or the legacy linear rule) is allowed only
|
|
127
|
+
* within the declared range. No universal doubling-temperature law is assumed.
|
|
128
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
129
|
+
* @returns The result. Success does not imply calibration.
|
|
119
130
|
*
|
|
120
|
-
* @see docs/API_REFERENCE.md for the
|
|
131
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
121
132
|
*/
|
|
122
133
|
export declare function parseSensorDarkCurrentProfile(value: unknown): SensorDarkCurrentProfile;
|
|
123
134
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
135
|
+
* Evaluates the declared dark-current rate at the sensor temperature and integrates it over the exact
|
|
136
|
+
* local exposure of the photo signal.
|
|
126
137
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
* @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeExposureIntegration }. See the linked contract for coordinate, unit and profile binding semantics.
|
|
132
|
-
* @returns CalculationResult<SensorDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
138
|
+
* The rate is a population mean, an approximation. Hot pixels and DCNU (dark-current non-uniformity)
|
|
139
|
+
* are not modelled. No universal doubling-temperature law is assumed.
|
|
140
|
+
* @param input - Dark-current input whose exposure is a per-exposure photo signal (SensorEqeExposureIntegration); see `CalculateSensorDarkCurrentChargeInput`.
|
|
141
|
+
* @returns The result. Success does not imply calibration.
|
|
133
142
|
*
|
|
134
|
-
* @see docs/API_REFERENCE.md for the
|
|
143
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
135
144
|
*/
|
|
136
145
|
export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
|
|
137
146
|
exposure: SensorEqeExposureIntegration;
|
|
138
147
|
}): CalculationResult<SensorDarkCurrentCharge>;
|
|
139
148
|
/**
|
|
140
|
-
*
|
|
141
|
-
*
|
|
149
|
+
* Evaluates the declared dark-current rate at the sensor temperature and integrates it over the exact
|
|
150
|
+
* local exposure of the photo signal.
|
|
142
151
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeTemporalPhotoSignal }. See the linked contract for coordinate, unit and profile binding semantics.
|
|
148
|
-
* @returns CalculationResult<SensorTemporalDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
152
|
+
* The rate is a population mean, an approximation. Hot pixels and DCNU (dark-current non-uniformity)
|
|
153
|
+
* are not modelled. No universal doubling-temperature law is assumed.
|
|
154
|
+
* @param input - Dark-current input whose exposure is a time-resolved photo signal (SensorEqeTemporalPhotoSignal); see `CalculateSensorDarkCurrentChargeInput`.
|
|
155
|
+
* @returns The result. Success does not imply calibration.
|
|
149
156
|
*
|
|
150
|
-
* @see docs/API_REFERENCE.md for the
|
|
157
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
151
158
|
*/
|
|
152
159
|
export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
|
|
153
160
|
exposure: SensorEqeTemporalPhotoSignal;
|
|
154
161
|
}): CalculationResult<SensorTemporalDarkCurrentCharge>;
|
|
155
162
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
163
|
+
* Evaluates the declared dark-current rate at the sensor temperature and integrates it over the exact
|
|
164
|
+
* local exposure of the photo signal.
|
|
158
165
|
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
* @param input - CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>. See the linked contract for coordinate, unit and profile binding semantics.
|
|
164
|
-
* @returns CalculationResult<SensorPhotoDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
166
|
+
* The rate is a population mean, an approximation. Hot pixels and DCNU (dark-current non-uniformity)
|
|
167
|
+
* are not modelled. No universal doubling-temperature law is assumed.
|
|
168
|
+
* @param input - The input; see `CalculateSensorDarkCurrentChargeInput` for its fields, units and coordinates.
|
|
169
|
+
* @returns The result. Success does not imply calibration.
|
|
165
170
|
*
|
|
166
|
-
* @see docs/API_REFERENCE.md for the
|
|
171
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
167
172
|
*/
|
|
168
173
|
export declare function calculateSensorDarkCurrentCharge(input: CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>): CalculationResult<SensorPhotoDarkCurrentCharge>;
|
|
169
|
-
//# sourceMappingURL=dark-current.d.ts.map
|