Compare commits
No commits in common. "c59eedd33c50f0d9fe4cca51b1460282ce63946e" and "98affe4b403005619745ba1a9616a9571e234ef9" have entirely different histories.
c59eedd33c
...
98affe4b40
@ -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
|
||||
avec notre multivac neuronal n'est devenue quantifiable qu'avec
|
||||
l'arrivée des premiers calculateurs
|
||||
numériques quand certains ont songé à passer du flou mental à la grille
|
||||
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
|
||||
numériques quand certains ont songé à passer du flou mental à la grille physique.
|
||||
|
||||
\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.
|
||||
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
|
||||
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
|
||||
\textbf{vigueur} la webcam de Playstation (aka PsEye).
|
||||
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}
|
||||
|
||||
@ -128,9 +123,9 @@ grains de lumière chromatisés.
|
||||
\subsubsection*{quelques belles images / schémas polychromes en intro pour
|
||||
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
|
||||
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
|
||||
dans une jolie structure que nous allons examiner dès maintenant.
|
||||
|
||||
\label{FloatImg desc}
|
||||
|
||||
\begin{lstlisting}
|
||||
/* in memory descriptor */
|
||||
typedef struct {
|
||||
unsigned long magic;
|
||||
int magic;
|
||||
int width;
|
||||
int height;
|
||||
int type;
|
||||
@ -363,7 +356,7 @@ typedef struct {
|
||||
float *R, *G, *B, *A;
|
||||
int reserved;
|
||||
} FloatImg;
|
||||
\end{lstlisting}\index{FloatImg desc}
|
||||
\end{lstlisting}\index{FloatImg}
|
||||
|
||||
Le premier champ, \texttt{magic}, servira un de ces jours à
|
||||
robustifier l'ensemble du machin.
|
||||
@ -926,16 +919,13 @@ Usage: mkfimg [options] quux.fimg width height
|
||||
-v increase verbosity
|
||||
\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
|
||||
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.
|
||||
|
||||
\begin{description} \index{XXX}
|
||||
\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 [hdeg/vdeg:] dégradé du noir au blanc (relatif à \texttt{-k}).
|
||||
\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}
|
||||
ne devrait pas être trop difficile. Des volontaires ?
|
||||
|
||||
D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
|
||||
seul devrait être nécessaire ?, ce qui me conduit à envisager
|
||||
un \textsl{exporter} universel, mais dont l'ergonomie et les
|
||||
paramètres possibles doivent être réfléchis avec vigueur et nonchalance.
|
||||
\textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
|
||||
seul devrait être nécessaire ?}
|
||||
|
||||
% -------------------------
|
||||
|
||||
|
@ -4,12 +4,11 @@
|
||||
* http://la.buvette.org/photos/cumul
|
||||
*/
|
||||
|
||||
#define FIMG_VERSION 143
|
||||
#define FIMG_VERSION 142
|
||||
|
||||
/*
|
||||
* in memory descriptor
|
||||
*/
|
||||
#define MAGIC_FIMG 0x00F11F00
|
||||
typedef struct {
|
||||
unsigned long magic;
|
||||
int width;
|
||||
@ -29,7 +28,6 @@ typedef struct {
|
||||
int w, h, t;
|
||||
} FimgFileHead;
|
||||
|
||||
#define MAGIC_AREA51 0xA5EA0051
|
||||
typedef struct {
|
||||
unsigned long magic;
|
||||
int w, h;
|
||||
|
@ -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 \
|
||||
equalize.o fimg-fits.o saturation.o histogram.o \
|
||||
hsv.o classif.o contour2x2.o qsortrgb.o exporter.o \
|
||||
displacement.o dithering.o plasmas.o incrustator.o \
|
||||
recurse.o
|
||||
displacement.o dithering.o plasmas.o incrustator.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)
|
||||
gcc $(COPT) -c $<
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------- */
|
@ -16,41 +16,6 @@
|
||||
|
||||
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)
|
||||
{
|
||||
@ -82,7 +47,7 @@ if (foo) {
|
||||
return foo;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
/* --------------------------------------------------------------------- */
|
||||
/* nouveau 21 mars 2021 - rue d'Aragon */
|
||||
|
@ -169,7 +169,6 @@ if (1 != argc-optind) {
|
||||
foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val);
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -165,13 +165,6 @@ if (foo) {
|
||||
* we can now create the resultant image, and going coredump...
|
||||
*/
|
||||
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");
|
||||
|
||||
foo = exec_operator(&srcA, &srcB, action, &dest);
|
||||
|
@ -63,7 +63,7 @@ int foo;
|
||||
puts("Usage:\tmkfimg [options] quux.fimg width height");
|
||||
|
||||
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++) {
|
||||
printf("%s ", types[foo].name);
|
||||
}
|
||||
@ -79,7 +79,7 @@ exit(0);
|
||||
/* --------------------------------------------------------------------- */
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo, opt, nbargs;
|
||||
int foo, opt;
|
||||
int width, height;
|
||||
char *fname;
|
||||
float fvalue = 1.0;
|
||||
@ -103,30 +103,18 @@ for (foo=0; foo<argc; foo++)
|
||||
fprintf(stderr, "%3d %s\n", foo, argv[foo]);
|
||||
#endif
|
||||
|
||||
if (3 != argc-optind) {
|
||||
fprintf(stderr, "%s need filename, width & height\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (type < 0) {
|
||||
fprintf(stderr, "type '%s' is unknow\n", tname);
|
||||
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];
|
||||
width = atoi(argv[optind+1]); height = atoi(argv[optind+2]);
|
||||
|
||||
if (verbosity>1) fprintf(stderr, "*** mkfimg *** %s %s\n", __DATE__, __TIME__);
|
||||
if (verbosity) fprintf(stderr, "making '%s' %d x %d, type %d\n",
|
||||
|
Loading…
Reference in New Issue
Block a user