图像纹理相似度评价——Gabor变换
1、基本概念
纹理特征主要用描述图像中景物表面的排列组织属性,是一种序列性分布的视觉特征。Gabor变换解决了传统傅里叶频域变换无法有效提取局部特征的问题。主要是因为Gabor变换在时空域和频域中都具备分辨能力,可以更好的对局部化特征进行提取。Gabor变换实际上就是把信号分割成一些小的时间间隔,然后使用傅里叶变化对这些小的时间间隔进行分析,就可以计算出来信号在当前时间间隔中存在的频率。它的主要处理方法是对函数f(t)加一个滑动窗口,再进行傅里叶变换。在空域方面来说,正弦的平面波和高斯核函数的乘积就构成了二维Gabor滤波器,可以用下式表示:
式中:
λ——滤波器的波长;
θ——滤波器的方向;
φ——相位偏移量;
σ——高斯函数的标准差;
γ——Gabor函数的椭圆率。
在提取纹理特征时,可以根据实际应用场景选择,n个方向和m个尺度的Gabor特征。
通过上述滤波器提取的纹理特征图再将其转化为特征向量,然后再利用距离函数对其进行计算,就可以实现对两幅图像纹理特征的相似度评价。
2、实验验证
实验验证选择TID2013数据集的第一组参考图像和失真图像(转化为灰度图像)进行计算:
(a)参考图像
(b)失真图像
在Matlab中利用gabor类和imgaborfilt()函数实现Gabor变换求纹理相似度:
%% 计算Gabor变换
feat1=zeros(24,2);
feat2=zeros(24,2);wavelength = [4 6 8 10 12 14];
orientation = [0 45 90 135];
g = gabor(wavelength,orientation);
outMag_ori = imgaborfilt(ori,g);
outMag_sim = imgaborfilt(sim,g);for i=1:24temp1=outMag_ori(:,:,i);feat1(i,:)=[mean(temp1(:)),var(temp1(:))];temp2=outMag_sim(:,:,i);feat2(i,:)=[mean(temp2(:)),var(temp2(:))];
endfeat1=feat1/norm(feat1(:));
feat2=feat2/norm(feat2(:));
Gabor=1-norm(feat1-feat2)/sqrt(length(feat1(:)));
运行结果如下:
归一化后的Gabor变换纹理相似度为:0.9997。