DriveWorks SDK Reference
4.0.0 Release
For Test and Development only

FeatureDetector.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_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 
234 
240 
246 
248 
257 
271  const dwTransformation3f* cameraToRig,
272  dwConstCameraModelHandle_t cameraHandle);
273 
286 dwStatus dwFeature2DDetector_initialize(dwFeature2DDetectorHandle_t* obj,
287  const dwFeature2DDetectorConfig* config,
288  cudaStream_t cudaStream,
289  dwContextHandle_t context);
290 
300 dwStatus dwFeature2DDetector_reset(dwFeature2DDetectorHandle_t obj);
301 
315 dwStatus dwFeature2DDetector_release(dwFeature2DDetectorHandle_t obj);
316 
335 dwStatus dwFeature2DDetector_setMask(const uint8_t* d_mask,
336  const uint32_t maskStrideBytes,
337  const uint32_t maskWidth,
338  const uint32_t maskHeight,
339  dwFeature2DDetectorHandle_t obj);
340 
372  dwImageHandle_t image,
373  dwFeatureArray* preTrackedFeatures,
374  const float32_t* d_normalizedCrossCorrelation,
375  dwFeature2DDetectorHandle_t obj);
376 
407  const dwPyramidImage* pyramid,
408  dwFeatureArray* preTrackedFeatures,
409  const float32_t* d_normalizedCrossCorrelation,
410  dwFeature2DDetectorHandle_t obj);
411 
419 dwStatus dwFeature2DDetector_getValidTrackedCount(const uint32_t** d_validTrackedCount,
420  dwFeature2DDetectorHandle_t obj);
421 
434 dwStatus dwFeature2DDetector_setCUDAStream(cudaStream_t stream, dwFeature2DDetectorHandle_t obj);
435 
446 dwStatus dwFeature2DDetector_getCUDAStream(cudaStream_t* stream, dwFeature2DDetectorHandle_t obj);
447 
448 #ifdef __cplusplus
449 }
450 #endif
451 
452 #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:100
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:462
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:159
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.
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