一种影像式CCD条码快速识别方法及装置与流程

文档序号:11831383阅读:309来源:国知局
一种影像式CCD条码快速识别方法及装置与流程

本发明涉及条码识别领域,特别涉及一种影像式CCD条码快速识别方法及装置。



背景技术:

根据条码的应用范围,要求阅读器能既读非背光源(如纸质标签、塑料)上的条码,又要能读取含背光源(如PC显示屏/手机屏)上的条码,并且能远距离分离式读取;而传统激光阅读器不能读取含背光源(如PC显示屏/手机屏)上的条码,现有市面上CCD阅读器不能远距离分离式读取。单采用ADC或外部IO口中断方式采集数据,影响采集速度,占用大量微处理器flash空间,降低识别条码速度和输出条码数据速度,另外,滤波处理缺乏变换阀值,多次解码影响识读精度,造成识读精度不高。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述不能读取含背光源上的条码、不能远距离分离式读取、降低识别条码速度和输出条码数据速度、识读精度不高的缺陷,提供一种能读取含背光源上的条码、能远距离分离式读取、提高识别条码速度和输出条码数据速度、识读精度较高的影像式CCD条码快速识别方法及装置。

本发明解决其技术问题所采用的技术方案是:构造一种影像式CCD条码快速识别方法,应用于条码识别系统,所述条码识别系统包括线性CCD图像传感器和采集器,所述采集器与所述CCD图像传感器连接,所述采集器采用DMA+ADC采集器,所述影像式CCD条码快速识别方法包括如下步骤:

A)启动所述线性CCD图像传感器扫描条码;

B)启动所述DMA+ADC采集器进行采集,并将采集信号存放在缓冲区中;

C)修改所述采集信号的滤波阀值,进行滤波;

D)进行解码,并判断解码是否成功,如是,对参数进行处理,输出通过阅读所获取的条码;否则,执行步骤E);

E)判断所述滤波阀值是否超出预设范围,如是,返回步骤A);否则,返回步骤C)。

在本发明所述的影像式CCD条码快速识别方法中,所述步骤C)进一步包括:

C1)分别算出所述采集信号的最大值、最小值和平均值;

C2)将滤波阀值赋值为2,输入滤波阀值;

C3)依次判断缓冲区的值是否大于所述平均值与滤波阀值的乘积,如是,将滤波后波形赋值为1,执行步骤C4);否则,将滤波后波形赋值为0,执行步骤C4);

C4)对所述缓冲区中保存的信号进行滤波二值后得到滤波波形。

在本发明所述的影像式CCD条码快速识别方法中,所述步骤D)进一步包括:

D1)判断滤波波形是否符合某一种条码类型规则,如是,解码成功,执行步骤D2);否则,执行步骤E);

D2)结束。

在本发明所述的影像式CCD条码快速识别方法中,所述步骤E)进一步包括:

E1)判断所述滤波阀值是否大于设定值,如是,执行步骤D1);否则,执行步骤E2);

E2)所述滤波阀值递增并返回步骤C3)。

在本发明所述的影像式CCD条码快速识别方法中,所述设定值为10。

本发明还涉及一种实现上述影像式CCD条码快速识别方法的装置,应用于条码识别系统,所述条码识别系统包括线性CCD图像传感器和采集器,所述采 集器与所述CCD图像传感器连接,所述采集器采用DMA+ADC采集器,所述装置包括:

扫描启动单元:用于启动所述线性CCD图像传感器扫描条码;

采集启动单元:用于启动所述DMA+ADC采集器进行采集,并将采集信号存放在缓冲区中;

阀值修改单元:用于修改所述采集信号的滤波阀值,进行滤波;

解码判断单元:用于进行解码,并判断解码是否成功,如是,对参数进行处理,输出通过阅读所获取的条码;否则,判断所述滤波阀值是否超出预设范围;

阀值范围判断单元:用于判断所述滤波阀值是否超出预设范围。

在本发明所述的装置中,所述阀值修改单元进一步包括:

计算模块:用于分别算出所述采集信号的最大值、最小值和平均值;

阀值输入模块:用于将滤波阀值赋值为2,输入滤波阀值;

缓冲区判断模块:用于依次判断缓冲区的值是否大于所述平均值与滤波阀值的乘积,如是,将滤波后波形赋值为1;否则,将滤波后波形赋值为0;

滤波二值模块:用于对所述缓冲区中保存的信号进行滤波二值后得到滤波波形。

在本发明所述的装置中,所述解码判断单元进一步包括:

条码类型判断模块:用于判断滤波波形是否符合某一种条码类型规则;

结束模块:用于结束。

在本发明所述的装置中,所述阀值范围判断单元进一步包括:

滤波阀值判断模块:用于判断所述滤波阀值是否大于设定值;

递增模块:用于使所述滤波阀值递增并返回。

在本发明所述的装置中,所述设定值为10。

实施本发明的影像式CCD条码快速识别方法及装置,具有以下有益效果:由于使用线性CCD图像传感器扫描条码,使用DMA+ADC采集器进行采集数 据,在滤波之前先修改采集信号的滤波阀值,所以其能读取含背光源上的条码、能远距离分离式读取、提高识别条码速度和输出条码数据速度、识读精度较高。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明影像式CCD条码快速识别方法及装置一个实施例中方法的流程图;

图2为所述实施例中修改所述采集信号的滤波阀值,进行滤波的流程图;

图3为所述实施例中进行解码,并判断解码是否成功的具体流程图;

图4为所述实施例中判断滤波阀值是否超出预设范围的具体流程图;

图5为所述实施例中滤波二值后的效果图;

图6为所述实施例中装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明影像式CCD条码快速识别方法及装置实施例中,其影像式CCD条码快速识别方法的流程图如图1所示。本发明的影像式CCD条码快速识别方法,应用于条码识别系统,条码识别系统包括线性CCD图像传感器和采集器,采集器与CCD图像传感器连接,采集器采用DMA+ADC采集器(图中未示出)。图1中,该影像式CCD条码快速识别方法包括如下步骤:

步骤S01启动线性CCD图像传感器扫描条码:本步骤中,启动线性CCD图像传感器,使用线性CCD图像传感器扫描条码。

步骤S02启动DMA+ADC采集器进行采集,并将采集信号存放在缓冲区中:本步骤中,启动DMA+ADC采集器进行采集数据,当ADC采集完成时,将采集信号存放在缓冲区中。本实施例中,为了方便描述,将缓冲区标记为DAD[i...n],其中,n为大于等于1的正整数。

步骤S03修改采集信号的滤波阀值,进行滤波:本步骤中,修改采集信号的滤波阀值,然后进行滤波。

步骤S04进行解码,并判断解码是否成功:本步骤中,进行解码,并判断解码是否成功,如果判断的结果为是,则执行步骤S05;否则,执行步骤S06。

步骤S05对参数进行处理,输出通过阅读所获取的条码:如果上述步骤S04的判断结果为是,则执行本步骤。本步骤中,对参数进行处理,输出通过阅读所获取的条码。值得一提的是,对参数进行处理,具体的,就是根据预设的参数进行处理,例如:切换输出方式,切换为USB输出或串口输出或PS2输出,切换到不同国家的键盘输入法,是否添加自定义前置/结束符,指示灯及提示音等参数处理等等。

步骤S06判断滤波阀值是否超出预设范围:如果上述步骤S04的判断结果为否,则执行本步骤。本步骤中,判断滤波阀值是否超出预设范围,如果判断的结果为是,则返回步骤S01;否则,返回步骤S03。由于使用线性CCD图像传感器扫描条码,使用DMA+ADC采集器进行采集数据,在滤波之前先修改采集信号的滤波阀值,所以其能读取含背光源上的条码、能远距离分离式读取、提高识别条码速度和输出条码数据速度、识读精度较高。

对于本实施例而言,上述步骤S03还可进一步细化,其细化后的流程图如图2所示。图2中,上述步骤S03进一步包括:

步骤S31分别算出采集信号的最大值、最小值和平均值:本步骤中,对采集信号进行计算,分别算出采集信号的最大值、最小值和平均值。本实施例中,为了方便描述,将采集信号的最大值、最小值和平均值分别标记为Dmax、Dmin和DH

步骤S32将滤波阀值赋值为2,输入滤波阀值:本步骤中,将滤波阀值赋值为2,输入滤波阀值。本实施例中,为了描述方便,将滤波阀值标记为thread。

步骤S33依次判断缓冲区的值是否大于平均值与滤波阀值的乘积:本步骤中,依次判断缓冲区的值是否大于平均值与滤波阀值的乘积,也就是判断是否满足DAD[i...n]>DH×thread,如果判断的结果为是,则执行步骤S34;否则,执行步骤S35。

步骤S34将滤波后波形赋值为1:如果上述步骤S33判断的结果为是,则执行本步骤。本步骤中,将滤波后波形赋值为1。本实施例中,为了方便描述,将滤波后波形标记为Data[i...n],本步骤中,也就是令Data[i...n]=1。执行完本步骤,执行步骤S36。

步骤S35将滤波后波形赋值为0:如果上述步骤S33的判断结果为否,则执行本步骤。本步骤中,将滤波后波形赋值为0,也就是Data[i...n]=0。执行完本步骤,执行步骤S36。

步骤S36对缓冲区中保存的信号进行滤波二值后得到滤波波形:本步骤中,对缓冲区中保存的信号进行滤波二值后得到滤波波形,也就是对DAD[i...n]滤波二值后得到Data[i...n]完成滤波。通过改变不同thread进行二值化处理,再进行识读,其能提高识读精度。

对于本实施例而言,上述步骤S04至步骤S05还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S04至步骤S05进一步包括:

步骤S41判断滤波波形是否符合某一种条码类型规则:本步骤中,判断滤波波形是否符合某一种条码类型规则,值得一提的是,条码类型有很多种,例如:EAN13、EAN8、UPC-A、UPC-E、CODABAR(NW-7)、CODE39、CODE93、INTERLEAVED_2OF5、STANDARD_2OF5、MATRIX_2OF5、CODE128、EAN128(GS1-128)、CODE11和CHINESE_POST等等。实际应用中,可根据具体情况进行相应选择。本步骤中,如果判断的结果为是,则执行步骤S42;否则,执行步骤S06。

步骤S42解码成功:如果上述步骤S41的判断结果为是,则执行本步骤。本步骤中,解码成功。执行完本步骤,执行步骤S43。

步骤S43结束:本步骤中,结束本次解码操作。

对于本实施例而言,上述步骤S06还可进一步细化,其细化后的流程图如图4所示。图4中,上述步骤S06进一步包括:

步骤S61判断滤波阀值是否大于设定值:本步骤中,判断滤波阀值是否大 于设定值,本实施例中,设定值为10,本步骤中,也就是判断thread是否大于10,如果判断的结果为是,则执行步骤S62;否则,返回步骤S41。当然,在本实施例的一些情况下,设定值可以是其他值,设定值的大小可根据具体情况进行相应调整。

步骤62滤波阀值递增:如果上述步骤S61的判断结果为是,则执行本步骤。本步骤中,滤波阀值递增,也就是令thread=thread+1,执行完本步骤,返回步骤S33。图5为本实施例中滤波二值后的效果图。

本实施例还涉及一种实现上述影像式CCD条码快速识别方法的装置,其结构示意图如图6所示。该装置应用于条码识别系统,条码识别系统包括线性CCD图像传感器和采集器,采集器与CCD图像传感器连接,采集器采用DMA+ADC采集器(图中未示出)。图6中,该装置包括扫描启动单元1、采集启动单元2、阀值修改单元3、解码判断单元4和阀值范围判断单元5;其中,扫描启动单元1用于启动线性CCD图像传感器扫描条码;采集启动单元2用于启动DMA+ADC采集器进行采集,并将采集信号存放在缓冲区中;阀值修改单元3用于修改采集信号的滤波阀值,进行滤波;解码判断单元4用于进行解码,并判断解码是否成功,如是,对参数进行处理,输出通过阅读所获取的条码;否则,判断滤波阀值是否超出预设范围;阀值范围判断单元5用于判断滤波阀值是否超出预设范围。由于使用线性CCD图像传感器扫描条码,使用DMA+ADC采集器进行采集数据,在滤波之前先修改采集信号的滤波阀值,所以其能读取含背光源上的条码、能远距离分离式读取、提高识别条码速度和输出条码数据速度、识读精度较高。

本实施例中,阀值修改单元3进一步包括计算模块31、阀值输入模块32、缓冲区判断模块33和滤波二值模块34;其中,计算模块31用于分别算出采集信号的最大值、最小值和平均值;阀值输入模块32用于将滤波阀值赋值为2,输入滤波阀值;缓冲区判断模块33用于依次判断缓冲区的值是否大于平均值与滤波阀值的乘积,如是,将滤波后波形赋值为1;否则,将滤波后波形赋值为0;滤波二值模块34用于对缓冲区中保存的信号进行滤波二值后得到滤波波形。

本实施例中,解码判断单元4进一步包括条码类型判断模块41和结束模块42;其中,条码类型判断模块41用于判断滤波波形是否符合某一种条码类型规则;结束模块42用于结束。本实施例中,阀值范围判断单元5进一步包括滤波 阀值判断模块51和递增模块52;其中,滤波阀值判断模块51用于判断滤波阀值是否大于设定值;递增模块52用于使滤波阀值递增并返回。本实施例中,设定值为10。

总之,在本实施例中,采用线性CCD图像传感器扫描条码,既可以读取非背光源(如纸质标签、塑料)及含背光源(如PC显示屏/手机屏)上的条码,又能远距离分离式读取。采用DMA+ADC采集数据,可以提高采集速度,为后续的滤波二值化准备。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1