什么是模板匹配呢?簡單而言,就是在圖像中尋找目標圖像(模板),或者說,就是在圖像中尋找與模板圖像相似部分的一種圖像處理技術。依賴于選擇的方法不同,模板匹配可以處理各種情形下的變換,如照明、雜點、大小、位置以及旋轉,甚至模版內部的相對移動。
模版匹配的魯棒性和靈活性都很高,而且很多參數可以自適應生成,只有極少的參數需要配置。
在Halcon中,提供了各種不同的匹配方法。不同方法的選擇依賴于圖像數據以及要解決的任務。
匹配的流程
Acquire Images
對于訓練和匹配,首先必須先有圖像。
Create(Train) Model
為了生成一個模板,首先在訓練圖像中,必須指定包含模板的ROI區域。僅僅這些區域是重要的和穩定的,應該被用來訓練。訓練算子的輸入是裁剪后的圖像(可以使用reduce_domain完成)和控制參數。輸出是模型句柄。模型將用來立即搜索圖像。
Find Model
一旦創建好(或者讀入)了模型,立即可以用于定位圖像中的目標。
如果一個或者多個目標被發現,他們的姿勢(位置position、旋轉rotation、縮放scaling)或者
2D仿射變換矩陣和分數(score)被返回。這些值可以被作為下一步的處理。如對齊ROI。
Destroy Model
當我們不需要匹配模型時,你應該銷毀它。比如,對于shape-based 匹配,可以使用
clear_shape_model來銷毀。
各種匹配方法簡介
匹配方法 | 使用范圍 |
---|---|
Gray Value-based Matching | 要求照明不變的,內部灰度值和模板相同,應用極少 |
Correlation-based Matching | 不變性體現在:散焦、輕微的形變,線性光源,可以很好地處理紋理。 ,僅僅可以處理灰度圖像,不支持雜點、遮擋、縮放、非線性照明變換、以及多通道圖像 |
shape-based Matching | 可以處理雜點、遮擋、縮放、非線性照明變換、散焦以及輕微的變形,可以處理多通道圖像,也可以一次處理多個模型。但是對于紋理支持不好 。 |
Component-based Matching | 模板內部各個部分可以相對移動。可以處理雜點、遮擋、縮放、非線性照明變換,可以處理多通道圖像,也可以一次處理多個模型。但是對于紋理支持不好,且不能支持散焦以及變形。 |
Local deformable Matching | 可以返回模板樣例的變形,可以處理雜點、遮擋、縮放、非線性照明變換、局部變形,可以處理多通道圖像 |
Perspective deformable Matching | 可以處理雜點、遮擋、縮放、非線性照明變換、散焦、透視形變,可以處理多通道圖像,但是很難處理紋理 。 |
Descriptor-based Matching | 可以處理雜點、遮擋、縮放、非線性照明變換、透視形變,但是不能處理紋理、散焦以及多通道圖像。 |
需要說明的是Component-based Matching。
基于部分的匹配是基于形狀匹配的加強版。原因在于它可以允許內部的各個部件
移動(旋轉和平移)。比如我們常見的鉗子。有兩個分支組成。但是分支可開可合。這時使用基于分支的匹配可以一次性處理這樣一個組合物。否則可能得分開處理。
匹配方法的快速引導
如下的幾幅圖簡單介紹了如何針對特殊的應用,選擇合適的匹配方法。
圖1,總結了比較粗糙地選擇匹配的方法
圖1
圖2,介紹了幾種形變
圖2
圖3,介紹了不同方法可以處理的形變
圖3
圖4,介紹了不同方法可以返回的參數信息
圖4
圖5,介紹了幾種典型的目標外觀變換
圖5
圖6,介紹了不同方法可以處理的目標外觀變化
圖6
