一维条形码检测与识别原理

更新时间:2018-08-15 09:26:00点击次数:209次

一、概念

条形码由宽度不同、反射率不同的条(黑色)和空(白色)组成。按照特定的编码规则编制,用来表达一组数字、字母信息的图形标识符。 
工业25码 
这里写图片描述 
EAN-13码 
这里写图片描述 
为什么用黑色、白色来表示条形码? 
因为两种颜色有截然不同的反射率,众所周知,黑色吸收光中的所有颜色,白色反射光中的所有颜色。当然,也可以用其他两种颜色来表示条形码,只要两种颜色有不同的反射率,足够的对比度。

二、EAN-13码

EAN-13码是EAN码的一种,用13个字符表示信息,是我国主要采取的编码标准。EAN-13码包含商品的名称、型号、生存厂商、所有国家地区等等信息。 
EAN码是模块组合型条码。 
模块:组成条码的基本宽度单位。说白了,条形码上,每0.33毫米宽代表一个模块。一个模块宽的条(条形码黑色部分)表示二进制“1”,两个模块宽的条(黑)表示二进制“11“,一个模块宽的空(条形码白色部分)表示二进制”0“。 
这样,便可以用二进制的0、1表示信息。在EAN码上,每一个字符(例如:数字1),由两个条(黑)和两个空(白)组成,条和空又分别由1~4个同宽、同颜色的模块组成。每个字符总共有7个模块(宽),并规定每个字符从外观上包含两个条、两个空。所以EAN码又称(7,2)码。 
一个字符:c1表示条的宽度(模块),c2(空),c3(条),c4(空) (c1+c2+c3+c4=7) 
这里写图片描述 
EAN-13码的格式如图: 
这里写图片描述 
以上节EAN-13码例图来说明: 
501(制造码),2345(制造商代码),67890商品标识代码,0(校验码)。 
注意:EAN-13码,在以图形标识符表示时,第1位(例:上图数字”5“)隐式表示,既不用条和空(表示),而用第2位~第7位(总六位)的奇偶性来隐式表示(后面会说)。

现在,第一位用隐式表示,那么只需要表示13-1=12个字符,将12个字符,分成两半,左侧6个字符,右侧6个字符。 
左侧字符有奇偶性,右侧字符全是偶的。左侧的奇偶性取决于 隐式表示的第一位字符(前置符,即:EAN-13码格式中的F1)。具体奇偶性如图:E代表偶数位,O代表奇数位,如前置符0表示,左侧六个字符都是奇数位。 
这里写图片描述 
那么奇、偶数位有什么用呢? 
相同字符在偶数位、和奇数位的二进制表示是不一样的。如图: 
这里写图片描述

校验码有什么用? 
EAN-13码最后一个字符是校验码,用来保证条形码识别的正确性。 
EAN-13码校验算法如下: 
(1)从右至左,将13个字符按顺序排序。 
(2)第2、4、6、8、10、12等偶数位的数据相加,将结果乘以3,得P. 
(3)将3、5、7、9、11、13等奇数位数据相加,等N。 
(4)N+P得 M 
(5)用M除以10,取余数。求余数以10为模的补数 C。 
(6)若C与 校验码 数值相等,则译码正确。

EAN-13码识别原理

这里写图片描述 
如图,表示条形码的一个字符。 
C1,C2,C3,C4表示该字符中四个相邻的条(黑)或空(白)的宽度,T是一个字符的宽度。C1+C2+C3+C4=7(模块) 
用n表示一个模块的宽度,n=T/7。 
用mi=Ci/n,i=1,2,3,4,便可以得到编码。 
若m1=1,m2=3,m3=1,m4=2,且条码排列位条——空——条——空,则当前字符二进制编码为 1 000 1 00,是右侧偶字符“7”。 
这种方法只是最基本的识别方法,当条空间距较小,或印刷质量不好时,很容易识别错误。 
条形码识别的方法还有许多,网上有许多资料,有兴趣的朋友可以自行学习。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息