羅子棋 楊穎 戴毅欽 胡健 劉坤銘 吳昊榮
關(guān)鍵詞:藥品;條形碼;Halcon;圖像預(yù)處理;識(shí)別
1引言
藥品安全問題一直都是社會(huì)民眾關(guān)注的核心問題。一維條形碼技術(shù)能夠?qū)崿F(xiàn)計(jì)算機(jī)對(duì)藥品信息的快速便捷監(jiān)控,讓購買藥品的患者能夠清晰地對(duì)藥品信息進(jìn)行溯源,且條形碼的誤碼率一般低至百萬分之一左右,安全可靠[1]。推行藥盒條形碼識(shí)別系統(tǒng),可以極大地保障藥品的流通安全性,也方便醫(yī)院、藥店對(duì)藥品的庫存管理和來源追溯。隨著智能制造技術(shù)飛速發(fā)展,信息的獲取方式、傳播方式、處理方式和管理方式等都有了極大的進(jìn)步,條形碼技術(shù)也很快應(yīng)用到醫(yī)療藥品行業(yè)中[2]。我國國家食品藥品監(jiān)督管理總局也規(guī)定列入的重點(diǎn)藥品必須有“藥品電子監(jiān)管碼”才能銷售。德國MVtec公司研發(fā)的Halcon軟件是一款商用視覺處理軟件,其包含1000多個(gè)圖像處理算子,功能強(qiáng)大[3]。使用Halcon內(nèi)置的一維條形碼圖像識(shí)別算子對(duì)藥盒條形碼圖像進(jìn)行處理,其程序開發(fā)速度快,對(duì)藥盒條形碼的識(shí)別效果好,很適合應(yīng)用到藥盒條形碼圖像識(shí)別系統(tǒng)。
2基于Halcon軟件的藥盒條形碼圖像預(yù)處理
2.1藥盒條形碼圖像采集
我國藥品的藥盒上規(guī)定必須含有EAN-13碼和Code-128碼兩種不同類型的條形碼,分別是藥品的零售商品碼和中國藥品電子監(jiān)管碼。藥品的信息系統(tǒng)管理在錄入與售賣中多采用的是EAN-13類型的條形碼,EAN-13碼的奇偶編碼表示二進(jìn)制的規(guī)則,其能夠表示出13位字符的數(shù)字字符信息,包含國家、制造商、產(chǎn)品代號(hào)三種信息[4]。在藥盒條形碼的識(shí)別過程中,對(duì)條形碼圖像的采集是第1步也是重要的一步。條形碼圖像由光學(xué)傳感器、攝像頭、圖像處理系統(tǒng)對(duì)藥盒進(jìn)行采集。采集到的藥盒條形碼圖片由攝像頭或者光學(xué)傳感器儲(chǔ)存到存儲(chǔ)芯片中,通過接口電路傳輸至計(jì)算機(jī)進(jìn)行顯示。圖1為采集到的藥盒EAN-13碼和藥盒Code-128碼。
2.2藥盒條形碼圖像灰度化
RGB彩色圖像雖然與人眼視覺能夠很好地匹配,但其信息量也大,而條形碼的識(shí)別中并不需要彩色信息,故圖像處理時(shí)往往需要將彩色的圖像轉(zhuǎn)換為灰度圖像[5]。圖像灰度化是指只含有亮度信息,不含有色彩信息的圖像,而灰度化是指把含有亮度和色彩的彩色圖像變換成灰度圖像的過程。將圖片的色彩去除后使得圖片的占用內(nèi)存大小變小,因而處理計(jì)算所需要的資源、計(jì)算量減少,后續(xù)圖片的處理速度顯著提高。使用Halcon的rgbl _to_gray算子可以把RGB彩色圖像轉(zhuǎn)換成為灰度圖像[6]。圖2為藥盒EAN-13碼和Code-128碼圖像灰度化后的結(jié)果。
2.3藥盒條形碼圖像二值化
藥盒條形碼圖像的二值化就是把數(shù)字圖像轉(zhuǎn)化成一種只有兩種色彩的圖像,將圖像的目標(biāo)區(qū)域和圖像的背景區(qū)域區(qū)分開,處理好后的二值化圖像為后續(xù)圖像的邊緣提取等其他圖像處理奠定基礎(chǔ)。圖像二值化處理的關(guān)鍵之處就是選出一個(gè)合適的灰度閾值,使目標(biāo)區(qū)域和背景區(qū)域像素點(diǎn)被精準(zhǔn)地分割開來。在對(duì)藥盒條形碼圖像進(jìn)行二值化處理后,其數(shù)據(jù)量會(huì)明顯減少,但讓我們感興趣的目標(biāo)區(qū)域的輪廓卻能夠更好地呈現(xiàn)。在Halcon軟件中利用threshold( Image:Region:MinGray,MaxGray)算子對(duì)藥盒條形碼進(jìn)行二值化處理。在算子自動(dòng)給出選定閾值后,通過查看灰度直方圖來微調(diào)選定閾值,以達(dá)到藥盒條形碼圖像二值化處理的操作。圖3為藥盒EAN-13碼二值化(左)和Code-128碼二值化(右)結(jié)果。通過動(dòng)態(tài)圖閾值分割法,藥盒條形碼圖像被二值化處理成了只有兩種顏色的圖片,條形碼信息的區(qū)域變成紅色,在灰黑色背景中突顯出來。
2.4藥盒條形碼圖像中條形碼輪廓提取
藥盒條形碼圖像的輪廓提取是其圖像處理和機(jī)器視覺處理中最基本的問題。圖像目標(biāo)區(qū)域輪廓提取的精度直接影響后續(xù)數(shù)字圖像數(shù)據(jù)處理的精度,其關(guān)鍵因素就是在平滑和銳化處理時(shí)保持住圖像的基本特征。藥盒條形碼圖像的局部亮度變化中差別最大的地方是條碼邊緣,條形碼的兩側(cè)反射率會(huì)相差較大,而邊緣的像素也很密集,邊緣像素點(diǎn)附近的梯度是一致的,因此通過檢測(cè)輪廓特征明顯、信息量大的像素區(qū)域,就可以高效率地檢測(cè)出條形碼輪廓。在Halcon中使用Edge算子進(jìn)行條形碼輪廓提取。藥盒條形碼圖像在經(jīng)過灰度化、二值化處理的基礎(chǔ)上,其區(qū)域進(jìn)行了輪廓提取處理。如圖4所示,藥盒條形碼在進(jìn)行輪廓提取后,條形碼的形狀特征更加明顯和容易辨認(rèn)。
3藥盒條形碼圖像識(shí)別處理
3.1藥盒條形碼圖像的特征篩選識(shí)別
在藥盒條形碼圖像識(shí)別中需要排除復(fù)雜場(chǎng)景的干擾。采用平方梯度特征的方式,剔除邊緣中的短邊緣和曲線邊緣,這種方法能較好地排除大部分背景的干擾,有利于后續(xù)藥盒條形碼圖像中條碼的定位。通過Halcon的Sobel算子對(duì)藥盒條形碼圖像進(jìn)行特征識(shí)別提取。圖5為藥盒EAN-13碼特征識(shí)別和Code-128碼特征識(shí)別結(jié)果。
3.2藥盒條形碼圖像的條碼區(qū)域定位
通過梯度方向一致性的特征對(duì)邊緣進(jìn)行篩選后,邊緣圖像中除了條碼邊緣外,具有梯度方向一致性的線條也被保留下來,這些線條通常是物體的輪廓、表格的邊緣等,一般孤立存在,不具備條碼邊緣分布的密集性。為了進(jìn)一步消除背景的干擾,保證條碼定位區(qū)域的準(zhǔn)確性,采用形態(tài)學(xué)處理。形態(tài)學(xué)的基本操作有膨脹、腐蝕、開運(yùn)算以及閉運(yùn)算,其中開運(yùn)算操作是先對(duì)圖像腐蝕后膨脹,去掉目標(biāo)外孤立的點(diǎn)及細(xì)小物體,再利用Halcon中的find_bar_code算子對(duì)藥盒條形碼進(jìn)行識(shí)別定位,find_bar_code算子會(huì)查找并讀取給定條形碼圖像中的條形碼符號(hào)。但是,在一幅條形碼的圖像中,只能讀取出來任意數(shù)量的單一類型條形碼。并且,在調(diào)用find—bar—code算子前,必須通過調(diào)用create—bar—code—model算子來創(chuàng)建需要處理的條形碼模型,find bar—code算子則只能夠識(shí)別并定位出該模型所定義的條形碼類型。通過識(shí)別藥盒條形碼的條碼圖案特征,將藥盒條形碼的圖案區(qū)域進(jìn)行定位識(shí)別。圖6為藥盒EAN-13碼定位和藥盒Code-128碼定位。藥盒條形碼的條碼圖案定位后,為后續(xù)對(duì)藥盒條形碼的條形碼信息識(shí)別解碼轉(zhuǎn)換打下基礎(chǔ)。
3.3藥盒條形碼信息識(shí)別與解碼
藥盒條形碼識(shí)別系統(tǒng)中最重要的是對(duì)采集到的藥盒條形碼圖像進(jìn)行信息提取,將藥盒條形碼圖像中儲(chǔ)存的條形碼信息識(shí)別讀取出來。通過Halcon軟件的內(nèi)置算子對(duì)采集到的藥盒條形碼圖像進(jìn)行圖像識(shí)別,將藥盒條形碼中條碼的二進(jìn)制信息轉(zhuǎn)化為十進(jìn)制的數(shù)字字符信息,并將藥盒條形碼檢測(cè)識(shí)別出的十進(jìn)制數(shù)字字符信息顯示于圖形窗口的圖片之上,便于對(duì)照是否識(shí)別出錯(cuò)。如圖7所示,Halcon軟件對(duì)藥盒的Code-128類型條形碼信息進(jìn)行了識(shí)別,條形碼信息所含的20位數(shù)字字符信息識(shí)別解碼后顯示在了窗口左上方,識(shí)別出的十進(jìn)制數(shù)字字符的信息為83664920037628902502,這和圖像中藥盒條形碼下部數(shù)字字符信息一致,說明正確識(shí)別出了藥盒Code-128條形碼信息。
對(duì)傾斜狀態(tài)采集到的藥盒條形碼圖像進(jìn)行識(shí)別時(shí),將采集到的藥盒條形碼圖像傾斜,并且在不進(jìn)行圖像傾斜校正的情況下進(jìn)行條形碼識(shí)別。如圖8所示,以EAN-13類型條形碼為例,傾斜藥盒的條形碼圖像經(jīng)過識(shí)別解碼,仍然可以將藥盒條形碼所含的數(shù)字字符信息識(shí)別出來。
圖9為瓶裝藥盒EAN-13碼解碼識(shí)別。基于Halcon軟件能夠?qū)τ星?、罐裝、桶裝的藥盒上的條形碼進(jìn)行處理,對(duì)采集到的大罐裝以及瓶裝藥盒條形碼圖像進(jìn)行了成功識(shí)別解碼。盡管瓶裝藥盒的圓柱形包裝有一定的曲率,但仍然能如同平面藥盒條形碼圖像一樣正常識(shí)別解碼。
4藥盒條形碼識(shí)別系統(tǒng)設(shè)計(jì)
4.1系統(tǒng)總體設(shè)計(jì)
藥盒條形碼系統(tǒng)主要由攝像頭與計(jì)算機(jī)組成,計(jì)算機(jī)上搭載Halcon軟件和QT框架。先由攝像頭采集藥盒條形碼圖像,將采集到的圖像由數(shù)據(jù)線傳輸給計(jì)算機(jī),在計(jì)算機(jī)中由Halcon軟件對(duì)藥盒條形碼圖像進(jìn)行圖像處理并將藥盒條形碼的條形碼信息識(shí)別解碼,最后將Halcon所識(shí)別解碼的結(jié)果傳輸?shù)絈T框架所搭建的界面中進(jìn)行顯示。圖10為藥盒條形碼識(shí)別系統(tǒng)總體設(shè)計(jì)圖。
4.2系統(tǒng)開發(fā)與實(shí)現(xiàn)
藥盒條形碼識(shí)別系統(tǒng)需要將Halcon處理解碼得到的數(shù)字信息進(jìn)行顯示,并將解碼得到的數(shù)字字符信息在藥品信息數(shù)據(jù)庫中進(jìn)行對(duì)比,最終得到藥品信息并在系統(tǒng)界面進(jìn)行。Halcon軟件的工作界面不利于客戶直觀使用,通常會(huì)將Halcon軟件程序轉(zhuǎn)換為C++程序,然后在QT中創(chuàng)建系統(tǒng)界面,再顯示Halcon軟件對(duì)藥盒條形碼圖像所處理得到的結(jié)果。圖11為QT界面展現(xiàn)的藥品條形碼信息。
5結(jié)束語
藥品的管理、配發(fā)、監(jiān)管等問題通過藥盒上的條形碼進(jìn)行聯(lián)網(wǎng)智能化管理,既提高了工作效率,也減少了藥品的安全問題。利用Halcon軟件內(nèi)置算子能夠?qū)崿F(xiàn)藥盒條形碼識(shí)別,輔助QT界面設(shè)計(jì),能夠很好地實(shí)現(xiàn)系統(tǒng)的可視化。當(dāng)然,利用Halcon軟件進(jìn)行條形碼圖像處理時(shí),條形碼圖像采集環(huán)節(jié)仍然有需要改進(jìn)的地方,如做一個(gè)簡單的攝像頭并進(jìn)行遮光處理或者優(yōu)化藥盒放置臺(tái)角度等方法來減少反光的影響;另外,在本次搭建的藥盒條形碼識(shí)別系統(tǒng)中,由于藥盒條形碼有EAN-13碼和Code-128碼,且兩者模型解碼模型不同,因此沒有實(shí)現(xiàn)在一段程序中一次可以檢測(cè)兩種編碼的功能,后期還需加入判別程序,以嘗試實(shí)現(xiàn)藥盒條形碼兩種編碼的識(shí)別。