FloatImg/Fonderie/README.md

148 lines
4.6 KiB
Markdown
Raw Normal View History

# Fonderie et Interpolator
2020-11-02 14:51:48 +01:00
Avec toutes ces fonctions disponibles et `grabvidseq`, nous
2021-03-18 07:35:53 +01:00
savons faire des images **floues**. L'étape suivante, les plus
2020-11-02 14:51:48 +01:00
pervers d'entre vous le savent déja, est celle de la création
2023-07-08 13:10:47 +02:00
de **films flous** dans le domaine spatio-temporel.
2020-11-02 14:51:48 +01:00
2021-03-18 07:35:53 +01:00
À l'heure actuelle, il y a plusieurs programmes distincts. Le premier
2020-12-19 08:48:56 +01:00
(fonderie) fait une moyenne mobile sur N images consécutives,
2024-10-11 23:30:41 +02:00
le second (interpolator) fait un fondu-enchainé de N pas
entre deux images consécutives,
et le troisième (singlepass) fait d'autres trucs, comme
répéter N fois un image pour avoir une vidéo sacadée.
2020-12-19 08:48:56 +01:00
Mais avant et après un de ces deux traitements, il y a des chaines
de filtres...
## Chaine de filtres
Ce système connait un certain nombre de filtres et d'effets spéciaux
2021-04-24 08:49:09 +02:00
destinés à augmenter la kitchitude du produit final. Ils peuvent être chainés
2020-12-19 08:48:56 +01:00
les uns après les autres, à l'entrée et à la sortie du process
de floutagement.
2023-05-29 10:51:01 +02:00
Ces filtres ont chacun un nom, utilisable dans une chaine de filtres.
2021-03-18 07:35:53 +01:00
L'option `-L` de ces logiciels permet d'obtenir la liste des filtres.
2023-05-29 10:51:01 +02:00
Pour ne rien filtrer, utilisez le filtre `none`, il est là pour ça.
2020-12-30 14:42:44 +01:00
2023-05-29 10:51:01 +02:00
Une chaine de filtres est constituée d'une liste de nom
2020-12-30 14:42:44 +01:00
de filtre, séparés par le caractère `:`, une façon de faire très
2023-05-29 10:51:01 +02:00
classique dans notre univers, en fait.
2020-12-30 14:42:44 +01:00
2023-05-29 10:51:01 +02:00
`mirsplit:ctr2x2:killlines`
2020-12-30 14:42:44 +01:00
Nous allons donc voir quelques exemples un peu plus loin.
2020-12-19 08:48:56 +01:00
## Fonderie
2020-11-02 14:51:48 +01:00
2020-11-02 22:20:54 +01:00
Le programme principal, utilisé à partir de la ligne de commande
2020-12-19 08:48:56 +01:00
avec une foule d'options aux mnémoniques abscons et à la syntaxe
perverse.
2020-11-02 22:20:54 +01:00
2020-11-08 17:38:55 +01:00
Rassurez-vous, en général il est wrappable dans des scripts
2020-11-05 21:07:38 +01:00
écrits en Bash. Il est même possible un jour qu'ils puissent lire des
2020-11-02 22:20:54 +01:00
paramètres dans `$(env)`.
2020-11-04 19:29:07 +01:00
```
2020-12-30 14:42:44 +01:00
./fonderie, compiled Dec 30 2020, 14:09:18, pid 5013
*** FloatImg library, alpha v116 (Dec 27 2020, 22:39:28)
2020-11-04 19:29:07 +01:00
FONDERIE
options:
2020-12-30 14:42:44 +01:00
-E input:filter:chain
-F output:filter:chain
2020-11-04 19:29:07 +01:00
-g convert to gray
-I input glob pattern
2020-12-30 14:42:44 +01:00
-L list available filters
2020-11-04 19:29:07 +01:00
-O output directory
-T fifo size
-v increase verbosity
```
2020-11-05 18:24:05 +01:00
## exemple d'utilisation
2020-12-30 14:42:44 +01:00
Voici comment appeler cette machinerie depuis la ligne de commande
tel qu'il m'arrive de le pratiquer :
2020-11-05 18:24:05 +01:00
```
#!/bin/bash
GRABDIR="/spool/tth/fonderie"
FONDEUR="$HOME/Devel/FloatImg/Fonderie/fonderie"
GLOB=${GRABDIR}'/?????.fimg'
2023-05-29 10:51:01 +02:00
${FONDEUR} -I "$GLOB" -E cos01:trinitron -F classtrial -T 30
2020-11-05 18:24:05 +01:00
```
2020-11-05 21:07:38 +01:00
Par défaut le répertoire où sont exportées les images est nommé
`p8/` et il doit être là, c'est donc à vous de le créer.
2021-03-18 07:35:53 +01:00
Votre machine va maintenant mouliner avec entrain et persévérance,
2020-12-30 14:42:44 +01:00
puis
2023-05-29 10:51:01 +02:00
ensuite il vous suffira d'encoder toutes les images générées dans
2020-11-08 17:38:55 +01:00
`p8/` (répertoire de sortie par défaut)
2020-11-05 18:24:05 +01:00
avec une incantation de ffmpeg :
```
2020-11-05 21:07:38 +01:00
ffmpeg -nostdin \
-loglevel error \
-y -r 30 -f image2 -i p8/%05d.png \
-c:v libx264 -pix_fmt yuv420p \
foo.mp4
2020-11-05 18:24:05 +01:00
```
2020-12-19 08:48:56 +01:00
## crapulator.c
2020-11-02 22:20:54 +01:00
C'est dans ce module qu'est codé le moteur de filtrage, utilisé
2020-11-04 19:29:07 +01:00
aussi bien en entrée qu'en sortie. Il est, à l'heure actuelle,
assez rudimentaire, avec un paramétrage simpliste, et un manque
criant de documentation...
2021-05-05 10:21:47 +02:00
Dans la même équipe, vous pouvez aussi aller contempler `glitches.c`
2024-10-11 23:30:41 +02:00
pour voir le genre de traitement que l'on fait subir à nos pixels
2021-05-05 10:21:47 +02:00
flottants.
## Interpolator
2020-12-19 08:48:56 +01:00
Un logiciel dont l'inspiration vient du passé et les améliorations
d'une résidence à Terre-Blanque, ça ne peut pas être complètement
malsain.
2020-11-12 23:39:16 +01:00
2021-01-13 16:09:27 +01:00
```
*** interpolator.c : compiled by tTh, Jan 12 2021 16:18:58
*** FloatImg library, alpha v116 (Dec 27 2020, 22:39:28)
INTERPOLATOR
usage:
interpolator [options] <inglob> <outdir> <nbsteep>
options:
-S nn mysterious sort
2024-10-11 23:30:41 +02:00
-E foo:bla:kr input filter chain
-F name:just output filter chain
2021-01-13 16:09:27 +01:00
-L list available filters
-v increase verbosity
```
2021-03-18 07:35:53 +01:00
## Singlepass
2020-11-10 00:50:25 +01:00
2021-03-18 11:46:35 +01:00
Le monde à l'envers : pas de traitement inter-frames, mais par contre,
on peut facilement tester une chaine de filtres sur une image unique.
```
*** singlepass.c : compiled Mar 17 2021 11:21:45
*** FloatImg library, alpha 122 (Mar 16 2021, 18:44:00)
------ Single pass serial filter ------
usage:
-F define:the:filter:chain
-g input glob pattern
-L list available filters
2024-10-11 23:30:41 +02:00
-r N repetiiing factor
2021-03-18 11:46:35 +01:00
-O /output/directory
-v spit more messages
```
2020-11-10 00:50:25 +01:00
## Conclusion
2023-05-29 10:51:01 +02:00
Tout cela est bien rigolo :)
2020-11-04 19:29:07 +01:00
**Use the source, Luke**
2020-11-02 22:20:54 +01:00