need more troll in the doc
This commit is contained in:
parent
5314b8b5f2
commit
c097f6a64d
2
build.sh
2
build.sh
@ -27,10 +27,10 @@ build v4l2
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
echo '*************************'
|
||||
|
||||
make
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
\documentclass[a4paper,11pt]{article}
|
||||
\documentclass[a4paper,10pt]{article}
|
||||
|
||||
% \listfiles % pour le debug
|
||||
|
||||
@ -24,17 +24,118 @@
|
||||
\section{Image flottante ?}
|
||||
|
||||
De quoi parle-t-on exactement ?
|
||||
\vspace{1em}
|
||||
|
||||
Traditionnellement, les valeurs des pixels dans les images
|
||||
informatiques sont mémorisées sur 8 bits, un octet\index{octet},
|
||||
soit 256 valeurs différentes.
|
||||
Ceci dit, on trouve parfois des images codées sur 16 bits par
|
||||
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.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
\tableofcontents
|
||||
\pagebreak
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Example}
|
||||
|
||||
Pour commencer,
|
||||
nous allons créer une image RGB\index{RGB} complètement noire,
|
||||
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.
|
||||
|
||||
Tout d'abord, nous devons déclarer et garnir quelques variables
|
||||
pour gérer la machinerie interne.
|
||||
|
||||
\begin{verbatim}
|
||||
int width = 640, height = 480;
|
||||
char *fname * "exemple.fimg";
|
||||
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.
|
||||
|
||||
\begin{verbatim}
|
||||
foo = fimg_create(&fimg, width, height, 3);
|
||||
if (foo) {
|
||||
fprintf(stderr, "create floatimg -> %d\n", foo);
|
||||
exit(1);
|
||||
}
|
||||
fimg_clear(&fimg);
|
||||
foo = fimg_dump_to_file(&fimg, fname, 0);
|
||||
if (foo) {
|
||||
fprintf(stderr, "dump fimg -> %d\n", foo);
|
||||
exit(1);
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
Une fois ce code enrobé dans un \texttt{main()}, compilé et exécuté,
|
||||
nous pouvons entrevoir, grâce au logiciel
|
||||
\texttt{fimgstats} (voir page \pageref{fimgstats}),
|
||||
le résultat sous forme de chiffres divers, et/ou inutiles~:
|
||||
|
||||
\begin{verbatim}
|
||||
$ ./fimgstats quux.img
|
||||
----------- numbers from 'quux.img' :
|
||||
640 480 3 0x7f3718c4f010 0x7f3718d7b010 0x7f3718ea7010
|
||||
surface 307200
|
||||
mean values:
|
||||
R 0.000000
|
||||
G 0.000000
|
||||
B 0.000000
|
||||
A 0.000000
|
||||
max value 0.000000
|
||||
\end{verbatim}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Mise en œuvre}
|
||||
|
||||
Pour le moment, la procédure d'installation est un peu rude,
|
||||
pour ne pas dire clairement sommaire.
|
||||
\vspace{1em}
|
||||
|
||||
Un script \texttt{build.sh} permet de construire approximativement
|
||||
le bouzin. Il est loin d'être parfait.
|
||||
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Les outils}
|
||||
|
||||
\textsl{3615mavie} : sur des projets comme celui-ci, qui travaillent
|
||||
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.
|
||||
\vspace{1em}
|
||||
|
||||
|
||||
\subsection{mkfimg}\index{mkfimg}\label{mkfimg}
|
||||
|
||||
Création d'un fichier contenant une image de teinte constante.
|
||||
|
||||
\subsection{fimgstats}\index{fimgstats}\label{fimgstats}
|
||||
|
||||
Affichage de quelques valeurs calculées à partir d'un fichier
|
||||
\texttt{.fimg}\index{.fimg}.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Video for Linux}\index{v4l2}
|
||||
|
||||
Donc, maintenant, nous savons un peu tripoter des images flottantes.
|
||||
Et nous devons nous poser une question fondamentale\footnote{primitive ?}
|
||||
sur la provenance de ces données prétendnat être des images.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Et pour la suite ?}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
\printindex
|
||||
|
@ -74,6 +74,7 @@ fprintf(stderr, ">>> %-25s ( %p %d %d %d )\n", __func__, fimg, w, h, t);
|
||||
if ( ! fimg_type_is_valid(t) ) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
memset(fimg, 0, sizeof(FloatImg));
|
||||
|
||||
surface = w * h;
|
||||
|
Loading…
Reference in New Issue
Block a user