亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)矩陣DM碼的定位方法及裝置與流程

文檔序號(hào):11678085閱讀:896來(lái)源:國(guó)知局
一種數(shù)據(jù)矩陣DM碼的定位方法及裝置與流程

本發(fā)明涉及視覺(jué)圖像處理技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)矩陣(datamatrix,dm)碼的定位方法及裝置。



背景技術(shù):

條碼技術(shù)是在計(jì)算機(jī)技術(shù)與信息技術(shù)基礎(chǔ)上發(fā)展起來(lái)的一門(mén)集編碼、印刷、識(shí)別、數(shù)據(jù)采集和處理于一身的新興技術(shù)。條碼技術(shù)由于其識(shí)別快速、準(zhǔn)確、可靠以及成本低等優(yōu)點(diǎn),被廣泛應(yīng)用于商業(yè)、圖書(shū)管理、倉(cāng)儲(chǔ)、郵電、交通和工業(yè)控制等領(lǐng)域,并且勢(shì)必在逐漸興起的“物聯(lián)網(wǎng)”應(yīng)用中發(fā)揮重大的作用。

基于視覺(jué)系統(tǒng)的二維碼檢測(cè)方案中,主要分為二維碼區(qū)域的定位和二維碼區(qū)域的解碼。在二維碼區(qū)域的定位過(guò)程中,如何高效的過(guò)濾掉圖像中非碼區(qū)域,一直是一個(gè)重要的研究課題。

現(xiàn)有的二維碼中的dm碼的定位方案包括:1、過(guò)濾圖像中的非碼區(qū)域,利用dm碼的直線性質(zhì),通過(guò)形態(tài)學(xué)的方法檢測(cè)得到碼區(qū)域的一個(gè)二值圖像,然后通過(guò)掃描線以及黑白比特征進(jìn)行dm碼區(qū)域的定位。2、通過(guò)形態(tài)學(xué)檢測(cè)二值邊緣圖像,通過(guò)霍夫hough變換查找直線,然后組合得到l型,通過(guò)l型特征進(jìn)行dm碼區(qū)域的定位。3、通過(guò)dm碼內(nèi)部的角點(diǎn)聚集程度,對(duì)非碼區(qū)域進(jìn)行過(guò)濾。

采用上述各個(gè)方法對(duì)dm碼進(jìn)行定位時(shí),在復(fù)雜場(chǎng)景中,例如噪聲較多、對(duì)比度差以及紋理豐富時(shí),無(wú)法獲取較高的檢測(cè)率,dm碼定位效果差。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種dm碼的定位方法及裝置,用以解決現(xiàn)有技術(shù)中在復(fù)雜場(chǎng)景中,dm碼的定位效果差的問(wèn)題。

為達(dá)到上述目的,本發(fā)明實(shí)施例公開(kāi)了一種dm碼的定位方法,所述方法包括:

針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;

在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;

按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段;

對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接;

將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

進(jìn)一步地,所述確定梯度圖中的每個(gè)像素點(diǎn)所在的象限包括:

針對(duì)所述梯度圖中的每個(gè)像素點(diǎn),識(shí)別該像素點(diǎn)在預(yù)設(shè)第一方向上的第一子梯度值以及預(yù)設(shè)第二方向上的第二子梯度值,其中第一方向和第二方向相互垂直;

根據(jù)第一子梯度值與第二子梯度值的正負(fù),確定梯度圖中的每個(gè)像素點(diǎn)所在的象限。

進(jìn)一步地,所述對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接包括:

針對(duì)每一個(gè)第一直線段,判斷任意一個(gè)第二直線段是否與該第一直線段的第一夾角在預(yù)設(shè)的第一角度范圍內(nèi),且與該第一直線段的距離小于預(yù)設(shè)的第一距離閾值,如果是,將該第一直線段與所述第二直線段進(jìn)行連接。

進(jìn)一步地,在根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,進(jìn)行如下過(guò)程:

a、判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段;

b、如果是,根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新,返回步驟a;

c、如果否,則進(jìn)行后續(xù)步驟。

進(jìn)一步地,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

根據(jù)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段;

根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域;

根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新;

如果是,則對(duì)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新。

進(jìn)一步地,所述根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新包括:

針對(duì)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,判斷包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配,以及判斷包含第四直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的第四直線段垂直的方向上的變化規(guī)律與所述預(yù)設(shè)變化規(guī)律是否匹配;

如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果均為是,則對(duì)所述第一封閉區(qū)域進(jìn)行更新;

如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域中有至少一個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否,則不對(duì)所述第一封閉區(qū)域進(jìn)行更新。

進(jìn)一步地,所述對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新包括:

針對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段,確定包含該目標(biāo)直線段的第二封閉區(qū)域內(nèi)的與該目標(biāo)直線段平行的直線段;

識(shí)別所述平行的直線段中的平均灰度值最小的直線段;

根據(jù)所述平均灰度值最小的直線段,對(duì)所述目標(biāo)直線段進(jìn)行第二更新。

進(jìn)一步地,所述根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域之前,所述方法還包括:

針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除;

針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行后續(xù)步驟。

進(jìn)一步地,所述根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除包括以下至少一種:

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,如果否,則將該第一封閉區(qū)域刪除;

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除;

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果否,則將該第一封閉區(qū)域刪除。

進(jìn)一步地,在對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新之后,所述方法還包括:

針對(duì)每個(gè)第二更新后的目標(biāo)直線段,根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。

進(jìn)一步地,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

判斷所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像;

如果否,則根據(jù)金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,確定與所述原圖像的級(jí)別相鄰級(jí)別的圖像,在所述相鄰級(jí)別的圖像中確定兩個(gè)所述目標(biāo)直線段的投影直線段,并在所述相鄰級(jí)別的圖像中,將所述投影直線段作為目標(biāo)直線段,進(jìn)行后續(xù)步驟,其中,所述相鄰級(jí)別的圖像的尺度較原圖像的尺度大;

如果是,則在最大尺度的原圖像中,進(jìn)行后續(xù)步驟。

進(jìn)一步地,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼包括:

針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段;

將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼。

進(jìn)一步地,所述將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼包括:

針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)dm碼的每個(gè)邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,確定矩形區(qū)域,對(duì)每個(gè)矩形區(qū)域內(nèi)的像素點(diǎn)進(jìn)行投影,根據(jù)投影的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形圖形框,將該矩形框確定為該dm碼精確的邊緣。

本發(fā)明實(shí)施例公開(kāi)了一種數(shù)據(jù)矩陣dm碼的定位裝置,所述裝置包括:

確定模塊,用于針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;

所述確定模塊,還用于在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;

所述確定模塊,還用于按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段;

連接模塊,用于對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接;

定位模塊,用于將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

進(jìn)一步地,所述確定模塊,具體用于針對(duì)所述梯度圖中的每個(gè)像素點(diǎn),識(shí)別該像素點(diǎn)在預(yù)設(shè)第一方向上的第一子梯度值以及預(yù)設(shè)第二方向上的第二子梯度值,其中第一方向和第二方向相互垂直;根據(jù)第一子梯度值與第二子梯度值的正負(fù),確定梯度圖中的每個(gè)像素點(diǎn)所在的象限。

進(jìn)一步地,所述連接模塊,具體用于針對(duì)每一個(gè)第一直線段,判斷任意一個(gè)第二直線段是否與該第一直線段的第一夾角在預(yù)設(shè)的第一角度范圍內(nèi),且與該第一直線段的距離小于預(yù)設(shè)的第一距離閾值,如果是,將該第一直線段與所述第二直線段進(jìn)行連接。

進(jìn)一步地,所述裝置還包括:

更新模塊,用于針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,進(jìn)行如下過(guò)程:a、判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段;b、如果是,根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新,返回步驟a;c、如果否,則進(jìn)行后續(xù)步驟。

進(jìn)一步地,所述更新模塊,還用于根據(jù)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段;根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域;根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新;如果是,則對(duì)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新。

進(jìn)一步地,所述更新模塊,具體用于針對(duì)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,判斷包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配,以及判斷包含第四直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的第四直線段垂直的方向上的變化規(guī)律與所述預(yù)設(shè)變化規(guī)律是否匹配;如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果均為是,則對(duì)所述第一封閉區(qū)域進(jìn)行更新;如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域中有至少一個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否,則不對(duì)所述第一封閉區(qū)域進(jìn)行更新。

進(jìn)一步地,所述更新模塊,具體用于針對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段,確定包含該目標(biāo)直線段的第二封閉區(qū)域內(nèi)的與該目標(biāo)直線段平行的直線段;識(shí)別所述平行的直線段中的平均灰度值最小的直線段;根據(jù)所述平均灰度值最小的直線段,對(duì)所述目標(biāo)直線段進(jìn)行第二更新。

進(jìn)一步地,所述裝置還包括:

刪除模塊,用于針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除;針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行后續(xù)步驟。

進(jìn)一步地,所述刪除模塊,具體用于針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,如果否,則將該第一封閉區(qū)域刪除;和/或針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除;和/或針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果否,則將該第一封閉區(qū)域刪除。

進(jìn)一步地,所述更新模塊,還用于針對(duì)每個(gè)第二更新后的目標(biāo)直線段,根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。

進(jìn)一步地,所述裝置還包括:

判斷模塊,用于判斷所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像;當(dāng)判斷結(jié)果為否,則根據(jù)金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,確定與所述原圖像的級(jí)別相鄰級(jí)別的圖像,在所述相鄰級(jí)別的圖像中確定兩個(gè)所述目標(biāo)直線段的投影直線段,并在所述相鄰級(jí)別的圖像中,將所述投影直線段作為目標(biāo)直線段,進(jìn)行后續(xù)步驟,其中,所述相鄰級(jí)別的圖像的尺度較原圖像的尺度大;當(dāng)判斷結(jié)果為是,則觸發(fā)定位模塊。

進(jìn)一步地,所述定位模塊,具體用于針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段;將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼。

進(jìn)一步地,所述定位模塊,具體用于針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)dm碼的每個(gè)邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,確定矩形區(qū)域,對(duì)每個(gè)矩形區(qū)域內(nèi)的像素點(diǎn)進(jìn)行投影,根據(jù)投影的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形圖形框,將該矩形框確定為該dm碼精確的邊緣。

本發(fā)明實(shí)施例公開(kāi)了一種dm碼的定位方法及裝置,所述方法包括:針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段;對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接;將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。由于在本發(fā)明實(shí)施例中,確定出原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限,確定所述梯度圖中的鞍點(diǎn)及鞍點(diǎn)線段,按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段。對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接,將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。在復(fù)雜場(chǎng)景中,也可以快速精確的定位二維碼。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的一種dm碼的定位過(guò)程示意圖;

圖2為本發(fā)明實(shí)施例提供的一種dm碼示意圖;

圖3a本發(fā)明實(shí)施例提供的一種第一目標(biāo)直線段的包圍區(qū)域示意圖;

圖3b為本發(fā)明實(shí)施例提供的一種第一封閉區(qū)域及對(duì)應(yīng)的包含目標(biāo)直線段的第二封閉區(qū)域的示意圖;

圖3c為本發(fā)明實(shí)施例提供的一種第一封閉區(qū)域?qū)?yīng)的第二封閉區(qū)域示意圖;

圖4為本發(fā)明實(shí)施例提供的一種dm碼的定位過(guò)程示意圖;

圖5為本發(fā)明實(shí)施例提供的一種dm碼的定位裝置結(jié)構(gòu)圖;

圖6為本發(fā)明實(shí)施例提供的一種dm碼的定位裝置結(jié)構(gòu)圖。

具體實(shí)施方式

為了提高在復(fù)雜場(chǎng)景中,dm碼的定位準(zhǔn)確性,本發(fā)明實(shí)施例提供了一種dm碼的定位方法及裝置。

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

實(shí)施例1:

圖1為本發(fā)明實(shí)施例提供的一種dm碼的定位過(guò)程示意圖,該過(guò)程包括以下步驟:

s101:針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限。

本發(fā)明實(shí)施例提供的dm碼的定位方法可以應(yīng)用于電子設(shè)備。該電子設(shè)備可以是手持式二維碼掃描儀、固定式二維碼掃描儀等設(shè)備,也可以是具有二維碼定位功能的手機(jī)、平板電腦等終端設(shè)備。

電子設(shè)備可以識(shí)別待定位的原圖像中的每個(gè)像素點(diǎn)的位置,以及每個(gè)像素點(diǎn)的灰度值,根據(jù)識(shí)別的每個(gè)像素點(diǎn)的灰度值,確定該像素點(diǎn)的梯度值。在確定該像素點(diǎn)的梯度值時(shí),可以是確定該像素點(diǎn)在某一個(gè)方向上的梯度值,也可以是該像素點(diǎn)在相互垂直的兩個(gè)方向上的梯度值。

如果確定的是該像素點(diǎn)在某一個(gè)方向上的梯度值,具體的可以是根據(jù)該像素點(diǎn)的灰度值及在預(yù)設(shè)方向上的與該像素點(diǎn)相鄰的像素點(diǎn)的灰度值的差值的絕對(duì)值來(lái)確定。所述預(yù)設(shè)方向可以是該像素點(diǎn)的上方或下方中的一種,或者左方或右方中的一種。所述確定像素點(diǎn)的梯度值的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。

當(dāng)把原圖像中的每個(gè)像素點(diǎn)的梯度值均確定完成后,可以根據(jù)每個(gè)像素點(diǎn)在原圖像中的位置,確定所述原圖像的梯度圖。在所述梯度圖中,每個(gè)像素點(diǎn)的位置與原圖像中的該像素點(diǎn)的位置是一致的。

針對(duì)所述梯度圖中的每個(gè)像素點(diǎn),電子設(shè)備還可以確定每個(gè)像素點(diǎn)所在的象限。在確定每個(gè)像素點(diǎn)所在的象限時(shí),可以是根據(jù)該像素點(diǎn)的灰度值和與該像素點(diǎn)相鄰的第一像素點(diǎn)的灰度值的第一差值,以及該像素點(diǎn)的灰度值和與該像素點(diǎn)相鄰的第二像素點(diǎn)的灰度值的第二差值確定的。所述第一像素點(diǎn)和第二像素點(diǎn)位于該確定所在象限的像素點(diǎn)的兩個(gè)方向上,并且兩個(gè)方向相互垂直。確定每個(gè)像素點(diǎn)所在的象限的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。

在確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限之前,可以該待定位的原圖像進(jìn)行高斯平滑,濾除噪聲。

s102:在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn)。

當(dāng)確定出梯度圖后,可以在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn)。在確定所述梯度圖中的鞍點(diǎn)時(shí),可以是根據(jù)該像素點(diǎn)的梯度值以及與該像素點(diǎn)相鄰的像素點(diǎn)的梯度值確定的。所述確定所述梯度圖中的鞍點(diǎn)的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。

s103:針對(duì)所述梯度圖中的每個(gè)像素點(diǎn)所在的象限,根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段。

所述梯度圖中的每個(gè)像素點(diǎn)有其所在的象限,當(dāng)確定出每個(gè)鞍點(diǎn)后,所述鞍點(diǎn)也有其所在的象限。所述象限可以是第一象限,可以是第二象限,可以是第三象限,也可以是第四象限。每個(gè)鞍點(diǎn)所在的象限是唯一的,每個(gè)象限中的鞍點(diǎn)可以是一個(gè),也可以是多個(gè)。

每個(gè)象限有其對(duì)應(yīng)的方向,將每個(gè)象限中的鞍點(diǎn)根據(jù)每個(gè)象限的方向進(jìn)行連接,則會(huì)構(gòu)成鞍點(diǎn)線段。所述鞍點(diǎn)線段可以是直線,也可以是非直線。

每個(gè)象限的方向?yàn)檠刂鴺?gòu)成該象限的每個(gè)坐標(biāo)軸對(duì)應(yīng)的方向。例如,構(gòu)成象限的坐標(biāo)系為xy坐標(biāo)系,則坐標(biāo)軸為x軸和y軸。第一象限的方向?yàn)檠刂鴛軸的正方向以及y軸的正方向?qū)?yīng)的方向,第二象限的方向?yàn)檠刂鴛軸的負(fù)方向以及y軸的正方向?qū)?yīng)的方向,第三象限的方向?yàn)檠刂鴛軸的負(fù)方向以及y軸的負(fù)方向?qū)?yīng)的方向,第四象限的方向?yàn)檠刂鴛軸的正方向以及y軸的負(fù)方向?qū)?yīng)的方向。

在進(jìn)行第一象限的鞍點(diǎn)線段連接時(shí),可以是沿著x軸的正方向進(jìn)行連接,也可以是沿著y軸的正方向進(jìn)行連接,還可以是沿著與x軸的夾角為45度的方向進(jìn)行連接。

s104:按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段。

當(dāng)確定出每個(gè)鞍點(diǎn)線段后,電子設(shè)備可以識(shí)別出每個(gè)鞍點(diǎn)線段中的每個(gè)像素點(diǎn)的極性。

電子設(shè)備中保存有鏈碼的順序,當(dāng)識(shí)別出每個(gè)鞍點(diǎn)線段中的每個(gè)像素點(diǎn)的極性后,可以針對(duì)每個(gè)鞍點(diǎn)線段,按照鏈碼的順序,擬合該鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成直線段段。電子設(shè)備在確定每個(gè)像素點(diǎn)的極性時(shí),可以是根據(jù)該像素點(diǎn)的灰度值及與其相鄰的每個(gè)像素點(diǎn)的灰度值的差確定的。確定每個(gè)像素點(diǎn)的極性的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。所述按照鏈碼的順序,擬合極性相同的像素點(diǎn),構(gòu)成直線段的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。

上述確定直線段的過(guò)程可以稱(chēng)為極性線段檢測(cè)過(guò)程。

s105:對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接。

電子設(shè)備中預(yù)先保存有第一距離條件和第一角度條件,當(dāng)確定出每個(gè)直線段后,可以判斷每?jī)蓚€(gè)直線段是否滿足所述第一距離條件和第一角度條件,如果是,則可以將該兩個(gè)直線段進(jìn)行連接。

s106:將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

當(dāng)電子設(shè)備將兩個(gè)直線段進(jìn)行連接后,可以將相互連接的兩個(gè)直線段作為目標(biāo)直線段,并根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

在根據(jù)所述兩個(gè)目標(biāo)直線段確定dm碼時(shí),可以是針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段,將兩個(gè)目標(biāo)直線段以及兩個(gè)第五直線段構(gòu)成的封閉區(qū)域,確定為dm碼。

由于在本發(fā)明實(shí)施例中,確定出原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限,確定所述梯度圖中的鞍點(diǎn)及鞍點(diǎn)線段,按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段。對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接,將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。在復(fù)雜場(chǎng)景中,也可以快速精確的定位二維碼。

實(shí)施例2:

在上述實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述確定梯度圖中的每個(gè)像素點(diǎn)所在的象限包括:

針對(duì)所述梯度圖中的每個(gè)像素點(diǎn),識(shí)別該像素點(diǎn)在預(yù)設(shè)第一方向上的第一子梯度值以及預(yù)設(shè)第二方向上的第二子梯度值,其中第一方向和第二方向相互垂直;

根據(jù)第一子梯度值與第二子梯度值的正負(fù),確定梯度圖中的每個(gè)像素點(diǎn)所在的象限。

在本發(fā)明實(shí)施例中,電子設(shè)備中預(yù)先保存有第一方向和第二方向,所述第一方向和第二方向相互垂直。在確定梯度圖中的每個(gè)像素點(diǎn)所在的象限時(shí),可以是針對(duì)梯度圖中的每個(gè)像素點(diǎn),識(shí)別該像素點(diǎn)在第一方向上的第一子梯度值和該像素點(diǎn)在第二方向上的第二子梯度值,根據(jù)第一子梯度值與第二子梯度值的正負(fù),確定梯度圖中的每個(gè)像素點(diǎn)所在的象限,其中,第一子梯度值和第二子梯度值可以是相同的,也可以是不同的。

在確定每個(gè)像素點(diǎn)的梯度值時(shí),可以根據(jù)羅伯特robert算子,確定每個(gè)像素點(diǎn)的在第一方向上的第一子梯度值和第二方向上的第二子梯度值。具體的,可以是將該原圖像放置于xy坐標(biāo)系中,第一方向可以是x軸正方向,第二方向可以是y軸正方向。計(jì)算每個(gè)像素點(diǎn)的x軸正方向的第一子梯度值和y軸正方向的第二子梯度值。

在根據(jù)該像素點(diǎn)的第一子梯度值與第二子梯度值的正負(fù),確定該像素點(diǎn)所在的象限時(shí),具體可以是,如果該像素點(diǎn)在第一方向上的第一子梯度值大于0,且在第二方向上的第二子梯度值大于0,則該像素點(diǎn)位于第一象限;如果該像素點(diǎn)在第一方向的第一子梯度值小于0,且在第二方向上的第二子梯度值大于0,則該像素點(diǎn)位于第二象限;如果該像素點(diǎn)在第一方向上的第一子梯度值小于0,且在第二方向上的第二子梯度值小于0,則該像素點(diǎn)位于第三象限;如果該像素點(diǎn)在第一方向上的第一子梯度值大于0,且在第二方向上的第二子梯度值小于0,則該像素點(diǎn)位于第四象限。

在確定該原圖像的梯度圖的時(shí),也可以是根據(jù)robert算子確定,可以是針對(duì)每個(gè)像素點(diǎn),將該像素點(diǎn)第一方向上的第一子梯度值與第二方向上的第二子梯度值的平方和再開(kāi)方確定為該像素點(diǎn)的梯度值,然后在該梯度圖中,將對(duì)應(yīng)該像素點(diǎn)的位置的像素值,確定為該像素點(diǎn)的梯度值。

實(shí)施例3:

在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接包括:

針對(duì)每一個(gè)第一直線段,判斷任意一個(gè)第二直線段是否與該第一直線段的第一夾角在預(yù)設(shè)的第一角度范圍內(nèi),且與該第一直線段的距離小于預(yù)設(shè)的第一距離閾值,如果是,將該第一直線段與所述第二直線段進(jìn)行連接。

在本發(fā)明實(shí)施例中,電子設(shè)備中保存有預(yù)設(shè)的第一角度范圍和第一距離閾值,當(dāng)確定出每個(gè)直線段后,可以根據(jù)預(yù)先保存的第一角度范圍和第一距離閾值,對(duì)直線段進(jìn)行連接。

具體的可以是針對(duì)每一個(gè)第一直線段,判斷任意一個(gè)第二直線段與該第一直線段的第一夾角是否在預(yù)設(shè)的第一角度范圍內(nèi),并且判斷該任意一個(gè)第二直線段與該第一直線段的距離是否小于預(yù)設(shè)的第一距離閾值,如果均是,將該第一直線段與所述第二直線段進(jìn)行連接。如果有一個(gè)為否,則不將該第二直線段與該第一直線段連接。

圖2為本發(fā)明實(shí)施例提供的dm碼示意圖,由圖2可以看出dm碼的標(biāo)識(shí)定位符為“l(fā)”型。因此為了提高在復(fù)雜場(chǎng)景中,dm碼的定位準(zhǔn)確性,在定位dm碼時(shí),可以先定位出該dm碼的標(biāo)識(shí)定位符,即“l(fā)”型,所以較優(yōu)的,所述第一夾角為90度。但由于電子設(shè)備可能不是在待定位dm碼的正上方采集原圖像,則即使該第一直線段與第二直線段對(duì)應(yīng)dm碼的標(biāo)識(shí)定位符,即“l(fā)”型,第一直線段與第二直線段的第一夾角也不是90度。所述第一夾角可以位于第一角度范圍內(nèi),例如所述第一角度范圍可以是85度至95度。

即使該第一直線段與第二直線段的第一夾角在預(yù)設(shè)的第一角度范圍內(nèi),在判斷是否將第一直線段與第二直線段進(jìn)行連接時(shí),還需要考慮該第一直線段與第二直線段的距離。

第一直線段與第二直線段的距離可以是第一直線段中的靠近第二直線段的一個(gè)端點(diǎn),與第二直線段中的靠近第一直線段的一個(gè)端點(diǎn)之間的距離,也可以是第一直線段所在第一直線與第二直線段所在第二直線的交點(diǎn),與該第一直線段中的靠近所述交點(diǎn)的端點(diǎn)之間的距離,或所述交點(diǎn)與第二直線段中的靠近所述交點(diǎn)的端點(diǎn)之間的距離。

實(shí)施例4:

第一直線段和第二直線段作為目標(biāo)直線段,確定dm碼,為了使定位的dm碼更加準(zhǔn)確,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,在根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,進(jìn)行如下過(guò)程:

a、判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段;

b、如果是,根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新,返回步驟a;

c、如果否,則進(jìn)行后續(xù)步驟。

在本發(fā)明實(shí)施例中,電子設(shè)備中預(yù)先保存有第二角度范圍和第二距離閾值,當(dāng)確定出每個(gè)目標(biāo)直線段后,可以根據(jù)預(yù)先保存的第二角度范圍和第二距離閾值以及該目標(biāo)直線段之外的直線段,對(duì)所述目標(biāo)直線段進(jìn)行更新。

針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,在對(duì)該第一目標(biāo)直線段進(jìn)行更新時(shí),具體的可以是,判斷是否存在與該第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與該第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段。如果存在,根據(jù)所述第三直線段與該第一目標(biāo)直線段對(duì)該第一目標(biāo)直線段進(jìn)行第一更新,并針對(duì)更新后的第一目標(biāo)直線段,再次判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段。如果存在,再次根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新。直至不存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的直線段,則說(shuō)明對(duì)該第一目標(biāo)直線段更新完成。

當(dāng)對(duì)兩個(gè)目標(biāo)直線段均進(jìn)行第一更新完成后,則可以根據(jù)第一更新后的所述兩個(gè)目標(biāo)直線段,確定dm碼。

另一種情況可能是,針對(duì)每個(gè)第一目標(biāo)直線段,不存在與該第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的直線段,則不對(duì)第一目標(biāo)直線段進(jìn)行第一更新,在確定dm碼時(shí),則可以根據(jù)未更新的兩個(gè)目標(biāo)直線段確定。

再一種情況可能是,兩個(gè)目標(biāo)直線段中有一個(gè)第一目標(biāo)直線段,存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段,則可以對(duì)該第一目標(biāo)直線段進(jìn)行第一更新。針對(duì)另一個(gè)第一目標(biāo)直線段,不存在與所述另一個(gè)第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述另一個(gè)第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段,則可以對(duì)該第一目標(biāo)直線段進(jìn)行第一更新,則根據(jù)進(jìn)行第一更新的一個(gè)目標(biāo)直線段和未進(jìn)行第一更新的另一個(gè)目標(biāo)直線段,確定dm碼。

因?yàn)闃?gòu)成dm碼的標(biāo)識(shí)定位符“l(fā)”型對(duì)應(yīng)的第一目標(biāo)直線段會(huì)有一定的長(zhǎng)度,當(dāng)?shù)谝荒繕?biāo)直線段的長(zhǎng)度太小時(shí),可能無(wú)法定位出dm碼,所以需要將第一目標(biāo)直線段的長(zhǎng)度進(jìn)行延伸,即對(duì)第一目標(biāo)直線段進(jìn)行第一更新。

在進(jìn)行第一更新時(shí),因?yàn)槭菍⒌谝荒繕?biāo)直線段的長(zhǎng)度進(jìn)行延伸,則第三直線段的應(yīng)該與第一目標(biāo)直線段處于一條直線上,較佳的第二夾角為0度,但由于印刷等原因,第三直線段與第一目標(biāo)直線段的夾角可能大于0度,則第二夾角可以位于第二角度范圍內(nèi),所述第二角度范圍可以是0度至5度。

在對(duì)第一目標(biāo)直線段進(jìn)行延伸時(shí),除了需要考慮角度因素,還需要考慮距離因素,如果第三直線段的距離與第一目標(biāo)直線段的距離在預(yù)設(shè)的第二距離范圍內(nèi),則可以根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新。

第三直線段與第一目標(biāo)直線段的距離,可以是第三直線段中的靠近第一目標(biāo)直線段的端點(diǎn),與第一目標(biāo)直線段中的靠近第三直線段的端點(diǎn)的距離,可以是第三直線段中的靠近第一目標(biāo)直線段的端點(diǎn)到第一目標(biāo)直線段所在直線的距離,也可以是第一目標(biāo)直線段中的靠近第三直線段的端點(diǎn)到第三直線段所在直線的距離。在確定第三直線段與第一目標(biāo)直線段的距離時(shí),因?yàn)槭菍?duì)目標(biāo)直線段進(jìn)行延伸,所以第三直線段應(yīng)該與第一目標(biāo)直線段在一條直線上。當(dāng)上述確定的第三直線段與第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值時(shí),可能是第一目標(biāo)直線段與第三直線段平行,但第三直線段的垂線與第一目標(biāo)直線段的垂線,重疊較多。所以還應(yīng)該給第一目標(biāo)直線段設(shè)定包圍范圍,第三直線段不應(yīng)該在目標(biāo)直線段的包圍范圍內(nèi),所述包圍范圍可以是根據(jù)第一目標(biāo)直線段的長(zhǎng)度,確定包含該第一目標(biāo)直線段的包圍區(qū)域,第三直線段不應(yīng)該位于所述包圍區(qū)域中。如果位于目標(biāo)直線段的包圍范圍內(nèi),則不符合第二距離閾值的條件,則不能將該第三直線段與第一目標(biāo)直線段進(jìn)行連接。

所述包圍區(qū)域可以是按照一定的長(zhǎng)寬比例確定的包含該第一目標(biāo)直線段的矩形包圍區(qū)域,也可以是以第一目標(biāo)直線段為直徑確定的包含該第一目標(biāo)直線段的圓形包圍區(qū)域。如圖3a所示的第一目標(biāo)直線段的包圍區(qū)域,該包圍區(qū)域?yàn)橐缘谝荒繕?biāo)直線段為直徑確定的圓形包圍區(qū)域,第三直線段和該圓形包圍區(qū)域有交叉,則認(rèn)為位于所述圓形包圍區(qū)域內(nèi)。

在根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新時(shí),可以是對(duì)第三直線段與第一目標(biāo)直線段采用線段擬合算法,將該第三直線段與第一目標(biāo)直線段擬合成一個(gè)直線段,將擬合后的直線段作為第一目標(biāo)直線段。所述采用線段擬合算法,將該第三直線段與第一目標(biāo)直線段擬合成一個(gè)直線段的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程不進(jìn)行贅述。也可以是根據(jù)該第三直線段中的與第一目標(biāo)直線段的距離較遠(yuǎn)的端點(diǎn),以及第一目標(biāo)直線段中的與另一目標(biāo)直線段連接的端點(diǎn),確定一個(gè)直線段,將該直線段作為目標(biāo)直線段。

實(shí)施例5:

為了使目標(biāo)直線段更加符合dm碼的標(biāo)識(shí)定位符對(duì)應(yīng)的直線段,進(jìn)一步達(dá)到定位的dm碼更加準(zhǔn)確,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

根據(jù)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段;

根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域;

根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新;

如果是,則對(duì)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新。

在本發(fā)明實(shí)施例中,當(dāng)確定出兩個(gè)目標(biāo)直線段后,為了使定位的dm碼更加準(zhǔn)確,可以對(duì)兩個(gè)目標(biāo)直線段進(jìn)行第二更新。該第二更新可以是在第一更新之后,也可以是在第一更之前,較優(yōu)的,第二更新在第一更新之后,在根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前。

確定是否對(duì)兩個(gè)目標(biāo)直線段進(jìn)行第二更新時(shí),可以進(jìn)行如下操作:

針對(duì)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段,因?yàn)橛袃蓚€(gè)目標(biāo)直線段,所以確定的第四直線段也為兩個(gè),兩個(gè)目標(biāo)直線段和兩個(gè)第四直線段可以構(gòu)成第一封閉區(qū)域。在確定第一封閉區(qū)域時(shí),可以是將目標(biāo)直線段與第四直線段首尾相連構(gòu)成一個(gè)封閉區(qū)域,因?yàn)閮蓚€(gè)目標(biāo)直線段幾乎垂直,并且兩個(gè)第四直線段與兩個(gè)目標(biāo)直線段對(duì)應(yīng)平行,則確定的第一封閉區(qū)域接近矩形,當(dāng)兩個(gè)目標(biāo)直線段垂直時(shí),則該第一封閉區(qū)域?yàn)榫匦巍?/p>

當(dāng)確定出第一封閉區(qū)域后,可以根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段的第二封閉區(qū)域,根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域。因?yàn)閮蓚€(gè)目標(biāo)直線段和兩個(gè)第四直線段可以構(gòu)成第一封閉區(qū)域,所以每個(gè)第一封閉區(qū)域?qū)?yīng)有四個(gè)第二封閉區(qū)域。

在確定第二封閉區(qū)域時(shí),可以是確定一個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的任意形狀的封閉區(qū)域,該第二封閉區(qū)域可以是圓形封閉區(qū)域,可以是矩形封閉區(qū)域,也可以是不規(guī)則形狀的封閉區(qū)域。包含目標(biāo)直線段的第二封閉區(qū)域中的目標(biāo)直線段可以是位于該第二封閉區(qū)域的任意位置上,包含第四直線段的第二封閉區(qū)域中的第四直線段可以是位于該第二封閉區(qū)域的任意位置上。例如可以是位于該第二封閉區(qū)域的上方或下方或左方或右方或中間位置上。較優(yōu)的,該第二封閉區(qū)域?yàn)榫匦畏忾]區(qū)域,該目標(biāo)直線段或第四直線段位于該第二封閉區(qū)域的中間位置上。

如果該第二封閉區(qū)域?yàn)榫匦畏忾]區(qū)域,在確定包含目標(biāo)直線段的第二封閉區(qū)域時(shí),具體的,可以是,該第二封閉區(qū)域包含與該目標(biāo)直線段平行的兩個(gè)相互平行的第一邊,和與該目標(biāo)直線段垂直的兩個(gè)相互平行的第二邊。將該目標(biāo)直線段的預(yù)設(shè)第一比例的長(zhǎng)度作為該第二封閉區(qū)域中的第一邊的長(zhǎng)度,將該目標(biāo)直線段的預(yù)設(shè)第二比例的長(zhǎng)度作為該第二封閉區(qū)域中的第二邊的長(zhǎng)度,所述預(yù)設(shè)第一比例和預(yù)設(shè)第二比例可以相同,也可以不同。在確定該第二封閉區(qū)域中第一邊的長(zhǎng)度時(shí),也可以是對(duì)該目標(biāo)直線段的兩個(gè)端點(diǎn)分別延長(zhǎng)預(yù)設(shè)個(gè)數(shù)的像素點(diǎn)后對(duì)應(yīng)的長(zhǎng)度作為該第一邊的長(zhǎng)度。

當(dāng)確定出第二封閉區(qū)域后,目標(biāo)直線段位于所述第二封閉區(qū)域的中間位置上。所述目標(biāo)直線段位于所述第二封閉區(qū)域的中間位置上具體的可以理解為:所述第二封閉區(qū)域的中心點(diǎn)與所述目標(biāo)直線段的中心點(diǎn)重合。

如果該第二封閉區(qū)域?yàn)榫匦螀^(qū)域,在確定包含第四直線段的第二封閉區(qū)域時(shí)的過(guò)程與確定包含目標(biāo)直線段的第二封閉區(qū)域的過(guò)程類(lèi)似,相信本領(lǐng)域技術(shù)人員可以想出具體實(shí)施例,在此不再進(jìn)行贅述。

圖3b為第一封閉區(qū)域及對(duì)應(yīng)的包含目標(biāo)直線段的第二封閉區(qū)域的示意圖,該目標(biāo)直線段的長(zhǎng)度為10mm,所述預(yù)設(shè)的第二比例可以是2/5,所述預(yù)設(shè)個(gè)數(shù)為10,每個(gè)像素點(diǎn)的對(duì)應(yīng)的長(zhǎng)度為0.5mm。則該第二封閉區(qū)域中的與目標(biāo)直線段垂直的第二邊的長(zhǎng)度為10*(2/5)=4mm,該第二封閉區(qū)域中的與目標(biāo)直線段平行的第一邊的長(zhǎng)度為10+0.5*10*2=20mm。

在判斷是否對(duì)兩個(gè)目標(biāo)直線段進(jìn)行第二更新時(shí),可以是判斷是否對(duì)該第一封閉區(qū)域進(jìn)行更新。在判斷是否對(duì)該第一封閉區(qū)域進(jìn)行更新時(shí),可以是根據(jù)該第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值確定的。

在根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新時(shí),可以是針對(duì)第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,識(shí)別該第二封閉區(qū)域中的每個(gè)像素點(diǎn)的灰度值,判斷灰度值在預(yù)設(shè)的灰度值范圍內(nèi)的像素點(diǎn)的數(shù)量是否在預(yù)設(shè)的數(shù)量范圍內(nèi)。

如果判斷出對(duì)該第一封閉區(qū)域進(jìn)行更新,則對(duì)該第一封閉區(qū)域內(nèi)的兩個(gè)目標(biāo)直線段進(jìn)行第二更新,根據(jù)第二更新后的兩個(gè)目標(biāo)直線段確定出更新后的第一封閉區(qū)域。

當(dāng)判斷出不對(duì)該第一封閉區(qū)域進(jìn)行第二更新時(shí),則說(shuō)明該第一封閉區(qū)域?qū)?yīng)的圖像特征不符合dm碼的圖像特征,則可以舍棄不進(jìn)行第二更新的第一封閉區(qū)域,僅對(duì)進(jìn)行第二更新的第一封閉區(qū)域進(jìn)行后續(xù)操作。即僅根據(jù)進(jìn)行第二更新的兩個(gè)目標(biāo)直線段,確定dm碼。

因?yàn)閮蓚€(gè)目標(biāo)直線段與dm碼的標(biāo)識(shí)定位符“l(fā)”型中的兩個(gè)直線段相對(duì)應(yīng),該“l(fā)”型中的兩個(gè)直線段中的每個(gè)像素點(diǎn)應(yīng)該均為黑色,即灰度值為0,平均灰度值也0,但由于印刷等問(wèn)題,可能會(huì)存在像素點(diǎn)的灰度值非0的情況,這樣該目標(biāo)直線段的平均灰度值非0,所以在對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新時(shí),可以是,根據(jù)該第二封閉區(qū)域內(nèi)的平均灰度值最小的行或列對(duì)目標(biāo)直線段進(jìn)行第二更新。

實(shí)施例6:

為了使定位的dm碼更加準(zhǔn)確,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新包括:

針對(duì)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,判斷包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配,以及判斷包含第四直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的第四直線段垂直的方向上的變化規(guī)律與所述預(yù)設(shè)變化規(guī)律是否匹配;

如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果均為是,則對(duì)所述第一封閉區(qū)域進(jìn)行更新;

如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域中有至少一個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否,則不對(duì)所述第一封閉區(qū)域進(jìn)行更新。

電子設(shè)備中預(yù)設(shè)保存有像素點(diǎn)的灰度值的變化規(guī)律,在判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新時(shí),可以是針對(duì)該第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,識(shí)別包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的每個(gè)像素點(diǎn)的灰度值,判斷所述灰度值在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配,以及識(shí)別包含第四直線段的第二封閉區(qū)域內(nèi)的每個(gè)像素點(diǎn)的灰度值,判斷所述灰度值在與該第二封閉區(qū)域包含的第四直線段垂直的方向上的變化規(guī)律與所述預(yù)設(shè)變化規(guī)律是否匹配。

預(yù)設(shè)的變化規(guī)律可以是第一封閉區(qū)域以及對(duì)應(yīng)的第二封閉區(qū)域,針對(duì)每個(gè)第二封閉區(qū)域,位于第一封閉區(qū)域內(nèi)且位于該第二封閉區(qū)域內(nèi)的所有像素點(diǎn)的第一平均灰度值為0,位于第一封閉區(qū)域外且位于該第二封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二平均灰度值為255。

第一封閉區(qū)域由兩個(gè)目標(biāo)直線和兩個(gè)第四直線段構(gòu)成,所以第一封閉區(qū)域?qū)?yīng)有四個(gè)第二封閉區(qū)域。

如果所述四個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果均為是,則對(duì)所述第一封閉區(qū)域進(jìn)行更新;

如果所述四個(gè)第二封閉區(qū)域中有至少一個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否,則不對(duì)所述第一封閉區(qū)域進(jìn)行更新。

電子設(shè)備的預(yù)先保存的變化規(guī)律可以是在第二封閉區(qū)域中,由第一封閉區(qū)域的內(nèi)部至第一封閉區(qū)域的外部的像素點(diǎn)的灰度值變化規(guī)律為第一封閉區(qū)域的內(nèi)部的像素點(diǎn)的灰度值為0,在第一封閉區(qū)域的外部的像素點(diǎn)的灰度值為255。

如圖3c所示的第一封閉區(qū)域?qū)?yīng)的第二封閉區(qū)域,該第二封閉區(qū)域?yàn)榘繕?biāo)直線段的第二封閉區(qū)域。針對(duì)第二封閉區(qū)域來(lái)說(shuō),在目標(biāo)直線段的右側(cè)的區(qū)域中的每個(gè)像素點(diǎn)的灰度值為0,在目標(biāo)直線段的左側(cè)的區(qū)域中的每個(gè)像素點(diǎn)的灰度值為255。

在判斷包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配時(shí),具體的可以是判斷該目標(biāo)直線段的右側(cè)的區(qū)域內(nèi)的像素點(diǎn)的灰度值為0的數(shù)量是否在大于設(shè)定的數(shù)量閾值,該目標(biāo)直線段的左側(cè)的區(qū)域內(nèi)的像素點(diǎn)的灰度值為255的數(shù)量是否大于設(shè)定的數(shù)量閾值。如果均為是,則確定該第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為是,否則該第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否。所述設(shè)定的數(shù)量閾值與左側(cè)的區(qū)域或右測(cè)的區(qū)域內(nèi)的像素點(diǎn)的數(shù)量有關(guān),可以是左側(cè)的區(qū)域內(nèi)的像素點(diǎn)為10個(gè),則設(shè)定的數(shù)量閾值為10*1/5=2。

實(shí)施例7:

為了使更新的目標(biāo)直線段更加準(zhǔn)確,進(jìn)一步提高定位dm碼的準(zhǔn)確性,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新包括:

針對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段,確定包含該目標(biāo)直線段的第二封閉區(qū)域內(nèi)的與該目標(biāo)直線段平行的直線段;

識(shí)別所述平行的直線段中的平均灰度值最小的直線段;

根據(jù)所述平均灰度值最小的直線段,對(duì)所述目標(biāo)直線段進(jìn)行第二更新。

在本發(fā)明實(shí)施例中,第一封閉區(qū)域中包含兩個(gè)目標(biāo)直線段,針對(duì)每個(gè)目標(biāo)直線段,識(shí)別包含該目標(biāo)直線段的第二封閉區(qū)域,在該第二封閉區(qū)內(nèi),確定與該目標(biāo)直線段平行的直線段,其中所述平行的直線段包括所述目標(biāo)直線段。

針對(duì)確定出來(lái)的平行的直線段,計(jì)算該平行的直線段中的平均灰度值,確定所述平行的直線段中的平均灰度值最小的直線段,將所述平均灰度值最小的直線段,確定為進(jìn)行第二更新的目標(biāo)直線段。

在確定與該目標(biāo)直線段平行的直線段時(shí),可以是確定任意長(zhǎng)度的直線段,較優(yōu)的,確定與該目標(biāo)直線段長(zhǎng)度相同或距離接近的直線段,并且較優(yōu)的是,將確定出來(lái)的平行的直線段的兩個(gè)端點(diǎn)分別與目標(biāo)直線段對(duì)應(yīng)的兩個(gè)端點(diǎn)進(jìn)行連線,連線后的兩個(gè)直線段平行。

在計(jì)算平行的直線段的平均灰度值時(shí),具體的可以是識(shí)別該平行的直線段中的像素點(diǎn)的數(shù)量以及每個(gè)像素點(diǎn)的灰度值,將每個(gè)像素點(diǎn)的灰度值相加與所述數(shù)量的比值確定為所述平行的直線段的平均灰度值。

當(dāng)計(jì)算出來(lái)平均灰度值最小的平行的直線段有至少兩個(gè)時(shí),可以選取與該目標(biāo)直線段的距離最近的平行的直線段。

當(dāng)確定出來(lái)的平均灰度值最小的,且與目標(biāo)直線段平行的直線段距離所述目標(biāo)直線段較遠(yuǎn),例如大于設(shè)定的距離閾值時(shí),可以舍棄確定出來(lái)的直線段,則可以不對(duì)該目標(biāo)直線段進(jìn)行第二更新。

實(shí)施例8:

為了使定位的dm碼更加準(zhǔn)確,并且減小定位時(shí)的工作量,提高定位的效率,可以將不符合dm碼圖像特征的第一封閉區(qū)域刪除。在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域之前,所述方法還包括:

針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除;

針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行后續(xù)步驟。

在本發(fā)明實(shí)施例中,在確定第二封閉區(qū)域之前,可以將不符合dm碼圖像特征的第一封閉區(qū)域刪除。dm碼圖像特征可以是dm圖像中的像素點(diǎn)的灰度值以及像素點(diǎn)的數(shù)量。針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除。如果刪除,則刪除的第一封閉區(qū)域不進(jìn)行接下來(lái)的操作。僅針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行后續(xù)步驟。這樣可以減小工工作量,提高dm碼定位的效率。

所述根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除包括以下至少一種:

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,如果否,則將該第一封閉區(qū)域刪除;

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除;

針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果否,則將該第一封閉區(qū)域刪除。

在本發(fā)明實(shí)施例中,電子設(shè)備在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是通過(guò)一種條件判斷的,可以是通過(guò)兩種條件判斷的,也可以是通過(guò)三種條件判斷的。

以下對(duì)電子設(shè)備通過(guò)一種條件,判斷是否將該第一封閉區(qū)域刪除進(jìn)行說(shuō)明。

電子設(shè)備中保存有第一閾值,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是識(shí)別該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量,以及具有極性的像素點(diǎn)的第一數(shù)量,判斷第一數(shù)量與第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,如果否,則將該第一封閉區(qū)域刪除,如果是,則不將該第二封閉區(qū)域刪除。

電子設(shè)備中保存有第二閾值,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是識(shí)別該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行的數(shù)量,以及該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行,判斷像素點(diǎn)的灰度值相同的行的數(shù)量占該所有行的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除,如果是,則不將該第二封閉區(qū)域刪除。

也可以是確定該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的列的數(shù)量,以及該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有列,判斷像素點(diǎn)的灰度值相同的列的數(shù)量占該所有列的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除,如果是,則不將該第二封閉區(qū)域刪除。

也可以是判斷像素點(diǎn)的灰度值相同的列的數(shù)量占該所有列的比值,以及像素點(diǎn)的灰度值相同的行的數(shù)量占該所有行比值是否均小于預(yù)設(shè)的第二閾值,如果有一個(gè)為否,則將該第一封閉區(qū)域刪除,如果均是,則不將該第二封閉區(qū)域刪除。

所述像素點(diǎn)的灰度值相同的行或列中的像素點(diǎn)的灰度值較優(yōu)的為0和255。

電子設(shè)備中保存有比值范圍,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是識(shí)別該第一封閉區(qū)域內(nèi)所有像素點(diǎn)的第二數(shù)量,以及灰度值為最大值的像素點(diǎn)的第三數(shù)量,判斷所述第三數(shù)量與第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果否,則將該第一封閉區(qū)域刪除,如果是,則不將該第二封閉區(qū)域刪除。

以下對(duì)電子設(shè)備通過(guò)兩種條件,判斷是否將該第一封閉區(qū)域刪除進(jìn)行說(shuō)明。

電子設(shè)備中保存有第一閾值和第二閾值,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,以及判斷該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,如果有一個(gè)為否,則將該第一封閉區(qū)域刪除,如果均是,則不將該第二封閉區(qū)域刪除。

電子設(shè)備中保存有第一閾值和比值范圍,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是判斷第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,以及判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果有一個(gè)為否,則將該第一封閉區(qū)域刪除,如果均是,則不將該第二封閉區(qū)域刪除。

電子設(shè)備中保存有第二閾值和比值范圍,在判斷是否將該第一封閉區(qū)域刪除時(shí),可以是該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,以及判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果有一個(gè)為否,則將該第一封閉區(qū)域刪除,如果均是,則不將該第二封閉區(qū)域刪除。

較優(yōu)的,是電子設(shè)備通過(guò)三種條件,判斷是否將該第一封閉區(qū)域刪除。具體的可以是,電子設(shè)備中保存有第一閾值、第二閾值和比值范圍,在判斷是否將該第一封閉區(qū)域刪除時(shí),判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和所有列的比值是否小于預(yù)設(shè)的第二閾值,以及該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果有一個(gè)為否,則將該第一封閉區(qū)域刪除,如果均是,則不將該第二封閉區(qū)域刪除。

實(shí)施例9:

為了使定位的dm碼更加準(zhǔn)確,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施中,在對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新之后,所述方法還包括:

針對(duì)每個(gè)第二更新后的目標(biāo)直線段,根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。

在本發(fā)明實(shí)施例中,電子設(shè)備中預(yù)先保存有區(qū)域范圍,在對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新后,針對(duì)每個(gè)第二更新后的目標(biāo)直線段,可以是根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。根據(jù)第三更新后的目標(biāo)直線段確定dm碼。

所述預(yù)設(shè)的區(qū)域范圍可以是針對(duì)該目標(biāo)直線段,識(shí)別與該目標(biāo)直線段相鄰的每個(gè)像素點(diǎn),將所述每個(gè)像素點(diǎn)共同構(gòu)成的封閉區(qū)域確定為所述目標(biāo)直線段的預(yù)設(shè)的區(qū)域范圍。識(shí)別該預(yù)設(shè)區(qū)域范圍內(nèi)的每個(gè)像素點(diǎn)的灰度值,一般目標(biāo)直線段對(duì)應(yīng)dm碼的標(biāo)識(shí)定位符“l(fā)”型的直線段,該目標(biāo)直線段中的每個(gè)像素點(diǎn)的灰度值應(yīng)均為0。但由于印刷錯(cuò)誤,該目標(biāo)直線段中包含灰度值為255的像素點(diǎn),并且在預(yù)設(shè)區(qū)域范圍內(nèi),包含灰度值為0為的像素點(diǎn),則可以根據(jù)該灰度值為0的像素點(diǎn)對(duì)該目標(biāo)直線段進(jìn)行第三更新。在進(jìn)行第三更新時(shí),可以是采用擬合算法,將所述灰度值為0的像素點(diǎn)和該目標(biāo)直線段確定成一個(gè)直線段,將該直線段作為第三更新后的目標(biāo)直線段。采用擬合算法,對(duì)該目標(biāo)直線段進(jìn)行第三更新的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過(guò)程曾不進(jìn)行贅述。

實(shí)施例10:

為了使定位的dm碼更加準(zhǔn)確,在上各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼之前,所述方法還包括:

判斷所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像;

如果否,則根據(jù)金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,確定與所述原圖像的級(jí)別相鄰級(jí)別的圖像,在所述相鄰級(jí)別的圖像中確定兩個(gè)所述目標(biāo)直線段的投影直線段,并在所述相鄰級(jí)別的圖像中,將所述投影直線段作為目標(biāo)直線段,進(jìn)行后續(xù)步驟,其中,所述相鄰級(jí)別的圖像的尺度較原圖像的尺度大;

如果是,則在最大尺度的原圖像中,進(jìn)行后續(xù)步驟。

在本發(fā)明實(shí)施例中,電子設(shè)備在確定原圖像中的dm碼時(shí),可以將該原圖像生成金字塔圖像。在生成金字塔圖像時(shí),可以將原圖像按比例放大或縮小,在本發(fā)明實(shí)施例中,為了提高定位原圖像中的dm碼的效率,將原圖像按比例縮小,例如,可以按0.5的比例依次縮小三次,得到四層的金字塔圖像,四層金字塔圖像中包含大小不同的dm碼。

上述在確定出dm碼后,可以判斷確定所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像,如果不是,則可能定位出來(lái)的dm碼不準(zhǔn)確,為了使定位出的dm碼更加準(zhǔn)確,則可以在最大尺度的圖像上定位出更加準(zhǔn)確的dm碼。

具體的可以是,電子設(shè)備中保存有金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,識(shí)別所述原圖像的級(jí)別,確定與所述原圖像的級(jí)別相鄰級(jí)別的,尺度較原圖像的尺度大的圖像。將在原圖像中確定出的兩個(gè)所述目標(biāo)直線段投影至所述尺度較大的圖像上,即確定所述兩個(gè)所述目標(biāo)直線段的投影直線段。并在所述相鄰級(jí)別的,且尺度較大的圖像中,將所述直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,進(jìn)行后續(xù)步驟。循環(huán)上述判斷圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像,直至圖像為尺度最大的圖像。所述后續(xù)步驟可以是直接根據(jù)該兩個(gè)目標(biāo)直線段確定dm碼,也可以是對(duì)該兩個(gè)目標(biāo)直線段進(jìn)行第一更新后,再確定dm碼,也可以是對(duì)該兩個(gè)目標(biāo)直線段進(jìn)行第一更新和第二更新后,再確定dm碼,也可以是對(duì)該兩個(gè)目標(biāo)直線段進(jìn)行第一更新和第二更新和第三更新后,再確定dm碼。

如果判斷所述原圖像為所述原圖像的金字塔圖像中的最大尺度的圖像,則可以根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

實(shí)施例11:

為了使定位的dm碼更加準(zhǔn)確,在上各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼包括:

針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段;

將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼。

在本發(fā)明實(shí)施例中,當(dāng)電子設(shè)備確定了兩個(gè)目標(biāo)直線段后,可以根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。所述兩個(gè)目標(biāo)直線段可以是為進(jìn)行更新的目標(biāo)直線段,可以是進(jìn)行第一更新后的目標(biāo)直線段,可以是進(jìn)行第二更新后的目標(biāo)直線段,也可以是進(jìn)行第三更新后的目標(biāo)直線段。

在根據(jù)所述兩個(gè)目標(biāo)直線段確定dm碼時(shí),可以是針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段,將兩個(gè)目標(biāo)直線段以及兩個(gè)第五直線段構(gòu)成的圖形,確定為dm碼。

在將兩個(gè)目標(biāo)直線段以及兩個(gè)第五直線段構(gòu)成的圖形,確定為dm碼,可以是將兩個(gè)目標(biāo)直線段以及兩個(gè)第五直線段構(gòu)成的封閉區(qū)域確定為dm碼,也可以是,將兩個(gè)目標(biāo)直線段與兩個(gè)第五直線段構(gòu)成的非封閉區(qū)域確定為dm碼。

因?yàn)閐m碼的邊界有一定的長(zhǎng)度,且dm碼接近正方形,但由于印刷等錯(cuò)誤,dm碼的標(biāo)識(shí)定位符“l(fā)”型對(duì)應(yīng)的目標(biāo)直線段的一部分未印刷,但dm碼的碼區(qū)域印刷完好。這時(shí)在確定dm碼時(shí),可以根據(jù)兩個(gè)目標(biāo)直線段中的長(zhǎng)度較長(zhǎng)的一個(gè)目標(biāo)直線段確定dm碼,具體的可以是將另一個(gè)目標(biāo)直線段的長(zhǎng)度進(jìn)行延伸,延伸至與較長(zhǎng)的目標(biāo)直線段的長(zhǎng)度相同,并將每個(gè)第五直線段延伸至與較長(zhǎng)的目標(biāo)直線段的長(zhǎng)度相同,再將長(zhǎng)度延伸至相同的兩個(gè)目標(biāo)直線段和第五直線段構(gòu)成的封閉區(qū)域,確定為dm碼。

實(shí)施例12:

為了提高dm碼定位的準(zhǔn)確性,在上述各實(shí)施例的基礎(chǔ)上,在本發(fā)明實(shí)施例中,所述將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼包括:

針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)dm碼的每個(gè)邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,確定矩形區(qū)域,對(duì)每個(gè)矩形區(qū)域內(nèi)的像素點(diǎn)進(jìn)行投影,根據(jù)投影的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形圖形框,將該矩形框確定為該dm碼精確的邊緣。

當(dāng)所述原圖像為尺度最大的圖像時(shí),可以在最大尺度的原圖像中,針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)每個(gè)dm碼的每條邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,按照預(yù)設(shè)的長(zhǎng)和寬確定矩形區(qū)域,針對(duì)每個(gè)矩形區(qū)域中的像素點(diǎn),按照直線方向進(jìn)行投影,計(jì)算該矩形區(qū)域中與所述直線方向平行的每一列像素點(diǎn)的灰度值的第四和值,針對(duì)每一列,將該列右側(cè)的灰度值的第四和值與該列左側(cè)的灰度值的第四和值的差作為該列的梯度值,當(dāng)然,也可以將該列左側(cè)的灰度值的第四和值與該列右側(cè)的灰度值的第四和值的差作為該列的梯度值,根據(jù)每個(gè)矩形區(qū)域得到的梯度值的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形框,將該矩形框確定為該dm碼精確的邊緣。

通過(guò)預(yù)設(shè)的算法將得到的所有小矩形的邊緣點(diǎn)擬合為一個(gè)矩形框的過(guò)程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中不再進(jìn)行贅述。

圖4為本發(fā)明實(shí)施例提供的一種dm碼的定位過(guò)程示意圖,該過(guò)程包括以下步驟:

s401:針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段。

s402:對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接,將相互連接的兩個(gè)直線段作為目標(biāo)直線段。

s403:針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,a、判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段;b、如果是,根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新,返回步驟a;c、如果否,則進(jìn)行s404。

s404:根據(jù)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段,針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除,針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行s405。

s405:根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域;根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新;如果是,則對(duì)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新。

s406:針對(duì)每個(gè)第二更新后的目標(biāo)直線段,根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。

s407:判斷所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像,如果是,則進(jìn)行s408,如果否,則進(jìn)行s409。

s408:針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段;針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)dm碼的每個(gè)邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,確定矩形區(qū)域,對(duì)每個(gè)矩形區(qū)域內(nèi)的像素點(diǎn)進(jìn)行投影,根據(jù)投影的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形圖形框,將該矩形框確定為該dm碼精確的邊緣。

s409:根據(jù)金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,確定與所述原圖像的級(jí)別相鄰級(jí)別的圖像,在所述相鄰級(jí)別的圖像中確定兩個(gè)所述目標(biāo)直線段的投影直線段,并在所述相鄰級(jí)別的圖像中,將所述投影直線段作為目標(biāo)直線段,進(jìn)行s404。

圖5為本發(fā)明實(shí)施例提供的一種dm碼的定位裝置結(jié)構(gòu)圖,所述裝置包括:

確定模塊51,用于針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;

所述確定模塊51,還用于在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;

所述確定模塊51,還用于按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段;

連接模塊52,用于對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接;

定位模塊53,用于將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。

所述確定模塊51,具體用于針對(duì)所述梯度圖中的每個(gè)像素點(diǎn),識(shí)別該像素點(diǎn)在預(yù)設(shè)第一方向上的第一子梯度值以及預(yù)設(shè)第二方向上的第二子梯度值,其中第一方向和第二方向相互垂直;根據(jù)第一子梯度值與第二子梯度值的正負(fù),確定梯度圖中的每個(gè)像素點(diǎn)所在的象限。

所述連接模塊52,具體用于針對(duì)每一個(gè)第一直線段,判斷任意一個(gè)第二直線段是否與該第一直線段的第一夾角在預(yù)設(shè)的第一角度范圍內(nèi),且與該第一直線段的距離小于預(yù)設(shè)的第一距離閾值,如果是,將該第一直線段與所述第二直線段進(jìn)行連接。

圖6為本發(fā)明實(shí)施例提供的一種dm碼的定位裝置結(jié)構(gòu)圖,在圖5的基礎(chǔ)上,所述裝置還包括:

更新模塊61,用于針對(duì)兩個(gè)目標(biāo)直線段中的任意一個(gè)第一目標(biāo)直線段,進(jìn)行如下過(guò)程:a、判斷是否存在與所述第一目標(biāo)直線段的第二夾角在預(yù)設(shè)的第二角度范圍內(nèi),且與所述第一目標(biāo)直線段的距離小于預(yù)設(shè)的第二距離閾值的第三直線段;b、如果是,根據(jù)所述第三直線段與所述第一目標(biāo)直線段對(duì)所述第一目標(biāo)直線段進(jìn)行第一更新,返回步驟a;c、如果否,則進(jìn)行后續(xù)步驟。

所述更新模塊61,還用于根據(jù)兩個(gè)目標(biāo)直線段,確定與兩個(gè)所述目標(biāo)直線段對(duì)應(yīng)平行并與所述兩個(gè)目標(biāo)直線段構(gòu)成第一封閉區(qū)域的每個(gè)第四直線段;根據(jù)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段及每個(gè)第四直線段,確定每個(gè)包含對(duì)應(yīng)目標(biāo)直線段或包含對(duì)應(yīng)第四直線段的第二封閉區(qū)域;根據(jù)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,判斷是否對(duì)所述第一封閉區(qū)域進(jìn)行更新;如果是,則對(duì)所述第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段進(jìn)行第二更新。

所述更新模塊61,具體用于針對(duì)所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域,判斷包含目標(biāo)直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的目標(biāo)直線段垂直的方向上的變化規(guī)律與預(yù)設(shè)變化規(guī)律是否匹配,以及判斷包含第四直線段的第二封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值,在與該第二封閉區(qū)域包含的第四直線段垂直的方向上的變化規(guī)律與所述預(yù)設(shè)變化規(guī)律是否匹配;如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果均為是,則對(duì)所述第一封閉區(qū)域進(jìn)行更新;如果所述第一封閉區(qū)域?qū)?yīng)的每個(gè)第二封閉區(qū)域中有至少一個(gè)第二封閉區(qū)域?qū)?yīng)的匹配結(jié)果為否,則不對(duì)所述第一封閉區(qū)域進(jìn)行更新。

所述更新模塊61,具體用于針對(duì)第一封閉區(qū)域內(nèi)的每個(gè)目標(biāo)直線段,確定包含該目標(biāo)直線段的第二封閉區(qū)域內(nèi)的與該目標(biāo)直線段平行的直線段;識(shí)別所述平行的直線段中的平均灰度值最小的直線段;根據(jù)所述平均灰度值最小的直線段,對(duì)所述目標(biāo)直線段進(jìn)行第二更新。

所述裝置還包括:

刪除模塊62,用于針對(duì)每個(gè)第一封閉區(qū)域,根據(jù)該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值及像素點(diǎn)的數(shù)量,判斷是否將該第一封閉區(qū)域刪除;針對(duì)未被刪除的第一封閉區(qū)域,進(jìn)行后續(xù)步驟。

所述刪除模塊62,具體用于針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的具有極性的像素點(diǎn)的第一數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否大于預(yù)設(shè)的第一閾值,如果否,則將該第一封閉區(qū)域刪除;和/或針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的像素點(diǎn)的灰度值相同的行和/或列的數(shù)量占該第一封閉區(qū)域內(nèi)的像素點(diǎn)構(gòu)成的所有行和/或所有列的比值是否小于預(yù)設(shè)的第二閾值,如果否,則將該第一封閉區(qū)域刪除;和/或針對(duì)該第一封閉區(qū)域,判斷該第一封閉區(qū)域內(nèi)的灰度值為最大值的像素點(diǎn)的第三數(shù)量與該第一封閉區(qū)域內(nèi)的所有像素點(diǎn)的第二數(shù)量的比值是否在預(yù)設(shè)的比值范圍內(nèi),如果否,則將該第一封閉區(qū)域刪除。

所述更新模塊61,還用于針對(duì)每個(gè)第二更新后的目標(biāo)直線段,根據(jù)該目標(biāo)直線段的預(yù)設(shè)區(qū)域范圍內(nèi)的像素點(diǎn)的灰度值對(duì)該目標(biāo)直線段進(jìn)行第三更新。

所述裝置還包括:

判斷模塊63,用于判斷所述原圖像是否為所述原圖像的金字塔圖像中的最大尺度的圖像;當(dāng)判斷結(jié)果為否,則根據(jù)金字塔圖像中的每個(gè)級(jí)別與圖像的尺度的對(duì)應(yīng)關(guān)系,確定與所述原圖像的級(jí)別相鄰級(jí)別的圖像,在所述相鄰級(jí)別的圖像中確定兩個(gè)所述目標(biāo)直線段的投影直線段,并在所述相鄰級(jí)別的圖像中,將所述投影直線段作為目標(biāo)直線段,進(jìn)行后續(xù)步驟,其中,所述相鄰級(jí)別的圖像的尺度較原圖像的尺度大;當(dāng)判斷結(jié)果為是,則觸發(fā)定位模塊。

所述定位模塊53,具體用于針對(duì)兩個(gè)目標(biāo)直線段中的每個(gè)目標(biāo)直線段,確定與該目標(biāo)直線段對(duì)應(yīng)平行且對(duì)應(yīng)長(zhǎng)度相同的第五直線段;將兩個(gè)所述目標(biāo)直線段以及兩個(gè)所述第五直線段構(gòu)成的圖形,確定為dm碼。

所述定位模塊53,具體用于針對(duì)dm碼的每個(gè)所述目標(biāo)直線段以及每個(gè)所述第五直線段,采用包圍盒算法確定該dm碼的邊緣,針對(duì)dm碼的每個(gè)邊緣,按照設(shè)定的規(guī)則選取至少一個(gè)邊緣像素點(diǎn),以該邊緣像素點(diǎn)為中心,確定矩形區(qū)域,對(duì)每個(gè)矩形區(qū)域內(nèi)的像素點(diǎn)進(jìn)行投影,根據(jù)投影的峰值,確定每個(gè)矩形區(qū)域的投影邊緣點(diǎn),通過(guò)預(yù)設(shè)的算法將得到的每個(gè)矩形區(qū)域的邊緣點(diǎn)擬合為一個(gè)矩形圖形框,將該矩形框確定為該dm碼精確的邊緣。

本發(fā)明實(shí)施例公開(kāi)了一種dm碼的定位方法及裝置,所述方法包括:針對(duì)待定位的原圖像,根據(jù)所述原圖像中的每個(gè)像素點(diǎn)的灰度值,確定所述原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限;在所述梯度圖中,根據(jù)每個(gè)像素點(diǎn)的梯度值,確定所述梯度圖中的鞍點(diǎn);并根據(jù)每個(gè)象限的方向,將每個(gè)象限中的鞍點(diǎn)進(jìn)行連接,構(gòu)成鞍點(diǎn)線段;按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段;對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接;將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。由于在本發(fā)明實(shí)施例中,確定出原圖像的梯度圖以及所述梯度圖中的每個(gè)像素點(diǎn)所在的象限,確定所述梯度圖中的鞍點(diǎn)及鞍點(diǎn)線段,按照鏈碼的順序,擬合每個(gè)鞍點(diǎn)線段中極性相同的像素點(diǎn),構(gòu)成每個(gè)直線段。對(duì)滿足預(yù)設(shè)的第一距離條件及第一角度條件的對(duì)應(yīng)的每個(gè)直線段進(jìn)行連接,將相互連接的兩個(gè)直線段作為目標(biāo)直線段,根據(jù)所述兩個(gè)目標(biāo)直線段,確定dm碼。在復(fù)雜場(chǎng)景中,也可以快速精確的定位二維碼。

對(duì)于系統(tǒng)/裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。

需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者一個(gè)操作與另一個(gè)實(shí)體或者另一個(gè)操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或者操作之間存在任何這種實(shí)際的關(guān)系或者順序。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全應(yīng)用實(shí)施例、或結(jié)合應(yīng)用和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。

這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。

這些計(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)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。

盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1