create_shape_model名称create_shape_model - 准备一个用于匹配的形状模型。 签名create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID) 描述运算符create_shape_model准备一个模板,该模板在图像模板中传递,作为用于匹配的形状模型。模型的ROI作为Template的域传递 。 该模型使用多个图像金字塔等级生成并存储在内存中。如果选择模型的完整前生(参见下文),则在每个级别上以多次旋转生成模型。输出参数ModelID是此模型的句柄,用于随后调用 find_shape_model。 金字塔等级的数量由参数NumLevels确定 。它应该尽可能大,因为通过这个时间来找到物体所需的时间显着减少。另一方面,必须选择NumLevels,以便模型仍可识别,并且在最高金字塔等级上包含足够数量的点(至少四个)。这可以使用inspect_shape_model的输出进行检查 。如果没有足够的模型点生成,则内部降低金字塔等级的数量,直到在最高金字塔等级上找到足够的模型点。如果这个过程会导致没有金字塔等级的模型,即如果模型点的数量在最低金字塔等级上已经太小,create_shape_model返回一个错误消息。如果 NumLevels被设置为 “自动”(或 0向后兼容), create_shape_model自动确定金字塔级的数目。可以使用get_shape_model_params查询自动计算的金字塔等级数量 。在极少数情况下,可能会发生这样的情况: create_shape_model确定金字塔级别数量过大或过小的值。如果金字塔等级的数量选择得太大,模型可能无法在图像中识别,或者可能需要在 find_shape_model中为MinScore或贪婪选择非常低的参数为了找到模型。如果金字塔等级的数量选得太小,则在find_shape_model中查找模型所需的时间 可能会增加。在这些情况下,应该使用inspect_shape_model的输出来选择金字塔等级的数量 。 参数AngleStart和AngleExtent 确定模型可能出现在图像中的可能旋转范围。请注意,模型只能在find_shape_model的这个角度范围内找到。参数 AngleStep决定所选角度范围内的步长。因此,如果在find_shape_model中未指定子像素精度 ,则此参数指定find_shape_model中的角度可实现的精度。 AngleStep应根据对象的大小进行选择。较小的模型在图像中不具有许多不同的离散旋转,因此不具有AngleStep应该选择较大的小型号。如果AngleExtent不是的整数倍AngleStep,AngleStep被相应地修改。为了确保对可能的旋转范围进行抽样,而这与独立于给定的AngleStart无关,可能的旋转范围被修改如下:如果没有正整数值n,使得AngleStart加n倍 AngleStep恰好为0.0,则减少AngleStart达AngleStep和AngleExtent增加 AngleStep。 如果选择了完整的模型预生成(请参见下文),则模型会针对选定的角度范围预先生成并存储在内存中。存储模型所需的内存与角度步数和模型中的点数成正比。因此,如果AngleStep太小或AngleExtent 太大,则可能发生该模型不再适合(虚拟)内存。在这种情况下,无论是AngleStep必须扩大或AngleExtent必须减少。在任何情况下,都希望模型完全适合主内存,因为这样可以避免操作系统进行分页,因此找到对象的时间会更短。由于角度可以用亚像素分辨率来确定find_shape_model, AngleStep > = 1可以选择直径小于200像素的模型。如果选择 AngleStep = 'auto'(或向后兼容为0), create_shape_model将根据模型的大小自动确定合适的角度步长。自动计算的角度步长可以使用 get_shape_model_params查询 。 如果未选择模型的完整前生代,则仅在每个金字塔等级的参考姿势中创建模型。在这种情况下,模型必须在运行时在find_shape_model中转换为不同的角度和比例。因此,模型的识别可能需要稍微多一些的时间。 对于特别大的模型,通过将Optimization设置为与“none”不同的值来减少模型点的数量可能很有用。如果Optimization = 'none',则存储所有模型点。在所有其他情况下,根据Optimization的值减少点数 。如果点数减少,则可能需要在find_shape_model中将参数 Greediness设置为较小的值,例如0.7或0.8。对于小型模型,减少模型点的数量不会导致搜索速度加快,因为在这种情况下,通常需要检查模型的潜在实例明显更多。如果优化设置为“自动”, create_shape_model自动确定减少模型点的数量。 或者,可以在优化中传递第二个值。该值确定模型是否完全预生成。要做到这一点,第二数值优化必须被设置为“预生成”或 “no_pregeneration”。如果第二个值未被使用(即,如果只有一个值被传递),则使用通过set_system('pregenerate_shape_models',...)设置的模式 。使用默认值('pregenerate_shape_models' = 'false'),该模型不是完全预生成的。模型的完整预生成通常会导致运行时间稍微减少,因为模型不需要在运行时进行转换。但是,在这种情况下,创建模型所需的内存和时间要高得多。还应该注意的是,不能期望这两种模式返回完全相同的结果,因为在运行时对模型进行变换必然导致变换模型的不同内部数据,而不是预生成变换模型。例如,如果模型未完全预生成, 则为find_shape_model通常会返回稍低的分数,这可能需要为MinScore设置稍低于完全预生成模型的值。此外,通过插值获得的姿势在两种模式中可能略有不同。如果需要最大精度,模型的姿态应由最小二乘平差确定。 参数对比度决定了模型点必须具有的对比度。对比度是物体与背景之间以及物体不同部分之间局部灰度值差异的度量。 应选择对比度,以便仅为模型使用模板的显着特征。 对比还可以包含具有两个值的元组。在这种情况下,模型使用类似于edges_image中使用的滞后阈值方法的方法进行分段。这里,元组的第一个元素决定了下限,而第二个元素决定了上限。有关滞后阈值方法的更多信息,请参阅滞后阈值 。或者,对比可以包含第三个值作为元组的最后一个元素。此值根据组件的大小确定选择重要模型组件的阈值,即,抑制具有比如此指定的最小大小更少的点的组件。对于每个连续的金字塔等级,该最小尺寸的阈值除以2。如果应该抑制小模型组件,但不应执行滞后阈值,则必须在对比度中指定三个值。在这种情况下,前两个值可以简单地设置为相同的值。可以使用inspect_shape_model事先检查此参数的效果 。如果对比度设置为 'auto', create_shape_model 会自动确定上述三个值。或者,只能自动确定对比度( 'auto_contrast'),滞后阈值( 'auto_contrast_hyst')或最小尺寸( 'auto_min_size')。剩余的值不是自动确定的,可以另外以元组的形式传递。还允许各种组合:例如,如果 传递了 ['auto_contrast','auto_min_size'],则会自动确定对比度和最小尺寸。如果 ['auto_min_size',20,30 ]通过, 20和30等。在某些情况下,可能会发生自动确定对比度阈值不令人满意的情况。例如,如果某些模型组件由于特定于应用程序的原因应该包含或抑制,或者该对象包含多个不同的对比度,则应优先手动设置这些参数。因此,在调用create_shape_model之前, 应使用determine_shape_model_params自动确定对比度阈值 ,然后使用inspect_shape_model进行验证 。 通过MinContrast,可以确定模型在find_shape_model执行的识别中必须至少具有哪种对比度 。换句话说,该参数将模型与图像中的噪声分开。因此,一个好的选择是由图像中的噪声引起的灰度值变化范围。例如,如果灰度值在10个灰度级范围内波动,MinContrast应该设置为10.如果多通道图像用于模型和搜索图像,并且参数Metric设置为'ignore_color_polarity' (请参阅下),一个通道的噪声必须乘以通道数的平方根来确定 MinContrast。例如,如果灰度值在单个通道中的10个灰度级范围内波动,并且该图像是三通道图像,则MinContrast应设置为17.显然,MinContrast必须小于 对比度。如果应在非常低的对比度图像中识别模型,则MinContrast必须设置为相应较小的值。如果模型即使被严重遮挡也应该被识别出来,MinContrast应该略大于由噪声产生的灰度值波动的范围,以确保模型的位置和旋转通过find_shape_model得到稳健和准确的提取。如果 MinContrast设置为'自动'时,根据模型图像中的噪点自动确定最小对比度。因此,如果识别期间的图像噪声与模型图像中的噪声相似,则自动确定仅有意义。此外,在某些情况下,建议增加自动确定的值,以提高对遮挡的鲁棒性(参见上文)。自动计算的最小对比度可以使用 get_shape_model_params查询 。 参数Metric确定在图像中识别模型的条件。如果Metric = 'use_polarity',则图像中的对象和模型必须具有相同的对比度。例如,如果模型是深色背景上的明亮对象,则仅当该对象比背景明亮时才能找到该对象。如果Metric = 'ignore_global_polarity',那么即使对比度全局反转,也可以在图像中找到该对象。在上面的例子中,如果物体比背景暗,也会发现物体。在这种情况下,find_shape_model的运行时间会稍微增加。如果度量标准 = 'ignore_local_polarity'即使局部对比度发生变化,也可以找到模型。例如,如果对象由具有中等灰度值的部分组成,则可以使用此模式,其中较暗或较亮的子对象位于其中。由于在这种情况下,find_shape_model的运行时间显着增加,因此通常最好创建几个模型,以反映create_shape_model对象的可能对比度变化 ,并将它们与find_shape_models同时匹配 。以上三个指标只能应用于单通道图像。如果将多通道图像用作模型图像或作为搜索图像,则只使用第一个通道(并且不会返回错误消息)。如果 度量标准 ='ignore_color_polarity',即使颜色对比度局部变化,也可以找到该模型。例如,这是对象的部分可以改变其颜色的情况,例如,从红色变为绿色。特别是,如果事先不知道物体在哪个通道中可见,此模式非常有用。在这种模式下, find_shape_model的运行时间也可以显着增加。度量 “ignore_color_polarity”可用于具有任意数量通道的图像。如果它用于单通道图像,则它具有与 “ignore_local_polarity”相同的效果 。应该注意的是,对于 Metric = 'ignore_color_polarity'模型创建中的通道数量create_shape_model和 find_shape_model中的搜索可以不同。例如,这可以用来从合成生成的单通道图像创建模型。此外,应该注意的是,通道不需要包含光的光谱细分(例如在RGB图像中)。例如,通道还可以包含通过从不同方向照亮对象而获得的相同对象的图像。 模型图像模板的域(区域)的重心用作模型 的原点(参考点)。可以使用set_shape_model_origin设置不同的原点 。 并行
该运算符返回一个句柄。请注意,即使将此句柄用作输入参数,该句柄类型的实例的状态也可能被特定的操作符更改。 参数模板(input_object) (多通道)图像→ 对象(byte / uint2) 输入图像的域将用于创建模型。 AngleExtent(input_control) angle.rad→ (实数) 旋转角度的范围。 默认值: 0.79 建议值: 6.29,3.14,1.57,0.79,0.39 限制:AngleExtent> = 0 角度的步长(分辨率)。 默认值: 'auto' 建议值:'auto',0.0175,0.0349,0.0524,0.0698,0.0873 限制:(AngleStep> = 0)&&(AngleStep <=(pi / 16)) 优化(input_control) 字符串(-array)→ (字符串) 用于生成模型的优化和可选方法。 默认值: 'auto' 值列表:'auto','no_pregeneration','none','point_reduction_high','point_reduction_low','point_reduction_medium',' pregeneration ' 公制(input_control) 字符串→ (字符串) 匹配度量。 默认值: 'use_polarity' 值列表:'ignore_color_polarity','ignore_global_polarity','ignore_local_polarity','use_polarity' 阈值或滞后阈值用于模板图像中对象的对比度以及可选的对象部分的最小尺寸。 默认值: 'auto' 建议值:'auto','auto_contrast','auto_contrast_hyst','auto_min_size',10,20,30,40,60,80,100,120,140,160 搜索图像中对象的最小对比度。 默认值: 'auto' 建议值:'auto',1,2,3,5,7,10,20,30,40 限制:MinContrast <对比度 ModelID(output_control) shape_model→ (整数) 模型的句柄。 结果如果参数有效,则运算符create_shape_model 返回值2(H_MSG_TRUE)。如有必要,会引发异常。如果选择参数NumLevels和Contrast以使模型包含的点太少,则会引发错误8510。 可能的先行者draw_region, reduce_domain, 阈值 可能的继任者find_shape_model, find_shape_models, get_shape_model_params, clear_shape_model, write_shape_model, set_shape_model_origin 备择方案create_scaled_shape_model, create_aniso_shape_model, create_template_rot 也可以看看模匹配 |
|