DriveWorks SDK Reference
5.4.5418 Release
For Test and Development only

FeatureDetector.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_FEATURE_DETECTOR_H_
47 #define DW_IMAGEPROCESSING_FEATURE_DETECTOR_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>
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
63 typedef struct dwFeature2DDetectorObject* dwFeature2DDetectorHandle_t;
64 
66 typedef struct dwFeature2DDetectorObject const* dwConstFeature2DDetectorHandle_t;
67 
74 
78 
82 
85 
87 typedef enum {
90 
94 
97 
102 {
104  dwFeature2DDetectorType type;
105 
108  uint32_t imageWidth;
109 
112  uint32_t imageHeight;
113 
117  uint32_t maxFeatureCount;
118 
124 
126  uint32_t cellSize;
127 
130  uint32_t gradientSize;
131 
135  uint32_t blockSize;
136 
143 
150 
163 
169  uint32_t detectionLevel;
170 
177  uint32_t harrisRadius;
178 
186  uint32_t NMSRadius;
187 
192  dwFeature2DSelectionMaskType maskType;
193 
199 
205 
212 
219 
222  bool useHalf;
223 
227 
233  DW_DEPRECATED("WARNING: will be removed in the next major release")
235 
240  DW_DEPRECATED("WARNING: will be removed in the next major release")
242 
248 
250 
260 
274  const dwTransformation3f* cameraToRig,
275  dwConstCameraModelHandle_t cameraHandle);
276 
289 dwStatus dwFeature2DDetector_initialize(dwFeature2DDetectorHandle_t* obj,
290  const dwFeature2DDetectorConfig* config,
291  cudaStream_t cudaStream,
292  dwContextHandle_t context);
293 
303 dwStatus dwFeature2DDetector_reset(dwFeature2DDetectorHandle_t obj);
304 
318 dwStatus dwFeature2DDetector_release(dwFeature2DDetectorHandle_t obj);
319 
338 dwStatus dwFeature2DDetector_setMask(const uint8_t* d_mask,
339  const uint32_t maskStrideBytes,
340  const uint32_t maskWidth,
341  const uint32_t maskHeight,
342  dwFeature2DDetectorHandle_t obj);
343 
375  dwImageHandle_t image,
376  dwFeatureArray* preTrackedFeatures,
377  const float32_t* d_normalizedCrossCorrelation,
378  dwFeature2DDetectorHandle_t obj);
379 
410  const dwPyramidImage* pyramid,
411  dwFeatureArray* preTrackedFeatures,
412  const float32_t* d_normalizedCrossCorrelation,
413  dwFeature2DDetectorHandle_t obj);
414 
421 DW_DEPRECATED("WARNING: will be removed in the next major release, validTrackedCount pointer can be read directly from dwFeatureArray")
423 dwStatus dwFeature2DDetector_getValidTrackedCount(const uint32_t** d_validTrackedCount,
424  dwFeature2DDetectorHandle_t obj);
425 
438 dwStatus dwFeature2DDetector_setCUDAStream(cudaStream_t stream, dwFeature2DDetectorHandle_t obj);
439 
450 dwStatus dwFeature2DDetector_getCUDAStream(cudaStream_t* stream, dwFeature2DDetectorHandle_t obj);
451 
452 #ifdef __cplusplus
453 }
454 #endif
455 
456 #endif // DW_IMAGEPROCESSING_FEATURE_DETECTOR_H_
NVIDIA DriveWorks API: Core Types
NVIDIA DriveWorks API: Camera Methods
Extended Harris Corner detector with more configurable parameters, more flexible, better quality but ...
Fast corner detector, quicker.
float32_t detailThreshold
for DW_FEATURE2D_DETECTOR_TYPE_STD only features in the cell that have scores higher than this value ...
DW_API_PUBLIC dwStatus dwFeature2DDetector_initDefaultParamsForCamera(dwFeature2DDetectorConfig *params, const dwTransformation3f *cameraToRig, dwConstCameraModelHandle_t cameraHandle)
Initializes dwFeature2DDetector parameters with values best suited for the given camera using camera ...
float float32_t
Specifies POD types.
Definition: Types.h:70
struct dwImageObject * dwImageHandle_t
Definition: Image.h:105
dwFeature2DSelectionMaskType
Feature distribution mask for extended detector.
dwFeature2DDetectorType
Defines different KLT tracking algorithms.
DW_API_PUBLIC dwStatus dwFeature2DDetector_setMask(const uint8_t *d_mask, const uint32_t maskStrideBytes, const uint32_t maskWidth, const uint32_t maskHeight, dwFeature2DDetectorHandle_t obj)
Sets a mask to ignore areas of the image.
float32_t gaussianMaskCenterX
for DW_FEATURE2D_DETECTOR_TYPE_EX only Ignored when not using DW_FEATURE2D_SELECTION_MASK_TYPE_GAUSSI...
uint32_t harrisRadius
for DW_FEATURE2D_DETECTOR_TYPE_EX only STD detector use fixed harrisRadius = 1.
dwProcessorType processorType
for DW_FEATURE2D_DETECTOR_TYPE_STD only set to DW_PROCESSOR_TYPE_PVA_0 or DW_PROCESSOR_TYPE_PVA_1 to ...
uint32_t detectionLevel
for DW_FEATURE2D_DETECTOR_TYPE_EX only STD detector always detects on level 0 pyramid image...
DW_API_PUBLIC dwStatus dwFeature2DDetector_initialize(dwFeature2DDetectorHandle_t *obj, const dwFeature2DDetectorConfig *config, cudaStream_t cudaStream, dwContextHandle_t context)
Creates and initializes a feature Detector.
DW_API_PUBLIC dwStatus dwFeature2DDetector_initDefaultParams(dwFeature2DDetectorConfig *params)
Initializes dwFeature2DDetector parameters with default values.
NVIDIA DriveWorks API: Image Conversion and Streaming Functionality
output feature in uniform distribution
uint32_t blockSize
for DW_PROCESSOR_TYPE_PVA_0 or DW_PROCESSOR_TYPE_PVA_1 only Block window size used to compute the Har...
DW_API_PUBLIC dwStatus dwFeature2DDetector_release(dwFeature2DDetectorHandle_t obj)
Releases the feature Detector.
DW_API_PUBLIC dwStatus dwFeature2DDetector_detectFromImage(dwFeatureArray *outputDetections, dwImageHandle_t image, dwFeatureArray *preTrackedFeatures, const float32_t *d_normalizedCrossCorrelation, dwFeature2DDetectorHandle_t obj)
Detects new features and append them after old tracked features.
output feature in 2D gaussian distribution which has more features in center area and less ones in bo...
Specifies a 3D rigid transformation.
Definition: Types.h:467
uint32_t imageWidth
Width of the images that the Detector runs on.
float32_t scoreThreshold
Threshold to filter out low latency points.
bool useHalf
for DW_FEATURE2D_DETECTOR_TYPE_EX only use half-precision floating point to calculate harris corner s...
dwStatus
Status definition.
Definition: Status.h:180
uint32_t maxFeatureCount
Upper bound on number of features handled.
dwProcessorType
Processor type definitions.
Definition: Types.h:161
float32_t gaussianMaskCenterY
for DW_FEATURE2D_DETECTOR_TYPE_EX only Ignored when not using DW_FEATURE2D_SELECTION_MASK_TYPE_GAUSSI...
uint32_t NMSRadius
for DW_FEATURE2D_DETECTOR_TYPE_EX and DW_FEATURE2D_DETECTOR_TYPE_FAST9 STD detector use fixed NMSRadi...
uint32_t cellSize
Cell size in pixel to split the image into cells.
#define DW_DEPRECATED(msg)
Definition: Exports.h:66
float32_t gaussianMaskStDevX
for DW_FEATURE2D_DETECTOR_TYPE_EX only Ignored when not using DW_FEATURE2D_SELECTION_MASK_TYPE_GAUSSI...
NVIDIA DriveWorks API: Pyramid
DW_API_PUBLIC dwStatus dwFeature2DDetector_getValidTrackedCount(const uint32_t **d_validTrackedCount, dwFeature2DDetectorHandle_t obj)
dwFeature2DDetector_getValidTrackedCount
const uint32_t DW_FEATURES2D_DETECTOR_MAX_CELL_SIZE
DW_API_PUBLIC dwStatus dwFeature2DDetector_reset(dwFeature2DDetectorHandle_t obj)
Resets a feature Detector.
struct dwCameraModelObject const * dwConstCameraModelHandle_t
A pointer to the handle representing a const calibrated camera.
Definition: CameraModel.h:70
uint32_t gradientSize
for DW_PROCESSOR_TYPE_PVA_0 or DW_PROCESSOR_TYPE_PVA_1 only Gradient window size. ...
Pyramid image structure.
Definition: Pyramid.h:64
bool isMaskAdjustmentEnabled
for DW_FEATURE2D_DETECTOR_TYPE_EX only Switch to use mask adjusment
DW_API_PUBLIC dwStatus dwFeature2DDetector_getCUDAStream(cudaStream_t *stream, dwFeature2DDetectorHandle_t obj)
Gets the CUDA stream used by the feature Detector.
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:79
NVIDIA DriveWorks API: Core Methods
struct dwFeature2DDetectorObject const * dwConstFeature2DDetectorHandle_t
Handle representing a const feature detector.
bool autoGenerateFeatureID
Determines whether the detector generates unique feature ids for new detections automatically.
bool useNewToOldMapFromPreTracked
Determines whether the detector uses dwFeatureArray::newToOldMap directly from input preTrackedFeatur...
float32_t harrisK
Weigting K of the harris corner score defined as det(M) - K * trace(M) * trace(M), where M is the structural matrix 0.04 - 0.06 is used typically If set to zero the default value (5e-2) will be used.
dwFeature2DSelectionMaskType maskType
for DW_FEATURE2D_DETECTOR_TYPE_EX only STD detector always output UNIFORM distribution.
struct dwFeature2DDetectorObject * dwFeature2DDetectorHandle_t
Handle representing a feature detector.
Standard Harris Corner detector with fixed parameters, quicker.
Holds configuration parameters for a feature detector.
float32_t gaussianMaskStDevY
for DW_FEATURE2D_DETECTOR_TYPE_EX only Ignored when not using DW_FEATURE2D_SELECTION_MASK_TYPE_GAUSSI...
NVIDIA DriveWorks API: Feature Array and Feature History Array
uint32_t imageHeight
Height of the images that the Detector runs on.
dwFeature2DDetectorType type
Detecting algorithm defined by dwFeature2DDetectorType
#define DW_API_PUBLIC
Definition: Exports.h:54
uint32_t numEvenDistributionPerCell
for DW_FEATURE2D_DETECTOR_TYPE_STD only Number of features to be appended after high frequency points...
DW_API_PUBLIC dwStatus dwFeature2DDetector_detectFromPyramid(dwFeatureArray *outputDetections, const dwPyramidImage *pyramid, dwFeatureArray *preTrackedFeatures, const float32_t *d_normalizedCrossCorrelation, dwFeature2DDetectorHandle_t obj)
Detects new features and append them after old tracked features.
DW_API_PUBLIC dwStatus dwFeature2DDetector_setCUDAStream(cudaStream_t stream, dwFeature2DDetectorHandle_t obj)
Sets the CUDA stream for CUDA related operations.
NVIDIA DriveWorks API: Core Exports