劉婉婷,梁曉萍,張瀚勻
(1.廣西師范大學計算機科學與信息工程學院,桂林541004;2.廣西師范大學圖書館,桂林541004)
隨著移動數(shù)字技術的快速發(fā)展和移動設備的普及,人們都喜歡用照片和視頻來記錄自己的生活日常和遇到的風景等并分享到社交平臺,這為互聯(lián)網(wǎng)帶來了海量的圖像信息數(shù)據(jù)。在圖像數(shù)據(jù)呈爆炸式速度增長的時代,如何從大量圖像數(shù)據(jù)中快速有效地檢索圖像是一項艱巨的挑戰(zhàn)。圖像檢索即從數(shù)據(jù)圖像庫中查找內(nèi)容相似的圖像,目前大多數(shù)研究者都致力于研究基于圖像低層視覺特征[1]的檢索方法,但由于其與高層語義之間存在的鴻溝,目前還無法完全檢索出符合人類視覺特征的圖像,例如同一場景,僅移動一點攝像頭或從不用角度拍攝的圖像,人的視覺會判斷為相似的圖像,但由于其內(nèi)容產(chǎn)生了些許不同,基于內(nèi)容的檢索算法不一定都將其判斷為相似圖像而檢索出來。因此,為了盡可能減少這些缺陷給圖像檢索帶來的影響,一個優(yōu)良的圖像特征提取算法和恰當?shù)南嗨贫绕ヅ浞椒@得尤為重要。感知圖像哈希[2]是數(shù)字圖像領域常用的基于內(nèi)容的相似圖像搜索技術[3],它能有效降低圖像存儲代價并減少計算復雜度。具體來說,它將圖像低層特征映射成一串緊湊且固定大小的字符串,通過字符串間的相似度來衡量圖像特征內(nèi)容的相似度,也就是說,相同或相似的圖像應該有相同或相近的哈希,不同的圖像生成的哈希值也應有很大差異,相似度越高圖像的內(nèi)容越接近。
因此本文基于感知哈希算法設計了一款圖像檢索系統(tǒng),實現(xiàn)在圖像數(shù)據(jù)集中快速有效搜索目標圖像,界面直觀且易操作,使用新發(fā)表且分類性能好的感知圖像哈希算法,在保證檢索圖像準確率的同時提高了檢索效率。本文將從系統(tǒng)設計、系統(tǒng)處理流程、系統(tǒng)核心算法和軟件實現(xiàn)及測試4個部分闡述設計的圖像檢索系統(tǒng)。
本文設計的圖像檢索系統(tǒng)從圖像檢索數(shù)據(jù)庫中選擇需要檢索的圖像,通過計算圖像哈希和目標圖像哈希與數(shù)據(jù)庫圖像哈希之間的相似度將檢索結果顯示出來。因此本系統(tǒng)有兩個主要模塊:載入待檢索圖像模塊和圖像檢索模塊。系統(tǒng)功能模塊如圖1所示。
系統(tǒng)各模塊功能介紹如下。①載入待檢索圖像:用戶從數(shù)據(jù)庫或互聯(lián)網(wǎng)上下載的圖像中選擇檢索的目標圖像,系統(tǒng)獲取到目標圖像后,在主界面指定區(qū)域顯示目標圖像,并通過前面介紹感知圖像哈希算法計算出圖像的哈希值。②圖像檢索:計算目標圖像哈希和數(shù)據(jù)庫所有圖像哈希的歐氏距離,距離值越小表示兩幅圖像內(nèi)容越相似,距離越大表示內(nèi)容差異越大。將所有的距離值從小到大排序,為保證圖像的相似度,選擇與目標檢索圖像最相似的前10幅圖像在檢索區(qū)域顯示。
圖1功能模塊
系統(tǒng)的處理流程如圖2所示。用戶選擇待檢索的圖像作為輸入后,系統(tǒng)調(diào)用哈希算法對輸入圖像進行計算,得到的待檢索圖像哈希值與哈希文檔中的哈希序列逐一計算相似度,通過對相似度排序,將排序靠前的檢索圖像顯示出來。
圖2系統(tǒng)處理流程
本系統(tǒng)的核心算法使用唐等[4]已發(fā)表的《基于視覺顯著模型和不變矩的魯棒圖像哈?!?。該算法能抵抗對比度調(diào)整、斑點噪聲、高斯低通濾波等圖像常見攻擊,在魯棒性和唯一性之間能達到良好的分類性能,可以很好識別內(nèi)容相似圖像和不同圖像。算法流程如圖3所示。
圖3算法流程
該算法主要分為3個步驟:
(1)首先使用雙三次插值將輸入圖像轉(zhuǎn)換為尺寸規(guī)格化圖像。該步驟可以保證算法抵抗圖像縮放操作,且使得不同大小的圖像得到長度一致的哈希序列。
(2)其次通過聯(lián)合視覺顯著圖和YCbCr顏色空間中的一級2D-DWT的LL子帶得到加權表示。其中視覺顯著圖由ITTI視覺顯著模型提取得到,相較于其他視覺顯著模型,它能在計算成本和檢測顯著區(qū)域之間達到較好的平衡。ITTI模型通過高斯金字塔、中心環(huán)繞計算和跨比例計算等技術提取顏色顯著圖Mc、強度顯著圖Mi以及方向顯著圖Mo,通過以下公式融合上述的3個顯著圖得到最終的顯著圖M:
眾所周知,LL子帶的DWT系數(shù)是近似系數(shù),相比其他子帶系數(shù)更加穩(wěn)定。該系數(shù)受一些數(shù)字圖像操作影響較小,能夠提高算法的魯棒性。假設D為LL子帶的系數(shù)矩陣。由于LL子帶的DWT系數(shù)的數(shù)量大約是輸入圖像的像素數(shù)量的1/4,想要得到顯著圖和LL子帶的加權表示就需要將顯著圖M插值成它的下采樣版本J。加權表示I則可以通過如下計算得到:
其中I(i,j)、D(i,j)和J(i,j)分別是I、D和J在第i行和第j列的元素。
(3)最后選擇加權表示I的不變矩作為圖像特征并生成哈希序列。其中不變矩是由Hu最早提出的,它不僅對平移、伸縮、鏡像以及旋轉(zhuǎn)等幾何變換具有魯棒性,且可以有效區(qū)分不同圖像。有關Hu矩的更多計算細節(jié),可參見文獻[4]。
圖像哈希有多種相似度衡量的方法,例如漢明距離、相關系數(shù)、歐氏距離(L2范數(shù))等。實際算法研究中需要根據(jù)實際情況選擇最適合的相似度比較方法。該算法采用歐氏距離來度量圖像內(nèi)容的相似程度,歐氏距離d的公式如下。
其中h1和h2分別表示兩張圖像的哈希序列。
針對目前圖像檢索軟件大部分是基于傳統(tǒng)文本或基于內(nèi)容但檢索效果不理想的情況,本文設計的圖像檢索系統(tǒng)結合多種特征提取技術,相比單一的特征,提高了檢索的準確率。本系統(tǒng)在Windows 10環(huán)境下,主要使用Python編程語言和OpenCV 3軟件庫在PyCharm 2019平臺來設計實現(xiàn)[5]。采用公開數(shù)據(jù)集INRIA Copydays[6]作為實驗數(shù)據(jù)庫,選用了該數(shù)據(jù)集157張原圖像以及對全部原圖做了9種JPEG壓縮后的圖像,JPEG壓縮的質(zhì)量因子分別為75、50、30、20、15、10、8、5、3。在存儲數(shù)據(jù)庫圖像的哈希值時使用了Python的csv文件存檔。csv文件格式以數(shù)字和純文本形式存儲數(shù)據(jù),本系統(tǒng)的哈希序列為整數(shù),因此采用csv文件格式存儲是可行的,并且更加便捷。
用戶圖形界面設計為左右兩部分,左邊區(qū)域用來控制系統(tǒng)操作,右邊區(qū)域顯示圖像檢索結果。界面使用Python的標準GUI庫中的Tkinter庫和Place布局實現(xiàn)。Tkinter庫內(nèi)置多種現(xiàn)成的控件,可以快速創(chuàng)建GUI應用程序,對設計不復雜的界面很友好。Place布局也叫絕對布局,需要指定每個組件的絕對位置或相對某個組件的位置,能相對靈活的設計界面。首先創(chuàng)建Tk接口并設置界面長寬,將主界面的框架封裝成Ui類,在類中主要使用了Button、Label、Canvas和Frame這4種控件。系統(tǒng)標題用Label控件實現(xiàn),在左側(cè)設置了3個Button控件,實現(xiàn)載入目標圖像、圖像檢索以及退出系統(tǒng)功能。在Button上方是Canvas控件,用來顯示檢索的圖像,由于Tkinter只能識別GIF格式圖像,因此需要借助PIL庫顯示別的格式圖像。右側(cè)在一個Frame內(nèi)設置了10個Canvas控件顯示檢索到的圖像。系統(tǒng)主界面如圖4所示。
圖4系統(tǒng)主界面
點擊“載入待檢索圖像”按鈕,系統(tǒng)調(diào)用Tkinter庫中的文件對話框filedialog打開文件夾,并定義變量保存返回的用戶選擇的待檢索圖像的文件名,再使用PIL庫中Image模塊打開對應文件名的圖像,PIL是第三方圖像處理庫,內(nèi)置豐富的圖像處理模塊,可實現(xiàn)圖像展示、圖像處理等功能。通過自定義的re?size函數(shù)調(diào)整圖像大小使其適應Canvas控件尺寸并利用Image模塊的ImageTk顯示圖像。之后將獲取到的文件名傳給感知圖像哈希算法封裝的HuHash類,通過類的對象調(diào)用類中的Huhash函數(shù)得到待檢索圖像的哈希序列并將其保存在變量中。圖5和圖6分別展示了選擇兩幅待檢索圖像的測試圖。
圖5待檢索圖像測試圖:馬
圖6待檢索圖像測試圖:花
加載事先處理好的數(shù)據(jù)庫的csv文件,通過Numpy庫的norm函數(shù)計算待檢索圖像哈希和csv文件每一行哈希的歐氏距離,其中第i行對應數(shù)據(jù)庫中第i幅圖像。Numpy庫包含大量數(shù)組和矩陣等數(shù)學運算,是一個運行速度快且豐富的數(shù)學函數(shù)庫。將得到的距離值存入定義的列表中,使用Python內(nèi)置min函數(shù)取前10個最小的距離值并用index函數(shù)獲取最小距離值的索引,從數(shù)據(jù)庫中檢索到對應索引值的圖像,用resize函數(shù)調(diào)整大小在右側(cè)的10個Canvas控件中從左往右、從上往下顯示出來。上述選擇的兩幅測試圖像檢索結果界面如圖7和圖8所示。從測試結果圖可以看出,本文的算法能精確檢索出與目標圖像相似的全部圖像。
圖7圖像檢索結果圖:馬
圖8圖像檢索結果圖:花
本文在PyCharm 2019開發(fā)平臺設計實現(xiàn)了基于感知哈希的圖像檢索系統(tǒng)。盡管基于內(nèi)容的檢索方法自身存在的不足,目前還無法達到基于語義的圖像檢索方法性能。但是本文使用的基于視覺顯著模型和不變矩的圖像哈希算法能在很大程度上改善基于內(nèi)容的檢索方法存在的缺陷,達到令人滿意的檢索效果,系統(tǒng)界面設計簡潔,操作便捷,能滿足最基本的檢索需求。