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

Manipulation d'un paquet d'images compatibles. Plus de détails...

#include <ExtendedCompoundImage.h>

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

Fonctions membres publiques

std::vector< Image * > * getImages ()
 Retourne le tableau des images sources.
void getOffsets (int i, int *ol, int *c0, int *c1, int *c2)
 Retourne les différents offsets pour l'image demandée, pour les lignes et les colonnes.
bool useMasks ()
 Précise si au moins une image source possède un masque de donnée.
ImagegetMask (int i)
 Retourne le masque de l'image source d'indice i.
ImagegetImage (int i)
 Retourne l'image source d'indice i.
bool addMirrors (int mirrorSize)
 Ajoute des miroirs à chacune des images sources.
bool extendBbox (BoundingBox< double > otherbbox, int morePix)
 Modifie les dimensions de l'image.
uint getMirrorsNumber ()
 Retourne le nombre de miroirs parmi les images sources.
int * getNodata ()
 Retourne la valeur de non-donnée.
int getline (uint8_t *buffer, int line)
 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).
int getline (float *buffer, int line)
 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.
int getline (uint16_t *buffer, int line)
 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 ~ExtendedCompoundImage ()
 Destructeur par défaut.
void print ()
 Sortie des informations sur l'image composée.
- 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

 ExtendedCompoundImage (int width, int height, int channels, double resx, double resy, BoundingBox< double > bbox, std::vector< Image * > &images, int *nd, uint mirrors)
 Crée un objet ExtendedCompoundImage à 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.

Fonctions membres privées

template<typename T >
int _getline (T *buffer, int line)
 Retourne une ligne, flottante ou entière.
void calculateOffsets ()
 Calcule les offsets pour chaque image source.

Attributs privés

std::vector< Image * > sourceImages
 Images sources, toutes superposables, utilisée pour assembler l'image composée.
std::vector< int > rowsOffsets
 Offset sur les lignes.
std::vector< int > c0s
 Offset sur les colonnes.
std::vector< int > c1s
 Offset sur les colonnes.
std::vector< int > c2s
 Offset sur les colonnes.
uint mirrorsNumber
 Nombre de miroirs dans les images sources.
int * nodata
 Valeur de non-donnée.

Amis

class ExtendedCompoundImageFactory

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.
- 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.

Description détaillée

Manipulation d'un paquet d'images compatibles.

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

On va manipuler un paquet d'images superposables comme si elles n'en étaient qu'une seule. On parle d'images superposables lorsqu'elles ont :

Les tests d'égalité acceptent un epsilon qui est le suivant :

eci.png

Documentation des constructeurs et destructeur

ExtendedCompoundImage::ExtendedCompoundImage ( int  width,
int  height,
int  channels,
double  resx,
double  resy,
BoundingBox< double >  bbox,
std::vector< Image * > &  images,
int *  nd,
uint  mirrors 
)
inlineprotected

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

Ce constructeur est protégé afin de n'être appelé que par l'usine ExtendedCompoundImageFactory, qui fera différents tests et calculs.

Paramètres
[in]widthlargeur de l'image en pixel
[in]heighthauteur de l'image en pixel
[in]channelnombre de canaux par pixel
[in]resxrésolution dans le sens des X
[in]resyrésolution dans le sens des Y
[in]bboxemprise rectangulaire de l'image
[in]imagesimages sources
[in]ndvaleur de non-donnée
[in]mirrorsnombre d'images miroirs dans le tableau des images sources (placées au début)

Voici le graphe d'appel pour cette fonction :

virtual ExtendedCompoundImage::~ExtendedCompoundImage ( )
inlinevirtual

Destructeur par défaut.

Suppression de toutes les images composant l'ExtendedCompoundImage

Documentation des fonctions membres

template<typename T >
int ExtendedCompoundImage::_getline ( T *  buffer,
int  line 
)
private

Retourne une ligne, flottante ou entière.

Lorsque l'on veut récupérer une ligne d'une image composée, on va se reporter sur toutes les images source.

eci_getline.png

On lit en parallèle de chaque image source l'éventuel masque qui lui est associé. Ainsi, si un pixel n'est pas réellement de la donnée, on évite d'écraser les données du dessous. Si il n'y a pas de masque, on considère l'image source comme pleine (ne contient pas de non-donnée).

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

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

bool ExtendedCompoundImage::addMirrors ( int  mirrorSize)

Ajoute des miroirs à chacune des images sources.

On va vouloir réechantillonner (ou reprojeter) ce paquet d'images, donc utiliser une interpolation. Une interpolation se fait sur un nombre plus ou moins grand de pixels sources, selon le type. On veut que l'interpolation soit possible même sur les pixels du bord, et ce sans effet de bord.

On ajoute donc des pixels virtuels, qui ne sont que le reflet des pixels de l'image. On crée ainsi 4 images miroirs (objets de la classe MirrorImage) par image du paquet (une à chaque bord). On sait distinguer les vraies images de celles virtuelles.

On aura préalablement optimisé la taille des miroirs, pour qu'elle soit juste suffisante pour l'interpolation.

Paramètres
[in]mirrorSizetaille en pixel des miroirs, dépendant du mode d'interpolation et du ratio des résolutions
Renvoie
VRAI dans le cas d'un succès, FAUX sinon.
miroirs.png

Voici le graphe d'appel pour cette fonction :

void ExtendedCompoundImage::calculateOffsets ( )
inlineprivate

Calcule les offsets pour chaque image source.

Les offsets à caculer sont :

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

bool ExtendedCompoundImage::extendBbox ( BoundingBox< double >  otherbbox,
int  morePix = 0 
)

Modifie les dimensions de l'image.

On veut potentiellement augmenter l'étendue de l'image. Cela implique donc de changer les dimensions pixel width et height (pas de modification des résolutions). On vérifie bien que la nouvelle bounding box garde la même phase que l'ancienne. Étant donné qu'on n'ajoute pas de nouvelle image source, on augmente donc la quantité de nodata dans l'image.

L'extension se déroule en 3 étapes :

  • augmentation afin d'inclure la bbox fournie : on ajoute des nombres entiers de pixel à gauche,à droite, en haut et en bas
  • on ajoute optionnellement un nombre fixe de pixels des 4 côtés
  • on met à jour les attributs de l'ExtendedCompoundImage : les dimensions pixel, la bounding box et éventuellement le masque associé
Paramètres
[in]otherbboxrectangle englobant à inclure dans celui de l'image
[in]morePixtaille en pixel à ajouter de chaque côté, en plus de vouloir inclure "otherbbox"
Renvoie
VRAI dans le cas d'un succès, FAUX sinon.

Voici le graphe d'appel pour cette fonction :

Image* ExtendedCompoundImage::getImage ( int  i)
inline

Retourne l'image source d'indice i.

Paramètres
[in]iindice de l'image source voulue
Renvoie
image
std::vector<Image*>* ExtendedCompoundImage::getImages ( )
inline

Retourne le tableau des images sources.

Renvoie
images sources

Voici le graphe des appelants de cette fonction :

int ExtendedCompoundImage::getline ( uint8_t *  buffer,
int  line 
)
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.

Voici le graphe d'appel pour cette fonction :

int ExtendedCompoundImage::getline ( float *  buffer,
int  line 
)
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.

Voici le graphe d'appel pour cette fonction :

int ExtendedCompoundImage::getline ( uint16_t *  buffer,
int  line 
)
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.

Voici le graphe d'appel pour cette fonction :

Image* ExtendedCompoundImage::getMask ( int  i)
inline

Retourne le masque de l'image source d'indice i.

Paramètres
[in]iindice de l'image source dont on veut le masque
Renvoie
masque

Voici le graphe des appelants de cette fonction :

uint ExtendedCompoundImage::getMirrorsNumber ( )
inline

Retourne le nombre de miroirs parmi les images sources.

Renvoie
nombre d'images miroirs

Voici le graphe des appelants de cette fonction :

int* ExtendedCompoundImage::getNodata ( )
inline

Retourne la valeur de non-donnée.

Renvoie
Valeur de non-donnée
void ExtendedCompoundImage::getOffsets ( int  i,
int *  ol,
int *  c0,
int *  c1,
int *  c2 
)
inline

Retourne les différents offsets pour l'image demandée, pour les lignes et les colonnes.

Renvoie
offsets

Voici le graphe des appelants de cette fonction :

bool ExtendedCompoundImage::useMasks ( )
inline

Précise si au moins une image source possède un masque de donnée.

Renvoie
présence de masque

Voici le graphe d'appel pour cette fonction :

Documentation des données membres

std::vector<int> ExtendedCompoundImage::c0s
private

Offset sur les colonnes.

Numéro de la colonne dans l'ExtendedCompoundImage correspondant à la première colonne de l'image source, ou 0 si c'est négatif

std::vector<int> ExtendedCompoundImage::c1s
private

Offset sur les colonnes.

Numéro de la colonne dans l'ExtendedCompoundImage correspondant à la dernière colonne de l'image source, ou width - 1 si c'est supérieur

std::vector<int> ExtendedCompoundImage::c2s
private

Offset sur les colonnes.

Numéro de la colonne dans l'image source correspondant à la première colonne de ExtendedCompoundImage, ou 0 si c'est négatif

uint ExtendedCompoundImage::mirrorsNumber
private

Nombre de miroirs dans les images sources.

Certaines images sources peuvent etre des miroirs (MirrorImage). Lors de la composition de l'image, on ne veut pas que les données des vraies images soient écrasées par des données "miroirs". C'est pourquoi on veut connaître le nombre d'images miroirs dans le tableau et on sait qu'elles sont placées au début.

int* ExtendedCompoundImage::nodata
private

Valeur de non-donnée.

On a une valeur entière par canal. Tous les pixel de l'image composée seront initialisés avec cette valeur.

std::vector<int> ExtendedCompoundImage::rowsOffsets
private

Offset sur les lignes.

Numéro de la ligne dans l'ExtendedCompoundImage correspondant à la première ligne de l'image source

std::vector<Image*> ExtendedCompoundImage::sourceImages
private

Images sources, toutes superposables, utilisée pour assembler l'image composée.

La première image est celle du dessous


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