Halcon算子_create_aniso_shape_model

create_aniso_shape_model(Template : : NumLevels,AngleStart,AngleExtent,AngleStep,ScaleRMin,ScaleRMax,ScaleRStep,ScaleCMin,ScaleCMax,ScaleCStep,Optimization,Metric,Contrast,MinContrast :ModelID)

1、算子創建了各向異性的基於形狀的模板。

2、模板由圖像的多個不同金字塔層上的圖像生成。

3、如果選項complete pregeneration選定的,在不同金字塔層上將生成多個旋轉角度各向異性的模型。

4、NumLevels參數確定金字塔層的數量。金字塔層數越多,找到對象所需的時間越短。但是層數過多,最高層的特徵點(至少4個)可能不夠導致在該層找不到對象。

5、設置NumLevels後,如果最高層沒有產生足夠的特徵點,則金字塔級別的數量自動減少,直到在最高金字塔級別上找到足夠的模型點(會增加運行時間,可以先使用算子inspect_shape_model進行檢查來確定合適的值。)。如果此過程導致沒有金字塔級別的模型,即如果模型點的數量在最低金字塔級別上已經太小,則create_aniso_shape_model將返回錯誤消息。

6、如果NumLevels設置爲'auto'(或0,爲了向後兼容),create_aniso_shape_model會自動確定金字塔數量。可以使用算子get_shape_model_params查詢自動計算的金字塔數量。在極少數情況下,create_aniso_shape_model可能會自動生成金字塔級別太大或太小的數值。如果金字塔級別的數量太大,則模型可能無法在圖像中被識別,或者可能需要在find_aniso_shape_model中爲MinScore或Greediness選擇非常低的參數,以便找到該模型。如果選擇的金字塔數量太小,則find_aniso_shape_model中找到模型所需的時間可能會增加。在這些情況下,應使用inspect_shape_model的輸出來選擇金字塔數量。

7、參數AngleStart和AngleExtent給出了模型在圖像中可能發生旋轉的角度範圍。超出範圍的對象將會查找不到。

8、參數AngleStep決定所選角度範圍內的步長。按照各個旋轉角度生成模板。如果算子find_aniso_shape_model中未指定亞像素精度,則此參數指定算子find_aniso_shape_model中角度可實現的精度。AngleStep應根據對象的大小進行選擇。較小的模型在圖像中沒有許多不同的離散旋轉,因此對於較小的模型,AngleStep應該被選擇得更大。如果AngleExtent不是AngleStep的整數倍,則AngleStep將被相應地修改。爲了確保獨立於給定的AngleStart的可能旋轉的範圍的採樣,可能的旋轉範圍被修改如下:如果沒有正整數n使得AngleStart加n次AngleStep正好爲0.0,則AngleStart減小到AngleStep,並且根據AngleStep增加AngleExtent。(還沒懂)

9、參數ScaleRMin,ScaleRMax,ScaleCMin和ScaleCMax確定模型在行和列方向上可能的各向異性尺度的範圍。兩個比例因子中的比例爲1對應於模型的原始大小。

10、參數ScaleRStep和ScaleCStep確定選定範圍範圍內的步長。因此,如果在find_aniso_shape_model中未指定亞像素精度,則這些參數指定了find_aniso_shape_model中的縮放可實現的精度。像AngleStep一樣,ScaleRStep和ScaleCStep應該根據對象的大小來選擇。如果縮放比例的相應範圍不是ScaleRStep和ScaleCStep的整數倍,則ScaleRStep和ScaleCStep將被相應地修改。爲了確保與給定的ScaleRMin和ScaleCMin無關的可能尺度的範圍的採樣,可能的尺度的範圍被修改如下:如果沒有正整數n和m,使ScaleRMin加n次ScaleRStep正好爲0.0和ScaleCMin加m次ScaleCStep正好爲0.0,ScaleRMin和ScaleCMin分別減少到ScaleRStep和ScaleCStep,並且ScaleRMax和ScaleCMax分別增加,從而可以通過ScaleRStep和ScaleCStep增加可能尺度的範圍。(還沒懂)

11、請注意,轉換在內部進行處理,以便首先應用縮放,然後進行旋轉。因此,模型通常應對齊,使其在模型圖像中呈水平或垂直顯示。

12、如果選項completepregeneration選定的,則爲所選角度和比例範圍預先生成模型並存儲在存儲器中。存儲模型所需的內存與模型中的角度步數,角度範圍以及點數成正比。

13、如果AngleStep,ScaleRStep或ScaleCStep太小或者AngleExtent或ScaleExtent的範圍太大,則可能會發生模型不再適合(虛擬)存儲器。在這種情況下,AngleStep,ScaleRStep或ScaleCStep必須被放大或AngleExtent或縮放範圍。

14、在任何情況下,期望該模型完全適合主存儲器,因爲這避免了操作系統的分頁,找到對象的時間將會更小。

15、由於可以通過find_aniso_shape_model的亞像素分辨率確定角度,因此可以爲直徑小於約200像素的模型選擇AngleStep> = 1°和ScaleRStep,ScaleCStep> = 0.02。

16、如果AngleStep ='auto'或ScaleRStep,則選擇ScaleCStep ='auto'(或在兩種情況下爲0的向後兼容性),create_aniso_shape_model將根據模型的大小自動確定合適的角度或縮放步長。可以使用get_shape_model_params查詢自動計算的角度和刻度步長。

17、如果選項completepregeneration沒有選定的,則模型僅在每個金字塔級別中創建一個參考姿勢。在這種情況下,模型必須在運行時在find_aniso_shape_model中轉換爲不同的角度和比例。因此,模型的識別可能需要更多的時間。

18、對於特別大的模型,通過設置參數Optimization爲不同於“none”的值來減少模型點的數量可能是有用的。如果Optimization ='none',則存儲所有模型點。在其他情況下,根據Optimization的值來減少點數。如果點數減少,則可能需要在find_aniso_shape_model中將參數Greediness設置爲較小的值,例如0.7或0.8。對於小型模型,模型點數量的減少並不會導致搜索加速,因爲在這種情況下,通常需要仔細檢查模型的潛在實例。如果Optimization設置爲“auto”,則create_aniso_shape_model自動確定模型點數量的減少。

19、可以在Optimization中傳遞第二個值。該值確定模型是否完全預先生成。第二個值必須設置爲'pregeneration'或'no_pregeneration'。如果不使用第二個值(即,如果只傳遞一個值),則使用set_system('pregenerate_shape_models',...)設置的模式。使用默認值('pregenerate_shape_models'='false'),模型不會完全預生成。

20、模型的完全預代理通常導致運行時間稍微降低,因爲模型不需要在運行時轉換。然而,在這種情況下,創建模型所需的內存要求和時間要高得多。還應該注意的是,不能指望兩種模式返回完全相同的結果,因爲在運行時轉換模型必然導致轉換模型的不同內部數據,而不是預先轉換模型。

21、例如,如果模型不是完全預先生成的,那麼find_aniso_shape_model通常會返回稍低的分數,這可能需要爲MinScore設置一個稍低於完全預生成模型的值。此外,通過插值獲得的姿態在兩種模式中可能略有不同。如果需要最大精度,則應通過最小二乘法調整確定模型的姿態。(不懂)

22、Contrast參數決定模型點必須具有的對比度。對比度是對象和背景之間以及對象的不同部分之間的局部灰度值差異的度量。應該選擇對比度,使得模型僅使用模板的重要特徵。

23、對比度也可以包含一個包含兩個值的元組。在這種情況下,使用類似於edges_image中使用的滯後閾值方法對模型進行分段。這裏,元組的第一個元素決定了較低的閾值,而第二個元素確定了上限閾值。可選地,Contrast可以包含第三個值作爲元組的最後一個元素。該值基於組件的大小確定用於選擇重要模型組件的閾值,即,具有比所指定的最小尺寸少的點的組件被抑制。對於每個連續的金字塔級別,第三個閾值遞進除以2。

24、如果小模型組件應該被抑制,但不應該執行滯後閾值,但是在對比度中必須指定三個值。在這種情況下,前兩個值可以簡單地設置爲相同的值。可以使用inspect_shape_model提前檢查此參數的效果。

25、如果Contrast設置爲“auto”,create_aniso_shape_model會自動確定上述三個值。或者,可以自動確定對比度('auto_contrast'),滯後閾值('auto_contrast_hyst')或最小大小('auto_min_size')。不能自動確定的剩餘值可以另外以元組的形式傳遞。還允許各種組合:如果例如['auto_contrast','auto_min_size']被傳遞,則自動確定對比度和最小尺寸。如果['auto_min_size',20,30]通過,則自動確定最小尺寸,而滯後閾值設置爲20和30等。

26、在某些情況下,可能會發生對比度閾值的自動確定不令人滿意例如,由於應用程序特定的原因或者對象包含幾種不同的對比度,如果要包含或抑制某些模型組件,則應優先選擇這些參數的手動設置。因此,對比度閾值應該通過determin_shape_model_params自動確定,然後在調用create_aniso_shape_model之前使用inspect_shape_model進行驗證。

27、使用MinContrast,可以確定模型在由find_aniso_shape_model執行的識別中至少具有哪些對比度。換句話說,該參數將模型與圖像中的噪聲區分開。

28、因此,一個很好的選擇是由圖像中的噪聲引起的灰度值變化範圍。例如,如果灰度值在10個灰度級別的範圍內波動,則MinContrast應設置爲10.如果多通道圖像用於模型和搜索圖像,並且參數“度量標準”設置爲“ignore_color_polarity”(參見下面)一個通道中的噪聲必須乘以通道數的平方根來確定MinContrast。例如,如果灰度值在單個通道中的10個灰度級的範圍內波動,並且圖像是三通道圖像,則MinContrast應該設置爲17.

29、顯然,MinContrast必須小於Contrast。如果在非常低的對比度圖像中識別模型,則必須將MinContrast設置爲相應較小的值。即使嚴重遮擋了模型,MinContrast應該稍大於由噪聲引起的灰度值波動的範圍,以確保通過find_aniso_shape_model魯棒,準確地提取模型的位置和旋轉。

30、如果MinContrast設置爲“自動”,則會根據模型圖像中的噪點自動確定最小對比度。因此,如果識別期間的圖像噪聲類似於模型圖像中的噪聲,則僅自動確定是有意義的。此外,在某些情況下,建議增加自動確定的值,以增加抵抗遮擋的魯棒性。可以使用get_shape_model_params查詢自動計算的最小對比度。

31、Metric參數確定在圖像中識別模型的條件。
           如果Metric ='use_polarity',圖像和模型中的對象必須具有相同的對比度。例如,如果模型是黑色背景上的明亮對象,則只有當對象比背景更亮時纔會找到該對象。
           如果Metric ='ignore_global_polarity',則如果對比度全局反轉,則圖像中也會找到該對象。在上面的例子中,如果它比背景暗,也可以找到該對象。在這種情況下,find_aniso_shape_model的運行時間會略有增加。
           如果Metric ='ignore_local_polarity',即使對比度發生變化,也會發現該模型。例如,如果對象由具有中等灰度值的部分組成,則在更暗或更亮的子對象中,該模式可能是有用的。因爲在這種情況下,find_aniso_shape_model的運行時間會顯着增加,通常情況下創建幾個可以通過create_aniso_shape_model反映對象的對比度變化的模型,並將它們與find_aniso_shape_models同時進行匹配。
           上述三個指標只能應用於單通道圖像。如果使用多通道圖像作爲模型圖像,或者使用搜索圖像,則僅使用第一個通道(並且不會返回錯誤信息)。
           如果Metric ='ignore_color_polarity',即使顏色對比度發生變化,也會發現該模型。例如,對象的部分改變顏色,例如從紅色變成綠色的情況。特別地,如果事先不知道對象在哪個通道中可見,則該模式是有用的。在這種模式下,find_aniso_shape_model的運行時間也可以顯着增加。度量“ignore_color_polarity”可用於具有任意數量通道的圖像。如果它用於單通道圖像,它具有與'ignore_local_polarity'相同的效果。
            應該注意的是,對於Metric ='ignore_color_polarity',使用create_aniso_shape_model創建的模型中的通道數以及使用find_aniso_shape_model的搜索可以不同。例如,這可以用於從合成生成的單通道圖像創建模型。此外,應當注意,通道不需要包含光的光譜細分(如在RGB圖像中)。通道可以包含通過從不同方向照亮對象而獲得的相同對象的圖像。
32、模型圖像模板的域(區域)的重心用作模型的原點(參考點)。可以使用set_shape_model_origin設置不同的原點。



參數
1、Template (input_object)  (multichannel-)image object (byte / uint2)
      Template(輸入對象)(多通道)圖像→數據結構:object(byte/uint2)
      輸入對象的域將用於建立模板
2、NumLevels (input_control)  integer (integer / string)
      NumLevels(輸入參數,用於控制)
     金字塔的層數
     默認值:‘auto
     值的列表:‘auto’,0,1,2,3,4,5,6,7,8,9,10
3、AngleStart (input_control)  angle.rad (real)
      圖像的最小的旋轉角度
      默認值:-0.39
      建議值:-3.14, -1.57, -0.79, -0.39, -0.20, 0.0

4、AngleExtent (input_control)  angle.rad (real)
      旋轉角度的範圍
      默認值:0.79
      建議值:6.29, 3.14, 1.57, 0.79, 0.39
      限制條件:AngleExtent >= 0
5、AngleStep (input_control)  angle.rad (real / string) 
      旋轉角度的步長(分辨率)。
      默認值:'auto'
      建議值:'auto',0.0175,0.0349,0.0524,0.0698,0.0873

      限制:(AngleStep> = 0)&&(AngleStep <=(pi / 16))
6、ScaleRMin (input_control)  number (real)
      行方向的最小縮放率。

       默認值:0.9
      建議值:0.5,0.6,0.7,0.8,0.9,1.0
      限制:ScaleRMin> 0
7、ScaleRMax (input_control)  number (real) 
    行方向的最大縮放率。
    默認值:1.1
    建議值:1.0,1.1,1.2,1.3,1.4,1.5
    限制:ScaleRMax> = ScaleRMin
8、ScaleRStep (input_control)  number (real / string)
       在行方向上縮放步長(分辨率)。
    默認值:'auto'
    建議值:'auto',0.01,0.02,0.05,0.1,0.15,0.2
    限制:ScaleRStep> = 0
9、ScaleCMin (input_control)  number (real) 
    列方向的最小縮放率。
    默認值:0.9
    建議值:0.5,0.6,0.7,0.8,0.9,1.0
    限制:ScaleCMin> 0
10、ScaleCMax (input_control)  number → (real) 
    列方向的最大縮放率。
    缺省值:1.1
    建議值:1.0,1.1,1.2,1.3,1.4,1.5
    限制:ScaleCMax> = ScaleCMin
11、ScaleCStep (input_control)  number → (real / string) 
    在列方向上縮放步長(分辨率)。
     默認值:'auto'
    建議值:'auto',0.01,0.02,0.05,0.1,0.15,0.2
    限制:ScaleCStep> = 0
12、Optimization (input_control)  string(-array) → (string) 
    優化的種類和用於生成模型的可選方法。
     默認值:'auto'
     值列表:'auto','none','point_reduction_low','point_reduction_medium','point_reduction_high','pregeneration','no_pregeneration'
13、Metric (input_control)  string → (string) 
     匹配指標。
     默認值:'use_polarity'
     值列表:'use_polarity','ignore_global_polarity','ignore_local_polarity','ignore_color_polarity'
14、Contrast (input_control)  number(-array) (integer / string) 
     模板圖像中對象的對比度的閾值或滯後閾值以及對象部分的可選最小大小。
     默認值:'auto'
     建議的值:'auto','auto_contrast','auto_contrast_hyst','auto_min_size',10,20,30,40,60,80,100,120,140,160
15、MinContrast (input_control)  number (integer / string) 
     搜索圖像中物體的最小對比度。
     默認值:'auto'
     建議值:'auto',1,2,3,5,7,10,20,30,40
     限制:MinContrast < Contrast
16、ModelID (output_control)  shape_model (integer) 
     模板句柄。




例子(C++):
create_aniso_shape_model(hoImgROI, "auto", -(HTuple(10).Rad()), HTuple(20).Rad(), "auto", 0.9, 1.7, "auto", 0.9, 1.1, "auto", "none", "use_polarity", "auto", 20, &htModelROI);
金字塔層數:自動確定
對象可允許旋轉範圍:[-10,10]
旋轉步長:自動選擇
行方向允許縮放率範圍:[0.9,1.7]
縮放步長:自動確定
列方向允許縮放率範圍:[0.9,1.1]
縮放步長:自動確定
優化:不需要減少模型點
匹配指標:模板與圖形必須有相同的對比度
對比度閾值:自動確定
最小對比度:20,圖像允許在20個灰度值內波動








      








































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