The C interface for erode. More...

afError af_erode_B (bool *d_out, unsigned in_ndims, const unsigned *in_dims, const bool *d_in, unsigned nhood_ndims, const unsigned *nhood_dims, const bool *h_nhood, unsigned batch)
 Erode an Image. More...
 
afError af_erode_S (float *d_out, unsigned in_ndims, const unsigned *in_dims, const float *d_in, unsigned nhood_ndims, const unsigned *nhood_dims, const float *h_nhood, unsigned batch)
 Single precision, Image Erosion. More...
 
afError af_erode_D (double *d_out, unsigned in_ndims, const unsigned *in_dims, const double *d_in, unsigned nhood_ndims, const unsigned *nhood_dims, const double *h_nhood, unsigned batch)
 Double precision, Image Erosion. More...
 

Detailed Description

The C interface for erode.

The erosion function is a morphological transformation on an image that requires two inputs. The first is the image to be morphed, and the second is the mask indicating neighborhood that must be white in order to preserve each pixel.

In erode, for each pixel, the mask is centered at the pixel. If each pixel of the mask matches the corresponding pixel on the image, then no change is made. If there is at least one mismatch, then pixels are changed to the background color (black).

Erosion supports n-channel images (ie. 3D matrices). However a tile must be 2D and will be same for all channels. If you wish to use separate masks for channels, you can extract the channel, apply the operation and store the resulting channel back in the array.

Image erosion is useful for making edges more defined.

// Erode an image, 8-neighbor connectivity
array mask8 = constant(1,3, 3);
array img_out = erode(img_in, mask8);
// erode an image, 4-neighbor connectivity
const float h_mask4[] = { 0.0, 1.0, 0.0,
1.0, 1.0, 1.0,
0.0, 1.0, 0.0 };
array mask4 = array(3, 3, h_mask4);
array img_out = erode(img_in, mask4);
Original
Original
Mask (8-neighbor connectivity)
Mask (8-neighbor connectivity)
Intermediate
Intermediate
Result
Result

For further reference, you can look at the wikipedia page: Erosion (morphology)

Function Documentation

afError af_erode_B ( bool *  d_out,
unsigned  in_ndims,
const unsigned *  in_dims,
const bool *  d_in,
unsigned  nhood_ndims,
const unsigned *  nhood_dims,
const bool *  h_nhood,
unsigned  batch 
)

Erode an Image.

Parameters
[out]d_outThe eroded image
[in]in_ndimsNumber of dimension elements in in_dims
[in]in_dimsDimensions of d_in
[in]d_inInput image
[in]nhood_ndimsNumber of dimension elements in nhood_dims
[in]nhood_dimsDimensions of h_nhood
[in]h_nhoodneighborhood patch (on host)
[in]batchNumber of input images (1 or ngfor)
Note
h_nhood must be square and odd (3x3,5x5,7x7,...)Boolean, Image Erosion
afError af_erode_S ( float *  d_out,
unsigned  in_ndims,
const unsigned *  in_dims,
const float *  d_in,
unsigned  nhood_ndims,
const unsigned *  nhood_dims,
const float *  h_nhood,
unsigned  batch 
)

Single precision, Image Erosion.

afError af_erode_D ( double *  d_out,
unsigned  in_ndims,
const unsigned *  in_dims,
const double *  d_in,
unsigned  nhood_ndims,
const unsigned *  nhood_dims,
const double *  h_nhood,
unsigned  batch 
)

Double precision, Image Erosion.