From 63e6dcd07ba6cfe0b075778d0f53697f3bb1a998 Mon Sep 17 00:00:00 2001 From: tth Date: Sat, 2 Apr 2022 15:44:52 +0200 Subject: [PATCH] small tuning on the doc --- doc/the_floatimg_hack.tex | 80 +++++++++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/doc/the_floatimg_hack.tex b/doc/the_floatimg_hack.tex index 4747bb9..0b841e6 100644 --- a/doc/the_floatimg_hack.tex +++ b/doc/the_floatimg_hack.tex @@ -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 ». % -------------------------------------------------------------------