0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 function result = attenuateBorders(data,borderSize)
0014
0015 result = data;
0016 dsz = size(data);
0017
0018 if (borderSize * 2 > dsz(1)) borderSize = floor(dsz(1) / 2); end
0019 if (borderSize * 2 > dsz(2)) borderSize = floor(dsz(2) / 2); end
0020 if (borderSize < 1) return; end
0021
0022 bs = [1:borderSize];
0023 coeffs = bs / (borderSize + 1);
0024
0025
0026 rec = repmat(coeffs',1,dsz(2));
0027 result(bs,:) = result(bs,:) .* rec;
0028 range = dsz(1) - bs + 1;
0029 result(range,:) = result(range,:) .* rec;
0030
0031
0032 rec = repmat(coeffs,dsz(1),1);
0033 result(:,bs) = result(:,bs) .* rec;
0034 range = dsz(2) - bs + 1;
0035 result(:,range) = result(:,range) .* rec;