欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

線性條碼識別方法和系統(tǒng)的制作方法

文檔序號:6434304閱讀:314來源:國知局
專利名稱:線性條碼識別方法和系統(tǒng)的制作方法
線性條碼識別方法和系統(tǒng)
技術領域
本發(fā)明涉及線性條碼(linear barcode)識別領域,尤其涉及ー種線性條碼識別方法和系統(tǒng)。
背景技木線性條碼也常被稱為ー維條碼(ID barcode),其是將寬度不等的多個黑條和空白,按照一定的編碼規(guī)則排列,用以表達一組信息的圖形標識符。目前在エ業(yè)和民用領域應用得非常廣泛。常見的線性條碼包括統(tǒng)ー商品碼(Universal Product Code,簡稱UPC碼)、歐洲商品編碼(European Article Number,簡稱EAN碼)、日本商品編碼(Japanese ArticleNumber,簡稱 JAN 碼)、Code 25、Code 39, Code 128 等等。常用的條碼掃描設備通常由光源(比如激光)、光學透鏡、感光器件(例如(XD,CMOS等)、解碼邏輯電路和1/0接ロ等組件構成。簡單來講,所述光源投射光至條碼上,從條碼處反射的光透過所述光學透鏡進入感光器件表面,經(jīng)過光電轉換、模數(shù)轉換等一系列處理后形成條碼的數(shù)字圖像,然后解碼邏輯電路對攝取的圖像進行分析和解碼。目前的條碼掃描設備一般都是專用的條碼掃描設備,比如商場內(nèi)的與零售系統(tǒng)連接的條碼掃描器、圖書館內(nèi)的與圖書管理系統(tǒng)連接的條碼掃描器或醫(yī)院內(nèi)的與電腦系統(tǒng)連接的條碼掃描器,其可以采集到高質(zhì)量的條碼圖像,這樣可以較為容易的實現(xiàn)條碼的解碼。目前很多便攜式電子設備比如手機、PDA(個人數(shù)字助理)等都配置有攝像頭裝置,利用所述攝像頭裝置用戶可以進行拍攝照片和視頻等應用。對于較低配置的攝像頭模組,比如存在于大量中低端手機中的攝像頭模組,由于是采用定焦鏡頭(fixed-focuslens),導致拍攝的圖像經(jīng)常由于對焦不準而處于模糊狀態(tài)。該類條碼圖像難以用通常的條碼偵測技術進 行偵測,另外也難以確認條碼在圖像中的位置,而且傳統(tǒng)的條碼解碼技術也會由于圖像模糊而失效。因此,有必要開發(fā)出一種可以從視頻圖像中識別線性條碼的新方案來克服上述問題。

發(fā)明內(nèi)容本發(fā)明要解決的技術問題之ー在于提供ー種線性條碼識別方法,其可以識別模糊圖像中的條碼。本發(fā)明要解決的技術問題之ニ在于提供ー種線性條碼識別裝置,其可以識別模糊圖像中的條碼。為了解決上述問題,根據(jù)本發(fā)明的ー個方面,本發(fā)明提供了ー種線性條碼識別方法,其包括獲取圖像;在所述圖像中進行條碼檢測;在所述圖像中進行條碼定位以確定條碼的邊界;估計所述圖像的模糊度;根據(jù)所述模糊度從若干標準特征矢量集中選擇對應的ー個標準特征矢量集,每ー個標準特征矢量集對應ー個模糊度范圍并包括若干標準特征矢量;基于所述條碼的邊界從圖像中提取所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量;和利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值。進ー步的,在所述圖像中進行條碼檢測包括在圖像中捜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點;和基于搜索到的各個條形區(qū)域的端點確定搜索到的各個條形區(qū)域是否屬于ー個條碼,如果搜索到的各個條形區(qū)域?qū)儆讴`個條碼,則判定所述圖像中包含有條碼。更進一歩的,所述在圖像中捜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點包括選定一行像素點;在選定的一行像素點中選定ー個黑色像素點作為初始像素點;從初始像素點開始依次向下或/和向上搜索臨近最低灰度值的像素點,并判斷捜索到的像素點是否為黒色像素點,如果是黑色像素點,則依次記錄其坐標,如果不是黒色像素點,則確定前ー個黑色像素點為所述黒色區(qū)域的端點;將所記錄的黑色像素點的坐標進行曲線擬合得到一曲線;和基于該曲線確定所述黑色區(qū)域是否為條形區(qū)域。進ー步的,在所述圖像中進行條碼定位以確定所述條碼的邊界包括在圖像中搜索至少兩個左邊界點和至少兩個右邊界點;和分別基于捜索到的左右邊界點確定條碼的左右邊界。更進一歩的,所述在圖像中捜索至少兩個左邊界點和至少兩個右邊界點包括選取一行像素點,取預定像素寬度的滑動窗ロ,該滑動窗ロ從該行像素點的第一端開始朝向第二端逐像素進行移動;每移動到一個新的位置,比較所述滑動窗ロ左右兩側像素點灰度值的差異,當該差異超過預定灰度值差異門限值時,即認為邊界點已經(jīng)位于所述滑動窗ロ之內(nèi);在所述滑動窗口中每ー像素點的靠近第二端的ー側選取預定數(shù)量的像素點,統(tǒng)計選取的這些像素點的左端點和右端點的灰度值差異,當所述灰度值差異達到最大值時,記錄所述滑動窗口中對應的像素點位置,將選取的這些像素點在圖像中的橫坐標作為橫坐標,將選取的這些像素點的灰度值作為縱坐標,進行線性擬合得到第一直線;在記錄的像素點的靠近第一端的ー側選取預定數(shù)量的像素點,找到選取的這些像素點中的屬于背景區(qū)域的像素點,將確定是背景區(qū)域的像素點在圖像中的橫坐標作為橫坐標,將確定是背景區(qū)域的像素點的灰度值作為縱坐標,進行線性擬合得到第二直線;和計算第一直線和第二直線的交點,該交點的橫坐標就是該行像素點中的邊界點的橫坐標,該行像素點的縱坐標為該行像素點中的邊界點的縱坐標。進ー步的,估計所述圖像的模糊度包括統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度區(qū)域附近的像素點的灰度值;利用統(tǒng)計到的像素點的灰度值統(tǒng)計相鄰像素點的灰度值差異;將統(tǒng)計的相鄰像素點的灰度值差異與預定灰度值差異門限值進行對比來判定所述過渡區(qū)域和所述背景區(qū)域的第一過度邊界以及所述過渡區(qū)域與所述條形區(qū)域的第二過度邊界;計算所述過度區(qū)域的兩個過度邊界之間的寬度;和基于所述過度區(qū)域的寬度確定所述模糊度。進ー步的,基于條碼類型所定義的ー個或若干個標準條碼數(shù)據(jù)符生成對應模糊度范圍的ー個標準特征矢量。進ー步的,基于所述條碼的邊界從圖像中提取所述條碼的條碼數(shù)據(jù)符的測試特征矢量包括根據(jù)所述條碼的邊界確定所述條碼的每個條碼數(shù)據(jù)符的位置;根據(jù)所述條碼的每個條碼數(shù)據(jù)符的位置從圖像中提取灰度信息,并基于提取的灰度信息生成該條碼數(shù)據(jù)符對應的測試特征矢量。進ー步的,根據(jù)所述條碼的邊界確定所述條碼的每個條碼數(shù)據(jù)符的位置還包括根據(jù)所述模糊度和所述條碼的邊界確定測試范圍;在測試范圍內(nèi)依次確定所述條碼的合法位置;和基于確定的所述條碼的合法位置確定所述條碼的每個條碼數(shù)據(jù)符的位置。進ー步的,利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值包括將測試特征矢量組和其在選擇的標準特征矢量集中對應的若干標準特征矢量組進行相似度比較,所述測試特征矢量組為所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量的組合,所述標準特征矢量組是選定的標準特征矢量集中的若干標準特征矢量的組合;確定和所述測試特征矢量組總相似度最高的標準特征矢量組,基于所述測試特征矢量組中的測試特征矢量和所述標準特征矢量組中的標準特征矢量的單相似度來確定所述測試特征矢量組和所述標準特征矢量組的總相似度;根據(jù)總相似度最高的標準特征矢量組確定所述條碼的條碼值。根據(jù)本發(fā)明的另一方面,本發(fā)明提出一種線性條碼識別系統(tǒng),其包括攝像模塊,用于獲取圖像;條碼檢測模塊,用于在所述圖像中進行條碼檢測;條碼定位模塊,用于在所述圖像中進行條碼定位以確定所述條碼的邊界;模糊度估計模塊,用于估計所述圖像的模糊度;條碼解碼模塊,用于根據(jù)所述模糊度從若干標準特征矢量集中選擇對應的ー個標準特征矢量集,基于所述條碼的邊界從圖像中提取所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量,以及利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值,其中每ー個標準特征矢量集對應ー個模糊度范圍并包括若干標準特征矢量。與現(xiàn)有技術相比,在本發(fā)明中針對不同的模糊度范圍設定了不同的標準特征矢量集,根據(jù)圖像的模糊度來選定對應的標準特征矢量集,隨后利用提取的所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集進行解碼以得到所述條碼的條碼值,這樣可以在圖像模糊的情況下仍能實現(xiàn)對條碼的正確解碼。關于本發(fā)明的其他目的,特征以及優(yōu)點,下面將結合附圖在具體實施方式
中詳細描述。

結合參考附圖及接下來的詳細描述,本發(fā)明將更容易理解,其中同樣的附圖標記對應同樣的結構部件,其中圖1為本發(fā)明中的線性條碼識別方法在一個實施例中的流程示意圖;圖2a和2b分別示出了兩個條碼的示例;圖3為本發(fā)明中的條碼檢測方法在一個實施例中的流程示意圖;圖4為本發(fā)明中在進行條碼檢測時的條形區(qū)域捜索方法在一個實施例中的流程示意圖;圖5示出了在條形區(qū)域捜索時圖像中的查找區(qū)域和停止區(qū)域的相對位置關系;圖6為本發(fā)明中的條碼定位方法在一個實施例中的流程示意圖;圖7示出了在邊界點捜索時圖像中的捜索區(qū)域的位置的示例 ;圖8為本發(fā)明中在進行條碼定位時的邊界點搜索方法在一個實施例中的流程示意圖;圖9示出了灰度圖像中的一行像素點的灰度值曲線示例;圖10為本發(fā)明中的模糊度估計方法在一個實施例中的流程示意圖;圖11如圖2b所示的一列穿過ー個條形區(qū)域的像素點的灰度值曲線示例;圖12為本發(fā)明中的條碼解碼方法在一個實施例中的流程示意圖;圖13為本發(fā)明中在進行條碼解碼時的測試特征矢量提取方法在一個實施例中的流程示意圖;圖14示出了 EAN-13條碼的結構示例;圖15為本發(fā)明中在進行條碼解碼時的條碼值獲取方法在一個實施例中的流程示意圖;圖16為本發(fā)明中的解碼驗證方法在一個實施例中的流程示意圖;圖17為本發(fā)明中的線性條碼識別系統(tǒng)在ー個實施例中的結構示意
圖18為本發(fā)明中的條碼檢測模塊在一個實施例中的結構示意圖;圖19為本發(fā)明中的條碼定位模塊在一個實施例中的結構示意圖;和圖20為本發(fā)明中的條碼解碼模塊在一個實施例中的結構示意圖。
具體實施方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本發(fā)明作進ー步詳細的說明。本發(fā)明的詳細描述主要通過程序、步驟、邏輯塊、過程或其他象征性的描述來呈現(xiàn),其直接或間接地模擬本發(fā)明中的技術方案的運作。所屬領域內(nèi)的技術人員使用此處的這些描述和陳述向所屬領域內(nèi)的其他技術人員有效的介紹他們的工作本質(zhì)。此處所稱的“ー個實施例”或“實施例”是指與所述實施例相關的特定特征、結構或特性至少可包含于本發(fā)明至少ー個實現(xiàn)方式中。在本說明書中不同地方出現(xiàn)的“在ー個實施例中”并非必須都指同一個實施例,也不必須是與其他實施例互相排斥的単獨或選擇實施例。此外,表示ー個或多個實施例的方法、流程圖或功能框圖中的模塊順序并非固定的指代任何特定順序,也不構成對本發(fā)明的限制。本發(fā)明提出利用圖像分析和模式識別(pattern recognition)理論對視頻圖像中的線性條形碼(linear barcodes)進行自動識別的方法及系統(tǒng)。該方法及系統(tǒng)能夠有效解決模糊圖像中條碼的偵測、定位和識別的問題,從而使得采用定焦鏡頭的攝像頭模組作為視頻圖像采集設備的計算機系統(tǒng)也能具備條碼識別能力,降低了對距離控制的要求和對攝像頭模組硬件配置的要求。圖1為本發(fā)明中的線性條碼識別方法I在一個實施例中的流程示意圖。如圖1所示,所述線性條碼識別方法I包括如下步驟。步驟100,攝像頭獲取連續(xù)的視頻圖像。所述攝像頭可以是采用定焦鏡頭(fixed-focus lens),當然也可以采用變焦鏡頭。步驟200,對所述視頻圖像進行預處理得到固定尺寸的灰度圖像。 所述預處理可以包括裁剪、尺寸變換以及彩色圖像轉灰度像等操作。
步驟300,在灰度圖像中進行條碼檢測,如果檢測到條碼,則進入下一步驟,否則,返回步驟200繼續(xù)條碼識別。步驟400,在灰度圖像中定位條碼的左右邊界,如果定位到左右邊界,則進入下一步驟,否則返回步驟200繼續(xù)條碼識別。步驟500,估計灰度圖像的模糊度,如果估計成功,則進入下一步驟,否則返回步驟200繼續(xù)條碼識別。步驟600,根據(jù)所述模糊度和所述條碼的左右邊界對灰度圖像中的條碼進行解碼得到所述條碼的條碼值,如果解碼成功,則進入下ー步驟,否則返回步驟200繼續(xù)條碼識別。步驟700,確定所述條碼的條碼值是否可信,如果可信,則輸出所述條碼的條碼值并結束本流程,否則返回步驟200繼續(xù)條碼識別。步驟500和步驟400的順尋是可以互換的。在一個實施例中,所述線性條碼識別方法I也可以不包括如步驟700的解碼驗證的步驟,而是在步驟600解碼成功后直接結束本流程。下面將結合具體實例分別對條碼檢測(步驟300)、條碼定位(步驟400)、模糊度估計(步驟500)、條碼解碼(步驟600)以及解碼驗證(步驟700)詳細介紹。條碼檢測圖3為本發(fā)明中的條碼檢測方法300(對應于所述線性條碼識別方法I的步驟300)在一個實施例中的流程示意圖。如圖3所示,所述條碼檢測方法300包括以下步驟。步驟310,在圖像中捜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點。如果未捜索到至少兩個條形區(qū)域,則判定所述圖像中不包含有條碼,如果搜索到了至少兩個條形區(qū)域,則進入下ー個步驟。如圖2a所示,其示出了一個條碼示例,其包括有多個大致平行的條形區(qū)域,每個條形區(qū)域包括有位于兩端的端點,條碼區(qū)域外是背景區(qū)域。圖4為ー種條形區(qū)域搜索方法在一個實施例中的流程示意圖。下面結合圖4來示例性的詳細介紹如何在圖像中搜索條形區(qū)域并確定所述條形區(qū)域的端點。步驟311,在圖像中設定查找區(qū)域和停止區(qū)域。如圖5所示,所述查找區(qū)域(查找區(qū)域邊界所圍繞的區(qū)域)的范圍小于等于所述停止區(qū)域(停止區(qū)域邊界所圍繞的區(qū)域),所述停止區(qū)域的范圍大于等于所述查找區(qū)域而小于等于圖像(圖像邊界所圍繞的區(qū)域)。所述查找區(qū)域可以是整個圖像,也可以是在圖像中事先選定的一定寬和高的矩形區(qū)域。所述圖像邊界可以為預處理后的灰度圖像的邊界。在一個特別的示例中,所述查找區(qū)域等于所述停止區(qū)域,也等于所述圖像,這樣就相當于未設置查找區(qū)域和停止區(qū)域,直接在整個圖像上進行查找或搜索。換句話說,在此種情況下,相當于未設置查找區(qū)域和停止區(qū)域。類似的,在所述停止區(qū)域等于所述圖像時,相當于未設置停止區(qū)域。查找區(qū)域和停止區(qū)域可以根據(jù)具體條碼識別應用的背景或者系統(tǒng)硬件的處理能力等因素來確定。比如在一些應用中,條碼所在的大致位置是確定的,則查找區(qū)域只需要將該大致位置包含在內(nèi)即可。再比如在一些應用中,由于硬件設備處理能力有限,無法對整幅圖像進行全圖像搜索,則可以設定在圖像的ー個固定區(qū)域作為查找區(qū)域。
步驟312,在所述查找區(qū)域內(nèi)選定一行像素點。在一個實施例中,可以選定所述查找區(qū)域的任意一行像素點,比如所述查找區(qū)域的中間ー個像素點或第一行像素點。步驟313,在選定的一行像素點中選定ー個黑色像素點作為初始像素點。 在一個實施例中,黑色像素點的判定可以是比較選定的像素點和臨近像素點的灰度差異,當灰度差異達到預先設定的ー個灰度差異門限值的時候即可認定該像素點是ー個黒色像素點,否則認為是背景像素點(或稱為白色像素點),繼續(xù)選定另ー個像素點,記錄選定的黒色像素點的坐標。在另ー個實施例中,也可以直接將像素點的灰度值與ー個灰度閾值進行比較,在其灰度值小于所述灰度閾值時被確定為黒色像素點。如果在選定的一行像素點中沒有找到黑色像素點,則在查找區(qū)域內(nèi)另選一行像素點重復步驟313,直到找到ー個黑色像素點或在查找區(qū)域內(nèi)查找完所有行像素。步驟314,從初始捜索像素點開始搜索所述初始像素點所在的黒色區(qū)域的端點。將所述初始像素點所在的黒色區(qū)域作為ー個條形區(qū)域的候選,所在的黒色區(qū)域的端點作為候選條形區(qū)域的條形方向的端點。所述條形區(qū)域的端點可以是在該條形區(qū)域的條形方向的最后ー個黑色像素點,超出其外的則是背景像素點。在一個實施例中,從初始像素點開始依次向上和/或向下搜索臨近最低灰度值的像素點,并判斷捜索到的像素點是否為黒色像素點,如果是黑色像素點,則依次記錄其坐標,如果不是黒色像素點,則確定前一個黑色像素點為所述黒色區(qū)域的端點。如果搜索到的黒色像素點在停止區(qū)域之內(nèi),則可以繼續(xù)搜索,如果在停止區(qū)域之外,則停止捜索,這樣可以節(jié)省計算量。所述向上或向下是指整體向上或向下,比如可以是傾斜向上或向下,也可以是垂直向上或向下。由于搜索的是臨近最低灰度值的像素點,因此即使所述條碼發(fā)生很大的傾斜,利用本發(fā)明中的條碼檢測方法仍能對其條形區(qū)域檢測,進而可以實現(xiàn)條碼的檢測,這樣使得條碼檢測可以不受拍攝方向或角度的影響。在搜索條形區(qū)域的端點過程中,由于是從黒色像素點開搜索另外的黒色像素點,因此可以是比較捜索到的像素點和上一像素點的灰度差異,當灰度差異小于預先設定的ー個灰度差異門限值的時候即可認定該像素點是ー個黒色像素點,否則可以認為是背景像素點(或稱為白色像素點)。在條形區(qū)域的端點的搜索過程中,一直是在灰度圖像上進行搜索的,這樣做比較合適在模糊圖像中搜索條形區(qū)域的端點。如果在步驟314中查找端點失敗,則在查找區(qū)域內(nèi)另選一行像素點重復上述步驟313和314,直到找到端點或者在查找區(qū)域內(nèi)查找完畢而未找到端點。步驟315,根據(jù)初始像素點和其所在的黒色區(qū)域的端點的位置確定所述黑色區(qū)域是否為條形區(qū)域。在一個實施例中,將所記錄的黑色像素點(包括初始像素點、所述黑色區(qū)域的端點以及其他記錄的黑色像素點)的坐標進行曲線擬合(curve fitting)得到一第一曲線,之后基于該第一曲線確定所述黑色區(qū)域是否為條形區(qū)域。具體的,統(tǒng)計該第一曲線在各黒色像素點附近的曲率(curvature)以及各黒色像素點到該第一曲線的距離。如果所述第一曲率小于事先規(guī)定的第一曲率門限值而且所有的距離不超過事先規(guī)定的第一距離門限值,則認為該黑色區(qū)域是一個條形區(qū)域;否則認為該 黑色區(qū)域不是一個條形區(qū)域。
在利用上述方法在圖像中搜索一個條形區(qū)域,之后可以采用相同的方法在搜索到 的條形區(qū)域的臨近區(qū)域中再搜索一定數(shù)量的其它條形區(qū)域,并確定它們的端點。
步驟320,基于搜索到的各個條形區(qū)域的端點確定各個條形區(qū)域是否屬于一個條 碼,如果搜索到的各個條形區(qū)域?qū)儆谕粋€條碼,則可以判定所述圖像中包含有條碼,否則 判定所述圖像中不包含條碼。需要指明的是,所述圖像中不包括條碼包括兩種情況,一種是 真的不包括條碼,另一種是包括兩個或多個條碼。對于包括兩個或多個條碼的情況,在本發(fā) 明中被視為不包括條碼。
在一個實施例子中,計算搜索到的各條形區(qū)域的方向的差異;將搜索到的各條形 區(qū)域的同側的端點的坐標進行曲線擬合得到一第二曲線;基于各條形區(qū)域的方向的差異和 /或所述第二曲線確定各個條形區(qū)域是否屬于一個條碼。
具體的,統(tǒng)計該第二曲線在這些同側端點附近的曲率以及這些同側端點到該第二 曲線的距離;如果該曲率小于事先規(guī)定的第二曲率門限值,各條形區(qū)域方向上的差異不超 過事先規(guī)定的第二角度門限值,各條形區(qū)域的同側的端點和利用該側端點擬合的第二曲線 之間的距離不超過事先規(guī)定的第二距離門限值。
如果在圖像中未檢測到條碼,則認為條碼檢測失敗。
需要說明的是,圖3只是示出了所述線性條碼識別方法I中的條碼檢測步驟300 的一個實施例,在其他實施例中,還可以采用其他條碼檢測方法。此外,所述條碼檢測方法 300也并不局限于所述線性條碼識別方法10,其還可以應用于其他條碼識別的應用中。
條碼定位
圖6為本發(fā)明中的條碼定位方法400(對應于所述線性條碼識別方法I的步驟 400)在一個實施例中的流程示意圖。如圖6所示,所述條碼定位方法400包括以下步驟。
步驟410,在圖像中搜索至少兩個左邊界點和至少兩個右邊界點。
在一個實施例中,為降低計算量,可以在圖像中設定搜索區(qū)域,該搜索區(qū)域可以根 據(jù)需要設定,在默認的情況下可以等于整個圖像區(qū)域,條碼的定位是在搜索區(qū)域內(nèi)進行的 搜索的。所述圖像可以為預處理后的灰度圖像。
在條碼檢測方法400中,已經(jīng)在圖像中檢測到了條碼并且可以在圖像中檢測到了 至少兩個條形區(qū)域及其端點。如圖7所示,其示出了進行條碼定位的圖像(圖像邊界圍繞 的區(qū)域)、檢測出的一個條形區(qū)域的條形端點11和12、檢測出的另一個條形區(qū)域的條形端 點21和22,根據(jù)條形區(qū)域的同側端點11和21擬合而成的擬合直線I (可以看作是條碼的 上邊界),根據(jù)條形區(qū)域的同側端點12和22擬合而成的擬合直線2 (可以看作是條碼的下 邊界)??梢钥闯觯瑮l碼的左右邊界應該是位于擬合直線I和2之間的。
在一個優(yōu)選的實施例中,可以將搜索區(qū)域設定在擬合直線I和2之間,比如搜索區(qū) 域是一個橫向放置的矩形區(qū)域,其頂部不超過位于上端的擬合直線I的最低值,其底部不 低于位于下端的擬合直線2的最高值,其左右兩端則是在圖像的左右邊界附近。
圖8為一種條碼的邊界點搜索方法在一個實施例中的流程示意圖。下面參照圖8 示例性的詳細介紹如何在圖像中搜索一個邊界點。
步驟411,從搜索區(qū)域中選取一行像素點,取一個預定像素寬度的滑動窗口,該滑動窗口從該行像素點的第一端(左端或右端中的一個)開始朝向第二端(左端和右端的另 一個)逐像素進行移動。所述預定像素寬度可以是指所述滑動窗口包括預定個像素點,所 述第一端可以是左端和右端中的一個,第二端是左端和右端中的另一個。
步驟412,每移動到一個新的位置,就會比較滑動窗口左右兩側像素點灰度值的差 異,當該差異超過預定灰度值差異門限值時,即認為邊界點已經(jīng)位于滑動窗口之內(nèi)。
請參圖9所示,其示出了搜索區(qū)域內(nèi)單行像素點的灰度值曲線、虛線框表示的滑 動窗口和條碼的一個左邊界點,縱坐標軸表示像素點的灰度值,橫坐標軸表示像素點在該 行像素點中的位置。
步驟411和412可以統(tǒng)稱為邊界點的粗略查找。
步驟413,在所述滑動窗口中每一像素點的靠近第二端的一側選取預定數(shù)量的像 素點,統(tǒng)計選取的這些像素點的左端點和右端點的灰度值差異,當所述灰度值差異達到最 大值時,記錄所述滑動窗口中對應的像素點位置,將選取的這些像素點在圖像中的橫坐標 作為橫坐標,將它們的灰度值作為縱坐標,進行線性擬合(Linear regression)得到第一直 線。
步驟414,在記錄的像素點的靠近第一端的一側選取預定數(shù)量的像素點,找到選取 的這些像素點中的屬于背景區(qū)域的像素點,將確定是背景區(qū)域的像素點在灰度圖像中的橫 坐標作為橫坐標,將它們的灰度值作為縱坐標,進行線性擬合得到第二直線。
在一個實施例中,可以根據(jù)下述方法來判斷一個像素點是否屬于背景區(qū)域計算 該像素點與相鄰像素點的灰度值差異,當灰度值差異小于預定灰度值差異門限值的時候即 認為該像素點與相鄰像素點同屬于背景區(qū)域。
步驟415,計算第一直線和第二直線的交點,該交點的橫坐標就是在搜索區(qū)域中對 應該行像素點的第一邊界點的橫坐標,該行像素點的縱坐標為第一邊界點的縱坐標。
如圖9所示,所述第一直線類似于左邊界點的右側的像素灰度線,所述第二直線 類似于左邊界點的左側的像素灰度線,兩條像素灰度線交匯處即為邊界像素點。
這樣就找到了一個第一邊界點。步驟413、414和415可以統(tǒng)稱為邊界點的精確定 位查找。同樣的,在搜索區(qū)域內(nèi)另選一行像素點,之后從使該滑動窗口從該行像素點的第一 端開始朝向第二端逐像素進行移動,進而找到另一個第一邊界點。同理,可以將滑動窗口從 第二端向第一端逐像素滑動就可以在搜索區(qū)域內(nèi)搜索一定數(shù)量的第二邊界點。
需要注意的是,如果選取的一行像素的第一端為左端,即從所述搜索區(qū)域的左邊 界開始搜索,則第一邊界點為左邊界點,第二邊界點為右邊界點,如果選取的一行像素的第 一端為右端,即從所述搜索區(qū)域的右邊界開始搜索,則第一邊界點為右邊界點,第二邊界點 為左邊界。
步驟420,分別基于搜索到的左右邊界點確定條碼的左右邊界。
在一個實施例中,將搜索到的左邊界點(同側邊界點)擬合成一條曲線,該曲線在 搜索到的左邊界點附近的曲率需要小于一個預定曲率門限值;根據(jù)搜索到的左邊界點到所 述曲線的距離判斷是否有非法左邊界點,如果搜索到的一個左邊界點到所述曲線的距離大 于預定距離門限,則認為該邊界點為非法邊界點;如果有,則去除非法左邊界點,并對剩余 的左邊界點再次擬合成一條曲線,并基于該曲線確定左邊界。
同樣的,可以采用同樣的操作來實現(xiàn)基于搜索到的右邊界點得到條碼的右邊界。
如果在圖像中未確定到條碼的左右邊界,則認為條碼定位失敗。
需要說明的是,圖6只是示出了所述線性條碼識別方法I中的條碼檢測步驟400 的一個實施例,在其他實施例中,還可以采用其他條碼定位方法。此外,所述條碼定位方法 400也并不局限于所述線性條碼識別方法I,其還可以應用于其他條碼識別的應用中。
模糊度估計
圖2a示出了一張清晰的條碼圖像,圖2b示出了一張模糊的條碼圖像,圖中示出了 圖像的邊界,條碼的左邊界和右邊界,條形區(qū)域及其端點、背景區(qū)域。為了對所述模糊圖像 中的條碼進行解碼,需要估計圖像的模糊度?,F(xiàn)有技術中有很多種模糊度估計的方法,也有 很多種模糊度表示的方式,這些都可以用于本發(fā)明的條碼解碼方法中。
在一個實施例中,可以基于條碼的條形區(qū)域與背景區(qū)域之間的過度區(qū)域的寬度來 確定所述模糊度。如圖2a所示,所述條形區(qū)域為黑色區(qū)域,所述背景區(qū)域為白色,在模糊 前,所述條形區(qū)域和所述背景區(qū)域的邊緣比較陡峭,在模糊之后,所述條形區(qū)域和所述背景 區(qū)域的邊緣變得比較平緩,形成一個過渡區(qū)域。如圖11所示,其示出了如圖2b所示的一列 穿過一個條形區(qū)域的像素點的灰度值曲線,dl線的左側為背景區(qū)域,d2線的右側為條形區(qū) 域,dl和d2之間形成過渡區(qū)域,過渡區(qū)域的寬度可以反映圖像的模糊度,過渡區(qū)域的寬度 越寬,圖像的模糊度越高,過渡區(qū)的寬度越窄,圖像的模糊度越低。
圖10為本發(fā)明中的模糊度估計方法500(對應于所述線性條碼識別方法I的步驟 500)在一個實施例中的流程示意圖。如圖10所示,所述模糊度估計方法500包括以下步驟。
步驟510,統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度區(qū)域附近的像素點的灰度值。
在一個實施例中,步驟300中已經(jīng)進行的條碼檢測已經(jīng)檢測到了多個條形區(qū)域及 其端點,如圖2a所示,那么可以選定一個條形區(qū)域,在該條形區(qū)域的端點附近沿條形區(qū)域 的方向統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度區(qū)域附近的像素點的灰度值。
在另一個實施例中,步驟300中已經(jīng)檢測到了條碼的左右邊界,如圖2b所示,那么 可以選定一個邊界點,在該邊界點附近沿垂直于條形區(qū)域的方向統(tǒng)計條形區(qū)域和背景區(qū)域 之間的過度區(qū)域附近的像素點的灰度值。
在其他實施里中,也可以在其他位置統(tǒng)計條形區(qū)域和背景區(qū)域的過度區(qū)域附近的 像素點的灰度值。
步驟520,利用統(tǒng)計到的像素點的灰度值統(tǒng)計相鄰像素點的灰度值差異。
步驟530,將統(tǒng)計的相鄰像素點的灰度值差異與預定灰度值差異門限值進行對比 來判定所述過渡區(qū)域和所述背景區(qū)域的第一過度邊界以及所述過渡區(qū)域與所述條形區(qū)域 的第二過度邊界。如圖11所示,dl線可以表示所述過渡區(qū)域和所述背景區(qū)域的第一過度 邊界,d2可以表示所述過渡區(qū)域與所述條形區(qū)域的第二過度邊界。很明顯,所述過渡區(qū)域 中的相鄰像素點的灰度值差異比較大,而所述背景區(qū)域和所述條形區(qū)域中的相鄰像素點的 灰度值差異比較小。
步驟540,計算所述過度區(qū)域的兩個過度邊界之間的寬度,并基于所述寬度確定所 述圖像的模糊度。
可以基于計算得到的一個位置的條形區(qū)域和背景區(qū)域之間的過渡區(qū)域的寬度確 定所述圖像的模糊度。然而,因為圖像中存在的各種噪聲等因素,通過一個位置的條形區(qū)域和背景區(qū)域之間的過渡區(qū)域的寬度確定所述圖像的模糊度的可信度較低,因此可以多采集 幾個位置(多個左右邊界點附近或多個條形區(qū)域的端點附近)的條形區(qū)域和背景區(qū)域之間 的過渡區(qū)域的寬度以對圖像模糊度進行綜合判定。
在一個實施例中,可以根據(jù)多個位置的條形區(qū)域和背景區(qū)域之間的過渡區(qū)域的寬 度來綜合判定的圖像的模糊度,具體包括如下步驟
統(tǒng)計所有過渡區(qū)域的寬度的均值,統(tǒng)計所有過渡區(qū)域的寬度的方差;
如果方差值不超過預定方差門限值,則取均值為整幅圖像的模糊度;
如果方差值超過預定方差門限值,則找出與均值差異最大的過渡區(qū)域的寬度并將 其剔除;
如果所余下的過渡區(qū)域的寬度的數(shù)量仍然大于等于預定的數(shù)量門限值,則回到上 面第一步重新處理,否則圖像的模糊度估計失敗。
條碼解碼
圖12為本發(fā)明中的條碼解碼方法600 (對應于所述線性條碼識別方法I的步驟 600)在一個實施例中的流程示意圖。如圖12所示,所述條碼解碼方法600包括以下步驟。
步驟610,根據(jù)估計得到的圖像的模糊度從若干標準特征矢量集(standard feature vector set)中選擇對應的一個標準特征矢量集,每一個標準特征矢量集對應一 個模糊度范圍并包括若干標準特征矢量。
所述估計得到的圖像的模糊度可以根據(jù)圖10所示的模糊度估計方法獲得,也可 以根據(jù)其他模糊度估計方法獲得。
由于圖像的模糊會導致每一個像素點的灰度值向其四周發(fā)散,模糊度越高發(fā)散的 范圍越大。如圖2b所示,在條碼圖像出現(xiàn)模糊時,相鄰兩個條碼數(shù)據(jù)符的灰度信息就會產(chǎn) 生互相影響,模糊度越高,影響越深。換句話說,模糊度不同,圖像中的條碼數(shù)據(jù)符的灰度信 息就會發(fā)生變化。為了實現(xiàn)對不同模糊度圖像的解碼,有必要針對不同的模糊度建立對應 的標準特征矢量集。
為每個模糊度范圍預先建立一個標準特征矢量集,每個標準特征矢量集包括有若 干個標準特征矢量。所述模糊度范圍可以根據(jù)需要自定義,舉例來說,以圖10所示的模糊 度為過度區(qū)域的寬度為例,所述模糊度范圍的單位可以是單個條碼數(shù)據(jù)符寬度S的1/m,m 為正整數(shù),也就是說,0-s 1/m為一個模糊度范圍,s l/m至s ~k 2/m為下一個模糊度范 圍,s * 2/m至s * 3/m為下一個模糊度范圍,以此類推。
在一個實施例中,基于條碼類型所定義的一個標準條碼數(shù)據(jù)符生成對應模糊度范 圍的一個標準特征矢量,這樣形成的所有標準特征矢量可以組成了一個標準特征矢量集。 通過同樣的方式,還可以形成對應其它模糊度范圍的標準特征矢量集。
在另一個實施例中,基于條碼類型所定義的兩個或更多個標準條碼數(shù)據(jù)符生成對 應模糊度范圍的一個標準特征矢量,這樣形成的所有標準特征矢量可以組成了一個標準特 征矢量集。通過同樣的方式,還可以形成對應其它模糊度范圍的標準特征矢量集。
步驟620,基于條碼的邊界信息從圖像中提取條碼的條碼數(shù)據(jù)符(symbol character)對應的測試特征矢量(test feature vector)。
圖13為一種基于條碼的邊界信息從圖像中提取條碼的條碼數(shù)據(jù)符對應的測試特 征矢量的方法在一個實施例中的流程示意圖。下面結合圖13示例性的介紹一下如何從圖像中提取條碼的條碼數(shù)據(jù)符對應的測試特征矢量。
步驟621,根據(jù)估計得到的模糊度和條碼的邊界信息確定測試范圍。
所述條碼的邊界信息可以是根據(jù)圖6所示的條碼定位方法定位得到條碼的左右 邊界,也可以是其他條碼定位方法得到的條碼的左右邊界。
在得到了圖像的模糊度和條碼的邊界信息后,由于測定的誤差以及條碼在灰度圖 像中出現(xiàn)的旋轉(rotation)、傾斜(tilt)等幾何失真(geometric distortion)等因素的 影響,解碼的范圍并不局限于當前測定的圖像模糊度和條碼邊界,而是以測定的圖像模糊 度和條碼邊界為基礎,預先設定一個測試范圍,從而有效處理測定的誤差,以及省去對圖像 幾何失真的精確估計和補償。
步驟622,在測試范圍內(nèi)依次確定所述條碼的合法位置。
在測試范圍內(nèi)可以確定所述條碼的多個合法位置,可以每次確定所述條碼的一個 合法位置,所述合法位置是指符合規(guī)則的可能的位置。如果在其中的一個合法位置提取的 條碼數(shù)據(jù)符的測試特征矢量組未完成最終的條碼解碼,那么會在測試范圍內(nèi)再次確定所述 條碼的一個合法位置,直到解碼成功或測試范圍內(nèi)的沒有剩余的合法位置。
步驟623,基于確定的所述條碼的合法位置確定所述條碼的每個條碼數(shù)據(jù)符的位 置。
步驟624,根據(jù)所述條碼的每個條碼數(shù)據(jù)符的位置從圖像中提取灰度信息,并基于 提取的灰度信息生成該條碼數(shù)據(jù)符對應的測試特征矢量。所述條碼的所有條碼數(shù)據(jù)符的測 試特征矢量的組合可以被稱為測試特征矢量組。
圖14 不出了 EAN-13 條碼(European Article Number_13barcode)的結構不例。 如圖14所示,EAN-13條碼是由起始符(guard pattern on the left), 6個左側數(shù)據(jù)符 (symbol characters on the left),中間分隔符(centre guard pattern), 6 個右側數(shù)據(jù) 符(symbol characters on the right),以及終止符(guard pattern on the right)構 成。起始符由3個模塊(module)構成,固定為“ 101”,表示“條空條” (bar, space, bar) ;6 個左側數(shù)據(jù)符由42個模塊構成,由條碼字符集A子集(number set A)或B子集定義,每個 數(shù)據(jù)符各占7個模塊;中間分隔符由5個模塊構成,固定為“01010”,表示“空條空條空”;6 個右側數(shù)據(jù)符由42個模塊構成,由條碼字符集C子集定義,每個數(shù)據(jù)符各占7個模塊;終止 符由3個模塊構成,固定為“ 101”,表示“條空條”,每個模塊的寬度固定。
針對EAN-13條碼的結構,需要提取6個左側數(shù)據(jù)符和6個右側數(shù)據(jù)符的灰度信 息,然后利用提取的灰度信息生成測試用特征矢量。為此,如步驟530所述的,可以先基于 確定的所述條碼的合法位置確定所述條碼的12個條碼數(shù)據(jù)符的位置。隨后,如步驟540所 述的,可以根據(jù)所述條碼的12個條碼數(shù)據(jù)符的位置從圖像中提取對應的灰度信息,并基于 提取的灰度信息生成12個條碼數(shù)據(jù)符對應的測試特征矢量,12個條碼數(shù)據(jù)符對應的測試 特征矢量組成了所述測試特征矢量組。
此處以EAN條碼為例,但是其原則和處理方式可以適用于其他I維條碼,比如Code 25,Code 39,Code 128 等等。
在其他實施例中,也可以不設定測試范圍,而是直接根據(jù)從圖像中提取的條碼的 邊界信息確定所述條碼的每個條碼數(shù)據(jù)符的位置,這樣也可以實現(xiàn)最終的條碼解碼,只是 可能對于較為模糊的圖像成功率較低。
步驟630,利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特 征矢量集解碼得到所述條碼的條碼值。
圖15示出了利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準 特征矢量集解碼得到所述條碼的條碼值的方法在一個實施例中的流程示意圖。如圖15所 示,所述方法包括如下操作。
步驟631,將所述測試特征矢量組和所述測試特征矢量組在選定的標準特征矢量 集中對應的若干標準特征矢量組進行相似度比較,所述測試特征矢量組為所述條碼的所有 條碼數(shù)據(jù)符對應的測試特征矢量的組合,所述標準特征矢量組是選定的標準特征矢量集中 的部分標準特征矢量的組合。
事實上,所述測試特征矢量組必定是其對應的所述標準特征矢量集中的標準特征 矢量的所有合法組合中的一種,所述合法是指符合條碼類型所定義的規(guī)則。
步驟632,確定和所述測試特征矢量組總相似度最高的標準特征矢量組,基于所述 測試特征矢量組中的測試特征矢量和所述標準特征矢量組中的標準特征矢量的單相似度 來確定所述測試特征矢量組和所述標準特征矢量組的總相似度。比如,所述總相似度等于 對應組內(nèi)的測試特征矢量和標準特征矢量的單相似度的總和或平均相似度。
步驟633,根據(jù)總相似度最高的標準特征矢量組確定所述條碼的條碼值。這樣就找 到了條碼的各個條碼數(shù)據(jù)符表示的數(shù)值,實現(xiàn)了圖像中的條碼的解碼。
一般各種線性條碼制式都存在一定的驗證機制,比如在數(shù)據(jù)符中引入校驗數(shù)據(jù), 此時可以根據(jù)得到的所述條碼的條碼值進行校驗,如果通過,則解碼成功,否則解碼失敗。 不失一般性,以EAN-13條碼為例,其最后一位數(shù)據(jù)符是用于奇偶校驗的。
解碼驗證
經(jīng)過所述條碼解碼方法600后解碼得到的所述條碼的條碼值,雖然通過了校驗, 但由于圖像比較模糊,還是可能存在誤解碼,所以還可以對解碼后的條碼值進行進一步的 驗證,也就是,確定所述條碼的條碼值是否可信。
在一個實施例中,可以根據(jù)條碼解碼過程中產(chǎn)生的最高總相似度以及該最高總相 似度對應的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度判定解碼 產(chǎn)生的條碼值是否可信。如果可信則將解碼得到的條碼值作為所述線性條碼識別方法I的 最終輸出,從而達到降低虛警率(false alarm ratio)的同時保證條碼的檢測率的目的。
圖16為本發(fā)明中的解碼驗證方法700 (對應于所述線性條碼識別方法I的步驟 700)在一個實施例中的流程示意圖。如圖16所示,所述解碼驗證方法700包括以下步驟。
步驟701,輸入相似度記錄,此處的相似度包括總相似度和單相似度。
在進行解碼驗證前,需要獲得條碼解碼過程中獲得最高總相似度以及該最高總相 似度對應的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度。預先設定 針對總相似度的三個門限值第一相似度門限值(門限值I),第二相似度門限值(門限值 2)和第三相似度門限值(門限值3),其中第一相似度門限值最高,第二相似度門限值次之, 第三相似度門限值最小,預先設定針對單個相似度的兩個門限值第四相似度門限值(門 限值4)和第五相似度門限值(門限值5),第四相似度門限大于第五相似度門限。
步驟702,判斷獲得的總相似度(即最高總相似度)是否大于門限值1,如果是,則 進入步驟703認為解碼得到的條碼值可信,結束所述線性條碼識別方法I的識別流程。否則,則進入步驟704。
步驟704,判斷獲得的總相似度是否大于門限值2,如果是,則進入步驟705,否則 進入步驟706。
步驟705,判斷最小單相似度是否大于門限值4,如果是,則進入步驟703認為解碼 得到的條碼值可信,否則進入步驟707。
步驟706,判斷總相似度是否大于門限值3,如果是,則進入步驟707,否則進入步 驟708認為解碼得到的條碼值不可信。
步驟707,判斷小最小單相似度是否大于門限值5,如果是,則進入步驟709,否則 進入步驟708認為解碼得到的條碼值不可信。
步驟709,查找已有解碼得到的相同的條碼值,隨后在步驟710判斷解碼為相同條 碼值的次數(shù)是否大于次數(shù)門限值6,如果是,則進入步驟703,否則進入步驟708。
在步驟708認為解碼得到的條碼值不可信后,在步驟711保留該條碼值,返回步驟 200繼續(xù)進行條碼識別,在解碼得到所述條碼的另一個條碼值后,繼續(xù)進行解碼驗證。
在經(jīng)過上述條碼驗證后,降低虛警率(false alarm ratio),同時保證了條碼的檢 測率。
需要注意的是,圖16示出的解碼驗證方法700是一種較佳的實施方式,在其他實 施方式中,還可以進行一些改動。比如,不設置步驟706,而直接將步驟704的否分支引導至 步驟708。再比如,只設置兩個總相似度門限值和一個單相似度門限值,也就是說,刪除步驟 706 和 707。
本發(fā)明中的線性條碼識別方案也可以實現(xiàn)為一種系統(tǒng),圖17為本發(fā)明中的線性 條碼識別系統(tǒng)2在一個實施例中的結構示意圖。如圖17所示,所述線性條碼識別系統(tǒng)2包 括攝像模塊10、圖像預處理模塊20、條碼檢測模塊30、條碼定位模塊40、模糊度估計模塊 50、條碼解碼模塊60和解碼驗證模塊70。
所述攝像模塊10獲取連續(xù)的視頻圖像。所述圖像預處理模塊20對所述視頻圖像 進行預處理得到固定尺寸的灰度圖像。所述條碼檢測模塊30用于在灰度圖像中進行條碼 檢測。所述條碼定位模塊40用于在灰度圖像中定位條碼的左右邊界。所述模糊度估計模 塊50用于估計所述圖像的模糊度。所述條碼解碼模塊60用于根據(jù)所述模糊度從若干標準 特征矢量集中選擇對應的一個標準特征矢量集,基于所述條碼的邊界從圖像中提取所述條 碼的所有條碼數(shù)據(jù)符對應的測試特征矢量,以及利用所述條碼的所有條碼數(shù)據(jù)符對應的測 試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值,其中每一個標準特征矢 量集對應一個模糊度范圍并包括若干標準特征矢量。所述解碼驗證模塊70確定所述解碼 模塊60解碼得到的所述條碼的條碼值是否可信,即進行進一步的解碼驗證。
圖18為本發(fā)明中的條碼檢測模塊30在一個實施例中的結構示意圖。如圖18所 示,所述條碼檢測模塊30包括條形區(qū)域探測單元31和條碼探測單元32。
所述條形區(qū)域探測單元31在圖像中搜索至少兩個條形區(qū)域,并確定每個條形區(qū) 域的端點。所述條碼探測單元32基于搜索到的各個條形區(qū)域的端點確定搜索到的各個條 形區(qū)域是否屬于一個條碼。
在一個實施例中,所述條形區(qū)域探測單元31在圖像中搜索一個條形區(qū)域的過程 包括在圖像中設定查找區(qū)域和停止區(qū)域,所述查找區(qū)域的范圍小于等于所述停止區(qū)域,所述停止區(qū)域的范圍大于等于所述查找區(qū)域而小于等于所述圖像;在查找區(qū)域選定一行像素 點;在選定的一行像素點中選定一個黑色像素點作為初始像素點,并記錄其坐標;從初始 像素點開始依次向下或/和向上搜索臨近最低灰度值的像素點,并判斷搜索到的像素點是 否為黑色像素點,如果是黑色像素點,則依次記錄其坐標,如果不是黑色像素點,則確定前 一個黑色像素點為所述黑色區(qū)域的端點,如果搜索到的黑色像素點在所述停止區(qū)域之內(nèi), 則繼續(xù)搜索,如果在所述停止區(qū)域之外,則停止搜索;將所記錄的黑色像素點(包括初始像 素點、所述黑色區(qū)域的端點以及其他記錄的黑色像素點)的坐標進行曲線擬合得到第一曲 線;基于該第一曲線確定所述黑色區(qū)域是否為條形區(qū)域。優(yōu)選的,所述條形區(qū)域探測單元 31統(tǒng)計該第一曲線在各黑色像素點附近的曲率以及各黑色像素點到該第一曲線的距離; 如果所述曲率小于第一曲率門限值且所有的距離不超過第一距離門限值,則認為該黑色區(qū) 域是一個條形區(qū)域,否則認為該黑色區(qū)域不是一個條形區(qū)域。
所述條碼探測單元32計算搜索到的各條形區(qū)域的方向的差異;將搜索到的各條 形區(qū)域的同側的端點的坐標進行曲線擬合得到第二曲線;基于各條形區(qū)域的方向的差異和 /或所述第二曲線確定搜索到的各個條形區(qū)域是否屬于一個條碼。優(yōu)選的,所述條碼探測單 元32統(tǒng)計該第二曲線在這些同側端點附近的曲率,以及統(tǒng)計這些同側端點到該第二曲線 的距離;如果該曲率小于一個第二曲率門限值,各條形區(qū)域的方向的差異不超過一個第二 角度門限值,各條形區(qū)域的同側的端點和利用該側端點擬合的第二曲線之間的距離不超過 一個第二距離門限值,則認定各個條形區(qū)域?qū)儆谝粋€條碼,否則認定各個條形區(qū)域不屬于 一個條碼。
圖19為本發(fā)明中的條碼定位模塊40在一個實施例中的結構示意圖。如圖19所 示,所述條碼定位模塊40包括邊界點搜索單元41和邊界確定單元42。所述邊界點搜索單 元41在圖像中搜索至少兩個左邊界點和至少兩個右邊界點。所述邊界確定單元42分別基 于搜索到的左右邊界點確定條碼的左右邊界。
在一個實施例中,在圖像中設定搜索區(qū)域,所述邊界點搜索單元41在所述搜索區(qū) 域內(nèi)進行搜索邊界點。
所述邊界點搜索單元41搜索到一個邊界點的過程包括
選取一行像素點,取預定像素寬度的滑動窗口,該滑動窗口從該行像素點的第一 端開始朝向第二端逐像素進行移動;
每移動到一個新的位置,比較所述滑動窗口左右兩側像素點灰度值的差異,當該 差異超過預定灰度值差異門限值時,即認為邊界點已經(jīng)位于所述滑動窗口之內(nèi);
在所述滑動窗口中每一像素點的靠近第二端的一側選取預定數(shù)量的像素點,統(tǒng) 計選取的這些像素點的左端點和右端點的灰度值差異,當所述灰度值差異達到最大值時, 記錄所述滑動窗口中對應的像素點位置,將選取的這些像素點在圖像中的橫坐標作為橫坐 標,將選取的這些像素點的灰度值作為縱坐標,進行線性擬合得到第一直線;
在記錄的像素點的靠近第一端的一側選取預定數(shù)量的像素點,找到選取的這些像 素點中的屬于背景區(qū)域的像素點,將確定是背景區(qū)域的像素點在圖像中的橫坐標作為橫坐 標,將確定是背景區(qū)域的像素點的灰度值作為縱坐標,進行線性擬合得到第二直線;
計算第一直線和第二直線的交點,該交點的橫坐標就是該行像素點中的邊界點的 橫坐標,該行像素點的縱坐標為該行像素點中的邊界點的縱坐標。
所述邊界確定單元42將搜索到的同側邊界點擬合成一條曲線;根據(jù)搜索到的同 側邊界點到其擬合的曲線的距離判斷是否有非法邊界點,如果一個同側邊界點到其擬合的 曲線的距離大于預定距離門限,則認為該同側邊界點為非法邊界點;如果有,則去除非法邊 界點,并對剩余的同側邊界點再次擬合成一條曲線,并根據(jù)該曲線確定邊界。
在一個實施例中,所述模糊度估計模塊50統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度 區(qū)域附近的像素點的灰度值,利用統(tǒng)計到的像素點的灰度值統(tǒng)計相鄰像素點的灰度值差 異,將統(tǒng)計的相鄰像素點的灰度值差異與預定灰度值差異門限值進行對比來判定所述過渡 區(qū)域和所述背景區(qū)域的第一過度邊界以及所述過渡區(qū)域與所述條形區(qū)域的第二過度邊界, 計算所述過度區(qū)域的兩個過度邊界之間的寬度,以及基于所述過度區(qū)域的寬度確定所述模 糊度。
圖20為本發(fā)明中的條碼解碼模塊60在一個實施例中的結構示意圖。如圖20所 示,所述條碼解碼裝置60包括標準特征矢量集選定單元61、測試特征矢量提取單元62和解 碼單元63。
所述標準特征矢量集選定單元61根據(jù)所述模糊度從若干標準特征矢量集中選擇 對應的一個標準特征矢量集,每一個標準特征矢量集對應一個模糊度范圍并包括若干標準 特征矢量。所述測試特征矢量提取單元62從圖像中提取條碼的條碼數(shù)據(jù)符對應的測試特 征矢量。所述解碼單元63利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的 標準特征矢量集解碼得到所述條碼的條碼值。
在一個實施例中,基于條碼類型所定義的一個或若干個標準條碼數(shù)據(jù)符生成對應 模糊度范圍的一個標準特征矢量。
在一個實施例中,所述測試特征矢量提取單元62根據(jù)從圖像中提取的條碼的邊 界信息確定所述條碼的每個條碼數(shù)據(jù)符的位置,根據(jù)所述條碼的每個條碼數(shù)據(jù)符的位置從 圖像中提取灰度信息,并基于提取的灰度信息生成該條碼數(shù)據(jù)符對應的測試特征矢量。
在一個實施例中,所述解碼單元63將測試特征矢量組和其在選擇的標準特征矢 量集中對應的若干標準特征矢量組進行相似度比較,確定和所述測試特征矢量組總相似 度最高的標準特征矢量組,以及根據(jù)總相似度最高的標準特征矢量組確定所述條碼的條碼 值,其中所述測試特征矢量組為所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量的組合, 所述標準特征矢量組是所述標準特征矢量集中的若干標準特征矢量的組合,基于所述測試 特征矢量組中的測試特征矢量和所述標準特征矢量組中的標準特征矢量的單相似度來確 定所述測試特征矢量組和所述標準特征矢量組的總相似度。
所述解碼驗證模塊70根據(jù)最高總相似度以及總相似度最高的標準特征矢量組中 的各標準特征矢量與各測試特征矢量的單相似度判定解碼得到的所述條碼的條碼值是否可信。
具體的,所述解碼驗證模塊70在所述最高總相似度大于第一相似度門限值時,則 認為解碼得到的所述條碼的條碼值可信;在所述最高總相似度小于第一相似度門限值大于 第二相似度門限值且最小單相似度大于第四相似度門限值時,則認為解碼得到的所述條碼 的條碼值可信;在所述最高總相似度小于第三相似度門限值時,則認為解碼得到的所述條 碼的條碼值不可信;在所述最高總相似度大于第三相似度門限值小于第二相似度門限值且 最小單相似度小于第五相似度門限值時,則認為解碼得到的所述條碼的條碼值不可信;在所述最高總相似度小于第一相似度門限值大于第二相似度門限值且最小單相似度小于第 四相似度門限值大于第五相似度門限值時,或在所述最高總相似度小于第二相似度門限值 大于第三相似度門限值且最小單相似度大于第五相似度門限值時,確定解碼為相同條碼值 的次數(shù)是否大于次數(shù)門限,如果是,則認為解碼得到的所述條碼的條碼值可信,否則,則認 為解碼得到的所述條碼的條碼值不可信;在確定所述條碼的條碼值不可信時,保存解碼得 到的所述條碼的條碼值。
關于各個模塊的更為詳細介紹也可參考前文方法部分的相應章節(jié),此處不再贅 述。比如,關于條碼檢測模塊30的更為詳細介紹也可參考前文方法部分的條碼檢測的章 節(jié)。
本文中的“和/或”表示和或者或,比如A、B和/或C,包括A、B、C、AB、AC、BC、ABC幾種情況。本文中的“包括”均表示“包括但不限于”。本文中的“步驟”和“方法”在有些 情況下是可以替換的,一個方法的一個步驟也可以被稱為另一個方法。本文中的“若干”為 兩個或兩個以上,“多個”為兩個或兩個以上。
上文對本發(fā)明進行了足夠詳細的具有一定特殊性的描述。所屬領域內(nèi)的普通技術 人員應該理解,實施例中的描述僅僅是示例性的,在不偏離本發(fā)明的真實精神和范圍的前 提下做出所有改變都應該屬于本發(fā)明的保護范圍。本發(fā)明所要求保護的范圍是由所述的權 利要求書進行限定的,而不是由實施例中的上述描述來限定的。
權利要求
1.一種線性條碼識別方法,其特征在于,其包括 獲取圖像; 在所述圖像中進行條碼檢測; 在所述圖像中進行條碼定位以確定條碼的邊界; 估計所述圖像的模糊度; 根據(jù)所述模糊度從若干標準特征矢量集中選擇對應的一個標準特征矢量集,每一個標準特征矢量集對應一個模糊度范圍并包括若干標準特征矢量; 基于所述條碼的邊界從圖像中提取所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量;和 利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值。
2.根據(jù)權利要求1所述的線性條碼識別方法,其特征在于,在所述圖像中進行條碼檢測包括 在圖像中搜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點;和基于搜索到的各個條形區(qū)域的端點確定搜索到的各個條形區(qū)域是否屬于一個條碼,如果搜索到的各個條形區(qū)域?qū)儆谝粋€條碼,則判定所述圖像中包含有條碼。
3.根據(jù)權利要求2所述的線性條碼識別方法,其特征在于,所述在圖像中搜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點包括 選定一行像素點; 在選定的一行像素點中選定一個黑色像素點作為初始像素點; 從初始像素點開始依次向下或/和向上搜索臨近最低灰度值的像素點,并判斷搜索到的像素點是否為黑色像素點,如果是黑色像素點,則依次記錄其坐標,如果不是黑色像素點,則確定前一個黑色像素點為所述黑色區(qū)域的端點; 將所記錄的黑色像素點的坐標進行曲線擬合得到一曲線;和 基于該曲線確定所述黑色區(qū)域是否為條形區(qū)域。
4.根據(jù)權利要求1所述的線性條碼識別方法,其特征在于,在所述圖像中進行條碼定位以確定所述條碼的邊界包括 在圖像中搜索至少兩個左邊界點和至少兩個右邊界點;和 分別基于搜索到的左右邊界點確定條碼的左右邊界。
5.根據(jù)權利要求4所述的線性條碼識別方法,其特征在于,所述在圖像中搜索至少兩個左邊界點和至少兩個右邊界點包括 選取一行像素點,取預定像素寬度的滑動窗口,該滑動窗口從該行像素點的第一端開始朝向第二端逐像素進行移動; 每移動到一個新的位置,比較所述滑動窗口左右兩側像素點灰度值的差異,當該差異超過預定灰度值差異門限值時,即認為邊界點已經(jīng)位于所述滑動窗口之內(nèi); 在所述滑動窗口中每一像素點的靠近第二端的一側選取預定數(shù)量的像素點,統(tǒng)計選取的這些像素點的左端點和右端點的灰度值差異,當所述灰度值差異達到最大值時,記錄所述滑動窗口中對應的像素點位置,將選取的這些像素點在圖像中的橫坐標作為橫坐標,將選取的這些像素點的灰度值作為縱坐標,進行線性擬合得到第一直線;在記錄的像素點的靠近第一端的一側選取預定數(shù)量的像素點,找到選取的這些像素點中的屬于背景區(qū)域的像素點,將確定是背景區(qū)域的像素點在圖像中的橫坐標作為橫坐標,將確定是背景區(qū)域的像素點的灰度值作為縱坐標,進行線性擬合得到第二直線;和 計算第一直線和第二直線的交點,該交點的橫坐標就是該行像素點中的邊界點的橫坐標,該行像素點的縱坐標為該行像素點中的邊界點的縱坐標。
6.根據(jù)權利要求1所述的線性條碼識別方法,其特征在于,估計所述圖像的模糊度包括 統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度區(qū)域附近的像素點的灰度值; 利用統(tǒng)計到的像素點的灰度值統(tǒng)計相鄰像素點的灰度值差異; 將統(tǒng)計的相鄰像素點的灰度值差異與預定灰度值差異門限值進行對比來判定所述過渡區(qū)域和所述背景區(qū)域的第一過度邊界以及所述過渡區(qū)域與所述條形區(qū)域的第二過度邊界; 計算所述過度區(qū)域的兩個過度邊界之間的寬度;和 基于所述過度區(qū)域的寬度確定所述模糊度。
7.根據(jù)權利要求1所述的線性條碼識別方法,其特征在于,基于條碼類型所定義的一個或若干個標準條碼數(shù)據(jù)符生成對應模糊度范圍的一個標準特征矢量。
8.根據(jù)權利要求1所述的線性條碼識別方法,其特征在于,基于所述條碼的邊界從圖像中提取所述條碼的條碼數(shù)據(jù)符的測試特征矢量包括 根據(jù)所述條碼的邊界確定所述條碼的每個條碼數(shù)據(jù)符的位置; 根據(jù)所述條碼的每個條碼數(shù)據(jù)符的位置從圖像中提取灰度信息,并基于提取的灰度信息生成該條碼數(shù)據(jù)符對應的測試特征矢量。
9.根據(jù)權利要求8所述的線性條碼識別方法,其特征在于,根據(jù)所述條碼的邊界確定所述條碼的每個條碼數(shù)據(jù)符的位置還包括 根據(jù)所述模糊度和所述條碼的邊界確定測試范圍; 在測試范圍內(nèi)依次確定所述條碼的合法位置;和 基于確定的所述條碼的合法位置確定所述條碼的每個條碼數(shù)據(jù)符的位置。
10.根據(jù)權利要求1-9任一所述的線性條碼識別方法,其特征在于,利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值包括 將測試特征矢量組和其在選擇的標準特征矢量集中對應的若干標準特征矢量組進行相似度比較,所述測試特征矢量組為所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量的組合,所述標準特征矢量組是選定的標準特征矢量集中的若干標準特征矢量的組合; 確定和所述測試特征矢量組總相似度最高的標準特征矢量組,基于所述測試特征矢量組中的測試特征矢量和所述標準特征矢量組中的標準特征矢量的單相似度來確定所述測試特征矢量組和所述標準特征矢量組的總相似度; 根據(jù)總相似度最高的標準特征矢量組確定所述條碼的條碼值。
11.根據(jù)權利要求10所述的線性條碼識別方法,其特征在于,其還包括有 根據(jù)最高總相似度以及總相似度最高的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度判定解碼得到的所述條碼的條碼值是否可信。
12.根據(jù)權利要求11所述的線性條碼識別方法,其特征在于,根據(jù)最高總相似度以及總相似度最高的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度判定解碼得到的所述條碼的條碼值是否可信包括 在所述最高總相似度大于第一相似度門限值時,則認為解碼得到的所述條碼的條碼值可信; 在所述最高總相似度小于第一相似度門限值大于第二相似度門限值且最小單相似度大于第四相似度門限值時,則認為解碼得到的所述條碼的條碼值可信。
13.根據(jù)權利要求12所述的線性條碼識別方法,其特征在于,根據(jù)最高總相似度以及總相似度最高的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度判定解碼得到的所述條碼的條碼值是否可信還包括 在所述最高總相似度小于第三相似度門限值時,則認為解碼得到的所述條碼的條碼值不可信; 在所述最高總相似度大于第三相似度門限值小于第二相似度門限值且最小單相似度小于第五相似度門限值時,則認為解碼得到的所述條碼的條碼值不可信; 在所述最高總相似度小于第一相似度門限值大于第二相似度門限值且最小單相似度小于第四相似度門限值大于第五相似度門限值時,或在所述最高總相似度小于第二相似度門限值大于第三相似度門限值且最小單相似度大于第五相似度門限值時,確定解碼為相同條碼值的次數(shù)是否大于次數(shù)門限,如果是,則認為解碼得到的所述條碼的條碼值可信,否貝U,則認為解碼得到的所述條碼的條碼值不可信; 在確定所述條碼的條碼值不可信時,保存解碼得到的所述條碼的條碼值。
14.一種線性條碼識別系統(tǒng),其特征在于,其包括 攝像模塊,用于獲取圖像; 條碼檢測模塊,用于在所述圖像中進行條碼檢測; 條碼定位模塊,用于在所述圖像中進行條碼定位以確定所述條碼的邊界; 模糊度估計模塊,用于估計所述圖像的模糊度; 條碼解碼模塊,用于根據(jù)所述模糊度從若干標準特征矢量集中選擇對應的一個標準特征矢量集,基于所述條碼的邊界從圖像中提取所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量,以及利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值,其中每一個標準特征矢量集對應一個模糊度范圍并包括若干標準特征矢量。
15.根據(jù)權利要求14所述的線性條碼識別系統(tǒng),其特征在于,所述條碼檢測模塊包括條形區(qū)域探測單元和條碼探測單元,所述條形區(qū)域探測單元在圖像中搜索至少兩個條形區(qū)域,并確定每個條形區(qū)域的端點;所述條碼探測單元基于搜索到的各個條形區(qū)域的端點確定搜索到的各個條形區(qū)域是否屬于一個條碼, 所述條形區(qū)域探測單元在圖像中搜索一個條形區(qū)域的過程包括選定一行像素點;在選定的一行像素點中選定一個黑色像素點作為初始像素點,并記錄其坐標;從初始像素點開始依次向下或/和向上搜索臨近最低灰度值的像素點,并判斷搜索到的像素點是否為黑色像素點,如果是黑色像素點,則依次記錄其坐標,如果不是黑色像素點,則確定前一個黑色像素點為所述黑色區(qū)域的端點;將所記錄的黑色像素點的坐標進行曲線擬合得到一曲線;和基于該曲線確定所述黑色區(qū)域是否為條形區(qū)域。
16.根據(jù)權利要求14所述的線性條碼識別系統(tǒng),其特征在于,所述條碼定位模塊包括邊界點搜索單元和邊界確定單元,所述邊界點搜索單元在圖像中搜索至少兩個左邊界點和至少兩個右邊界點;所述邊界確定單元分別基于搜索到的左右邊界點確定條碼的左右邊界, 所述邊界點搜索單元搜索到一個邊界點的過程包括 選取一行像素點,取預定像素寬度的滑動窗口,該滑動窗口從該行像素點的第一端開始朝向第二端逐像素進行移動; 每移動到一個新的位置,比較所述滑動窗口左右兩側像素點灰度值的差異,當該差異超過預定灰度值差異門限值時,即認為邊界點已經(jīng)位于所述滑動窗口之內(nèi); 在所述滑動窗口中每一像素點的靠近第二端的一側選取預定數(shù)量的像素點,統(tǒng)計選取的這些像素點的左端點和右端點的灰度值差異,當所述灰度值差異達到最大值時,記錄所述滑動窗口中對應的像素點位置,將選取的這些像素點在圖像中的橫坐標作為橫坐標,將選取的這些像素點的灰度值作為縱坐標,進行線性擬合得到第一直線; 在記錄的像素點的靠近第一端的一側選取預定數(shù)量的像素點,找到選取的這些像素點中的屬于背景區(qū)域的像素點,將確定是背景區(qū)域的像素點在圖像中的橫坐標作為橫坐標,將確定是背景區(qū)域的像素點的灰度值作為縱坐標,進行線性擬合得到第二直線; 計算第一直線和第二直線的交點,該交點的橫坐標就是該行像素點中的邊界點的橫坐標,該行像素點的縱坐標為該行像素點中的邊界點的縱坐標。
17.根據(jù)權利要求14所述的線性條碼識別系統(tǒng),其特征在于,所述模糊度估計模塊統(tǒng)計條形區(qū)域和背景區(qū)域之間的過度區(qū)域附近的像素點的灰度值,利用統(tǒng)計到的像素點的灰度值統(tǒng)計相鄰像素點的灰度值差異,將統(tǒng)計的相鄰像素點的灰度值差異與預定灰度值差異門限值進行對比來判定所述過渡區(qū)域和所述背景區(qū)域的第一過度邊界以及所述過渡區(qū)域與所述條形區(qū)域的第二過度邊界,計算所述過度區(qū)域的兩個過度邊界之間的寬度,以及基于所述過度區(qū)域的寬度確定所述模糊度。
18.根據(jù)權利要求14所述的線性條碼識別系統(tǒng),其特征在于,基于條碼類型所定義的一個或若干個標準條碼數(shù)據(jù)符生成對應模糊度范圍的一個標準特征矢量。
19.根據(jù)權利要求14-18任一所述的線性條碼識別系統(tǒng),其特征在于,所述條碼解碼模塊將測試特征矢量組和其在選擇的標準特征矢量集中對應的若干標準特征矢量組進行相似度比較,確定和所述測試特征矢量組總相似度最高的標準特征矢量組,以及根據(jù)總相似度最高的標準特征矢量組確定所述條碼的條碼值, 其中所述測試特征矢量組為所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量的組合,所述標準特征矢量組是所述標準特征矢量集中的若干標準特征矢量的組合,基于所述測試特征矢量組中的測試特征矢量和所述標準特征矢量組中的標準特征矢量的單相似度來確定所述測試特征矢量組和所述標準特征矢量組的總相似度。
20.根據(jù)權利要求19所述的線性條碼識別系統(tǒng),其特征在于,其還包括解碼驗證模塊, 所述解碼驗證模塊根據(jù)最高總相似度以及總相似度最高的標準特征矢量組中的各標準特征矢量與各測試特征矢量的單相似度判定解碼得到的所述條碼的條碼值是否可信。
全文摘要
本發(fā)明公開了一種線性條碼識別系統(tǒng)和方法,所述方法包括獲取圖像;在所述圖像中進行條碼檢測;在所述圖像中進行條碼定位以確定條碼的邊界;估計所述圖像的模糊度;根據(jù)所述模糊度從若干標準特征矢量集中選擇對應的一個標準特征矢量集,每一個標準特征矢量集對應一個模糊度范圍并包括若干標準特征矢量;基于所述條碼的邊界從圖像中提取所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量;和利用所述條碼的所有條碼數(shù)據(jù)符對應的測試特征矢量和選擇的標準特征矢量集解碼得到所述條碼的條碼值。針對不同的模糊度范圍設定了不同的標準特征矢量集,這樣可以在圖像模糊的情況下仍能實現(xiàn)對條碼的正確解碼。
文檔編號G06K7/10GK103034831SQ201110291479
公開日2013年4月10日 申請日期2011年9月30日 優(yōu)先權日2011年9月30日
發(fā)明者陳凌 申請人:無錫愛丁閣信息科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
焉耆| 靖州| 中宁县| 永昌县| 军事| 宝丰县| 闻喜县| 内乡县| 阳西县| 临猗县| 外汇| 宝兴县| 名山县| 曲麻莱县| 祁门县| 龙江县| 庆元县| 嘉鱼县| 东乡族自治县| 枝江市| 徐汇区| 乌兰浩特市| 安吉县| 会东县| 延川县| 亚东县| 鹤峰县| 修武县| 奈曼旗| 西和县| 三台县| 曲阜市| 婺源县| 平陆县| 福建省| 新干县| 海口市| 霞浦县| 长丰县| 开封市| 阿克苏市|