forked from tTh/FloatImg
added a new tool : fimgfx
This commit is contained in:
@@ -51,9 +51,10 @@ chaque pixel en virgule flottante sur 32bits, le type
|
||||
|
||||
Attention, tout le code que nous allons voir ensemble est en
|
||||
perpétuelle évolution\footnote{voir page \pageref{TODO}},
|
||||
et sa fiablité reste à démontrer\index{valgrind}.
|
||||
et sa fiablité (surtout sur certains aspects mathématiques)
|
||||
reste à démontrer\index{valgrind}.
|
||||
Mais le service après-vente est assez réactif. Du moins
|
||||
pour ceux qui suivent \texttt{\#tetalab} sur le réseau
|
||||
pour ceux qui suivent le canal \texttt{\#tetalab} sur le réseau
|
||||
IRC de Freenode.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
@@ -79,6 +80,8 @@ puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
|
||||
un format complètement inconnu, puisque je viens de l'inventer
|
||||
à l'instant même.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Tout d'abord, nous devons déclarer et garnir quelques variables
|
||||
pour gérer la machinerie interne.
|
||||
|
||||
@@ -89,8 +92,9 @@ FloatImg fimg;
|
||||
\end{verbatim}
|
||||
|
||||
Ensuite, nous enchainerons trois étapes : création de l'image
|
||||
en mémoire centrale, initialisations des valeurs de pixel à 0.0,
|
||||
et pour conclure, enregistrement dans un fichier.
|
||||
en mémoire centrale, initialisation des valeurs de chaque pixel à 0.0,
|
||||
et pour conclure, enregistrement dans un fichier\footnote{Au format
|
||||
ésotérique, mais très véloce.} binaire.
|
||||
|
||||
\begin{verbatim}
|
||||
foo = fimg_create(&fimg, width, height, FIMG_TYPE_RGB);
|
||||
@@ -139,6 +143,9 @@ lesquels sont décrits en page \pageref{outils}.
|
||||
% -------------------------------------------------------------------
|
||||
\section{Installation}
|
||||
|
||||
\textit{Attention, ça devient un peu gore.}
|
||||
|
||||
|
||||
\subsection{Prérequis}
|
||||
|
||||
Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
|
||||
@@ -255,8 +262,9 @@ int fimg_destroy(FloatImg *fimg);
|
||||
\end{verbatim}
|
||||
|
||||
Les types d'images actuellement gérés sont les trois grands
|
||||
classiques : gray, rgb et rgba. Il y a les constantes adéquates
|
||||
dans \texttt{floatimg.h}. Les codes d'erreur sont disparates
|
||||
classiques : gray, rgb et rgba. Les constantes adéquates sont
|
||||
dans \texttt{floatimg.h} et expliquées quelques lignes plus haut.
|
||||
Les codes d'erreur sont disparates
|
||||
et non documentés.
|
||||
\vspace{1em}
|
||||
|
||||
@@ -272,7 +280,44 @@ int fimg_plot_rgb (FloatImg *head, int x, int y,
|
||||
Les paramètres sont explicites, mais leur validité doit être
|
||||
sévèrement controlée par l'appelant. Il y a une fonction
|
||||
soeur, \texttt{fimg\_add\_rgb}\index{fimg\_add\_rgb},
|
||||
qui ajoute du rgb à un pixel.
|
||||
qui ajoute du rgb à un pixel, laquelle a d'ailleur été
|
||||
la base de la seconde génération de la
|
||||
photographie\index{photographie} en cumul\index{cumul}.
|
||||
|
||||
\subsubsection{Contraste}\index{contraste}
|
||||
|
||||
Certaines opérations d'ajustement du contraste d'une image
|
||||
semblent cohérents avec la notion d'image flottante.
|
||||
Certains d'entre eux, les plus simples, sont disponibles.
|
||||
|
||||
Ils prennent chacun trois paramètres, d'abord les images
|
||||
source et destination (\texttt{* FloatImg}), et le troisième
|
||||
est un nombre en double précision donnant la valeur
|
||||
maximale \textsl{supposée} de l'image source.
|
||||
|
||||
\begin{verbatim}
|
||||
/* source in lib/contrast.c */
|
||||
int fimg_square_root(FloatImg *s, FloatImg *d, double maxval);
|
||||
int fimg_power_2(FloatImg *s, FloatImg *d, double maxval);
|
||||
int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval);
|
||||
\end{verbatim}
|
||||
|
||||
Rappelons qu'il est possible pour un logiciel applicatif
|
||||
comme \texttt{grabvidseq} (Cf page \pageref{grabvidseq})
|
||||
de renseigner deux champs du descripteur d'image avec des
|
||||
données pertinentes.
|
||||
Ces deux champs sont \textit{fval} et \textit{count}.
|
||||
Dans ce cas particulier, le premier indique la valeur
|
||||
maximale du capteur, et le second sert à compter le
|
||||
nombre de capture\footnote{Et c'est bien géré aussi
|
||||
dans l'upscaling.} effectuées.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
La prochaine étape consistera à trouver une façon de faire
|
||||
une égalisation\index{égalisation} par histogramme\index{histogramme}
|
||||
qui respecte, dans toute sa futilité, le concept\index{concept}
|
||||
de pixel flottant.
|
||||
|
||||
\subsection{funcs/}\index{funcs/}\label{funcs}
|
||||
|
||||
@@ -386,9 +431,15 @@ les valeurs moyennes de chaque composante.
|
||||
Puis nous rajouterons\footnote{Les patchs sont les bienvenus}
|
||||
le calcul de la variance\index{variance}.
|
||||
|
||||
\subsection{fimgfx}\index{fimgfx}\label{fimgfx}
|
||||
|
||||
\textit{En cours de création\index{XXX}.
|
||||
Attention, je vais expérimenter un parsing un peu étrange
|
||||
sur les arguments de la ligne de commande. coredump expected.}
|
||||
|
||||
\subsection{fimgops}\index{fimgops}\label{fimgops}
|
||||
|
||||
Quelques opérations diverses entre deeux images, qui doivent être
|
||||
Quelques opérations diverses entre deux images, qui doivent être
|
||||
de la même taille, et du même type \textsl{pour le moment,
|
||||
uniquement RGB}.
|
||||
|
||||
@@ -448,14 +499,15 @@ Il reste plein de choses à faire pour que ce soit vraiment utilisable.
|
||||
\textsl{[en cours]}.
|
||||
\item Compléter les traitements mathémathiques (eg le gamma\index{gamma}).
|
||||
\item Formaliser les codes d'erreur.
|
||||
\
|
||||
|
||||
\end{itemize}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Exemples pour yusers}\index{example}
|
||||
|
||||
Nous allons \textsl{essayer d'improviser} un exemple presque réel,
|
||||
avec un peu de rache\index{rache} dedans.
|
||||
avec un peu de rache\index{rache} dedans. Ce qui est autorisé dans
|
||||
les exemples.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
@@ -485,7 +537,7 @@ convert -delay 10 xx*.pnm foo.gif
|
||||
\end{verbatim}
|
||||
|
||||
Voilà, si les choses se passent mal, vous allez découvrir
|
||||
que votre drand n'est pas si drand que ça.
|
||||
que votre drand n'est pas si drand que ça. Séquence angoisse.
|
||||
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
@@ -546,7 +598,9 @@ de l'image, en profitant du fait que l'on est capable
|
||||
de prendre $N$ images en rafale.
|
||||
|
||||
Pour être rigoureux dans la prise de vue, ce $N$ doit
|
||||
être un multiple de 4, surtout si le nombre de capture est faible..
|
||||
être un multiple de 4, surtout si le nombre de capture est faible.
|
||||
N'hésitez pas à faire des essais, le résultat est parfois
|
||||
aléatoire, surtout avec une caméra qui bouge.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
@@ -590,7 +644,7 @@ en mode portnawak\dots
|
||||
|
||||
L'idée est donc de construire un appareil autonome, basé sur un Raspi et
|
||||
une webcam \textsc{usb}\index{USB}, alimenté par batterie et permettant d'aller
|
||||
faire des images au bord d'un lac.
|
||||
faire des images au bord d'un lac ou dans la campagne de l'Ariège.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user