Compare commits

..

No commits in common. "f52e24b30c10c06ab64be470d4170a15de362824" and "be48fc6e84a86584339f884fc8a6ee54d5767cef" have entirely different histories.

4 changed files with 22 additions and 64 deletions

View File

@ -128,7 +128,7 @@ 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 Tour cela est dans le grand Ternet\footnote{\textsl{Thanks, mister 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 glisser dans le capitalisme de surveillance.
@ -644,9 +644,7 @@ aux bonnes dimensions (échange W et H).
\subsection{Format du fichier \textsc{fimg}}\index{format}\label{formatfimg} \subsection{Format du fichier \textsc{fimg}}\index{format}\label{formatfimg}
D'un design très empirique, c'est certainement à revoir pour l'avenir. D'un design très empirique, c'est certainement à revoir pour l'avenir.
Tout d'abord pour normaliser l'endianess et le packing dans les structs% Tout d'abord pour normaliser l'endianess et le packing\dots
\footnote{Ce qui n'est pas encore fait}, et surtout l'ajout
de données sur la prise de vue.
\begin{lstlisting} \begin{lstlisting}
typedef struct { typedef struct {
@ -661,47 +659,17 @@ et bien plus encore.
Le champ \texttt{magic[8]} doit contenir une valeur magique~: Le champ \texttt{magic[8]} doit contenir une valeur magique~:
les quatre premier octets doivent contenir les quatre caractères les quatre premier octets doivent contenir les quatre caractères
\texttt{'FIMG'}, et les quatre dernier doivent être à 0, sauf que, \texttt{'FIMG'}, et les quatre dernier doivent être à 0.
voir plus bas.
Le champ \texttt{t} (le type de l'image) doit avoir les trois octets Le champ \texttt{t} (le type de l'image) doit avoir les trois octets
de poids fort à 0. Vous trouverez les constantes de type dans le de poids fort à 0. Vous trouverez les constantes de type dans le
fichier \texttt{floatimg.h}, et quelques informations fichier \texttt{floatimg.h}, et quelques informations
(non-)essentielles qui ne vous serviront probablement à rien. (non-)essentielles qui ne vous servirons probablement à rien.
% ----------------------------------
% new février 2022
\subsection{Métadonnées}
\index{metadata} \index{timestamp}
Attention, ce n'est pas encore une version déinitive, beaucoup de
choses restent à préciser sur le contenu de cette structure, mais
l'essentiel est déja là. On reconnait un fichier avec metadata
quand l'octet \texttt{magic[4]} du premier header est égal à
\texttt{'a'}.
\begin{lstlisting}
typedef struct {
char magic[8];
struct timeval timestamp;
int32_t count;
float fval;
char idcam[32];
int32_t origin; // enum ?
} FimgMetaData;
\end{lstlisting}
Voyons maintenant chacun des champs de cette structure, en prenant bien
en compte qu'à ce moment\footnote{4 avril 2022}, tout n'est pas figé.
Ceci dit, nous allons aussi retrouver de vieilles connaissances.
% ---------------------------------- % ----------------------------------
\subsection{Exportation \& Importation}\index{export}\label{export} \subsection{Exportation \& Importation}\index{export}\label{export}
Notre format de fichier étant totalement inconnu% Notre format de fichier étant totalement inconnu, il nous
\footnote{Du monde extérieur, vous l'aurez compris.},
il nous
faut bien exporter nos images en quelque chose de plus faut bien exporter nos images en quelque chose de plus
connu. Bien entendu, c'est toujours affaire de compromis connu. Bien entendu, c'est toujours affaire de compromis
entre précision de valeurs et taille des fichiers. entre précision de valeurs et taille des fichiers.
@ -740,13 +708,12 @@ Les autres bits ne sont pas utilisés et doivent être à zéro.
\subsubsection{Vers PNG}\index{PNG} \subsubsection{Vers PNG}\index{PNG}
Actuellement, on ne peut enregistrer qu'en mode RGB uniquement, Actuellement, on peut enregistrer uniquement en mode RGB,
avec 8 bits par composante, 8 bits par composante,
mais on a quand même une bonne compression, ça compense. mais on a quand même une bonne compression, ça compense.
J'utilise \textsl{libpnglite} avec qui j'ai un peu de mal à suivre. J'utilise \textsl{libpnglite} avec qui j'ai un peu de mal à suivre.
Mais je me soigne. Le mode 16 bits va bientôt arriver. Mais je me soigne. Le mode 16 bits va bientôt arriver.
On peut aussi songer à l'export des metadatas. On peut aussi songer à l'export de metadatas.
\begin{lstlisting} \begin{lstlisting}
int fimg_save_as_png(FloatImg *src, char *outname, int flags); int fimg_save_as_png(FloatImg *src, char *outname, int flags);
@ -768,7 +735,7 @@ int fimg_write_as_tiff(FloatImg *src, char *outname, int flags);
\end{lstlisting} \end{lstlisting}
Tous les flags doivent être à zéro. Pour le moment. Tous les flags doivent être à zéro. Pour le moment.
Un premier jet pas forcément parfait.
\subsubsection{Vers FITS}\index{FITS} \subsubsection{Vers FITS}\index{FITS}
@ -788,7 +755,6 @@ sais pas encore comment régler ce petit détail.
Tous les flags doivent être à zéro. Tous les flags doivent être à zéro.
% =============================================================
\subsection{Utilitaires} \subsection{Utilitaires}
@ -802,17 +768,16 @@ int parse_WxH(char *str, int *pw, int *ph)
int parse_double(char *str, double *dptr) int parse_double(char *str, double *dptr)
\end{lstlisting} \end{lstlisting}
La fonction \texttt{int format\_from\_extension(char *fname)} examine un La fonction \texttt{int format\_from\_extension(char *fname)} examine un
nom de fichier tel que \texttt{lena.xxx}, et retourne, si la partie nom de fichier tel que \texttt{lena.xxx}, et retourne, si la partie
\texttt{xxx} est connue, un éventuel nombre positif, dont les valeurs sont \texttt{xxx} est connue, un éventuel nombre positif, dont les valeurs sont
déclarées dans floatimg.h déclarées dans floatimg.h
le valeureux. le valeureux.
Les extensions actuellement connues sont : Les extensions actuellement connues sont : fimg, png, pnm, fits et tiff.
fimg, png, pnm, pgm, fits et tiff.
To be continued\index{XXX}\dots To be continued\index{XXX}\dots
% =============================================================
\subsection{Effets}\index{sfx} \subsection{Effets}\index{sfx}
@ -838,7 +803,8 @@ Hélas, j'ai vite réalisé que c'était assez délicat.
Pour ce genre de \textsl{usecase}, le numérique est pitoyable si on Pour ce genre de \textsl{usecase}, le numérique est pitoyable si on
le compare au \textsc{Betamax}\index{Betamax}. le compare au \textsc{Betamax}\index{Betamax}.
% ============================================================= % ----------------------------------
\subsection{Filtrages}\index{filtrage} \subsection{Filtrages}\index{filtrage}
@ -931,7 +897,7 @@ En particulier tout le reste du code qui suppose qu'un pixel
ne peut \textbf{pas} être négatif va peut-être exploser de rire. ne peut \textbf{pas} être négatif va peut-être exploser de rire.
Vous pouvez aussi remarquer qu'il n'y a pas de controle Vous pouvez aussi remarquer qu'il n'y a pas de controle
de cohérence sur les dimensions des deux images, malgré l'existence de cohérence sur les dimensions des deux images, malgré l'existence
de fonctions prévues à cet effet, mais il fallait rester simple\dots de fonctions prévues à cet effet\dots
% =================================================================== % ===================================================================
@ -941,8 +907,7 @@ de fonctions prévues à cet effet, mais il fallait rester simple\dots
in-fine sur des objets que l'on peut considérer comme « physiques », in-fine sur des objets que l'on peut considérer comme « physiques »,
il est important de passer à une utilisation il est important de passer à une utilisation
normale\footnote{Il y a une vie en dehors de git.} et construire normale\footnote{Il y a une vie en dehors de git.} et construire
des trucs qui mettent en action le code primitif pour partir des trucs qui mettent en action le code primitif.
sur des bases saines.
Ces machins ont en commun quelques options bien pratiques~: Ces machins ont en commun quelques options bien pratiques~:
\texttt{-h} pour avoir un résumé des options disponibles, \texttt{-h} pour avoir un résumé des options disponibles,
@ -973,7 +938,7 @@ 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, ymmv\index{ymmv}. à $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
@ -1078,9 +1043,6 @@ La véracité mathématique n'est pas garantie. Et n'oubliez pas que
les valeurs négatives peuvent être la cause de \textsl{glitches} les valeurs négatives peuvent être la cause de \textsl{glitches}
de qualitay. de qualitay.
La liste des opérations est susceptible d'être agrémenté de quelques
possibilités bie féroce\footnote{Stau tuned, flim at 11.}.
% ------------------------- % -------------------------
\subsection{fimg2png, fimg2pnm, fimg2tiff, fimg2fits} \subsection{fimg2png, fimg2pnm, fimg2tiff, fimg2fits}
@ -1148,13 +1110,12 @@ tth@fubar:~/Devel/FloatImg/doc$ fimg2text -s 1 quux.fimg
tth@fubar:~/Devel/FloatImg/doc$ tth@fubar:~/Devel/FloatImg/doc$
\end{verbatim} \end{verbatim}
Et maintenant, vous voulez un gros exemple ? Bah, ça doit demander Et maintenant, vous voulez un gros exemple ?
l'utilisation de Povray\index{Povray}.
% ------------------------- % -------------------------
% beaucoup trop de maths approximative dans ce passage.
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray} \subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
@ -1563,9 +1524,6 @@ Ajustement \textsl{Brightness Contrast Saturation Hue\dots}
% =================================================================== % ===================================================================
\section{À l'extérieur} \section{À l'extérieur}
Il existe une foultitude de logiciels (composants ou end-yuser) et
il est souvent nécessaire de pouvoir comminiquer facilement
avec eux.
\subsection{ImageMagick}\index{ImageMagick} \subsection{ImageMagick}\index{ImageMagick}
@ -1614,6 +1572,7 @@ serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
\textsl{Krita} qui semble avoir les faveurs de \textsl{Krita} qui semble avoir les faveurs de
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}. dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
% -------------------------------------------------------------------
% =================================================================== % ===================================================================
\section{Le flou temporel} \section{Le flou temporel}
@ -1667,7 +1626,6 @@ L'idée est donc de construire un appareil autonome, basé sur un Raspi et
une webcam \textsc{usb}\index{USB}, pilotable par \textsc{lirc}\index{LIRC}, une webcam \textsc{usb}\index{USB}, pilotable par \textsc{lirc}\index{LIRC},
alimenté par une (grosse) batterie et permettant d'aller alimenté par une (grosse) batterie et permettant d'aller
faire des images au bord d'un lac ou dans la campagne de l'Ariège. faire des images au bord d'un lac ou dans la campagne de l'Ariège.
Et, comme le dit la sagesse populaire : « fimg at 11 ».
% ------------------------------------------------------------------- % -------------------------------------------------------------------

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul * http://la.buvette.org/photos/cumul
*/ */
#define FIMG_VERSION 176 #define FIMG_VERSION 175
/* /*
* in memory descriptor * in memory descriptor

View File

@ -36,7 +36,7 @@ int fimg_default_metadata(FimgMetaData *pmd)
memcpy(pmd->magic, "metadata", 8); memcpy(pmd->magic, "metadata", 8);
pmd->count = 0; pmd->count = 0;
pmd->fval = 255.0; pmd->fval = 255.0;
strcpy(pmd->idcam, "<unknow>"); strcpy(pmd->idcam, "unknow");
pmd->origin = 999; pmd->origin = 999;
return -1; return -1;
} }

View File

@ -168,7 +168,7 @@ while ((opt = getopt(argc, argv, "c:d:ghn:o:O:p:r:s:uvZ")) != -1) {
if (verbosity > 1) { if (verbosity > 1) {
fprintf(stderr, "*** GrabVidSeq (%s, %s) libv %d, pid=%d\n", fprintf(stderr, "*** GrabVidSeq (%s, %s) libv %d, pid=%d\n",
__DATE__, __TIME__, FIMG_VERSION, getpid()); __DATE__, __TIME__, FIMG_VERSION, getpid());
fprintf(stderr, "grabing %d picz from %s, ", nbre_capt, dev_name); fprintf(stderr, "grabing %d picz, ", nbre_capt);
fprintf(stderr, "period is %.3f seconds\n", period); fprintf(stderr, "period is %.3f seconds\n", period);
fprintf(stderr, "framesize is %dx%d\n", width, height); fprintf(stderr, "framesize is %dx%d\n", width, height);
// fprintf(stderr, "destdir is '%s'\n", dest_dir); // fprintf(stderr, "destdir is '%s'\n", dest_dir);