Halcon模版匹配算子參數詳解

轉:https://blog.csdn.net/maweifei/article/details/78188993

        https://blog.csdn.net/z397164725/article/details/20695177

create_shape_model(
Template : :           //reduce_domain後的模板圖像
NumLevels,          //金字塔的層數,可設爲“auto”或0—10的整數
AngleStart,           //模板旋轉的起始角度
AngleExtent,        //模板旋轉角度範圍, >=0
AngleStep,           //旋轉角度的步長, >=0 and <=pi/16
Optimization,       //設置模板優化和模板創建方法
Metric,                  //匹配方法設置
Contrast,              //設置對比度
MinContrast :      //設置最小對比度
ModelID )              //輸出模板句柄

1. NumLevels越大,找到匹配使用的時間就越小。

必須保證最高層的圖像具有足夠的信息(至少四個點)。可以通過inspect_shape_model函數查看設置的結果。如果最高層金字塔的消息太少,算法內部會自動減少金字塔層數,如果最底層金字塔的信息太少,函數就會報錯。如果設爲auto,算法會自動計算金字塔的層數,我們可以通過get_shape_model_params函數查看金字塔的層數。如果金字塔的層數太大,模板不容易識別出來,這是需要將find_shape_model函數中MinScore和Greediness參數設置的低一些。如果金字塔層數太少找到模板的時間會增加。可以先使用inspect_shape_model函數的輸出結果來選擇一個較好的金字塔層數

2. 參數AngleStart、AngleExtent定義了模板可能發生旋轉的範圍

注意模板在find_shape_model函數中只能找到這個範圍內的匹配。

3.參數AngleStep定義了旋轉角度範圍內的步長

如果在find_shape_model函數中沒有指定亞像素精度,這個參數指定的精度是可以實現find_shape_mode函數中的角度的。參數AngleStep的選擇是基於目標的大小的,如果模板圖像太小不能產生許多不同離散角度的圖像,因此對於較小的模板圖像AngleStep應該設置的比較大。如果AngleExtent不是AngleStep的整數倍, 將會相應的修改AngleStep。由於find_shape_model函數中的角度可以使用亞像素精度,一個直徑小於200像素的模板可以選擇AngleStep>= 1. 
     如果選擇AngleStep='auto' (or 0 向後兼容),create_shape_model將會基於模板的大小自動定義一個合適的角度步長. 自動計算出來的AngleStep可以使用get_shape_model_params函數查看。
     如果沒有選擇complete pregeneration, 該模型會在每一層金字塔上建立在一個參考的位置。這樣在find_shape_model函數運行時,該模型必須轉化爲不同的角度和尺度在運行時在。正因爲如此,匹配該模型可能需要更多的時間。


4.參數Optimization模板最優化儲存方式

1)對於特別大的模板圖像,將參數Optimization設置爲不同於'none'的其他數值是非常有用的

如果Optimization= 'none', 所有的模型點將要存儲,在其他情況下, Optimization設置不等於none模型存儲的點會減少. 如果模型點數變少了,必須在find_shape_model函數中將參數Greediness(用於控制定位加速。該值越大,速度越快,找丟模板的機率也越大。推薦值0.7-0.9)設爲一個比較小的值, 比如:0.7、0.8

2)對於比較小的模型, 減少模型點數並不能提高搜索速度,因爲這種情況下通常有更多的潛在情況的模型必須進行檢查。如果Optimization設置爲'auto', create_shape_model自動確定模型的點數

5. 參數Contras決定着模型點的對比度

對比度是用來測量目標與背景之間和目標不同部分之間局部的灰度值差異Contrast的選擇應該確保模板中的主要特徵用於模型中。Contrast也可以是兩個數值,這時模板使用近似edges_image函數中滯後閾值的算法進行分割。這裏第一個數值是比較低的閾值,第二個數值是比較高的閾值。Contrast也可以包含第三個,這個數值是在基於組件尺寸選擇重要模型組件時所設置的閾值,比如,比指定的最小尺寸的點數還少的組件將被抑制。這個最小尺寸的閾值會在每相鄰的金字塔層之間除以2。如果一個小的模型組件被抑制,但是不使用滯後閾值,然而在Contrast中必須指定三個數值,在這種情況下前兩個數值設置成相同的數值。這個參數的設置可以在inspect_shape_model函數中查看效果。如果Contrast設置爲'auto',create_shape_model將會自動確定三個上面描述的數值。或者僅僅自動設置對比度('auto_contrast'),滯後閾值('auto_contrast_hyst')或是最小尺寸('auto_min_size')中一個。其他沒有自動設置的數值可以按照上面的格式再進行設置。可以允許各種組合,例如:如果設置 ['auto_contrast','auto_min_size'],對比度和最小尺寸自動確定;如果設置 ['auto_min_size',20,30],最小尺寸會自動設定,而滯後閾值被設爲20和30。有時候可能對比度閾值自動設置的結果是不滿意的,例如,由於一些具體應用的原因當某一個模型組件是被包含或是被抑制時,或是目標包含幾種不同的對比度時,手動設置這些參數效果會更好。因此對比度閾值可以使用determine_shape_model_params函數自動確定,也可以在調用create_shape_model之前使用inspect_shape_mode函數檢查效果。

6. 參數Metric定義了在圖像中匹配模板的條件

如果Metric= 'use_polarity',圖像中的目標必須和模型具有一樣的對比度。例如,如果模型是一個亮的目標在一個暗的背景上,那麼僅僅那些比背景亮的目標可以找到。

Metric= 'ignore_global_polarity',在兩者對比度完全相反時也能找到目標,find_shape_model函數的運行時間在這種情況下將會略微增加

如果Metric= ignore_local_polarity', 即使局部對比度改變也能找到模型例如,當目標包含一部分中等灰度,並且其中部分比較亮部分比較暗時,這種模式是非常有用的。由於這種模式下find_shape_model函數的運行時間顯著增加,最好的方法是使用create_shape_model創建幾個反映目標可能的對比度變化的模型,同時使用find_shape_models去匹配他們

上面三個metrics僅僅適用於單通道圖像。如果是多通道圖像作爲模板圖像或搜索圖像,僅僅第一個通道會被使用。

如果Metric='ignore_color_polarity', 即使顏色對比度局部變化也能找到模型可以使用於具有任意通道數目的圖像中。如果使用於單通道圖像,他的效果和'ignore_loc al_polarity'是完全相同的。在這種情況下find_shape_model函數的運行時間也會急劇增。

7. create_shape_model創建的模板通道數目和find_shape_model中的圖像通道數目可以是不同的。例如,可以使用綜合生成的單通道圖像創建模型。另外,這些通道不需要是經過光譜細分(像RGB圖像)的。這些通道還可以包括具有在不同方向照亮同一個目標所獲得的圖像。

create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)

Template :模板圖像

NumLevels:圖像金字塔級數,該值越小,模板匹配耗時越長,可設置自動-‘Auto’,可使用get_shape_model_params來獲取模板所有參數,包括級數。

AngleStart:模板起始角度。

AngleExtent:模板角度幅度,若目標有旋轉,模板需做不同角度。

AngleStep:角度步長,可設置自動-‘Auto’。

注:若選擇預生產模式,不同角度的模板在創建模板時生成。否則在匹配find_shape_model時生成,這樣無疑會耗費更長的模板匹配時間。

Optimization:模板點儲存模式,設爲’none’時,全點儲存,若選擇點較少時,匹配分值可能較低。當設爲’auto’時,點數自動減少。當模板較小時,較少點數並不會降低模板匹配時間,因爲將有更多的可能的實例必須被檢查。所以當模板較大時,可較少點數,用於提速。

Metric:圖像與模板中對比度差異不大時,選擇'use_polarity';設爲'ignore_global_polarity',只有對比度相反的對象纔會被發現,且模板與噪聲區分開來。在可提取完整模板信息的前提下,設置偏大,可減少噪聲提取。

ModelID:輸出創建模板ID。


7. 模型圖像Template的domain區域的重心是模板的初始位置,可以在set_shape_model_origin函數中設置不同的初始位置。

find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

Image:搜索圖像

ModelID:模板ID

AngleStart:搜索起始角度

AngleExtent:搜索角度幅度。匹配時,從圖像Image中搜索設定角度範圍內的模板

MinScore:最小匹配分值,大於該分值纔可被搜索到.參數MinScore定義模板匹配時至少有個什麼樣的質量係數纔算是在圖像中找到模板。MinScore設置的越大,搜索的就越快。如果模板在圖像中沒有被遮擋,MinScore可以設置爲0.8這麼高甚至0.9。

NumMatches:匹配個數。若滿足匹配分值的結果個數大於該值NumMatches,則返回質量係數最好的結果;若滿足匹配分值的結果個數小於等於該值NumMatches,則返回的所有滿足匹配分值的結果;設爲0時,返回所有滿足分值的結果。

MaxOverlap:如果模型具有對稱性,會在搜索圖像的同一位置和不同角度上找到多個與目標匹配的區域。參數MaxOverlap是0到1之間的,定義了找到的兩個目標區域最多重疊的係數,以便於把他們作爲兩個不同的目標區域分別返回。如果找到的兩個目標區域彼此重疊並且大於MaxOverlap,僅僅返回效果最好的一個。重疊的計算方法是基於找到的目標區域的任意方向的最小外接矩形(看smallest_rectangle2)。如果MaxOverlap=0, 找到的目標區域不能存在重疊, 如果MaxOverla p=1,所有找到的目標區域都要返回。

SubPixel:精度控制,該參數的選擇影響定位結果參數(位置,角度,縮放比例)。精度越高速度越慢。None(不使用亞像素-100%)-'interpolation'(差值亞像素-100%-0.079)-'least_squares_high'(最小二乘亞像素-120%-0.025)-'least_squares_high'(最小二乘亞像素-131%-0.014)- 'least_squares_very_high'(最小二乘亞像素-142%-0.013),【方法(解釋-耗時-角度誤差)】

NumLevels:搜索時使用金字塔層數.如果NumLevels=0,使用創建模板時金字塔的層數。

Greediness:用於控制定位加速。該值越大,速度越快,找丟模板的機率也越大。推薦值0.7-0.9.

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