@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,224 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Builds deterministic spatial quadrature nodes for one CFA/color-sampling site. The quadrature
|
|
5
|
+
* composes: 1. the resolved geometric sensitive aperture from the sampling-aperture foundation; and 2.
|
|
6
|
+
* the resolved effective AA point-splitting kernel from the optical-stack foundation. The first
|
|
7
|
+
* aperture integration uses a tensor-product uniform midpoint rule. For an AA component that moves
|
|
8
|
+
* optical energy by +delta on the sensor plane, a destination aperture point samples the pre-AA
|
|
9
|
+
* optical field at destination - delta. This inverse-source convention prevents applying the AA shift
|
|
10
|
+
* twice. The destination sensor site's CFA channel applies to every node. The pre-AA source coordinate
|
|
11
|
+
* is an optical-field location, not another CFA site; therefore shifted source coordinates never
|
|
12
|
+
* reassign the destination channel. Nodes whose pre-AA source coordinates fall outside the active
|
|
13
|
+
* imaging area are retained. They are neither clamped nor dropped/renormalized. A renderer or
|
|
14
|
+
* optical-field provider owns source-coverage policy. normalized weights approximate a spatial
|
|
15
|
+
* average. Square-micrometre measures approximate a geometric area integral. Neither includes
|
|
16
|
+
* radiometric throughput, QE, photon conversion, microlenses, diffusion/crosstalk, or temporal
|
|
17
|
+
* integration.
|
|
18
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
19
|
+
* limits.
|
|
20
|
+
*/
|
|
21
|
+
import { approximationResult } from "../core/calculation-result.js";
|
|
22
|
+
import { InvalidScientificInputError, requirePositiveInteger } from "../core/validation.js";
|
|
23
|
+
import { resolveAntiAliasingSpatialKernel } from "./optical-stack.js";
|
|
24
|
+
import { resolveSensorSamplingAperture } from "./sampling-aperture.js";
|
|
25
|
+
const MAX_SPATIAL_QUADRATURE_NODES = 100_000;
|
|
26
|
+
function midpointCoordinate(index, count) {
|
|
27
|
+
return (index + 0.5) / count;
|
|
28
|
+
}
|
|
29
|
+
function insideImagingArea(pointMm, imagingArea) {
|
|
30
|
+
const halfWidth = imagingArea.widthMm / 2;
|
|
31
|
+
const halfHeight = imagingArea.heightMm / 2;
|
|
32
|
+
return (pointMm.x >= -halfWidth &&
|
|
33
|
+
pointMm.x <= halfWidth &&
|
|
34
|
+
pointMm.y >= -halfHeight &&
|
|
35
|
+
pointMm.y <= halfHeight);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds deterministic spatial quadrature nodes for one CFA/color-sampling site.
|
|
39
|
+
*
|
|
40
|
+
* The quadrature composes:
|
|
41
|
+
*
|
|
42
|
+
* 1. the resolved geometric sensitive aperture from the sampling-aperture
|
|
43
|
+
* foundation; and
|
|
44
|
+
* 2. the resolved effective AA point-splitting kernel from the optical-stack
|
|
45
|
+
* foundation.
|
|
46
|
+
*
|
|
47
|
+
* The first aperture integration uses a tensor-product uniform midpoint rule.
|
|
48
|
+
* For an AA component that moves optical energy by +delta on the sensor plane,
|
|
49
|
+
* a destination aperture point samples the pre-AA optical field at
|
|
50
|
+
* destination - delta. This inverse-source convention prevents applying the AA
|
|
51
|
+
* shift twice.
|
|
52
|
+
*
|
|
53
|
+
* The destination sensor site's CFA channel applies to every node. The
|
|
54
|
+
* pre-AA source coordinate is an optical-field location, not another CFA site;
|
|
55
|
+
* therefore shifted source coordinates never reassign the destination channel.
|
|
56
|
+
*
|
|
57
|
+
* Nodes whose pre-AA source coordinates fall outside the active imaging area
|
|
58
|
+
* are retained. They are neither clamped nor dropped/renormalized. A renderer
|
|
59
|
+
* or optical-field provider owns source-coverage policy.
|
|
60
|
+
*
|
|
61
|
+
* normalized weights approximate a spatial average. Square-micrometre measures
|
|
62
|
+
* approximate a geometric area integral. Neither includes radiometric
|
|
63
|
+
* throughput, QE, photon conversion, microlenses, diffusion/crosstalk, or
|
|
64
|
+
* temporal integration.
|
|
65
|
+
*/
|
|
66
|
+
export function calculateSensorSpatialSamplingQuadrature(input) {
|
|
67
|
+
requirePositiveInteger("spatialSampleCountX", input.spatialSampleCountX);
|
|
68
|
+
requirePositiveInteger("spatialSampleCountY", input.spatialSampleCountY);
|
|
69
|
+
const samplingAperture = resolveSensorSamplingAperture({
|
|
70
|
+
imagingArea: input.imagingArea,
|
|
71
|
+
nativeRaster: input.nativeRaster,
|
|
72
|
+
colorSamplingProfile: input.colorSamplingProfile,
|
|
73
|
+
colorSamplingBindingProfile: input.colorSamplingBindingProfile,
|
|
74
|
+
samplingApertureProfile: input.samplingApertureProfile,
|
|
75
|
+
site: input.site
|
|
76
|
+
});
|
|
77
|
+
const antiAliasing = resolveAntiAliasingSpatialKernel(input.opticalStackProfile);
|
|
78
|
+
const apertureNodeCount = input.spatialSampleCountX *
|
|
79
|
+
input.spatialSampleCountY;
|
|
80
|
+
if (!Number.isSafeInteger(apertureNodeCount)) {
|
|
81
|
+
throw new InvalidScientificInputError("spatialSampleCountX × spatialSampleCountY must be a safe integer.");
|
|
82
|
+
}
|
|
83
|
+
const totalNodeCount = apertureNodeCount *
|
|
84
|
+
antiAliasing.components.length;
|
|
85
|
+
if (!Number.isSafeInteger(totalNodeCount)) {
|
|
86
|
+
throw new InvalidScientificInputError("Spatial quadrature node count must be a safe integer.");
|
|
87
|
+
}
|
|
88
|
+
if (totalNodeCount >
|
|
89
|
+
MAX_SPATIAL_QUADRATURE_NODES) {
|
|
90
|
+
throw new InvalidScientificInputError("Spatial quadrature node count exceeds the per-site safety limit of " +
|
|
91
|
+
MAX_SPATIAL_QUADRATURE_NODES +
|
|
92
|
+
". Increase fidelity by tiling or batching downstream work rather than allocating one oversized node set.");
|
|
93
|
+
}
|
|
94
|
+
const aperture = samplingAperture.geometricSensitiveAperture;
|
|
95
|
+
const normalizedApertureWeight = 1 / apertureNodeCount;
|
|
96
|
+
const apertureAreaMeasureSquareMicrometers = aperture.areaSquareMicrometers /
|
|
97
|
+
apertureNodeCount;
|
|
98
|
+
const apertureCenterMm = aperture.centerFromOpticalAxisMm;
|
|
99
|
+
const widthMm = aperture.widthMicrometers / 1000;
|
|
100
|
+
const heightMm = aperture.heightMicrometers / 1000;
|
|
101
|
+
const leftMm = apertureCenterMm.x - widthMm / 2;
|
|
102
|
+
const topMm = apertureCenterMm.y - heightMm / 2;
|
|
103
|
+
const nodes = [];
|
|
104
|
+
let outsideCount = 0;
|
|
105
|
+
antiAliasing.components.forEach((aaComponent, antiAliasingComponentIndex) => {
|
|
106
|
+
const aaOffsetMm = {
|
|
107
|
+
x: aaComponent.offsetMicrometers.x /
|
|
108
|
+
1000,
|
|
109
|
+
y: aaComponent.offsetMicrometers.y /
|
|
110
|
+
1000
|
|
111
|
+
};
|
|
112
|
+
for (let apertureSampleYIndex = 0; apertureSampleYIndex <
|
|
113
|
+
input.spatialSampleCountY; apertureSampleYIndex += 1) {
|
|
114
|
+
const yPhase = midpointCoordinate(apertureSampleYIndex, input.spatialSampleCountY);
|
|
115
|
+
const destinationY = topMm + yPhase * heightMm;
|
|
116
|
+
for (let apertureSampleXIndex = 0; apertureSampleXIndex <
|
|
117
|
+
input.spatialSampleCountX; apertureSampleXIndex += 1) {
|
|
118
|
+
const xPhase = midpointCoordinate(apertureSampleXIndex, input.spatialSampleCountX);
|
|
119
|
+
const destinationX = leftMm + xPhase * widthMm;
|
|
120
|
+
const destinationAperturePointMm = {
|
|
121
|
+
x: destinationX,
|
|
122
|
+
y: destinationY
|
|
123
|
+
};
|
|
124
|
+
const preAntiAliasingSourcePointMm = {
|
|
125
|
+
x: destinationX -
|
|
126
|
+
aaOffsetMm.x,
|
|
127
|
+
y: destinationY -
|
|
128
|
+
aaOffsetMm.y
|
|
129
|
+
};
|
|
130
|
+
const sourceInside = insideImagingArea(preAntiAliasingSourcePointMm, input.imagingArea);
|
|
131
|
+
if (!sourceInside) {
|
|
132
|
+
outsideCount += 1;
|
|
133
|
+
}
|
|
134
|
+
const combinedNormalizedSpatialWeight = normalizedApertureWeight *
|
|
135
|
+
aaComponent.normalizedWeight;
|
|
136
|
+
const combinedAreaMeasureSquareMicrometers = apertureAreaMeasureSquareMicrometers *
|
|
137
|
+
aaComponent.normalizedWeight;
|
|
138
|
+
nodes.push({
|
|
139
|
+
antiAliasingComponentIndex,
|
|
140
|
+
apertureSampleXIndex,
|
|
141
|
+
apertureSampleYIndex,
|
|
142
|
+
destinationAperturePointMm,
|
|
143
|
+
antiAliasingOffsetMicrometers: {
|
|
144
|
+
...aaComponent.offsetMicrometers
|
|
145
|
+
},
|
|
146
|
+
preAntiAliasingSourcePointMm,
|
|
147
|
+
preAntiAliasingSourceInsideImagingArea: sourceInside,
|
|
148
|
+
normalizedApertureWeight,
|
|
149
|
+
normalizedAntiAliasingWeight: aaComponent.normalizedWeight,
|
|
150
|
+
combinedNormalizedSpatialWeight,
|
|
151
|
+
apertureAreaMeasureSquareMicrometers,
|
|
152
|
+
combinedAreaMeasureSquareMicrometers
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
const normalizedSpatialWeightSum = nodes.reduce((sum, node) => sum +
|
|
158
|
+
node.combinedNormalizedSpatialWeight, 0);
|
|
159
|
+
const combinedAreaMeasureSumSquareMicrometers = nodes.reduce((sum, node) => sum +
|
|
160
|
+
node.combinedAreaMeasureSquareMicrometers, 0);
|
|
161
|
+
return approximationResult({
|
|
162
|
+
coordinateSystem: "native-sensor-physical",
|
|
163
|
+
colorSamplingProfileId: samplingAperture
|
|
164
|
+
.colorSamplingProfileId,
|
|
165
|
+
samplingApertureProfileId: samplingAperture.profileId,
|
|
166
|
+
opticalStackProfileId: antiAliasing.profileId,
|
|
167
|
+
site: {
|
|
168
|
+
...samplingAperture.site
|
|
169
|
+
},
|
|
170
|
+
channelId: samplingAperture.channelId,
|
|
171
|
+
quadratureScheme: "tensor-product-uniform-midpoint",
|
|
172
|
+
outputMeaning: "pre-aa-optical-field-spatial-quadrature-nodes",
|
|
173
|
+
spatialSampleCountX: input.spatialSampleCountX,
|
|
174
|
+
spatialSampleCountY: input.spatialSampleCountY,
|
|
175
|
+
antiAliasingComponentCount: antiAliasing.components.length,
|
|
176
|
+
totalNodeCount,
|
|
177
|
+
geometricApertureAreaSquareMicrometers: aperture.areaSquareMicrometers,
|
|
178
|
+
nominalSiteCellAreaSquareMicrometers: samplingAperture.lattice
|
|
179
|
+
.nominalCellAreaSquareMicrometers,
|
|
180
|
+
geometricSensitiveAreaFractionOfLatticeCell: aperture
|
|
181
|
+
.geometricSensitiveAreaFractionOfLatticeCell,
|
|
182
|
+
normalizedSpatialWeightSum,
|
|
183
|
+
combinedAreaMeasureSumSquareMicrometers,
|
|
184
|
+
preAntiAliasingSourceOutsideImagingAreaNodeCount: outsideCount,
|
|
185
|
+
sourcePointRule: "pre-aa-source-equals-destination-minus-aa-offset",
|
|
186
|
+
destinationCfaChannelAppliesToAllNodes: true,
|
|
187
|
+
cfaReassignmentBySourceCoordinate: false,
|
|
188
|
+
sourceCoveragePolicy: "not-applied",
|
|
189
|
+
nodes,
|
|
190
|
+
opticalFieldValuesIncluded: false,
|
|
191
|
+
radianceIncluded: false,
|
|
192
|
+
photonsIncluded: false,
|
|
193
|
+
electronsIncluded: false,
|
|
194
|
+
spectralResponseIncluded: false,
|
|
195
|
+
quantumEfficiencyIncluded: false,
|
|
196
|
+
opticalThroughputIncluded: false,
|
|
197
|
+
microlensResponseIncluded: false,
|
|
198
|
+
chargeDiffusionIncluded: false,
|
|
199
|
+
electricalCrosstalkIncluded: false,
|
|
200
|
+
temporalIntegrationIncluded: false,
|
|
201
|
+
rawSampleValueIncluded: false,
|
|
202
|
+
reconstructedPixelValueIncluded: false,
|
|
203
|
+
geometricAreaMeasureIsRadiometricCollectionArea: false,
|
|
204
|
+
componentEvidence: {
|
|
205
|
+
samplingApertureProfile: samplingAperture.provenance.profile,
|
|
206
|
+
samplingApertureLattice: samplingAperture.provenance.lattice,
|
|
207
|
+
geometricSensitiveAperture: samplingAperture.provenance.aperture,
|
|
208
|
+
opticalStackProfile: antiAliasing.provenance.profile,
|
|
209
|
+
antiAliasingResponse: antiAliasing.provenance
|
|
210
|
+
.antiAliasingResponse
|
|
211
|
+
}
|
|
212
|
+
}, "sensor-spatial-sampling-quadrature", "1.0.0", [
|
|
213
|
+
"Spatial aperture integration uses a deterministic tensor-product uniform midpoint rule.",
|
|
214
|
+
"The destination sensor site's semantic CFA/color channel applies to every quadrature node; pre-AA source coordinates never reassign the destination channel.",
|
|
215
|
+
"AA point-splitting is inverse-sampled: a +delta output displacement reads the pre-AA optical field at destination - delta.",
|
|
216
|
+
"AA component weights and aperture midpoint weights are dimensionless normalized spatial-average weights.",
|
|
217
|
+
"Square-micrometre measures are geometric integration measures only and are not effective radiometric collection area, throughput, QE, or photon count.",
|
|
218
|
+
"Pre-AA source points may leave the active physical imaging area and are not clamped, dropped, or renormalized.",
|
|
219
|
+
"The AA kernel remains the optical-stack foundation's field/wavelength/polarization-invariant approximation where applicable.",
|
|
220
|
+
"Microlens spatial response, charge diffusion, electrical/optical crosstalk, spectral response, radiometry, temporal integration, RAW sample generation, and reconstruction remain separate future work.",
|
|
221
|
+
"No geometry-only spatial quadrature error estimate is reported because downstream optical-field spatial frequency/content determines integration error."
|
|
222
|
+
]);
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=spatial-sampling-quadrature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatial-sampling-quadrature.js","sourceRoot":"","sources":["../../src/sensor/spatial-sampling-quadrature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Internal shared node binding; domain callers retain value validation and equations.
|
|
4
|
+
* Reduces explicitly supplied sensor-plane spectral irradiance E_lambda(x,y) over the Cartesian
|
|
5
|
+
* product of an existing spatial quadrature and spectral quadrature. The supplied density unit is
|
|
6
|
+
* W/m^2/nm and wavelengthMeasureNanometers is d-lambda in nm, so their direct product has units W/m^2.
|
|
7
|
+
* Do not convert d-lambda to metres unless the spectral-density denominator is converted consistently.
|
|
8
|
+
* Spatial area integration uses the spatial quadrature's geometric area measures converted from square
|
|
9
|
+
* micrometres to square metres. The result is geometric-aperture incident radiant flux only; geometric
|
|
10
|
+
* area is not upgraded to an effective radiometric collection area. This reducer deliberately stops
|
|
11
|
+
* before sensor response. The spectral plan was derived from a specific response channel so its
|
|
12
|
+
* support/knots are useful, but QE, A/W responsivity and channel-filter transmission are not applied
|
|
13
|
+
* here. Response-scope/source-plane matching therefore remains an explicit later composition step.
|
|
14
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
|
+
* limits.
|
|
16
|
+
*/
|
|
17
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
18
|
+
import { type SensorSpatialQuadratureNodeIdentity } from "./spatial-sample-reduction.js";
|
|
19
|
+
import type { SensorSpatialSamplingQuadrature } from "./spatial-sampling-quadrature.js";
|
|
20
|
+
import { type SensorSpectralQuadrature, type SensorSpectralQuadratureNode } from "./spectral-quadrature.js";
|
|
21
|
+
export interface SensorSpatioSpectralNodeIdentity {
|
|
22
|
+
spatialNode: SensorSpatialQuadratureNodeIdentity;
|
|
23
|
+
spectralSampleIndex: number;
|
|
24
|
+
wavelengthNanometers: number;
|
|
25
|
+
}
|
|
26
|
+
export interface SensorSpatioSpectralIrradianceSample {
|
|
27
|
+
node: SensorSpatioSpectralNodeIdentity;
|
|
28
|
+
/**
|
|
29
|
+
* Spectral irradiance evaluated at the spatial quadrature node's
|
|
30
|
+
* preAntiAliasingSourcePointMm and this spectral node's wavelength.
|
|
31
|
+
*
|
|
32
|
+
* Units: W/m^2/nm.
|
|
33
|
+
*/
|
|
34
|
+
spectralIrradianceWattsPerSquareMeterPerNanometer: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ReduceSensorSpatioSpectralIrradianceInput {
|
|
37
|
+
spatialQuadrature: SensorSpatialSamplingQuadrature;
|
|
38
|
+
spectralQuadrature: SensorSpectralQuadrature;
|
|
39
|
+
/**
|
|
40
|
+
* Exactly one explicitly identified E_lambda(x,y) value for every Cartesian
|
|
41
|
+
* product of spatial and spectral quadrature nodes.
|
|
42
|
+
*
|
|
43
|
+
* Ordering is not significant; node identity is.
|
|
44
|
+
*/
|
|
45
|
+
sampleValues: readonly SensorSpatioSpectralIrradianceSample[];
|
|
46
|
+
}
|
|
47
|
+
export interface SensorSpatioSpectralWavelengthReduction {
|
|
48
|
+
spectralSampleIndex: number;
|
|
49
|
+
wavelengthNanometers: number;
|
|
50
|
+
wavelengthMeasureNanometers: number;
|
|
51
|
+
normalizedWavelengthWeight: number;
|
|
52
|
+
/**
|
|
53
|
+
* Spatially reduced spectral irradiance at this wavelength.
|
|
54
|
+
* Units: W/m^2/nm.
|
|
55
|
+
*/
|
|
56
|
+
normalizedSpatialAverageSpectralIrradianceWattsPerSquareMeterPerNanometer: number;
|
|
57
|
+
/**
|
|
58
|
+
* Spectral radiant flux density incident over the geometric sensitive
|
|
59
|
+
* aperture after the declared normalized AA redistribution.
|
|
60
|
+
* Units: W/nm.
|
|
61
|
+
*
|
|
62
|
+
* This uses geometric area, not an established radiometric collection area.
|
|
63
|
+
*/
|
|
64
|
+
geometricApertureIncidentSpectralFluxWattsPerNanometer: number;
|
|
65
|
+
/**
|
|
66
|
+
* Contribution to the wavelength-integrated spatial average.
|
|
67
|
+
* Units: W/m^2.
|
|
68
|
+
*/
|
|
69
|
+
wavelengthIntegratedSpatialAverageContributionWattsPerSquareMeter: number;
|
|
70
|
+
/**
|
|
71
|
+
* Contribution to wavelength-integrated geometric-aperture incident flux.
|
|
72
|
+
* Units: W.
|
|
73
|
+
*/
|
|
74
|
+
wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts: number;
|
|
75
|
+
}
|
|
76
|
+
export interface SensorSpatioSpectralIrradianceReduction {
|
|
77
|
+
colorSamplingProfileId: string;
|
|
78
|
+
samplingApertureProfileId?: string;
|
|
79
|
+
opticalStackProfileId?: string;
|
|
80
|
+
site: {
|
|
81
|
+
x: number;
|
|
82
|
+
y: number;
|
|
83
|
+
};
|
|
84
|
+
channelId: string;
|
|
85
|
+
responseProfileId: string;
|
|
86
|
+
sourceResponseKind: SensorSpectralQuadrature["sourceResponseKind"];
|
|
87
|
+
responseScope: SensorSpectralQuadrature["responseScope"];
|
|
88
|
+
responseScientificStatus: SensorSpectralQuadrature["responseScientificStatus"];
|
|
89
|
+
responseUncertainty: SensorSpectralQuadrature["responseUncertainty"];
|
|
90
|
+
responseChannelBinding?: SensorSpectralQuadrature["responseChannelBinding"];
|
|
91
|
+
responseReferenceConditions?: SensorSpectralQuadrature["responseReferenceConditions"];
|
|
92
|
+
wavelengthBasis: SensorSpectralQuadrature["wavelengthBasis"];
|
|
93
|
+
wavelengthBasisResolved: boolean;
|
|
94
|
+
wavelengthRangeNanometers: SensorSpectralQuadrature["wavelengthRangeNanometers"];
|
|
95
|
+
responseDeclaredWavelengthRangeNanometers: SensorSpectralQuadrature["responseDeclaredWavelengthRangeNanometers"];
|
|
96
|
+
outputMeaning: "pre-response-spatio-spectral-radiometric-reduction";
|
|
97
|
+
inputValueDomain: {
|
|
98
|
+
kind: "radiometric-spectral-irradiance";
|
|
99
|
+
unit: "W/m^2/nm";
|
|
100
|
+
semantic: "pre-aa-pre-response-sensor-plane-spectral-irradiance";
|
|
101
|
+
};
|
|
102
|
+
spatialNodeCount: number;
|
|
103
|
+
spectralNodeCount: number;
|
|
104
|
+
combinedSampleCount: number;
|
|
105
|
+
sourceValuesMatchedBy: "spatial-node-identity-plus-spectral-sample-index-and-wavelength";
|
|
106
|
+
sourceValuesSuppliedForAllCombinedNodes: true;
|
|
107
|
+
outsideImagingAreaSourceValuesRequired: boolean;
|
|
108
|
+
geometricApertureAreaSquareMicrometers?: number;
|
|
109
|
+
nominalSiteCellAreaSquareMicrometers?: number;
|
|
110
|
+
geometricSensitiveAreaFractionOfLatticeCell?: number;
|
|
111
|
+
perWavelength: readonly SensorSpatioSpectralWavelengthReduction[];
|
|
112
|
+
/**
|
|
113
|
+
* Integral over the requested wavelength interval of the spatially averaged
|
|
114
|
+
* spectral irradiance. Units: W/m^2.
|
|
115
|
+
*/
|
|
116
|
+
wavelengthIntegratedSpatialAverageIrradianceWattsPerSquareMeter: number;
|
|
117
|
+
/**
|
|
118
|
+
* Integral over the requested wavelength interval and geometric aperture
|
|
119
|
+
* area. Units: W.
|
|
120
|
+
*
|
|
121
|
+
* This is pre-sensor-response incident radiant flux over the declared
|
|
122
|
+
* wavelength interval, not collected optical power or generated charge.
|
|
123
|
+
*/
|
|
124
|
+
wavelengthIntegratedGeometricApertureIncidentFluxWatts: number;
|
|
125
|
+
spatialIntegrationApplied: true;
|
|
126
|
+
wavelengthIntegrationApplied: true;
|
|
127
|
+
spectralResponsePlanUsedForWavelengthSupport: true;
|
|
128
|
+
spectralResponseApplicationPerformed: false;
|
|
129
|
+
responseScopeMatchedToSourcePlane: false;
|
|
130
|
+
quantumEfficiencyApplied: false;
|
|
131
|
+
spectralResponsivityApplied: false;
|
|
132
|
+
channelFilterTransmissionApplied: false;
|
|
133
|
+
opticalTransmissionAppliedByReducer: false;
|
|
134
|
+
radiometricCollectionAreaEstablished: false;
|
|
135
|
+
temporalIntegrationApplied: false;
|
|
136
|
+
exposureDurationApplied: false;
|
|
137
|
+
photonsCalculated: false;
|
|
138
|
+
electronsCalculated: false;
|
|
139
|
+
currentCalculated: false;
|
|
140
|
+
shotNoiseApplied: false;
|
|
141
|
+
readNoiseApplied: false;
|
|
142
|
+
adcQuantizationApplied: false;
|
|
143
|
+
rawCodeValueProduced: false;
|
|
144
|
+
demosaicOrReconstructionApplied: false;
|
|
145
|
+
convergenceErrorEstimated: false;
|
|
146
|
+
componentEvidence: {
|
|
147
|
+
spatial: SensorSpatialSamplingQuadrature["componentEvidence"];
|
|
148
|
+
spectral: SensorSpectralQuadrature["componentEvidence"];
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/** Internal shared node binding; domain callers retain value validation and equations. */
|
|
152
|
+
export declare function bindSensorSpatioSpectralSamples<T extends {
|
|
153
|
+
node: SensorSpatioSpectralNodeIdentity;
|
|
154
|
+
}, V>(input: {
|
|
155
|
+
spatialQuadrature: SensorSpatialSamplingQuadrature;
|
|
156
|
+
spectralQuadrature: SensorSpectralQuadrature;
|
|
157
|
+
sampleValues: readonly T[];
|
|
158
|
+
}, valueForSample: (sample: T, sampleIndex: number) => V): {
|
|
159
|
+
spatialNodesByKey: Map<string, SensorSpatialSamplingQuadrature["nodes"][number]>;
|
|
160
|
+
spectralNodesByIndex: Map<number, SensorSpectralQuadratureNode>;
|
|
161
|
+
colorSamplingProfileId: string;
|
|
162
|
+
combinedSampleCount: number;
|
|
163
|
+
valuesByKey: Map<string, V>;
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Reduces explicitly supplied sensor-plane spectral irradiance E_lambda(x,y)
|
|
167
|
+
* over the Cartesian product of an existing spatial quadrature and spectral
|
|
168
|
+
* quadrature.
|
|
169
|
+
*
|
|
170
|
+
* The supplied density unit is W/m^2/nm and wavelengthMeasureNanometers is
|
|
171
|
+
* d-lambda in nm, so their direct product has units W/m^2. Do not convert
|
|
172
|
+
* d-lambda to metres unless the spectral-density denominator is converted
|
|
173
|
+
* consistently.
|
|
174
|
+
*
|
|
175
|
+
* Spatial area integration uses the spatial quadrature's geometric area
|
|
176
|
+
* measures converted from square micrometres to square metres. The result is
|
|
177
|
+
* geometric-aperture incident radiant flux only; geometric area is not upgraded
|
|
178
|
+
* to an effective radiometric collection area.
|
|
179
|
+
*
|
|
180
|
+
* This reducer deliberately stops before sensor response. The spectral plan was
|
|
181
|
+
* derived from a specific response channel so its support/knots are useful, but
|
|
182
|
+
* QE, A/W responsivity and channel-filter transmission are not applied here.
|
|
183
|
+
* Response-scope/source-plane matching therefore remains an explicit later
|
|
184
|
+
* composition step.
|
|
185
|
+
*/
|
|
186
|
+
export declare function reduceSensorSpatioSpectralIrradiance(input: ReduceSensorSpatioSpectralIrradianceInput): CalculationResult<SensorSpatioSpectralIrradianceReduction>;
|
|
187
|
+
//# sourceMappingURL=spatio-spectral-reduction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spatio-spectral-reduction.d.ts","sourceRoot":"","sources":["../../src/sensor/spatio-spectral-reduction.ts"],"names":[],"mappings":"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"}
|