35 #include "allheaders.h"
37 PIX *pixMorphDwa_1(
PIX *pixd,
PIX *pixs, l_int32 operation,
char *selname);
38 PIX *pixFMorphopGen_1(
PIX *pixd,
PIX *pixs, l_int32 operation,
char *selname);
39 l_int32 fmorphopgen_low_1(l_uint32 *datad, l_int32 w,
40 l_int32 h, l_int32 wpld,
41 l_uint32 *datas, l_int32 wpls,
44 static l_int32 NUM_SELS_GENERATED = 58;
45 static char SEL_NAMES[][80] = {
125 pixMorphDwa_1(
PIX *pixd,
130 l_int32 bordercolor, bordersize;
131 PIX *pixt1, *pixt2, *pixt3;
133 PROCNAME(
"pixMorphDwa_1");
136 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, pixd);
137 if (pixGetDepth(pixs) != 1)
138 return (
PIX *)ERROR_PTR(
"pixs must be 1 bpp", procName, pixd);
143 if (bordercolor == 0 && operation == L_MORPH_CLOSE)
147 pixt2 = pixFMorphopGen_1(NULL, pixt1, operation, selname);
185 pixFMorphopGen_1(
PIX *pixd,
190 l_int32 i, index, found, w, h, wpls, wpld, bordercolor, erodeop, borderop;
191 l_uint32 *datad, *datas, *datat;
194 PROCNAME(
"pixFMorphopGen_1");
197 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, pixd);
198 if (pixGetDepth(pixs) != 1)
199 return (
PIX *)ERROR_PTR(
"pixs must be 1 bpp", procName, pixd);
203 if (bordercolor == 1)
209 for (i = 0; i < NUM_SELS_GENERATED; i++) {
210 if (strcmp(selname, SEL_NAMES[i]) == 0) {
217 return (
PIX *)ERROR_PTR(
"sel index not found", procName, pixd);
221 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
225 wpls = pixGetWpl(pixs);
226 wpld = pixGetWpl(pixd);
232 w = pixGetWidth(pixs) - 64;
233 h = pixGetHeight(pixs) - 64;
237 if (operation == L_MORPH_DILATE || operation == L_MORPH_ERODE) {
239 if (operation == L_MORPH_ERODE) {
244 if ((pixt =
pixCopy(NULL, pixs)) == NULL)
245 return (
PIX *)ERROR_PTR(
"pixt not made", procName, pixd);
248 fmorphopgen_low_1(datad, w, h, wpld, datat, wpls, index);
253 fmorphopgen_low_1(datad, w, h, wpld, datas, wpls, index);
258 return (
PIX *)ERROR_PTR(
"pixt not made", procName, pixd);
260 if (operation == L_MORPH_OPEN) {
262 fmorphopgen_low_1(datat, w, h, wpls, datas, wpls, index+1);
264 fmorphopgen_low_1(datad, w, h, wpld, datat, wpls, index);
268 fmorphopgen_low_1(datat, w, h, wpls, datas, wpls, index);
270 fmorphopgen_low_1(datad, w, h, wpld, datat, wpls, index+1);
l_uint32 getMorphBorderPixelColor(l_int32 type, l_int32 depth)
getMorphBorderPixelColor()
l_uint32 * pixGetData(PIX *pix)
pixGetData()
l_ok pixResizeImageData(PIX *pixd, const PIX *pixs)
pixResizeImageData()
void pixDestroy(PIX **ppix)
pixDestroy()
PIX * pixCopy(PIX *pixd, const PIX *pixs)
pixCopy()
PIX * pixCreateTemplate(const PIX *pixs)
pixCreateTemplate()
PIX * pixAddBorder(PIX *pixs, l_int32 npix, l_uint32 val)
pixAddBorder()
PIX * pixRemoveBorder(PIX *pixs, l_int32 npix)
pixRemoveBorder()
l_ok pixSetOrClearBorder(PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_int32 op)
pixSetOrClearBorder()