
Nicolas Widynski wrote:
Quelques propositions concernant la facon simple et claire d'ecrire des algorithmes de traitement d'images :
1) Points, voisins et Dpoints.
On voudrait acceder a un voisin particulier d'un point p. Actuellement, on peut faire : oln_type_of(I, point) p2(p.row() + 1, p.col()); -> syntaxe lourde
on peut aussi faire ca plus proprement en passant par un dpoint oln_type_of(I, dpoint) dp(-1, 0); et ainsi effectuer une operation du type 'dp + p'.
On aimerait peut-etre acceder a un point voisin de facon plus simple en equipant la classe 'point' du methode par exemple 'dp' qui declare le dpoint et effectue le calcul pour nous. Ex: ima[p.dp(-1,0)] -> on accede directement au point p translate du dpoint (-1, 0).
2) Sous-image.
Il est parfois (souvent) genant de devoir soit rajouter un parametre de masquage a nos algorithmes soit creer une sous-image de notre image manuellement. Ex: on voudrait lancer un algorithme sous une sous-image de notre image I.
Actuellement, on passe par un masque, ou on creer une sous-image manuellement.
Contraintes : - La fenetre peut bien sur ne pas etre rectangulaire (c'est plus souvent une zone correspondant a un objet de notre image par exemple). - on souhaite pouvoir acceder a la bordure exterieure de notre fenetre.
Ecrire une methode permettant de creer une fenetre simplement est assez difficile, pour l'instant je vois la solution de creer un masque et ainsi de creer une image morpher a partir de notre image de base et de notre masque.
3) Image de type structure.
On souhaite souvent creer une image de vecteur, pour l'instant on passe par le vector de la STL puis on est oblige de passer par une methode .at('point') pour lancer une methode de notre type structure. Ex : ima.at(p).push_back(3);
On aimerait avoir acces a des types vecteurs directement dans Olena, et donc ecrire la ligne du dessus plus simplement : ima[p].x = 3;
4) point-wise.
On aimerait aussi pouvoir declarer un calcul sur un point de facon point-wise. Ex : pw(gradient, ima[p.dp(-1,0)] - ima[p.dp(0,1)]); //on declare la facon de calculer notre gradient dans une image. puis lorsque on fait appel a gradient[p], on calcule seulement a ce moment le gradient au point p.
5) Range des valeurs de notre image.
On aimerait pouvoir modifier le range des valeurs de notre image simplement, ce qui revient effectuer un seuillage des valeurs min et max. ima.range().set_min(0); ima.range().set_max(255);
... FIXME : j'ai peut-etre oublie d'autres elements.
6) Outil de visualisation d'images Util pour le debugage. Visualisation graphique de l'image et son evolution au cours de l'algo (tracabilite) (on peut rever ;)). -- Widynski Nicolas CSI 2007