@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
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# optics/depth-of-field.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
|
## calculateDefocusCircle
|
|
6
6
|
|
|
7
7
|
Calculates the geometric defocus-circle diameter at the sensor plane for a
|
|
8
|
-
subject plane away from the selected focus plane
|
|
8
|
+
subject plane away from the selected focus plane, using the stable closed
|
|
9
|
+
form c = f^2 |s - d| / (N d (s - f)) (model 1.1.0).
|
|
9
10
|
|
|
10
11
|
```ts
|
|
11
12
|
export function calculateDefocusCircle(
|
|
@@ -34,11 +35,16 @@ export interface CalculateDefocusCircleInput {
|
|
|
34
35
|
|
|
35
36
|
## calculateDepthOfField
|
|
36
37
|
|
|
37
|
-
Calculates thin-lens depth-of-field limits
|
|
38
|
-
|
|
38
|
+
Calculates exact thin-lens depth-of-field limits. With hyperfocal
|
|
39
|
+
distance H = f^2/(Nc) + f and focus distance s, the near limit is
|
|
40
|
+
s(H - f)/(H + s - 2f) and the far limit is s(H - f)/(H - s), which is
|
|
41
|
+
infinite (`null`) when s >= H. At both limits the geometric defocus circle
|
|
42
|
+
from {@link calculateDefocusCircle} equals the supplied circle of confusion.
|
|
43
|
+
The circle of confusion must be smaller than the aperture diameter f/N;
|
|
44
|
+
otherwise the near limit would fall inside the focal length.
|
|
39
45
|
|
|
40
|
-
The model is geometric
|
|
41
|
-
focus breathing, pupil magnification
|
|
46
|
+
The model is geometric. It does not include diffraction, aberrations,
|
|
47
|
+
focus breathing, pupil magnification or macro (high-magnification) effects.
|
|
42
48
|
|
|
43
49
|
```ts
|
|
44
50
|
export function calculateDepthOfField(
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# optics/diffraction-psf-profile.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
|
+
## createDiffractionLimitedPsfProfile
|
|
6
|
+
|
|
7
|
+
Creates a sampled lens PSF profile for an ideal diffraction-limited lens with a circular pupil: one
|
|
8
|
+
unit-sum Airy kernel per wavelength on one shared (2R+1)² grid, with the truncated energy reported per
|
|
9
|
+
wavelength. The profile declares the given focal length, f-number and focus exactly, and the field axes
|
|
10
|
+
±`fieldHalfExtentMm` with the same kernel at every field node.
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
export function createDiffractionLimitedPsfProfile(input: CreateDiffractionLimitedPsfProfileInput): CalculationResult<DiffractionLimitedPsfProfile>;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
17
|
+
|
|
18
|
+
## CreateDiffractionLimitedPsfProfileInput
|
|
19
|
+
|
|
20
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
export interface CreateDiffractionLimitedPsfProfileInput {
|
|
24
|
+
/** Only `circular` in 2.1.0 (polygon pupils: `calculateIdealPolygonDiffractionPsf` gives point densities). */
|
|
25
|
+
aperture: "circular";
|
|
26
|
+
focalLengthMm: number;
|
|
27
|
+
apertureFNumber: number;
|
|
28
|
+
focus: FocusPlane;
|
|
29
|
+
/** Strictly increasing wavelengths, nm, in the medium of propagation (no air/vacuum conversion is applied). 1–64. */
|
|
30
|
+
wavelengthsNm: readonly number[];
|
|
31
|
+
/** Square sample pitch of every kernel, µm. */
|
|
32
|
+
samplePitchMicrometers: number;
|
|
33
|
+
/** Kernel half-width in samples; each kernel is (2R + 1)². 0–32. */
|
|
34
|
+
kernelRadiusSamples: number;
|
|
35
|
+
/** Half-extent of the image field over which the on-axis PSF is declared (profile field axes ±x, ±y), mm. */
|
|
36
|
+
fieldHalfExtentMm: { x: number; y: number };
|
|
37
|
+
profileId: string;
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## DIFFRACTION_LIMITED_PSF_PROFILE_LIMITS
|
|
42
|
+
|
|
43
|
+
Input limits: at most 64 wavelengths, kernel radius 0–32 samples (the irradiance-convolution limit).
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
DIFFRACTION_LIMITED_PSF_PROFILE_LIMITS = Object.freeze({ maximumWavelengths: 64, maximumKernelRadiusSamples: 32 })
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## DIFFRACTION_LIMITED_PSF_PROFILE_MODEL
|
|
50
|
+
|
|
51
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
DIFFRACTION_LIMITED_PSF_PROFILE_MODEL = Object.freeze({
|
|
55
|
+
modelId: "photivra-diffraction-limited-circular-pupil-psf" as const, modelVersion: "1.0.0" as const })
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## DiffractionLimitedPsfProfile
|
|
59
|
+
|
|
60
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
export interface DiffractionLimitedPsfProfile {
|
|
64
|
+
profile: LensSampledPsfProfile;
|
|
65
|
+
model: typeof DIFFRACTION_LIMITED_PSF_PROFILE_MODEL;
|
|
66
|
+
pupilDiameterMm: number;
|
|
67
|
+
pupilToImageDistanceMm: number;
|
|
68
|
+
workingFNumber: number;
|
|
69
|
+
kernelRadiusSamples: number;
|
|
70
|
+
samplePitchMicrometers: number;
|
|
71
|
+
wavelengths: readonly DiffractionLimitedPsfWavelength[];
|
|
72
|
+
/** Largest truncated energy over the wavelengths. */
|
|
73
|
+
maximumTruncatedEnergyFraction: number;
|
|
74
|
+
quadrature: { method: "polar-frequency-domain-trapezoid-gauss-legendre"; maximumRadialNodes: number; maximumAngularNodes: number };
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## DiffractionLimitedPsfWavelength
|
|
79
|
+
|
|
80
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
export interface DiffractionLimitedPsfWavelength {
|
|
84
|
+
wavelengthNm: number;
|
|
85
|
+
/** f_c = 1/(λ·N_w), cycles per µm. */
|
|
86
|
+
cutoffFrequencyCyclesPerMicrometer: number;
|
|
87
|
+
/** 1.21967·λ·N_w, µm. */
|
|
88
|
+
firstZeroRadiusMicrometers: number;
|
|
89
|
+
/** Σ of the cell energies inside the window before renormalization (of a total of 1). */
|
|
90
|
+
capturedEnergyFraction: number;
|
|
91
|
+
/** 1 − capturedEnergyFraction: the Airy tail energy outside the window, put back by renormalization. */
|
|
92
|
+
truncatedEnergyFraction: number;
|
|
93
|
+
/** Fraction of the renormalized kernel in the centre sample. */
|
|
94
|
+
centreSampleFraction: number;
|
|
95
|
+
}
|
|
96
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# optics/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
|
## AiryDisk
|
|
6
6
|
|
|
@@ -9,8 +9,8 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
9
9
|
```ts
|
|
10
10
|
export interface AiryDisk {
|
|
11
11
|
/**
|
|
12
|
-
* Diameter
|
|
13
|
-
*
|
|
12
|
+
* Diameter of the first dark ring of the diffraction pattern, in
|
|
13
|
+
* micrometres: 2.44 * wavelength * f-number.
|
|
14
14
|
*/
|
|
15
15
|
firstZeroDiameterMicrometers: number;
|
|
16
16
|
}
|
|
@@ -18,11 +18,12 @@ export interface AiryDisk {
|
|
|
18
18
|
|
|
19
19
|
## calculateAiryDisk
|
|
20
20
|
|
|
21
|
-
Calculates the
|
|
21
|
+
Calculates the Airy-disk diameter to the first dark ring for an ideal
|
|
22
|
+
circular aperture.
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
It uses the standard diffraction relation d = 2.44 * lambda * N. This is an
|
|
25
|
+
independent implementation of that relation. It does not model lens
|
|
26
|
+
aberrations or non-circular pupils.
|
|
26
27
|
|
|
27
28
|
```ts
|
|
28
29
|
export function calculateAiryDisk(
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# optics/focus-breathing.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
|
## calculateFocusBreathingFieldOfView
|
|
6
6
|
|
|
7
|
-
Calculates one-axis field of view
|
|
8
|
-
breathing
|
|
7
|
+
Calculates the one-axis field of view under the declared-scale
|
|
8
|
+
focus-breathing model, and reports the ideal thin-lens field of view for
|
|
9
|
+
comparison.
|
|
9
10
|
|
|
10
|
-
A breathingProjectionScale of 1 reproduces the
|
|
11
|
-
|
|
11
|
+
A breathingProjectionScale of 1 reproduces the focus-aware thin-lens field
|
|
12
|
+
of view exactly.
|
|
12
13
|
|
|
13
14
|
```ts
|
|
14
15
|
export function calculateFocusBreathingFieldOfView(
|
|
@@ -35,13 +36,13 @@ export interface CalculateFocusBreathingFieldOfViewInput
|
|
|
35
36
|
Applies a caller-declared focus-breathing projection scale to the ideal
|
|
36
37
|
Gaussian thin-lens projection for one focus state.
|
|
37
38
|
|
|
38
|
-
Photivra does not
|
|
39
|
-
identity
|
|
40
|
-
|
|
39
|
+
Photivra does not guess the scale from focal length, focus distance, lens
|
|
40
|
+
identity or marketing data. A scale of 1 keeps the thin-lens projection
|
|
41
|
+
exactly.
|
|
41
42
|
|
|
42
|
-
This is a generic approximation of
|
|
43
|
-
not a calibrated real-lens model. The physical focal
|
|
44
|
-
|
|
43
|
+
This is a generic approximation of how projection and magnification change
|
|
44
|
+
with focus. It is not a calibrated real-lens model. The physical focal
|
|
45
|
+
length is never changed and stays authoritative.
|
|
45
46
|
|
|
46
47
|
```ts
|
|
47
48
|
export function calculateFocusBreathingProjection(
|
|
@@ -65,14 +66,61 @@ export interface CalculateFocusBreathingProjectionInput {
|
|
|
65
66
|
* Caller-declared projection scale for this focus state, relative to the
|
|
66
67
|
* ideal thin-lens image distance.
|
|
67
68
|
*
|
|
68
|
-
* 1 means no
|
|
69
|
-
*
|
|
70
|
-
*
|
|
69
|
+
* 1 means no breathing beyond the thin-lens model. Values above 1 narrow the
|
|
70
|
+
* framing (more magnification). Values below 1 widen it (less
|
|
71
|
+
* magnification).
|
|
71
72
|
*/
|
|
72
73
|
breathingProjectionScale: number;
|
|
73
74
|
}
|
|
74
75
|
```
|
|
75
76
|
|
|
77
|
+
## calculateGeometricFocusBreathing
|
|
78
|
+
|
|
79
|
+
Focus breathing derived from ideal focusing geometry, instead of a declared scale.
|
|
80
|
+
|
|
81
|
+
- unit-focus: the whole lens moves. u + v = L - hiatus and 1/u + 1/v = 1/f, so
|
|
82
|
+
v = (T - sqrt(T^2 - 4 f T)) / 2, where T = L - hiatus >= 4 f. The field narrows as v grows.
|
|
83
|
+
- fixed-image-distance-internal-focus: an idealised internal-focus lens keeps the rear principal
|
|
84
|
+
plane at v = f_infinity and shortens its focal length to f' = u v / (u + v). The angular field
|
|
85
|
+
at the rear nodal point then stays the same, and the magnification is f_infinity / u.
|
|
86
|
+
Both use paraxial Gaussian optics with the nodal points at the principal planes (unit pupil
|
|
87
|
+
magnification; Greivenkamp, OPTI-502 course notes, University of Arizona, sec. 3 and 5, free. Also
|
|
88
|
+
see: Kingslake & Johnson, Lens Design Fundamentals, 2nd ed., ch. 3; Ray, Applied Photographic
|
|
89
|
+
Optics, 3rd ed., ch. 9 and 14). Real internal-focus lenses also move their pupils and
|
|
90
|
+
principal planes, so modelling their breathing needs a calibrated profile.
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
export function calculateGeometricFocusBreathing(
|
|
94
|
+
input: CalculateGeometricFocusBreathingInput
|
|
95
|
+
): CalculationResult<GeometricFocusBreathing>;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
This call is synchronous; any supplied provider must follow its explicit synchronous contract.
|
|
99
|
+
|
|
100
|
+
## CalculateGeometricFocusBreathingInput
|
|
101
|
+
|
|
102
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
export interface CalculateGeometricFocusBreathingInput {
|
|
106
|
+
/** Focal length at infinity focus, mm. */
|
|
107
|
+
focalLengthMm: number;
|
|
108
|
+
/**
|
|
109
|
+
* Photographic focus distance measured from the subject plane to the sensor (image) plane, in
|
|
110
|
+
* metres, as marked on lens distance scales.
|
|
111
|
+
*/
|
|
112
|
+
subjectToSensorDistanceM: number;
|
|
113
|
+
/** Sensor/capture dimension along the axis of interest, mm. */
|
|
114
|
+
sensorDimensionMm: number;
|
|
115
|
+
focusingMethod: GeometricFocusingMethod;
|
|
116
|
+
/**
|
|
117
|
+
* Signed distance between the front and rear principal planes (the "hiatus"), in mm. Default 0
|
|
118
|
+
* (thin lens). The subject-to-sensor distance is u + hiatus + v.
|
|
119
|
+
*/
|
|
120
|
+
principalPlaneSeparationMm?: number;
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
76
124
|
## FocusBreathingFieldOfView
|
|
77
125
|
|
|
78
126
|
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
@@ -105,8 +153,8 @@ export interface FocusBreathingProjection {
|
|
|
105
153
|
/**
|
|
106
154
|
* Effective projection distance used by the generic breathing model.
|
|
107
155
|
*
|
|
108
|
-
* This is a projection
|
|
109
|
-
* focal length.
|
|
156
|
+
* This is a projection (magnification) parameter. It does not replace the
|
|
157
|
+
* physical focal length.
|
|
110
158
|
*/
|
|
111
159
|
effectiveProjectionDistanceMm: number;
|
|
112
160
|
/** Caller-declared scale relative to ideal thin-lens projection. */
|
|
@@ -117,3 +165,43 @@ export interface FocusBreathingProjection {
|
|
|
117
165
|
effectiveMagnification: number;
|
|
118
166
|
}
|
|
119
167
|
```
|
|
168
|
+
|
|
169
|
+
## GeometricFocusBreathing
|
|
170
|
+
|
|
171
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
export interface GeometricFocusBreathing {
|
|
175
|
+
focusingMethod: GeometricFocusingMethod;
|
|
176
|
+
infinityFocalLengthMm: number;
|
|
177
|
+
/** Focal length of the focused system (changes only for internal focus), mm. */
|
|
178
|
+
effectiveFocalLengthMm: number;
|
|
179
|
+
/** Subject distance from the front principal plane, mm. */
|
|
180
|
+
objectDistanceMm: number;
|
|
181
|
+
/** Rear principal plane to sensor distance (projection distance), mm. */
|
|
182
|
+
imageDistanceMm: number;
|
|
183
|
+
/** Lateral magnification v / u. */
|
|
184
|
+
magnification: number;
|
|
185
|
+
/** v / f_infinity: framing scale relative to infinity focus. */
|
|
186
|
+
projectionScaleRelativeToInfinity: number;
|
|
187
|
+
/**
|
|
188
|
+
* v divided by the ideal thin-lens image distance, at objectDistanceMm, of a lens with the same
|
|
189
|
+
* infinity focal length. Exactly 1 for unit focus. You can pass it as breathingProjectionScale to
|
|
190
|
+
* calculateFocusBreathingProjection() with focusDistanceM = objectDistanceMm / 1000.
|
|
191
|
+
*/
|
|
192
|
+
equivalentBreathingProjectionScale: number;
|
|
193
|
+
fieldOfViewDegrees: number;
|
|
194
|
+
infinityFieldOfViewDegrees: number;
|
|
195
|
+
deltaDegrees: number;
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## GeometricFocusingMethod
|
|
200
|
+
|
|
201
|
+
Ideal focusing geometry for {@link calculateGeometricFocusBreathing}.
|
|
202
|
+
|
|
203
|
+
```ts
|
|
204
|
+
export type GeometricFocusingMethod =
|
|
205
|
+
| "unit-focus"
|
|
206
|
+
| "fixed-image-distance-internal-focus";
|
|
207
|
+
```
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# optics/focus-state.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
|
## calculateFocusPlaneImageDistance
|
|
6
6
|
|
|
7
7
|
Calculates the ideal image-plane distance for an explicit focus state.
|
|
8
8
|
|
|
9
|
-
Finite focus
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
Finite focus uses the existing Gaussian thin-lens calculation, so its
|
|
10
|
+
numbers and provenance are unchanged. Infinity focus gives exactly the
|
|
11
|
+
nominal focal length, with a limiting magnification of zero.
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
14
|
export function calculateFocusPlaneImageDistance(
|
|
@@ -35,10 +35,9 @@ export interface CalculateFocusPlaneImageDistanceInput {
|
|
|
35
35
|
|
|
36
36
|
Explicit ideal focus-plane state.
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
lens principal plane
|
|
40
|
-
|
|
41
|
-
large distance.
|
|
38
|
+
A finite distance is measured along the camera's optical axis, from the
|
|
39
|
+
ideal lens principal plane to the object plane. Infinity is a named state.
|
|
40
|
+
It is never stored as JavaScript Infinity or as a made-up large distance.
|
|
42
41
|
|
|
43
42
|
```ts
|
|
44
43
|
export type FocusPlane =
|
|
@@ -53,9 +52,9 @@ export type FocusPlane =
|
|
|
53
52
|
|
|
54
53
|
## parseFocusPlane
|
|
55
54
|
|
|
56
|
-
Parses an explicit focus-plane state from
|
|
55
|
+
Parses an explicit focus-plane state from untrusted JSON.
|
|
57
56
|
|
|
58
|
-
Missing
|
|
57
|
+
Missing or unknown focus is rejected. It is never read as infinity.
|
|
59
58
|
|
|
60
59
|
```ts
|
|
61
60
|
export function parseFocusPlane(value: unknown): FocusPlane;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# optics/front-of-lens-filter.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
|
## ComposedFrontOfLensFilterTransmission
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
9
9
|
```ts
|
|
10
10
|
export interface ComposedFrontOfLensFilterTransmission {
|
|
11
11
|
schemaVersion:
|
|
12
|
-
|
|
12
|
+
FrontOfLensFilterProfileSchemaVersion;
|
|
13
13
|
wavelengthNanometers: number;
|
|
14
14
|
wavelengthBasis:
|
|
15
15
|
Exclude<
|
|
@@ -28,8 +28,11 @@ export interface ComposedFrontOfLensFilterTransmission {
|
|
|
28
28
|
"not-propagated";
|
|
29
29
|
uncertaintyLimitation: string;
|
|
30
30
|
compositionModel:
|
|
31
|
-
"independent-multiplicative-unpolarized-transmission-no-inter-filter-reflections"
|
|
32
|
-
|
|
31
|
+
| "independent-multiplicative-unpolarized-transmission-no-inter-filter-reflections"
|
|
32
|
+
| "ordered-linear-stokes-mueller-no-inter-filter-reflections";
|
|
33
|
+
polarizationModeled: boolean;
|
|
34
|
+
incidentPolarization: LinearPolarizationState;
|
|
35
|
+
transmittedPolarization: LinearPolarizationState;
|
|
33
36
|
wavelengthChangingBehaviorModeled:
|
|
34
37
|
false;
|
|
35
38
|
lensTransmissionIncluded: false;
|
|
@@ -40,8 +43,9 @@ export interface ComposedFrontOfLensFilterTransmission {
|
|
|
40
43
|
|
|
41
44
|
## composeFrontOfLensFilterTransmission
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
Combines several passive front-of-lens filters at one wavelength, in light-path order, and keeps
|
|
47
|
+
each filter's identity. Without a polarizer the result is the product of the transmissions. With
|
|
48
|
+
one, linear Stokes parameters pass through the Mueller matrices in order.
|
|
45
49
|
|
|
46
50
|
```ts
|
|
47
51
|
export function composeFrontOfLensFilterTransmission(
|
|
@@ -58,6 +62,7 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
58
62
|
|
|
59
63
|
```ts
|
|
60
64
|
export interface ComposeFrontOfLensFilterTransmissionInput {
|
|
65
|
+
/** Filters in light-path order (scene side first). */
|
|
61
66
|
filters:
|
|
62
67
|
readonly FrontOfLensFilterProfile[];
|
|
63
68
|
wavelengthNanometers: number;
|
|
@@ -66,6 +71,8 @@ export interface ComposeFrontOfLensFilterTransmissionInput {
|
|
|
66
71
|
SpectralWavelengthBasis,
|
|
67
72
|
"unspecified"
|
|
68
73
|
>;
|
|
74
|
+
/** Incident scene polarization; omitted means unpolarized. */
|
|
75
|
+
incidentPolarization?: LinearPolarizationState;
|
|
69
76
|
}
|
|
70
77
|
```
|
|
71
78
|
|
|
@@ -78,6 +85,15 @@ FRONT_OF_LENS_FILTER_PROFILE_SCHEMA_VERSION =
|
|
|
78
85
|
"0.1.0" as const
|
|
79
86
|
```
|
|
80
87
|
|
|
88
|
+
## FRONT_OF_LENS_POLARIZER_PROFILE_SCHEMA_VERSION
|
|
89
|
+
|
|
90
|
+
Schema that also allows the `linear-polarizer` transmission kind.
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
FRONT_OF_LENS_POLARIZER_PROFILE_SCHEMA_VERSION =
|
|
94
|
+
"0.2.0" as const
|
|
95
|
+
```
|
|
96
|
+
|
|
81
97
|
## FrontOfLensFilterProfile
|
|
82
98
|
|
|
83
99
|
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
@@ -85,7 +101,7 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
85
101
|
```ts
|
|
86
102
|
export interface FrontOfLensFilterProfile {
|
|
87
103
|
schemaVersion:
|
|
88
|
-
|
|
104
|
+
FrontOfLensFilterProfileSchemaVersion;
|
|
89
105
|
filterId: string;
|
|
90
106
|
profileVersion: string;
|
|
91
107
|
identityScope:
|
|
@@ -106,7 +122,8 @@ export interface FrontOfLensFilterProfile {
|
|
|
106
122
|
FrontOfLensFilterTransmissionModel;
|
|
107
123
|
uncertainty:
|
|
108
124
|
FrontOfLensFilterUncertainty;
|
|
109
|
-
|
|
125
|
+
/** True exactly when the transmission kind is `linear-polarizer` (schema 0.2.0). */
|
|
126
|
+
polarizationModeled: boolean;
|
|
110
127
|
wavelengthChangingBehaviorModeled:
|
|
111
128
|
false;
|
|
112
129
|
evidence: readonly EvidenceProvenance[];
|
|
@@ -114,6 +131,16 @@ export interface FrontOfLensFilterProfile {
|
|
|
114
131
|
}
|
|
115
132
|
```
|
|
116
133
|
|
|
134
|
+
## FrontOfLensFilterProfileSchemaVersion
|
|
135
|
+
|
|
136
|
+
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
export type FrontOfLensFilterProfileSchemaVersion =
|
|
140
|
+
| typeof FRONT_OF_LENS_FILTER_PROFILE_SCHEMA_VERSION
|
|
141
|
+
| typeof FRONT_OF_LENS_POLARIZER_PROFILE_SCHEMA_VERSION;
|
|
142
|
+
```
|
|
143
|
+
|
|
117
144
|
## FrontOfLensFilterScientificStatus
|
|
118
145
|
|
|
119
146
|
The exact contract is declared below; use the domain guide for assumptions and staged integration.
|
|
@@ -157,6 +184,18 @@ export type FrontOfLensFilterTransmissionModel =
|
|
|
157
184
|
EvidenceBackedFact<
|
|
158
185
|
readonly FrontOfLensFilterSpectralSample[]
|
|
159
186
|
>;
|
|
187
|
+
}
|
|
188
|
+
| {
|
|
189
|
+
/** Schema 0.2.0 only. Neutral (wavelength-independent) within the declared range. */
|
|
190
|
+
kind: "linear-polarizer";
|
|
191
|
+
/** k1: intensity transmittance for light polarized along the transmission axis, (0, 1]. */
|
|
192
|
+
principalTransmittance:
|
|
193
|
+
EvidenceBackedFact<number>;
|
|
194
|
+
/** k1 / k2. Finite and >= 1. Use a large finite ratio for a near-ideal polarizer. */
|
|
195
|
+
extinctionRatio:
|
|
196
|
+
EvidenceBackedFact<number>;
|
|
197
|
+
/** Transmission-axis angle as mounted, degrees counter-clockwise from image +X. */
|
|
198
|
+
transmissionAxisDegrees: number;
|
|
160
199
|
};
|
|
161
200
|
```
|
|
162
201
|
|
|
@@ -177,14 +216,27 @@ export type FrontOfLensFilterUncertainty =
|
|
|
177
216
|
};
|
|
178
217
|
```
|
|
179
218
|
|
|
219
|
+
## LinearPolarizationState
|
|
220
|
+
|
|
221
|
+
Partially linearly polarized light: degree P in [0, 1] and polarization angle psi.
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
export interface LinearPolarizationState {
|
|
225
|
+
/** Degree of linear polarization P in [0, 1]; 0 is unpolarized. */
|
|
226
|
+
degreeOfLinearPolarization: number;
|
|
227
|
+
/** Electric-field polarization angle, degrees counter-clockwise from image +X. */
|
|
228
|
+
angleDegrees: number;
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
180
232
|
## parseFrontOfLensFilterProfile
|
|
181
233
|
|
|
182
234
|
Parses one generic front-of-lens transmission filter.
|
|
183
235
|
|
|
184
236
|
Schema 0.1.0 is explicitly unbranded and unpolarized. It models only
|
|
185
|
-
passive transmission
|
|
186
|
-
filters, polarization, flare
|
|
187
|
-
|
|
237
|
+
passive transmission in front of the lens. It does not cover reflections
|
|
238
|
+
between stacked filters, polarization, flare or ghosting, or filters that
|
|
239
|
+
change wavelength.
|
|
188
240
|
|
|
189
241
|
```ts
|
|
190
242
|
export function parseFrontOfLensFilterProfile(
|
|
@@ -201,7 +253,7 @@ The exact contract is declared below; use the domain guide for assumptions and s
|
|
|
201
253
|
```ts
|
|
202
254
|
export interface ResolvedFrontOfLensFilterTransmission {
|
|
203
255
|
schemaVersion:
|
|
204
|
-
|
|
256
|
+
FrontOfLensFilterProfileSchemaVersion;
|
|
205
257
|
filterId: string;
|
|
206
258
|
profileVersion: string;
|
|
207
259
|
identityScope:
|
|
@@ -217,10 +269,13 @@ export interface ResolvedFrontOfLensFilterTransmission {
|
|
|
217
269
|
>;
|
|
218
270
|
transmissionKind:
|
|
219
271
|
FrontOfLensFilterTransmissionModel["kind"];
|
|
272
|
+
/** Intensity transmittance for the declared incident polarization. */
|
|
220
273
|
linearTransmissionFactor: number;
|
|
221
274
|
attenuationStops: number;
|
|
222
275
|
opticalDensityBase10: number;
|
|
223
|
-
polarizationModeled:
|
|
276
|
+
polarizationModeled: boolean;
|
|
277
|
+
incidentPolarization: LinearPolarizationState;
|
|
278
|
+
transmittedPolarization: LinearPolarizationState;
|
|
224
279
|
wavelengthChangingBehaviorModeled:
|
|
225
280
|
false;
|
|
226
281
|
lensTransmissionIncluded: false;
|
|
@@ -235,7 +290,8 @@ export interface ResolvedFrontOfLensFilterTransmission {
|
|
|
235
290
|
|
|
236
291
|
## resolveFrontOfLensFilterTransmission
|
|
237
292
|
|
|
238
|
-
Resolves one passive filter at one wavelength.
|
|
293
|
+
Resolves one passive filter at one wavelength. Non-polarizing filters scale all Stokes
|
|
294
|
+
components equally, so their transmission does not depend on the incident polarization.
|
|
239
295
|
|
|
240
296
|
```ts
|
|
241
297
|
export function resolveFrontOfLensFilterTransmission(
|
|
@@ -259,5 +315,7 @@ export interface ResolveFrontOfLensFilterTransmissionInput {
|
|
|
259
315
|
SpectralWavelengthBasis,
|
|
260
316
|
"unspecified"
|
|
261
317
|
>;
|
|
318
|
+
/** Incident polarization; omitted means unpolarized. */
|
|
319
|
+
incidentPolarization?: LinearPolarizationState;
|
|
262
320
|
}
|
|
263
321
|
```
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# optics/illumination-vignetting.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
|
## calculateIlluminationVignetting
|
|
6
6
|
|
|
7
|
-
Calculates generic
|
|
8
|
-
linear
|
|
7
|
+
Calculates generic illumination falloff across the image (vignetting) as a
|
|
8
|
+
factor that multiplies linear light.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
positive and never exceeds the optical
|
|
12
|
-
|
|
10
|
+
A profile is accepted only if its relative throughput stays strictly
|
|
11
|
+
positive and never exceeds 1 (the value on the optical axis) anywhere in
|
|
12
|
+
its declared range.
|
|
13
13
|
|
|
14
14
|
```ts
|
|
15
15
|
export function calculateIlluminationVignetting(
|
|
@@ -28,8 +28,8 @@ export interface CalculateIlluminationVignettingInput {
|
|
|
28
28
|
/**
|
|
29
29
|
* Ideal image-plane field position relative to the optical axis, in mm.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Throughput is evaluated at this ideal field coordinate. Geometric
|
|
32
|
+
* distortion is neither applied nor inverted.
|
|
33
33
|
*/
|
|
34
34
|
imagePointMm: LensFieldPointMm;
|
|
35
35
|
profile: IlluminationVignettingProfile;
|
|
@@ -45,9 +45,9 @@ export interface IlluminationVignetting {
|
|
|
45
45
|
imagePointMm: LensFieldPointMm;
|
|
46
46
|
normalizedRadius: number;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* Factor that multiplies scene-linear or channel-linear signal.
|
|
49
49
|
*
|
|
50
|
-
* 1 means no attenuation
|
|
50
|
+
* 1 means no attenuation. Values must stay in (0, 1].
|
|
51
51
|
*/
|
|
52
52
|
linearThroughputFactor: number;
|
|
53
53
|
/** Positive exposure loss relative to the optical axis, in stops. */
|