VPI - Vision Programming Interface

3.0 Release

Lens Distortion Correction

Data Structures

struct  VPIFisheyeLensDistortionModel
 Holds coefficients for fisheye lens distortion model. More...
 
struct  VPIPolynomialLensDistortionModel
 Holds coefficients for polynomial lens distortion model. More...
 

Typedefs

typedef float VPICameraIntrinsic[2][3]
 Camera intrinsic matrix. More...
 
typedef float VPICameraExtrinsic[3][4]
 Camera extrinsic matrix. More...
 

Enumerations

enum  VPIFisheyeMapping
 Supported fisheye lens mapping types. More...
 

Functions

VPIStatus vpiWarpMapGenerateFromFisheyeLensDistortionModel (const VPICameraIntrinsic Kin, const VPICameraExtrinsic X, const VPICameraIntrinsic Kout, const VPIFisheyeLensDistortionModel *distModel, VPIWarpMap *warpMap)
 Generates a mapping that corrects image distortions caused by fisheye lenses. More...
 
VPIStatus vpiWarpMapGenerateFromPolynomialLensDistortionModel (const VPICameraIntrinsic Kin, const VPICameraExtrinsic X, const VPICameraIntrinsic Kout, const VPIPolynomialLensDistortionModel *distModel, VPIWarpMap *warpMap)
 Generates a mapping that corrects image using polynomial lens distortion model. More...
 

Detailed Description


Data Structure Documentation

◆ VPIFisheyeLensDistortionModel

struct VPIFisheyeLensDistortionModel

Holds coefficients for fisheye lens distortion model.

The fisheye lens distortion model is defined by:

\begin{align*} r &= \sqrt{u^2 + v^2} \\ \theta &= \arctan(r) \\ r_d &= D(\theta + k_1 * \theta^3 + k_2 * \theta^5 + k_3 * \theta^7 + k_4 * \theta^9) \\ c_d &= r_d/r \\ u_d &= u*c_d \\ v_d &= v*c_d \end{align*}

where:

  • \(k_1,k_2,k_3,k_4\) are the distortion coefficients.
  • \((u_d,v_d)\) is the coordinate of a point in the distorted image.
  • \((u,v)\) is the coordinate of a point in the corrected image.
  • \(D(\theta)\) defines the mapping from point angle and pixel distance to image center. See VPIFisheyeMapping for details.

Definition at line 137 of file LensDistortionModels.h.

+ Collaboration diagram for VPIFisheyeLensDistortionModel:
Data Fields
VPIFisheyeMapping mapping Mapping between pixel angle and pixel distance to image center.
float k1

Fisheye distortion coefficients.

float k2

Fisheye distortion coefficients.

float k3

Fisheye distortion coefficients.

float k4

Fisheye distortion coefficients.

◆ VPIPolynomialLensDistortionModel

struct VPIPolynomialLensDistortionModel

Holds coefficients for polynomial lens distortion model.

The polynomial lens distortion model is defined by:

\begin{align*} r &= \sqrt{u^2 + v^2} \\ k_r &= \frac{1 + k_1r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} \\ u_d &= k_r u + p_1(2uv) + p_2 * (r^2 + 2u^2) \\ v_d &= k_r v + p_1(r^2 + 2v^2) + p_2(2uv) \end{align*}

where:

  • \(k_1,k_2,k_3,k_4,k_5,k_6\) are the radial distortion coefficients.
  • \(p_1,p_2\) are the tangential distortion coefficients.
  • \((u_d,v_d)\) is the coordinate of a point in the distorted image.
  • \((u,v)\) is the coordinate of a point in the corrected image.

Definition at line 215 of file LensDistortionModels.h.

+ Collaboration diagram for VPIPolynomialLensDistortionModel:
Data Fields
float k1

Radial distortion coefficients.

float k2

Radial distortion coefficients.

float k3

Radial distortion coefficients.

float k4

Radial distortion coefficients.

float k5

Radial distortion coefficients.

float k6

Radial distortion coefficients.

float p1

Tangential distortion coefficients.

float p2

Tangential distortion coefficients.

Typedef Documentation

◆ VPICameraIntrinsic

typedef float VPICameraIntrinsic[2][3]

#include </opt/nvidia/vpi3/include/vpi/Types.h>

Camera intrinsic matrix.

\begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \end{bmatrix}

Where:

  • \(f_x, f_y\): focal length in pixels.
  • \(s\): skew, used to model slanted pixels.
  • \(c_x, c_y\): principal point.

Definition at line 633 of file Types.h.

◆ VPICameraExtrinsic

typedef float VPICameraExtrinsic[3][4]

#include </opt/nvidia/vpi3/include/vpi/Types.h>

Camera extrinsic matrix.

\begin{bmatrix} R_{3\times3} & T_{3\times1} \end{bmatrix}

Where: \(R_{3\times3}\): Rotation matrix. \(T_{3\times1}\): 3D position of the origin of world coordinate system expressed in coordinates of camera-centered system.

Definition at line 646 of file Types.h.

Enumeration Type Documentation

◆ VPIFisheyeMapping

#include </opt/nvidia/vpi3/include/vpi/LensDistortionModels.h>

Supported fisheye lens mapping types.

Enumerator
VPI_FISHEYE_EQUIDISTANT 

Specifies the equidistant fisheye mapping.

Mapping is defined by:

\[r = f\theta\]

where:

  • \(\theta\) is the angle from the optical axis.
  • \(f\) is the focal length.
  • \(r\) is the distance of a pixel from the image center.
VPI_FISHEYE_EQUISOLID 

Specifies the equisolid fisheye mapping.

Mapping is defined by:

\[r = 2f\sin\left(\frac{\theta}{2}\right)\]

where:

  • \(\theta\) is the angle from the optical axis.
  • \(f\) is the focal length.
  • \(r\) is the distance of a pixel from the image center.
VPI_FISHEYE_ORTHOGRAPHIC 

Specifies the orthographic fisheye mapping.

Mapping is defined by:

\[r = f\sin(\theta)\]

where:

  • \(\theta\) is the angle from the optical axis.
  • \(f\) is the focal length.
  • \(r\) is the distance of a pixel from the image center.
VPI_FISHEYE_STEREOGRAPHIC 

Specifies the stereographic fisheye mapping.

Mapping is defined by:

\[r = 2f\tan\left(\frac{\theta}{2}\right)\]

where:

  • \(\theta\) is the angle from the optical axis.
  • \(f\) is the focal length.
  • \(r\) is the distance of a pixel from the image center.

Definition at line 76 of file LensDistortionModels.h.

Function Documentation

◆ vpiWarpMapGenerateFromFisheyeLensDistortionModel()

VPIStatus vpiWarpMapGenerateFromFisheyeLensDistortionModel ( const VPICameraIntrinsic  Kin,
const VPICameraExtrinsic  X,
const VPICameraIntrinsic  Kout,
const VPIFisheyeLensDistortionModel distModel,
VPIWarpMap warpMap 
)

#include </opt/nvidia/vpi3/include/vpi/LensDistortionModels.h>

Generates a mapping that corrects image distortions caused by fisheye lenses.

Given camera intrinsic and extrinsic parameters, and fisheye lens distortion model, generates a VPIWarpMap suitable to be used by Remap to undistort images captured by cameras equipped with fisheye lens.

The mapping is defined by the following matrix equation:

\[ y = (K_{out} L X K_{in}) x \]

where:

  • \(x\) is the input homogeneous coordinate
  • \(y\) is the corresponding homogeneous coordinate on the distorted image.
  • \(L\) is the fisheye lens distortion model (not a matrix), see VPIFisheyeLensDistortionModel.
  • remaining variables are the input parameters to this function.
Parameters
[in]KinCamera intrinsic parameters.
[in]XCamera extrinsic parameters that defines the camera center position and its heading in world coordinates.
[in]KoutNew camera intrinsic parameters applied to the undistorted image. For monocular cameras, Kout is usually equal to Kin.
[in]distModelFisheye lens distortion model.
[out]warpMapResulting warp map that serves as input to Remap algorithm.
Return values
VPI_ERROR_INVALID_ARGUMENTwarpMap is NULL.
VPI_ERROR_INVALID_ARGUMENTKin is NULL.
VPI_ERROR_INVALID_ARGUMENTX is NULL.
VPI_ERROR_INVALID_ARGUMENTOutput Kout is NULL.
VPI_ERROR_INVALID_ARGUMENTdistModel is NULL.
VPI_ERROR_INVALID_ARGUMENTFisheye model in distModel is invalid.
VPI_SUCCESSOperation executed successfully.

◆ vpiWarpMapGenerateFromPolynomialLensDistortionModel()

VPIStatus vpiWarpMapGenerateFromPolynomialLensDistortionModel ( const VPICameraIntrinsic  Kin,
const VPICameraExtrinsic  X,
const VPICameraIntrinsic  Kout,
const VPIPolynomialLensDistortionModel distModel,
VPIWarpMap warpMap 
)

#include </opt/nvidia/vpi3/include/vpi/LensDistortionModels.h>

Generates a mapping that corrects image using polynomial lens distortion model.

Given camera intrinsic and extrinsic parameters, and the polynomial lens distortion model, generates a VPIWarpMap suitable to be used by Remap to undistort images.

The mapping is defined by the following matrix equation:

\[ y = (K_{out} L X K_{in}) x \]

where:

  • \(x\) is the input homogeneous coordinate
  • \(y\) is the corresponding homogeneous coordinate on the distorted image.
  • \(L\) is the polynomial lens distortion model (not a matrix), see VPIPolynomialLensDistortionModel
  • remaining variables are the input parameters to this function.
Parameters
[in]KinCamera intrinsic parameters.
[in]XCamera extrinsic parameters that defines the camera center position and its heading in world coordinates.
[in]KoutNew camera intrinsic parameters applied to the undistorted image. For monocular cameras, Kout is usually equal to Kin.
[in]distModelPolynomial lens distortion model.
[out]warpMapResulting warp map that serves as input to Remap algorithm.
Return values
VPI_ERROR_INVALID_ARGUMENTwarpMap is NULL.
VPI_ERROR_INVALID_ARGUMENTKin is NULL.
VPI_ERROR_INVALID_ARGUMENTX is NULL.
VPI_ERROR_INVALID_ARGUMENTOutput Kout is NULL.
VPI_ERROR_INVALID_ARGUMENTdistModel is NULL.
VPI_ERROR_INVALID_ARGUMENTPolynomial model in distModel is invalid.
VPI_SUCCESSOperation executed successfully.