1. 程式人生 > >視覺顯著性頂尖論文總結

視覺顯著性頂尖論文總結

image 位置 AC defined mil 接受 自己 操作 CA

https://www.cnblogs.com/mlblog/p/4368062.html

1、A model of saliency-based visual attention for rapid scene analysis

受早期靈長類動物早期視覺系統的神經結構和行為所啟發的視覺註意系統。,他將圖像特征組合成顯著性圖。

模型:

*采用二進高斯金字塔產生9個空間比例:S0~S8;

*由靈長類動物的視覺特征:對中心敏感,對周圍不敏感,由此實現

中心是尺度c={2,3,4}中的像素,周圍(surround)是在尺度s=c+d,d={3,4}中相關位置的像素。兩者先插值,再點對點相減

*用r,g,b三個顏色通道得到5個高斯金字塔,從而得到42張特征圖(通過金字塔相減得到),特征圖結合成3張顯著性圖,3張圖歸一化得到得到最後的輸入S(顯著性圖SM),FOA指向顯著性圖的最大值處。

*把SM模擬為神經元,有閾值電流;SM為勝者為王神經網絡提供輸入

*勝者為王,註意焦點FOA轉移:

a) SM中的神經元接受來自S的刺激輸入

b) 顯著性區域的神經元電勢上升快

c) 每個神經元激發相應的WTA神經元

d) 直到勝者為王WTA達到閾值激發

3個同時機制:

  1. FOA轉移到獲勝的神經炎區域
  2. 所有WTA神經元抑制
  3. 在新的WTA位置,抑制被取消

*原程序的代碼在http://www.saliencytoolbox.net/可以下載

*註意焦點轉移示意圖:

2、Salient region detection and segmentation

Salient region detection:應用文中的原話就是:saliency is determined as the local contrast of an image region with respect to its neighborhood at various scales. 我自己的理解為:在一個給定的尺度圖上,通過每個像素的特征向量來獲取一個特征融合的特征圖,再將這些尺度不同的顯著性圖結合為一個顯著性圖;而不是像其他的一樣,將一些不同特征的顯著性圖進行組合。而這些不同的尺度指的是外圍區域R2的尺度。R2一般為1個像素,也可以是N x N像素。若圖像的寬是w,則R2的寬在w/2和w/8之間

在一個給定的尺度,各個像素的顯著性值為

再將不同尺度的顯著性圖逐像素相加

得最終的顯著性圖。

Salient region detection and segmentation:通過爬山算法用K—means算法過分割,爬山算法可以看做是在多維直方圖空間中尋找最大的一種搜索窗體

代碼粘貼:

% author = {Achanta, Radhakrishna and Extrada, Francisco and Süsstrunk, Sabine},

% booktitle = {{I}nternational {C}onference on {C}omputer

% {V}ision {S}ystems},

% year = 2008

% }

%---------------------------------------------------------

%

%

%---------------------------------------------------------

% Read image

%---------------------------------------------------------

img = imread(‘C:\Users\dell\Desktop\±?òμéè??\êμ?é??2?\100070.jpg‘);%Provide input image path

tic;%?aê???ê±

dim = size(img);

width = dim(2);height = dim(1);

md = min(width, height);%minimum dimension

%---------------------------------------------------------

% Perform sRGB to CIE Lab color space conversion (using D65)

%---------------------------------------------------------

cform = makecform(‘srgb2lab‘, ‘AdaptedWhitePoint‘, whitepoint(‘d65‘));%′′?¨??é?×a???á11

lab = applycform(img,cform);

l = double(lab(:,:,1));%μ?μ?3ì??÷

a = double(lab(:,:,2));

b = double(lab(:,:,3));

%If you have your own RGB2Lab function...

%[l a b] = RGB2Lab(gfrgb(:,:,1),gfrgb(:,:,2), gfrgb(:,:,3));

%---------------------------------------------------------

%Saliency map computation

%---------------------------------------------------------

sm = zeros(height, width);

off1 = int32(md/2); off2 = int32(md/4); off3 = int32(md/8);%R2μ?3?D3??è

for j = 1:height

y11 = max(1,j-off1); y12 = min(j+off1,height);

y21 = max(1,j-off2); y22 = min(j+off2,height);

y31 = max(1,j-off3); y32 = min(j+off3,height);

for k = 1:width

x11 = max(1,k-off1); x12 = min(k+off1,width);

x21 = max(1,k-off2); x22 = min(k+off2,width);

x31 = max(1,k-off3); x32 = min(k+off3,width);

lm1 = mean2(l(y11:y12,x11:x12));am1 = mean2(a(y11:y12,x11:x12));bm1 = mean2(b(y11:y12,x11:x12));

lm2 = mean2(l(y21:y22,x21:x22));am2 = mean2(a(y21:y22,x21:x22));bm2 = mean2(b(y21:y22,x21:x22));

lm3 = mean2(l(y31:y32,x31:x32));am3 = mean2(a(y31:y32,x31:x32));bm3 = mean2(b(y31:y32,x31:x32));

%---------------------------------------------------------

% Compute conspicuity values and add to get saliency value.

%---------------------------------------------------------

cv1 = (l(j,k)-lm1).^2 + (a(j,k)-am1).^2 + (b(j,k)-bm1).^2;%í?ò?????μ?2?í?ì??÷èúo?

cv2 = (l(j,k)-lm2).^2 + (a(j,k)-am2).^2 + (b(j,k)-bm2).^2;

cv3 = (l(j,k)-lm3).^2 + (a(j,k)-am3).^2 + (b(j,k)-bm3).^2;

sm(j,k) = cv1 + cv2 + cv3;%2?í?3??èμ?ì??÷2??áo?

end

end

toc

imshow(sm,[]);

3、Frequency-tuned Salient Region Detection

原文為:In our case we use the entire image as the neighborhood. This allows us to exploit more spatial frequencies than state-of-the-art methods (please refer to the paper for details) resulting in uniformly highlighted salient regions with well-defined borders. 將整個圖像作為鄰域

In simple words, our method find the Euclidean distance between the Lab pixel vector in a Gaussian filtered image with the average Lab vector for the input image.

原文代碼:

%---------------------------------------------------------

% Copyright (c) 2009 Radhakrishna Achanta [EPFL]

% Contact: [email protected]

%---------------------------------------------------------

% Citation:

% @InProceedings{LCAV-CONF-2009-012,

% author = {Achanta, Radhakrishna and Hemami, Sheila and Estrada,

% Francisco and S?sstrunk, Sabine},

% booktitle = {{IEEE} {I}nternational {C}onference on {C}omputer

% {V}ision and {P}attern {R}ecognition},

% year = 2009

% }

%---------------------------------------------------------

% Please note that the saliency maps generated using this

% code may be slightly different from those of the paper.

% This seems to be because the RGB to Lab conversion is

% different from the one used for the results in the C++ code.

% The C++ code is available on the same page as this matlab

% code (http://ivrg.epfl.ch/supplementary_material/RK_CVPR09/index.html)

% One should preferably use the C++ as reference and use

% this matlab implementation mostly as proof of concept

% demo code.

%---------------------------------------------------------

%

%

%---------------------------------------------------------

% Read image and blur it with a 3x3 or 5x5 Gaussian filter

%---------------------------------------------------------

img = imread(‘C:\Users\dell\Desktop\±?òμéè??\êμ?é??2?\100070.jpg‘);%Provide input image path

tic;%?aê???ê±

gfrgb = imfilter(img, fspecial(‘gaussian‘, 3, 3), ‘symmetric‘, ‘conv‘);

%---------------------------------------------------------

% Perform sRGB to CIE Lab color space conversion (using D65)

%---------------------------------------------------------

cform = makecform(‘srgb2lab‘, ‘AdaptedWhitePoint‘, whitepoint(‘d65‘));

lab = applycform(gfrgb,cform);

%---------------------------------------------------------

% Compute Lab average values (note that in the paper this

% average is found from the unblurred original image, but

% the results are quite similar)

%---------------------------------------------------------

l = double(lab(:,:,1)); lm = mean(mean(l));

a = double(lab(:,:,2)); am = mean(mean(a));

b = double(lab(:,:,3)); bm = mean(mean(b));

%---------------------------------------------------------

% Finally compute the saliency map and display it.

%---------------------------------------------------------

sm = (l-lm).^2 + (a-am).^2 + (b-bm).^2;

toc

imshow(sm,[]);

%---------------------------------------------------------

4、HC方法:基於直方圖對比度的圖像像素顯著性檢測方法(MingMingChen)

像素顯著性 ==顏色顯著性(通過顏色距離計算)——》基於直方圖的加速(減少顏色數從而減少復雜度)——》色彩空間平滑操作(減少量化瑕疵使相似顏色有相近的顯著性)

HC方法忽略了空間細節————》RC

RC方法:基於區域對比度的視覺顯著性檢測方法

1) 區域分割

2) 計算區域對比度(顏色距離)

3) 空間加權區域對比度(空間距離)

5、Saliency FiltersFrequency-tuned Salient Region Detection

1) 基本思想:顯著性一直以來都被認為應該是一個濾波器,該文作者想到了將其使用濾波器的方法進行加速。這篇文章主要是對局部和全局兩種顯著特征的公式進行了分析,提出了一種可以再線性時間內計算的方法。

2) 方法流程:

① 圖像分割:采用略微修改的超像素分割,根據CIElab空間的測地線圖像距離進行K-means聚類,產生大體上均勻尺寸,並且可以保持顏色邊界的超像素分割。

② 顏色獨立性:

其中的權重與超像素空間位置的距離有關,如果這個值給予長距離很低的權重,這個顏色獨立性就類似於中央周邊的對比度,即距離遠的像素對其顯著性貢獻較低;如果這個權重為常數,這個顏色權重就類似於Mingming Cheng論文裏面的區域對比度。

這個公式也可以寫成:

第一項的Σ結果是1,第二和第三項都可以看做是以ω為核的濾波器,分別對cj 和cj2濾波。本文將這個核寫成了高斯的形式,並且借助Adams提出的permutohedral lattice embedding 濾波器來實現線性時間的計算。

③ 空間顏色分布:

權重是顏色的差距,前面是空間距離。根據ω(ci,cj)定義,顏色越接近近權重越大,即距離遠但顏色相近的像素分布值大,和前一個特征剛好是相反,這個特征可以表示某種顏色在空間分布的廣度。例如某種顏色分散在圖像中,但是面積都很小,那麽第一個特征計算出來這個顏色的獨立性就比較高,但是第二個特征會告訴你這個顏色的分布很廣,並不顯著。

通過類似的推導,這個公式也可以寫成高斯濾波的形式,借助Adams提出的permutohedral lattice embedding 濾波器來實現線性時間的計算,具體參考論文Fast High-Dimensional Filtering Using thePermutohedral Lattice。

④ 顯著性融合:

由於空間顏色分布的區分度更大,因此作者將其放在了指數的位置,並加了一個權重調節。Di越大即顏色分布越廣,對應顯著性值越小;Ui越大對應顏色獨立性越高,對應顯著性值越大。

最後,特征被從超像素級映射到像素級。每個像素的顯著性是通過其所在超像素以及周圍的超像素進行高斯線性加權,權重取決於和顏色,位置的距離。最終的歸一化也很重要,要求顯著圖至少包含10%的顯著像素,這種歸一化方式也會提升算法最終的評價指標。

3) 論文評價:考慮到顏色自身獨立性與顏色分布對顯著度的貢獻結合,算法均在時域進行,並采用高斯濾波加速,得到很不錯的效果。實際測試結果saliency map較均勻,但公布的代碼缺少一些實驗細節,沒有論文的公布結果好。

6、SR方法

頻域的顯著性檢測方法,將原圖進行傅裏葉變化,提取他的幅度譜和相位譜,保留相位譜,對幅度譜進行變化

作者發現大量圖像的log幅度頻譜的平均值是和頻率呈現正比關系的

然後作者又提出了既然大量圖像的log振幅譜都差不多趨近一條直線,那麽一幅圖像的log振幅譜減去平均log振幅譜不就是顯著性部分了

L(f)是log振幅譜。h是一個n*n均值濾波的卷積核,作者設n=3,用來得到平均譜,R(f)就是顯著性譜

代碼:關鍵部分5行

clear

clc

%% Read image from file

inImg = im2double(rgb2gray(imread(‘102831.jpg‘)));

%%inImg = imresize(inImg, 64/size(inImg, 2));

%% Spectral Residual

myFFT = fft2(inImg);

myLogAmplitude = log(abs(myFFT));%abs()求振幅譜angle£()求相位譜

myPhase = angle(myFFT);

mySpectralResidual = myLogAmplitude - imfilter(myLogAmplitude, fspecial(‘average‘, 3), ‘replicate‘);

saliencyMap = abs(ifft2(exp(mySpectralResidual + i*myPhase))).^2;

%% After Effect

saliencyMap = mat2gray(imfilter(saliencyMap, fspecial(‘gaussian‘, [10, 10], 2.5)));%mat2grayêμ?????óμ?1éò??ˉ2ù×÷

imshow(saliencyMap);

效果圖:

視覺顯著性頂尖論文總結