VPI - Vision Programming Interface

3.1 Release

TransformEstimator.h
Go to the documentation of this file.
1 /*
2  * Copyright 2023-2024 NVIDIA Corporation. All rights reserved.
3  *
4  * NOTICE TO LICENSEE:
5  *
6  * This source code and/or documentation ("Licensed Deliverables") are
7  * subject to NVIDIA intellectual property rights under U.S. and
8  * international Copyright laws.
9  *
10  * These Licensed Deliverables contained herein is PROPRIETARY and
11  * CONFIDENTIAL to NVIDIA and is being provided under the terms and
12  * conditions of a form of NVIDIA software license agreement by and
13  * between NVIDIA and Licensee ("License Agreement") or electronically
14  * accepted by Licensee. Notwithstanding any terms or conditions to
15  * the contrary in the License Agreement, reproduction or disclosure
16  * of the Licensed Deliverables to any third party without the express
17  * written consent of NVIDIA is prohibited.
18  *
19  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
20  * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
21  * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
22  * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
23  * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
24  * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
25  * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
26  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
27  * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
28  * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
29  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
31  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32  * OF THESE LICENSED DELIVERABLES.
33  *
34  * U.S. Government End Users. These Licensed Deliverables are a
35  * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
36  * 1995), consisting of "commercial computer software" and "commercial
37  * computer software documentation" as such terms are used in 48
38  * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
39  * only as a commercial end item. Consistent with 48 C.F.R.12.212 and
40  * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
41  * U.S. Government End Users acquire the Licensed Deliverables with
42  * only those rights set forth herein.
43  *
44  * Any use of the Licensed Deliverables in individual and commercial
45  * software must include, in the user documentation and internal
46  * comments to the code, the above Disclaimer and U.S. Government End
47  * Users Notice.
48  */
49 
56 #ifndef NV_VPI_ALGORITHMS_TRANSFORM_ESTIMATOR_H
57 #define NV_VPI_ALGORITHMS_TRANSFORM_ESTIMATOR_H
58 
59 #include "../AlgoFlags.h"
60 #include "../Export.h"
61 #include "../Status.h"
62 #include "../Types.h"
63 
64 #include <stdint.h>
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
101 VPI_PUBLIC VPIStatus vpiCreateTransformEstimator(uint64_t backends, int32_t maxKeypoints, VPIPayload *payload);
102 
104 typedef struct
105 {
111  float minRotation, maxRotation;
112  /* @} */
113 
120  float minXScale, maxXScale;
129  float minYScale, maxYScale;
138  float minXTranslation, maxXTranslation;
147  float minYTranslation, maxYTranslation;
156  float minShear, maxShear;
162  int8_t isAffine;
163 
169 
171 typedef enum
172 {
176 
178 typedef union
179 {
180  VPIConstrainedHomography2DConfig constrainedHomography2D;
182 
184 typedef enum
185 {
191 
193 typedef struct
194 {
197 
200 
208  int32_t ransacSeed;
212 
218 
260 
338 VPI_PUBLIC VPIStatus vpiSubmitTransformEstimator(VPIStream stream, uint64_t backend, VPIPayload payload,
339  VPIArray srcKeypoints, VPIArray tgtKeypoints, VPIArray matches,
340  VPIArray outTransform, VPIArray outInliers,
341  const VPITransformEstimatorParams *params);
342 
345 #ifdef __cplusplus
346 }
347 #endif
348 
349 #endif /* NV_VPI_ALGORITHMS_TRANSFORM_ESTIMATOR_H */
struct VPIArrayImpl * VPIArray
A handle to an array.
Definition: Types.h:232
struct VPIPayloadImpl * VPIPayload
A handle to an algorithm payload.
Definition: Types.h:268
VPIStatus
Status codes.
Definition: Status.h:81
struct VPIStreamImpl * VPIStream
A handle to a stream.
Definition: Types.h:250
float maxXTranslation
Valid horizontal translation range.
int32_t solverMaxIterations
Maximum number of iterations the non-linear solver should take.
VPITransformConfig xfcfg
Transform configuration, such as trusted boundaries, etc.
float ransacReprojErrorTolerance
Maximum allowed reprojection error for a point to be treated as an inlier.
int32_t ransacMaxIterations
Maximum number of RANSAC iterations.
float maxShear
Valid shearing range.
VPITransformType xftype
Type of transform to estimate.
float maxXScale
Valid rotation range, in radians.
float maxRotation
Valid rotation range, in radians.
float maxYScale
Valid vertical scale range.
float maxYTranslation
Valid vertical translation range.
float ransacConfidenceLevel
Maximum allowed reprojection error for a point to be treated as an inlier.
int32_t maxRefinementIterations
Maximum number of iterations for model refinement step.
int8_t isAffine
Whether to restrict to affine transforms.
int32_t ransacSeed
Random number seed to be used.
VPITransfomEstimationMethod method
Method to use for transform estimation.
int8_t isIsotropicScale
Whether scaling is uniform in all directions (isotropic) or not.
VPITransfomEstimationMethod
Transform estimation method.
VPITransformType
Types of transformation supported.
VPIStatus vpiCreateTransformEstimator(uint64_t backends, int32_t maxKeypoints, VPIPayload *payload)
Creates payload for vpiSubmitTransformEstimator.
VPIStatus vpiSubmitTransformEstimator(VPIStream stream, uint64_t backend, VPIPayload payload, VPIArray srcKeypoints, VPIArray tgtKeypoints, VPIArray matches, VPIArray outTransform, VPIArray outInliers, const VPITransformEstimatorParams *params)
Submits a Transform Estimator operation to the stream.
VPIStatus vpiInitTransformEstimatorParams(VPITransformType type, VPITransformEstimatorParams *params)
Initializes the VPITransformEstimatorParams with default values for a given transform type.
@ VPI_XFORM_ESTIM_METHOD_REGULAR
Use least squares minimization method.
@ VPI_XFORM_ESTIM_METHOD_RANSAC
Use robust estimation with RANSAC and least squares.
@ VPI_XFORM_CONSTRAINED_HOMOGRAPHY_2D
Represents a constrained 2D homography transform.
Holds the configuration of a constrained 2d homography transform.
Parameters used to tune Transform Estimator algorithm.
Transformation parameters.