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 :

changer la forme géométrique d'une image


Sujet :

Traitement d'images

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut changer la forme géométrique d'une image
    bonjour à toutes et à tous
    J'ai un problème et je ne sais pas par où commencer. En fait j'ai trois objets circulaire(proche d'un cercle arrondi sur les bords ). Je voudrais transformer ces objets circulaire en des objets curvilignes.
    Pour ce faire j'ai commencer par recuperer la distance de chaque pixel par rapport au centre, maintenant je voudrait reconstruire une nouvelle matrice dans laquelle contiendrait les valeurs de la distance des pixels de sorte que j'aurais une courbe au lieu d'un cercle arrondi.
    Pour être plus claire:
    Imaginer que vous avez un cercle et que vous voulez regarder son périmétre en entier sur une seul direction.
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 160
    Points
    53 160
    Par défaut
    Un aperçu de l'image sur laquelle tu travailles nous permettrait déjà de mieux nous représenter le problème...

    Sinon, pourquoi ne pas passer les indices des pixels correspondant aux formes en coordonnées polaires (avec CART2POL) centrées sur chaque forme ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Dut merci de votre réponse
    Si j'ai essayé de transformer les coordonnées polaires centrées au milieu de l'image originale en cordonnées cartésiennes centrés en haut en gauche de l'image mais j'ai des soucis:
    -En fait mes images n'ont pas le mm nombre de pixels au niveau du contour( ainsi donc les image déroulées n'auront pas la mm longueur car le nombre de pixels au contour détermine la longueur de l'image finale)
    - Et comme après je dois faire en 3D des images déroulées avec un autre logiciel

    Pour être plus claire je travaille sur l'analyse de la qualité des os. Actuellement je suis entrain d'étudier une maladie pour cela je suis emmené à quantifier les dommages que cette maladie laisse sur la surface intérieur de l'os en particulier la fémur. les dommages ne sont rien d'autre que des trous comme montre os-aa-presenté.
    Pour se faire, j'ai commencer par couper mon os en plusieurs coupes de quelque nm. l'idée est de déplier chaque coupe suivant le nombre de pixels du contour interne aprés extraction de ce contour et enfin faire la recontruction en 3D pour obtenir l'image de l'os(surface latérale) vus sur une surface plane[ATTACH]Nom : os_aa_presente.jpg
Affichages : 232
Taille : 88,1 Ko[/ATTACH]

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Dut voici une image déroulé aprés reconstruction en 3D. On voie trés bien que les erreurs, afin je veux dire par là que le déroulement n'est pas totale y'a des zones qui ne sont pas étudiées merci
    Images attachées Images attachées  

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 160
    Points
    53 160
    Par défaut
    Ne serait-il pas plus simple de passer par une étape intermédiaire de "projection" des "poins" sur un cylindre avant de dérouler ce cylindre sur un plan ?

    J'ai mis des guillemets car tout dépend de la nature des données au départ (volume 3D, surface STL, coupe DICOM... ?)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci de votre réponse
    En fait je sais pas si j'ai bien compris votre proposition ou pas. Mais je voie pas bien l'intérêt d'une projection des points de mon image sur un cylindre.En fait je travaille avec des coupes de 2D format bmp. Pour la reconstruction en 3D j'ai déjà un logiciel qui le fait très bien. Moi j'ai juste à prendre une coupe en 2D faire l'extraction du contour interne puis le déroulement de ce contour et appliqué ceci sur toutes mes images en 2D, puis revenir sur mon logiciel pour la reconstruction en 3D. Ci joint une image initiale d'une coupe en 2D puis une image ou on a fait l'extraction du contour interne. Ce qui reste est de déplier le contour suivant son nombre de pixels c'est à dire l'image finale aura comme longueur le nombre de pixel sur le contour de l'image de départ (img_contour). DUT j'ai vraiment besoin de l'aide merci d'avance.
    Images attachées Images attachées   

  7. #7
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    S'il y a un défaut sur un contour et pas le suivant, je ne vois pas comment tu pourrais raccorder les "développées" de ces contours.
    J'utiliserais des coordonnées cylindriques, définissant pour chaque coupe Rmin et Rmax de teta, avec le nombre de valeurs de teta nécessaire, qui seraient simples à représenter.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci de votre réponse Nebulix
    Pour le raccordement des "developpés" y'aura pas de soucis car j'ai un logiciel de reconstruction trés puissant. Je vais tte de suite essayer votre proposition (coordonnées cylindrique") , mais dans ce cas je serais obligé de travailler avec l'image en 3D et non pas les coupes en 2D ? merci c'est vraiment gentil

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par labora Voir le message
    Ce qui reste est de déplier le contour suivant son nombre de pixels c'est à dire l'image finale aura comme longueur le nombre de pixel sur le contour de l'image de départ (img_contour).
    C'est à dire parcourir les pixels un par un dans un certain ordre ?

    (algorithme de tracé de contour de Moore)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    merci d'abord
    Bien peu importe de les parcourir dans un mm sens ou pas. L'essentiel est de pouvoir reclasser les pixels suivant une direction et un sens de tel sorte que on aura transformer l'image de départ (contour_interne) à une courbe évoluant dans un sens unique.

    Permettez moi de vous exposer mon idée:
    --Imaginons que j'arrive à extraire la distance de chaque pixels de contour par rapport au centre de l'image.
    -- Et que j crée une nouvelle matrice avec les distances des pixels, cette nouvelle matrice aura comme longueur le nombre de pixels du contour + les trous de l'image et comme largeur le rayon le plus grand.
    Que pensez-vous de cette démarche, est ce possible?
    Cependant mon problème est comment créé cette nouvelle matrice et comment gérer les trous ??? . Pour cette démarche je serai obligeé de parcourir mon image de départ dan un sens. Ci joint une image qui montre ce que j voudrai avoir
    merci de m'aider
    Fichiers attachés Fichiers attachés

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    je voudrais implémenter cet algorithme que j'ai trouvé sur le net, mais je ne comprends pas grand chose de l'implémentation des algos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    A sequence B(b1, b2, ..., bk) of boundary pixels i.e. the contour line.
    We define M(p) to be the Moore neighborhood of pixel p, c denotes the current pixel under consideration i.e. c is in M(p).
     
    Begin
    	Set B to be empty.
    	From bottom to top and left to right scan the cells of T until a black pixel, s, of P is found.
    	Insert s in B.
    	Set the current boundary point, p, to s i.e. p = s.
    	Set c to be the next clockwise pixel in M(p).
    	While c is not in B do
    		If c is black
    			Insert c in B.
    			Set p=c.
    		End if
    		Advance c to the next clockwise pixel in M(p).
    	End while
    	Set B to be empty.
    	Insert s in B.
    	Set p=s.
    	Set c to the next anticlockwise pixel in M(p).
    	While c is not in B do
    		If c is black
    			Insert c in B.
    			Set p=c.
    		End if
    		Advance c to the next anticlockwise pixel in M(p).
    	End while
    End
    merci de m'aider

Discussions similaires

  1. Détection de forme géométriques dans une image
    Par imeneeeee dans le forum Images
    Réponses: 9
    Dernier message: 19/01/2010, 10h39
  2. [Forms builder] Load une image dans un item image
    Par loupin dans le forum Forms
    Réponses: 2
    Dernier message: 18/09/2006, 11h45
  3. Changer partiellement la couleur d'une image
    Par freud dans le forum Delphi
    Réponses: 2
    Dernier message: 03/06/2006, 13h15
  4. je n'arrive pas à changer la propriété href d'une image lien
    Par Ekimasu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2005, 10h54
  5. Réponses: 3
    Dernier message: 31/08/2005, 18h52

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