【发布时间】:2013-11-07 00:25:31
【问题描述】:
我需要平滑一个 3D 矩阵 M。平滑的输出为S。 matlab代码可以是这样的:
S = smooth3(M, 'box', 3);
问题只是矩阵M中的某些部分在平滑过程中应该被考虑。我有一个面具A 来识别这些部件的位置。 A与M的大小相同,1的值表示考虑这一点,0表示忽略这一点。该怎么做?
例如,如果我在下面有M 和A:
M=zeros(7,7,7); M(2:6,2:6,2:6)=ones(5,5,5); M(4,4,4)=28;
A=zeros(7,7,7); A(2:6,2:6,2:6)=ones(5,5,5);
平滑之后,我想要这样的结果:
S=zeros(7,7,7); S(2:6,2:6,2:6)=smooth3(M(2:6,2:6,2:6), 'box', 3);
任何人都知道如何在 matlab 中使用掩码进行这种平滑?提前谢谢你。
【问题讨论】:
-
你不能平滑整个数组,然后用原始像素值替换任何被遮盖的东西吗?
-
没有。因为如果邻居中包含
A=0,则中心点的平滑结果是不正确的。 -
在这种情况下,您可能需要编写一个可以处理 NaN 的平滑例程。