天天看點

圖像處理HALCON中的模闆比對方法總結摘要

HALCON中的模闆比對方法總結

  • 摘要
    • 1. Shape-Based matching的基本流程
    • 2. 基于形狀比對的參數關系與優化

摘要

德國MVTec公司開發的HALCON機器視覺開發軟體,提供了許多的功能,在這裡我主要學習和研究了其中的形狀比對的算法和流程。HDevelop開發環境中提供的比對的方法主要有三種,即Component-Based、Gray-Value-Based、Shape-Based,分 别是基于元件(或成分、元素)的比對,基于灰階值的比對和基于形狀的比對。這三種比對的方法各具特點,分别适用于不同的圖像特征,但都有建立模闆和尋找模 闆的相同過程。這三種方法裡面,我主要就第三種-基于形狀的比對,做了許多的實驗,是以也做了基于形狀比對的物體識别,基于形狀比對的視訊對象分割和基于 形狀比對的視訊對象跟蹤這些研究,從中取得較好的效果,簡化了用其他工具,比如VC++來開發的過程。在VC下往往針對不同的圖像格式,就會弄的很頭疼,更不用說編寫圖像特征提取、模闆建立和搜尋模闆的代碼呢,我想其中間過程會很複雜,效果也不一定會顯著。下面我就具體地談談基于HALCON的形狀比對算法的研究和心得總結。

1. Shape-Based matching的基本流程

HALCON提 供的基于形狀比對的算法主要是針對感興趣的小區域來建立模闆,對整個圖像建立模闆也可以,但這樣除非是對象在整個圖像中所占比例很大,比如像視訊會議中人 體上半身這樣的圖像,我在後面的視訊對象跟蹤實驗中就是針對整個圖像的,這往往也是要犧牲比對速度的,這個後面再講。基本流程是這樣的,如下所示:

  1. 首先确定出ROI的矩形區域,這裡隻需要确定矩形的左上點和右下點的坐标即可,gen_rectangle1()這個函數就會幫助你生成一個矩形,利用area_center()找到這個矩形的中心;
  2. 然後需要從圖像中擷取這個矩形區域的圖像,reduce_domain()會得到這個ROI;這之後就可以對這個矩形建立模闆,而在建立模闆之前,可以先對這個區域進行一些處理,友善以後的模組化,比如門檻值分割,數學形态學的一些處理等等;
  3. 接下來就可以利用create_shape_model()來建立模闆了,這個函數有許多參數,其中金字塔的級數由Numlevels指定,值越大則找到物體的時間越少,AngleStart和AngleExtent決定可能的旋轉範圍,AngleStep指定角度範圍搜尋的步長;這裡需要提醒的是,在任何情況下,模闆應适合主記憶體,搜尋時間會縮短。對特别大的模闆,用Optimization來減少模闆點的數量是很有用的;MinConstrast将模闆從圖像的噪聲中分離出來,如果灰階值的波動範圍是10,則MinConstrast應當設為10;Metric參數決定模闆識别的條件,如果設為』use_polarity』,則圖像中的物體和模闆必須有相同的對比度;建立好模闆後,這時還需要監視模闆,用inspect_shape_model()來完成,它檢查參數的适用性,還能幫助找到合适的參數;另外,還需要獲得這個模闆的輪廓,用于後面的比對,get_shape_model_contours()則會很容易的幫我們找到模闆的輪廓;
  4. 建立好模闆後,就可以打開另一幅圖像,來進行模闆比對了。這個過程也就是在新圖像中尋找與模闆比對的圖像部分,這部分的工作就由函數find_shape_model()來承擔了,它也擁有許多的參數,這些參數都影響着尋找模闆的速度和精度。這個的功能就是在一幅圖中找出最佳比對的模闆,傳回一個模闆執行個體的長、寬和旋轉角度。其中參數SubPixel決定是否精确到亞像素級,設為』interpolation』,則會精确到,這個模式不會占用太多時間,若需要更精确,則可設為』least_square』,』lease_square_high』,但這樣會增加額外的時間,是以,這需要在時間和精度上作個折中,需要和實際聯系起來。比較重要的兩個參數是MinSocre和Greediness,前一個用來分析模闆的旋轉對稱和它們之間的相似度,值越大,則越相似,後一個是搜尋貪婪度,這個值在很大程度上影響着搜尋速度,若為0,則為啟發式搜尋,很耗時,若為1,則為不安全搜尋,但最快。在大多數情況下,在能夠比對的情況下,盡可能的增大其值。
  5. 找到之後,還需要對其進行轉化,使之能夠顯示,這兩個函數vector_angle_to_rigid()和affine_trans_contour_xld()在這裡就起這個作用。前一個是從一個點和角度計算一個剛體仿射變換,這個函數從比對函數的結果中對構造一個剛體仿射變換很有用,把參考圖像變為目前圖像。

2. 基于形狀比對的參數關系與優化

在HALCON的說明資料裡講到了這些參數的作用以及關系,在上面提到的文章中也作了介紹,這裡主要是重複說明一下這些參數的作用,再強調一下它們影響比對速度的程度;在為了提高速度而設定參數之前,有必要找出那些在所有測試圖像中比對成功的設定,這時需考慮以下情況:

  1. 必須保證物體在圖像邊緣處截斷,也就是保證輪廓的清晰,這些可以通過形态學的一些方法來處理;
  2. 如果Greediness值設的太高,就找不到其中一些可見物體,這時最後将其設為0來執行完全搜尋;
  3. 物體是否有封閉區域,如果要求物體在任何狀态下都能被識别,則應減小MinScore值;
  4. 判斷在金字塔最進階上的比對是否失敗,可以通過find_shape_model()減小NumLevels值來測試;
  5. 物體是否具有較低的對比度,如果要求物體在任何狀态下都能被識别,則應減小MinContrast值;
  6. 判斷是否全局地或者局部地轉化對比度極性,如果需要在任何狀态下都能被識别,則應給參數Metric設定一個合适的值;
  7. 物體是否與物體的其他執行個體重疊,如果需要在任何狀态下都能識别物體,則應增加MaxOverlap值;
  8. 判斷是否在相同物體上找到多個比對值,如果物體幾乎是對稱的,則需要控制旋轉範圍;

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

① 隻要比對成功,則盡可能增加參數MinScore的值;

② 增加Greediness值直到比對失敗,同時在需要時減小MinScore值;

③ 如果有可能,在建立模闆時使用一個大的NumLevels,即将圖像多分幾個金字塔級;

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

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

除上面介紹的以外,在保證能夠比對的情況下,盡可能的增大Greediness的值,因為在後面的實驗中,用模闆比對進行視訊對象跟蹤的過程中,這個值在很大程度上影響到比對的速度。

當然這些方法都需要跟實際聯系起來,不同圖像在比對過程中也會有不同的比對效果,在具體到某些應用,不同的硬體設施也會對這個比對算法提出新的要求,是以需要不斷地去嘗試。在接下來我會結合自己做的具體的實驗來如何利用HALCON來進行實驗,主要是在視訊對象分割和視訊對象的跟蹤方面。

繼續閱讀