LabVIEW條形碼識別(實(shí)戰篇—5)
條形碼(Barcode)是將寬度不等的多個(gè)黑條和空白,按照一定的編碼規則排列,用以表達一組信息的圖形標識符。常見(jiàn)的條形碼是由反射率相差很大的黑條(簡(jiǎn)稱(chēng)條)和白條(簡(jiǎn)稱(chēng)空)排成的平行線(xiàn)圖案。條形碼可以標出物品的生產(chǎn)國、制造廠(chǎng)家、商品名稱(chēng)等許多信息,因而在商品流通、圖書(shū)管理、郵政管理、****系統等許多領(lǐng)域都得到廣泛的應用。
條形碼可分一維和二維兩大類(lèi)。一維碼將寬度不等的多個(gè)黑條和空白按照一定的編碼規則排列,用來(lái)表示一組信息。常見(jiàn)的一維碼是由反射率相差很大的黑條和白條排成的平行線(xiàn)圖案,如下所示:
一維碼識別效果視頻如下所示:
二維碼包括堆疊式條碼和矩陣式條碼兩大類(lèi),堆疊式條碼通過(guò)對多個(gè)一維碼堆疊構成,矩陣式條碼則使用黑白矩形圖案表示數據,如下所示:

二維碼識別效果視頻如下所示:
條碼具有成本低、靈活易用、使用效率高和可靠性強等優(yōu)點(diǎn)。條碼制作僅僅需要印刷,識別設備的構造也很簡(jiǎn)單,與其他自動(dòng)化識別技術(shù)相比,成本相當低廉。條碼符號可以手工鍵盤(pán)輸入,條碼識別設備操作簡(jiǎn)易,也可以和有關(guān)設備組成識別系統實(shí)現自動(dòng)化識別,或者和其他控制設備聯(lián)系起來(lái)實(shí)現整個(gè)系統的自動(dòng)化管理。條碼的讀取準確率遠遠超過(guò)人工方式,平均每15 000個(gè)字符才會(huì )出現一個(gè)錯誤。此外,條碼的讀取速度很快相當于每秒40個(gè)字符。
1、一維碼識別
一維碼將多個(gè)寬度不同的豎直黑色條紋(Bar)和空白(Space)按一定的規則排列來(lái)表示信息,下圖顯示了一維碼的結構示意圖:

其中,條碼的空白區在左、右兩端,一般來(lái)說(shuō)它必須是窄條寬度的10倍以上,如果邊緣寬度不夠,條碼讀取器就無(wú)法對其數據進(jìn)行掃描。起止符是用于表示數據開(kāi)始和結束的字符,它根據條碼類(lèi)型不同而不同。有些采用A、B和D,有些則采用*。數據部分包括信息字符的條碼圖案,信息字符可以是數字、字母或其他特殊字符。校驗位用于和讀取值中計算得到的數據進(jìn)行比較,以校驗讀取值是否有錯,一般直接附在數據信息后。一維碼可由兩種或多種寬度的條紋和空白構成,編碼時(shí)條紋和空白區域可以被離散或連續使用。
Nl Vision為一維碼的讀取提供了專(zhuān)門(mén)的函數IMAQ Read Barcode 2,它封裝了對條碼的復雜解碼過(guò)程。該函數位于LabVIEW的視覺(jué)與運動(dòng)→Machine Vision→Instrument Readers函數選板中,如下圖所示:

函數說(shuō)明及使用可參見(jiàn)幫助手冊:

函數IMAQ Read Barcode 2可支持下表列出的各種類(lèi)型的條碼。

由于交錯式Code25碼、Code39碼和Code93碼并無(wú)校驗位,因此在讀取這幾類(lèi)條碼時(shí),可以關(guān)閉該函數的校驗參數。此外,Pharmacode較為簡(jiǎn)單,其他條碼極容易被誤讀為此類(lèi)條碼,因此在使用IMAQ Read Barcode 2函數讀取其他類(lèi)型的條碼時(shí),一般要禁用它對Pharmacode的支持功能。
條碼圖像的分辨率、亮度漂移、條紋的灰度一致性和噪聲是影響IMAQ Read Barcode2讀取結果的幾個(gè)主要因素。條碼圖像的分辨率由條紋和空白區域的最小寬度來(lái)決定,一般來(lái)說(shuō)它們的寬度不得少于3個(gè)像素才能被正確讀取。圖像的亮度漂移太大時(shí)也會(huì )影響讀取結果的正確性。
通過(guò)一個(gè)一維碼讀取實(shí)例,了解一維碼的應用方法,程序設計思路如下所示:
While循環(huán)中的代碼會(huì )逐一讀取保存在Barcode文件夾中的各個(gè)圖像,然后使用IMAQ Read Barcode 2從圖像中搜索各類(lèi)條碼的位置,并對它們進(jìn)行解碼;
讀取過(guò)程結束后,For循環(huán)中的代碼會(huì )對條碼的結果進(jìn)行解析,并將條碼的邊界矩形、條碼信息和類(lèi)型以疊加圖層或數組的方式顯示到界面上。
程序實(shí)現如下所示:

程序運行效果如下所示:

2、二維碼識別
二維碼是對堆疊式條碼和矩陣式條碼的統稱(chēng)。堆疊式條碼通過(guò)堆疊多個(gè)一維條碼構成,矩陣式條碼則在一個(gè)矩形空間內通過(guò)黑白圖案的不同分布對數據進(jìn)行編碼,如下圖所示:

一維碼僅使用一個(gè)方向上的條紋寬度代表數據,通常最多包含30個(gè)字符。二維碼在水平和垂直方向上都包含數據,最多可包含3000個(gè)字符。當數據量相同時(shí),二維碼的尺寸要比一維碼小很多,因此它可印刷在空間有限的電子產(chǎn)品和其他小部件上。此外,矩陣式二維碼還引入了位置定位和容錯機制,不僅可使用方框、L形框或專(zhuān)門(mén)的定位圖案可靠地探測條碼位置,還能在條碼有損的情況下(如有污漬)正確還原信息。
下圖顯示了QR碼的典型結構示意圖,可以看出QR碼是一種典型的矩陣式二維碼主要由以下幾個(gè)部分構成:
空白區域(Quiet Zone);
3個(gè)定位標識(Finder Pattern) ;
對準標志(Alignment Pattern);
定時(shí)標識(Timing Pattern) ;
黑色和白色數據單元(Data Cell)和糾錯碼(Error Check and Correction Cell);
用于解碼的格式信息(Formatting Information)等。

QR碼是矩陣式二維碼的一種,其尺寸可包含21×21到177×177個(gè)數據單元。由于其右下角有對準標志,其他3個(gè)角上有定位標志,因此可以從QR碼的任一方向對其進(jìn)行快速讀取。QR碼內置了錯誤檢查和糾正(ECC)機制,它可以通過(guò)標準Reed-Solomon方案對污點(diǎn)、脫墨和數據丟失等條碼損壞按照4種不同糾錯級別(L、M、Q、H)進(jìn)行恢復如下圖所示。數據的恢復率隨著(zhù)所選的糾錯級別不同各異(L級為7%、M級為15%、Q級為25%、H級為30%)。

通過(guò)一個(gè)QR碼讀取的實(shí)例,了解二維碼的應用方法,程序設計思路如下所示:
程序代碼結構比較簡(jiǎn)單,在將包含QR碼的圖像讀入內存后,就直接調用位于LabVIEW的視覺(jué)與運動(dòng)→Machine Vision→Instrument Readers函數選板中的IMAQ Read QR Code函數,從圖像中搜索單個(gè)或多個(gè)QR碼并對其進(jìn)行解碼。
程序還通過(guò)記錄讀取前后的時(shí)間值來(lái)計算QR碼搜索和讀取過(guò)程的耗時(shí)。
最后在圖像中用無(wú)損圖層標出QR碼所在位置,并顯示圖像。
程序實(shí)現如下所示:

程序運行效果如下所示:

*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。
LCD顯示屏相關(guān)文章:lcd顯示屏原理
pic相關(guān)文章:pic是什么
電荷放大器相關(guān)文章:電荷放大器原理 lcd相關(guān)文章:lcd原理