Compare commits

..

3 Commits

Author SHA1 Message Date
tth
f52e24b30c bump and run 2022-04-03 21:38:29 +02:00
tth
63e6dcd07b small tuning on the doc 2022-04-02 15:44:52 +02:00
tth
125383adf3 now displaying the source device with -vv 2022-04-01 15:25:37 +02:00
4 changed files with 64 additions and 22 deletions

View File

@ -128,7 +128,7 @@ 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
mondial, je pourrais même vous donner l'url si vous me promettez de ne pas
la glisser dans le capitalisme de surveillance.
@ -644,7 +644,9 @@ aux bonnes dimensions (échange W et H).
\subsection{Format du fichier \textsc{fimg}}\index{format}\label{formatfimg}
D'un design très empirique, c'est certainement à revoir pour l'avenir.
Tout d'abord pour normaliser l'endianess et le packing\dots
Tout d'abord pour normaliser l'endianess et le packing dans les structs%
\footnote{Ce qui n'est pas encore fait}, et surtout l'ajout
de données sur la prise de vue.
\begin{lstlisting}
typedef struct {
@ -659,17 +661,47 @@ et bien plus encore.
Le champ \texttt{magic[8]} doit contenir une valeur magique~:
les quatre premier octets doivent contenir les quatre caractères
\texttt{'FIMG'}, et les quatre dernier doivent être à 0.
\texttt{'FIMG'}, et les quatre dernier doivent être à 0, sauf que,
voir plus bas.
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
fichier \texttt{floatimg.h}, et quelques informations
(non-)essentielles qui ne vous servirons probablement à rien.
(non-)essentielles qui ne vous serviront 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}
Notre format de fichier étant totalement inconnu, il nous
Notre format de fichier étant totalement inconnu%
\footnote{Du monde extérieur, vous l'aurez compris.},
il nous
faut bien exporter nos images en quelque chose de plus
connu. Bien entendu, c'est toujours affaire de compromis
entre précision de valeurs et taille des fichiers.
@ -708,12 +740,13 @@ Les autres bits ne sont pas utilisés et doivent être à zéro.
\subsubsection{Vers PNG}\index{PNG}
Actuellement, on peut enregistrer uniquement en mode RGB,
8 bits par composante,
Actuellement, on ne peut enregistrer qu'en mode RGB uniquement,
avec 8 bits par composante,
mais on a quand même une bonne compression, ça compense.
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.
On peut aussi songer à l'export de metadatas.
On peut aussi songer à l'export des metadatas.
\begin{lstlisting}
int fimg_save_as_png(FloatImg *src, char *outname, int flags);
@ -735,7 +768,7 @@ int fimg_write_as_tiff(FloatImg *src, char *outname, int flags);
\end{lstlisting}
Tous les flags doivent être à zéro. Pour le moment.
Un premier jet pas forcément parfait.
\subsubsection{Vers FITS}\index{FITS}
@ -755,6 +788,7 @@ sais pas encore comment régler ce petit détail.
Tous les flags doivent être à zéro.
% =============================================================
\subsection{Utilitaires}
@ -768,16 +802,17 @@ int parse_WxH(char *str, int *pw, int *ph)
int parse_double(char *str, double *dptr)
\end{lstlisting}
La fonction \texttt{int format\_from\_extension(char *fname)} examine un
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
déclarées dans floatimg.h
le valeureux.
Les extensions actuellement connues sont : fimg, png, pnm, fits et tiff.
Les extensions actuellement connues sont :
fimg, png, pnm, pgm, fits et tiff.
To be continued\index{XXX}\dots
% =============================================================
\subsection{Effets}\index{sfx}
@ -803,8 +838,7 @@ 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
le compare au \textsc{Betamax}\index{Betamax}.
% ----------------------------------
% =============================================================
\subsection{Filtrages}\index{filtrage}
@ -897,7 +931,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.
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 fonctions prévues à cet effet\dots
de fonctions prévues à cet effet, mais il fallait rester simple\dots
% ===================================================================
@ -907,7 +941,8 @@ de fonctions prévues à cet effet\dots
in-fine sur des objets que l'on peut considérer comme « physiques »,
il est important de passer à une utilisation
normale\footnote{Il y a une vie en dehors de git.} et construire
des trucs qui mettent en action le code primitif.
des trucs qui mettent en action le code primitif pour partir
sur des bases saines.
Ces machins ont en commun quelques options bien pratiques~:
\texttt{-h} pour avoir un résumé des options disponibles,
@ -938,7 +973,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
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, ymmv\index{ymmv}.
\begin{description} \index{XXX}
\item [black/gray/grey:] efface avec 0.0 (black) ou avec la valeur
@ -1043,6 +1078,9 @@ 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}
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}
@ -1110,12 +1148,13 @@ tth@fubar:~/Devel/FloatImg/doc$ fimg2text -s 1 quux.fimg
tth@fubar:~/Devel/FloatImg/doc$
\end{verbatim}
Et maintenant, vous voulez un gros exemple ?
Et maintenant, vous voulez un gros exemple ? Bah, ça doit demander
l'utilisation de Povray\index{Povray}.
% -------------------------
% beaucoup trop de maths approximative dans ce passage.
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
@ -1524,6 +1563,9 @@ Ajustement \textsl{Brightness Contrast Saturation Hue\dots}
% ===================================================================
\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}
@ -1572,7 +1614,6 @@ serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
\textsl{Krita} qui semble avoir les faveurs de
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
% -------------------------------------------------------------------
% ===================================================================
\section{Le flou temporel}
@ -1626,6 +1667,7 @@ 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},
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.
Et, comme le dit la sagesse populaire : « fimg at 11 ».
% -------------------------------------------------------------------

View File

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

View File

@ -36,7 +36,7 @@ int fimg_default_metadata(FimgMetaData *pmd)
memcpy(pmd->magic, "metadata", 8);
pmd->count = 0;
pmd->fval = 255.0;
strcpy(pmd->idcam, "unknow");
strcpy(pmd->idcam, "<unknow>");
pmd->origin = 999;
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) {
fprintf(stderr, "*** GrabVidSeq (%s, %s) libv %d, pid=%d\n",
__DATE__, __TIME__, FIMG_VERSION, getpid());
fprintf(stderr, "grabing %d picz, ", nbre_capt);
fprintf(stderr, "grabing %d picz from %s, ", nbre_capt, dev_name);
fprintf(stderr, "period is %.3f seconds\n", period);
fprintf(stderr, "framesize is %dx%d\n", width, height);
// fprintf(stderr, "destdir is '%s'\n", dest_dir);