当前位置: 首页 > article >正文

计算机视觉3——模板匹配与拟合

一、模板匹配

1.1 定义

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

1.2 方法

1.2.1 方法0:相关滤波法

  • 公式 h [ m , n ] = ∑ k , l g [ 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],其中 g g g代表模板, f f f表示图像。
  • 示例:假设有3×3的图像 f = [ 1 2 3 4 5 6 7 8 9 ] f=\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} f= 147258369 ,2×2的模板 g = [ 1 1 1 1 ] g=\begin{bmatrix}1&1\\1&1\end{bmatrix} g=[1111] 。当模板 g g g位于图像 f f f左上角( m = 0 m = 0 m=0 n = 0 n = 0 n=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 = 12 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 = 12 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=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是模板 g g g的均值。
  • 示例:仍用上述图像 f f f和模板 g g g ,模板 g g g均值 g ‾ = ( 1 + 1 + 1 + 1 ) ÷ 4 = 1 \overline{g}=(1 + 1 + 1 + 1)÷4 = 1 g=(1+1+1+1)÷4=1 。当 m = 0 m = 0 m=0 n = 0 n = 0 n=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 = 0 h[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 = 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]=(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 ] ) 2 h[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 , l g [ k , l ] f [ m + k , n + l ] + ∑ k , l ( f [ m + k , n + l ] ) 2 h[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
  • 示例:以之前的图像 f f f和模板 g g g为例,当 m = 0 m = 0 m=0 n = 0 n = 0 n=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 = 26 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 = 26 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=(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是图像 f f f ( m , n ) (m,n) (m,n)位置对应区域的均值。
  • 示例:假设图像 f f f ( m , n ) (m,n) (m,n)位置对应区域为 [ 1 2 3 4 ] \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.5 fˉm,n=(1+2+3+4)÷4=2.5 ,模板 g g g均值 g ‾ = 1 \overline{g}=1 g=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)=0 k,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}=0 k,l(g[k,l]g)2=(11)2+(11)2+(11)2+(11)2=0 (实际中分母一般不为0 ),此时 h [ m , n ] = 0 h[m, n]=0 h[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 最小均方直线拟合

  • 公式:数据为 ( x 1 , y 1 ) , . . . , ( x n , y n ) (x_{1}, y_{1}),...,(x_{n}, y_{n}) (x1,y1),...,(xn,yn) ,直线方程为 y i = m x i + b y_{i}=m x_{i}+b yi=mxi+b 时,误差函数 E = ∑ i = 1 n ( y i − m x i − b ) 2 E=\sum_{i = 1}^{n}(y_{i}-m x_{i}-b)^{2} E=i=1n(yimxib)2 ;直线方程为 a x i + b y i + c = 0 a x_{i}+b y_{i}+c = 0 axi+byi+c=0 a 2 + b 2 = 1 a^{2}+b^{2}=1 a2+b2=1 )时, E = ∑ i = 1 n ( a x i + b y i + c ) 2 E=\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 = m x + b y = mx + b y=mx+b E = ( 2 − m × 1 − b ) 2 + ( 3 − m × 2 − b ) 2 + ( 4 − m × 3 − b ) 2 = 29 − 40 m − 18 b + 14 m 2 + 12 m b + 3 b 2 E=(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 。对 m m m b b b求偏导并令其为0 : ∂ E ∂ m = − 40 + 28 m + 12 b = 0 \frac{\partial E}{\partial m}=-40 + 28m + 12b = 0 mE=40+28m+12b=0 ∂ E ∂ b = − 18 + 12 m + 6 b = 0 \frac{\partial E}{\partial b}=-18 + 12m + 6b = 0 bE=18+12m+6b=0 ,解得 m = 1 m = 1 m=1 b = 1 b = 1 b=1

2.3.2 鲁棒最小均方拟合

  • 公式:通用表达形式 ρ ( u ; σ ) = u 2 σ 2 + u 2 \rho(u ; \sigma)=\frac{u^{2}}{\sigma^{2}+u^{2}} ρ(u;σ)=σ2+u2u2 u 2 = ∑ i = 1 n ( y i − m x i − b ) 2 u^{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 = 1 m = 1 m=1 b = 0 b = 0 b=0 。计算误差 u 2 = ( 1 − 1 × 1 − 0 ) 2 + ( 2 − 1 × 2 − 0 ) 2 + ( 10 − 1 × 3 − 0 ) 2 = 49 u^{2}=(1 - 1×1 - 0)^{2}+(2 - 1×2 - 0)^{2}+(10 - 1×3 - 0)^{2}=49 u2=(11×10)2+(21×20)2+(101×30)2=49 ,设 σ = 1 \sigma = 1 σ=1 ,则 ρ ( u ; σ ) = 49 1 + 49 = 0.98 \rho(u ; \sigma)=\frac{49}{1 + 49}=0.98 ρ(u;σ)=1+4949=0.98 。然后按新度量优化 m m m b b b ,迭代计算直至收敛。

2.3.3 迭代最近点

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

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

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

三、霍夫变换

3.1 直线霍夫变换

  • 总体思想:基于投票策略,图像中的点在霍夫变换空间映射为直线,直线上的多个点映射的直线相交,通过统计投票数确定直线参数。
  • 参数空间表示:直角坐标表示有缺陷,极坐标表示为 x cos ⁡ θ + y sin ⁡ θ = ρ x\cos\theta + y\sin\theta = \rho xcosθ+ysinθ=ρ ,图像空间的点对应参数空间的正弦曲线,直线对应正弦曲线交点。
  • 算法流程
    • 用Canny边缘检测器检测边缘。
    • 对于边缘点 ( x , y ) (x, y) (x,y) :计算梯度方向 θ \theta θ ;计算 ρ = x cos ⁡ θ + y sin ⁡ θ \rho = x\cos\theta + y\sin\theta ρ=xcosθ+ysinθ ;计算 H ( θ , ρ ) = H ( θ , ρ ) + 1 H(\theta, \rho)=H(\theta, \rho)+1 H(θ,ρ)=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) ,假设计算的梯度方向 θ = 4 5 ∘ \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 )投票最多,则 θ = 4 5 ∘ \theta = 45^{\circ} θ=45 ρ = 2 \rho=\sqrt{2} ρ=2 确定的直线就是检测到的直线。

3.2 圆霍夫变换

  • 参数空间表示:半径 r r r未知时,圆方程为 ( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^{2}+(y - b)^{2}=r^{2} (xa)2+(yb)2=r2 ;半径 r r r已知时,主要考虑圆心 ( a , b ) (a, b) (a,b)
  • 检测原理:与直线霍夫变换类似,圆上的点在霍夫变换参数空间形成对应曲线,通过投票统计确定圆的参数。
  • 示例:在图像中检测半径 r = 5 r = 5 r=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)就是圆的圆心位置。

http://www.kler.cn/a/610264.html

相关文章:

  • 如何在 HTML 中嵌入外部字体,有哪些注意事项?
  • Java EE(12)——初始网络
  • 《索引江湖:B树索引与哈希索引的风云对决》
  • Rust从入门到精通之进阶篇:14.并发编程
  • 18502 字符串哈希匹配字符串
  • CF254B Jury Size
  • 备赛蓝桥杯之第十六届模拟赛2期职业院校组第六题:菜谱教程
  • ngx_http_core_root
  • ngx_http_core_error_page
  • 回退N帧协议(GBN)有差错情况下的详细流程
  • Unity2D 五子棋 + Photon联网双人对战
  • Android系统的安全问题 - Linux的能力模型(Capability)和 SELinux 的区别
  • Checksum方法实现
  • DDR4、DDR5、固态硬盘(SSD)和机械硬盘(HDD)在连续读/写、随机读/写性能的对比分析
  • Softmax 回归 + 损失函数 + 图片分类数据集
  • 重生细胞全符文获取攻略
  • LangChain4j(1):初识LangChain4j
  • 3. 轴指令(omron 机器自动化控制器)——>MC_GearInPos
  • Open CASCADE学习|根据给定的点集拟合一条B样条曲线
  • MATLAB导入Excel数据