DriveWorks SDK Reference
5.14.77 Release
For Test and Development only

FeatureTracker.h
Go to the documentation of this file.
1
2//
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-2023 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_TRACKING_FEATURETRACKER_FEATURETRACKER_H_
47#define DW_IMAGEPROCESSING_TRACKING_FEATURETRACKER_FEATURETRACKER_H_
48
49#include <dw/core/base/Config.h>
52#include <dw/core/base/Types.h>
53#include <dw/image/Image.h>
55#include <dw/core/system/PVA.h>
56
57#include <stdint.h>
58
59#ifdef __cplusplus
60extern "C" {
61#endif
62
64#define DW_FEATURE2D_TRACKER_MAX_WINDOW_SIZE 16
65
67typedef struct dwFeature2DTrackerObject* dwFeature2DTrackerHandle_t;
68
70typedef struct dwFeature2DTrackerObject const* dwConstFeature2DTrackerHandle_t;
71
78
81
84
87
92{
95
99
102
105
111
113 uint32_t imageWidth;
114
116 uint32_t imageHeight;
117
126 uint32_t windowSizeLK;
127
136
142
148
158
168
175
181
188
195
202
209
216
218
228
241// TODO(dwplc): RFD coverity tool claims that first 31 characters of identifiers is same with dwFeature2DTracker_initDefaultParams, which causes ambiguity
242// coverity[misra_c_2012_rule_5_1_violation]
244 const dwTransformation3f* cameraToRig,
245 dwConstCameraModelHandle_t cameraHandle);
246
263 const dwFeature2DTrackerConfig* config,
264 cudaStream_t cudaStream, dwContextHandle_t context);
265
276
291
326 dwFeatureArray* predictedFeatures,
327 float32_t* d_normalizedCrossCorrelation,
328 const dwFeatureArray* featuresToTrack,
329 const dwVector2f* d_predictedPositions,
330 const dwPyramidImage* previousPyramid,
331 const dwPyramidImage* currentPyramid,
333
350
364
376
391
404
405#ifdef __cplusplus
406}
407#endif
409#endif // DW_IMAGEPROCESSING_TRACKING_FEATURETRACKER_FEATURETRACKER_H_
NVIDIA DriveWorks API: Core Methods
dwStatus
Status definition.
Definition: ErrorDefs.h:45
NVIDIA DriveWorks API: cuPVA Includes
void * cupvaStream_t
Dummy definition for non PVA supported platforms.
Definition: PVA.h:47
NVIDIA DriveWorks API: Core Types
NVIDIA DriveWorks API: Core Exports
NVIDIA DriveWorks API: 2D Detector
struct dwCameraModelObject const * dwConstCameraModelHandle_t
A pointer to the handle representing a const calibrated camera.
Definition: CameraModel.h:72
float float32_t
Specifies POD types.
Definition: BasicTypes.h:59
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:86
#define DW_API_PUBLIC
Definition: Exports.h:54
dwProcessorType
Processor type definitions.
Definition: TypesExtra.h:126
float32_t nccKillThreshold
Features will be killed if the Cross Correlation Score is less than this threshold during tracking.
uint32_t pyramidLevelCount
Levels of pyramid to track Valid only when algorithm = DW_FEATURE2D_TRACKER_ALGORITHM_EX or DW_FEATUR...
dwProcessorType processorType
Processor type which determines on which processor the algorithm should be executed on.
uint32_t numLevelTranslationOnly
Number of levels in pyramid that will use translation-only KLT tracking, level [maxPyramidLevel - 1,...
float32_t displacementThreshold
If difference of translation prediction between 2 adjacent KLT iteration is less than this value,...
dwFeature2DDetectorType detectorType
Type of detector that connects to the tracker, should be the same value as dwFeature2DDetectorConfig:...
uint32_t numIterScaling
Upper bound on number of 3-DOF translation+scaling KLT iterations per level.
uint32_t historyCapacity
Upper bound of history in feature history array.
float32_t nccUpdateThreshold
Feature template will be updated if the Cross Correlation Score is less than this threshold during tr...
bool enableAdaptiveWindowSizeLK
Enable adaptive window size If enabled, the tracker will use windowSizeLK to track only at the first ...
uint32_t maxFeatureCount
Upper bound on number of features handled.
dwFeature2DTrackerAlgorithm algorithm
Tracking Algorithm defined by dwFeature2DTrackerAlgorithm.
uint32_t windowSizeLK
Window size used in the KLT tracker.
uint32_t imageHeight
Height of the images that the tracker runs on.
uint32_t numIterTranslationOnly
Upper bound on number of 2-DOF translation-only KLT iterations per level.
float32_t maxScaleChange
The maximum allowed scale change for the tracked points across consecutive frames.
uint32_t enableSparseOutput
Enable sparse output if set to 1.
uint32_t imageWidth
Width of the images that the tracker runs on.
float32_t largeMotionKillRatio
Features will be killed if the motion is larger than the template size times the large motion killing...
bool useHalf
Set it to true to use half float as intermediate results during tracking It saves register usage and ...
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 * dwFeature2DTrackerHandle_t
Handle representing a feature tracker.
DW_API_PUBLIC dwStatus dwFeature2DTracker_compact(dwFeatureHistoryArray *featureHistoryArray, dwFeature2DTrackerHandle_t obj)
Remove invalid features.
DW_API_PUBLIC dwStatus dwFeature2DTracker_getPVAStream(cupvaStream_t *stream, dwFeature2DTrackerHandle_t obj)
Gets the cuPVA stream used by the feature tracker.
struct dwFeature2DTrackerObject const * dwConstFeature2DTrackerHandle_t
Handle representing a const feature tracker.
DW_API_PUBLIC dwStatus dwFeature2DTracker_reset(dwFeature2DTrackerHandle_t obj)
Resets a feature tracker.
DW_API_PUBLIC dwStatus dwFeature2DTracker_release(dwFeature2DTrackerHandle_t obj)
Releases the feature tracker.
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...
DW_API_PUBLIC dwStatus dwFeature2DTracker_initDefaultParams(dwFeature2DTrackerConfig *params)
Initializes dwFeature2DTracker parameters with default values.
DW_API_PUBLIC dwStatus dwFeature2DTracker_getCUDAStream(cudaStream_t *stream, dwFeature2DTrackerHandle_t obj)
Gets the CUDA stream used by the feature tracker.
DW_API_PUBLIC dwStatus dwFeature2DTracker_setPVAStream(cupvaStream_t stream, dwFeature2DTrackerHandle_t obj)
Sets the cuPVA stream for PVA related operations.
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...
DW_API_PUBLIC dwStatus dwFeature2DTracker_setCUDAStream(cudaStream_t stream, dwFeature2DTrackerHandle_t obj)
Sets the CUDA stream for CUDA related operations.
dwFeature2DTrackerAlgorithm
Defines different KLT tracking algorithms.
@ DW_FEATURE2D_TRACKER_ALGORITHM_EX
3-DOF (dx, dy, dscale) extended KLT tracking.
@ DW_FEATURE2D_TRACKER_ALGORITHM_STD
3-DOF (dx, dy, dscale) standard KLT tracking.
@ DW_FEATURE2D_TRACKER_ALGORITHM_COUNT
@ DW_FEATURE2D_TRACKER_ALGORITHM_EX_FAST
3-DOF (dx, dy, dscale) fast extended KLT tracking.
Holds configuration parameters for a feature tracker.
Holds pointers to the data exposed by a feature2d list.
Definition: FeatureList.h:116
dwFeature2DDetectorType
Defines different KLT tracking algorithms.
NVIDIA DriveWorks API: Image Conversion and Streaming Functionality
Specifies a 3D rigid transformation.
Definition: MatrixTypes.h:186
Defines a two-element single-precision floating-point vector.
Definition: MatrixTypes.h:49