@photivra/engine 0.5.1 → 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 +218 -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 +157 -56
- 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 +101 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -7
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +76 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +111 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +113 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -0
- package/dist/motion/capture-rotation-inverse-mapping.js +184 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +104 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js +131 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -0
- package/dist/motion/capture-rotation-trajectory.d.ts +113 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -0
- package/dist/motion/capture-rotation-trajectory.js +168 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -0
- 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 +23 -4
- 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 +22 -2
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +101 -23
- 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 +32 -11
- 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 +212 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.js +437 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -0
- 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 +157 -0
- package/dist/sensor/capture-mode.d.ts.map +1 -0
- package/dist/sensor/capture-mode.js +447 -0
- package/dist/sensor/capture-mode.js.map +1 -0
- package/dist/sensor/color-sampling.d.ts +133 -0
- package/dist/sensor/color-sampling.d.ts.map +1 -0
- package/dist/sensor/color-sampling.js +245 -0
- package/dist/sensor/color-sampling.js.map +1 -0
- 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 +117 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -0
- package/dist/sensor/exposure-window.js +305 -0
- package/dist/sensor/exposure-window.js.map +1 -0
- 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 +132 -0
- package/dist/sensor/optical-stack.d.ts.map +1 -0
- package/dist/sensor/optical-stack.js +303 -0
- package/dist/sensor/optical-stack.js.map +1 -0
- 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 +123 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -0
- package/dist/sensor/readout-exposure-linkage.js +222 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -0
- package/dist/sensor/readout-timing.d.ts +137 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -0
- package/dist/sensor/readout-timing.js +243 -0
- package/dist/sensor/readout-timing.js.map +1 -0
- 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 +154 -0
- package/dist/sensor/sampling-aperture.d.ts.map +1 -0
- package/dist/sensor/sampling-aperture.js +388 -0
- package/dist/sensor/sampling-aperture.js.map +1 -0
- 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 +171 -0
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -0
- package/dist/sensor/spatial-sample-reduction.js +345 -0
- package/dist/sensor/spatial-sample-reduction.js.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts +179 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.js +224 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -0
- 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 +150 -23
- package/docs/AUTOMATION_COORDINATION.md +190 -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 +105 -9
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +145 -1
- 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 +5604 -331
- 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 +18 -4
|
@@ -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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Binds one engine-produced sensor response-rate result to the local exposure window at the same
|
|
5
|
+
* color-sampling site. This first temporal binding supports only the explicit one-to-one
|
|
6
|
+
* native-effective-sample ↔ color-site relationship. A multi-site block binding proves contributor
|
|
7
|
+
* membership but does not prove each color site's sub-sample timing coordinate, so spatially varying
|
|
8
|
+
* shutter timing fails closed rather than inventing fractional positions. The result establishes
|
|
9
|
+
* timing only. It deliberately does not establish that the optical/electrical rate is stationary
|
|
10
|
+
* through the local exposure window, so rate×duration integration remains unauthorized.
|
|
11
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
12
|
+
* limits.
|
|
13
|
+
*/
|
|
14
|
+
import { approximationResult } from "../core/calculation-result.js";
|
|
15
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
16
|
+
import { resolveNativeEffectiveRasterColorSamplingBinding } from "./capture-color-sampling-binding.js";
|
|
17
|
+
import { resolveColorSamplingSite } from "./color-sampling.js";
|
|
18
|
+
import { calculateCaptureExposureWindows } from "./exposure-window.js";
|
|
19
|
+
function requireSite(rate) {
|
|
20
|
+
if (rate.site === undefined ||
|
|
21
|
+
typeof rate.site !== "object" ||
|
|
22
|
+
rate.site === null ||
|
|
23
|
+
!Number.isSafeInteger(rate.site.x) ||
|
|
24
|
+
rate.site.x < 0 ||
|
|
25
|
+
!Number.isSafeInteger(rate.site.y) ||
|
|
26
|
+
rate.site.y < 0) {
|
|
27
|
+
throw new InvalidScientificInputError("rate.site must be present as a non-negative safe-integer color-sampling-site index.");
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
x: rate.site.x,
|
|
31
|
+
y: rate.site.y
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function validateRateBoundary(rate) {
|
|
35
|
+
if (rate.sourceResponseKind ===
|
|
36
|
+
"effective-spectral-responsivity") {
|
|
37
|
+
const current = rate;
|
|
38
|
+
if (current.currentCalculated !==
|
|
39
|
+
true ||
|
|
40
|
+
current.chargeCalculated !==
|
|
41
|
+
false ||
|
|
42
|
+
current.temporalIntegrationApplied !==
|
|
43
|
+
false ||
|
|
44
|
+
current.exposureDurationApplied !==
|
|
45
|
+
false ||
|
|
46
|
+
current.detectorBandwidthModeled !==
|
|
47
|
+
false ||
|
|
48
|
+
current.temporalResponseModel !==
|
|
49
|
+
"quasi-static-steady-state-only") {
|
|
50
|
+
throw new InvalidScientificInputError("A/W rate must remain a quasi-static pre-temporal photocurrent result.");
|
|
51
|
+
}
|
|
52
|
+
return "responsivity-photocurrent";
|
|
53
|
+
}
|
|
54
|
+
const eqe = rate;
|
|
55
|
+
if (eqe.electronRateCalculated !== true ||
|
|
56
|
+
eqe.photonRateCalculated !== true ||
|
|
57
|
+
eqe.electronCountCalculated !==
|
|
58
|
+
false ||
|
|
59
|
+
eqe.photonCountCalculated !==
|
|
60
|
+
false ||
|
|
61
|
+
eqe.temporalIntegrationApplied !==
|
|
62
|
+
false ||
|
|
63
|
+
eqe.exposureDurationApplied !==
|
|
64
|
+
false) {
|
|
65
|
+
throw new InvalidScientificInputError("EQE rate must remain a pre-temporal photon/electron-rate result.");
|
|
66
|
+
}
|
|
67
|
+
return "eqe-electron-rate";
|
|
68
|
+
}
|
|
69
|
+
function boundaryEvidence(boundary) {
|
|
70
|
+
if (boundary.schedule.kind ===
|
|
71
|
+
"simultaneous") {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
return [
|
|
75
|
+
...boundary.schedule.directionNative
|
|
76
|
+
.evidence,
|
|
77
|
+
...boundary.schedule
|
|
78
|
+
.traversalDurationSeconds.evidence
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Binds one engine-produced sensor response-rate result to the local exposure
|
|
83
|
+
* window at the same color-sampling site.
|
|
84
|
+
*
|
|
85
|
+
* This first temporal binding supports only the explicit one-to-one
|
|
86
|
+
* native-effective-sample ↔ color-site relationship. A multi-site block
|
|
87
|
+
* binding proves contributor membership but does not prove each color site's
|
|
88
|
+
* sub-sample timing coordinate, so spatially varying shutter timing fails
|
|
89
|
+
* closed rather than inventing fractional positions.
|
|
90
|
+
*
|
|
91
|
+
* The result establishes timing only. It deliberately does not establish that
|
|
92
|
+
* the optical/electrical rate is stationary through the local exposure window,
|
|
93
|
+
* so rate×duration integration remains unauthorized.
|
|
94
|
+
*/
|
|
95
|
+
export function bindSensorRateToLocalExposure(input) {
|
|
96
|
+
const rateDomain = validateRateBoundary(input.rate);
|
|
97
|
+
const site = requireSite(input.rate);
|
|
98
|
+
const binding = resolveNativeEffectiveRasterColorSamplingBinding({
|
|
99
|
+
nativeRaster: input.exposureWindowInput
|
|
100
|
+
.nativeRaster,
|
|
101
|
+
colorSamplingProfile: input.colorSamplingProfile,
|
|
102
|
+
bindingProfile: input.bindingProfile
|
|
103
|
+
});
|
|
104
|
+
if (binding.colorSamplingProfileId !==
|
|
105
|
+
input.rate
|
|
106
|
+
.colorSamplingProfileId) {
|
|
107
|
+
throw new InvalidScientificInputError("Color-sampling binding must reference the same colorSamplingProfileId as the rate result.");
|
|
108
|
+
}
|
|
109
|
+
if (binding.relationship
|
|
110
|
+
.sitesPerNativeSampleX !== 1 ||
|
|
111
|
+
binding.relationship
|
|
112
|
+
.sitesPerNativeSampleY !== 1) {
|
|
113
|
+
throw new InvalidScientificInputError("Local exposure timing currently requires a one-to-one color-site/native-effective-sample binding; multi-site blocks lack explicit sub-sample timing registration.");
|
|
114
|
+
}
|
|
115
|
+
if (site.x >=
|
|
116
|
+
binding.colorSamplingSiteGrid
|
|
117
|
+
.widthSites ||
|
|
118
|
+
site.y >=
|
|
119
|
+
binding.colorSamplingSiteGrid
|
|
120
|
+
.heightSites) {
|
|
121
|
+
throw new InvalidScientificInputError("rate.site is outside the color-sampling site grid established by the binding.");
|
|
122
|
+
}
|
|
123
|
+
const resolvedSite = resolveColorSamplingSite({
|
|
124
|
+
profile: input.colorSamplingProfile,
|
|
125
|
+
site
|
|
126
|
+
});
|
|
127
|
+
if (resolvedSite.mapping.channelId !==
|
|
128
|
+
input.rate.channelId) {
|
|
129
|
+
throw new InvalidScientificInputError("The rate channelId does not match the color-sampling channel assigned to rate.site.");
|
|
130
|
+
}
|
|
131
|
+
const nativeRasterPoint = {
|
|
132
|
+
x: site.x + 0.5,
|
|
133
|
+
y: site.y + 0.5
|
|
134
|
+
};
|
|
135
|
+
const windows = calculateCaptureExposureWindows({
|
|
136
|
+
...input.exposureWindowInput,
|
|
137
|
+
samplePointsNative: [
|
|
138
|
+
nativeRasterPoint
|
|
139
|
+
]
|
|
140
|
+
}).value;
|
|
141
|
+
const localExposureWindow = windows.samples[0];
|
|
142
|
+
if (localExposureWindow === undefined ||
|
|
143
|
+
localExposureWindow
|
|
144
|
+
.pointNative.x !==
|
|
145
|
+
nativeRasterPoint.x ||
|
|
146
|
+
localExposureWindow
|
|
147
|
+
.pointNative.y !==
|
|
148
|
+
nativeRasterPoint.y ||
|
|
149
|
+
!Number.isFinite(localExposureWindow
|
|
150
|
+
.localExposureDurationSeconds) ||
|
|
151
|
+
localExposureWindow
|
|
152
|
+
.localExposureDurationSeconds <= 0) {
|
|
153
|
+
throw new InvalidScientificInputError("Exposure-window resolution did not return a valid local sample for the bound sensor site.");
|
|
154
|
+
}
|
|
155
|
+
return approximationResult({
|
|
156
|
+
rateDomain,
|
|
157
|
+
rateIdentity: {
|
|
158
|
+
responseProfileId: input.rate.responseProfileId,
|
|
159
|
+
responseApplicationProfileId: input.rate
|
|
160
|
+
.responseApplicationProfileId,
|
|
161
|
+
operatingRangeProfileId: input.rate
|
|
162
|
+
.operatingRangeProfileId,
|
|
163
|
+
...(rateDomain ===
|
|
164
|
+
"responsivity-photocurrent"
|
|
165
|
+
? {
|
|
166
|
+
electricalApplicabilityProfileId: input.rate
|
|
167
|
+
.electricalApplicabilityProfileId
|
|
168
|
+
}
|
|
169
|
+
: {})
|
|
170
|
+
},
|
|
171
|
+
colorSamplingProfileId: input.rate
|
|
172
|
+
.colorSamplingProfileId,
|
|
173
|
+
channelId: input.rate.channelId,
|
|
174
|
+
site,
|
|
175
|
+
bindingId: binding.bindingId,
|
|
176
|
+
bindingRelationship: "one-native-effective-sample-to-one-color-site",
|
|
177
|
+
timingCoordinateRule: "one-to-one-color-site-center-equals-native-effective-sample-center",
|
|
178
|
+
nativeRasterPoint,
|
|
179
|
+
shutterMechanism: windows.shutterMechanism,
|
|
180
|
+
timeReference: windows.timeReference,
|
|
181
|
+
localExposureWindow,
|
|
182
|
+
localExposureDurationSeconds: localExposureWindow
|
|
183
|
+
.localExposureDurationSeconds,
|
|
184
|
+
exposureEventMeaning: "single-capture-local-exposure-window",
|
|
185
|
+
nativeImageRasterBindingEstablished: true,
|
|
186
|
+
channelAtSiteValidated: true,
|
|
187
|
+
physicalPhotodiodeTimingRegistrationEstablished: false,
|
|
188
|
+
multiFrameSequenceBindingEstablished: false,
|
|
189
|
+
timeStationarityEstablished: false,
|
|
190
|
+
constantRateTemporalIntegrationAuthorized: false,
|
|
191
|
+
temporalIntegrationApplied: false,
|
|
192
|
+
componentEvidence: {
|
|
193
|
+
binding: binding.componentEvidence
|
|
194
|
+
.binding,
|
|
195
|
+
colorSamplingProfile: binding.componentEvidence
|
|
196
|
+
.colorSamplingProfile,
|
|
197
|
+
nominalExposureDuration: windows
|
|
198
|
+
.nominalExposureDurationSeconds
|
|
199
|
+
.evidence,
|
|
200
|
+
openingBoundary: boundaryEvidence(windows.opening),
|
|
201
|
+
closingBoundary: boundaryEvidence(windows.closing)
|
|
202
|
+
}
|
|
203
|
+
}, "sensor-rate-local-exposure-binding", "1.0.0", [
|
|
204
|
+
"The rate's abstract color-sampling site is mapped to the center of the same-index native effective sample only because an explicit one-to-one shared-top-left binding is present.",
|
|
205
|
+
"Multi-site-per-native-sample relationships are blocked because contributor membership does not establish individual color-site timing coordinates.",
|
|
206
|
+
"The mapped timing coordinate is a native-effective-raster timing coordinate; it does not establish a physical photodiode timing registration.",
|
|
207
|
+
"The exposure schedule is recomputed from the evidence-backed opening/closing timing declarations at the bound point rather than accepting an arbitrary precomputed local duration.",
|
|
208
|
+
"The color-sampling channel at the exact site must match the response-rate channel.",
|
|
209
|
+
"The result represents one local exposure event only; multi-frame/pixel-shift sequence timing and combination remain outside this contract.",
|
|
210
|
+
"This binding does not establish that the optical/electron/current rate is constant through the exposure. Motion, flicker, flash, time-varying illumination/vignetting and detector transients require a time-dependent integrand.",
|
|
211
|
+
"Temporal integration, accumulated charge, saturation, noise, ADC/RAW conversion and reconstruction are not performed."
|
|
212
|
+
]);
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=local-exposure-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-exposure-binding.js","sourceRoot":"","sources":["../../src/sensor/local-exposure-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
2
|
+
export type SensorOpticalStackComponentRole = "cover-glass" | "infrared-cut" | "ultraviolet-cut" | "anti-reflection" | "birefringent-low-pass" | "wave-plate" | "other-optical-filter";
|
|
3
|
+
export interface SensorOpticalStackComponent {
|
|
4
|
+
componentId: string;
|
|
5
|
+
/**
|
|
6
|
+
* Roles may be combined because one physical element can provide multiple
|
|
7
|
+
* optical/filter functions.
|
|
8
|
+
*/
|
|
9
|
+
roles: readonly SensorOpticalStackComponentRole[];
|
|
10
|
+
evidence: readonly EvidenceProvenance[];
|
|
11
|
+
}
|
|
12
|
+
export interface SensorMicrolensDeclaration {
|
|
13
|
+
presence: "present" | "absent";
|
|
14
|
+
evidence: readonly EvidenceProvenance[];
|
|
15
|
+
/**
|
|
16
|
+
* Presence alone does not establish an angular, spectral, fill-factor, or
|
|
17
|
+
* collection-efficiency model.
|
|
18
|
+
*/
|
|
19
|
+
opticalEffectModel: "unresolved";
|
|
20
|
+
}
|
|
21
|
+
export interface AntiAliasingPointSplitComponent {
|
|
22
|
+
/**
|
|
23
|
+
* Native sensor physical offset from the nominal landing point.
|
|
24
|
+
* +X right, +Y down. Units: micrometres.
|
|
25
|
+
*/
|
|
26
|
+
offsetMicrometers: {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Dimensionless normalized spatial weight. Point-splitting kernels describe
|
|
32
|
+
* spatial redistribution only; total stack throughput is outside this field.
|
|
33
|
+
*/
|
|
34
|
+
normalizedWeight: number;
|
|
35
|
+
}
|
|
36
|
+
export type SensorEffectiveAntiAliasingSpatialResponse = {
|
|
37
|
+
/**
|
|
38
|
+
* Documented absence/cancellation of intentional anti-aliasing spatial
|
|
39
|
+
* splitting. This does not mean the whole sensor stack is optically
|
|
40
|
+
* identity.
|
|
41
|
+
*/
|
|
42
|
+
kind: "absent";
|
|
43
|
+
evidence: readonly EvidenceProvenance[];
|
|
44
|
+
} | {
|
|
45
|
+
/**
|
|
46
|
+
* An effective anti-aliasing response is known to exist, but its spatial
|
|
47
|
+
* response is not defensibly specified.
|
|
48
|
+
*/
|
|
49
|
+
kind: "present-unresolved";
|
|
50
|
+
evidence: readonly EvidenceProvenance[];
|
|
51
|
+
} | {
|
|
52
|
+
/**
|
|
53
|
+
* Generic normalized point-splitting approximation in native sensor
|
|
54
|
+
* physical coordinates.
|
|
55
|
+
*/
|
|
56
|
+
kind: "normalized-point-splitting-kernel";
|
|
57
|
+
evidence: readonly EvidenceProvenance[];
|
|
58
|
+
coordinateSystem: "native-sensor-physical";
|
|
59
|
+
scope: "field-wavelength-polarization-invariant-approximation";
|
|
60
|
+
components: readonly AntiAliasingPointSplitComponent[];
|
|
61
|
+
};
|
|
62
|
+
export interface SensorOpticalStackProfile {
|
|
63
|
+
schemaVersion: "0.1.0";
|
|
64
|
+
profileId: string;
|
|
65
|
+
evidence: readonly EvidenceProvenance[];
|
|
66
|
+
/**
|
|
67
|
+
* Ordered from incident-light side toward the sensor.
|
|
68
|
+
*
|
|
69
|
+
* These components are descriptive metadata only. Their presence does not
|
|
70
|
+
* create transmission, focus-shift, aberration, or spectral effects.
|
|
71
|
+
*/
|
|
72
|
+
orderedComponents?: readonly SensorOpticalStackComponent[];
|
|
73
|
+
/**
|
|
74
|
+
* Omitted means unknown/unasserted.
|
|
75
|
+
*
|
|
76
|
+
* This is intentionally separate from physical component presence so a
|
|
77
|
+
* stack can contain low-pass-related hardware while its net effective
|
|
78
|
+
* anti-aliasing response is absent/cancelled.
|
|
79
|
+
*/
|
|
80
|
+
effectiveAntiAliasingSpatialResponse?: SensorEffectiveAntiAliasingSpatialResponse;
|
|
81
|
+
/**
|
|
82
|
+
* Omitted means unknown/unasserted.
|
|
83
|
+
*/
|
|
84
|
+
microlens?: SensorMicrolensDeclaration;
|
|
85
|
+
}
|
|
86
|
+
export interface ResolvedAntiAliasingSpatialKernel {
|
|
87
|
+
profileId: string;
|
|
88
|
+
effectiveResponse: "absent" | "normalized-point-splitting-kernel";
|
|
89
|
+
coordinateSystem: "native-sensor-physical";
|
|
90
|
+
components: readonly AntiAliasingPointSplitComponent[];
|
|
91
|
+
normalizedWeightSum: number;
|
|
92
|
+
throughputIncluded: false;
|
|
93
|
+
spectralTransmissionIncluded: false;
|
|
94
|
+
fieldDependenceIncluded: false;
|
|
95
|
+
wavelengthDependenceIncluded: false;
|
|
96
|
+
polarizationDependenceIncluded: false;
|
|
97
|
+
microlensResponseIncluded: false;
|
|
98
|
+
coverFilterStackEffectsIncluded: false;
|
|
99
|
+
wholeSensorOpticalStackResponse: false;
|
|
100
|
+
provenance: {
|
|
101
|
+
profile: readonly EvidenceProvenance[];
|
|
102
|
+
antiAliasingResponse: readonly EvidenceProvenance[];
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Parses descriptive sensor optical-stack metadata plus an optional explicitly
|
|
107
|
+
* declared effective anti-aliasing spatial response.
|
|
108
|
+
*
|
|
109
|
+
* Unknown facts are omitted instead of inferred. Physical component presence
|
|
110
|
+
* is intentionally separate from effective anti-aliasing response so the
|
|
111
|
+
* schema can represent cancellation/neutralization designs without claiming
|
|
112
|
+
* the physical assembly is absent.
|
|
113
|
+
*
|
|
114
|
+
* Cover/filter-stack and microlens presence do not create optical effects in
|
|
115
|
+
* schema 0.1.0. Thickness, refractive index, spectral transmission, angular
|
|
116
|
+
* acceptance, focus shift and microlens collection behavior require later
|
|
117
|
+
* explicit models/calibration.
|
|
118
|
+
*/
|
|
119
|
+
export declare function parseSensorOpticalStackProfile(value: unknown): SensorOpticalStackProfile;
|
|
120
|
+
/**
|
|
121
|
+
* Resolves only the effective anti-aliasing spatial kernel.
|
|
122
|
+
*
|
|
123
|
+
* This is not a whole optical-stack PSF. Cover/filter transmission, refraction,
|
|
124
|
+
* microlens behavior, field/wavelength/polarization dependence, and total
|
|
125
|
+
* throughput remain excluded.
|
|
126
|
+
*
|
|
127
|
+
* A documented absent effective anti-aliasing response resolves to an identity
|
|
128
|
+
* component at zero offset. An unknown response (field omitted) or a
|
|
129
|
+
* present-but-unresolved response fails closed.
|
|
130
|
+
*/
|
|
131
|
+
export declare function resolveAntiAliasingSpatialKernel(profileInput: SensorOpticalStackProfile): ResolvedAntiAliasingSpatialKernel;
|
|
132
|
+
//# sourceMappingURL=optical-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optical-stack.d.ts","sourceRoot":"","sources":["../../src/sensor/optical-stack.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAKxC,MAAM,MAAM,+BAA+B,GACvC,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,YAAY,GACZ,sBAAsB,CAAC;AAE3B,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAClD,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC;;;OAGG;IACH,kBAAkB,EAAE,YAAY,CAAC;CAClC;AAED,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,iBAAiB,EAAE;QACjB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,0CAA0C,GAClD;IACE;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzC,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,mCAAmC,CAAC;IAC1C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,KAAK,EACH,uDAAuD,CAAC;IAC1D,UAAU,EAAE,SAAS,+BAA+B,EAAE,CAAC;CACxD,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC3D;;;;;;OAMG;IACH,oCAAoC,CAAC,EAAE,0CAA0C,CAAC;IAClF;;OAEG;IACH,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EACb,QAAQ,GACR,mCAAmC,CAAC;IACxC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,UAAU,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,KAAK,CAAC;IAC1B,4BAA4B,EAAE,KAAK,CAAC;IACpC,uBAAuB,EAAE,KAAK,CAAC;IAC/B,4BAA4B,EAAE,KAAK,CAAC;IACpC,8BAA8B,EAAE,KAAK,CAAC;IACtC,yBAAyB,EAAE,KAAK,CAAC;IACjC,+BAA+B,EAAE,KAAK,CAAC;IACvC,+BAA+B,EAAE,KAAK,CAAC;IACvC,UAAU,EAAE;QACV,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;QACvC,oBAAoB,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACrD,CAAC;CACH;AA0TD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,yBAAyB,CAuE3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,yBAAyB,GACtC,iCAAiC,CAyFnC"}
|