DriveWorks SDK Reference
4.0.0 Release
For Test and Development only

FeatureTracker.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed
3 // under the Mutual Non-Disclosure Agreement.
4 //
5 // Notice
6 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
7 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
8 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
9 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
10 //
11 // NVIDIA Corporation assumes no responsibility for the consequences of use of such
12 // information or for any infringement of patents or other rights of third parties that may
13 // result from its use. No license is granted by implication or otherwise under any patent
14 // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
15 // expressly authorized by NVIDIA. Details are subject to change without notice.
16 // This code supersedes and replaces all information previously supplied.
17 // NVIDIA Corporation products are not authorized for use as critical
18 // components in life support devices or systems without express written approval of
19 // NVIDIA Corporation.
20 //
21 // Copyright (c) 2018-2021 NVIDIA Corporation. All rights reserved.
22 //
23 // NVIDIA Corporation and its licensors retain all intellectual property and proprietary
24 // rights in and to this software and related documentation and any modifications thereto.
25 // Any use, reproduction, disclosure or distribution of this software and related
26 // documentation without an express license agreement from NVIDIA Corporation is
27 // strictly prohibited.
28 //
30 
46 #ifndef DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
47 #define DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
48 
49 #include <dw/core/Config.h>
50 #include <dw/core/base/Exports.h>
52 #include <dw/core/base/Types.h>
53 #include <dw/image/Image.h>
55 
56 #include <stdint.h>
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
63 #define DW_FEATURE2D_TRACKER_MAX_WINDOW_SIZE 16
64 
66 typedef struct dwFeature2DTrackerObject* dwFeature2DTrackerHandle_t;
67 
69 typedef struct dwFeature2DTrackerObject const* dwConstFeature2DTrackerHandle_t;
70 
77 
80 
83 
86 
91 {
93  dwFeature2DTrackerAlgorithm algorithm;
94 
98 
100  uint32_t maxFeatureCount;
101 
103  uint32_t historyCapacity;
104 
109 
111  uint32_t imageWidth;
112 
114  uint32_t imageHeight;
115 
123  uint32_t windowSizeLK;
124 
132 
138 
142  uint32_t numIterScaling;
143 
152 
160  bool useHalf;
161 
168 
173 
179 
186 
192 
199 
206 
212 
214 
223 
237  const dwTransformation3f* cameraToRig,
238  dwConstCameraModelHandle_t cameraHandle);
239 
255 dwStatus dwFeature2DTracker_initialize(dwFeature2DTrackerHandle_t* obj,
256  const dwFeature2DTrackerConfig* config,
257  cudaStream_t cudaStream, dwContextHandle_t context);
258 
268 dwStatus dwFeature2DTracker_reset(dwFeature2DTrackerHandle_t obj);
269 
283 dwStatus dwFeature2DTracker_release(dwFeature2DTrackerHandle_t obj);
284 
319  dwFeatureArray* predictedFeatures,
320  float32_t* d_normalizedCrossCorrelation,
321  const dwFeatureArray* featuresToTrack,
322  const dwVector2f* d_predictedPositions,
323  const dwPyramidImage* previousPyramid,
324  const dwPyramidImage* currentPyramid,
325  dwFeature2DTrackerHandle_t obj);
326 
342  dwFeature2DTrackerHandle_t obj);
343 
356 dwStatus dwFeature2DTracker_setCUDAStream(cudaStream_t stream, dwFeature2DTrackerHandle_t obj);
357 
368 dwStatus dwFeature2DTracker_getCUDAStream(cudaStream_t* stream, dwFeature2DTrackerHandle_t obj);
369 
370 #ifdef __cplusplus
371 }
372 #endif
373 
374 #endif // DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
NVIDIA DriveWorks API: Core Types
Holds pointers to the data exposed by a feature2d list.
Definition: FeatureList.h:118
bool enableAdaptiveWindowSizeLK
Enable adaptive window size If enabled, the tracker will use windowSizeLK to track only at the first ...
float float32_t
Specifies POD types.
Definition: Types.h:70
dwFeature2DDetectorType
Defines different KLT tracking algorithms.
Defines a two-element single-precision floating-point vector.
Definition: Types.h:291
DW_API_PUBLIC dwStatus dwFeature2DTracker_trackFeatures(dwFeatureHistoryArray *featureHistoryArray, dwFeatureArray *predictedFeatures, float32_t *d_normalizedCrossCorrelation, const dwFeatureArray *featuresToTrack, const dwVector2f *d_predictedPositions, const dwPyramidImage *previousPyramid, const dwPyramidImage *currentPyramid, dwFeature2DTrackerHandle_t obj)
Tracks features and store the tracked results to predictedFeatures between the previous and current i...
uint32_t numIterScaling
Upper bound on number of 3-DOF translation+scaling KLT iterations per level.
3-DOF (dx, dy, dscale) fast extended KLT tracking.
DW_API_PUBLIC dwStatus dwFeature2DTracker_initDefaultParamsForCamera(dwFeature2DTrackerConfig *params, const dwTransformation3f *cameraToRig, dwConstCameraModelHandle_t cameraHandle)
Initializes dwFeature2DTracker parameters with values best suited for the given camera using camera e...
uint32_t numTrackerDevicesPVA
Number of pva devices(pva job queues) created for feature tracking Valid only when processorType = DW...
float32_t maxScaleChange
The maximum allowed scale change for the tracked points across consecutive frames.
NVIDIA DriveWorks API: Image Conversion and Streaming Functionality
DW_API_PUBLIC dwStatus dwFeature2DTracker_initialize(dwFeature2DTrackerHandle_t *obj, const dwFeature2DTrackerConfig *config, cudaStream_t cudaStream, dwContextHandle_t context)
Creates and initializes a feature tracker.
struct dwFeature2DTrackerObject const * dwConstFeature2DTrackerHandle_t
Handle representing a const feature tracker.
Specifies a 3D rigid transformation.
Definition: Types.h:462
float32_t largeMotionKillRatio
Features will be killed if the motion is larger than the template size times the large motion killing...
dwFeature2DTrackerAlgorithm
Defines different KLT tracking algorithms.
DW_API_PUBLIC dwStatus dwFeature2DTracker_reset(dwFeature2DTrackerHandle_t obj)
Resets a feature tracker.
dwStatus
Status definition.
Definition: Status.h:180
bool useHalf
Set it to true to use half float as intermediate results during tracking It saves register usage and ...
Holds configuration parameters for a feature tracker.
dwProcessorType
Processor type definitions.
Definition: Types.h:159
float32_t nccKillThreshold
Features will be killed if the Cross Correlation Score is less than this threshold during tracking...
uint32_t historyCapacity
Upper bound of history in feature history array.
dwFeature2DDetectorType detectorType
Type of detector that connects to the tracker, should the be the same value as dwFeature2DDetectorCon...
uint32_t imageHeight
Height of the images that the tracker runs on.
3-DOF (dx, dy, dscale) standard KLT tracking.
dwProcessorType processorType
Processor type which determines on which processor the algorithm should be executed on...
DW_API_PUBLIC dwStatus dwFeature2DTracker_initDefaultParams(dwFeature2DTrackerConfig *params)
Initializes dwFeature2DTracker parameters with default values.
uint32_t numLevelTranslationOnly
Number of levels in pyramid that will use translation-only KLT tracking, level [maxPyramidLevel - 1...
uint32_t numIterTranslationOnly
Upper bound on number of 2-DOF translation-only KLT iterations per level.
uint32_t enableSparseOutput
Enable sparse output if set to 1.
struct dwCameraModelObject const * dwConstCameraModelHandle_t
A pointer to the handle representing a const calibrated camera.
Definition: CameraModel.h:70
Pyramid image structure.
Definition: Pyramid.h:64
float32_t displacementThreshold
If difference of translation prediction between 2 adjacent KLT iteration is less than this value...
3-DOF (dx, dy, dscale) extended KLT tracking.
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:79
NVIDIA DriveWorks API: Core Methods
uint32_t windowSizeLK
Window size used in the KLT tracker.
struct dwFeature2DTrackerObject * dwFeature2DTrackerHandle_t
Handle representing a feature tracker.
DW_API_PUBLIC dwStatus dwFeature2DTracker_release(dwFeature2DTrackerHandle_t obj)
Releases the feature tracker.
dwFeature2DTrackerAlgorithm algorithm
Tracking Algorithm defined by dwFeature2DTrackerAlgorithm.
uint32_t pyramidLevelCount
Levels of pyramid to track Valid only when algorithm = DW_FEATURE2D_TRACKER_ALGORITHM_EX.
uint32_t maxFeatureCount
Upper bound on number of features handled.
uint32_t imageWidth
Width of the images that the tracker runs on.
DW_API_PUBLIC dwStatus dwFeature2DTracker_compact(dwFeatureHistoryArray *featureHistoryArray, dwFeature2DTrackerHandle_t obj)
Remove invalid features.
DW_API_PUBLIC dwStatus dwFeature2DTracker_setCUDAStream(cudaStream_t stream, dwFeature2DTrackerHandle_t obj)
Sets the CUDA stream for CUDA related operations.
#define DW_API_PUBLIC
Definition: Exports.h:54
float32_t nccUpdateThreshold
Feature template will be updated if the Cross Correlation Score is less than this threshold during tr...
NVIDIA DriveWorks API: 2D Detector
DW_API_PUBLIC dwStatus dwFeature2DTracker_getCUDAStream(cudaStream_t *stream, dwFeature2DTrackerHandle_t obj)
Gets the CUDA stream used by the feature tracker.
NVIDIA DriveWorks API: Core Exports