2019-03-03 16:22:55 +01:00
|
|
|
/*
|
2020-04-11 23:18:33 +02:00
|
|
|
* floatimg.h
|
|
|
|
* ugly code from tTh
|
2019-03-03 16:22:55 +01:00
|
|
|
*/
|
|
|
|
|
2020-11-10 00:53:24 +01:00
|
|
|
#define FIMG_VERSION 113
|
2019-03-03 16:22:55 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 {
|
2019-07-08 06:28:04 +02:00
|
|
|
char magic[8];
|
2019-03-03 16:22:55 +01:00
|
|
|
int w, h, t;
|
2019-07-08 06:28:04 +02:00
|
|
|
} FimgFileHead;
|
2019-03-03 16:22:55 +01:00
|
|
|
|
2019-08-07 11:55:29 +02:00
|
|
|
|
|
|
|
#define FIMG_TYPE_GRAY 1
|
|
|
|
#define FIMG_TYPE_RGB 3
|
|
|
|
#define FIMG_TYPE_RGBA 4
|
2020-02-13 20:44:22 +01:00
|
|
|
#define FIMG_TYPE_RGBZ 99
|
2019-08-07 11:55:29 +02:00
|
|
|
|
2019-10-30 15:49:53 +01:00
|
|
|
#define FILE_TYPE_FIMG 1
|
|
|
|
#define FILE_TYPE_PNM 2
|
|
|
|
#define FILE_TYPE_PNG 3
|
2019-12-27 12:25:33 +01:00
|
|
|
#define FILE_TYPE_TGA 4
|
|
|
|
#define FILE_TYPE_TIFF 5
|
2020-07-24 10:38:13 +02:00
|
|
|
#define FILE_TYPE_FITS 6
|
2019-10-30 15:49:53 +01:00
|
|
|
|
2019-11-15 10:39:22 +01:00
|
|
|
/* lib/contrast.c */
|
|
|
|
#define CONTRAST_NONE 0
|
|
|
|
#define CONTRAST_SQRT 1
|
|
|
|
#define CONTRAST_POW2 2
|
|
|
|
#define CONTRAST_COS01 3
|
2019-12-04 11:17:45 +01:00
|
|
|
#define CONTRAST_COS010 4
|
2019-11-15 10:39:22 +01:00
|
|
|
|
2019-03-03 16:22:55 +01:00
|
|
|
/*
|
|
|
|
* core module
|
|
|
|
*/
|
|
|
|
int fimg_create(FloatImg *fimg, int w, int h, int t);
|
|
|
|
int fimg_destroy(FloatImg *fimg);
|
2019-11-12 13:57:32 +01:00
|
|
|
int fimg_clone(FloatImg *fimg, FloatImg *newpic, int flags);
|
2020-01-07 13:46:09 +01:00
|
|
|
int fimg_copy_data(FloatImg *from, FloatImg *to);
|
2020-02-19 22:36:58 +01:00
|
|
|
int fimg_type_is_valid(int type);
|
|
|
|
|
2019-03-03 16:22:55 +01:00
|
|
|
|
|
|
|
int fimg_print_version(int k);
|
2020-10-07 11:32:23 +02:00
|
|
|
void fimg_print_sizeof(void);
|
2019-03-03 16:22:55 +01:00
|
|
|
void fimg_printhead(FloatImg *h);
|
|
|
|
int fimg_describe(FloatImg *head, char *txt);
|
2019-09-10 12:18:02 +02:00
|
|
|
char *fimg_str_type(int type);
|
2020-07-28 08:19:38 +02:00
|
|
|
int fimg_plot_rgb (FloatImg *head, int x, int y,
|
|
|
|
float r, float g, float b);
|
2020-02-13 20:44:22 +01:00
|
|
|
int fimg_get_rgb(FloatImg *head, int x, int y, float *rgb);
|
2020-03-24 10:41:57 +01:00
|
|
|
int fimg_put_rgb(FloatImg *head, int x, int y, float *rgb);
|
2019-03-03 16:22:55 +01:00
|
|
|
int fimg_clear(FloatImg *fimg);
|
|
|
|
int fimg_add_rgb(FloatImg *head, int x, int y, float r, float g, float b);
|
2019-09-28 23:55:45 +02:00
|
|
|
int fimg_rgb_constant(FloatImg *head, float r, float g, float b);
|
2019-03-03 16:22:55 +01:00
|
|
|
|
2019-12-27 12:25:33 +01:00
|
|
|
/* --> lib/fimg-compare.c */
|
2020-04-06 20:09:11 +02:00
|
|
|
int fimg_images_not_compatible(FloatImg *a, FloatImg *b);
|
2019-09-10 01:31:48 +02:00
|
|
|
|
2019-09-09 16:02:44 +02:00
|
|
|
int fimg_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef);
|
|
|
|
|
2019-08-08 17:16:20 +02:00
|
|
|
/* 'operats' module */
|
2020-01-15 11:38:40 +01:00
|
|
|
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);
|
2019-11-20 11:12:16 +01:00
|
|
|
int fimg_minimum(FloatImg *a, FloatImg *b, FloatImg *d);
|
|
|
|
int fimg_maximum(FloatImg *a, FloatImg *b, FloatImg *d);
|
2019-08-08 17:16:20 +02:00
|
|
|
|
2020-02-07 18:01:28 +01:00
|
|
|
|
2020-02-29 20:01:11 +01:00
|
|
|
/* funcs/filtrage.c */
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
float matrix[9];
|
|
|
|
float mult;
|
|
|
|
float offset;
|
|
|
|
} FimgFilter3x3;
|
|
|
|
|
2020-02-26 00:14:47 +01:00
|
|
|
int fimg_killborders(FloatImg *img);
|
|
|
|
int fimg_lissage_2x2(FloatImg *img);
|
2020-02-29 20:01:11 +01:00
|
|
|
int fimg_filter_3x3(FloatImg *s, FloatImg *d, FimgFilter3x3 *filtr);
|
2020-02-26 00:14:47 +01:00
|
|
|
|
2020-10-07 11:32:23 +02:00
|
|
|
|
2020-10-10 12:34:29 +02:00
|
|
|
int fimg_contour_2x2(FloatImg *psrc, FloatImg *pdst, int reverse);
|
2020-10-07 11:32:23 +02:00
|
|
|
|
2020-02-07 18:01:28 +01:00
|
|
|
/* 'sfx0' module */
|
|
|
|
int fimg_killcolors_a(FloatImg *fimg, float fval);
|
2020-02-07 20:09:03 +01:00
|
|
|
int fimg_killcolors_b(FloatImg *fimg, float fval);
|
2020-06-22 12:15:01 +02:00
|
|
|
int fimg_colors_mixer_a(FloatImg *fimg, float fval);
|
2020-02-07 18:01:28 +01:00
|
|
|
|
2020-03-24 09:31:52 +01:00
|
|
|
/* funcs/rotate.c module */
|
|
|
|
/* #coronamaison */
|
|
|
|
int fimg_rotate_90(FloatImg *src, FloatImg *dst, int notused);
|
2020-02-07 18:01:28 +01:00
|
|
|
|
2020-10-16 11:20:10 +02:00
|
|
|
|
|
|
|
/* universal exporter XXX */
|
|
|
|
int fimg_export_picture(FloatImg *pic, char *fname, int flags);
|
|
|
|
|
2019-03-03 16:22:55 +01:00
|
|
|
/* PNM files module */
|
2019-09-17 11:22:00 +02:00
|
|
|
int fimg_save_as_pnm(FloatImg *head, char *fname, int flags);
|
2019-06-29 19:33:23 +02:00
|
|
|
int fimg_load_from_pnm(char *fname, FloatImg *head, int notused);
|
2019-03-03 16:22:55 +01:00
|
|
|
|
|
|
|
double fimg_timer_set(int whot);
|
|
|
|
double fimg_timer_get(int whot);
|
|
|
|
|
2019-11-12 13:57:32 +01:00
|
|
|
/* --> lib/contrast.c */
|
2019-11-18 10:18:30 +01:00
|
|
|
int fimg_id_contraste(char *name);
|
2019-11-12 13:57:32 +01:00
|
|
|
int fimg_square_root(FloatImg *s, FloatImg *d, double maxval);
|
|
|
|
int fimg_power_2(FloatImg *s, FloatImg *d, double maxval);
|
2019-11-14 14:23:12 +01:00
|
|
|
int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval);
|
2019-12-03 14:25:30 +01:00
|
|
|
int fimg_cos_010(FloatImg *s, FloatImg *d, double maxval);
|
2019-03-03 16:22:55 +01:00
|
|
|
|
2020-07-28 08:19:38 +02:00
|
|
|
|
|
|
|
int fimg_mix_rgb_gray(FloatImg *img, float mix);
|
2020-08-06 13:13:10 +02:00
|
|
|
int fimg_shift_to_zero(FloatImg *s, FloatImg *d, float coefs[6]);
|
2020-07-28 08:19:38 +02:00
|
|
|
|
2020-10-09 01:26:07 +02:00
|
|
|
/* * * * experimental ! */
|
2020-10-06 12:48:17 +02:00
|
|
|
int fimg_classif_trial(FloatImg *src, FloatImg*dst, float fval, int notused);
|
2020-10-09 01:26:07 +02:00
|
|
|
int fimg_qsort_rgb_a(FloatImg *psrc, FloatImg *pdst, int notused);
|
|
|
|
int fimg_qsort_rgb_b(FloatImg *psrc, FloatImg *pdst, int notused);
|
2020-07-28 08:19:38 +02:00
|
|
|
|
2020-04-11 23:18:33 +02:00
|
|
|
/* module funcs/geometry.c */
|
2020-08-13 07:25:55 +02:00
|
|
|
int fimg_equalize_compute(FloatImg *src, void *vptr, float vmax);
|
2020-04-11 23:18:33 +02:00
|
|
|
|
2019-08-24 13:06:51 +02:00
|
|
|
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k);
|
2020-01-22 18:16:26 +01:00
|
|
|
int fimg_desaturate(FloatImg *src, FloatImg *dst, int k);
|
2019-08-24 13:06:51 +02:00
|
|
|
|
2020-02-13 20:44:22 +01:00
|
|
|
/* module funcs/geometry.c */
|
|
|
|
int fimg_halfsize_0(FloatImg *src, FloatImg *dst, int notused);
|
|
|
|
|
2020-10-26 18:49:37 +01:00
|
|
|
int fimg_displacement_0(FloatImg *psrc, FloatImg *pdst, int flags);
|
|
|
|
|
2020-01-03 18:21:43 +01:00
|
|
|
/* module funcs/rampes.c */
|
|
|
|
int fimg_hdeg_a(FloatImg *img, double dcoef);
|
|
|
|
int fimg_vdeg_a(FloatImg *img, double dcoef);
|
|
|
|
|
2019-03-03 16:22:55 +01:00
|
|
|
/* FIMG files module */
|
|
|
|
int fimg_fileinfos(char *fname, int *datas);
|
|
|
|
int fimg_dump_to_file(FloatImg *head, char *fname, int notused);
|
2019-12-18 14:39:47 +01:00
|
|
|
int fimg_load_from_dump(char *fname, FloatImg *where);
|
2019-03-03 16:22:55 +01:00
|
|
|
int fimg_create_from_dump(char *fname, FloatImg *head);
|
|
|
|
|
2020-07-24 10:38:13 +02:00
|
|
|
int fimg_save_R_as_fits(FloatImg *src, char *outname, int flags);
|
2020-07-24 22:32:19 +02:00
|
|
|
int fimg_save_G_as_fits(FloatImg *src, char *outname, int flags);
|
|
|
|
int fimg_save_B_as_fits(FloatImg *src, char *outname, int flags);
|
2020-07-24 10:38:13 +02:00
|
|
|
|
2020-08-22 02:16:13 +02:00
|
|
|
int fimg_write_as_tiff(FloatImg *src, char *fname, int flags);
|
|
|
|
|
2020-07-24 10:38:13 +02:00
|
|
|
|
2020-03-02 01:19:57 +01:00
|
|
|
/* mathematics operations */
|
2019-03-03 16:22:55 +01:00
|
|
|
float fimg_get_maxvalue(FloatImg *head);
|
2020-03-02 01:19:57 +01:00
|
|
|
int fimg_get_minmax_rgb(FloatImg *head, float mmvals[6]);
|
2019-03-03 16:22:55 +01:00
|
|
|
int fimg_meanvalues(FloatImg *head, float means[4]);
|
|
|
|
int fimg_to_gray(FloatImg *head);
|
|
|
|
void fimg_add_cste(FloatImg *fi, float value);
|
2019-09-10 01:31:48 +02:00
|
|
|
void fimg_mul_cste(FloatImg *fi, float value);
|
2020-10-09 01:26:07 +02:00
|
|
|
int fimg_ajust_from_grab(FloatImg *fi, double maxima, int notused);
|
2019-03-03 16:22:55 +01:00
|
|
|
void fimg_drand48(FloatImg *fi, float kmul);
|
2019-09-25 09:21:00 +02:00
|
|
|
int fimg_count_negativ(FloatImg *fi);
|
2020-02-29 20:01:11 +01:00
|
|
|
int fimg_clamp_negativ(FloatImg *fi);
|
2019-03-03 16:22:55 +01:00
|
|
|
|
2019-05-20 08:47:13 +02:00
|
|
|
/* various funcs modules */
|
2019-03-03 16:22:55 +01:00
|
|
|
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);
|
|
|
|
|
2020-02-29 20:52:06 +01:00
|
|
|
int fimg_test_pattern(FloatImg *fimg, int type, double dval);
|
2019-03-03 16:22:55 +01:00
|
|
|
int fimg_draw_something(FloatImg *fimg);
|
|
|
|
|
2020-10-26 16:19:51 +01:00
|
|
|
/* file is 'funcs/utils.c' */
|
|
|
|
void fimg_print_minmax(float minmax[6], char *titre);
|
2019-08-28 21:08:59 +02:00
|
|
|
int parse_WxH(char *str, int *pw, int *ph);
|
2019-09-16 12:28:47 +02:00
|
|
|
int parse_double(char *str, double *dptr);
|
2019-10-30 15:49:53 +01:00
|
|
|
int format_from_extension(char *fname);
|
|
|
|
|
2019-09-16 12:28:47 +02:00
|
|
|
|
|
|
|
|
2019-03-03 16:22:55 +01:00
|
|
|
|
|
|
|
|