Leptonica
1.54
|
#include "allheaders.h"
static void dilateGrayLow | ( | l_uint32 * | datad, |
l_int32 | w, | ||
l_int32 | h, | ||
l_int32 | wpld, | ||
l_uint32 * | datas, | ||
l_int32 | wpls, | ||
l_int32 | size, | ||
l_int32 | direction, | ||
l_uint8 * | buffer, | ||
l_uint8 * | maxarray | ||
) | [static] |
Input: datad, w, h, wpld (8 bpp image) datas, wpls (8 bpp image, of same dimensions) size (full length of SEL; restricted to odd numbers) direction (L_HORIZ or L_VERT) buffer (holds full line or column of src image pixels) maxarray (array of dimension 2*size+1) Return: void
Notes: (1) To eliminate border effects on the actual image, these images are prepared with an additional border of dimensions: leftpix = 0.5 * size rightpix = 1.5 * size toppix = 0.5 * size bottompix = 1.5 * size and we initialize the src border pixels to 0. This allows full processing over the actual image; at the end the border is removed. (2) Uses algorithm of van Herk, Gil and Werman
static void erodeGrayLow | ( | l_uint32 * | datad, |
l_int32 | w, | ||
l_int32 | h, | ||
l_int32 | wpld, | ||
l_uint32 * | datas, | ||
l_int32 | wpls, | ||
l_int32 | size, | ||
l_int32 | direction, | ||
l_uint8 * | buffer, | ||
l_uint8 * | minarray | ||
) | [static] |
Input: datad, w, h, wpld (8 bpp image) datas, wpls (8 bpp image, of same dimensions) size (full length of SEL; restricted to odd numbers) direction (L_HORIZ or L_VERT) buffer (holds full line or column of src image pixels) minarray (array of dimension 2*size+1) Return: void
Notes: (1) See notes in dilateGrayLow()
PIX* pixCloseGray | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
PIX* pixCloseGray3 | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
Input: pixs (8 bpp, not cmapped) hsize (1 or 3) vsize (1 or 3) Return: pixd, or null on error
Notes: (1) Special case for 1x3, 3x1 or 3x3 brick sel (all hits) (2) If hsize = vsize = 1, just returns a copy.
PIX* pixDilateGray | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
PIX* pixDilateGray3 | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
Input: pixs (8 bpp, not cmapped) hsize (1 or 3) vsize (1 or 3) Return: pixd, or null on error
Notes: (1) Special case for 1x3, 3x1 or 3x3 brick sel (all hits) (2) If hsize = vsize = 1, just returns a copy.
static PIX * pixDilateGray3h | ( | PIX * | pixs | ) | [static] |
static PIX * pixDilateGray3v | ( | PIX * | pixs | ) | [static] |
PIX* pixErodeGray | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
PIX* pixErodeGray3 | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
Input: pixs (8 bpp, not cmapped) hsize (1 or 3) vsize (1 or 3) Return: pixd, or null on error
Notes: (1) Special case for 1x3, 3x1 or 3x3 brick sel (all hits) (2) If hsize = vsize = 1, just returns a copy. (3) It would be nice not to add a border, but it is required if we want the same results as from the general case. We add 4 bytes on the left to speed up the copying, and 8 bytes at the right and bottom to allow unrolling of the computation of 8 pixels.
static PIX * pixErodeGray3h | ( | PIX * | pixs | ) | [static] |
static PIX * pixErodeGray3v | ( | PIX * | pixs | ) | [static] |
Input: pixs (8 bpp, not cmapped) Return: pixd, or null on error
Notes: (1) Special case for vertical 1x3 brick Sel; also used as the second step for the 3x3 brick Sel. (2) Surprisingly, this is faster than setting up the lineptrs array and accessing into it; e.g., val4 = GET_DATA_BYTE(lines8[i + 3], j);
PIX* pixOpenGray | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
PIX* pixOpenGray3 | ( | PIX * | pixs, |
l_int32 | hsize, | ||
l_int32 | vsize | ||
) |
Input: pixs (8 bpp, not cmapped) hsize (1 or 3) vsize (1 or 3) Return: pixd, or null on error
Notes: (1) Special case for 1x3, 3x1 or 3x3 brick sel (all hits) (2) If hsize = vsize = 1, just returns a copy. (3) It would be nice not to add a border, but it is required to get the same results as for the general case.