机器视觉软件开发

简单回顾一下:第一段内容:界面库、算法库、编译器、插件的选择与配置;软件架构;界面架构;数据结构;线程分配。第二阶段内容:绘图模块;相机模块;通信模块;图像保存模块。
第一段是软件的起步阶段,主要是做一些软件框架,第二阶段开发的都是一些独立且必须的软件模块。
如果把整个视觉软件比作一辆车,前面两个阶段我只是把外形架子和轮子造起来,而算法就是发动机。所以我一直认为视觉软件,算法才是核心,软件不管你用什么语言,最终的目的都是交互,而不是决定一个项目成败的关键。
之前我在某视觉公司专职做过两年的算法工程师,略有心得,算法部分我打算分两阶段完成,第一阶段是开发算法架构,第二阶段开发具体的算法模块。
这一阶段,我主要设计了算法架构,其中包括如下几个部分:
1.如何将算法和界面实现分离
2.主程序如何调用算法
3.算法模块基类及子类设计
4.算法模块接口设计
5.算法模块的批处理编译及单元测试

 具体设计方案如下:

1.如何将算法和界面实现分离
简单分析下市面上典型的三种做法:
a)简单非标软件的做法,将算法封装成一个process函数,将图片和一些必要参数传入,将结果传出。所有的算法及算法逻辑都在process函数处理。这种做法应该也是新手最常见方法。优点是简单、定制化;缺点是不灵活,算法复用率几乎没有,也就是来一个项目开发一个process。不管你是在什么公司,我不建议这种模式,因为时间久了,你会发现自己的工作重复性很大,耗时耗力,不好维护。
b)标准的工具流程图做法,设计一个算法基类,提供算法的接口和结果,每个算法模块的具体实现在子类,所有算法都是可独立运行,可组合运行,通过界面来组合交互,例如基恩士XG系列、凌云、奥普特都是采用该模式,你可以在界面上拖动一些算法,然后将算法的输入输出通过线条连接组合。这种模式灵活性强,但开发难度较高,调试难度高,一般只有大规模视觉公司会采用。
c)标准的工具积木做法,算法设计原理类似于b),但是界面的交互是通过工具块的形式添加,每个工具都是独立的个体,然后用一个脚本文件或者开发一个界面去获取这些工具的结果,进行一些逻辑判断。例如基恩士CV系列,这种模式较为灵活,操作比较傻瓜式,算法封装性较b)更强,灵活性又较a)更强,是一种比较折中的设计模式。一般的设备厂或小型视觉公司会使用。这里,我采用c)这种模式。

2.主程序如何调用算法;3.算法模块基类及子类设计;4.算法模块接口设计
算法基类提供始化算法、运行算法两个接口,初始化算法包括传递算法参数、初始化模板等只需要操作一次的内容;运行算法包括处理、赋值、判定、分类,最后将结果传递出去。交互逻辑如下:
主程序实例化算法对象——>界面设计参数——>算法初始化——>算法运行——>显示算法结果——>脚本界面组合所有算法结果并做出最后判定——>OK/NG通信输出
其中,多个算法模块的运行可采用线程池并行处理,加速。或采用OMP/SSE/GPU等加速方法,后期会单独对算法加速进行总结,这里不扩展。

5.算法模块的批处理编译及单元测试
算法模块一般是最容易出bug的地方,而且是致命级别的。所以算法一定要有自己的单元测试,这里推荐使用goole test,每个算法模块尽可能完善测试用例,以单元测试的形式进行结果预期评估,然后写个批处理运行所有测试用例,这样每次发布算法的时候都会通过测试用例来筛选出一些低级的算法错误。有兴趣的朋友可以研究下cmake和gooltest的配合使用。

下个阶段计划:完成标准算法模块、及瑕疵、划痕的非标算法模块

《机器视觉软件开发完整过程记录——第一段》
《机器视觉软件开发完整过程记录——第二段》

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
CkVision是创科公司自行开发的一款高性能的机器视觉软件开发包,特点是全中文函数说明,识别精度高,开发速度快,检测功能全面,使用稳定性极高。 CkVision的设计理念是提供一套简单容易的应用开发函数包,接口函数丰富(多达400多个函数),提供DLL和OCX。支持VB、VC、BC等多个开发工具。使用DLL开发更灵活,使用OCX编辑代码少,开发速度更快。同时提供大量的范例代码,在软件中只需要简单地调用相应的函数就可以完成你要的功能。另外还可以根据客户的要求提供相应的范例。 CkVision集成BLOB分析,对象计数、几何匹配、灰度匹配、彩色匹配、字符识别、条码识别、测量圆、自动找圆、卡尺工具、间距测量、颜色识别、图像基本运算(二值化、比例变换、开运算、闭运算、膨胀、腐蚀、滤波、边缘检测)、几何运算、图像合并、图像旋转、轮廓提取等功能。另外可根据客户要求定制特殊功能。 CkVision软件是基于开放式的体系结构,能很好地兼容多种流行的图像采集卡、数字相机、模拟相机、线性相机,开发包提供有直接从硬件上得到图像数据的功能,使用起来更加简易。 CkVision目前在自动化设备中有着广泛的应用,打靶机、冲孔机、点胶机、印刷机、贴片机、COG贴片机、IC烧录机、LED焊线机、LED固晶机、激光打标机、飞针测试机、在线检测设备、在线测量设备等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangle63

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值