Compare commits
No commits in common. "80011c41824427f2771e48dd790b7e7c43581075" and "b1ae9f31ed145ecb0f5d07cb70a03d5b9a9298a3" have entirely different histories.
80011c4182
...
b1ae9f31ed
2
Makefile
2
Makefile
@ -15,7 +15,7 @@ essai: essai.c libfloatimg.a floatimg.h Makefile
|
|||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
|
|
||||||
TOTAR = *.[ch] Makefile *.sh *.md \
|
TOTAR = *.[ch] Makefile *.sh *.txt \
|
||||||
doc/*.tex doc/mkdoc.sh doc/*.txt \
|
doc/*.tex doc/mkdoc.sh doc/*.txt \
|
||||||
funcs/*.[ch] funcs/Makefile \
|
funcs/*.[ch] funcs/Makefile \
|
||||||
tools/*.[ch] tools/Makefile \
|
tools/*.[ch] tools/Makefile \
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
\usepackage[french]{babel}
|
\usepackage[french]{babel}
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
\usepackage[T1]{fontenc}
|
\usepackage[T1]{fontenc}
|
||||||
|
% XXX \usepackage{lipsum}
|
||||||
\usepackage{makeidx}
|
\usepackage{makeidx}
|
||||||
\usepackage{listings}
|
\usepackage{listings}
|
||||||
\usepackage{babel}
|
\usepackage{babel}
|
||||||
@ -19,7 +20,6 @@
|
|||||||
\usepackage{xspace}
|
\usepackage{xspace}
|
||||||
\usepackage[verbose]{layout}
|
\usepackage[verbose]{layout}
|
||||||
|
|
||||||
\setlength \parskip {0.40em}
|
|
||||||
|
|
||||||
\setlength{\textheight}{640pt}
|
\setlength{\textheight}{640pt}
|
||||||
\setlength{\textwidth}{422pt}
|
\setlength{\textwidth}{422pt}
|
||||||
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
Mais de quoi parle-t-on exactement ?
|
Mais de quoi parle-t-on exactement ?
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Traditionnellement, les valeurs des pixels dans les images
|
Traditionnellement, les valeurs des pixels dans les images
|
||||||
informatiques sont mémorisées sur 8 bits, un octet\index{octet},
|
informatiques sont mémorisées sur 8 bits, un octet\index{octet},
|
||||||
@ -53,7 +53,7 @@ chaque pixel en virgule flottante sur 32bits, le type
|
|||||||
\texttt{float}\index{float} du langage C. Ce qui correspond
|
\texttt{float}\index{float} du langage C. Ce qui correspond
|
||||||
à la norme IEEE 754-1985.
|
à la norme IEEE 754-1985.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Attention, tout le code que nous allons voir ensemble est en
|
Attention, tout le code que nous allons voir ensemble est en
|
||||||
perpétuelle évolution\footnote{voir page \pageref{TODO}},
|
perpétuelle évolution\footnote{voir page \pageref{TODO}},
|
||||||
@ -65,41 +65,20 @@ IRC de Freenode.
|
|||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
|
|
||||||
\setlength \parskip {0em}
|
|
||||||
|
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\pagebreak
|
\pagebreak
|
||||||
\setlength \parskip {0.40em}
|
|
||||||
|
|
||||||
% \layout \pagebreak
|
% XXX \layout
|
||||||
|
% XXX \pagebreak
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
\section{Théorie}\index{théorie}
|
\section{Théorie}\index{théorie}
|
||||||
|
|
||||||
|
XXX\index{XXX}
|
||||||
|
|
||||||
Pour le moment, seule la quête de l'empirisme absolu a été
|
Pour le moment, seule la quête de l'empirisme absolu a été
|
||||||
visée. Les justifications mathématiques attendront le retour
|
visée. Les justifications mathématiques attendent le retour
|
||||||
du schmod777. Ceci dit, rien ne nous empêche d'aller consulter
|
du schmod777.
|
||||||
Wikipedia~:
|
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
|
||||||
|
|
||||||
\begin{quotation}
|
|
||||||
An IEEE 754 32-bit base-2 floating-point variable has
|
|
||||||
a maximum value of
|
|
||||||
$(2 - 2^{-23}) \times 2^{127} \approx 3.4028235 \times 10^{38}$.
|
|
||||||
All integers with 7 or fewer decimal digits, and any $2^{n}$ for
|
|
||||||
a whole number $-149 \leq n \leq 127$, can be converted exactly into
|
|
||||||
an IEEE 754 single-precision floating-point value.
|
|
||||||
|
|
||||||
In the IEEE 754-2008 standard, the 32-bit base-2 format is
|
|
||||||
officially referred to as binary32; it was called single in
|
|
||||||
IEEE 754-1985.
|
|
||||||
\end{quotation}
|
|
||||||
|
|
||||||
Ce qui nous conduit à estimer qu'il est possible de cumuler environ
|
|
||||||
quelques milliers d'images standard à 256 niveaux, sans trop avoir
|
|
||||||
à se soucier des éventuelles pertes de précision.
|
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
|
|
||||||
@ -112,7 +91,7 @@ mais nous sommes tous là pour améliorer les choses, dans
|
|||||||
la mesure de nos moyes.
|
la mesure de nos moyes.
|
||||||
Nous allons donc directement rentrer au cœur du problème.
|
Nous allons donc directement rentrer au cœur du problème.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Pour commencer par quelques chose de simple,
|
Pour commencer par quelques chose de simple,
|
||||||
nous allons créer une image RGB\index{RGB} complètement noire,
|
nous allons créer une image RGB\index{RGB} complètement noire,
|
||||||
@ -120,7 +99,7 @@ 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.
|
à l'instant même.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
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.
|
||||||
@ -173,7 +152,7 @@ Nous avons donc sous la main une mécanique qui ne demande qu'à
|
|||||||
faire des trucs futiles et des images qui clignotent.
|
faire des trucs futiles et des images qui clignotent.
|
||||||
La suite vers la page \pageref{codaz}.
|
La suite vers la page \pageref{codaz}.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Vous trouverez dans le répertoire \texttt{tools/}\index{tools/}
|
Vous trouverez dans le répertoire \texttt{tools/}\index{tools/}
|
||||||
d'autres exemples de mise en œuvre des fonctions disponibles
|
d'autres exemples de mise en œuvre des fonctions disponibles
|
||||||
@ -185,6 +164,7 @@ lesquels sont décrits en page \pageref{outils}.
|
|||||||
|
|
||||||
\textit{Attention, ça devient un peu gore.}
|
\textit{Attention, ça devient un peu gore.}
|
||||||
|
|
||||||
|
|
||||||
\subsection{Prérequis}
|
\subsection{Prérequis}
|
||||||
|
|
||||||
Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
|
Vous devez, en dehors des outils classiques (bash, gcc, make\dots),
|
||||||
@ -193,6 +173,8 @@ pour Debian et dérivées}~: libv4l2, libpnglite, libtiff, libnetpbm,
|
|||||||
libz,
|
libz,
|
||||||
et probablement d'autres choses.
|
et probablement d'autres choses.
|
||||||
|
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
Il est même quasiment certain que Bash soit indispensable, tout
|
Il est même quasiment certain que Bash soit indispensable, tout
|
||||||
comme \textsc{gnu}/make\index{make}.
|
comme \textsc{gnu}/make\index{make}.
|
||||||
Une connaissance de base de l'utilisation du shell\index{shell}
|
Une connaissance de base de l'utilisation du shell\index{shell}
|
||||||
@ -207,7 +189,7 @@ Dans chacun des répertoires à traiter, ce script devrait trouver
|
|||||||
un Makefile et un fichier \texttt{t.c} qui est le source de la cible
|
un Makefile et un fichier \texttt{t.c} qui est le source de la cible
|
||||||
par défaut du make.
|
par défaut du make.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Pour le moment, la procédure d'installation est un peu rude,
|
Pour le moment, la procédure d'installation est un peu rude,
|
||||||
pour ne pas dire clairement sommaire.
|
pour ne pas dire clairement sommaire.
|
||||||
@ -216,6 +198,8 @@ vous pouvez copier les deux fichiers \texttt{floatimg.h} et \texttt{libfloatimg.
|
|||||||
dans un emplacement approprié, par exemple
|
dans un emplacement approprié, par exemple
|
||||||
\texttt{/usr/local/include} et \texttt{/usr/local/lib}.
|
\texttt{/usr/local/include} et \texttt{/usr/local/lib}.
|
||||||
|
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
Le script \texttt{install.sh}, à la racine du projet, est censé
|
Le script \texttt{install.sh}, à la racine du projet, est censé
|
||||||
faciliter un peu la chose. Il prend également en compte la copie
|
faciliter un peu la chose. Il prend également en compte la copie
|
||||||
des divers binaires du dossier \texttt{tools/} (cf. page \pageref{outils})
|
des divers binaires du dossier \texttt{tools/} (cf. page \pageref{outils})
|
||||||
@ -231,6 +215,7 @@ de vos codes source,
|
|||||||
contenant un certain nombre de définition de structures, de macros,
|
contenant un certain nombre de définition de structures, de macros,
|
||||||
de constantes\footnote{À l'ancienne, via le pré-processeur}
|
de constantes\footnote{À l'ancienne, via le pré-processeur}
|
||||||
et les prototypes des fonctions utilisables par vos logiciels.
|
et les prototypes des fonctions utilisables par vos logiciels.
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
Au niveau du code source, ces fonctions sont approximativement
|
Au niveau du code source, ces fonctions sont approximativement
|
||||||
classées en deux catégories : \texttt{lib/} et \texttt{funcs/}.
|
classées en deux catégories : \texttt{lib/} et \texttt{funcs/}.
|
||||||
@ -278,7 +263,7 @@ d'idées approximatives. C'est cette utilisation constructive de larache
|
|||||||
qui fait que seuls les champs documentés de cette structure ne sont
|
qui fait que seuls les champs documentés de cette structure ne sont
|
||||||
pas explosifs.
|
pas explosifs.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Mais revenons aux choses sérieuses\dots
|
Mais revenons aux choses sérieuses\dots
|
||||||
Les deux champs suivants (fval et count) sont à la disposition du
|
Les deux champs suivants (fval et count) sont à la disposition du
|
||||||
@ -288,7 +273,7 @@ chose : imaginons un périphérique de capture qui nous fournisse des
|
|||||||
images en gris sur 4 bits. Et que nous voulions cumuler\index{cumul}
|
images en gris sur 4 bits. Et que nous voulions cumuler\index{cumul}
|
||||||
quelques images...
|
quelques images...
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Le champ \textsl{count} sera mis à 0 et
|
Le champ \textsl{count} sera mis à 0 et
|
||||||
le champ \textsl{fval} sera initialisé à 15.0
|
le champ \textsl{fval} sera initialisé à 15.0
|
||||||
@ -324,7 +309,7 @@ documentés dans ce document, et les autres sont dangereux à
|
|||||||
toucher. Les types d'images actuellement gérés sont les trois grands
|
toucher. Les types d'images actuellement gérés sont les trois grands
|
||||||
classiques : gray, rgb et rgba. et expliquées quelques lignes plus haut.
|
classiques : gray, rgb et rgba. et expliquées quelques lignes plus haut.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
C'est bien beau d'être enfin résident en mémoire centrale, mais
|
C'est bien beau d'être enfin résident en mémoire centrale, mais
|
||||||
pouvoir aussi exister à long terme en étant stocké dans la matrice
|
pouvoir aussi exister à long terme en étant stocké dans la matrice
|
||||||
@ -343,12 +328,10 @@ ait précisément les mêmes caractéristiques
|
|||||||
pré-allouée. Mias comment peut-on connaitre ces valeurs ?
|
pré-allouée. Mias comment peut-on connaitre ces valeurs ?
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
int fimg_fileinfos(char *fname, int datas[3]);
|
int fimg_fileinfos(char *fname, int *datas);
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Si tout s'est bien passé (valeur retournée égale à 0),
|
|
||||||
on va trouver la largeur dans datas[0],
|
|
||||||
la hauteur dans datas[1] et le type dans datas[2].
|
|
||||||
|
|
||||||
% _________
|
% _________
|
||||||
|
|
||||||
@ -402,6 +385,8 @@ maximale du capteur, et le second sert à compter le
|
|||||||
nombre de capture\footnote{Et c'est bien géré aussi
|
nombre de capture\footnote{Et c'est bien géré aussi
|
||||||
dans l'upscaling.} effectuées.
|
dans l'upscaling.} effectuées.
|
||||||
|
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
La fonction
|
La fonction
|
||||||
\texttt{fimg\_normalize(FloatImg *fi, double maxima, int notused);}
|
\texttt{fimg\_normalize(FloatImg *fi, double maxima, int notused);}
|
||||||
tente de gérer ce cas d'utilisation. Son ajout au captureur d'images
|
tente de gérer ce cas d'utilisation. Son ajout au captureur d'images
|
||||||
@ -410,6 +395,8 @@ floues sera probablement le bienvenue. Je me suis bien rendu compte
|
|||||||
censé faire des films flous à partir d'images floues} en situation
|
censé faire des films flous à partir d'images floues} en situation
|
||||||
festive qu'il manquait des données dans la chaine de traitement.
|
festive qu'il manquait des données dans la chaine de traitement.
|
||||||
|
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
L'autre façon de procéder est d'explorer notre image à la
|
L'autre façon de procéder est d'explorer notre image à la
|
||||||
recherche de la valeur maximale.
|
recherche de la valeur maximale.
|
||||||
La fonction \texttt{float fimg\_get\_maxvalue(\&fimg)} est
|
La fonction \texttt{float fimg\_get\_maxvalue(\&fimg)} est
|
||||||
@ -417,6 +404,8 @@ faite pour ça.
|
|||||||
C'est actuellement la méthode utilisée par l'outil qui
|
C'est actuellement la méthode utilisée par l'outil qui
|
||||||
sert à faire les modifications de contraste (page \pageref{fimgfx}).
|
sert à faire les modifications de contraste (page \pageref{fimgfx}).
|
||||||
|
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
La prochaine étape consistera à trouver une façon de faire
|
La prochaine étape consistera à trouver une façon de faire
|
||||||
une égalisation\index{égalisation} par histogramme\index{histogramme}
|
une égalisation\index{égalisation} par histogramme\index{histogramme}
|
||||||
qui respecte, dans toute sa futilité, le concept\index{concept}
|
qui respecte, dans toute sa futilité, le concept\index{concept}
|
||||||
@ -447,15 +436,12 @@ faut bien exporter nos images en quelque chose de plus
|
|||||||
connu. Bien entendu, c'est toujours affaire de compromis
|
connu. Bien entendu, c'est toujours affaire de compromis
|
||||||
entre précision de valeurs et taille des fichiers.
|
entre précision de valeurs et taille des fichiers.
|
||||||
|
|
||||||
Il faut aussi reconnaitre que c'est un peu la jungle dans les
|
|
||||||
formats de fichiers d'image\dots
|
|
||||||
|
|
||||||
\subsubsection{Vers PNM}\index{PNM}
|
\subsubsection{Vers PNM}\index{PNM}
|
||||||
|
|
||||||
Nous avons ici 16 bits par composante, mais au prix
|
Nous avons ici 16 bits par composante, mais au prix
|
||||||
d'une taille énorme sur les fichiers. D'autre coté,
|
d'une taille énorme sur les fichiers. D'autre coté,
|
||||||
l'utilisation du codage \textsc{ascii}\index{ascii}
|
l'utilisation du codage \textsc{ascii}\index{ascii}
|
||||||
(alors qu'on pourrait mettre du binaire, plus compact) y est pour quelque chose.
|
(alors qu'on peut mettre du binaire) y est pour quelque chose.
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
int fimg_save_as_pnm(FloatImg *head, char *fname, int flags);
|
int fimg_save_as_pnm(FloatImg *head, char *fname, int flags);
|
||||||
@ -471,12 +457,8 @@ Les autres bits ne sont pas utilisés et doivent être à zéro.
|
|||||||
|
|
||||||
\subsubsection{Vers PNG}\index{PNG}
|
\subsubsection{Vers PNG}\index{PNG}
|
||||||
|
|
||||||
Actuellement, on peut enregistrer uniquement en mode 8 bits par composante,
|
Actuellement, uniquement en 8 bits par composante, mais bonne
|
||||||
mais avec une bonne compression.
|
compression.
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
int fimg_save_as_png(FloatImg *src, char *outname, int flags)
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
\subsubsection{Vers TIFF}\index{TIFF}
|
\subsubsection{Vers TIFF}\index{TIFF}
|
||||||
|
|
||||||
@ -560,7 +542,7 @@ in-fine sur des objets que l'on peut considérer comme « physiques »,
|
|||||||
il est important de passer à une utilisation
|
il est important de passer à une utilisation
|
||||||
normale\footnote{Il y a une vie en dehors de git.} et construire
|
normale\footnote{Il y a une vie en dehors de git.} et construire
|
||||||
des trucs qui mettent en action le code primitif.
|
des trucs qui mettent en action le code primitif.
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Ces machins ont en commun deux options bien pratiques~:
|
Ces machins ont en commun deux options bien pratiques~:
|
||||||
\texttt{-h} pour avoir un résumé des options disponibles
|
\texttt{-h} pour avoir un résumé des options disponibles
|
||||||
@ -692,7 +674,7 @@ Quelques petits proggies pour exporter notre format\index{.fimg} secret
|
|||||||
vers des choses plus directement utilisables. À condition que le
|
vers des choses plus directement utilisables. À condition que le
|
||||||
code soit écrit et documenté.
|
code soit écrit et documenté.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
D'un autre coté, écrire un greffon d'import/export pour
|
D'un autre coté, écrire un greffon d'import/export pour
|
||||||
Gimp\index{Gimp} ou Imagemagick\index{Imagemagick} ou Krita\index{Krita}
|
Gimp\index{Gimp} ou Imagemagick\index{Imagemagick} ou Krita\index{Krita}
|
||||||
@ -702,7 +684,7 @@ ne devrait pas être trop difficile. Des volontaires ?
|
|||||||
|
|
||||||
Nous avons vu dans ce document que chaque image flottante pouvait
|
Nous avons vu dans ce document que chaque image flottante pouvait
|
||||||
avoir plusieurs plans de réalité. Il ne faut en négliger aucun.
|
avoir plusieurs plans de réalité. Il ne faut en négliger aucun.
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Il faut quand même deviner que pour passer de l'espace RGB\index{RGB}
|
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
|
à une abstraction linéaire mono-dimensionnelle, il existe une foultitude
|
||||||
@ -712,8 +694,7 @@ de méthodes, toutes plus légitimes que les autres.
|
|||||||
\section{TODO}\index{TODO}\label{TODO}
|
\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.
|
||||||
|
\vspace{1em}
|
||||||
% XXX XXX XXX\vspace{1em}
|
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
||||||
@ -733,7 +714,7 @@ 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
|
les exemples, mais dans la vrai vie, il ne faut jamais négliger
|
||||||
le traitement des éventuelles erreurs.
|
le traitement des éventuelles erreurs.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Nous savons générer une image contenant des pixels aux valeurs
|
Nous savons générer une image contenant des pixels aux valeurs
|
||||||
probablement aléatoires (drand48\index{drand48}). Que se passe-t-il si
|
probablement aléatoires (drand48\index{drand48}). Que se passe-t-il si
|
||||||
@ -777,8 +758,7 @@ Projet externe en cours d'expérimentation.
|
|||||||
Donc, maintenant, nous savons un peu tripoter ces images flottantes.
|
Donc, maintenant, nous savons un peu tripoter ces images flottantes.
|
||||||
Et nous devons nous poser une question fondamentale\footnote{primitive ?}
|
Et nous devons nous poser une question fondamentale\footnote{primitive ?}
|
||||||
sur la provenance de ces données prétendant être des images.
|
sur la provenance de ces données prétendant être des images.
|
||||||
|
\vspace{1em}
|
||||||
% XXX XXX XXX\vspace{1em}
|
|
||||||
|
|
||||||
En fait, notre désir secret est la découverte des choses cachées du
|
En fait, notre désir secret est la découverte des choses cachées du
|
||||||
monde qui nous entoure. Nous voulons des images du \textbf{réel} et
|
monde qui nous entoure. Nous voulons des images du \textbf{réel} et
|
||||||
@ -814,13 +794,9 @@ L'option \texttt{-s} doit correspondre à une des
|
|||||||
résolutions possibles de votre capteur. Le type du
|
résolutions possibles de votre capteur. Le type du
|
||||||
fichier en sortie (option \texttt{-o}) est déterminé par
|
fichier en sortie (option \texttt{-o}) est déterminé par
|
||||||
l'extension, actuellement
|
l'extension, actuellement
|
||||||
seulement \texttt{.fimg}, \texttt{.pnm} et \texttt{.png}
|
seulement \texttt{.fimg} et \texttt{.pnm} sont reconnus.
|
||||||
sont reconnus.
|
|
||||||
|
|
||||||
La conversion en gris (option \texttt{-g}) mérite un
|
La conversion en gris (option \texttt{-g}) mérite un
|
||||||
peu plus de travail, et une paramétrisation plus facile.
|
peu plus de travail, et une paramétrisation plus facile.
|
||||||
L'ajustement de contraste (option\texttt{-c}) est
|
|
||||||
vaguement expliqué page \pageref{contraste}.
|
|
||||||
|
|
||||||
L'option \texttt{-X} me permet d'intégrer des \textit{fritures}
|
L'option \texttt{-X} me permet d'intégrer des \textit{fritures}
|
||||||
expérimentales dans le binaire, et ne doit donc pas être
|
expérimentales dans le binaire, et ne doit donc pas être
|
||||||
@ -839,7 +815,7 @@ Pour être rigoureux dans la prise de vue, ce $N$ doit
|
|||||||
N'hésitez pas à faire des essais, le résultat est parfois
|
N'hésitez pas à faire des essais, le résultat est parfois
|
||||||
aléatoire, surtout avec une caméra qui bouge.
|
aléatoire, surtout avec une caméra qui bouge.
|
||||||
|
|
||||||
% XXX XXX XXX\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
\textbf{Là, il manque un schéma\dots}
|
\textbf{Là, il manque un schéma\dots}
|
||||||
|
|
||||||
@ -872,8 +848,7 @@ un Linux\index{Linux}, et ça \textsl{juste marche}.
|
|||||||
Sauf que c'est quand même un peu galère à déplacer, il faut
|
Sauf que c'est quand même un peu galère à déplacer, il faut
|
||||||
avoir un shell pour déclencher, c'est pas facile à utiliser
|
avoir un shell pour déclencher, c'est pas facile à utiliser
|
||||||
en mode portnawak\dots
|
en mode portnawak\dots
|
||||||
|
\vspace{1em}
|
||||||
% XXX XXX XXX\vspace{1em}
|
|
||||||
|
|
||||||
L'idée est donc de construire un appareil autonome, basé sur un Raspi et
|
L'idée est donc de construire un appareil autonome, basé sur un Raspi et
|
||||||
une webcam \textsc{usb}\index{USB}, pilotable par \textsc{lirc}\index{LIRC},
|
une webcam \textsc{usb}\index{USB}, pilotable par \textsc{lirc}\index{LIRC},
|
||||||
|
@ -201,8 +201,7 @@ if (NULL==bytes) {
|
|||||||
/* compute max value */
|
/* compute max value */
|
||||||
maximum = (double)fimg_get_maxvalue(src);
|
maximum = (double)fimg_get_maxvalue(src);
|
||||||
fk = maximum / 255.0;
|
fk = maximum / 255.0;
|
||||||
if (verbosity > 1)
|
if (verbosity > 1) fprintf(stderr, "max val %g fk %g\n", maximum, fk);
|
||||||
fprintf(stderr, "%s: max val %g fk %g\n", __func__, maximum, fk);
|
|
||||||
/* massage des pixels */
|
/* massage des pixels */
|
||||||
bptr = bytes;
|
bptr = bytes;
|
||||||
for (idx=0; idx<sz; idx++) {
|
for (idx=0; idx<sz; idx++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user