Halcon學習 模版匹配之二

2021-07-03 11:17:10 字數 3105 閱讀 5089

find_shape_model

(image

: :  //搜尋影象

modelid

, //模板控制代碼

anglestart

,  // 搜尋時的起始角度

angleextent

, //搜尋時的角度範圍,必須與建立模板時的有交集

minscore

, //最小匹配值,輸出的

匹配的得分score 大於該值

nummatches

, //定義要輸出的

匹配的最大個數

maxoverlap

, //當找到的目標存在重疊時,且重疊大於該值時選擇乙個好的輸出

subpixel

, //計算精度的設定,五種模式,多選2,3

numlevels

, //搜尋時金字塔的層數

greediness

: //貪婪度,搜尋啟發式,一般都設為0.9,越高速度快,容易出現找不到的情況

row,column

,angle

,score

)//輸出匹配位置的行和列座標、角度、得分。

注意:

1. row、column的座標並不是模板在搜尋影象中的精確位置,因此不能直接使用他們。這些數值是為了建立變換矩陣被優化後的,你可以用這個矩陣的匹配結果完成各種任務,比如調整後續步驟的roi。

2. score是乙個0到1之間的數,是模板在搜尋影象中可見比例的近似測量。如果模板的一半被遮擋,該值就不能超過0.5。

3. image的domain定義了模型參考點的搜尋區域,模型參考點是在create_shape_model中用來建立模型的影象的domain區域的重心。不考慮使用函式set_shape_model_origin設定不同的初始位置。在影象domain區域的這些點內搜尋模型,其中模型完全屬於這幅影象。這意味著如果模型超出影象邊界,即使獲得的質量係數(score)大於minscore也不能找到模型。這種效能可以通過set_system('border_shape_models','true')改變,這樣那些超出影象邊界,質量係數大於minscore的模型也能找到。這時那些在影象外面的點看作是被遮擋了,可以降低質量係數。在這種模式下搜尋的時間將要增加。

4. 引數anglestart和angleextent確定了模型搜尋的旋轉角度,如果有必要,旋轉的範圍會被擷取成為create_shape_model函式中給定的旋轉範圍。這意味著建立模型和搜尋時的角度範圍必須真正的重疊。在搜尋時的角度範圍不會改變為模2*pi的。為了簡化介紹,在該段落剩下的部分所有角度都用度來表示,而在find_shape_model函式中使用弧度來設定的。因此,如果建立模板時,anglestart=-20°、angleextent=40°,在搜尋模板函式find_shape_model中設定anglestart=350°、angleextent=20°,儘管角度模360後是重疊的,還是會找不到模板的。為了找到模板,在這個例子中必須將anglestart=350°改為anglestart=-10°。

5. 引數minscore定義模板匹配時至少有個什麼樣的質量係數才算是在影象中找到模板。minscore設定的越大,搜尋的就越快。如果模板在影象中沒有被遮擋,minscore可以設定為0.8這麼高甚至0.9。

6. nummatches定義了在影象上找到模板的最大的個數。如果匹配時的質量係數大於minscore的目標個數多於nummatches,僅僅返回質量係數最好的nummatches個目標位置。如果找的匹配目標不足nummatches,那麼就只返回找到的這幾個。引數minscore優於nummatches。

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

8. subpixel確定找到的目標是否使用亞畫素精度提取。如果subpixel設定為'none'(或者'false' 背景相容),模型的位置僅僅是乙個畫素精度和在create_shape_model中定義的角度解析度。如果subpixel設定為'interpo lation'(或'true'),位置和角度都是亞畫素精度的。在這種模式下模型的位置是在質量係數函式中插入的,這種模式幾乎不花費計算時間,並且能達到足夠高的精度,被廣泛使用。然而在一些精度要求極高的應用中,模板的位置應該通過最小二乘調整決定,比如通過最小化模板點到相關影象點的距離。與 'interpolation'相比,這種模式需要額外的計算時間。對於最小二乘調整的模式有:'least_squares', 'least_squares_high', 和'least_squares_very_high'。他們可用來定義被搜尋的最小距離的精度,選擇的精度越高,亞畫素提取的時間越長。然而,通常subpixel設定為'interpolation'。如果希望設定最小二乘就選擇'least_squares', 因為這樣才能確保執行時間和精度的權衡。

9. numlevels是在搜尋時使用的金字塔層數,如有必要,層數截成建立模型時的範圍。如果numlevels=0,使用建立模板時金字塔的層數。另外numlevels還可以包含第二個引數,這個引數定義了找到匹配模板的最低金字塔層數。numlevels=[4,2]表示匹配在第四層金字塔開始,在第二層金字塔找到匹配(最低的設為1)。可以使用這種方法降低匹配的執行時間,但是這種模式下位置精度是比正常模式下低的,所謂正常模式是在金字塔最底層匹配。因此如果需要較高的精度,應該設定subpixel至少為'least_squares'。如果金字塔最底層設定的過大,可能不會達到期望的精度,或者找到乙個不正確的匹配區域。這是因為在較高層的金字塔上模板是不夠具體的,不足以找到可靠的模板最佳匹配。在這種情況下最低金字塔層數應設為最小值。

10. 引數greediness確定在搜尋時的「貪婪程度」。如果greediness=0,使用乙個安全的搜尋啟發式,只要模板在影象中存在就一定能找到模板,然而這種方式下搜尋是相對浪費時間的。如果greediness=1,使用不安全的搜尋啟發式,這樣即使模板存在於影象中,也有可能找不到模板,但只是少數情況。如果設定greediness=0.9,在幾乎所有的情況下,總能找到模型的匹配。

Halcon 模版匹配

1.建立模板 create shape model template numlevels,anglestart,angleextent,anglestep,optimization,metric,contrast,mincontrast modelid template 模板影象 numlevels...

halcon的模版匹配概述

新增模版匹配 1.基於形狀的模板匹配 應用場合 定位物件內部的灰度值可以有變化,但物件輪廓一定要清晰平滑。1.建立形狀模型 create shape model 2.尋找形狀模型 find shpae model 3.釋放形狀模型 clear shape model 2.可縮放形狀的模板匹配 應用場...

Halcon 1D測量之二

平滑得到的灰度直方圖 sigma 0.3 create funct 1d array grayvalues,function 將離散的灰度值連成函式 smooth funct 1d gauss function,sigma,smoothedfunction 對平滑後的灰度直方圖進行求導 deriva...