DriveWorks SDK Reference
3.0.4260 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-2020 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 
48 #ifndef DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
49 #define DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
50 
51 #include <dw/core/Config.h>
52 #include <dw/core/Exports.h>
53 #include <dw/core/Context.h>
54 #include <dw/core/Types.h>
55 #include <dw/image/Image.h>
57 
58 #include <stdint.h>
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
65 typedef struct dwFeature2DTrackerObject* dwFeature2DTrackerHandle_t;
66 
68 typedef struct dwFeature2DTrackerObject const* dwConstFeature2DTrackerHandle_t;
69 
76 
79 
82 
85 
90 {
92  dwFeature2DTrackerAlgorithm algorithm;
93 
97 
99  uint32_t maxFeatureCount;
100 
102  uint32_t historyCapacity;
103 
108 
110  uint32_t imageWidth;
111 
113  uint32_t imageHeight;
114 
122  uint32_t windowSizeLK;
123 
129 
133  uint32_t numIterScaling;
134 
143 
148 
154 
161 
167 
174 
176 
185 
199  const dwTransformation3f* cameraToRig,
200  dwConstCameraModelHandle_t cameraHandle);
201 
217 dwStatus dwFeature2DTracker_initialize(dwFeature2DTrackerHandle_t* obj,
218  const dwFeature2DTrackerConfig* config,
219  cudaStream_t cudaStream, dwContextHandle_t context);
229 dwStatus dwFeature2DTracker_reset(dwFeature2DTrackerHandle_t obj);
230 
244 dwStatus dwFeature2DTracker_release(dwFeature2DTrackerHandle_t obj);
245 
280  dwFeatureArray* predictedFeatures,
281  float32_t* d_normalizedCrossCorrelation,
282  const dwFeatureArray* featuresToTrack,
283  const dwVector2f* d_predictedPositions,
284  const dwPyramidImage* previousPyramid,
285  const dwPyramidImage* currentPyramid,
286  dwFeature2DTrackerHandle_t obj);
287 
303  dwFeature2DTrackerHandle_t obj);
304 
317 dwStatus dwFeature2DTracker_setCUDAStream(cudaStream_t stream, dwFeature2DTrackerHandle_t obj);
318 
329 dwStatus dwFeature2DTracker_getCUDAStream(cudaStream_t* stream, dwFeature2DTrackerHandle_t obj);
330 
331 #ifdef __cplusplus
332 }
333 #endif
334 
335 #endif // DW_IMAGEPROCESSING_FEATURE2D_TRACKER_H_
Holds pointers to the data exposed by a feature2d list.
Definition: FeatureList.h:120
NVIDIA DriveWorks API: Core Types
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.
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...
float32_t maxScaleChange
The maximum allowed scale change for the tracked points across consecutive frames.
NVIDIA DriveWorks API: Core Methods
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:166
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.
2-DOF (dx, dy) standard Translation-only 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.
struct dwCameraModelObject const * dwConstCameraModelHandle_t
A pointer to the handle representing a const calibrated camera.
Definition: CameraModel.h:72
Pyramid image structure.
Definition: Pyramid.h:66
3-DOF (dx, dy, dscale) extended Translation+Scaling KLT tracking.
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:80
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.
NVIDIA DriveWorks API: Core Exports
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:56
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.