Introduction à Inrimage
INRIA
Ce document est encore très incomplet.
Vous y trouverez des informations sur Inrimage, en
particulier :
Inrimage fournit un ensemble d'outils de
base pour le traitement d'images,
d'une part sous formes de bibliothèques de programmes, d'autre
part sous forme de commandes Unix.
Ce logiciel utilise un format spécifique de fichiers, mais accepte,
en lecture,
dans la majorité des cas d'autres formats tels que GIF, JPEG, etc
(il suffit de disposer de la bonne commande de conversion).
On trouvera des informations détaillées sur le
format Inrimage
et sur l'accès aux
autres formats dans
Inrimage(1i)
Les commandes fournies correspondent, dans la majorité des cas
à des algorithmes simples, mais bien utiles :
opérations arithmétiques et logiques, transformations diverses,
conversions de formats, etc.
Pour plus de détails, se reporter à la
liste des commandes.
La plupart des commandes Inrimage peuvent être utilisées en filtre,
et donc assemblées par des pipes pour effectuer des
opérations complexes.
Les bibliothèques proposées sont de 2 types :
- libinrimage.a programmes élémentaires, permettant
par exemple l'accès aux images (ouverture, lecture, écriture) ou le traitement
des erreurs.
Ces programmes sont documentés par des manuels de type 2i
(voir liste complète ).
- des bibliothèques contenant les programmes de traitement proprement
dits. Ils ne sont pas documentés autrement que par le code source.
Se reporter au paragraphe
Comment retrouver les sources d'un programme ? .
L'historique des principales nouveautés
- Distribution 4.6.9 (décembre 2020)
-
- Inrimage est supporté sur Raspbian.
- Inrimage est packagé avec Homebrew sur OSX.
- Inrimage est supporté par gfortran-10.
- Amélioration de inrfulltest
(ajout du test de eg, meilleur test de gvis et des conversions de format).
- configure: apparition des options --without-gvis et --with-hdf5,
les options --disable-libxx deviennent --without-libxx.
- Plus d'informations dans le manuel de inrinfo.
- imap: les numéros de plan commencent maintenant à 1.
- La conversion vers les formats fixes et signés est mieux décrite dans
le manuel de cnvtbg.
- Ajout des
fonctions imagece_(), c_ecrfltce(), c_ecrce(), c_lecfltce(), c_lectce()
qui capturent le point de reprise d'erreur pour une futur
intégration python dans la distribution. A cette heure il existe un module python pour lire et écrire des images Inrimage dans
distribué séparément d'Inrimage (https://github.com/bereziat/inrpython).
- Distribution 4.6.8 (décembre 2017)
-
- Sous Linux, Inrimage peut être construite avec des
bibliothèques partagées (./configure
--enable-shared=yes).
Toutefois ce support reste
encore incomplet quelquesoit la cible, il n'est pas recommandé
de construire les commandes en dynamique.
- Nouvelle commande cims similaire à
cim avec des valeurs d'entrée éparses (sparses).
- Nouvelle commande imap permettant d'appliquer à chaque plan d'une image un filtre.
- Distribution 4.6.7 (mai 2016)
-
- Pas de nouveautées, mise à jour de maintenance
- Distribution 4.6.6 (février 2015)
-
- Ajout des commandes de conversions inr2h5 et
h52inr vers le format HDF5/ITK
- Distribution 4.6.5 (mars 2012)
-
- La principale nouveautée de cette version est un support pour Linux 64 bits
amélioré, un support Mac OS 64 (testé sur Lion),
ainsi que de nombreuses corrections de bogues
(voir section Historique des corrections),
- les espaces dans les noms d'image sont maintenant autorisés,
- nouvelle option -invff pour la commande fillc,
- plus de fermeture automatique de la fenêtre de dialogue dans un appel
script (##!dialog).
- En C++, on peut directement inclure les fichiers entête inrimage/image et
inrimage/contour.
- Distribution 4.6.4 (juin 2010)
-
- la commande par admet
l'option -c qui n'affiche que les commentaires d'une
image,
- la commande par reconnaît les
fichiers produit par anac,
- xvis: plus de limitation sur
le nombre d'images,
- xvis-shell: plus de limitation sur
le nombre de lignes lues dans un script,
- le paramètre -c
de xvisdraw admet une couleur
à trois composantes,
- la couleur n'est forcée
par visc que si
l'option -xv est effectivement suivi du caractère
=,
- début de documentation pour la
librairie contlib7.
- Distribution 4.6.3 (avril 2009)
-
- support de Debian/Ubuntu pour le packaging (en plus de Cygwin et Redhat),
- xvis est lié avec la librairie xaw3d
(au lieu de xaw), les displays 1-bit ne sont plus supportés,
- désinstallation plus propre de la distribution (make uninstall),
- png2inr -i accepte plusieurs image en entrée,
- ajout des fonctions tbvenp_() et
tbpenv_() (en beta test),
- ajout de quelques fonctions C : c_wrfmg(), c_wrfmgg(), ...
- Distribution 4.6.2 (mars 2008)
-
- Modification importante: la fonction
image ne gère plus que le format
simple. Pour travailler avec un format étendu, on utilisera la nouvelle
fonction imagex.
- Nouvelles fonctions c_optfmt et c_rdfmg (voir
rdfmg(3I)).
- Nouvelle commande cpar pour afficher
des formats d'image sous forme d'un source C.
- Nouvelle commande itest pour réaliser
des tests simple de format entre deux images ou une image et un format.
- Nouvelles commandes fixflo et
flofix qui généralisent
la commande carflo.
- Adaptation à gfortran (compilateur fortran 95 par défaut pour Gcc 4).
- asciifileopt comprend maintenant
les options du type -nom=
(utile pour indiquer un nom de fichier commencant par un chiffre).
- inrfulltest teste les commandes
cour et icompose
et l'édition de lien avec un programme principal Fortran.
- Commande inrinfo :
nouvelle option --build et ajout du module fmain (pour lier
avec la librairie libinrfort).
- Distribution 4.6.1 (avril 2007)
-
- Ajout de la commande mpg2inr pour conversion MPEG.
- Ajout du visualisateur gvis.
- Gvis utilise la librairie libgvis dont la documentation est disponible
au format unix ou html. Cette librairie offre des services pour afficher
des tampons d'image dans une fenêtre GTK depuis un programme Inrimage.
- La commande inrinfo aide à la compilation de clients gvis.
- Les options --cflags et --libs peuvent être maintenant cumulées dans inrinfo.
- Support de Cygwin.
- Distribution 4.6.0 (janvier 2007)
-
- Nouvelle structure de la distribution : le logiciel est
structuré maintenant selon les règles des logiciels GNU dans
la hiérarchie /usr (ou /usr/local).
La compilation et l'installation est prise en charge par les
utilitaires GNU ''autotools''.
- Nouveaux programmes de conversion :
png2inr, jp22inr,
pam2inr vers Inrimage (et réciproquement) :
- La commande tiff2inr
supporte davantage de formats TIFF. Apparition de la commande
inr2tiff.
- Les commandes ppm2inr et
inr2ppm sont maintenues si la
librairie NetPbm n'est pas présente. Autrement on utilisera les
commandes inr2pam et
pam2inr (qui gèrent le format
PAM nouvellement introduit par NetPbm).
- Le fichiers convertisseur est
modifié selon les convertisseurs présents (leur compilation
dépend de librairies optionnelles: libpng, libtiff, jasper,
netpbm et libjpeg).
- Les commandes inr2jpg et
jpg2inr sont maintenant
construites à partir d'un source de la distribution (au lieu
du patch pour les commandes djpeg et cjpeg).
- Nouvelles options pour la commande inrinfo.
- Support pour les processeurs x86_64 en mode 64bits.
- La commande xvis en version 4, n'est plus
maintenu : c'est un lien symbolique qui pointe vers xvis5.
- Ajout d'une commande inrfulltest qui
réalise un test poussé de l'installation Inrimage.
- Distributions 4.5-10, 4.5-9, 4.5-8
-
- Non renseigné mais pour l'essentiel des corrections
de bogues.
- Distribution 4.5-4 (janvier 1999)
-
- correction d'une erreur introduite dans la version 4.5-3,
empêchant d'utiliser le caratère - pour désigner
stdin ou stdout
- Distribution 4.5-3
-
- Nouvelles commandes de conversion inrimage / jpeg :
inr2jpg et
jpg2inr
- Nouvelle commande
extg qui remplace ext
et traite correctement les images vectorielles.
- Nouvelle commande
melg pour mélanger 2 images
avec test sur les valeurs.
- Distribution 4.5-2 (30 avril 1998)
-
- 1997
-
- version de
anac en C avec option pour changer
la limite du nombre de contours.
- option -.ext pour forcer le type de fichier d'entrée
pour toute commande inrimage
- nouvelle commande
rot pour appliquer une rotation à une image.
- 1996
-
- réorganisation de l'installation (/usr/local/inrimage/bin)
- suppression de la limite sur le nombre de convertisseurs automatiques
- prise en comte des extensions d'animation GIF dans
inr2gif
et
gif2inr
- nouveau convertisseur
ras2inr
- option -pgm pour
inr2ppm
- nouvelle version de his
permettant le calcul d'histogrammes couleur.
- portage sous système Solaris-2.5
- 1995
-
- portage sous système Linux
- commande ps2inr pour
extraire une image
inclue dans un fichier PostScript par la fonction image
ou colorimage
- commande fzoom pour les images
en flottant.
- nouvelle commande
ps2inr
pour retrouver une image dont on n'a plus que le PostScript.
- Juin-Novembre 1994
-
- nouvelle option de
cnvcol
pour les conversions HSV->RGB.
- argument -t dans
inr2gif
pour la transparence des images GIF.
- modification des arguments de
fillc pour traiter les images couleur.
-
itext pour mettre du texte dans une image.
-
icompose
(perl script) pour fabriquer des planches contact
à partir d'une série d'images.
Voir aussi le paragraphe Images composées.
-
xvis version 4.27
- Doc WWW de Inrimage
- nouvelles commandes inr2mpg,
inr2ppm
- izoom
(agrandissement / rétrécissement d'images)
traite maintenant les images vectorielles (par ex images couleur).
- Commande
inrcat
pour copier des images en supprimant l'en-tête.
- Introduction, dans image.h des prototypes
des fonctions de libinrimage
- im2ps
tient compte d'une éventuelle table monochrome dans l'en-tête du fichier.
- nouvelle fonction
is_inrimage
- Passage en Version 4.4 : possibilité de lire des images
Inrimage compressées, et d'autres formats (gif, tiff, etc).
- Janvier-Juin 1994
-
-
xvis version 4.20
- nouvelles options dans la commande de convolution
conv
L'historique des principales corrections
- Distribution 4.6.9 (décembre 2020)
-
- Correction d'un bug pour cpar -d
- Les modules sont mieux gérés par inrinfo.
- Correction de bugs dans inrimage/ltchai.c et xvis/xshell.c
(critique pour ce dernier sur Raspberry), mauvaise signature
de getc().
- Distribution 4.6.8 (décembre 2017)
-
- Correction d'un bug critique qui empêchait de lire des
images trop grandes (la taille était limitée à une valeur sur 32
bits)
- Le script inrfulltest a
été réécrit. Les tests sont plus complets et robustes. Ce script
repose sur une petite bibliothèque de test écrite
en bash, d'autres scripts de tests sont disponibles.
- Le script xvis.demo fonctionne a nouveau.
- Correction d'un bug
dans fzoom qui ne traitait que le
premier plan.
- Les fontes sont maintenant fournies dans la distribution
- Distribution 4.6.7 (mai 2016)
-
- Si les bibliothèques X11 ne sont pas détectées, la compilation n'échoue plus et les commandes
graphiques (xvis, gvis et d2im), ainsi que les fontes, ne sont pas construites.
- tiff2inr gère correctement l'absence du tag TIFFTAG_SAMPLESPERPIXEL.
- h52inr peut lire dans l'entrée standard.
- Correction d'un dépassement dans c_irctdm() qui pouvait planter visc.
- Distribution 4.6.6 (février 2015)
-
- Sur MacOS, les images compressées sont correctement traitées.
- Libinrimage peut maintenant être contruite en dynamique sur MacOS.
- Libnetpbm est correctement détectée sur MacOS.
- Inrimage peut être compilé avec clang sur MacOS.
- Divers correctifs mineurs (voir ChangeLog).
- Distribution 4.6.5 (mars 2012)
-
- Correction d'un bogue dans melg: on peut
maintenant choisir correctement le nombre de composantes à lire (options -idv).
- Linux 64 bits / MacOS 64 bits: beaucoup de corrections liées à de mauvaises
conversions de type sur les pointeurs dans les modules C et à des
type inadaptés dans les modules Fortran.
- imexec.c: le passage des paramètres ne s'arrête plus
sur un paramètre NULL, un autre bogue (nombre de paramètre réduit) a été aussi fixé.
- xvis: les images codées sur 4 octets sont correctement
affichées sur les architectures 64 bits,
- fillc: l'option -add fonctionne correctement avec -ff.
- Distribution 4.6.4 (juin 2010)
-
- inr2png ne plante plus
pour convertir une image RGB -v 3 avec table de couleur (la table
est ignorée),
- icompose
utilise jpg2inr au lieu de cjpeg,
- Correction d'un bug du démonstrateur
d'xvis
- Correction d'un bug dans l'écriture de l'historique d'une image.
- Distribution 4.6.3 (avril 2009)
-
- correctif de inropt.c pour que Inrimage fonctionne sur gcc 4.3.2 (raison
non éclaircie) et qui empechait le bon fonctionnement sur, par exemple,
Ubuntu 8.10,
- quelques corrections de bugs dans xvis en mode edit,
- les filtres .png et .tif sont maintenant correctement configurés,
- correction d'un bug de ras2inr en 64 bits,
- icompose traite à nouveau correctement
les images jpeg (elle utilisait cjpeg/djpeg au lieu de inr2jpg/jpg2inr),
- tpr traite correctement les options -y et -iy
(bogue apparu depuis la revision 31 (Inrimage 4.6.1)).
- diverses coquilles corrigées ça et là dans la documentation.
- Distribution 4.6.2 (mars 2008)
-
- Correction d'un bogue dans cim:
le comportement de l'option -rd est
conforme à celle décrite dans son manuel.
- Correction de raz: les options de format
étendus sont maintenant pris en compte.
- Correction d'un bogue dans la commande
melg (option -tr).
- Correction de bogues pour imps,
impsc,
anac,
icompose.
- Distribution 4.6.1 (mars 2007)
-
- Correction de bugs pour le support des architectures 86_64.
Seule la commande fzoom ne
fonctionne toujours pas.
D'autre bugs mineurs ont été corrigés.
- Distribution 4.6.0 (janvier 2007)
-
- Un certain nombre de bugs ont été éliminé, ainsi
qu'un toilettage des sources. Moins de bugs pour xvis5.
- 1999
-
- Janvier 1999 : correction d'un bug introduit dans la version 4.5-3.
Il n'était plus possible de remplcer un nom de fichier par "-" pour
désigner stdin ou stdout.
- 1997
-
- correction de
anac pour alpha.
- Réorganisation des "makefile"
- 1995/1996
-
- 1994
-
- le mode debug des fonctions
ialloc(3i)
n'est plus actif par défaut (pour éviter des problèmes avec Purify)
- correction bug izoom -f
- correction bug de ifmt -cp
- corrections de bugs dans le mécanisme de lecture des formats externes
(gif, etc.)
- nouvelle fonction
is_inrimage
- introduction des prototypes de fonctions dans image.h
- format d'image flottant 64 bits.
Par exemple
Juste une page d'exemples
(contient environ 150k d'images gif).
Il existe une commande Inrimage,
inr2ppm permettant de transformer une image Inrimage
(ou gif, etc.) en image PPM, format utilisé par mpeg_encode.
Cependant, pour fabriquer une séquence MPEG à partir d'images, on
pourra utiliser la commande
inr2mpg (script perl),
qui permet de fabriquer plus simplement le fichier de paramètres de
mpeg_encode.
Ci-dessous le help de la commande.
Voir aussi des exemples détaillés.
Usage: inr2mpg [-C] [-e][-s] [-f out-name][-d dir][-rep facteur][-pipe "commande"] file [ ... file]
-C : images couleurs si NDIMV==3 ou NDIMZ== 3
-e : executer mpeg_encode
-s : short format: supp comments in file .param
-f: choix des noms pour .param et .mpg (defaut mpeg)
-d: choix de INPUT_DIR (defaut '.')
-rep: facteur de repetition de chaque plan
-pipe: appliquer la commande "commande" a l'image avant conversion
Si file est de la forme 'xx*yy [i1-i2]' on fabrique un fichier classique
Sinon on suppose qu'il s'agit d'un fichier multiplans, dont chaque
plan représente une image de l'animation
Exemples:
inr2mpg image -C -e
inr2mpg 'im1-*.gif [001-010]' 'im2.* [1-8]' -s
inr2mpg image -s -pipe 'ext -iz \$iz -z 1 -x 256 -y 256 | izoom -sc .5'
Quelques informations sur les programmes
Comment retrouver les sources
d'un programme ?
Les sources sont dans le répertoire nommé src/.
Ce répertoire contient :
- h/
- les fichiers .h, le plus important est image.h
- bin-src/
- pour la fabrication des commandes Inrimage.
- scripts/
- source pour les commandes définies sous forme de scripts.
- inrimage/
- source de libinrimage.a, les fonctions de base.
- imaglb7/
- sources de libimaglb7.a, programmes de traitement d'images.
- mthlib7/
- sources de libmthlib7.a, quelques fonctions de calcul, utilisées
essentiellement pour la FFT.
- contlib7/
- sources de libcontlib.a, programmes de contours.
- enstsorl7/
- sources de libentsorl7.a, programmes d'E/S (graphiques).
- inrgraph/
- sources de libinrgraph.a, quelques fonctions graphiques
(tektro, PostScript).
- extra-conv/
- sources de quelques programmes de conversion
vers d'autres formats d'image (gif, tiff)
- xvis/
- sources de xvis, commande de visualisation d'images
- libxvis/
- sources de libxvis.a, fonctions pour le graphique xvis
- gvis/
- sources de gvis et libgvis.a.
Pour retrouver les fonctions utilisées par une commande :
- Trouver les fichiers de bin-src/ utilisés par la commande
en consultant Makefile.am/
On trouvera probablement un fichier k*.c/ et un fichier
s*.c/ ou s*.f/.
En général ces fichiers n'effectuent que les initialisations de paramètres
et l'ouverture des images.
- À l'aide de la liste de librairies utilisées, trouver dans quel
répertoire se trouve la fonction de calcul (il y en a souvent une seule,
appelée par l'intermédiaire de
exec ou imexec
Seules les fonctions de base, c'est-à-dire celles de libinrimage.a
sont documentées. Pour les autres il faut se reporter
au code source.
Pour appeler une fonction Fortran dans un programme C, on se reportera
au paragraphe
PROGRAMMATION
du manuel
Intro(3i)