Compare commits

..

No commits in common. "37ee68278bdbc4c090727f9579313c0665c4497d" and "db715485a2ae84bd362815d8fc5d8d0ca5268def" have entirely different histories.

6 changed files with 32 additions and 122 deletions

3
.gitignore vendored
View File

@ -23,7 +23,8 @@ doc/*.pdf
doc/*.idx
doc/*.ilg
doc/*.ind
doc/co*.tex
doc/foo.tex
funcs/t
funcs/*.o
funcs/*.png

View File

@ -1,19 +1,13 @@
#!/bin/bash
PI=" 3.141592654 "
OUT="cos01.tex"
OUT="foo.tex"
gnuplot << __EOF__
set term latex
set output "$OUT"
set title "COS01"
set xlabel "input value"
set ylabel '\rotatebox{90}{corrected value}'
set grid
plot \
[0:1] [0:1] \
@ -23,25 +17,3 @@ plot \
__EOF__
wc $OUT
OUT="cos010.tex"
gnuplot << __EOF__
set term latex
set output "$OUT"
set title "COS010"
set xlabel "input value"
set ylabel '\rotatebox{90}{corrected value}'
set grid
plot \
[0:1] [0:1] \
(0.5 - 0.5 * cos(x*$PI*2)) \
with line
__EOF__
wc $OUT

View File

@ -9,8 +9,6 @@
\usepackage{listings}
\usepackage{babel}
\usepackage{graphicx} % for gnuplot ylabel rotate
\usepackage{pifont} % caractères rigolos
\usepackage{enumitem}
\setitemize[1]{label={\ding{87}}}
@ -216,13 +214,6 @@ faciliter un peu la chose. Il prend également en compte la copie
des divers binaires du dossier \texttt{tools/} (cf. page \pageref{outils})
dans le répertoire prévu à cet effet : \texttt{/usr/local/bin}.
Il reste enfin quelques exemples d'utilisation des outils de la
ligne de commande depuis un shell
dans le répertoire \texttt{scripts/}.
Ils sont décrits plus en détail page
\pageref{scripts}, et c'est à vous de les adapter à votre \textsl{usecase}.
Faites-en ce que vous voulez.
% =================================================================
\section{Utilisation coté codeur}\label{codaz}
@ -343,7 +334,7 @@ Si tout s'est bien passé (valeur retournée égale à 0),
on va trouver la largeur dans \texttt{datas[0]},
la hauteur dans \texttt{datas[1]} et le type dans
\texttt{datas[2]}\footnote{La fonction
\texttt{fimg\_type\_is\_valid(int type)} peut vous aider\dots}.
\texttt{fimg\_type\_is\_valid(int type)} peut vous aider}.
Je sais aussi que certains d'entre vous aiment la facilité, aussi
je vais vous révéler l'existence d'un nouveau truc bien plus
@ -357,9 +348,6 @@ memset(&head, 0, sizeof(FloatImg));
foo = fimg_create_from_dump("lena.fimg", &head);
\end{verbatim}
Si la valeur retournée est différente de 0, c'est que quelque
chose s'est mal passé.
Certains messages sont parfois parfois explicites.
% _________
@ -370,7 +358,8 @@ Bon, vous avez une image latente, et vous souhaitez dessiner dessus
Il y a des fonctions pour ça, par exemple~:
\begin{verbatim}
int fimg_plot_rgb(FloatImg *head, int x, int y, float r, float g, float b);
int fimg_plot_rgb (FloatImg *head, int x, int y,
float r, float g, float b);
\end{verbatim}
Les paramètres sont explicites, mais leur validité doit être
@ -380,11 +369,6 @@ qui ajoute du rgb à un pixel, laquelle fonction a d'ailleurs été
à la base de la seconde génération de la
photographie\index{photographie} en cumul\index{cumul}.
Inversement, la fonction
\texttt{fimg\_get\_rgb(FloatImg *head, int x, int y, float *rgb)}
permet de lire les valeurs des trois canaux d'un pixel donné.
Là aussi, il n'y a aucun contrôle sur la validité des valeurs
$x$ et $y$ de la demande.
% ----------------------------------
@ -395,11 +379,6 @@ semblent cohérents avec la notion d'image flottante.
Certains d'entre eux, les plus simples, sont disponibles.
Les autres sont à imaginer.
\begin{figure}
\input{cos01.tex} % XXX XXX XXX
\caption{Correcteur cos01}
\end{figure}
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
@ -414,15 +393,9 @@ int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval);
int fimg_cos_010(FloatImg *s, FloatImg *d, double maxval);
\end{verbatim}
Si vous souhaitez rajouter votre propre méthode de modification
de contraste, il y a quelques explication en page \pageref{exemplefunc}.
\begin{figure}
\input{cos010.tex} % XXX XXX XXX
\caption{Correcteur cos010}
\input{foo.tex} % XXX XXX XXX
\caption{Correcteur cos01}
\end{figure}
Rappelons qu'il est possible pour un logiciel applicatif
@ -488,9 +461,7 @@ dans ce domaine\dots
\subsubsection{Vers PNM}\index{PNM}
Nous avons ici 16 bits par composante, soit 65536 valeurs différentes,
ce qui est bien au-delà de ce que peuvent percevoir vos yeux.
Hélas, c'est au prix
Nous avons ici 16 bits par composante, mais au prix
d'une taille énorme sur les fichiers. D'un autre coté,
l'utilisation du codage \textsc{ascii}\index{ascii}
(alors qu'on pourrait mettre du binaire, plus compact) y est
@ -523,13 +494,12 @@ Mais je me soigne. Le mode 16 bits va bientôt arriver.
int fimg_save_as_png(FloatImg *src, char *outname, int flags);
\end{verbatim}
Tous les flags doivent être à zéro.
\subsubsection{Vers/depuis TIFF}\index{TIFF}
\subsubsection{Vers TIFF}\index{TIFF}
Le format canonique de la PAO\index{PAO} du siècle dernier. Il permet
de gérer une foultitude de formats numériques. C'est aussi un format
classique proposé par les gros scanners corporates.
classique proposé par les scanners corporates.
To be done\index{XXX}
@ -583,7 +553,7 @@ des bords d'image.
% ----------------------------------
\subsection{Exemple de fonction}\index{exemple}\label{exemplefunc}
\subsection{Exemple de fonction}\index{exemple}
Nous allons maintenant écrire une fonction intégrable dans
le répertoire \texttt{funcs/}.
@ -789,33 +759,30 @@ de méthodes, toutes plus légitimes que les autres.
% -------------------------------------------------------------------
\section{TODO}\index{TODO}\label{TODO}
Il reste plein de choses à faire pour que ce soit vraiment utilisable,
surtout dans un contexte artistique à grande porosité.
C'est par ces frottements de techniques ayant du sens que les
choses seront acquises.
Il reste plein de choses à faire pour que ce soit vraiment utilisable.
\begin{itemize}
\item Import/export au format \textsc{tiff}\index{tiff}.
\item Remplacer le « fait-maison » par \textsc{libnetpnm}\index{pnm}.
\textsl{[en cours]}.
\item Compléter les traitements mathémathiques (eg le gamma\index{gamma}).
\item Formaliser les codes d'erreur. \textbf{Urgent}.
\item Faire une passe complète de Valgrind\index{valgrind}.
\end{itemize}
% -------------------------------------------------------------------
\section{Exemples pour yusers}\index{exemple}
Nous allons \textsl{essayer d'improviser} un exemple presque réel,
avec un peu de rache\index{rache} dedans, et beaucoup de simplification.
Ce qui est autorisé dans les exemples, mais dans la vrai vie, il ne faut
jamais négliger le traitement des éventuelles erreurs.
avec un peu de rache\index{rache} dedans. Ce qui est autorisé dans
les exemples, mais dans la vrai vie, il ne faut jamais négliger
le traitement des éventuelles erreurs.
Nous savons générer une image contenant des pixels aux valeurs
probablement aléatoires, avec la commande \texttt{mkfimg},
qui utilise le \texttt{drand48}\index{drand48} de \textsc{posix}\index{POSIX}.
Maintenant, posons-nous une question de statisticien : ue se passe-t-il si
nous faisons la somme de plusieurs centaines de ces images ?
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
@ -835,8 +802,7 @@ convert -delay 10 xx*.pnm foo.gif
\end{verbatim}
Voilà, si les choses se passent mal, vous allez découvrir
que votre \texttt{drand48} n'est pas si "drand" que ça.
Et ce n'est pas à moi d'en tirer les conclusions...
que votre \texttt{drand48} n'est pas si drand que ça. Séquence angoisse.
\subsection{Scripts}\index{scripts}\label{scripts}
@ -875,10 +841,6 @@ de films flous\index{film} à partir de photos floues.
Le script \texttt{scripts/echomix.sh} est une première expérimentation
en bash, utilisant deux outils en \textsc{cli}.
C'est juste une POC\index{POC}, et une implémentation bien plus
complète écrite en \textbf{C}\index{C} est déja en chantier,
avec une complexité prévue à un niveau assez réjouissant.
% -------------------------------------------------------------------
\section{Video for Linux}\index{v4l2}

View File

@ -1,17 +0,0 @@
# Exemples de scripts
_Attention_, ce ne sont que des exemples, pas forcément adaptés
à une utilisation dans le monde réel.
## shoot.sh
Front-end de prise de photographies floues
## contrast-test.sh
Démonstrateur d'ajustements de contraste.
## echomix.sh
Comment générer des videos psychotiques avec un peu de bash.

20
scripts/contrast-test.sh Normal file → Executable file
View File

@ -2,15 +2,11 @@
CMDPATH="/usr/local/bin"
WS="./tmp" # our workspace
GRABOPT=" -d /dev/video0 -vu -n 240 -p 0.04 "
GRAB=${WS}/"quux.fimg"
COS01=${WS}/"cos01.fimg"
COS010=${WS}/"cos010.fimg"
SQRT=${WS}/"sqrt.fimg"
POW2="${WS}/pow2.fimg"
GRAB="quux.fimg"
COS01="cos01.fimg"
COS010="cos010.fimg"
SQRT="sqrt.fimg"
POW2="pow2.fimg"
# --------- conversion fimg -> pnm
f2p ()
@ -21,13 +17,11 @@ ${CMDPATH}/fimg2pnm $1 $dst
}
# --------- capturer une image
#
${CMDPATH}/grabvidseq ${GRABOPT} -o ${GRAB}
${CMDPATH}/grabvidseq -v -u -n 2400 -p 0.04 -o ${GRAB}
echo ERRCODE $?
f2p ${GRAB}
# ----------- traitements
#
${CMDPATH}/fimgfx pow2 $GRAB $POW2
f2p $POW2
@ -40,7 +34,5 @@ f2p $COS01
${CMDPATH}/fimgfx cos010 $GRAB $COS010
f2p $COS010
# ----------- présentation finale
#
echo == Making gif89a
convert -delay 40 *.pnm foo.gif

0
scripts/shoot.sh Normal file → Executable file
View File