## Documentation Center |

Pack binary image

`BWP = bwpack(BW)`

`BWP = bwpack(BW)` packs the `uint8` binary
image `BW` into the `uint32` array `BWP`,
which is known as a *packed binary image*. Because
each 8-bit pixel value in the binary image has only two possible values, `1` and `0`, `bwpack` can
map each pixel to a single bit in the packed output image.

`bwpack` processes the image pixels by column,
mapping groups of 32 pixels into the bits of a `uint32` value.
The first pixel in the first row corresponds to the least significant
bit of the first `uint32` element of the output array.
The first pixel in the 32nd input row corresponds to the most significant
bit of this same element. The first pixel of the 33rd row corresponds
to the least significant bit of the second output element, and so
on. If `BW` is `M`-by-`N`,
then `BWP` is `ceil(M/32)-by-N`.
This figure illustrates how `bwpack` maps the pixels
in a binary image to the bits in a packed binary image.

Binary image packing is used to accelerate some binary morphological
operations, such as dilation and erosion. If the input to `imdilate` or `imerode` is
a packed binary image, the functions use a specialized routine to
perform the operation faster.

Use `bwunpack` to unpack packed binary images.

`bwpack` supports the generation of efficient,
production-quality C/C++ code from MATLAB. Generated code for this
function uses a precompiled platform-specific shared
library. To see a complete list of toolbox functions that support
code generation, see List of Supported Functions with Usage Notes.

`BW` can be logical or numeric, and it must
be 2-D, real, and nonsparse. `BWP` is of class `uint32`.

Pack, dilate, and unpack a binary image:

BW = imread('text.png'); BWp = bwpack(BW); BWp_dilated = imdilate(BWp,ones(3,3),'ispacked'); BW_dilated = bwunpack(BWp_dilated, size(BW,1));

Was this topic helpful?