From 37ee68278bdbc4c090727f9579313c0665c4497d Mon Sep 17 00:00:00 2001 From: tth Date: Thu, 20 Feb 2020 23:20:31 +0100 Subject: [PATCH] commit du soir, espoir --- .gitignore | 3 +- doc/the_floatimg_hack.tex | 58 ++++++++++++++++++++++++++++++++------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index e1adc216..0aab3cfb 100644 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,7 @@ doc/*.pdf doc/*.idx doc/*.ilg doc/*.ind -doc/foo.tex - +doc/co*.tex funcs/t funcs/*.o funcs/*.png diff --git a/doc/the_floatimg_hack.tex b/doc/the_floatimg_hack.tex index 8d64c0a8..b4a90619 100644 --- a/doc/the_floatimg_hack.tex +++ b/doc/the_floatimg_hack.tex @@ -9,6 +9,8 @@ \usepackage{listings} \usepackage{babel} +\usepackage{graphicx} % for gnuplot ylabel rotate + \usepackage{pifont} % caractères rigolos \usepackage{enumitem} \setitemize[1]{label={\ding{87}}} @@ -214,6 +216,13 @@ 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} @@ -334,7 +343,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}. +\texttt{fimg\_type\_is\_valid(int type)} peut vous aider\dots}. 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 @@ -348,6 +357,9 @@ 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. % _________ @@ -358,8 +370,7 @@ 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 @@ -369,6 +380,11 @@ 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. % ---------------------------------- @@ -379,6 +395,11 @@ 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 @@ -393,9 +414,15 @@ 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{foo.tex} % XXX XXX XXX -\caption{Correcteur cos01} +\input{cos010.tex} % XXX XXX XXX +\caption{Correcteur cos010} \end{figure} Rappelons qu'il est possible pour un logiciel applicatif @@ -461,7 +488,9 @@ dans ce domaine\dots \subsubsection{Vers PNM}\index{PNM} -Nous avons ici 16 bits par composante, mais au prix +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 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 @@ -494,12 +523,13 @@ 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 TIFF}\index{TIFF} +\subsubsection{Vers/depuis 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 scanners corporates. +classique proposé par les gros scanners corporates. To be done\index{XXX} @@ -553,7 +583,7 @@ des bords d'image. % ---------------------------------- -\subsection{Exemple de fonction}\index{exemple} +\subsection{Exemple de fonction}\index{exemple}\label{exemplefunc} Nous allons maintenant écrire une fonction intégrable dans le répertoire \texttt{funcs/}. @@ -759,7 +789,10 @@ 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. +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. \begin{itemize} \item Import/export au format \textsc{tiff}\index{tiff}. @@ -767,6 +800,7 @@ Il reste plein de choses à faire pour que ce soit vraiment utilisable. \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} % ------------------------------------------------------------------- @@ -841,6 +875,10 @@ 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}