环境:
Matlab R2016a ,只有2014a以后的版本才有stereoCalibrator这个工具箱
参数解释:
输入参数:
size of checkboard suqare
标定板一个小格的边长。这是所有输入量中唯一一个有世界尺度信息的量,用于把以像素为单位的值转化成以mm或者m为单位的值;
左右相机图片:
尽量使标定板占满图片;
estimate skew = ture:
Camera axes skew, specified as a scalar. If the x and the y axes are exactly perpendicular, then set the skew to 0
.
相机x,y轴的倾斜,是个标量。如果x,y完全垂直,则skew=0;
我标定后得到的结果skew值不为0~说明xy轴不完全垂直,可能也是后面求disparity不准的原因之一吧。
camera distortion 畸变参数
径向畸变系数的个数,2 coefficient或者3 ~; 切向畸变 estimateTangentialDistortion = true
解释:
径向畸变是,坐标点距离原点的长度不正常;切向畸变是,坐标点沿着切线方向发生变化,水平夹角异常 -- 高博SLAM十四讲
1 radial distortion 径向畸变
Radial distortion coefficients, specified as either a 2- or 3-element vector. When you specify a 2-element vector, the object sets the third element to 0
. Radial distortion occurs when light rays bend more near the edges of a lens than they do at its optical center. The smaller the lens, the greater the distortion. The camera parameters object calculates the radial distorted location of a point. You can denote the distorted points as (xdistorted, ydistorted), as follows:
径向畸变系数,2元或者3元向量。用来矫正由透镜形状引起的径向畸变(光线穿过透镜时,在透镜边缘弯曲程度大于靠近中心处的弯曲程度,造成桶形失真或者枕形失真)。
枕形失真
桶形失真
所以用k1,k2,k3三个参数矫正径向畸变。
xdistorted = x(1 + k1*r2 + k2*r4 + k3*r6)
ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6)
x, y = undistorted pixel locations |
k1, k2, and k3 = radial distortion coefficients of the lens |
r2 = x2 + y2 |
高翔《视觉SLAM十四讲》中写到:对于畸变较小的图像中心区域,主要是k1起作用;对于畸变较大的边缘区域主要是k2起作用。普通相机这两个系数就够用了,
对于鱼眼相机这种畸变特别大的才用的上第三个参数k3
k3. The undistorted pixel locations appear in normalized image coordinates, with the origin at the optical center. The coordinates are expressed in world units.
去畸变后的点位于归一化平面上(不是像素平面),原点在光心。坐标以世界单位(默认毫米)表示。
2 tangential distortion 切向畸变
Tangential distortion coefficients, specified as a 2-element vector. Tangential distortion occurs when the lens and the image plane are not parallel. The camera parameters object calculates the tangential distorted location of a point. You can denote the distorted points as (xdistorted, ydistorted), as follows:
切向畸变是由镜头和成像平面不完全平行引起的。由两个元素p1,p2矫正:
xdistorted = x + [2 * p1 * y + p2 * (r2 + 2 * x2)]
ydistorted = y + [p1 * (r2 + 2*y2) + 2 * p2 * x]
x, y = undistorted pixel locations |
p1 and p2 = tangential distortion coefficients of the lens |
r2 = x2 + y2 |
The undistorted pixel locations appear in normalized image coordinates, with the origin at the optical center. The coordinates are expressed in world units.
同上。
worldunit
输出的translationVector是以世界坐标系为单位,而两个相机的内参则是以像素为单位
输出参数
双目参数:
RotationOfCamera2:相机2相对于相机1的旋转矩阵
TranslationOfCamera2:相机2相对于相机1的平移矩阵 ,此处注意,以世界单位mm为单位
FundamentalMatrix:
CameraParameters1:
径向畸变切向畸变相关参数上面已经解释过
InstrinsicMatrix:相机内参矩阵 的转置
Projection matrix, specified as a 3-by-3 identity matrix. The object uses the following format for the matrix format:
3乘3的投影矩阵
fx,fy是焦距F分别乘上x,y方向上的缩放系数sx,sy得到的。以像素为单位 。sx表示x方向上每个world unit内像素的数量
cx,cy表示光心在图像坐标系上的投影的坐标(也就是图像坐标系与相机坐标系之间的偏移)
The coordinates [cx cy] represent the optical center (the principal point), in pixels. When the x and y axis are exactly perpendicular, the skew parameter, s, equals 0
.
fx = F*sx |
fy = F*sy |
F, is the focal length in world units, typically expressed in millimeters. |
[sx, sy] are the number of pixels per world unit in the x and y direction respectively. |
fx and fy are expressed in pixels. |
FocalLength和PrincipalPoint,也就是内参矩阵里的fx,fy,cx,cy