87 #include <config_auto.h> 90 #include "allheaders.h" 92 #define SWAP(x, y) {temp = (x); (x) = (y); (y) = temp;} 116 PROCNAME(
"pixExtractBoundary");
119 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
153 const char *sequence,
158 PROCNAME(
"pixMorphSequenceMasked");
161 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
163 return (
PIX *)ERROR_PTR(
"sequence not defined", procName, NULL);
199 const char *sequence,
200 l_int32 connectivity,
205 l_int32 n, i, x, y, w, h;
210 PROCNAME(
"pixMorphSequenceByComponent");
213 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
215 return (
PIX *)ERROR_PTR(
"sequence not defined", procName, NULL);
217 if (minw <= 0) minw = 1;
218 if (minh <= 0) minh = 1;
221 if ((boxa =
pixConnComp(pixs, &pixas, connectivity)) == NULL)
222 return (
PIX *)ERROR_PTR(
"boxa not made", procName, NULL);
229 return (
PIX *)ERROR_PTR(
"pixad not made", procName, NULL);
234 for (i = 0; i < n; i++) {
269 const char *sequence,
273 l_int32 n, i, w, h, d;
278 PROCNAME(
"pixaMorphSequenceByComponent");
281 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
283 return (
PIXA *)ERROR_PTR(
"no pix in pixas", procName, NULL);
285 L_WARNING(
"boxa size != n\n", procName);
288 return (
PIXA *)ERROR_PTR(
"depth not 1 bpp", procName, NULL);
291 return (
PIXA *)ERROR_PTR(
"sequence not defined", procName, NULL);
292 if (minw <= 0) minw = 1;
293 if (minh <= 0) minh = 1;
296 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
297 for (i = 0; i < n; i++) {
299 if (w >= minw && h >= minh) {
302 return (
PIXA *)ERROR_PTR(
"pix1 not found", procName, NULL);
306 return (
PIXA *)ERROR_PTR(
"pix2 not made", procName, NULL);
353 const char *sequence,
354 l_int32 connectivity,
359 l_int32 n, i, x, y, w, h;
364 PROCNAME(
"pixMorphSequenceByRegion");
366 if (pboxa) *pboxa = NULL;
368 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
370 return (
PIX *)ERROR_PTR(
"pixm not defined", procName, NULL);
371 if (pixGetDepth(pixs) != 1 || pixGetDepth(pixm) != 1)
372 return (
PIX *)ERROR_PTR(
"pixs and pixm not both 1 bpp", procName, NULL);
374 return (
PIX *)ERROR_PTR(
"sequence not defined", procName, NULL);
376 if (minw <= 0) minw = 1;
377 if (minh <= 0) minh = 1;
380 if ((boxa =
pixConnComp(pixm, &pixam, connectivity)) == NULL)
381 return (
PIX *)ERROR_PTR(
"boxa not made", procName, NULL);
388 return (
PIX *)ERROR_PTR(
"pixad not made", procName, NULL);
393 for (i = 0; i < n; i++) {
432 const char *sequence,
436 l_int32 n, i, w, h, same, maxd, fullpa, fullba;
438 PIX *pix1, *pix2, *pix3;
441 PROCNAME(
"pixaMorphSequenceByRegion");
444 return (
PIXA *)ERROR_PTR(
"pixs not defined", procName, NULL);
445 if (pixGetDepth(pixs) != 1)
446 return (
PIXA *)ERROR_PTR(
"pixs not 1 bpp", procName, NULL);
448 return (
PIXA *)ERROR_PTR(
"sequence not defined", procName, NULL);
450 return (
PIXA *)ERROR_PTR(
"pixam not defined", procName, NULL);
453 return (
PIXA *)ERROR_PTR(
"mask depth not 1 bpp", procName, NULL);
455 if (!fullpa || !fullba)
456 return (
PIXA *)ERROR_PTR(
"missing comps in pixam", procName, NULL);
458 if (minw <= 0) minw = 1;
459 if (minh <= 0) minh = 1;
462 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
467 for (i = 0; i < n; i++) {
469 if (w >= minw && h >= minh) {
480 L_ERROR(
"pix3 not made in iter %d; aborting\n", procName, i);
513 PROCNAME(
"pixUnionOfMorphOps");
515 if (!pixs || pixGetDepth(pixs) != 1)
516 return (
PIX *)ERROR_PTR(
"pixs undefined or not 1 bpp", procName, NULL);
518 return (
PIX *)ERROR_PTR(
"sela not defined", procName, NULL);
521 return (
PIX *)ERROR_PTR(
"no sels in sela", procName, NULL);
522 if (type != L_MORPH_DILATE && type != L_MORPH_ERODE &&
523 type != L_MORPH_OPEN && type != L_MORPH_CLOSE &&
525 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
528 for (i = 0; i < n; i++) {
530 if (type == L_MORPH_DILATE)
532 else if (type == L_MORPH_ERODE)
534 else if (type == L_MORPH_OPEN)
535 pixt =
pixOpen(NULL, pixs, sel);
536 else if (type == L_MORPH_CLOSE)
539 pixt =
pixHMT(NULL, pixs, sel);
540 pixOr(pixd, pixd, pixt);
566 PROCNAME(
"pixIntersectionOfMorphOps");
568 if (!pixs || pixGetDepth(pixs) != 1)
569 return (
PIX *)ERROR_PTR(
"pixs undefined or not 1 bpp", procName, NULL);
571 return (
PIX *)ERROR_PTR(
"sela not defined", procName, NULL);
574 return (
PIX *)ERROR_PTR(
"no sels in sela", procName, NULL);
575 if (type != L_MORPH_DILATE && type != L_MORPH_ERODE &&
576 type != L_MORPH_OPEN && type != L_MORPH_CLOSE &&
578 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
582 for (i = 0; i < n; i++) {
584 if (type == L_MORPH_DILATE)
586 else if (type == L_MORPH_ERODE)
588 else if (type == L_MORPH_OPEN)
589 pixt =
pixOpen(NULL, pixs, sel);
590 else if (type == L_MORPH_CLOSE)
593 pixt =
pixHMT(NULL, pixs, sel);
617 l_int32 connectivity,
621 l_int32 n, i, x, y, w, h;
623 PIX *pix1, *pix2, *pixd;
626 PROCNAME(
"pixSelectiveConnCompFill");
629 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
630 if (pixGetDepth(pixs) != 1)
631 return (
PIX *)ERROR_PTR(
"pixs not 1 bpp", procName, NULL);
632 if (minw <= 0) minw = 1;
633 if (minh <= 0) minh = 1;
635 if ((boxa =
pixConnComp(pixs, &pixa, connectivity)) == NULL)
636 return (
PIX *)ERROR_PTR(
"boxa not made", procName, NULL);
639 for (i = 0; i < n; i++) {
641 if (w >= minw && h >= minh) {
644 L_ERROR(
"pix2 not made in iter %d\n", procName, i);
694 l_int32 i, nc, x, y, w, h, xb, yb;
701 PROCNAME(
"pixRemoveMatchedPattern");
704 return ERROR_INT(
"pixs not defined", procName, 1);
706 return ERROR_INT(
"pixp not defined", procName, 1);
708 return ERROR_INT(
"pixe not defined", procName, 1);
709 if (pixGetDepth(pixs) != 1 || pixGetDepth(pixp) != 1 ||
710 pixGetDepth(pixe) != 1)
711 return ERROR_INT(
"all input pix not 1 bpp", procName, 1);
712 if (dsize < 0 || dsize > 4)
713 return ERROR_INT(
"dsize not in {0,1,2,3,4}", procName, 1);
718 L_WARNING(
"no matched patterns\n", procName);
748 for (i = 0; i < nc; i++) {
751 pixRasterop(pixs, xb + x - x0 - dsize, yb + y - y0 - dsize,
801 l_int32 i, nc, xb, yb, x, y, xi, yi, rval, gval, bval;
803 PIX *pixd, *pixt, *pixps;
808 PROCNAME(
"pixDisplayMatchedPattern");
811 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
813 return (
PIX *)ERROR_PTR(
"pixp not defined", procName, NULL);
815 return (
PIX *)ERROR_PTR(
"pixe not defined", procName, NULL);
816 if (pixGetDepth(pixs) != 1 || pixGetDepth(pixp) != 1 ||
817 pixGetDepth(pixe) != 1)
818 return (
PIX *)ERROR_PTR(
"all input pix not 1 bpp", procName, NULL);
819 if (scale > 1.0 || scale <= 0.0) {
820 L_WARNING(
"scale > 1.0 or < 0.0; setting to 1.0\n", procName);
827 L_WARNING(
"no matched patterns\n", procName);
849 for (i = 0; i < nc; i++) {
860 for (i = 0; i < nc; i++) {
863 xi = (l_int32)(scale * (xb + x - x0));
864 yi = (l_int32)(scale * (yb + y - y0));
910 l_int32 maxdepth, i, j, n;
911 PIX *pix0, *pix1, *pix2;
915 PROCNAME(
"pixaExtendByMorph");
918 return (
PIXA *)ERROR_PTR(
"pixas undefined", procName, NULL);
920 L_INFO(
"niters = %d; nothing to do\n", procName, niters);
923 if (type != L_MORPH_DILATE && type != L_MORPH_ERODE)
924 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
927 return (
PIXA *)ERROR_PTR(
"some pix have bpp > 1", procName, NULL);
935 for (i = 0; i < n; i++) {
939 for (j = 0; j < niters; j++) {
940 if (type == L_MORPH_DILATE) {
981 l_int32 i, j, n, nsc, w, h, scalew, scaleh;
986 PROCNAME(
"pixaExtendByScaling");
989 return (
PIXA *)ERROR_PTR(
"pixas undefined", procName, NULL);
991 return (
PIXA *)ERROR_PTR(
"nasc undefined or empty", procName, NULL);
992 if (type != L_HORIZ && type != L_VERT && type != L_BOTH_DIRECTIONS)
993 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
997 if ((pixad =
pixaCreate(n * (nsc + 1))) == NULL) {
998 L_ERROR(
"pixad not made: n = %d, nsc = %d\n", procName, n, nsc);
1001 for (i = 0; i < n; i++) {
1005 for (j = 0; j < nsc; j++) {
1009 if (type == L_HORIZ || type == L_BOTH_DIRECTIONS)
1010 scalew = w * scalefact;
1011 if (type == L_VERT || type == L_BOTH_DIRECTIONS)
1012 scaleh = h * scalefact;
1047 l_int32 connectivity)
1050 PIX *pixt, *pixd, *temp;
1053 PROCNAME(
"pixSeedfillMorph");
1055 if (!pixs || pixGetDepth(pixs) != 1)
1056 return (
PIX *)ERROR_PTR(
"pixs undefined or not 1 bpp", procName, NULL);
1058 return (
PIX *)ERROR_PTR(
"mask pix not defined", procName, NULL);
1059 if (connectivity != 4 && connectivity != 8)
1060 return (
PIX *)ERROR_PTR(
"connectivity not in {4,8}", procName, NULL);
1061 if (maxiters <= 0) maxiters = 1000;
1063 return (
PIX *)ERROR_PTR(
"pix sizes unequal", procName, NULL);
1066 return (
PIX *)ERROR_PTR(
"sel_3 not made", procName, NULL);
1067 if (connectivity == 4) {
1076 for (i = 1; i <= maxiters; i++) {
1078 pixAnd(pixd, pixd, pixm);
1080 if (same || i == maxiters)
1085 lept_stderr(
" Num iters in binary reconstruction = %d\n", i);
1111 l_int32 count, i, size;
1114 PIX *pix1, *pix2, *pix3;
1117 PROCNAME(
"pixRunHistogramMorph");
1120 return (
NUMA *)ERROR_PTR(
"seed pix not defined", procName, NULL);
1121 if (runtype != L_RUN_OFF && runtype != L_RUN_ON)
1122 return (
NUMA *)ERROR_PTR(
"invalid run type", procName, NULL);
1123 if (direction != L_HORIZ && direction != L_VERT)
1124 return (
NUMA *)ERROR_PTR(
"direction not in {L_HORIZ, L_VERT}",
1126 if (pixGetDepth(pixs) != 1)
1127 return (
NUMA *)ERROR_PTR(
"pixs must be binary", procName, NULL);
1129 if (direction == L_HORIZ)
1134 return (
NUMA *)ERROR_PTR(
"sel_2a not made", procName, NULL);
1136 if (runtype == L_RUN_OFF) {
1137 if ((pix1 =
pixCopy(NULL, pixs)) == NULL) {
1139 return (
NUMA *)ERROR_PTR(
"pix1 not made", procName, NULL);
1155 for (i = 0; i < maxsize / 2; i++) {
1168 for (i = 1; i < size - 1; i++) {
1213 PROCNAME(
"pixTophat");
1216 return (
PIX *)ERROR_PTR(
"seed pix not defined", procName, NULL);
1217 if (pixGetDepth(pixs) != 8)
1218 return (
PIX *)ERROR_PTR(
"pixs not 8 bpp", procName, NULL);
1219 if (hsize < 1 || vsize < 1)
1220 return (
PIX *)ERROR_PTR(
"hsize or vsize < 1", procName, NULL);
1221 if ((hsize & 1) == 0 ) {
1222 L_WARNING(
"horiz sel size must be odd; increasing by 1\n", procName);
1225 if ((vsize & 1) == 0 ) {
1226 L_WARNING(
"vert sel size must be odd; increasing by 1\n", procName);
1229 if (type != L_TOPHAT_WHITE && type != L_TOPHAT_BLACK)
1230 return (
PIX *)ERROR_PTR(
"type must be L_TOPHAT_BLACK or L_TOPHAT_WHITE",
1233 if (hsize == 1 && vsize == 1)
1238 case L_TOPHAT_WHITE:
1239 if ((pixt =
pixOpenGray(pixs, hsize, vsize)) == NULL)
1240 return (
PIX *)ERROR_PTR(
"pixt not made", procName, NULL);
1244 case L_TOPHAT_BLACK:
1246 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
1250 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
1308 l_int32 connectivity)
1312 PROCNAME(
"pixHDome");
1315 return (
PIX *)ERROR_PTR(
"src pix not defined", procName, NULL);
1316 if (pixGetDepth(pixs) != 8)
1317 return (
PIX *)ERROR_PTR(
"pixs not 8 bpp", procName, NULL);
1319 return (
PIX *)ERROR_PTR(
"height not >= 0", procName, NULL);
1323 if ((pixsd =
pixCopy(NULL, pixs)) == NULL)
1324 return (
PIX *)ERROR_PTR(
"pixsd not made", procName, NULL);
1367 PIX *pix1, *pix2, *pix3, *pixd;
1369 PROCNAME(
"pixFastTophat");
1372 return (
PIX *)ERROR_PTR(
"seed pix not defined", procName, NULL);
1373 if (pixGetDepth(pixs) != 8)
1374 return (
PIX *)ERROR_PTR(
"pixs not 8 bpp", procName, NULL);
1375 if (xsize < 1 || ysize < 1)
1376 return (
PIX *)ERROR_PTR(
"size < 1", procName, NULL);
1377 if (type != L_TOPHAT_WHITE && type != L_TOPHAT_BLACK)
1378 return (
PIX *)ERROR_PTR(
"type must be L_TOPHAT_BLACK or L_TOPHAT_WHITE",
1381 if (xsize == 1 && ysize == 1)
1386 case L_TOPHAT_WHITE:
1389 return (
PIX *)ERROR_PTR(
"pix1 not made", procName, NULL);
1395 case L_TOPHAT_BLACK:
1398 return (
PIX *)ERROR_PTR(
"pix1 not made", procName, NULL);
1404 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
1431 PROCNAME(
"pixMorphGradient");
1434 return (
PIX *)ERROR_PTR(
"seed pix not defined", procName, NULL);
1435 if (pixGetDepth(pixs) != 8)
1436 return (
PIX *)ERROR_PTR(
"pixs not 8 bpp", procName, NULL);
1437 if (hsize < 1 || vsize < 1)
1438 return (
PIX *)ERROR_PTR(
"hsize or vsize < 1", procName, NULL);
1439 if ((hsize & 1) == 0 ) {
1440 L_WARNING(
"horiz sel size must be odd; increasing by 1\n", procName);
1443 if ((vsize & 1) == 0 ) {
1444 L_WARNING(
"vert sel size must be odd; increasing by 1\n", procName);
1481 l_int32 *centtab = NULL;
1482 l_int32 *sumtab = NULL;
1487 PROCNAME(
"pixaCentroids");
1490 return (
PTA *)ERROR_PTR(
"pixa not defined", procName, NULL);
1492 return (
PTA *)ERROR_PTR(
"no pix in pixa", procName, NULL);
1495 return (
PTA *)ERROR_PTR(
"pta not defined", procName, NULL);
1499 for (i = 0; i < n; i++) {
1501 if (
pixCentroid(pix, centtab, sumtab, &x, &y) == 1)
1502 L_ERROR(
"centroid failure for pix %d\n", procName, i);
1539 l_int32 w, h, d, i, j, wpl, pixsum, rowsum, val;
1540 l_float32 xsum, ysum;
1541 l_uint32 *
data, *line;
1544 l_int32 *ctab, *stab;
1546 PROCNAME(
"pixCentroid");
1548 if (!pxave || !pyave)
1549 return ERROR_INT(
"&pxave and &pyave not defined", procName, 1);
1550 *pxave = *pyave = 0.0;
1552 return ERROR_INT(
"pix not defined", procName, 1);
1554 if (d != 1 && d != 8)
1555 return ERROR_INT(
"pix not 1 or 8 bpp", procName, 1);
1568 wpl = pixGetWpl(pix);
1572 for (i = 0; i < h; i++) {
1587 line =
data + wpl * i;
1589 for (j = 0; j < wpl; j++) {
1593 rowsum += stab[byte];
1594 xsum += ctab[byte] + (j * 32 + 24) * stab[
byte];
1595 byte = (word >> 8) & 0xff;
1596 rowsum += stab[byte];
1597 xsum += ctab[byte] + (j * 32 + 16) * stab[
byte];
1598 byte = (word >> 16) & 0xff;
1599 rowsum += stab[byte];
1600 xsum += ctab[byte] + (j * 32 + 8) * stab[
byte];
1601 byte = (word >> 24) & 0xff;
1602 rowsum += stab[byte];
1603 xsum += ctab[byte] + j * 32 * stab[byte];
1610 L_WARNING(
"no ON pixels in pix\n", procName);
1612 *pxave = xsum / (l_float32)pixsum;
1613 *pyave = ysum / (l_float32)pixsum;
1616 for (i = 0; i < h; i++) {
1617 line =
data + wpl * i;
1618 for (j = 0; j < w; j++) {
1626 L_WARNING(
"all pixels are 0\n", procName);
1628 *pxave = xsum / (l_float32)pixsum;
1629 *pyave = ysum / (l_float32)pixsum;
1633 if (!centtab) LEPT_FREE(ctab);
1634 if (!sumtab) LEPT_FREE(stab);
l_ok numaGetFValue(NUMA *na, l_int32 index, l_float32 *pval)
numaGetFValue()
PIX * pixHolesByFilling(PIX *pixs, l_int32 connectivity)
pixHolesByFilling()
PIX * pixScaleToGray(PIX *pixs, l_float32 scalefactor)
pixScaleToGray()
l_ok pixCentroid(PIX *pix, l_int32 *centtab, l_int32 *sumtab, l_float32 *pxave, l_float32 *pyave)
pixCentroid()
PIX * pixDilateGray(PIX *pixs, l_int32 hsize, l_int32 vsize)
pixDilateGray()
PIXA * pixaExtendByMorph(PIXA *pixas, l_int32 type, l_int32 niters, SEL *sel, l_int32 include)
pixaExtendByMorph()
l_int32 * makePixelCentroidTab8(void)
makePixelCentroidTab8()
PIX * pixCreateTemplate(const PIX *pixs)
pixCreateTemplate()
SEL * selCopy(SEL *sel)
selCopy()
l_ok pixaVerifyDepth(PIXA *pixa, l_int32 *psame, l_int32 *pmaxd)
pixaVerifyDepth()
l_ok ptaAddPt(PTA *pta, l_float32 x, l_float32 y)
ptaAddPt()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
PTA * pixaCentroids(PIXA *pixa)
pixaCentroids()
PIX * pixScaleGrayMinMax(PIX *pixs, l_int32 xfact, l_int32 yfact, l_int32 type)
pixScaleGrayMinMax()
PIXA * pixaCreate(l_int32 n)
pixaCreate()
PIX * pixOpen(PIX *pixd, PIX *pixs, SEL *sel)
pixOpen()
PIX * pixCloseGray(PIX *pixs, l_int32 hsize, l_int32 vsize)
pixCloseGray()
PIX * pixConvert1To4(PIX *pixd, PIX *pixs, l_int32 val0, l_int32 val1)
pixConvert1To4()
PIX * pixMorphSequenceMasked(PIX *pixs, PIX *pixm, const char *sequence, l_int32 dispsep)
pixMorphSequenceMasked()
l_ok pixRasterop(PIX *pixd, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op, PIX *pixs, l_int32 sx, l_int32 sy)
pixRasterop()
PTA * ptaCreate(l_int32 n)
ptaCreate()
PIX * pixUnionOfMorphOps(PIX *pixs, SELA *sela, l_int32 type)
pixUnionOfMorphOps()
PIX * pixCopy(PIX *pixd, const PIX *pixs)
pixCopy()
void lept_stderr(const char *fmt,...)
lept_stderr()
PIX * pixDilateBrick(PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize)
pixDilateBrick()
l_int32 selaGetCount(SELA *sela)
selaGetCount()
PIX * pixTophat(PIX *pixs, l_int32 hsize, l_int32 vsize, l_int32 type)
pixTophat()
PIXA * pixaMorphSequenceByRegion(PIX *pixs, PIXA *pixam, const char *sequence, l_int32 minw, l_int32 minh)
pixaMorphSequenceByRegion()
l_ok pixSetAll(PIX *pix)
pixSetAll()
PIX * pixInvert(PIX *pixd, PIX *pixs)
pixInvert()
NUMA * numaCreate(l_int32 n)
numaCreate()
l_ok pixaGetDepthInfo(PIXA *pixa, l_int32 *pmaxdepth, l_int32 *psame)
pixaGetDepthInfo()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
l_uint32 * pixGetData(PIX *pix)
pixGetData()
BOX * pixaGetBox(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetBox()
PIX * pixScaleBySampling(PIX *pixs, l_float32 scalex, l_float32 scaley)
pixScaleBySampling()
PIX * pixClipRectangle(PIX *pixs, BOX *box, BOX **pboxc)
pixClipRectangle()
l_int32 pixaGetBoxaCount(PIXA *pixa)
pixaGetBoxaCount()
PIX * pixIntersectionOfMorphOps(PIX *pixs, SELA *sela, l_int32 type)
pixIntersectionOfMorphOps()
l_ok pixRemoveMatchedPattern(PIX *pixs, PIX *pixp, PIX *pixe, l_int32 x0, l_int32 y0, l_int32 dsize)
pixRemoveMatchedPattern()
l_ok pixSetColormap(PIX *pix, PIXCMAP *colormap)
pixSetColormap()
PIX * pixAddBorder(PIX *pixs, l_int32 npix, l_uint32 val)
pixAddBorder()
PIX * pixErode(PIX *pixd, PIX *pixs, SEL *sel)
pixErode()
PIXCMAP * pixcmapCreate(l_int32 depth)
pixcmapCreate()
PIX * pixMorphGradient(PIX *pixs, l_int32 hsize, l_int32 vsize, l_int32 smoothing)
pixMorphGradient()
l_ok pixCombineMasked(PIX *pixd, PIX *pixs, PIX *pixm)
pixCombineMasked()
PIXA * pixaCopy(PIXA *pixa, l_int32 copyflag)
pixaCopy()
BOXA * pixConnComp(PIX *pixs, PIXA **ppixa, l_int32 connectivity)
pixConnComp()
PIX * pixSubtractGray(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixSubtractGray()
l_ok pixaAddPix(PIXA *pixa, PIX *pix, l_int32 copyflag)
pixaAddPix()
PIX * pixXor(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixXor()
l_int32 numaGetCount(NUMA *na)
numaGetCount()
PIX * pixFastTophat(PIX *pixs, l_int32 xsize, l_int32 ysize, l_int32 type)
pixFastTophat()
PIX * pixSeedfillMorph(PIX *pixs, PIX *pixm, l_int32 maxiters, l_int32 connectivity)
pixSeedfillMorph()
void selDestroy(SEL **psel)
selDestroy()
l_ok boxaGetBoxGeometry(BOXA *boxa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxaGetBoxGeometry()
PIX * pixAnd(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixAnd()
PIX * pixMorphSequence(PIX *pixs, const char *sequence, l_int32 dispsep)
pixMorphSequence()
l_ok pixCountPixels(PIX *pixs, l_int32 *pcount, l_int32 *tab8)
pixCountPixels()
l_int32 * makePixelSumTab8(void)
makePixelSumTab8()
l_ok pixSetPadBits(PIX *pix, l_int32 val)
pixSetPadBits()
NUMA * pixRunHistogramMorph(PIX *pixs, l_int32 runtype, l_int32 direction, l_int32 maxsize)
pixRunHistogramMorph()
PIX * pixMorphSequenceByRegion(PIX *pixs, PIX *pixm, const char *sequence, l_int32 connectivity, l_int32 minw, l_int32 minh, BOXA **pboxa)
pixMorphSequenceByRegion()
SEL * selCreateBrick(l_int32 h, l_int32 w, l_int32 cy, l_int32 cx, l_int32 type)
selCreateBrick()
l_ok pixSetMaskedCmap(PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetMaskedCmap()
#define GET_DATA_BYTE(pdata, n)
PIX * pixSelectiveConnCompFill(PIX *pixs, l_int32 connectivity, l_int32 minw, l_int32 minh)
pixSelectiveConnCompFill()
l_ok pixaGetBoxGeometry(PIXA *pixa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
pixaGetBoxGeometry()
PIX * pixClone(PIX *pixs)
pixClone()
PIX * pixScaleToSize(PIX *pixs, l_int32 wd, l_int32 hd)
pixScaleToSize()
PIX * pixBlockconvGray(PIX *pixs, PIX *pixacc, l_int32 wc, l_int32 hc)
pixBlockconvGray()
void pixDestroy(PIX **ppix)
pixDestroy()
void numaDestroy(NUMA **pna)
numaDestroy()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
PIX * pixOr(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixOr()
l_ok pixSeedfillGray(PIX *pixs, PIX *pixm, l_int32 connectivity)
pixSeedfillGray()
PIX * pixDisplayMatchedPattern(PIX *pixs, PIX *pixp, PIX *pixe, l_int32 x0, l_int32 y0, l_uint32 color, l_float32 scale, l_int32 nlevels)
pixDisplayMatchedPattern()
l_ok pixaIsFull(PIXA *pixa, l_int32 *pfullpa, l_int32 *pfullba)
pixaIsFull()
PIXA * pixaMorphSequenceByComponent(PIXA *pixas, const char *sequence, l_int32 minw, l_int32 minh)
pixaMorphSequenceByComponent()
PIX * pixThresholdTo4bpp(PIX *pixs, l_int32 nlevels, l_int32 cmapflag)
pixThresholdTo4bpp()
PIX * pixMorphSequenceByComponent(PIX *pixs, const char *sequence, l_int32 connectivity, l_int32 minw, l_int32 minh, BOXA **pboxa)
pixMorphSequenceByComponent()
PIX * pixHMT(PIX *pixd, PIX *pixs, SEL *sel)
pixHMT()
PIX * pixaGetPix(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetPix()
PIX * pixHDome(PIX *pixs, l_int32 height, l_int32 connectivity)
pixHDome()
PIX * pixClose(PIX *pixd, PIX *pixs, SEL *sel)
pixClose()
PIX * pixExtractBoundary(PIX *pixs, l_int32 type)
pixExtractBoundary()
void ptaDestroy(PTA **ppta)
ptaDestroy()
l_ok pixaGetPixDimensions(PIXA *pixa, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixaGetPixDimensions()
void boxDestroy(BOX **pbox)
boxDestroy()
l_ok pixEqual(PIX *pix1, PIX *pix2, l_int32 *psame)
pixEqual()
PIX * pixBlockconv(PIX *pix, l_int32 wc, l_int32 hc)
pixBlockconv()
l_int32 boxaGetCount(BOXA *boxa)
boxaGetCount()
l_ok ptaGetIPt(PTA *pta, l_int32 index, l_int32 *px, l_int32 *py)
ptaGetIPt()
PIX * pixDilate(PIX *pixd, PIX *pixs, SEL *sel)
pixDilate()
SEL * selaGetSel(SELA *sela, l_int32 i)
selaGetSel()
PIX * pixErodeBrick(PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize)
pixErodeBrick()
l_int32 pixSizesEqual(const PIX *pix1, const PIX *pix2)
pixSizesEqual()
l_ok pixcmapAddColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval)
pixcmapAddColor()
l_ok pixaAddBox(PIXA *pixa, BOX *box, l_int32 copyflag)
pixaAddBox()
void pixaDestroy(PIXA **ppixa)
pixaDestroy()
void extractRGBValues(l_uint32 pixel, l_int32 *prval, l_int32 *pgval, l_int32 *pbval)
extractRGBValues()
PIX * pixOpenGray(PIX *pixs, l_int32 hsize, l_int32 vsize)
pixOpenGray()
l_int32 pixaGetCount(PIXA *pixa)
pixaGetCount()
l_ok selSetElement(SEL *sel, l_int32 row, l_int32 col, l_int32 type)
selSetElement()
l_ok pixAddConstantGray(PIX *pixs, l_int32 val)
pixAddConstantGray()
PIX * pixMorphCompSequence(PIX *pixs, const char *sequence, l_int32 dispsep)
pixMorphCompSequence()
PIXA * pixaExtendByScaling(PIXA *pixas, NUMA *nasc, l_int32 type, l_int32 include)
pixaExtendByScaling()
BOXA * pixaGetBoxa(PIXA *pixa, l_int32 accesstype)
pixaGetBoxa()