如何制作 2D/nD 掩码:信号周围的框



我正在尝试为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 循环来做到这一点,但它看起来很尴尬,并且可能很难使明确的 for 循环通用于 nD 情况。

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

不确定它是否是最有效的解决方案,但也应该与 ND matix 一起使用,只需在zeros()ones()功能中添加有关其他尺寸的数据

最新更新