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;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
Loading…
Reference in New Issue
Block a user