cc [ flag... ] file... –lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageGradient3x3(mlib_image *dst, const mlib_image *src, const mlib_d64 *hmask, const mlib_d64 *vmask, mlib_s32 cmask, mlib_edge edge);
The mlib_ImageGradient3x3() function performs edge detection by computing the magnitude of the image gradient vector in two orthogonal directions using 3x3 gradient filtering.
It uses the following equation:
dst[x][y][i] = ( SH(x,y,i)**2 + SV(x,y,i)**2 )**0.5
where SH() and SV() are the horizontal and vertical gradient images generated from the corresponding channel of the source image by correlating it with the supplied orthogonal (horizontal and vertical) gradient masks.
The function takes the following arguments:
Pointer to destination image.
Pointer to source image.
Pointer to horizontal mask in row-major order.
Pointer to vertical mask in row-major order.
Channel mask to indicate the channels to be convolved, each bit of which represents a channel in the image. The channels corresponding to 1 bits are those to be processed. For a single channel image, the channel mask is ignored.
Type of edge condition. It can be one of the following:
MLIB_EDGE_DST_NO_WRITE MLIB_EDGE_DS_FILL_ZERO MLIB_EDGE_DST_COPY_SRC MLIB_EDGE_SR_EXTEND
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes: