@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
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Applies a generic radial lens-distortion field mapping to one ideal image-plane point. The mapping
|
|
4
|
+
* is rotationally symmetric about the optical axis: p_distorted = p_ideal * (1 + k1 r² + k2 r⁴ + k3
|
|
5
|
+
* r⁶) where r is normalized by the caller-declared physical reference radius. The profile is accepted
|
|
6
|
+
* only when the radial mapping is strictly monotonic over its declared operating radius, which makes
|
|
7
|
+
* inverse destination-to-source sampling well-defined.
|
|
8
|
+
* @see docs/PHYSICS_FOUNDATION.md for equations, coordinate/unit conventions, blockers and support
|
|
9
|
+
* limits.
|
|
10
|
+
*/
|
|
1
11
|
import { type CalculationResult } from "../core/calculation-result.js";
|
|
2
12
|
export interface RadialDistortionCoefficients {
|
|
3
13
|
/** Dimensionless r² coefficient. */
|
|
@@ -105,8 +115,10 @@ export declare function calculateRadialDistortionMapping(input: CalculateRadialD
|
|
|
105
115
|
* coordinate for destination-to-source renderer sampling.
|
|
106
116
|
*
|
|
107
117
|
* The same profile monotonicity requirement used by the forward mapping makes
|
|
108
|
-
* the inverse unique over the declared operating radius.
|
|
109
|
-
*
|
|
118
|
+
* the inverse unique over the declared operating radius. Exact center,
|
|
119
|
+
* identity-profile, and mapped-boundary cases are resolved directly; other
|
|
120
|
+
* radii use bounded deterministic bisection that stops once floating-point
|
|
121
|
+
* bounds can no longer narrow.
|
|
110
122
|
*/
|
|
111
123
|
export interface InverseRadialSourcePointValue {
|
|
112
124
|
sourceImagePointMm: LensFieldPointMm;
|
|
@@ -119,6 +131,14 @@ export interface InverseRadialSourcePointValue {
|
|
|
119
131
|
* models that do not need the standalone radial delta/provenance envelope.
|
|
120
132
|
*/
|
|
121
133
|
export declare function calculateInverseRadialSourcePointValue(distortedImagePointMm: LensFieldPointMm, profile: ValidatedRadialProfile, pointPath: string): InverseRadialSourcePointValue;
|
|
134
|
+
/**
|
|
135
|
+
* Invert the declared monotonic radial field map within its supported envelope using the existing
|
|
136
|
+
* bounded root solve and preserve explicit optical coordinates.
|
|
137
|
+
* @param input - CalculateInverseRadialDistortionMappingInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
138
|
+
* @returns CalculationResult<InverseRadialDistortionMapping>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
139
|
+
*
|
|
140
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
141
|
+
*/
|
|
122
142
|
export declare function calculateInverseRadialDistortionMapping(input: CalculateInverseRadialDistortionMappingInput): CalculationResult<InverseRadialDistortionMapping>;
|
|
123
143
|
/**
|
|
124
144
|
* Inverse-maps multiple distorted image-plane destinations while validating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radial-distortion.d.ts","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,4BAA4B,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;IACV,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,qCAAqC;IACpD,2CAA2C;IAC3C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,4CAA4C;IAC3D,4EAA4E;IAC5E,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,6CAA6C;IAC5D,gFAAgF;IAChF,sBAAsB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,0BAA0B,CAAC;IACtC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8BAA8B,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,0BAA0B,CAAC;IACtC,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE;QACP,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8BAA8B,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,gCAAgC,CAAC;IAC5C,QAAQ,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B,EAAE,MAAM,CAAC;CACxC;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,4BAA4B,CAAC;IAC3C,uBAAuB,EAAE,MAAM,CAAC;IAChC,6BAA6B,EAAE,MAAM,CAAC;CACvC;
|
|
1
|
+
{"version":3,"file":"radial-distortion.d.ts","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Applies a generic radial lens-distortion field mapping to one ideal image-plane point. The mapping
|
|
5
|
+
* is rotationally symmetric about the optical axis: p_distorted = p_ideal * (1 + k1 r² + k2 r⁴ + k3
|
|
6
|
+
* r⁶) where r is normalized by the caller-declared physical reference radius. The profile is accepted
|
|
7
|
+
* only when the radial mapping is strictly monotonic over its declared operating radius, which makes
|
|
8
|
+
* inverse destination-to-source sampling well-defined.
|
|
9
|
+
* @see docs/PHYSICS_FOUNDATION.md for equations, coordinate/unit conventions, blockers and support
|
|
10
|
+
* limits.
|
|
11
|
+
*/
|
|
2
12
|
import { approximationResult } from "../core/calculation-result.js";
|
|
3
13
|
import { InvalidScientificInputError, requirePositiveFinite } from "../core/validation.js";
|
|
4
14
|
const INVERSE_BISECTION_ITERATIONS = 80;
|
|
@@ -38,18 +48,43 @@ function radialDerivativeFromSquaredRadius(squaredRadius, coefficients) {
|
|
|
38
48
|
function derivativeCriticalSquaredRadii(coefficients) {
|
|
39
49
|
// d/dr² of the radial derivative:
|
|
40
50
|
// 3 k1 + 10 k2 s + 21 k3 s² = 0, where s = r².
|
|
51
|
+
//
|
|
52
|
+
// Scale the quadratic before solving so finite caller coefficients cannot
|
|
53
|
+
// overflow the discriminant calculation. Use the stable q-form roots so a
|
|
54
|
+
// tiny quadratic term cannot erase the smaller physical root through
|
|
55
|
+
// cancellation and accidentally let a non-monotonic profile pass.
|
|
41
56
|
const a = 21 * coefficients.k3;
|
|
42
57
|
const b = 10 * coefficients.k2;
|
|
43
58
|
const c = 3 * coefficients.k1;
|
|
44
|
-
|
|
45
|
-
|
|
59
|
+
const coefficientScale = Math.max(Math.abs(a), Math.abs(b), Math.abs(c));
|
|
60
|
+
if (coefficientScale === 0) {
|
|
61
|
+
return [];
|
|
46
62
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
63
|
+
const scaledA = a / coefficientScale;
|
|
64
|
+
const scaledB = b / coefficientScale;
|
|
65
|
+
const scaledC = c / coefficientScale;
|
|
66
|
+
if (scaledA === 0) {
|
|
67
|
+
return scaledB === 0 ? [] : [-scaledC / scaledB];
|
|
68
|
+
}
|
|
69
|
+
const squaredB = scaledB * scaledB;
|
|
70
|
+
const fourAC = 4 * scaledA * scaledC;
|
|
71
|
+
const discriminant = squaredB - fourAC;
|
|
72
|
+
const discriminantTolerance = Number.EPSILON *
|
|
73
|
+
16 *
|
|
74
|
+
Math.max(1, Math.abs(squaredB), Math.abs(fourAC));
|
|
75
|
+
if (discriminant < -discriminantTolerance) {
|
|
49
76
|
return [];
|
|
50
77
|
}
|
|
51
|
-
const root = Math.sqrt(discriminant);
|
|
52
|
-
|
|
78
|
+
const root = Math.sqrt(Math.max(0, discriminant));
|
|
79
|
+
if (root === 0) {
|
|
80
|
+
return [-scaledB / (2 * scaledA)];
|
|
81
|
+
}
|
|
82
|
+
const q = -0.5 *
|
|
83
|
+
(scaledB + (scaledB >= 0 ? root : -root));
|
|
84
|
+
if (q === 0) {
|
|
85
|
+
return [-scaledB / (2 * scaledA)];
|
|
86
|
+
}
|
|
87
|
+
return [q / scaledA, scaledC / q];
|
|
53
88
|
}
|
|
54
89
|
/** @internal Validates/copies one profile for repeated in-package evaluation. */
|
|
55
90
|
export function validateRadialDistortionProfile(profile) {
|
|
@@ -59,6 +94,9 @@ export function validateRadialDistortionProfile(profile) {
|
|
|
59
94
|
requireFinite("profile.coefficients.k2", profile.coefficients.k2);
|
|
60
95
|
requireFinite("profile.coefficients.k3", profile.coefficients.k3);
|
|
61
96
|
const maximumSquaredRadius = profile.maximumNormalizedRadius * profile.maximumNormalizedRadius;
|
|
97
|
+
if (!Number.isFinite(maximumSquaredRadius)) {
|
|
98
|
+
throw new InvalidScientificInputError("profile.maximumNormalizedRadius is too large to evaluate safely.");
|
|
99
|
+
}
|
|
62
100
|
const candidates = [
|
|
63
101
|
0,
|
|
64
102
|
maximumSquaredRadius,
|
|
@@ -82,8 +120,15 @@ export function validateRadialDistortionProfile(profile) {
|
|
|
82
120
|
};
|
|
83
121
|
}
|
|
84
122
|
function requirePoint(name, point) {
|
|
85
|
-
|
|
86
|
-
|
|
123
|
+
if (typeof point !== "object" || point === null) {
|
|
124
|
+
throw new InvalidScientificInputError(`${name} must be an object with finite numeric x and y coordinates.`);
|
|
125
|
+
}
|
|
126
|
+
if (typeof point.x !== "number" ||
|
|
127
|
+
typeof point.y !== "number" ||
|
|
128
|
+
!Number.isFinite(point.x) ||
|
|
129
|
+
!Number.isFinite(point.y)) {
|
|
130
|
+
throw new InvalidScientificInputError(`${name} must contain finite numeric x and y coordinates.`);
|
|
131
|
+
}
|
|
87
132
|
}
|
|
88
133
|
function mappingAssumptions() {
|
|
89
134
|
return [
|
|
@@ -114,6 +159,7 @@ export function calculateRadialDistortionMapping(input) {
|
|
|
114
159
|
const profile = validateRadialDistortionProfile(input.profile);
|
|
115
160
|
const sourceRadiusMm = Math.hypot(input.imagePointMm.x, input.imagePointMm.y);
|
|
116
161
|
const sourceNormalizedRadius = sourceRadiusMm / profile.normalizationRadiusMm;
|
|
162
|
+
requireFinite("imagePointMm normalized radius", sourceNormalizedRadius);
|
|
117
163
|
if (sourceNormalizedRadius > profile.maximumNormalizedRadius) {
|
|
118
164
|
throw new InvalidScientificInputError("imagePointMm lies outside the radial distortion profile maximumNormalizedRadius.");
|
|
119
165
|
}
|
|
@@ -148,6 +194,7 @@ export function calculateInverseRadialSourcePointValue(distortedImagePointMm, pr
|
|
|
148
194
|
requirePoint(pointPath, distortedImagePointMm);
|
|
149
195
|
const distortedRadiusMm = Math.hypot(distortedImagePointMm.x, distortedImagePointMm.y);
|
|
150
196
|
const distortedNormalizedRadius = distortedRadiusMm / profile.normalizationRadiusMm;
|
|
197
|
+
requireFinite(`${pointPath} normalized radius`, distortedNormalizedRadius);
|
|
151
198
|
const mappedRadiusTolerance = inverseMappedRadiusTolerance(distortedNormalizedRadius, profile.maximumMappedNormalizedRadius);
|
|
152
199
|
if (distortedNormalizedRadius >
|
|
153
200
|
profile.maximumMappedNormalizedRadius + mappedRadiusTolerance) {
|
|
@@ -155,20 +202,33 @@ export function calculateInverseRadialSourcePointValue(distortedImagePointMm, pr
|
|
|
155
202
|
}
|
|
156
203
|
const solverDistortedNormalizedRadius = Math.min(distortedNormalizedRadius, profile.maximumMappedNormalizedRadius);
|
|
157
204
|
let sourceNormalizedRadius = 0;
|
|
158
|
-
if (solverDistortedNormalizedRadius
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
205
|
+
if (solverDistortedNormalizedRadius ===
|
|
206
|
+
profile.maximumMappedNormalizedRadius) {
|
|
207
|
+
sourceNormalizedRadius = profile.maximumNormalizedRadius;
|
|
208
|
+
}
|
|
209
|
+
else if (solverDistortedNormalizedRadius > 0) {
|
|
210
|
+
const { k1, k2, k3 } = profile.coefficients;
|
|
211
|
+
if (k1 === 0 && k2 === 0 && k3 === 0) {
|
|
212
|
+
sourceNormalizedRadius = solverDistortedNormalizedRadius;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
let lower = 0;
|
|
216
|
+
let upper = profile.maximumNormalizedRadius;
|
|
217
|
+
for (let iteration = 0; iteration < INVERSE_BISECTION_ITERATIONS; iteration += 1) {
|
|
218
|
+
const midpoint = (lower + upper) / 2;
|
|
219
|
+
if (midpoint === lower || midpoint === upper) {
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
const mapped = mappedNormalizedRadius(midpoint, profile.coefficients);
|
|
223
|
+
if (mapped < solverDistortedNormalizedRadius) {
|
|
224
|
+
lower = midpoint;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
upper = midpoint;
|
|
228
|
+
}
|
|
169
229
|
}
|
|
230
|
+
sourceNormalizedRadius = (lower + upper) / 2;
|
|
170
231
|
}
|
|
171
|
-
sourceNormalizedRadius = (lower + upper) / 2;
|
|
172
232
|
}
|
|
173
233
|
const radialScaleAtSource = radialScale(sourceNormalizedRadius, profile.coefficients);
|
|
174
234
|
const sourceImagePointMm = distortedNormalizedRadius === 0
|
|
@@ -210,12 +270,20 @@ function calculateInverseRadialDistortionMappingValue(distortedImagePointMm, pro
|
|
|
210
270
|
profileMinimumRadialDerivative: profile.minimumRadialDerivative
|
|
211
271
|
};
|
|
212
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Invert the declared monotonic radial field map within its supported envelope using the existing
|
|
275
|
+
* bounded root solve and preserve explicit optical coordinates.
|
|
276
|
+
* @param input - CalculateInverseRadialDistortionMappingInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
277
|
+
* @returns CalculationResult<InverseRadialDistortionMapping>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
278
|
+
*
|
|
279
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
280
|
+
*/
|
|
213
281
|
export function calculateInverseRadialDistortionMapping(input) {
|
|
214
282
|
const profile = validateRadialDistortionProfile(input.profile);
|
|
215
283
|
const mapping = calculateInverseRadialDistortionMappingValue(input.distortedImagePointMm, profile, "distortedImagePointMm");
|
|
216
284
|
return approximationResult(mapping, "generic-inverse-radial-lens-distortion", "1.0.0", [
|
|
217
285
|
...mappingAssumptions(),
|
|
218
|
-
`Inverse radius
|
|
286
|
+
`Inverse radius uses exact center/identity/boundary solutions where applicable and otherwise up to ${INVERSE_BISECTION_ITERATIONS} deterministic bisection iterations, stopping when IEEE-754 bounds can no longer narrow`
|
|
219
287
|
]);
|
|
220
288
|
}
|
|
221
289
|
/**
|
|
@@ -227,7 +295,17 @@ export function calculateInverseRadialDistortionMapping(input) {
|
|
|
227
295
|
*/
|
|
228
296
|
export function calculateInverseRadialDistortionMappings(input) {
|
|
229
297
|
const profile = validateRadialDistortionProfile(input.profile);
|
|
230
|
-
|
|
298
|
+
if (!Array.isArray(input.distortedImagePointsMm)) {
|
|
299
|
+
throw new InvalidScientificInputError("distortedImagePointsMm must be an array of image-plane points.");
|
|
300
|
+
}
|
|
301
|
+
const mappings = [];
|
|
302
|
+
for (let index = 0; index < input.distortedImagePointsMm.length; index += 1) {
|
|
303
|
+
const point = input.distortedImagePointsMm[index];
|
|
304
|
+
if (point === undefined) {
|
|
305
|
+
throw new InvalidScientificInputError(`distortedImagePointsMm[${index}] must be an image-plane point.`);
|
|
306
|
+
}
|
|
307
|
+
mappings.push(calculateInverseRadialDistortionMappingValue(point, profile, `distortedImagePointsMm[${index}]`));
|
|
308
|
+
}
|
|
231
309
|
return approximationResult({
|
|
232
310
|
direction: "distorted-to-undistorted-batch",
|
|
233
311
|
mappings,
|
|
@@ -235,7 +313,7 @@ export function calculateInverseRadialDistortionMappings(input) {
|
|
|
235
313
|
profileMinimumRadialDerivative: profile.minimumRadialDerivative
|
|
236
314
|
}, "generic-inverse-radial-lens-distortion-batch", "1.0.0", [
|
|
237
315
|
...mappingAssumptions(),
|
|
238
|
-
`Inverse radius
|
|
316
|
+
`Inverse radius uses exact center/identity/boundary solutions where applicable and otherwise up to ${INVERSE_BISECTION_ITERATIONS} deterministic bisection iterations per point, stopping when IEEE-754 bounds can no longer narrow`,
|
|
239
317
|
"The radial profile is validated and its invariant extrema are resolved once for the batch"
|
|
240
318
|
]);
|
|
241
319
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radial-distortion.js","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radial-distortion.js","sourceRoot":"","sources":["../../src/optics/radial-distortion.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;GASG;AAEH,OAAO,EACL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAgG/B,MAAM,4BAA4B,GAAG,EAAE,CAAC;AACxC,MAAM,6CAA6C,GAAG,EAAE,CAAC;AAEzD,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,2BAA2B,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,yBAAiC,EACjC,6BAAqC;IAErC,OAAO,CACL,MAAM,CAAC,OAAO;QACd,6CAA6C;QAC7C,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,EACnC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CACxC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,gBAAwB,EACxB,YAA0C;IAE1C,MAAM,EAAE,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CACL,CAAC;QACD,YAAY,CAAC,EAAE,GAAG,EAAE;QACpB,YAAY,CAAC,EAAE,GAAG,EAAE;QACpB,YAAY,CAAC,EAAE,GAAG,EAAE,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,gBAAwB,EACxB,YAA0C;IAE1C,OAAO,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,iCAAiC,CACxC,aAAqB,EACrB,YAA0C;IAE1C,OAAO,CACL,CAAC;QACD,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,aAAa;QACnC,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,aAAa,GAAG,aAAa;QACnD,CAAC;YACC,YAAY,CAAC,EAAE;YACf,aAAa;YACb,aAAa;YACb,aAAa,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,YAA0C;IAE1C,kCAAkC;IAClC,+CAA+C;IAC/C,EAAE;IACF,0EAA0E;IAC1E,0EAA0E;IAC1E,qEAAqE;IACrE,kEAAkE;IAClE,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACZ,CAAC;IAEF,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC;IAErC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;IACrC,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,MAAM,qBAAqB,GACzB,MAAM,CAAC,OAAO;QACd,EAAE;QACF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,IAAI,YAAY,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GACL,CAAC,GAAG;QACJ,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,+BAA+B,CAC7C,OAAgC;IAEhC,qBAAqB,CACnB,+BAA+B,EAC/B,OAAO,CAAC,qBAAqB,CAC9B,CAAC;IACF,qBAAqB,CACnB,iCAAiC,EACjC,OAAO,CAAC,uBAAuB,CAChC,CAAC;IACF,aAAa,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClE,aAAa,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAClE,aAAa,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAElE,MAAM,oBAAoB,GACxB,OAAO,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,2BAA2B,CACnC,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,CAAC;QACD,oBAAoB;QACpB,GAAG,8BAA8B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAC5D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,oBAAoB,CACrD;KACF,CAAC;IACF,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CACtC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAClC,iCAAiC,CAC/B,aAAa,EACb,OAAO,CAAC,YAAY,CACrB,CACF,CACF,CAAC;IAEF,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACzC,uBAAuB,IAAI,CAAC,EAC5B,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,4HAA4H,CAC7H,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,OAAO,CAAC,uBAAuB,EAC/B,OAAO,CAAC,YAAY,CACrB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,2BAA2B,CACnC,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;QACxD,YAAY,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE;QACzC,uBAAuB;QACvB,6BAA6B,EAAE,mBAAmB;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAuB;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,6DAA6D,CACrE,CAAC;IACJ,CAAC;IACD,IACE,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;QAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,mDAAmD,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,gEAAgE;QAChE,mGAAmG;QACnG,8FAA8F;QAC9F,8CAA8C;QAC9C,4GAA4G;QAC5G,kIAAkI;KACnI,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gCAAgC,CAC9C,KAA4C;IAE5C,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,KAAK,CAAC,YAAY,CAAC,CAAC,EACpB,KAAK,CAAC,YAAY,CAAC,CAAC,CACrB,CAAC;IACF,MAAM,sBAAsB,GAC1B,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;IACjD,aAAa,CAAC,gCAAgC,EAAE,sBAAsB,CAAC,CAAC;IAExE,IAAI,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAC7D,MAAM,IAAI,2BAA2B,CACnC,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CACvB,sBAAsB,EACtB,OAAO,CAAC,YAAY,CACrB,CAAC;IACF,MAAM,kBAAkB,GAAG;QACzB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK;QAC/B,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK;KAChC,CAAC;IACF,MAAM,YAAY,GAAG,sBAAsB,GAAG,KAAK,CAAC;IACpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAE3D,OAAO,mBAAmB,CACxB;QACE,SAAS,EAAE,0BAA0B;QACrC,kBAAkB,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE;QAC7C,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB,EAAE,YAAY;QACpC,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE;YACP,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,MAAM;YACT,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;SACrC;QACD,8BAA8B,EAC5B,OAAO,CAAC,uBAAuB;KAClC,EACD,gCAAgC,EAChC,OAAO,EACP,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAmBD;;;GAGG;AACH,MAAM,UAAU,sCAAsC,CACpD,qBAAuC,EACvC,OAA+B,EAC/B,SAAiB;IAEjB,YAAY,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAE/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAClC,qBAAqB,CAAC,CAAC,EACvB,qBAAqB,CAAC,CAAC,CACxB,CAAC;IACF,MAAM,yBAAyB,GAC7B,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IACpD,aAAa,CACX,GAAG,SAAS,oBAAoB,EAChC,yBAAyB,CAC1B,CAAC;IAEF,MAAM,qBAAqB,GAAG,4BAA4B,CACxD,yBAAyB,EACzB,OAAO,CAAC,6BAA6B,CACtC,CAAC;IACF,IACE,yBAAyB;QACzB,OAAO,CAAC,6BAA6B,GAAG,qBAAqB,EAC7D,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,GAAG,SAAS,sEAAsE,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,+BAA+B,GAAG,IAAI,CAAC,GAAG,CAC9C,yBAAyB,EACzB,OAAO,CAAC,6BAA6B,CACtC,CAAC;IAEF,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IACE,+BAA+B;QAC/B,OAAO,CAAC,6BAA6B,EACrC,CAAC;QACD,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC3D,CAAC;SAAM,IAAI,+BAA+B,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACrC,sBAAsB,GAAG,+BAA+B,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,KAAK,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAE5C,KACE,IAAI,SAAS,GAAG,CAAC,EACjB,SAAS,GAAG,4BAA4B,EACxC,SAAS,IAAI,CAAC,EACd,CAAC;gBACD,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBAC7C,MAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,sBAAsB,CACnC,QAAQ,EACR,OAAO,CAAC,YAAY,CACrB,CAAC;gBACF,IAAI,MAAM,GAAG,+BAA+B,EAAE,CAAC;oBAC7C,KAAK,GAAG,QAAQ,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,QAAQ,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,sBAAsB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,WAAW,CACrC,sBAAsB,EACtB,OAAO,CAAC,YAAY,CACrB,CAAC;IACF,MAAM,kBAAkB,GACtB,yBAAyB,KAAK,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAChB,CAAC,CAAC,+BAA+B,KAAK,yBAAyB;YAC7D,CAAC,CAAC;gBACE,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG,mBAAmB;gBAChD,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG,mBAAmB;aACjD;YACH,CAAC,CAAC;gBACE,CAAC,EACC,qBAAqB,CAAC,CAAC;oBACvB,CAAC,sBAAsB,GAAG,yBAAyB,CAAC;gBACtD,CAAC,EACC,qBAAqB,CAAC,CAAC;oBACvB,CAAC,sBAAsB,GAAG,yBAAyB,CAAC;aACvD,CAAC;IAEV,OAAO;QACL,kBAAkB;QAClB,yBAAyB;QACzB,sBAAsB;QACtB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,4CAA4C,CACnD,qBAAuC,EACvC,OAA+B,EAC/B,SAAiB;IAEjB,MAAM,MAAM,GAAG,sCAAsC,CACnD,qBAAqB,EACrB,OAAO,EACP,SAAS,CACV,CAAC;IACF,MAAM,MAAM,GACV,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IACxD,MAAM,MAAM,GACV,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,SAAS,EAAE,0BAA0B;QACrC,qBAAqB,EAAE,EAAE,GAAG,qBAAqB,EAAE;QACnD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,OAAO,EAAE;YACP,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,MAAM;YACT,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;SACrC;QACD,8BAA8B,EAAE,OAAO,CAAC,uBAAuB;KAChE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAmD;IAEnD,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,4CAA4C,CAC1D,KAAK,CAAC,qBAAqB,EAC3B,OAAO,EACP,uBAAuB,CACxB,CAAC;IAEF,OAAO,mBAAmB,CACxB,OAAO,EACP,wCAAwC,EACxC,OAAO,EACP;QACE,GAAG,kBAAkB,EAAE;QACvB,qGAAqG,4BAA4B,yFAAyF;KAC3N,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wCAAwC,CACtD,KAAoD;IAEpD,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,2BAA2B,CACnC,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAC3C,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,2BAA2B,CACnC,0BAA0B,KAAK,iCAAiC,CACjE,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,4CAA4C,CAC1C,KAAK,EACL,OAAO,EACP,0BAA0B,KAAK,GAAG,CACnC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CACxB;QACE,SAAS,EAAE,gCAAgC;QAC3C,QAAQ;QACR,UAAU,EAAE,QAAQ,CAAC,MAAM;QAC3B,8BAA8B,EAAE,OAAO,CAAC,uBAAuB;KAChE,EACD,8CAA8C,EAC9C,OAAO,EACP;QACE,GAAG,kBAAkB,EAAE;QACvB,qGAAqG,4BAA4B,mGAAmG;QACpO,2FAA2F;KAC5F,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
4
|
+
* missing required fields and incompatible scientific data fail at this boundary. The optical bridge
|
|
5
|
+
* maps outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance. Circular paraxial
|
|
6
|
+
* acceptance is pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m). Spectral
|
|
7
|
+
* transmission and effective working T-stop are alternative paths, and field throughput is applied
|
|
8
|
+
* exactly once. Sensor response and PSF redistribution are downstream.
|
|
9
|
+
* Apply declared pupil acceptance and exactly one transmission/field-throughput path to spectral scene
|
|
10
|
+
* radiance, returning pre-stack irradiance with conservative evidence. The optical bridge maps
|
|
11
|
+
* outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance. Circular paraxial acceptance is
|
|
12
|
+
* pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m). Spectral transmission and
|
|
13
|
+
* effective working T-stop are alternative paths, and field throughput is applied exactly once. Sensor
|
|
14
|
+
* response and PSF redistribution are downstream.
|
|
15
|
+
* @see docs/SCENE_SENSOR_QUADRATURE.md for equations, coordinate/unit conventions, blockers and
|
|
16
|
+
* support limits.
|
|
17
|
+
*/
|
|
18
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
19
|
+
import { type EvidenceBackedFact, type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
20
|
+
import { type SpectralWavelengthBasis } from "../core/spectral.js";
|
|
21
|
+
import { type FrontOfLensFilterProfile } from "./front-of-lens-filter.js";
|
|
22
|
+
import type { IlluminationVignetting } from "./illumination-vignetting.js";
|
|
23
|
+
import { type SceneRadianceEvaluationRequest, type SceneRadianceEvaluationResult } from "../schema/scene-radiance.js";
|
|
24
|
+
export declare const SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION: "0.1.0";
|
|
25
|
+
export type OpticalBridgeScientificStatus = "calibrated" | "approximation";
|
|
26
|
+
export type OpticalBridgeUncertainty = {
|
|
27
|
+
kind: "relative";
|
|
28
|
+
fraction: number;
|
|
29
|
+
basis: string;
|
|
30
|
+
} | {
|
|
31
|
+
kind: "not-quantified";
|
|
32
|
+
limitation: string;
|
|
33
|
+
};
|
|
34
|
+
export interface NumericRange {
|
|
35
|
+
minimum: number;
|
|
36
|
+
maximum: number;
|
|
37
|
+
}
|
|
38
|
+
export type OpticalBridgeFocusApplicability = {
|
|
39
|
+
kind: "any";
|
|
40
|
+
} | {
|
|
41
|
+
kind: "finite-distance-range";
|
|
42
|
+
objectDistanceM: NumericRange;
|
|
43
|
+
};
|
|
44
|
+
export interface SpectralTransmissionSample {
|
|
45
|
+
wavelengthNanometers: number;
|
|
46
|
+
linearTransmissionFactor: number;
|
|
47
|
+
}
|
|
48
|
+
export type OpticalTransmissionModel = {
|
|
49
|
+
kind: "spectral-transmission";
|
|
50
|
+
scientificStatus: OpticalBridgeScientificStatus;
|
|
51
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
52
|
+
samples: EvidenceBackedFact<readonly SpectralTransmissionSample[]>;
|
|
53
|
+
uncertainty: OpticalBridgeUncertainty;
|
|
54
|
+
} | {
|
|
55
|
+
kind: "effective-working-t-stop-approximation";
|
|
56
|
+
scientificStatus: "approximation";
|
|
57
|
+
workingTStop: EvidenceBackedFact<number>;
|
|
58
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
59
|
+
wavelengthRangeNanometers: NumericRange;
|
|
60
|
+
uncertainty: OpticalBridgeUncertainty;
|
|
61
|
+
limitation: string;
|
|
62
|
+
};
|
|
63
|
+
export interface SceneToSensorIrradianceProfile {
|
|
64
|
+
schemaVersion: typeof SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION;
|
|
65
|
+
profileId: string;
|
|
66
|
+
profileVersion: string;
|
|
67
|
+
lensProfileId: string;
|
|
68
|
+
scientificStatus: OpticalBridgeScientificStatus;
|
|
69
|
+
applicability: {
|
|
70
|
+
focalLengthMm: NumericRange;
|
|
71
|
+
nominalFNumber: NumericRange;
|
|
72
|
+
focus: OpticalBridgeFocusApplicability;
|
|
73
|
+
};
|
|
74
|
+
transmission: OpticalTransmissionModel;
|
|
75
|
+
distortionAreaMappingOwnership: "not-applied-by-bridge";
|
|
76
|
+
psfRedistributionOwnership: "downstream-normalized-energy-redistribution";
|
|
77
|
+
sensorOpticalStackIncluded: false;
|
|
78
|
+
strayLightIncluded: false;
|
|
79
|
+
polarizationModeled: false;
|
|
80
|
+
wavelengthChangingBehaviorModeled: false;
|
|
81
|
+
volumetricScatteringModeled: false;
|
|
82
|
+
evidence: readonly EvidenceProvenance[];
|
|
83
|
+
limitations: readonly string[];
|
|
84
|
+
}
|
|
85
|
+
export type OpticalBridgeFocusContext = {
|
|
86
|
+
kind: "infinity-focus";
|
|
87
|
+
} | {
|
|
88
|
+
kind: "ideal-symmetric-thin-lens";
|
|
89
|
+
objectDistanceM: number;
|
|
90
|
+
pupilMagnificationAssumption: "unity";
|
|
91
|
+
} | {
|
|
92
|
+
kind: "supplied-working-f-number";
|
|
93
|
+
focus: {
|
|
94
|
+
kind: "infinity";
|
|
95
|
+
} | {
|
|
96
|
+
kind: "finite";
|
|
97
|
+
objectDistanceM: number;
|
|
98
|
+
};
|
|
99
|
+
workingFNumber: EvidenceBackedFact<number>;
|
|
100
|
+
basis: string;
|
|
101
|
+
};
|
|
102
|
+
export type OpticalBridgeFieldThroughput = {
|
|
103
|
+
kind: "unity";
|
|
104
|
+
} | {
|
|
105
|
+
kind: "illumination-vignetting-result";
|
|
106
|
+
result: IlluminationVignetting;
|
|
107
|
+
};
|
|
108
|
+
export interface CalculateSceneRadianceToSensorIrradianceInput {
|
|
109
|
+
sceneRadianceRequest: SceneRadianceEvaluationRequest;
|
|
110
|
+
sceneRadianceResult: SceneRadianceEvaluationResult;
|
|
111
|
+
profile: SceneToSensorIrradianceProfile;
|
|
112
|
+
focalLengthMm: number;
|
|
113
|
+
nominalFNumber: number;
|
|
114
|
+
focus: OpticalBridgeFocusContext;
|
|
115
|
+
imagePointMm: {
|
|
116
|
+
x: number;
|
|
117
|
+
y: number;
|
|
118
|
+
};
|
|
119
|
+
fieldThroughput: OpticalBridgeFieldThroughput;
|
|
120
|
+
frontOfLensFilters?: readonly FrontOfLensFilterProfile[];
|
|
121
|
+
}
|
|
122
|
+
export interface SceneToSensorIrradianceResult {
|
|
123
|
+
schemaVersion: typeof SCENE_TO_SENSOR_IRRADIANCE_PROFILE_SCHEMA_VERSION;
|
|
124
|
+
profileId: string;
|
|
125
|
+
profileVersion: string;
|
|
126
|
+
lensProfileId: string;
|
|
127
|
+
sampleId: string;
|
|
128
|
+
providerProfileId: string;
|
|
129
|
+
sceneId: string;
|
|
130
|
+
timeSecondsFromExposureStart: number;
|
|
131
|
+
wavelengthNanometers: number;
|
|
132
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
133
|
+
inputQuantity: "outgoing-spectral-radiance";
|
|
134
|
+
inputUnit: "W/m^2/sr/nm";
|
|
135
|
+
outputQuantity: "sensor-plane-spectral-irradiance";
|
|
136
|
+
outputUnit: "W/m^2/nm";
|
|
137
|
+
sceneSpectralRadianceWattsPerSquareMeterSteradianNanometer: number;
|
|
138
|
+
focalLengthMm: number;
|
|
139
|
+
nominalFNumber: number;
|
|
140
|
+
workingFNumber: number;
|
|
141
|
+
focusModel: OpticalBridgeFocusContext["kind"];
|
|
142
|
+
paraxialGeometricAcceptanceSolidAngleSteradians: number;
|
|
143
|
+
transmissionPath: OpticalTransmissionModel["kind"];
|
|
144
|
+
spectralTransmissionFactor: number | null;
|
|
145
|
+
effectiveWorkingTStop: number | null;
|
|
146
|
+
tStopEquivalentTransmissionFactor: number | null;
|
|
147
|
+
frontOfLensFilterCount: number;
|
|
148
|
+
frontOfLensFilterTransmissionFactor: number;
|
|
149
|
+
frontOfLensFilterAttenuationStops: number;
|
|
150
|
+
frontOfLensFilterTransmissionAppliedExactlyOnce: true;
|
|
151
|
+
frontOfLensFilterPolarizationModeled: false;
|
|
152
|
+
fieldThroughputFactor: number;
|
|
153
|
+
effectiveAcceptanceAfterTransmissionAndFieldSteradians: number;
|
|
154
|
+
sensorPlaneSpectralIrradianceWattsPerSquareMeterNanometer: number;
|
|
155
|
+
scientificStatus: "approximation";
|
|
156
|
+
sceneRadianceScientificStatus: SceneRadianceEvaluationResult["scientificStatus"];
|
|
157
|
+
opticalProfileScientificStatus: OpticalBridgeScientificStatus;
|
|
158
|
+
sceneRadianceUncertainty: SceneRadianceEvaluationResult["uncertainty"];
|
|
159
|
+
opticalUncertainty: OpticalBridgeUncertainty;
|
|
160
|
+
radianceAmplificationApplied: false;
|
|
161
|
+
fieldThroughputAppliedExactlyOnce: true;
|
|
162
|
+
universalCos4FalloffApplied: false;
|
|
163
|
+
distortionAreaCorrectionApplied: false;
|
|
164
|
+
psfRedistributionApplied: false;
|
|
165
|
+
sensorOpticalStackApplied: false;
|
|
166
|
+
cfaApplied: false;
|
|
167
|
+
quantumEfficiencyApplied: false;
|
|
168
|
+
spectralResponsivityApplied: false;
|
|
169
|
+
strayLightApplied: false;
|
|
170
|
+
polarizationModeled: false;
|
|
171
|
+
wavelengthChangingBehaviorModeled: false;
|
|
172
|
+
volumetricScatteringModeled: false;
|
|
173
|
+
calibratedSensorPlaneIrradianceClaimAuthorized: false;
|
|
174
|
+
componentEvidence: {
|
|
175
|
+
sceneRadiance: readonly EvidenceProvenance[];
|
|
176
|
+
opticalProfile: readonly EvidenceProvenance[];
|
|
177
|
+
transmission: readonly EvidenceProvenance[];
|
|
178
|
+
workingFNumber: readonly EvidenceProvenance[];
|
|
179
|
+
frontOfLensFilters: readonly EvidenceProvenance[];
|
|
180
|
+
};
|
|
181
|
+
limitations: readonly string[];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
185
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
186
|
+
*
|
|
187
|
+
* The optical bridge maps outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance.
|
|
188
|
+
* Circular paraxial acceptance is pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m).
|
|
189
|
+
* Spectral transmission and effective working T-stop are alternative paths, and field throughput is
|
|
190
|
+
* applied exactly once. Sensor response and PSF redistribution are downstream.
|
|
191
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
192
|
+
* @returns SceneToSensorIrradianceProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
193
|
+
*
|
|
194
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
195
|
+
*/
|
|
196
|
+
export declare function parseSceneToSensorIrradianceProfile(value: unknown): SceneToSensorIrradianceProfile;
|
|
197
|
+
/**
|
|
198
|
+
* Apply declared pupil acceptance and exactly one transmission/field-throughput path to spectral scene
|
|
199
|
+
* radiance, returning pre-stack irradiance with conservative evidence.
|
|
200
|
+
*
|
|
201
|
+
* The optical bridge maps outgoing W/m²/sr/nm radiance to pre-sensor-stack W/m²/nm irradiance.
|
|
202
|
+
* Circular paraxial acceptance is pi/(4*Nworking²); finite-focus unity-pupil geometry uses N*(1+m).
|
|
203
|
+
* Spectral transmission and effective working T-stop are alternative paths, and field throughput is
|
|
204
|
+
* applied exactly once. Sensor response and PSF redistribution are downstream.
|
|
205
|
+
* @param input - CalculateSceneRadianceToSensorIrradianceInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
206
|
+
* @returns CalculationResult<
|
|
207
|
+
SceneToSensorIrradianceResult
|
|
208
|
+
>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
209
|
+
*
|
|
210
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
211
|
+
*/
|
|
212
|
+
export declare function calculateSceneRadianceToSensorIrradiance(input: CalculateSceneRadianceToSensorIrradianceInput): CalculationResult<SceneToSensorIrradianceResult>;
|
|
213
|
+
//# sourceMappingURL=scene-to-sensor-irradiance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-to-sensor-irradiance.d.ts","sourceRoot":"","sources":["../../src/optics/scene-to-sensor-irradiance.ts"],"names":[],"mappings":"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"}
|