écrire un peu plus de doc...
This commit is contained in:
parent
c004f22b16
commit
1ad4b406d7
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
% \lstset{frame=single} % dessin d'un cadre autour du listing
|
% \lstset{frame=single} % dessin d'un cadre autour du listing
|
||||||
\lstset{basicstyle=\ttfamily\small}
|
\lstset{basicstyle=\ttfamily\small}
|
||||||
\lstset{aboveskip=0.1em,belowskip=0.1em}
|
\lstset{aboveskip=0.01em,belowskip=0.1em}
|
||||||
|
|
||||||
\usepackage{babel} % ?
|
\usepackage{babel} % ?
|
||||||
|
|
||||||
@ -41,7 +41,7 @@
|
|||||||
\makeindex
|
\makeindex
|
||||||
|
|
||||||
% ------ a few new commands
|
% ------ a few new commands
|
||||||
\newcommand{\interparagraphe { \vspace{60pt} } }
|
\newcommand{\interparagraphe { \vspace{50pt} } }
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
\title{Floating images processing (for fun and profit ?)}
|
\title{Floating images processing (for fun and profit ?)}
|
||||||
@ -77,7 +77,8 @@ pour ceux qui suivent le canal \texttt{\#tetalab} sur le réseau
|
|||||||
IRC de \textsl{libera.chat}.
|
IRC de \textsl{libera.chat}.
|
||||||
|
|
||||||
\textbf{Attention !} ce document commence par une bonne rafale
|
\textbf{Attention !} ce document commence par une bonne rafale
|
||||||
de technique parfois \textsl{hardue}, avec des pointeurs dedans.
|
de technique parfois \textsl{hardue}\footnote{hard + ardue = private
|
||||||
|
joke Usenet}, avec des pointeurs dedans.
|
||||||
Vous avez parfaitement le droit de sauter directement à
|
Vous avez parfaitement le droit de sauter directement à
|
||||||
la page \pageref{outils} pour quelque chose de plus concret.
|
la page \pageref{outils} pour quelque chose de plus concret.
|
||||||
|
|
||||||
@ -92,7 +93,7 @@ certains points. Je vais tenter de répondre à ces FAQ~:%
|
|||||||
« Fréquentes et Absurdes Questions » avec des réponses
|
« Fréquentes et Absurdes Questions » avec des réponses
|
||||||
absurdes et précises.
|
absurdes et précises.
|
||||||
|
|
||||||
\subsubsection*{c'est quoi un image d'un point de vue physique ?}
|
\subsubsection*{c'est quoi une image d'un point de vue physique ?}
|
||||||
|
|
||||||
Une représentation approximative d'un monde physique invisible.
|
Une représentation approximative d'un monde physique invisible.
|
||||||
L'infinie bio-complexité de notre système oculaire et ses interactions
|
L'infinie bio-complexité de notre système oculaire et ses interactions
|
||||||
@ -103,7 +104,7 @@ physique.
|
|||||||
|
|
||||||
Les détails techniques sur cette représentation sont en page
|
Les détails techniques sur cette représentation sont en page
|
||||||
\pageref{FloatImg desc}, avec des pointeurs dedans.
|
\pageref{FloatImg desc}, avec des pointeurs dedans.
|
||||||
Ah, les pointeurs, la pire chose du monde\dots
|
Ah, les pointeurs, la pire chose du monde, mais pourquoi s'en passer\dots
|
||||||
|
|
||||||
\subsubsection*{quelques rappels de comment on acquiert et numérise une image}
|
\subsubsection*{quelques rappels de comment on acquiert et numérise une image}
|
||||||
|
|
||||||
@ -140,7 +141,7 @@ la glisser dans le capitalisme de surveillance.
|
|||||||
\pagebreak
|
\pagebreak
|
||||||
\setlength \parskip {0.40em}
|
\setlength \parskip {0.40em}
|
||||||
|
|
||||||
\layout \pagebreak
|
% XXX \layout \pagebreak
|
||||||
|
|
||||||
% ===================================================================
|
% ===================================================================
|
||||||
\section{Théorie}\index{théorie}
|
\section{Théorie}\index{théorie}
|
||||||
@ -169,6 +170,8 @@ quelques milliers d'images standard à 256 niveaux, sans trop avoir
|
|||||||
à se soucier des éventuelles pertes de précision. Mais ça demande
|
à se soucier des éventuelles pertes de précision. Mais ça demande
|
||||||
à être confirmé par des esprits supérieurs.
|
à être confirmé par des esprits supérieurs.
|
||||||
|
|
||||||
|
https://dl.acm.org/doi/pdf/10.1145/103162.103163
|
||||||
|
|
||||||
\subsection{Dynamique}\index{dynamique}
|
\subsection{Dynamique}\index{dynamique}
|
||||||
|
|
||||||
Dynamique, précision et \textsl{macheps} ? Peu de gens connaissent
|
Dynamique, précision et \textsl{macheps} ? Peu de gens connaissent
|
||||||
@ -181,7 +184,10 @@ effectuée afin d'éviter les potentiels inconvénients.
|
|||||||
Il est très difficle d'imaginer une lumière négative. Sauf peut-être
|
Il est très difficle d'imaginer une lumière négative. Sauf peut-être
|
||||||
si nous songeons à des coefficients d'absorption, ou un canal
|
si nous songeons à des coefficients d'absorption, ou un canal
|
||||||
\textsl{alpha} qui inverserait les valeurs ? Un domaine dont
|
\textsl{alpha} qui inverserait les valeurs ? Un domaine dont
|
||||||
l'exploration peut confiner au mysticisme.
|
l'exploration peut confiner au mysticisme de part la multitude
|
||||||
|
des traitement possibles : valeur absolue, \textsl{clamping},
|
||||||
|
report sur les autres composantes. Votre imagination est
|
||||||
|
la limite.
|
||||||
|
|
||||||
% ===================================================================
|
% ===================================================================
|
||||||
|
|
||||||
@ -203,7 +209,7 @@ nous allons créer une image RGB\index{RGB} complètement noire,
|
|||||||
puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
|
puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
|
||||||
un format complètement inconnu, puisque je viens de l'inventer
|
un format complètement inconnu, puisque je viens de l'inventer
|
||||||
à l'instant même\footnote{Enfin, non, il y a déja longtemps,
|
à l'instant même\footnote{Enfin, non, il y a déja longtemps,
|
||||||
avant la grande pandémie.}
|
avant la grande pandémie.}.
|
||||||
|
|
||||||
Tout d'abord, nous devons déclarer et garnir quelques variables
|
Tout d'abord, nous devons déclarer et garnir quelques variables
|
||||||
pour gérer la machinerie interne.
|
pour gérer la machinerie interne.
|
||||||
@ -1259,7 +1265,7 @@ if (foo) {
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
À condition d'avoir bien réglé votre ulimit pour la génération d'un coredump,
|
À condition d'avoir bien réglé votre ulimit pour la génération d'un coredump,
|
||||||
vous aurez sous la main un fichier \textsc{core} qui vous permettra
|
vous aurez sous la main un fichier \texttt{core} qui vous permettra
|
||||||
de, par exemple, remonter la pile d'appel avec la commande \texttt{back} de
|
de, par exemple, remonter la pile d'appel avec la commande \texttt{back} de
|
||||||
gdb. Mais pour le moment, juste une infime partie du code est instrumentée
|
gdb. Mais pour le moment, juste une infime partie du code est instrumentée
|
||||||
avec ce dispositif.
|
avec ce dispositif.
|
||||||
@ -1489,11 +1495,11 @@ v4l2.
|
|||||||
|
|
||||||
\subsection{grabvidseq}\index{grabvidseq}\label{grabvidseq}
|
\subsection{grabvidseq}\index{grabvidseq}\label{grabvidseq}
|
||||||
|
|
||||||
Un logiciel en évolution (trop ?) lente, qui permet déja la capture
|
Un logiciel en évolution (vraiment trop) lente, qui permet déja
|
||||||
d'images en
|
la capture d'images en
|
||||||
\textsl{longue pose} selon la méthode du cumul\index{cumul}, et
|
\textsl{longue pose} selon la méthode du cumul\index{cumul}, et
|
||||||
devrait bientôt retrouver sa capacité à enregistrer des
|
devrait bientôt retrouver sa capacité à enregistrer des
|
||||||
séquences d'images.
|
séquences d'images. (\textsl{workaround}~: écrire une boucle en shell)
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
tth@debian:~/Devel/FloatImg/v4l2$ ./grabvidseq -h
|
tth@debian:~/Devel/FloatImg/v4l2$ ./grabvidseq -h
|
||||||
@ -1564,7 +1570,7 @@ Options :
|
|||||||
Je me sens obligé d'avouer qu'il reste quelques points mystérieux dans
|
Je me sens obligé d'avouer qu'il reste quelques points mystérieux dans
|
||||||
l'\textsc{api} de \textsc{v4l2}, et donc, que ce que raconte
|
l'\textsc{api} de \textsc{v4l2}, et donc, que ce que raconte
|
||||||
ce logiciel doit être pris avec des pincettes. En particulier
|
ce logiciel doit être pris avec des pincettes. En particulier
|
||||||
la liste des résolutions disponibles.
|
des choses essentielles comme la liste des résolutions disponibles.
|
||||||
|
|
||||||
\subsection{nc-camcontrol}
|
\subsection{nc-camcontrol}
|
||||||
|
|
||||||
@ -1596,7 +1602,7 @@ devez mettre ce bout de XML\index{XML} dans le fichier
|
|||||||
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
|
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
|
||||||
d'autres commande de IM, comme identify, qui a tendance à
|
d'autres commande de IM, comme identify, qui a tendance à
|
||||||
raconter un peu n'importe quoi, puisqu'elle se base sur le
|
raconter un peu n'importe quoi, puisqu'elle se base sur le
|
||||||
résultat de la conversion\dots
|
résultat de la conversion.
|
||||||
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
|
Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
|
||||||
|
|
||||||
\subsection{Gimp}\index{Gimp}
|
\subsection{Gimp}\index{Gimp}
|
||||||
@ -1604,7 +1610,8 @@ Je compte donc sur le bouquin de \textsl{Brunus} pour avancer\dots
|
|||||||
Mmmmm... Ça semble un peu plus compliqué.
|
Mmmmm... Ça semble un peu plus compliqué.
|
||||||
La documentation à ce sujet me semble ésotérique.
|
La documentation à ce sujet me semble ésotérique.
|
||||||
D'un autre coté, il
|
D'un autre coté, il
|
||||||
faut faire ça en \textbf{C}, ce qui ne peut pas être négatif.
|
faut faire ça en \textbf{C}, ce qui ne peut pas être totalement négatif.
|
||||||
|
Sauf pour les riiRistes.
|
||||||
|
|
||||||
\subsection{ffmpeg}\index{ffmpeg}
|
\subsection{ffmpeg}\index{ffmpeg}
|
||||||
|
|
||||||
@ -1617,23 +1624,33 @@ ffmpeg -nostdin \
|
|||||||
-c:v libx264 \
|
-c:v libx264 \
|
||||||
-pix_fmt yuv420p \
|
-pix_fmt yuv420p \
|
||||||
-tune film \
|
-tune film \
|
||||||
|
-metadata artist='---[ tTh ]---' \
|
||||||
|
-metadata title='awesome video' \
|
||||||
stereo.mp4
|
stereo.mp4
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
Il existe environ un gazillion d'options pour encoder avec ffmpeg.
|
||||||
|
Bon courage pour toutes les explorer, voire même juste les comprendre.
|
||||||
|
|
||||||
\subsection{Et encore ?}\index{krita}\index{geeqie}
|
\subsection{Et encore ?}\index{krita}\index{geeqie}
|
||||||
|
|
||||||
Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
|
Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
|
||||||
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
|
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
|
||||||
\textsl{Krita} qui semble avoir les faveurs de
|
\textsl{Krita} qui semble avoir les faveurs de
|
||||||
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
|
dessinateurs de talent\footnote{Oui, David, c'est à toi que je pense.}.
|
||||||
|
Ce qui nous conduit à une question importante~: quels sont les logiciels
|
||||||
|
qui gèrent le chargement d'image par un système de
|
||||||
|
\textsl{plugin}\index{plugin},
|
||||||
|
parce que recompiler tout Gimp juste pour ça, c'est un peu overkill.
|
||||||
|
|
||||||
% ===================================================================
|
% ===================================================================
|
||||||
\section{Le flou temporel}
|
\section{Le flou temporel}
|
||||||
|
|
||||||
Et si nous jouions sur l'axe du temps ?
|
\textit{\hspace{7em}Et si nous jouions sur l'axe du temps ?}
|
||||||
|
|
||||||
Nous avons plus ou moins la magie du cumul sur la prise de vue
|
Nous avons déja plus ou moins la magie du cumul sur la prise de vue
|
||||||
d'\textbf{image} en enchainant plusieurs capture d'image.
|
d'\textbf{image} en enchainant plusieurs captures d'image accumulées
|
||||||
|
en une seule.
|
||||||
Maintenant, voyons ce que l'on peut faire à partir de plusieurs images.
|
Maintenant, voyons ce que l'on peut faire à partir de plusieurs images.
|
||||||
On peut d'abord penser faire une moyenne (ou la somme, en fait) de toutes
|
On peut d'abord penser faire une moyenne (ou la somme, en fait) de toutes
|
||||||
ces images. Mais ce n'est qu'une façon déguisée de faire du cumul.
|
ces images. Mais ce n'est qu'une façon déguisée de faire du cumul.
|
||||||
@ -1641,15 +1658,51 @@ C'est à ce moment que nous changeons l'axe de vue du défi.
|
|||||||
|
|
||||||
Par ailleurs, il m'a semblé pertinent d'inclure dans le projet une
|
Par ailleurs, il m'a semblé pertinent d'inclure dans le projet une
|
||||||
foultitude d'effets spéciaux.
|
foultitude d'effets spéciaux.
|
||||||
|
Qui manquent cruellement de possibilités de paramétrage.
|
||||||
|
Mais peuvent être enchainés dans ce que j'appelle des
|
||||||
|
\textsl{filter-chains}~: ces effets seront appliqués dans
|
||||||
|
l'ordre aux image traitées soit en entrée soit en sortie.
|
||||||
|
Je pense qu'un schéma\footnote{omg, apprendre un nouveau truc en
|
||||||
|
\LaTeX, quel challenge étourdissant !} s'impose.
|
||||||
|
|
||||||
\subsection{\textsl{moving average}}
|
|
||||||
|
|
||||||
\texttt{./fonderie} : Basé sur la moyenne mobile, avec une structure de
|
\subsection{\texttt{./fonderie} : \textsl{moving average}}
|
||||||
|
|
||||||
|
Basé sur la moyenne mobile, avec une structure de
|
||||||
fifo\index{fifo} particulièrement mal conçue.
|
fifo\index{fifo} particulièrement mal conçue.
|
||||||
|
Qui, en fait, n'est pas vraiment un fifo, mais plutôt un buffer
|
||||||
|
circulaire. Pour chaque image source, elle est lue, passe dans la chaine de
|
||||||
|
filtre d'entrée et est insérée dans ce buffer.
|
||||||
|
Ensuite on calcule la moyenne des images contenues dans ce buffer.
|
||||||
|
Et pour conclure, cette image moyennée passe au travers de la
|
||||||
|
chaine de filtre de sortie, avant d'être enregistrée en PNG\index{PNG}
|
||||||
|
dans le répertoire de destination.
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
*** fonderie compiled Jan 23 2023, 10:43:56, pid 23366
|
||||||
|
options:
|
||||||
|
-E input:filter:chain
|
||||||
|
-F output:filter:chain
|
||||||
|
-I input glob pattern
|
||||||
|
-L list available filters
|
||||||
|
-O output directory
|
||||||
|
-T fifo size
|
||||||
|
-v increase verbosity
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Euh, c'est quoi '\texttt{input glob pattern}' ? C'est ce qui vous permet
|
||||||
|
de sélectionner un peu les images que vous voulez traiter, exactement
|
||||||
|
comme vous pourriez le faire avec un shell classique.
|
||||||
|
Par exemple pour choisir une image sur dix, le glob-pattern sera
|
||||||
|
'\texttt{frames/????0.fimg}', et vous trouverez les explications détaillées
|
||||||
|
dans le manuel~: \texttt{glob(7)}, et \texttt{glob(3)} pour la
|
||||||
|
fonction utilisée.
|
||||||
|
|
||||||
\subsection{Interpolator}\index{interpolator}
|
\subsection{Interpolator}\index{interpolator}
|
||||||
|
|
||||||
Juste des calculs pas si simple que ça.
|
Juste des calculs pas si simple que ça. Je pense qu'il faut
|
||||||
|
se lancer dans des calculs splinesques pour améliorer les choses dans
|
||||||
|
la création des images intermédiaires.
|
||||||
|
|
||||||
\subsection{Singlepass}
|
\subsection{Singlepass}
|
||||||
|
|
||||||
@ -1657,6 +1710,23 @@ Ce programme \texttt{singlepass} prétend vous permettre de tester
|
|||||||
tous les filtres disponibles, dont on peut avoir la liste
|
tous les filtres disponibles, dont on peut avoir la liste
|
||||||
avec l'option \texttt{-L}\footnote{liste hélas peu machinable.}
|
avec l'option \texttt{-L}\footnote{liste hélas peu machinable.}
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
usage:
|
||||||
|
-F define:the:filter:chain
|
||||||
|
-g input glob pattern
|
||||||
|
-L list available filters
|
||||||
|
-O /output/directory (default ./p8)
|
||||||
|
-r N repetiiing factor
|
||||||
|
-v spit more messages
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Il n'y a pas de moyenne mobile, pas d'interpolation, mais un facteur de
|
||||||
|
répétition qui permet de dupliquer $N$ fois une image dans le flux de
|
||||||
|
sortie. Si bous globez \texttt{frames/????[02468]}, vous prenez
|
||||||
|
une image sur deux, alors un facteur de répétition à $2$ conservera
|
||||||
|
la 'vitesse' de la séquence, mais avec une petite sacade régulière
|
||||||
|
de bon aloi \textit{:)}
|
||||||
|
|
||||||
\subsection{Déviance}
|
\subsection{Déviance}
|
||||||
|
|
||||||
Là, nous tombons dans de la \textsl{troiD}\index{3d} de haut niveau,
|
Là, nous tombons dans de la \textsl{troiD}\index{3d} de haut niveau,
|
||||||
|
Loading…
Reference in New Issue
Block a user