1
我想实现在Matlab三维高斯滤波器 - WITHOUT使用像imfilter,imgaussfilt等内置Matlab的过滤功能...3D高斯滤波在Matlab
我有3D数据
RAW(K,K,K)
说,K = 100
,和过滤器宽度为delta = 5
本实施例中。
目前,我有:
Ggrid = -floor(delta/2):floor(delta/2);
[X Y Z] = meshgrid(Ggrid, Ggrid, Ggrid);
% Create Gaussian Mask
GaussM = exp(-(X.^2 + Y.^2 + Z.^2)/(2*delta^2));
% Normalize so that total area (sum of all weights) is 1
GaussM = GaussM/sum(GaussM(:));
这给了我维K+1 * K+1 * K+1
的3D高斯核。 现在,得到过滤后的数据,我希望做一个像卷积:
FilteredData = conv(RAW,GaussM);
,但有一个尺寸不匹配。有人能指出我要去哪里吗?我假设我在高斯蒙版GaussM
中犯了一些错误。
然后还有别的东西,你没有做正确。 'convn'可以舒适地完成3D数据。请发布确切的错误。 – rayryeng
Tnx @rayryeng。 'convn'做了N维的卷积。同样的标志保持与(K,K,K)维度的卷积。工作比我想象的要容易得多。 我没有使用'conv'和'convn'循环。不知道有一面我可以使用的旗帜。 – newbie