1

我正在尝试为 2D 图像制作 2D 蒙版,或者为 nD 数组制作一般的 nD 蒙版。所以我有一个数组,信号位置和信号宽度,例如

mask=ones(10,10);
pks=[[3 4]; [1 5]];
pks=sub2ind(size(mask),pks(:,1),pks(:,2)); % linear indices
xwidth=2; ywidth=3;

我想要的是用 0 填充 pks 周围大小为 +/- x/ywidth 的区域。

mask(aroundpks)=0;

当然,我可以使用 for 循环来做到这一点,但它看起来很尴尬,而且可能很难明确地为 nD 情况下的 for 循环通用。

4

1 回答 1

1
mask0=zeros(10,10);
mask0(pks)=1;
mask0=mask0>0;
mask0=imdilate(mask0, ones(2*ywidth+1, 2*xwidth+1))
mask(mask0)=0;

不确定它是否是最有效的解决方案,但也应与 ND 矩阵一起使用,只需在zeros()andones()函数中添加其他维度的数据

于 2013-10-01T12:41:07.047 回答