70 return pixCreate(pixGetWidth(pix), pixGetHeight(pix), 1);
73 Pix *pixr = pixReduceRankBinaryCascade(pix, 1, 0, 0, 0);
75 pixa_debug->AddPix(pixr,
"CascadeReduced");
85 return pixCreate(pixGetWidth(pix), pixGetHeight(pix), 1);
92 Pix* pixht2 = pixGenerateHalftoneMask(pixr, NULL, &ht_found, pixadb);
94 Pix* pixdb = pixaDisplayTiledInColumns(pixadb, 3, 1.0, 20, 2);
96 pixa_debug->AddPix(pixdb,
"HalftoneMask");
101 if (!ht_found && pixht2 != NULL)
104 return pixCreate(pixGetWidth(pix), pixGetHeight(pix), 1);
107 Pix *pixht = pixExpandReplicate(pixht2, 2);
109 pixa_debug->AddPix(pixht,
"HalftoneReplicated");
113 Pix *pixt = pixSeedfillBinary(NULL, pixht, pix, 8);
114 pixOr(pixht, pixht, pixt);
118 Pix* pixfinemask = pixReduceRankBinaryCascade(pixht, 1, 1, 3, 3);
119 pixDilateBrick(pixfinemask, pixfinemask, 5, 5);
121 pixa_debug->AddPix(pixfinemask,
"FineMask");
122 Pix* pixreduced = pixReduceRankBinaryCascade(pixht, 1, 1, 1, 1);
123 Pix* pixreduced2 = pixReduceRankBinaryCascade(pixreduced, 3, 3, 3, 0);
124 pixDestroy(&pixreduced);
125 pixDilateBrick(pixreduced2, pixreduced2, 5, 5);
126 Pix* pixcoarsemask = pixExpandReplicate(pixreduced2, 8);
127 pixDestroy(&pixreduced2);
129 pixa_debug->AddPix(pixcoarsemask,
"CoarseMask");
131 pixAnd(pixcoarsemask, pixcoarsemask, pixfinemask);
132 pixDestroy(&pixfinemask);
134 pixDilateBrick(pixcoarsemask, pixcoarsemask, 3, 3);
135 Pix* pixmask = pixExpandReplicate(pixcoarsemask, 16);
136 pixDestroy(&pixcoarsemask);
138 pixa_debug->AddPix(pixmask,
"MaskDilated");
140 pixAnd(pixht, pixht, pixmask);
141 pixDestroy(&pixmask);
143 pixa_debug->AddPix(pixht,
"FinalMask");
145 Pix* result = pixCreate(pixGetWidth(pix), pixGetHeight(pix), 1);
146 pixOr(result, result, pixht);
const int kMinImageFindSize
int textord_tabfind_show_images