DriveWorks SDK Reference
3.0.4260 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-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_FEATURE_DETECTOR_H_
49 #define DW_IMAGEPROCESSING_FEATURE_DETECTOR_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>
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
65 typedef struct dwFeature2DDetectorObject* dwFeature2DDetectorHandle_t;
66 
68 typedef struct dwFeature2DDetectorObject const* dwConstFeature2DDetectorHandle_t;
69 
76 
80 
84 
87 
89 typedef enum {
92 
96 
99 
104 {
106  dwFeature2DDetectorType type;
107 
110  uint32_t imageWidth;
111 
114  uint32_t imageHeight;
115 
119  uint32_t maxFeatureCount;
120 
126 
128  uint32_t cellSize;
129 
132  uint32_t gradientSize;
133 
137  uint32_t blockSize;
138 
145 
152 
165 
171  uint32_t detectionLevel;
172 
179  uint32_t harrisRadius;
180 
188  uint32_t NMSRadius;
189 
194  dwFeature2DSelectionMaskType maskType;
195 
199 
206 
212 
218 
220 
229 
243  const dwTransformation3f* cameraToRig,
244  dwConstCameraModelHandle_t cameraHandle);
245 
258 dwStatus dwFeature2DDetector_initialize(dwFeature2DDetectorHandle_t* obj,
259  const dwFeature2DDetectorConfig* config,
260  cudaStream_t cudaStream,
261  dwContextHandle_t context);
262 
272 dwStatus dwFeature2DDetector_reset(dwFeature2DDetectorHandle_t obj);
273 
287 dwStatus dwFeature2DDetector_release(dwFeature2DDetectorHandle_t obj);
288 
307 dwStatus dwFeature2DDetector_setMask(const uint8_t* d_mask,
308  const uint32_t maskStrideBytes,
309  const uint32_t maskWidth,
310  const uint32_t maskHeight,
311  dwFeature2DDetectorHandle_t obj);
312 
344  dwImageHandle_t image,
345  dwFeatureArray* preTrackedFeatures,
346  const float32_t* d_normalizedCrossCorrelation,
347  dwFeature2DDetectorHandle_t obj);
348 
379  const dwPyramidImage* pyramid,
380  dwFeatureArray* preTrackedFeatures,
381  const float32_t* d_normalizedCrossCorrelation,
382  dwFeature2DDetectorHandle_t obj);
383 
391 dwStatus dwFeature2DDetector_getValidTrackedCount(const uint32_t** d_validTrackedCount,
392  dwFeature2DDetectorHandle_t obj);
393 
406 dwStatus dwFeature2DDetector_setCUDAStream(cudaStream_t stream, dwFeature2DDetectorHandle_t obj);
407 
418 dwStatus dwFeature2DDetector_getCUDAStream(cudaStream_t* stream, dwFeature2DDetectorHandle_t obj);
419 
420 #ifdef __cplusplus
421 }
422 #endif
423 
424 #endif // DW_IMAGEPROCESSING_FEATURE_DETECTOR_H_
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 ...
NVIDIA DriveWorks API: Core Types
float float32_t
Specifies POD types.
Definition: Types.h:70
struct dwImageObject * dwImageHandle_t
Definition: Image.h:99
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.
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...
NVIDIA DriveWorks API: Core Methods
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.
dwStatus
Status definition.
Definition: Status.h:166
uint32_t maxFeatureCount
Upper bound on number of features handled.
dwProcessorType
Processor type definitions.
Definition: Types.h:159
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.
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:72
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:66
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:80
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.
NVIDIA DriveWorks API: Core Exports
Holds configuration parameters for a feature detector.
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:56
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.