Ver código fonte

Simplify ImageTrackerUtils.bestFitAspectRatioNDC()

customisations
alemart 9 meses atrás
pai
commit
e91d2432fa

+ 3
- 6
src/trackers/image-tracker/image-tracker-utils.ts Ver arquivo

@@ -28,7 +28,6 @@ import { SpeedyMatrix } from 'speedy-vision/types/core/speedy-matrix';
28 28
 import { SpeedyPoint2 } from 'speedy-vision/types/core/speedy-point';
29 29
 import { SpeedyVector2 } from 'speedy-vision/types/core/speedy-vector';
30 30
 import { SpeedyKeypoint } from 'speedy-vision/types/core/speedy-keypoint';
31
-import { ImageTracker } from './image-tracker';
32 31
 import { ReferenceImageWithMedia } from './reference-image';
33 32
 import { Utils } from '../../utils/utils';
34 33
 import { IllegalOperationError, IllegalArgumentError, NumericalError } from '../../utils/errors';
@@ -162,15 +161,12 @@ export class ImageTrackerUtils
162 161
 
163 162
     /**
164 163
      * Find the best-fit aspect ratio for the rectification of the reference image in NDC
165
-     * @param imageTracker
164
+     * @param screenSize
166 165
      * @param referenceImage
167 166
      * @returns a best-fit aspect ratio
168 167
      */
169
-    static bestFitAspectRatioNDC(imageTracker: ImageTracker, referenceImage: ReferenceImageWithMedia): number
168
+    static bestFitAspectRatioNDC(screenSize: SpeedySize, referenceImage: ReferenceImageWithMedia): number
170 169
     {
171
-        const screenSize = imageTracker.screenSize;
172
-        const screenAspectRatio = screenSize.width / screenSize.height;
173
-
174 170
         /*
175 171
         
176 172
         The best-fit aspectRatio (a) is constructed as follows:
@@ -192,6 +188,7 @@ export class ImageTrackerUtils
192 188
 
193 189
         */
194 190
 
191
+        const screenAspectRatio = screenSize.width / screenSize.height;
195 192
         return referenceImage.aspectRatio / screenAspectRatio;
196 193
     }
197 194
 

+ 1
- 1
src/trackers/image-tracker/states/pre-tracking-a.ts Ver arquivo

@@ -128,7 +128,7 @@ export class ImageTrackerPreTrackingAState extends ImageTrackerState
128 128
 
129 129
         // rectify the image
130 130
         const scale = TRACK_RECTIFIED_SCALE;
131
-        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
131
+        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(screenSize, this._referenceImage!);
132 132
         const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
133 133
         const toScreen = ImageTrackerUtils.NDCToRaster(screenSize);
134 134
         const toNDC = ImageTrackerUtils.rasterToNDC(screenSize);

+ 5
- 5
src/trackers/image-tracker/states/pre-tracking-b.ts Ver arquivo

@@ -39,7 +39,7 @@ import { SpeedyKeypoint, SpeedyMatchedKeypoint } from 'speedy-vision/types/core/
39 39
 import { ImageTracker, ImageTrackerOutput, ImageTrackerStateName } from '../image-tracker';
40 40
 import { ImageTrackerUtils, ImageTrackerKeypointPair } from '../image-tracker-utils';
41 41
 import { ImageTrackerState, ImageTrackerStateOutput } from './state';
42
-import { ReferenceImage } from '../reference-image';
42
+import { ReferenceImageWithMedia } from '../reference-image';
43 43
 import { Nullable, Utils } from '../../../utils/utils';
44 44
 import { TrackingError } from '../../../utils/errors';
45 45
 import {
@@ -64,7 +64,7 @@ import {
64 64
 export class ImageTrackerPreTrackingBState extends ImageTrackerState
65 65
 {
66 66
     /** reference image */
67
-    private _referenceImage: Nullable<ReferenceImage>;
67
+    private _referenceImage: Nullable<ReferenceImageWithMedia>;
68 68
 
69 69
     /** a snapshot of the video from the scanning state and corresponding to the initial homography */
70 70
     private _snapshot: Nullable<SpeedyPipelineNodeImagePortalSink>;
@@ -101,7 +101,7 @@ export class ImageTrackerPreTrackingBState extends ImageTrackerState
101 101
     onEnterState(settings: Record<string,any>)
102 102
     {
103 103
         const homography = settings.homography as SpeedyMatrix;
104
-        const referenceImage = settings.referenceImage as ReferenceImage;
104
+        const referenceImage = settings.referenceImage as ReferenceImageWithMedia;
105 105
         const snapshot = settings.snapshot as SpeedyPipelineNodeImagePortalSink;
106 106
         const referenceKeypointPortalSink = settings.referenceKeypointPortalSink as SpeedyPipelineNodeKeypointPortalSink;
107 107
 
@@ -143,7 +143,7 @@ export class ImageTrackerPreTrackingBState extends ImageTrackerState
143 143
 
144 144
         // rectify the image
145 145
         const scale = TRACK_RECTIFIED_SCALE;
146
-        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
146
+        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(screenSize, this._referenceImage!);
147 147
         const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
148 148
         const undistort = this._homography.inverse();
149 149
         const toScreen = ImageTrackerUtils.NDCToRaster(screenSize);
@@ -233,7 +233,7 @@ export class ImageTrackerPreTrackingBState extends ImageTrackerState
233 233
         }).then(([ warp, score ]) => {
234 234
 
235 235
             const scale = TRACK_RECTIFIED_SCALE;
236
-            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
236
+            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this.screenSize, this._referenceImage!);
237 237
             const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
238 238
             const grow = ImageTrackerUtils.inverseBestFitScaleNDC(aspectRatio, scale);
239 239
             const scaledWarp = grow.times(warp).times(shrink);

+ 3
- 3
src/trackers/image-tracker/states/tracking.ts Ver arquivo

@@ -228,7 +228,7 @@ export class ImageTrackerTrackingState extends ImageTrackerState
228 228
 
229 229
         // rectify the image
230 230
         const scale = TRACK_RECTIFIED_SCALE;
231
-        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
231
+        const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(screenSize, this._referenceImage!);
232 232
         const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
233 233
         const undistort = this._warpHomography.inverse();
234 234
         const toScreen = ImageTrackerUtils.NDCToRaster(screenSize);
@@ -461,7 +461,7 @@ export class ImageTrackerTrackingState extends ImageTrackerState
461 461
         }).then(([ warp, score ]) => {
462 462
 
463 463
             const scale = TRACK_RECTIFIED_SCALE;
464
-            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
464
+            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this.screenSize, this._referenceImage!);
465 465
             const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
466 466
             const grow = ImageTrackerUtils.inverseBestFitScaleNDC(aspectRatio, scale);
467 467
             const scaledWarp = grow.times(warp).times(shrink);
@@ -496,7 +496,7 @@ export class ImageTrackerTrackingState extends ImageTrackerState
496 496
         }).then(([ warp, score ]) => {
497 497
 
498 498
             const scale = TRACK_RECTIFIED_SCALE;
499
-            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this._imageTracker, this._referenceImage!);
499
+            const aspectRatio = ImageTrackerUtils.bestFitAspectRatioNDC(this.screenSize, this._referenceImage!);
500 500
             const shrink = ImageTrackerUtils.bestFitScaleNDC(aspectRatio, scale);
501 501
             const grow = ImageTrackerUtils.inverseBestFitScaleNDC(aspectRatio, scale);
502 502
             const scaledWarp = grow.times(warp).times(shrink);

Carregando…
Cancelar
Salvar