@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,356 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
5
|
+
* missing required fields and incompatible scientific data fail at this boundary. Camera saturation
|
|
6
|
+
* capacity is a dark-corrected photo-signal electron-equivalent limit. It is not physical total-charge
|
|
7
|
+
* storage capacity, ADC maximum or evidence of the limiting hardware stage. This assessment compares
|
|
8
|
+
* expectations and does not synthesize post-saturation codes.
|
|
9
|
+
* Compare dark-corrected expected photo signal with the declared camera response-chain capacity
|
|
10
|
+
* without adding dark charge or identifying a hardware clamp. Camera saturation capacity is a
|
|
11
|
+
* dark-corrected photo-signal electron-equivalent limit. It is not physical total-charge storage
|
|
12
|
+
* capacity, ADC maximum or evidence of the limiting hardware stage. This assessment compares
|
|
13
|
+
* expectations and does not synthesize post-saturation codes.
|
|
14
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
|
+
* limits.
|
|
16
|
+
*/
|
|
17
|
+
import { approximationResult } from "../core/calculation-result.js";
|
|
18
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
19
|
+
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
20
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
21
|
+
function requireRecord(value, path) {
|
|
22
|
+
if (typeof value !== "object" ||
|
|
23
|
+
value === null ||
|
|
24
|
+
Array.isArray(value)) {
|
|
25
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function requireNonEmptyString(value, path) {
|
|
30
|
+
if (typeof value !== "string" ||
|
|
31
|
+
value.trim().length === 0) {
|
|
32
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
function requireFinite(value, path) {
|
|
37
|
+
if (typeof value !== "number" ||
|
|
38
|
+
!Number.isFinite(value)) {
|
|
39
|
+
throw new InvalidConfigurationError(path + " must be finite.");
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function requirePositiveFinite(value, path) {
|
|
44
|
+
const parsed = requireFinite(value, path);
|
|
45
|
+
if (parsed <= 0) {
|
|
46
|
+
throw new InvalidConfigurationError(path +
|
|
47
|
+
" must be greater than zero.");
|
|
48
|
+
}
|
|
49
|
+
return parsed;
|
|
50
|
+
}
|
|
51
|
+
function requireNonNegativeFiniteInput(value, path) {
|
|
52
|
+
if (typeof value !== "number" ||
|
|
53
|
+
!Number.isFinite(value) ||
|
|
54
|
+
value < 0) {
|
|
55
|
+
throw new InvalidScientificInputError(path +
|
|
56
|
+
" must be finite and greater than or equal to zero.");
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
function requireSiteIndex(value, path) {
|
|
61
|
+
if (typeof value !== "number" ||
|
|
62
|
+
!Number.isSafeInteger(value) ||
|
|
63
|
+
value < 0) {
|
|
64
|
+
throw new InvalidConfigurationError(path +
|
|
65
|
+
" must be a non-negative safe integer.");
|
|
66
|
+
}
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
function parseUncertainty(value, path) {
|
|
70
|
+
const record = requireRecord(value, path);
|
|
71
|
+
if (record.kind === "relative") {
|
|
72
|
+
const fraction = requireFinite(record.fraction, path + ".fraction");
|
|
73
|
+
if (fraction < 0) {
|
|
74
|
+
throw new InvalidConfigurationError(path +
|
|
75
|
+
".fraction must be nonnegative.");
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
kind: "relative",
|
|
79
|
+
fraction,
|
|
80
|
+
basis: requireNonEmptyString(record.basis, path + ".basis")
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (record.kind === "not-quantified") {
|
|
84
|
+
return {
|
|
85
|
+
kind: "not-quantified",
|
|
86
|
+
limitation: requireNonEmptyString(record.limitation, path + ".limitation")
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
90
|
+
}
|
|
91
|
+
function parseSiteApplicability(value) {
|
|
92
|
+
const record = requireRecord(value, "sensorCameraSaturation.siteApplicability");
|
|
93
|
+
if (record.kind === "exact-site") {
|
|
94
|
+
const site = requireRecord(record.site, "sensorCameraSaturation.siteApplicability.site");
|
|
95
|
+
return {
|
|
96
|
+
kind: "exact-site",
|
|
97
|
+
site: {
|
|
98
|
+
x: requireSiteIndex(site.x, "sensorCameraSaturation.siteApplicability.site.x"),
|
|
99
|
+
y: requireSiteIndex(site.y, "sensorCameraSaturation.siteApplicability.site.y")
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (record.kind ===
|
|
104
|
+
"channel-population-mean-approximation") {
|
|
105
|
+
return {
|
|
106
|
+
kind: "channel-population-mean-approximation",
|
|
107
|
+
limitation: requireNonEmptyString(record.limitation, "sensorCameraSaturation.siteApplicability.limitation"),
|
|
108
|
+
evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.siteApplicability.evidence")
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
throw new InvalidConfigurationError("sensorCameraSaturation.siteApplicability.kind is invalid.");
|
|
112
|
+
}
|
|
113
|
+
function parseTemperatureApplicability(value) {
|
|
114
|
+
const record = requireRecord(value, "sensorCameraSaturation.temperatureApplicability");
|
|
115
|
+
if (record.kind ===
|
|
116
|
+
"exact-reference-temperature") {
|
|
117
|
+
return {
|
|
118
|
+
kind: "exact-reference-temperature",
|
|
119
|
+
temperatureC: requireFinite(record.temperatureC, "sensorCameraSaturation.temperatureApplicability.temperatureC")
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (record.kind === "not-modeled") {
|
|
123
|
+
return {
|
|
124
|
+
kind: "not-modeled",
|
|
125
|
+
limitation: requireNonEmptyString(record.limitation, "sensorCameraSaturation.temperatureApplicability.limitation"),
|
|
126
|
+
evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.temperatureApplicability.evidence")
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
throw new InvalidConfigurationError("sensorCameraSaturation.temperatureApplicability.kind is invalid.");
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
133
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
134
|
+
*
|
|
135
|
+
* Camera saturation capacity is a dark-corrected photo-signal electron-equivalent limit. It is not
|
|
136
|
+
* physical total-charge storage capacity, ADC maximum or evidence of the limiting hardware stage. This
|
|
137
|
+
* assessment compares expectations and does not synthesize post-saturation codes.
|
|
138
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
139
|
+
* @returns SensorCameraSaturationCapacityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
140
|
+
*
|
|
141
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
142
|
+
*/
|
|
143
|
+
export function parseSensorCameraSaturationCapacityProfile(value) {
|
|
144
|
+
const record = requireRecord(value, "sensorCameraSaturation");
|
|
145
|
+
if (record.schemaVersion !== "0.1.0") {
|
|
146
|
+
throw new InvalidConfigurationError('sensorCameraSaturation.schemaVersion must be "0.1.0".');
|
|
147
|
+
}
|
|
148
|
+
if (record.capacityMeaning !==
|
|
149
|
+
"camera-signal-saturation-capacity-electrons") {
|
|
150
|
+
throw new InvalidConfigurationError("sensorCameraSaturation.capacityMeaning is invalid.");
|
|
151
|
+
}
|
|
152
|
+
if (record.signalDomain !==
|
|
153
|
+
"dark-corrected-photo-generated-electron-equivalent") {
|
|
154
|
+
throw new InvalidConfigurationError("sensorCameraSaturation.signalDomain is invalid.");
|
|
155
|
+
}
|
|
156
|
+
if (record.scientificStatus !==
|
|
157
|
+
"calibrated" &&
|
|
158
|
+
record.scientificStatus !==
|
|
159
|
+
"approximation") {
|
|
160
|
+
throw new InvalidConfigurationError("sensorCameraSaturation.scientificStatus is invalid.");
|
|
161
|
+
}
|
|
162
|
+
const uncertainty = parseUncertainty(record.uncertainty, "sensorCameraSaturation.uncertainty");
|
|
163
|
+
if (record.scientificStatus ===
|
|
164
|
+
"calibrated" &&
|
|
165
|
+
uncertainty.kind ===
|
|
166
|
+
"not-quantified") {
|
|
167
|
+
throw new InvalidConfigurationError("A calibrated camera saturation-capacity profile must declare quantified relative uncertainty.");
|
|
168
|
+
}
|
|
169
|
+
const siteApplicability = parseSiteApplicability(record.siteApplicability);
|
|
170
|
+
const temperatureApplicability = parseTemperatureApplicability(record.temperatureApplicability);
|
|
171
|
+
if (siteApplicability.kind ===
|
|
172
|
+
"channel-population-mean-approximation" &&
|
|
173
|
+
record.scientificStatus !==
|
|
174
|
+
"approximation") {
|
|
175
|
+
throw new InvalidConfigurationError("A channel-population mean camera saturation capacity must remain an approximation when applied to one site.");
|
|
176
|
+
}
|
|
177
|
+
if (temperatureApplicability.kind ===
|
|
178
|
+
"not-modeled" &&
|
|
179
|
+
record.scientificStatus !==
|
|
180
|
+
"approximation") {
|
|
181
|
+
throw new InvalidConfigurationError("A camera saturation capacity with unmodeled temperature dependence must remain an approximation.");
|
|
182
|
+
}
|
|
183
|
+
const state = requireRecord(record.operatingState, "sensorCameraSaturation.operatingState");
|
|
184
|
+
return {
|
|
185
|
+
schemaVersion: "0.1.0",
|
|
186
|
+
profileId: requireNonEmptyString(record.profileId, "sensorCameraSaturation.profileId"),
|
|
187
|
+
colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorCameraSaturation.colorSamplingProfileId"),
|
|
188
|
+
channelId: requireNonEmptyString(record.channelId, "sensorCameraSaturation.channelId"),
|
|
189
|
+
capacityMeaning: "camera-signal-saturation-capacity-electrons",
|
|
190
|
+
signalDomain: "dark-corrected-photo-generated-electron-equivalent",
|
|
191
|
+
saturationCapacityElectrons: requirePositiveFinite(record.saturationCapacityElectrons, "sensorCameraSaturation.saturationCapacityElectrons"),
|
|
192
|
+
scientificStatus: record.scientificStatus,
|
|
193
|
+
uncertainty,
|
|
194
|
+
evidence: parseEvidenceList(record.evidence, "sensorCameraSaturation.evidence"),
|
|
195
|
+
measurementMethodId: requireNonEmptyString(record.measurementMethodId, "sensorCameraSaturation.measurementMethodId"),
|
|
196
|
+
measurementMethodEvidence: parseEvidenceList(record.measurementMethodEvidence, "sensorCameraSaturation.measurementMethodEvidence"),
|
|
197
|
+
siteApplicability,
|
|
198
|
+
operatingState: {
|
|
199
|
+
stateId: requireNonEmptyString(state.stateId, "sensorCameraSaturation.operatingState.stateId"),
|
|
200
|
+
evidence: parseEvidenceList(state.evidence, "sensorCameraSaturation.operatingState.evidence")
|
|
201
|
+
},
|
|
202
|
+
temperatureApplicability
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function sameSite(a, b) {
|
|
206
|
+
return a.x === b.x && a.y === b.y;
|
|
207
|
+
}
|
|
208
|
+
function validateCharge(charge) {
|
|
209
|
+
if (charge.accumulatedChargeCompleteness !==
|
|
210
|
+
"complete-for-physical-storage-capacity-assessment" ||
|
|
211
|
+
charge.saturationAssessed !==
|
|
212
|
+
false ||
|
|
213
|
+
charge.adcQuantizationApplied !==
|
|
214
|
+
false ||
|
|
215
|
+
charge.rawCodeValueProduced !==
|
|
216
|
+
false) {
|
|
217
|
+
throw new InvalidScientificInputError("Camera saturation assessment requires an unmodified pre-saturation accumulated-charge composition.");
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
photo: requireNonNegativeFiniteInput(charge.photoExpectedElectronCount, "accumulatedCharge.photoExpectedElectronCount"),
|
|
221
|
+
total: requireNonNegativeFiniteInput(charge.totalExpectedStoredElectronCount, "accumulatedCharge.totalExpectedStoredElectronCount")
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Compare dark-corrected expected photo signal with the declared camera response-chain capacity
|
|
226
|
+
* without adding dark charge or identifying a hardware clamp.
|
|
227
|
+
*
|
|
228
|
+
* Camera saturation capacity is a dark-corrected photo-signal electron-equivalent limit. It is not
|
|
229
|
+
* physical total-charge storage capacity, ADC maximum or evidence of the limiting hardware stage. This
|
|
230
|
+
* assessment compares expectations and does not synthesize post-saturation codes.
|
|
231
|
+
* @param input - AssessSensorCameraSaturationCapacityInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
232
|
+
* @returns CalculationResult<SensorCameraSaturationCapacityAssessment>. Read structured blockers before consuming an authorization.
|
|
233
|
+
*
|
|
234
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
235
|
+
*/
|
|
236
|
+
export function assessSensorCameraSaturationCapacity(input) {
|
|
237
|
+
const charge = validateCharge(input.accumulatedCharge);
|
|
238
|
+
const profile = parseSensorCameraSaturationCapacityProfile(input.saturationProfile);
|
|
239
|
+
if (profile.colorSamplingProfileId !==
|
|
240
|
+
input.accumulatedCharge
|
|
241
|
+
.colorSamplingProfileId ||
|
|
242
|
+
profile.channelId !==
|
|
243
|
+
input.accumulatedCharge.channelId) {
|
|
244
|
+
throw new InvalidScientificInputError("Camera saturation-capacity profile color/channel identity must match the accumulated charge.");
|
|
245
|
+
}
|
|
246
|
+
if (profile.siteApplicability.kind ===
|
|
247
|
+
"exact-site" &&
|
|
248
|
+
!sameSite(profile.siteApplicability.site, input.accumulatedCharge.site)) {
|
|
249
|
+
throw new InvalidScientificInputError("Exact-site camera saturation capacity does not apply to the accumulated-charge site.");
|
|
250
|
+
}
|
|
251
|
+
if (typeof input.operatingStateId !==
|
|
252
|
+
"string" ||
|
|
253
|
+
input.operatingStateId.trim().length ===
|
|
254
|
+
0 ||
|
|
255
|
+
input.operatingStateId !==
|
|
256
|
+
profile.operatingState.stateId) {
|
|
257
|
+
throw new InvalidScientificInputError("operatingStateId must exactly match the camera saturation-capacity calibration state.");
|
|
258
|
+
}
|
|
259
|
+
if (typeof input.operatingTemperatureC !==
|
|
260
|
+
"number" ||
|
|
261
|
+
!Number.isFinite(input.operatingTemperatureC)) {
|
|
262
|
+
throw new InvalidScientificInputError("operatingTemperatureC must be finite.");
|
|
263
|
+
}
|
|
264
|
+
if (profile.temperatureApplicability.kind ===
|
|
265
|
+
"exact-reference-temperature" &&
|
|
266
|
+
input.operatingTemperatureC !==
|
|
267
|
+
profile.temperatureApplicability
|
|
268
|
+
.temperatureC) {
|
|
269
|
+
throw new InvalidScientificInputError("operatingTemperatureC must exactly match the camera saturation-capacity reference temperature.");
|
|
270
|
+
}
|
|
271
|
+
const capacity = profile.saturationCapacityElectrons;
|
|
272
|
+
const ratio = charge.photo / capacity;
|
|
273
|
+
const headroom = capacity - charge.photo;
|
|
274
|
+
if (!Number.isFinite(ratio) ||
|
|
275
|
+
!Number.isFinite(headroom)) {
|
|
276
|
+
throw new InvalidScientificInputError("Camera saturation-capacity comparison must remain finite.");
|
|
277
|
+
}
|
|
278
|
+
const status = charge.photo < capacity
|
|
279
|
+
? "below-capacity"
|
|
280
|
+
: charge.photo === capacity
|
|
281
|
+
? "at-capacity"
|
|
282
|
+
: "above-capacity";
|
|
283
|
+
return approximationResult({
|
|
284
|
+
saturationProfileId: profile.profileId,
|
|
285
|
+
completenessProfileId: input.accumulatedCharge
|
|
286
|
+
.completenessProfileId,
|
|
287
|
+
colorSamplingProfileId: input.accumulatedCharge
|
|
288
|
+
.colorSamplingProfileId,
|
|
289
|
+
channelId: input.accumulatedCharge.channelId,
|
|
290
|
+
site: {
|
|
291
|
+
...input.accumulatedCharge.site
|
|
292
|
+
},
|
|
293
|
+
bindingId: input.accumulatedCharge.bindingId,
|
|
294
|
+
operatingStateId: input.operatingStateId,
|
|
295
|
+
operatingTemperatureC: input.operatingTemperatureC,
|
|
296
|
+
capacityMeaning: "camera-signal-saturation-capacity-electrons",
|
|
297
|
+
signalDomain: "dark-corrected-photo-generated-electron-equivalent",
|
|
298
|
+
cameraSignalSaturationCapacityElectrons: capacity,
|
|
299
|
+
expectedPhotoSignalElectronCount: charge.photo,
|
|
300
|
+
totalExpectedStoredElectronCountDiagnostic: charge.total,
|
|
301
|
+
totalStoredChargeUsedForCameraSaturationComparison: false,
|
|
302
|
+
expectedSignalToCameraSaturationRatio: ratio,
|
|
303
|
+
expectedSignalHeadroomElectrons: headroom,
|
|
304
|
+
expectedCameraSignalCapacityStatus: status,
|
|
305
|
+
expectedPhotoSignalExceedsCameraCapacity: status === "above-capacity",
|
|
306
|
+
cameraSaturationCapacityAssessmentPerformed: true,
|
|
307
|
+
assessmentMeaning: "expected-dark-corrected-photo-signal-vs-camera-saturation-capacity",
|
|
308
|
+
physicalChargeCapacityUsed: false,
|
|
309
|
+
limitingSaturationMechanismResolved: false,
|
|
310
|
+
analogClippingThresholdModeled: false,
|
|
311
|
+
digitalClippingThresholdModeled: false,
|
|
312
|
+
adcMaximumCodeUsed: false,
|
|
313
|
+
actualStochasticSaturationStateKnown: false,
|
|
314
|
+
stochasticSaturationProbabilityAssessed: false,
|
|
315
|
+
outputSignalAfterSaturationCalculated: false,
|
|
316
|
+
clampApplied: false,
|
|
317
|
+
physicalStoredChargeModified: false,
|
|
318
|
+
adcQuantizationApplied: false,
|
|
319
|
+
rawCodeValueProduced: false,
|
|
320
|
+
saturationCapacityUncertaintyPropagated: false,
|
|
321
|
+
photoSignalUncertaintyPropagated: false,
|
|
322
|
+
componentEvidence: {
|
|
323
|
+
saturationCapacity: profile.evidence,
|
|
324
|
+
measurementMethod: profile
|
|
325
|
+
.measurementMethodEvidence,
|
|
326
|
+
operatingState: profile.operatingState
|
|
327
|
+
.evidence,
|
|
328
|
+
siteApproximation: profile.siteApplicability.kind ===
|
|
329
|
+
"channel-population-mean-approximation"
|
|
330
|
+
? profile
|
|
331
|
+
.siteApplicability
|
|
332
|
+
.evidence
|
|
333
|
+
: [],
|
|
334
|
+
temperatureApproximation: profile.temperatureApplicability.kind ===
|
|
335
|
+
"not-modeled"
|
|
336
|
+
? profile
|
|
337
|
+
.temperatureApplicability
|
|
338
|
+
.evidence
|
|
339
|
+
: [],
|
|
340
|
+
chargeCompleteness: input.accumulatedCharge
|
|
341
|
+
.componentEvidence
|
|
342
|
+
.completeness
|
|
343
|
+
}
|
|
344
|
+
}, "sensor-camera-saturation-capacity-assessment", "1.0.0", [
|
|
345
|
+
"The camera saturation capacity is a measured/calibrated dark-corrected photo-signal capacity in electron-equivalent signal units; total stored charge is deliberately not used for this comparison.",
|
|
346
|
+
"Physical charge-storage capacity is a separate sensor property and is not used by this assessment.",
|
|
347
|
+
"The camera saturation capacity may be limited by a downstream camera stage before physical pixel storage is full; this contract does not infer which analog or digital stage is limiting.",
|
|
348
|
+
"The operating-state identifier is an exact calibration-state key covering the source-specific camera/readout configuration; Photivra does not infer equivalence from ISO, gain or bit-depth labels.",
|
|
349
|
+
"A channel-population mean applied to one site or unmodeled temperature dependence remains an explicit approximation.",
|
|
350
|
+
"Expected photo signal below the measured capacity does not establish the actual stochastic saturation state; no saturation probability is calculated.",
|
|
351
|
+
"No signal clamp, analog clipping transfer, ADC maximum code, RAW code or post-saturation output is calculated.",
|
|
352
|
+
"Dark and other stored charge remain diagnostics for physical storage accounting and are not silently added to a dark-corrected camera-signal capacity.",
|
|
353
|
+
"Capacity and photo-signal uncertainties are not propagated into a saturation probability or confidence interval by this version."
|
|
354
|
+
]);
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=camera-saturation-capacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-saturation-capacity.js","sourceRoot":"","sources":["../../src/sensor/camera-saturation-capacity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
2
|
+
import { type CaptureModeProfile, type CaptureModeSampleCombinationDomain, type CaptureModeSensorOffsetNativeSamples, type SourcedCaptureModeFact } from "./capture-mode.js";
|
|
3
|
+
import { type SensorColorSamplingProfile } from "./color-sampling.js";
|
|
4
|
+
import type { NativeImageRaster } from "./sensor-geometry.js";
|
|
5
|
+
export interface NativeEffectiveRasterColorSamplingBindingProfile {
|
|
6
|
+
schemaVersion: "0.1.0";
|
|
7
|
+
bindingId: string;
|
|
8
|
+
colorSamplingProfileId: string;
|
|
9
|
+
/**
|
|
10
|
+
* Exact canonical native effective raster this binding was evidenced for.
|
|
11
|
+
* The binding must not be reused against a different raster merely because
|
|
12
|
+
* another sensor/mode has similar dimensions or a matching aspect ratio.
|
|
13
|
+
*/
|
|
14
|
+
nativeRaster: NativeImageRaster;
|
|
15
|
+
/**
|
|
16
|
+
* Evidence supporting the native-effective-grid ↔ color-site-grid
|
|
17
|
+
* relationship itself.
|
|
18
|
+
*
|
|
19
|
+
* Capture-mode and color-topology facts retain separate provenance.
|
|
20
|
+
*/
|
|
21
|
+
evidence: readonly EvidenceProvenance[];
|
|
22
|
+
relationship: {
|
|
23
|
+
kind: "regular-native-effective-sample-blocks";
|
|
24
|
+
/**
|
|
25
|
+
* Number of abstract color-sampling sites spanned horizontally by one
|
|
26
|
+
* native effective image sample.
|
|
27
|
+
*/
|
|
28
|
+
sitesPerNativeSampleX: number;
|
|
29
|
+
/**
|
|
30
|
+
* Number of abstract color-sampling sites spanned vertically by one
|
|
31
|
+
* native effective image sample.
|
|
32
|
+
*/
|
|
33
|
+
sitesPerNativeSampleY: number;
|
|
34
|
+
/**
|
|
35
|
+
* Both grids are anchored to the same native sensor top-left.
|
|
36
|
+
*
|
|
37
|
+
* This keeps phase absolute across later active crops/orientation.
|
|
38
|
+
*/
|
|
39
|
+
anchor: "shared-native-top-left";
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface ColorSamplingSiteGridDimensions {
|
|
43
|
+
widthSites: number;
|
|
44
|
+
heightSites: number;
|
|
45
|
+
}
|
|
46
|
+
export interface ResolvedNativeEffectiveRasterColorSamplingBinding {
|
|
47
|
+
bindingId: string;
|
|
48
|
+
colorSamplingProfileId: string;
|
|
49
|
+
nativeRaster: NativeImageRaster;
|
|
50
|
+
relationshipMeaning: "one-native-effective-sample-to-one-color-site" | "one-native-effective-sample-to-rectangular-color-site-block";
|
|
51
|
+
relationship: {
|
|
52
|
+
kind: "regular-native-effective-sample-blocks";
|
|
53
|
+
sitesPerNativeSampleX: number;
|
|
54
|
+
sitesPerNativeSampleY: number;
|
|
55
|
+
anchor: "shared-native-top-left";
|
|
56
|
+
};
|
|
57
|
+
colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;
|
|
58
|
+
totalColorSamplingSites: number;
|
|
59
|
+
nativeImageRasterBindingEstablished: true;
|
|
60
|
+
physicalPhotodiodeBindingEstablished: false;
|
|
61
|
+
physicalPhotodiodeCountInference: "not-permitted";
|
|
62
|
+
spectralResponseEstablished: false;
|
|
63
|
+
componentEvidence: {
|
|
64
|
+
binding: readonly EvidenceProvenance[];
|
|
65
|
+
colorSamplingProfile: readonly EvidenceProvenance[];
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface NativeEffectiveSampleRect {
|
|
69
|
+
x: number;
|
|
70
|
+
y: number;
|
|
71
|
+
width: number;
|
|
72
|
+
height: number;
|
|
73
|
+
}
|
|
74
|
+
export interface ColorSamplingSiteRect {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
width: number;
|
|
78
|
+
height: number;
|
|
79
|
+
}
|
|
80
|
+
export interface CaptureModeFullFrameSampleIndex {
|
|
81
|
+
/**
|
|
82
|
+
* Zero-based index in the selected mode's full-frame per-frame effective
|
|
83
|
+
* sampling raster. Crop-local coordinates must be translated to absolute
|
|
84
|
+
* full-frame mode indices before calling this API.
|
|
85
|
+
*/
|
|
86
|
+
x: number;
|
|
87
|
+
y: number;
|
|
88
|
+
}
|
|
89
|
+
export interface ColorSamplingChannelSiteCount {
|
|
90
|
+
channelId: string;
|
|
91
|
+
siteCount: number;
|
|
92
|
+
}
|
|
93
|
+
export type ColorSamplingChannelComposition = {
|
|
94
|
+
kind: "single-channel";
|
|
95
|
+
channelId: string;
|
|
96
|
+
} | {
|
|
97
|
+
kind: "mixed-channels";
|
|
98
|
+
channelIds: readonly string[];
|
|
99
|
+
};
|
|
100
|
+
export interface GroupedCaptureModeSamplingAnchorDeclaration {
|
|
101
|
+
anchor: "native-effective-raster-top-left";
|
|
102
|
+
evidence: readonly EvidenceProvenance[];
|
|
103
|
+
}
|
|
104
|
+
export interface ResolveCaptureModeColorSamplingContributorsInput {
|
|
105
|
+
nativeRaster: NativeImageRaster;
|
|
106
|
+
captureModeProfile: CaptureModeProfile;
|
|
107
|
+
modeId: string;
|
|
108
|
+
colorSamplingProfile: SensorColorSamplingProfile;
|
|
109
|
+
bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
|
|
110
|
+
modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;
|
|
111
|
+
/**
|
|
112
|
+
* Required for grouped-native-samples modes because #68 declares grouping
|
|
113
|
+
* factors but does not itself prove the grouping phase/origin.
|
|
114
|
+
*/
|
|
115
|
+
groupedSamplingAnchor?: GroupedCaptureModeSamplingAnchorDeclaration;
|
|
116
|
+
}
|
|
117
|
+
export interface ResolvedCaptureModeColorSamplingContributors {
|
|
118
|
+
modeId: string;
|
|
119
|
+
colorSamplingProfileId: string;
|
|
120
|
+
modeSampleCoordinateSystem: "capture-mode-full-frame-effective-sample-index";
|
|
121
|
+
modeSampleIndexFullFrame: CaptureModeFullFrameSampleIndex;
|
|
122
|
+
modeSampleRaster: {
|
|
123
|
+
pixelWidth: number;
|
|
124
|
+
pixelHeight: number;
|
|
125
|
+
};
|
|
126
|
+
modeSamplingKind: "native-effective-raster" | "grouped-native-samples";
|
|
127
|
+
nativeEffectiveSampleRect: NativeEffectiveSampleRect;
|
|
128
|
+
colorSamplingSiteRect: ColorSamplingSiteRect;
|
|
129
|
+
colorSamplingSiteGrid: ColorSamplingSiteGridDimensions;
|
|
130
|
+
totalContributorSites: number;
|
|
131
|
+
channelSiteCounts: readonly ColorSamplingChannelSiteCount[];
|
|
132
|
+
channelComposition: ColorSamplingChannelComposition;
|
|
133
|
+
/**
|
|
134
|
+
* Present only when the selected capture mode groups native effective
|
|
135
|
+
* samples before producing one per-frame effective sample.
|
|
136
|
+
*/
|
|
137
|
+
grouping: {
|
|
138
|
+
groupWidthSamples: SourcedCaptureModeFact<number>;
|
|
139
|
+
groupHeightSamples: SourcedCaptureModeFact<number>;
|
|
140
|
+
combinationDomain?: SourcedCaptureModeFact<CaptureModeSampleCombinationDomain>;
|
|
141
|
+
anchor: "native-effective-raster-top-left";
|
|
142
|
+
anchorEvidence: readonly EvidenceProvenance[];
|
|
143
|
+
} | null;
|
|
144
|
+
/**
|
|
145
|
+
* Sensor-shift sequence remains attached to the sensor/capture mode.
|
|
146
|
+
*
|
|
147
|
+
* The sensor and its CFA move together, so these offsets must not be applied
|
|
148
|
+
* as changes to color-site channel assignment.
|
|
149
|
+
*/
|
|
150
|
+
interFrameSensorOffsetsNativeSamples?: SourcedCaptureModeFact<readonly CaptureModeSensorOffsetNativeSamples[]>;
|
|
151
|
+
sensorShiftChangesColorSiteAssignment: false;
|
|
152
|
+
sensorShiftOpticalRegistration: "outside-this-contract";
|
|
153
|
+
structuralSourceStage: "pre-reconstruction";
|
|
154
|
+
completeDownstreamPixelDependencyEstablished: false;
|
|
155
|
+
signalCombinationWeightingEstablished: false;
|
|
156
|
+
spectralResponseEstablished: false;
|
|
157
|
+
physicalPhotodiodeBindingEstablished: false;
|
|
158
|
+
physicalPhotodiodeCountInference: "not-permitted";
|
|
159
|
+
componentEvidence: {
|
|
160
|
+
binding: readonly EvidenceProvenance[];
|
|
161
|
+
colorSamplingProfile: readonly EvidenceProvenance[];
|
|
162
|
+
captureMode: readonly EvidenceProvenance[];
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parses the explicit relationship between the canonical native effective image
|
|
167
|
+
* raster and the separate native sensor color-sampling-site lattice.
|
|
168
|
+
*
|
|
169
|
+
* This first binding supports only regular rectangular site blocks with a
|
|
170
|
+
* shared native top-left anchor. Irregular mappings, sparse exceptions and
|
|
171
|
+
* mode-specific declared-effective rasters require later explicit contracts.
|
|
172
|
+
*/
|
|
173
|
+
export declare function parseNativeEffectiveRasterColorSamplingBindingProfile(value: unknown): NativeEffectiveRasterColorSamplingBindingProfile;
|
|
174
|
+
/**
|
|
175
|
+
* Validates and resolves the sensor-level binding between NativeImageRaster and
|
|
176
|
+
* an exact monochrome/periodic color-sampling topology.
|
|
177
|
+
*
|
|
178
|
+
* Matching dimensions are never treated as proof of a 1:1 relationship. The
|
|
179
|
+
* relationship exists only because the caller supplied this evidence-backed
|
|
180
|
+
* binding profile.
|
|
181
|
+
*/
|
|
182
|
+
export declare function resolveNativeEffectiveRasterColorSamplingBinding(input: {
|
|
183
|
+
nativeRaster: NativeImageRaster;
|
|
184
|
+
colorSamplingProfile: SensorColorSamplingProfile;
|
|
185
|
+
bindingProfile: NativeEffectiveRasterColorSamplingBindingProfile;
|
|
186
|
+
}): ResolvedNativeEffectiveRasterColorSamplingBinding;
|
|
187
|
+
/**
|
|
188
|
+
* Resolves which color-sampling sites form the pre-reconstruction structural source region for one selected
|
|
189
|
+
* capture-mode effective sample.
|
|
190
|
+
*
|
|
191
|
+
* The mode sample index is always absolute in the selected mode's full-frame
|
|
192
|
+
* per-frame raster. The API intentionally does not accept crop-local indices,
|
|
193
|
+
* preventing active-crop origins from silently resetting CFA phase.
|
|
194
|
+
*
|
|
195
|
+
* For grouped-native-sample modes, the returned site rectangle covers all
|
|
196
|
+
* native effective samples in the declared regular group. This is a structural
|
|
197
|
+
* pre-reconstruction association only: the engine reports channel-site counts
|
|
198
|
+
* but never claims complete downstream digital-pixel dependency or invents
|
|
199
|
+
* signal-combination weights, sum/average semantics, spectral response, or
|
|
200
|
+
* photon/electron values.
|
|
201
|
+
*
|
|
202
|
+
* Declared-effective-raster modes fail closed because #68 explicitly says
|
|
203
|
+
* their relationship to the native effective grid is not safely expressible as
|
|
204
|
+
* simple integer grouping.
|
|
205
|
+
*
|
|
206
|
+
* Inter-frame sensor shifts are preserved as capture-mode metadata only. The
|
|
207
|
+
* sensor and CFA move together, so those offsets do not change site channel
|
|
208
|
+
* assignment; their optical-registration effect belongs to a later spatial
|
|
209
|
+
* sampling/image-formation contract.
|
|
210
|
+
*/
|
|
211
|
+
export declare function resolveCaptureModeColorSamplingContributors(input: ResolveCaptureModeColorSamplingContributorsInput): ResolvedCaptureModeColorSamplingContributors;
|
|
212
|
+
//# sourceMappingURL=capture-color-sampling-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-color-sampling-binding.d.ts","sourceRoot":"","sources":["../../src/sensor/capture-color-sampling-binding.ts"],"names":[],"mappings":"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"}
|