写在开头:计算机视觉的 PPT 是我有史以来见过的最烂的 PPT,没有之一!没有!文中有?的地方作者本人也无法翻译

# 图像成像

针孔相机

P=[xyz]P=[xy]P=\begin{bmatrix}x\\y\\z\end{bmatrix}\rightarrow P^{\prime}=\begin{bmatrix}x^{\prime}\\y^{\prime}\end{bmatrix}

{x=fxzy=fyz\begin{cases}x^{\prime}=f\dfrac{x}{z}\\y^{\prime}=f\dfrac{y}{z}\end{cases}

{x=zxzy=zyz\begin{cases}x^{\prime}=z^{\prime}\dfrac{x}{z}\\y^{\prime}=z^{\prime}\dfrac{y}{z}\end{cases}

摄像机坐标系:以光圈为原点的三维坐标系

像平面坐标系:摄像机坐标系的 k 轴与胶片的交点为原点的二维坐标系

随着光圈减小,成像效果逐渐清晰,但光圈太小又会引起干涉,又逐渐模糊

折射定律:f=R2(n1)f=\dfrac{R}{2(n-1)},R 为透镜球面半径,n 为透镜折射系数

透镜问题:失焦

  • 离透镜越近,聚焦点越远,离透镜越远,聚焦点越近,物体聚焦有特定距离,不在该距离上的点则会失焦
  • 在景深范围内的物体成像清晰,景深范围外的物体成像模糊

添加隔板:亮度和聚光的平衡

# 摄像机内外参数

偏置(x,y,z)(fxz+cx,fyz+cy)(x,y,z)\rightarrow(f\dfrac{x}{z}+c_x,f\dfrac{y}{z}+c_y)

单位变换:像素坐标系

(x,y,z)(fkxy+cx,flyz+cy),α=fk,β=fl(x,y,z)\rightarrow (fk\dfrac{x}{y}+c_x,fl\dfrac{y}{z}+c_y),\alpha=fk,\beta=fl

P=(x,y,z)P=(αxz+cx,βyz+cy)P=(x,y,z)\rightarrow P^{\prime}=(\alpha\dfrac{x}{z}+c_x,\beta\dfrac{y}{z}+c_y)

单位距离上像素数量 k,l:pixel/m (cm)

像素α,β\alpha,\beta:pixel

齐次坐标:

(x,y)[xy1],(x,y,z)[xyz1](x,y)\Rightarrow\begin{bmatrix}x\\y\\1\end{bmatrix},(x,y,z)\Rightarrow\begin{bmatrix}x\\y\\z\\1\end{bmatrix}

[xyw](x/w,y/w),[xyzw](x/w,y/w,z/w)\begin{bmatrix}x\\y\\w\end{bmatrix}\Rightarrow(x/w,y/w),\begin{bmatrix}x\\y\\z\\w\end{bmatrix}\Rightarrow(x/w,y/w,z/w)

  • 齐次坐标乘以任意常数,对应的欧式坐标不变
  • 一个欧式坐标对应一系列齐次坐标,成比例的齐次坐标对应同一个欧式坐标

齐次坐标系中投影变换:

Ph=[αx+cxzβy+cyzz]=[α0cx00βcy00010][xyz1]P_h^{\prime}=\begin{bmatrix}\alpha x+c_xz\\\beta y+c_yz\\z\end{bmatrix}=\begin{bmatrix}\alpha&0&c_x&0\\0&\beta&c_y&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix}

PhP_h^{\prime} 是像素坐标系,后面的[x,y,z,1]T[x,y,z,1]^T 为摄像机坐标系,记为PhP_h

所有坐标均采用齐次坐标表示,不再用 h 下标标识后:

P=[α0cx00βcy00010][xyz1]=MPP^{\prime}=\begin{bmatrix}\alpha&0&c_x&0\\0&\beta&c_y&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix}=MP

M 被称为系投影矩阵

摄像机偏斜,假设像素坐标系的 x 轴与 y 轴夹角为θ\theta,即偏斜了θ\theta,则系投影矩阵修改:

P=[ααcotθcx00β/sinθcy00010][xyz1]=MP=K[I0]PP^{\prime}=\begin{bmatrix}\alpha&-\alpha cot\theta&c_x&0\\0&\beta/sin\theta&c_y&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix}=MP=K\begin{bmatrix}I&0\end{bmatrix}P

其中 (I 就是单位矩阵 E):

K=[ααcotθcx00β/sinθcy00010],I=EK=\begin{bmatrix}\alpha&-\alpha cot\theta&c_x&0\\0&\beta/sin\theta&c_y&0\\0&0&1&0\end{bmatrix},I=E

内参数矩阵:决定了摄像机坐标系下,空间点到像素坐标系下图像的映射

基本图像变换

缩放矩阵表示:

[xy]=[a00b][xy]\begin{bmatrix}x^{\prime}\\y^{\prime}\end{bmatrix}=\begin{bmatrix}a&0\\0&b\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}

旋转矩阵表示:

[xy]=[cosθsinθsinθcosθ][xy]\begin{bmatrix}x^{\prime}\\y^{\prime}\end{bmatrix}=\begin{bmatrix}cos\theta&-sin\theta\\sin\theta&cos\theta\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}

平移矩阵表示:齐次坐标

[xy1]=[10tx01ty001][xy1]=M[xy1]\begin{bmatrix}x^{\prime}\\y^{\prime}\\1\end{bmatrix}=\begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}=M\begin{bmatrix}x\\y\\1\end{bmatrix}

最后将三种变换结合起来:

[xyw]=[10tx01ty001][cosθsinθ0sinθcosθ0001][sx000sy0001][xyw]\begin{bmatrix}x^{\prime}\\y^{\prime}\\w^{\prime}\end{bmatrix}=\begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}\begin{bmatrix}cos\theta&-sin\theta&0\\sin\theta&cos\theta&0\\0&0&1\end{bmatrix}\begin{bmatrix}sx&0&0\\0&sy&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\w\end{bmatrix}

将世界坐标系投影到摄像机坐标系:

P=[RT01]Pw,Pw=[xwywzw1]TP=\begin{bmatrix}R&T\\0&1\end{bmatrix}P_w,P_w=\begin{bmatrix}x_w&y_w&z_w&1\end{bmatrix}^T

完整摄像机模型:

P=K[I0]P=K[I0][RT01]Pw=K[RT]Pw=MPw,K=[ααcotθcx00β/sinθcy00010]P^{\prime}=K\begin{bmatrix}I&0\end{bmatrix}P=K\begin{bmatrix}I&0\end{bmatrix}\begin{bmatrix}R&T\\0&1\end{bmatrix}P_w=K\begin{bmatrix}R&T\end{bmatrix}P_w=MP_w,K=\begin{bmatrix}\alpha&-\alpha cot\theta&c_x&0\\0&\beta/sin\theta&c_y&0\\0&0&1&0\end{bmatrix}

像素平面上的点的齐次坐标P3×1P^{\prime}:3\times1

目标点在摄像机坐标系下的齐次坐标:P:4×1P:4\times1

世界坐标系到摄像机坐标系下的投影矩阵,包括旋转矩阵R:3×3R:3\times3 和平移矩阵T:3×1T:3\times1

投影矩阵为:

[RT01]\begin{bmatrix}R&T\\0&1\end{bmatrix}

目标点在世界坐标系下的齐次坐标Pw:4×1P_w:4\times1

投影矩阵M:3×4M:3\times4

M 自由度:5 个内参数 + 6 个外参数 (三个轴的平移和旋转)

# 预备知识

线性方程组最小二乘解:x=argminxAxy2x^*=argmin_x\Vert Ax-y\Vert^2

解法 1:解析解:x=(ATA)1ATyx^*=(A^TA)^{-1}A^Ty

解法 2:梯度下降法求解x=2AT(Axy)\nabla{x}=2A^T(Ax-y)

齐次线性方程组的最小二乘解x=argminxAx,s.t.x=1x^*=argmin_x\Vert Ax\Vert,s.t.\Vert x\Vert=1

  • 矩阵 A 进行奇异值分解A=UDVTA=UDV^T
  • xx^* 为 V 矩阵的最后一列 (最小特征值对应的右特征向量)

# 摄像机标定

相机标定:计算相机的内参和外参

目标:从一张或多张图像中估算内参数、外参数

标定任务:

PiP_i:世界坐标系中的点,坐标已知

pip_i:像素坐标系中的点,坐标已知

目标:PiP_ipip_i 计算摄像坐标系内、外参数

P=K[RT]Pw=MPw=[m1m2m3]Pw,pi=[uivi]=[m1Pim3Pim2Pim3Pi]P^{\prime}=K\begin{bmatrix}R&T\end{bmatrix}P_w=MP_w=\begin{bmatrix}m_1\\m_2\\m_3\end{bmatrix}P_w,p_i=\begin{bmatrix}u_i\\v_i\end{bmatrix}=\begin{bmatrix}\dfrac{m_1P_i}{m_3P_i}\\\dfrac{m_2P_i}{m_3P_i}\end{bmatrix}

一共有 11 个未知数

求解投影矩阵需要多少对应点,每一对点可以提供两个方程,六对点就可以解方程

在实际应用中,一般使用多于六对点来获得更鲁棒的效果

ui=m1Pim3Piui(m3Pi)=m1Piui(m3Pi)m1Pi=0vi=m2Pim3Pivi(m3Pi)=m2Pivi(m3Pi)m2Pi=0u_i=\dfrac{m_1P_i}{m_3P_i}\rightarrow u_i(m_3P_i)=m_1P_i\rightarrow u_i(m_3P_i)-m_1P_i=0\\v_i=\dfrac{m_2P_i}{m_3P_i}\rightarrow v_i(m_3P_i)=m_2P_i\rightarrow v_i(m_3P_i)-m_2P_i=0

最后组成标定方程组 Pm=0

目标:求非零解minmPm,s.t.m=1\min\limits_{m}\Vert Pm\Vert,s.t.\Vert m\Vert=1

结论:m 为 P 矩阵的最小奇异值的右奇异向量,且m=1\Vert m\Vert=1,求解获得 M 后,写成如下形式:

M=[m1m2m3]=[Ab],M:4×3,m:4×1M=\begin{bmatrix}m_1\\m_2\\m_3\end{bmatrix}=[A\ b],M:4\times 3,m:4\times1

# 获得摄像机参数

ρ[Ab]=K[RT]A=[a1Ta2Ta3T],b=[b1b2b3]K=[ααcotθu000β/sinθv000010],R=[r1Tr2Tr3T],T=[txtytz]\rho[A\ b]=K[R\ T]\\A=\begin{bmatrix}a_1^T\\a_2^T\\a_3^T\end{bmatrix},b=\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\\K=\begin{bmatrix}\alpha&-\alpha cot\theta&u_0&0\\0&\beta/sin\theta&v_0&0\\0&0&1&0\end{bmatrix},R=\begin{bmatrix}r_1^T\\r_2^T\\r_3^T\end{bmatrix},T=\begin{bmatrix}t_x\\t_y\\t_z\end{bmatrix}

内参数:

ρ=±1a3,u0=ρ2(a1a3),v0=ρ2(a2a3)cosθ=(a1×a3)(a2×a3)a1×a3a2×a3α=ρ2a1×a3sinθβ=ρ2a2×a3sinθ\rho=\dfrac{\pm1}{\vert a_3\vert},u_0=\rho^2(a_1\cdot a_3),v_0=\rho^2(a_2\cdot a_3)\\cos\theta=-\dfrac{(a_1\times a_3)\cdot(a_2\times a_3)}{\vert a_1\times a_3\vert\cdot\vert a_2\times a_3\vert}\\\alpha=\rho^2\vert a_1\times a_3\vert sin\theta\\\beta=\rho^2\vert a_2\times a_3\vert sin\theta

外参数:

r1=(a2×a3)a2×a3,r3=±a3a3,r2=r3×r1,T=ρK1br_1=\dfrac{(a_2\times a_3)}{\vert a_2\times a_3\vert},r_3=\dfrac{\pm a_3}{\vert a_3\vert},r_2=r_3\times r_1,T=\rho K^{-1}b

# 双目视觉

# 三角化

由于噪声的存在,两条直线往往不相交

问题:已知p,pp,p^{\prime}K,KK,K^{\prime} 以及R,TR,T

求解:PP 点的三维坐标

寻找PP^* 的最小化d(p,MP)+d(p,MP)d(p,MP^*)+d(p^{\prime},M^{\prime}P^*)

求解:牛顿法与 L-M 方法

# 极几何

极几何

极几何:同一场景或物体的两个视点图像间的几何关系

对应关系:已知一个图像中的 p 点,如何在另外一个图像中找到 p 的对应点

极平面:过点 p,O1 和 O2 的平面

极线:极平面与成像平面的交线

极点:基线与成像平面的交点

极平面相交于基线,极线相交于极点,p 的对应点在 l' 上,p' 的对应点在 l 上

本质矩阵:对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述

本质矩阵

推导:

1、pp^{\prime}O1O_1 的坐标=RTpRTT=R^Tp^{\prime}-R^TTO2O_2O1O_1 的坐标=RTT=-R^TT

2、RTT×(RTpRTT)R^TT\times(R^Tp^{\prime}-R^TT) 垂直与极平面

3、[RTT×(RTpRTT)]Tp=0[R^TT\times(R^Tp^{\prime}-R^TT)]^T\cdot p=0

4、pT[T×R]p=0p^{\prime T}[T\times R]p=0

交叉乘矩阵表示

a×b=[0azayaz0axayax0][bxbybz]=[a×]bpT[T×R]p=pT[T×]RpE=T×R=[T×]RpTEp=0a\times b=\begin{bmatrix}0&-a_z&a_y\\a_z&0&-a_x\\-a_y&a_x&0\end{bmatrix}\begin{bmatrix}b_x\\b_y\\b_z\end{bmatrix}=[a_{\times}]b\\p^{\prime T}[T\times R]p=p^{\prime T}[T_{\times}]Rp\\E=T\times R=[T_{\times}]R\\p^{\prime T}Ep=0

E 为本质矩阵,E 是奇异的 (秩 2),E 有 5 个自由度 (三个旋转 + 三个平移,|E|=0 去掉一个自由度)

基础矩阵

基础矩阵:对一般的透视摄像机拍摄额两个视点的图像间的极几何关系进行代数描述

pTFp=0,F=(K1)T[T×]RK1p^{\prime T}Fp=0,F=(K^{\prime -1})^{T}[T_{\times}]RK^{-1}

F 为基础矩阵,F 是奇异的 (秩 2)。

已知 F,无需场景信息以及摄像机内、外参数,即可建立左右图像对应关系,l=Fpl^{\prime}=Fp

估计基础矩阵

pTFp=0p^{\prime T}Fp=0,9 个未知数,8 个方程可以解 (行列式等于 0 去掉一个方程)

选取对应 8 组点

1、构建 W 矩阵(W 矩阵为齐次方程系数矩阵)

2、对 W 矩阵进行奇异值分解求F^,f\hat{F},f 为 W 矩阵最小奇异值的右奇异向量,且f=1\Vert f\Vert=1

3、执行秩 2 约束 ->F

SVD(F^)=U[s1000s2000s3]VTF=U[s1000s20000]VTSVD(\hat{F})=U\begin{bmatrix}s_1&0&0\\0&s_2&0\\0&0&s_3\end{bmatrix}V^T\Rightarrow F=U\begin{bmatrix}s_1&0&0\\0&s_2&0\\0&0&0\end{bmatrix}V^T

基础矩阵 F

F=(K1)T[T×]RK1,e=K[RT][0000]=KTF=[e×]KRK1F=(K^{\prime -1})^{T}[T_{\times}]RK^{-1},e^{\prime}=K^{\prime}[R\ T]\begin{bmatrix}0\\0\\0\\0\end{bmatrix}=K^{\prime}T\\F=[e^{\prime}_{\times}]K^{\prime}RK^{-1}

当两个图像面平行,基线平行于图像平面,极点 e 和 e' 位于无穷远处

K=K,R=I,T=[T00],e=[100]F=[e×]KRK1=[e×]=[000001010]K=K^{\prime},R=I,T=\begin{bmatrix}T\\0\\0\end{bmatrix},e^{\prime}=\begin{bmatrix}1\\0\\0\end{bmatrix}\\F=[e^{\prime}_{\times}]K^{\prime}RK^{-1}=[e^{\prime}_{\times}]=\begin{bmatrix}0&0&0\\0&0&-1\\0&1&0\end{bmatrix}

极线此时是水平的,平行于 u 轴,p 和 p‘的 v 坐标一样 (u 就是 x 轴,v 就是 y 轴)

视差与深度成反比p_u-p_u^{\prime}=\dfrac{B\cdot f}

# 使用多台摄像机

已知:

X1j=M1Xj=K1[I0]XjX_{1j}=M_1X_j=K_1[I\ 0]X_j

X2j=M2Xj=K2[RT]XjX_{2j}=M_2X_j=K_2[R\ T]X_j

求解:

  • 求解基础矩阵 F(归一化八点法)
  • 利用 F 与摄像机内参数求解本质矩阵 E,E=K2TFK1E=K_2^TFK_1
  • 分解本质矩阵获得 R 与 T,ER,TE\rightarrow R,T
  • 三角化求解三维点XjX_j 坐标,Xj=argminXj(d(x1j,M1Xj)+d(x2j,M2Xj))X_j^*=\arg\min\limits_{X_j}(d(x_{1j},M_1X_j)+d(x_{2j},M_2X_j))

本质矩阵分解总结:

  • 步骤一:SVD 分解E=Udiag(1,1,0)VTE=Udiag(1,1,0)V^T
  • 步骤二:R=det(UWVT)UWVTR=det(UWV^T)UWV^Tdet(UWTVT)UWTVT,T=±u3det(UW^TV^T)UW^TV^T,T=\pm u_3
  • 步骤三:

{R=(detUWVT)UWVTT=u3R=(detUWVT)UWVTT=u3R=(detUWTVT)UWTVTT=u3R=(detUWTVT)UWTVTT=u3\begin{cases}R=(detUWV^T)UWV^T&T=u_3\\R=(detUWV^T)UWV^T&T=-u_3\\R=(detUW^TV^T)UW^TV^T&T=u_3\\R=(detUW^TV^T)UW^TV^T&T=-u_3\end{cases}

  • 步骤四:通过重构多个点找出正确解

恢复出来的欧式结构与真实场景之间相差一个相似变换 (旋转,平移,缩放)

恢复的场景与真实场景之间仅存在相似变换的重构称为度量重构

# 单目测量

# 补充知识

等距变换:是指保持距离不变的变换

(xy1)=(σcosθsinθx0σsinθcosθy0001)(xy1)\begin{pmatrix}x^{\prime}\\y^{\prime}\\1\end{pmatrix}=\begin{pmatrix}\sigma cos\theta&-sin\theta&x_0\\\sigma sin\theta&cos\theta&y_0\\0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}

欧式变换是等距变换当σ=1\sigma=1 时的一个子群

均匀伸缩变化

(xy1)=(s000s0001)(xy1)\begin{pmatrix}x^{\prime}\\y^{\prime}\\1\end{pmatrix}=\begin{pmatrix}s&0&0\\0&s&0\\0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}

相似变换:是指保持图形相似的变换,可由缩放变换和欧式变换的合成

(xy1)=(acosθasinθx0asinθacosθy0001)(xy1)\begin{pmatrix}x^{\prime}\\y^{\prime}\\1\end{pmatrix}=\begin{pmatrix}acos\theta&-asin\theta&x_0\\a sin\theta&acos\theta&y_0\\0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}

x=(sRt01)=Hsxx^{\prime}=\begin{pmatrix}sR&t\\0&1\end{pmatrix}=H_sx

不变量:两直线的夹角,长度的比值,面积的比值

四个自由度

仿射变换

(xy1)=(abx0cdy0001)(xy1)\begin{pmatrix}x^{\prime}\\y^{\prime}\\1\end{pmatrix}=\begin{pmatrix}a&b&x_0\\c&d&y_0\\0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}

x=(At01)=Haxx^{\prime}=\begin{pmatrix}A&t\\0&1\end{pmatrix}=H_ax

不变量:平行不变,面积的比值不变,平行线段长度的比值不变

六个自由度

透视变换

(xy1)=(abx0cdy0v1v21)(xy1)\begin{pmatrix}x^{\prime}\\y^{\prime}\\1\end{pmatrix}=\begin{pmatrix}a&b&x_0\\c&d&y_0\\v_1&v_2&1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}

x=(AtvT1)=Hxx^{\prime}=\begin{pmatrix}A&t\\v^T&1\end{pmatrix}=Hx

不变量:四共线点的交比

八个自由度

影消点与影消线

空间中的无穷远点:x=[abc0]Tx_{\infin}=[a\ b\ c\ 0]^T

点到点的变换公式:p=Hpp^{\prime}=Hp

已知:直线 l 和变换矩阵 H

求解:变换后的直线 l'

结论:l=(H1)Tll^{\prime}=(H^{-1})^Tl

影消点:三维空间中的无穷远点在图像平面上的投影点

假设 d = 直线方向 =[a,b,c]T[a,b,c]^T,v 为影消点

v=Kdd=K1vK1vv=Kd\Rightarrow d=\dfrac{K^{-1}v}{\Vert K^{-1}v\Vert}

证明:

X=[abc0]Mv=MX=K[I0][abc0]=K[abc]X_{\infin}=\begin{bmatrix}a\\b\\c\\0\end{bmatrix}\xrightarrow{M}v=MX_{\infin}=K[I\ 0]\begin{bmatrix}a\\b\\c\\0\end{bmatrix}=K\begin{bmatrix}a\\b\\c\end{bmatrix}

空间中无穷远线经过透视变换可以得到影消线

l_{horiz}=(H_p^T)^{-1}l_

n=KTlhn=K^Tl_h,其中 n 为平面法向量,K 为摄像机内参数,lhl_h 为影消线

上述公式作用:

  • 有助于估计相机参数
  • 有助于恢复三维场景结构

设w=(K^T)^{-1}K^{-1}=(KK^T)^

θ=90,v1Twv2=0\theta=90,v_1^Twv_2=0

单视图标定

选择三个影消点,得到方程:

{v1Twv2=0v1Twv3=0v2Twv3=0,w=[w1w2w3w2w3w5w4w5w6]\begin{cases}v_1^Twv_2=0\\v_1^Twv_3=0\\v_2^Twv_3=0\end{cases},w=\begin{bmatrix}w_1&w_2&w_3\\w_2&w_3&w_5\\w_4&w_5&w_6\end{bmatrix}

最后解出来 w,通过 w 可以得到 K

# 图像滤波与边缘提取

图像:

  • 二值化图像
  • 灰度图像
  • 彩色图像:3 通道

图像去噪:

  • 均值滤波
    • 将每个像素的值替换为附近点的加权平均值
    • 权值称作卷积核 / 滤波核

卷积性质:

  • 线性性:f (f1+f2)=f (f1)+f (f2)
  • 平移不变性
  • 任何平移不变的操作都可以用卷积来表示
  • 交换律、结合律、分配率

平滑滤波:

  • 为了减小边缘信息对滤波结果的影响,根据滤波核中每个像素点到中心点的距离设置权重

高斯核:

Gσ=12πσ2ex2+y22σ2G_{\sigma}=\dfrac{1}{2\pi\sigma^2}e^{-\dfrac{x^2+y^2}{2\sigma^2}}

  • 低通滤波器:去除图像的高频部分
  • 两个高斯核的卷积结果是一个新的高斯核

噪声:

  • 椒盐噪声
  • 脉冲噪声
  • 高斯噪声
    • 采用更大的高斯核可以有效降低高斯噪声,但是会导致图像更模糊

中值滤波:选择将正中央的像素值改为整个窗口像素值的中位数

图像锐化:

unsharp mask filter (反锐化掩膜滤波器?)

边缘提取:

  • 目标:检测图像中不连续的信息

    • 可以更直观地描述图像的语义信息和轮廓特征
    • 比像素更紧凑
  • 有限差分滤波器

    • Prewitt,Sobel,Roberts
  • 图像梯度:

    • 图像梯度指向值变化最剧烈的方向
  • 噪声抑制:

    • 先滤波,再求导
  • 滤波的结合律

    • 图像梯度计算也是一种卷积
    • 将滤波和梯度计算结合
  • 高斯偏导核

Canny 边缘提取

  • 非极大值抑制:沿梯度方向对比任意值与邻居的大小,选取最大值
  • 边缘丢失:梯度低于最低阈值
  • 双阈值:高阈值检测可靠的边缘,然后采用较低的阈值连接可靠边缘

Canny 边缘提取整体流程:

  • 采用高斯偏导核对图像进行卷积
  • 确定每个点的梯度值和方向
    • 非极大值抑制:对梯度图像进行细化
  • 连接梯度图
    • 设置双阈值
    • 采用高阈值提取可靠边,采用低阈值连接可靠边

拟合直线:

  • 最小平方直线拟合
  • 最小距离拟合

鲁棒估计:

将目标函数改为minΣiρ(ri(xi,θ);σ)min\Sigma_i\rho(r_i(x_i,\theta);\sigma)

ri(xi,θ)r_i(x_i,\theta) 为第 i 对点的拟合误差,ρ\rho 为距离函数,σ\sigma 为超参数

\rho(\mu,\sigma)=\dfrac{\mu^2}

RANSAC:

  • 随机采样 K 个点
  • 对该 K 个点拟合模型
  • 计算其他点到拟合模型的距离,如果小于一定阈值,该点被当做内点,统计内点个数
  • 将上面的步骤重复多次,选择内点最多的模型

霍夫变换:

  • 投票机制:
    • 将参数空间离散化,得到方格
    • 对图像中的任意一个点,在参数空间中进行投票
    • 确定得票数最多的模型
  • 霍夫参数空间
    • 图像中的一个点对应参数空间的一条直线
    • 二维空间中的一条直线对应参数空间中的一个点
    • (m,b) 空间缺陷:
      • 参数空间无边界
      • 垂直直线无法描述
      • 改进:极坐标表示
  • 噪声:
    • 峰值部分很难聚焦,无法定位峰值点
    • 随机噪声产生假峰值
  • 噪声处理问题:
    • 设置离散化网格
      • 网格太大时:很难准确确定参数
      • 网格太小时:对噪声的鲁棒性差
    • 软投票:每一个特征点对一个参数区域同时投票,票数和为 1
    • 采用特征明显的区域
      • 采用边界上的特征点进行投票,这些点的梯度可以准确计算

# 特征点检测

# 角点检测

特征点提取原则:

  • 重复性、显著性、可比性、局部性

角点检测:

  • 关键性质:角点区域的在至少两个方向由明显的梯度信息
  • 角点具有可重复性和可比性

角点检测 —— 基础想法:

  • 通过小的滤波器即可检测
  • 在任何方向上的小范围移动都可以产生较大的变化

角点检测:

  • 用高斯偏导核对每个像素进行卷积
  • 对每个高斯窗口中的像素计算二阶偏导
  • 计算角点响应函数 R
  • 记录 R 结果
  • 找到所有记录中最大的结果

M=x,yw(x,y)[Ix2IxIyIxIyIy2]M=\sum\limits_{x,y}w(x,y)\begin{bmatrix}I_x^2&I_xI_y\\I_xI_y&I_y^2\end{bmatrix}

其中 I 为窗口,IxI_x 为偏导

R=λ1λ2α(λ1+λ2)2R=\lambda_1\lambda_2-\alpha(\lambda_1+\lambda_2)^2λ1,λ2\lambda_1,\lambda_2 为 M 矩阵的特征值

# SIFT

这部分内容 PPT 一坨,因此以下内容摘自网络。

SIFT 又称为尺度不变特征转换,该算法主要用来提取图像中的关键点。相比于其他角点检测算法,SIFT 算法具有角度和尺度不变性,也就是不容易受到图像平移、旋转、缩放和噪声的影响。

** 关键点:** 是指在不同尺度空间下的图像检测出的具有方向的局部极值点

** 尺度空间:** 主要思想是通过对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列。

SIFT 算法就是利用同一幅图像在不同的尺度空间的关系来提取关键点

尺度空间中各尺度图像的模糊逐渐变大

算法步骤:

  • 通过高斯卷积构建图像金字塔
    • 高斯核是唯一可以产生多尺度空间的核,因此使用高斯函数和原图像进行卷积,公式如下:

G(xi,yi,σ)=12πσ2e(xxi)2+(yyi)22σ2L(x,y,σ)=G(x,y,σ)I(x,y)G(x_i,y_i,\sigma)=\dfrac{1}{2\pi\sigma^2}e^{-\frac{(x-x_i)^2+(y-y_i)^2}{2\sigma^2}}\\L(x,y,\sigma)=G(x,y,\sigma)*I(x,y)

其中,G 为高斯函数,I (x,y) 表示图像,根据不同的σ\sigma 取值,构建出不同尺度空间的图像,之后再进行降采样,形成图像金字塔。金字塔上层的图像由下层图像隔点采样生成的

  • 构建高斯差分金字塔

    • 创建好图像高斯金字塔后,每一组的相邻层相减可以得到高斯差分金字塔(DOG),因此层数会比高斯金字塔少一层
  • 关键点定位

    • 得到 DOG 后,在正数第二层和倒数第二层的范围中寻找极值点,此时将某个点与周围所有点(指的是当前点为 3x3 正方体的中心点,其他点都算周围点)进行比较,如果该点符合极小值或极大值,则此点为离散空间中的关键点。
    • 离散空间中的极值点并不是真正的极值点,因此通过离散值插值的方式,找到真正的极值点
  • 关键点方向赋值

    • 通过尺度不变性求极值点,可以使其具有缩放不变的性质;为了让其具有图像旋转不变性,需要对每个关键点方向进行赋值,每个像素点的梯度方向和幅值计算公式如下:

m(x,y)=(L(x+1,y)L(x1,y))@+(L(x,y+1)L(x,y1))2θ(x,y)=tan1((L(x,y+1)L(x,y1))/(L(x+1,y)L(x1,y)))m(x,y)=\sqrt{(L(x+1,y)-L(x-1,y))^@+(L(x,y+1)-L(x,y-1))^2}\\\theta(x,y)=tan^{-1}((L(x,y+1)-L(x,y-1))/(L(x+1,y)-L(x-1,y)))

直接计算一个点的方向可能会存在误差,因此选取关键点附近的一块领域,对领域内每一个点的方向进行统计。将 360 度分为 8 个方向,每 45 度为一个方向,峰值代表关键点方向,大于峰值 80% 的作为辅方向

  • 关键点描述
    • 关键点描述的目的是在关键点计算后,用一组向量将这个关键点描述出来,用来作为目标匹配的依据
    • SIFT 采用 4x4x8 共 128 维向量作为特征点向量,取特征点周围 8x8 像素范围进行梯度方向统计和高斯加权,每 4x4 个窗口生成 8 个方向。每 4x4 个的窗口形成一个种子点,一个特征点由 4 个种子点的信息组成

# 图像分类

# 分类器

机器学习:数据驱动方法

  • 构建包含大量图像的数据集,建立标签
  • 训练分类器
  • 测试训练器性能并优化

最近邻分类:

  • 对一张测试图像在训练集中寻找最相似的图像,判断所属类型

K 近邻图像

  • 寻找最相似的 K 个图像,并采用这 K 个图像的标签进行投票

线性分类器:

第 i 个类的线性分类器:fi(x,wi)=wiTx+bi,i=1,...,cf_i(x,w_i)=w_i^Tx+b_i,i=1,...,c

每个类都有自己的参数 w 和 b,x 代表输入的 d 维图像向量,c 为类别个数

w=[wi1,...,wid]Tw=[w_{i1},...,w_{id}]^T 为第 i 个类别的权值向量,bib_i 为偏置

决策规则:如果fi(x)>fj(x),jif_i(x)>f_j(x),\forall j\neq i,则决策输入图像 x 属于第 i 类

f (x,W),W 矩阵为各个类别权值向量组成的矩阵,输出的向量维度等于类别数,每一个向量维度等于类别数,每一个元素代表与该类的相似度或者属于该类的概率

线性分类器决策步骤:

  • 图像表示成向量
  • 计算当前图片每个类别的分数

权值可以看作是一种模板,输入图像与评估模板的匹配度越高,分类器输出的分数越高

什么是损失函数:

  • 损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值
  • 其输出的非负实值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果

损失函数的一般定义:L=1NiLi(f(xi,W),yi)L=\frac{1}{N}\sum\limits_{i}L_i(f(x_i,W),y_i)

  • xix_i 表示数据集中第 i 张图片
  • f(xi,W)f(x_i,W) 为分类器对xix_i 的类别预测
  • yiy_i 为样本 i 真实类别标签 (正数)
  • LiL_i 为第 i 个样本的损失当预测值
  • L 为数据集损失,它是数据集中所有样本损失的平均

多类支持向量机损失:

sij=fj(xi,wj,bj)=wjTxj+bjs_{ij}=f_j(x_i,w_j,b_j)=w_j^Tx_j+b_j

第 i 个样本的多类支持向量机损失定义如下:

Li=jyimax(0,sijsyi+1)L_i=\sum\limits_{j\neq y_i}max(0,s_{ij}-s_{y_i}+1)

  • j—— 类别标签
  • wj,bjw_j,b_j—— 第 j 个类别分类器的参数
  • xix_i—— 表示数据集中的第 i 个样本
  • sijs_{ij}—— 第 i 个样本第 j 类别的预测分数
  • syis_{y_i}—— 第 i 个样本真实类别的预测分数
  • 正确类别的得分比不正确类别的得分高出 1 分,就没有损失
  • 否则,就会产生损失(这类损失称为折页损失)

正则项

L(W)=1NiLi(f(xi,W),yi)+λR(w)L(W)=\frac{1}{N}\sum\limits_{i}L_i(f(x_i,W),y_i)+\lambda R(w)

其中λR(w)\lambda R(w) 为正则损失:防止模型在训练集上学习得太好

前面部分为数据损失:模型预测需要和训练集相匹配

  • λ=0\lambda=0,优化结果仅与数据损失相关
  • λ=\lambda=\infin,优化结果与数据损失无关,仅考虑权重损失。此时,系统最优解 W=0

L2 正则项

R(w)=klWk,l2R(w)=\sum\limits_{k}\sum\limits_{l}W_{k,l}^2

L2 损失实例:

  • 样本:x=[1,1,1,1]

  • 分类器:W1=[1,0,0,0]

  • 分类器 2:W2=[0.25,0.25,0.25,0.25]

  • 分类器输出:w1Tx=w2Tx=1w_1^Tx=w_2^Tx=1

  • 正则损失:R(w1)=1,R(w2)=0.25R(w_1)=1,R(w_2)=0.25,w2 总损失小

# 优化

梯度下降算法:利用所有样本计算损失并更新梯度 (当样本数量很大时,权值的梯度计算很大)

随机梯度下降:每次选择一个样本xix_i,计算损失函数并更新梯度 (单个样本的训练可能会带来很多噪声,不是每次迭代都向着整体最优化的方向)

小批量随机梯度下降:每次随机选择 m (批量的大小) 个样本,计算损失并更新梯度

设置交叉验证数据集

全连接神经网络为什么需要非线性操作:

  • 如果网络中缺少了非线性操作,全连接神经网络将变成一个线性分类器

常用激活函数:sigmoid,ReLU,tanh

常见损失函数:softmax, 交叉熵

全连接网络瓶颈:只适合处理小图像

基于卷积组的图像表示:

  • 设计卷积核组
  • 利用卷积核组队图像进行卷积操作获得对应的特征相应图组
  • 利用特征响应图的某种统计信息来表示图像中的纹理

卷积神经网络:

  • 输入数据矩阵尺寸:W1xH1

  • 输出特征图尺寸:W2xH2

  • W2 与 W1 关系如下:

    • W2=(W1-F+2P)/S+1
    • H2=(H1-F+2P)/S+1
    • F 为卷积核尺寸,S 为卷积步长,P 为零填充数量
  • 特征响应图深度等于卷积核个数

池化操作:

池化的作用:对每一个特征响应图独立进行,降低特征响应图组中每个特征响应图的宽度和高度,减少后续卷积层的参数的数量,降低计算资源耗费,进而控制过拟合

池化操作:对特征响应图某个区域进行池化就是在该区域上制定一个值来代表整个区域

常见池化操作:

  • 最大池化 —— 使用区域最大值来代表这个区域
  • 平均池化 —— 采用区域内所有值的均值作为代表

池化超参数:池化窗口和池化步长

图像增强:

  • 存在的问题:过拟合的原因是学习样本太少,导致无法训练出能够泛化到新数据的模型
  • 数据增强:是从现有训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加样本
  • 数据增强的目标:模型在训练时不会两次查看完全相同的图像。这让模型能够观察到数据的更多内容,从而具有更好的泛化能力

样本增强 —— 随机缩放,缩图

语义分割 —— 给每个像素分配类别标签,不区分实例,只考虑像素类别

语义分割思路:滑动窗口

  • 提取区域,利用 CNN 对中心点像素进行分类

语义分割思路:全卷积

  • 问题:处理过程中一直保持原始分辨率,对显存的需求会非常庞大

  • 解决方案:让整个网络只包含卷积层,并在网络中嵌入下采样与上采样过程,一次性输出所有像素的类别预测

反池化操作:

  • Unpooling,Max Unpooling
  • 可学习的上采样:转置卷积
    • 转置卷积:在特征图周围填充 0(直到正常卷积后得到更大的特征图),之后正常卷积,

上采样方法:

  • 最邻近插值

  • 双线性插值

  • 这些方法是基于先验经验设计的对很多场景效果并不理想

将转置卷积放置到神经网络中:可以使神经网络自主的学习来获取最优的上采样方式

转置卷积在处理复杂的上采样任务时更加灵活有效

目标检测:

输入一张图像,判断图中是否存在感兴趣的目标,如果存在,给出所有感兴趣目标的类别和位置

检测精度:

  • 准确率:检测结果中有多少是正确的,Recall=\dfrac{TP}

  • 召回率:所有实例中由多少被检测出来,Precision=\dfrac{TP}

    • TP:模型预测为正的正样本
    • TN:模型预测为正的负样本
    • FP:模型预测为负的正样本
    • TN:模型预测为负的负样本
  • 交并比:重叠面积占总的面积,大于一定阈值则定位正确 (交集面积 / 并集面积)

两阶段方法:

  • 方法思路:在第一阶段生成候选区域,第二阶段对生成的候选区域进行微调
  • 经典算法:RCNN,RFCN
  • 优势与不足
    • 两阶段检测方法精度高
    • 检测速度慢,所需要的计算资源多

RCNN 算法

  • 输入图像:输入一张待检测的图像
  • 候选区域生成:使用 SS 算法,在输入图像上生成一个 1K~2K 个候选区域
  • 特征提取:每个候选区域输入 CNN 网络提取一定维度特征
  • 类别判断:把提取的特征送入每一类的 SVM 分类器,判别是否属于该类

Fast-CNN 算法

  • 一张图像生成 1K~2K 个候选区域 (使用 SS 算法)
  • 将图像输入网络得到相应的特征图,将 SS 算法生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过 ROI pooling 层缩放到 7x7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

ROI Pooling 处理前不同的区域特征的空间尺寸可能不一致,但处理后的所有区域特征尺寸都是一样的

YOLO 系列

  • Yolov1
    • 将整张图像分割为 sxs 个网格,如果某个 object 的中心落在这个网格中,则这个网格就负责预测这个 object
    • 每个网格要预测 B 个 bbox,每个 bbox 除了预测位置之外,还要附带预测一个置信度,每个网络还要预测 C 个类别的分数
    • 一个预测 49 个目标,92 个边界框
    • 每个网格在进行回归预测时所需总参数量为 (SxSx (Bx5+C))=30
  • Yolov2
    • 采用了批量归一化,有助于解决反向传播过程中梯度消失的问题
    • 采用 Anchor 机制(在图像上预设好的不同大小,不同长宽比的参照框)
    • 预训练分类模型采用更高分辨率的图片

# 图卷积

节点分类

连接预测

图性质预测

# 节点嵌入

半监督学习

关键思想:基于本地网络邻居生成节点向量

基础方法:将平均邻居信息输入到神经网络中

  • 每一次节点更新时都加入自身信息

节点嵌入的目的时为了将图中每一个节点映射到一个低维的向量表示,在嵌入向量最好能满足一下性质:

  • 如果两个节点在图中具有很高的相似性,那么嵌入的也应该具有相应的相似性
  • 嵌入应该能够提取图的信息
  • 嵌入向量可以用于下游学习和预测任务
# 提取器与重构框架

提取器 (Encoder) 和重构器 (Decoder) 的目的是学习一种映射,把图节点映射到嵌入空间

流程:

  • 提取器将节点映射到嵌入空间
  • 定义节点相似性函数,即在原始图中节点相似性的度量方法
  • 重构器利用节点嵌入向量计算相似性分数
  • 优化提取器的参数,使得节点嵌入满足以下操作