more doc
This commit is contained in:
parent
a1657c8b18
commit
efac70ab2d
@ -21,6 +21,10 @@
|
||||
\usepackage[verbose]{layout}
|
||||
|
||||
\makeindex
|
||||
|
||||
% ------ a few new commands
|
||||
\newcommand{\interparagraphe { \vspace{60pt} } }
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\title{Floating images processing}
|
||||
\author{tTh}
|
||||
@ -31,6 +35,7 @@
|
||||
\section{Image flottante ?}
|
||||
|
||||
Mais de quoi parle-t-on exactement ?
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Traditionnellement, les valeurs des pixels dans les images
|
||||
@ -41,11 +46,15 @@ composante, mais c'est loin d'être le cas général.
|
||||
J'ai donc souhaité aller plus loin, et coder chaque canal de
|
||||
chaque pixel en virgule flottante sur 32bits, le type
|
||||
\texttt{float}\index{float} du langage C.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
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}.
|
||||
Mais le service après-vente est assez réactif. Du moins
|
||||
pour ceux qui suivent \texttt{\#tetalab} sur le réseau
|
||||
IRC de Freenode.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
@ -57,7 +66,9 @@ et sa fiablité reste à démontrer\index{valgrind}.
|
||||
|
||||
\textsc{FloatImg} a débuté sous la forme de quelques fonctions
|
||||
basiques en C, gérant la structure des données d'image en mémoire
|
||||
et sur disque.
|
||||
et sur disque. Ça a été imaginé de façon presque empirique,
|
||||
mais nous sommes tous là pour améliorer les choses, dans
|
||||
la mesure de nos moyes.
|
||||
Nous allons donc directement rentrer au cœur du problème.
|
||||
|
||||
\vspace{1em}
|
||||
@ -123,7 +134,7 @@ La suite vers la page \pageref{codaz}.
|
||||
Vous trouverez dans le répertoire \texttt{tools/}\index{tools/}
|
||||
d'autres exemples de mise en œuvre des fonctions disponibles
|
||||
sous formes d'outils en ligne de commande,
|
||||
décrits en page \pageref{outils}.
|
||||
lesquels sont décrits en page \pageref{outils}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Installation}
|
||||
@ -134,8 +145,13 @@ Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
|
||||
avoir quelques bibliothèques installées\footnote{Les \texttt{-dev}
|
||||
pour Debain et dérivées}~: libv4l2, libpnglite, libtiff, libpnm,
|
||||
et probablement d'autres choses.
|
||||
Être familier avec l'utilisation du shell\index{shell} et l'écriture
|
||||
de Makefile's sera un plus.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Il est même quasiment certain que Bash soit indispensable, tout
|
||||
comme \textsc{gnu}/make\index{make}.
|
||||
Une connaissance de base de l'utilisation du shell\index{shell}
|
||||
et de l'écriture de Makefile's sera un plus.
|
||||
|
||||
\subsection{Compilation}
|
||||
|
||||
@ -145,6 +161,7 @@ de faire un Makefile récursif, mais\dots}.
|
||||
Dans chacun des
|
||||
répertoires à traiter, ce script devrait trouver un Makefile et un fichier
|
||||
\texttt{t.c} source de la cible par défaut du make.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Pour le moment, la procédure d'installation est un peu rude,
|
||||
@ -155,6 +172,8 @@ dans un emplacement
|
||||
approprié, par exemple
|
||||
\texttt{/usr/local/include} et \texttt{/usr/local/lib}.
|
||||
|
||||
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Utilisation coté codeur}\label{codaz}
|
||||
|
||||
@ -387,6 +406,7 @@ options:
|
||||
|
||||
Pour des operateurs paramétrable (comme \texttt{mix}), le paramêtre flottant doit
|
||||
être fourni en utilisant l'option \texttt{-k}.
|
||||
La véracité mathématique n'est pas garantie.
|
||||
|
||||
\subsection{fimg2png, fimg2pnm, fimg2tiff}
|
||||
\index{fimg2png}\label{fimg2png}
|
||||
@ -395,7 +415,11 @@ Pour des operateurs paramétrable (comme \texttt{mix}), le paramêtre flottant d
|
||||
|
||||
Quelques petits proggies pour exporter notre format\index{.fimg} secret
|
||||
vers des choses plus directement utilisables. À condition que le
|
||||
code soit écrit et documenté en page \pageref{funcs}.
|
||||
code soit écrit et documenté. Peut-être en page \pageref{funcs}\dots
|
||||
|
||||
D'un autre coté, écrire un greffon d'import/export pour
|
||||
Gimp\index{Gimp} ou Imagemagick\index{Imagemagick}
|
||||
ne devrait pas être trop difficile. Des volontaires ?
|
||||
|
||||
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
|
||||
|
||||
@ -426,25 +450,39 @@ Il reste plein de choses à faire pour que ce soit vraiment utilisable.
|
||||
% -------------------------------------------------------------------
|
||||
\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.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Nous savons générer une image contenant des pixels aux valeurs
|
||||
probablement aléatoires (drand48\index{drand48}). Que se passe-t-il si
|
||||
nous faisons la somme de plusieurs centaines\footnote{Des erreurs toxiques ?}
|
||||
de ces images ?
|
||||
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
|
||||
ACCU="quux.fimg"
|
||||
TMPF="tmp.fimg"
|
||||
DIMS="640 480"
|
||||
DIMS="320 240"
|
||||
|
||||
mkfimg ${ACCU} ${DIMS}
|
||||
mkfimg $ACCU $DIMS
|
||||
|
||||
for i in {0..100}
|
||||
for i in {0..1000}
|
||||
do
|
||||
fname=$( printf "f%04d.pnm" $i )
|
||||
echo $fname
|
||||
mkfimg -t drand48 ${TMPF} ${DIMS}
|
||||
fname=$( printf "xx%04d.pnm" $i )
|
||||
fimgops $ACCU $TMPF add $ACCU
|
||||
fimg2pnm -v -g $ACCU $fname
|
||||
done
|
||||
|
||||
convert -delay 10 xx*.pnm foo.gif
|
||||
\end{verbatim}
|
||||
|
||||
En fait, je n'ai pas la moindre idée de ce que peut bien
|
||||
faire ce code\dots
|
||||
Voilà, si les choses se passent mal, vous allez découvrir
|
||||
que votre drand n'est pas si drand que ça.
|
||||
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Video for Linux}\index{v4l2}
|
||||
@ -462,8 +500,10 @@ v4l2.
|
||||
|
||||
\subsection{grabvidseq}\index{grabvidseq}\label{grabvidseq}
|
||||
|
||||
Un logiciel en devenir, qui permet déja la capture d'images en
|
||||
\textsl{longue pose} selon la méthode du cumul\index{cumul}.
|
||||
Un logiciel en évolution, qui permet déja la capture d'images en
|
||||
\textsl{longue pose} selon la méthode du cumul\index{cumul}, et
|
||||
devrait bientôt retrouver sa capacité à enregistrer des
|
||||
séquences.
|
||||
|
||||
\begin{verbatim}
|
||||
tth@debian:~/Devel/FloatImg/v4l2$ ./grabvidseq -h
|
||||
@ -477,13 +517,22 @@ options :
|
||||
-s WxH size of capture
|
||||
-u try upscaling...
|
||||
-v increase verbosity
|
||||
-X arg Xperiment option
|
||||
\end{verbatim}
|
||||
|
||||
La plupart de ces options ont un usage quasi-évident.
|
||||
L'option \texttt{-s} doit correspondre à une des
|
||||
résolutions possibles de votre capteur. Le type du
|
||||
fichier en sortie (option \texttt{-o}) est déterminé par
|
||||
l'extension.
|
||||
l'extension, actuellement
|
||||
seulement \texttt{.fimg} et \texttt{.pnm} sont reconnus.
|
||||
La conversion en gris (option \texttt{-g}) mérite un
|
||||
peu plus de travail, et une paramétrisation plus facile.
|
||||
|
||||
L'option \texttt{-X} me permet d'intégrer des \textit{fritures}
|
||||
expérimentales dans le binaire, et ne doit donc pas être
|
||||
utilisée dans des scripts si on a des visions à long
|
||||
terme.
|
||||
|
||||
\subsubsection{Upscaling}\index{upscaling}\label{upscaling}
|
||||
|
||||
@ -493,7 +542,16 @@ 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.
|
||||
être un multiple de 4, surtout si le nombre de capture est faible..
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
\textbf{Là, il manque un schéma\dots}
|
||||
|
||||
\subsubsection{shoot.sh}\index{shoot.sh}\label{shoot.sh}
|
||||
|
||||
\hspace{4cm}XXX\index{XXX}
|
||||
|
||||
|
||||
\subsection{video-infos}\index{video-infos}\label{video-infos}
|
||||
|
||||
@ -504,12 +562,16 @@ Quelles sont ses possibilités de réglage ?
|
||||
tth@debian:~/Devel/FloatImg$ v4l2/video-infos -h
|
||||
Options :
|
||||
-d select the video device
|
||||
-K set the K parameter
|
||||
-K nnn set the K parameter
|
||||
-l list video devices
|
||||
-T bla add a title
|
||||
-v increase verbosity
|
||||
\end{verbatim}
|
||||
|
||||
Je me sois d'avouer qu'il reste quelques points mystérieux dans
|
||||
l'\textsc{api} de \textsc{v4l2}, et donc, que ce que raconte
|
||||
ce logiciel doit être pris avec des pincettes. En particulier
|
||||
la liste des résolutions disponibles.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Et pour la suite ?}
|
||||
|
Loading…
Reference in New Issue
Block a user