徐振濤,林清瀅
(韓山師范學(xué)院計(jì)算機(jī)與信息工程學(xué)院,潮州521041)
移動(dòng)互聯(lián)網(wǎng)的發(fā)展和智能手機(jī)的普及,使得圖像數(shù)據(jù)開(kāi)始快速增長(zhǎng),無(wú)論是圖像存儲(chǔ)還是圖像處理都將面臨著巨大的挑戰(zhàn),然而,如何實(shí)現(xiàn)在大規(guī)模的圖像數(shù)據(jù)中檢索出與目標(biāo)圖像高度相似的圖像是一個(gè)熱門問(wèn)題。隨著云計(jì)算模式的普及和發(fā)展,各種云計(jì)算平臺(tái)也就相繼出現(xiàn)。其中,Hadoop 就是一個(gè)開(kāi)源的云計(jì)算平臺(tái),它有兩個(gè)核心子項(xiàng)目HDFS 和MapReduce,主要用于對(duì)海量數(shù)據(jù)的分布式存儲(chǔ)和處理,其設(shè)計(jì)思想來(lái)源于Google 的GFS 和MapReduce。
本文首先利用SIFT 算法提取圖像特征,獲得大量圖像特征點(diǎn)。然后利用K-means 算法對(duì)圖像特征點(diǎn)進(jìn)行聚類,降低特征點(diǎn)數(shù)量,提高圖像檢索效率。此外,利用TF-IDF 算法對(duì)圖像聚類中心進(jìn)行量化,獲取聚類中心的TF-IDF 值,優(yōu)化圖像檢索結(jié)果。最后利用HDFS 對(duì)海量圖像數(shù)據(jù)進(jìn)行分布式存儲(chǔ),利用MapReduce 實(shí)現(xiàn)了之前的相關(guān)算法。分布式的圖像檢索方法可以大大減少圖像檢索系統(tǒng)所耗費(fèi)的時(shí)間,對(duì)分布式圖像檢索的發(fā)展有巨大的推動(dòng)。
金字塔是模仿不同尺度的圖像,大尺度圖像相當(dāng)于近距離觀察實(shí)體的圖像,比較清晰,顯示的是細(xì)節(jié)信息。小尺度圖像相當(dāng)于遠(yuǎn)距離觀察實(shí)體,比較模糊,顯示的是輪廓信息。接著利用不同參數(shù)的高斯模板對(duì)金字塔的每一層圖像進(jìn)行模糊處理,使得金字塔的每一層具有多張高斯圖像,金字塔每層的所有圖像被稱為八度。當(dāng)前八度的底層圖像是前一個(gè)八度的倒數(shù)第三層圖像,且需要對(duì)圖像進(jìn)行降采樣法。
金字塔層數(shù)計(jì)算公式如下:
n:金 字 塔 的 層 數(shù);(M,N):原 圖 像 的 尺 寸;t:log2min( m,n)-1 min( m,n )>1;(m,n):頂 端 圖 像 的尺寸;
二維空間正態(tài)分布方程公式如下:
m*n:二維模板大??;(x,y):模板元素;
尺度空間理論的思想是在視覺(jué)信息處理模型中引入一個(gè)連續(xù)變化的尺度參數(shù),獲得不同尺度下的視覺(jué)信息,然后綜合這些信息深入地挖掘圖像本質(zhì)特征[1]。
尺度計(jì)算公式如下:
σ:某八度的某層尺度;σ0:初始尺度;o:第幾個(gè)八度;s:八度中第幾層S:在高斯差分金字塔的八度中只有S 層能求極值點(diǎn);O:八度的數(shù)量;S+3:高斯金字塔八度的層數(shù);
構(gòu)建高斯金字塔公式如下:
圖1 高斯金字塔
L( x,y ,σ):尺度空間;G( x,y ,σ):高斯函數(shù);I( x,y ):圖像;*:卷積運(yùn)算;
構(gòu)建高斯差分金字塔公式如下:
圖2 高斯差分金字塔
根據(jù)Lowe 論文,像素點(diǎn)要在三維中比較。因此可知,尺度空間理論中S 表示高斯差分金字塔的八度中只有S 層能求極值點(diǎn),所以高斯差分金字塔的八度有S+2 層,又因?yàn)楦咚共罘纸鹱炙怯筛咚菇鹱炙硕认噜弻酉鄿p得到的,所以高斯金字塔的八度有S+3 層。
圖3 像素點(diǎn)在三維中比較
離散空間的極值點(diǎn)不是真正的極值點(diǎn),如圖4所示。
圖4 離散空間極值點(diǎn)與連續(xù)空間極值點(diǎn)的差別
利用已知離散空間極值點(diǎn)插值得到連續(xù)空間極值點(diǎn)的方法叫做子像素插值[2]。為了提高關(guān)鍵點(diǎn)的穩(wěn)點(diǎn)性,需要對(duì)DOG 函數(shù)進(jìn)行曲線擬合,DOG 函數(shù)的泰勒展開(kāi)式[3]:
對(duì)D(X)求導(dǎo),并令其等于0,可得到極值點(diǎn)的偏移量:
邊緣圖像與二次型函數(shù)曲面等高線圖像相對(duì)應(yīng),其中二次型函數(shù)的Hessian 矩陣也可以通過(guò)對(duì)二次型函數(shù)進(jìn)行偏導(dǎo)數(shù)得到,我們只需要判斷該點(diǎn)Hessian 矩陣的特征值是否相差較大,來(lái)判斷是否是邊緣點(diǎn)。
該點(diǎn)Hessian 矩陣公式如下:
假設(shè)α 為較大特征值,β 為較小特征值,令α=rβ。
成立則保留關(guān)鍵點(diǎn),不成功則剔除。根據(jù)Lowe 論文,取r=10。
為了使圖像不受旋轉(zhuǎn)變化的影響,采用梯度的公式,計(jì)算特征點(diǎn)局部窗口的一個(gè)基準(zhǔn)方向,局部窗口的半徑為3×1.5×σ_oct,公式如下:
利用上述公式計(jì)算高斯圖像特征點(diǎn)局部窗口內(nèi)像素的梯度方向和模值,然后采用梯度方向直方圖進(jìn)行統(tǒng)計(jì),根據(jù)Lowe 論文,梯度模值m( )x,y 需要按σ=0.5σ_oct 進(jìn)行高斯加權(quán)。在特征點(diǎn)領(lǐng)域梯度信息圖像中,縱橫線段表示像素點(diǎn),圓表示高斯加權(quán)范圍。在梯度方向直方圖中,縱坐標(biāo)表示梯度模值累加,橫坐標(biāo)表示梯度方向,把360 度分為36 個(gè)方向,為了簡(jiǎn)化,筆者只畫(huà)出8 個(gè)方向,實(shí)踐編程是以36 個(gè)方向。梯度方向直方圖最高柱表示特征點(diǎn)的主方向,大于最高柱80%的柱表示次方向,一個(gè)特征點(diǎn)可以有很多個(gè)方向,這樣可以提高圖像匹配的穩(wěn)定性。為了使梯度方向直方圖的方向角更加準(zhǔn)確,需要進(jìn)行插值擬合。
圖5 特征點(diǎn)領(lǐng)域梯度信息和梯度方向直方圖
特征點(diǎn)描述子就是一組向量,將高斯圖像特征點(diǎn)附近領(lǐng)域劃分成4×4 個(gè)窗口,計(jì)算每個(gè)窗口8 個(gè)方向的梯度信息,并用梯度方向直方圖進(jìn)行統(tǒng)計(jì),特征點(diǎn)描述子為128 維向量。
SIFT 算法通過(guò)構(gòu)建高斯金字塔,去除了圖像尺度變化的影響,通過(guò)對(duì)特征點(diǎn)方向分配以及生成特征點(diǎn)描述子,去除了圖像旋轉(zhuǎn)變化的影響,通過(guò)對(duì)特征點(diǎn)描述子向量歸一化處理,去除了圖像光照變化的影響,當(dāng)使用歐氏距離進(jìn)行相似度度量時(shí),可去除圖像背景混亂和遮擋物的影響,利用一張圖像的所有描述子向量與另一張圖像的所有描述子向量進(jìn)行歐氏距離計(jì)算,求出最近描述子向量除次近描述子向量的值,當(dāng)該值小于某個(gè)閾值則,則接受這個(gè)點(diǎn)。在Lowe 論文中ratio=0.8,然而有人通過(guò)大量實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)ratio=0.4 時(shí),特征點(diǎn)匹配精確度最高,當(dāng)ratio=0.5 時(shí),特征點(diǎn)匹配一般,ratio=0.8 時(shí),特征點(diǎn)匹配數(shù)量最多。
歐氏距離:
特征點(diǎn)p 和q 的描述子向量Desp和Desq。
圖6 特征點(diǎn)聚類
(1)從N 個(gè)元素選取k 個(gè)初始聚類中心,如S1、S2。
(2)計(jì)算每個(gè)元素到每個(gè)聚類中心的歐氏距離,如A、B、C 距離S1 最近,則A、B、C 屬于S1 簇集。
(3)求誤差平方和,若誤差平方和與上次相同,則結(jié)束,否則進(jìn)行(4)。
(4)計(jì)算簇集的平均值,得到新的聚類中心。
(4)重復(fù)(2)~(4)。
TF-IDF 算法是一種信息檢索和數(shù)據(jù)挖掘的加權(quán)算法,用于評(píng)估一個(gè)詞語(yǔ)在文件集的類別區(qū)分能力,通過(guò)SIFT 算法提取圖像特征和K-means 算法對(duì)特征點(diǎn)聚類,獲得k 個(gè)聚類中心,每個(gè)聚類中心可以看作一個(gè)詞語(yǔ),所有圖像看作文件集,計(jì)算詞語(yǔ)的TF-IDF 值。
TF(詞頻):表示詞語(yǔ)在文件中出現(xiàn)的次,需要進(jìn)行歸一化;IDF(逆向文件頻率):表示含該詞語(yǔ)的文件數(shù)除文件總數(shù),得到的商再取對(duì)數(shù)。
輸入:外部圖像數(shù)據(jù)
處理:把圖像轉(zhuǎn)化為<key,value>形式,key 是圖像名,value 是圖像內(nèi)容,每個(gè)<key,value>為一行,形成總字符串后存入HDFS 中
輸出:一個(gè)含義所有圖像且以<key,value>形式存儲(chǔ)的文件,即順序文件
IPO 描述
Mapper 類
輸入:HDFS 中順序文件
處理:通過(guò)SIFT 算法提取圖像特征
中國(guó)英語(yǔ)學(xué)習(xí)者的實(shí)驗(yàn)在被試所在中學(xué)或大學(xué)的教師辦公室進(jìn)行,英語(yǔ)母語(yǔ)者分別在各自所在大學(xué)的圖書(shū)館中進(jìn)行,一次僅有一個(gè)被試在房間中接受測(cè)試。被試首先閱讀實(shí)驗(yàn)要求,然后開(kāi)始測(cè)試。在電腦的自測(cè)步速閱讀完成后,被試還要做二語(yǔ)水平測(cè)試,并填個(gè)人語(yǔ)言背景表。二語(yǔ)水平測(cè)試題選自O(shè)xford Proficiency Test,共50道語(yǔ)法選擇題,用以檢測(cè)學(xué)生的二語(yǔ)語(yǔ)法水平。所有學(xué)生均未在之前做過(guò)這一測(cè)試。語(yǔ)法選擇題每題1分,小于30分被界定為低水平;30~35分為低到中等水平;35分以上為中等以上水平。
輸出:<key,value>,key 是圖像名,value 是多個(gè)描述子向量,即特征文件
Reducer 類
無(wú)
IPO 描述
Mapper 類
輸入:HDFS 中的特征文件
處理:通過(guò)K-Means 算法對(duì)特征點(diǎn)聚類,再利用TF-IDF 算法計(jì)算聚類中心TF 值
輸出:<key,value>,key 是圖像名,value 是多個(gè)聚類中心和每個(gè)聚類中心的TF 值,即圖像總特征文件
Reducer 類
無(wú)
先通過(guò)SIFT 算法提取檢索圖像的特征,再通過(guò)K-means 算法對(duì)特征點(diǎn)聚類,然后把檢索圖像的所有聚類中心存入HDFS 文件中,最后編寫(xiě)MapReduce 程序進(jìn)行匹配相似圖像。
IPO 描述
Mapper 類
輸入:HDFS 中圖像總特征文件
處理:通過(guò)setup 方法獲取HDFS 中檢索圖像的特征文件,利用歐式距離進(jìn)行計(jì)算檢索圖像與圖像總特征文件中圖像的匹配率
輸出:<key,value>,key 是圖像名,value 是匹配率
Reducer 類
無(wú)
圖7 檢索結(jié)果
圖8 普通檢索和Hadoop檢索效率對(duì)比
圖9 普通檢索和Hadoop檢索準(zhǔn)確率
在圖像檢索方面,本文首先利用SIFT 算法提取圖像特征,獲得大量圖像特征點(diǎn)。然后利用K-means 算法對(duì)圖像特征點(diǎn)進(jìn)行聚類,降低特征點(diǎn)數(shù)量,提高圖像檢索效率。此外,利用TF-IDF 算法對(duì)圖像聚類中心進(jìn)行量化,獲取聚類中心的TF-IDF 值,優(yōu)化圖像檢索結(jié)果。在基于Hadoop 的圖像檢索方面,先采用了HDFS對(duì)圖像文件進(jìn)行分布式存儲(chǔ),然后基于MapReduce 對(duì)圖像進(jìn)行分布式計(jì)算處理。