我试图为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;
我想要的是用pks填充pks周围+/- x / ywidth的区域。
mask(aroundpks)=0;
当然,我可以使用for循环执行此操作,但它看起来很笨拙,并且可能很难为nD情况明确制作for循环。
答案 0 :(得分: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 matixes,只需在zeros()
和ones()
函数中添加其他维度的数据