CRIMP
Artifact [7d6734986d]
Not logged in

Artifact 7d6734986d151731689381da2a6fd0e3e4bd21b5:


/*
 * CRIMP :: AHE Definitions (Implementation).
 * (C) 2010.
 */

/*
 * Import declarations.
 */

#include <ahe.h>

/*
 * Definitions :: Core.
 */

int
crimp_ahe_transfer (int histogram [256], int value, int max)
{
    /*
     * (0) max = number of pixels in the histogram, for AHE this is (2r+1)^2.
     * ==> max = sum (i,histogram[i]).
     *
     * (1) CDF(value) =       sum (k <= value,histogram[k]) <a>
     *                = max - sum (k >  value,histogram[k]) <b>
     *
     *     max = sum (k,histogram[k])
     *         = sum (k<=value,histogram[k]) + sum (k>value,histogram[k]). 
     *
     * (2) sum = CDF(value) >=0, <= max
     * ==> sum         in [0-max]
     * ==> sum/max     in [0-1]
     * ==> 255*sum/max in [0-255]. (Stretched, proper pixel value).
     */

    int k, sum;

    if (value > 128) {
	/* <1b> */

	for (k = value+1, sum = 0; k < 256; k++) {
	    sum += histogram [k];
	}
	sum = max - sum;
    } else {
	/* <1a> */

	for (k = 0, sum = 0; k <= value; k++) {
	    sum += histogram [k];
	}
    }

    /* (2) */
    return 255 * sum / max;
}

/*
 * Local Variables:
 * mode: c
 * c-basic-offset: 4
 * fill-column: 78
 * End:
 */