forked from tTh/FloatImg
Zzzzz....
This commit is contained in:
@@ -77,7 +77,7 @@ IRC de Freenode.
|
||||
|
||||
\textbf{Attention !} ce document commence par une bonne rafale
|
||||
de technique parfois hardue\footnote{gni?}.
|
||||
Vous avez parfaitement le droit de auter directement à
|
||||
Vous avez parfaitement le droit de sauter directement à
|
||||
la page \pageref{outils} pour quelque chose de plus concret.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
@@ -194,7 +194,7 @@ lesquels sont décrits en page \pageref{outils}.
|
||||
% -------------------------------------------------------------------
|
||||
\section{Installation}
|
||||
|
||||
\textit{Attention, ça devient un peu gore.}
|
||||
\textit{Attention, ça devient un peu gore. Myrys, punk, toussa\dots}
|
||||
|
||||
\subsection{Prérequis}
|
||||
|
||||
@@ -209,6 +209,8 @@ comme \textsc{gnu}/make\index{make}.
|
||||
Une connaissance de base de l'utilisation du shell\index{shell}
|
||||
et de l'écriture de Makefile's sera un plus.
|
||||
|
||||
Il faut aussi savoir où trouver le code.
|
||||
|
||||
\subsection{Compilation}
|
||||
|
||||
Un script \texttt{build.sh} permet de construire approximativement
|
||||
@@ -474,6 +476,8 @@ de pixel flottant.
|
||||
\subsection{Géométrie}\index{géométrie}\label{geometrie}
|
||||
|
||||
Très prochainement, le retour du blitter\index{blitter}.
|
||||
Et pour attendre, un truc improbable, voire même
|
||||
inutile.
|
||||
|
||||
\begin{lstlisting}
|
||||
/* module funcs/geometry.c */
|
||||
@@ -485,6 +489,15 @@ contenir d'image, et doit être effacé avec un bon
|
||||
\texttt{memset(\&result, 0, sizeof(FloatImg));} bien senti.
|
||||
Et le résultat est très moyen : il n'y a pas d'interpolation.
|
||||
|
||||
\begin{lstlisting}
|
||||
/* module funcs/geometry.c */
|
||||
int fimg_extract_0(FloatImg *src, FloatImg *dst, int x, int y);
|
||||
\end{lstlisting}
|
||||
|
||||
Contrairement à la fonction précédente, celle-ci demande absolument une
|
||||
image de destination initialisée aux dimensions (largeur et hauteur)
|
||||
désirées.
|
||||
|
||||
% ----------------------------------
|
||||
|
||||
\subsection{Exportation \& Importation}\index{export}\label{export}
|
||||
@@ -532,12 +545,13 @@ Actuellement, on peut enregistrer uniquement en mode RGB, 8 bits par composante,
|
||||
mais on a quand même une bonne compression, ça compense.
|
||||
J'utilise \textsl{libpnglite} avec qui j'ai un peu de mal à suivre.
|
||||
Mais je me soigne. Le mode 16 bits va bientôt arriver.
|
||||
On peut aussi songer à l'export de metadatas.
|
||||
|
||||
\begin{lstlisting}
|
||||
int fimg_save_as_png(FloatImg *src, char *outname, int flags);
|
||||
\end{lstlisting}
|
||||
|
||||
Tous les flags doivent être à zéro.
|
||||
Tous les flags doivent être à zéro. Sinon, ça foire parfois.
|
||||
|
||||
\subsubsection{Vers/depuis TIFF}\index{TIFF}
|
||||
|
||||
@@ -549,7 +563,8 @@ To be done\index{XXX}
|
||||
|
||||
\subsubsection{Vers FITS}\index{FITS}
|
||||
|
||||
Essentiellement des images d'astronomie.
|
||||
Ce format est essentiellement utilisé pour stocker des images
|
||||
d'astronomie.
|
||||
|
||||
To be done\index{XXX}
|
||||
|
||||
@@ -571,9 +586,9 @@ La fonction \texttt{int format\_from\_extension(char *fname)} examine un
|
||||
nom defichier tel que \texttt{lena.xxx}, et retourne, si la partie
|
||||
\texttt{xxx} un éventuel nombre positif, dont les valeurs sont dans floatimg.h
|
||||
le valeureux.
|
||||
Les extensions connues sont : fimg, png, pnm et tiff.
|
||||
Les extensions actuellement connues sont : fimg, png, pnm et tiff.
|
||||
|
||||
To be continued\index{XXX}
|
||||
To be continued\index{XXX}\dots
|
||||
|
||||
|
||||
\subsection{Effets}\index{sfx}
|
||||
@@ -594,13 +609,45 @@ int fimg_killcolors_b(FloatImg *fimg, float fval);
|
||||
|
||||
Pour commencer, il faut que je réfléchisse au traitement
|
||||
des bordures des images.
|
||||
Ensuite que je débuggue\index{bug} cette fonction~:
|
||||
Ensuite que je débuggue\index{bug} ces deux fonctions~:
|
||||
|
||||
\begin{lstlisting}
|
||||
int fimg_lissage_2x2(FloatImg *img);
|
||||
int fimg_killborders(FloatImg *img);
|
||||
\end{lstlisting}
|
||||
|
||||
To be continued\index{XXX}\dots
|
||||
Bon, oké, ça marche ? Passons à l'tape suivante.
|
||||
La convolution avec une matrice 3x3, c'est possible.
|
||||
Et pas trop compliqué à faire.
|
||||
Bon, il reste le souci avec les bordures, souci qui ne peut
|
||||
être que temporaire, mais ésotérique à fixer.
|
||||
|
||||
Passons maintenant aux choses sérieuses, et définissons la
|
||||
description d'un filtre 3x3.
|
||||
|
||||
\begin{verbatim}
|
||||
typedef struct {
|
||||
float matrix[9];
|
||||
float mult;
|
||||
float offset;
|
||||
} FimgFilter3x3;
|
||||
\end{verbatim}
|
||||
|
||||
L'usage des champs \texttt{mult} et \texttt{offset} n'est pas
|
||||
clairement défini. Le prototype de la fonction de filtrage
|
||||
non plus, mais assez simpe quand même. Source et destination
|
||||
ne peuvent désigner la même image, et le champ \texttt{matrix}
|
||||
du filtre doit contenir des valeurs cohérentes.
|
||||
|
||||
\begin{verbatim}
|
||||
int fimg_filter_3x3(FloatImg *src, FloatImg *dst, FimgFilter3x3 *filtr)
|
||||
\end{verbatim}
|
||||
|
||||
Comme dans la plupart des cas, la gestion des valeurs négatives
|
||||
de pixel est laissé au hasard. Quoique, il doit bien exister
|
||||
quelques solutions de contournement : clamping ou shift ?
|
||||
|
||||
\textsl{To be continued\index{XXX}\dots}
|
||||
|
||||
% ----------------------------------
|
||||
|
||||
@@ -787,6 +834,8 @@ La véracité mathématique n'est pas garantie. Et n'oubliez pas que
|
||||
les valeurs négatives peuvent être la cause de \textsl{glitches}
|
||||
de qualitay.
|
||||
|
||||
% -------------------------
|
||||
|
||||
\subsection{fimg2png, fimg2pnm, fimg2tiff}
|
||||
\index{fimg2png}\label{fimg2png}
|
||||
\index{fimg2pnm}\label{fimg2pnm}
|
||||
@@ -797,7 +846,7 @@ vers des choses plus directement utilisables. À condition que le
|
||||
code soit écrit et documenté.
|
||||
|
||||
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}
|
||||
ne devrait pas être trop difficile. Des volontaires ?
|
||||
|
||||
\textsl{D'ailleurs, pourquoi $n$ logiciels indépendants alors q'un
|
||||
@@ -821,7 +870,7 @@ 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}.
|
||||
\item Import/export au format \textsc{tiff}\index{TIFF}.
|
||||
\item Remplacer le « fait-maison » par \textsc{libnetpnm}\index{pnm}.
|
||||
\textsl{[en cours]}.
|
||||
\item Compléter les traitements mathémathiques (eg le gamma\index{gamma}).
|
||||
@@ -1094,6 +1143,39 @@ l'\textsc{api} de \textsc{v4l2}, et donc, que ce que raconte
|
||||
ce logiciel doit être pris avec des pincettes. En particulier
|
||||
la liste des résolutions disponibles.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{À l'extérieur}
|
||||
|
||||
|
||||
\subsection{ImageMagick}\index{ImageMagick}
|
||||
|
||||
Pour afficher notre format .fimg exotique avec \texttt{display}, vous
|
||||
devez mettre ce bout de XML\index{XML} dans le fichier
|
||||
\texttt{\$HOME/.magick/delegates.xml}~:
|
||||
|
||||
\begin{verbatim}
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<delegatemap>
|
||||
<delegate decode="fimg" command="fimg2png '%i' '%o'"/>
|
||||
</delegatemap>
|
||||
\end{verbatim}
|
||||
|
||||
C'est juste un hack rapide, qui ne fonctionne pas très bien avec
|
||||
d'autres commande de IM, comme identify, qui a tendance à
|
||||
raconter un peu n'importe quoi... Je compte donc sur le bouquin
|
||||
de \textsl{Brunus} pour avancer...
|
||||
|
||||
\subsection{Gimp}\index{Gimp}
|
||||
|
||||
Mmmmm... Ça semble un peu plus compliqué. D'un autre coté, il
|
||||
faut faire ça en \textbf{C}, ce qui ne peut être négatif.
|
||||
|
||||
\subsection{Et encore ?}\index{krita}\index{geeqie}
|
||||
|
||||
Il y a d'autres logiciels pour lesquels écrire une fonction d'importation
|
||||
serait bien~: \textsl{Geeqie}, un visualiseur d'image fort pratique, ou
|
||||
\textsl{Krita} qui semble avoir les faveurs de dessinateurs de talent.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
\section{Et pour la suite ?}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user