【Halcon工業應用知識點】模板匹配處理手法總結(附源碼)

一、用途

1、常用於識別定位、測量、機械手抓取等

2、多用形狀匹配

二、原理

1、基於灰度(極少用)

    【案例best_match : 常規灰度匹配流程】

    【案例best_match_mg : 根據灰度圖調整模板】

    【案例set_reference_template : 設置從哪裏開始搜索】

2、基於相關性(少用)

    【案例find_ncc_model_exposure:常規相關性匹配流程】

 

3、基於形狀(最常用)

      一階導數算子、二階導數算子

      1、找到區域輪廓,生成模板,查找模板輪廓與目標區域輪廓

 

      圖像金字塔:一般設爲 3-5層

      模板、實例(找到的區域)

三、形狀匹配【使用圖像創建模板】

    手法:採集 - 預處理 - 摳圖 - 創建模板 - 查找 - 顯示

   【案例】

    1、採集圖像

    2、預處理:獲得作爲模板匹配的區域,一般會稍微膨脹

    3、摳圖(手動摳圖/Blob摳圖)

    4、創建模板

           create_scaled_shape_model() 匹配的圖像可縮放(行列等比例縮放)、旋轉

           Template:用於創建模板的圖像

           NumLevels:金字塔層數

           *AngleStart:模板開始角度 視情況而定

           *AngleExtent:模板角度範圍

            AngleStep:模板角度步長

           *ScaleMin:最小縮放比例

           *ScaleMax:最大縮放比例

            ScaleStep:縮放步長

            Optimization:優化算法

            *Metric: 匹配極性

            Contrast:模板與實例的對比度

            MinContrast:模板前景與背景的對比度(對比度越大,則輪廓點數越少,一般20左右)

            ModelID:創建的模板句柄

            create_aniso_shape_model() :匹配的圖像行列可不等比例縮放

            create_shape_model() :匹配的圖像不可縮放

5、查找(對應創建的模板形式)

find_scaled_shape_model(s) 尋找匹配可旋轉縮放的圖像

Image: 模板匹配的目標圖像

ModelID: 匹配模板句柄

AngleStart: 匹配其實角度(注:此處的角度值與縮放值均在創建模板的參數範圍內即可)

AngleExtent:匹配角度範圍

ScaleMin: 匹配目標的最小縮放比例

ScaleMax: 匹配目標的最大縮放比例

MinScore: 最小分數,類似於匹配度,分數低於這個值的目標,則不會被匹配上

* NumMatches:查找個數(0爲查找所有)

MaxOverlap: 目標重疊度

SubPixel:亞像素精度

* NumLevels:金字塔層數

* Greediness:貪婪度(找不到需要調整參數)

Row:查找結果行座標

Column:查找結果列座標

Angle:查找結果角度

Scale:查找結果縮放比例

Score:查找結果分數,即匹配度

find_aniso_shape_model(s):

find_shape_model(s):

 

【案例關鍵點】

1、find_scaled_shape_model: 常規模板匹配創建及匹配(行列縮放爲等比例)

2、first_example_shape_matching: 芯片模板匹配(不可縮放)

3、find_aniso_shape_model: 匹配目標的行列比例可縮放(可不等比例),單個模板對應多個目標

5、reuse_model: 保存模板文件

6、pm_multiple_models: 多模板匹配(內部包含從cad文件導入輪廓)

7、check_soft_cheese :多模板匹配

8、find_cococa_packages_max_deformation(或find_shape_model_max_deformation): 類似包裝袋等非剛性物體表面有形變的匹配(重點參數:max_deformation N,N越大允許形變越大)

9、使用均值創建模板(案例4)

10、matching_image_border: 匹配邊界圖像時需設置

11、matching_coins: 縮減一個區域,指定從該出查找減少查找時間

12、matching_defocused_pcb : 模糊查找,查找時金字塔設爲[0, -n]

13、process_shape_model:創建模板前,看下模板是否完整,是否需要修改,修改後再創建模板

14、find_peanut_candies_local_deformable: 柔性產品、包裝袋產品形變(形變大時使用本組合算子)

create_local_deformable_model:創建模板

find_local_deformable_model:查找

15、set_shape_model_timeout :設置查找最長時間,超過便不查

16、set_shape_model_min_contrast: 設置模板與實例的最小對比度,提高查找正確率

 

四、形狀匹配【使用輪廓創建模板】

手法:採集 - 預處理 - 獲取xld輪廓 - 創建模板 - 查找 - 顯示

1、採集圖像

2、預處理:

3、獲取xld輪廓

4、創建模板

create_scaled_shape_model_xld() :匹配的圖像可縮放、旋轉

create_aniso_shape_model_xld() :匹配的圖像僅僅在X、Y方向縮放

create_shape_model_xld() :匹配的圖像不可縮放

 

5、查找(對應創建的模板形式)

find_scaled_shape_model(s) 尋找匹配可旋轉縮放的圖像

find_aniso_shape_model(s):

find_shape_model(s) :

 

【案例關鍵點】

create_shape_model_xld: 創建xld輪廓模板,用xld輪廓去匹配


五、基於組件匹配

    可應用於開關檢測(開關檢測也可用多模板匹配)

六、分類

模板匹配:

  • 基於灰度值
  • 基於相關
  • 基於形狀
  • 局部可變形
  • 可變現(適合剛性透視變換、透視失真) create_planar_uncalib_deformable_model_xld
  • 基於組件 利用模板之間的關係
  • 基於描述符

案例:

*讀取圖片
read_image (Image, '1.png')
*畫一個ROI區域
gen_rectangle1 (ROI_0, 57.625, 55.5, 186.063, 190.5)
*用上面畫出的ROI摳圖
reduce_domain (Image, ROI_0, ImageReduced)
*用摳出的圖像做成模板
create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*獲取模板輪廓,此步非必須
*get_shape_model_contours (ModelContours, ModelID, 1)
*在原圖中查找模板
find_shape_model (Image, ModelID, -0.39, 0.78, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*顯示模板匹配的結果,即將模板的輪廓變換到識別到的位置
dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, 1, 1, 0)

 

項目案例分享:

鏈接:https://pan.baidu.com/s/13orowAalkoXaRxdbDgZjIw 
提取碼:s2pd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章