我正在处理3D图像,并且我想实现Gabor特征。为此,我需要生成具有不同比例和方向(可能是3D,两个角度)的Gabor滤波器组,然后使用我的图像对其进行调整。我的问题是,是否有可能实现3D gabor滤镜,然后用3D图像对其进行校正。或者我在2D中一片一片地做。如果是这样,任何建议在matlab中实现它将不胜感激。如何在matlab中的3D图像上实现gabor滤波器
谢谢您提前
我正在处理3D图像,并且我想实现Gabor特征。为此,我需要生成具有不同比例和方向(可能是3D,两个角度)的Gabor滤波器组,然后使用我的图像对其进行调整。我的问题是,是否有可能实现3D gabor滤镜,然后用3D图像对其进行校正。或者我在2D中一片一片地做。如果是这样,任何建议在matlab中实现它将不胜感激。如何在matlab中的3D图像上实现gabor滤波器
谢谢您提前
使它成为2D。 Gabor滤镜会自动将图像更改为灰度,因此无论如何,3D变得毫无用处。
这里是一个matlab的gabor滤波器,我用它,它完美的工作。
function gaborArray = gaborFilterBank(u,v,m,n)
% GABORFILTERBANK generates a custum Gabor filter bank.
% It creates a u by v array, whose elements are m by n matries;
% each matrix being a 2-D Gabor filter.
%
%
% Inputs:
% u : No. of scales (usually set to 5)
% v : No. of orientations (usually set to 8)
% m : No. of rows in a 2-D Gabor filter (an odd integer number usually set to 39)
% n : No. of columns in a 2-D Gabor filter (an odd integer number usually set to 39)
%
% Output:
% gaborArray: A u by v array, element of which are m by n
% matries; each matrix being a 2-D Gabor filter
%
%
% Sample use:
%
% gaborArray = gaborFilterBank(5,8,39,39);
%
%
% Details can be found in:
%
% M. Haghighat, S. Zonouz, M. Abdel-Mottaleb, "Identification Using
% Encrypted Biometrics," Computer Analysis of Images and Patterns,
% Springer Berlin Heidelberg, pp. 440-448, 2013.
%
%
% (C) Mohammad Haghighat, University of Miami
% [email protected]
% I WILL APPRECIATE IF YOU CITE OUR PAPER IN YOUR WORK.
if (nargin ~= 4) % Check correct number of arguments
error('There should be four inputs.')
end
%% Create Gabor filters
% Create u*v gabor filters each being an m*n matrix
gaborArray = cell(u,v);
fmax = 0.25;
gama = sqrt(2);
eta = sqrt(2);
for i = 1:u
fu = fmax/((sqrt(2))^(i-1));
alpha = fu/gama;
beta = fu/eta;
for j = 1:v
tetav = ((j-1)/v)*pi;
gFilter = zeros(m,n);
for x = 1:m
for y = 1:n
xprime = (x-((m+1)/2))*cos(tetav)+(y-((n+1)/2))*sin(tetav);
yprime = -(x-((m+1)/2))*sin(tetav)+(y-((n+1)/2))*cos(tetav);
gFilter(x,y) = (fu^2/(pi*gama*eta))*exp(-((alpha^2)*(xprime^2)+(beta^2)*(yprime^2)))*exp(1i*2*pi*fu*xprime);
end
end
gaborArray{i,j} = gFilter;
end
end
%% Show Gabor filters
% Show magnitudes of Gabor filters:
figure('NumberTitle','Off','Name','Magnitudes of Gabor filters');
for i = 1:u
for j = 1:v
subplot(u,v,(i-1)*v+j);
imshow(abs(gaborArray{i,j}),[]);
end
end
% Show real parts of Gabor filters:
figure('NumberTitle','Off','Name','Real parts of Gabor filters');
for i = 1:u
for j = 1:v
subplot(u,v,(i-1)*v+j);
imshow(real(gaborArray{i,j}),[]);
end
end
可以通过延长过滤器3点的尺寸实现3D Gabor滤波器,所以它变成:
高斯(X,Y,Z)* EXP(j * 2P *(的Ux + VY + Z Z)) 。欲了解更多信息请查看本文:
http://www.sciencedirect.com/science/article/pii/S0031320312003421#bib32
说实话,我实现了2D Gabor滤波器的银行,然后用我的2D图像卷积它。但我想知道,是否有可能在3D图像上做到这一点?甚至,我不确定它是否有意义! :)无论如何感谢您的答案。 – user3397178
我不是100 perct。当然,但这是不可能的,因为gabor会将图像转换为2D。我不知道它是否有3D版本。 – Celik