視覺顯著性檢測簡介 人類
視覺系統 在面對自然場景時具有快速搜尋和定位感興趣目標的能力,這種視覺注意機制是人們日常生活中處理視覺信息的重要機制。隨著網際網路帶來的大數據量的傳播,如何從海量的圖像和視頻數據中快速地獲取重要信息,已經成為
計算機視覺 領域一個關鍵的問題。通過在計算機視覺任務中引入這種
視覺注意機制 ,即
視覺顯著性 ,可以為視覺信息處理任務帶來一系列重大的幫助和改善。引入視覺顯著性的優勢主要表現在兩個方面,第一,它可將有限的計算資源分配給圖像視頻中更重要的信息,第二,引入視覺顯著性的結果更符合人的視覺認知需求。視覺顯著性檢測在
目標識別 ,圖像視頻壓縮,
圖像檢索 ,圖像重定向等中有著重要的套用價值。視覺顯著性檢測模型是通過計算機視覺算法去預測圖像或視頻中的哪些信息更受到視覺注意的過程。
視覺顯著性(Visual Attention Mechanism,VA,即視覺注意機制)是指面對一個場景時,人類自動地對感興趣區域進行處理而選擇性地忽略不感興趣區域,這些人們感興趣區域被稱之為顯著性區域 。如圖1所示,當看到這幅圖像時,圖中的四個人最能引起人的注意。
視覺顯著性包括從下而上和從上往下兩種機制。從下而上也可以認為是數據驅動,即圖像本身對人的吸引,從上而下則是在人意識控制下對圖像進行注意。計算機視覺領域主要做的是從下而上的視覺顯著性,而從上而下的視覺顯著性由於對人的大腦結構作用不夠了解,無法深刻的揭示作用原理,在計算機視覺領域的研究也相應很少。
自底而上基於數據驅動的注意機制 僅受感知數據的驅動,將人的視點指導到場景中的顯著區域;通常與周圍具有較強
對比度 或與周圍有明顯不同的區域吸引自下而上的注意。利用圖像的顏色、亮度、邊緣等特徵表示,判斷目標區域和它周圍
像素 的差異,進而計算圖像區域的顯著性。圖1為自下而上的注意,第5列紅色條和第 4 列的豎直擺放的條形能立即引起人的注意。
圖1 自底而上的注意機制 自上而下基於任務驅動的目標的注意機制 由人的“認知因素” 決定, 比如知識、預期和當前的目標.對圖像的特定特徵來計算圖像區域的顯著性。圖2為自上而下的注意, 監控任務下, 場景中的人體能引起注意。
圖2 自上而下的注意機制 視覺顯著性檢測概述 視覺顯著性檢測計算是指利用
數學建模 的方法模擬人的視覺注意機制,對視場中信息的重要程度進行計算。Treisman 等的特徵集成理論為視覺顯著性計算提供了理論基礎,將視覺加工過程分為特徵登記與特徵整合階段,在特徵登記階段並行地、獨立地檢測特徵並編碼,在特徵整合階段通過集中性注意對物體進行特徵整合與定位。受特徵集成理論的啟發,Kock 和 Ullman最早提出了有關視覺注意機制的計算模型,通過濾波的方式得到特徵,最後通過特徵圖加權得到
顯著圖 。
Itti於1998年提出基於顯著性的視覺注意模型,並在2001年度Nature上對該模型理論作了進一步的完善。Itti的顯著性模型最具代表性,該模型已經成為了自下而上視覺注意模型的標準。
圖4 Itti模型 對於一幅輸入的圖像,該模型提取初級視覺特徵:
顏色 (RGBY)、
亮度 和
方位 、在多種
尺度 下使用中央周邊(Center-surround)操作產生體現顯著性度量的特徵圖,將這些特徵圖合併得到最終的
顯著圖 (Saliency map)後,利用生物學中贏者取全(Winner-take-all)的競爭機製得到圖像中最顯著的空間位置, 用來嚮導注意位置的選取,最後採用返回抑制 (Inhibition of return) 的方法來完成注意焦點的轉移。視覺顯著性計算模型大致上可分為兩個階段:
特徵提取 與特徵融合。在特徵融合階段,可能存在自底向上的底層特徵驅動的融合方式,和自頂向下的基於先驗信息與任務的融合方式。因此,視覺顯著性檢測模型框架大致表述為如圖 5 所示。
圖5 視覺顯著性檢測計算模型 視覺顯著性檢測算法 LC算法 LC算法的基本思想是:計算某個像素在整個圖像上的全局對比度,即該像素與圖像中其他所有像素在顏色上的距離之和作為該像素的顯著值。
其中
的取值範圍為 [0,255], 即為
灰度值 。將上式進行展開得:
其中N表示圖像中像素的數量。
給定一張圖像,每個像素
的顏色值已知。假定
,則上式可進一步重構:
LC算法的代碼實現:
1、直接調用OpenCV接口,實現圖像中像素的直方圖統計,即統計[0,255]中每個灰度值的數量。
# 直方圖,統計圖像中每個灰度值的數量hist_array = cv2.calcHist([image_gray], [0], None, [256], [0.0, 256.0]) 2、計算像素與其他所有像素在灰度值上的距離。
def cal_dist(hist): dist = {} for gray in range(256): value = 0.0 for k in range(256): value += hist[k][0] * abs(gray - k) dist[gray] = value return dist 3、將灰度值圖像中的像素值更新為對比度值(即距離度量)。
for i in range(image_width): for j in range(image_height): temp = image_gray[j][i] image_gray_copy[j][i] = gray_dist[temp]image_gray_copy = (image_gray_copy - np.min(image_gray_copy)) / (np.max(image_gray_copy) - np.min(image_gray_copy)) github 上有代碼的具體實現:https://github.com/asdfv1929/Saliency_LC_Algorithm
HC算法 HC算法和LC算法沒有本質的區別,HC算法相比於LC算法考慮了彩色信息,而不是像LC那樣只用像素的灰度信息,由於彩色圖像最多有256*256*256種顏色,因此直接採用基於直方圖技術的方案不適用於彩色圖片。但是實際上一幅彩色圖像並不會用到那么多種顏色,因此提出了降低顏色數量的方案,將RGB各分量分別映射成12等份,則隱射後的圖最多只有12*12*12種顏色,這樣就可以構造一個較小的直方圖用來加速,但是由於過渡量化會對結果帶來一定的影響,因此又用了一個平滑的過程。 最後和LC不同的是,對圖像處理在
Lab 空間進行的,而由於Lab空間和RGB並不是完全對應的,其量化過程還是在
RGB 空間完成的。
AC算法 AC算法是基於局部對比度的,採用Lab顏色空間計算距離。AC算法通過計算一個感知單元在不同鄰域上的局部對比度來實現多尺度顯著性計算。內部區域R1,外部區域R2,計算R1和R2的局部對比度時,通過改變R2的大小實現多尺度顯著性計算。
感知單元R1可以是一個像素或一個像素塊,其鄰域為R2,(R1)R2所包含的所有像素的特徵值的平均值作為(R1)R2的特徵值。設像素p為R1和R2的中心,p所在位置局部對比度為:
其中N1和N2分別是R1和R2中像素的個數。vk是k這個位置的特徵值或特徵向量。
AC方法採用
Lab 顏色特徵,採用歐氏距離計算特徵距離。R1默認為一個像素,R2邊長為[L/8,L/2]之間的正方形區域,L為長寬中較小者。多個尺度的特徵顯著圖通過直接相加得到完整的顯著圖。
FT算法 FT算法從頻率角度分析圖像。圖像在頻率域可以分成
低頻 部分和
高頻 部分。低頻部分反映了圖像的整體信息,如物體的輪廓,基本的組成區域。高頻部分反映了圖像的細節信息,如物體的
紋理 。顯著性區域檢測用到的更多的是低頻部分的信息。在實際進行計算時,FT方法使用視窗5*5的
高斯 平滑來實現對最高頻的捨去。像素的顯著性可以用下面公式計算:
其中,
為圖像的平均特徵,使用
Lab 顏色特徵,後一項為像素p在高斯平滑後的Lab顏色特徵,||.||為L2範式,即計算前一項和後一項在了Lab顏色空間的
歐氏距離 。FT方法實現簡單,只需要高斯平滑和平均值計算。
matlab代碼實現思路如下:
1、對圖像進行5*5的高斯平滑。
2、轉換顏色空間。RGB顏色空間轉換為CIELAB顏色空間。
3、計算整幅圖片的l、a、b的平均值。
4、按照算法中的公式,計算每個像素l、a、b值同圖像三個l、a、b均值的歐氏距離。得到顯著圖
5、歸一化。圖像中每個像素的顯著值除以最大的那個顯著值。得到最終的顯著圖。