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
|
make
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
\documentclass[a4paper,11pt]{article}
|
\documentclass[a4paper,10pt]{article}
|
||||||
|
|
||||||
% \listfiles % pour le debug
|
% \listfiles % pour le debug
|
||||||
|
|
||||||
@ -24,17 +24,118 @@
|
|||||||
\section{Image flottante ?}
|
\section{Image flottante ?}
|
||||||
|
|
||||||
De quoi parle-t-on exactement ?
|
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
|
\tableofcontents
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
\section{Example}
|
\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}
|
\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
|
\printindex
|
||||||
|
@ -74,6 +74,7 @@ fprintf(stderr, ">>> %-25s ( %p %d %d %d )\n", __func__, fimg, w, h, t);
|
|||||||
if ( ! fimg_type_is_valid(t) ) {
|
if ( ! fimg_type_is_valid(t) ) {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(fimg, 0, sizeof(FloatImg));
|
memset(fimg, 0, sizeof(FloatImg));
|
||||||
|
|
||||||
surface = w * h;
|
surface = w * h;
|
||||||
|
Loading…
Reference in New Issue
Block a user