一、項(xiàng)目?jī)?nèi)容
本方案將搭建一個(gè)基于機(jī)器視覺(jué)的流水線檢測(cè)手機(jī)條碼平臺(tái),把產(chǎn)品放置于流水線上,高速工業(yè)相機(jī)對(duì)其逐一采集后傳送到計(jì)算機(jī)進(jìn)行一系列的處理,最終檢測(cè)出條碼是否合格并把不合格的條碼分揀出來(lái), 完成自動(dòng)檢測(cè)手機(jī)條碼質(zhì)量的功能。
檢測(cè)對(duì)象:手機(jī)產(chǎn)品條碼(包括產(chǎn)品碼、 SN碼、 IMEI 碼)
適用范圍:流水線的自動(dòng)生產(chǎn)線
檢測(cè)速度:1 件/兩秒( 20 厘米 / 秒)
(手機(jī)產(chǎn)品條碼)
二、方案設(shè)計(jì)
2.1 總體結(jié)構(gòu)示意圖
(總體結(jié)構(gòu)示意圖)
其包括:流水線輸送裝置、照明裝置、高速相機(jī)圖像采集裝置、計(jì)算機(jī)圖像處理部分。
2.2 硬件設(shè)計(jì)方案
2.2.1 流水線(傳輸帶)輸送機(jī)械裝置設(shè)計(jì)
本方案中輸送對(duì)象的質(zhì)量較小,不需要過(guò)多考慮輸送帶的承載能力問(wèn)題,也不涉及到產(chǎn)品的裝載和拆卸,所以采用普通的帶式輸送帶結(jié)構(gòu),以步進(jìn)電機(jī)帶動(dòng)傳輸帶同步輪作為滾筒, 并用一塊單片機(jī)對(duì)步進(jìn)電機(jī)進(jìn)行簡(jiǎn)單的運(yùn)動(dòng)控制進(jìn)而控制傳輸帶傳輸開(kāi)關(guān)和速度。同時(shí),為了在圖像采集時(shí)能把手機(jī)產(chǎn)品條碼與背景有鮮明區(qū)分,傳輸帶顏色為深黑色。
(帶式傳輸帶結(jié)構(gòu)圖)
2.2.2 工業(yè)相機(jī)選取
成像系統(tǒng)的是本方案最重要的一環(huán)。本方案中,檢測(cè)對(duì)象為條形碼,其形狀較大且特征明顯, 因此不要求相機(jī)需要非常高的分辨率。 但是,本方案是一個(gè)實(shí)時(shí)處理的設(shè)計(jì),因此要求圖像采集處理的速度要高于檢測(cè)對(duì)象的檢測(cè)速率,即相機(jī)的最大幀率要高;而成像物體是運(yùn)動(dòng)的, 為了避免采集到的圖像出現(xiàn)模糊等問(wèn)題,應(yīng)采用全局電子快門方式的相機(jī); 除外,還要求該相機(jī)支持外觸發(fā)快門以及能與計(jì)算機(jī)進(jìn)行快速數(shù)據(jù)傳輸?shù)奶攸c(diǎn)。綜上,該工業(yè)相機(jī)應(yīng)有以下特點(diǎn):
(1)最大幀率高
(2)全局電子快門幀曝光方式
(3)支持外觸發(fā)快門
(4)擁有與計(jì)算機(jī)進(jìn)行快速數(shù)據(jù)傳輸?shù)?a target="_blank">接口
綜合考慮,本方案選擇采用 德國(guó)Basler 公司制造的 acA800-200gc/gm 型號(hào)工業(yè)相機(jī),其參數(shù)如下:
(工業(yè)相機(jī)參數(shù))
改工業(yè)相機(jī)符合本方案設(shè)計(jì)要求。
本方案采用傳感器觸發(fā)方式對(duì)相機(jī)快門進(jìn)行控制。設(shè)計(jì)中傳輸帶為黑色,條碼背景為白色, 它們的反射能力有很大差距, 因此漫射式光電傳感器能很好地利用該點(diǎn)檢測(cè)產(chǎn)品條碼是否進(jìn)入相機(jī)的拍攝范圍。 把光電傳感器垂直置于傳輸帶上方并緊貼相機(jī),當(dāng)條碼到達(dá)傳感器下方時(shí),反射光發(fā)生變化,觸發(fā)開(kāi)關(guān)狀態(tài),通過(guò)開(kāi)關(guān)狀態(tài)間接控制相機(jī)快門,進(jìn)而達(dá)到自動(dòng)對(duì)條碼圖像的采集的目的。
2.2.4 光源的選擇與控制
常用的機(jī)器視覺(jué)光源有 LED光源、鹵素?zé)簦ü饫w光源)、高頻熒光燈。LED 光源最常用, 其使用壽命長(zhǎng), 且由于 LED光源是采用多顆 LED排列而成, 可以設(shè)計(jì)成復(fù)雜的結(jié)構(gòu), 實(shí)現(xiàn)不同的光源照射角度。由于本方案中檢測(cè)的是條碼, 為一光滑平面,采用漫反射環(huán)形 LED光源對(duì)其進(jìn)行照射, 能很好地把產(chǎn)品條碼與傳輸帶黑色背景區(qū)分出來(lái)。其中值得注意的是, 光源的高度和角度一定要調(diào)整好, 直至相機(jī)拍攝出來(lái)的圖像能把條碼與背景完美區(qū)分為止,而且還不能有反光。
(漫反射環(huán)形照射)
2.3 軟件平臺(tái)環(huán)境
本方案檢測(cè)速度約為兩秒1件,因此進(jìn)行圖像處理的計(jì)算機(jī)采用cpu主頻較高( 3GH以上)的一般辦公用計(jì)算機(jī)即可滿足要求。采用MATLAB作為主要圖像處理軟件。
2.3.1 條碼圖像的預(yù)處理
計(jì)算機(jī)從數(shù)據(jù)接口中獲得的條碼圖像是高速相機(jī)直接拍攝而未經(jīng)處理的圖像,其由于 CMOS特性以及放置等因素可能會(huì)出現(xiàn)噪聲、傾斜等問(wèn)題,而且得到的圖像為彩色圖像, 因此在對(duì)條碼進(jìn)行檢測(cè)前應(yīng)先對(duì)原圖像進(jìn)行預(yù)處理。預(yù)處理包括:濾波去噪、二值化處理、傾斜糾正三部分。
2.3.2 條碼圖像的濾波去噪
本方案中采用的 CMOS相機(jī),其集成度高的特點(diǎn)帶來(lái)了元件干擾噪聲。因此有必要對(duì)這些圖像去除隨機(jī)噪聲的干擾。經(jīng)實(shí)驗(yàn),本方案中圖像的噪聲多為椒鹽噪聲,即噪聲點(diǎn)在圖像上常常表現(xiàn)為孤立像素點(diǎn),其像素灰度與它鄰近像素灰度有顯著的不同,因此具有更高的頻譜。針對(duì)噪聲的類型,我們采用中值濾波,其對(duì)于脈沖干擾及椒鹽噪聲有良好的抑制作用,且能較好保持圖像邊緣。從條碼圖像的特征來(lái)看, 其特點(diǎn)在于是由縱向一定寬度黑白條空組成,我們通過(guò)建立不同大小的模板,對(duì)含有噪聲的圖像進(jìn)行濾波處理, 比較它們的濾除噪聲干擾的效果。在 MATLAB中可以使用 filter2 函數(shù)調(diào)用創(chuàng)建好的濾波器,經(jīng)驗(yàn)證, 3x3 正方形濾波器效果最好,因此本方案采用3x3 中值濾波器。
(帶椒鹽噪聲的圖像)
(3x3 中值濾波后的圖像)
2.3.3 條碼圖像的二值化處理
為了便于對(duì)圖像進(jìn)行后續(xù)處理,需要對(duì)圖像進(jìn)行二值化處理。本方案中產(chǎn)品條碼為底面為白色的長(zhǎng)方形貼紙,背景為黑色的傳輸帶, 直接從相機(jī)中獲取的圖像為彩色圖像,把獲取的圖像進(jìn)行灰度化處理之后,再經(jīng)二值化處理后能便于把產(chǎn)品條碼的貼紙分割出來(lái)。可利用MATLAB的 rgb2gray()函數(shù)可以把彩色圖像轉(zhuǎn)化為灰度圖像后,再利用 im2bw()函數(shù)可以很方便地對(duì)圖像進(jìn)行二值化處理,閾值取 0.67 ,能得到較好的二值化圖像。可見(jiàn),二值化后紙面邊緣更加清晰。
(原圖像) (二值化后圖像)
2.3.4 條碼圖像的傾斜判斷與糾正
由于物體在傳送帶上的位置并不固定, 所以相機(jī)所采集到的條碼圖像中條碼區(qū)域可能出現(xiàn)傾斜, 為便于后續(xù)的條碼定位和分割提取必須要將傾斜的條碼圖像轉(zhuǎn)正。
觀察二值化后的條碼圖像, 可以發(fā)現(xiàn)紙面區(qū)域與背景有明顯的近似矩形框區(qū)分,而傾斜的條碼圖像的顯著特征就是其二值圖像中紙面區(qū)域以一定角度旋轉(zhuǎn)且其旋轉(zhuǎn)角度不可能太大。所以實(shí)現(xiàn)傾斜條碼圖像的糾正首先要檢測(cè)出傾斜角度,
再以其角度值對(duì)其進(jìn)行逆旋轉(zhuǎn)得到包含條碼的矩形區(qū)域呈水平的條碼圖像。考慮到圖像位置的隨機(jī)性和計(jì)算復(fù)雜度問(wèn)題, 本方案決定采用 Hough變換法來(lái)實(shí)現(xiàn)傾斜條碼圖像的傾斜角的檢測(cè)。其實(shí)現(xiàn)方法是先利用MATLAB的 edge() 函數(shù)求出二值圖像 的邊 緣,再 用 其 Hough 變換相 關(guān)函數(shù):hough() 、 houghpeaks() 、 houghlines() ,獲得到最長(zhǎng)邊的起始點(diǎn)和終止點(diǎn),利用斜率公式從而求出該條碼圖像的傾斜角,最后利用 imrotate() 旋轉(zhuǎn)函數(shù)糾正圖像的傾斜情況。經(jīng)測(cè)試,效果不錯(cuò)。
(原傾斜圖像) (傾斜糾正后的圖像)
2.4 條碼分割
由于同一款手機(jī)產(chǎn)品,其條碼的貼紙上的條碼字符等信息的位置都是固定的,因此把圖像中紙面部分分割出來(lái)后, 按固定位置的物理分割能很容易把條碼部分分割出來(lái)。
2.4.1 條碼貼紙部分分割
由二值化圖像中可見(jiàn)貼紙與背景有明顯的特征區(qū)分,我們經(jīng)過(guò)b wareaopen()函數(shù)處理后可把面積小的點(diǎn)吞噬掉,從而獲得邊緣較為清晰的二值化圖像。
(經(jīng)bwareaopen 函數(shù)處理后的圖像)
獲得此圖像后,對(duì)圖像進(jìn)行從左到右的逐行檢測(cè),得到其像素點(diǎn)第一次由黑到白變化點(diǎn)的坐標(biāo),即為該紙面邊緣的第一個(gè)坐標(biāo),記為P1;再用相同的方法分別從右到左、上到下、下到上進(jìn)行檢測(cè),分別把檢測(cè)到的坐標(biāo)記為P2、 P3、P4,則該四個(gè)坐標(biāo)確定了紙面的位置。最后調(diào)用 imcrop()函數(shù),按這四個(gè)坐標(biāo)把擺正后的圖像的紙面分割出來(lái)。
(分割的條碼圖像的紙面部分)
2.4.2 條碼分割
上文已說(shuō)明, 同一款手機(jī)產(chǎn)品其條碼的貼紙上的條碼字符等信息的位置都是固定的,因此對(duì)應(yīng)同一款手機(jī)計(jì)算好其條碼在貼紙上的位置,再次調(diào)用 imcrop()函數(shù),能把貼紙上任意部分分割出來(lái)。
(分割出來(lái)的條碼)
2.5 條碼識(shí)別與檢測(cè)
條碼圖像經(jīng)過(guò)處理后最終得到的是只有黑白條空組成的二值圖像, 該點(diǎn)的顏色信息在闊值變換時(shí)已經(jīng)定義 ,用 255 和 0 表示白色和黑色, 則接下來(lái)的任務(wù)就是對(duì)此圖像所包含的數(shù)字或英文字母信息進(jìn)行譯碼, 即條碼識(shí)讀。
2.5.1 條碼譯碼識(shí)別方案
條碼識(shí)別的算法有很多,常用的有:
①寬度測(cè)量法:在圖像方式的譯碼過(guò)程中, 寬度的測(cè)量不再采用傳統(tǒng)的脈沖測(cè)量法 , 而是通過(guò)記錄每個(gè)條或空的寬度中所含象素的個(gè)數(shù)來(lái)確定實(shí)際的條 / 空寬度 , 從而確定整個(gè)條碼符號(hào)所代表的信息。
②平均值法:對(duì)條碼符號(hào)圖像中從起始符到終止符整個(gè)寬度進(jìn)行測(cè)量 , 然后除以 95 標(biāo)準(zhǔn)寬度 , 求出單位模塊所含的像素列寬, 再分別測(cè)量各個(gè)條空的實(shí)際寬度此寬度以單位寬度為單位計(jì)算
③相似邊距離測(cè)量法:這種方法的設(shè)計(jì)思路是通過(guò)對(duì)符號(hào)中相鄰元素的相似邊之間距離的測(cè)量來(lái)判別字符的邏輯值, 而不是由各元素寬度的實(shí)際測(cè)量值來(lái)判別。
前兩種方法對(duì)條碼圖像的要求非常高 , 因?yàn)樗鼈兌际菧y(cè)量各元素符號(hào)的實(shí)際寬度 , 然后根據(jù)查表法得到所代表的碼值。如果實(shí)際測(cè)量值與標(biāo)準(zhǔn)值存在一點(diǎn)偏差, 就不能實(shí)現(xiàn)正確譯碼。而第三種方法正是有效的解決了這一問(wèn)題 , 因此本方案采用相似邊距離測(cè)量的方法來(lái)實(shí)現(xiàn)譯碼功能。理論上條形碼字符的邏輯值應(yīng)該由條形碼的實(shí)際寬度來(lái)判斷, 而相似邊距離方法的設(shè)計(jì)思想通過(guò)對(duì)符號(hào)中相鄰元素的相似邊之間距離的測(cè)量來(lái)判別字符的邏輯值,而不是由元素寬度的實(shí)際值來(lái)判別。此種方法的優(yōu)點(diǎn)是:即使條碼質(zhì)量存在缺欠,使得實(shí)際測(cè)量值和條碼應(yīng)該具有的理論值有較大的偏差, 仍然可以根據(jù)相似邊的距離能夠正確解釋。
(條碼字符寬度示意圖)
圖中 C1,C2,C3,C4表示每個(gè)字符中四個(gè)相鄰條、空的寬度, T 表示一個(gè)字符的寬度, T1,T2 表示相似邊之間的距離,把其歸一化后按表查詢即可獲得其編碼值。
(EAN-13 條碼字符與歸一化值)
由 MATLAB 實(shí)現(xiàn)該方法,關(guān)鍵是要檢測(cè)出相似邊之間的距離。可從左到右對(duì)條碼進(jìn)行水平灰度掃描, 以灰度值跳變的點(diǎn)作為條和空的標(biāo)記坐標(biāo),從而計(jì)算出由各個(gè)條、空的寬度,并通過(guò)計(jì)算 n=T/7,T=1C+2C+3C+4C 得到單位模塊的寬度。各個(gè)條空的寬度除以單位模塊的寬度就是歸一化的條空寬度。而為了方便譯碼,我們除去起始符 3 個(gè)條空,中間分隔符 5 個(gè)條空,終止符3 個(gè)條空,對(duì)剩下的 48 個(gè)條空每 4 個(gè)條空為一組進(jìn)行譯碼。計(jì)算相似邊之間的距離t1、 t2 從而得到歸一化( T1,T2)。最后查表可得條碼字符。再根據(jù)譯出的左側(cè)6位數(shù)據(jù)符的奇偶性算出前置符。以下是譯碼效果:
(條碼識(shí)別結(jié)果)
其他碼型( SN 碼、IMEI 碼)原理相似。
2.5.2 條碼字符識(shí)別
獲得條碼識(shí)別的數(shù)據(jù)后,需要與條碼下方的字符對(duì)照,驗(yàn)證條碼的準(zhǔn)確性。字符識(shí)別的算法有很多, 由于該方案中只需要識(shí)別簡(jiǎn)單的數(shù)字和英文字母,因此通過(guò)簡(jiǎn)單的 OCR 算法對(duì)其條碼下方的數(shù)字、英文字母字符進(jìn)行字符檢測(cè),再與
識(shí)別的條碼字符相比較, 一致則顯示該產(chǎn)品條碼檢測(cè)通過(guò),不一致則記錄該商品編碼。
首先建立一個(gè)字符模板數(shù)據(jù)庫(kù),用于字符匹配。該方案中需要識(shí)別的字符只有英文和字母,因此數(shù)據(jù)庫(kù)不大。
(字符數(shù)據(jù)庫(kù))
然后使用物理定位分割,把條碼下方字符分割出來(lái)。
(條碼下方字符)
接著,對(duì)圖片進(jìn)行水平方向的投影,這樣有字符的地方的投影值就高,沒(méi)字的地方投影得到的值就低。
(水平投影值)
接下來(lái),用一根掃描線從下向上掃描。這個(gè)掃描線會(huì)與圖中曲線存在交點(diǎn),
這些交點(diǎn)會(huì)將山頭分割成一個(gè)又一個(gè)區(qū)域。該條碼字符為 13 位,加上條碼突出來(lái)的幾點(diǎn)一共為 18 個(gè)區(qū)域,因此,當(dāng)掃描線將山頭分割成 18 個(gè)區(qū)域時(shí)停止。然后根據(jù)這 18 個(gè)區(qū)域向水平線的投影的坐標(biāo)就可以將圖片中的 13(18)個(gè)字符分割出來(lái)。
字符分割出來(lái)后,最后用 ORC神經(jīng)網(wǎng)絡(luò)匹配,把分割出來(lái)的字符與字符庫(kù)里的字符圖片進(jìn)行匹配, 最終把字符識(shí)別出來(lái)。把識(shí)別出來(lái)的字符串與條碼識(shí)別出來(lái)的字符串對(duì)比,即可檢測(cè)出該條碼是否準(zhǔn)確。
三、方案評(píng)估
3.1 材料預(yù)算
3.2 方案不足
本方案存在尚需改進(jìn)的地方:
1)對(duì)光源的擺置要求較高,依賴光源獲取對(duì)比鮮明的圖像,否則將可能出現(xiàn)條碼貼紙與背景分割失敗的情況;
2)盡管概率很低,但依然存在某張條碼檢測(cè)失敗的情況,此時(shí)本方案的做法是對(duì)該次檢測(cè)拋棄;
3)本方案只對(duì)條碼的編碼質(zhì)量進(jìn)行了檢測(cè),即只對(duì)條碼所包含的字符是否與該手機(jī)產(chǎn)品相關(guān)信息的編號(hào)字符相對(duì)應(yīng)進(jìn)行了檢測(cè),而沒(méi)有對(duì)出錯(cuò)的進(jìn)行糾正。
責(zé)任編輯:pj
-
傳感器
+關(guān)注
關(guān)注
2553文章
51390瀏覽量
756582 -
濾波
+關(guān)注
關(guān)注
10文章
669瀏覽量
56773 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7536瀏覽量
88639
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論