forked from tTh/FloatImg
trying some contrast funcs...
This commit is contained in:
parent
efac70ab2d
commit
2ee1645a4a
@ -5,7 +5,7 @@
|
|||||||
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0
|
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
|
interpolate.o fimg-compare.o contrast.o
|
||||||
|
|
||||||
DEPS = Makefile ../floatimg.h
|
DEPS = Makefile ../floatimg.h
|
||||||
|
|
||||||
@ -34,6 +34,9 @@ fimg-2gray.o: fimg-2gray.c $(DEPS)
|
|||||||
operators.o: operators.c $(DEPS)
|
operators.o: operators.c $(DEPS)
|
||||||
gcc $(COPT) -c $<
|
gcc $(COPT) -c $<
|
||||||
|
|
||||||
|
contrast.o: contrast.c $(DEPS)
|
||||||
|
gcc $(COPT) -c $<
|
||||||
|
|
||||||
interpolate.o: interpolate.c $(DEPS)
|
interpolate.o: interpolate.c $(DEPS)
|
||||||
gcc $(COPT) -c $<
|
gcc $(COPT) -c $<
|
||||||
|
|
||||||
|
64
lib/contrast.c
Normal file
64
lib/contrast.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "../floatimg.h"
|
||||||
|
|
||||||
|
extern int verbosity;
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
int fimg_square_root(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 * sqrt(dval);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
int fimg_power_2(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 * dval * dval;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
76
lib/t.c
76
lib/t.c
@ -67,71 +67,53 @@ fimg_destroy(&gray);
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
/****
|
|
||||||
foo = fimg_create(&dessin, W, H, 3);
|
int fimg_square_root(FloatImg *s, FloatImg *d, double maxval);
|
||||||
petit_dessin(&dessin);
|
int fimg_power_2(FloatImg *s, FloatImg *d, double maxval);
|
||||||
foo = fimg_create(&noise, W, H, 3);
|
|
||||||
fimg_drand48(&noise, 0.1);
|
int essai_contraste(char *fname)
|
||||||
****/
|
{
|
||||||
|
int foo;
|
||||||
|
FloatImg dessin;
|
||||||
|
double maxi;
|
||||||
|
|
||||||
|
foo = fimg_create_from_dump(fname, &dessin);
|
||||||
|
|
||||||
|
maxi = (double)fimg_get_maxvalue(&dessin);
|
||||||
|
fprintf(stderr, "avant valeur maxi = %f\n", maxi);
|
||||||
|
|
||||||
|
fimg_power_2(&dessin, NULL, maxi);
|
||||||
|
|
||||||
|
maxi = (double)fimg_get_maxvalue(&dessin);
|
||||||
|
fprintf(stderr, "apres valeur maxi = %f\n", maxi);
|
||||||
|
|
||||||
|
fimg_dump_to_file(&dessin, "dst.fimg", 0);
|
||||||
|
|
||||||
|
fimg_destroy(&dessin);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
#define W 320
|
#define W 320
|
||||||
#define H 240
|
#define H 240
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo, idx, opt;
|
int foo, idx, opt;
|
||||||
float coef;
|
// char outname[100];
|
||||||
FloatImg dessin, noise, result;
|
|
||||||
char outname[100];
|
|
||||||
int gray = 0;
|
int gray = 0;
|
||||||
int nb_img = 42;
|
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "gn:v")) != -1) {
|
while ((opt = getopt(argc, argv, "gn:v")) != -1) {
|
||||||
switch(opt) {
|
switch(opt) {
|
||||||
case 'g': gray++; break;
|
case 'g': gray++; break;
|
||||||
case 'n': nb_img=atoi(optarg); break;
|
case 'n': foo=atoi(optarg); break;
|
||||||
case 'v': verbosity++; break;
|
case 'v': verbosity++; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbosity) fimg_print_version(0);
|
if (verbosity) fimg_print_version(0);
|
||||||
|
|
||||||
|
foo = essai_contraste("src.fimg");
|
||||||
|
|
||||||
foo = fimg_create_from_png("/home/tth/TMP/floatimg/s1.png", &dessin);
|
|
||||||
if (foo) {
|
|
||||||
fprintf(stderr, "s1 load err %d\n", foo);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (verbosity) fimg_describe(&dessin, "s1 dessin");
|
|
||||||
if (gray) fimg_to_gray(&dessin);
|
|
||||||
|
|
||||||
foo = fimg_create_from_png("/home/tth/TMP/floatimg/s2.png", &noise);
|
|
||||||
if (foo) {
|
|
||||||
fprintf(stderr, "s2 load err %d\n", foo);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (verbosity) fimg_describe(&noise, "s2 noise");
|
|
||||||
fimg_mul_cste(&noise, 0.50);
|
|
||||||
if (gray) fimg_to_gray(&noise);
|
|
||||||
|
|
||||||
foo = fimg_create(&result, W, H, 3);
|
|
||||||
if (verbosity) fimg_describe(&result, "d result");
|
|
||||||
|
|
||||||
fprintf(stderr, "running for %d picz\n", nb_img);
|
|
||||||
|
|
||||||
for (idx=0; idx<nb_img; idx++) {
|
|
||||||
|
|
||||||
coef = (float)idx / (float)nb_img;
|
|
||||||
// coef = (0.5-0.5*cos(4*3.141592654*coef));
|
|
||||||
|
|
||||||
foo = fimg_interpolate(&dessin, &noise, &result, coef);
|
|
||||||
printf("%6d %9.6f\n", idx, coef);
|
|
||||||
|
|
||||||
sprintf(outname, "/home/tth/TMP/floatimg/%05d.pnm", idx);
|
|
||||||
foo = fimg_save_as_pnm(&result, outname, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* yes, we can cleanup after work */
|
|
||||||
fimg_destroy(&dessin), fimg_destroy(&noise), fimg_destroy(&result);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user