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