libimage  0.25.4
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Énumérations Macros Pages
Fonctions membres publiques | Fonctions membres protégées | Attributs protégés | Liste de tous les membres
Référence de la classe FileImage

Manipulation d'une image associée à un fichier. Plus de détails...

#include <FileImage.h>

Graphe d'héritage de FileImage:
Inheritance graph
Graphe de collaboration de FileImage:
Collaboration graph

Fonctions membres publiques

void unassociateAlpha (uint8_t *buffer)
 Désassocie le canal alpha.
virtual int getline (uint8_t *buffer, int line)=0
 Retourne une ligne en entier 8 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 8 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 4 "cases" sur 8 bits).
virtual int getline (float *buffer, int line)=0
 Retourne une ligne en flottant 32 bits. Les canaux sont entrelacés. Si les données ne sont pas intrinsèquement codées sur des flottants 32 bits, une conversion est effectuée.
virtual int getline (uint16_t *buffer, int line)=0
 Retourne une ligne en entier 16 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 16 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 2 "cases" sur 16 bits).
virtual int writeImage (Image *pIn)=0
 Ecrit une image, à partir d'une image source.
virtual int writeImage (uint8_t *buffer)=0
 Ecrit une image, à partir d'un buffer d'entiers sur 8 bits.
virtual int writeImage (uint16_t *buffer)=0
 Ecrit une image, à partir d'un buffer d'entiers sur 16 bits.
virtual int writeImage (float *buffer)=0
 Ecrit une image, à partir d'un buffer de flottants.
virtual int writeLine (uint8_t *buffer, int line)=0
 Ecrit une ligne de l'image, à partir d'un buffer d'entiers sur 8 bits.
virtual int writeLine (uint16_t *buffer, int line)=0
 Ecrit une ligne de l'image, à partir d'un buffer d'entiers sur 16 bits.
virtual int writeLine (float *buffer, int line)=0
 Ecrit une ligne de l'image, à partir d'un buffer de flottants.
char * getFilename ()
 Retourne le chemin du fichier image.
int getBitsPerSample ()
 Retourne le nombre de bits par canal.
Photometric::ePhotometric getPhotometric ()
 Retourne la photométrie des données image (rgb, gray...)
ExtraSample::eExtraSample getExtraSample ()
 Retourne le type du canal supplémentaire.
void setExtraSample (ExtraSample::eExtraSample es)
 Modifie le type du canal supplémentaire.
Compression::eCompression getCompression ()
 Retourne la compression des données.
SampleFormat::eSampleFormat getSampleFormat ()
 Retourne le format des canaux (entier, flottant)
int getPixelSize ()
 Retourne la taille en octet d'un pixel.
 ~FileImage ()
 Destructeur par défaut.
void print ()
 Sortie des informations sur l'image.
- Fonctions membres publiques inherited from Image
void makeMask ()
 Définit l'image comme un masque.
int getWidth ()
 Retourne la largeur en pixel de l'image.
int getHeight ()
 Retourne la hauteur en pixel de l'image.
void setBbox (BoundingBox< double > box)
 Définit l'emprise rectangulaire de l'image et calcule les résolutions.
bool setDimensions (int w, int h, BoundingBox< double > box, double rx, double ry)
 Définit les dimensions de l'image, en vérifiant leurs cohérences.
BoundingBox< double > getBbox () const
 Retourne l'emprise rectangulaire de l'image.
void setCRS (CRS srs)
 Définit le SRS de l'emprise rectangulaire.
CRS getCRS () const
 Retourne le SRS de l'emprise rectangulaire de l'image.
double getXmin () const
 Retourne le xmin de l'emprise rectangulaire.
double getYmax () const
 Retourne le ymax de l'emprise rectangulaire.
double getXmax () const
 Retourne le xmax de l'emprise rectangulaire.
double getYmin () const
 Retourne le ymin de l'emprise rectangulaire.
double getResX () const
 Retourne la résolution dans le sens des X.
double getResY () const
 Retourne la résolution dans le sens des Y.
ImagegetMask ()
 Retourne le masque de donnée associé à l'image.
bool setMask (Image *newMask)
 Définit le masque de donnée et contrôle la cohérence avec l'image.
int x2c (double x)
 Conversion de l'abscisse terrain vers l'indice de colonne dans l'image.
int y2l (double y)
 Conversion de l'ordonnée terrain vers l'indice de ligne dans l'image.
double c2x (int c)
 Conversion de l'indice de colonne dans l'image vers l'abscisse terrain du centre du pixel.
double l2y (int l)
 Conversion de l'indice de ligne dans l'image vers l'ordonnée terrain du centre du pixel.
double getPhaseX ()
 Calcul de la phase dans le sens des X.
double getPhaseY ()
 Calcul de la phase dans le sens des Y.
bool isCompatibleWith (Image *pImage)
 Détermine la compatibilité avec une autre image, en comparant phases et résolutions.
 Image (int width, int height, int channels, double resx, double resy, BoundingBox< double > bbox)
 Crée un objet Image à partir de tous ses éléments constitutifs.
 Image (int width, int height, int channels)
 Crée une Image sans préciser de géoréférencement, ni résolutions, ni rectangle englobant.
 Image (int width, int height, int channels, BoundingBox< double > bbox)
 Crée une Image sans préciser les résolutions.
 Image (int width, int height, int channels, double resx, double resy)
 Crée un objet Image sans préciser le rectangle englobant.
virtual ~Image ()
 Destructeur par défaut.
virtual void printTFW ()
 Sortie du tfw de l'image.

Fonctions membres protégées

 FileImage (int width, int height, double resx, double resy, int channels, BoundingBox< double > bbox, char *name, SampleFormat::eSampleFormat sampleformat, int bitspersample, Photometric::ePhotometric photometric, Compression::eCompression compression, ExtraSample::eExtraSample esType=ExtraSample::ALPHA_UNASSOC)
 Crée un objet FileImage à partir de tous ses éléments constitutifs.
- Fonctions membres protégées inherited from Image
void computeResolutions ()
 Calcul des resolutions en x et en y, calculées à partir des dimensions et de la bouding box.

Attributs protégés

char * filename
 Chemin du fichier image.
Photometric::ePhotometric photometric
 Photométrie des données (rgb, gray...)
ExtraSample::eExtraSample esType
 type de l'éventuel canal supplémentaire
Compression::eCompression compression
 Compression des données (jpeg, packbits...)
SampleFormat::eSampleFormat sampleformat
 Format des canaux.
int bitspersample
 Nombre de bits par canal.
int pixelSize
 Taille d'un pixel en octet.
- Attributs protégés inherited from Image
int width
 Largeur de l'image en pixel.
int height
 Hauteur de l'image en pixel.
bool isMask
 L'image est-ell un masque ?
BoundingBox< double > bbox
 Emprise rectangulaire au sol de l'image.
CRS crs
 CRS du rectangle englobant de l'image.
Imagemask
 Masque de donnée associé à l'image, facultatif.
double resx
 Resolution de l'image, dans le sens des X.
double resy
 Resolution de l'image, dans le sens des Y.

Additional Inherited Members

- Fonctions membres publiques statiques inherited from Image
static bool dimensionsAreConsistent (double resolution_x, double resolution_y, int w, int h, BoundingBox< double > bounding_box)
 Vérifie la cohérence des dimensions d'image fournies.
- Attributs publics inherited from Image
const int channels
 Nombre de canaux de l'image.

Description détaillée

Manipulation d'une image associée à un fichier.

Auteur
Institut national de l'information géographique et forestière

Cette classe abstraite permet d'ajouter des drivers (formats d'images possibles gérés par la libimage), sans avoir à modifier le reste de la librairie : c'est une couche d'abstraction du format de l'image lue ou écrite.

Formats gérés :

FormatClasseExtensions détectéesEn lectureEn écritureLibrairie utilisée
TIFFLibtiffImage.tif, .tiff, .TIF, .TIFFFormat de canal : entiers 8 bits, 16 bits et floattant 32 bitsFormat de canal : entiers 8 bits, 16 bits et floattant 32 bitsLibtiff 3.8.2
PNGLibpngImage.png, .PNGFormat de canal : entiers 1,2,4 et 8 bitsNonLibpng 1.6.2
ROK4Rok4Imagenon filtré sur l'extensionFormat de canal : entiers 8 bits, 16 bits et floattant 32 bitsFormat de canal : entiers 8 bits, 16 bits et floattant 32 bitsLibtiff 3.8.2. Format TIFF particulier, propre au projet ROK4
JPEG2000Jpeg2000Image.jp2, .JP2Format de canal : selon la librairieNonOpenjpeg 2.0.0 ou Kakadu 6.4.1
BILBilzImage.bil, .BIL, .zbil, .ZBILFormat de canal : entiers 8 bits, 16 bits et floattant 32 bitsNonZlib 1.2.5 pour la décompression

Tous les canaux doivent evoir le même format.

Documentation des constructeurs et destructeur

FileImage::FileImage ( int  width,
int  height,
double  resx,
double  resy,
int  channels,
BoundingBox< double >  bbox,
char *  name,
SampleFormat::eSampleFormat  sampleformat,
int  bitspersample,
Photometric::ePhotometric  photometric,
Compression::eCompression  compression,
ExtraSample::eExtraSample  esType = ExtraSample::ALPHA_UNASSOC 
)
protected

Crée un objet FileImage à partir de tous ses éléments constitutifs.

Ce constructeur n'est appelé que par les constructeurs des classes filles

Paramètres
[in]widthlargeur de l'image en pixel
[in]heighthauteur de l'image en pixel
[in]resxrésolution dans le sens des X
[in]resyrésolution dans le sens des Y
[in]channelnombre de canaux par pixel
[in]bboxemprise rectangulaire de l'image
[in]namechemin du fichier image
[in]sampleformatformat des canaux
[in]bitspersamplenombre de bits par canal
[in]photometricphotométrie des données
[in]compressioncompression des données
[in]esTypetype du canal supplémentaire, si présent.

Documentation des fonctions membres

int FileImage::getBitsPerSample ( )
inline

Retourne le nombre de bits par canal.

Renvoie
nombre de bits par canal

Voici le graphe des appelants de cette fonction :

Compression::eCompression FileImage::getCompression ( )
inline

Retourne la compression des données.

Renvoie
compression

Voici le graphe des appelants de cette fonction :

ExtraSample::eExtraSample FileImage::getExtraSample ( )
inline

Retourne le type du canal supplémentaire.

Renvoie
esType
char* FileImage::getFilename ( )
inline

Retourne le chemin du fichier image.

Renvoie
chemin image
virtual int FileImage::getline ( uint8_t *  buffer,
int  line 
)
pure virtual

Retourne une ligne en entier 8 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 8 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 4 "cases" sur 8 bits).

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels * sizeof(sample)' entier sur 8 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente Image.

Implémenté dans Rok4Image, LibtiffImage, LibkakaduImage, BilzImage, LibopenjpegImage, LibpngImage, et Jpeg2000Image.

Voici le graphe des appelants de cette fonction :

virtual int FileImage::getline ( float *  buffer,
int  line 
)
pure virtual

Retourne une ligne en flottant 32 bits. Les canaux sont entrelacés. Si les données ne sont pas intrinsèquement codées sur des flottants 32 bits, une conversion est effectuée.

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels' flottant sur 32 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente Image.

Implémenté dans Rok4Image, LibtiffImage, LibkakaduImage, BilzImage, LibopenjpegImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::getline ( uint16_t *  buffer,
int  line 
)
pure virtual

Retourne une ligne en entier 16 bits. Les canaux sont entrelacés. ATTENTION : si les données ne sont pas intrinsèquement codées sur des entiers 16 bits, il n'y a pas de conversion (une valeur sur 32 bits occupera 2 "cases" sur 16 bits).

Paramètres
[in,out]bufferTableau contenant au moins 'width * channels * sizeof(sample) * 2' entier sur 16 bits
[in]lineIndice de la ligne à retourner (0 <= line < height)
Renvoie
taille utile du buffer, 0 si erreur

Implémente Image.

Implémenté dans Rok4Image, LibtiffImage, LibkakaduImage, BilzImage, LibopenjpegImage, LibpngImage, et Jpeg2000Image.

Photometric::ePhotometric FileImage::getPhotometric ( )
inline

Retourne la photométrie des données image (rgb, gray...)

Renvoie
photométrie

Voici le graphe des appelants de cette fonction :

SampleFormat::eSampleFormat FileImage::getSampleFormat ( )
inline

Retourne le format des canaux (entier, flottant)

Renvoie
format des canaux

Voici le graphe des appelants de cette fonction :

void FileImage::unassociateAlpha ( uint8_t *  buffer)

Désassocie le canal alpha.

Le canal alpha peut être prémultiplié aux autres canaux dans les images lues. La libimage travaille toujours en alpha non-associé. Si associatedalpha est à vrai, on convertit alors à la lecture le canal alpha

Paramètres
[in,out]buffersource des donnée, dont l'alpha doit être désassocié

Voici le graphe des appelants de cette fonction :

virtual int FileImage::writeImage ( Image pIn)
pure virtual

Ecrit une image, à partir d'une image source.

Toutes les informations nécessaires à l'écriture d'une image sont dans l'objet FileImage, sauf les données à écrire. On renseigne cela via une seconde image.

Paramètres
[in]pInsource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

Voici le graphe des appelants de cette fonction :

virtual int FileImage::writeImage ( uint8_t *  buffer)
pure virtual

Ecrit une image, à partir d'un buffer d'entiers sur 8 bits.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::writeImage ( uint16_t *  buffer)
pure virtual

Ecrit une image, à partir d'un buffer d'entiers sur 16 bits.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::writeImage ( float *  buffer)
pure virtual

Ecrit une image, à partir d'un buffer de flottants.

Paramètres
[in]buffersource des donnée de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::writeLine ( uint8_t *  buffer,
int  line 
)
pure virtual

Ecrit une ligne de l'image, à partir d'un buffer d'entiers sur 8 bits.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::writeLine ( uint16_t *  buffer,
int  line 
)
pure virtual

Ecrit une ligne de l'image, à partir d'un buffer d'entiers sur 16 bits.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

virtual int FileImage::writeLine ( float *  buffer,
int  line 
)
pure virtual

Ecrit une ligne de l'image, à partir d'un buffer de flottants.

Paramètres
[in]buffersource des donnée de l'image à écrire
[in]lineligne de l'image à écrire
Renvoie
0 en cas de succes, -1 sinon

Implémenté dans Rok4Image, LibtiffImage, BilzImage, LibpngImage, et Jpeg2000Image.

Documentation des données membres

ExtraSample::eExtraSample FileImage::esType
protected

type de l'éventuel canal supplémentaire

En écriture ou dans les traitements, on considère que les canaux ne sont pas prémultipliés par la valeur d'alpha. En lecture, on accepte des images pour lesquelles l'alpha est associé. On doit donc mémoriser cette information et convertir à la volée lors de la lecture des données.


La documentation de cette classe a été générée à partir des fichiers suivants :