Bibliothèque de traitements d'images en virgule flottante.
http://la.buvette.org/photos/cumul/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.3 KiB
157 lines
4.3 KiB
/* |
|
* floatimg.h |
|
*/ |
|
|
|
#define FIMG_VERSION 95 |
|
|
|
/* |
|
* in memory descriptor |
|
*/ |
|
typedef struct { |
|
int width; |
|
int height; |
|
int type; |
|
float fval; |
|
int count; |
|
|
|
float *R, *G, *B, *A; |
|
|
|
int reserved; |
|
} FloatImg; |
|
|
|
/* |
|
* fimg file header |
|
*/ |
|
typedef struct { |
|
char magic[8]; |
|
int w, h, t; |
|
} FimgFileHead; |
|
|
|
|
|
#define FIMG_TYPE_GRAY 1 |
|
#define FIMG_TYPE_RGB 3 |
|
#define FIMG_TYPE_RGBA 4 |
|
#define FIMG_TYPE_RGBZ 99 |
|
|
|
#define FILE_TYPE_FIMG 1 |
|
#define FILE_TYPE_PNM 2 |
|
#define FILE_TYPE_PNG 3 |
|
#define FILE_TYPE_TGA 4 |
|
#define FILE_TYPE_TIFF 5 |
|
|
|
/* lib/contrast.c */ |
|
#define CONTRAST_NONE 0 |
|
#define CONTRAST_SQRT 1 |
|
#define CONTRAST_POW2 2 |
|
#define CONTRAST_COS01 3 |
|
#define CONTRAST_COS010 4 |
|
|
|
/* |
|
* core module |
|
*/ |
|
int fimg_create(FloatImg *fimg, int w, int h, int t); |
|
int fimg_destroy(FloatImg *fimg); |
|
int fimg_clone(FloatImg *fimg, FloatImg *newpic, int flags); |
|
int fimg_copy_data(FloatImg *from, FloatImg *to); |
|
int fimg_type_is_valid(int type); |
|
|
|
|
|
int fimg_print_version(int k); |
|
void fimg_printhead(FloatImg *h); |
|
int fimg_describe(FloatImg *head, char *txt); |
|
char *fimg_str_type(int type); |
|
int fimg_plot_rgb (FloatImg *head, int x, int y, float r, float g, float b); |
|
int fimg_get_rgb(FloatImg *head, int x, int y, float *rgb); |
|
int fimg_clear(FloatImg *fimg); |
|
int fimg_add_rgb(FloatImg *head, int x, int y, float r, float g, float b); |
|
int fimg_rgb_constant(FloatImg *head, float r, float g, float b); |
|
|
|
/* --> lib/fimg-compare.c */ |
|
int fimg_images_compatible(FloatImg *a, FloatImg *b); |
|
|
|
int fimg_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef); |
|
|
|
/* 'operats' module */ |
|
int fimg_add_3(FloatImg *a, FloatImg *b, FloatImg *d); |
|
int fimg_add_2(FloatImg *a, FloatImg *b); /* B+=A */ |
|
int fimg_sub_3(FloatImg *a, FloatImg *b, FloatImg *d); |
|
int fimg_mul_3(FloatImg *a, FloatImg *b, FloatImg *d); |
|
int fimg_minimum(FloatImg *a, FloatImg *b, FloatImg *d); |
|
int fimg_maximum(FloatImg *a, FloatImg *b, FloatImg *d); |
|
|
|
|
|
/* funcs/filtrage.c */ |
|
|
|
typedef struct { |
|
float matrix[9]; |
|
float mult; |
|
float offset; |
|
} FimgFilter3x3; |
|
|
|
int fimg_killborders(FloatImg *img); |
|
int fimg_lissage_2x2(FloatImg *img); |
|
int fimg_filter_3x3(FloatImg *s, FloatImg *d, FimgFilter3x3 *filtr); |
|
|
|
/* 'sfx0' module */ |
|
int fimg_killcolors_a(FloatImg *fimg, float fval); |
|
int fimg_killcolors_b(FloatImg *fimg, float fval); |
|
|
|
|
|
/* PNM files module */ |
|
int fimg_save_as_pnm(FloatImg *head, char *fname, int flags); |
|
int fimg_load_from_pnm(char *fname, FloatImg *head, int notused); |
|
|
|
double fimg_timer_set(int whot); |
|
double fimg_timer_get(int whot); |
|
|
|
/* --> lib/contrast.c */ |
|
int fimg_id_contraste(char *name); |
|
int fimg_square_root(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_cos_010(FloatImg *s, FloatImg *d, double maxval); |
|
|
|
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k); |
|
int fimg_desaturate(FloatImg *src, FloatImg *dst, int k); |
|
|
|
/* module funcs/geometry.c */ |
|
int fimg_halfsize_0(FloatImg *src, FloatImg *dst, int notused); |
|
|
|
/* module funcs/rampes.c */ |
|
int fimg_hdeg_a(FloatImg *img, double dcoef); |
|
int fimg_vdeg_a(FloatImg *img, double dcoef); |
|
|
|
/* FIMG files module */ |
|
int fimg_fileinfos(char *fname, int *datas); |
|
int fimg_dump_to_file(FloatImg *head, char *fname, int notused); |
|
int fimg_load_from_dump(char *fname, FloatImg *where); |
|
int fimg_create_from_dump(char *fname, FloatImg *head); |
|
|
|
/* mathematics operations */ |
|
float fimg_get_maxvalue(FloatImg *head); |
|
int fimg_get_minmax_rgb(FloatImg *head, float mmvals[6]); |
|
int fimg_meanvalues(FloatImg *head, float means[4]); |
|
int fimg_to_gray(FloatImg *head); |
|
void fimg_add_cste(FloatImg *fi, float value); |
|
void fimg_mul_cste(FloatImg *fi, float value); |
|
int fimg_normalize(FloatImg *fi, double maxima, int notused); |
|
void fimg_drand48(FloatImg *fi, float kmul); |
|
int fimg_count_negativ(FloatImg *fi); |
|
int fimg_clamp_negativ(FloatImg *fi); |
|
|
|
/* various funcs modules */ |
|
int fimg_load_from_png(char *filename, FloatImg *fimg); |
|
int fimg_create_from_png(char *filename, FloatImg *fimg); |
|
int fimg_save_as_png(FloatImg *src, char *outname, int flags); |
|
|
|
int fimg_test_pattern(FloatImg *fimg, int type, double dval); |
|
int fimg_draw_something(FloatImg *fimg); |
|
|
|
int parse_WxH(char *str, int *pw, int *ph); |
|
int parse_double(char *str, double *dptr); |
|
int format_from_extension(char *fname); |
|
|
|
|
|
|
|
|
|
|
|
|