You are here : matlabImage Processingim2col

im2col() - Image Processing

B = im2col(A,[m n],block_type) rearranges
image blocks into columns. block_type is a string
that can have one of these values. The default value is enclosed in
braces ({}).ValueDescription
'distinct'Rearranges each distinct m-by-n block
in the image A into a column of B. im2col pads A with
0's, 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(:)].
{'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 contains 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)).
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 Examples, 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,[m n],'sliding');
C = reshape(sum(B),mm-m+1,nn-n+1);B = im2col(A,'indexed',...) processes A as
an indexed image, padding with 0's if the class of A is uint8 or uint16,
or 1's if the class of A is double.


Syntax

B = im2col(A,[m n],block_type)B = im2col(A,'indexed',...)


Example

B = im2col(A,[m n],'sliding');
C = reshape(sum(B),mm-m+1,nn-n+1);


Output / Return Value


Limitations


Alternatives / See Also


Reference