本發(fā)明涉及條碼識別技術(shù)領(lǐng)域,尤其涉及一種條碼中標(biāo)識字符的定位方法及裝置。
背景技術(shù):
條碼是將寬度不等的多個黑條和白條,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識符。常見的條碼是由反射率相差很大的黑條和白條排成的平行線圖案。條碼可以標(biāo)出物品的生產(chǎn)國、制造廠家、商品名稱、生產(chǎn)日期、圖書分類號、郵件起止地點(diǎn)、類別、日期等許多信息,因而在商品流通、圖書管理、郵政管理、銀行系統(tǒng)等許多領(lǐng)域都得到廣泛的應(yīng)用。在對條碼進(jìn)行識別時,首先需要定位出條碼中標(biāo)識字符的位置,根據(jù)條碼中標(biāo)識字符的位置,確定條碼中的每個數(shù)據(jù)字符的位置,對數(shù)據(jù)字符進(jìn)行識別,從而識別該條碼中包含的信息。
現(xiàn)有對條碼中標(biāo)識字符的定位方法主要包括:針對條碼確定一條掃描線,針對掃描線上的邊界點(diǎn),根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息進(jìn)行匹配,如果只匹配出標(biāo)識字符的一個位置,將該位置作為條碼中標(biāo)識字符的位置;如果匹配出標(biāo)識字符的至少兩個位置,如果標(biāo)識字符為起始符,選取所述至少兩個位置中相對掃描線的解碼方向上位于最左端的標(biāo)識字符的位置為條碼中起始符的位置,如果標(biāo)識字符為結(jié)束符,選取所述至少兩個位置中相對掃描線的解碼方向上位于最右端的標(biāo)識字符的位置為條碼中結(jié)束符的位置。
然而,現(xiàn)有技術(shù)在對條碼中標(biāo)識字符進(jìn)行定位時,如果條碼存在紋理干擾,在非條碼的紋理區(qū)域也可能會定位出與預(yù)設(shè)的標(biāo)識字符的編碼信息匹配的位置,造成對條碼中標(biāo)識字符的錯誤定位,導(dǎo)致對條碼的識別失敗,降低了對條碼識別的成功率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種條碼中標(biāo)識字符的定位方法及裝置,用以解決現(xiàn)有技術(shù)中存在對條碼中標(biāo)識字符定位不準(zhǔn)確,對條碼識別的成功率低的問題。
本發(fā)明實(shí)施例公開了一種條碼中標(biāo)識字符的定位方法,所述方法包括:
針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符;
針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;
根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。
進(jìn)一步地,所述根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度包括:
針對該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上的對應(yīng)的每個其他候選點(diǎn),在該候選點(diǎn)與該其他候選點(diǎn)的連線上等間隔的選取設(shè)定數(shù)量的像素點(diǎn);將所述設(shè)定數(shù)量的各像素點(diǎn)的梯度值之和,確定為該候選點(diǎn)與對應(yīng)的該其他候選點(diǎn)的連線抽樣梯度。
進(jìn)一步地,所述根據(jù)連線抽樣梯度確定所述候選點(diǎn)與該候選點(diǎn)對應(yīng)的其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集包括:
根據(jù)所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,選擇連線抽樣梯度最大且大于設(shè)定閾值的其他候選點(diǎn),確定所述候選點(diǎn)與選擇的所述其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集。
進(jìn)一步地,所述根據(jù)確定的每個標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位包括:
判斷每個標(biāo)識字符邊界點(diǎn)集上候選點(diǎn)的數(shù)量是否大于設(shè)定數(shù)量,如果是,根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位。
進(jìn)一步地,所述根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位包括:
如果當(dāng)前待定位的標(biāo)識字符為起始符,則根據(jù)位于最左端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置;
如果當(dāng)前待定位的標(biāo)識字符為結(jié)束符,則根據(jù)位于最右端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置。
本發(fā)明實(shí)施例公開了一種條碼中標(biāo)識字符的定位裝置,所述裝置包括:
生成模塊,用于針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符;
確定模塊,用于針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;
定位模塊,用于根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。
進(jìn)一步地,所述確定模塊,具體用于針對該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上的對應(yīng)的每個其他候選點(diǎn),在該候選點(diǎn)與該其他候選點(diǎn)的連線上等間隔的選取設(shè)定數(shù)量的像素點(diǎn);將所述設(shè)定數(shù)量的各像素點(diǎn)的梯度值之和,確定為該候選點(diǎn)與對應(yīng)的該其他候選點(diǎn)的連線抽樣梯度。
進(jìn)一步地,所述確定模塊,具體用于根據(jù)所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,選擇連線抽樣梯度最大且大于設(shè)定閾值的其他候選點(diǎn),確定所述候選點(diǎn)與選擇的所述其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集。
進(jìn)一步地,所述定位模塊,具體用于判斷每個標(biāo)識字符邊界點(diǎn)集上候選點(diǎn)的數(shù)量是否大于設(shè)定數(shù)量,如果是,根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位。
進(jìn)一步地,所述定位模塊,具體用于如果當(dāng)前待定位的的標(biāo)識字符為起始符,則根據(jù)位于最左端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置;如果當(dāng)前待定位的標(biāo)識字符為結(jié)束符,則根據(jù)位于最右端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置。
本發(fā)明公開了一種條碼中標(biāo)識字符的定位方法及裝置,所述方法包括:針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符;針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。由于在本發(fā)明實(shí)施例中,根據(jù)位于標(biāo)識字符上的對應(yīng)邊界點(diǎn)之間的連線抽樣梯度,確定標(biāo)識字符邊界子點(diǎn)集,從而確定的每個標(biāo)識字符邊界點(diǎn)集,避免了條碼中存在的紋理干擾,提高了對條碼中標(biāo)識字符定位的準(zhǔn)確性,進(jìn)而提高了條碼識別的成功率。
附圖說明
圖1為本發(fā)明實(shí)施例1提供的一種條碼中標(biāo)識字符的定位過程示意圖;
圖2為本發(fā)明實(shí)施例1提供的一種條碼邊界點(diǎn)示意圖;
圖3為本發(fā)明實(shí)施例4提供的一種標(biāo)識字符定位過程示意圖;
圖4為本發(fā)明實(shí)施例5提供的一種條碼中標(biāo)識字符的定位裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1:
圖1為本發(fā)明實(shí)施例提供的一種條碼中標(biāo)識字符的定位過程示意圖,該過程包括:
s101:針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符。
本發(fā)明實(shí)施例提供的一種條碼中標(biāo)識字符的定位方法,應(yīng)用于電子設(shè)備,該電子設(shè)備可以是手持式條碼閱讀器、固定式條碼閱讀器等條碼閱讀設(shè)備,也可以是具有條碼解碼功能的手機(jī)、平板電腦等終端設(shè)備。
條碼是將寬度不等的多個黑條和白條,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識符,條碼中的邊界點(diǎn)是指條碼中用于區(qū)別白條與黑條邊界或黑條與白條邊界的像素點(diǎn),位于白條與黑條或黑條與白條的邊界處,所以邊界點(diǎn)對應(yīng)著一個較大的梯度值。在本發(fā)明實(shí)施例中,對條碼的邊界點(diǎn)進(jìn)行確定是現(xiàn)有技術(shù),不再進(jìn)行贅述。
具體的,針對條碼設(shè)定有至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,可以確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),其中,所述標(biāo)識字符包括起始符和結(jié)束符。針對每條掃描線,在根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息中記錄的標(biāo)識字符對應(yīng)的邊界點(diǎn)數(shù)量及每個邊界點(diǎn)之間的距離,以該掃描線上每個邊界點(diǎn)為起點(diǎn)確定符合標(biāo)識字符編碼信息的邊界點(diǎn)組合時,可能會確定出不少于兩個邊界點(diǎn)組合,并且所述不少于兩個邊界點(diǎn)組合中包含的邊界點(diǎn)可能重復(fù),將所述不少于兩個邊界點(diǎn)組合中包含的邊界點(diǎn)進(jìn)行去重,將去重后的邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn)。在本發(fā)明實(shí)施例中,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn)是現(xiàn)有技術(shù),不再進(jìn)行贅述。
s102:針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集。
圖2為本發(fā)明實(shí)施例提供的一種條碼邊界點(diǎn)示意圖,條碼中不存在紋理干擾時,條碼中的白條和黑條之間是平行的,根據(jù)像素點(diǎn)是否由黑色像素點(diǎn)變化為白色像素點(diǎn),或者由白色像素點(diǎn)變?yōu)楹谏袼攸c(diǎn),可以在每條掃描線上確定出邊界點(diǎn),并且每條掃描線上確定出的邊界點(diǎn)中,如果位于不同掃描線上對應(yīng)的邊界點(diǎn)位于同一黑條或白條的邊界,則位于不同掃描線上對應(yīng)的邊界點(diǎn)的連線位于一條直線上。而針對條碼中紋理干擾定位出的邊界點(diǎn),因紋理干擾出現(xiàn)是無規(guī)律的、離散的,雖然相鄰掃描線上的邊界點(diǎn)可以連接為直線,但是位于該直線上的邊界點(diǎn)的數(shù)量也是遠(yuǎn)小于掃描線的數(shù)量的。
因?yàn)楹蜻x點(diǎn)是根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息選取的符合預(yù)設(shè)的標(biāo)識字符的編碼信息的邊界點(diǎn),如果位于不同掃描線上對應(yīng)的候選點(diǎn)位于同一黑條或白條的邊界,將所述對應(yīng)的候選點(diǎn)連線為直線,該直線上的每個像素點(diǎn)對應(yīng)的梯度值與邊界點(diǎn)對應(yīng)的梯度值相同,而邊界點(diǎn)對應(yīng)的梯度值較大,因此對應(yīng)的候選點(diǎn)之間的連線抽樣梯度較大;如果位于不同掃描線上對應(yīng)的候選點(diǎn)不位于同一黑條或白條的邊界,雖然對應(yīng)的候選點(diǎn)也能連線為直線,但是該直線上的像素點(diǎn)中只有部分、甚至不存在像素點(diǎn)對應(yīng)的梯度值與邊界點(diǎn)對應(yīng)的梯度值相同,該直線上大部分像素點(diǎn)對應(yīng)的梯度值較小,甚至為零,因此對應(yīng)的候選點(diǎn)之間的連線抽樣梯度較小。
而針對條碼中紋理干擾定位出的候選點(diǎn),因紋理干擾出現(xiàn)是無規(guī)律的、離散的,因紋理干擾定位出的候選點(diǎn)與各候選點(diǎn)之間的連線確定的直線上的各像素點(diǎn)中也只有部分、甚至不存在像素點(diǎn)對應(yīng)的梯度值與邊界點(diǎn)對應(yīng)的梯度值相同,該直線上大部分像素點(diǎn)對應(yīng)的梯度值較小,甚至為零,因此對應(yīng)的候選點(diǎn)之間的連線抽樣梯度較小。針對每個候選點(diǎn),判斷是否存在與該候選點(diǎn)連線梯度大于閾值的候選點(diǎn),如果不在與該候選點(diǎn)連線梯度大于閾值的候選點(diǎn),則說明該候選點(diǎn)是通過紋理干擾定位出的候選點(diǎn),將該候選點(diǎn)剔除。
具體的,針對候選點(diǎn)集中的任一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集。例如:可以將該候選點(diǎn),及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的平均梯度值,作為該候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,將該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上連線抽樣梯度大于設(shè)定閾值的候選點(diǎn)進(jìn)行連接,確定所述候選點(diǎn)與所述連線抽樣梯度大于設(shè)定閾值的候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;當(dāng)然了,也可以是將該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上與該候選點(diǎn)連線抽樣梯度最大的候選點(diǎn)進(jìn)行連接,確定所述候選點(diǎn)與所述連線抽樣梯度最大的候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集。
s103:根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。
具體的,可以根據(jù)每個標(biāo)識字符邊界子點(diǎn)集中的候選點(diǎn),確定存在相同候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集之間的對應(yīng)關(guān)系,根據(jù)標(biāo)識字符邊界子點(diǎn)集之間的對應(yīng)關(guān)系,將存在直接或間接對應(yīng)關(guān)系的標(biāo)識字符邊界子點(diǎn)集聚為一類,從而確定出每個標(biāo)識字符邊界點(diǎn)集。根據(jù)各標(biāo)識字符邊界點(diǎn)集所在的位置,如果標(biāo)識字符為起始符或結(jié)束符中的一種,根據(jù)各標(biāo)識字符邊界點(diǎn)集中位于最左端和位于最右端的邊界點(diǎn)集對應(yīng)的位置確定標(biāo)識字符的位置;其中,左端和右端是根據(jù)掃描線的解碼方向確定的,其中,掃描線解碼的起始方向?yàn)樽蠖耍瑨呙杈€解碼的結(jié)束方向?yàn)橛叶恕?/p>
由于在本發(fā)明實(shí)施例中,根據(jù)位于標(biāo)識字符上的對應(yīng)邊界點(diǎn)之間的連線抽樣梯度,確定標(biāo)識字符邊界子點(diǎn)集,從而確定的每個標(biāo)識字符邊界點(diǎn)集,避免了條碼中存在的紋理干擾,提高了對條碼中標(biāo)識字符定位的準(zhǔn)確性,進(jìn)而提高了條碼識別的成功率。
實(shí)施例2:
為了提高對條碼中標(biāo)識字符定位的準(zhǔn)確性,在上述實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度包括:
針對該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上的對應(yīng)的每個其他候選點(diǎn),在該候選點(diǎn)與該其他候選點(diǎn)的連線上等間隔的選取設(shè)定數(shù)量的像素點(diǎn);將所述設(shè)定數(shù)量的各像素點(diǎn)的梯度值之和,確定為該候選點(diǎn)與對應(yīng)的該其他候選點(diǎn)的連線抽樣梯度。
具體的,針對該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上的對應(yīng)的每個其他候選點(diǎn),在該候選點(diǎn)與該其他候選點(diǎn)的連線上等間隔的選取設(shè)定數(shù)量的像素點(diǎn),所述設(shè)定數(shù)量可以為3、5等,將選取的所述設(shè)定數(shù)量的像素點(diǎn)的梯度值進(jìn)行求和,將所述設(shè)定數(shù)量的像素點(diǎn)的梯度值之和作為該候選點(diǎn)與對應(yīng)的該其他候選點(diǎn)的連線抽樣梯度。在確定時,每個連線上確定的像素點(diǎn)的數(shù)量、確定像素點(diǎn)的方法相同即可。
例如:存在候選點(diǎn)a,與候選點(diǎn)a所在的掃描線相鄰的掃描線上對應(yīng)有候選點(diǎn)b、候選點(diǎn)c,設(shè)定數(shù)量為3,候選點(diǎn)a與候選點(diǎn)b之間等間隔選取3個像素點(diǎn)對應(yīng)的梯度值分別為216、236、247,所述3個像素點(diǎn)的梯度值之和為699,確定候選點(diǎn)a與候選點(diǎn)b的連線抽樣梯度為699,候選點(diǎn)a與候選點(diǎn)c之間等間隔選取3個像素點(diǎn)對應(yīng)的梯度值分別為243、215、231,所述3個像素點(diǎn)的梯度值之和為689,確定候選點(diǎn)a與候選點(diǎn)c的連線抽樣梯度為689。
實(shí)施例3:
為了提高對條碼中標(biāo)識字符定位的準(zhǔn)確性,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)連線抽樣梯度確定所述候選點(diǎn)與該候選點(diǎn)對應(yīng)的其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集包括:
根據(jù)所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,選擇連線抽樣梯度最大且大于設(shè)定閾值的其他候選點(diǎn),確定所述候選點(diǎn)與選擇的所述其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集。
在本發(fā)明實(shí)施例中,為了保證確定的每個標(biāo)識字符邊界子點(diǎn)集準(zhǔn)確性,針對候選點(diǎn)之間的連線抽樣梯度設(shè)置有設(shè)定閾值,所述設(shè)定閾值為預(yù)先根據(jù)位于同一黑條和白條之間的相鄰掃描線上的候選點(diǎn)之間的連線抽樣梯度,及連線上像素點(diǎn)的數(shù)量設(shè)定的。具體的,根據(jù)所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,選擇連線抽樣梯度最大且大于設(shè)定閾值的其他候選點(diǎn),將所述候選點(diǎn)與選擇的所述其他候選點(diǎn)作為標(biāo)識字符邊界子點(diǎn)集中的候選點(diǎn),構(gòu)成標(biāo)識字符邊界子點(diǎn)集。例如:候選點(diǎn)a與候選點(diǎn)b、候選點(diǎn)c、候選點(diǎn)d的連線抽樣梯度分別為85、115、599,設(shè)定閾值為555,候選點(diǎn)a與候選點(diǎn)d之間的連線抽樣梯度最大且大于設(shè)定閾值,將候選點(diǎn)a與候選點(diǎn)d作為標(biāo)識字符邊界子點(diǎn)集中的候選點(diǎn),構(gòu)成標(biāo)識字符邊界子點(diǎn)集。此時,針對每個候選點(diǎn)確定的邊界子點(diǎn)集可能是一個,也可以是多個,也可能沒有。
實(shí)施例4:
為了提高對條碼中標(biāo)識字符定位的準(zhǔn)確性,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)確定的每個標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位包括:
判斷每個標(biāo)識字符邊界點(diǎn)集上候選點(diǎn)的數(shù)量是否大于設(shè)定數(shù)量,如果是,根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位。
具體的,根據(jù)每個標(biāo)識字符邊界子點(diǎn)集中的候選點(diǎn),確定存在相同候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集之間的對應(yīng)關(guān)系,根據(jù)標(biāo)識字符邊界子點(diǎn)集之間的對應(yīng)關(guān)系,將相互之間存在直接或間接對應(yīng)關(guān)系的標(biāo)識字符邊界子點(diǎn)集聚為一類,從而確定出每個標(biāo)識字符邊界點(diǎn)集。確定每個標(biāo)識字符邊界點(diǎn)集后,如果標(biāo)識字符邊界點(diǎn)集上的候選點(diǎn)的數(shù)量大于設(shè)定數(shù)量閾值,則說明該標(biāo)識字符邊界點(diǎn)集為正確條碼紋理區(qū)域確定的邊界點(diǎn)集,根據(jù)候選點(diǎn)的數(shù)量大于設(shè)定數(shù)量閾值的各標(biāo)識字符邊界點(diǎn)集上位于最左端的標(biāo)識字符邊界點(diǎn)集和位于最右端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置。其中,掃描線解碼的起始方向?yàn)樽蠖?,掃描線解碼的結(jié)束方向?yàn)橛叶?,所述?shù)量閾值可以根據(jù)掃描線的數(shù)量確定,例如:所述數(shù)量閾值可以為掃描線數(shù)量的三分之一或掃描線數(shù)量的二分之一等。
圖3為本發(fā)明實(shí)施例提供的一種標(biāo)識字符定位過程示意圖;該過程包括:
s301:針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,選取每條掃描線上符合預(yù)設(shè)的標(biāo)識字符的編碼信息的邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn)。
s302:判斷候選點(diǎn)集中是否存在候選點(diǎn),如果是,進(jìn)行s303,如果否,進(jìn)行s309。
s303:在所述候選點(diǎn)集中任意選取一個候選點(diǎn)作為搜索起點(diǎn),將該候選點(diǎn)添加到候選邊界點(diǎn)集中,并在候選點(diǎn)集中刪除該候選點(diǎn)。
s304:計(jì)算候選點(diǎn)集中與該搜索起點(diǎn)所在的掃描線相鄰的掃描線上的候選點(diǎn)和該搜索起點(diǎn)的連線抽樣梯度。
s305:判斷是否存在該連線抽樣梯度大于設(shè)定閾值的候選點(diǎn),如果是,進(jìn)行s306,如果否,進(jìn)行s307。
s306:將所述候選點(diǎn)集中與該搜索起點(diǎn)所在的掃描線相鄰的掃描線上與該搜索起點(diǎn)連線抽樣梯度最大且大于設(shè)定閾值的候選點(diǎn)作為搜索起點(diǎn),并將該候選點(diǎn)添加到候選邊界點(diǎn)集中,并在候選點(diǎn)集中刪除該候選點(diǎn),進(jìn)行s304。
s307:判斷候選邊界點(diǎn)集中候選點(diǎn)的數(shù)量是否大于設(shè)定數(shù)量閾值,如果是,進(jìn)行s308,如果否,刪除所述候選邊界點(diǎn)集中的每個候選點(diǎn),進(jìn)行s302。
s308:將所述候選邊界點(diǎn)集中的候選點(diǎn)確定為一個邊界點(diǎn)集,并刪除所述候選邊界點(diǎn)集中的每個候選點(diǎn),進(jìn)行s302。
s309:根據(jù)確定的每個邊界點(diǎn)集,確定標(biāo)識字符的位置。
所述根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位包括:
如果當(dāng)前待定位的的標(biāo)識字符為起始符,則根據(jù)位于最左端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置;
如果當(dāng)前待定位的標(biāo)識字符為結(jié)束符,則根據(jù)位于最右端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置。
具體的,如果當(dāng)前待定位的標(biāo)識字符為起始符,根據(jù)位于最左端的標(biāo)識字符邊界點(diǎn)集確定起始符的起始位置,從而確定出起始符的位置;如果當(dāng)前待定位的標(biāo)識字符為結(jié)束符,根據(jù)位于最右端的標(biāo)識字符邊界點(diǎn)集確定出結(jié)束符的結(jié)束位置,從而確定出結(jié)束符的位置,其中,掃描線解碼的起始方向?yàn)樽蠖?,掃描線解碼的結(jié)束方向?yàn)橛叶恕!?/p>
實(shí)施例5:
圖4為本發(fā)明實(shí)施例提供的一種條碼中標(biāo)識字符的定位裝置結(jié)構(gòu)示意圖,該裝置包括:
生成模塊41,用于針對條碼設(shè)定至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符;
確定模塊42,用于針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;
定位模塊43,用于根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。
所述確定模塊42,具體用于針對該候選點(diǎn)與該候選點(diǎn)所在的掃描線相鄰的掃描線上的對應(yīng)的每個其他候選點(diǎn),在該候選點(diǎn)與該其他候選點(diǎn)的連線上等間隔的選取設(shè)定數(shù)量的像素點(diǎn);將所述設(shè)定數(shù)量的各像素點(diǎn)的梯度值之和,確定為該候選點(diǎn)與對應(yīng)的該其他候選點(diǎn)的連線抽樣梯度。
所述確定模塊42,具體用于根據(jù)所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,選擇連線抽樣梯度最大且大于設(shè)定閾值的其他候選點(diǎn),確定所述候選點(diǎn)與選擇的所述其他候選點(diǎn)的標(biāo)識字符邊界子點(diǎn)集。
所述定位模塊43,具體用于判斷每個標(biāo)識字符邊界點(diǎn)集上候選點(diǎn)的數(shù)量是否與所述掃描線的數(shù)量相同,如果相同,根據(jù)該標(biāo)識字符邊界點(diǎn)集,對所述標(biāo)識字符進(jìn)行定位。
所述定位模塊43,具體用于如果當(dāng)前待定位的的標(biāo)識字符為起始符,則根據(jù)位于最左端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置;如果當(dāng)前待定位的標(biāo)識字符為結(jié)束符,則根據(jù)位于最右端的標(biāo)識字符邊界點(diǎn)集,確定標(biāo)識字符的位置。
本發(fā)明公開了一種條碼中標(biāo)識字符的定位方法及裝置,所述方法包括:針對條碼選取至少兩條掃描線,根據(jù)預(yù)設(shè)的標(biāo)識字符的編碼信息,確定標(biāo)識字符在每條掃描線上的邊界點(diǎn),將每個邊界點(diǎn)作為候選點(diǎn)集中的候選點(diǎn),所述標(biāo)識字符包括起始符和結(jié)束符;針對候選點(diǎn)集的任意一個候選點(diǎn),根據(jù)該候選點(diǎn)及與該候選點(diǎn)所在的掃描線相鄰的掃描線上的其他每個候選點(diǎn)的連線上各像素點(diǎn)的梯度值,確定所述候選點(diǎn)與每個其他候選點(diǎn)的連線抽樣梯度,根據(jù)連線抽樣梯度,確定所述候選點(diǎn)與其他候選點(diǎn)對應(yīng)的標(biāo)識字符邊界子點(diǎn)集;根據(jù)所述標(biāo)識字符邊界子點(diǎn)集,確定每個標(biāo)識字符邊界點(diǎn)集,并對所述標(biāo)識字符進(jìn)行定位。由于在本發(fā)明實(shí)施例中,根據(jù)位于標(biāo)識字符上的對應(yīng)邊界點(diǎn)之間的連線抽樣梯度,確定標(biāo)識字符邊界子點(diǎn)集,從而確定的每個標(biāo)識字符邊界點(diǎn)集,避免了條碼中存在的紋理干擾,提高了對條碼中標(biāo)識字符定位的準(zhǔn)確性,進(jìn)而提高了條碼識別的成功率。
對于系統(tǒng)/裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。