1. create_shape_model(Template: : //reduce_domain后的模板图像
NumLevels,//金字塔的层数,可设为“auto”或0—10的整数
AngleStart,//模板旋转的起始角度
AngleExtent,//模板旋转角度范围,>=0
AngleStep,//旋转角度的步长,>=0 and <=pi/16
Optimization,//设置模板优化和模板创建方法
Metric, //匹配方法设置
Contrast,//设置对比度
MinContrast ,//设置最小对比度
ModelID) //输出模板句柄
- NumLevels越大,找到匹配使用的时间就越小。另外必须保证最高层的图像具有足够的信息(至少四个点)。可以通过inspect_shape_model函数查看设置的结果。如果最高层金字塔的消息太少,算法内部会自动减少金字塔层数,如果最底层金字塔的信息太少,函数就会报错。如果设为auto,算法会自动计算金字塔的层数,我们可以通过get_shape_model_params函数查看金字塔的层数。如果金字塔的层数太大,模板不容易识别出来,这是需要将find_shape_model函数中MinScore和Greediness参数设置的低一些。如果金字塔层数太少找到模板的时间会增加。可以先使用inspect_shape_model函数的输出结果来选择一个较好的金字塔层数。
- 参数AngleStart、AngleExtent定义了模板可能发生旋转的范围。注意模板在find_shape_model函数中只能找到这个范围内的匹配。参数AngleStep定义了旋转角度范围内的步长。 如果在find_shape_model函数中没有指定亚像素精度,这个参数指定的精度是可以实现find_shape_mode函数中的角度的。参数AngleStep的选择是基于目标的大小的,如果模板图像太小不能产生许多不同离散角度的图像,因此对于较小的模板图像AngleStep应该设置的比较大。如果AngleExtent不是AngleStep的整数倍,将会相应的修改AngleStep。
- 如果选择complete pregeneration ,不同角度的模板图像将会产生并保存在内存中。用来存储模板的内存与旋转角度的数目和模板图像的的点数是成正比的。 因此,如果AngleStep太小或是AngleExtent太大,将会出现该模型不再适合(虚拟)内存的情况。在任何情况下,模型是完全适合主存储器的,因为这避免了操作系统的内存分页,使得寻找匹配模板的时间变短。由于find_shape_model函数中的角度可以使用亚像素精度,一个直径小于200像素的模板可以选择AngleStep>=1. 如果选择AngleStep=‘auto’(or 0 向后兼容),create_shape_model将会基于模板的大小自动定义一个合适的角度步长.自动计算出来的AngleStep可以使用get_shape_model_params函数查看。
- 如果没有选择completepregeneration, 该模型会在每一层金字塔上建立在一个参考的位置。这样在find_s