DriveWorks SDK Reference
5.4.5418 Release
For Test and Development only

FeatureTracker.h
Go to the documentation of this file.
1 //
3 // Notice
4 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
5 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
6 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
7 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8 //
9 // NVIDIA CORPORATION & AFFILIATES assumes no responsibility for the consequences of use of such
10 // information or for any infringement of patents or other rights of third parties that may
11 // result from its use. No license is granted by implication or otherwise under any patent
12 // or patent rights of NVIDIA CORPORATION & AFFILIATES. No third party distribution is allowed unless
13 // expressly authorized by NVIDIA. Details are subject to change without notice.
14 // This code supersedes and replaces all information previously supplied.
15 // NVIDIA CORPORATION & AFFILIATES products are not authorized for use as critical
16 // components in life support devices or systems without express written approval of
17 // NVIDIA CORPORATION & AFFILIATES.
18 //
19 // SPDX-FileCopyrightText: Copyright (c) 2018-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
20 // SPDX-License-Identifier: LicenseRef-NvidiaProprietary
21 //
22 // NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
23 // property and proprietary rights in and to this material, related
24 // documentation and any modifications thereto. Any use, reproduction,
25 // disclosure or distribution of this material and related documentation
26 // without an express license agreement from NVIDIA CORPORATION or
27 // its affiliates is 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 
224 
236 // TODO(dwplc): RFD coverity tool claims that first 31 characters of identifiers is same with dwFeature2DTracker_initDefaultParams, which causes ambiguity
237 // coverity[misra_c_2012_rule_5_1_violation]
240  const dwTransformation3f* cameraToRig,
241  dwConstCameraModelHandle_t cameraHandle);
242 
258 dwStatus dwFeature2DTracker_initialize(dwFeature2DTrackerHandle_t* obj,
259  const dwFeature2DTrackerConfig* config,
260  cudaStream_t cudaStream, dwContextHandle_t context);
261 
271 dwStatus dwFeature2DTracker_reset(dwFeature2DTrackerHandle_t obj);
272 
286 dwStatus dwFeature2DTracker_release(dwFeature2DTrackerHandle_t obj);
287 
322  dwFeatureArray* predictedFeatures,
323  float32_t* d_normalizedCrossCorrelation,
324  const dwFeatureArray* featuresToTrack,
325  const dwVector2f* d_predictedPositions,
326  const dwPyramidImage* previousPyramid,
327  const dwPyramidImage* currentPyramid,
328  dwFeature2DTrackerHandle_t obj);
329 
345  dwFeature2DTrackerHandle_t obj);
346 
359 dwStatus dwFeature2DTracker_setCUDAStream(cudaStream_t stream, dwFeature2DTrackerHandle_t obj);
360 
371 dwStatus dwFeature2DTracker_getCUDAStream(cudaStream_t* stream, dwFeature2DTrackerHandle_t obj);
372 
373 #ifdef __cplusplus
374 }
375 #endif
376 
377 #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:294
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:467
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:161
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