IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Représenter un nuage de points par une image


Sujet :

Traitement d'images

  1. #1
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut Représenter un nuage de points par une image
    Bonsoir,
    Je vous sollicite pour un petit problème que je rencontre et où j'aimerai avoir vos suggestions :
    Je dispose d'un nuage de points 2D stocké dans un fichier. (environ 200.000 points). Chaque point est défini par ses coordonnées réelles (X et Y) et son intensité.
    Je voudrai représenter ce nuage en une image qui soit le plus représentative possible, le seul problème c'est que les points ne sont pas réparti de manière equi-distante et en plus la zone formée par le nuage n'a rien d'un rectangle...

    Dans un premier temps, j'ai voulu approximer la valeur de chaque pixel de l'image par l'intensité du point le plus proches dans le nuage (Interpolation au plus proche voisin).
    Etant donnés le nombre très important de points, j'ai divisé l'espace en zones selon une grille régulière. Ainsi pour chaque pixel je détermine la zone dans laquelle il appartient, et je teste pour l'ensemble des points de la zone quel poitn est le plus proche du pixel en question.
    Les résultats étaient catastrophiques, ceci doit surement venir du faite que le point le plus proche ne se situe pas forcément dans la même zone du pixel.

    Je pense donc abandonner cette approche mais si vous avez des suggestions n'hésitez pas.

    Sinon, j'ai pensé à faire le chemin inverse, càd à projetter chaque point du nuage dans l'image selon une echelle assez grande et remplir les trous qui manquent par un moyen de dilatation . ça ne me parait pas très correcte, mais bon c'est tout ce que je vois pour le moment.

  2. #2
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    Bonjour,

    Tu peux peut etre essayer de normaliser les coordonnées de tes point
    pour une resolution d'image donnée

    si tu connais la résolution voulue, les min max des x et y c'est plutot
    simple a mettre en oeuvre,
    Par exemple en 1200*1024 ca te fait 1228800 pixels et pour l'intensité tu peux soit faire du niveau de gris soit utiliser une combinaison RGB.

    ensuite quand tu as remplis toute ton image, tu fais une passe pour chaque pixels.
    Quand tu en trouve un qui ne soit pas noir, tu fais une interpolation lineaire entre sa valeur et celle du suivant sur la meme ligne.
    Par contre la ca risque d'etre cracra sur les bords de l'image.
    il faut prendre en comptre les bordures.

    dommage, s'ils etaient equidistant, une petite interpolation bilineaire aurait pu faire l'affaire.

    Ou alors, peut etre encore ca.
    Tu remplis tout tes points dans ton image et tu applique un flou gaussien avec un gros facteur qui va bien te faire baver des pixels dans tout les sens et avec un peut de chance faire des fusions harmonieuses des intensités.

    Je ne sais pas si cette représentation te conviendrai ou si c'est ce que tu recherches.

    Sinon, c'est dans quel objectif si ce n'est pas indiscret ?

    Cordialement

  3. #3
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Bonjour,
    Tout d'abord je vous remercie pour toutes ces suggestions.
    Tu peux peut etre essayer de normaliser les coordonnées de tes point
    pour une resolution d'image donnée
    si tu connais la résolution voulue, les min max des x et y c'est plutot
    simple a mettre en oeuvre,
    Par exemple en 1200*1024 ca te fait 1228800 pixels et pour l'intensité tu peux soit faire du niveau de gris soit utiliser une combinaison RGB.
    Je voudrai que les dimensions de l'image dépendent d'une échelle que je donnerai en paramètre. J'ai donc établi une translation de X et de Y de façon à ce que x_min et y_min valent 0. Ainsi, la dimension de l'image sera de x_max*echelle et y_max-echelle.
    Quant aux intensités, se sont des réelles comprises entre 50 et 70, pour le moment je les ai normalisé à [0,255] pour avoir une représentation en niveau de gris. peut-être que plus tard j'utiliserai une échelle pseudo-couleur RGB afin de préserver la dynamique des intensités réelles.

    ensuite quand tu as remplis toute ton image, tu fais une passe pour chaque pixels.
    Quand tu en trouve un qui ne soit pas noir, tu fais une interpolation lineaire entre sa valeur et celle du suivant sur la meme ligne.
    Par contre la ca risque d'etre cracra sur les bords de l'image.
    il faut prendre en comptre les bordures.
    Je vais essayer
    Seul hic c'est que , plus l'échelle est importante et plus les points seront espacés. Le nombre de passe à faire pour remplir tout le vide dépendra donc de l'échelle. Peut être qu'en interpolant selon les k points suivants en ligne et en colonne réduirai le nombre de passes ... En tout cas merci pour cette astuce, je vais essayer ça de suite...

    Ou alors, peut être encore ca.
    Tu remplis tout tes points dans ton image et tu applique un flou gaussien avec un gros facteur qui va bien te faire baver des pixels dans tout les sens et avec un peut de chance faire des fusions harmonieuses des intensités.
    Je ne pense pas que cela puisse marcher car comme je viens de le dire avec une échelle assez grande les points seront très espacés, je pense alors que l'application du flou Gaussien va provoquer la suppression des ces points (ils seront considérés comme du bruit).

    Sinon, c'est dans quel objectif si ce n'est pas indiscret ?
    Non, cela n'a rien d'indiscret, ben disons que le fichier dont je dispose est issus d'un prélèvement par satellite. le X et Y représente en faite la latitude et la longitude. Pour le moment je ne sais pas ce que représente exactement la valeur d'intensité (température, luminance...etc).
    Mon objectif actuel est de représenter cet échantillon sous forme d'image numérique que l'on pourra traiter par la suite.(détection de contour).

    Merci encore Lharuun.

  4. #4
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Sujet Résolu, merci Lharuun.

  5. #5
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    Tu as utilisé quelle methode finalement ?

  6. #6
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Bonjour, j'ai procédé (approximativement) de la manière que vous m'avez décrit :
    Citation Envoyé par Lharuun Voir le message
    Bonjour,
    ensuite quand tu as remplis toute ton image, tu fais une passe pour chaque pixels.
    Quand tu en trouve un qui ne soit pas noir, tu fais une interpolation lineaire entre sa valeur et celle du suivant sur la meme ligne.
    Par contre la ca risque d'etre cracra sur les bords de l'image.
    il faut prendre en comptre les bordures.
    J'ai initialisé l'ensemble des pixels de l'image à la couleur Bleu, ainsi le bleu représentera les trous. Ensuite j'ai fais la projection du nuage vers l'image selon l'échelle. j'obtiens un ensemble de points répartis sur un fond bleu.
    Ensuite, je parcours l'image, à chaque pixel Bleu rencontré je lui affecte la valeur de son successeur (si ce dernier n'est pas bleu) selon la ligne et la colonne dans l'ordre.(pas très jolie comme interpolation mais ça me convient pour le moment)
    Avec une très grande échelle, trois à quatre passes sont nécessaires pour remplir tout le vide à l'intérieur de la région délimitée par le nuage.

    Edit :
    Je joins ici les résultats après 3 parcours.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2007, 17h08
  2. Mesure distance entre 2 points d'une image
    Par vexal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 14h29
  3. [JVM]connaitre la quantité mémoire consomé par une image.
    Par Higestromm dans le forum Général Java
    Réponses: 3
    Dernier message: 12/05/2005, 12h16
  4. [C#] Remplacer les boutons d'un DataGrid par une image
    Par PascalL dans le forum Windows Forms
    Réponses: 17
    Dernier message: 04/04/2005, 16h07
  5. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo