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