VPI - 视觉编程接口

3.2 版本发布

镜头畸变校正

数据结构

struct  VPIFisheyeLensDistortionModel
 包含鱼眼镜头畸变模型的系数。 更多...
 
struct  VPIPolynomialLensDistortionModel
 包含多项式镜头畸变模型的系数。 更多...
 

类型定义

typedef float VPICameraIntrinsic[2][3]
 相机内参矩阵。 更多...
 
typedef float VPICameraExtrinsic[3][4]
 相机外参矩阵。 更多...
 

枚举

enum  VPIFisheyeMapping
 支持的鱼眼镜头映射类型。 更多...
 

函数

VPIStatus vpiWarpMapGenerateFromFisheyeLensDistortionModel (const VPICameraIntrinsic Kin, const VPICameraExtrinsic X, const VPICameraIntrinsic Kout, const VPIFisheyeLensDistortionModel *distModel, VPIWarpMap *warpMap)
 生成一个映射,用于校正由鱼眼镜头引起的图像畸变。 更多...
 
VPIStatus vpiWarpMapGenerateFromPolynomialLensDistortionModel (const VPICameraIntrinsic Kin, const VPICameraExtrinsic X, const VPICameraIntrinsic Kout, const VPIPolynomialLensDistortionModel *distModel, VPIWarpMap *warpMap)
 生成一个映射,使用多项式镜头畸变模型校正图像。 更多...
 

详细描述


数据结构文档

◆ VPIFisheyeLensDistortionModel

struct VPIFisheyeLensDistortionModel

包含鱼眼镜头畸变模型的系数。

鱼眼镜头畸变模型定义如下:

\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*}

其中

  • \(k_1,k_2,k_3,k_4\) 是畸变系数。
  • \((u_d,v_d)\) 是畸变图像中点的坐标。
  • \((u,v)\) 是校正图像中点的坐标。
  • \(D(\theta)\) 定义了从点角度和像素距离到图像中心的映射。 详见 VPIFisheyeMapping 以了解详情。

Definition at line 137 of file LensDistortionModels.h.

+ VPIFisheyeLensDistortionModel 的协作图
数据字段
VPIFisheyeMapping mapping 像素角度和像素距离到图像中心之间的映射。
float k1

鱼眼畸变系数。

float k2

鱼眼畸变系数。

float k3

鱼眼畸变系数。

float k4

鱼眼畸变系数。

◆ VPIPolynomialLensDistortionModel

struct VPIPolynomialLensDistortionModel

包含多项式镜头畸变模型的系数。

多项式镜头畸变模型定义如下:

\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*}

其中

  • \(k_1,k_2,k_3,k_4,k_5,k_6\) 是径向畸变系数。
  • \(p_1,p_2\) 是切向畸变系数。
  • \((u_d,v_d)\) 是畸变图像中点的坐标。
  • \((u,v)\) 是校正图像中点的坐标。

Definition at line 215 of file LensDistortionModels.h.

+ VPIPolynomialLensDistortionModel 的协作图
数据字段
float k1

径向畸变系数。

float k2

径向畸变系数。

float k3

径向畸变系数。

float k4

径向畸变系数。

float k5

径向畸变系数。

float k6

径向畸变系数。

float p1

切向畸变系数。

float p2

切向畸变系数。

类型定义文档

◆ VPICameraIntrinsic

typedef float VPICameraIntrinsic[2][3]

#include <vpi/Types.h>

相机内参矩阵。

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

其中

  • \(f_x, f_y\): 焦距,单位为像素。
  • \(s\): 倾斜度,用于模拟倾斜像素。
  • \(c_x, c_y\): 主点。

Definition at line 655 of file Types.h.

◆ VPICameraExtrinsic

typedef float VPICameraExtrinsic[3][4]

#include <vpi/Types.h>

相机外参矩阵。

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

其中:\(R_{3\times3}\): 旋转矩阵。 \(T_{3\times1}\): 世界坐标系原点的 3D 位置,以相机为中心的坐标系表示。

Definition at line 668 of file Types.h.

枚举类型文档

◆ VPIFisheyeMapping

#include <vpi/LensDistortionModels.h>

支持的鱼眼镜头映射类型。

枚举器
VPI_FISHEYE_EQUIDISTANT 

指定等距鱼眼映射。

映射定义如下:

\[r = f\theta\]

其中

  • \(\theta\) 是光轴的角度。
  • \(f\) 是焦距。
  • \(r\) 是像素到图像中心的距离。
VPI_FISHEYE_EQUISOLID 

指定等立体角鱼眼映射。

映射定义如下:

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

其中

  • \(\theta\) 是光轴的角度。
  • \(f\) 是焦距。
  • \(r\) 是像素到图像中心的距离。
VPI_FISHEYE_ORTHOGRAPHIC 

指定正交鱼眼映射。

映射定义如下:

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

其中

  • \(\theta\) 是光轴的角度。
  • \(f\) 是焦距。
  • \(r\) 是像素到图像中心的距离。
VPI_FISHEYE_STEREOGRAPHIC 

指定立体鱼眼映射。

映射定义如下:

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

其中

  • \(\theta\) 是光轴的角度。
  • \(f\) 是焦距。
  • \(r\) 是像素到图像中心的距离。

Definition at line 76 of file LensDistortionModels.h.

函数文档

◆ vpiWarpMapGenerateFromFisheyeLensDistortionModel()

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

#include <vpi/LensDistortionModels.h>

生成一个映射,用于校正由鱼眼镜头引起的图像畸变。

给定相机内参和外参以及鱼眼镜头畸变模型,生成一个 VPIWarpMap,适用于 Remap 算法,以消除配备鱼眼镜头的相机拍摄的图像的畸变。

映射由以下矩阵方程定义:

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

其中

  • \(x\) 是输入齐次坐标
  • \(y\) 是畸变图像上对应的齐次坐标。
  • \(L\) 是鱼眼镜头畸变模型(非矩阵),请参阅 VPIFisheyeLensDistortionModel
  • 其余变量是此函数的输入参数。
参数
[in]Kin相机内参。
[in]X相机外参,定义了相机中心位置及其在世界坐标系中的朝向。
[in]Kout应用于未畸变图像的新相机内参。 对于单目相机,Kout 通常等于 Kin。
[in]distModel鱼眼镜头畸变模型。
[输出]warpMap生成的扭曲映射,用作 Remap 算法的输入。
返回值
VPI_ERROR_INVALID_ARGUMENTwarpMap 为 NULL。
VPI_ERROR_INVALID_ARGUMENTKin 为 NULL。
VPI_ERROR_INVALID_ARGUMENTX 为 NULL。
VPI_ERROR_INVALID_ARGUMENT输出 Kout 为 NULL。
VPI_ERROR_INVALID_ARGUMENTdistModel 为 NULL。
VPI_ERROR_INVALID_ARGUMENTdistModel 中的鱼眼模型无效。
VPI_SUCCESS操作执行成功。

◆ vpiWarpMapGenerateFromPolynomialLensDistortionModel()

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

#include <vpi/LensDistortionModels.h>

生成一个映射,使用多项式镜头畸变模型校正图像。

给定相机内参和外参以及多项式镜头畸变模型,生成一个 VPIWarpMap,适用于 Remap 算法,以消除图像畸变。

映射由以下矩阵方程定义:

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

其中

  • \(x\) 是输入齐次坐标
  • \(y\) 是畸变图像上对应的齐次坐标。
  • \(L\) 是多项式镜头畸变模型(非矩阵),请参阅 VPIPolynomialLensDistortionModel
  • 其余变量是此函数的输入参数。
参数
[in]Kin相机内参。
[in]X相机外参,定义了相机中心位置及其在世界坐标系中的朝向。
[in]Kout应用于未畸变图像的新相机内参。 对于单目相机,Kout 通常等于 Kin。
[in]distModel多项式镜头畸变模型。
[输出]warpMap生成的扭曲映射,用作 Remap 算法的输入。
返回值
VPI_ERROR_INVALID_ARGUMENTwarpMap 为 NULL。
VPI_ERROR_INVALID_ARGUMENTKin 为 NULL。
VPI_ERROR_INVALID_ARGUMENTX 为 NULL。
VPI_ERROR_INVALID_ARGUMENT输出 Kout 为 NULL。
VPI_ERROR_INVALID_ARGUMENTdistModel 为 NULL。
VPI_ERROR_INVALID_ARGUMENTdistModel 中的多项式模型无效。
VPI_SUCCESS操作执行成功。