@photivra/engine 0.6.0 → 1.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/AGENTS.md +674 -0
- package/CHANGELOG.md +186 -0
- package/CITATION.cff +1 -1
- package/CONTRIBUTING.md +76 -0
- package/DCO +33 -0
- package/NODE_SUPPORT.md +37 -0
- package/NOTICE +2 -0
- package/README.md +138 -71
- package/SECURITY.md +55 -0
- package/THIRD_PARTY.md +63 -0
- package/dist/camera/equivalent-focal-length.d.ts +9 -0
- package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
- package/dist/camera/equivalent-focal-length.js +9 -0
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +13 -0
- package/dist/camera/field-of-view.d.ts.map +1 -1
- package/dist/camera/field-of-view.js +13 -0
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/projected-object-size.d.ts +8 -0
- package/dist/camera/projected-object-size.d.ts.map +1 -1
- package/dist/camera/projected-object-size.js +8 -0
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +60 -0
- package/dist/capture/capture-export-metadata.d.ts.map +1 -0
- package/dist/capture/capture-export-metadata.js +62 -0
- package/dist/capture/capture-export-metadata.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +55 -0
- package/dist/capture/environment-raw-producer.d.ts.map +1 -0
- package/dist/capture/environment-raw-producer.js +88 -0
- package/dist/capture/environment-raw-producer.js.map +1 -0
- package/dist/capture/export-jpeg.d.ts +12 -0
- package/dist/capture/export-jpeg.d.ts.map +1 -0
- package/dist/capture/export-jpeg.js +126 -0
- package/dist/capture/export-jpeg.js.map +1 -0
- package/dist/capture/export-tiff.d.ts +45 -0
- package/dist/capture/export-tiff.d.ts.map +1 -0
- package/dist/capture/export-tiff.js +129 -0
- package/dist/capture/export-tiff.js.map +1 -0
- package/dist/capture/focus-control.d.ts +210 -0
- package/dist/capture/focus-control.d.ts.map +1 -0
- package/dist/capture/focus-control.js +664 -0
- package/dist/capture/focus-control.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +59 -0
- package/dist/capture/linear-encoding.d.ts.map +1 -0
- package/dist/capture/linear-encoding.js +98 -0
- package/dist/capture/linear-encoding.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +135 -0
- package/dist/capture/photographic-export.d.ts.map +1 -0
- package/dist/capture/photographic-export.js +273 -0
- package/dist/capture/photographic-export.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +12 -0
- package/dist/capture/raw-frame-limits.d.ts.map +1 -0
- package/dist/capture/raw-frame-limits.js +13 -0
- package/dist/capture/raw-frame-limits.js.map +1 -0
- package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
- package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
- package/dist/capture/raw-frame-reconstruction.js +146 -0
- package/dist/capture/raw-frame-reconstruction.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +120 -0
- package/dist/capture/release-sequence.d.ts.map +1 -0
- package/dist/capture/release-sequence.js +446 -0
- package/dist/capture/release-sequence.js.map +1 -0
- package/dist/capture/sensor-raw-frame.d.ts +34 -0
- package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
- package/dist/capture/sensor-raw-frame.js +106 -0
- package/dist/capture/sensor-raw-frame.js.map +1 -0
- package/dist/capture/sensor-raw-producer.d.ts +51 -0
- package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
- package/dist/capture/sensor-raw-producer.js +235 -0
- package/dist/capture/sensor-raw-producer.js.map +1 -0
- package/dist/capture/simulated-capture.d.ts +125 -0
- package/dist/capture/simulated-capture.d.ts.map +1 -0
- package/dist/capture/simulated-capture.js +248 -0
- package/dist/capture/simulated-capture.js.map +1 -0
- package/dist/color/capture-color.d.ts +73 -0
- package/dist/color/capture-color.d.ts.map +1 -0
- package/dist/color/capture-color.js +145 -0
- package/dist/color/capture-color.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +23 -0
- package/dist/color/sensor-color-development.d.ts.map +1 -0
- package/dist/color/sensor-color-development.js +56 -0
- package/dist/color/sensor-color-development.js.map +1 -0
- package/dist/color/white-balance.d.ts +175 -0
- package/dist/color/white-balance.d.ts.map +1 -0
- package/dist/color/white-balance.js +606 -0
- package/dist/color/white-balance.js.map +1 -0
- package/dist/composition/image-formation-plan.d.ts +481 -0
- package/dist/composition/image-formation-plan.d.ts.map +1 -0
- package/dist/composition/image-formation-plan.js +2499 -0
- package/dist/composition/image-formation-plan.js.map +1 -0
- package/dist/composition/plan-consumer.d.ts +53 -0
- package/dist/composition/plan-consumer.d.ts.map +1 -0
- package/dist/composition/plan-consumer.js +119 -0
- package/dist/composition/plan-consumer.js.map +1 -0
- package/dist/core/calculation-result.d.ts.map +1 -1
- package/dist/core/calculation-result.js +6 -0
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +18 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +44 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/configuration-error.d.ts +6 -0
- package/dist/core/configuration-error.d.ts.map +1 -1
- package/dist/core/configuration-error.js +6 -0
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +6 -0
- package/dist/core/evidence-provenance.d.ts.map +1 -1
- package/dist/core/evidence-provenance.js +7 -0
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +9 -3
- package/dist/core/image-formation.d.ts.map +1 -1
- package/dist/core/image-formation.js +29 -5
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +25 -0
- package/dist/core/owned-data.d.ts.map +1 -0
- package/dist/core/owned-data.js +34 -0
- package/dist/core/owned-data.js.map +1 -0
- package/dist/core/record-validation.d.ts +17 -0
- package/dist/core/record-validation.d.ts.map +1 -0
- package/dist/core/record-validation.js +44 -0
- package/dist/core/record-validation.js.map +1 -0
- package/dist/core/scientific-assurance.d.ts +101 -0
- package/dist/core/scientific-assurance.d.ts.map +1 -0
- package/dist/core/scientific-assurance.js +301 -0
- package/dist/core/scientific-assurance.js.map +1 -0
- package/dist/core/spectral-composition.d.ts +106 -0
- package/dist/core/spectral-composition.d.ts.map +1 -0
- package/dist/core/spectral-composition.js +334 -0
- package/dist/core/spectral-composition.js.map +1 -0
- package/dist/core/spectral.d.ts +34 -0
- package/dist/core/spectral.d.ts.map +1 -0
- package/dist/core/spectral.js +57 -0
- package/dist/core/spectral.js.map +1 -0
- package/dist/core/validation.d.ts +6 -0
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +6 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +14 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +15 -0
- package/dist/core/version.js.map +1 -0
- package/dist/equipment/exposure-capabilities.d.ts +125 -0
- package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
- package/dist/equipment/exposure-capabilities.js +391 -0
- package/dist/equipment/exposure-capabilities.js.map +1 -0
- package/dist/equipment/generic-tier-assets.d.ts +82 -0
- package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-assets.js +119 -0
- package/dist/equipment/generic-tier-assets.js.map +1 -0
- package/dist/equipment/generic-tier-presets.d.ts +57 -0
- package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-presets.js +122 -0
- package/dist/equipment/generic-tier-presets.js.map +1 -0
- package/dist/equipment/iso-capabilities.d.ts +143 -0
- package/dist/equipment/iso-capabilities.d.ts.map +1 -0
- package/dist/equipment/iso-capabilities.js +578 -0
- package/dist/equipment/iso-capabilities.js.map +1 -0
- package/dist/equipment/metering-capabilities.d.ts +58 -0
- package/dist/equipment/metering-capabilities.d.ts.map +1 -0
- package/dist/equipment/metering-capabilities.js +151 -0
- package/dist/equipment/metering-capabilities.js.map +1 -0
- package/dist/equipment/release-capabilities.d.ts +33 -0
- package/dist/equipment/release-capabilities.d.ts.map +1 -0
- package/dist/equipment/release-capabilities.js +176 -0
- package/dist/equipment/release-capabilities.js.map +1 -0
- package/dist/exposure/exposure-duration-control.d.ts +72 -0
- package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
- package/dist/exposure/exposure-duration-control.js +161 -0
- package/dist/exposure/exposure-duration-control.js.map +1 -0
- package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
- package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
- package/dist/exposure/exposure-mode-resolver.js +1905 -0
- package/dist/exposure/exposure-mode-resolver.js.map +1 -0
- package/dist/exposure/exposure.d.ts +8 -0
- package/dist/exposure/exposure.d.ts.map +1 -1
- package/dist/exposure/exposure.js +8 -0
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash.d.ts +179 -0
- package/dist/exposure/flash.d.ts.map +1 -0
- package/dist/exposure/flash.js +644 -0
- package/dist/exposure/flash.js.map +1 -0
- package/dist/exposure/metering-scene-radiance.d.ts +72 -0
- package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
- package/dist/exposure/metering-scene-radiance.js +222 -0
- package/dist/exposure/metering-scene-radiance.js.map +1 -0
- package/dist/exposure/metering-target.d.ts +67 -0
- package/dist/exposure/metering-target.d.ts.map +1 -0
- package/dist/exposure/metering-target.js +265 -0
- package/dist/exposure/metering-target.js.map +1 -0
- package/dist/exposure/metering-temporal.d.ts +76 -0
- package/dist/exposure/metering-temporal.d.ts.map +1 -0
- package/dist/exposure/metering-temporal.js +210 -0
- package/dist/exposure/metering-temporal.js.map +1 -0
- package/dist/exposure/metering.d.ts +124 -0
- package/dist/exposure/metering.d.ts.map +1 -0
- package/dist/exposure/metering.js +422 -0
- package/dist/exposure/metering.js.map +1 -0
- package/dist/exposure/program-line.d.ts +29 -0
- package/dist/exposure/program-line.d.ts.map +1 -0
- package/dist/exposure/program-line.js +126 -0
- package/dist/exposure/program-line.js.map +1 -0
- package/dist/index.d.ts +87 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -6
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +16 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +16 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
- package/dist/motion/capture-rotation-trajectory.js +15 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
- package/dist/motion/extended-object-projection.d.ts +175 -0
- package/dist/motion/extended-object-projection.d.ts.map +1 -0
- package/dist/motion/extended-object-projection.js +402 -0
- package/dist/motion/extended-object-projection.js.map +1 -0
- package/dist/motion/projected-motion.d.ts +11 -0
- package/dist/motion/projected-motion.d.ts.map +1 -1
- package/dist/motion/projected-motion.js +11 -0
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/optics/aperture.d.ts +9 -0
- package/dist/optics/aperture.d.ts.map +1 -1
- package/dist/optics/aperture.js +9 -0
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/circle-of-confusion.d.ts +8 -0
- package/dist/optics/circle-of-confusion.d.ts.map +1 -1
- package/dist/optics/circle-of-confusion.js +8 -0
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +128 -0
- package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
- package/dist/optics/complex-pupil-psf.js +462 -0
- package/dist/optics/complex-pupil-psf.js.map +1 -0
- package/dist/optics/depth-of-field.d.ts +18 -0
- package/dist/optics/depth-of-field.d.ts.map +1 -1
- package/dist/optics/depth-of-field.js +29 -4
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +8 -0
- package/dist/optics/diffraction.d.ts.map +1 -1
- package/dist/optics/diffraction.js +8 -0
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +13 -0
- package/dist/optics/focus-breathing.d.ts.map +1 -1
- package/dist/optics/focus-breathing.js +13 -0
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +47 -0
- package/dist/optics/focus-state.d.ts.map +1 -0
- package/dist/optics/focus-state.js +78 -0
- package/dist/optics/focus-state.js.map +1 -0
- package/dist/optics/front-of-lens-filter.d.ts +114 -0
- package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
- package/dist/optics/front-of-lens-filter.js +468 -0
- package/dist/optics/front-of-lens-filter.js.map +1 -0
- package/dist/optics/illumination-vignetting.d.ts +9 -0
- package/dist/optics/illumination-vignetting.d.ts.map +1 -1
- package/dist/optics/illumination-vignetting.js +9 -0
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.js +11 -0
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-profile.d.ts +217 -0
- package/dist/optics/lens-psf-profile.d.ts.map +1 -0
- package/dist/optics/lens-psf-profile.js +823 -0
- package/dist/optics/lens-psf-profile.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +67 -0
- package/dist/optics/polygon-diffraction.d.ts.map +1 -0
- package/dist/optics/polygon-diffraction.js +145 -0
- package/dist/optics/polygon-diffraction.js.map +1 -0
- package/dist/optics/profile-contract.d.ts +42 -0
- package/dist/optics/profile-contract.d.ts.map +1 -0
- package/dist/optics/profile-contract.js +92 -0
- package/dist/optics/profile-contract.js.map +1 -0
- package/dist/optics/psf-foundation.d.ts +16 -3
- package/dist/optics/psf-foundation.d.ts.map +1 -1
- package/dist/optics/psf-foundation.js +28 -15
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/radial-distortion.d.ts +18 -0
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +18 -0
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-irradiance.js +662 -0
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.js +82 -0
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
- package/dist/optics/sensor-environment-query.d.ts +60 -0
- package/dist/optics/sensor-environment-query.d.ts.map +1 -0
- package/dist/optics/sensor-environment-query.js +50 -0
- package/dist/optics/sensor-environment-query.js.map +1 -0
- package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
- package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
- package/dist/optics/sensor-psf-quadrature.js +101 -0
- package/dist/optics/sensor-psf-quadrature.js.map +1 -0
- package/dist/optics/sensor-psf-support.d.ts +20 -0
- package/dist/optics/sensor-psf-support.d.ts.map +1 -0
- package/dist/optics/sensor-psf-support.js +13 -0
- package/dist/optics/sensor-psf-support.js.map +1 -0
- package/dist/optics/stray-light.d.ts +91 -0
- package/dist/optics/stray-light.d.ts.map +1 -0
- package/dist/optics/stray-light.js +110 -0
- package/dist/optics/stray-light.js.map +1 -0
- package/dist/optics/thin-lens.d.ts +8 -0
- package/dist/optics/thin-lens.d.ts.map +1 -1
- package/dist/optics/thin-lens.js +8 -0
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/output/capture-corrected-sdr.d.ts +49 -0
- package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
- package/dist/output/capture-corrected-sdr.js +149 -0
- package/dist/output/capture-corrected-sdr.js.map +1 -0
- package/dist/output/capture-geometry.d.ts.map +1 -1
- package/dist/output/capture-geometry.js +8 -0
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +49 -0
- package/dist/output/capture-sdr.d.ts.map +1 -0
- package/dist/output/capture-sdr.js +90 -0
- package/dist/output/capture-sdr.js.map +1 -0
- package/dist/output/crop.d.ts +6 -0
- package/dist/output/crop.d.ts.map +1 -1
- package/dist/output/crop.js +6 -0
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +137 -0
- package/dist/output/geometric-transforms.d.ts.map +1 -0
- package/dist/output/geometric-transforms.js +225 -0
- package/dist/output/geometric-transforms.js.map +1 -0
- package/dist/output/lens-corrections.d.ts +121 -0
- package/dist/output/lens-corrections.d.ts.map +1 -0
- package/dist/output/lens-corrections.js +210 -0
- package/dist/output/lens-corrections.js.map +1 -0
- package/dist/output/sdr-rendering.d.ts +81 -0
- package/dist/output/sdr-rendering.d.ts.map +1 -0
- package/dist/output/sdr-rendering.js +106 -0
- package/dist/output/sdr-rendering.js.map +1 -0
- package/dist/output/subject-framing-crop.d.ts +8 -0
- package/dist/output/subject-framing-crop.d.ts.map +1 -1
- package/dist/output/subject-framing-crop.js +8 -0
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/schema/camera.d.ts +6 -0
- package/dist/schema/camera.d.ts.map +1 -1
- package/dist/schema/illumination-spectral.d.ts +51 -0
- package/dist/schema/illumination-spectral.d.ts.map +1 -0
- package/dist/schema/illumination-spectral.js +132 -0
- package/dist/schema/illumination-spectral.js.map +1 -0
- package/dist/schema/illumination-temporal.d.ts +156 -0
- package/dist/schema/illumination-temporal.d.ts.map +1 -0
- package/dist/schema/illumination-temporal.js +554 -0
- package/dist/schema/illumination-temporal.js.map +1 -0
- package/dist/schema/illumination.d.ts +138 -0
- package/dist/schema/illumination.d.ts.map +1 -0
- package/dist/schema/illumination.js +483 -0
- package/dist/schema/illumination.js.map +1 -0
- package/dist/schema/scene-radiance-temporal.d.ts +107 -0
- package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
- package/dist/schema/scene-radiance-temporal.js +259 -0
- package/dist/schema/scene-radiance-temporal.js.map +1 -0
- package/dist/schema/scene-radiance.d.ts +185 -0
- package/dist/schema/scene-radiance.d.ts.map +1 -0
- package/dist/schema/scene-radiance.js +535 -0
- package/dist/schema/scene-radiance.js.map +1 -0
- package/dist/schema/scene.d.ts +7 -0
- package/dist/schema/scene.d.ts.map +1 -1
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +7 -0
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +199 -0
- package/dist/sensor/accumulated-charge.d.ts.map +1 -0
- package/dist/sensor/accumulated-charge.js +450 -0
- package/dist/sensor/accumulated-charge.js.map +1 -0
- package/dist/sensor/architecture.d.ts +48 -13
- package/dist/sensor/architecture.d.ts.map +1 -1
- package/dist/sensor/architecture.js +58 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
- package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
- package/dist/sensor/camera-saturation-capacity.js +356 -0
- package/dist/sensor/camera-saturation-capacity.js.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.js +14 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +63 -0
- package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
- package/dist/sensor/capture-mode-timing.js +270 -0
- package/dist/sensor/capture-mode-timing.js.map +1 -0
- package/dist/sensor/capture-mode.d.ts.map +1 -1
- package/dist/sensor/capture-mode.js +13 -0
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts.map +1 -1
- package/dist/sensor/color-sampling.js +19 -0
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.js +382 -0
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
- package/dist/sensor/dark-current.d.ts +169 -0
- package/dist/sensor/dark-current.d.ts.map +1 -0
- package/dist/sensor/dark-current.js +427 -0
- package/dist/sensor/dark-current.js.map +1 -0
- package/dist/sensor/environment-photo-signal.d.ts +123 -0
- package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
- package/dist/sensor/environment-photo-signal.js +186 -0
- package/dist/sensor/environment-photo-signal.js.map +1 -0
- package/dist/sensor/eqe-electron-rate.d.ts +107 -0
- package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
- package/dist/sensor/eqe-electron-rate.js +561 -0
- package/dist/sensor/eqe-electron-rate.js.map +1 -0
- package/dist/sensor/eqe-local-exposure.d.ts +65 -0
- package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-local-exposure.js +84 -0
- package/dist/sensor/eqe-local-exposure.js.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.js +62 -0
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/exposure-window.d.ts +14 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -1
- package/dist/sensor/exposure-window.js +14 -0
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/iso-signal-chain.d.ts +148 -0
- package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
- package/dist/sensor/iso-signal-chain.js +411 -0
- package/dist/sensor/iso-signal-chain.js.map +1 -0
- package/dist/sensor/local-exposure-binding.d.ts +87 -0
- package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
- package/dist/sensor/local-exposure-binding.js +214 -0
- package/dist/sensor/local-exposure-binding.js.map +1 -0
- package/dist/sensor/optical-stack.d.ts.map +1 -1
- package/dist/sensor/optical-stack.js +17 -0
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +97 -0
- package/dist/sensor/photon-energy.d.ts.map +1 -0
- package/dist/sensor/photon-energy.js +390 -0
- package/dist/sensor/photon-energy.js.map +1 -0
- package/dist/sensor/physical-charge-capacity.d.ts +130 -0
- package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
- package/dist/sensor/physical-charge-capacity.js +345 -0
- package/dist/sensor/physical-charge-capacity.js.map +1 -0
- package/dist/sensor/pixel-pitch.d.ts +6 -0
- package/dist/sensor/pixel-pitch.d.ts.map +1 -1
- package/dist/sensor/pixel-pitch.js +6 -0
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +10 -0
- package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
- package/dist/sensor/radiometry-readiness.js +10 -0
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +314 -0
- package/dist/sensor/raw-readout.d.ts.map +1 -0
- package/dist/sensor/raw-readout.js +914 -0
- package/dist/sensor/raw-readout.js.map +1 -0
- package/dist/sensor/raw-reconstruction.d.ts +170 -0
- package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
- package/dist/sensor/raw-reconstruction.js +424 -0
- package/dist/sensor/raw-reconstruction.js.map +1 -0
- package/dist/sensor/readout-exposure-linkage.d.ts +12 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
- package/dist/sensor/readout-exposure-linkage.js +12 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +13 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -1
- package/dist/sensor/readout-timing.js +13 -0
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +136 -0
- package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
- package/dist/sensor/response-application-compatibility.js +408 -0
- package/dist/sensor/response-application-compatibility.js.map +1 -0
- package/dist/sensor/response-operating-range.d.ts +173 -0
- package/dist/sensor/response-operating-range.d.ts.map +1 -0
- package/dist/sensor/response-operating-range.js +672 -0
- package/dist/sensor/response-operating-range.js.map +1 -0
- package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
- package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
- package/dist/sensor/responsivity-photocurrent.js +644 -0
- package/dist/sensor/responsivity-photocurrent.js.map +1 -0
- package/dist/sensor/sampling-aperture.d.ts.map +1 -1
- package/dist/sensor/sampling-aperture.js +14 -0
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/sensor-geometry.d.ts +12 -0
- package/dist/sensor/sensor-geometry.d.ts.map +1 -1
- package/dist/sensor/sensor-geometry.js +12 -0
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +10 -0
- package/dist/sensor/signal-noise.d.ts.map +1 -1
- package/dist/sensor/signal-noise.js +10 -0
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +44 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
- package/dist/sensor/spatial-sample-reduction.js +51 -5
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.js +27 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.js +373 -0
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
- package/dist/sensor/spectral-coverage.d.ts +24 -0
- package/dist/sensor/spectral-coverage.d.ts.map +1 -0
- package/dist/sensor/spectral-coverage.js +86 -0
- package/dist/sensor/spectral-coverage.js.map +1 -0
- package/dist/sensor/spectral-quadrature.d.ts +169 -0
- package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
- package/dist/sensor/spectral-quadrature.js +542 -0
- package/dist/sensor/spectral-quadrature.js.map +1 -0
- package/dist/sensor/spectral-response.d.ts +192 -0
- package/dist/sensor/spectral-response.d.ts.map +1 -0
- package/dist/sensor/spectral-response.js +664 -0
- package/dist/sensor/spectral-response.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
- package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
- package/dist/sensor/temporal-eqe-sum.js +30 -0
- package/dist/sensor/temporal-eqe-sum.js.map +1 -0
- package/dist/sensor/temporal-photo-signal.d.ts +38 -0
- package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
- package/dist/sensor/temporal-photo-signal.js +110 -0
- package/dist/sensor/temporal-photo-signal.js.map +1 -0
- package/dist/sensor/temporal-sample-binding.d.ts +6 -0
- package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
- package/dist/sensor/temporal-sample-binding.js +32 -0
- package/dist/sensor/temporal-sample-binding.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts.map +1 -1
- package/dist/simulation/poc-simulation.js +34 -11
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +11 -0
- package/dist/stabilization/camera-shake.d.ts.map +1 -1
- package/dist/stabilization/camera-shake.js +11 -0
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +218 -0
- package/dist/stabilization/system.d.ts.map +1 -0
- package/dist/stabilization/system.js +695 -0
- package/dist/stabilization/system.js.map +1 -0
- package/docs/API_REFERENCE.md +2017 -0
- package/docs/API_STYLE.md +132 -0
- package/docs/ARCHITECTURE.md +134 -24
- package/docs/AUTOMATION_COORDINATION.md +2 -0
- package/docs/CAPTURE_COLOR.md +25 -0
- package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
- package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
- package/docs/CAPTURE_SDR.md +20 -0
- package/docs/DEVELOPERS.md +60 -0
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
- package/docs/EXPORT_ACCEPTANCE.md +133 -0
- package/docs/GENERIC_TIER_PRESETS.md +269 -0
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
- package/docs/IMAGE_FORMATION.md +80 -10
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +5 -3
- package/docs/NUMERICAL_CORRECTNESS.md +191 -0
- package/docs/PERFORMANCE_BASELINE.md +56 -0
- package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
- package/docs/PHYSICS_FOUNDATION.md +152 -5
- package/docs/POC_API.md +2 -0
- package/docs/POC_PROJECTION_REUSE.md +124 -0
- package/docs/PROCESSED_OUTPUT.md +157 -0
- package/docs/PRODUCTION_COMPOSITION.md +373 -0
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
- package/docs/PROVENANCE.md +4 -0
- package/docs/PSF_FOUNDATION.md +110 -88
- package/docs/RAW_FRAME_ENVELOPE.md +56 -0
- package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
- package/docs/RELEASE_1_0.md +65 -0
- package/docs/RELEASE_AUDIT.md +38 -0
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
- package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
- package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
- package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
- package/docs/SDR_RENDERING.md +33 -0
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
- package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
- package/docs/SENSOR_RAW_FRAME.md +20 -0
- package/docs/SENSOR_RAW_PRODUCER.md +77 -0
- package/docs/SIGNAL_CONFORMANCE.md +23 -0
- package/docs/SIMULATED_CAPTURE.md +65 -0
- package/docs/STABILIZATION.md +160 -17
- package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
- package/docs/TIER_ACCEPTANCE.md +129 -0
- package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
- package/docs/USAGE.md +5050 -1047
- package/docs/V1_COMPOSITION_MAP.md +123 -0
- package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
- package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
- package/docs/api/camera-equivalent-focal-length.md +53 -0
- package/docs/api/camera-field-of-view.md +119 -0
- package/docs/api/camera-projected-object-size.md +54 -0
- package/docs/api/capture-capture-export-metadata.md +107 -0
- package/docs/api/capture-environment-raw-producer.md +56 -0
- package/docs/api/capture-focus-control.md +419 -0
- package/docs/api/capture-linear-encoding.md +99 -0
- package/docs/api/capture-photographic-export.md +172 -0
- package/docs/api/capture-raw-frame-reconstruction.md +87 -0
- package/docs/api/capture-release-sequence.md +252 -0
- package/docs/api/capture-sensor-raw-frame.md +66 -0
- package/docs/api/capture-sensor-raw-producer.md +98 -0
- package/docs/api/capture-simulated-capture.md +179 -0
- package/docs/api/color-capture-color.md +122 -0
- package/docs/api/color-white-balance.md +386 -0
- package/docs/api/composition-image-formation-plan.md +825 -0
- package/docs/api/composition-plan-consumer.md +98 -0
- package/docs/api/core-calculation-result.md +220 -0
- package/docs/api/core-configuration-error.md +19 -0
- package/docs/api/core-image-formation.md +204 -0
- package/docs/api/core-scientific-assurance.md +214 -0
- package/docs/api/core-spectral-composition.md +268 -0
- package/docs/api/core-spectral.md +78 -0
- package/docs/api/core-validation.md +34 -0
- package/docs/api/core-version.md +14 -0
- package/docs/api/equipment-exposure-capabilities.md +270 -0
- package/docs/api/equipment-generic-tier-assets.md +82 -0
- package/docs/api/equipment-generic-tier-presets.md +103 -0
- package/docs/api/equipment-iso-capabilities.md +295 -0
- package/docs/api/equipment-metering-capabilities.md +126 -0
- package/docs/api/equipment-release-capabilities.md +91 -0
- package/docs/api/exports.json +5656 -0
- package/docs/api/exposure-exposure-duration-control.md +115 -0
- package/docs/api/exposure-exposure-mode-resolver.md +966 -0
- package/docs/api/exposure-exposure.md +150 -0
- package/docs/api/exposure-flash.md +327 -0
- package/docs/api/exposure-metering-scene-radiance.md +154 -0
- package/docs/api/exposure-metering-target.md +134 -0
- package/docs/api/exposure-metering-temporal.md +77 -0
- package/docs/api/exposure-metering.md +172 -0
- package/docs/api/exposure-program-line.md +64 -0
- package/docs/api/motion-camera-rotation.md +215 -0
- package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
- package/docs/api/motion-capture-rotation-trajectory.md +132 -0
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
- package/docs/api/motion-extended-object-projection.md +312 -0
- package/docs/api/motion-projected-motion.md +60 -0
- package/docs/api/optics-aperture.md +69 -0
- package/docs/api/optics-circle-of-confusion.md +46 -0
- package/docs/api/optics-complex-pupil-psf.md +193 -0
- package/docs/api/optics-depth-of-field.md +92 -0
- package/docs/api/optics-diffraction.md +46 -0
- package/docs/api/optics-focus-breathing.md +119 -0
- package/docs/api/optics-focus-state.md +64 -0
- package/docs/api/optics-front-of-lens-filter.md +263 -0
- package/docs/api/optics-illumination-vignetting.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
- package/docs/api/optics-lens-psf-profile.md +380 -0
- package/docs/api/optics-polygon-diffraction.md +68 -0
- package/docs/api/optics-profile-contract.md +47 -0
- package/docs/api/optics-psf-foundation.md +181 -0
- package/docs/api/optics-radial-distortion.md +194 -0
- package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
- package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
- package/docs/api/optics-sensor-environment-query.md +58 -0
- package/docs/api/optics-sensor-psf-quadrature.md +81 -0
- package/docs/api/optics-stray-light.md +109 -0
- package/docs/api/optics-thin-lens.md +53 -0
- package/docs/api/output-capture-corrected-sdr.md +71 -0
- package/docs/api/output-capture-geometry.md +500 -0
- package/docs/api/output-capture-sdr.md +69 -0
- package/docs/api/output-crop.md +47 -0
- package/docs/api/output-geometric-transforms.md +199 -0
- package/docs/api/output-lens-corrections.md +162 -0
- package/docs/api/output-sdr-rendering.md +122 -0
- package/docs/api/output-subject-framing-crop.md +59 -0
- package/docs/api/schema-camera.md +84 -0
- package/docs/api/schema-illumination-spectral.md +77 -0
- package/docs/api/schema-illumination-temporal.md +289 -0
- package/docs/api/schema-illumination.md +246 -0
- package/docs/api/schema-scene-radiance-temporal.md +215 -0
- package/docs/api/schema-scene-radiance.md +415 -0
- package/docs/api/schema-scene.md +105 -0
- package/docs/api/schema-validation.md +25 -0
- package/docs/api/sensor-accumulated-charge.md +273 -0
- package/docs/api/sensor-architecture.md +155 -0
- package/docs/api/sensor-camera-saturation-capacity.md +215 -0
- package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
- package/docs/api/sensor-capture-mode-timing.md +123 -0
- package/docs/api/sensor-capture-mode.md +321 -0
- package/docs/api/sensor-color-sampling.md +228 -0
- package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
- package/docs/api/sensor-dark-current.md +227 -0
- package/docs/api/sensor-environment-photo-signal.md +77 -0
- package/docs/api/sensor-eqe-electron-rate.md +166 -0
- package/docs/api/sensor-eqe-local-exposure.md +68 -0
- package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
- package/docs/api/sensor-exposure-window.md +183 -0
- package/docs/api/sensor-iso-signal-chain.md +264 -0
- package/docs/api/sensor-local-exposure-binding.md +126 -0
- package/docs/api/sensor-optical-stack.md +211 -0
- package/docs/api/sensor-photon-energy.md +149 -0
- package/docs/api/sensor-physical-charge-capacity.md +196 -0
- package/docs/api/sensor-pixel-pitch.md +41 -0
- package/docs/api/sensor-radiometry-readiness.md +240 -0
- package/docs/api/sensor-raw-readout.md +499 -0
- package/docs/api/sensor-raw-reconstruction.md +260 -0
- package/docs/api/sensor-readout-exposure-linkage.md +172 -0
- package/docs/api/sensor-readout-timing.md +209 -0
- package/docs/api/sensor-response-application-compatibility.md +256 -0
- package/docs/api/sensor-response-operating-range.md +293 -0
- package/docs/api/sensor-responsivity-photocurrent.md +245 -0
- package/docs/api/sensor-sampling-aperture.md +221 -0
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
- package/docs/api/sensor-sensor-geometry.md +143 -0
- package/docs/api/sensor-signal-noise.md +75 -0
- package/docs/api/sensor-spatial-sample-reduction.md +186 -0
- package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
- package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
- package/docs/api/sensor-spectral-coverage.md +33 -0
- package/docs/api/sensor-spectral-quadrature.md +183 -0
- package/docs/api/sensor-spectral-response.md +291 -0
- package/docs/api/sensor-temporal-photo-signal.md +62 -0
- package/docs/api/simulation-poc-simulation.md +364 -0
- package/docs/api/stabilization-camera-shake.md +71 -0
- package/docs/api/stabilization-system.md +442 -0
- package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
- package/docs/examples/production-capture.mjs +34 -0
- package/docs/examples/production-request.json +4613 -0
- package/docs/examples/quick-start.mjs +12 -0
- package/docs/validation/documentation-fragments.json +212 -0
- package/docs/validation/release-audit-inventory.json +1306 -0
- package/docs/validation/tier-acceptance-report-v1.json +2538 -0
- package/package.json +15 -3
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
5
|
+
* missing required fields and incompatible scientific data fail at this boundary. The selected
|
|
6
|
+
* ISO/capture-mode state binds an explicit generic readout regime. Photons and photo/dark shot-noise
|
|
7
|
+
* expectations remain upstream; regime gain, read noise and clipping are separately declared. Generic
|
|
8
|
+
* tier labels do not calibrate or rank commercial equipment.
|
|
9
|
+
* Select the explicit readout regime bound to the resolved ISO and capture-mode state; do not derive
|
|
10
|
+
* gain/noise from an ISO number. The selected ISO/capture-mode state binds an explicit generic readout
|
|
11
|
+
* regime. Photons and photo/dark shot-noise expectations remain upstream; regime gain, read noise and
|
|
12
|
+
* clipping are separately declared. Generic tier labels do not calibrate or rank commercial equipment.
|
|
13
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
|
+
* limits.
|
|
15
|
+
*/
|
|
16
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
17
|
+
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
18
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
19
|
+
import { parseIsoCapabilityProfile, resolveIsoCapability } from "../equipment/iso-capabilities.js";
|
|
20
|
+
import { parseSensorReadoutConversionProfile, resolveSensorReadoutRegime } from "./raw-readout.js";
|
|
21
|
+
export const GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION = "0.1.0";
|
|
22
|
+
export const GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION = "0.1.0";
|
|
23
|
+
function requireRecord(value, path) {
|
|
24
|
+
if (typeof value !== "object" ||
|
|
25
|
+
value === null ||
|
|
26
|
+
Array.isArray(value)) {
|
|
27
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function requireNonEmptyString(value, path) {
|
|
32
|
+
if (typeof value !== "string" ||
|
|
33
|
+
value.trim().length === 0) {
|
|
34
|
+
throw new InvalidConfigurationError(path +
|
|
35
|
+
" must be a non-empty string.");
|
|
36
|
+
}
|
|
37
|
+
return value.trim();
|
|
38
|
+
}
|
|
39
|
+
function requirePositiveFinite(value, path) {
|
|
40
|
+
if (typeof value !== "number" ||
|
|
41
|
+
!Number.isFinite(value) ||
|
|
42
|
+
value <= 0) {
|
|
43
|
+
throw new InvalidConfigurationError(path +
|
|
44
|
+
" must be finite and greater than zero.");
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
function parseLimitations(value, path) {
|
|
49
|
+
if (!Array.isArray(value)) {
|
|
50
|
+
throw new InvalidConfigurationError(path + " must be an array.");
|
|
51
|
+
}
|
|
52
|
+
const parsed = value.map((entry, index) => requireNonEmptyString(entry, path +
|
|
53
|
+
"[" +
|
|
54
|
+
index +
|
|
55
|
+
"]"));
|
|
56
|
+
if (new Set(parsed).size !==
|
|
57
|
+
parsed.length) {
|
|
58
|
+
throw new InvalidConfigurationError(path +
|
|
59
|
+
" must not contain duplicates.");
|
|
60
|
+
}
|
|
61
|
+
return parsed;
|
|
62
|
+
}
|
|
63
|
+
function parseStandardBand(value, path) {
|
|
64
|
+
const record = requireRecord(value, path);
|
|
65
|
+
const minimumExposureIndex = requirePositiveFinite(record.minimumExposureIndex, path +
|
|
66
|
+
".minimumExposureIndex");
|
|
67
|
+
const maximumExposureIndex = requirePositiveFinite(record.maximumExposureIndex, path +
|
|
68
|
+
".maximumExposureIndex");
|
|
69
|
+
if (minimumExposureIndex >
|
|
70
|
+
maximumExposureIndex) {
|
|
71
|
+
throw new InvalidConfigurationError(path +
|
|
72
|
+
".minimumExposureIndex must be less than or equal to maximumExposureIndex.");
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
minimumExposureIndex,
|
|
76
|
+
maximumExposureIndex,
|
|
77
|
+
readoutRegimeId: requireNonEmptyString(record.readoutRegimeId, path +
|
|
78
|
+
".readoutRegimeId")
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function parseCaptureModeBinding(value, path) {
|
|
82
|
+
const record = requireRecord(value, path);
|
|
83
|
+
if (!Array.isArray(record.standardRegimeBands) ||
|
|
84
|
+
record.standardRegimeBands
|
|
85
|
+
.length === 0) {
|
|
86
|
+
throw new InvalidConfigurationError(path +
|
|
87
|
+
".standardRegimeBands must be a non-empty array.");
|
|
88
|
+
}
|
|
89
|
+
const bands = record.standardRegimeBands.map((entry, index) => parseStandardBand(entry, path +
|
|
90
|
+
".standardRegimeBands[" +
|
|
91
|
+
index +
|
|
92
|
+
"]")).sort((a, b) => a.minimumExposureIndex -
|
|
93
|
+
b.minimumExposureIndex);
|
|
94
|
+
for (let index = 1; index < bands.length; index += 1) {
|
|
95
|
+
const prior = bands[index - 1];
|
|
96
|
+
const current = bands[index];
|
|
97
|
+
if (current.minimumExposureIndex <=
|
|
98
|
+
prior.maximumExposureIndex) {
|
|
99
|
+
throw new InvalidConfigurationError(path +
|
|
100
|
+
".standardRegimeBands must not overlap.");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (!Array.isArray(record.expandedRegimeBindings)) {
|
|
104
|
+
throw new InvalidConfigurationError(path +
|
|
105
|
+
".expandedRegimeBindings must be an array.");
|
|
106
|
+
}
|
|
107
|
+
const expandedRegimeBindings = record.expandedRegimeBindings.map((entry, index) => {
|
|
108
|
+
const entryPath = path +
|
|
109
|
+
".expandedRegimeBindings[" +
|
|
110
|
+
index +
|
|
111
|
+
"]";
|
|
112
|
+
const binding = requireRecord(entry, entryPath);
|
|
113
|
+
return {
|
|
114
|
+
expandedSettingId: requireNonEmptyString(binding.expandedSettingId, entryPath +
|
|
115
|
+
".expandedSettingId"),
|
|
116
|
+
readoutRegimeId: requireNonEmptyString(binding.readoutRegimeId, entryPath +
|
|
117
|
+
".readoutRegimeId")
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
const expandedIds = expandedRegimeBindings.map((entry) => entry.expandedSettingId);
|
|
121
|
+
if (new Set(expandedIds).size !==
|
|
122
|
+
expandedIds.length) {
|
|
123
|
+
throw new InvalidConfigurationError(path +
|
|
124
|
+
".expandedRegimeBindings must not contain duplicate expandedSettingId values.");
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
captureModeId: requireNonEmptyString(record.captureModeId, path + ".captureModeId"),
|
|
128
|
+
standardRegimeBands: bands,
|
|
129
|
+
expandedRegimeBindings,
|
|
130
|
+
evidence: parseEvidenceList(record.evidence, path + ".evidence")
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
135
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
136
|
+
*
|
|
137
|
+
* The selected ISO/capture-mode state binds an explicit generic readout regime. Photons and photo/dark
|
|
138
|
+
* shot-noise expectations remain upstream; regime gain, read noise and clipping are separately
|
|
139
|
+
* declared. Generic tier labels do not calibrate or rank commercial equipment.
|
|
140
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
141
|
+
* @returns GenericIsoSignalChainProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
142
|
+
*
|
|
143
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
144
|
+
*/
|
|
145
|
+
export function parseGenericIsoSignalChainProfile(value) {
|
|
146
|
+
const record = requireRecord(value, "genericIsoSignalChainProfile");
|
|
147
|
+
if (record.schemaVersion !==
|
|
148
|
+
GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION) {
|
|
149
|
+
throw new InvalidConfigurationError('genericIsoSignalChainProfile.schemaVersion must be "' +
|
|
150
|
+
GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION +
|
|
151
|
+
'".');
|
|
152
|
+
}
|
|
153
|
+
if (record.scientificStatus !==
|
|
154
|
+
"approximation") {
|
|
155
|
+
throw new InvalidConfigurationError('genericIsoSignalChainProfile.scientificStatus must be "approximation".');
|
|
156
|
+
}
|
|
157
|
+
if (record.behaviorMeaning !==
|
|
158
|
+
"iso-state-selects-explicit-readout-regime-not-noise-equation") {
|
|
159
|
+
throw new InvalidConfigurationError("genericIsoSignalChainProfile.behaviorMeaning is invalid.");
|
|
160
|
+
}
|
|
161
|
+
if (record.photonShotNoiseOwnedUpstream !==
|
|
162
|
+
true ||
|
|
163
|
+
record.processedImageBehaviorIncluded !==
|
|
164
|
+
false ||
|
|
165
|
+
record.fixedPatternNoiseModeled !==
|
|
166
|
+
false ||
|
|
167
|
+
record.lowSignalColorDegradationModeled !==
|
|
168
|
+
false) {
|
|
169
|
+
throw new InvalidConfigurationError("genericIsoSignalChainProfile domain-ownership flags are invalid.");
|
|
170
|
+
}
|
|
171
|
+
if (!Array.isArray(record.captureModeBindings) ||
|
|
172
|
+
record.captureModeBindings
|
|
173
|
+
.length === 0) {
|
|
174
|
+
throw new InvalidConfigurationError("genericIsoSignalChainProfile.captureModeBindings must be a non-empty array.");
|
|
175
|
+
}
|
|
176
|
+
const captureModeBindings = record.captureModeBindings.map((entry, index) => parseCaptureModeBinding(entry, "genericIsoSignalChainProfile.captureModeBindings[" +
|
|
177
|
+
index +
|
|
178
|
+
"]"));
|
|
179
|
+
const modeIds = captureModeBindings.map((entry) => entry.captureModeId);
|
|
180
|
+
if (new Set(modeIds).size !==
|
|
181
|
+
modeIds.length) {
|
|
182
|
+
throw new InvalidConfigurationError("genericIsoSignalChainProfile.captureModeBindings must not contain duplicate captureModeId values.");
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
schemaVersion: GENERIC_ISO_SIGNAL_CHAIN_PROFILE_SCHEMA_VERSION,
|
|
186
|
+
profileId: requireNonEmptyString(record.profileId, "genericIsoSignalChainProfile.profileId"),
|
|
187
|
+
profileVersion: requireNonEmptyString(record.profileVersion, "genericIsoSignalChainProfile.profileVersion"),
|
|
188
|
+
scientificStatus: "approximation",
|
|
189
|
+
isoCapabilityProfileId: requireNonEmptyString(record.isoCapabilityProfileId, "genericIsoSignalChainProfile.isoCapabilityProfileId"),
|
|
190
|
+
readoutProfileId: requireNonEmptyString(record.readoutProfileId, "genericIsoSignalChainProfile.readoutProfileId"),
|
|
191
|
+
behaviorMeaning: "iso-state-selects-explicit-readout-regime-not-noise-equation",
|
|
192
|
+
captureModeBindings,
|
|
193
|
+
photonShotNoiseOwnedUpstream: true,
|
|
194
|
+
processedImageBehaviorIncluded: false,
|
|
195
|
+
fixedPatternNoiseModeled: false,
|
|
196
|
+
lowSignalColorDegradationModeled: false,
|
|
197
|
+
evidence: parseEvidenceList(record.evidence, "genericIsoSignalChainProfile.evidence"),
|
|
198
|
+
limitations: parseLimitations(record.limitations, "genericIsoSignalChainProfile.limitations")
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function regimeIdForIso(binding, iso) {
|
|
202
|
+
if (iso.setting.kind ===
|
|
203
|
+
"expanded") {
|
|
204
|
+
const expandedSettingId = iso.setting.settingId;
|
|
205
|
+
const expanded = binding
|
|
206
|
+
.expandedRegimeBindings
|
|
207
|
+
.find((entry) => entry
|
|
208
|
+
.expandedSettingId ===
|
|
209
|
+
expandedSettingId);
|
|
210
|
+
if (expanded === undefined) {
|
|
211
|
+
throw new InvalidScientificInputError("Expanded ISO setting has no signal-chain regime binding for the selected capture mode.");
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
regimeId: expanded
|
|
215
|
+
.readoutRegimeId,
|
|
216
|
+
reason: "expanded-setting-binding"
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const matches = binding
|
|
220
|
+
.standardRegimeBands
|
|
221
|
+
.filter((band) => iso
|
|
222
|
+
.reportedExposureIndex >=
|
|
223
|
+
band
|
|
224
|
+
.minimumExposureIndex &&
|
|
225
|
+
iso
|
|
226
|
+
.reportedExposureIndex <=
|
|
227
|
+
band
|
|
228
|
+
.maximumExposureIndex);
|
|
229
|
+
if (matches.length !== 1) {
|
|
230
|
+
throw new InvalidScientificInputError("Standard ISO setting must match exactly one signal-chain regime band.");
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
regimeId: matches[0]
|
|
234
|
+
.readoutRegimeId,
|
|
235
|
+
reason: "standard-exposure-index-band"
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Select the explicit readout regime bound to the resolved ISO and capture-mode state; do not derive
|
|
240
|
+
* gain/noise from an ISO number.
|
|
241
|
+
*
|
|
242
|
+
* The selected ISO/capture-mode state binds an explicit generic readout regime. Photons and photo/dark
|
|
243
|
+
* shot-noise expectations remain upstream; regime gain, read noise and clipping are separately
|
|
244
|
+
* declared. Generic tier labels do not calibrate or rank commercial equipment.
|
|
245
|
+
* @param input - ResolveGenericIsoSignalChainInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
246
|
+
* @returns ResolvedGenericIsoSignalChain. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
247
|
+
*
|
|
248
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
249
|
+
*/
|
|
250
|
+
export function resolveGenericIsoSignalChain(input) {
|
|
251
|
+
const profile = parseGenericIsoSignalChainProfile(input.profile);
|
|
252
|
+
const isoCapability = parseIsoCapabilityProfile(input.isoCapability);
|
|
253
|
+
const readoutProfile = parseSensorReadoutConversionProfile(input.readoutProfile);
|
|
254
|
+
if (profile.isoCapabilityProfileId !==
|
|
255
|
+
isoCapability.profileId) {
|
|
256
|
+
throw new InvalidScientificInputError("Signal-chain profile isoCapabilityProfileId must match the supplied ISO capability profile.");
|
|
257
|
+
}
|
|
258
|
+
if (profile.readoutProfileId !==
|
|
259
|
+
readoutProfile.profileId) {
|
|
260
|
+
throw new InvalidScientificInputError("Signal-chain profile readoutProfileId must match the supplied sensor readout profile.");
|
|
261
|
+
}
|
|
262
|
+
if (typeof input.captureModeId !==
|
|
263
|
+
"string" ||
|
|
264
|
+
input.captureModeId.trim()
|
|
265
|
+
.length === 0) {
|
|
266
|
+
throw new InvalidScientificInputError("captureModeId must be a non-empty string.");
|
|
267
|
+
}
|
|
268
|
+
const binding = profile.captureModeBindings.find((entry) => entry.captureModeId ===
|
|
269
|
+
input.captureModeId);
|
|
270
|
+
if (binding === undefined) {
|
|
271
|
+
throw new InvalidScientificInputError("Signal-chain profile has no binding for the selected capture mode.");
|
|
272
|
+
}
|
|
273
|
+
const iso = resolveIsoCapability({
|
|
274
|
+
profile: isoCapability,
|
|
275
|
+
setting: input
|
|
276
|
+
.requestedIsoSetting,
|
|
277
|
+
captureModeId: input.captureModeId
|
|
278
|
+
});
|
|
279
|
+
const regime = regimeIdForIso(binding, iso);
|
|
280
|
+
const readout = resolveSensorReadoutRegime({
|
|
281
|
+
profile: readoutProfile,
|
|
282
|
+
regimeId: regime.regimeId
|
|
283
|
+
});
|
|
284
|
+
return {
|
|
285
|
+
profileId: profile.profileId,
|
|
286
|
+
profileVersion: profile.profileVersion,
|
|
287
|
+
scientificStatus: "approximation",
|
|
288
|
+
captureModeId: input.captureModeId,
|
|
289
|
+
iso,
|
|
290
|
+
readout,
|
|
291
|
+
regimeSelectionReason: regime.reason,
|
|
292
|
+
capturedPhotonExpectationModified: false,
|
|
293
|
+
photonShotNoiseStatisticsModified: false,
|
|
294
|
+
sensorGeometryModified: false,
|
|
295
|
+
processedImageBehaviorApplied: false,
|
|
296
|
+
fixedPatternNoiseApplied: false,
|
|
297
|
+
lowSignalColorDegradationApplied: false,
|
|
298
|
+
isoUsedAsDirectNoiseEquation: false,
|
|
299
|
+
exactCommercialCameraBehaviorClaimed: false
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const PRESETS = new Set([
|
|
303
|
+
"good",
|
|
304
|
+
"better",
|
|
305
|
+
"best"
|
|
306
|
+
]);
|
|
307
|
+
/**
|
|
308
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
309
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
310
|
+
*
|
|
311
|
+
* The selected ISO/capture-mode state binds an explicit generic readout regime. Photons and photo/dark
|
|
312
|
+
* shot-noise expectations remain upstream; regime gain, read noise and clipping are separately
|
|
313
|
+
* declared. Generic tier labels do not calibrate or rank commercial equipment.
|
|
314
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
315
|
+
* @returns GenericIsoSignalChainPresetCatalog. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
316
|
+
*
|
|
317
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
318
|
+
*/
|
|
319
|
+
export function parseGenericIsoSignalChainPresetCatalog(value) {
|
|
320
|
+
const record = requireRecord(value, "genericIsoSignalChainPresetCatalog");
|
|
321
|
+
if (record.schemaVersion !==
|
|
322
|
+
GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION) {
|
|
323
|
+
throw new InvalidConfigurationError('genericIsoSignalChainPresetCatalog.schemaVersion must be "' +
|
|
324
|
+
GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION +
|
|
325
|
+
'".');
|
|
326
|
+
}
|
|
327
|
+
if (record.performanceOrderingClaimed !==
|
|
328
|
+
false ||
|
|
329
|
+
record.realCameraRankingClaimed !==
|
|
330
|
+
false) {
|
|
331
|
+
throw new InvalidConfigurationError("Generic ISO preset catalog must not claim physical performance ordering or real-camera ranking.");
|
|
332
|
+
}
|
|
333
|
+
if (!Array.isArray(record.entries) ||
|
|
334
|
+
record.entries.length !== 3) {
|
|
335
|
+
throw new InvalidConfigurationError("Generic ISO preset catalog must contain exactly Good, Better, and Best entries.");
|
|
336
|
+
}
|
|
337
|
+
const entries = record.entries.map((entry, index) => {
|
|
338
|
+
const path = "genericIsoSignalChainPresetCatalog.entries[" +
|
|
339
|
+
index +
|
|
340
|
+
"]";
|
|
341
|
+
const parsed = requireRecord(entry, path);
|
|
342
|
+
if (typeof parsed.preset !==
|
|
343
|
+
"string" ||
|
|
344
|
+
!PRESETS.has(parsed.preset)) {
|
|
345
|
+
throw new InvalidConfigurationError(path +
|
|
346
|
+
".preset is invalid.");
|
|
347
|
+
}
|
|
348
|
+
return {
|
|
349
|
+
preset: parsed.preset,
|
|
350
|
+
signalChainProfileId: requireNonEmptyString(parsed
|
|
351
|
+
.signalChainProfileId, path +
|
|
352
|
+
".signalChainProfileId"),
|
|
353
|
+
evidence: parseEvidenceList(parsed.evidence, path + ".evidence")
|
|
354
|
+
};
|
|
355
|
+
});
|
|
356
|
+
const presets = entries.map((entry) => entry.preset);
|
|
357
|
+
if (new Set(presets).size !==
|
|
358
|
+
3) {
|
|
359
|
+
throw new InvalidConfigurationError("Generic ISO preset catalog must contain each Good, Better, and Best preset exactly once.");
|
|
360
|
+
}
|
|
361
|
+
return {
|
|
362
|
+
schemaVersion: GENERIC_ISO_SIGNAL_CHAIN_PRESET_CATALOG_SCHEMA_VERSION,
|
|
363
|
+
catalogId: requireNonEmptyString(record.catalogId, "genericIsoSignalChainPresetCatalog.catalogId"),
|
|
364
|
+
catalogVersion: requireNonEmptyString(record.catalogVersion, "genericIsoSignalChainPresetCatalog.catalogVersion"),
|
|
365
|
+
entries,
|
|
366
|
+
performanceOrderingClaimed: false,
|
|
367
|
+
realCameraRankingClaimed: false
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Select a generic catalog preset and return its explicit profile binding without claiming
|
|
372
|
+
* manufacturer calibration.
|
|
373
|
+
*
|
|
374
|
+
* The selected ISO/capture-mode state binds an explicit generic readout regime. Photons and photo/dark
|
|
375
|
+
* shot-noise expectations remain upstream; regime gain, read noise and clipping are separately
|
|
376
|
+
* declared. Generic tier labels do not calibrate or rank commercial equipment.
|
|
377
|
+
* @param input - {
|
|
378
|
+
catalog:
|
|
379
|
+
GenericIsoSignalChainPresetCatalog;
|
|
380
|
+
preset:
|
|
381
|
+
GenericIsoSignalChainPreset;
|
|
382
|
+
}. See the linked contract for coordinate, unit and profile binding semantics.
|
|
383
|
+
* @returns {
|
|
384
|
+
preset:
|
|
385
|
+
GenericIsoSignalChainPreset;
|
|
386
|
+
signalChainProfileId:
|
|
387
|
+
string;
|
|
388
|
+
performanceOrderingClaimed:
|
|
389
|
+
false;
|
|
390
|
+
realCameraRankingClaimed:
|
|
391
|
+
false;
|
|
392
|
+
}. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
393
|
+
*
|
|
394
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
395
|
+
*/
|
|
396
|
+
export function resolveGenericIsoSignalChainPreset(input) {
|
|
397
|
+
const catalog = parseGenericIsoSignalChainPresetCatalog(input.catalog);
|
|
398
|
+
if (!PRESETS.has(input.preset)) {
|
|
399
|
+
throw new InvalidScientificInputError("preset must be good, better, or best.");
|
|
400
|
+
}
|
|
401
|
+
const entry = catalog.entries.find((candidate) => candidate.preset ===
|
|
402
|
+
input.preset);
|
|
403
|
+
return {
|
|
404
|
+
preset: input.preset,
|
|
405
|
+
signalChainProfileId: entry
|
|
406
|
+
.signalChainProfileId,
|
|
407
|
+
performanceOrderingClaimed: false,
|
|
408
|
+
realCameraRankingClaimed: false
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=iso-signal-chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iso-signal-chain.js","sourceRoot":"","sources":["../../src/sensor/iso-signal-chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Binds one engine-produced sensor response-rate result to the local exposure window at the same
|
|
4
|
+
* color-sampling site. This first temporal binding supports only the explicit one-to-one
|
|
5
|
+
* native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
|
|
6
|
+
* membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
|
|
7
|
+
* shutter timing fails closed rather than inventing fractional positions. The result establishes
|
|
8
|
+
* timing only. It deliberately does not establish that the optical/electrical rate is stationary
|
|
9
|
+
* through the local exposure window, so rate×duration integration remains unauthorized.
|
|
10
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
11
|
+
* limits.
|
|
12
|
+
*/
|
|
13
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
14
|
+
import type { EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
15
|
+
import { type NativeEffectiveRasterColorSamplingBindingProfile } from "./capture-color-sampling-binding.js";
|
|
16
|
+
import { type SensorColorSamplingProfile } from "./color-sampling.js";
|
|
17
|
+
import type { SensorEqeElectronRate } from "./eqe-electron-rate.js";
|
|
18
|
+
import { type CalculateCaptureExposureWindowsInput, type CaptureExposureWindowSample } from "./exposure-window.js";
|
|
19
|
+
import type { SensorResponsivityPhotocurrent } from "./responsivity-photocurrent.js";
|
|
20
|
+
export type SensorInstantaneousRateResult = SensorEqeElectronRate | SensorResponsivityPhotocurrent;
|
|
21
|
+
export interface BindSensorRateToLocalExposureInput {
|
|
22
|
+
rate: SensorInstantaneousRateResult;
|
|
23
|
+
colorSamplingProfile: SensorColorSamplingProfile;
|
|
24
|
+
bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
|
|
25
|
+
/**
|
|
26
|
+
* One capture/exposure event. samplePointsNative is owned by this binding
|
|
27
|
+
* function and therefore intentionally excluded.
|
|
28
|
+
*/
|
|
29
|
+
exposureWindowInput: Omit<CalculateCaptureExposureWindowsInput, "samplePointsNative">;
|
|
30
|
+
}
|
|
31
|
+
export interface SensorRateLocalExposureBinding {
|
|
32
|
+
rateDomain: "eqe-electron-rate" | "responsivity-photocurrent";
|
|
33
|
+
rateIdentity: {
|
|
34
|
+
responseProfileId: string;
|
|
35
|
+
responseApplicationProfileId: string;
|
|
36
|
+
operatingRangeProfileId: string;
|
|
37
|
+
electricalApplicabilityProfileId?: string;
|
|
38
|
+
};
|
|
39
|
+
colorSamplingProfileId: string;
|
|
40
|
+
channelId: string;
|
|
41
|
+
site: {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
};
|
|
45
|
+
bindingId: string;
|
|
46
|
+
bindingRelationship: "one-native-effective-sample-to-one-color-site";
|
|
47
|
+
timingCoordinateRule: "one-to-one-color-site-center-equals-native-effective-sample-center";
|
|
48
|
+
nativeRasterPoint: {
|
|
49
|
+
x: number;
|
|
50
|
+
y: number;
|
|
51
|
+
};
|
|
52
|
+
shutterMechanism: CalculateCaptureExposureWindowsInput["shutterMechanism"];
|
|
53
|
+
timeReference: "first-opening-boundary-phase";
|
|
54
|
+
localExposureWindow: CaptureExposureWindowSample;
|
|
55
|
+
localExposureDurationSeconds: number;
|
|
56
|
+
exposureEventMeaning: "single-capture-local-exposure-window";
|
|
57
|
+
nativeImageRasterBindingEstablished: true;
|
|
58
|
+
channelAtSiteValidated: true;
|
|
59
|
+
physicalPhotodiodeTimingRegistrationEstablished: false;
|
|
60
|
+
multiFrameSequenceBindingEstablished: false;
|
|
61
|
+
timeStationarityEstablished: false;
|
|
62
|
+
constantRateTemporalIntegrationAuthorized: false;
|
|
63
|
+
temporalIntegrationApplied: false;
|
|
64
|
+
componentEvidence: {
|
|
65
|
+
binding: readonly EvidenceProvenance[];
|
|
66
|
+
colorSamplingProfile: readonly EvidenceProvenance[];
|
|
67
|
+
nominalExposureDuration: readonly EvidenceProvenance[];
|
|
68
|
+
openingBoundary: readonly EvidenceProvenance[];
|
|
69
|
+
closingBoundary: readonly EvidenceProvenance[];
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Binds one engine-produced sensor response-rate result to the local exposure
|
|
74
|
+
* window at the same color-sampling site.
|
|
75
|
+
*
|
|
76
|
+
* This first temporal binding supports only the explicit one-to-one
|
|
77
|
+
* native-effective-sample ↔ color-site relationship. A multi-site block
|
|
78
|
+
* binding proves contributor membership but does not prove each color site's
|
|
79
|
+
* sub-sample timing coordinate, so spatially varying shutter timing fails
|
|
80
|
+
* closed rather than inventing fractional positions.
|
|
81
|
+
*
|
|
82
|
+
* The result establishes timing only. It deliberately does not establish that
|
|
83
|
+
* the optical/electrical rate is stationary through the local exposure window,
|
|
84
|
+
* so rate×duration integration remains unauthorized.
|
|
85
|
+
*/
|
|
86
|
+
export declare function bindSensorRateToLocalExposure(input: BindSensorRateToLocalExposureInput): CalculationResult<SensorRateLocalExposureBinding>;
|
|
87
|
+
//# sourceMappingURL=local-exposure-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-exposure-binding.d.ts","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAEL,KAAK,gDAAgD,EACtD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,oCAAoC,EACzC,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,6BAA6B,GACrC,qBAAqB,GACrB,8BAA8B,CAAC;AAEnC,MAAM,WAAW,kCAAkC;IACjD,IAAI,EACF,6BAA6B,CAAC;IAChC,oBAAoB,EAClB,0BAA0B,CAAC;IAC7B,cAAc,EACZ,gDAAgD,CAAC;IACnD;;;OAGG;IACH,mBAAmB,EACjB,IAAI,CACF,oCAAoC,EACpC,oBAAoB,CACrB,CAAC;CACL;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EACN,mBAAmB,GACnB,2BAA2B,CAAC;IAChC,YAAY,EAAE;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,4BAA4B,EAAE,MAAM,CAAC;QACrC,uBAAuB,EAAE,MAAM,CAAC;QAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;KAC3C,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EACjB,+CAA+C,CAAC;IAClD,oBAAoB,EAClB,oEAAoE,CAAC;IACvE,iBAAiB,EAAE;QACjB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,gBAAgB,EACd,oCAAoC,CAAC,kBAAkB,CAAC,CAAC;IAC3D,aAAa,EACX,8BAA8B,CAAC;IACjC,mBAAmB,EACjB,2BAA2B,CAAC;IAC9B,4BAA4B,EAC1B,MAAM,CAAC;IACT,oBAAoB,EAClB,sCAAsC,CAAC;IACzC,mCAAmC,EAAE,IAAI,CAAC;IAC1C,sBAAsB,EAAE,IAAI,CAAC;IAC7B,+CAA+C,EAC7C,KAAK,CAAC;IACR,oCAAoC,EAClC,KAAK,CAAC;IACR,2BAA2B,EAAE,KAAK,CAAC;IACnC,yCAAyC,EACvC,KAAK,CAAC;IACR,0BAA0B,EAAE,KAAK,CAAC;IAClC,iBAAiB,EAAE;QACjB,OAAO,EACL,SAAS,kBAAkB,EAAE,CAAC;QAChC,oBAAoB,EAClB,SAAS,kBAAkB,EAAE,CAAC;QAChC,uBAAuB,EACrB,SAAS,kBAAkB,EAAE,CAAC;QAChC,eAAe,EACb,SAAS,kBAAkB,EAAE,CAAC;QAChC,eAAe,EACb,SAAS,kBAAkB,EAAE,CAAC;KACjC,CAAC;CACH;AAyGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EACH,kCAAkC,GACnC,iBAAiB,CAAC,8BAA8B,CAAC,CAmMnD"}
|