@photivra/engine 0.1.0 → 0.4.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 +87 -0
- package/CITATION.cff +1 -1
- package/README.md +61 -12
- package/dist/camera/equivalent-focal-length.d.ts +34 -0
- package/dist/camera/equivalent-focal-length.d.ts.map +1 -0
- package/dist/camera/equivalent-focal-length.js +33 -0
- package/dist/camera/equivalent-focal-length.js.map +1 -0
- package/dist/camera/field-of-view.d.ts +40 -3
- package/dist/camera/field-of-view.d.ts.map +1 -1
- package/dist/camera/field-of-view.js +66 -24
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/core/calculation-result.d.ts.map +1 -1
- package/dist/core/calculation-result.js +14 -2
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/configuration-error.d.ts +9 -0
- package/dist/core/configuration-error.d.ts.map +1 -0
- package/dist/core/configuration-error.js +13 -0
- package/dist/core/configuration-error.js.map +1 -0
- package/dist/core/evidence-provenance.d.ts +40 -0
- package/dist/core/evidence-provenance.d.ts.map +1 -0
- package/dist/core/evidence-provenance.js +79 -0
- package/dist/core/evidence-provenance.js.map +1 -0
- package/dist/core/image-formation.d.ts +70 -0
- package/dist/core/image-formation.d.ts.map +1 -0
- package/dist/core/image-formation.js +335 -0
- package/dist/core/image-formation.js.map +1 -0
- package/dist/exposure/exposure.d.ts +31 -0
- package/dist/exposure/exposure.d.ts.map +1 -1
- package/dist/exposure/exposure.js +35 -0
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/index.d.ts +16 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +91 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -0
- package/dist/motion/camera-rotation.js +157 -0
- package/dist/motion/camera-rotation.js.map +1 -0
- package/dist/optics/focus-breathing.d.ts +73 -0
- package/dist/optics/focus-breathing.d.ts.map +1 -0
- package/dist/optics/focus-breathing.js +77 -0
- package/dist/optics/focus-breathing.js.map +1 -0
- package/dist/optics/illumination-vignetting.d.ts +59 -0
- package/dist/optics/illumination-vignetting.d.ts.map +1 -0
- package/dist/optics/illumination-vignetting.js +107 -0
- package/dist/optics/illumination-vignetting.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +93 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.js +174 -0
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -0
- package/dist/optics/psf-foundation.d.ts +102 -0
- package/dist/optics/psf-foundation.d.ts.map +1 -0
- package/dist/optics/psf-foundation.js +164 -0
- package/dist/optics/psf-foundation.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +91 -0
- package/dist/optics/radial-distortion.d.ts.map +1 -0
- package/dist/optics/radial-distortion.js +198 -0
- package/dist/optics/radial-distortion.js.map +1 -0
- package/dist/output/capture-geometry.d.ts +225 -0
- package/dist/output/capture-geometry.d.ts.map +1 -0
- package/dist/output/capture-geometry.js +478 -0
- package/dist/output/capture-geometry.js.map +1 -0
- package/dist/schema/validation.d.ts +1 -8
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +2 -11
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/architecture.d.ts +40 -0
- package/dist/sensor/architecture.d.ts.map +1 -0
- package/dist/sensor/architecture.js +98 -0
- package/dist/sensor/architecture.js.map +1 -0
- package/dist/sensor/radiometry-readiness.d.ts +111 -0
- package/dist/sensor/radiometry-readiness.d.ts.map +1 -0
- package/dist/sensor/radiometry-readiness.js +294 -0
- package/dist/sensor/radiometry-readiness.js.map +1 -0
- package/dist/sensor/sensor-geometry.d.ts +99 -0
- package/dist/sensor/sensor-geometry.d.ts.map +1 -0
- package/dist/sensor/sensor-geometry.js +71 -0
- package/dist/sensor/sensor-geometry.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts +93 -1
- package/dist/simulation/poc-simulation.d.ts.map +1 -1
- package/dist/simulation/poc-simulation.js +308 -24
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/docs/API_STYLE.md +35 -2
- package/docs/ARCHITECTURE.md +179 -1
- package/docs/IMAGE_FORMATION.md +142 -0
- package/docs/MOTION_AND_SIGNAL.md +54 -1
- package/docs/PHYSICS_FOUNDATION.md +190 -3
- package/docs/POC_API.md +73 -7
- package/docs/PROVENANCE.md +24 -0
- package/docs/PSF_FOUNDATION.md +133 -0
- package/docs/STABILIZATION.md +17 -4
- package/docs/USAGE.md +680 -4
- package/package.json +2 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { type CalculationProvenance, type CalculationResult } from "../core/calculation-result.js";
|
|
2
|
+
import { type NativeImageRaster, type RasterDimensions, type SensorImagingArea } from "../sensor/sensor-geometry.js";
|
|
3
|
+
export type CaptureOrientation = "landscape" | "portrait-clockwise" | "landscape-inverted" | "portrait-counter-clockwise";
|
|
4
|
+
export interface RasterPoint {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
export interface RasterVector {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Integer half-open rectangle in raster coordinates.
|
|
14
|
+
*
|
|
15
|
+
* Coordinates use a top-left origin with +X to the right and +Y downward.
|
|
16
|
+
* The covered extent is [x, x + width) × [y, y + height).
|
|
17
|
+
*/
|
|
18
|
+
export interface RasterRect {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}
|
|
24
|
+
export interface PhysicalBoundsFromOpticalAxisMm {
|
|
25
|
+
left: number;
|
|
26
|
+
right: number;
|
|
27
|
+
top: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ResolveCaptureGeometryInput {
|
|
31
|
+
imagingArea: SensorImagingArea;
|
|
32
|
+
nativeRaster: NativeImageRaster;
|
|
33
|
+
orientation: CaptureOrientation;
|
|
34
|
+
/**
|
|
35
|
+
* Active capture rectangle in native sensor raster coordinates.
|
|
36
|
+
*
|
|
37
|
+
* Defaults to the full native raster.
|
|
38
|
+
*/
|
|
39
|
+
activeCaptureRect?: RasterRect;
|
|
40
|
+
/**
|
|
41
|
+
* Final digital/output crop in oriented active-capture raster coordinates.
|
|
42
|
+
*
|
|
43
|
+
* Defaults to the full oriented active capture.
|
|
44
|
+
*/
|
|
45
|
+
outputCropRect?: RasterRect;
|
|
46
|
+
/**
|
|
47
|
+
* Final output raster after optional digital crop/resampling.
|
|
48
|
+
*
|
|
49
|
+
* Defaults to the output-crop dimensions. The output raster must preserve
|
|
50
|
+
* the crop aspect ratio within a small integer-rounding tolerance.
|
|
51
|
+
*/
|
|
52
|
+
outputRaster?: RasterDimensions;
|
|
53
|
+
}
|
|
54
|
+
export interface ResolvedCaptureGeometry {
|
|
55
|
+
native: {
|
|
56
|
+
imagingArea: SensorImagingArea;
|
|
57
|
+
raster: NativeImageRaster;
|
|
58
|
+
};
|
|
59
|
+
activeCapture: {
|
|
60
|
+
nativeRect: RasterRect;
|
|
61
|
+
imagingArea: SensorImagingArea;
|
|
62
|
+
/**
|
|
63
|
+
* Top-left active-area offset from the native imaging-area top-left.
|
|
64
|
+
*/
|
|
65
|
+
physicalOffsetMm: {
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
};
|
|
69
|
+
/** Active-area center relative to the native optical axis. */
|
|
70
|
+
centerOffsetFromOpticalAxisMm: RasterVector;
|
|
71
|
+
/** Native physical bounds relative to the optical axis. */
|
|
72
|
+
physicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
|
|
73
|
+
/**
|
|
74
|
+
* Current generic model assumes native image samples uniformly span the
|
|
75
|
+
* declared physical imaging area.
|
|
76
|
+
*/
|
|
77
|
+
imagingAreaDerivation: "uniform-native-raster";
|
|
78
|
+
raster: RasterDimensions;
|
|
79
|
+
};
|
|
80
|
+
orientedCapture: {
|
|
81
|
+
orientation: CaptureOrientation;
|
|
82
|
+
imagingArea: SensorImagingArea;
|
|
83
|
+
/** Oriented physical bounds relative to the optical axis. */
|
|
84
|
+
physicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
|
|
85
|
+
raster: RasterDimensions;
|
|
86
|
+
};
|
|
87
|
+
output: {
|
|
88
|
+
/**
|
|
89
|
+
* Digital/output crop expressed in oriented active-capture coordinates.
|
|
90
|
+
*
|
|
91
|
+
* This crop does not mutate physical sensor identity or active-capture
|
|
92
|
+
* geometry.
|
|
93
|
+
*/
|
|
94
|
+
cropRect: RasterRect;
|
|
95
|
+
raster: RasterDimensions;
|
|
96
|
+
/** Physical region retained by the digital/output crop. */
|
|
97
|
+
imagingArea: SensorImagingArea;
|
|
98
|
+
physicalBoundsFromOpticalAxisMm: PhysicalBoundsFromOpticalAxisMm;
|
|
99
|
+
centerOffsetFromOpticalAxisMm: RasterVector;
|
|
100
|
+
sourceRetainedAreaFraction: number;
|
|
101
|
+
/** Pixel-domain resampling from oriented active capture into output. */
|
|
102
|
+
orientedCaptureToOutputScale: {
|
|
103
|
+
x: number;
|
|
104
|
+
y: number;
|
|
105
|
+
axisRelativeDifference: number;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface TransformRasterPointInput {
|
|
110
|
+
point: RasterPoint;
|
|
111
|
+
nativeRaster: NativeImageRaster;
|
|
112
|
+
orientation: CaptureOrientation;
|
|
113
|
+
}
|
|
114
|
+
export interface TransformRasterVectorInput {
|
|
115
|
+
vector: RasterVector;
|
|
116
|
+
orientation: CaptureOrientation;
|
|
117
|
+
}
|
|
118
|
+
export interface TransformRasterRectInput {
|
|
119
|
+
rect: RasterRect;
|
|
120
|
+
nativeRaster: NativeImageRaster;
|
|
121
|
+
orientation: CaptureOrientation;
|
|
122
|
+
}
|
|
123
|
+
export interface CalculateActiveCaptureFieldOfViewInput {
|
|
124
|
+
imagingArea: SensorImagingArea;
|
|
125
|
+
nativeRaster: NativeImageRaster;
|
|
126
|
+
orientation: CaptureOrientation;
|
|
127
|
+
activeCaptureRect?: RasterRect;
|
|
128
|
+
focalLengthMm: number;
|
|
129
|
+
focusDistanceM?: number;
|
|
130
|
+
}
|
|
131
|
+
export interface CalculateOutputFieldOfViewInput {
|
|
132
|
+
imagingArea: SensorImagingArea;
|
|
133
|
+
nativeRaster: NativeImageRaster;
|
|
134
|
+
orientation: CaptureOrientation;
|
|
135
|
+
activeCaptureRect?: RasterRect;
|
|
136
|
+
outputCropRect?: RasterRect;
|
|
137
|
+
focalLengthMm: number;
|
|
138
|
+
focusDistanceM?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface ActiveCaptureFieldOfView {
|
|
141
|
+
orientation: CaptureOrientation;
|
|
142
|
+
horizontalDegrees: number;
|
|
143
|
+
verticalDegrees: number;
|
|
144
|
+
/**
|
|
145
|
+
* Larger of the two opposite-corner diagonal angular spans. For centered
|
|
146
|
+
* crops both diagonal spans are equal.
|
|
147
|
+
*/
|
|
148
|
+
diagonalDegrees: number;
|
|
149
|
+
horizontalBoundsDegrees: {
|
|
150
|
+
minimum: number;
|
|
151
|
+
maximum: number;
|
|
152
|
+
};
|
|
153
|
+
verticalBoundsDegrees: {
|
|
154
|
+
minimum: number;
|
|
155
|
+
maximum: number;
|
|
156
|
+
};
|
|
157
|
+
diagonalDegreesByCornerPair: {
|
|
158
|
+
topLeftToBottomRight: number;
|
|
159
|
+
topRightToBottomLeft: number;
|
|
160
|
+
};
|
|
161
|
+
activeImagingArea: SensorImagingArea;
|
|
162
|
+
centerOffsetFromOpticalAxisMm: RasterVector;
|
|
163
|
+
projection: {
|
|
164
|
+
projectionDistanceMm: number;
|
|
165
|
+
provenance: CalculationProvenance;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
export interface OutputFieldOfView {
|
|
169
|
+
orientation: CaptureOrientation;
|
|
170
|
+
horizontalDegrees: number;
|
|
171
|
+
verticalDegrees: number;
|
|
172
|
+
diagonalDegrees: number;
|
|
173
|
+
horizontalBoundsDegrees: {
|
|
174
|
+
minimum: number;
|
|
175
|
+
maximum: number;
|
|
176
|
+
};
|
|
177
|
+
verticalBoundsDegrees: {
|
|
178
|
+
minimum: number;
|
|
179
|
+
maximum: number;
|
|
180
|
+
};
|
|
181
|
+
diagonalDegreesByCornerPair: {
|
|
182
|
+
topLeftToBottomRight: number;
|
|
183
|
+
topRightToBottomLeft: number;
|
|
184
|
+
};
|
|
185
|
+
outputImagingArea: SensorImagingArea;
|
|
186
|
+
centerOffsetFromOpticalAxisMm: RasterVector;
|
|
187
|
+
projection: {
|
|
188
|
+
projectionDistanceMm: number;
|
|
189
|
+
provenance: CalculationProvenance;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Transforms a continuous native raster edge-coordinate point into oriented
|
|
194
|
+
* capture coordinates. Pixel centers can be represented with +0.5 offsets.
|
|
195
|
+
*/
|
|
196
|
+
export declare function transformNativeRasterPointToOriented(input: TransformRasterPointInput): RasterPoint;
|
|
197
|
+
/** Transforms an oriented raster edge-coordinate point back to native coordinates. */
|
|
198
|
+
export declare function transformOrientedRasterPointToNative(input: TransformRasterPointInput): RasterPoint;
|
|
199
|
+
/** Rotates a native raster vector into oriented coordinates. */
|
|
200
|
+
export declare function transformNativeRasterVectorToOriented(input: TransformRasterVectorInput): RasterVector;
|
|
201
|
+
/** Rotates an oriented raster vector back into native coordinates. */
|
|
202
|
+
export declare function transformOrientedRasterVectorToNative(input: TransformRasterVectorInput): RasterVector;
|
|
203
|
+
/** Transforms an integer half-open native raster rectangle into oriented coordinates. */
|
|
204
|
+
export declare function transformNativeRasterRectToOriented(input: TransformRasterRectInput): RasterRect;
|
|
205
|
+
/** Transforms an oriented integer half-open rectangle back to native coordinates. */
|
|
206
|
+
export declare function transformOrientedRasterRectToNative(input: TransformRasterRectInput): RasterRect;
|
|
207
|
+
/**
|
|
208
|
+
* Resolves native sensor geometry, active capture, physical camera orientation,
|
|
209
|
+
* and final digital/output geometry without conflating their identities.
|
|
210
|
+
*/
|
|
211
|
+
export declare function resolveCaptureGeometry(input: ResolveCaptureGeometryInput): CalculationResult<ResolvedCaptureGeometry>;
|
|
212
|
+
/**
|
|
213
|
+
* Calculates asymmetric horizontal/vertical FOV plus opposite-corner diagonal
|
|
214
|
+
* spans for the active physical capture area after physical camera orientation.
|
|
215
|
+
*
|
|
216
|
+
* Final digital/output crop is intentionally excluded.
|
|
217
|
+
*/
|
|
218
|
+
export declare function calculateActiveCaptureFieldOfView(input: CalculateActiveCaptureFieldOfViewInput): CalculationResult<ActiveCaptureFieldOfView>;
|
|
219
|
+
/**
|
|
220
|
+
* Calculates final visible field of view after physical active capture,
|
|
221
|
+
* orientation, and digital/output crop. Output raster resolution does not
|
|
222
|
+
* affect this optical/framing result.
|
|
223
|
+
*/
|
|
224
|
+
export declare function calculateOutputFieldOfView(input: CalculateOutputFieldOfViewInput): CalculationResult<OutputFieldOfView>;
|
|
225
|
+
//# sourceMappingURL=capture-geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-geometry.d.ts","sourceRoot":"","sources":["../../src/output/capture-geometry.ts"],"names":[],"mappings":"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"}
|