Skip to content

Tiled Image concepts

mtola edited this page Jan 24, 2013 · 37 revisions

L’idée principale est de fournir un adaptateur d’image pour les grands conteneurs (par exemple : hdf5, netcdf, ...) sous la forme d’images tuilées.

Notations & Concepts

CTiledImage

Objectifs: définit une image virtuelle tuilée de domaine D. Les tuiles i ne se chevauchent pas et la réunion de tous les domaines Di des tuiles est le domaine D. CTiledImage est une extension de CImage.

Modèles de ce concept

  • c colonnes, l lignes : Di calculés,
  • Di définis explicitement dans une STLVector ou STLMap autorisant ainsi une entière liberté sur la taille et la position des tuiles,
  • ...

Inner type du concept

  • imageCache: type de cache (cf. CImageCache ci-dessous)
  • imageFactory: type de factory (cf. CImageFactory ci-dessous)
  • D: type du domaine de l'image virtuelle tout entière

Interface

  • constructor

  • const Domain & domain() const : retourne le domaine D

  • ConstRange constRange() const : parcourt séquentiellement le range des domaines Di

  • Range range() : idem

  • Value operator()(const Point & aPoint) const : si imageCache.read(const Point &aPoint, Value &aValue) = true alors retourne aValue, sinon faire: imageCache.update(imageFactory.requestImage(findSubDomain(const Point & aPoint))) puis imageCache.read(const Point &aPoint, Value &aValue) pour retourner aValue

  • setValue(const Point &aPoint, const Value &aValue) : idem pour l'écriture de aValue pour aPoint

  • Domain::ConstIterator di

  • Domain * findSubDomain(const Point & aPoint) const : retourne le domaine Di contenant le point aPoint

CImageCache

Objectifs: définit une politique de mémoire cache d'images ainsi que des fonctions d'accès en lecture, écriture et mise à jour de cache.

Sélecteurs de ce concept

Read selectors:

  • LAST : sauvegarde la dernière image courante,
  • FIFO (First In First Out) : efface les images dans l'ordre où elles sont arrivées dans la mémoire cache,
  • LRU (Least Recently Used) : remplace l'image utilisée la moins récemment afin de garder les images récemment utilisées,
  • ...
  • NEIGHBORS : mémorise la liste des 8 images voisines de la dernière image courante ainsi que cette dernière,
  • ...

Write selectors:

  • WT (write-through, écriture immédiate) : donnée écrite à la fois dans le cache et dans la mémoire principale,
  • WB (write-back, écriture différée) : donnée écrite dans la mémoire principale que lorsque l'image disparaît du cache.

Inner type du concept

  • Domain: type du domaine
  • Image: type de l'image

Interface

  • constructor
  • bool read(const Point &aPoint, Value &aValue) const : si aPoint appartient à une image du cache, la fonction retourne true et aValue contient la valeur de aPoint. Si aPoint n'appartient pas à une image du cache la fonction retourne false
  • bool write(const Point &aPoint, const Value &aValue) : si aPoint appartient à une image du cache, la fonction retourne true et aValue est écrite pour le point aPoint. Si aPoint n'appartient pas à une image du cache la fonction retourne false
  • update(Image &anImage) : met en cache l'image en appliquant la politique de cache pour savoir quoi faire du cache précédent (cf. read selectors)

CImageFactory

Objectifs: retourne une image DGtal. Doit avoir une méthode requestImage qui étant donné un domaine, retourne un pointeur vers un conteneur d'image associant les points du domaine à des valeurs à ces points (Domaine x Value). Doit également avoir une méthode writeImage pour mettre à jour le conteneur d'image.

Modèles de ce concept

  • mécanisme de chargement fichier par bloc (ex.: hdf5),
  • image virtuelle implicite,
  • ...

Inner type du concept

  • Domain: type du domaine
  • Image: type de l'image

Interface

  • constructor
  • Image * requestImage(const Domain &aDomain)
  • writeImage(const Image &aImage)

Examples of models

...