基于VC一維條形碼識別_第1頁
基于VC一維條形碼識別_第2頁
基于VC一維條形碼識別_第3頁
基于VC一維條形碼識別_第4頁
基于VC一維條形碼識別_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 嵌入式系統(tǒng)綜合設計題 目:基于VC的一維條形碼識別 學 號: _ 姓 名:張 文 天_ 班 級:12計科A2_ 專 業(yè):計算機科學與技術 指導教師:侯東良_ 日 期: 2015 年12 月20日專心-專注-專業(yè)基于VC的一維條形碼識別摘要條碼技術是如今應用最廣泛的識別和輸入技術之一,由于其包含的信息 量大,識別錯誤率低而在各個方面得到很大的重視。它發(fā)展迅速并被廣泛應用于于工業(yè)、商業(yè)、圖書出版、醫(yī)療衛(wèi)生等各行各業(yè)。本系統(tǒng)采用Micosoft Visual C+6.0作為系統(tǒng)軟件的編程語言和編譯環(huán)境。設計研究主要分為兩部分:一維條形碼的預處理和一維條形碼圖像的特征提取和

2、識別。第一部分首先對采集的EAN-13條碼圖像進行預處理,圖像的預處理主要是條形碼灰度圖像的二值化處理,良好的圖像處理將對后面實現(xiàn)正確譯碼有至關重要的作用。第二部分就是對預處理后的條碼圖像進行特征提取和是識別,我們根據(jù)條形碼的紋理特點和規(guī)則,對其進行特征提取和識別。得到條碼所表示的文本信息。關鍵詞:圖像處理、條形碼識別、EAN-13、二值化、VC6.0目錄1 緒論1.1 條碼技術概述條碼技術是在計算機的應用實踐中產(chǎn)生和發(fā)展起來的一種自動識別技術,條碼應用技術就是應用條碼系統(tǒng)進行的信息處理技術。條碼技術的研究始于20世紀中期,是繼計算機技術應用和發(fā)展應運而生的。隨著70年代微處理器的問世,標志著

3、“信息化社會”的到來,它要求人們對社會上各個領域的信息、數(shù)據(jù)實施正確、有效、及時的采集、傳遞和管理。因此如何代替人的視覺、人的手工操作、或者在復雜的環(huán)境中正確、迅速地獲取信息并加以識別,成為人們普遍關心和有關人員精心研究的課題。通俗的說條形碼是指在淺色襯底上印有深色矩形的線條(也稱條碼)排列而成的編碼,其碼條和空白條的數(shù)量和寬度按一定的規(guī)則(標準)排列。條形碼是由一組規(guī)則排列的條、空、相應的數(shù)字組成。這種用條、空組成的數(shù)據(jù)編碼可以供機器識讀,而且很容易譯成二進制數(shù)和十進制數(shù)。這些條和空可以有各種不同的組合方法,構成不同的圖形符號,即各種符號體系,適用于不同的應用場合。條碼系統(tǒng)是由條碼符號設計、

4、制作及掃描閱讀組成的自動識別系統(tǒng)。微電子技術和激光技術的發(fā)展使得條碼識別系統(tǒng)越來越受到人們的關注。條碼是迄今為止最經(jīng)濟、實用的一種自動識別技術。條碼技術具有以下幾個方面的優(yōu)點:l 可靠準確。 l 數(shù)據(jù)輸入速度快。l 經(jīng)濟便宜。l 靈活、實用。 l 自由度大。 l 設備簡單。l 易于制作,可印刷,稱作為“可印刷的計算機語言”。正因為條碼具有上述迅速,準確,廉價,使用方便,適應性強等優(yōu)點,克服了其他輸入方法的不足,所以他在各個行業(yè)中的發(fā)展可謂突飛猛進,最初應用于物流管理,最引人注目的是pos系統(tǒng),它使商店的定貨管理,盤點,庫存管理,庫存查詢,驗貨管理,收款等各項工作效率得到極大地提高。目前已經(jīng)應用

5、到計算機自動化的各個領域,包括質(zhì)量跟蹤,倉儲管理,物資管理,票證管理,人流物流管理,圖書文獻檢索,醫(yī)療衛(wèi)生,郵電系統(tǒng),安全檢查等領域。 1.2 Visual C+數(shù)字圖像處理基礎BMP文件是Windows操作系統(tǒng)所推薦和支持的圖像文件格式,是一種將內(nèi)存或顯示器的圖像數(shù)據(jù)不經(jīng)過壓縮而直接按位存盤的文件格式,所以稱為位圖(bitmap)文件,因其文件擴展名位BMP,故稱為BMP文件格式,簡稱BMP文件。BMP位圖文件由四個部分組成:位圖頭文件(Bitmap-file Header)、位圖信息頭(Bitmap-information-Header)、調(diào)色板(Palette)和像素數(shù)據(jù)(Image D

6、ata)。l 位圖頭文件:包含文件類型、文件大小和存放信息等信息,結構如下:typedef struct tagBITMAPFILEHEADER WORD bfType; /類型名,必須是0x424D,即字符串“BM”, DWORD bfSize; /文件大小 WORD bfReserved1; /保留字,不考慮 WORD bfReserved2; /保留字,同上 DWORD bfOffBits; /實際位圖數(shù)據(jù)的偏移字節(jié)數(shù),即前三個部分長度之和 BITMAPFILEHEADER;l 位圖信息頭:包含位圖大小、壓縮類型和顏色格式等信息,結構如下:typedef struct 

7、;tagBITMAPINFOHEADER  DWORD biSize; /指定此結構體的長度,為40 LONG biWidth; /位圖寬 LONG biHeight; /位圖高 WORD biPlanes; /平面數(shù),為1 WORD biBitCount /采用顏色位數(shù),可以是1,4,8,24DWORD biCompression; /壓縮方式,0為不壓縮 DWORD biSizeImage; 

8、/實際位圖數(shù)據(jù)占用的字節(jié)數(shù) LONG biXPelsPerMeter; /X方向分辨率LONG biYPelsPerMeter; /Y方向分辨率 DWORD biClrUsed; /使用的顏色數(shù) DWORD biClrImportant; /重要顏色數(shù),如果為0,則表示所有顏色都是重要的  BITMAPINFOHEADER;l 調(diào)色板:Visual C+中,調(diào)色板實際上定義為一個數(shù)組,共有biClrUsed個元素,每個元素類型是一個RGBQUAD結構,其定義如下:typede

9、f struct tagRGBQUAD   BYTE rgbBlue; /該顏色的藍色分量 BYTE rgbGreen; /該顏色的綠色分量 BYTE rgbRed; /該顏色的紅色分量 BYTE rgbReserved; /保留值  RGBQUAD;l 像素數(shù)據(jù):緊跟在調(diào)色板之后的是圖像數(shù)據(jù)字節(jié)陣列,用BYTE數(shù)據(jù)結構存儲。圖像的每一掃描行由表示圖像的連續(xù)像素字節(jié)組成,每一行的字節(jié)數(shù)取決于圖像圖像的顏色數(shù)和用像素表

10、示的圖像寬度。掃描行是由底向上存儲的,這就是說,數(shù)據(jù)存放是從下到上,從左到右。從文件中最先讀到的圖像數(shù)據(jù)是位圖最下面的左邊的第一個像素,然后是左邊第二個像素,而最后讀到的圖像數(shù)據(jù)是位圖最上面一行的最右邊的一個像素。1.3 文本研究意義及內(nèi)容1.3.1 研究意義條形碼技術主要研究如何用條碼標識信息、并將條形碼表示的信息轉換成計算機可識讀的語言,以實現(xiàn)自動輸入、自動識讀、自動統(tǒng)計.在先進的工業(yè)國家里,條碼技術作為一種信息處理技術己成為社會化產(chǎn)物,不僅應用于生產(chǎn)過程,而且也應用于管理過程。在我國條碼技術起步比較晚,但它的發(fā)展非常迅速,己被廣泛用于工業(yè)、商業(yè)、圖書出版、醫(yī)療衛(wèi)生等各行各業(yè)。隨著全球經(jīng)濟

11、貿(mào)易體系的形成,將被更廣泛用于其它領域?,F(xiàn)在,它已變成商品進入國際市場的通行證。圖像處理識讀方法是首先對條碼圖像進行處理,然后利用統(tǒng)計方法,根據(jù)相似邊距離來判別條碼字符,再通過譯碼、校驗、糾錯處理來識讀條碼,這樣將大大降低條碼印刷質(zhì)量以及條碼污染等各種因素的干擾,從而有效地提高條碼的識讀率。1.3.2 研究內(nèi)容本文所研究的是基于圖像處理方式的條碼的識別工作,具體工作如下: l 在Visual C+ MFC框架下,利用工具Class Wizard添加圖像處理類實現(xiàn)位圖文件的讀取及打開;l 對一維條形碼圖像的預處理(二值化)編程;l 利用一維條形碼的紋理特點和規(guī)則,對其進行特征提取和識別的算法研究

12、與實現(xiàn)。 2 一維條形碼技術2.1 一維條形碼簡介條碼由一組規(guī)則排列的條,空及相應的字符組成。條碼的信息靠條和空的不同寬度不同位置來傳遞的,信息量的大小事由條碼的寬度和印刷的精度來決定的,條碼越寬,包容的條和空越多,傳遞的信息量也越大,條碼印刷的精度越高單位長度內(nèi)可以容納的條空也越多,傳遞的信息量也越大。常見的條形碼是由反射率相差很大的黑條和白條排成平行線圖案。條形碼可以標出物品的生產(chǎn)國、制造廠家、商品名稱、生產(chǎn)日期、圖書分類號、類別等許多信息。一般情況下,條碼組成結構如下:l 起始邊界和終止邊界:均為“靜態(tài)區(qū)”,是沒有字元、條紋的空白區(qū)。l 開始讀取信號:放在條碼數(shù)據(jù)信號的第一個字

13、元之前,是一個空白團的特殊條碼,用來辨別條碼數(shù)據(jù)符號的開始信號。l 數(shù)據(jù)信號:數(shù)據(jù)信息的來源。l 終止字元符號:也是一種特殊條紋與空白圖案,告知解碼器該數(shù)據(jù)已經(jīng)輸送完畢。l 檢查和字元:位于數(shù)據(jù)信息碼之后,終止符號之前,檢查解碼后的結果正確與否。2.2 EAN-13碼簡述2.2.1 EAN-13碼的構造European Article Number(EAN)是歐洲物品編碼的縮寫,其中,共計13位代碼的EAN-13是比較通用的一般終端產(chǎn)品的條形碼協(xié)議和標準,主要應用于超級市場和其他零售業(yè),一次這種是日常比較常見的。代碼前3位是國家代碼,中間4位是生產(chǎn)商代碼,后5位是產(chǎn)品代碼,最后一位是自動生成的

14、校驗碼。EAN-13商品條碼由左側空白區(qū)、起始符、左側數(shù)據(jù)符、中間分隔符、右側數(shù)據(jù)符、校驗符、終止符、右側空白區(qū)及供人識別字符組成,共有113個模塊,如圖2.1所示:圖2.1 EAN-條碼符號結構1) 左側空白區(qū):位于條碼符號起始符左側,無印刷符號且與空的顏色相同的區(qū)域。其最小寬度為11個模塊寬。 2) 起始符:位于條碼符號左側,表示信息開始的特殊符號,由3個模塊組成。 3) 左側數(shù)據(jù)符:介于起始符和中間分隔符之間的表示信息的一組條碼字符。表示前綴碼(不包含前置碼)和廠商代碼,共6位數(shù)字。由42個模塊組成。 4) 中間分隔符:位于條碼符號的中間位置,是平分條碼符號

15、的特殊符號,由5個模塊組成。 5) 右側數(shù)據(jù)符:中間分隔符右側的一組選自C子集的條碼字符,表示5位商品代碼,又35個模塊組成。 6) 校驗符:最后一個條碼字符,選自C子集,由7個模塊組成,表示一個校驗字符。 7) 終止符:位于條碼符號右側,表示信息結束的特殊符號,由3個模塊組成。 8) 右側空白區(qū):在終止符之外的無印刷符號且與空的顏色相同的區(qū)域,其最小寬度為7個模塊。2.2.2 EAN-13碼的編碼規(guī)則表2.2說明了EAN-13條碼中的每個數(shù)位應該如何編碼,這要取決于這個數(shù)位位于條碼的哪半邊(左邊還是右邊)。在這種情況下,一個左手邊數(shù)位的編碼(奇數(shù)性還是

16、偶數(shù)性)將取決于數(shù)制碼的第一個數(shù)位的值(見下表中奇偶性編碼)。表2.2 EAN字符集編碼表觀察發(fā)現(xiàn):l 一個EAN-13字符使用7個元素來描述,包含2個條和2個空間。任何條或空間的長度都不會超過4個元素。l 條碼左手邊的所有字符總是以0(空間)開始的,而條碼右手邊的所有字符都是以1(條)開始的。l  如果把1變成0,把0變成1,那么“右手邊”編碼模式和“左手邊奇數(shù)”編碼模式是完全相同的。l “左手邊偶數(shù)”編碼模式是基于“左手邊奇數(shù)”編碼模式的。為了得到偶數(shù)編碼,可以按照如下步驟對左手邊編碼模式進行操作:1)把所有的1變成0,0變成1。2)將得到的結果編碼反著讀(從右到左)就得到了“左

17、手邊偶數(shù)”編碼模式。表2.3說明了條碼左手邊每個字符按照哪種奇偶性進行編碼。奇偶性取決于EAN-13值得第一個數(shù)位。例如,我們的CD的EAN-13值是25。在這個條碼中,數(shù)制碼的第一個數(shù)位就是第一個“0”,所以,奇偶性就應該遵循下表中的數(shù)字0一行:表2.3 EAN奇偶性編碼表觀察發(fā)現(xiàn):l 第二個數(shù)制位總是按照奇數(shù)性進行編碼(這在解碼時很重要)。l 一個UPC-A條碼的第一個數(shù)制位總是0,因此,全部使用奇數(shù)性。l 所有EAN-13符號(那些第一個數(shù)制位不是0的)始終有3個左手邊字符采用偶數(shù)性編碼,有2個采用奇數(shù)性編碼。這兩個表是EAN-13編碼的關鍵和核心,并且兼容現(xiàn)有的UPC-A符號。2.2.

18、3 EAN-13編碼的校驗方法校驗碼的主要作用是防止條形碼標志因印刷質(zhì)量低劣或包裝運輸中引起標志破損而造成掃描設備誤讀信息。作為確保商品條形碼識別正確性的必要手段,條形碼用戶在標志設計完成后,代碼的正確與否直接關系到用戶的自身利益。對代碼的驗證,校驗碼的計算是標志商品質(zhì)量檢驗的重要內(nèi)容之一,應該謹慎嚴格,需確定代碼無誤后才可用于產(chǎn)品包裝上。 下面是EAN-13條形碼的校驗碼驗算方法,步驟如下:(1)以未知校驗位為第1位,由右至左將各位數(shù)據(jù)順序排隊(包括校驗碼);(2)由第2位開始,求出偶數(shù)位數(shù)據(jù)之和,然后將和乘以3,得積 ;(3)由第3位開始,求出奇數(shù)位數(shù)據(jù)之和,得 ;(4

19、)將 和 相加得和 ;(5)用 除以10,求得余數(shù),并以10為模,取余數(shù)的補碼,即得校驗位數(shù)據(jù)值 ;(6)比較第1位的數(shù)據(jù)值與C的大小,若相等,則譯碼正確,否則進行糾錯處理。 3 一維條形碼的識別3.1 圖像的預處理3.1.1 圖像的二值化處理灰度化二值化,為實現(xiàn)數(shù)字圖像的閾值變換提供前提條件,要將256色位圖轉變?yōu)榛叶葓D,灰度與RGB值之間的關系為:Y=0299R+0587G+O114B二值化是利用點運算中的閾值變換理論將灰度圖轉化為二值圖像。二值化中閾值T的選擇是關鍵,在整幅圖中,我們最關心的是條碼,條碼是由條空(黑白)組成的,又因為本實驗中所用圖像

20、為256色位圖,故采用雙峰法得到閾值T,對其閥值設置為128,此閾值可以有效地把條碼的條空區(qū)分出來。下圖為實驗中二值化圖像: 圖3.2 二值化后的條碼圖像部分代碼如下:void GrayTrans:BinaryImage(int threshold)if(m_pImgDataOut!=NULL)delete m_pImgDataOut;m_pImgDataOut=NULL;if(m_lpColorTableOut!=NULL)delete m_lpColorTableOut;m_lpColorTableOut=NULL;m_nBitCountOut=8;m_nColorTableLengthO

21、ut=ComputeColorTabalLength(m_nBitCountOut);if(m_nColorTableLengthOut!=0)m_lpColorTableOut=new RGBQUADm_nColorTableLengthOut;for(int i=0; i<m_nColorTableLengthOut;i+)m_lpColorTableOuti.rgbBlue=i;m_lpColorTableOuti.rgbGreen=i;m_lpColorTableOuti.rgbRed=i;m_lpColorTableOuti.rgbReserved=0;int pixelByt

22、eIn=3;int lineByteIn=(m_imgWidth*pixelByteIn+3)/4*4;m_imgWidthOut=m_imgWidth;m_imgHeightOut=m_imgHeight;int lineByteOut=(m_imgWidth*m_nBitCountOut/8+3)/4*4;m_pImgDataOut=new unsigned charlineByteOut*m_imgHeight;int m,n;for(m=0;m<m_imgHeight;m+)for(n=0;n<m_imgWidth;n+)*(m_pImgDataOut+m*lineByte

23、Out+n)=0.11*(m_pImgData+m*lineByteIn+n*pixelByteIn+0)+0.59*(m_pImgData+m*lineByteIn+n*pixelByteIn+1)+0.30*(m_pImgData+m*lineByteIn+n*pixelByteIn+2)+0.5;int i,j;for(i=0;i<m_imgHeight;i+)for(j=0;j<m_imgWidth;j+)if(*(m_pImgDataOut+i*lineByteOut+j)<threshold)*(m_pImgDataOut+i*lineByteOut+j)=0;e

24、lse*(m_pImgDataOut+i*lineByteOut+j)=255;3.1.2 條碼圖像的提取圖像提取是把圖像中的條碼部分割出來,得出寬度序列,用于后續(xù)的條碼譯碼。通過水平方向和垂直方向的直方圖統(tǒng)計,尋找二值化后圖像條碼區(qū)域,來搜索得到條碼圖像寬度序列。為下一步的字符識別做好準備。3.2條碼圖像的字符識別EAN-13是一種(7, 2)碼,即每個字符的總寬度為7個模塊寬,交替由兩個條和兩個空組成,而每個條空的寬度不超過4個模塊,如圖4所示。圖3.1 EAN-13條碼寬度的定義圖3.1中 表示當前字符中四個相鄰條、空的寬度, 是一個字符的寬度,滿足:, 為整數(shù) ;且 。用 表示當前字符單位模塊的寬度,則 。令 , 。由 的值可以得到編碼。例如:若 ,且條碼的排列為條空條空,則可知當前字符的編碼為,是右側偶字符7。 ,且條碼的排列為空條空條,則可知當前字符的編碼為,是左側偶字符9。識別結果如下圖:圖3.2 EAN-13條碼識別結果4 結論在對條碼圖像作相應的圖像預處理之后,對得到的二值條碼圖像利

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論