内参矩阵

内参矩阵是将3D相机坐标变换到2D齐次图像坐标。透视投影的一个理想模型就是针孔相机。

这里写图片描述

内参矩阵如下K=\begin{bmatrix} f_x& s&x_0\\ 0&f_y & y_0\\ 0&0 &1 \end{bmatrix}


其中每一个参数都有实际意义。

  • 表示焦距的参数:fx,fy

        焦距就是真空与图像平面(投影屏幕)的距离,类似于人眼和视网膜,焦距的度量是针对像素的。针孔相机的fx,fy

有相同的值。上图中红线部分就是焦距。但是在实际中,fx和fy一般不同,因为

数码相机传感器的缺陷

后处理中图像被非均匀缩放

相机透镜导致的无意的失真

相机使用了失真的格式,透镜将宽屏场景压缩到标准大小的传感器中

相机校准的误差

  • 主点偏移x0,y0

相机的主轴是与图像平面垂直且穿过真空的线,它与图像平面的焦点称为主点。

主点偏移就是主点位置相对于图像平面(投影面)的位置。上图中,增加x0的值相当于把针孔向右移动,等价将投影面向左移动同时保持针孔位置不变。

K=\begin{bmatrix} f_x& s&x_0\\ 0&f_y & y_0\\ 0&0 &1 \end{bmatrix}=\begin{bmatrix} 1& 0&x_0\\ 0&1 & y_0\\ 0&0 &1 \end{bmatrix}\begin{bmatrix} f_x& 0&0\\ 0&f_y & 0\\ 0&0 &1 \end{bmatrix}\begin{bmatrix}1& \frac{s}{f_{x}}&0\\ 0&1& 0\\ 0&0 &1 \end{bmatrix}

将内参矩阵分解为切变(shear,类似于将长方形压成平行四边形的变形方式)、缩放,平移变换,分别对应轴倾斜、焦距、主点偏移

第二个等式右边三个矩阵依次是:2D平移、2D缩放、2D切变

OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,它包含了丰富的图像处理和计算机视觉算法。其中的`Mat`对象是用来表示多维数组,类似于NumPy的ndarray,是OpenCV的核心数据结构。 `cv::Mat`可以用于定义内参矩阵,特别是对于摄像头、投影等光学系统,需要描述像差校正、畸变校正等操作的矩阵。例如,相机的内参数矩阵通常包含五个元素,称为5x4的卡尔·费舍尔(Fisher-Kanade)参数,它们描述了镜头的焦距、主点坐标以及径向畸变系数。另一种常见的矩阵是外参数矩阵,描述的是相机相对于世界坐标系的位置和旋转。 定义内参矩阵通常涉及到以下步骤: 1. 初始化一个`cv::Mat`对象,指定其类型(如`CV_64FC1`表示单精度浮点数的一维数组)和大小。 ```cpp cv::Mat intrinsics(5, 3, CV_64FC1); // 5x3 单精度浮点内参矩阵 ``` 2. 设置矩阵元素,比如对焦距、主点和畸变系数的设置: ```cpp intrinsics.at<double>(0, 0) = focalLength; // 焦距 intrinsics.at<double>(0, 2) = principalPoint.x; // 主点X坐标 intrinsics.at<double>(1, 1) = focalLength; intrinsics.at<double>(1, 2) = principalPoint.y; // 主点Y坐标 // 可能还需要添加径向畸变系数 intrinsics.at<double>(2, 0) = radialDistortion[0]; intrinsics.at<double>(2, 1) = radialDistortion[1]; intrinsics.at<double>(2, 2) = 1; ``` 3. 使用这个内参矩阵进行相关的成像模型计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值