@photivra/engine 1.5.0 → 2.1.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/CHANGELOG.md +414 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +363 -0
- package/dist/facade/simulate-capture.js +1281 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +91 -25
- package/dist/index.js +60 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +777 -2
- package/docs/QUICK_START.md +663 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2253 -3
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +397 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction-psf-profile.md +96 -0
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -11
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# optics/irradiance-convolution.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## calculateIrradianceConvolution
|
|
6
|
+
|
|
7
|
+
Synchronous float64 reference for bounded grids. Use the image-kernel accelerator for large grids.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
export function calculateIrradianceConvolution(input: IrradianceConvolutionInput): { plan: IrradianceConvolutionPlan; values: Float64Array };
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
14
|
+
|
|
15
|
+
## calculateIrradianceConvolutionPlan
|
|
16
|
+
|
|
17
|
+
Validates the request and returns its plan. Every sample and weight is checked once.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
export function calculateIrradianceConvolutionPlan(input: IrradianceConvolutionInput): IrradianceConvolutionPlan;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
24
|
+
|
|
25
|
+
## IRRADIANCE_CONVOLUTION_LIMITS
|
|
26
|
+
|
|
27
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
IRRADIANCE_CONVOLUTION_LIMITS = Object.freeze({
|
|
31
|
+
maximumPixels: 24_000_000,
|
|
32
|
+
maximumDimension: 16_384,
|
|
33
|
+
maximumKernelRadius: 32,
|
|
34
|
+
maximumPatchCount: 4_096,
|
|
35
|
+
maximumKernelWeights: 4_194_304,
|
|
36
|
+
/** A kernel may lose energy (vignetting, transmission) but may not create it, beyond rounding slack. */
|
|
37
|
+
maximumKernelSum: 1 + 2 ** -20,
|
|
38
|
+
/** Inputs larger than this are rejected so that float32 execution cannot overflow. */
|
|
39
|
+
maximumSampleMagnitude: 2 ** 100
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## IRRADIANCE_CONVOLUTION_SCHEMA_VERSION
|
|
44
|
+
|
|
45
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
IRRADIANCE_CONVOLUTION_SCHEMA_VERSION = "0.1.0" as const
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## IrradianceConvolutionInput
|
|
52
|
+
|
|
53
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
export interface IrradianceConvolutionInput {
|
|
57
|
+
schemaVersion: typeof IRRADIANCE_CONVOLUTION_SCHEMA_VERSION;
|
|
58
|
+
width: number;
|
|
59
|
+
height: number;
|
|
60
|
+
/** Row-major samples. Finite, non-negative, linear and additive (for example irradiance, or expected photons per site). */
|
|
61
|
+
samples: Float32Array | Float64Array;
|
|
62
|
+
/** Kernel half-width in grid sites. Each kernel is (2r+1)×(2r+1). */
|
|
63
|
+
kernelRadius: number;
|
|
64
|
+
/** Patch size in grid sites. The last row and column of patches may be partial. */
|
|
65
|
+
patchWidth: number;
|
|
66
|
+
patchHeight: number;
|
|
67
|
+
/**
|
|
68
|
+
* Finite non-negative weights, `[patchRow][patchColumn][v + r][u + r]`, one kernel per patch in
|
|
69
|
+
* row-major patch order. Each kernel sums to at most 1 (+2^-20 rounding slack).
|
|
70
|
+
*/
|
|
71
|
+
kernels: Float32Array | Float64Array;
|
|
72
|
+
boundary: "zero-outside-grid";
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## IrradianceConvolutionPlan
|
|
77
|
+
|
|
78
|
+
Validated, immutable geometry of a convolution request. Sample arrays are borrowed, not copied.
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
export interface IrradianceConvolutionPlan {
|
|
82
|
+
width: number;
|
|
83
|
+
height: number;
|
|
84
|
+
kernelRadius: number;
|
|
85
|
+
kernelSize: number;
|
|
86
|
+
tapCount: number;
|
|
87
|
+
patchWidth: number;
|
|
88
|
+
patchHeight: number;
|
|
89
|
+
patchColumns: number;
|
|
90
|
+
patchRows: number;
|
|
91
|
+
/** Largest kernel sum and largest input magnitude. The float32 error bound uses them. */
|
|
92
|
+
maximumKernelSum: number;
|
|
93
|
+
maximumSampleMagnitude: number;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# optics/lateral-chromatic-aberration.ts public contracts
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
4
|
|
|
5
5
|
## calculateInverseLateralChromaticAberrationMapping
|
|
6
6
|
|
|
7
|
-
Inverse-maps one distorted output
|
|
8
|
-
|
|
7
|
+
Inverse-maps one distorted output point separately for the representative
|
|
8
|
+
red, green and blue channels.
|
|
9
9
|
|
|
10
|
-
Renderers can
|
|
11
|
-
|
|
10
|
+
Renderers can sample the returned per-channel ideal source points directly,
|
|
11
|
+
without writing their own chromatic-aberration equations.
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
14
|
export function calculateInverseLateralChromaticAberrationMapping(
|
|
@@ -25,8 +25,8 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
25
25
|
```ts
|
|
26
26
|
export interface CalculateInverseLateralChromaticAberrationMappingInput {
|
|
27
27
|
/**
|
|
28
|
-
* Distorted output image-plane
|
|
29
|
-
*
|
|
28
|
+
* Distorted output image-plane point. Each channel is inverse-mapped on its
|
|
29
|
+
* own to its ideal source point.
|
|
30
30
|
*/
|
|
31
31
|
distortedImagePointMm: LensFieldPointMm;
|
|
32
32
|
profile: LateralChromaticAberrationProfile;
|
|
@@ -35,12 +35,12 @@ export interface CalculateInverseLateralChromaticAberrationMappingInput {
|
|
|
35
35
|
|
|
36
36
|
## calculateInverseLateralChromaticAberrationMappings
|
|
37
37
|
|
|
38
|
-
Inverse-maps
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
Inverse-maps many distorted points at once. The shared CA profile is
|
|
39
|
+
resolved once, and each combined channel profile is validated once, for
|
|
40
|
+
the whole batch.
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
Each point's values match calculateInverseLateralChromaticAberrationMapping().
|
|
43
|
+
Provenance is reported once for the batch.
|
|
44
44
|
|
|
45
45
|
```ts
|
|
46
46
|
export function calculateInverseLateralChromaticAberrationMappings(
|
|
@@ -57,9 +57,9 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
57
57
|
```ts
|
|
58
58
|
export interface CalculateInverseLateralChromaticAberrationMappingsInput {
|
|
59
59
|
/**
|
|
60
|
-
* Distorted output image-plane
|
|
61
|
-
* mapped
|
|
62
|
-
*
|
|
60
|
+
* Distorted output image-plane points. The profile is resolved once for the
|
|
61
|
+
* batch. Then each point is inverse-mapped separately for red, green and
|
|
62
|
+
* blue.
|
|
63
63
|
*/
|
|
64
64
|
distortedImagePointsMm: readonly LensFieldPointMm[];
|
|
65
65
|
profile: LateralChromaticAberrationProfile;
|
|
@@ -68,11 +68,12 @@ export interface CalculateInverseLateralChromaticAberrationMappingsInput {
|
|
|
68
68
|
|
|
69
69
|
## calculateLateralChromaticAberrationMapping
|
|
70
70
|
|
|
71
|
-
Calculates
|
|
72
|
-
one ideal image-plane point through a shared
|
|
73
|
-
|
|
71
|
+
Calculates how far lateral chromatic aberration (CA) separates the colour
|
|
72
|
+
channels at one ideal image-plane point. The point goes through a shared
|
|
73
|
+
base distortion (green is the reference) plus extra radial coefficients for
|
|
74
|
+
red and blue.
|
|
74
75
|
|
|
75
|
-
This
|
|
76
|
+
This moves each channel; it is not a blur kernel.
|
|
76
77
|
|
|
77
78
|
```ts
|
|
78
79
|
export function calculateLateralChromaticAberrationMapping(
|
|
@@ -200,8 +201,8 @@ export interface LateralChromaticAberrationProfile {
|
|
|
200
201
|
/**
|
|
201
202
|
* Green-reference base geometric distortion.
|
|
202
203
|
*
|
|
203
|
-
*
|
|
204
|
-
* added
|
|
204
|
+
* Every channel includes this shared mapping. The red and blue CA terms are
|
|
205
|
+
* added on top of it, so do not apply a second distortion pass.
|
|
205
206
|
*/
|
|
206
207
|
baseDistortionCoefficients: RadialDistortionCoefficients;
|
|
207
208
|
/** Additional red-channel radial coefficients relative to green. */
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# optics/lens-psf-kernels.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS
|
|
6
|
+
|
|
7
|
+
At most this many wavelengths per call.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
LENS_PSF_CONVOLUTION_KERNELS_MAXIMUM_WAVELENGTHS = 64
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION
|
|
14
|
+
|
|
15
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION = "0.1.0" as const
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## LensPsfConvolutionKernels
|
|
22
|
+
|
|
23
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
export interface LensPsfConvolutionKernels {
|
|
27
|
+
schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;
|
|
28
|
+
kernelRadius: number;
|
|
29
|
+
patchWidth: number;
|
|
30
|
+
patchHeight: number;
|
|
31
|
+
patchColumns: number;
|
|
32
|
+
patchRows: number;
|
|
33
|
+
/** `[patchRow][patchColumn][v + r][u + r]`, ready for `IrradianceConvolutionInput.kernels`. */
|
|
34
|
+
kernels: Float64Array;
|
|
35
|
+
/** True when every tap landed on one integer displacement (no bilinear splatting). */
|
|
36
|
+
exactSiteSampling: boolean;
|
|
37
|
+
maximumKernelSum: number;
|
|
38
|
+
/** Per patch, row-major: the field point used and the weight-averaged relative pupil throughput (not applied). */
|
|
39
|
+
patches: readonly { fieldPointMm: { x: number; y: number }; relativePupilThroughputFactor: number; interpolated: boolean }[];
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## LensPsfConvolutionKernelsInput
|
|
44
|
+
|
|
45
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
export interface LensPsfConvolutionKernelsInput {
|
|
49
|
+
schemaVersion: typeof LENS_PSF_CONVOLUTION_KERNELS_SCHEMA_VERSION;
|
|
50
|
+
/** The optical state, as for `resolveLensSampledPsf`, without the field point and wavelength. */
|
|
51
|
+
psf: Omit<ResolveLensSampledPsfInput, "fieldPointMm" | "wavelengthNm">;
|
|
52
|
+
/** One or more wavelengths with non-negative weights (at least one positive). */
|
|
53
|
+
spectralWeights: readonly { wavelengthNm: number; weight: number }[];
|
|
54
|
+
/** The convolution grid: sites, their pitch, and the optical axis in site units (site centres at i + 0.5). */
|
|
55
|
+
grid: { width: number; height: number; sitePitchMicrometers: { x: number; y: number }; opticalAxisSite: { x: number; y: number } };
|
|
56
|
+
/** Patch size in sites; the last row and column of patches may be partial. */
|
|
57
|
+
patchWidth: number;
|
|
58
|
+
patchHeight: number;
|
|
59
|
+
/** Kernel radius to use; omitted, the smallest radius that holds every tap. A radius too small to hold the PSF is rejected. */
|
|
60
|
+
kernelRadius?: number;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## resolveLensPsfConvolutionKernels
|
|
65
|
+
|
|
66
|
+
Builds the per-patch convolution kernels from a sampled lens PSF profile.
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
export function resolveLensPsfConvolutionKernels(input: LensPsfConvolutionKernelsInput): CalculationResult<LensPsfConvolutionKernels>;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# optics/lens-psf-profile.ts public contracts
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
4
|
|
|
5
5
|
## assessMtfOnlyPsfRenderability
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Explains why MTF-only evidence cannot determine one unique renderable PSF. Returns blockers instead
|
|
8
|
+
of making up phase information.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
unique PSF.
|
|
10
|
+
A sampled lens PSF is tied to an exact generic optical state and to declared ranges of field
|
|
11
|
+
position, wavelength and signed defocus. Interpolation stays inside those declared ranges. It keeps
|
|
12
|
+
the normalized shape separate from the throughput. MTF (modulation transfer function) data alone
|
|
13
|
+
has no phase or spatial information, so it cannot justify rendering one unique PSF.
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
16
|
export function assessMtfOnlyPsfRenderability(
|
|
@@ -189,6 +189,28 @@ export interface LensSampledPsfGridNode {
|
|
|
189
189
|
}
|
|
190
190
|
```
|
|
191
191
|
|
|
192
|
+
## LensSampledPsfInterpolation
|
|
193
|
+
|
|
194
|
+
Kernel interpolation between regular-grid nodes.
|
|
195
|
+
- `bounded-regular-grid-multilinear`: the legacy weighted sum of kernel values. Blending kernels
|
|
196
|
+
whose peaks sit at different positions gives several peaks.
|
|
197
|
+
- `bounded-regular-grid-centroid-aligned`: each node kernel is first shifted so its intensity
|
|
198
|
+
centroid sits at the weighted (interpolated) centroid. Then the same multilinear weights are
|
|
199
|
+
applied. Shifted or asymmetric PSFs therefore blend into one peak at the interpolated position.
|
|
200
|
+
- `rotationally-symmetric-radial-field-centroid-aligned`: for a rotationally symmetric lens. Nodes
|
|
201
|
+
are declared only along the +X field axis (fieldYmm = [0], fieldXmm >= 0). A query at field
|
|
202
|
+
(x, y) is interpolated, with centroid alignment, at radius hypot(x, y). The kernel is then
|
|
203
|
+
rotated by atan2(y, x) about its centre. The sample pitch must be square.
|
|
204
|
+
Shifts and rotations use bilinear resampling. This smooths the kernel slightly (by at most about
|
|
205
|
+
one sample). Samples outside the kernel are zero, and the result is renormalised to unit energy.
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
export type LensSampledPsfInterpolation =
|
|
209
|
+
| "bounded-regular-grid-multilinear"
|
|
210
|
+
| "bounded-regular-grid-centroid-aligned"
|
|
211
|
+
| "rotationally-symmetric-radial-field-centroid-aligned";
|
|
212
|
+
```
|
|
213
|
+
|
|
192
214
|
## LensSampledPsfProfile
|
|
193
215
|
|
|
194
216
|
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
@@ -210,7 +232,7 @@ export interface LensSampledPsfProfile {
|
|
|
210
232
|
kernelEnergyNormalization:
|
|
211
233
|
"unit-energy-shape";
|
|
212
234
|
interpolation:
|
|
213
|
-
|
|
235
|
+
LensSampledPsfInterpolation;
|
|
214
236
|
throughputOwnership:
|
|
215
237
|
"separate-relative-pupil-throughput-factor";
|
|
216
238
|
responseIncludes: {
|
|
@@ -253,13 +275,13 @@ export interface MtfOnlyPsfRenderabilityAssessment {
|
|
|
253
275
|
|
|
254
276
|
## parseLensMtfDiagnosticProfile
|
|
255
277
|
|
|
256
|
-
|
|
257
|
-
missing required fields and incompatible scientific data
|
|
278
|
+
Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,
|
|
279
|
+
missing required fields and incompatible scientific data are rejected here.
|
|
258
280
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
unique PSF.
|
|
281
|
+
A sampled lens PSF is tied to an exact generic optical state and to declared ranges of field
|
|
282
|
+
position, wavelength and signed defocus. Interpolation stays inside those declared ranges. It keeps
|
|
283
|
+
the normalized shape separate from the throughput. MTF (modulation transfer function) data alone
|
|
284
|
+
has no phase or spatial information, so it cannot justify rendering one unique PSF.
|
|
263
285
|
|
|
264
286
|
```ts
|
|
265
287
|
export function parseLensMtfDiagnosticProfile(
|
|
@@ -271,13 +293,13 @@ This call is synchronous; any supplied provider must follow its explicit synchro
|
|
|
271
293
|
|
|
272
294
|
## parseLensSampledPsfProfile
|
|
273
295
|
|
|
274
|
-
|
|
275
|
-
missing required fields and incompatible scientific data
|
|
296
|
+
Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,
|
|
297
|
+
missing required fields and incompatible scientific data are rejected here.
|
|
276
298
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
unique PSF.
|
|
299
|
+
A sampled lens PSF is tied to an exact generic optical state and to declared ranges of field
|
|
300
|
+
position, wavelength and signed defocus. Interpolation stays inside those declared ranges. It keeps
|
|
301
|
+
the normalized shape separate from the throughput. MTF (modulation transfer function) data alone
|
|
302
|
+
has no phase or spatial information, so it cannot justify rendering one unique PSF.
|
|
281
303
|
|
|
282
304
|
```ts
|
|
283
305
|
export function parseLensSampledPsfProfile(
|
|
@@ -341,13 +363,13 @@ export interface ResolvedLensSampledPsf {
|
|
|
341
363
|
|
|
342
364
|
## resolveLensSampledPsf
|
|
343
365
|
|
|
344
|
-
|
|
345
|
-
|
|
366
|
+
Resolves the sampled PSF for a declared optical state and query point. It never extrapolates and
|
|
367
|
+
never invents missing dimensions.
|
|
346
368
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
unique PSF.
|
|
369
|
+
A sampled lens PSF is tied to an exact generic optical state and to declared ranges of field
|
|
370
|
+
position, wavelength and signed defocus. Interpolation stays inside those declared ranges. It keeps
|
|
371
|
+
the normalized shape separate from the throughput. MTF (modulation transfer function) data alone
|
|
372
|
+
has no phase or spatial information, so it cannot justify rendering one unique PSF.
|
|
351
373
|
|
|
352
374
|
```ts
|
|
353
375
|
export function resolveLensSampledPsf(
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# optics/longitudinal-chromatic-aberration.ts public contracts
|
|
2
|
+
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
|
+
|
|
5
|
+
## calculateCauchyRefractiveIndex
|
|
6
|
+
|
|
7
|
+
Two-term Cauchy refractive index fitted to n_d and V_d. Valid as an approximation over
|
|
8
|
+
360-830 nm only.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
export function calculateCauchyRefractiveIndex(input: {
|
|
12
|
+
refractiveIndexD: number;
|
|
13
|
+
abbeNumberD: number;
|
|
14
|
+
wavelengthNm: number;
|
|
15
|
+
}): CalculationResult<{ refractiveIndex: number }>;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
19
|
+
|
|
20
|
+
## calculateLongitudinalChromaticFocus
|
|
21
|
+
|
|
22
|
+
Wavelength-dependent focus for one wavelength: focal length, image distance, signed defocus at
|
|
23
|
+
a sensor focused at the reference wavelength, geometric blur and the defocus wavefront.
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
export function calculateLongitudinalChromaticFocus(
|
|
27
|
+
input: CalculateLongitudinalChromaticFocusInput
|
|
28
|
+
): CalculationResult<LongitudinalChromaticFocus>;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
32
|
+
|
|
33
|
+
## CalculateLongitudinalChromaticFocusInput
|
|
34
|
+
|
|
35
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
export interface CalculateLongitudinalChromaticFocusInput {
|
|
39
|
+
/** Focal length at the reference wavelength, in mm. */
|
|
40
|
+
focalLengthMm: number;
|
|
41
|
+
/** Wavelength at which the sensor is focused, in nm. */
|
|
42
|
+
referenceWavelengthNm: number;
|
|
43
|
+
/** Wavelength to evaluate, in nm (same wavelength basis as the dispersion data). */
|
|
44
|
+
wavelengthNm: number;
|
|
45
|
+
/** Nominal f-number at the reference wavelength (entrance-pupil diameter = f / N). */
|
|
46
|
+
apertureFNumber: number;
|
|
47
|
+
/** Focus (object) distance at the reference wavelength, metres from the principal plane. */
|
|
48
|
+
focusDistanceM: number;
|
|
49
|
+
/** Subject distance in metres; defaults to focusDistanceM. */
|
|
50
|
+
subjectDistanceM?: number;
|
|
51
|
+
dispersion: LongitudinalChromaticDispersion;
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## FRAUNHOFER_C_LINE_NM
|
|
56
|
+
|
|
57
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
FRAUNHOFER_C_LINE_NM = 656.2725
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## FRAUNHOFER_D_LINE_NM
|
|
64
|
+
|
|
65
|
+
Fraunhofer spectral-line wavelengths in nm (SCHOTT TIE-29 table; also ISO 7944 reference wavelengths).
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
FRAUNHOFER_D_LINE_NM = 587.5618
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## FRAUNHOFER_F_LINE_NM
|
|
72
|
+
|
|
73
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
FRAUNHOFER_F_LINE_NM = 486.1327
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## LongitudinalChromaticDispersion
|
|
80
|
+
|
|
81
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
export type LongitudinalChromaticDispersion =
|
|
85
|
+
| {
|
|
86
|
+
kind: "thin-singlet-abbe";
|
|
87
|
+
/** Refractive index at the d line. */
|
|
88
|
+
refractiveIndexD: number;
|
|
89
|
+
/** Abbe number V_d = (n_d - 1) / (n_F - n_C). */
|
|
90
|
+
abbeNumberD: number;
|
|
91
|
+
}
|
|
92
|
+
| {
|
|
93
|
+
kind: "declared-focal-shift";
|
|
94
|
+
/** Strictly increasing wavelengths; shift is f(lambda) - f_nominal in micrometres. */
|
|
95
|
+
samples: readonly {
|
|
96
|
+
wavelengthNm: number;
|
|
97
|
+
focalLengthShiftMicrometers: number;
|
|
98
|
+
}[];
|
|
99
|
+
};
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## LongitudinalChromaticFocus
|
|
103
|
+
|
|
104
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
export interface LongitudinalChromaticFocus {
|
|
108
|
+
wavelengthNm: number;
|
|
109
|
+
referenceWavelengthNm: number;
|
|
110
|
+
focalLengthAtWavelengthMm: number;
|
|
111
|
+
/** f(lambda) - f(reference), micrometres. */
|
|
112
|
+
focalShiftMicrometers: number;
|
|
113
|
+
/** Sensor plane distance (reference-wavelength image of the focus plane), mm. */
|
|
114
|
+
sensorImageDistanceMm: number;
|
|
115
|
+
/** Image distance of the subject at this wavelength, mm. */
|
|
116
|
+
imageDistanceAtWavelengthMm: number;
|
|
117
|
+
/** Sensor minus image distance, micrometres. */
|
|
118
|
+
signedDefocusImagePlaneMicrometers: number;
|
|
119
|
+
/** Geometric thin-lens blur-circle diameter at the sensor, mm. */
|
|
120
|
+
geometricBlurDiameterMm: number;
|
|
121
|
+
/** Image-side working f-number v(lambda) / D. */
|
|
122
|
+
workingFNumberAtWavelength: number;
|
|
123
|
+
/** Defocus wave aberration W020 for the complex-pupil PSF, micrometres. */
|
|
124
|
+
w020Micrometers: number;
|
|
125
|
+
/** Equivalent Noll Z4 coefficient, micrometres. */
|
|
126
|
+
zernikeZ4Micrometers: number;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# optics/polygon-diffraction.ts public contracts
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The package and root API versions are recorded once in [Navigation](../API_REFERENCE.md) · [Developer guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md). Generated signatures retain independent schema/model versions. Only the exports listed here are root-package contracts; module-local helpers are not supported deep imports.
|
|
4
4
|
|
|
5
5
|
## CalculateIdealPolygonDiffractionInput
|
|
6
6
|
|
|
@@ -10,9 +10,9 @@ On-axis, in-focus scalar diffraction of one ideal regular polygon pupil.
|
|
|
10
10
|
export interface CalculateIdealPolygonDiffractionInput extends CalculateIdealApertureInput {
|
|
11
11
|
/** Diameter of a circle with the SAME AREA as the physical polygon opening. */
|
|
12
12
|
equivalentAreaPupilDiameterMm: number;
|
|
13
|
-
/** Paraxial pupil
|
|
13
|
+
/** Paraxial propagation distance from pupil to image. Never inferred from focus. */
|
|
14
14
|
pupilToImageDistanceMm: number;
|
|
15
|
-
/** Wavelength in the declared propagation medium
|
|
15
|
+
/** Wavelength in the declared propagation medium. No air/vacuum conversion is applied. */
|
|
16
16
|
wavelengthNm: number;
|
|
17
17
|
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
18
18
|
/** Displacements from the on-axis PSF center, +X right / +Y up; at most 4096. */
|
|
@@ -22,15 +22,19 @@ export interface CalculateIdealPolygonDiffractionInput extends CalculateIdealApe
|
|
|
22
22
|
|
|
23
23
|
## calculateIdealPolygonDiffractionPsf
|
|
24
24
|
|
|
25
|
-
Calculates continuous
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
a declared nominal-area convention. No phase aberration, clipping, field
|
|
29
|
-
dependence, curved blades, defocus or polychromatic behavior is inferred.
|
|
25
|
+
Calculates the continuous, single-wavelength Fraunhofer (far-field) PSF
|
|
26
|
+
density of an ideal regular polygon with straight edges. The pupil is
|
|
27
|
+
uniformly lit, has zero phase and sits on the optical axis.
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
The physical area is explicit. f/N may supply the equal-area diameter only
|
|
30
|
+
when the caller declares the nominal-area convention. Nothing else is
|
|
31
|
+
assumed: no phase aberration, clipping, field dependence, curved blades,
|
|
32
|
+
defocus or multi-wavelength behaviour.
|
|
33
|
+
|
|
34
|
+
Density = A |F/A|² / (lambda * propagationDistance)². It integrates to 1
|
|
35
|
+
over the infinite plane (Parseval), NOT over the supplied points. Code that
|
|
36
|
+
sums the samples must keep density × area and report truncation and
|
|
37
|
+
convergence.
|
|
34
38
|
|
|
35
39
|
```ts
|
|
36
40
|
export function calculateIdealPolygonDiffractionPsf(
|
|
@@ -40,9 +44,47 @@ export function calculateIdealPolygonDiffractionPsf(
|
|
|
40
44
|
|
|
41
45
|
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
42
46
|
|
|
47
|
+
## calculatePolygonPupilFraunhoferPsf
|
|
48
|
+
|
|
49
|
+
Continuous, single-wavelength Fraunhofer PSF density for any simple polygon pupil that is uniformly
|
|
50
|
+
lit and has zero phase (for example a cat's-eye pupil from mechanical vignetting).
|
|
51
|
+
|
|
52
|
+
It uses the same analytic edge integral as the regular-polygon model, so there is no aliasing from
|
|
53
|
+
a pupil grid. Moving the pupil off the axis only adds a linear phase; the intensity does not
|
|
54
|
+
change. Density = A |F/A|² / (lambda z)², and it integrates to 1 over the infinite plane.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
export function calculatePolygonPupilFraunhoferPsf(
|
|
58
|
+
input: CalculatePolygonPupilFraunhoferPsfInput
|
|
59
|
+
): CalculationResult<PolygonPupilFraunhoferPsf>;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
63
|
+
|
|
64
|
+
## CalculatePolygonPupilFraunhoferPsfInput
|
|
65
|
+
|
|
66
|
+
On-axis scalar Fraunhofer diffraction of one arbitrary simple polygon pupil.
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
export interface CalculatePolygonPupilFraunhoferPsfInput {
|
|
70
|
+
/**
|
|
71
|
+
* Simple (non-self-intersecting) pupil polygon in pupil-plane millimetres, +X right / +Y up,
|
|
72
|
+
* with 3 to 4096 vertices. For example, the cat's-eye pupil from calculateMechanicalVignetting().
|
|
73
|
+
*/
|
|
74
|
+
pupilVerticesMm: readonly { x: number; y: number }[];
|
|
75
|
+
/** Paraxial propagation distance from pupil to image. Never inferred from focus. */
|
|
76
|
+
pupilToImageDistanceMm: number;
|
|
77
|
+
/** Wavelength in the declared propagation medium. No air/vacuum conversion is applied. */
|
|
78
|
+
wavelengthNm: number;
|
|
79
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
80
|
+
/** Displacements from the PSF centre (the geometric image point), +X right / +Y up; at most 4096. */
|
|
81
|
+
imagePointsMicrometers: readonly { x: number; y: number }[];
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
43
85
|
## IdealPolygonDiffraction
|
|
44
86
|
|
|
45
|
-
|
|
87
|
+
Samples of a continuous unit-energy PSF. This is not a normalized finite convolution kernel.
|
|
46
88
|
|
|
47
89
|
```ts
|
|
48
90
|
export interface IdealPolygonDiffraction {
|
|
@@ -59,7 +101,30 @@ export interface IdealPolygonDiffraction {
|
|
|
59
101
|
throughputApplied: false;
|
|
60
102
|
samples: readonly {
|
|
61
103
|
imagePointMicrometers: { x: number; y: number };
|
|
62
|
-
/** |F/A
|
|
104
|
+
/** |F/A|². Equal to 1 at the origin. Not an energy or probability weight. */
|
|
105
|
+
peakNormalizedIntensity: number;
|
|
106
|
+
/** Density integrating to unity over the full image plane, in 1/µm². */
|
|
107
|
+
intensityDensityPerSquareMicrometer: number;
|
|
108
|
+
}[];
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## PolygonPupilFraunhoferPsf
|
|
113
|
+
|
|
114
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
export interface PolygonPupilFraunhoferPsf {
|
|
118
|
+
pupilAreaSquareMm: number;
|
|
119
|
+
pupilToImageDistanceMm: number;
|
|
120
|
+
wavelengthNm: number;
|
|
121
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
122
|
+
fieldAxes: "+X right, +Y up";
|
|
123
|
+
energyNormalization: "unit-integral-over-infinite-image-plane";
|
|
124
|
+
throughputApplied: false;
|
|
125
|
+
samples: readonly {
|
|
126
|
+
imagePointMicrometers: { x: number; y: number };
|
|
127
|
+
/** |F/A|²; unity at the origin. */
|
|
63
128
|
peakNormalizedIntensity: number;
|
|
64
129
|
/** Density integrating to unity over the full image plane, in 1/µm². */
|
|
65
130
|
intensityDensityPerSquareMicrometer: number;
|