从相机标定到视觉SLAM

This is my blog.

记录谭平老师的课程,归零学习。

从相机标定到视觉SLAM

Camera

  1. 如果只有胶片,则胶片上的每一个点其实可以看到物体的每一个点,因为每个点都有无数个光线;而加上一个障碍物,则只允许特定光线通过,这样每一个点在胶片上只有一个点

  2. 障碍物中间的小孔称为光圈;光圈大,则进来光线多,会模糊;光圈小,则清晰,但同时会暗,甚至会产生干射现象;因此实际中会加上凸透镜。

  3. 二维到三维丢失了距离、角度、平行关系的信息,改变了长度信息

  4. 若物体到镜面$d_0$,镜面到成像平面$d_i$,则有$\frac 1 {d_o}+\frac 1 {d_i}=\frac 1 f$,否则会发生散开,成斑。如,手机点一下,可以让这一部分清晰,而让后部分虚化,这就是通过调节$d_i$而得到的。(是不断调整后,发现最清晰的,实际上是不知道哪个在前,哪个在后的)

  5. 有一个现象是最近的和最远的是模糊的,距离适中的才是清晰成像的,这个称作Depth of field景深。如果光圈变小,Depth of field变大;如果光圈变大,Depth of field变小(可能会出现模糊的现象)

  6. F-number: focal length/aperture diameter

    因此,f的值越小,光圈越大

  7. 视野Field of View(Zoom),焦距长,则角度变小,范围小,但可以把远处的东西拍清晰了;焦距短,角度变大

  8. 由于不同颜色的光波长不同,因此相交的位置实际不同,即出现色散的现象

  9. LCD液晶,可以编程控制孔的位置,用两层LCD液晶可以选择性投影,不连续的FOV,这样可以更加突出关注物,并且每个物体的像素变多了

Color

  1. RGB,数字化的必要性,有多个标准(因此不太准确),RGB无法表示出所有的颜色,人眼中对噪声最敏感的是绿色通道;做加法颜色组合的
  2. CIE XYZ,做了坐标变换,使负数的值换算成正数,同时希望y轴符合人眼对亮度的感受;标准的颜色空间
  3. YUV,Y亮度,UV描述颜色,一般用于视频和图像的压缩,人眼中对噪声最敏感的是Y
  4. CMYK,做减法颜色组合的,理解为滤光片;k是黑色;两层CMY,并且还可以错位,x错位变成RGB,y错位则拥有六种RGBCMY,对齐则只有CMY

Radiometric Calibration & HDR

  1. Radiance单位面积单位时间单位空间角发出的能量
    Irradiance单位面积单位时间上接收到的能量

  2. Image Signal Processor(ISP),包含多种处理过程;因此,像素x不代表能量是x,而是一个复杂的非线性关系;然后我们需要找到这个关系,这称为Radiometric Calibration

  3. Auto white balance,由于不同光源的颜色不同(通过乘上一个对角矩阵);
    vignetting,中间亮,边缘暗(通过逆向消除衰减);
    noise reduction(找到相同颜色,平均一下)

  4. HDR: High Dynamic Range,动态找到曝光的范围。
    使用合适强度的闪光灯,使得所有范围的光一样强;
    使用滤镜,将强的部分光过滤掉;
    以上的不能适用所有的场景。

    我们可以首先拍很多张照片(不同光圈,不同曝光等),然后找到像素和曝光值的关系,即Radiometric Calibration,最后把多张图有意义的加权平均得到结果,最后remap回来(因为显示器范围只有0-255)。

  5. Radiometric Calibration,首先$Exposure = Irradiance*\Delta t$,转换后可以得到$g(z)=\log f^{-1}(z)=\log Irradiance+\log\Delta t$
    用不同点做出多条曲线后,进行拟合成一条光滑曲线;用离散化(256个+图片个数N个未知数),而方程为NK个(K为像素的个数);方程太多,所以理论上不可解,需要regularization,可以两边乘上矩阵的转置;然后用一下最小二乘法。

Reflectance & Lighting

  1. 三个因素:光源(强度、位置)、物体本身反射属性、局部朝向
  2. BRDF:双向反射函数,先固定坐标系;知道了BRDF,就可以知道每一个像素的亮度;可以渲染物体
  3. PDF:概率分布函数
  4. 计算机视觉:还原物体;计算机图形学:绘制出图像;两者是逆过程
  5. Specular reflection:当反射光与视线重合时,很亮;离开后,亮度变暗;与光源颜色一致
  6. Diffuse:漫反射,与物体本身颜色一致
  7. Lambert’s Model
  8. Phong Model
  9. Microfacet Theory

Filter

刚看到这里,还没有看完,好像得抓紧复习了,还没看( ・᷄ὢ・᷅ )

  1. 用周围的像素(包括自己共九个)加权平均和来更新中间像素的值

  2. 加权平均有:简单的平均(boxes filter高频明显)、按照离中心的距离,越近权值越大(高斯filter细节明显)
    最后的权重要归一化,即所有的权值和为一

  3. 对于在边角上,周围没有九个数值的时候:可以默认为零、可以拷贝附近的值

  4. 图像先进行Gaussian blur,然后向右向下平移与原图像叠加,就像soft shadow了

  5. 如果filter九个数中只有中间为1,则不变;如果中间右为1,则向右平移

  6. Edge:不连续的地方,有大的跳变
    在连续函数中,它的导数也会很大:

    $f’(x)=\text{lim}_{h\to 0}\frac{f(x+0.5h)-f(x-0.5h)}{h}$
    在离散中:
    1*3的filter,用前后两者作差来代替中心的值
    但是图像有噪声,每一个像素点的导数都会很大;所以先用高斯blur,这样小噪声被去掉,但是大噪声会被衰弱(对结果没多大的影响,仍能找到边界)。

    DOG:Derivate of Gaussian 用高斯blur+filter的技术,合在一起

  7. Sobel filter:水平方向做差分,则垂直方向边界明显;垂直方向做差分,则水平方向边界明显

  8. 计算图像的梯度:

    1. 选择derivate filters
    2. Convolve with the image to compute derivatives 和图像做卷积来得到导数
    3. Form the image gradient, and compute its direction and amplitude(知道幅度,就不管在x还是y方向有大的变化,都可以找到,认为这是edge)

Geometry & Camera Model

  1. 对于 $x_i=\lambda PX_i$中的$\lambda$是必须的,但是增加了变量,我们可以通过叉乘的方式$x_i\times PX_i=0$来解决,其可以化为矩阵的形式,即$[x_i]PX_i=0$

  2. 一般都会把方程化为AX=0,然后就可以求解X了,这种方法叫做DLT(Direct Linear Transform)。用SVT方法,先求解未知数(独立的)、约束,来得到需要多少个点(等式)来求解。

  3. 退化解,将模限定为1

  4. Data Normalization(平移+放缩,使得点在半径为$\sqrt{2}$圆中,或半径为$\sqrt 3$的球体中)的重要性

  5. Error:

    • Geometric Error

    DLT直接最小化(最小化的是代数距离)结果不够好,需要用Geometric Error(投影点和2D点的距离和,欧几里得距离)来优化。先用DLT来得到初始值,然后用Geometric Error来优化(可以用梯度下降法)。对于约束,如果直接强制约束,会使error上升较大,可以将Geometric Error的函数中增加约束的等式,这样结果更好。

    • Reprojection Error

    • Algebra Error

      DLT就是它的运用,他貌似和Geometric Error等价,但是Algebra Error相当于给了它一个权重,但这个权重是距离越远权重越大,而一般距离越远,出现误差的可能性越大。因此这不是一个好的选择。

  6. Perspective-n-Points

    内参已知,标外参,视觉SLAM中就是这种应用。

    用到了余弦定理,三个方程三个未知数(三个点,两两组和便可求解),因此最少3个点。求出来的解不是唯一的,需要去除虚假点,用其他点来验证去除虚假点。

    n大于等于5时,可以将PnP问题变为线性的。但是时间复杂度为五次方

  7. Image of Absolute Conic(IAC)

    方向向量e,加入0变为齐次坐标(0表示无穷远),用变换矩阵可以得到e由R、K、v的等式。若两个向量垂直可以得到一个内参k的方程(即IAC方程,虚拟的图形),$x_i^T(K^{-T}K^{-1}X_i)$,则可以知道任意两个点围成的圆锥曲线的顶角度数。IAC是图像的内参。

  8. Circular Points

    任何圆都必须经过这两个点,(根据圆的公式可推导出来);因此圆和二次曲线一样都是用五个点(圆是三个加上I,J)来表示

  9. 张正友方法可以解释为如下四步:(既找外参,又找内参)

    1. 通过四个角计算H矩阵
    2. 将circular points通过H矩阵,映射到图像平面上
    3. (我们有三块板/或者三张不同角度的图片,则共有六个点)拟合出conic的值(conic只需五个点即可)
    4. 通过Cholesky factorization计算K矩阵
  10. 基础矩阵、本征矩阵补充

    若P是图像上的一个点,则$FP$是关于P的一条极线,给出的限制是$q^TFp=0$

    现在来推导$e_2^TF=0,\ Fe_1=0$

    对于任意在极线上的一点p,则$e_2$一定经过$FP$,因此有$e_2^TFp=0$,因为p是任意的,所以有$e_2^TF=0$。同时还可以知道F的秩为2

    极线和F是用来缩小范围(运用在stereo时),可以在寻找特征点的时候,沿着极线搜索,将2维的变成1维的

    E矩阵可以通过F矩阵推导出来,也可以用5点算法来求解

后记

加油复习啦~

没有几门课可以考试了呢,也就没有几门课可以拉分了呢!

转载请注明出处,谢谢。

愿 我是你的小太阳

买糖果去喽