国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      利用ccd/cmd攝象機(jī)對(duì)二維條形碼解碼的方法和裝置的制作方法

      文檔序號(hào):6407015閱讀:314來源:國(guó)知局
      專利名稱:利用ccd/cmd攝象機(jī)對(duì)二維條形碼解碼的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及條形碼讀取器的領(lǐng)域,特別是一種利用一電荷耦合器件(CCD)攝象機(jī)或一電荷調(diào)制器件(CMD)攝象機(jī)掃描和解碼如PDF417的二維條形碼的方法和裝置。
      條形碼作為一種用于自動(dòng)識(shí)別物體的手段已被廣泛接受。一個(gè)條形碼符號(hào)是一個(gè)由不同寬度的平行的條和空組成的代表數(shù)據(jù)元素和字符的圖形。條代表二進(jìn)制1的串而空代表二進(jìn)制O的串。一般地,條和空不能小于一特定的最小寬度,該寬度被稱為“?!?module)或“單元”。條和空是該模尺寸或最小寬度的倍數(shù)。
      傳統(tǒng)的條形碼符號(hào)是“一維”的,其中的條和空僅沿一單一方向延伸。然而,對(duì)包含比傳統(tǒng)條形碼符號(hào)更多信息的機(jī)器可讀符合的需求已在增長(zhǎng)。增加在機(jī)器可讀符號(hào)中的信息的一條途徑是減小條形碼的高度并把條形碼彼此堆置起來以產(chǎn)生一“堆置”的或“二維”的條形碼。這種二維條形碼之一是PDF417;其是由符號(hào)技術(shù)公司(symboltechnologies,Inc.)開發(fā)出來的。PDF417碼的完全描述包含在1990年1月5日提交的美國(guó)專利申請(qǐng)07/461,881號(hào)中,該專利申請(qǐng)被轉(zhuǎn)讓給本發(fā)明的同一受讓人,其在此被引作參考。
      條形碼符號(hào)典型地被用如掃描激光束等光學(xué)技術(shù)讀取,其結(jié)果電信號(hào)然后被解碼以恢復(fù)被編碼在符號(hào)中的數(shù)據(jù)。然而,在解碼二維條形碼符號(hào)時(shí),激光掃描器具有其掃描線必須與符號(hào)的行基本平行的缺點(diǎn)。雖然如PDF417的二維條形碼允許一些偏差,但掃描線的方向相對(duì)于符號(hào)的行的角度仍必須小于一最大值。
      但是,有許多應(yīng)用場(chǎng)合要求能夠在任何方向上讀取和解碼二維條形碼而無(wú)需將讀取器與符號(hào)的行校準(zhǔn)。例如,在一工業(yè)應(yīng)用的場(chǎng)合,條形碼符號(hào)可能被設(shè)置在沿傳送帶移動(dòng)的物體上而讀取器從上方讀取符號(hào)。因此,此符號(hào)相對(duì)于讀取器可能為任何方向。
      相應(yīng)地,本發(fā)明的一個(gè)目的即是提供一種用于在任何方向上讀取和解碼二維條形碼的方法和裝置。
      本發(fā)明的另一個(gè)目的是提供一種用于讀取和解碼二維條形碼符號(hào)的方法和裝置,即使在該符號(hào)具有各種使符號(hào)模糊的缺陷,如損壞的角、劃痕或污痕等的情況下仍可進(jìn)行讀取和解碼。
      這些以及其它目的可能通過利用一二維電荷耦合器件(CCD)/電荷調(diào)制器件(CMD)攝象機(jī)獲得二維條形碼符號(hào)的圖象、將該圖象轉(zhuǎn)換為一數(shù)字表述并將該圖象數(shù)據(jù)存儲(chǔ)在一存儲(chǔ)器而達(dá)到。因?yàn)樵搱D象存儲(chǔ)在存儲(chǔ)器中不變,其可被重復(fù)地取出以得到不同的空間信息。另外,一CCD攝象機(jī)可以完成全方向讀取或通過一微光鏡頭放大一微小的標(biāo)簽。CCD/CMD攝象機(jī)還可以利用一攝遠(yuǎn)鏡頭從較遠(yuǎn)的距離上讀取一標(biāo)簽。
      一旦圖象數(shù)據(jù)被存儲(chǔ)在存儲(chǔ)器中,條形碼符號(hào)的位置和方向即被定位在圖象數(shù)據(jù)中。特別地,該符號(hào)的四個(gè)角即被定位,然后可檢查看到它們形成一矩形。該圖象數(shù)據(jù)通過進(jìn)行橫掃符號(hào)各行的圖象數(shù)據(jù)的“實(shí)際掃描”被轉(zhuǎn)換為與由激光掃描器獲得的數(shù)據(jù)同樣的形式。該數(shù)據(jù)然后可被以與由激光掃描器獲得的數(shù)據(jù)相同的方式被解碼。
      更具體地,一種用于解碼具有條形編碼信息的碼字的二維條形碼符號(hào)的方法,所述碼字包括一開始和一結(jié)束碼字,并且由多數(shù)模構(gòu)成,該方法包括以下步驟攝取一幅二維條形碼符號(hào)的圖象,將該圖象轉(zhuǎn)換為多行圖象數(shù)據(jù)并把此圖象數(shù)據(jù)存儲(chǔ)于一存儲(chǔ)器;通過定位至少開始和結(jié)束碼字之一判定圖象數(shù)據(jù)中二維條形碼符號(hào)的一個(gè)方向;確定穿過對(duì)應(yīng)于該條形碼符號(hào)的方向的碼字的一條直線;以及沿該直線掃描二維條形碼符號(hào)以讀取該碼字。
      另外,一種用于解碼具有條形編碼信息的碼字的二維條形碼符號(hào)的裝置,所述碼字包括一開始和一結(jié)束碼字,并且多數(shù)模構(gòu)成,該裝置包括用于攝取二維條形碼符號(hào)圖象、將該圖象轉(zhuǎn)換為多行圖象數(shù)據(jù)并存儲(chǔ)該圖象數(shù)據(jù)于一存儲(chǔ)器的裝置;通過定位至少開始和結(jié)束碼字之一判定圖象數(shù)據(jù)中二維條形碼符號(hào)的一個(gè)方向的裝置;用于確定穿過對(duì)應(yīng)于該條形碼符號(hào)的方向的碼字的一條直線的裝置;以及用于沿該直線掃描二維條形碼符號(hào)以讀取該碼字的裝置。
      應(yīng)該理解,無(wú)論前面的一般性描述還是下面的詳細(xì)描述都僅是例舉性和說明性的,而不是對(duì)本發(fā)明的限制。
      作為說明書一部分的附圖顯示了本發(fā)明的一個(gè)實(shí)施例,其與本發(fā)明的一般描述一起用于解釋本發(fā)明的原理。
      附圖的簡(jiǎn)單說明

      圖1是顯示模和構(gòu)成一個(gè)碼字的條及空的序列的示意圖;
      圖2是顯示-PDF417符號(hào)整體結(jié)構(gòu)的示意圖;
      圖3顯示了利用CCD/CMD攝象機(jī)讀取二維條形碼符號(hào)的系統(tǒng)的實(shí)施例;
      圖4是低水平解碼器的硬件裝置的一個(gè)實(shí)施例的示意框圖;
      圖5顯示了沿一圖象中一給定行掃描數(shù)據(jù);
      圖6顯示了一旦兩個(gè)開始和兩個(gè)結(jié)束圖形被發(fā)現(xiàn)符號(hào)方向的確定;
      圖7顯示了四個(gè)控制點(diǎn)的確定;
      圖8A(分為8A(1)、8A(2))是顯示解碼器用于確定在圖象數(shù)據(jù)中符號(hào)的位置和方向的工作序列的流程圖;
      圖8B是顯示解碼器用于查實(shí)四個(gè)控制點(diǎn)確實(shí)構(gòu)成了一個(gè)矩形的工作序列的流程圖;
      圖9顯示控制線和再掃描線的確定;
      圖10顯示了一由撕壞的角損壞的符號(hào);
      圖11顯示了一由污痕損壞的符號(hào);
      圖12顯示了對(duì)每一控制線鄰線的確定;
      圖13(分為13(1)、13(2))是顯示解碼器用于核實(shí)控制線并修正破損角缺陷的框圖;
      圖14顯示了標(biāo)簽寬度估算和再掃描路徑優(yōu)化的確定;
      圖15(含15A、15B)是顯示解碼器用于完成圖象數(shù)據(jù)的實(shí)際掃描的工作序列的流程序;
      圖16顯示了在開始或結(jié)束圖形之一被損壞時(shí)再掃描線的確定;
      圖17顯示了對(duì)一個(gè)中部具有劃痕的符號(hào)的解碼。
      以下將詳細(xì)說明本發(fā)明目前的較佳實(shí)施例,其一個(gè)例子顯示于附圖中。
      碼PDF417在討論用于利用一CCD/CMD攝象機(jī)讀取和解碼諸如PDF417的二維條形碼符號(hào)的較佳方法和裝置之前,了解符號(hào)的結(jié)構(gòu)是很重要的。
      每個(gè)PDF417條形碼符號(hào)由條形編碼信息的行的堆置構(gòu)成。符號(hào)中的每行包括一開始圖形,幾個(gè)稱作“碼字”的符號(hào)字符,以及一個(gè)結(jié)束圖形。一個(gè)碼字是用于編碼一有意義表述的基本單位,或與某個(gè)數(shù)字、字母或其它符號(hào)相聯(lián)系??傮w地,各行的碼字形成多個(gè)數(shù)據(jù)列。
      PDF417符號(hào)中行的數(shù)目和數(shù)據(jù)列的數(shù)目都是可變的。一個(gè)符號(hào)具有至少三行最多九十行。類似地,每一行中的碼字或數(shù)據(jù)列的數(shù)目可以為三到三十。
      每個(gè)PDF417碼字包含十七個(gè)?;騿卧?。每個(gè)碼字內(nèi)有四個(gè)條和四個(gè)空。單個(gè)的條或空的寬度可在一至六個(gè)模之間變化,但每個(gè)碼字合起來總是十七個(gè)模寬。因此,每個(gè)碼字可以被一個(gè)八個(gè)數(shù)字的序列限定,該序列代表碼字內(nèi)四組變化的條和空寬度。這被稱為碼字的“X序列”且可由序列X0、X1…X7表示。例如,對(duì)于一個(gè)X序列“51111125”,第一個(gè)元素為5個(gè)模寬,接下來是五個(gè)2個(gè)模寬的元素,一個(gè)2個(gè)模寬的元素,以及最后一個(gè)5個(gè)模寬的元素。此例子示于圖1。
      圖2是顯示一PDF417符號(hào)整體結(jié)構(gòu)的示意圖。該符號(hào)的每行包括一個(gè)開始圖形,一左行指示碼字,一或多個(gè)數(shù)據(jù)碼字,一個(gè)右行指示碼字,以及一個(gè)結(jié)束圖形。一行內(nèi)碼字的最小數(shù)目為三個(gè),包括左行指示碼字,至少一個(gè)數(shù)據(jù)碼字,以及右行指示碼字。
      開始和結(jié)束圖形指示各行在哪兒開始和結(jié)束。PDF417采用獨(dú)特的開始和結(jié)束圖形。開始圖形或各行的左邊界,具有獨(dú)特的形式或X序列“81111113”。結(jié)束圖形或各行的右邊界,具有獨(dú)特的X序列“71131121”。因?yàn)楦餍械拈_始和結(jié)束圖形是一樣的,這些圖形在符號(hào)的左和右邊形成固定的結(jié)構(gòu)。整個(gè)符號(hào)被其內(nèi)不含黑色標(biāo)記的干凈空間或“安靜區(qū)”包圍。
      將數(shù)據(jù)編碼為一個(gè)PDF417符號(hào)典型地是一個(gè)兩步的過程。首先,數(shù)據(jù)被轉(zhuǎn)換為代表該數(shù)據(jù)的碼字值。這被稱為“高水平編碼”。這些值然后被由特定的條一空?qǐng)D形物理地表述,這被稱為“低水平編碼”。
      掃描器/讀取器系統(tǒng)圖3顯示了一個(gè)用于利用CCD/CMD攝象機(jī)讀取如PDF417等的二維條形碼符號(hào)的系統(tǒng)。如圖3所示,一個(gè)條形碼讀取系統(tǒng)10包括一主計(jì)算機(jī)12,其可以是一個(gè)個(gè)人計(jì)算機(jī);一解碼器14;一幀取樣電路(framegrabbercircuit)16;以及一二維CCD或CMD攝象機(jī)18。CCD/CMD攝象機(jī)攝取二維條形碼符號(hào)20的圖象并將其轉(zhuǎn)換為電信號(hào)。典型地,CCD/CMD攝象機(jī)的輸出是一個(gè)標(biāo)準(zhǔn)KS-170格式的模擬信號(hào),代表所獲取的圖象的行以及水平和垂直同步信息。
      作為一種變化,如果二維條形碼符號(hào)正移過攝象機(jī),該CCD/CMD攝象機(jī)可只是一一維攝象機(jī)。例如,該條形碼符號(hào)可以是在一傳送帶上的移動(dòng)過攝象機(jī)的物體上或可以是印在一正被該攝象機(jī)掃描的文件上。在這種情況,該CCD/CMD攝象機(jī)可以通過當(dāng)符號(hào)移過攝象機(jī)時(shí)掃描其接續(xù)的行而獲取二維條形碼符號(hào)的圖象。
      從攝象機(jī)18來的電信號(hào)被輸送至幀取樣電路16,該電路將此信號(hào)轉(zhuǎn)換為原始圖象的數(shù)字表述。從CCD/CMD攝象機(jī)來的模擬信號(hào)被轉(zhuǎn)換為8位灰色電平值并被傳送到解碼器14,在那里它們被解碼為對(duì)應(yīng)于該二維條形碼符號(hào)的行和列的一個(gè)碼字值矩陣,如以下進(jìn)一步詳細(xì)解釋的,解碼器14可以被體現(xiàn)于一個(gè)在一專用微計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)程序中。
      該來自解碼器14的碼字值矩陣被一高水平解碼器進(jìn)一步解碼為可用數(shù)據(jù),該高水平解碼器可以被體現(xiàn)為一個(gè)在主計(jì)算機(jī)12上運(yùn)行的單獨(dú)的計(jì)算機(jī)程序。例如PDF417具有三個(gè)預(yù)定義模式和九個(gè)保留模式。該三個(gè)預(yù)定義模式是二進(jìn)制(Binary),執(zhí)行(EXC)及數(shù)字Numeric模式。在Binary模式,各碼字節(jié)可編碼1、2字節(jié)。在EXC模式,字母數(shù)字?jǐn)?shù)據(jù)可以被以二倍密度編碼(即一個(gè)碼字兩個(gè)字符),而在Numeric模式,數(shù)字?jǐn)?shù)據(jù)可以被以幾乎三倍的密度組合。因此在主計(jì)算機(jī)的高水平解碼器將根據(jù)其模式進(jìn)一步對(duì)來自低水平解碼器14的碼字值解碼以獲得含于符號(hào)中的真實(shí)數(shù)據(jù)。然后來自高水平解碼器的被碼數(shù)據(jù)可被一也是在主計(jì)算12上運(yùn)行的用戶應(yīng)用程序使用。
      解碼器裝置圖4是低水平解碼器14的硬件裝置的一個(gè)實(shí)施例的示意性框圖。如圖4所示,低水平解碼器14包括一個(gè)先進(jìn)先出(FIFO,firstin-firstout)存儲(chǔ)緩沖器22,用于接收代表來自幀取樣電路16的二維條形碼圖象的數(shù)字?jǐn)?shù)據(jù)。該FIFO緩沖器22暫時(shí)儲(chǔ)存其接收自幀取樣電路16的數(shù)據(jù)并將其存入存儲(chǔ)器24。為此,F(xiàn)IFO緩沖器22被連接到一中央總線23,該低水平解碼器的其它硬件元件也連接至該總線。FIFO緩沖器22具有直接存儲(chǔ)器存取(DMA)功能,這允許它直接將數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)在存儲(chǔ)器中用于解碼。作為一種變化,該幀取樣電路16也可直接連到總線23并具有DMA功能并由此將數(shù)字?jǐn)?shù)據(jù)直接存儲(chǔ)到存儲(chǔ)器24中。
      低水平解碼器還包括一中心處理單元(CPU)25和一用于與主計(jì)算機(jī)通訊的第二接口26。CPU25最好是一個(gè)高速專用微計(jì)算機(jī),如TMS320數(shù)字信號(hào)處理器。該連至主計(jì)算機(jī)的接口可以是一個(gè)標(biāo)準(zhǔn)接口,如一個(gè)KS-232接口。
      解碼操作[確定符號(hào)位置和方向]在解碼一個(gè)如PDF417的二維條形碼符號(hào)時(shí)解碼器必須完成的首要任務(wù)是在圖象數(shù)據(jù)中找到符號(hào)的位置和方向。
      找到符號(hào)的位置和方向基于在圖象數(shù)據(jù)中找到符號(hào)的開始和結(jié)束圖形。在存儲(chǔ)在厚儲(chǔ)器中的圖象數(shù)據(jù)上操作,解碼器沿圖象中一給定的行掃描數(shù)據(jù),如圖5所示。沿著該行的數(shù)據(jù)被經(jīng)過一邊緣檢測(cè)器,該邊緣檢測(cè)器判斷數(shù)據(jù)中邊緣的位置。該解碼器然后搜索該邊緣檢測(cè)數(shù)據(jù)尋找或代表開始或代表結(jié)束圖形的八元素序列。
      解碼器當(dāng)其掃描各行時(shí)在圖象數(shù)據(jù)的頂部開始。接著,在圖象數(shù)據(jù)的順次掃描中,其向下移動(dòng)一預(yù)定的行數(shù)并掃描該行以尋找開始或結(jié)束圖形。在各順次的掃描線之中的行數(shù)可根據(jù)特定環(huán)境或圖象數(shù)據(jù)的分辨率而改變。例如,當(dāng)圖象數(shù)據(jù)包含480行乘512列的象素?cái)?shù)據(jù)時(shí),解碼器可被設(shè)為每二十行掃描一次,跳過順次掃描線之間的十九行。
      如果至少兩個(gè)開始圖形或兩個(gè)結(jié)束圖形被找到,則符號(hào)的方向被確定。例如圖5所示,其中P1和P2兩個(gè)點(diǎn)代表兩開始圖形的位置而q1和q2兩點(diǎn)代表兩個(gè)結(jié)束圖形的位置。一條垂直于符號(hào)的行的直線可被穿過兩點(diǎn)畫出以判定符號(hào)的方向,如圖6所示。
      雖然理論上兩個(gè)這樣的點(diǎn)足夠決定一直線,但解碼器將爭(zhēng)取存儲(chǔ)多于兩個(gè)的開始或結(jié)束圖形,直到一預(yù)定極限。解碼器然后將選擇兩個(gè)“最好的”圖形用以尋找符號(hào)的方向。最好的圖形被認(rèn)為是那些沒有缺陷并相隔盡可能遠(yuǎn)的圖形。
      如果解碼器在水平掃描過各行而未能檢測(cè)到兩個(gè)開始圖形或兩個(gè)結(jié)束圖形時(shí),則解碼器將沿著列向下垂直地掃描圖象數(shù)據(jù)以尋找開始或結(jié)束圖形。如果解碼器仍未能在水平或垂直方向上檢測(cè)到至少兩個(gè)開始圖形或兩個(gè)結(jié)束圖形,那么攝象機(jī)重新攝取新圖象并且解碼處理過程重新開始。
      如果解碼器在圖象數(shù)據(jù)中成功地檢測(cè)到至少兩個(gè)開始圖形和兩個(gè)結(jié)束圖形,則其試圖確定如圖7所示的在開始和結(jié)束圖形頂部和底部的四個(gè)控制點(diǎn)C1、C2、C3和C4的位置。對(duì)于開始圖形,這通過首先決定一穿過該開始圖形的第一個(gè)條的中心的直線SL1進(jìn)行。然后從位于該第一條的兩個(gè)點(diǎn)開始,解碼器沿該直線SL1向外搜索符號(hào)的邊緣。符號(hào)的邊緣通過沿該直線的象素?cái)?shù)據(jù)的灰色電平的大的變化而被判定。以此方法找到的兩個(gè)邊緣點(diǎn)即控制點(diǎn)C1和C2。對(duì)結(jié)束碼字沿著直線SL2進(jìn)行同樣的過程以找到另外兩個(gè)控制點(diǎn)C3和C4。
      圖8A(分為8A(1)、8A(2))是顯示解碼器為確定圖象數(shù)據(jù)中符號(hào)的位置和方向的操作序列的流程圖。該序列中的各步驟含于一個(gè)計(jì)算機(jī)軟件程序中,該程序存儲(chǔ)于圖4中的存儲(chǔ)器24并由圖4中的CPU25執(zhí)行。
      如圖8A所示,符號(hào)位置和方向的判定從步驟30的對(duì)圖象數(shù)據(jù)的水平掃描開始。在搜索開始或結(jié)束圖形前,符號(hào)的邊緣位置在步驟32中被判定。
      符號(hào)的邊緣通過橫越一條兩個(gè)端點(diǎn)間的直線并沿該直線搜索一邊緣而判定。特別地,該直線的斜率首先被判定,然后從該直線的第一端點(diǎn)開始,將該直線上一當(dāng)前象素的值或或灰色電平與前一象素的值比較。如果該比較的結(jié)果大于或等于一個(gè)預(yù)定的閾值,則邊緣即在當(dāng)前象素的位置。如果該比較的結(jié)果小于該預(yù)定閾值,則根據(jù)該直線的斜率增加當(dāng)前象素的位置且該增加后的位置即成為新的當(dāng)前象素位置。該當(dāng)前象素位置(增加后的位置)再與上一象素位置比較。繼續(xù)這一過程直到或者找到邊緣或者當(dāng)前象素位置到達(dá)該直線的最后端點(diǎn)。
      一點(diǎn)邊緣被判定,在步驟34即在邊緣位置數(shù)據(jù)中搜索開始或結(jié)果圖形。為找到開始圖形,8個(gè)連接的數(shù)字被讀以。然而,其中的第一個(gè)數(shù)字必須是條。如果不是,則下面8個(gè)連接的數(shù)字被讀取。如果第一個(gè)數(shù)字是條,則首4個(gè)數(shù)字被判斷。如果該首4個(gè)數(shù)字等于一個(gè)預(yù)定值,如8111,則后4個(gè)數(shù)字被判斷。如果該后4個(gè)數(shù)字加起來為另一個(gè)預(yù)定值,如(1113=)6,則開始圖形即被找到。如果上述任一情形未出現(xiàn),則讀取下面8個(gè)連接的數(shù)字。
      結(jié)束圖形可以經(jīng)與開始圖形類似的過程找到。再一次8個(gè)連接的數(shù)字被讀取并且如果其中第一個(gè)數(shù)字不是條則讀取下面8個(gè)連接的數(shù)字。如果第一個(gè)數(shù)字是一個(gè)條,則首4個(gè)數(shù)字被判斷。如果該首4個(gè)數(shù)字等于一預(yù)定值,如71113,則后4個(gè)數(shù)字被判斷。如果該后4個(gè)數(shù)字加起來為另一個(gè)預(yù)定值,如(1121=)5,則結(jié)束圖形被找到。還是,如果未遇到上述任一種情況,則下面8個(gè)連接的數(shù)字被讀取。
      如果在水平掃描中未找到開始或結(jié)束圖形,則執(zhí)行對(duì)圖形數(shù)據(jù)的垂直掃描。垂直掃描的執(zhí)行與水平掃描相類似(步驟48-54)。
      每隔預(yù)定數(shù)目的行(對(duì)于水平掃描)或列(對(duì)于垂直掃描)進(jìn)行開始和結(jié)束圖形的搜索。一旦所要求數(shù)目的開始和結(jié)束圖形被找到,則在步驟42(對(duì)水平掃描)或步驟60(對(duì)垂直掃描)判定各組中最好的兩個(gè)開始圖形和最好的兩個(gè)結(jié)束圖形。一旦最好的兩個(gè)開始和結(jié)束圖形被判定,即在步驟68中判定位于該開始和結(jié)束圖形頂部和底部的四個(gè)控制點(diǎn)。
      為了判定該四個(gè)控制點(diǎn),穿過開始和結(jié)束圖形中第一個(gè)條的中心各畫一條直線??刂泣c(diǎn)即是這些直線上具有大的灰色電平變化的點(diǎn)。因此,控制點(diǎn)存在于沿著這些直線的開始圖形的第一個(gè)條的頂部和底部及結(jié)束圖形的第一個(gè)條的頂部和底部。一旦四個(gè)控制點(diǎn)被判定,解碼器則檢查符號(hào)的位置和方向是否構(gòu)成一個(gè)矩形。它通過核實(shí)符號(hào)的相鄰邊互成直角而完成。如果兩條直線的斜率具有如下關(guān)系則它們互成直角S1=S-12圖8B是顯示解碼器為核實(shí)四個(gè)控制點(diǎn)C1、C2、C3、C4確實(shí)代表一個(gè)矩形的操作序列的流程圖。
      利用圖8A中判定的四個(gè)控制點(diǎn),通過在步驟70中畫出連接四個(gè)控制點(diǎn)的連線即可構(gòu)成一個(gè)矩形。在步驟72,該矩形的四條邊的斜率被判定,并且在步驟74中在該矩形各角相交的兩條直線被比較。如果相鄰邊的斜率被標(biāo)識(shí)為S1、S2、S3和S4,則該各斜率將如下比較。
      在步驟76中計(jì)算S1的絕對(duì)值及S2絕對(duì)值的差值。如果該差值小于一個(gè)預(yù)定的閾值e,則矩形相應(yīng)的角被認(rèn)為是直角。如果該差值不小于該預(yù)定閾值,則所述四個(gè)控制點(diǎn)不構(gòu)成一矩形。
      類似的判斷對(duì)斜率對(duì)S2和S3、S3和S4及S4和S1分別進(jìn)行,分別如步驟78、80及82所示。如果其中任何比較的差值不小于該預(yù)定閾值,則四個(gè)控制點(diǎn)被認(rèn)為不構(gòu)成一矩形。然而,如果每一比較的差值都小于該預(yù)定閾值,則這些控制點(diǎn)被認(rèn)為構(gòu)成一矩形。如果四個(gè)控制點(diǎn)C1、C2、C3和C4不構(gòu)成一個(gè)矩形,則最可能是各角之一被損壞。因?yàn)镻DF417被設(shè)計(jì)為比較耐損壞,因此對(duì)符號(hào)的有些損壞將不妨礙解碼,解碼器將通過如下述調(diào)整四個(gè)控制點(diǎn)的位置來處理被損壞的符號(hào)。
      首先,如圖9所示,解碼器選定兩條沿著符號(hào)頂和底邊緣的控制線CL1和CL2。然后解碼器檢查是否各控制線CL1和CL2被正確地選定。例如,如果各角之一被撕掉(圖10)或被污痕涂去(圖11),該控制線之一將不正確。
      為了判定控制線是否正確,解碼器判定兩相鄰的線,該兩條線都與該控制線平行但位于控制線的兩側(cè),如圖12所示。該鄰線都與控制線離開一預(yù)定距離δ,如5個(gè)象素的距離。如果該控制線正確,則該鄰線之一應(yīng)包含一開始和一結(jié)束圖形而另一條則不包含。
      一旦判定了控制線是正確的,另一條控制線(圖12中的CL1)將被修正以與正確的控制線(CL2)平行。該新的控制線則能通過如上判定兩鄰線而被核實(shí)。如果該新的控制線(CL1)是正確的,則其鄰線之一含有一開始和一結(jié)束圖形而另一鄰線則一定不含。
      圖13是顯示解碼器用于核實(shí)控制線和修正角缺陷的操作序列的流程圖。
      首先,在步驟90,通過連接頂部?jī)煽刂泣c(diǎn)及連接底部?jī)蓚€(gè)控制點(diǎn)選定頂部和底部控制線。在步驟92,對(duì)兩條控制線各在其兩側(cè)畫兩條鄰線,該兩條鄰線與控制線離開一預(yù)定的距離。
      在步驟94,在兩條鄰線內(nèi)搜索開始和結(jié)束圖形。如果兩條控制線都各有一條鄰線具有開始及結(jié)束圖形而另一條鄰線不含開始和結(jié)束圖形,則該兩條控制線都被認(rèn)為有效,如步驟96,100及104所示。如果兩條控制線都不是一條鄰線含開始及結(jié)束圖形而另一條不含這兩種圖形,則這兩條控制線都被認(rèn)為無(wú)效,如步驟96、98及102所示。如果僅有一條控制線有效而另一條控制線無(wú)效,如步驟96、98及106或96、100及106所示,則該無(wú)效的控制線必須被如步驟108所示修正。
      為了修正該無(wú)效控制線,該無(wú)效控制線被調(diào)整為與該有效控制線平行且穿過至少一個(gè)控制點(diǎn)。一旦該無(wú)效控制線被修正,其在步驟110被檢驗(yàn)以核實(shí)該修正。為核實(shí)該無(wú)效控制線已被修正,則在該控制線兩側(cè)再畫兩條平行的鄰線。如果該鄰線之一包含一開始和結(jié)束圖形而另一鄰線不包含,則該無(wú)效控制線的修正被核實(shí)。然而,如果不是這種情況,則該無(wú)效控制線不能被修正。一旦限定標(biāo)簽位置和方向的四個(gè)控制點(diǎn)被確定,解碼器即對(duì)存儲(chǔ)在存儲(chǔ)器內(nèi)的圖象數(shù)據(jù)進(jìn)行“實(shí)際掃描”。這涉及到在圖象數(shù)據(jù)中選擇一個(gè)從開始圖形到結(jié)束圖形橫越符號(hào)并與一限定符號(hào)的頂?shù)闹本€平行的象素序列。因此,以此方式得到的數(shù)據(jù)將表示沿符號(hào)一行的一個(gè)掃描。
      這一象素序列被送經(jīng)一邊緣檢測(cè)器以判定符號(hào)中從暗到亮或從亮到暗的轉(zhuǎn)換的位置。這些轉(zhuǎn)換則被用來確定符號(hào)中條和空的寬度。對(duì)應(yīng)于符號(hào)中條和空寬度的數(shù)據(jù)序列與由激光掃描器獲得的數(shù)據(jù)為同一格式。
      更具體地,一旦四個(gè)控制點(diǎn)C1、C2、C3和C4被確定,解碼器確定如圖9所示的控制線CL1和CL2的位置。然后,一重掃描開始線RSL1和一重掃描停止線RSL2被確定。線RSL1與開始圖形平行并穿過靠近開始圖形的安靜區(qū)。類似地,線RSL2與結(jié)束圖形平行并穿過靠近結(jié)束圖形的安靜區(qū)。
      為了重掃描圖象數(shù)據(jù)中符號(hào)的一行,解碼器識(shí)別在重掃描開始線RSL1上的重掃描頭點(diǎn)及在重掃描停止線RSL2上相應(yīng)的重掃描尾點(diǎn)。重掃描頭點(diǎn)和尾點(diǎn)可以是RSL1和RSL2線在控制線CL1和CL2之間的線段上的所有的點(diǎn)。作為一種變化,如以下進(jìn)一步解釋的,可通過利用一重掃描優(yōu)化方法使掃描線的數(shù)目最少。用于重掃描頭和尾點(diǎn)的點(diǎn)位置被存儲(chǔ)于一陣列中用于重掃描圖象數(shù)據(jù)。
      對(duì)每一重掃描“頭-尾”對(duì),解碼器沿一從重掃描頭點(diǎn)到重掃描尾點(diǎn)的直線掃描。一典型的重掃描線顯示于圖9,從重掃描頭點(diǎn)hi到重掃描尾點(diǎn)ti掃描。解碼器從圖象數(shù)據(jù)中沿該直線取出灰色電平值。這一數(shù)據(jù)線然后被處理以獲得所要求的輸出數(shù)據(jù)形式。
      從灰色電平值中獲得輸出數(shù)據(jù)的一個(gè)方法是利用邊緣檢測(cè)。利用此方法,解碼器首先計(jì)算沿重掃描線的相鄰的灰色電平值之間的差。然后解碼器在該差值序列中的一特定鄰域內(nèi)尋找極值,該特定鄰域可以是如一個(gè)三象素的窗。在該差值的一極值幅度超過一預(yù)定閾值時(shí),邊緣即被確定。條和空的寬度然后通過確定邊緣間的距離而被算出。
      作為一種變化,如果各行的碼字已知或已從符號(hào)的解碼部分被確定,條和空的寬度可以通過在重掃描線上的灰色電平值上進(jìn)行一個(gè)二進(jìn)制判定而確定。在這一過程中,只有那些穿過一行中部的重掃描線上的灰色電平值被用以進(jìn)行一個(gè)二進(jìn)制判定。
      首先,解碼器確定除開始和結(jié)束圖形之外的第一碼字的開始點(diǎn)B和最后碼字的終點(diǎn)E。整個(gè)區(qū)間(B、E)然后被劃分為單位區(qū)間Ik。特別地,該線內(nèi)的象素被該行內(nèi)模的總數(shù)目除,以得到平均模長(zhǎng)μ,其中模的總數(shù)目等于碼字?jǐn)?shù)乘以每個(gè)碼字的模數(shù)。典型地,該平均模長(zhǎng)μ將不是一個(gè)整數(shù),因此有必要對(duì)碼字行內(nèi)的各模設(shè)定一個(gè)近似模長(zhǎng)。
      如果模長(zhǎng)μ不是一個(gè)整數(shù),它將肯定落入二整數(shù)之間。因此,對(duì)每個(gè)模長(zhǎng)存在一個(gè)整數(shù)K,有K<μ<K+1。
      因此,有兩種方法對(duì)各模設(shè)定一近似模長(zhǎng)值,即選擇K或K+1之一。如果選擇K,則這將導(dǎo)致一近似誤差ek=μ-k如果選擇k+1,則將導(dǎo)致一近似誤差ek=-(k+1-μ)因此,所選的整數(shù)值,無(wú)論是k還是k+1,都是使累積誤差最小的一個(gè),其中到第k個(gè)模的累積誤差由下式給出
      一旦各模的寬度被確定,解碼器即能通過對(duì)該模的灰色電平值進(jìn)行一二進(jìn)制判定而決定各模是黑還是白。特別地,各模內(nèi)的灰色電平值被加起來并與一預(yù)定閾值比較以判定該模是黑還是白。
      如上討論的,解碼器可以掃描控制線CL1和CL2之間的每條可能的重掃描線。雖然這種方法為解碼符號(hào)帶來最大量的信息,但卻有很大量的冗余,因?yàn)閷?duì)一行,如果正確選定重掃描線,則一條重掃描線即足夠了。
      因此,掃描線的數(shù)目和位置可以基于下述考慮而最優(yōu)化(1)除去一些少量的由于噪音的偏差,符號(hào)中同一行內(nèi)的兩條相近的重掃描線(圖14中的SL1和SL2)應(yīng)具有同樣的灰色電平結(jié)構(gòu);
      (2)來自符號(hào)中不同行的兩條相近的重掃描線(圖14中的SL2和SL3)在其灰色電平結(jié)構(gòu)之間應(yīng)具有較大的“距離”;及(3)在兩條重掃描線S1和S2之間的距離尺寸D(S1、S2)被定義為在該兩條線上對(duì)應(yīng)象素間所有距離的和,其中各別象素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為一預(yù)定閾值。因此,在兩重掃描線S1和S2之間的灰色電平距離被如下定義D(S1,S2)=∑d(S1(i),S2(i))相應(yīng)地,D(S1,S2)在兩相近的重掃描線都靠近一行的中部時(shí)較小而在該兩相近的重掃描線跨越相鄰行邊界時(shí)較大。
      為了優(yōu)化掃描途徑,解碼器首先計(jì)算所有可能的重掃描線的相鄰的線段之間的距離。這些線段的長(zhǎng)度應(yīng)足夠長(zhǎng)以覆蓋至少一個(gè)碼字(如圖14所示)。利用線段替代整個(gè)重掃描線大大地減少了計(jì)算時(shí)間。當(dāng)所有的距離已被計(jì)算,重掃描線即可被置于距離為局部最小處,對(duì)應(yīng)于符號(hào)的行的中部。
      圖15A及15B是顯示解碼器用于完成對(duì)圖象數(shù)據(jù)實(shí)際掃描的操作序列的流程圖。
      圖15A(分為15A(1)、15A(2)是說明輸出圖象數(shù)據(jù)的邊緣檢測(cè)方法的流程圖。如圖15A所示,一旦控制線的位置已被確定,如前討論的,重掃描開始和停止線在步驟122中被確定。然后,在步驟124中,重掃描頭和對(duì)應(yīng)的尾點(diǎn)在重掃描開始和停止線上分別被識(shí)別。如果要求對(duì)重掃描線優(yōu)化,則對(duì)每條可得到的掃描線置或不置一個(gè)標(biāo)記。如果被置了一標(biāo)記,則該特定重掃描線將被處理。如果未被置標(biāo)記,該重掃描線將被跳過。如果不要求優(yōu)化,所有可獲得的重掃描線將被處理。重掃描線被如下處理在步驟130,一對(duì)頭-尾點(diǎn)被取出,而在步驟132,一重掃描線由連接該對(duì)頭-尾點(diǎn)被畫出。在步驟134沿該掃描線的灰色電平差被計(jì)算出。
      在步驟136,在一特定鄰域內(nèi)(通常為一個(gè)三象素的窗)該差值的極值被判定。該極值通過在一特定點(diǎn)的鄰域或窗內(nèi)定位和記錄最大和最小值而判定。如果所定位的最大或最小值的幅度足夠大并且其位置不是在該鄰域的邊界,則該位置被認(rèn)為一個(gè)極值點(diǎn)。
      在步驟138,各級(jí)值被與一預(yù)定閾值比較以判定該極值點(diǎn)是否是一個(gè)邊緣。在步驟150,各判定的邊緣間的距離(輸出序列)被計(jì)算和打印出。重復(fù)上述步驟直到再?zèng)]有頭-尾點(diǎn)為止。
      圖15B是說明輸出圖象數(shù)據(jù)的中心取樣和二進(jìn)制判定方法的流程圖。該方法利用開始和結(jié)束圖形上的數(shù)據(jù),控制點(diǎn)數(shù)據(jù),標(biāo)簽行寬以及模的寬度。
      在圖15B的步驟162,一第一非開始/結(jié)束碼字的開始點(diǎn)B和一最后非開始/結(jié)束碼字的終點(diǎn)E被定義。在步驟164,兩點(diǎn)B-E之間的區(qū)間被分為預(yù)定的單位區(qū)間。如果模寬是一個(gè)非整數(shù)的數(shù),則在步驟168對(duì)模寬進(jìn)行一整數(shù)近似程序。與該近似相關(guān)的誤差已在前面解釋過。
      一旦該區(qū)間B-E已被分割,每一模區(qū)的灰色電平值被在步驟170中加起來并在步驟172中與一預(yù)定閾值比較。如果該和比該閾值大,則該模被認(rèn)為是“黑”,反之,該模則被認(rèn)為是“白”。因此,根據(jù)該黑和白的序列,圖象數(shù)據(jù)的輸出即生成。
      通過重掃描圖象數(shù)據(jù)而獲得數(shù)據(jù)被輸出至一低水平解碼器用于進(jìn)一步對(duì)該數(shù)據(jù)解碼。用于解碼如PDF417的二維符號(hào)的低水平解碼器,在轉(zhuǎn)讓給本發(fā)明受讓人的另一美國(guó)專利申請(qǐng)中已被描述,該申請(qǐng)?jiān)诖吮灰秊閰⒖肌?br> 破損符號(hào)除了前述的角缺損,條形碼符號(hào)可能被以其它方式損壞。例如,開始或結(jié)束圖形之一可能被損壞。然而,如果其它圖形仍能被識(shí)別,則解碼器將僅確定四個(gè)控制點(diǎn)C1、C2、C3、C4中的兩個(gè)。在圖16所示的例子中,其中符號(hào)的開始圖形被損壞,解碼器將僅確定控制點(diǎn)C2和C4。
      從這兩個(gè)控制點(diǎn),解碼器將接著確定一條直線SL如圖16所示。一旦SL被獲得,在該二控制點(diǎn)之間的一組重掃描線可被確定,其中每一條都與直線SL垂直。
      然而,這一過程必須假定幀取樣器不引起幾何畸變(即,基本上為方形象素)。如果符號(hào)的矩形畸變?yōu)橐黄叫兴倪呅蝿t此過程將無(wú)效。
      該解碼器還解碼如圖17所示的中部具有劃痕的符號(hào)。因?yàn)榻獯a器從最遠(yuǎn)的有效開始或結(jié)束圖形開始搜索兩個(gè)控制點(diǎn),一中部的劃痕不會(huì)影響控制點(diǎn)的定位。然而,當(dāng)試圖判定符號(hào)的位置和方向時(shí),每個(gè)保留下的角必須通過至少一條掃描線被讀取。
      對(duì)于本領(lǐng)域的技術(shù)人員來說,顯然可以對(duì)解碼方法和裝置作出不同的修正和變形而不脫離本發(fā)明的范圍或精神。對(duì)本領(lǐng)域的技術(shù)人員來說,通過考慮這里公開的本發(fā)明的說明書和實(shí)踐,本發(fā)明的其它實(shí)施例是顯而易見的。本發(fā)明的說明書和例子僅是舉例性,本發(fā)明實(shí)質(zhì)的范圍和精神體現(xiàn)于所附的權(quán)利要求中。
      權(quán)利要求
      1.一種用于解碼二維條形碼符號(hào)的方法,該符號(hào)具有條形編碼的碼字,碼字中包含一開始和一結(jié)束碼字,各碼字由多數(shù)模構(gòu)成,該方法包括以下步驟攝取二維條形碼符號(hào)的圖象,將該圖象轉(zhuǎn)換為多行圖象數(shù)據(jù)并將該圖象數(shù)據(jù)存儲(chǔ)于一存儲(chǔ)器;通過定位至少開始和結(jié)束碼字之一劃定圖象數(shù)據(jù)中二維條形碼符號(hào)的一個(gè)方向;確定一條穿過對(duì)應(yīng)于該條形碼符號(hào)的方向的碼字的直線;沿著該直線掃描該二維條形碼符號(hào)以讀取碼字。
      2.如權(quán)利要求1的方法,還包括檢測(cè)二維條形碼符號(hào)上的缺陷并修正該檢測(cè)到的二維條形碼符號(hào)上的缺陷的步驟。
      3.如權(quán)利要求1的方法,其中所述方向判定步驟包括以下步驟掃描所述圖象數(shù)據(jù)的行以確定符號(hào)的邊緣位置;沿著符號(hào)的邊緣位置搜索所述開始和結(jié)束碼字之一;及確定多個(gè)靠近該開始和結(jié)束碼字的控制點(diǎn)。
      4.如權(quán)利要求3的方法,還包括核實(shí)所述二維條形碼符號(hào)方向的步驟。
      5.如權(quán)利要求3的方法,其中,所述圖象數(shù)據(jù)掃描步驟包括一水平掃描。
      6.如權(quán)利要求3的方法,其中,所述圖象數(shù)據(jù)掃描步驟包括一垂直掃描。
      7.如權(quán)利要求3的方法,其中所述圖象數(shù)據(jù)掃描步驟包括在搜索所述開始和結(jié)束碼字之一時(shí)跳過一預(yù)定數(shù)目的行。
      8.如權(quán)利要求3的方法,所述搜索步驟反復(fù)進(jìn)行直到一預(yù)定數(shù)目的開始和結(jié)束碼字被找到。
      9.如權(quán)利要求8的方法,進(jìn)一步包括從預(yù)定數(shù)目的被定位的開始和結(jié)束碼字中選擇最好的兩個(gè)開始碼字和最好的兩個(gè)結(jié)束碼字的步驟。
      10.如權(quán)利要求3的方法,其中所述圖象數(shù)據(jù)掃描步驟確定邊緣的位置,該圖象數(shù)據(jù)掃描步驟包括以下步驟選擇兩個(gè)端點(diǎn)以尋找其間的邊緣位置;橫越該兩個(gè)端點(diǎn)之間的直線;計(jì)算該直線的斜率;將所述直線上一第一象素位置的灰色電平與一第二象素位置的比較;當(dāng)該比較結(jié)果大于或等于一第一預(yù)定一閾值時(shí)確定該第一象素位置為一邊緣位置;根據(jù)所述斜率沿所述直線增大所述第一和第二象素位置;重復(fù)所述比較步驟直到達(dá)到末端點(diǎn)。
      11.如權(quán)利要求3的方法,其中,所述控制點(diǎn)確定步驟包括以下步驟確定一穿過各所述開始和結(jié)束碼字的第一個(gè)條的直線;以及定位既在所述直線上又在所述二維條形碼符號(hào)的邊緣的點(diǎn)。
      12.如權(quán)利要求4的方法,其中,所述核實(shí)步驟包括檢查所述二維條形碼符號(hào)是否構(gòu)成一個(gè)矩形,該矩形具有符號(hào)一第一預(yù)先限定可接受條件的要求的形狀。
      13.如權(quán)利要求12的方法,其中,所述核實(shí)步驟包括以下步驟連接各控制點(diǎn)以構(gòu)成一個(gè)矩形;計(jì)算所述矩形的各邊的斜率;及比較在所述矩形各角的交線的斜率,其中,當(dāng)在所述矩形所述各角的比較結(jié)果小于一第二預(yù)定閾值時(shí),所述符號(hào)具有可接受的矩形形狀。
      14.如權(quán)利要求2的方法,其中,所述檢測(cè)步驟包括以下步驟在所述符號(hào)的頂部和底部邊緣各確定一條控制線;在各控制線附近兩側(cè)形成第一和第二鄰線;在各所述鄰線上搜索開始和結(jié)束碼字;及當(dāng)所述控制線不符合第二預(yù)先限定條件時(shí)判定符號(hào)具有缺陷。
      15.如權(quán)利要求14的方法,其中,所述第二預(yù)先限定條件包括所述第一鄰線既具有開始碼字又具有結(jié)束碼字而所述第二鄰線既不具有開始碼字又不具有結(jié)束碼字。
      16.如權(quán)利要求14的方法,其中,所述修正步驟對(duì)一條檢測(cè)到的控制線做修正而另一條控制線為有效控制線,該修正步驟包括調(diào)整該檢測(cè)到的控制線與該有效控制線平行且包含一個(gè)控制點(diǎn)。
      17.如權(quán)利要求16的方法,還包括確認(rèn)調(diào)整后的控制線的步驟,該確認(rèn)步驟包括以下步驟在所述調(diào)整后的控制線附近兩側(cè)形成二鄰線;在各所述鄰線上搜索所述開始和結(jié)束碼字之一;及通過檢驗(yàn)所述調(diào)整后的控制線是否符合其一鄰線具有開始和結(jié)束碼字之一而另一鄰線不具有開始和結(jié)束碼字的條件確認(rèn)對(duì)所述檢測(cè)到的控制線的有效修正。
      18.如權(quán)利要求1的方法,其中,所述直線確定步驟包括以下步驟建立重掃描開始和重掃描停止線;在所述重掃描開始和重掃描停止線上分別選擇重掃描頭點(diǎn)和對(duì)應(yīng)的重掃描尾點(diǎn);及取出一對(duì)頭和對(duì)應(yīng)的尾點(diǎn)并建立一條連接該兩點(diǎn)的直線。
      19.如權(quán)利要求18的方法,其中,所述掃描步驟包括計(jì)算在所述連接頭和尾點(diǎn)的直線上相鄰的象素的灰色電平差;找出所計(jì)算的差中的極值;將各極值與一第三預(yù)定閾值比較;當(dāng)比較結(jié)果為大于所述第三預(yù)定閾值時(shí)確定極值點(diǎn)為一邊緣;計(jì)算相鄰邊緣間的距離。
      20.如權(quán)利要求19的方法,其中,所述發(fā)描步驟還包括優(yōu)化掃描步驟,其通過減少頭和尾對(duì)數(shù)減少掃描時(shí)間和冗余。
      21.如權(quán)利要求1的方法,其中,直線確定步驟包括以下步驟限定一個(gè)具有在所述二維條形碼各行的中部的起點(diǎn)和終點(diǎn)的區(qū)間并建立一條連接該起點(diǎn)和終點(diǎn)的直線;將該限定的區(qū)間劃分為預(yù)定的單位子區(qū)間;以及近似模的寬度為對(duì)應(yīng)于最接近的子區(qū)間。
      22.如權(quán)利要求21的方法,其中所述掃描步驟包括以下步驟對(duì)各模區(qū)間的灰色電平值求和;將該和與一第四預(yù)定閾值比較;及對(duì)應(yīng)于該比較結(jié)果確定該模為多個(gè)預(yù)定值之一。
      23.如權(quán)利要求1的方法,進(jìn)一步包括檢測(cè)和修正由于符號(hào)的開始和結(jié)束碼字之一的破損的損壞。
      24.一種用于解碼二維條形碼符號(hào)的裝置,該條形碼符號(hào)具有條形編碼信息的碼字,碼字中包括一開始和一結(jié)束碼字,各碼字由多數(shù)個(gè)模構(gòu)成,該裝置包括用于攝取二維條形碼符號(hào)的圖象,將該圖象轉(zhuǎn)換為多行圖象數(shù)據(jù)及將該圖象數(shù)據(jù)存儲(chǔ)于一存儲(chǔ)器的裝置;用于通過定位至少所述開始和結(jié)束碼字之一確定圖象數(shù)據(jù)中二維條形碼符號(hào)的一個(gè)方向的裝置;用于確定穿過對(duì)應(yīng)于該條形碼符號(hào)方向的碼字的一條直線的裝置;用于沿該直線掃描該二維條形碼符號(hào)以讀取碼字的裝置。
      25.如權(quán)利要求24的裝置,還包括用于檢測(cè)二維條形碼符號(hào)上的缺陷及修正所檢測(cè)到的二維條形碼符號(hào)上的缺陷的裝置。
      26.如權(quán)利要求24的裝置,其中的方向確定裝置包括用于掃描圖象數(shù)據(jù)的行以確定符號(hào)邊緣位置的裝置;用于沿該符號(hào)的邊緣位置搜索開始和結(jié)束碼字之一的裝置;及用于確定多個(gè)靠近該開始和結(jié)束碼字的控制點(diǎn)的裝置。
      27.如權(quán)利要求26的裝置,還包括用于核實(shí)所述二維條形碼符號(hào)的方向的裝置。
      28.如權(quán)利要求26的裝置,其中的圖象數(shù)據(jù)掃描裝置包括用于水平地掃描圖象數(shù)據(jù)的裝置。
      29.如權(quán)利要求26的裝置,其中的圖象數(shù)據(jù)掃描裝置包括用于垂直地掃描圖象數(shù)據(jù)的裝置。
      30.如權(quán)利要求26的裝置,其中的圖象數(shù)據(jù)掃描裝置包括用于在搜索所述開始和結(jié)束碼字之一時(shí)跳過一預(yù)定行數(shù)的裝置。
      31.如權(quán)利要求26的裝置,其中在所述搜索裝置中對(duì)開始和結(jié)束碼字的搜索一直重復(fù)到一預(yù)定數(shù)目的開始和結(jié)束碼字被找到。
      32.如權(quán)利要求31的裝置,還包括用于從預(yù)定數(shù)目的被定位的開始和結(jié)束碼字中選擇最好的兩個(gè)開始碼字和最好的兩個(gè)結(jié)束碼字的裝置。
      33.如權(quán)利要求26的裝置,其中,所述圖象數(shù)據(jù)掃描裝置確定邊緣位置,該圖象數(shù)據(jù)掃描裝置包括用于選擇兩個(gè)端點(diǎn)以尋找其間的邊緣位置的裝置;用于橫越該兩端點(diǎn)間的一條直線的裝置;用于計(jì)算該直線斜率的裝置;用于比較該直線上一第一象素位置和一第二象素位置的灰色電平的裝置;用于當(dāng)該比較結(jié)果大于或等于一第一預(yù)定閾值時(shí)確定該第一象素位置為一邊緣位置的裝置;用于根據(jù)所述斜率沿所述直線遞增所述第一和第二象素位置的裝置;及用于在所述比較裝置中重復(fù)該比較直到達(dá)到末端點(diǎn)的裝置。
      34.如權(quán)利要求26的裝置,其中的控制點(diǎn)確定裝置包括用于確定一條穿過各所述開始和結(jié)束碼字的第一個(gè)條的直線的裝置;及用于定位既在所述直線上又在二維條形碼符號(hào)邊緣的點(diǎn)的裝置。
      35.如權(quán)利要求27的裝置,其中的核實(shí)裝置包括用于檢查二維條形碼符號(hào)是否構(gòu)成一個(gè)具有符合一第一預(yù)先限定可接受條件的要求的形狀的矩形的裝置。
      36.如權(quán)利要求35的裝置,其中的檢查裝置包括用于連接所述控制點(diǎn)以構(gòu)成一矩形的裝置;用于計(jì)算所述矩形各邊斜率的裝置;及用于比較在所述矩形各角相交線的斜率的裝置;其中,當(dāng)在所述矩形各角的各所述比較的結(jié)果小于一第二預(yù)定閾值時(shí),符號(hào)具有可接受的矩形形狀。
      37.如權(quán)利要求25的裝置,其中的檢測(cè)裝置包括用于在符號(hào)的頂部和底部邊緣確定一控制線的裝置;用于在所述控制線附近的兩側(cè)形成第一和第二鄰線的裝置;用于在所述各鄰線上搜索開始和結(jié)束碼字的裝置;及用于當(dāng)各所述控制線未能滿足一第二預(yù)先限定條件時(shí)確定符號(hào)有缺陷的裝置。
      38.如權(quán)利要求37的裝置,其中的第二預(yù)先限定條件包括所述第一鄰線具有開始和結(jié)束碼字兩者而所述第二鄰線不具有開始和結(jié)束碼字。
      39.如權(quán)利要求37的裝置,其中的修正裝置對(duì)一條檢測(cè)到的控制線修正而另一條控制線為一有效控制線,該修正裝置包括用于調(diào)整該檢測(cè)到的控制線以使之與該有效控制線平行且包含所述控制點(diǎn)之一。
      40.如權(quán)利要求39的裝置,還包括用于確認(rèn)調(diào)整后的控制線的裝置,所述確認(rèn)裝置包括用于形成兩條鄰近且于所述調(diào)整后控制線兩側(cè)的鄰線的裝置;用于在所述各鄰線上搜索所述開始和結(jié)束碼字之一的裝置;及用于通過檢驗(yàn)所述調(diào)整后的控制線是否滿足其一條鄰線具有開始或結(jié)束碼字之一而另一條鄰線不具有開始或結(jié)束碼字的條件而確定對(duì)所述檢測(cè)到的控制線的有效修正的裝置。
      41.如權(quán)利要求24的裝置,其中的直線確定裝置包括用于建立再掃描開始和停止線的裝置;用于在所述再掃描開始和再掃描停止線上分別選擇再掃描頭點(diǎn)和對(duì)應(yīng)的再掃描尾點(diǎn)的裝置;用于取出一對(duì)頭和對(duì)應(yīng)的尾點(diǎn)并建立一條連接該二點(diǎn)的直線的裝置。
      42.如權(quán)利要求41的裝置,其中的掃描裝置包括用于計(jì)算在所述的連接頭和尾點(diǎn)的直線上的相鄰象素間的灰色電平差值的裝置;用于尋找所計(jì)算差值中極值的裝置;用于將各極值與一第三預(yù)定閾值比較的裝置;用于當(dāng)該比較結(jié)果大于所述第三閾值時(shí)確定該極值點(diǎn)為一邊緣的裝置;用于計(jì)算相鄰邊緣間距離的裝置。
      43.如權(quán)利要求41的裝置,其中的掃描裝置進(jìn)一步包括用于通過減少頭和尾對(duì)的數(shù)目?jī)?yōu)化在掃描裝置中的圖象數(shù)據(jù)的掃描以減少掃描時(shí)間和冗余的裝置。
      44.如權(quán)利要求24的裝置,其中的直線確定裝置包括用于限定一具有在所述二維條形碼符號(hào)各行的中部的起點(diǎn)和終點(diǎn)的區(qū)間并形成連接該二端點(diǎn)的直線的裝置;用于將所限定的區(qū)間劃分為多個(gè)預(yù)定的單位子區(qū)間的裝置;及用于近似模寬以對(duì)應(yīng)于一最接近的單位子區(qū)間的裝置。
      45.如權(quán)利要求44的裝置,其中的掃描裝置包括用于對(duì)各模區(qū)間的灰色電平值求和的裝置;用于將該和與一第四預(yù)定閾值比較的裝置;及用于確定對(duì)應(yīng)該比較結(jié)果確定該模為多個(gè)預(yù)選限定值之一的裝置。
      46.如權(quán)利要求24的裝置,進(jìn)一步包括用于檢測(cè)和修正由于符號(hào)的開始或結(jié)束碼字之一的破損的損壞的裝置。
      全文摘要
      一種用于利用CCD攝象機(jī)或CMD攝象機(jī)解碼二維條形碼符號(hào)的方法及裝置。該CCD/CMD攝象機(jī)攝取符號(hào)的圖象且該圖象被轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)于存儲(chǔ)器中。該二維條形碼符號(hào)的位置和方向被確定并核實(shí)。符號(hào)上的缺陷被檢測(cè)和修正。符號(hào)進(jìn)而被掃描以讀取該二維條形碼符號(hào)上的碼字。
      文檔編號(hào)G06K7/10GK1076798SQ9310256
      公開日1993年9月29日 申請(qǐng)日期1993年3月16日 優(yōu)先權(quán)日1992年3月16日
      發(fā)明者斯蒂芬·J·謝爾哈默, 陳明華, 阿爾曼·尼克薩德, 鮑里斯·邁特里斯基 申請(qǐng)人:歐林巴斯光學(xué)工業(yè)股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1