This is my blog.
记录谭平老师的课程,归零学习。
从相机标定到视觉SLAM
Camera
如果只有胶片,则胶片上的每一个点其实可以看到物体的每一个点,因为每个点都有无数个光线;而加上一个障碍物,则只允许特定光线通过,这样每一个点在胶片上只有一个点
障碍物中间的小孔称为光圈;光圈大,则进来光线多,会模糊;光圈小,则清晰,但同时会暗,甚至会产生干射现象;因此实际中会加上凸透镜。
二维到三维丢失了距离、角度、平行关系的信息,改变了长度信息
若物体到镜面$d_0$,镜面到成像平面$d_i$,则有$\frac 1 {d_o}+\frac 1 {d_i}=\frac 1 f$,否则会发生散开,成斑。如,手机点一下,可以让这一部分清晰,而让后部分虚化,这就是通过调节$d_i$而得到的。(是不断调整后,发现最清晰的,实际上是不知道哪个在前,哪个在后的)
有一个现象是最近的和最远的是模糊的,距离适中的才是清晰成像的,这个称作Depth of field景深。如果光圈变小,Depth of field变大;如果光圈变大,Depth of field变小(可能会出现模糊的现象)
F-number: focal length/aperture diameter
因此,f的值越小,光圈越大
视野Field of View(Zoom),焦距长,则角度变小,范围小,但可以把远处的东西拍清晰了;焦距短,角度变大
由于不同颜色的光波长不同,因此相交的位置实际不同,即出现色散的现象
LCD液晶,可以编程控制孔的位置,用两层LCD液晶可以选择性投影,不连续的FOV,这样可以更加突出关注物,并且每个物体的像素变多了
Color
- RGB,数字化的必要性,有多个标准(因此不太准确),RGB无法表示出所有的颜色,人眼中对噪声最敏感的是绿色通道;做加法颜色组合的
- CIE XYZ,做了坐标变换,使负数的值换算成正数,同时希望y轴符合人眼对亮度的感受;标准的颜色空间
- YUV,Y亮度,UV描述颜色,一般用于视频和图像的压缩,人眼中对噪声最敏感的是Y
- CMYK,做减法颜色组合的,理解为滤光片;k是黑色;两层CMY,并且还可以错位,x错位变成RGB,y错位则拥有六种RGBCMY,对齐则只有CMY
Radiometric Calibration & HDR
Radiance单位面积单位时间单位空间角发出的能量
Irradiance单位面积单位时间上接收到的能量Image Signal Processor(ISP),包含多种处理过程;因此,像素x不代表能量是x,而是一个复杂的非线性关系;然后我们需要找到这个关系,这称为Radiometric Calibration
Auto white balance,由于不同光源的颜色不同(通过乘上一个对角矩阵);
vignetting,中间亮,边缘暗(通过逆向消除衰减);
noise reduction(找到相同颜色,平均一下)HDR: High Dynamic Range,动态找到曝光的范围。
使用合适强度的闪光灯,使得所有范围的光一样强;
使用滤镜,将强的部分光过滤掉;
以上的不能适用所有的场景。我们可以首先拍很多张照片(不同光圈,不同曝光等),然后找到像素和曝光值的关系,即Radiometric Calibration,最后把多张图有意义的加权平均得到结果,最后remap回来(因为显示器范围只有0-255)。
Radiometric Calibration,首先$Exposure = Irradiance*\Delta t$,转换后可以得到$g(z)=\log f^{-1}(z)=\log Irradiance+\log\Delta t$
用不同点做出多条曲线后,进行拟合成一条光滑曲线;用离散化(256个+图片个数N个未知数),而方程为NK个(K为像素的个数);方程太多,所以理论上不可解,需要regularization,可以两边乘上矩阵的转置;然后用一下最小二乘法。
Reflectance & Lighting
- 三个因素:光源(强度、位置)、物体本身反射属性、局部朝向
- BRDF:双向反射函数,先固定坐标系;知道了BRDF,就可以知道每一个像素的亮度;可以渲染物体
- PDF:概率分布函数
- 计算机视觉:还原物体;计算机图形学:绘制出图像;两者是逆过程
- Specular reflection:当反射光与视线重合时,很亮;离开后,亮度变暗;与光源颜色一致
- Diffuse:漫反射,与物体本身颜色一致
- Lambert’s Model
- Phong Model
- Microfacet Theory
Filter
刚看到这里,还没有看完,好像得抓紧复习了,还没看( ・᷄ὢ・᷅ )
用周围的像素(包括自己共九个)加权平均和来更新中间像素的值
加权平均有:简单的平均(boxes filter高频明显)、按照离中心的距离,越近权值越大(高斯filter细节明显)
最后的权重要归一化,即所有的权值和为一对于在边角上,周围没有九个数值的时候:可以默认为零、可以拷贝附近的值
图像先进行Gaussian blur,然后向右向下平移与原图像叠加,就像soft shadow了
如果filter九个数中只有中间为1,则不变;如果中间右为1,则向右平移
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的技术,合在一起
Sobel filter:水平方向做差分,则垂直方向边界明显;垂直方向做差分,则水平方向边界明显
计算图像的梯度:
- 选择derivate filters
- Convolve with the image to compute derivatives 和图像做卷积来得到导数
- Form the image gradient, and compute its direction and amplitude(知道幅度,就不管在x还是y方向有大的变化,都可以找到,认为这是edge)
Geometry & Camera Model
对于 $x_i=\lambda PX_i$中的$\lambda$是必须的,但是增加了变量,我们可以通过叉乘的方式$x_i\times PX_i=0$来解决,其可以化为矩阵的形式,即$[x_i]PX_i=0$
一般都会把方程化为AX=0,然后就可以求解X了,这种方法叫做DLT(Direct Linear Transform)。用SVT方法,先求解未知数(独立的)、约束,来得到需要多少个点(等式)来求解。
退化解,将模限定为1
Data Normalization(平移+放缩,使得点在半径为$\sqrt{2}$圆中,或半径为$\sqrt 3$的球体中)的重要性
Error:
- Geometric Error
DLT直接最小化(最小化的是代数距离)结果不够好,需要用Geometric Error(投影点和2D点的距离和,欧几里得距离)来优化。先用DLT来得到初始值,然后用Geometric Error来优化(可以用梯度下降法)。对于约束,如果直接强制约束,会使error上升较大,可以将Geometric Error的函数中增加约束的等式,这样结果更好。
Reprojection Error
Algebra Error
DLT就是它的运用,他貌似和Geometric Error等价,但是Algebra Error相当于给了它一个权重,但这个权重是距离越远权重越大,而一般距离越远,出现误差的可能性越大。因此这不是一个好的选择。
Perspective-n-Points
内参已知,标外参,视觉SLAM中就是这种应用。
用到了余弦定理,三个方程三个未知数(三个点,两两组和便可求解),因此最少3个点。求出来的解不是唯一的,需要去除虚假点,用其他点来验证去除虚假点。
n大于等于5时,可以将PnP问题变为线性的。但是时间复杂度为五次方
Image of Absolute Conic(IAC)
方向向量e,加入0变为齐次坐标(0表示无穷远),用变换矩阵可以得到e由R、K、v的等式。若两个向量垂直可以得到一个内参k的方程(即IAC方程,虚拟的图形),$x_i^T(K^{-T}K^{-1}X_i)$,则可以知道任意两个点围成的圆锥曲线的顶角度数。IAC是图像的内参。
Circular Points
任何圆都必须经过这两个点,(根据圆的公式可推导出来);因此圆和二次曲线一样都是用五个点(圆是三个加上I,J)来表示
张正友方法可以解释为如下四步:(既找外参,又找内参)
- 通过四个角计算H矩阵
- 将circular points通过H矩阵,映射到图像平面上
- (我们有三块板/或者三张不同角度的图片,则共有六个点)拟合出conic的值(conic只需五个点即可)
- 通过Cholesky factorization计算K矩阵
基础矩阵、本征矩阵补充
若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点算法来求解
后记
加油复习啦~
没有几门课可以考试了呢,也就没有几门课可以拉分了呢!
转载请注明出处,谢谢。
愿 我是你的小太阳