羅子棋 楊穎 戴毅欽 胡健 劉坤銘 吳昊榮



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