利用ccd/cmd摄象机对二维条形码解码的方法和装置的制作方法

文档序号:6407015阅读:257来源:国知局
专利名称:利用ccd/cmd摄象机对二维条形码解码的方法和装置的制作方法
技术领域
本发明一般涉及条形码读取器的领域,特别是一种利用一电荷耦合器件(CCD)摄象机或一电荷调制器件(CMD)摄象机扫描和解码如PDF417的二维条形码的方法和装置。
条形码作为一种用于自动识别物体的手段已被广泛接受。一个条形码符号是一个由不同宽度的平行的条和空组成的代表数据元素和字符的图形。条代表二进制1的串而空代表二进制O的串。一般地,条和空不能小于一特定的最小宽度,该宽度被称为“模”(module)或“单元”。条和空是该模尺寸或最小宽度的倍数。
传统的条形码符号是“一维”的,其中的条和空仅沿一单一方向延伸。然而,对包含比传统条形码符号更多信息的机器可读符合的需求已在增长。增加在机器可读符号中的信息的一条途径是减小条形码的高度并把条形码彼此堆置起来以产生一“堆置”的或“二维”的条形码。这种二维条形码之一是PDF417;其是由符号技术公司(symboltechnologies,Inc.)开发出来的。PDF417码的完全描述包含在1990年1月5日提交的美国专利申请07/461,881号中,该专利申请被转让给本发明的同一受让人,其在此被引作参考。
条形码符号典型地被用如扫描激光束等光学技术读取,其结果电信号然后被解码以恢复被编码在符号中的数据。然而,在解码二维条形码符号时,激光扫描器具有其扫描线必须与符号的行基本平行的缺点。虽然如PDF417的二维条形码允许一些偏差,但扫描线的方向相对于符号的行的角度仍必须小于一最大值。
但是,有许多应用场合要求能够在任何方向上读取和解码二维条形码而无需将读取器与符号的行校准。例如,在一工业应用的场合,条形码符号可能被设置在沿传送带移动的物体上而读取器从上方读取符号。因此,此符号相对于读取器可能为任何方向。
相应地,本发明的一个目的即是提供一种用于在任何方向上读取和解码二维条形码的方法和装置。
本发明的另一个目的是提供一种用于读取和解码二维条形码符号的方法和装置,即使在该符号具有各种使符号模糊的缺陷,如损坏的角、划痕或污痕等的情况下仍可进行读取和解码。
这些以及其它目的可能通过利用一二维电荷耦合器件(CCD)/电荷调制器件(CMD)摄象机获得二维条形码符号的图象、将该图象转换为一数字表述并将该图象数据存储在一存储器而达到。因为该图象存储在存储器中不变,其可被重复地取出以得到不同的空间信息。另外,一CCD摄象机可以完成全方向读取或通过一微光镜头放大一微小的标签。CCD/CMD摄象机还可以利用一摄远镜头从较远的距离上读取一标签。
一旦图象数据被存储在存储器中,条形码符号的位置和方向即被定位在图象数据中。特别地,该符号的四个角即被定位,然后可检查看到它们形成一矩形。该图象数据通过进行横扫符号各行的图象数据的“实际扫描”被转换为与由激光扫描器获得的数据同样的形式。该数据然后可被以与由激光扫描器获得的数据相同的方式被解码。
更具体地,一种用于解码具有条形编码信息的码字的二维条形码符号的方法,所述码字包括一开始和一结束码字,并且由多数模构成,该方法包括以下步骤摄取一幅二维条形码符号的图象,将该图象转换为多行图象数据并把此图象数据存储于一存储器;通过定位至少开始和结束码字之一判定图象数据中二维条形码符号的一个方向;确定穿过对应于该条形码符号的方向的码字的一条直线;以及沿该直线扫描二维条形码符号以读取该码字。
另外,一种用于解码具有条形编码信息的码字的二维条形码符号的装置,所述码字包括一开始和一结束码字,并且多数模构成,该装置包括用于摄取二维条形码符号图象、将该图象转换为多行图象数据并存储该图象数据于一存储器的装置;通过定位至少开始和结束码字之一判定图象数据中二维条形码符号的一个方向的装置;用于确定穿过对应于该条形码符号的方向的码字的一条直线的装置;以及用于沿该直线扫描二维条形码符号以读取该码字的装置。
应该理解,无论前面的一般性描述还是下面的详细描述都仅是例举性和说明性的,而不是对本发明的限制。
作为说明书一部分的附图显示了本发明的一个实施例,其与本发明的一般描述一起用于解释本发明的原理。
附图的简单说明

图1是显示模和构成一个码字的条及空的序列的示意图;
图2是显示-PDF417符号整体结构的示意图;
图3显示了利用CCD/CMD摄象机读取二维条形码符号的系统的实施例;
图4是低水平解码器的硬件装置的一个实施例的示意框图;
图5显示了沿一图象中一给定行扫描数据;
图6显示了一旦两个开始和两个结束图形被发现符号方向的确定;
图7显示了四个控制点的确定;
图8A(分为8A(1)、8A(2))是显示解码器用于确定在图象数据中符号的位置和方向的工作序列的流程图;
图8B是显示解码器用于查实四个控制点确实构成了一个矩形的工作序列的流程图;
图9显示控制线和再扫描线的确定;
图10显示了一由撕坏的角损坏的符号;
图11显示了一由污痕损坏的符号;
图12显示了对每一控制线邻线的确定;
图13(分为13(1)、13(2))是显示解码器用于核实控制线并修正破损角缺陷的框图;
图14显示了标签宽度估算和再扫描路径优化的确定;
图15(含15A、15B)是显示解码器用于完成图象数据的实际扫描的工作序列的流程序;
图16显示了在开始或结束图形之一被损坏时再扫描线的确定;
图17显示了对一个中部具有划痕的符号的解码。
以下将详细说明本发明目前的较佳实施例,其一个例子显示于附图中。
码PDF417在讨论用于利用一CCD/CMD摄象机读取和解码诸如PDF417的二维条形码符号的较佳方法和装置之前,了解符号的结构是很重要的。
每个PDF417条形码符号由条形编码信息的行的堆置构成。符号中的每行包括一开始图形,几个称作“码字”的符号字符,以及一个结束图形。一个码字是用于编码一有意义表述的基本单位,或与某个数字、字母或其它符号相联系。总体地,各行的码字形成多个数据列。
PDF417符号中行的数目和数据列的数目都是可变的。一个符号具有至少三行最多九十行。类似地,每一行中的码字或数据列的数目可以为三到三十。
每个PDF417码字包含十七个模或单元。每个码字内有四个条和四个空。单个的条或空的宽度可在一至六个模之间变化,但每个码字合起来总是十七个模宽。因此,每个码字可以被一个八个数字的序列限定,该序列代表码字内四组变化的条和空宽度。这被称为码字的“X序列”且可由序列X0、X1…X7表示。例如,对于一个X序列“51111125”,第一个元素为5个模宽,接下来是五个2个模宽的元素,一个2个模宽的元素,以及最后一个5个模宽的元素。此例子示于图1。
图2是显示一PDF417符号整体结构的示意图。该符号的每行包括一个开始图形,一左行指示码字,一或多个数据码字,一个右行指示码字,以及一个结束图形。一行内码字的最小数目为三个,包括左行指示码字,至少一个数据码字,以及右行指示码字。
开始和结束图形指示各行在哪儿开始和结束。PDF417采用独特的开始和结束图形。开始图形或各行的左边界,具有独特的形式或X序列“81111113”。结束图形或各行的右边界,具有独特的X序列“71131121”。因为各行的开始和结束图形是一样的,这些图形在符号的左和右边形成固定的结构。整个符号被其内不含黑色标记的干净空间或“安静区”包围。
将数据编码为一个PDF417符号典型地是一个两步的过程。首先,数据被转换为代表该数据的码字值。这被称为“高水平编码”。这些值然后被由特定的条一空图形物理地表述,这被称为“低水平编码”。
扫描器/读取器系统图3显示了一个用于利用CCD/CMD摄象机读取如PDF417等的二维条形码符号的系统。如图3所示,一个条形码读取系统10包括一主计算机12,其可以是一个个人计算机;一解码器14;一帧取样电路(framegrabbercircuit)16;以及一二维CCD或CMD摄象机18。CCD/CMD摄象机摄取二维条形码符号20的图象并将其转换为电信号。典型地,CCD/CMD摄象机的输出是一个标准KS-170格式的模拟信号,代表所获取的图象的行以及水平和垂直同步信息。
作为一种变化,如果二维条形码符号正移过摄象机,该CCD/CMD摄象机可只是一一维摄象机。例如,该条形码符号可以是在一传送带上的移动过摄象机的物体上或可以是印在一正被该摄象机扫描的文件上。在这种情况,该CCD/CMD摄象机可以通过当符号移过摄象机时扫描其接续的行而获取二维条形码符号的图象。
从摄象机18来的电信号被输送至帧取样电路16,该电路将此信号转换为原始图象的数字表述。从CCD/CMD摄象机来的模拟信号被转换为8位灰色电平值并被传送到解码器14,在那里它们被解码为对应于该二维条形码符号的行和列的一个码字值矩阵,如以下进一步详细解释的,解码器14可以被体现于一个在一专用微计算机上运行的计算机程序中。
该来自解码器14的码字值矩阵被一高水平解码器进一步解码为可用数据,该高水平解码器可以被体现为一个在主计算机12上运行的单独的计算机程序。例如PDF417具有三个预定义模式和九个保留模式。该三个预定义模式是二进制(Binary),执行(EXC)及数字Numeric模式。在Binary模式,各码字节可编码1、2字节。在EXC模式,字母数字数据可以被以二倍密度编码(即一个码字两个字符),而在Numeric模式,数字数据可以被以几乎三倍的密度组合。因此在主计算机的高水平解码器将根据其模式进一步对来自低水平解码器14的码字值解码以获得含于符号中的真实数据。然后来自高水平解码器的被码数据可被一也是在主计算12上运行的用户应用程序使用。
解码器装置图4是低水平解码器14的硬件装置的一个实施例的示意性框图。如图4所示,低水平解码器14包括一个先进先出(FIFO,firstin-firstout)存储缓冲器22,用于接收代表来自帧取样电路16的二维条形码图象的数字数据。该FIFO缓冲器22暂时储存其接收自帧取样电路16的数据并将其存入存储器24。为此,FIFO缓冲器22被连接到一中央总线23,该低水平解码器的其它硬件元件也连接至该总线。FIFO缓冲器22具有直接存储器存取(DMA)功能,这允许它直接将数字数据存储在存储器中用于解码。作为一种变化,该帧取样电路16也可直接连到总线23并具有DMA功能并由此将数字数据直接存储到存储器24中。
低水平解码器还包括一中心处理单元(CPU)25和一用于与主计算机通讯的第二接口26。CPU25最好是一个高速专用微计算机,如TMS320数字信号处理器。该连至主计算机的接口可以是一个标准接口,如一个KS-232接口。
解码操作[确定符号位置和方向]在解码一个如PDF417的二维条形码符号时解码器必须完成的首要任务是在图象数据中找到符号的位置和方向。
找到符号的位置和方向基于在图象数据中找到符号的开始和结束图形。在存储在厚储器中的图象数据上操作,解码器沿图象中一给定的行扫描数据,如图5所示。沿着该行的数据被经过一边缘检测器,该边缘检测器判断数据中边缘的位置。该解码器然后搜索该边缘检测数据寻找或代表开始或代表结束图形的八元素序列。
解码器当其扫描各行时在图象数据的顶部开始。接着,在图象数据的顺次扫描中,其向下移动一预定的行数并扫描该行以寻找开始或结束图形。在各顺次的扫描线之中的行数可根据特定环境或图象数据的分辨率而改变。例如,当图象数据包含480行乘512列的象素数据时,解码器可被设为每二十行扫描一次,跳过顺次扫描线之间的十九行。
如果至少两个开始图形或两个结束图形被找到,则符号的方向被确定。例如图5所示,其中P1和P2两个点代表两开始图形的位置而q1和q2两点代表两个结束图形的位置。一条垂直于符号的行的直线可被穿过两点画出以判定符号的方向,如图6所示。
虽然理论上两个这样的点足够决定一直线,但解码器将争取存储多于两个的开始或结束图形,直到一预定极限。解码器然后将选择两个“最好的”图形用以寻找符号的方向。最好的图形被认为是那些没有缺陷并相隔尽可能远的图形。
如果解码器在水平扫描过各行而未能检测到两个开始图形或两个结束图形时,则解码器将沿着列向下垂直地扫描图象数据以寻找开始或结束图形。如果解码器仍未能在水平或垂直方向上检测到至少两个开始图形或两个结束图形,那么摄象机重新摄取新图象并且解码处理过程重新开始。
如果解码器在图象数据中成功地检测到至少两个开始图形和两个结束图形,则其试图确定如图7所示的在开始和结束图形顶部和底部的四个控制点C1、C2、C3和C4的位置。对于开始图形,这通过首先决定一穿过该开始图形的第一个条的中心的直线SL1进行。然后从位于该第一条的两个点开始,解码器沿该直线SL1向外搜索符号的边缘。符号的边缘通过沿该直线的象素数据的灰色电平的大的变化而被判定。以此方法找到的两个边缘点即控制点C1和C2。对结束码字沿着直线SL2进行同样的过程以找到另外两个控制点C3和C4。
图8A(分为8A(1)、8A(2))是显示解码器为确定图象数据中符号的位置和方向的操作序列的流程图。该序列中的各步骤含于一个计算机软件程序中,该程序存储于图4中的存储器24并由图4中的CPU25执行。
如图8A所示,符号位置和方向的判定从步骤30的对图象数据的水平扫描开始。在搜索开始或结束图形前,符号的边缘位置在步骤32中被判定。
符号的边缘通过横越一条两个端点间的直线并沿该直线搜索一边缘而判定。特别地,该直线的斜率首先被判定,然后从该直线的第一端点开始,将该直线上一当前象素的值或或灰色电平与前一象素的值比较。如果该比较的结果大于或等于一个预定的阈值,则边缘即在当前象素的位置。如果该比较的结果小于该预定阈值,则根据该直线的斜率增加当前象素的位置且该增加后的位置即成为新的当前象素位置。该当前象素位置(增加后的位置)再与上一象素位置比较。继续这一过程直到或者找到边缘或者当前象素位置到达该直线的最后端点。
一点边缘被判定,在步骤34即在边缘位置数据中搜索开始或结果图形。为找到开始图形,8个连接的数字被读以。然而,其中的第一个数字必须是条。如果不是,则下面8个连接的数字被读取。如果第一个数字是条,则首4个数字被判断。如果该首4个数字等于一个预定值,如8111,则后4个数字被判断。如果该后4个数字加起来为另一个预定值,如(1113=)6,则开始图形即被找到。如果上述任一情形未出现,则读取下面8个连接的数字。
结束图形可以经与开始图形类似的过程找到。再一次8个连接的数字被读取并且如果其中第一个数字不是条则读取下面8个连接的数字。如果第一个数字是一个条,则首4个数字被判断。如果该首4个数字等于一预定值,如71113,则后4个数字被判断。如果该后4个数字加起来为另一个预定值,如(1121=)5,则结束图形被找到。还是,如果未遇到上述任一种情况,则下面8个连接的数字被读取。
如果在水平扫描中未找到开始或结束图形,则执行对图形数据的垂直扫描。垂直扫描的执行与水平扫描相类似(步骤48-54)。
每隔预定数目的行(对于水平扫描)或列(对于垂直扫描)进行开始和结束图形的搜索。一旦所要求数目的开始和结束图形被找到,则在步骤42(对水平扫描)或步骤60(对垂直扫描)判定各组中最好的两个开始图形和最好的两个结束图形。一旦最好的两个开始和结束图形被判定,即在步骤68中判定位于该开始和结束图形顶部和底部的四个控制点。
为了判定该四个控制点,穿过开始和结束图形中第一个条的中心各画一条直线。控制点即是这些直线上具有大的灰色电平变化的点。因此,控制点存在于沿着这些直线的开始图形的第一个条的顶部和底部及结束图形的第一个条的顶部和底部。一旦四个控制点被判定,解码器则检查符号的位置和方向是否构成一个矩形。它通过核实符号的相邻边互成直角而完成。如果两条直线的斜率具有如下关系则它们互成直角S1=S-12图8B是显示解码器为核实四个控制点C1、C2、C3、C4确实代表一个矩形的操作序列的流程图。
利用图8A中判定的四个控制点,通过在步骤70中画出连接四个控制点的连线即可构成一个矩形。在步骤72,该矩形的四条边的斜率被判定,并且在步骤74中在该矩形各角相交的两条直线被比较。如果相邻边的斜率被标识为S1、S2、S3和S4,则该各斜率将如下比较。
在步骤76中计算S1的绝对值及S2绝对值的差值。如果该差值小于一个预定的阈值e,则矩形相应的角被认为是直角。如果该差值不小于该预定阈值,则所述四个控制点不构成一矩形。
类似的判断对斜率对S2和S3、S3和S4及S4和S1分别进行,分别如步骤78、80及82所示。如果其中任何比较的差值不小于该预定阈值,则四个控制点被认为不构成一矩形。然而,如果每一比较的差值都小于该预定阈值,则这些控制点被认为构成一矩形。如果四个控制点C1、C2、C3和C4不构成一个矩形,则最可能是各角之一被损坏。因为PDF417被设计为比较耐损坏,因此对符号的有些损坏将不妨碍解码,解码器将通过如下述调整四个控制点的位置来处理被损坏的符号。
首先,如图9所示,解码器选定两条沿着符号顶和底边缘的控制线CL1和CL2。然后解码器检查是否各控制线CL1和CL2被正确地选定。例如,如果各角之一被撕掉(图10)或被污痕涂去(图11),该控制线之一将不正确。
为了判定控制线是否正确,解码器判定两相邻的线,该两条线都与该控制线平行但位于控制线的两侧,如图12所示。该邻线都与控制线离开一预定距离δ,如5个象素的距离。如果该控制线正确,则该邻线之一应包含一开始和一结束图形而另一条则不包含。
一旦判定了控制线是正确的,另一条控制线(图12中的CL1)将被修正以与正确的控制线(CL2)平行。该新的控制线则能通过如上判定两邻线而被核实。如果该新的控制线(CL1)是正确的,则其邻线之一含有一开始和一结束图形而另一邻线则一定不含。
图13是显示解码器用于核实控制线和修正角缺陷的操作序列的流程图。
首先,在步骤90,通过连接顶部两控制点及连接底部两个控制点选定顶部和底部控制线。在步骤92,对两条控制线各在其两侧画两条邻线,该两条邻线与控制线离开一预定的距离。
在步骤94,在两条邻线内搜索开始和结束图形。如果两条控制线都各有一条邻线具有开始及结束图形而另一条邻线不含开始和结束图形,则该两条控制线都被认为有效,如步骤96,100及104所示。如果两条控制线都不是一条邻线含开始及结束图形而另一条不含这两种图形,则这两条控制线都被认为无效,如步骤96、98及102所示。如果仅有一条控制线有效而另一条控制线无效,如步骤96、98及106或96、100及106所示,则该无效的控制线必须被如步骤108所示修正。
为了修正该无效控制线,该无效控制线被调整为与该有效控制线平行且穿过至少一个控制点。一旦该无效控制线被修正,其在步骤110被检验以核实该修正。为核实该无效控制线已被修正,则在该控制线两侧再画两条平行的邻线。如果该邻线之一包含一开始和结束图形而另一邻线不包含,则该无效控制线的修正被核实。然而,如果不是这种情况,则该无效控制线不能被修正。一旦限定标签位置和方向的四个控制点被确定,解码器即对存储在存储器内的图象数据进行“实际扫描”。这涉及到在图象数据中选择一个从开始图形到结束图形横越符号并与一限定符号的顶的直线平行的象素序列。因此,以此方式得到的数据将表示沿符号一行的一个扫描。
这一象素序列被送经一边缘检测器以判定符号中从暗到亮或从亮到暗的转换的位置。这些转换则被用来确定符号中条和空的宽度。对应于符号中条和空宽度的数据序列与由激光扫描器获得的数据为同一格式。
更具体地,一旦四个控制点C1、C2、C3和C4被确定,解码器确定如图9所示的控制线CL1和CL2的位置。然后,一重扫描开始线RSL1和一重扫描停止线RSL2被确定。线RSL1与开始图形平行并穿过靠近开始图形的安静区。类似地,线RSL2与结束图形平行并穿过靠近结束图形的安静区。
为了重扫描图象数据中符号的一行,解码器识别在重扫描开始线RSL1上的重扫描头点及在重扫描停止线RSL2上相应的重扫描尾点。重扫描头点和尾点可以是RSL1和RSL2线在控制线CL1和CL2之间的线段上的所有的点。作为一种变化,如以下进一步解释的,可通过利用一重扫描优化方法使扫描线的数目最少。用于重扫描头和尾点的点位置被存储于一阵列中用于重扫描图象数据。
对每一重扫描“头-尾”对,解码器沿一从重扫描头点到重扫描尾点的直线扫描。一典型的重扫描线显示于图9,从重扫描头点hi到重扫描尾点ti扫描。解码器从图象数据中沿该直线取出灰色电平值。这一数据线然后被处理以获得所要求的输出数据形式。
从灰色电平值中获得输出数据的一个方法是利用边缘检测。利用此方法,解码器首先计算沿重扫描线的相邻的灰色电平值之间的差。然后解码器在该差值序列中的一特定邻域内寻找极值,该特定邻域可以是如一个三象素的窗。在该差值的一极值幅度超过一预定阈值时,边缘即被确定。条和空的宽度然后通过确定边缘间的距离而被算出。
作为一种变化,如果各行的码字已知或已从符号的解码部分被确定,条和空的宽度可以通过在重扫描线上的灰色电平值上进行一个二进制判定而确定。在这一过程中,只有那些穿过一行中部的重扫描线上的灰色电平值被用以进行一个二进制判定。
首先,解码器确定除开始和结束图形之外的第一码字的开始点B和最后码字的终点E。整个区间(B、E)然后被划分为单位区间Ik。特别地,该线内的象素被该行内模的总数目除,以得到平均模长μ,其中模的总数目等于码字数乘以每个码字的模数。典型地,该平均模长μ将不是一个整数,因此有必要对码字行内的各模设定一个近似模长。
如果模长μ不是一个整数,它将肯定落入二整数之间。因此,对每个模长存在一个整数K,有K<μ<K+1。
因此,有两种方法对各模设定一近似模长值,即选择K或K+1之一。如果选择K,则这将导致一近似误差ek=μ-k如果选择k+1,则将导致一近似误差ek=-(k+1-μ)因此,所选的整数值,无论是k还是k+1,都是使累积误差最小的一个,其中到第k个模的累积误差由下式给出
一旦各模的宽度被确定,解码器即能通过对该模的灰色电平值进行一二进制判定而决定各模是黑还是白。特别地,各模内的灰色电平值被加起来并与一预定阈值比较以判定该模是黑还是白。
如上讨论的,解码器可以扫描控制线CL1和CL2之间的每条可能的重扫描线。虽然这种方法为解码符号带来最大量的信息,但却有很大量的冗余,因为对一行,如果正确选定重扫描线,则一条重扫描线即足够了。
因此,扫描线的数目和位置可以基于下述考虑而最优化(1)除去一些少量的由于噪音的偏差,符号中同一行内的两条相近的重扫描线(图14中的SL1和SL2)应具有同样的灰色电平结构;
(2)来自符号中不同行的两条相近的重扫描线(图14中的SL2和SL3)在其灰色电平结构之间应具有较大的“距离”;及(3)在两条重扫描线S1和S2之间的距离尺寸D(S1、S2)被定义为在该两条线上对应象素间所有距离的和,其中各别象素S1(i)和S2(i)之间的距离d(S1(i),S2(i)如下定义d(S1(i),S2(i))=0如果|S1(i)-S2(i)|<T1如果|S1(i)-S2(i)>T其中T为一预定阈值。因此,在两重扫描线S1和S2之间的灰色电平距离被如下定义D(S1,S2)=∑d(S1(i),S2(i))相应地,D(S1,S2)在两相近的重扫描线都靠近一行的中部时较小而在该两相近的重扫描线跨越相邻行边界时较大。
为了优化扫描途径,解码器首先计算所有可能的重扫描线的相邻的线段之间的距离。这些线段的长度应足够长以覆盖至少一个码字(如图14所示)。利用线段替代整个重扫描线大大地减少了计算时间。当所有的距离已被计算,重扫描线即可被置于距离为局部最小处,对应于符号的行的中部。
图15A及15B是显示解码器用于完成对图象数据实际扫描的操作序列的流程图。
图15A(分为15A(1)、15A(2)是说明输出图象数据的边缘检测方法的流程图。如图15A所示,一旦控制线的位置已被确定,如前讨论的,重扫描开始和停止线在步骤122中被确定。然后,在步骤124中,重扫描头和对应的尾点在重扫描开始和停止线上分别被识别。如果要求对重扫描线优化,则对每条可得到的扫描线置或不置一个标记。如果被置了一标记,则该特定重扫描线将被处理。如果未被置标记,该重扫描线将被跳过。如果不要求优化,所有可获得的重扫描线将被处理。重扫描线被如下处理在步骤130,一对头-尾点被取出,而在步骤132,一重扫描线由连接该对头-尾点被画出。在步骤134沿该扫描线的灰色电平差被计算出。
在步骤136,在一特定邻域内(通常为一个三象素的窗)该差值的极值被判定。该极值通过在一特定点的邻域或窗内定位和记录最大和最小值而判定。如果所定位的最大或最小值的幅度足够大并且其位置不是在该邻域的边界,则该位置被认为一个极值点。
在步骤138,各级值被与一预定阈值比较以判定该极值点是否是一个边缘。在步骤150,各判定的边缘间的距离(输出序列)被计算和打印出。重复上述步骤直到再没有头-尾点为止。
图15B是说明输出图象数据的中心取样和二进制判定方法的流程图。该方法利用开始和结束图形上的数据,控制点数据,标签行宽以及模的宽度。
在图15B的步骤162,一第一非开始/结束码字的开始点B和一最后非开始/结束码字的终点E被定义。在步骤164,两点B-E之间的区间被分为预定的单位区间。如果模宽是一个非整数的数,则在步骤168对模宽进行一整数近似程序。与该近似相关的误差已在前面解释过。
一旦该区间B-E已被分割,每一模区的灰色电平值被在步骤170中加起来并在步骤172中与一预定阈值比较。如果该和比该阈值大,则该模被认为是“黑”,反之,该模则被认为是“白”。因此,根据该黑和白的序列,图象数据的输出即生成。
通过重扫描图象数据而获得数据被输出至一低水平解码器用于进一步对该数据解码。用于解码如PDF417的二维符号的低水平解码器,在转让给本发明受让人的另一美国专利申请中已被描述,该申请在此被引为参考。
破损符号除了前述的角缺损,条形码符号可能被以其它方式损坏。例如,开始或结束图形之一可能被损坏。然而,如果其它图形仍能被识别,则解码器将仅确定四个控制点C1、C2、C3、C4中的两个。在图16所示的例子中,其中符号的开始图形被损坏,解码器将仅确定控制点C2和C4。
从这两个控制点,解码器将接着确定一条直线SL如图16所示。一旦SL被获得,在该二控制点之间的一组重扫描线可被确定,其中每一条都与直线SL垂直。
然而,这一过程必须假定帧取样器不引起几何畸变(即,基本上为方形象素)。如果符号的矩形畸变为一平行四边形则此过程将无效。
该解码器还解码如图17所示的中部具有划痕的符号。因为解码器从最远的有效开始或结束图形开始搜索两个控制点,一中部的划痕不会影响控制点的定位。然而,当试图判定符号的位置和方向时,每个保留下的角必须通过至少一条扫描线被读取。
对于本领域的技术人员来说,显然可以对解码方法和装置作出不同的修正和变形而不脱离本发明的范围或精神。对本领域的技术人员来说,通过考虑这里公开的本发明的说明书和实践,本发明的其它实施例是显而易见的。本发明的说明书和例子仅是举例性,本发明实质的范围和精神体现于所附的权利要求中。
权利要求
1.一种用于解码二维条形码符号的方法,该符号具有条形编码的码字,码字中包含一开始和一结束码字,各码字由多数模构成,该方法包括以下步骤摄取二维条形码符号的图象,将该图象转换为多行图象数据并将该图象数据存储于一存储器;通过定位至少开始和结束码字之一划定图象数据中二维条形码符号的一个方向;确定一条穿过对应于该条形码符号的方向的码字的直线;沿着该直线扫描该二维条形码符号以读取码字。
2.如权利要求1的方法,还包括检测二维条形码符号上的缺陷并修正该检测到的二维条形码符号上的缺陷的步骤。
3.如权利要求1的方法,其中所述方向判定步骤包括以下步骤扫描所述图象数据的行以确定符号的边缘位置;沿着符号的边缘位置搜索所述开始和结束码字之一;及确定多个靠近该开始和结束码字的控制点。
4.如权利要求3的方法,还包括核实所述二维条形码符号方向的步骤。
5.如权利要求3的方法,其中,所述图象数据扫描步骤包括一水平扫描。
6.如权利要求3的方法,其中,所述图象数据扫描步骤包括一垂直扫描。
7.如权利要求3的方法,其中所述图象数据扫描步骤包括在搜索所述开始和结束码字之一时跳过一预定数目的行。
8.如权利要求3的方法,所述搜索步骤反复进行直到一预定数目的开始和结束码字被找到。
9.如权利要求8的方法,进一步包括从预定数目的被定位的开始和结束码字中选择最好的两个开始码字和最好的两个结束码字的步骤。
10.如权利要求3的方法,其中所述图象数据扫描步骤确定边缘的位置,该图象数据扫描步骤包括以下步骤选择两个端点以寻找其间的边缘位置;横越该两个端点之间的直线;计算该直线的斜率;将所述直线上一第一象素位置的灰色电平与一第二象素位置的比较;当该比较结果大于或等于一第一预定一阈值时确定该第一象素位置为一边缘位置;根据所述斜率沿所述直线增大所述第一和第二象素位置;重复所述比较步骤直到达到末端点。
11.如权利要求3的方法,其中,所述控制点确定步骤包括以下步骤确定一穿过各所述开始和结束码字的第一个条的直线;以及定位既在所述直线上又在所述二维条形码符号的边缘的点。
12.如权利要求4的方法,其中,所述核实步骤包括检查所述二维条形码符号是否构成一个矩形,该矩形具有符号一第一预先限定可接受条件的要求的形状。
13.如权利要求12的方法,其中,所述核实步骤包括以下步骤连接各控制点以构成一个矩形;计算所述矩形的各边的斜率;及比较在所述矩形各角的交线的斜率,其中,当在所述矩形所述各角的比较结果小于一第二预定阈值时,所述符号具有可接受的矩形形状。
14.如权利要求2的方法,其中,所述检测步骤包括以下步骤在所述符号的顶部和底部边缘各确定一条控制线;在各控制线附近两侧形成第一和第二邻线;在各所述邻线上搜索开始和结束码字;及当所述控制线不符合第二预先限定条件时判定符号具有缺陷。
15.如权利要求14的方法,其中,所述第二预先限定条件包括所述第一邻线既具有开始码字又具有结束码字而所述第二邻线既不具有开始码字又不具有结束码字。
16.如权利要求14的方法,其中,所述修正步骤对一条检测到的控制线做修正而另一条控制线为有效控制线,该修正步骤包括调整该检测到的控制线与该有效控制线平行且包含一个控制点。
17.如权利要求16的方法,还包括确认调整后的控制线的步骤,该确认步骤包括以下步骤在所述调整后的控制线附近两侧形成二邻线;在各所述邻线上搜索所述开始和结束码字之一;及通过检验所述调整后的控制线是否符合其一邻线具有开始和结束码字之一而另一邻线不具有开始和结束码字的条件确认对所述检测到的控制线的有效修正。
18.如权利要求1的方法,其中,所述直线确定步骤包括以下步骤建立重扫描开始和重扫描停止线;在所述重扫描开始和重扫描停止线上分别选择重扫描头点和对应的重扫描尾点;及取出一对头和对应的尾点并建立一条连接该两点的直线。
19.如权利要求18的方法,其中,所述扫描步骤包括计算在所述连接头和尾点的直线上相邻的象素的灰色电平差;找出所计算的差中的极值;将各极值与一第三预定阈值比较;当比较结果为大于所述第三预定阈值时确定极值点为一边缘;计算相邻边缘间的距离。
20.如权利要求19的方法,其中,所述发描步骤还包括优化扫描步骤,其通过减少头和尾对数减少扫描时间和冗余。
21.如权利要求1的方法,其中,直线确定步骤包括以下步骤限定一个具有在所述二维条形码各行的中部的起点和终点的区间并建立一条连接该起点和终点的直线;将该限定的区间划分为预定的单位子区间;以及近似模的宽度为对应于最接近的子区间。
22.如权利要求21的方法,其中所述扫描步骤包括以下步骤对各模区间的灰色电平值求和;将该和与一第四预定阈值比较;及对应于该比较结果确定该模为多个预定值之一。
23.如权利要求1的方法,进一步包括检测和修正由于符号的开始和结束码字之一的破损的损坏。
24.一种用于解码二维条形码符号的装置,该条形码符号具有条形编码信息的码字,码字中包括一开始和一结束码字,各码字由多数个模构成,该装置包括用于摄取二维条形码符号的图象,将该图象转换为多行图象数据及将该图象数据存储于一存储器的装置;用于通过定位至少所述开始和结束码字之一确定图象数据中二维条形码符号的一个方向的装置;用于确定穿过对应于该条形码符号方向的码字的一条直线的装置;用于沿该直线扫描该二维条形码符号以读取码字的装置。
25.如权利要求24的装置,还包括用于检测二维条形码符号上的缺陷及修正所检测到的二维条形码符号上的缺陷的装置。
26.如权利要求24的装置,其中的方向确定装置包括用于扫描图象数据的行以确定符号边缘位置的装置;用于沿该符号的边缘位置搜索开始和结束码字之一的装置;及用于确定多个靠近该开始和结束码字的控制点的装置。
27.如权利要求26的装置,还包括用于核实所述二维条形码符号的方向的装置。
28.如权利要求26的装置,其中的图象数据扫描装置包括用于水平地扫描图象数据的装置。
29.如权利要求26的装置,其中的图象数据扫描装置包括用于垂直地扫描图象数据的装置。
30.如权利要求26的装置,其中的图象数据扫描装置包括用于在搜索所述开始和结束码字之一时跳过一预定行数的装置。
31.如权利要求26的装置,其中在所述搜索装置中对开始和结束码字的搜索一直重复到一预定数目的开始和结束码字被找到。
32.如权利要求31的装置,还包括用于从预定数目的被定位的开始和结束码字中选择最好的两个开始码字和最好的两个结束码字的装置。
33.如权利要求26的装置,其中,所述图象数据扫描装置确定边缘位置,该图象数据扫描装置包括用于选择两个端点以寻找其间的边缘位置的装置;用于横越该两端点间的一条直线的装置;用于计算该直线斜率的装置;用于比较该直线上一第一象素位置和一第二象素位置的灰色电平的装置;用于当该比较结果大于或等于一第一预定阈值时确定该第一象素位置为一边缘位置的装置;用于根据所述斜率沿所述直线递增所述第一和第二象素位置的装置;及用于在所述比较装置中重复该比较直到达到末端点的装置。
34.如权利要求26的装置,其中的控制点确定装置包括用于确定一条穿过各所述开始和结束码字的第一个条的直线的装置;及用于定位既在所述直线上又在二维条形码符号边缘的点的装置。
35.如权利要求27的装置,其中的核实装置包括用于检查二维条形码符号是否构成一个具有符合一第一预先限定可接受条件的要求的形状的矩形的装置。
36.如权利要求35的装置,其中的检查装置包括用于连接所述控制点以构成一矩形的装置;用于计算所述矩形各边斜率的装置;及用于比较在所述矩形各角相交线的斜率的装置;其中,当在所述矩形各角的各所述比较的结果小于一第二预定阈值时,符号具有可接受的矩形形状。
37.如权利要求25的装置,其中的检测装置包括用于在符号的顶部和底部边缘确定一控制线的装置;用于在所述控制线附近的两侧形成第一和第二邻线的装置;用于在所述各邻线上搜索开始和结束码字的装置;及用于当各所述控制线未能满足一第二预先限定条件时确定符号有缺陷的装置。
38.如权利要求37的装置,其中的第二预先限定条件包括所述第一邻线具有开始和结束码字两者而所述第二邻线不具有开始和结束码字。
39.如权利要求37的装置,其中的修正装置对一条检测到的控制线修正而另一条控制线为一有效控制线,该修正装置包括用于调整该检测到的控制线以使之与该有效控制线平行且包含所述控制点之一。
40.如权利要求39的装置,还包括用于确认调整后的控制线的装置,所述确认装置包括用于形成两条邻近且于所述调整后控制线两侧的邻线的装置;用于在所述各邻线上搜索所述开始和结束码字之一的装置;及用于通过检验所述调整后的控制线是否满足其一条邻线具有开始或结束码字之一而另一条邻线不具有开始或结束码字的条件而确定对所述检测到的控制线的有效修正的装置。
41.如权利要求24的装置,其中的直线确定装置包括用于建立再扫描开始和停止线的装置;用于在所述再扫描开始和再扫描停止线上分别选择再扫描头点和对应的再扫描尾点的装置;用于取出一对头和对应的尾点并建立一条连接该二点的直线的装置。
42.如权利要求41的装置,其中的扫描装置包括用于计算在所述的连接头和尾点的直线上的相邻象素间的灰色电平差值的装置;用于寻找所计算差值中极值的装置;用于将各极值与一第三预定阈值比较的装置;用于当该比较结果大于所述第三阈值时确定该极值点为一边缘的装置;用于计算相邻边缘间距离的装置。
43.如权利要求41的装置,其中的扫描装置进一步包括用于通过减少头和尾对的数目优化在扫描装置中的图象数据的扫描以减少扫描时间和冗余的装置。
44.如权利要求24的装置,其中的直线确定装置包括用于限定一具有在所述二维条形码符号各行的中部的起点和终点的区间并形成连接该二端点的直线的装置;用于将所限定的区间划分为多个预定的单位子区间的装置;及用于近似模宽以对应于一最接近的单位子区间的装置。
45.如权利要求44的装置,其中的扫描装置包括用于对各模区间的灰色电平值求和的装置;用于将该和与一第四预定阈值比较的装置;及用于确定对应该比较结果确定该模为多个预选限定值之一的装置。
46.如权利要求24的装置,进一步包括用于检测和修正由于符号的开始或结束码字之一的破损的损坏的装置。
全文摘要
一种用于利用CCD摄象机或CMD摄象机解码二维条形码符号的方法及装置。该CCD/CMD摄象机摄取符号的图象且该图象被转换为数字数据存储于存储器中。该二维条形码符号的位置和方向被确定并核实。符号上的缺陷被检测和修正。符号进而被扫描以读取该二维条形码符号上的码字。
文档编号G06K7/10GK1076798SQ9310256
公开日1993年9月29日 申请日期1993年3月16日 优先权日1992年3月16日
发明者斯蒂芬·J·谢尔哈默, 陈明华, 阿尔曼·尼克萨德, 鲍里斯·迈特里斯基 申请人:欧林巴斯光学工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1