cc [ flag... ] file... –lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageColorErrorDiffusionMxN(mlib_image *dst, const mlib_image *src, const mlib_s32 *kernel, mlib_s32 m, mlib_s32 n, mlib_s32 dm, mlib_s32 dn, mlib_s32 scale, const void *colormap);
The mlib_ImageColorErrorDiffusionMxN() function converts a 3-channel image to a 1-channel indexed image, or converts a 1-channel grayscale image to a 1-channel MLIB_BIT image, with the method of error diffusion.
The src can be an MLIB_BYTE image with 1 or 3 channels. The dst must be a 1-channel MLIB_BIT or MLIB_BYTE image.
The colormap must be created by mlib_ImageColorDitherInit(). It may or may not have a colorcube included. If it does, the colorcube is used. Otherwise, the general lookup table included in colormap is used.
The kernel is required to have the following property:
kernel[0] = kernel[1] = ... = kernel[m*dn+dm] = 0; kernel[m*dn+dm+1] + ... + kernel[m*n-1] = 2**scale; scale ≥ 0
The function takes the following arguments:
Pointer to destination image.
Pointer to source image.
Pointer to the error-distribution kernel, in row major order.
Kernel width. m > 1.
Kernel height. n > 1.
X coordinate of the key element in the kernel. 0 ≤ dm < m.
Y coordinate of the key element in the kernel. 0 ≤ dn < n.
The scaling factor for kernel to convert the input integer coefficients into floating-point coefficients:
floating-point coefficient = integer coefficient * \ 2**(-scale)
Internal data structure for image dithering.
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
|
mlib_ImageColorDitherInit(3MLIB), mlib_ImageColorDitherFree(3MLIB), mlib_ImageColorErrorDiffusion3x3(3MLIB), mlib_ImageColorOrderedDither8x8(3MLIB), mlib_ImageColorOrderedDitherMxN(3MLIB), attributes(5)