Image Processing Toolbox    
im2col

Rearrange image blocks into columns

Syntax

Description

B = im2col(A,[m n],block_type) rearranges image blocks into columns. block_type is a string that can have one of these values:

B = im2col(A,[m n],'distinct') rearranges each distinct m-by-n block in the
image A into a column of B. im2col pads A with zeros, if necessary, so its size is an integer multiple of m-by-n. If A = [A11 A12;A21 A22], where each Aij is m-by-n, then B = [A11(:) A12(:) A21(:) A22(:)].

B = im2col(A,[m n],'sliding') converts each sliding m-by-n block of A into a column of B, with no zero padding. B has m*n rows and will contain as many columns as there are m-by-n neighborhoods of A. If the size of A is [mm nn], then the size of B is (m*n)-by-((mm-m+1)*(nn-n+1)).

B = im2col(A,[m n]) uses the default block_type of 'sliding'.

For the sliding block case, each column of B contains the neighborhoods of A reshaped as nhood(:) where nhood is a matrix containing an m-by-n neighborhood of A. im2col orders the columns of B so that they can be reshaped to form a matrix in the normal way. For example, suppose you use a function, such as sum(B), that returns a scalar for each column of B. You can directly store the result in a matrix of size (mm-m+1)-by-(nn-n+1), using these calls.

B = im2col(A,'indexed',...) processes A as an indexed image, padding with zeros if the class of A is uint8, or ones if the class of A is double.

Class Support

The input image, A, can be numeric or logical. The output matrix, B, is of the same class as the input image.

See Also

blkproc, col2im, colfilt, nlfilter


  im2bw im2double