|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
/*
|
|
|
|
|
* FLOATIMG |
|
|
|
|
* egalisation dinamique approximative |
|
|
|
|
* egalisation dynamique approximative |
|
|
|
|
* #coronamaison Thu 09 Apr 2020 03:37:10 PM CEST |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
@ -12,25 +12,39 @@ |
|
|
|
|
extern int verbosity; |
|
|
|
|
|
|
|
|
|
/* --------------------------------------------------------------------- */ |
|
|
|
|
int fimg_equalize_compute(FloatImg *src, void *vptr) |
|
|
|
|
int fimg_equalize_compute(FloatImg *src, void *vptr, float vmax) |
|
|
|
|
{ |
|
|
|
|
float minmax[6]; |
|
|
|
|
int foo; |
|
|
|
|
float dr, dg, db; |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, ">>> %s ( %p )\n", __func__, src); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
memset(minmax, 0, 6*sizeof(float)); |
|
|
|
|
|
|
|
|
|
foo = fimg_get_minmax_rgb(src, minmax); |
|
|
|
|
printf("Rmin %12.4g Rmax %12.4g\n", minmax[0], minmax[1]); |
|
|
|
|
printf("Gmin %12.4g Gmax %12.4g\n", minmax[2], minmax[3]); |
|
|
|
|
printf("Bmin %12.4g Bmax %12.4g\n", minmax[4], minmax[5]); |
|
|
|
|
if (foo) { |
|
|
|
|
fprintf(stderr, "err %d get minmax in %s\n", foo, __func__); |
|
|
|
|
return foo; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dr = minmax[1] - minmax[0]; |
|
|
|
|
dg = minmax[3] - minmax[2]; |
|
|
|
|
db = minmax[5] - minmax[4]; |
|
|
|
|
|
|
|
|
|
printf("Rmin %12.4g Rmax %12.4g delta %12.4g\n", minmax[0], minmax[1], dr); |
|
|
|
|
printf("Gmin %12.4g Gmax %12.4g delta %12.4g\n", minmax[2], minmax[3], dg); |
|
|
|
|
printf("Bmin %12.4g Bmax %12.4g delta %12.4g\n", minmax[4], minmax[5], db); |
|
|
|
|
|
|
|
|
|
if ( (minmax[0]<0.0) || (minmax[2]<0.0) || (minmax[4]<0.0) ) { |
|
|
|
|
fprintf(stderr, "%s: negative value ?\n", __func__); |
|
|
|
|
return -4; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// printf("deltas %12.4g %12.4g %12.4g\n", dr, dg, db);
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
/* --------------------------------------------------------------------- */ |
|
|
|
|