李景華 任煒 化晨冰 彭籽萱 劉濤 高文舉
摘要:使用ORB特征點(diǎn)進(jìn)行圖像特征提取的檔案管控系統(tǒng),實(shí)現(xiàn)了高效的特征點(diǎn)提取,保證了系統(tǒng)的實(shí)時(shí)性與準(zhǔn)確性。在ORB中,使用BRIEF描述子來描述特征點(diǎn)的特征,利用漢明距離來計(jì)算兩個(gè)描述子之間的相似度,縮短了計(jì)算耗時(shí),結(jié)合二維碼圖像識別技術(shù),確保了圖像識別精準(zhǔn)。
關(guān)鍵詞:ORB;BRIEF;漢明距離;二維碼
0引言
近年來隨著硬件設(shè)備計(jì)算能力的提高,物聯(lián)網(wǎng)領(lǐng)域的研究進(jìn)入了高速發(fā)展的時(shí)代,作為該領(lǐng)域的核心問題之一的定位問題也越來越受到更多人的關(guān)注。基于視覺的定位方法因?yàn)樾矢摺⒕群玫奶攸c(diǎn)而被廣泛使用。本文在基于特征匹配的視覺定位系統(tǒng)中,使用ORB特征點(diǎn)來進(jìn)行圖像特征的提取,在實(shí)現(xiàn)圖像拼接過程中,ORB算法能夠較好地解決運(yùn)行實(shí)時(shí)性問題[1],確保了系統(tǒng)的實(shí)時(shí)性與準(zhǔn)確性。
1ORB特征點(diǎn)提取
本文在ORB特征點(diǎn)的計(jì)算過程中,首先檢測了FAST角點(diǎn),F(xiàn)AST角點(diǎn)的檢測方法是,以某個(gè)像素作為候選點(diǎn),計(jì)算以這個(gè)點(diǎn)為圓心半徑為3的圓周上的16個(gè)點(diǎn)與候選點(diǎn)的亮度差值的絕對值,若有N個(gè)點(diǎn)的差值大于設(shè)定的閾值,就認(rèn)為這個(gè)點(diǎn)為一個(gè)FAST特征點(diǎn)。根據(jù)N取值的不同,通常使用FAST-12方法或FAST-9方法作為角點(diǎn)的檢測方法。本文使用的ORB特征檢測算法中使用的是FAST-12方法,在FAST-12方法中,在原始算法的基礎(chǔ)上又添加了預(yù)測試操作,即首先檢測圓周上第1、5、9、13個(gè)像素點(diǎn)與候選點(diǎn)的亮度差,若有三個(gè)以上的像素點(diǎn)的差值大于閾值,才會進(jìn)行正式的角點(diǎn)檢測計(jì)算,否則直接放棄當(dāng)前候選點(diǎn)。這種預(yù)操作在原本的算法上又提升了檢測速度,同時(shí)對最終角點(diǎn)的計(jì)算結(jié)果影響較小。
2圖像特征匹配
在得到兩幀圖像的特征點(diǎn)后,就可以根據(jù)這些特征點(diǎn)的描述子來計(jì)算哪兩個(gè)特征點(diǎn)是匹配的,即哪兩個(gè)特征點(diǎn)描述了相同的圖像特征。使用漢明距離來進(jìn)行描述子之間的特征匹配是一種常用的特征匹配算法,也是本文中使用的特征匹配方法。
漢明距離[2]可以用來描述兩組二進(jìn)制數(shù)據(jù)之間的相似程度,它計(jì)算了兩組二進(jìn)制數(shù)據(jù)對應(yīng)位置的值不相同的組數(shù),這個(gè)值越小說明兩組數(shù)據(jù)越相似。在特征點(diǎn)的檢測過程中,本文使用了BRIEF作為ORB特征的描述子,這種描述子是以二進(jìn)制形式儲存的,因此非常適合用漢明距離來計(jì)算兩個(gè)描述子之間的相似度。在計(jì)算過程中,可以通過異或運(yùn)算來計(jì)算漢明距離,這種計(jì)算方法大大縮短了匹配計(jì)算所消耗的時(shí)間。
3條碼識別
3.1總體流程
首先對拍攝的圖像進(jìn)行圖像預(yù)處理,然后對預(yù)處理的圖像根據(jù)二維碼探測圖形的特點(diǎn)進(jìn)行定位。定位之后對圖像進(jìn)行旋轉(zhuǎn)校正得到方形的二維碼圖像。根據(jù)二維碼的四個(gè)坐標(biāo)對二維碼進(jìn)行模塊采集得到二維碼的數(shù)據(jù)流。然后根據(jù)相應(yīng)的糾錯(cuò)算法進(jìn)行糾錯(cuò),糾錯(cuò)之后就進(jìn)行譯碼。
3.2圖像預(yù)處理
二維碼圖像預(yù)處理可以分為3個(gè)部分:彩色圖像的灰度化,利用中值濾波進(jìn)行圖像平滑以及利用灰度圖像二值化技術(shù)分割圖像。
3.2.1彩色圖像灰度化
實(shí)際情況下,通常直接采集到的是彩色圖像,每個(gè)像素有R?G?B三個(gè)顏色分量,每個(gè)顏色分量的取值范圍為0到255。二維碼是以黑白模塊構(gòu)成,而顏色不包含任何信息(這里指的是傳統(tǒng)二維碼,彩色條碼除外),所以首先要對采集到的彩色圖像進(jìn)行灰度化處理,本文采用另一種方法灰度化圖像。
3.2.2圖像去噪
設(shè)備采集到的圖像一般都因受到干擾而含有噪聲。條碼圖像的噪聲主要來自兩個(gè)方面。首先是條碼表面的各種形式的污損,這方面噪聲只能憑借條碼本身的糾錯(cuò)算法進(jìn)行糾錯(cuò)。噪聲的另外一個(gè)來源是來自光學(xué)采集系統(tǒng),這部分的噪聲是滿足泊松分布的鹽粒噪聲,用適當(dāng)大小的矩形窗口的中值濾波非常適于條碼圖像。中值濾波是抑制噪聲的非線性處理方法。對于給定的n個(gè)數(shù),將它們按大小有序排列。當(dāng)n為奇數(shù)時(shí),處于中間位置的那個(gè)數(shù)值稱為這n個(gè)數(shù)的中值。當(dāng)n為偶數(shù)時(shí),位于中間位置的兩個(gè)數(shù)值的平均值稱為這n個(gè)數(shù)的中值。中值濾波的方法運(yùn)算簡單,易于實(shí)現(xiàn),而且能較好地保護(hù)邊界但有時(shí)會失掉圖像中的細(xì)線和小塊的目標(biāo)區(qū)域。本系統(tǒng)直接調(diào)用OpenCV的cvSoomth()函數(shù)即可實(shí)現(xiàn)。
3.2.3圖像二值化
因?yàn)槎S碼是由黑白模塊組成的,本身分割較為明顯,所以二維碼的圖像分割通常采用二值化方法,二值化方法具有速度快,容易實(shí)現(xiàn)等優(yōu)點(diǎn)。二值化方法是通過選取閾值,然后用閾值來對圖像中每個(gè)像素進(jìn)行判斷,如果灰度值大于該閾值,則用灰度值的最大值替換該像素值;相反,若灰度值小于閾值,則用灰度值的最小值替換該像素值。二值化算法過程就是求解閾值的過程,根據(jù)閾值選取范圍的不同二值化算法又可分為全局閾值算法和局部閾值算法。全局閾值算法是選用唯一且固定的閾值對整幅圖像進(jìn)行二值化處理,當(dāng)圖像的灰度直方圖具有明顯雙峰時(shí)全局閡值算法處理結(jié)果較好;局部閾值算法是通過將圖像劃分為若干局部窗口,然后對每個(gè)窗口分別計(jì)算閾值并進(jìn)行二值化處理,局部閾值算法對于復(fù)雜圖像(亮度不均,有噪聲或是背景灰度變化比較大)二值處理效果好,但是增加算的復(fù)雜度。
本文采用局部閾值進(jìn)行圖像二值化,算法思想是:將以當(dāng)前像素為中心的一個(gè)鄰域內(nèi),灰度值的最大值和最小值的平均值作為該像素的閾值,然后用該閾值對當(dāng)這個(gè)像素進(jìn)行二值化,每個(gè)像素的閉值單獨(dú)計(jì)算,所以算法的復(fù)雜度較高。設(shè)當(dāng)前像素坐標(biāo)為(x,y),鄰域窗口選用以當(dāng)前像素為中心的正方形,正方形邊長為2w+1。
4結(jié)語
本文檔案管控系統(tǒng)中的視覺定位系統(tǒng)部分使用ORB特征點(diǎn)來進(jìn)行圖像特征的提取,實(shí)現(xiàn)了高效的特征點(diǎn)提取,保證了系統(tǒng)的實(shí)時(shí)性與準(zhǔn)確性。根據(jù)二維碼的四個(gè)坐標(biāo)對二維碼進(jìn)行模塊采集得到二維碼的數(shù)據(jù)流,對色相,飽和度,亮度進(jìn)行處理,確保了圖像識別精準(zhǔn)。
參考文獻(xiàn)
[1]高強(qiáng),潘俊.基于ORB的圖像特征提取與匹配研究[J].福建電腦,2019,1(10):21-22.
[2]喬屾,呂志民,張楠.基于漢明距離的改進(jìn)粒子群算法求解旅行商問題[J].計(jì)算機(jī)應(yīng)用,2017,37(10):2767-2772.