图像显著性检测——时域分析(谱残差法、相位谱法)

本文介绍了图像显著性检测的方法,包括基于谱残差和相位谱的两种技术。首先,通过2维离散傅里叶变换及对数谱计算,利用谱残差来识别图像中的异常区域,进而生成显著图。接着,讨论了基于四元傅里叶变换的时空显著性检测。实验结果验证了这些方法的有效性。
摘要由CSDN通过智能技术生成


1.基于谱残差法的显著性检测

(Saliency Detection: A Spectral Residual Approach)

给定一幅图像,I(x)首先计算其2维离散傅里叶变换,将其从空间域转换到频域,对幅值取对数后得到log谱L(f):


式中F代表2维离散傅里叶变换,I·I代表其幅值,φ代表其相位。

由于log曲线满足局部线性条件,所以用局部平均滤波器hn(f)对其进行平滑,获得log谱的大致形状:


hn(f)是一个nxn矩阵定义为:


因此谱残差就是log谱和其进行均值滤波后的差,可按下面的式子计算:


谱残差能够描述一幅图像中的异常区域,因此可以用来进行显著目标检测。将谱残差和相位P(f)进行2维离散傅里叶反变换


由此可以重构出一幅图像,用来表示原图像各像素的显著性,称为显著图(saliencymap)。

下面为基于谱残差法显著性检测的matlab代码


function [srmap] = sr(rgb, sigma)
%计算利用最基本普残差得到显著图,即不包含颜色亮度分量等特征
F = fft2(rgb2gray(rgb));%将彩色图像转为灰度图像(即亮度)后进行二维离散傅立叶变换

Af = abs(F);%对傅立叶变换结果取绝对值(即求变换后图像的幅度图像)
Pf = angle(F);%求变换后图像的相位谱图像
Lf = log(Af);%得到幅度值的Log谱

filt = fspecial('average', 3);%创建局部平均滤波算子[3,3]为默认尺寸

%circular'图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
Rf = Lf - imfilter(Lf, filt, 'circular');% 幅度值的Log谱-局部平均滤波器进行平滑处理后的Log谱得到普残差

srmap = ifft2((exp(Rf+i*Pf)));%将相位谱和谱残差进行二维傅立叶反变换得到显著图
srmap = abs(srmap);%取上面计算图像的幅值部分即位显著图(saliency map)
srmap = srmap .^ 2;%将显著图矩阵中各个元素平方,即为进行二维卷积运算,利用了“复数和它的共轭复数的乘积是复数模的平方”这一结论

srmap = mat2gray(imfilter(srmap, fspecial('gaussian',[3 3], sigma)));%对处理后的显著图进行滤波(高斯低通滤波尺寸为[3,3],Sigma为滤波器的标准差),然后归一化

end


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值