3.基于四元傅里叶变换的显著性检测
(Spatio-temporal Saliency Detection Using Phase Spectrum of Quaternion Fourier Transform)
定义t时刻的输入图像F(t)(t=1,2,...,T,T表示输入视频的总帧数),r(t)、g(t)、b(t)分别表示F(t)的红、绿、蓝三通道,则其独立的颜色通道R(红)G(绿)B(蓝)Y(黄)分别定义为:
F(t)的亮度特征I(t)和运动特征M(t)定义如下:
根据人眼视觉系统的生理结构!研究发现人类视觉皮层存在红/绿、蓝/黄神经元,用RG(t)、BY(t)表示如下:
研究表明!在人类视觉系统,M(t)、I(t)、RG(t)、BY(t)这四个特征通道几乎是独立的。因此!可以用一个四元数q(t)表示视频帧的上述四个特征),定义加权图像四元数表示如下:
其中
可将q(t)写为如下形式:
q(t)可写为四元傅里叶变换(Quaternion Fourier Transform)的形式:
四元傅里叶变换的逆变换可写为如下形式:
我们用Q(t)表示频域的q(t),Q(t)可以写为极数形式:
其中
表示Q(t)的相位谱部分,u是四元数的虚数单位。
令
则Q(t)中只保留相位谱信息,对其进行傅里叶变换的逆变换得到q'表示如下:
最终的显著图定义为:
下面为基于四元傅里叶变换的显著性检测matlab代码:
- function [qpftmap, RG, BY,I1] = qpft(rgb, sigma )%-1
- %四元傅里叶相位谱显著性检测
- [row ,col, page] = size(rgb);
-
- %计算四元数
- r = double(rgb(:,:,1)); g = double(rgb(:,:,2)); b = double(rgb(:,:,3));%r红通道g绿通道b蓝通道
- R = r - (g + b)/2; %调整后的红色通道
- G = g - (r + b)/2; %调整后的绿色通道
- B = b - (r + g)/2; %调整后的蓝色通道
- Y = (r + g)/2 - (abs(r - g))/2 - b;%黄色通道
-
- u1=1;%I
- u2=1;%RG
-
-
- RG = R - G;%红/绿对立神经元
-
- BY =B - Y;%蓝/黄对立神经元
-
- I1 = ((r+g+b)./3).*u1;%-0 计算亮度特征
- %I0=rgb2gray(rgb);
- %I1=grayslice(I0,64);
- %I1=double(I1);
- %level = graythresh(I0); %OTSU阈值确定-1
- %I1=im2bw(I0,level); %转为二值图像-1
-
- M = zeros(row, col); %创建一个全0数组(运动特征)
-
- %定义加权四元数表示如下
- f1 = M + RG * 1i;
- f2 = BY + I1* 1i;
- %进行傅里叶变换
- F1 = fft2(f1);
- F2 = fft2(f2);
-
-
- phaseQ1 = angle(F1);%得到相位谱
- phaseQ2 = angle(F2);%得到相位谱
- ifftq1 = ifft2(exp(phaseQ1 * 1i));%对相位谱进行傅里叶反变换
- ifftq2 = ifft2(exp(phaseQ2 * 1i));%对相位谱进行傅里叶反变换
- absq1 = abs(ifftq1);%得到幅值图像
- absq2 = abs(ifftq2);%得到幅值图像
-
-
- squareq=(absq1+absq2).*(absq1+absq2);
-
-
- L = fspecial('gaussian', [5 5], sigma);%标准差为sigma的二维高斯滤波算子
-
- Squareq = mat2gray(imfilter(squareq, L, 'circular'));%L表示标准差为sigma的二维高斯滤波器
- qpftmap = mat2gray(Squareq);%最终显著图为归一化后的二维矩阵
- end