• <rt id="8ye82"></rt>

  • <b id="8ye82"></b>
  • 歡迎來到河北捷特噴碼機科技有限公司官網!
    新聞動態

    News center

    基于HALCON的噴碼字符識別技術的研究與實現 來源:    作者:喜多力Citronix   發布時間:2019-03-14 15:49:20
    隨著科學技術的發展,在大規模的產品包裝流水線生產中,要進行噴碼操作,噴碼印刷是飲料、食品、煙酒、化妝品、藥品、電纜等包裝印刷企業使用比較普遍的一種方法。操作的不穩定性往往會產生漏噴和錯噴等現象,所以需要在噴碼之后進行噴碼質量的檢測。傳統的方式為人工檢測,由于人工檢測需要大量人工,成本高,人眼易疲勞,穩定性差,速度慢,而自動化、集成化生產是現代工業生產的趨勢,所以需要一種新的方式替代人工,進行產品質量無接觸自動檢測[1?2],實現高速度、高精度、實時性、自動化的生產。 
    HALCON是德國MVtec公司開發的具有強大功能的圖像處理軟件,它擁有應用廣泛的機器視覺集成開發環境,并且含有一個非常完善的函數庫,包含定位、匹配、識別等高級算法,能夠進行圖像獲取、模板匹配、Blob分析、邊緣提取、測量、識別等,HALCON是世界公認的具有最佳效果的機器視覺處理軟件[3]。 
    本文使用HALCON軟件進行噴碼字符識別,在獲取圖像之后進行圖像預處理、獲取感興趣區域、字符提取、字符識別。在字符提取時采用數學形態學濾波,與以往不同的是采用四次不同結構元素的形態學操作,將每個字符獨立的點陣連在一起以便于提取,此方法能夠快速、準確地提取字符。目前常用的字符識別方法有模板匹配法[4?5]和基于人工神經網絡算法[6?7],本文采用基于人工神經網絡算法進行字符識別,首先由BP神經網絡訓練樣本,根據字符的特征對樣本進行分類,生成相應的字符庫,然后調用該字符庫讀取字符,進而識別出字符符號。 
    1 系統組成框架 
    系統硬件結構圖如圖1所示,整個系統主要由產品運送模塊、圖像采集模塊、軟件處理模塊組成。產品運送模塊主要是利用傳送帶將待檢測產品運送到特定的檢測區域;圖像采集模塊包括相機和光源,為了達到更加精確地檢測結果這一目的,在選擇合適的相機和光源之后,還要對相機和光源進行位置和角度的調整,從而保證采集到高質量的圖像;軟件處理模塊主要是采用HALCON圖像處理軟件,對采集到的圖像首先進行預處理,然后進行形態學濾波[8?9],獲取字符,最后進行字符識別,字符識別前需要進行字符訓練,建立相應的字符庫,用該庫讀取字符。 
     
    圖1 硬件系統結構圖 
    2 圖像處理 
    本文采用HALCON軟件進行圖像處理,首先通過相機采集到待檢測產品的圖像,并將采集到的圖像傳送到計算機;然后對采集到的圖像進行預處理,包括彩色圖像灰度變換,字符角度調整;由于相機視野較大,而字符只占一部分區域,整幅圖像處理起來耗時較長,所以要獲取感興趣區域[10];在提取字符時,由于字符為點陣字符,要進行形態學處理以方便字符的提??;最后采集樣本訓練光學字符識別(Optical Character Recognition,OCR),生成相應的字符庫,并用該庫讀取字符。圖像處理的流程圖如圖2所示。    
    圖2 圖像處理流程圖 
    2.1 圖像獲取 
    由于光源對圖像的質量影響非常大,為了減小誤差,在選擇好光源和相機的同時還要調整好相機和光源的位置以及角度,然后調用HALCON中的read_image()算子讀取相機采集到的圖像。采集到的圖像如圖3(a)所示。 
    2.2 圖像預處理 
    采集到的圖像一般為彩色圖像,在圖像處理之前要先調用rgb1_to_gray()算子對彩色圖像進行灰度變換,處理后的圖像如圖3(b)所示?;叶茸儞Q的公式如下: 
    [fx,y=0.299Rx,y+0.587Gx,y+0.114Bx,y] (1) 
    式中:[fx,y]表示彩色圖像轉換為灰度圖像之后的像素灰度值;[Rx,y]表示彩色圖像每個像素紅色分度值;[Gx,y]表示彩色圖像每個像素的綠色分度值;[Bx,y]表示彩色圖像每個像素的藍色分度值。 
     
    圖3 處理后的圖像 
    在噴嗎的過程中,由于物體的角度、物體的運行速度等因素影響,噴碼字符有可能會發生歪斜、不整齊等情況,為了更精確地識別噴碼字符,首先要將字符調整為水平。操作過程為:首先調用HALCON中的text_line_ orientation()算子計算出圖像中噴碼字符的角度,然后利用rotate_image()算子按照上一步計算出的角度進行角度調整,旋轉后的圖像如圖3(c)所示。 
    2.3 獲取感興趣區域 
    由于相機的視野較大,噴碼字符只占被采集圖像的一部分區域,為了減少工程計算量提高計算效率,圖像處理過程中的感興趣區域(Region of Interest,ROI)的提取是必不可少的。其具體操作步驟如下: 
    (1) 調用threshold()算子對角度調整后的圖像進行灰度閾值變換,獲取字符區域; 
    (2) 調用connection()算子計算區域的連通域,并利用seclect?shap()算子選擇字符區域; 
    (3) 調用area?center()算子獲取字符區域中心,然后利用gen_rectangle2()得到一個包含全部噴碼字符的矩形區域; 
    (4) 調用reduce_domain()截取感興趣區域,如圖4所示。 
     
    圖4 獲取ROI后的圖像 
    2.4 形態學處理 
    由于噴碼字符為5列7行的點陣型字體,如果直接進行OCR字符識別,噴碼的質量對識別結果的影響很大。為了排除點陣的變形對字符識別的影響,需要將圖像進行形態學處理,形態學的基本思想就是用具有一定形態的結構元素提取圖像中對應的形狀,從而實現對圖像的分析和識別。 
    腐蝕和膨脹是形態學兩種最基本的運算,腐蝕運算公式為: 
    [AΘB=zB?A] (2) 
    上式表示B對A的腐蝕作用,就是在A內平移B,平移過程中B完全包含在A內所有參考點的集合,其中集合A和集合B都在Z2中,腐蝕效果如圖5(a)所示。膨脹運算公式為: 
    [A?B=zBz≠?] (3) 
    上式表示B對A的膨脹作用,就是在A內平移B,平移過程中B與A至少有一個公共點的所有參考點集合,其中集合A和集合B都在Z2中,膨脹效果如圖5(b)所示。 
     
    圖5 腐蝕與膨脹示意圖 
    本文字符提取主要采用四次不同結構元素的閉運算,閉運算具有填充細小空洞,連接鄰近物體,在不明顯改變物體面積的情況下平滑其邊界的作用,能夠擴大前景收縮背景。閉運算就是對灰度圖像先膨脹后腐蝕的運算方式,閉運算公式為: 
    [A?B=A?BΘB] (4) 
    為了得到更加清晰的噴碼字符,在閉運算操作之前要調用dots_image()算子對圖像進行噴碼圓點增強處理,突出圖像中的點陣,然后調用threshold()算子對點陣增強后的圖像進行閾值處理,處理后的圖像如圖6所示。 
     
    圖6 處理后的圖像 
    調用closing_rectangle1()算子使用水平矩形結構元素對字符進行閉運算,填充水平方向的空洞,同理使用豎直矩形結構元素進行閉運算,可以填充豎直方向的空洞。由于每個字符之間的間距較小,并且可能存在點陣傾斜、偏移的情況,如果只使用水平矩形結構元素或者豎直矩形結構元素膨脹,幅度過小無法使每個字符的點陣連在一起,幅度過大很可能使字符粘連,無法分割字符,所以選擇使用對角線結構元素填充對角線上的空洞,這里首先調用gen_rectangle2()算子獲得對角線結構元素,然后調用closing()算子,可以填充一條對角線上的空洞,同理重復以上操作填充另一對角線上的空洞,經過以上操作可以將每個字符連到一起以方便字符的提取,形態學處理后的圖像如圖7所示。 
     
    圖7 形態學處理后的圖像 
    2.5 字符分割 
    由于每個字符的高度和寬度是特定的,字符分割采用基于字符面積和高度的連通域分割,首先調用connection()算子將圖像中的所有字符分割成單獨的個體;然后調用 select_shape()算子對面積和高度進行過濾,選出面積中像素在2 363和4 428之間的部分以及像素高度在120和146之間的部分;最后調用sort_region()算子排列已經分割出單個的字符。圖8為字符分割后的圖像。    
    圖8 字符分割后的圖像 
    2.6 字符識別 
    HALCON 中含有多種字體的字符庫,在很多情況下都可以直接調用相應的庫識別字符,但是發現直接利用已有庫識別字符,識別率和預期的有一些差別,所以要對以上處理過的字符進行訓練。這里使用的訓練方式是基于BP(Back Propagation)三層神經網絡的訓練,訓練文件生成過程中,要用到大量的字符樣本, 這些樣本取自100幅圖像中的50幅,其余50幅用來做識別。 
    BP神經網絡是1986年由Rumelhart和McCelland為首的科學家小組提出的,是一種按誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。BP神經網絡包括輸入層、隱層和輸出層,其中隱層可以為一個或多個,結構如圖9所示。[n,p,m]分別表示輸入層、隱層、輸出層神經元的個數,[W1,][W0,][θH,][θo]分別表示輸入層到隱層的權重、隱層到輸出層的權重、隱層的閾值、輸出層的閾值。 
    第[q]個輸入樣本[Xn]首先由輸入層神經元傳送到隱層神經元,經過隱層函數變換作用得到隱層的輸出信息[Hjq:] 
    [Hjq=fi=1nW1ijXq-θHj, j=1,2,…,p;q=1,2,…,Q] (5) 
    式中:[W1ij]表示輸入層的第i個神經元到隱層的第j個神經元的權重;[θHj]表示隱層的第j個神經元的閾值;訓練樣本的個數為[Q。]隱層的函數[fx]采用S型函數,即: 
    [fx=11+e-x, 0 
    圖9 BP神經網絡結構 
    然后隱層的輸出信息傳送到輸出層,最后輸出處理結果,完成一次正向傳播,輸出結果[Ykq]為: 
    [Ykq=fj=1nW0jkHjq-θok,k=1,2,…,m;q=1,2,…,Q] (7) 
    式中:[W0jk]表示隱層第j個神經元到輸出層第k個神經元的權重;[θok]表示輸出層第k個神經元的閾值。 
    當輸出的結果與預期的結果有誤差存在時,則轉換到誤差反向傳播,誤差經輸出層按照公式(8)修正各層的權值,并向隱層、輸入層逐層反轉,信息反復不斷地正向傳播和誤差反向傳播使誤差減小到最小。[ΔW(t+1)=η?E?W+αΔWt] (8) 
    式中:[ΔW(t)]表示第[t]次訓練的權值;[η,][α,][E]分別表示比例系數、動量系數和誤差平方和,[E]的表達式為: 
    [E=12k=1mq=1QYq-tq2] (9) 
    訓練過程中,神經網絡的輸出神經元的個數為2,為了確定輸入神經元的個數,將分割后大小不一的字符統一成8×12大小的圖像進行訓練,訓練字符提取了8×12個字符特征,所以輸入神經元為96個。由于隱層神經元個數一般為輸入神經元個數的2倍,實驗過程中隱層神經元的個數在192附近變動,由實驗可得隱層神經元個數為190時效果最好。 
    字符識別是通過read_ocr_class_mlp()算子調用已創建的分類器,利用do_ocr_multi_class_mlp()算子根據字符的特征計算出字符的類,將類返還到數組中,并返回類的置信度。最后利用for循環在窗口上顯示字符串。圖10為識別后的圖像。 
     
    圖10 識別后的圖像 
    3 結 語 
    實驗中采用PC機型號core i3,2G內存和HALCON的環境對伊利盒裝純牛奶頂面的噴碼字符進行識別,本文共采集100幅圖像,利用HALCON軟件對其中50幅圖像做訓練,對另外50幅圖像做識別,平均每0.283 s能夠識別一幅圖像,識別率達到96%。經實驗證明,本文提出的四次不同結構元素閉運算字符提取的方法簡單可行,同時基于BP神經網絡的字符識別能夠增大字符庫、提高識別效率?;贖ALCON的噴碼字符識別可以代替人工,自動識別產品包裝上噴碼字符,實現高速度、高精度、實時性、自動化生產。隨著科學技術的發展,這種基于機器視覺軟件的操作將逐漸代替人眼,在產品生產、包裝等方面具有極大的實用價值。 


    首页亚洲欧美国内综合AV,色先锋影音先锋aⅴ资源站,国产午夜人做人免费视频,国产精品一区第二页,有码系列人妻系列中文字幕无码|色噜噜香蕉一本到线|欧美系列Tⅴ