您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > HALCON各种定位方法
HALCON中的定位方法大恒图像深圳办技术部经理偏召华概要基本介绍方法介绍◆基于形状的匹配◆基于组件的匹配◆基于互相关匹配◆变形匹配◆三维匹配总结参考图片搜索图像在图像中找到物体◆已知模板图像搜索图像转换类型◆待定模板物体在模板图像和搜索图像中的关系什么是匹配匹配的典型应用印刷检测芯片检测瓶盖检测匹配的典型应用加工件检测机械手定位基于形状的匹配形状匹配流程读取CAD数据准备模板图像创建模板图像位置、角度、缩放比、分值匹配图像预处理,创建ROI参数选择生成模板图像应用参数创建模板查找模板创建ROI使用Halcon算子可以方便的设置ROI标准形状◆draw_rectangle1/2◆draw_circle◆draw_ellipse◆draw_line任意形状◆draw_region◆draw_polygon生成标准ROI◆gen_rectangle1/2◆gen_circle◆gen_ellipse◆gen_region_line通过XLD创建AOI◆gen_region_contour_xld◆gen_region_polygon_xld生成ROIread_image(Image,'board/board-01.tif')get_image_size(Image,Width,Height)draw_rectangle2(Window,Row,Column,Phi,Length1,Length2)gen_rectangle2(ROI,Row,Column,Phi,Length1,Length2)ROI修正修正函数◆erosion_*减小ROI◆dilation_*扩大ROI◆shape_trans形状转换◆boundary像素级边界◆move_region移动区域到新位置组合◆Intersection交集◆Difference差集◆Union2并集生成ROIdev_display(Image)draw_circle(Window,Row1,Column1,Radius1)draw_circle_mod(Window,Row1,Column1,Radius1+10,Row2,Column2,Radius2)gen_circle(CircleSmall,Row1,Column1,Radius1)gen_circle(CircleLarge,Row2,Column2,Radius2)difference(CircleLarge,CircleSmall,DoughnutROI)dev_display(DoughnutROI)直接创建模板create_shape_model(Template,//模板图像NumLevels,//图像金字塔AngleStart,//起始角度AngleExtent,//角度范围AngleStep,//角度步长Optimization,//优化算法Metric,//极性Contrast,//对比度MinContrast,//最小对比度ModelID//模板ID)create_scaled_shape_modelcreate_aniso_shape_model模板参数-NumLevelsLevel1Level2Level3Level4模板参数-NumLevelsLevel4321模板参数-NumLevelsLevel1Level7(太高)Level6模板参数-Contrast*创建ROI*取图inspect_shape_model(Image,ModelImage,ModelRegion,1,Contrast)dev_display(Image)dev_display(ModelRegion)对比图太低合适的对比度对比度太高模板参数-Contrast参数Contrast不仅仅是对比度,根据数组元素数量不同,其意义不同◆1个元素时:128,对比度,直接提取边缘◆2个元素时:[100,128],表示使用磁滞分割来提取边缘◆3个元素时:[100,128,10],前两个参数同2,最后一个参数表示所提取边缘的最小长度为10.模板参数-Contrast对比度太高对比度太低使用磁滞分割使用边缘选择丢失边缘边缘过多模板参数-AngleExtent对称性和角度范围选择180°180°90°90°0°120°模板参数-AngleStep弧度非角度选择标准◆模板越大,角度步长越小◆要求越精确,步长越小速度和内存◆步长越小,占用内存越多,定位速度越慢如果没有特殊要求,可选”auto”让系统做最佳选择模板参数-Scale合成形状模板例子模板参数-Optimization一些模板包含了太多像素点,这导致◆模板过大◆增加执行时间◆增加了内存需求参数Optimization用来减少这些点◆none不减少像素◆point_reduction_low大约一半点◆point_reduction_medium大约1/3◆point_reduction_high大约1/4减少点可能导致的问题◆可能导致无法创建高层金字塔◆有可能会降低结果的精度和准确度原则◆边缘较多时才减少模板参数-Optimization相同环境下,Optimization取值不同时的运行时间对比◆none14.53ms◆point_reduction_low12.53ms◆point_reduction_medium11.39ms◆point_reduction_high10.67ms模板参数-Optimization除了减少像素,该参数也可以控制模板的创建方式,来选择内存优先还是速度优先第二个值可选下面两个◆'pregeneration'模板预先创建,牺牲内存来换取查找速度◆'no_pregeneration'在查找时才创建必须数据,占用内存少如果系统中所有选择相同,可以◆set_system('pregenerate_shape_models','true'/'false')如果没有设置,默认为◆set_system('pregenerate_shape_models','false')模板参数-OptimizationExampleCreateNo-PreCreatePreFindNo-PreFindPrefind_scaled_shape_model.dev155ms38s72ms69msfirst_example_shape_matching.dev72ms13s61ms72msmultiple_models.dev100ms7.4s60ms60msmultiple_scales.dev96ms13s40ms44msprint_check.dev113ms1.1s13ms13ms因此,建议当内存较大,就选预创建的方式,如果CPU速度快,就可以选另外方式。相同环境下,Optimization第二个参数取值不同时的运行时间对比模板参数-Metric前景黑色背景白色极性模式:use_polarity模板目标照明与成像模板参数-Metric极性模式:ignore_global_polarity模板目标模板参数-Metric模板目标极性模式:ignore_local_polarity模板参数-MinContrastMinContrast参数是被查找图片的最小对比度不是模板图片的所有边缘都是“有益”的,下面因素经常会产生“有害”边缘◆噪声◆纹理这些多余的便可导致◆定位不准或找错◆错误的分值◆稍微增大查找时间参数MinContrast是在查找模板的时候,来减少“有害”边缘的。它的值可通过下面方法得到◆estimate_noise函数◆inspect_shape_model函数◆通过助手判断模板参数-程序获取determine_shape_model_params(Template,模板‘auto’,金字塔层数0,起始角度rad(360),角度范围0.9,缩小范围1.1,放大范围‘auto’,减少像素的方法‘use_polarity’,极性‘auto’,对比度‘auto’,最小对比度'all',WhichvaluesParameterName,NameofvaluesParameterValue)Values查找参数-ScoreToolowMinimumscore:0.35Smallestscore:0.41OptimalMinimumscore:0.6Smallestscore:0.74ToohighMinimumscore:0.75Smallestscore:0.87查找参数-MaximumOverlapEdgesofthemodelBoundingboxofthemodel查找参数-MaximumOverlapOverlappingareaofobjectsOverlappingareasoftheboundingboxes查找参数-SubPixel目标位置的精度可以通过“subpixel”来设置精度控制模型◆‘none’:不使用亚像素,最大误差为半个像素◆‘interpolation’:差值的亚像素精度◆‘least_squares’,‘least_squares_high’,‘least_squares_very_high’:最小二乘法亚像素精度不同模式对运行时间的影响◆例外:‘none’and‘interpolation’时间相同◆最小二乘法时间比较长该参数可影响以下结果◆Position,Angle,Scaling查找参数-SubPixel0.013°142%LeastSquaresVeryHigh0.014°131%LeastSquaresHigh0.025°120%LeastSquares0.079°100%Interpolation最大角度误差运行时间亚像素模型-0.08-0.06-0.04-0.0200.020.040.060.08012345角度误差(Degrees)实际角度(Degrees)InterpolationLeastSquaresLeastSquaresHighLeastSquaresVeryHigh查找参数-Greediness该参数是用来做定位加速的值越小,速度越慢值越高,找丢目标的可能越大建议取值:0.7—0.9通过Dxf文件创建模板dxf文件轮廓形状模板create_shape_model_xldread_contour_xld_dxf使用dxf创建函数通过像素轮廓可以直接创建模板◆create_shape_model_xld◆create_scaled_shape_model_xld◆create_aniso_shape_model_xld查找ROIDefaultreferencepointLocationsstillinsidethedomainOutsidethedomainDomain(searchROI)Model边界处理HALCON提供了两种边界处理方法set_system('border_shape_models','false')◆模板必须在roi内◆靠近边缘部分会被裁减set_system('border_shape_models','true')◆模板可以部分在ROI外面◆注意:分值会降低边界处理Domain(searchROI)ClippedareaneartheborderLocationsstillinsidethedomainset_system('border_shape_models','false')边界处理物体完全在ROI内(最大分值100%)搜索区域跨边界ROI(MaximumScore100%)set_system('border_shape_models',„true')基于组件的匹配适合情况Score=0.4Score=0.31shapemodel1ROI5shapemodels5ROIs速度慢错配基于组件的匹配组合物体要包含几个刚性组件组件之间存在一定的位置关系流程手动
本文标题:HALCON各种定位方法
链接地址:https://www.777doc.com/doc-7502931 .html