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

Gestion d'une grille de reprojection. Plus de détails...

#include <Grid.h>

Graphe de collaboration de Grid:
Collaboration graph

Fonctions membres publiques

 Grid (int width, int height, BoundingBox< double > bbox)
 Crée un objet Grid à partir des dimensions à couvrir.
 ~Grid ()
 Destructeur par défaut.
double getDeltaY ()
 Retourne la valeur de deltaY.
double getRatioX ()
 Retourne le ratio dans le sens des X.
double getRatioY ()
 Retourne le ratio dans le sens des Y.
bool reproject (std::string from_srs, std::string to_srs)
 Reprojette les points de la grille.
void affine_transform (double Ax, double Bx, double Ay, double By)
 Applique une transformation affine.
int getline (int line, float *X, float *Y)
 Retourne une ligne de la grille, complétée par interpolation linéaire.
void print ()
 Sortie des informations sur la grille de reprojection.

Attributs publics

int width
 Largeur couverte par la grille.
int height
 Hauteur couverte par la grille.
BoundingBox< double > bbox
 Rectangle englobant couvert par la grille.

Fonctions membres privées

void calculateDeltaY ()
 Met à jour la valeur de deltaY.

Attributs privés

double deltaY
 Ecart maximal entre les coordonnées Y de la première ligne de la grille.
int nbxReg
 Nombre de points reprojetés, dans les sens des X, respectant le pas régulier.
int nbyReg
 Nombre de points reprojetés, dans les sens des Y, respectant le pas régulier.
int nbx
 Nombre de points reprojetés, dans les sens des X, en tout.
int nby
 Nombre de points reprojetés, dans les sens des Y, en tout.
int endX
 Nombre de pixels entre le dernier point régulier et le dernier de la grille, dans le sens des X.
int endY
 Nombre de pixels entre le dernier point régulier et le dernier de la grille, dans le sens des Y.
double * gridX
 Abscisses des points de la grille.
double * gridY
 Ordonnées des points de la grille.

Attributs privés statiques

static const int stepInt = 16
 Pas (en pixel) de la grille.

Description détaillée

Gestion d'une grille de reprojection.

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

Une grille est un objet utilisé afin de reprojeter des images (avec ReprojectedImage). On voudra connaître les coordonnées pixel dans l'image source d'un pixel de l'image reprojetée.

On imagine donc un quadrillage aux mêmes dimensions que l'image reprojetée (largeur, hauteur et rectangle englobant). On ne va pas convertir tous les pixels de l'image (problème de performance). On va donc en convertir un tous les stepInt pixels : c'est ce qu'on considère comme la grille.

grid_general.png

La grille ne sera pas composée que de ces pixels régulièrement espacés (nbxReg sur nbyReg). On va également ajouter les pixels du bords : on aura donc en tout (nbxReg + 1) x (nbyReg + 1) points dans notre grille. Les derniers points d'une ligne ou d'une colonne seront donc moins espacés. Cette distance, strictement inférieure à stepInt, sera connue est stockée dans endX et endY.

Dans le cas où l'espacement régulier permet d'avoir le dernier point, on ajoutera tout de même un point supplémentaire. Les deux derniers points de chaque ligne et colonne seront donc identiques. Cela permet d'avoir un comportement plus général.

Voici la démarche à suivre pour utiliser une grille pour une reprojection. Imaginons que l'on veuille obtenir une image dans un systéme spatial B à partir d'une image source dans un systéme spatial A

Cette grille peut enfin être fournie à l'objet ReprojectedImage.

Documentation des constructeurs et destructeur

Grid::Grid ( int  width,
int  height,
BoundingBox< double >  bbox 
)

Crée un objet Grid à partir des dimensions à couvrir.

Paramètres
[in]widthlargeur à couvrir
[in]heighthauteur à couvrir
[in]bboxemprise rectangulaire à couvrir

Voici le graphe d'appel pour cette fonction :

Grid::~Grid ( )
inline

Destructeur par défaut.

Suppression des tableaux gridX et gridY

Documentation des fonctions membres

void Grid::affine_transform ( double  Ax,
double  Bx,
double  Ay,
double  By 
)

Applique une transformation affine.

Tous les points de la grille subisse la transformation affine suivante :

  • X = Ax x X + Bx
  • Y = Ay x Y + By

On met à jour deltaY en le multipliant par la valeur absolue de Ay

Paramètres
[in]Axhomothétie en X
[in]Bxtranslation en X
[in]Ayhomothétie en Y
[in]Bytranslation en Y
void Grid::calculateDeltaY ( )
inlineprivate

Met à jour la valeur de deltaY.

À appeler après une conversion apportées aux coordonnées

Voici le graphe des appelants de cette fonction :

double Grid::getDeltaY ( )
inline

Retourne la valeur de deltaY.

Renvoie
deltaY

Voici le graphe des appelants de cette fonction :

int Grid::getline ( int  line,
float *  X,
float *  Y 
)

Retourne une ligne de la grille, complétée par interpolation linéaire.

On veut une ligne (entre 0 et height) de largeur width. Seulement certains points ont été calculés (reprojetection,transformation affine). On va donc interpoler linéairement les valeurs entres les points de la grille.

Paramètres
[in]lineindice de la ligne voulue
[in,out]Xbuffer dans lequel stocker les abscisses de la ligne
[in,out]Ybuffer dans lequel stocker les ordonnées de la ligne

Voici le graphe des appelants de cette fonction :

double Grid::getRatioX ( )

Retourne le ratio dans le sens des X.

Le ratio dans le sens des X est une pseudo résolution : c'est la différence entre les valeurs en bout de ligne, divisée par la largeur width. Ce calcul est effectué pour chaque ligne, et on conserve la valeur la plus grande.

Renvoie
ratio X

Voici le graphe des appelants de cette fonction :

double Grid::getRatioY ( )

Retourne le ratio dans le sens des Y.

Le ratio dans le sens des Y est une pseudo résolution : c'est la différence entre les valeurs en bout de colonne, divisée par la hauteur height. Ce calcul est effectué pour chaque colonne, et on conserve la valeur la plus grande.

Renvoie
ratio Y

Voici le graphe des appelants de cette fonction :

bool Grid::reproject ( std::string  from_srs,
std::string  to_srs 
)

Reprojette les points de la grille.

On fera particulièrement attentiotn à ce que les points de la grille appartiennent bien à la zone de définition du système spatial.

Paramètres
[in]from_srssystème spatial source, celui de la grille initialement
[in]to_srssystème spatial de destination, celui dans lequel on veut la grille
Renvoie
VRAI si succès, FAUX sinon.

Voici le graphe d'appel pour cette fonction :

Documentation des données membres

double Grid::deltaY
private

Ecart maximal entre les coordonnées Y de la première ligne de la grille.

Au fur et à mesure des conversions des points de la grille, on va mettre à jour cette valeur. Celle ci est utilisée pour savoir combien de lignes sources mémoriser dans ReprojectedImage (ReprojectedImage::memorizedLines).

int Grid::endX
private

Nombre de pixels entre le dernier point régulier et le dernier de la grille, dans le sens des X.

Peut être 0.

int Grid::endY
private

Nombre de pixels entre le dernier point régulier et le dernier de la grille, dans le sens des Y.

Peut être 0.


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