|
类型 |
形状模板匹配 |
|
描述 |
使用模板图像创建形状匹配模板。大模板和小模板所占的内存通常都是不一样的,对于创建大模板通常会占用过多的系统内存从而导致系统异常,因此在创建模板前先指定创建模板的级别以保证应用的正常。如通过设置系统参数指令ZV_SETSYSINT("ShapeCreateLevel",4)设置创建模板级别为完全创建模板。详细请参考2.5.1小节参数说明中"ShapeCreateLevel"参数。 |
|
语法 |
ZV_SHAPECREATE(img,model,angle_start,angle_end,scale_min, scale_max,thresh[,num_level=0,pt_reduce=0,angle_step=0,scale_step]=0) 参数: img:ZVOBJECT类型,制作模板的图像,8U单通道 model:ZVOBJECT类型,制作的模板,输出参数 angle_start:角度匹配的起始值,由图像坐标系确定,范围(-180,180],若超出范围会自动归一化到此范围 angle_end:角度匹配的终止值,范围(-180,180],若超出范围会自动归一化到此范围。创建模板后,位于起始和终止角度范围内的目标均可被匹配 scale_min:匹配缩放最小比例,范围[0.5, 2.0] scale_max:匹配缩放最大比例,范围[0.5, 2.0],大于等于scale_min,创建模板后,位于最小和最大缩放范围内的目标均可被匹配 thresh:提取边缘轮廓的对比度阈值,范围[0,255],为0时内部会选取一个合适的阈值,对比度越大提取的边缘轮廓强度就越强,此参数可控制提取强边缘或弱边缘,阈值越小提取的弱边缘就越多,同时可能会带来一些噪声 num_level:金字塔层数,范围[0,无穷),层数越小匹配越耗时,为0或层数过大时会自动选取合适层数,建议为0 pt_reduce:优化减少模板点数量,如果设置在查找模板时贪婪度需设置低一些,0-不减少,1-轻微减少,2-减少适中,3-大量减少 angle_step:角度步长,范围[0,12],步长越小精度越好但匹配越耗时,步长越大精度越差但匹配越不耗时,步长设的太小不合理或者为0时内部会自动选择一个合适的步长,建议为0。注意:由于角度需要过0,因此使用指令zv_match_shapeDefParams获取的角度步长与angleStep会有些差别 scale_step:缩放步长,[0,scaleMax - scaleMmn],步长越小精度越好但匹配越耗时,步长越大精度越差但匹配越不耗时,步长设的太小不合理或者为0时内部会自动选择一个合适的步长,建议为0。注意:由于缩放需要过1,因此使用指令zv_match_shapeDefParams获取的缩放步长与scaleStep会有些差别
注:创建模板时通常选取轮廓分明且具有唯一特性的目标作为模板,特征最好不要具有对称性。模板特征数据量大小通常与模板大小和模板参数有关,其数据量与模板大小、模板轮廓的复杂度、旋转角度范围、缩放范围成正比。模板越大使用的角度步长越小,在同等角度范围下特征数据量就越大,因此匹配时就越耗时。创建模板和匹配具有超时机制,默认的均是5000ms,当创建模板超时可以通过适当地调整模板参数减小模板特征数据量(如缩放范围调小点或使用轮廓点精简参数pt_reduce,此参数默认值为0即不精简轮廓点,精简的过于严重可能会影响匹配精度),或者是通过手动设置超时时间,如ZV_SETSYSDBL("ShapeCreateTimeout", 5000),ZV_SETSYSDBL("ShapeFindTimeout", 5000)。创建模板也具有内存保护机制,当使用过大的模板图像创建具有缩放的模板时,占用的内存达到保护临界值时,此时报内存错误导致模板创建失败可以通过调整模板参数减少数据量,如使用pt_reduce参数精简一些点,或阈值thresh设大点只提取更为明显的轮廓特征 |
|
适用控制器 |
支持ZV功能或者5系列以上的控制器 |
|
例子 |
ZV_SETSYSINT("ShapeCreateLevel",4)'设置为完全创建模板特征 ZVOBJECT img, model ZV_READIMAGE(img, "test.png", 0)'以原图像格式读取图片 ZV_SHAPECREATE(img,model,0,360,1,1,50,0,0,0,0) '创建模板 |
|
相关指令 |