您的位置:首页 > 其它

Halcon算子_create_aniso_shape_model

2017-03-29 08:24 399 查看
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个灰度值内波动

      






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Halcon 算子