宋昀岑 , 趙 津 ,2, 陳 偉 ,2, 葉玉堂
(1.電子科技大學 現(xiàn)代光電測控及儀器實驗室(摩米實驗室),四川 成都 610054;2.成都術(shù)有科技有限公司 四川 成都 610054)
隨著現(xiàn)代科技的高速發(fā)展,一些高新工業(yè)生產(chǎn)領(lǐng)域因為讀取效率較慢、讀取區(qū)域小、人力消耗大等問題,無法采用激光條碼掃描儀,必須采用基于圖像的高速智能相機條碼解讀方案。而該方案的關(guān)鍵就是如何解決快速和全方位定位的問題。
高速智能相機作為一種功能強大性價比高的新興視覺設(shè)備,在高新工業(yè)生產(chǎn)中應(yīng)用范圍日益廣泛。高速智能相機內(nèi)置DSP(Digital Signal Processer)完成數(shù)據(jù)處理操作,其靈巧的體積更便于安裝和與其他設(shè)備結(jié)合工作,且硬件成本大幅降低。又因為條碼技術(shù)在工業(yè)生產(chǎn)線的廣泛應(yīng)用,高新生產(chǎn)領(lǐng)域?qū)Ω咚僦悄芟鄼C條碼解讀方案的需求日益強烈。然而,實際應(yīng)用中條碼圖像往往和復(fù)雜背景結(jié)合一起,很多時候還會出現(xiàn)條碼傾斜、破損的情況,由此造成的條碼定位失敗不但影響智能相機條碼讀取效率,還會導致讀碼失敗給生產(chǎn)線造成不可預(yù)知的后果。 因此,需要提出一種能自適應(yīng)條碼定位,還能保證在智能相機能高效運轉(zhuǎn)的新方法。而所謂的“自適應(yīng)”即是能自動適應(yīng)復(fù)雜背景、傾角變化、條碼缺損測試條件的變化。
對于常見的在PC(personal computer)端完成的條碼定位算法,國內(nèi)外很多學者都從事過這方面的研究。Gallo O[1]提出基于條碼區(qū)域輪廓的定位算法,這類方法效率比較高但是無法應(yīng)對條碼缺損的情況;另外,很多文獻[2-7]提出了基于空域中條碼圖片的紋理分析,分別根據(jù)子區(qū)域的對比度、方向邊緣強度、線性尺度、梯度特征和角點特征等多種特征定位條碼區(qū)域,這類方法對圖片的適應(yīng)力較強,但在智能相機上不能實現(xiàn)數(shù)據(jù)的連續(xù)讀取,降低了圖片的讀取和處理效率,不適用于內(nèi)存和緩存容量都非常小的智能相機。
文中提出一種應(yīng)用于高速智能相機一維條碼的自適應(yīng)[8]快速定位算法。通過基于DSP的快速區(qū)域分析算法得到圖片中各個聯(lián)通區(qū)域及其區(qū)域特征,由條碼模塊篩選、排除復(fù)雜背景得到條碼的大致區(qū)域,最后進行條碼區(qū)域掃描定位,修補條碼破損區(qū)域找到精確的條碼區(qū)域邊界點。本文算法應(yīng)用于高速智能相機的一維條碼解讀模塊中,解決了復(fù)雜背景中傾斜條碼、破損條碼的快速定位問題。另外,算法中將基于DSP的快速區(qū)域分析算法應(yīng)用于高速智能相機,在國內(nèi)還未見報道。
由于DSP本身效率限制,為壓縮處理時間,本文使用基于DSP的快速區(qū)域分析算法進行圖像聯(lián)通區(qū)域分析。
傳統(tǒng)處理方式要先將圖像轉(zhuǎn)為二值化圖像,游程算法通過判斷二值化圖像灰度值是否為零進行區(qū)域分析。本文算法,通過直接判斷圖像灰度值與已知二值化閾值的關(guān)系進行區(qū)域分析,省去一次對全圖的讀取,至少能節(jié)省30%的連通區(qū)域分析處理時間。另外,不同于其他的條碼定位算法,本文算法連續(xù)讀取圖像信息,為后續(xù)的優(yōu)化處理提供便利。
傳統(tǒng)游程算法處理結(jié)果是得到每個連通區(qū)域的點,對連通區(qū)域分析是通過對每個區(qū)域中的點進行統(tǒng)計計算處理,乘除運算以及浮點值運算多、運算量大。而DSP進行乘除運算和浮點值運算消耗時間較長,不適用上述方法。本文算法直接利用游程算法中的游程進行統(tǒng)計計算,而不用點的信息計算,從而免去許多不必要的步驟,利用公式減少乘除運算和浮點值運算,具體算法改進如下所述。
利用游程算法順序讀取全圖得到所有游程數(shù)量num;游程行號數(shù)組 r,r[i](i=1,2…)即是第 i個游程的列號;游程起始列號數(shù)組 cs,cs[i](i=1,2…)即是第 i個游程首行號;游程終止列號數(shù)組 ce,ce[i](i=1,2…)即是第 i個游程尾行號;游程區(qū)域標記數(shù)組 l,l[i](i=1,2…)即是第 i個游程所屬的聯(lián)通區(qū)域編號;假定目標游程為黑色,背景為白色,上述部分數(shù)據(jù)如圖1所示。由上述參數(shù)不用再次掃描整張圖片就可以得到后面算法需要的每個連通區(qū)域的形態(tài)學特征:面積、重心、長軸長、短軸長、長軸與圖像X軸的夾角。
圖1 游程及其數(shù)據(jù)表示Fig.1 Run-length code and its data representation
面積為聯(lián)通區(qū)域中點的個數(shù),可以通過面積特征進行初步篩選,篩去大部分不相關(guān)區(qū)域,比如復(fù)雜背景中數(shù)量巨大的小噪點以及與條碼單元面積大小不一致的區(qū)域。重心是聯(lián)通區(qū)域中所有點的平均坐標位置,是后面計算的中間數(shù)據(jù)。面積和重心由公式(1)~(3)計算得到,其中 s[i]為第 i個連通區(qū)域的面積,gx[i]和gy[i]代表第i個連通區(qū)域的重心位置(i=1,2,3…)。
長軸長和短軸長是與聯(lián)通區(qū)域標準二階中心距相同的橢圓的長軸長和短軸長。對于聯(lián)通區(qū)域是否符合條碼單元的長條形即是以長短軸長度比例為判斷標準。計算公式如下,其中maxl[i]為第i個連通區(qū)域的長軸長,minl[i]代表第i個連通區(qū)域的短軸長(i=1、2、3…),xx[i]、xy[i]、yy[i]分別是 i點行號的平方、i點行號和列號的乘積、i點列號的平方,點由圖2所示流程圖和公式(4)~(6)得到:
圖2 數(shù)據(jù)計算流程圖Fig.2 Data and calculation flowchart
α為長軸與圖像X軸的夾角,即是長軸方向和圖片X軸的夾角,等同于條碼區(qū)域豎邊與圖像X軸的夾角,由公式(9)得到。一維條碼的單元是平行整齊排列,故可以根據(jù)夾角對初步篩選的聯(lián)通區(qū)域進行分組為下一步定位做準備。
為排除圖像中的復(fù)雜背景區(qū)域,減少DSP處理信息量,我們對得到的連通區(qū)域進行篩選。由于一維條碼區(qū)域形態(tài)學特征明顯,是由數(shù)十條黑色長條矩形組成,且矩形的長度相等、長邊相互平行。文中為區(qū)域長寬比(長軸長和短軸長的比例)、區(qū)域面積 2個特征值引入 3 個閾值 Tr、Tmins、Tmaxs, 閾值的大小決定于一維條碼類型、圖像分辨率等因素。如果某個聯(lián)通區(qū)域Ai是條碼的一個單元,那么這區(qū)域的長軸短軸長度、面積應(yīng)滿足條件:
經(jīng)過上述篩選,可以得到符合條碼單元形態(tài)特征的聯(lián)通區(qū)域
。
然后,將其按照長軸與圖像X軸的夾角α[i]分組,即α相同的分為一組,找出其中連通區(qū)域最多的組,作為條碼元素的聯(lián)通區(qū)域組,排除復(fù)雜背景區(qū)域得到條碼大致區(qū)域以進行下一步精確定位操作。
一維條碼是由一組規(guī)則排列的條、空單元及其對應(yīng)字符組成,用以表示一定的信息。相對背景區(qū)域,條碼區(qū)域具有明顯的形態(tài)學特征,由長度相同的細長條、空單元相間整齊排列,在左右邊緣都有一個靜區(qū),即規(guī)定寬度的空白區(qū)域。
根據(jù)以上特點,從條碼單元組中選出長軸長最大的單元,認為是最完整的條碼單元;選出最小的單元短軸長,假設(shè)為一個模塊的寬度。然后進行掃描定位,具體算法如下所述。
1)在最長單元的長軸方向以重心為中心均勻取n(本文中n為5)個掃描點。其中第一點和最后一點是該單元長軸方向上的兩端點。
2)從每個掃描點出發(fā)向垂直于單元長軸的左右兩個方向進行掃描,如圖3白色箭頭所示。
掃描遇到閾值分割處的點記錄下來為A,該閾值分割點是條碼的條、空單元邊緣點。在遇到下一個閾值分割點B時,判斷AB距離,若是大于最小寬度的N倍,便停止繼續(xù)掃描并將A記錄下來為邊界點之一;若是小于最小寬度的N倍,將B點記做A點,繼續(xù)掃描,直到找到滿足條件的邊界點。如果到達圖像邊界還沒找到滿足條件的點,將掃描方向上的圖像邊界點上一個閾值分割點記錄為條碼邊界點。其中N的大小是表征條碼靜區(qū)與條碼最小單元寬度的比值,取決于條碼的類型。
3)在找到兩個方向共10個掃描邊界點以后,利用投影法分別求出兩個方向的最遠點,記為條碼區(qū)域左右兩邊的邊界點;取最長條碼模塊長軸兩端的點,記為條碼區(qū)域上下兩邊的邊界點。
圖3 掃描方向示意圖Fig.3 diagram of scanning direction
4)根據(jù)4個邊界點以及條碼模塊與X軸的夾角,可得到條碼區(qū)域4條邊界線,分別求交點即可得到條碼區(qū)域定位點。
本文選取了100幅具有各種復(fù)雜背景、條碼破損情況的一維條碼圖像進行測試,DSP處理平臺為ADIBF 537嵌入式平臺,圖像分辨率從512×512到1 024×786不等,均能正確檢測出條碼的位置,沒有出現(xiàn)漏檢和誤檢的現(xiàn)象。
圖4為其中一幅條碼區(qū)域破損圖像的定位過程與結(jié)果。 原圖為交叉 25碼,分辨率為 1024×786,取 Tr為 6,N為6,Tmins為 50,Tmaxs為 300。 (a)為原始灰度圖;(b)中灰色標記區(qū)域為篩選得到的條碼單元(聯(lián)通區(qū)域);(c)中位于中間的黑色點為最長單元上的5個掃描點,邊界上的黑色點即是掃描得到的十個邊界點;(d)中4個黑點為經(jīng)過篩選后得到的條碼區(qū)域4條邊上的最優(yōu)邊界點;(e)為條碼區(qū)域最終定位結(jié)果圖。
圖4 缺陷條碼定位Fig.4 Localization of defective barcode
圖5為其中一幅復(fù)雜背景下的條碼圖像定位結(jié)果。原圖中除了傾斜條碼,還有表格和大量文字。由圖5(b)黑色線條框出的定位結(jié)果可以看出,本文算法可以很好的定位出復(fù)雜背景下的條碼區(qū)域。
圖5 復(fù)雜背景下條碼定位Fig.5 Barcode localization in complex background
文中對于不同分辨率的3幅圖像分別采用傳統(tǒng)游程法和改進游程法進行定位處理所需時間進行了對比,其對比結(jié)果如表1所示,改進游程法相對于傳統(tǒng)游程法的處理速度上提高了61%~68%不等。
文中對于3種分辨率的多幅圖像采用基于DSP的改進游程法完成條碼定位,對每種分辨率的多幅圖像定位時間取平均值如表2所示,對于80萬像素的圖片,可以達到平均66.79ms/幅的處理速度。目前還沒有DSP平臺上的一維條碼定位算法處理速度高于本文處理速度的報道。
表1 傳統(tǒng)游程區(qū)域分析法與基于DSP的快速區(qū)域分析算法處理時間對比Tab.1 Comparison of execution time between traditional runlength code region analysism ethod and DSP-based quick region analysism ethod
表2 基于DSP的改進游程法的條碼定位處理時間Tab.2 Execution time of DSP-based imp roved run-length codem ethod
文中根據(jù)DSP運算的特點,利用一維條碼的形態(tài)學特征,提出一種基于DSP的快速區(qū)域分析算法,能夠快速而有效定位出復(fù)雜背景中傾斜和殘缺的條碼區(qū)域。有別于傳統(tǒng)算法,本文算法全過程不使用二值化圖像,減少至少一次DSP對全圖的計算與存儲,唯一一次DSP進行的全圖操作為順序讀取,有利于DSP后期優(yōu)化處理,大大提升了處理速度。在對大量圖片進行測試的結(jié)果表明,該方法可以全部正確地提取出復(fù)雜背景和傾斜、缺損情況下的條碼區(qū)域,對于80萬像素的圖片可以達到平均66ms/幅的處理速度。康耐視公司產(chǎn)品對于48萬像素的圖片在同等情況下的處理速度最快為45ms/幅。該方法對于工業(yè)生產(chǎn)線上在線嵌入式平臺條碼檢測具有廣泛的實際應(yīng)用價值。
[1]GALLO O,MANDUCHI R.Reading 1d barcodes with mobile phones using deformable templates [J].Pattern Analysis and Machine Intelligence, IEEE Transactions on,2011, 33(9):1834-1843.
[2]WU Xinsheng, QIAO Lianzhi, DENG Jun.A New Method for Bar Code Localization and Recognition[C]//Image and Signal Processing, 2009. CISP'09. 2nd International Congress on.IEEE,2009:1-6.
[3]劉寧鐘.復(fù)雜背景中條碼檢測定位技術(shù)的研究[J].南京航空航天大學學報,2005, 37(1):65-69.LIU Ning-zhong.Detection and localization of bar code in complicated background[J].Journal of Nanjing University of Aeronautics&Astronautics,2005,37(1):65-69.
[4]GALLO O,MANDUCHI R.Reading challenging barcodes with cameras[C]//Applications of Computer Vision (WACV),2009Workshop on.IEEE,2009:1-6.
[5] Chen Yang, Yang Zhaoxuan, Bai Zhuofu, et al.Simultaneous real-time segmentation of diversified barcode symbols in complex background[C]//Intelligent Networks and Intelligent Systems,2008.ICINIS'08.First International Conference on.IEEE,2008:527-530.
[6]KUTIYANAWALA A,QIXiaojun,Tian Jiandong.A simple and efficient approach to barcode localization [C]//Information, Communications and Signal Processing, 2009.ICICS 2009.7th International Conference on.IEEE,2009:1-5.
[7]WACHENFELD S, TERLUNEN S, JIANG Xiaoyi.Robust 1-D barcode recognition on camera phones and mobile product information display[M].Mobile Multimedia Processing.Springer Berlin Heidelberg,2010:53-69.
[8]趙志偉,陳學有,潘瓊.采用特征值法和Prony法相結(jié)合的PSS自適應(yīng)控制[J].陜西電力,2012(6):49-52,62.ZHAO Zhi-wei,CHEN Xue-you,PANQiong.Adaptive control of PSS based on eigen value analysis and prony analysis[J].Shaanxi Electric Power,2012(6):49-52,62.