# HG changeset patch # User Avinoam # Date 1485148671 -7200 # Mon Jan 23 07:17:51 2017 +0200 # Node ID 05076532aabe94860de3bd0fe7289137c3043715 # Parent 6cd0d6b5cc1e788c9f7d89cb9e0f2a2fe726868a rangefilt: add padding to domain image, if needed (bug#45088) *rangefilt.m: adding domain padding & some BISTs diff -r 6cd0d6b5cc1e -r 05076532aabe inst/rangefilt.m --- a/inst/rangefilt.m Sun Nov 13 12:23:11 2016 +0000 +++ b/inst/rangefilt.m Mon Jan 23 07:17:51 2017 +0200 @@ -54,6 +54,13 @@ endif domain = logical (domain); + ## Pad domain, if needed + if (ndims(I) > ndims(domain)) + v = ones(1,ndims(I)); + v(1:ndims(domain)) = 0; + domain = padarray(domain,v); + endif + ## Pad image pad = floor (size (domain)/2); I = padarray (I, pad, padding, varargin {:}); @@ -65,7 +72,7 @@ I = I (idx {:}); ## Perform filtering - retval = __spatial_filtering__ (I, domain, "range", I, 0); + retval = __spatial_filtering__ (I, domain, "range", zeros(size(I)), 0); endfunction @@ -73,3 +80,20 @@ %! im = rangefilt (ones (5)); %! assert (im, zeros (5)); +%!test +%! I = ones(10,10,3); +%! J = rangefilt(I); +%! assert (J, zeros (10,10,3)); + +%!test +%! X=[0 1 0;0 0 2;0 0 0]; +%! Y=rangefilt(X); +%! assert (Y, [1 2 2; 1 2 2; 0 2 2]); + +%!test +%! R = [1:5] .* ones(5,1); +%! I = cat(3, R, R+1, R*2); +%! J = rangefilt(I); +%! R1 = [1 2 2 2 1] .* ones(5,1); +%! J1 = cat (3, R1, R1, 2*R1); +%! assert (J,J1);