forked from tTh/FloatImg
histocomputing boilerplate [done]
This commit is contained in:
parent
951dc4450f
commit
711e54fe43
76
funcs/histogram.c
Normal file
76
funcs/histogram.c
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* FLOATIMG
|
||||||
|
* calculer un histogramme et l'afficher
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "../floatimg.h"
|
||||||
|
|
||||||
|
extern int verbosity;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
int fimg_calcul_histo(FloatImg *src, long *ghist, int sz)
|
||||||
|
{
|
||||||
|
float maxval;
|
||||||
|
int x, y, idx;
|
||||||
|
float rgb[3], moy;
|
||||||
|
|
||||||
|
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, src, ghist, sz);
|
||||||
|
|
||||||
|
maxval = fimg_get_maxvalue(src);
|
||||||
|
|
||||||
|
fprintf(stderr, "maximum is %f\n", maxval);
|
||||||
|
|
||||||
|
for (y=0; y<src->height; y++) {
|
||||||
|
for(x=0; x<src->width; x++) {
|
||||||
|
fimg_get_rgb(src, x, y, rgb);
|
||||||
|
moy = (rgb[0]+rgb[1]+rgb[2]) / 3.0;
|
||||||
|
|
||||||
|
/* ok, here the had math part ... */
|
||||||
|
idx = (int)( (moy*sz) / maxval);
|
||||||
|
|
||||||
|
/* sanity check */
|
||||||
|
if (idx<0 || idx>=sz) {
|
||||||
|
fprintf(stderr, "idx = %d, error\n", idx);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
ghist[idx]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -66;
|
||||||
|
}
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#define NSLICES 999
|
||||||
|
|
||||||
|
int fimg_essai_histo(FloatImg *src, char *outpic, int k)
|
||||||
|
{
|
||||||
|
long histo[NSLICES];
|
||||||
|
int foo;
|
||||||
|
FILE *pipe;
|
||||||
|
|
||||||
|
fprintf(stderr, ">>> %s ( %p '%s' %d )\n", __func__, src, outpic, k);
|
||||||
|
|
||||||
|
memset(histo, 0, NSLICES*sizeof(long));
|
||||||
|
|
||||||
|
foo = fimg_calcul_histo(src, histo, NSLICES);
|
||||||
|
|
||||||
|
for (foo=0; foo<NSLICES; foo++) {
|
||||||
|
printf("%7d %ld\n", foo, histo[foo]);
|
||||||
|
}
|
||||||
|
|
||||||
|
pipe = popen("gnuplot", "w");
|
||||||
|
fprintf(pipe, "set term png size 1000,400\n");
|
||||||
|
fprintf(pipe, "set output \"histo.png\"\n");
|
||||||
|
fprintf(pipe, "plot 'toto' with lines\n");
|
||||||
|
fclose(pipe);
|
||||||
|
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* --------------------------------------------------------------------- */
|
@ -485,7 +485,7 @@ int main(int argc, char *argv[])
|
|||||||
int foo, opt;
|
int foo, opt;
|
||||||
char *filename, *command;
|
char *filename, *command;
|
||||||
|
|
||||||
puts("++++++++ test des fonctions +++++++");
|
fprintf(stderr, "++++++++ test des fonctions pid=%d\n", getpid());
|
||||||
|
|
||||||
global_fvalue = 1.0;
|
global_fvalue = 1.0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user