宋昀岑 , 趙 津 ,2, 陳 偉 ,2, 葉玉堂
(1.電子科技大學(xué) 現(xiàn)代光電測(cè)控及儀器實(shí)驗(yàn)室(摩米實(shí)驗(yàn)室),四川 成都 610054;2.成都術(shù)有科技有限公司 四川 成都 610054)
隨著現(xiàn)代科技的高速發(fā)展,一些高新工業(yè)生產(chǎn)領(lǐng)域因?yàn)樽x取效率較慢、讀取區(qū)域小、人力消耗大等問(wèn)題,無(wú)法采用激光條碼掃描儀,必須采用基于圖像的高速智能相機(jī)條碼解讀方案。而該方案的關(guān)鍵就是如何解決快速和全方位定位的問(wèn)題。
高速智能相機(jī)作為一種功能強(qiáng)大性價(jià)比高的新興視覺(jué)設(shè)備,在高新工業(yè)生產(chǎn)中應(yīng)用范圍日益廣泛。高速智能相機(jī)內(nèi)置DSP(Digital Signal Processer)完成數(shù)據(jù)處理操作,其靈巧的體積更便于安裝和與其他設(shè)備結(jié)合工作,且硬件成本大幅降低。又因?yàn)闂l碼技術(shù)在工業(yè)生產(chǎn)線的廣泛應(yīng)用,高新生產(chǎn)領(lǐng)域?qū)Ω咚僦悄芟鄼C(jī)條碼解讀方案的需求日益強(qiáng)烈。然而,實(shí)際應(yīng)用中條碼圖像往往和復(fù)雜背景結(jié)合一起,很多時(shí)候還會(huì)出現(xiàn)條碼傾斜、破損的情況,由此造成的條碼定位失敗不但影響智能相機(jī)條碼讀取效率,還會(huì)導(dǎo)致讀碼失敗給生產(chǎn)線造成不可預(yù)知的后果。 因此,需要提出一種能自適應(yīng)條碼定位,還能保證在智能相機(jī)能高效運(yùn)轉(zhuǎn)的新方法。而所謂的“自適應(yīng)”即是能自動(dòng)適應(yīng)復(fù)雜背景、傾角變化、條碼缺損測(cè)試條件的變化。
對(duì)于常見(jiàn)的在PC(personal computer)端完成的條碼定位算法,國(guó)內(nèi)外很多學(xué)者都從事過(guò)這方面的研究。Gallo O[1]提出基于條碼區(qū)域輪廓的定位算法,這類方法效率比較高但是無(wú)法應(yīng)對(duì)條碼缺損的情況;另外,很多文獻(xiàn)[2-7]提出了基于空域中條碼圖片的紋理分析,分別根據(jù)子區(qū)域的對(duì)比度、方向邊緣強(qiáng)度、線性尺度、梯度特征和角點(diǎn)特征等多種特征定位條碼區(qū)域,這類方法對(duì)圖片的適應(yīng)力較強(qiáng),但在智能相機(jī)上不能實(shí)現(xiàn)數(shù)據(jù)的連續(xù)讀取,降低了圖片的讀取和處理效率,不適用于內(nèi)存和緩存容量都非常小的智能相機(jī)。
文中提出一種應(yīng)用于高速智能相機(jī)一維條碼的自適應(yīng)[8]快速定位算法。通過(guò)基于DSP的快速區(qū)域分析算法得到圖片中各個(gè)聯(lián)通區(qū)域及其區(qū)域特征,由條碼模塊篩選、排除復(fù)雜背景得到條碼的大致區(qū)域,最后進(jìn)行條碼區(qū)域掃描定位,修補(bǔ)條碼破損區(qū)域找到精確的條碼區(qū)域邊界點(diǎn)。本文算法應(yīng)用于高速智能相機(jī)的一維條碼解讀模塊中,解決了復(fù)雜背景中傾斜條碼、破損條碼的快速定位問(wèn)題。另外,算法中將基于DSP的快速區(qū)域分析算法應(yīng)用于高速智能相機(jī),在國(guó)內(nèi)還未見(jiàn)報(bào)道。
由于DSP本身效率限制,為壓縮處理時(shí)間,本文使用基于DSP的快速區(qū)域分析算法進(jìn)行圖像聯(lián)通區(qū)域分析。
傳統(tǒng)處理方式要先將圖像轉(zhuǎn)為二值化圖像,游程算法通過(guò)判斷二值化圖像灰度值是否為零進(jìn)行區(qū)域分析。本文算法,通過(guò)直接判斷圖像灰度值與已知二值化閾值的關(guān)系進(jìn)行區(qū)域分析,省去一次對(duì)全圖的讀取,至少能節(jié)省30%的連通區(qū)域分析處理時(shí)間。另外,不同于其他的條碼定位算法,本文算法連續(xù)讀取圖像信息,為后續(xù)的優(yōu)化處理提供便利。
傳統(tǒng)游程算法處理結(jié)果是得到每個(gè)連通區(qū)域的點(diǎn),對(duì)連通區(qū)域分析是通過(guò)對(duì)每個(gè)區(qū)域中的點(diǎn)進(jìn)行統(tǒng)計(jì)計(jì)算處理,乘除運(yùn)算以及浮點(diǎn)值運(yùn)算多、運(yùn)算量大。而DSP進(jìn)行乘除運(yùn)算和浮點(diǎn)值運(yùn)算消耗時(shí)間較長(zhǎng),不適用上述方法。本文算法直接利用游程算法中的游程進(jìn)行統(tǒng)計(jì)計(jì)算,而不用點(diǎn)的信息計(jì)算,從而免去許多不必要的步驟,利用公式減少乘除運(yùn)算和浮點(diǎn)值運(yùn)算,具體算法改進(jìn)如下所述。
利用游程算法順序讀取全圖得到所有游程數(shù)量num;游程行號(hào)數(shù)組 r,r[i](i=1,2…)即是第 i個(gè)游程的列號(hào);游程起始列號(hào)數(shù)組 cs,cs[i](i=1,2…)即是第 i個(gè)游程首行號(hào);游程終止列號(hào)數(shù)組 ce,ce[i](i=1,2…)即是第 i個(gè)游程尾行號(hào);游程區(qū)域標(biāo)記數(shù)組 l,l[i](i=1,2…)即是第 i個(gè)游程所屬的聯(lián)通區(qū)域編號(hào);假定目標(biāo)游程為黑色,背景為白色,上述部分?jǐn)?shù)據(jù)如圖1所示。由上述參數(shù)不用再次掃描整張圖片就可以得到后面算法需要的每個(gè)連通區(qū)域的形態(tài)學(xué)特征:面積、重心、長(zhǎng)軸長(zhǎng)、短軸長(zhǎng)、長(zhǎng)軸與圖像X軸的夾角。
圖1 游程及其數(shù)據(jù)表示Fig.1 Run-length code and its data representation
面積為聯(lián)通區(qū)域中點(diǎn)的個(gè)數(shù),可以通過(guò)面積特征進(jìn)行初步篩選,篩去大部分不相關(guān)區(qū)域,比如復(fù)雜背景中數(shù)量巨大的小噪點(diǎn)以及與條碼單元面積大小不一致的區(qū)域。重心是聯(lián)通區(qū)域中所有點(diǎn)的平均坐標(biāo)位置,是后面計(jì)算的中間數(shù)據(jù)。面積和重心由公式(1)~(3)計(jì)算得到,其中 s[i]為第 i個(gè)連通區(qū)域的面積,gx[i]和gy[i]代表第i個(gè)連通區(qū)域的重心位置(i=1,2,3…)。
長(zhǎng)軸長(zhǎng)和短軸長(zhǎng)是與聯(lián)通區(qū)域標(biāo)準(zhǔn)二階中心距相同的橢圓的長(zhǎng)軸長(zhǎng)和短軸長(zhǎng)。對(duì)于聯(lián)通區(qū)域是否符合條碼單元的長(zhǎng)條形即是以長(zhǎng)短軸長(zhǎng)度比例為判斷標(biāo)準(zhǔn)。計(jì)算公式如下,其中maxl[i]為第i個(gè)連通區(qū)域的長(zhǎng)軸長(zhǎng),minl[i]代表第i個(gè)連通區(qū)域的短軸長(zhǎng)(i=1、2、3…),xx[i]、xy[i]、yy[i]分別是 i點(diǎn)行號(hào)的平方、i點(diǎn)行號(hào)和列號(hào)的乘積、i點(diǎn)列號(hào)的平方,點(diǎn)由圖2所示流程圖和公式(4)~(6)得到:
圖2 數(shù)據(jù)計(jì)算流程圖Fig.2 Data and calculation flowchart
α為長(zhǎng)軸與圖像X軸的夾角,即是長(zhǎng)軸方向和圖片X軸的夾角,等同于條碼區(qū)域豎邊與圖像X軸的夾角,由公式(9)得到。一維條碼的單元是平行整齊排列,故可以根據(jù)夾角對(duì)初步篩選的聯(lián)通區(qū)域進(jìn)行分組為下一步定位做準(zhǔn)備。
為排除圖像中的復(fù)雜背景區(qū)域,減少DSP處理信息量,我們對(duì)得到的連通區(qū)域進(jìn)行篩選。由于一維條碼區(qū)域形態(tài)學(xué)特征明顯,是由數(shù)十條黑色長(zhǎng)條矩形組成,且矩形的長(zhǎng)度相等、長(zhǎng)邊相互平行。文中為區(qū)域長(zhǎng)寬比(長(zhǎng)軸長(zhǎng)和短軸長(zhǎng)的比例)、區(qū)域面積 2個(gè)特征值引入 3 個(gè)閾值 Tr、Tmins、Tmaxs, 閾值的大小決定于一維條碼類型、圖像分辨率等因素。如果某個(gè)聯(lián)通區(qū)域Ai是條碼的一個(gè)單元,那么這區(qū)域的長(zhǎng)軸短軸長(zhǎng)度、面積應(yīng)滿足條件:
經(jīng)過(guò)上述篩選,可以得到符合條碼單元形態(tài)特征的聯(lián)通區(qū)域
。
然后,將其按照長(zhǎng)軸與圖像X軸的夾角α[i]分組,即α相同的分為一組,找出其中連通區(qū)域最多的組,作為條碼元素的聯(lián)通區(qū)域組,排除復(fù)雜背景區(qū)域得到條碼大致區(qū)域以進(jìn)行下一步精確定位操作。
一維條碼是由一組規(guī)則排列的條、空單元及其對(duì)應(yīng)字符組成,用以表示一定的信息。相對(duì)背景區(qū)域,條碼區(qū)域具有明顯的形態(tài)學(xué)特征,由長(zhǎng)度相同的細(xì)長(zhǎng)條、空單元相間整齊排列,在左右邊緣都有一個(gè)靜區(qū),即規(guī)定寬度的空白區(qū)域。
根據(jù)以上特點(diǎn),從條碼單元組中選出長(zhǎng)軸長(zhǎng)最大的單元,認(rèn)為是最完整的條碼單元;選出最小的單元短軸長(zhǎng),假設(shè)為一個(gè)模塊的寬度。然后進(jìn)行掃描定位,具體算法如下所述。
1)在最長(zhǎng)單元的長(zhǎng)軸方向以重心為中心均勻取n(本文中n為5)個(gè)掃描點(diǎn)。其中第一點(diǎn)和最后一點(diǎn)是該單元長(zhǎng)軸方向上的兩端點(diǎn)。
2)從每個(gè)掃描點(diǎn)出發(fā)向垂直于單元長(zhǎng)軸的左右兩個(gè)方向進(jìn)行掃描,如圖3白色箭頭所示。
掃描遇到閾值分割處的點(diǎn)記錄下來(lái)為A,該閾值分割點(diǎn)是條碼的條、空單元邊緣點(diǎn)。在遇到下一個(gè)閾值分割點(diǎn)B時(shí),判斷AB距離,若是大于最小寬度的N倍,便停止繼續(xù)掃描并將A記錄下來(lái)為邊界點(diǎn)之一;若是小于最小寬度的N倍,將B點(diǎn)記做A點(diǎn),繼續(xù)掃描,直到找到滿足條件的邊界點(diǎn)。如果到達(dá)圖像邊界還沒(méi)找到滿足條件的點(diǎn),將掃描方向上的圖像邊界點(diǎn)上一個(gè)閾值分割點(diǎn)記錄為條碼邊界點(diǎn)。其中N的大小是表征條碼靜區(qū)與條碼最小單元寬度的比值,取決于條碼的類型。
3)在找到兩個(gè)方向共10個(gè)掃描邊界點(diǎn)以后,利用投影法分別求出兩個(gè)方向的最遠(yuǎn)點(diǎn),記為條碼區(qū)域左右兩邊的邊界點(diǎn);取最長(zhǎng)條碼模塊長(zhǎng)軸兩端的點(diǎn),記為條碼區(qū)域上下兩邊的邊界點(diǎn)。
圖3 掃描方向示意圖Fig.3 diagram of scanning direction
4)根據(jù)4個(gè)邊界點(diǎn)以及條碼模塊與X軸的夾角,可得到條碼區(qū)域4條邊界線,分別求交點(diǎn)即可得到條碼區(qū)域定位點(diǎn)。
本文選取了100幅具有各種復(fù)雜背景、條碼破損情況的一維條碼圖像進(jìn)行測(cè)試,DSP處理平臺(tái)為ADIBF 537嵌入式平臺(tái),圖像分辨率從512×512到1 024×786不等,均能正確檢測(cè)出條碼的位置,沒(méi)有出現(xiàn)漏檢和誤檢的現(xiàn)象。
圖4為其中一幅條碼區(qū)域破損圖像的定位過(guò)程與結(jié)果。 原圖為交叉 25碼,分辨率為 1024×786,取 Tr為 6,N為6,Tmins為 50,Tmaxs為 300。 (a)為原始灰度圖;(b)中灰色標(biāo)記區(qū)域?yàn)楹Y選得到的條碼單元(聯(lián)通區(qū)域);(c)中位于中間的黑色點(diǎn)為最長(zhǎng)單元上的5個(gè)掃描點(diǎn),邊界上的黑色點(diǎn)即是掃描得到的十個(gè)邊界點(diǎn);(d)中4個(gè)黑點(diǎn)為經(jīng)過(guò)篩選后得到的條碼區(qū)域4條邊上的最優(yōu)邊界點(diǎn);(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
文中對(duì)于不同分辨率的3幅圖像分別采用傳統(tǒng)游程法和改進(jìn)游程法進(jìn)行定位處理所需時(shí)間進(jìn)行了對(duì)比,其對(duì)比結(jié)果如表1所示,改進(jìn)游程法相對(duì)于傳統(tǒng)游程法的處理速度上提高了61%~68%不等。
文中對(duì)于3種分辨率的多幅圖像采用基于DSP的改進(jìn)游程法完成條碼定位,對(duì)每種分辨率的多幅圖像定位時(shí)間取平均值如表2所示,對(duì)于80萬(wàn)像素的圖片,可以達(dá)到平均66.79ms/幅的處理速度。目前還沒(méi)有DSP平臺(tái)上的一維條碼定位算法處理速度高于本文處理速度的報(bào)道。
表1 傳統(tǒng)游程區(qū)域分析法與基于DSP的快速區(qū)域分析算法處理時(shí)間對(duì)比Tab.1 Comparison of execution time between traditional runlength code region analysism ethod and DSP-based quick region analysism ethod
表2 基于DSP的改進(jìn)游程法的條碼定位處理時(shí)間Tab.2 Execution time of DSP-based imp roved run-length codem ethod
文中根據(jù)DSP運(yùn)算的特點(diǎn),利用一維條碼的形態(tài)學(xué)特征,提出一種基于DSP的快速區(qū)域分析算法,能夠快速而有效定位出復(fù)雜背景中傾斜和殘缺的條碼區(qū)域。有別于傳統(tǒng)算法,本文算法全過(guò)程不使用二值化圖像,減少至少一次DSP對(duì)全圖的計(jì)算與存儲(chǔ),唯一一次DSP進(jìn)行的全圖操作為順序讀取,有利于DSP后期優(yōu)化處理,大大提升了處理速度。在對(duì)大量圖片進(jìn)行測(cè)試的結(jié)果表明,該方法可以全部正確地提取出復(fù)雜背景和傾斜、缺損情況下的條碼區(qū)域,對(duì)于80萬(wàn)像素的圖片可以達(dá)到平均66ms/幅的處理速度。康耐視公司產(chǎn)品對(duì)于48萬(wàn)像素的圖片在同等情況下的處理速度最快為45ms/幅。該方法對(duì)于工業(yè)生產(chǎn)線上在線嵌入式平臺(tái)條碼檢測(cè)具有廣泛的實(shí)際應(yīng)用價(jià)值。
[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ù)雜背景中條碼檢測(cè)定位技術(shù)的研究[J].南京航空航天大學(xué)學(xué)報(bào),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]趙志偉,陳學(xué)有,潘瓊.采用特征值法和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.