基於HALCON的模板匹配方法總結

2021-06-29 00:26:14 字數 2334 閱讀 2369

1.       shape-based matching的基本流程

⑴ 首先確定出roi的矩形區域,這裡只需要確定矩形的左上點和右下點的座標即可,gen_rectangle1()這個函式就會幫助你生成乙個矩形,利用area_center()找到這個矩形的中心;

⑵ 然後需要從影象中獲取這個矩形區域的影象,reduce_domain()會得到這個roi;這之後就可以對這個矩形建立模板,而在建立模板之前,可以先對這個區域進行一些處理,方便以後的建模,比如閾值分割,數學形態學的一些處理等等;

⑶ 接下來就可以利用create_shape_model()來建立模板了,這個函式有許多引數,其中金字塔的級數由numlevels指定,值越大則找到物體的時間越少,anglestart和angleextent決定可能的旋轉範圍,anglestep指定角度範圍搜尋的步長;這裡需要提醒的是,在任何情況下,模板應適合主記憶體,搜尋時間會縮短。對特別大的模板,用optimization來減少模板點的數量是很有用的;minconstrast將模板從影象的雜訊中分離出來,如果灰度值的波動範圍是10,則minconstrast應當設為10;metric引數決定模板識別的條件,如果設為』use_polarity』,則影象中的物體和模板必須有相同的對比度;建立好模板後,這時還需要監視模板,用inspect_shape_model()來完成,它檢查引數的適用性,還能幫助找到合適的引數;另外,還需要獲得這個模板的輪廓,用於後面的匹配,get_shape_model_contours()則會很容易的幫我們找到模板的輪廓;

⑷ 建立好模板後,就可以開啟另一幅影象,來進行模板匹配了。這個過程也就是在新影象中尋找與模板匹配的影象部分,這部分的工作就由函式find_shape_model()來承擔了,它也擁有許多的引數,這些引數都影響著尋找模板的速度和精度。這個的功能就是在一幅圖中找出最佳匹配的模板,返回乙個模板例項的長、寬和旋轉角度。其中引數subpixel決定是否精確到亞畫素級,設為』interpolation』,則會精確到,這個模式不會占用太多時間,若需要更精確,則可設為』least_square』,』lease_square_high』,但這樣會增加額外的時間,因此,這需要在時間和精度上作個折中,需要和實際聯絡起來。比較重要的兩個引數是minsocre和greediness,前乙個用來分析模板的旋轉對稱和它們之間的相似度,值越大,則越相似,後乙個是搜尋貪婪度,這個值在很大程度上影響著搜尋速度,若為0,則為啟發式搜尋,很耗時,若為1,則為不安全搜尋,但最快。在大多數情況下,在能夠匹配的情況下,盡可能的增大其值。

⑸ 找到之後,還需要對其進行轉化,使之能夠顯示,這兩個函式vector_angle_to_rigid()和affine_trans_contour_xld()在這裡就起這個作用。前乙個是從乙個點和角度計算乙個剛體仿射變換,這個函式從匹配函式的結果中對構造乙個剛體仿射變換很有用,把參考影象變為當前影象。

其詳細的流程圖和中間引數,如下圖所示:(無法上傳)

2.       基於形狀匹配的引數關係與優化

在halcon的說明資料裡講到了這些引數的作用以及關係,在上面提到的文章中也作了介紹,這裡主要是重複說明一下這些引數的作用,再強調一下它們影響匹配速度的程度;

在為了提高速度而設定引數之前,有必要找出那些在所有測試影象中匹配成功的設定,這時需考慮以下情況:

①     必須保證物體在影象邊緣處截斷,也就是保證輪廓的清晰,這些可以通過形態學的一些方法來處理;

②     如果greediness值設的太高,就找不到其中一些可見物體,這時最後將其設為0來執行完全搜尋;

③     物體是否有封閉區域,如果要求物體在任何狀態下都能被識別,則應減小minscore值;

④     判斷在金字塔最高端上的匹配是否失敗,可以通過find_shape_model()減小numlevels值來測試;

⑤     物體是否具有較低的對比度,如果要求物體在任何狀態下都能被識別,則應減小mincontrast值;

⑥     判斷是否全域性地或者區域性地轉化對比度極性,如果需要在任何狀態下都能被識別,則應給引數metric設定乙個合適的值;

⑦     物體是否與物體的其他例項重疊,如果需要在任何狀態下都能識別物體,則應增加maxoverlap值;

⑧     判斷是否在相同物體上找到多個匹配值,如果物體幾乎是對稱的,則需要控制旋轉範圍;

如何加快搜尋匹配,需要在這些引數中進行合理的搭配,有以下方法可以參考:

①       只要匹配成功,則盡可能增加引數minscore的值;

②       增加greediness值直到匹配失敗,同時在需要時減小minscore值;

③       如果有可能,在建立模板時使用乙個大的numlevels,即將影象多分幾個金字塔級;

④       限定允許的旋轉範圍和大小範圍,在呼叫find_shape_model()時調整相應的引數;

⑤       盡量限定搜尋roi的區域;

基於HALCON的模板匹配方法總結

基於halcon的模板匹配方法總結 1.shape based matching的基本流程 首先確定出roi的矩形區域,這裡只需要確定矩形的左上點和右下點的座標即可,gen rectangle1 這個函式就會幫助你生成乙個矩形,利用area center 找到這個矩形的中心 然後需要從影象中獲取這個...

基於HALCON的模板匹配方法總結

德國 mvtec 公司開發的 halcon 機器視覺開發軟體,提供了許多的功能,在這裡我主要學習和研究了其中的形狀匹配的演算法和流程。hdevelop 開發環境中提供的匹配的方法主要有三種,即 component based gray value based shape based,分別是基於元件 ...

Halcon中模板匹配方法的總結歸納

基於元件的模板匹配 應用場合 元件匹配是形狀匹配的擴充套件,但不支援大小縮放匹配,一般用於多個物件 工件 定位的場合。演算法步驟 1.獲取元件模型裡的初始控制項 gen initial components 引數 modelimage input 初始元件的 initialcomponents ou...