如何在matlab中实现三维图像的gabor滤波器

如何在matlab中实现三维图像的gabor滤波器,matlab,image-processing,3d,feature-extraction,Matlab,Image Processing,3d,Feature Extraction,我正在处理3D图像,我想实现Gabor特征。为此,我需要生成具有不同比例和方向的Gabor滤波器组(可能是三维的,两个角度),然后用我的图像对它们进行转换。我的问题是,是否有可能实现3D gabor滤波器,然后用3D图像对其进行转换。或者,我需要一片一片地做2D。如果是这样,任何在matlab中实现它的建议都将不胜感激 提前谢谢你把它做成2D。 Gabor过滤器会自动将图像更改为灰度,所以3D变得毫无用处 这是一个用于matlab的gabor滤波器,我使用过它,它工作得很好 function g

我正在处理3D图像,我想实现Gabor特征。为此,我需要生成具有不同比例和方向的Gabor滤波器组(可能是三维的,两个角度),然后用我的图像对它们进行转换。我的问题是,是否有可能实现3D gabor滤波器,然后用3D图像对其进行转换。或者,我需要一片一片地做2D。如果是这样,任何在matlab中实现它的建议都将不胜感激

提前谢谢你

把它做成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
%       haghighat@ieee.org
%       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

通过将滤波器扩展到三维,可以实现三维gabor滤波器,使其成为:

高斯(x,y,z)*exp(j*2p*(Ux+Vy+Zz))。欲了解更多信息,请参阅本文:


老实说,我实现了2D gabor滤波器组,然后将其与我的2D图像进行卷积。但我想知道,有没有可能在3d图像上实现呢?甚至,我也不确定它是否有意义!:)无论如何,谢谢你的回答。我不是百分之百。当然可以,但这是不可能的,因为gabor将图像转换为2D。我不知道有没有3D版的。