Compare commits
No commits in common. "004f24689b08601ba3cd33c76e8afc9d09149ea7" and "ce6d6e58bba3a63ef8f7d420fc0cc4cd196603c2" have entirely different histories.
004f24689b
...
ce6d6e58bb
@ -3,7 +3,7 @@
|
||||
Avec toutes ces fonctions disponibles et `grabvidseq`, nous
|
||||
savons faire des images **floues**. L'étape suivante, les plus
|
||||
pervers d'entre vous le savent déja, est celle de la création
|
||||
de **films flous** dans le domaine spacio-temporel.
|
||||
de **films flous** dans le domaine spacial.
|
||||
|
||||
À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
|
||||
(fonderie) fait une moyenne mobile sur N images consécutives,
|
||||
@ -16,7 +16,7 @@ de filtres...
|
||||
## Chaine de filtres
|
||||
|
||||
Ce système connait un certain nombre de filtres et d'effets spéciaux
|
||||
destinés à augmenter la kitchitude du produit final. Ils peuvent être chainés
|
||||
destinés à la kitchitude du produit final. Ils peuvent être chainés
|
||||
les uns après les autres, à l'entrée et à la sortie du process
|
||||
de floutagement.
|
||||
|
||||
@ -26,8 +26,7 @@ L'option `-L` de ces logiciels permet d'obtenir la liste des filtres.
|
||||
|
||||
Une chaine de filtres est constituée d'une liste de nom ou de numéro
|
||||
de filtre, séparés par le caractère `:`, une façon de faire très
|
||||
classique dans notre univers, en fait. Et si on veut prendre des risques,
|
||||
on doit continuer à appeler les filtres par leur numéro, jdçjdr.
|
||||
classique dans notre univers, en fait.
|
||||
|
||||
`mirsplit:ctr2x2:3:killlines`
|
||||
|
||||
|
@ -995,75 +995,17 @@ ne devrait pas être trop difficile. Des volontaires ?
|
||||
\textsl{D'ailleurs, pourquoi $N$ logiciels indépendants alors q'un
|
||||
seul devrait être nécessaire ?}
|
||||
|
||||
% -------------------------
|
||||
|
||||
\subsection{fimg2text}
|
||||
|
||||
Voici donc quelque chose qui retourne vers la bonne vieille
|
||||
tradition Unix\index{Unix} et permet de traiter des images
|
||||
flottantes avec des outils classiques comme l'injustement
|
||||
méconnu \texttt{Awk}\index{Awk}.
|
||||
Dans le comportement par défaut (le seul actuellement) cet outil
|
||||
sort, pour chaque pixel, cinq valeurs~:
|
||||
|
||||
\begin{itemize}
|
||||
\item Les coordonnées entières $x,y$ du pixel
|
||||
\item Les valeurs flottantes des composantes \textsc{rgb}
|
||||
\end{itemize}
|
||||
|
||||
On peut même espérer qu'un jour, il soit possible de faire
|
||||
la transformation inverse. Quelle joie de générer des images
|
||||
flottantes avec un programme écrit en \textit{gw-basic} :)
|
||||
|
||||
\begin{verbatim}
|
||||
tth@fubar:~/Devel/FloatImg/doc$ fimg2text -h
|
||||
usage:
|
||||
fimg2text [options] foo.fimg > bar.csv
|
||||
options:
|
||||
-v increase verbosity
|
||||
-n 3.14 normalize picture
|
||||
-s N steps on x & y
|
||||
\end{verbatim}
|
||||
|
||||
Vous voulez un petit exemple ?
|
||||
|
||||
\begin{verbatim}
|
||||
tth@fubar:~/Devel/FloatImg/doc$ mkfimg -t drand48 quux.fimg 4 2
|
||||
tth@fubar:~/Devel/FloatImg/doc$ fimg2text -s 1 quux.fimg
|
||||
0 0 142.518127 84.036987 20.688946
|
||||
1 0 164.273315 68.397079 138.501587
|
||||
2 0 45.887970 25.905518 93.683243
|
||||
3 0 53.292942 222.000000 111.711548
|
||||
0 1 82.289795 113.054855 180.530014
|
||||
1 1 42.051765 114.543625 4.249123
|
||||
2 1 71.826775 96.219109 63.222294
|
||||
3 1 160.535675 136.104919 204.020691
|
||||
tth@fubar:~/Devel/FloatImg/doc$
|
||||
\end{verbatim}
|
||||
|
||||
Et maintenant, vous voulez un gros exemple ?
|
||||
|
||||
|
||||
% -------------------------
|
||||
|
||||
|
||||
|
||||
\subsection{fimg2gray}\index{fimg2gray}\label{fimg2gray}
|
||||
|
||||
Nous avons vu dans ce document que chaque image flottante pouvait
|
||||
avoir plusieurs plans de réalité. Il ne faut en négliger aucun,
|
||||
voire même tenter de les faire se rencontrer, se combiner et
|
||||
s'influencer mutuellement.
|
||||
avoir plusieurs plans de réalité. Il ne faut en négliger aucun.
|
||||
|
||||
Il faut quand même deviner que pour passer de l'espace RGB\index{RGB}
|
||||
à une abstraction linéaire mono-dimensionnelle, il existe une foultitude
|
||||
de méthodes, toutes plus légitimes que les autres.
|
||||
\index{procrastination}
|
||||
Et face à l'incertitude du choix, j'ai reporté l'écriture de ce
|
||||
logiciel aux calendes grecques, voire même plus tard,
|
||||
après la grande pandémie\dots
|
||||
|
||||
% -------------------------
|
||||
logiciel aux calendes grecques, voire même plus tard.
|
||||
|
||||
\subsection{cumulfimgs}\index{cumulfimgs}\label{cumulfimgs}
|
||||
|
||||
|
@ -90,11 +90,6 @@ fprintf(stderr, ">>> %25s ( '%s' '%s' %d )\n", __func__,
|
||||
srcname, dstname, notused);
|
||||
#endif
|
||||
|
||||
if (steps < 1) {
|
||||
fprintf(stderr, "%s: steps MUST be > 0\n", __func__);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
foo = fimg_fileinfos(srcname, infos);
|
||||
if (foo) {
|
||||
fprintf(stderr, "'%s' get dims -> %d\n", srcname, foo);
|
||||
@ -147,13 +142,11 @@ exit(0);
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo, opt;
|
||||
int steps = 1;
|
||||
int steps = 16;
|
||||
float norm_val = 222.0; /* < 0 : don't normalize */
|
||||
char separator = ' ';
|
||||
|
||||
while ((opt = getopt(argc, argv, "f:hn:s:v")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "hn:s:v")) != -1) {
|
||||
switch(opt) {
|
||||
case 'f': separator = optarg[0]; break;
|
||||
case 'v': verbosity++; break;
|
||||
case 'h': help(1); exit(1);
|
||||
case 's': steps = atoi(optarg); break;
|
||||
|
Loading…
Reference in New Issue
Block a user