1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于機(jī)器視覺(jué)的手機(jī)產(chǎn)品條碼檢測(cè)方案

        共 6459字,需瀏覽 13分鐘

         ·

        2021-05-16 07:06

        點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        本文轉(zhuǎn)自:新機(jī)器視覺(jué)
        一、項(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)采用全局電子快門(mén)方式的相機(jī);  除外,還要求該相機(jī)支持外觸發(fā)快門(mén)以及能與計(jì)算機(jī)進(jìn)行快速數(shù)據(jù)傳輸?shù)奶攸c(diǎn)。綜上,該工業(yè)相機(jī)應(yīng)有以下特點(diǎn):

        (1)最大幀率高

        (2)全局電子快門(mén)幀曝光方式

        (3)支持外觸發(fā)快門(mén)

        (4)擁有與計(jì)算機(jī)進(jìn)行快速數(shù)據(jù)傳輸?shù)慕涌?/span>

         

        綜合考慮,本方案選擇采用 德國(guó)Basler 公司制造的 acA800-200gc/gm 型號(hào)工業(yè)相機(jī),其參數(shù)如下:

        (工業(yè)相機(jī)參數(shù))

        改工業(yè)相機(jī)符合本方案設(shè)計(jì)要求。


        2.2.3  光電傳感器的選取

        本方案采用傳感器觸發(fā)方式對(duì)相機(jī)快門(mén)進(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ī)快門(mén),進(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ì)噪聲的類(lèi)型,我們采用中值濾波,其對(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)??衫肕ATLAB的 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)行糾正。


        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 49
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            勾搭足浴女技师国产在线 | 一级a一级a爰片免费免会员四虎 | 欧美污视频 | 日本老熟妇| 揉啊嗯~出水了视频 | 猛男大粗爽h男人味69XXmadou 天天干好逼网 | 骚视频免费看 | 中文字幕在线观看网站 | 刺激熟女探花88AV | 日韩在线免费观看视频 |