版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第II頁共32頁目錄TOC\o"1-3"\h\u6930 16637 135 13617 2101031.2條形碼的編碼方法 316882 328094 3114131.3Code128條形碼 319852 39629 312858 4155891.4條形碼識別 832395 931510 1119890 125908 15270031.5總結 16程序部分是整個系統(tǒng)的大腦,管控著各個部分的協(xié)調配合,其中主要便是在運動過程中識別條形碼,并且根據(jù)條形碼識別的內容進行進而控制舵機的旋轉,達到分揀的目的。本章通過對Code128條形碼的編碼原理進行認識,并且通過抓拍物品在運輸過程中的圖形,對圖像進行灰度處理、閉運算等一些列操作對條形碼進行定位,得到可以進行條形碼識別的圖像后,計算并比較條與空寬度的大小,確定基準模塊,最終對比條形碼編碼表分析出條形碼所包含的內容。本文主要為智能分揀系統(tǒng)的設計,而智能體現(xiàn)在能夠識別貨物信息,根據(jù)貨物信息進行智能分揀。單片機如何識別貨物的信息呢?本文利用的是攝像頭識別條形碼,進而獲得物品信息的方法。條形碼簡稱條碼,英文名稱為barcode,是產品的身份識別代碼,也可以稱為產品的“身份證”。條形碼由全球GS1(Globestandard1)標準委員會定制的全球的統(tǒng)一性的標準,然而,每個國家都會對其進行細致的管理,我們國家的條形碼是由國家物品編碼中心指定的國家應用標準和應用規(guī)范。我國產品上市銷售,都需要進行申請條形碼(EAN-13),表示是一種由13個數(shù)字組成的條形碼類型。每個國家都是不同的,例如美國使用UPC-A\E類條形碼。條形碼又稱為一維條形碼,一般用在產品標簽、物流管理、圖書管理、醫(yī)藥食品等領域。EAN-13條碼,是當今世界使用的最廣泛的條形碼,一共由13個數(shù)字組成,第13個數(shù)字是校驗數(shù)字,內容是根據(jù)前12個數(shù)字計算得出。還有一種EAN-8條形碼,是EAN-13條碼的縮短型。如下圖所示。圖9:EAN-13與EAN-8條形碼根據(jù)應用目的的不同,可以大致可以分為商品條形碼、物流條形碼、圖書管理條形碼。主要區(qū)分一下物流條形碼和商品條形碼。標志的意義不同:商品條形碼一般包括商品的產品名稱、生產日期、保質期、生產地等,一般情況下是商品的唯一標識。物流條形碼一般是儲藏運輸單元的唯一標識,一般情況下表示多個或者多種商品的集合。物流條形碼一般貼于商品的外包裝,供運輸、分揀、存儲等作業(yè)使用。兩種條形碼服務的領域不同:商品條形碼使用于整個商品的最后一個環(huán)節(jié),也就是銷售環(huán)節(jié)。而物流條形碼是使用于整個商品除了銷售的各個環(huán)節(jié)。信息容量不同:商品條形碼一般由13位或者8位數(shù)字及符號組成。商品條形碼的長度固定、內容少。物流條形碼一般是Code128條碼,可包含物品的體積、重量、生產日期、批號、發(fā)貨地、目的地等信息,包含的信息多。標準維護不同:商品條碼是國際通用標準化商品的唯一識別碼,是零售業(yè)的國際語言,更新較少,方便維護。而Code128條碼大多是企業(yè)工廠自己用或者同行業(yè)合作伙伴對各種信息的不斷增加應運而生,維護起來相對比較不方便。1.2條形碼的編碼方法條碼的編碼一般按照唯一性、無含義性、穩(wěn)定性的原則來進行編碼。通常情況下,有模塊組合法和寬度調節(jié)法兩個編碼方法。模塊組合法又稱為連續(xù)性條碼,EAN條碼、UPC條碼和93碼均使用模塊組合法。模塊組合法指一個標準寬度的條表示“1”,一個標準寬度的空表示“0”。然后根據(jù)“1”和“0”的順序組合,進而得到條形碼所包含的內容。寬度調節(jié)編碼法是指條與空分為窄單元與寬單元,窄的條或空表示邏輯值“0”,寬的條或空表示邏輯值“1”。通常來說,寬單元是窄單元的2~3倍。39條形碼、庫德巴條形碼和交叉25條形碼都屬于寬度調節(jié)編碼法編制的條形碼。1.3Code128條形碼本文所識別的條形碼類型為Code128條形碼,Code128條形碼在物流、倉儲行業(yè)應用相對廣泛,故詳細了解Code128條形碼。Code128A字符集包含大寫字母、常用符號、數(shù)字以及一些控制類的字符Code128B字符集包含大寫、小寫字母、常用符號、數(shù)字Code128C字符集為純數(shù)字集起始位+數(shù)據(jù)位+校驗位+終止位起始位:211214數(shù)據(jù)位:開始位到校驗位中間終止位:2331112圖10:Code128條形碼如上圖所示,從左往右依次讀取,黑色的為條,白色的為空。根據(jù)寬度的不同,從細到粗依次賦予1、2、3、4。如圖2所示,按粗細值閱讀條碼為“2112142133111121331221321311231123131221323123111321313123111131412331112”。Code128條形碼終止序列總是為“2331112”,起始序列為“211214”,為Code128B條形碼起始序列。除去起始序列與終止序列,剩余其他為6個數(shù)字一組,即為“|213311|112133|122131|131123|112313|122132|312311|132131|312311|113141”其中,最后一組數(shù)字“113141”為校驗序列,剩余其他為數(shù)據(jù)序列。然后在根據(jù)Code128編碼表得到條形碼所包含的內容,其內容為“TJ-BD-ZLZ”。Code128編碼表如下表所示:IDCode128ACode128BCode128CBandCodeSPSP0212222!!1222122““2222221##3121223$$4121322%%5131222&&6122213‘‘7122312((8132212))9221213**10221312++11231212,,12112232--13122132..14122231//151132220016123122111712322122182232113319221132442022123155212132126622223112772331213188243112229925321122::26321221;;27312212<<28322112==29322112>>30212123??31212321@@32232121AA33111323BB34131123CC35131321DD36112313EE37132113FF38132311GG39211313HH40231113II41231311JJ42112133KK43112331LL44132131MM45113123NN46113321OO47133121PP48313121QQ49211331RR50231131SS51213113TT52213311UU53213131VV54311123WW55311321XX56331121YY57312113ZZ58312311[[59332111\\60314111]]61221411^^62431111__63111224NUL`64111422SOHa65121124STXb66121421ETXc67141122EOTd68141221ENQe69112214ACKf70112412BELg71122114BSh72122411HTi73142211LFj74142211VTk75241211FFl76221114CRm77413111SOn78241112SIo79134111DLEp80111242DC1q81121142DC2r82121241DC3s83114212DC4t84124112NAKu85124211SYNv86411212ETBw87421112CANx88421211EMy89212141SUBz90214121ESC{91412121FS|92111143GS}93111341RS~94131141USDEL95114113FNC3FNC396114311FNC2FNC297411113SHIFTSHIFT98411311CODECCODEC99113141CODEBFNC4CODEB114131FNC4CODEACODEA311141FNC1FNC1FNC1411131StartAStartAStartA211412StartBStartBStartB211214StartCStartCStartC211232StopStopStop2331112表1:Code128編碼表1.4條形碼識別條形碼識別是一個相對較為復雜的過程,需要經過很多步驟才能夠達到提取內容并對其進行識別的工作。首先需要攝像頭捕捉圖像,需要在攝像頭能夠捕捉到的所有圖像中進行灰度處理,灰度圖片如圖11所示。處理成為灰度圖像后進行輪廓定位,進而定位到條形碼,之后通過條與空的寬度得到基準模塊,通過計算每個條與空中基準模塊的個數(shù),得到數(shù)字,對比編碼表最終完成譯碼任務。參照編碼表解碼得到數(shù)字輪廓定位灰度處理參照編碼表解碼得到數(shù)字輪廓定位灰度處理譯碼成功譯碼成功圖12:條形碼識別流程圖攝像頭定位條形碼需要深度考慮條形碼的特性,條形碼在豎直方向上,具有相同長度的條或空,在水平方向上,黑色的條與白色的空相間配合組成。但是在時間識別掃描的過程中,圖像中可能并不只有條形碼,可能包含其他的影響因素,如圖13所示,圖中不但包含條形碼,還包含有二維碼。掃描到該圖像后,對其進行灰度化處理[19],處理結果如下圖所示。在一幅模糊的圖像中,條形碼的周圍輪廓灰度的變化不強烈,因此,圖像中的層次感并不明顯,而在清楚的圖像中,條形碼的邊緣輪廓灰度變化強烈,圖像中的層次感明顯。因此便使用梯度來定義圖像的清楚與否。在該灰度圖像中,分別計算X與Y方向的梯度,再用X方向的梯度減去Y方向的梯度,目的是既能夠保留X方向的梯度特征,又能夠減少Y方向梯度的干擾。但是在該圖中,二維碼對于條形碼的定位產生了一定的影響,但是二維碼的空間漏洞比條形碼多,所以,在對其進行模糊化,并且二值化,如圖15所示。二維碼對條形碼的影響,在一定程度上有所減少,但是,條形碼中出現(xiàn)了黑色的縫隙[20],該縫隙不利于條形碼的定位完整的區(qū)域,因此進行閉運算來除去黑色的縫隙。算子根據(jù)高度于寬度的特征處理黑色的縫隙。處理結果如圖16所示。圖16雖然條形碼中黑色的縫隙明顯減少,但是二維碼仍然占據(jù)整個圖像當中很大一部分,對條形碼的定位有較大的影響。利用多次膨脹與腐蝕,膨脹的目的使斷開二維碼的鏈接,腐蝕使將二維碼部分進行腐蝕。結果如圖17所示。圖17:多次膨脹后的圖像到此時對條形碼的定位的影響就已經微乎其微了,然后就可以計算圖像中每個輪廓的面積,并對面積大小進行比較,選出面積最大的輪廓即為條形碼的輪廓。圖像在計算機中就可以認為是函數(shù),因此可以將圖像看作二維離散型函數(shù),圖像的梯度可以看成二維離散函數(shù)的求導。例如,某處原圖像像素經過梯度變化轉化為新圖像像素如下圖所示。圖18:像素梯度變化圖如上圖所示,相鄰位置的像素有所變化,則就存在梯度,如果相鄰位置的像素沒有變化,那么就不存在梯度。新圖像x方向的像素是有原圖像x方向的像素加上該處像素梯度的值變化而來,梯度是原圖像x方向像素中相鄰位置的像素差。例如,100與80的梯度為20,那么新圖像該處的像素為100加20得120,相鄰處新圖像的像素由于不存在梯度,或者梯度為0,所以仍為80,得到的新圖像的梯度為120減去80得40,由此變化可以明顯發(fā)現(xiàn)梯度有所增加。本文則利用這一方法來增強圖像得區(qū)分,以便于條形碼定位與識別。圖像函數(shù)f(x,y)表達式為:公式1幅度公式:公式2方向角公式:公式3差分求近似倒數(shù):公式4故像素點(x,y)處的梯度值和梯度方向為:公式5上述公式中,包含平方與開平方,計算量較大,所以,可以利用絕對值來近似平方和平方根的操作,降低計算量:公式6首先需要對圖像進行灰度處理,本文運用到cvtColor函數(shù),cvtColor(image,gray_image,COLOR_BGR2GRAY)函數(shù)三個參數(shù)分別為原圖像、色彩空間轉化后的圖像、源和目標色彩空間。通過圖片通道數(shù)判斷圖片進行灰值化,如果通道數(shù)為3,則進行灰值化處理,否則為原圖其程序為:if(srcImage.channels()==3){cvtColor(srcImage,grayImage,CV_RGB2GRAY);}else{grayImage=srcImage.clone();}隨后,通過scharr()算子建立圖像的梯度幅值,因為在X方向上梯度大,選用X方向的梯度,所以利用subtract()函數(shù)使X方向的梯度,減去Y方向的梯度,進而減小Y方向梯度的影響。程序如下:Scharr(grayImage,gradientXImage,CV_32F,1,0);Scharr(grayImage,gradientYImage,CV_32F,0,1);subtract(gradientXImage,gradientYImage,gradientImage);convertScaleAbs(gradientImage,gradientImage);隨后需要對圖片進行相應的模糊處理,再此處利用blur函數(shù),該函數(shù)中此處用到了其中三個參數(shù),其中第一個參數(shù)為原圖像,第二個參數(shù)為目標圖像,第三個參數(shù)為size,即為內核大小,通常用Size(w,h)來表示,其中w為寬度,h為高度。模糊處理之后,對圖像進行閾值化處理,即可得到相對應的黑色與白色的二值化圖片,該步驟調用threshold()函數(shù),該函數(shù)有四個參數(shù),分別為原圖像、二值化后的圖像、閾值的具體值、參數(shù)閾的類型。得到二值化的圖像之后,需要消除小黑點。因此需要運用到形態(tài)學[],在形態(tài)學中,分為開運算和閉運算,開運算使值先腐蝕,再膨脹,可以消除一些亮的小東西,然后再對其進行局部放大,放大那些低亮度的部分。而閉運算則是先膨脹,后腐蝕,可以清除小黑點。所以閉運算符合目前的需求,在此處我們利用到getStructuringElement()函數(shù)與morphologyEX()函數(shù)。在此過程中,為了讓圖像的大小保持不變,所以要用相同次數(shù)的膨脹與腐蝕。先腐蝕,為的是讓圖像中亮的地方減少,而膨脹是為了消除干擾。該過程的程序如下:blur(gradientImage,blurImage,Size(9,9));threshold(blurImage,thresholdImage,210,255,THRESH_BINARY);Matkernel=getStructuringElement(MORPH_RECT,Size(21,7));morphologyEx(thresholdImage,morphImage,MORPH_CLOSE,kernel);Erode(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);dilate(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);完成以上任務后,便可以對條形碼的輪廓進行查找,在查找這一任務中,本文調用了findContours()函數(shù),利用到了其中的四個參數(shù),第一個參數(shù)為被尋找輪廓的圖像,第二個參數(shù)為輪廓,第三個參數(shù)為輪廓的檢索模式,一般情況下,輪廓的檢索模式分為只檢測外側輪廓、檢測到的輪廓不建立等級關系、檢測到的輪廓建立兩個等級關系與建立一個等級樹結構的輪廓四種檢索模式。第四個參數(shù)為近似輪廓的辦法,一般情況下分為兩種,一種為存儲所有的輪廓點,另一種方法為壓縮橫向、縱向以及對角線方向的元素,只保留該方向上的終點坐標位置。圖像中,出現(xiàn)輪廓之后,便需要對輪廓的面積進行計算。輪廓的面積計算在此處調用contourArea()函數(shù),該函數(shù)主要是計算輪廓的面積。得到各個輪廓的面積之后,需要對比所有輪廓面積的大小,找到面積最大的輪廓,之后,計算最大面積輪廓的最小的外包的矩形。得到最小外包矩形之后,要計算該矩形的偏斜角度,如果矩形的偏斜角度超標,則該矩形不是想要的,即不是條形碼的輪廓矩形。找到對的矩形之后,將掃描的圖像進行裁剪,并保存為相對應的結果,保留x方向的邊界,擴大矩形。該部分的程序如下:findContours(morphImage,contours,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);for(inti=0;i<contours.size();i++){contourArea.push_back(cv::contourArea(contours[i]));}doublemaxValue;PointmaxLoc;minMaxLoc(contourArea,NULL,&maxValue,NULL,&maxLoc);RotatedRectminRect=minAreaRect(contours[maxLoc.x]);if(minRect.angle<2.0){RectmyRect=boundingRect(contours[maxLoc.x]);myRect.x=myRect.x-(myRect.width/20);myRect.width=myRect.width*1.1;MatresultImage=Mat(srcImage,myRect);if(!imwrit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新員工入職培訓課程開發(fā)設計手冊
- 餐飲服務人員資格培訓試卷及答案
- 運營中心呼叫話術培訓手冊
- 跨行業(yè)企業(yè)培訓課程設計工具集
- 2025年中職電子電器應用與維修(電器應用技術)試題及答案
- 2025年本科包裝工程(包裝結構設計)試題及答案
- 2025年大學三年級(醫(yī)學檢驗)生化檢驗試題及答案
- 2025年中職視覺傳播設計與制作(視覺傳播設計應用)試題及答案
- 2025年中職(物流法律法規(guī)實訓)倉儲合同法規(guī)階段測試試題及答案
- 2026年檔案管理(檔案保管方法)試題及答案
- 福建省福州市八縣一中聯(lián)考2025-2026學年高二物理第一學期期末學業(yè)質量監(jiān)測試題含解析
- 鋼材供貨方案及保證措施
- 泰康集團入職測評題庫及答案
- 燃氣報警安全常識培訓課件
- 農村水庫改建申請書
- 光伏電站施工安全控制方案
- 2025年工業(yè)機器人維護與維護成本分析報告
- 柴油發(fā)動機檢修課件
- 淡水魚類深加工創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 2025年中國電熱式脫皮鉗市場調查研究報告
- 新課標文科全科-2026高考大綱TXT便利版
評論
0/150
提交評論