скорость фильтра для объемов

Я работаю над алгоритмом, который требует фильтрации трехмерной матрицы (не разреженной, 512 ^ 3), чтобы найти ребра. Я только хочу найти ребра в каждом срезе, поэтому я делал следующее:

% 2D loop appaoch    
[x,y]=ndgrid(floor(-3*sigma):ceil(3*sigma),floor(-3*sigma):ceil(3*sigma));    
DGauss=-(x./(2*pi*sigma^4)).*exp(-(x.^2+y.^2)/(2*sigma^2));    
filteredVolume = zeros(size(vol))    
for n = 1:size(vol,3)      
    filteredVolume(:,:,n) = imfilter(vol(:,:,n),DGauss,'conv','symmetric');    
end

Я также попытался сделать то же самое, вызвав imfilter для всего тома:

% 3D matrix approach    
filteredVolume = imfilter(vol,DGauss,'conv','symmetric');

Я сравнил производительность обоих этих подходов, но версия цикла значительно быстрее (от 6,5 до 20 секунд). Следует ли ожидать такого поведения? Если так, то почему?

Ответы на вопрос(1)

Ваш ответ на вопрос