/* * pixDebugFlipDetect() * * Input: filename (for output debug file) * pixs (input to pix*Detect) * pixhm (hit-miss result from ascenders or descenders) * enable (1 to enable this function; 0 to disable) * Return: void */ static void pixDebugFlipDetect(const char *filename, PIX *pixs, PIX *pixhm, l_int32 enable) { PIX *pixt, *pixthm; if (!enable) return; /* Display with red dot at counted locations */ pixt = pixConvert1To4Cmap(pixs); pixthm = pixMorphSequence(pixhm, "d5.5", 0); pixSetMaskedCmap(pixt, pixthm, 0, 0, 255, 0, 0); pixWrite(filename, pixt, IFF_PNG); pixDestroy(&pixthm); pixDestroy(&pixt); return; }
static PIX * ReconstructByValue(L_REGPARAMS *rp, const char *fname) { l_int32 i, n, rval, gval, bval; PIX *pixs, *pixm, *pixd; PIXCMAP *cmap; pixs = pixRead(fname); cmap = pixGetColormap(pixs); n = pixcmapGetCount(cmap); pixd = pixCreateTemplate(pixs); for (i = 0; i < n; i++) { pixm = pixGenerateMaskByValue(pixs, i, 1); pixcmapGetColor(cmap, i, &rval, &gval, &bval); pixSetMaskedCmap(pixd, pixm, 0, 0, rval, gval, bval); pixDestroy(&pixm); } regTestComparePix(rp, pixs, pixd); pixDestroy(&pixs); return pixd; }
static PIX * FakeReconstructByBand(L_REGPARAMS *rp, const char *fname) { l_int32 i, jlow, jup, n, nbands; l_int32 rval1, gval1, bval1, rval2, gval2, bval2, rval, gval, bval; PIX *pixs, *pixm, *pixd; PIXCMAP *cmaps, *cmapd; pixs = pixRead(fname); cmaps = pixGetColormap(pixs); n = pixcmapGetCount(cmaps); nbands = (n + 1) / 2; pixd = pixCreateTemplate(pixs); cmapd = pixcmapCreate(pixGetDepth(pixs)); pixSetColormap(pixd, cmapd); for (i = 0; i < nbands; i++) { jlow = 2 * i; jup = L_MIN(jlow + 1, n - 1); pixm = pixGenerateMaskByBand(pixs, jlow, jup, 1, 1); /* Get average color in the band */ pixcmapGetColor(cmaps, jlow, &rval1, &gval1, &bval1); pixcmapGetColor(cmaps, jup, &rval2, &gval2, &bval2); rval = (rval1 + rval2) / 2; gval = (gval1 + gval2) / 2; bval = (bval1 + bval2) / 2; pixcmapAddColor(cmapd, rval, gval, bval); pixSetMaskedCmap(pixd, pixm, 0, 0, rval, gval, bval); pixDestroy(&pixm); } pixDestroy(&pixs); return pixd; }