转: 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函数查看。
4.参数Optimization模板最优化储存方式
1)对于特别大的模板图像,将参数Optimization设置为不同于'none'的其他数值是非常有用的。
如果Optimization= 'none', 所有的模型点将要存储, Optimization设置不等于none模型存储的点会减少. 如果模型点数变少了,必须在find_shape_model函数中将参数Greediness(用于控制定位加速。该值越大,速度越快,找丢模板的几率也越大。推荐值0.7-0.9)设为一个比较小的值, 比如:0.7、0.8。
2)对于比较小的模型, 可以设置为none减少模型点数并不能提高搜索速度,因为这种情况下通常有更多的潜在情况的模型必须进行检查。如果Optimization设置为'auto', create_shape_model自动确定模型的点数。
5. 参数Contrast决定着模型点的对比度
对比度是用来测量目标与背景之间或目标不同部分之间局部的灰度值差异。Contrast的选择应该确保模板中的主要特征用于模型中。
Contrast也可以是两个数值,这时模板使用近似edges_image函数中滞后阈值的算法进行分割。
Contrast如果是三个数值,不使用滞后阈值,然而在Contrast中必须指定三个数值,在这种情况下前两个数值设置成相同的数值。
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图像)的。这些通道还可以包括具有在不同方向照亮同一个目标所获得的图像。
8. 模型图像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:搜索角度范围
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.