@photivra/engine 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +401 -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 +118 -5
- package/dist/capture/native-raw-development.js +224 -59
- 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 +67 -10
- package/dist/capture/native-raw.js +90 -24
- 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/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -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 +284 -0
- package/dist/facade/simulate-capture.js +1026 -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 +89 -25
- package/dist/index.js +59 -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.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 +761 -2
- package/docs/QUICK_START.md +495 -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 -4
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +23 -8
- 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 +2213 -8
- 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 +324 -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.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 -12
- 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/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 -47
- 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_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/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/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,8 +1,10 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* SDR (standard dynamic range) output from a simulated capture with lens corrections applied.
|
|
4
|
+
*
|
|
5
|
+
* Pipeline: committed capture → colour and white balance (WB) → lens correction in native sensor
|
|
6
|
+
* coordinates → oriented output view → SDR rendering. It produces a derived view only; the
|
|
7
|
+
* capture's physical geometry is unchanged.
|
|
6
8
|
* @see docs/PROCESSED_OUTPUT.md for equations, coordinate/unit conventions, blockers and support
|
|
7
9
|
* limits.
|
|
8
10
|
*/
|
|
@@ -20,13 +22,16 @@ export const CAPTURE_CORRECTED_SDR_SCHEMA_VERSION = "0.1.0";
|
|
|
20
22
|
function fields(value, allowed) {
|
|
21
23
|
return requireAllowlistedRecord(value, allowed, "Invalid capture correction fields.");
|
|
22
24
|
}
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Strictly parses untrusted input. Running the calculation also checks the capture's optics,
|
|
27
|
+
* native pixel-grid binding and source history.
|
|
28
|
+
*/
|
|
24
29
|
export function parseCaptureCorrectedSdrInput(input) {
|
|
25
30
|
const r = fields(input, ["capture", "sourcePlaneId", "color", "profile", "correction"]);
|
|
26
31
|
const base = parseCaptureSdrInput({ capture: r.capture, sourcePlaneId: r.sourcePlaneId, color: r.color, profile: r.profile });
|
|
27
32
|
return { ...base, correction: parseCaptureCorrectionChoice(r.correction, base.capture, base.color.kind === "transform" ? [base.color.outputImageStateId] : []) };
|
|
28
33
|
}
|
|
29
|
-
/** Internal
|
|
34
|
+
/** Internal: validates the correction choice for exporters that start from a capture. It neither creates nor checks pixel values. */
|
|
30
35
|
export function parseCaptureCorrectionChoice(input, capture, forbiddenImageStateIds = []) {
|
|
31
36
|
const c = fields(input, ["profile", "state", "coordinateFrame", "selections", "selectionKind", "frameTimeSeconds",
|
|
32
37
|
"resampler", "clippingLevel", "invalidSupport", "outputImageStateId"]);
|
|
@@ -69,7 +74,7 @@ function nativeRaster(bounds, width, height, orientation) {
|
|
|
69
74
|
return { width: w, height: h, pitchMm: pitchX,
|
|
70
75
|
centerMm: { x: (Math.min(...x) + Math.max(...x)) / 2, y: (Math.min(...y) + Math.max(...y)) / 2 } };
|
|
71
76
|
}
|
|
72
|
-
/**
|
|
77
|
+
/** Reorders pixel indices for a quarter-turn orientation, using the capture geometry functions. This is an exact reorder, not another resampling pass. */
|
|
73
78
|
function orientedIndices(raster, orientation, orientedWidth) {
|
|
74
79
|
return Array.from({ length: raster.width * raster.height }, (_, i) => {
|
|
75
80
|
const p = transformNativeRasterPointToOriented({ point: { x: i % raster.width + .5, y: Math.floor(i / raster.width) + .5 },
|
|
@@ -77,7 +82,10 @@ function orientedIndices(raster, orientation, orientedWidth) {
|
|
|
77
82
|
return Math.floor(p.y) * orientedWidth + Math.floor(p.x);
|
|
78
83
|
});
|
|
79
84
|
}
|
|
80
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Runs a bounded committed capture through colour/WB → native lens correction → oriented output
|
|
87
|
+
* view → SDR. No physical simulation stage is run.
|
|
88
|
+
*/
|
|
81
89
|
export function calculateCaptureCorrectedSdr(input) {
|
|
82
90
|
const v = parseCaptureCorrectedSdrInput(input), c = v.correction;
|
|
83
91
|
const { value, source, plane, color, applied } = prepareCaptureSdrSource({
|
|
@@ -101,7 +109,7 @@ export function calculateCaptureCorrectedSdr(input) {
|
|
|
101
109
|
const samples = plane.storage.samples, sourceIndices = orientedIndices(src, orientation, plane.pixelWidth);
|
|
102
110
|
const channels = { red: sourceIndices.map((i) => samples[3 * i]), green: sourceIndices.map((i) => samples[3 * i + 1]),
|
|
103
111
|
blue: sourceIndices.map((i) => samples[3 * i + 2]) };
|
|
104
|
-
//
|
|
112
|
+
// The engine's projection model supplies the finite focus distance. Never substitute scene-clock time or focal length for it.
|
|
105
113
|
const projection = calculateFieldOfView({ focalLengthMm: capture.exposure.focalLengthMm,
|
|
106
114
|
sensorDimensionMm: g.activeCapture.imagingArea.widthMm, focusDistanceM: c.state.focusDistanceM });
|
|
107
115
|
const correction = calculateLensCorrectedCapture({ plan: plan.value, capture: { state: c.state,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-corrected-sdr.js","sourceRoot":"","sources":["../../src/output/capture-corrected-sdr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capture-corrected-sdr.js","sourceRoot":"","sources":["../../src/output/capture-corrected-sdr.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * SDR (standard dynamic range) output from a simulated capture with lens corrections applied.\n *\n * Pipeline: committed capture → colour and white balance (WB) → lens correction in native sensor\n * coordinates → oriented output view → SDR rendering. It produces a derived view only; the\n * capture's physical geometry is unchanged.\n * @see docs/PROCESSED_OUTPUT.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { requireAllowlistedRecord, isPublicOpaqueId } from \"../core/record-validation.js\";\nimport { approximationResult, type CalculationResult } from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport { calculateFieldOfView } from \"../camera/field-of-view.js\";\nimport { parseOpticalProfileState, type OpticalProfileState } from \"../optics/profile-contract.js\";\nimport { prepareCaptureSdrSource, parseCaptureSdrInput, type CaptureSdrInput, type CaptureSdrResult } from \"./capture-sdr.js\";\nimport { resolveLensCorrectionPlan, calculateLensCorrectedCapture, parseGenericLensCorrectionProfile,\n type GenericLensCorrectionProfile, type ResolvedLensCorrectionPlan } from \"./lens-corrections.js\";\nimport { calculateValidSourceCrop, type GeometricRaster, type GeometricResampler } from \"./geometric-transforms.js\";\nimport { mapOrientedPhysicalUvToImagePlanePoint, transformNativeRasterPointToOriented,\n type PhysicalBoundsFromOpticalAxisMm, type RasterRect, type CaptureOrientation } from \"./capture-geometry.js\";\nimport { calculateSdrRendering } from \"./sdr-rendering.js\";\n\nexport const CAPTURE_CORRECTED_SDR_SCHEMA_VERSION = \"0.1.0\" as const;\n/**\n * Input: a capture plus an explicit lens-correction choice in native optical coordinates. Camera\n * body, lens and mode identities are taken as the capture producer declared them.\n */\nexport interface CaptureCorrectedSdrInput extends CaptureSdrInput {\n correction: {\n profile: GenericLensCorrectionProfile;\n state: OpticalProfileState;\n /** Native optical coordinates (+X right, +Y up), in the RGB space after the selected colour/WB step. */\n coordinateFrame: \"native-optical-linear-srgb-d65\";\n selections: Readonly<Record<string, \"on\" | \"off\" | \"auto\">>;\n selectionKind: ResolvedLensCorrectionPlan[\"selectionKind\"];\n /** Seconds from exposure start, not the capture's scene-clock time. */\n frameTimeSeconds: number;\n resampler: GeometricResampler;\n clippingLevel: number;\n invalidSupport: \"reject\" | \"joint-valid-crop\";\n outputImageStateId: string;\n };\n}\n/** A derived output view. It never replaces the committed capture's physical geometry. */\nexport interface CaptureCorrectedSdrResult extends Omit<CaptureSdrResult, \"schemaVersion\"> {\n schemaVersion: typeof CAPTURE_CORRECTED_SDR_SCHEMA_VERSION;\n sceneTimeSeconds: number;\n plan: CalculationResult<ResolvedLensCorrectionPlan>;\n correction: ReturnType<typeof calculateLensCorrectedCapture>;\n projection: ReturnType<typeof calculateFieldOfView>;\n /** Valid-source mask over the full oriented output. The nested correction plans still use native optical coordinates. */\n validSourceMask: readonly boolean[];\n outputView: { imageStateId: string; rect: RasterRect; pixelWidth: number; pixelHeight: number; samples: readonly number[] };\n}\nfunction fields(value: unknown, allowed: readonly string[]): Record<string, unknown> {\n return requireAllowlistedRecord(value, allowed, \"Invalid capture correction fields.\");\n}\n/**\n * Strictly parses untrusted input. Running the calculation also checks the capture's optics,\n * native pixel-grid binding and source history.\n */\nexport function parseCaptureCorrectedSdrInput(input: unknown): CaptureCorrectedSdrInput {\n const r = fields(input, [\"capture\", \"sourcePlaneId\", \"color\", \"profile\", \"correction\"]);\n const base = parseCaptureSdrInput({ capture: r.capture, sourcePlaneId: r.sourcePlaneId, color: r.color, profile: r.profile });\n return { ...base, correction: parseCaptureCorrectionChoice(r.correction, base.capture,\n base.color.kind === \"transform\" ? [base.color.outputImageStateId] : []) };\n}\n/** Internal: validates the correction choice for exporters that start from a capture. It neither creates nor checks pixel values. */\nexport function parseCaptureCorrectionChoice(input: unknown, capture: CaptureSdrInput[\"capture\"],\n forbiddenImageStateIds: readonly string[] = []): CaptureCorrectedSdrInput[\"correction\"] {\n const c = fields(input, [\"profile\", \"state\", \"coordinateFrame\", \"selections\", \"selectionKind\", \"frameTimeSeconds\",\n \"resampler\", \"clippingLevel\", \"invalidSupport\", \"outputImageStateId\"]);\n const profile = parseGenericLensCorrectionProfile(c.profile), state = parseOpticalProfileState(c.state);\n const selections = fields(c.selections, profile.components.map((v) => v.id));\n if (Object.values(selections).some((v) => v !== \"on\" && v !== \"off\" && v !== \"auto\") ||\n c.coordinateFrame !== \"native-optical-linear-srgb-d65\" ||\n (c.selectionKind !== \"camera-selectable\" && c.selectionKind !== \"reference-bypass\") ||\n (c.invalidSupport !== \"reject\" && c.invalidSupport !== \"joint-valid-crop\") ||\n typeof c.frameTimeSeconds !== \"number\" || !Number.isFinite(c.frameTimeSeconds) || c.frameTimeSeconds < 0 ||\n typeof c.clippingLevel !== \"number\" || !Number.isFinite(c.clippingLevel) || c.clippingLevel <= 0 ||\n !isPublicOpaqueId(c.outputImageStateId) ||\n capture.planes.some((p) => p.imageStateId === c.outputImageStateId) ||\n forbiddenImageStateIds.includes(c.outputImageStateId)) {\n throw new InvalidConfigurationError(\"Invalid correction choice, clock, threshold or derived state identity.\");\n }\n const s = fields(c.resampler, [\"id\", \"version\", \"filter\", \"antialias\"]);\n if (typeof s.id !== \"string\" || !s.id.trim() || typeof s.version !== \"string\" || !s.version.trim() ||\n (s.filter !== \"nearest\" && s.filter !== \"bilinear\") || (s.antialias !== \"none\" && s.antialias !== \"source-prefiltered\")) {\n throw new InvalidConfigurationError(\"Invalid correction resampler.\");\n }\n resolveLensCorrectionPlan({ profile, state, selections: selections as CaptureCorrectedSdrInput[\"correction\"][\"selections\"],\n outputKind: \"processed\", selectionKind: c.selectionKind });\n return { profile, state, coordinateFrame: c.coordinateFrame,\n selections: selections as CaptureCorrectedSdrInput[\"correction\"][\"selections\"], selectionKind: c.selectionKind,\n frameTimeSeconds: c.frameTimeSeconds, clippingLevel: c.clippingLevel, invalidSupport: c.invalidSupport,\n outputImageStateId: c.outputImageStateId, resampler: { id: s.id, version: s.version, filter: s.filter, antialias: s.antialias } };\n}\nfunction nativeRaster(bounds: PhysicalBoundsFromOpticalAxisMm, width: number, height: number,\n orientation: CaptureOrientation): GeometricRaster {\n const corners = [0, 1].flatMap((u) => [0, 1].map((v) => mapOrientedPhysicalUvToImagePlanePoint({\n uv: { u, v }, orientation, orientedPhysicalBoundsFromOpticalAxisMm: bounds })));\n const x = corners.map((p) => p.x), y = corners.map((p) => p.y);\n const quarter = orientation === \"portrait-clockwise\" || orientation === \"portrait-counter-clockwise\";\n const w = quarter ? height : width, h = quarter ? width : height;\n const pitchX = (Math.max(...x)-Math.min(...x))/w, pitchY = (Math.max(...y)-Math.min(...y))/h;\n if (Math.abs(pitchX-pitchY) > 1e-12*Math.max(pitchX, pitchY)) {\n throw new InvalidConfigurationError(\"Correction executor requires square physical pixel pitch; no implicit stretching.\");\n }\n return { width: w, height: h, pitchMm: pitchX,\n centerMm: { x: (Math.min(...x)+Math.max(...x))/2, y: (Math.min(...y)+Math.max(...y))/2 } };\n}\n/** Reorders pixel indices for a quarter-turn orientation, using the capture geometry functions. This is an exact reorder, not another resampling pass. */\nfunction orientedIndices(raster: GeometricRaster, orientation: CaptureOrientation, orientedWidth: number): number[] {\n return Array.from({ length: raster.width*raster.height }, (_, i): number => {\n const p = transformNativeRasterPointToOriented({ point: { x: i%raster.width+.5, y: Math.floor(i/raster.width)+.5 },\n nativeRaster: { pixelWidth: raster.width, pixelHeight: raster.height }, orientation });\n return Math.floor(p.y)*orientedWidth+Math.floor(p.x);\n });\n}\n/**\n * Runs a bounded committed capture through colour/WB → native lens correction → oriented output\n * view → SDR. No physical simulation stage is run.\n */\nexport function calculateCaptureCorrectedSdr(input: CaptureCorrectedSdrInput): CalculationResult<CaptureCorrectedSdrResult> {\n const v = parseCaptureCorrectedSdrInput(input), c = v.correction;\n const { value, source, plane, color, applied } = prepareCaptureSdrSource({\n capture: v.capture, sourcePlaneId: v.sourcePlaneId, color: v.color, profile: v.profile });\n if (plane.storage.kind !== \"inline-float64\" || plane.pixelWidth*plane.pixelHeight > 65536 ||\n plane.appliedTransforms.some((t) => t.kind === \"digital-lens-correction\")) {\n throw new InvalidConfigurationError(\"Requires bounded inline RGB without prior digital lens correction; no implicit loading or double correction.\");\n }\n const capture = value.capture, g = capture.resolvedGeometry, orientation = g.orientedCapture.orientation;\n const sourceBounds = plane.rasterBinding === \"output\" ? g.output.physicalBoundsFromOpticalAxisMm : g.orientedCapture.physicalBoundsFromOpticalAxisMm;\n const src = nativeRaster(sourceBounds, plane.pixelWidth, plane.pixelHeight, orientation);\n const dst = nativeRaster(g.output.physicalBoundsFromOpticalAxisMm, g.output.raster.pixelWidth, g.output.raster.pixelHeight, orientation);\n if (c.state.focalLengthMm !== capture.exposure.focalLengthMm || c.state.aperture !== capture.exposure.aperture ||\n capture.focus.kind !== \"finite\" || c.state.focusDistanceM !== capture.focus.distanceM ||\n c.state.outputWidth !== dst.width || c.state.outputHeight !== dst.height || c.frameTimeSeconds > capture.exposure.shutterSeconds) {\n throw new InvalidConfigurationError(\"Correction state differs from committed optics/native output raster or local exposure interval.\");\n }\n const plan = resolveLensCorrectionPlan({ profile: c.profile, state: c.state, selections: c.selections,\n selectionKind: c.selectionKind, outputKind: \"processed\" });\n const samples = plane.storage.samples, sourceIndices = orientedIndices(src, orientation, plane.pixelWidth);\n const channels = { red: sourceIndices.map((i) => samples[3*i]!), green: sourceIndices.map((i) => samples[3*i+1]!),\n blue: sourceIndices.map((i) => samples[3*i+2]!) };\n // The engine's projection model supplies the finite focus distance. Never substitute scene-clock time or focal length for it.\n const projection = calculateFieldOfView({ focalLengthMm: capture.exposure.focalLengthMm,\n sensorDimensionMm: g.activeCapture.imagingArea.widthMm, focusDistanceM: c.state.focusDistanceM });\n const correction = calculateLensCorrectedCapture({ plan: plan.value, capture: { state: c.state,\n captureId: capture.captureId, noiseRealizationId: capture.noise.realizationId, timeSeconds: c.frameTimeSeconds, raster: src, channels },\n destinationRaster: dst, resampler: c.resampler, clippingLevel: c.clippingLevel,\n physicalProjectionDistanceMm: projection.value.projectionDistanceMm });\n const width = g.output.raster.pixelWidth, height = g.output.raster.pixelHeight;\n const indices = orientedIndices(dst, orientation, width), mask = Array<boolean>(width*height).fill(false);\n const rgb = Array<number | null>(width*height*3).fill(null);\n indices.forEach((index, i) => {\n mask[index] = correction.value.validSourceMask[i]!;\n rgb[3*index] = correction.value.channels.red[i]!;\n rgb[3*index+1] = correction.value.channels.green[i]!;\n rgb[3*index+2] = correction.value.channels.blue[i]!;\n });\n if (c.invalidSupport === \"reject\" && mask.some((valid) => !valid)) throw new InvalidConfigurationError(\"Corrected output has unavailable channel support.\");\n const rect = c.invalidSupport === \"reject\" ? { x: 0, y: 0, width, height } : calculateValidSourceCrop(mask, width, height);\n if (rect === null) throw new InvalidConfigurationError(\"No joint-valid corrected output crop.\");\n const outputSamples: number[] = [];\n for (let y = rect.y; y < rect.y+rect.height; y++) for (let x = rect.x; x < rect.x+rect.width; x++) {\n const offset = 3*(y*width+x);\n outputSamples.push(rgb[offset]!, rgb[offset+1]!, rgb[offset+2]!);\n }\n const rendering = calculateSdrRendering({ sourceImageStateId: c.outputImageStateId,\n inputImageState: \"color-transformed-linear-rgb\", inputColorSpace: \"linear-srgb-d65\",\n whiteBalanceHandling: applied ? \"already-applied-upstream\" : \"not-required\", pixelWidth: rect.width, pixelHeight: rect.height,\n referenceWhiteValue: plane.referenceWhiteValue, samples: outputSamples, profile: value.profile });\n return approximationResult({ schemaVersion: CAPTURE_CORRECTED_SDR_SCHEMA_VERSION, captureId: capture.captureId,\n sourcePlaneId: source.id, sourceImageStateId: source.imageStateId, rasterBinding: source.rasterBinding,\n sourceCaptureSaturation: source.captureSaturation, sourceDynamicRangeHistory: capture.source.dynamicRangeHistory,\n noiseRealizationId: capture.noise.realizationId, sceneTimeSeconds: capture.sceneTimeSeconds,\n whiteBalance: applied ? color ? \"applied-here\" : \"already-applied-upstream\" : \"not-required\",\n color, plan, correction, projection, validSourceMask: mask,\n outputView: { imageStateId: c.outputImageStateId, rect, pixelWidth: rect.width, pixelHeight: rect.height, samples: outputSamples }, rendering },\n \"capture-corrected-sdr-adapter\", CAPTURE_CORRECTED_SDR_SCHEMA_VERSION, [\n \"Generic corrections are explicitly declared for native optical coordinates and the post-color/WB linear-sRGB basis\",\n \"Body/lens identity, acquisition mode, stabilization and prefilter adequacy remain producer declarations, not verified calibration\",\n \"Quarter-turn permutations reuse capture geometry; crop never rewrites physical capture or focal equivalence\",\n \"Gain clipping events, upstream saturation and SDR gamut clipping remain distinct; no covariance/noise regeneration\",\n \"Bounded reference integration only; no production-plan activation, RAW correction bake, streaming or external IO\"]);\n}\n"]}
|
|
@@ -34,9 +34,9 @@ export interface NormalizedRasterUv {
|
|
|
34
34
|
v: number;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* A point on the optical image plane, in millimetres, before camera orientation is applied.
|
|
38
38
|
*
|
|
39
|
-
*
|
|
39
|
+
* The origin is the optical axis. +X points right and +Y points up.
|
|
40
40
|
*/
|
|
41
41
|
export interface ImagePlaneMetricPointMm {
|
|
42
42
|
x: number;
|
|
@@ -71,16 +71,16 @@ export interface ResolveCaptureGeometryInput {
|
|
|
71
71
|
*/
|
|
72
72
|
activeCaptureRect?: RasterRect;
|
|
73
73
|
/**
|
|
74
|
-
* Final digital
|
|
74
|
+
* Final digital (output) crop, in oriented active-capture pixel coordinates.
|
|
75
75
|
*
|
|
76
76
|
* Defaults to the full oriented active capture.
|
|
77
77
|
*/
|
|
78
78
|
outputCropRect?: RasterRect;
|
|
79
79
|
/**
|
|
80
|
-
* Final output
|
|
80
|
+
* Final output image size after the optional digital crop and resampling.
|
|
81
81
|
*
|
|
82
|
-
* Defaults to the output-crop
|
|
83
|
-
*
|
|
82
|
+
* Defaults to the output-crop size. The output must keep the crop's aspect
|
|
83
|
+
* ratio, allowing only a small tolerance for integer rounding.
|
|
84
84
|
*/
|
|
85
85
|
outputRaster?: RasterDimensions;
|
|
86
86
|
}
|
|
@@ -104,7 +104,7 @@ export interface ResolvedCaptureGeometry {
|
|
|
104
104
|
/** Native physical bounds relative to the optical axis. */
|
|
105
105
|
physicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
107
|
+
* The current generic model assumes the native pixels evenly cover the
|
|
108
108
|
* declared physical imaging area.
|
|
109
109
|
*/
|
|
110
110
|
imagingAreaDerivation: "uniform-native-raster";
|
|
@@ -119,9 +119,9 @@ export interface ResolvedCaptureGeometry {
|
|
|
119
119
|
};
|
|
120
120
|
output: {
|
|
121
121
|
/**
|
|
122
|
-
* Digital
|
|
122
|
+
* Digital (output) crop, in oriented active-capture coordinates.
|
|
123
123
|
*
|
|
124
|
-
* This crop does not
|
|
124
|
+
* This crop does not change the physical sensor or the active-capture
|
|
125
125
|
* geometry.
|
|
126
126
|
*/
|
|
127
127
|
cropRect: RasterRect;
|
|
@@ -131,7 +131,7 @@ export interface ResolvedCaptureGeometry {
|
|
|
131
131
|
physicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
|
|
132
132
|
centerOffsetFromOpticalAxisMm: RasterVector;
|
|
133
133
|
sourceRetainedAreaFraction: number;
|
|
134
|
-
/** Pixel
|
|
134
|
+
/** Pixel resampling from the oriented active capture to the output image. */
|
|
135
135
|
orientedCaptureToOutputScale: {
|
|
136
136
|
x: number;
|
|
137
137
|
y: number;
|
|
@@ -175,8 +175,8 @@ export interface ActiveCaptureFieldOfView {
|
|
|
175
175
|
horizontalDegrees: number;
|
|
176
176
|
verticalDegrees: number;
|
|
177
177
|
/**
|
|
178
|
-
*
|
|
179
|
-
*
|
|
178
|
+
* The larger of the two corner-to-corner diagonal angles. For a centred
|
|
179
|
+
* crop the two diagonals are equal.
|
|
180
180
|
*/
|
|
181
181
|
diagonalDegrees: number;
|
|
182
182
|
horizontalBoundsDegrees: {
|
|
@@ -223,34 +223,33 @@ export interface OutputFieldOfView {
|
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
/**
|
|
226
|
-
*
|
|
227
|
-
*
|
|
226
|
+
* Converts a point in native pixel coordinates to oriented capture coordinates.
|
|
227
|
+
* Coordinates are continuous and measured from pixel edges, so a pixel centre is at +0.5.
|
|
228
228
|
*/
|
|
229
229
|
export declare function transformNativeRasterPointToOriented(input: TransformRasterPointInput): RasterPoint;
|
|
230
|
-
/**
|
|
230
|
+
/** Converts a point in oriented pixel coordinates (measured from pixel edges) back to native coordinates. */
|
|
231
231
|
export declare function transformOrientedRasterPointToNative(input: TransformRasterPointInput): RasterPoint;
|
|
232
232
|
/** Rotates a native raster vector into oriented coordinates. */
|
|
233
233
|
export declare function transformNativeRasterVectorToOriented(input: TransformRasterVectorInput): RasterVector;
|
|
234
234
|
/** Rotates an oriented raster vector back into native coordinates. */
|
|
235
235
|
export declare function transformOrientedRasterVectorToNative(input: TransformRasterVectorInput): RasterVector;
|
|
236
236
|
/**
|
|
237
|
-
* Maps normalized coordinates in an oriented physical
|
|
238
|
-
*
|
|
239
|
-
*
|
|
237
|
+
* Maps normalized (0–1) coordinates in an oriented physical image region to the
|
|
238
|
+
* optical image plane used by the lens-field and camera-mapping APIs, before
|
|
239
|
+
* camera orientation.
|
|
240
240
|
*
|
|
241
|
-
* The
|
|
242
|
-
*
|
|
243
|
-
*
|
|
241
|
+
* The input bounds are after camera orientation and use +Y down. The returned
|
|
242
|
+
* point has its origin on the optical axis, with +X right and +Y up. No lens or
|
|
243
|
+
* projection equation is applied.
|
|
244
244
|
*/
|
|
245
245
|
export declare function mapOrientedPhysicalUvToImagePlanePoint(input: MapOrientedPhysicalUvToImagePlaneInput): ImagePlaneMetricPointMm;
|
|
246
246
|
/**
|
|
247
|
-
* Maps
|
|
248
|
-
*
|
|
247
|
+
* Maps an optical image-plane point (before camera orientation) to normalized
|
|
248
|
+
* coordinates in an oriented physical image region.
|
|
249
249
|
*
|
|
250
|
-
* This is the exact
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
* an edge.
|
|
250
|
+
* This is the exact inverse of mapOrientedPhysicalUvToImagePlanePoint(). A point
|
|
251
|
+
* outside the region is rejected. A tiny tolerance only absorbs floating-point
|
|
252
|
+
* round-trip error at an edge.
|
|
254
253
|
*/
|
|
255
254
|
export declare function mapImagePlanePointToOrientedPhysicalUv(input: MapImagePlanePointToOrientedPhysicalUvInput): NormalizedRasterUv;
|
|
256
255
|
/** Transforms an integer half-open native raster rectangle into oriented coordinates. */
|
|
@@ -258,21 +257,20 @@ export declare function transformNativeRasterRectToOriented(input: TransformRast
|
|
|
258
257
|
/** Transforms an oriented integer half-open rectangle back to native coordinates. */
|
|
259
258
|
export declare function transformOrientedRasterRectToNative(input: TransformRasterRectInput): RasterRect;
|
|
260
259
|
/**
|
|
261
|
-
* Resolves native sensor geometry, active capture, physical camera orientation
|
|
262
|
-
* and final digital
|
|
260
|
+
* Resolves native sensor geometry, active capture area, physical camera orientation
|
|
261
|
+
* and final digital (output) geometry, keeping each one distinct.
|
|
263
262
|
*/
|
|
264
263
|
export declare function resolveCaptureGeometry(input: ResolveCaptureGeometryInput): CalculationResult<ResolvedCaptureGeometry>;
|
|
265
264
|
/**
|
|
266
|
-
* Calculates
|
|
267
|
-
*
|
|
265
|
+
* Calculates the field of view (FOV) of the active physical capture area after
|
|
266
|
+
* camera orientation. Horizontal and vertical FOV can be asymmetric about the
|
|
267
|
+
* optical axis; both corner-to-corner diagonals are reported.
|
|
268
268
|
*
|
|
269
|
-
*
|
|
269
|
+
* The final digital (output) crop is deliberately not included.
|
|
270
270
|
*/
|
|
271
271
|
export declare function calculateActiveCaptureFieldOfView(input: CalculateActiveCaptureFieldOfViewInput): CalculationResult<ActiveCaptureFieldOfView>;
|
|
272
272
|
/**
|
|
273
|
-
* Calculates final visible field of view after
|
|
274
|
-
* orientation
|
|
275
|
-
* affect this optical/framing result.
|
|
273
|
+
* Calculates the final visible field of view after the active capture area,
|
|
274
|
+
* orientation and digital (output) crop. Output resolution does not affect it.
|
|
276
275
|
*/
|
|
277
276
|
export declare function calculateOutputFieldOfView(input: CalculateOutputFieldOfViewInput): CalculationResult<OutputFieldOfView>;
|
|
278
|
-
//# sourceMappingURL=capture-geometry.d.ts.map
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* Capture geometry: how the native sensor, the active capture area, the camera's physical
|
|
4
|
+
* orientation and the final output crop relate to each other.
|
|
5
|
+
*
|
|
6
|
+
* It converts points, vectors and rectangles between native and oriented pixel coordinates,
|
|
7
|
+
* maps oriented positions to the optical image plane and back, and computes field of view (FOV)
|
|
8
|
+
* for the active capture and the final output.
|
|
7
9
|
* @see docs/PHYSICS_FOUNDATION.md for equations, coordinate/unit conventions, blockers and support
|
|
8
10
|
* limits.
|
|
9
11
|
*/
|
|
@@ -11,6 +13,8 @@ import { calculateFieldOfViewBounds } from "../camera/field-of-view.js";
|
|
|
11
13
|
import { calculatedResult } from "../core/calculation-result.js";
|
|
12
14
|
import { InvalidScientificInputError, requirePositiveFinite, requirePositiveInteger } from "../core/validation.js";
|
|
13
15
|
import {} from "../sensor/sensor-geometry.js";
|
|
16
|
+
import { requireInputKeys, requireInputObject } from "../core/record-validation.js";
|
|
17
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
14
18
|
const CAPTURE_ORIENTATIONS = new Set([
|
|
15
19
|
"landscape",
|
|
16
20
|
"portrait-clockwise",
|
|
@@ -20,10 +24,11 @@ const CAPTURE_ORIENTATIONS = new Set([
|
|
|
20
24
|
function requireCaptureOrientation(value) {
|
|
21
25
|
if (typeof value !== "string" ||
|
|
22
26
|
!CAPTURE_ORIENTATIONS.has(value)) {
|
|
23
|
-
throw new
|
|
27
|
+
throw new InvalidConfigurationError("orientation is invalid.");
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
function requireRasterDimensions(name, raster) {
|
|
31
|
+
requireInputObject(raster, name);
|
|
27
32
|
requirePositiveInteger(`${name}.pixelWidth`, raster.pixelWidth);
|
|
28
33
|
requirePositiveInteger(`${name}.pixelHeight`, raster.pixelHeight);
|
|
29
34
|
}
|
|
@@ -33,6 +38,7 @@ function requireNonNegativeInteger(name, value) {
|
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
40
|
function validateRasterRect(name, rect, bounds) {
|
|
41
|
+
requireInputObject(rect, name);
|
|
36
42
|
requireNonNegativeInteger(`${name}.x`, rect.x);
|
|
37
43
|
requireNonNegativeInteger(`${name}.y`, rect.y);
|
|
38
44
|
requirePositiveInteger(`${name}.width`, rect.width);
|
|
@@ -43,6 +49,7 @@ function validateRasterRect(name, rect, bounds) {
|
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
function validateRasterPoint(name, point, bounds) {
|
|
52
|
+
requireInputObject(point, name);
|
|
46
53
|
if (!Number.isFinite(point.x) || !Number.isFinite(point.y)) {
|
|
47
54
|
throw new InvalidScientificInputError(`${name} coordinates must be finite.`);
|
|
48
55
|
}
|
|
@@ -54,6 +61,7 @@ function validateRasterPoint(name, point, bounds) {
|
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
function validateRasterVector(name, vector) {
|
|
64
|
+
requireInputObject(vector, name);
|
|
57
65
|
if (!Number.isFinite(vector.x) || !Number.isFinite(vector.y)) {
|
|
58
66
|
throw new InvalidScientificInputError(`${name} coordinates must be finite.`);
|
|
59
67
|
}
|
|
@@ -65,6 +73,7 @@ function physicalCoordinateTolerance(value, minimum, maximum) {
|
|
|
65
73
|
return Number.EPSILON * PHYSICAL_EDGE_TOLERANCE_ULPS * scale;
|
|
66
74
|
}
|
|
67
75
|
function validatePhysicalBounds(name, bounds) {
|
|
76
|
+
requireInputObject(bounds, name);
|
|
68
77
|
for (const key of ["left", "right", "top", "bottom"]) {
|
|
69
78
|
if (!Number.isFinite(bounds[key])) {
|
|
70
79
|
throw new InvalidScientificInputError(`${name}.${key} must be finite.`);
|
|
@@ -88,6 +97,7 @@ function validatePhysicalBounds(name, bounds) {
|
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
function validateNormalizedUv(name, uv) {
|
|
100
|
+
requireInputObject(uv, name);
|
|
91
101
|
if (!Number.isFinite(uv.u) || !Number.isFinite(uv.v)) {
|
|
92
102
|
throw new InvalidScientificInputError(`${name} coordinates must be finite.`);
|
|
93
103
|
}
|
|
@@ -152,10 +162,11 @@ function inverseRotateVector(vector, orientation) {
|
|
|
152
162
|
}
|
|
153
163
|
}
|
|
154
164
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
165
|
+
* Converts a point in native pixel coordinates to oriented capture coordinates.
|
|
166
|
+
* Coordinates are continuous and measured from pixel edges, so a pixel centre is at +0.5.
|
|
157
167
|
*/
|
|
158
168
|
export function transformNativeRasterPointToOriented(input) {
|
|
169
|
+
requireInputKeys(input, "transformNativeRasterPointToOriented", ["point", "nativeRaster", "orientation"]);
|
|
159
170
|
requireCaptureOrientation(input.orientation);
|
|
160
171
|
requireRasterDimensions("nativeRaster", input.nativeRaster);
|
|
161
172
|
validateRasterPoint("point", input.point, input.nativeRaster);
|
|
@@ -171,8 +182,9 @@ export function transformNativeRasterPointToOriented(input) {
|
|
|
171
182
|
return { x: input.point.y, y: width - input.point.x };
|
|
172
183
|
}
|
|
173
184
|
}
|
|
174
|
-
/**
|
|
185
|
+
/** Converts a point in oriented pixel coordinates (measured from pixel edges) back to native coordinates. */
|
|
175
186
|
export function transformOrientedRasterPointToNative(input) {
|
|
187
|
+
requireInputKeys(input, "transformOrientedRasterPointToNative", ["point", "nativeRaster", "orientation"]);
|
|
176
188
|
requireCaptureOrientation(input.orientation);
|
|
177
189
|
requireRasterDimensions("nativeRaster", input.nativeRaster);
|
|
178
190
|
const orientedRaster = orientRaster(input.nativeRaster, input.orientation);
|
|
@@ -191,26 +203,29 @@ export function transformOrientedRasterPointToNative(input) {
|
|
|
191
203
|
}
|
|
192
204
|
/** Rotates a native raster vector into oriented coordinates. */
|
|
193
205
|
export function transformNativeRasterVectorToOriented(input) {
|
|
206
|
+
requireInputKeys(input, "transformNativeRasterVectorToOriented", ["vector", "orientation"]);
|
|
194
207
|
requireCaptureOrientation(input.orientation);
|
|
195
208
|
validateRasterVector("vector", input.vector);
|
|
196
209
|
return rotateVector(input.vector, input.orientation);
|
|
197
210
|
}
|
|
198
211
|
/** Rotates an oriented raster vector back into native coordinates. */
|
|
199
212
|
export function transformOrientedRasterVectorToNative(input) {
|
|
213
|
+
requireInputKeys(input, "transformOrientedRasterVectorToNative", ["vector", "orientation"]);
|
|
200
214
|
requireCaptureOrientation(input.orientation);
|
|
201
215
|
validateRasterVector("vector", input.vector);
|
|
202
216
|
return inverseRotateVector(input.vector, input.orientation);
|
|
203
217
|
}
|
|
204
218
|
/**
|
|
205
|
-
* Maps normalized coordinates in an oriented physical
|
|
206
|
-
*
|
|
207
|
-
*
|
|
219
|
+
* Maps normalized (0–1) coordinates in an oriented physical image region to the
|
|
220
|
+
* optical image plane used by the lens-field and camera-mapping APIs, before
|
|
221
|
+
* camera orientation.
|
|
208
222
|
*
|
|
209
|
-
* The
|
|
210
|
-
*
|
|
211
|
-
*
|
|
223
|
+
* The input bounds are after camera orientation and use +Y down. The returned
|
|
224
|
+
* point has its origin on the optical axis, with +X right and +Y up. No lens or
|
|
225
|
+
* projection equation is applied.
|
|
212
226
|
*/
|
|
213
227
|
export function mapOrientedPhysicalUvToImagePlanePoint(input) {
|
|
228
|
+
requireInputKeys(input, "mapOrientedPhysicalUvToImagePlanePoint", ["uv", "orientedPhysicalBoundsFromOpticalAxisMm", "orientation"]);
|
|
214
229
|
requireCaptureOrientation(input.orientation);
|
|
215
230
|
validateNormalizedUv("uv", input.uv);
|
|
216
231
|
validatePhysicalBounds("orientedPhysicalBoundsFromOpticalAxisMm", input.orientedPhysicalBoundsFromOpticalAxisMm);
|
|
@@ -226,15 +241,15 @@ export function mapOrientedPhysicalUvToImagePlanePoint(input) {
|
|
|
226
241
|
};
|
|
227
242
|
}
|
|
228
243
|
/**
|
|
229
|
-
* Maps
|
|
230
|
-
*
|
|
244
|
+
* Maps an optical image-plane point (before camera orientation) to normalized
|
|
245
|
+
* coordinates in an oriented physical image region.
|
|
231
246
|
*
|
|
232
|
-
* This is the exact
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
* an edge.
|
|
247
|
+
* This is the exact inverse of mapOrientedPhysicalUvToImagePlanePoint(). A point
|
|
248
|
+
* outside the region is rejected. A tiny tolerance only absorbs floating-point
|
|
249
|
+
* round-trip error at an edge.
|
|
236
250
|
*/
|
|
237
251
|
export function mapImagePlanePointToOrientedPhysicalUv(input) {
|
|
252
|
+
requireInputKeys(input, "mapImagePlanePointToOrientedPhysicalUv", ["imagePlanePointMm", "orientedPhysicalBoundsFromOpticalAxisMm", "orientation"]);
|
|
238
253
|
requireCaptureOrientation(input.orientation);
|
|
239
254
|
validateRasterVector("imagePlanePointMm", input.imagePlanePointMm);
|
|
240
255
|
validatePhysicalBounds("orientedPhysicalBoundsFromOpticalAxisMm", input.orientedPhysicalBoundsFromOpticalAxisMm);
|
|
@@ -251,6 +266,7 @@ export function mapImagePlanePointToOrientedPhysicalUv(input) {
|
|
|
251
266
|
}
|
|
252
267
|
/** Transforms an integer half-open native raster rectangle into oriented coordinates. */
|
|
253
268
|
export function transformNativeRasterRectToOriented(input) {
|
|
269
|
+
requireInputKeys(input, "transformNativeRasterRectToOriented", ["rect", "nativeRaster", "orientation"]);
|
|
254
270
|
requireCaptureOrientation(input.orientation);
|
|
255
271
|
requireRasterDimensions("nativeRaster", input.nativeRaster);
|
|
256
272
|
validateRasterRect("rect", input.rect, input.nativeRaster);
|
|
@@ -284,6 +300,7 @@ export function transformNativeRasterRectToOriented(input) {
|
|
|
284
300
|
}
|
|
285
301
|
/** Transforms an oriented integer half-open rectangle back to native coordinates. */
|
|
286
302
|
export function transformOrientedRasterRectToNative(input) {
|
|
303
|
+
requireInputKeys(input, "transformOrientedRasterRectToNative", ["rect", "nativeRaster", "orientation"]);
|
|
287
304
|
requireCaptureOrientation(input.orientation);
|
|
288
305
|
requireRasterDimensions("nativeRaster", input.nativeRaster);
|
|
289
306
|
const orientedRaster = orientRaster(input.nativeRaster, input.orientation);
|
|
@@ -351,10 +368,9 @@ function physicalBoundsFromRectWithinBounds(sourceBounds, sourceRaster, rect) {
|
|
|
351
368
|
};
|
|
352
369
|
}
|
|
353
370
|
function validateOutputAspectRatio(cropRect, outputRaster) {
|
|
354
|
-
//
|
|
355
|
-
//
|
|
356
|
-
//
|
|
357
|
-
// anisotropic stretching at large output dimensions.
|
|
371
|
+
// Keep one scale factor for both axes. Allow only the sub-pixel mismatch that
|
|
372
|
+
// comes from rounding an ideal scaled size to whole pixels. A fixed percentage
|
|
373
|
+
// tolerance would allow visible stretching along one axis at large sizes.
|
|
358
374
|
const widthScaleMinimum = (outputRaster.pixelWidth - 0.5) / cropRect.width;
|
|
359
375
|
const widthScaleMaximum = (outputRaster.pixelWidth + 0.5) / cropRect.width;
|
|
360
376
|
const heightScaleMinimum = (outputRaster.pixelHeight - 0.5) / cropRect.height;
|
|
@@ -419,11 +435,13 @@ function calculateBoundsFieldOfView(bounds, focalLengthMm, focusDistanceM) {
|
|
|
419
435
|
};
|
|
420
436
|
}
|
|
421
437
|
/**
|
|
422
|
-
* Resolves native sensor geometry, active capture, physical camera orientation
|
|
423
|
-
* and final digital
|
|
438
|
+
* Resolves native sensor geometry, active capture area, physical camera orientation
|
|
439
|
+
* and final digital (output) geometry, keeping each one distinct.
|
|
424
440
|
*/
|
|
425
441
|
export function resolveCaptureGeometry(input) {
|
|
442
|
+
requireInputKeys(input, "resolveCaptureGeometry", ["imagingArea", "nativeRaster", "orientation", "activeCaptureRect", "outputCropRect", "outputRaster"]);
|
|
426
443
|
requireCaptureOrientation(input.orientation);
|
|
444
|
+
requireInputObject(input.imagingArea, "imagingArea");
|
|
427
445
|
requirePositiveFinite("imagingArea.widthMm", input.imagingArea.widthMm);
|
|
428
446
|
requirePositiveFinite("imagingArea.heightMm", input.imagingArea.heightMm);
|
|
429
447
|
requireRasterDimensions("nativeRaster", input.nativeRaster);
|
|
@@ -515,12 +533,14 @@ export function resolveCaptureGeometry(input) {
|
|
|
515
533
|
]);
|
|
516
534
|
}
|
|
517
535
|
/**
|
|
518
|
-
* Calculates
|
|
519
|
-
*
|
|
536
|
+
* Calculates the field of view (FOV) of the active physical capture area after
|
|
537
|
+
* camera orientation. Horizontal and vertical FOV can be asymmetric about the
|
|
538
|
+
* optical axis; both corner-to-corner diagonals are reported.
|
|
520
539
|
*
|
|
521
|
-
*
|
|
540
|
+
* The final digital (output) crop is deliberately not included.
|
|
522
541
|
*/
|
|
523
542
|
export function calculateActiveCaptureFieldOfView(input) {
|
|
543
|
+
requireInputKeys(input, "calculateActiveCaptureFieldOfView", ["imagingArea", "nativeRaster", "orientation", "activeCaptureRect", "focalLengthMm", "focusDistanceM"]);
|
|
524
544
|
requirePositiveFinite("focalLengthMm", input.focalLengthMm);
|
|
525
545
|
const geometry = resolveCaptureGeometry({
|
|
526
546
|
imagingArea: input.imagingArea,
|
|
@@ -548,11 +568,11 @@ export function calculateActiveCaptureFieldOfView(input) {
|
|
|
548
568
|
]);
|
|
549
569
|
}
|
|
550
570
|
/**
|
|
551
|
-
* Calculates final visible field of view after
|
|
552
|
-
* orientation
|
|
553
|
-
* affect this optical/framing result.
|
|
571
|
+
* Calculates the final visible field of view after the active capture area,
|
|
572
|
+
* orientation and digital (output) crop. Output resolution does not affect it.
|
|
554
573
|
*/
|
|
555
574
|
export function calculateOutputFieldOfView(input) {
|
|
575
|
+
requireInputKeys(input, "calculateOutputFieldOfView", ["imagingArea", "nativeRaster", "orientation", "activeCaptureRect", "outputCropRect", "focalLengthMm", "focusDistanceM"]);
|
|
556
576
|
requirePositiveFinite("focalLengthMm", input.focalLengthMm);
|
|
557
577
|
const geometry = resolveCaptureGeometry({
|
|
558
578
|
imagingArea: input.imagingArea,
|