forked from tTh/FloatImg
adding the COS01 contrast method
This commit is contained in:
parent
e81055756e
commit
12197cc171
@ -73,6 +73,7 @@ double fimg_timer_get(int whot);
|
|||||||
/* --> lib/contrast.c */
|
/* --> lib/contrast.c */
|
||||||
int fimg_square_root(FloatImg *s, FloatImg *d, double maxval);
|
int fimg_square_root(FloatImg *s, FloatImg *d, double maxval);
|
||||||
int fimg_power_2(FloatImg *s, FloatImg *d, double maxval);
|
int fimg_power_2(FloatImg *s, FloatImg *d, double maxval);
|
||||||
|
int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval);
|
||||||
|
|
||||||
|
|
||||||
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k);
|
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# building the base library
|
# building the base library
|
||||||
#
|
#
|
||||||
|
|
||||||
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=1
|
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0
|
||||||
OBJS = fimg-core.o fimg-pnm.o fimg-file.o fimg-math.o \
|
OBJS = fimg-core.o fimg-pnm.o fimg-file.o fimg-math.o \
|
||||||
fimg-timers.o operators.o fimg-2gray.o \
|
fimg-timers.o operators.o fimg-2gray.o \
|
||||||
interpolate.o fimg-compare.o contrast.o
|
interpolate.o fimg-compare.o contrast.o
|
||||||
|
@ -41,7 +41,7 @@ int nbre, idx;
|
|||||||
double dval;
|
double dval;
|
||||||
|
|
||||||
if (s->type != FIMG_TYPE_RGB) {
|
if (s->type != FIMG_TYPE_RGB) {
|
||||||
fprintf(stderr, "%s : type %d invalide\n",
|
fprintf(stderr, "%s : src type %d invalide\n",
|
||||||
__func__, s->type);
|
__func__, s->type);
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
@ -49,6 +49,13 @@ if (s->type != FIMG_TYPE_RGB) {
|
|||||||
if (NULL==d) {
|
if (NULL==d) {
|
||||||
d = s;
|
d = s;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (d->type != FIMG_TYPE_RGB) {
|
||||||
|
fprintf(stderr, "%s : dst type %d invalide\n",
|
||||||
|
__func__, s->type);
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
nbre = s->width * s->height * 3;
|
nbre = s->width * s->height * 3;
|
||||||
@ -58,7 +65,42 @@ for (idx=0; idx<nbre; idx++) {
|
|||||||
d->R[idx] = maxval * dval * dval;
|
d->R[idx] = maxval * dval * dval;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
/*
|
||||||
|
#macro Cos_01( X )
|
||||||
|
(0.5-0.5*cos( 3.141592654 * X))
|
||||||
|
#end
|
||||||
|
|
||||||
|
*/
|
||||||
|
int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval)
|
||||||
|
{
|
||||||
|
int nbre, idx;
|
||||||
|
double dval;
|
||||||
|
|
||||||
|
if (s->type != FIMG_TYPE_RGB) {
|
||||||
|
fprintf(stderr, "%s : type %d invalide\n",
|
||||||
|
__func__, s->type);
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL==d) {
|
||||||
|
d = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
nbre = s->width * s->height * 3;
|
||||||
|
|
||||||
|
for (idx=0; idx<nbre; idx++) {
|
||||||
|
dval = s->R[idx] / maxval;
|
||||||
|
|
||||||
|
d->R[idx] = maxval * (0.5 - 0.5 * cos(3.141592654*dval));
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
13
lib/runme.sh
13
lib/runme.sh
@ -1,11 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
grabvidseq -s 960x720 -n 60 -p 0.5 -vv -o original.fimg
|
||||||
|
|
||||||
make t && ./t
|
make t && ./t
|
||||||
|
|
||||||
for picz in src power2 squareroot
|
for picz in original power2 squareroot cos_01
|
||||||
do
|
do
|
||||||
|
|
||||||
../tools/fimgstats -v ${picz}.fimg
|
echo _______________ ${picz}
|
||||||
|
|
||||||
|
# ../tools/fimgstats -v ${picz}.fimg
|
||||||
../tools/fimg2pnm -v ${picz}.fimg ${picz}.pnm
|
../tools/fimg2pnm -v ${picz}.fimg ${picz}.pnm
|
||||||
|
|
||||||
convert -pointsize 36 \
|
convert -pointsize 36 \
|
||||||
@ -13,7 +18,9 @@ do
|
|||||||
-fill black -annotate +12+30 "${picz}" \
|
-fill black -annotate +12+30 "${picz}" \
|
||||||
${picz}.pnm ${picz}.png
|
${picz}.pnm ${picz}.png
|
||||||
|
|
||||||
|
rm ${picz}.pnm
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
convert -delay 50 *.png foo.gif
|
convert -delay 150 *.png foo.gif
|
||||||
|
|
||||||
|
13
lib/t.c
13
lib/t.c
@ -75,23 +75,26 @@ FloatImg dessin, copy;
|
|||||||
double maxi;
|
double maxi;
|
||||||
|
|
||||||
foo = fimg_create_from_dump(fname, &dessin);
|
foo = fimg_create_from_dump(fname, &dessin);
|
||||||
|
|
||||||
foo = fimg_clone(&dessin, ©, 0);
|
foo = fimg_clone(&dessin, ©, 0);
|
||||||
|
|
||||||
|
|
||||||
maxi = (double)fimg_get_maxvalue(&dessin);
|
maxi = (double)fimg_get_maxvalue(&dessin);
|
||||||
fprintf(stderr, "avant power_2 valeur maxi = %f\n", maxi);
|
fprintf(stderr, "image source valeur maxi = %f\n", maxi);
|
||||||
|
|
||||||
fimg_power_2(&dessin, ©, maxi);
|
fimg_power_2(&dessin, ©, maxi);
|
||||||
maxi = (double)fimg_get_maxvalue(&dessin);
|
maxi = (double)fimg_get_maxvalue(©);
|
||||||
fprintf(stderr, "apres power_2 valeur maxi = %f\n", maxi);
|
fprintf(stderr, "apres power_2 valeur maxi = %f\n", maxi);
|
||||||
fimg_dump_to_file(©, "power2.fimg", 0);
|
fimg_dump_to_file(©, "power2.fimg", 0);
|
||||||
|
|
||||||
fimg_square_root(&dessin, ©, maxi);
|
fimg_square_root(&dessin, ©, maxi);
|
||||||
maxi = (double)fimg_get_maxvalue(&dessin);
|
maxi = (double)fimg_get_maxvalue(©);
|
||||||
fprintf(stderr, "apres square_root valeur maxi = %f\n", maxi);
|
fprintf(stderr, "apres square_root valeur maxi = %f\n", maxi);
|
||||||
fimg_dump_to_file(©, "squareroot.fimg", 0);
|
fimg_dump_to_file(©, "squareroot.fimg", 0);
|
||||||
|
|
||||||
|
fimg_cos_01(&dessin, ©, maxi);
|
||||||
|
maxi = (double)fimg_get_maxvalue(©);
|
||||||
|
fprintf(stderr, "apres cos 01 valeur maxi = %f\n", maxi);
|
||||||
|
fimg_dump_to_file(©, "cos_01.fimg", 0);
|
||||||
|
|
||||||
fimg_destroy(&dessin);
|
fimg_destroy(&dessin);
|
||||||
|
|
||||||
@ -116,7 +119,7 @@ while ((opt = getopt(argc, argv, "gn:v")) != -1) {
|
|||||||
|
|
||||||
if (verbosity) fimg_print_version(0);
|
if (verbosity) fimg_print_version(0);
|
||||||
|
|
||||||
foo = essai_contraste("src.fimg");
|
foo = essai_contraste("original.fimg");
|
||||||
fprintf(stderr, "retour essai contraste -> %d\n", foo);
|
fprintf(stderr, "retour essai contraste -> %d\n", foo);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user