|
|
@ -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\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
|
|
|
|
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,7 +644,9 @@ 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\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}
|
|
|
|
\begin{lstlisting}
|
|
|
|
typedef struct {
|
|
|
|
typedef struct {
|
|
|
@ -659,17 +661,47 @@ 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.
|
|
|
|
\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
|
|
|
|
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 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}
|
|
|
|
\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
|
|
|
|
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.
|
|
|
@ -708,12 +740,13 @@ 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 peut enregistrer uniquement en mode RGB,
|
|
|
|
Actuellement, on ne peut enregistrer qu'en mode RGB uniquement,
|
|
|
|
8 bits par composante,
|
|
|
|
avec 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 de metadatas.
|
|
|
|
On peut aussi songer à l'export des 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);
|
|
|
@ -735,7 +768,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}
|
|
|
|
|
|
|
|
|
|
|
@ -755,6 +788,7 @@ 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}
|
|
|
|
|
|
|
|
|
|
|
@ -768,16 +802,17 @@ 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 : fimg, png, pnm, fits et tiff.
|
|
|
|
Les extensions actuellement connues sont :
|
|
|
|
|
|
|
|
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}
|
|
|
|
|
|
|
|
|
|
|
@ -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
|
|
|
|
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}
|
|
|
|
|
|
|
|
|
|
|
@ -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.
|
|
|
|
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\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 »,
|
|
|
|
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.
|
|
|
|
des trucs qui mettent en action le code primitif pour partir
|
|
|
|
|
|
|
|
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,
|
|
|
@ -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
|
|
|
|
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, ymmv\index{ymmv}.
|
|
|
|
|
|
|
|
|
|
|
|
\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
|
|
|
@ -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}
|
|
|
|
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}
|
|
|
@ -1110,12 +1148,13 @@ 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 ?
|
|
|
|
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}
|
|
|
|
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
|
|
|
|
|
|
|
|
|
|
|
@ -1524,6 +1563,9 @@ 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}
|
|
|
|
|
|
|
|
|
|
|
@ -1572,7 +1614,6 @@ 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}
|
|
|
|
|
|
|
|
|
|
|
@ -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},
|
|
|
|
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 ».
|
|
|
|
|
|
|
|
|
|
|
|
% -------------------------------------------------------------------
|
|
|
|
% -------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|