Compare commits

..

No commits in common. "c59eedd33c50f0d9fe4cca51b1460282ce63946e" and "98affe4b403005619745ba1a9616a9571e234ef9" have entirely different histories.

8 changed files with 23 additions and 122 deletions

View File

@ -98,23 +98,18 @@ Une représentation approximative d'un monde physique invisible.
L'infinie bio-complexité de notre système oculaire et ses interactions L'infinie bio-complexité de notre système oculaire et ses interactions
avec notre multivac neuronal n'est devenue quantifiable qu'avec avec notre multivac neuronal n'est devenue quantifiable qu'avec
l'arrivée des premiers calculateurs l'arrivée des premiers calculateurs
numériques quand certains ont songé à passer du flou mental à la grille numériques quand certains ont songé à passer du flou mental à la grille physique.
physique.
Les détails techniques sur cette représentation sont en page
\pageref{FloatImg desc}, avec des pointeurs dedans.
Ah, les pointeurs, la pire chose du monde\dots
\subsubsection*{quelques rappels de comment on acquiert et numérise une image} \subsubsection*{quelques rappels de comment on acquiert et numérise une image}
Avant de se l'approprier, il vaut la rendre réelle dans sa vision intérieur. Avant de se l'approprier, il vaut la rendre réelle dans sa vision intérieur.
Il faut l'imaginer comme des lignes de code interposées entre la grille Il faut l'imaginer comme des lignes de code interposées entre la grille
physique dont on vient de parler, et une autre grille, bien réelle, des physique dont on vient de parler, et une autre grille, bien réelle, des
pixels sur notre écran Trinitron de 44cm. pixels sur notre écran Trititron\footnote{Sony, u'r the best !} de 44cm.
Et puisque on en parle, je me permet de vous conseiller avec Et puisque on en parle, je me permet de vous conseiller avec
\textbf{vigueur} la webcam de Playstation (aka PsEye). \textbf{vigueur} la webcam de Playstation (aka PsEye).
Moins de 10 Euros Moins de 10 Euros
dans les machin-trocs, et un grain d'image vraiment présent. dans les trocs, et un grain d'image vraiment présent.
\texttt{https://fr.wikipedia.org/wiki/PlayStation\_Eye} \texttt{https://fr.wikipedia.org/wiki/PlayStation\_Eye}
@ -128,9 +123,9 @@ grains de lumière chromatisés.
\subsubsection*{quelques belles images / schémas polychromes en intro pour \subsubsection*{quelques belles images / schémas polychromes en intro pour
illustrer tout ça} illustrer tout ça}
Tour cela est dans le grand Ternet\footnote{\textsl{Thanks, mister J Postel}} Tour cela est dans le grand Ternet\footnote{\textsl{bik kudo 2 J Postel}}
mondial, je pourrais même vous donner l'url si vous me promettez de ne pas mondial, je pourrais même vous donner l'url si vous me promettez de ne pas
la glisser dans le capitalisme de surveillance. la glissr dans le capitalisme de surveillance.
% =================================================================== % ===================================================================
@ -349,12 +344,10 @@ sont décrits par un ensemble
de données (certains appelent ça des \textsl{metadatas}) regroupées de données (certains appelent ça des \textsl{metadatas}) regroupées
dans une jolie structure que nous allons examiner dès maintenant. dans une jolie structure que nous allons examiner dès maintenant.
\label{FloatImg desc}
\begin{lstlisting} \begin{lstlisting}
/* in memory descriptor */ /* in memory descriptor */
typedef struct { typedef struct {
unsigned long magic; int magic;
int width; int width;
int height; int height;
int type; int type;
@ -363,7 +356,7 @@ typedef struct {
float *R, *G, *B, *A; float *R, *G, *B, *A;
int reserved; int reserved;
} FloatImg; } FloatImg;
\end{lstlisting}\index{FloatImg desc} \end{lstlisting}\index{FloatImg}
Le premier champ, \texttt{magic}, servira un de ces jours à Le premier champ, \texttt{magic}, servira un de ces jours à
robustifier l'ensemble du machin. robustifier l'ensemble du machin.
@ -926,16 +919,13 @@ Usage: mkfimg [options] quux.fimg width height
-v increase verbosity -v increase verbosity
\end{verbatim} \end{verbatim}
Il y a deux syntaxes possibles pour les dimensions de l'image générée~:
deux nombres séparés ou la notation \texttt{WIDTHxHEIGHT}.
La plupart des types d'image générée prennent un paramètre flottant qui La plupart des types d'image générée prennent un paramètre flottant qui
devra être donné avec l'option \texttt{-k F.F} avec une valeur par défaut devra être donné avec l'option \texttt{-k F.F} avec une valeur par défaut
à $1.0$, ce qui n'est pas toujours une bonne valeur. à $1.0$, ce qui n'est pas toujours une bonne valeur.
\begin{description} \index{XXX} \begin{description} \index{XXX}
\item [black/gray/grey:] efface avec 0.0 (black) ou avec la valeur \item [black/gray/grey:] efface avec 0.0 (black) ou avec la valeur
\texttt{-k} (niveau de gris). \texttt{-k} (gray).
\item [drand48:] beaucoup de bruit dans chacun des canaux. \item [drand48:] beaucoup de bruit dans chacun des canaux.
\item [hdeg/vdeg:] dégradé du noir au blanc (relatif à \texttt{-k}). \item [hdeg/vdeg:] dégradé du noir au blanc (relatif à \texttt{-k}).
\end{description} \end{description}
@ -1052,10 +1042,8 @@ D'un autre coté, écrire un greffon d'import/export pour
Gimp\index{Gimp} ou ImageMagick\index{ImageMagick} ou Krita\index{krita} Gimp\index{Gimp} ou ImageMagick\index{ImageMagick} ou Krita\index{krita}
ne devrait pas être trop difficile. Des volontaires ? ne devrait pas être trop difficile. Des volontaires ?
D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un \textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
seul devrait être nécessaire ?, ce qui me conduit à envisager seul devrait être nécessaire ?}
un \textsl{exporter} universel, mais dont l'ergonomie et les
paramètres possibles doivent être réfléchis avec vigueur et nonchalance.
% ------------------------- % -------------------------

View File

@ -4,12 +4,11 @@
* http://la.buvette.org/photos/cumul * http://la.buvette.org/photos/cumul
*/ */
#define FIMG_VERSION 143 #define FIMG_VERSION 142
/* /*
* in memory descriptor * in memory descriptor
*/ */
#define MAGIC_FIMG 0x00F11F00
typedef struct { typedef struct {
unsigned long magic; unsigned long magic;
int width; int width;
@ -29,7 +28,6 @@ typedef struct {
int w, h, t; int w, h, t;
} FimgFileHead; } FimgFileHead;
#define MAGIC_AREA51 0xA5EA0051
typedef struct { typedef struct {
unsigned long magic; unsigned long magic;
int w, h; int w, h;

View File

@ -11,8 +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 incrustator.o \ displacement.o dithering.o plasmas.o incrustator.o
recurse.o
#--------------------------------------------------------------- #---------------------------------------------------------------
@ -36,9 +35,6 @@ tests.o: tests.c tests.h $(DEPS)
# ### # ###
recurse.o: recurse.c $(DEPS)
gcc $(COPT) -c $<
incrustator.o: incrustator.c $(DEPS) incrustator.o: incrustator.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<

View File

@ -1,26 +0,0 @@
/*
RECURSION 'QUADTREE' SUR LES IMAGES
-----------------------------------
*/
#include <stdio.h>
#include <math.h>
#include "../floatimg.h"
/* -------------------------------------------------------------------- */
/* may be we need some private variables ? */
/* -------------------------------------------------------------------- */
/* nouveau 29 avril 2021, pendant un autre masque-flamme coronavidique */
int fimg_recursion_proto(FloatImg *src, FloatImg *dst, int notused)
{
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, src, dst, notused);
#endif
return -1;
}
/* -------------------------------------------------------------------- */
/* -------------------------------------------------------------------- */

View File

@ -16,41 +16,6 @@
extern int verbosity; extern int verbosity;
/* --------------------------------------------------------------------- */
int fimg_recursion_proto(FloatImg *src, FloatImg *dst, int notused);
int essai_recursion(char *inf, char *outf, int flags)
{
int foo;
FloatImg src, dst;
fprintf(stderr, ">>> %s ( '%s' '%s' 0x%04X )\n", __func__,
inf, outf, flags);
foo = fimg_create_from_dump(inf, &src);
if (0 != foo) {
fprintf(stderr, "%s: err %d loading image '%s'\n", __func__,
foo, inf);
return foo;
}
fimg_clone(&src, &dst, 0);
foo = fimg_recursion_proto(&src, &dst, flags);
if (foo) {
fprintf(stderr, "%s: fail %d\n", __func__, foo);
return foo;
}
foo = fimg_export_picture(&dst, outf, 0);
if (foo) {
fprintf(stderr, "%s : err %d saving result\n", __func__, foo);
return foo;
}
return -1;
}
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
int essai_miroir(char *inf, char *outf, int flags) int essai_miroir(char *inf, char *outf, int flags)
{ {
@ -82,7 +47,7 @@ if (foo) {
return foo; return foo;
} }
return 0; return -1;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
/* nouveau 21 mars 2021 - rue d'Aragon */ /* nouveau 21 mars 2021 - rue d'Aragon */

View File

@ -169,7 +169,6 @@ if (1 != argc-optind) {
foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val); foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val);
if (foo) { if (foo) {
fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo); fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo);
return 1;
} }
return 0; return 0;

View File

@ -165,13 +165,6 @@ if (foo) {
* we can now create the resultant image, and going coredump... * we can now create the resultant image, and going coredump...
*/ */
foo = fimg_create(&dest, srcA.width, srcA.height, srcA.type); foo = fimg_create(&dest, srcA.width, srcA.height, srcA.type);
if (foo) {
fprintf(stderr, "%s: crash coredump on create fimg\n", argv[0]);
#if MUST_ABORT
abort();
#endif
exit(1);
}
// fimg_describe(&dest, "destination"); // fimg_describe(&dest, "destination");
foo = exec_operator(&srcA, &srcB, action, &dest); foo = exec_operator(&srcA, &srcB, action, &dest);

View File

@ -63,7 +63,7 @@ int foo;
puts("Usage:\tmkfimg [options] quux.fimg width height"); puts("Usage:\tmkfimg [options] quux.fimg width height");
puts("\t-k N.N\tgive a float parameter"); puts("\t-k N.N\tgive a float parameter");
fputs("\t-t bla\thowto make the pic :\n\t\t", stdout); fputs("\t-t bla\thowto make the pic\n\t\t", stdout);
for (foo=0; types[foo].code; foo++) { for (foo=0; types[foo].code; foo++) {
printf("%s ", types[foo].name); printf("%s ", types[foo].name);
} }
@ -79,7 +79,7 @@ exit(0);
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int foo, opt, nbargs; int foo, opt;
int width, height; int width, height;
char *fname; char *fname;
float fvalue = 1.0; float fvalue = 1.0;
@ -103,33 +103,21 @@ for (foo=0; foo<argc; foo++)
fprintf(stderr, "%3d %s\n", foo, argv[foo]); fprintf(stderr, "%3d %s\n", foo, argv[foo]);
#endif #endif
if (3 != argc-optind) {
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
exit(1);
}
if (type < 0) { if (type < 0) {
fprintf(stderr, "type '%s' is unknow\n", tname); fprintf(stderr, "type '%s' is unknow\n", tname);
exit(2); exit(2);
} }
nbargs = argc-optind;
switch (nbargs) {
case 2:
if (2!=parse_WxH(argv[optind+1], &width, &height)) {
fprintf(stderr, "%s: parse error on '%s'\n",
argv[0], argv[optind+1]);
exit(1);
}
break;
case 3:
width = atoi(argv[optind+1]);
height = atoi(argv[optind+2]);
break;
default:
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
exit(1);
}
fname = argv[optind]; fname = argv[optind];
width = atoi(argv[optind+1]); height = atoi(argv[optind+2]);
if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", __DATE__, __TIME__); if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", __DATE__, __TIME__);
if (verbosity) fprintf(stderr, "making '%s' %dx%d, type %d\n", if (verbosity) fprintf(stderr, "making '%s' %d x %d, type %d\n",
fname, width, height, type); fname, width, height, type);
srand48(getpid() ^ time(NULL)); srand48(getpid() ^ time(NULL));