前面总结了利用HALCON进行模板匹配的一些方法,讨论了利用物体形状的轮廓进行匹配的步骤和如何来优化匹配的速度,提高匹配的精度和速度,当然这两者之间本身也存在着制约,而在这两者之间找到一个适合自己要求的结合点,正是我们要研究和实验的。模板匹配并不是单纯的一个任务,它是一些其他工作的一个必备环节,比如物体识别、对象跟踪、检验产品、零件统计等等一些机器视觉应用。在很多情况下,模板匹配是个不错的选择。在前面总结模板匹配方法的基础上,利用HALCON做了一些视频对象跟踪的实验,并多次试验来调整程序参数优化跟踪过程,采用标准视频进行测试,将这些方法作了如下总结。
首先来看看HALOCN中的帧采集器(FrameGrabber),HDevelop提供这样一个函数来开启你采用的帧采集器(这里我的理解就是图像采集卡或工业摄像机)open_framegrabber(),这个函数中指定了HALCON目前支持的一些帧采集器的文件参数,主要有'BARRACUDA', 'BaumerFCAM', 'BCAM1394', 'BitFlow', 'DahengCAM', 'DahengFG', 'DFG-BW', 'DFG-LC', 'DirectFile', 'DirectShow', 'DT315x', 'DT3162', 'File', 'FireGrab', 'FirePackage', 'FlashBus', 'FlashBusMX', 'Ginga++', 'GingaDG', 'IDS', 'INSPECTA', 'Leutron', 'MatrixVision', 'MeteorII', 'mEnable3', 'MultiCam', 'Opteon', 'p3i2', 'p3i4', 'PT1000CL', 'PX', 'PXC', 'PXD', 'PXR', 'SaperaLT', 'TAG', 'TWAIN', 'uEye';除此之外,在官方网站上也在逐步推出新支持的一些采集卡,比如近期推出的支持大恒的DahengCAM的USB20接口(更多的信息请访问>
双目立体视觉是机器视觉的一种重要形式,它是基于视差原理并由多幅图像获取物体三维几何信息的方法。双目立体视觉系统一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复出物体的三维几何信息,重建物体三维轮廓及位置。双目立体视觉系统在机器视觉领域有着广泛的应用前景。
HALCON是在世界范围内广泛使用的机器视觉软件。它拥有满足您各类机器视觉应用需求的完善的开发库。HALCON也包含Blob分析、形态学、模式识别、测量、三维摄像机定标、双目立体视觉等杰出的高级算法。HALCON支持Linux和Windows,并且可以通过C、C、C#、VisualBasic和Delphi语言访问。另外HALCON与硬件无关,支持大多数图像采集卡及带有DirectShow和IEEE1394驱动的采集设备,用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。
halcon的模板匹配可以归为三类:
1、基于灰度:灰度,互相关ncc
2、基于形状:形状,组件
3、基于描述符:描述匹配
应用场合:定位对象内部的灰度值没有大的变化,没有缺失部分,没有干扰图像和噪声的场合。
1创建模板:create_template()
2寻找模板:best_match()
3释放模板:clear_template()
应用场合:搜索对象有轻微的变形,大量的纹理,图像模糊等场合,速度快,精度低。
1创建模板:create_ncc_model()
2寻找模板:find_ncc_model(),find_ncc_models()
3释放模板:clear_ncc_model()
4get_ncc_model_region (ModelRegion, ModelID)
smallest_rectangle2 (ModelRegion, Row3, Column3, Phi, Length1, Length2)
应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。
算法步骤:
1获取组件模型里的初始控件 gen_initial_components()
参数:
ModelImage [Input] 初始组件的
InitialComponents [Output] 初始组件的轮廓区域
ContrastLow [Input] 对比度下限
ContrastHigh [Input] 对比度上限
MinSize [Input] 初始组件的最小尺寸
Mode[Input] 自动分段的类型
GenericName [Input] 可选控制参数的名称
GenericValue [Input] 可选控制参数的值
2根据图像模型,初始组件,训练来训练组件和组件相互关系 train_model_components()
3创建组件模型 create_trained_component_model()
4寻找组件模型 find_component_model()
5释放组件模型 clear_component_model()
应用场合:定位对象内部的灰度值可以有变化,但对象轮廓一定要清晰平滑。
1创建形状模型:create_shape_model()
2寻找形状模型:find_shpae_model()
3释放形状模型:clear_shape_model()
应用场合:搜索对象有轻微的变形。
1创建模板:create_local_deformable_model()
2寻找模板:find_local_deformable_model()
3释放模板:clear_deformable_model()
应用场合:搜索对象有轻微的变形,透视的场合,根据一些描述点的位置和灰度值来进行匹配。
1创建模板:create_calib_descriptor_model()
2寻找模板:find_calib_descriptor_model()
3释放模板:clear_descriptor_model()
九点标定的原理如下
使用机械手将物体放在工作空间中的9个位置,分别用相机进行拍照,取得9个点的机械坐标和像素坐标,然后用Halcon提供的求得仿射矩阵HomMat2D。
1眼在外:相机放置一个固定的位置,与机器人基坐标系相对位置不变。
2眼在手:相机和机器手绑定在一个位置,机器手移动,相机也跟着移动。
一种是相机参数的标定,这一般用到张氏标定法,标定的作用是校正相机自身的畸变,利用校正得到的参数对图形进行处理后再呈现出来。关于这方面的资料,网上大把,我也不再此说明。一般的机械手定位也不会进行这个标定,因为现在的相机畸变还是很小的,精度可以满足大多数要求。
本文要介绍的是第二种,相机和机械手之间的标定,相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。
九点标定直接建立相机和机械手之间的坐标变换关系。让机械手的末端去走这9个点得到在机器人坐标系中的坐标,同时还要用相机识别9个点得到像素坐标。这样就得到了9组对应的坐标。由下面的式子可知至少需要3个点才能求出标定的矩阵。
标定板的对比度不好。标志点是HALCON相机的参数,提取失败是标定板的对比度不好,需要调整对比度。HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境,它节约了产品成本,缩短了软件开发周期——HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发,在欧洲以及日本的工业界已经是公认具有最佳效能的MachineVision软件。
以上就是关于基于HALCON的视频对象分割及跟踪方法总结全部的内容,包括:基于HALCON的视频对象分割及跟踪方法总结、双目视觉三维点云获取要学习什么知识、halcon模板匹配总结等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)