Replacethisboxwithyourlogo中国大恒(集团)有限公司北京图像视觉技术分公司HALCON软件在机器视觉中的典型应用主讲人:刘伟Replacethisboxwithyourlogo软件层次ReplacethisboxwithyourlogoHALCON的实际应用•图像获取(前提)•模板匹配(定位,比较)•Blob分析(基础一)•边缘提取(基础二)•测量(结果)•其它应用ReplacethisboxwithyourlogoHALCON实际应用:图像获取获取高质量图像的前提条件•合适的光源•合适的镜头•合适的采集设备•合适的采集参数设置…………ReplacethisboxwithyourlogoHALCON实际应用:图像获取应用程序HALCON库采集设备管理图像处理数据管理图像获取接口加载动态库采集设备生产商采集设备硬件SDK采集设备驱动ReplacethisboxwithyourlogoHALCON实际应用:图像获取图像获取接口特点•图像获取链接库独立于其它图像处理链接库•一致的代码模板(磁盘文件和图像采集设备)•支持多个采集设备•同步和异步采集•支持外触发•图像尺寸、图像位数、颜色空间可调•支持颜色查找表•支持与设备相关的参数调整ReplacethisboxwithyourlogoHALCON实际应用:图像获取图像获取主要接口函数•open_framegrabber,info_framegrabber•grab_image,grab_image_async,grab_image_start•set/get_framegrabber_param•close_framegrabber,close_all_framegrabbers如果是单个磁盘文件•read_imageReplacethisboxwithyourlogoHALCON实际应用:图像获取•打开采集设备,如果是序列磁盘文件,设备为'File'•获取图像,grab_image(_async)(同步采集或异步采集)•关闭设备open_framegrabber('DahengCAM',,1,1,0,0,0,0,'default‘,-1,'gray',-1,'false','default','default',-1,-1,FGHandle)while(true)grab_image(Image,FGHandle)*Applyimageprocessingendwhileclose_framegrabber(FGHandle)ReplacethisboxwithyourlogoHALCON实际应用:图像获取通过图像获取助手,可快捷简单获取图像,并可生成代码EasysourceselectionConnectionconfigurationInteractiveparametersettingsAutomaticcodegenerationReplacethisboxwithyourlogoHALCON实际应用:图像获取HALCONReplacethisboxwithyourlogoHALCON实际应用:图像获取ReplacethisboxwithyourlogoHALCON实际应用:模板匹配模板匹配的优势应用于多数的应用不需要太多参数调整不需要分割健壮不需要任何的机器视觉知识ReplacethisboxwithyourlogoHALCON实际应用:模板匹配模板匹配分类•基于灰度的模板匹配(gray-value-based)-利用模板图像的所有灰度值,不能适应光照变化、缩放变化、多通道图像等-用于简单图像•基于形状的模板匹配(shape-based)-使用边缘特征定位物体-对于很多干扰因素不敏感,例如光照变化、聚焦模糊,缩放变化等,适用于多通道图像-不适用于纹理图像•基于组件的模板匹配(component-based)-适用于组成部件有相对运动的物体,使用边缘特征定位物-对于很多干扰因素不敏感,例如光照变化、混乱无序等,适用于多通道图像-不适用于纹理图像,聚焦不清的图像和形状变形Replacethisboxwithyourlogo基于相关的模板匹配(conrelation-based)-适用于纹理图像,聚焦不清的图像和形状变形-不是适用于光照变化、混乱无序等,也不适用于多通道图像基于描述符的模板匹配(descriptor-based)-对于很多干扰因素不敏感,例如光照变化、混乱无序,缩放变化等-不适用于纹理图像,聚焦不清的图像和多通道图像基于变形模板的模板匹配(deformable)-对于很多干扰因素不敏感,例如光照变化、混乱无序,缩放变化等-适用于多通道图像-对于纹理图像比较困难基于点的模板匹配(point-based)-利用关键点的特征Replacethisboxwithyourlogo图像金字塔Level1Level2Level3Level4Replacethisboxwithyourlogo图像金字塔金字塔中的模板Level4321ReplacethisboxwithyourlogoHALCON实际应用:模板匹配模板匹配参考图像搜索图像ReplacethisboxwithyourlogoHALCON实际应用:形状模板匹配*GenerateROI*readimagefromfileorframegrabberinspect_shape_model(Image,ModelImage,ModelRegion,1,Contrast)dev_display(Image)dev_display(ModelRegion)Contrast太低Contrast理想Contrast太高Replacethisboxwithyourlogo模板生成:金字塔层inspect_shape_model(Image,ModelImages,ModelRegions,5,40)dev_display(Image)dev_display(ModelRegions)Replacethisboxwithyourlogo匹配助手Replacethisboxwithyourlogo从路径获得图像生成芯片的感兴趣区域检测模型检测感兴趣区域HALCON实际应用:形状模板匹配(定位)ReplacethisboxwithyourlogoHALCON实际应用:形状模板匹配模板匹配支持旋转•建模时的角度范围AngleStartAngleExtent•角度用弧度表示,可通过函数rad()转换•为了表示旋转角度±x,赋值如下AngleStart=-xAngleExtent=2xReplacethisboxwithyourlogoHALCON实际应用:形状模板匹配•对于对称物体,建模时需限制角度的旋转范围180°180°90°90°0°120°ReplacethisboxwithyourlogoHALCON实际应用:形状模板匹配模板匹配支持缩放•一般缩放范围取值ScaleMin=0.3;ScaleMax=2模板匹配的对象Replacethisboxwithyourlogo模板匹配中的极性问题通常物体的极性是不会改变的但一些情况下,物体的灰度值会翻转物体或者背景会变化或者明暗区域发生改变DarkinsideBrightoutsideReplacethisboxwithyourlogo模板匹配中的极性问题Polaritymode:use_polarityTemplateAcceptedobjectsReplacethisboxwithyourlogo模板匹配中的极性问题Polaritymode:ignore_global_polarityTemplateAcceptedobjectsReplacethisboxwithyourlogo模板匹配中的极性问题模板匹配:ignore_local_polarity模板匹配目标Replacethisboxwithyourlogo匹配:允许一定程度上交叠模型和它的外接轮廓框(boundingboxes)外接轮廓框可以任意方向模型的边缘模型的外接轮廓框Replacethisboxwithyourlogo匹配:允许一定程度上交叠Overlap定义为两个外接轮廓框的相交比率物体的交叠区域外接轮廓框的交叠区域Replacethisboxwithyourlogo基于灰度的匹配(gray-value-based)车牌字符识别Replacethisboxwithyourlogo基于形状的匹配(shape-based)可以适应缩放、旋转、交叠和不同极性的匹配Replacethisboxwithyourlogo基于组件的模板匹配(component-based)处理器:奔腾处理器1.73G图像分辨率:640*482Replacethisboxwithyourlogo基于相关的模板匹配(conrelation-based)能克服纹理背景和聚焦不清带来的影响Replacethisboxwithyourlogo基于描述符的模板匹配(descriptor-based)通过特征点进行描述匹配Replacethisboxwithyourlogo基于变形模板的模板匹配(deformable)车门检测,即使车门在三维空间内变动,仍然能匹配Replacethisboxwithyourlogo基于点的模板匹配(point-based)多用于镶嵌图像时,大场景拼接ReplacethisboxwithyourlogoHALCON实际应用:Blob分析Blob分析的基本思想:图像中相关联物体(前景)的像素可以通过其灰度值来标识ReplacethisboxwithyourlogoHALCON实际应用:Blob分析Blob分析主要流程:获取图像、分割图像、提取特征获取图像分割图像提取特征初始分割、形态学处理等ReplacethisboxwithyourlogoHALCON实际应用:Blob分析一个简单的例子(非常理想的情况)read_image(Image,’particle’)threshold(Image,BrightPixels,120,255)connection(BrightPixels,Particles)area_center(Particles,Area,Row,Column)ReplacethisboxwithyourlogoHALCON实际应用:Blob分析•threshold定义•threshold算子HALCON中速度最快使用频率最高的分割算法•如果目标体与背景之间存在灰度差,则threshold首先被使用•如果环境稳定,阈值可在离线状态下一次确定maxmin),(|),(gyxggRyxRReplacethisboxwithyourlogoHALCON实际应用:Blob分析00.0050.010.0150.02050100150200250Histogramm00.0050.010.0150.02050100150200250HistogrammReplacethisboxwithyourlogo00.0050.010.0150.02050100150200250Gegl鋞tetesHistogramm00.0050.010.0150.02050100150200250Gegl鋞tetesHistogramm48HALCON实际应用:Blob分析Replacethisboxwithyourlogo动态阈值分割•很多情况下由于背景不均一,无法确定全局阈值•目标体经常表现为比背景局部亮一些或暗一些•需要通过其邻域找到一个合适的阈值进行分割•如何确定其邻域?可以通过一些平滑滤波算子来确定邻域,例如mean_image等HALCON实际应用:Blob分析Replacethisboxwithyourlogo动态阈值分割,其中S为平滑后的输入图像tyxsyxgRyxRtyxsyxgRyxR),(),(|),(),(),(|),(b