idamnjanovic@60: %IM2COLSTEP Rearrange matrix blocks into columns. idamnjanovic@60: % B = IM2COLSTEP(A,[N1 N2]) converts each sliding N1-by-N2 block of the idamnjanovic@60: % 2-D matrix A into a column of B, with no zero padding. B has N1*N2 rows idamnjanovic@60: % and will contain as many columns as there are N1-by-N2 neighborhoods in idamnjanovic@60: % A. Each column of B contains a neighborhood of A reshaped as NHOOD(:), idamnjanovic@60: % where NHOOD is a matrix containing an N1-by-N2 neighborhood of A. idamnjanovic@60: % idamnjanovic@60: % B = IM2COLSTEP(A,[N1 N2],[S1 S2]) extracts neighborhoods of A with a idamnjanovic@60: % step size of (S1,S2) between them. The first extracted neighborhood is idamnjanovic@60: % A(1:N1,1:N2), and the rest are of the form A((1:N1)+i*S1,(1:N2)+j*S2). idamnjanovic@60: % Note that to ensure coverage of all A by neighborhoods, idamnjanovic@60: % (size(A,i)-Ni)/Si must be whole for i=1,2. The default function behavior idamnjanovic@60: % corresponds to [S1 S2] = [1 1]. Setting S1>=N1 and S2>=N2 results in no idamnjanovic@60: % overlap between the neighborhoods. idamnjanovic@60: % idamnjanovic@60: % B = IM2COLSTEP(A,[N1 N2 N3],[S1 S2 S3]) operates on a 3-D matrix A. The idamnjanovic@60: % step size [S1 S2 S3] may be ommitted, and defaults to [1 1 1]. idamnjanovic@60: % idamnjanovic@60: % Note: the call IM2COLSTEP(A,[N1 N2]) produces the same output as idamnjanovic@60: % Matlab's IM2COL(A,[N1 N2],'sliding'). However, it is significantly idamnjanovic@60: % faster. idamnjanovic@60: % idamnjanovic@60: % See also COL2IMSTEP, IM2COL, COUNTCOVER. idamnjanovic@60: idamnjanovic@60: idamnjanovic@60: % Ron Rubinstein idamnjanovic@60: % Computer Science Department idamnjanovic@60: % Technion, Haifa 32000 Israel idamnjanovic@60: % ronrubin@cs idamnjanovic@60: % idamnjanovic@60: % August 2009