一、模板匹配

1.1 定义

模板匹配旨在在一幅大图像中精准定位与给定小模板图像块一致的区域。这在图像识别、目标检测等领域应用广泛,比如在监控视频里查找特定人物时,就可将人物面部图像作为模板在视频帧图像中进行匹配。

1.2 方法

1.2.1 方法0:相关滤波法

  • 公式h[m,n]=∑k,lg[k,l]f[m+k,n+l]h[m, n]=\sum_{k, l} g[k, l] f[m + k, n + l]h[m,n]=k,lg[k,l]f[m+k,n+l],其中ggg代表模板,fff表示图像。
  • 示例:假设有3×3的图像f=[123456789]f=\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}f= 147258369 ,2×2的模板g=[1111]g=\begin{bmatrix}1&1\\1&1\end{bmatrix}g=[1111] 。当模板ggg位于图像fff左上角(m=0m = 0m=0n=0n = 0n=0 )时,h[0,0]=g[0,0]f[0,0]+g[0,1]f[0,1]+g[1,0]f[1,0]+g[1,1]f[1,1]=1×1+1×2+1×4+1×5=12h[0, 0]=g[0, 0]f[0, 0]+g[0, 1]f[0, 1]+g[1, 0]f[1, 0]+g[1, 1]f[1, 1]=1×1 + 1×2 + 1×4 + 1×5 = 12h[0,0]=g[0,0]f[0,0]+g[0,1]f[0,1]+g[1,0]f[1,0]+g[1,1]f[1,1]=1×1+1×2+1×4+1×5=12

1.2.2 方法1:零均值模板滤波(Zero - Mean Filter)

  • 公式h[m,n]=∑k,l(g[k,l]−g‾)(f[m+k,n+l])h[m, n]=\sum_{k, l}(g[k, l]-\overline{g})(f[m + k, n + l])h[m,n]=k,l(g[k,l]g)(f[m+k,n+l])g‾\overline{g}g是模板ggg的均值。
  • 示例:仍用上述图像fff和模板ggg ,模板ggg均值g‾=(1+1+1+1)÷4=1\overline{g}=(1 + 1 + 1 + 1)÷4 = 1g=(1+1+1+1)÷4=1 。当m=0m = 0m=0n=0n = 0n=0时,h[0,0]=(g[0,0]−g‾)f[0,0]+(g[0,1]−g‾)f[0,1]+(g[1,0]−g‾)f[1,0]+(g[1,1]−g‾)f[1,1]=(1−1)×1+(1−1)×2+(1−1)×4+(1−1)×5=0h[0, 0]=(g[0, 0] - \overline{g})f[0, 0]+(g[0, 1] - \overline{g})f[0, 1]+(g[1, 0] - \overline{g})f[1, 0]+(g[1, 1] - \overline{g})f[1, 1]=(1 - 1)×1 + (1 - 1)×2 + (1 - 1)×4 + (1 - 1)×5 = 0h[0,0]=(g[0,0]g)f[0,0]+(g[0,1]g)f[0,1]+(g[1,0]g)f[1,0]+(g[1,1]g)f[1,1]=(11)×1+(11)×2+(11)×4+(11)×5=0

1.2.3 方法2:距离平方和(Sum of Squared Distance,SSD)

  • 公式h[m,n]=∑k,l(g[k,l]−f[m+k,n+l])2h[m, n]=\sum_{k, l}(g[k, l]-f[m + k, n + l])^{2}h[m,n]=k,l(g[k,l]f[m+k,n+l])2,其展开式为h[m,n]=∑k,l(g[k,l])2−2∑k,lg[k,l]f[m+k,n+l]+∑k,l(f[m+k,n+l])2h[m, n]=\sum_{k, l}(g[k, l])^{2}-2 \sum_{k, l} g[k, l] f[m + k, n + l]+\sum_{k, l}(f[m + k, n + l])^{2}h[m,n]=k,l(g[k,l])22k,lg[k,l]f[m+k,n+l]+k,l(f[m+k,n+l])2
  • 示例:以之前的图像fff和模板ggg为例,当m=0m = 0m=0n=0n = 0n=0时,h[0,0]=(g[0,0]−f[0,0])2+(g[0,1]−f[0,1])2+(g[1,0]−f[1,0])2+(g[1,1]−f[1,1])2=(1−1)2+(1−2)2+(1−4)2+(1−5)2=0+1+9+16=26h[0, 0]=(g[0, 0] - f[0, 0])^{2}+(g[0, 1] - f[0, 1])^{2}+(g[1, 0] - f[1, 0])^{2}+(g[1, 1] - f[1, 1])^{2}=(1 - 1)^{2}+(1 - 2)^{2}+(1 - 4)^{2}+(1 - 5)^{2}=0 + 1 + 9 + 16 = 26h[0,0]=(g[0,0]f[0,0])2+(g[0,1]f[0,1])2+(g[1,0]f[1,0])2+(g[1,1]f[1,1])2=(11)2+(12)2+(14)2+(15)2=0+1+9+16=26

1.2.4 方法3:归一化互相关(Normalized cross - correlation)

  • 公式KaTeX parse error: Expected 'EOF', got '\right' at position 189: …, n}\right)^{2}\̲r̲i̲g̲h̲t̲)^{0.5}}gˉ\bar{g}gˉ是模板均值,fˉm,n\bar{f}_{m, n}fˉm,n是图像fff(m,n)(m,n)(m,n)位置对应区域的均值。
  • 示例:假设图像fff(m,n)(m,n)(m,n)位置对应区域为[1234]\begin{bmatrix}1&2\\3&4\end{bmatrix}[1324] ,其均值fˉm,n=(1+2+3+4)÷4=2.5\bar{f}_{m, n}=(1 + 2 + 3 + 4)÷4 = 2.5fˉm,n=(1+2+3+4)÷4=2.5 ,模板ggg均值g‾=1\overline{g}=1g=1 。计算分子:∑k,l(g[k,l]−g‾)(f[m+k,n+l]−f‾m,n)=(1−1)×(1−2.5)+(1−1)×(2−2.5)+(1−1)×(3−2.5)+(1−1)×(4−2.5)=0\sum_{k, l}(g[k, l]-\overline{g})(f[m + k, n + l]-\overline{f}_{m, n})=(1 - 1)×(1 - 2.5)+(1 - 1)×(2 - 2.5)+(1 - 1)×(3 - 2.5)+(1 - 1)×(4 - 2.5)=0k,l(g[k,l]g)(f[m+k,n+l]fm,n)=(11)×(12.5)+(11)×(22.5)+(11)×(32.5)+(11)×(42.5)=0 ;计算分母:∑k,l(g[k,l]−g‾)2=(1−1)2+(1−1)2+(1−1)2+(1−1)2=0\sum_{k, l}(g[k, l]-\overline{g})^{2}=(1 - 1)^{2}+(1 - 1)^{2}+(1 - 1)^{2}+(1 - 1)^{2}=0k,l(g[k,l]g)2=(11)2+(11)2+(11)2+(11)2=0 (实际中分母一般不为0 ),此时h[m,n]=0h[m, n]=0h[m,n]=0

1.3 不同方法的特点(表格)

方法 速度 准确性 对光照鲁棒性 误匹配情况
零均值模板滤波 最快 较低
距离平方和 第二快 中等 较少
归一化互相关 最慢

1.4 图像金字塔

1.4.1 定义

图像金字塔是一种多尺度图像表示结构,通过对原始图像进行低通滤波和降采样,生成不同分辨率的图像层,类似金字塔形状。

1.4.2 算法

以高斯金字塔为例,先对图像进行高斯滤波平滑,再降采样,通常将图像尺寸缩小为原来的一半。如对图像进行高斯滤波后,隔行隔列采样得到下一层图像。

1.4.3 分类

主要有直接降采样金字塔和高斯金字塔。直接降采样金字塔直接降采样易产生混叠;高斯金字塔先滤波再采样,可减少混叠。

1.4.4 用途

用于搜索尺度变化的模板、目标检测、尺度搜索、特征表示、检测兴趣点以及由粗到细的图像配准。在目标检测中,可检测不同大小目标。

二、拟合

2.1 定义

拟合是用参数模型表示特征,通过调整模型参数使模型逼近实际数据,以分析和描述数据。

2.2 好的拟合模型应该满足

  • 相似性度量应反映任务本身的目标:如直线拟合中用最小均方误差衡量直线与数据点的接近程度。
  • 对离群点和噪声有鲁棒性:实际数据存在离群点和噪声时,模型能保持较好拟合效果。

2.3 拟合方法

2.3.1 最小均方直线拟合

  • 公式:数据为(x1,y1),...,(xn,yn)(x_{1}, y_{1}),...,(x_{n}, y_{n})(x1,y1),...,(xn,yn) ,直线方程为yi=mxi+by_{i}=m x_{i}+byi=mxi+b 时,误差函数E=∑i=1n(yi−mxi−b)2E=\sum_{i = 1}^{n}(y_{i}-m x_{i}-b)^{2}E=i=1n(yimxib)2 ;直线方程为axi+byi+c=0a x_{i}+b y_{i}+c = 0axi+byi+c=0a2+b2=1a^{2}+b^{2}=1a2+b2=1 )时,E=∑i=1n(axi+byi+c)2E=\sum_{i = 1}^{n}(a x_{i}+b y_{i}+c)^{2}E=i=1n(axi+byi+c)2
  • 示例:有数据点(1,2)(1,2)(1,2)(2,3)(2,3)(2,3)(3,4)(3,4)(3,4) ,对于y=mx+by = mx + by=mx+bE=(2−m×1−b)2+(3−m×2−b)2+(4−m×3−b)2=29−40m−18b+14m2+12mb+3b2E=(2 - m×1 - b)^{2}+(3 - m×2 - b)^{2}+(4 - m×3 - b)^{2}=29 - 40m - 18b + 14m^{2}+12mb + 3b^{2}E=(2m×1b)2+(3m×2b)2+(4m×3b)2=2940m18b+14m2+12mb+3b2 。对mmmbbb求偏导并令其为0 :∂E∂m=−40+28m+12b=0\frac{\partial E}{\partial m}=-40 + 28m + 12b = 0mE=40+28m+12b=0∂E∂b=−18+12m+6b=0\frac{\partial E}{\partial b}=-18 + 12m + 6b = 0bE=18+12m+6b=0 ,解得m=1m = 1m=1b=1b = 1b=1

2.3.2 鲁棒最小均方拟合

  • 公式:通用表达形式ρ(u;σ)=u2σ2+u2\rho(u ; \sigma)=\frac{u^{2}}{\sigma^{2}+u^{2}}ρ(u;σ)=σ2+u2u2u2=∑i=1n(yi−mxi−b)2u^{2}=\sum_{i = 1}^{n}(y_{i}-m x_{i}-b)^{2}u2=i=1n(yimxib)2
  • 示例:有数据点(1,1)(1,1)(1,1)(2,2)(2,2)(2,2)(3,10)(3,10)(3,10)(3,10)(3,10)(3,10)为离群点),先以最小均方直线拟合得初始m=1m = 1m=1b=0b = 0b=0 。计算误差u2=(1−1×1−0)2+(2−1×2−0)2+(10−1×3−0)2=49u^{2}=(1 - 1×1 - 0)^{2}+(2 - 1×2 - 0)^{2}+(10 - 1×3 - 0)^{2}=49u2=(11×10)2+(21×20)2+(101×30)2=49 ,设σ=1\sigma = 1σ=1 ,则ρ(u;σ)=491+49=0.98\rho(u ; \sigma)=\frac{49}{1 + 49}=0.98ρ(u;σ)=1+4949=0.98 。然后按新度量优化mmmbbb ,迭代计算直至收敛。

2.3.3 迭代最近点

在处理复杂形状或点云数据拟合时常用。通过迭代寻找数据点与模型间的最近点对,据此调整模型参数,使模型逼近数据。例如在三维建模中,用迭代最近点算法对齐扫描得到的点云数据和已有模型。

2.3.4 随机抽样一致性(Random Sample Consensus,RANSAC)

  • 算法流程:从数据集中随机选取小子集;在子集上求解拟合函数参数;保留与模型接近的点,剔除离群点;多次迭代后选择最佳模型。
  • 示例:有10个数据点拟合直线,每次随机选2个点(s=2s = 2s=2 )。若第一次选(1,2)(1,2)(1,2)(2,3)(2,3)(2,3) ,拟合直线y=x+1y = x + 1y=x+1 。计算其他8个点到该直线距离,设距离阈值t=1t = 1t=1 ,若有5个点距离小于tttd=5d = 5d=5 ),则用这5个点再次拟合直线。重复NNN次(如N=10N = 10N=10 ),选在群点最多的拟合直线为最终结果。

三、霍夫变换

3.1 直线霍夫变换

  • 总体思想:基于投票策略,图像中的点在霍夫变换空间映射为直线,直线上的多个点映射的直线相交,通过统计投票数确定直线参数。
  • 参数空间表示:直角坐标表示有缺陷,极坐标表示为xcos⁡θ+ysin⁡θ=ρx\cos\theta + y\sin\theta = \rhoxcosθ+ysinθ=ρ ,图像空间的点对应参数空间的正弦曲线,直线对应正弦曲线交点。
  • 算法流程
    • 用Canny边缘检测器检测边缘。
    • 对于边缘点(x,y)(x, y)(x,y) :计算梯度方向θ\thetaθ ;计算ρ=xcos⁡θ+ysin⁡θ\rho = x\cos\theta + y\sin\thetaρ=xcosθ+ysinθ ;计算H(θ,ρ)=H(θ,ρ)+1H(\theta, \rho)=H(\theta, \rho)+1H(θ,ρ)=H(θ,ρ)+1
    • 平滑霍夫变换参数空间。
    • 寻找计数较大的点。
  • 示例:有简单图像,边缘点为(1,1)(1,1)(1,1)(2,2)(2,2)(2,2)(3,3)(3,3)(3,3) 。对于点(1,1)(1,1)(1,1) ,假设计算的梯度方向θ=45∘\theta = 45^{\circ}θ=45π4\frac{\pi}{4}4π弧度),则ρ=1×cos⁡π4+1×sin⁡π4=2\rho = 1×\cos\frac{\pi}{4}+1×\sin\frac{\pi}{4}=\sqrt{2}ρ=1×cos4π+1×sin4π=2 ,在H(π4,2)H(\frac{\pi}{4},\sqrt{2})H(4π,2 )处投票加1 。同理对其他点计算投票,平滑参数空间后,若H(π4,2)H(\frac{\pi}{4},\sqrt{2})H(4π,2 )投票最多,则θ=45∘\theta = 45^{\circ}θ=45ρ=2\rho=\sqrt{2}ρ=2 确定的直线就是检测到的直线。

3.2 圆霍夫变换

  • 参数空间表示:半径rrr未知时,圆方程为(x−a)2+(y−b)2=r2(x - a)^{2}+(y - b)^{2}=r^{2}(xa)2+(yb)2=r2 ;半径rrr已知时,主要考虑圆心(a,b)(a, b)(a,b)
  • 检测原理:与直线霍夫变换类似,圆上的点在霍夫变换参数空间形成对应曲线,通过投票统计确定圆的参数。
  • 示例:在图像中检测半径r=5r = 5r=5的圆。对于边缘点(x,y)(x, y)(x,y) ,根据(x−a)2+(y−b)2=25(x - a)^{2}+(y - b)^{2}=25(xa)2+(yb)2=25 ,在(a,b)(a, b)(a,b)参数空间中,该点在满足方程的(a,b)(a, b)(a,b)位置投票。如点(10,0)(10,0)(10,0) ,满足方程的(a,b)(a, b)(a,b)(5,0)(5,0)(5,0)(15,0)(15,0)(15,0)等,就在这些位置投票。最后统计投票数,投票多的(a,b)(a, b)(a,b)就是圆的圆心位置。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐