## 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. The default value is enclosed in
braces (`{}`

).

Value | Description |

`'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 `A` _{ij} 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`

.

## Examples

Calculate the local mean using a `[2 2]`

neighborhood
with zero padding:

A = reshape(linspace(0,1,16),[4 4])'
B = im2col(A,[2 2])
M = mean(B)
newA = col2im(M,[1 1],[3 3])

The output appears like this:

newA =
0.1667 0.2333 0.3000
0.4333 0.5000 0.5667
0.7000 0.7667 0.8333