not ready for prime time

This commit is contained in:
tth 2021-04-28 00:21:45 +02:00
parent 821377f666
commit bcc534a54d
12 changed files with 50 additions and 36 deletions

View File

@ -2,8 +2,8 @@
C'est d"abord un ensemble de fonctions pour traiter des images avec une énorme dynamique C'est d"abord un ensemble de fonctions pour traiter des images avec une énorme dynamique
sur les niveaux de pixels. C'est aussi quelques outils pour traiter ces images. sur les niveaux de pixels. C'est aussi quelques outils pour traiter ces images.
Et c'est enfin un embryon de logiciel destiné à faire des photos floues, voire même Et c'est enfin plusieurs embryons de logiciel destiné à faire des photos floues,
des [films flous](Fonderie/). voire même des [films flous](Fonderie/).
![horloge floue](http://la.buvette.org/photos/cumul/horloge.png "horloge floue") ![horloge floue](http://la.buvette.org/photos/cumul/horloge.png "horloge floue")

View File

@ -8,10 +8,7 @@ LIBS = -ltiff -lpnglite -lcfitsio
all: assemblage extracteur all: assemblage extracteur
incrustator.o: incrustator.c incrustator.h Makefile assemblage: assemblage.c Makefile
gcc -c $(COPT) $<
assemblage: assemblage.c Makefile incrustator.o
gcc $(COPT) $< incrustator.o ../libfloatimg.a $(LIBS) -o $@ gcc $(COPT) $< incrustator.o ../libfloatimg.a $(LIBS) -o $@
extracteur: extracteur.c Makefile extracteur: extracteur.c Makefile

View File

@ -14,7 +14,7 @@ int verbosity;
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */ /* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */ /* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
int print_rectangle(Rectangle *rect) int print_rectangle(FimgArea51 *rect)
{ {
printf("rect @ %p : %dx%d at %d,%d\n", rect, rect->w, rect->h, printf("rect @ %p : %dx%d at %d,%d\n", rect, rect->w, rect->h,
@ -24,7 +24,7 @@ return 0;
} }
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */ /* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */ /* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
int essai_extraction(FloatImg *in, FloatImg *out, Rectangle *rect) int essai_extraction(FloatImg *in, FloatImg *out, FimgArea51 *rect)
{ {
int foo; int foo;
int xs, ys, xd, yd; int xs, ys, xd, yd;
@ -66,7 +66,7 @@ int main(int argc, char *argv[])
{ {
int foo, opt; int foo, opt;
FloatImg src, dst; FloatImg src, dst;
Rectangle zone; FimgArea51 zone;
char *infile = "foo.fimg"; char *infile = "foo.fimg";
char *outfile = "out.fimg"; char *outfile = "out.fimg";

View File

@ -2,11 +2,8 @@
* incrustator experimental * incrustator experimental
*/ */
typedef struct { /*
unsigned long magic; * MOVED TO 'funcs/inscrutator.c'
int w, h; */
int x, y;
} FimgArea51;
int incrustator_0(FloatImg *psrc, FloatImg *pdst, int incrustator_0(FloatImg *psrc, FloatImg *pdst,
int xpos, int ypos, int flags); int xpos, int ypos, int flags);

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul * http://la.buvette.org/photos/cumul
*/ */
#define FIMG_VERSION 137 #define FIMG_VERSION 141
/* /*
* in memory descriptor * in memory descriptor
@ -33,7 +33,7 @@ typedef struct {
int w, h; int w, h;
int x, y; int x, y;
int flags; int flags;
} Rectangle; } FimgArea51;
#define FIMG_TYPE_GRAY 1 #define FIMG_TYPE_GRAY 1
#define FIMG_TYPE_RGB 3 #define FIMG_TYPE_RGB 3
@ -164,11 +164,16 @@ int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k);
int fimg_desaturate(FloatImg *src, FloatImg *dst, int notused); int fimg_desaturate(FloatImg *src, FloatImg *dst, int notused);
/* module funcs/geometry.c */ /* module funcs/geometry.c */
/* warning, this module is a mess */
int fimg_halfsize_0(FloatImg *src, FloatImg *dst, int notused); int fimg_halfsize_0(FloatImg *src, FloatImg *dst, int notused);
int fimg_halfsize_1(FloatImg *src, FloatImg *dst, int notused); int fimg_halfsize_1(FloatImg *src, FloatImg *dst, int notused);
int fimg_extractor(FloatImg *in, FloatImg *out, Rectangle *rect); int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect);
int fimg_mirror(FloatImg *src, FloatImg *dst, int notused); int fimg_mirror(FloatImg *src, FloatImg *dst, int notused);
int fimg_incrustator_0(FloatImg *psrc, FloatImg *pdst,
int xpos, int ypos, int flags);
int fimg_displacement_0(FloatImg *psrc, FloatImg *pdst, int flags); int fimg_displacement_0(FloatImg *psrc, FloatImg *pdst, int flags);
/* module funcs/rampes.c */ /* module funcs/rampes.c */
@ -217,7 +222,7 @@ int fimg_multirandom(FloatImg *fimg, long nbpass);
void fimg_print_minmax(float minmax[6], char *titre); void fimg_print_minmax(float minmax[6], char *titre);
int parse_WxH(char *str, int *pw, int *ph); int parse_WxH(char *str, int *pw, int *ph);
int parse_double(char *str, double *dptr); int parse_double(char *str, double *dptr);
int parse_rectangle(char *str, Rectangle *r, int notused); int parse_rectangle(char *str, FimgArea51 *r, int notused);
int format_from_extension(char *fname); int format_from_extension(char *fname);
char * extension_from_format(int fmt); char * extension_from_format(int fmt);

View File

@ -11,7 +11,7 @@ OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \
geometry.o rotate.o fimg-openexr.o \ geometry.o rotate.o fimg-openexr.o \
equalize.o fimg-fits.o saturation.o histogram.o \ equalize.o fimg-fits.o saturation.o histogram.o \
hsv.o classif.o contour2x2.o qsortrgb.o exporter.o \ hsv.o classif.o contour2x2.o qsortrgb.o exporter.o \
displacement.o dithering.o plasmas.o displacement.o dithering.o plasmas.o incrustator.o
#--------------------------------------------------------------- #---------------------------------------------------------------
@ -33,6 +33,11 @@ tests.o: tests.c tests.h $(DEPS)
../libfloatimg.a: $(OBJS) ../libfloatimg.a: $(OBJS)
$(AR) r $@ $? $(AR) r $@ $?
# ###
incrustator.o: incrustator.c $(DEPS)
gcc $(COPT) -c $<
displacement.o: displacement.c $(DEPS) displacement.o: displacement.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<

View File

@ -105,7 +105,7 @@ for (y=0; y<hd; y++) {
return 0; return 0;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
int fimg_extractor(FloatImg *in, FloatImg *out, Rectangle *rect) int fimg_extractor(FloatImg *in, FloatImg *out, FimgArea51 *rect)
{ {
int foo; int foo;
int xs, ys, xd, yd; int xs, ys, xd, yd;
@ -136,6 +136,8 @@ for (yd=0; yd<rect->h; yd++) {
return 0; return 0;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
/* ho, btw, you can have a locck at 'incrustator.c' :) */
/* --------------------------------------------------------------------- */
int fimg_mirror(FloatImg *src, FloatImg *dst, int notused) int fimg_mirror(FloatImg *src, FloatImg *dst, int notused)
{ {
float *fptr; float *fptr;

View File

@ -1,5 +1,6 @@
/* /*
* incrustator experimental * incrustator experimental
* KRKRK
*/ */
#include <stdio.h> #include <stdio.h>
@ -8,7 +9,7 @@
#include "../floatimg.h" #include "../floatimg.h"
#include "incrustator.h" // XXX #include "incrustator.h"
extern int verbosity; extern int verbosity;
@ -43,7 +44,7 @@ fprintf(stderr, ">>> %s ( %p %p %p 0x%04x )\n", __func__,
return -1; return -1;
} }
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
int incrustator_0(FloatImg *psrc, FloatImg *pdst, int fimg_incrustator_0(FloatImg *psrc, FloatImg *pdst,
int xpos, int ypos, int flags) int xpos, int ypos, int flags)
{ {
int y, srcpos, dstpos, szl; int y, srcpos, dstpos, szl;

View File

@ -1,5 +1,5 @@
/* /*
* FloatImg library from tTh - ugly code inside * FloatImg library from tTh - really ugly code inside
*/ */
#include <stdio.h> #include <stdio.h>
@ -7,7 +7,7 @@
#include "../floatimg.h" #include "../floatimg.h"
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
/* global vars from main /* global vars exported from main
*/ */
extern int verbosity; extern int verbosity;
@ -28,7 +28,6 @@ if (FIMG_TYPE_RGB != img->type) {
for (y=0; y<img->height; y++) { for (y=0; y<img->height; y++) {
p = y * img->width; /* first pixel of the row */ p = y * img->width; /* first pixel of the row */
for (x=0; x<img->width; x++) { for (x=0; x<img->width; x++) {
gr = (img->R[p] + img->G[p] + img->R[p]) / 3.0; gr = (img->R[p] + img->G[p] + img->R[p]) / 3.0;
@ -36,15 +35,12 @@ for (y=0; y<img->height; y++) {
img->R[p] = ((gr * mix) + (img->R[p] * (1.0-mix))) / 2.0; img->R[p] = ((gr * mix) + (img->R[p] * (1.0-mix))) / 2.0;
img->G[p] = ((gr * mix) + (img->G[p] * (1.0-mix))) / 2.0; img->G[p] = ((gr * mix) + (img->G[p] * (1.0-mix))) / 2.0;
img->B[p] = ((gr * mix) + (img->B[p] * (1.0-mix))) / 2.0; img->B[p] = ((gr * mix) + (img->B[p] * (1.0-mix))) / 2.0;
p++; /* next pixel in the row */ p++; /* next pixel in the row */
} }
} }
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
/* /*
* The third parameter was a six value array with min and max * The third parameter was a six value array with min and max
@ -60,7 +56,6 @@ if (FIMG_TYPE_RGB != s->type) {
} }
sz = s->width * s->height; sz = s->width * s->height;
for (idx=0; idx<sz; idx++) { for (idx=0; idx<sz; idx++) {
d->R[idx] = s->R[idx] - coefs[0]; d->R[idx] = s->R[idx] - coefs[0];
d->G[idx] = s->G[idx] - coefs[2]; d->G[idx] = s->G[idx] - coefs[2];
@ -69,10 +64,10 @@ for (idx=0; idx<sz; idx++) {
return 0; return 0;
} }
/* -------------------------------------------------------------- */ /* -------------------------------------------------------------- */
/* /*
* I think that this function is fully buggy * I think that this function is fully buggy, and need
* more explanations.
*/ */
int fimg_auto_shift_to_zero(FloatImg *src, FloatImg *dst) int fimg_auto_shift_to_zero(FloatImg *src, FloatImg *dst)
{ {
@ -80,6 +75,10 @@ float coefs[6];
int foo; int foo;
float minima = 1e7; /* magic value ? */ float minima = 1e7; /* magic value ? */
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p )\n", __func__, src, dst);
#endif
if (FIMG_TYPE_RGB != src->type) { if (FIMG_TYPE_RGB != src->type) {
fprintf(stderr, "%s: bad image type %d\n", __func__, src->type); fprintf(stderr, "%s: bad image type %d\n", __func__, src->type);
return -6; return -6;

View File

@ -75,7 +75,7 @@ return -1;
/* /*
* /!\ return 4 on success * /!\ return 4 on success
*/ */
int parse_rectangle(char *str, Rectangle *r, int notused) int parse_rectangle(char *str, FimgArea51 *r, int notused)
{ {
int x, y, w, h, foo; int x, y, w, h, foo;

View File

@ -22,7 +22,7 @@ typedef struct {
enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0, enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0,
Fx_rot90, Fx_cmixa, Fx_desat, Fx_ctr2x2, Fx_norm, Fx_rot90, Fx_cmixa, Fx_desat, Fx_ctr2x2, Fx_norm,
Fx_classtrial, Fx_mirror, Fx_classtrial, Fx_mirror, Fx_shift0,
Fx_xper, Fx_binarize, Fx_trinarize,Fx_hilight_R }; Fx_xper, Fx_binarize, Fx_trinarize,Fx_hilight_R };
Fx fx_list[] = { Fx fx_list[] = {
@ -38,6 +38,7 @@ Fx fx_list[] = {
{ "desat", Fx_desat, 0, 1 }, { "desat", Fx_desat, 0, 1 },
{ "ctr2x2", Fx_ctr2x2, 0, 1 }, { "ctr2x2", Fx_ctr2x2, 0, 1 },
{ "mirror", Fx_mirror, 0, 1 }, { "mirror", Fx_mirror, 0, 1 },
{ "shift0", Fx_shift0, 0, 1 },
// { "norm", Fx_norm, 0, 1 }, // { "norm", Fx_norm, 0, 1 },
{ "classtrial", Fx_classtrial, 0, 1 }, { "classtrial", Fx_classtrial, 0, 1 },
{ "binarize", Fx_binarize, 0, 1 }, { "binarize", Fx_binarize, 0, 1 },
@ -208,6 +209,10 @@ switch (action) {
case Fx_mirror: case Fx_mirror:
foo = fimg_mirror(&src, &dest, 0); foo = fimg_mirror(&src, &dest, 0);
break; break;
case Fx_shift0:
fprintf(stderr, "Krkrk %d\n", action);
foo = fimg_auto_shift_to_zero(&src, &dest);
break;
case Fx_ctr2x2: case Fx_ctr2x2:
foo = fimg_contour_2x2(&src, &dest, 0); foo = fimg_contour_2x2(&src, &dest, 0);
break; break;

View File

@ -84,7 +84,10 @@ if (verbosity) {
} }
foo = faire_un_halfsize(srcname, dstname, grayed); foo = faire_un_halfsize(srcname, dstname, grayed);
if (foo) {
fprintf(stderr, "in %s: make halfsize give a %d\n", argv[0], foo);
exit(1);
}
return 0; return 0;
} }