本发明属于序列号识别技术领域,尤其涉及一种汽车发动机缸体序列号视觉自动识别方法。
背景技术:
汽车发动机缸体序列号是发动机生产企业按照有关规定、企业或行业惯例以及发动机的属性,为某一批相同产品编制的识别代码,用以表示发动机的生产企业、规格、性能、特征、工艺、用途和产品批次等相关信息。如燃料类型、气缸数量、排量和静制动功率等。以往的汽车发动机缸体序列号识别只能依靠人工作业,作业手工化、作业难度大,人工作业易视疲劳、易误操作。
技术实现要素:
为了解决现有技术中依靠人工作业,作业手工化、作业难度大,人工作业易视疲劳、易误操作的问题,本发明提供一种汽车发动机缸体序列号视觉自动识别方法,该方法提高了作业的稳定性和高效性、克服了人工手工作业的各种缺陷,节约了作业人员数量。
技术方案如下:
一种汽车发动机缸体序列号视觉自动识别方法,步骤如下:
s1、采集汽车发动机缸体序列号图像;
s2、根据样本选取模型训练产生数字分类器;
s3、读入所有模型图像,对图像进行二值化处理,从二值图像中检索轮廓,返回检索到的轮廓个数;
s4、读入需要识别的汽车发动机缸体序列号图像,对图像进行二值化处理,从二值图像中检索轮廓,返回检索到的轮廓个数;
s5、循环汽车发动机缸体序列号图像轮廓信息,在循环中检测,切割数字/字母轮廓,与模型图像大小一致,切割后的图像与模型图像对应像素点值相减,计算所得图片整个图片的像素点值的平方和,所述平方和最小的一组对应的模型图像即为待识别的数字/字母。
进一步的,在固定的距离、高度架子上放摄像头,调整成固定的灯光,拍摄汽车发动机缸体序列号图片,保证拍摄每个汽车发动机缸体序列号时的距离、高度、采光都一致。
进一步的,所述样本采用通用的数字样本库或者针对应用场景而制作的专门训练样本。
进一步的,使用cvloadimage从指定文件夹读入所有图像模板数据,使用cvthreshold先进性灰度图像处理,继而进行阈值操作得到二值图像,阈值是100,使用cvfindcontours从二值图像中检索轮廓。
进一步的,使用cvloadimage读入需要识别的汽车发动机缸体序列号图像,使用cvthreshold先进性灰度图像处理,继而进行阈值操作得到二值图像,阈值是98,使用cvfindcontours从二值图像中检索轮廓。
进一步的,获取的每个数字/字母轮廓左上角坐标和宽高范围。
进一步的,步骤s5使用opencv函数cvmatchshapes实现。
进一步的,识别完所有数字/字母后,定义一个二维数组,一维用来存储识别出的数字/字母,二维用来存储该数字的横坐标,根据横坐标重新排序,列出识别出的数据。
本发明的有益效果是:
本发明所述的汽车发动机缸体序列号视觉自动识别方法提高了作业的稳定性和高效性、克服了人工手工作业的各种缺陷,节约了作业人员数量。
附图说明
图1为本发明实施例3中发动机缸体上打刻的序列号示意图;
图2为本发明实施例3中样本数字0示意图;
图3为本发明实施例3中样本数字2示意图;
图4为本发明实施例3中待识别图片的轮廓信息图;
图5为本发明实施例3中待识别图片切割后的示意图;
图6为本发明实施例3中数字重新排序后的展示图。
具体实施方式
实施例1
一种汽车发动机缸体序列号视觉自动识别方法,步骤如下:
s1、采集汽车发动机缸体序列号图像;
s2、根据样本选取模型训练产生数字分类器;
s3、读入所有模型图像,对图像进行二值化处理,从二值图像中检索轮廓,返回检索到的轮廓个数;
s4、读入需要识别的汽车发动机缸体序列号图像,对图像进行二值化处理,从二值图像中检索轮廓,返回检索到的轮廓个数;
s5、循环汽车发动机缸体序列号图像轮廓信息,在循环中检测,切割数字/字母轮廓,与模型图像大小一致,切割后的图像与模型图像对应像素点值相减,计算所得图片整个图片的像素点值的平方和,所述平方和最小的一组对应的模型图像即为待识别的数字/字母。
实施例2
一种汽车发动机缸体序列号视觉自动识别方法,步骤如下:
s1、在固定的距离、高度架子上放摄像头,调整成固定的灯光,拍摄汽车发动机缸体序列号图片,保证拍摄每个汽车发动机缸体序列号时的距离、高度、采光都一致;
s2、根据样本选取模型训练产生数字分类器,所述样本采用通用的数字样本库;
s3、使用cvloadimage从指定文件夹读入所有图像模板数据,使用cvthreshold先进性灰度图像处理,继而进行阈值操作得到二值图像,阈值是100,使用cvfindcontours从二值图像中检索轮廓,返回检索到的轮廓个数;
s4、使用cvloadimage读入需要识别的汽车发动机缸体序列号图像,使用cvthreshold先进性灰度图像处理,继而进行阈值操作得到二值图像,阈值是98,使用cvfindcontours从二值图像中检索轮廓,返回检索到的轮廓个数;
s5、循环汽车发动机缸体序列号图像轮廓信息,在循环中检测,获取的每个数字/字母轮廓左上角坐标和宽高范围,切割数字/字母轮廓,与模型图像大小一致,切割后的图像与模型图像对应像素点值相减,计算所得图片整个图片的像素点值的平方和,所述平方和最小的一组对应的模型图像即为待识别的数字/字母。步骤s5使用opencv函数cvmatchshapes实现。
识别完所有数字/字母后,定义一个二维数组,一维用来存储识别出的数字/字母,二维用来存储该数字的横坐标,根据横坐标重新排序,列出识别出的数据。
实施例3
一、发动机缸体序列号视觉检测:
本实施例主要是使用opencv数字识别检测发动机缸体序列号,包含以下步骤:
1.获取图片;
2.收集数字图片模板;
3.使用系统分析出图片中数字。
二、工作过程:
程序采用microsoftvisualstudio2012与opencv3.0在windows7-64位旗舰版系统下开发完成。并在windows7-64位系统下测试可用。
首先图片是需要在固定的距离、高度架子上放摄像头,调整成固定的灯光,拍摄成图片后,然后使用本系统识别图片中数字。前期一定要保证距离、高度、采光都统一方可,发动机缸体上打刻的序列号如图1所示。
技术要求及参数:、
1.前期准备工作:官网(https://opencv.org/)下载最新版opencv,本系统使用3.0版本;
配置环境变量:在本机环境变量-系统变量-path后边添加;d:\programfiles\opencv3.0\opencv\build\x86\vc12\bin;d:\programfiles\opencv3.0\opencv\build\x64\vc12\bin
此64为编译环境是win32编译还是win64编译
2.准备模板:根据样本,选取模型训练产生数字分类器。这里的样本可以是通用的数字样本库(如nist等),也可以是针对应用场景而制作的专门训练样本。前者优在泛化性,后者强在准确率,将两者结合,即在通用数字库基础上做修改。根据应用场景提取的样本数字0如图2所述,样本数字2如图3所示。
3.分析发动机缸体序列号
(1)模板读入,使用cvloadimage从指定文件夹读入所有图像模板数据,使用cvthreshold二值化图像,即对灰度图像进行阈值操作得到二值图像,阈值是100,使用cvfindcontours从二值图像中检索轮廓,并返回检测到的轮廓的个数,这里只需要检索最外面的轮廓。
(2)序列号图片处理:同样使用cvloadimage读入需要识别的图片以灰度图像读取;使用cvthreshold二值化图像,阈值是98,使用cvfindcontours从二值图像中检索轮廓,并返回检测到的轮廓的个数,这里需要检索所有的轮廓,获取到的轮廓信息如图4所示。
(3)序列号轮廓处理:轮廓信息循环,在循环中检测,每个获取的数字轮廓左上角坐标和宽高范围,如图5所示,切割的数字轮廓选取大小和模板一样的大小,然后让需要匹配的图分别和模板相减,两个图片对应像素点值相减,然后求返回图片的整个图片的像素点值得平方和,和哪个模板匹配时候返回图片的平方和最小则就可以得到结果,使用opencv函数cvmatchshapes实现。
(4)数字整理:定义一个二维数组,一维用来存储识别出的数字,二维用来存储该数字的横坐标,对比完会发现分割图像时查找数字轮廓并不是按顺序来的,需要再根据横坐标重新排序,列出识别出的数据,如图6所示。
此方案成功解决了汽车发动机缸体序列号识别入库问题,解决了以往只能依靠人工作业,作业手工化、作业难度大、人工作业易视疲劳、易误操作等问题;提高了作业性能的稳定性、高效性,克服了人工手工作业的各种缺陷,节约了作业人员数量。
实施例4
本发明适用于识别在汽车发动机缸体表面打刻的产品序列号也可扩展用于其他零件打刻字符序列号的识别。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。