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

Calcul scientifique Python Discussion :

[numarray]Dilatation ou erosion 2D


Sujet :

Calcul scientifique Python

  1. #1
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut [numarray]Dilatation ou erosion 2D
    Slt.

    Voila maintenant je dilate et j'erode avec une vitesse plus que satisfaisante.
    Bon le souci c'est que mon element structurant n'est q'une ligne. de type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    element= _nd.generate_binary_structure(1,2)
    print element
    >>> [1,1,1]
    Et quand je fait un element structurant 2D type carrée ou dodécagones ...Il me renvoi une erreur.
    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
     
    element= _nd.generate_binary_structure(2,2)
    print element
    >>>[[1,1,1]
       [1,1,1]
       [1,1,1]]
     
    >>>Traceback (most recent call last):
      File "C:\capture\morpho.py", line 28, in ?
        a=_nd.binary_dilation(im,iterations=1,structure=element)
      File "C:\Python23\Lib\site-packages\numarray\nd_image\morphology.py", line 198, in binary_dilation
        output, border_value, origin, 1, brute_force)
      File "C:\Python23\Lib\site-packages\numarray\nd_image\morphology.py", line 96, in _binary_erosion
        raise RuntimeError, 'structure rank must equal input rank'
    RuntimeError: structure rank must equal input rank
    Donc je me suis dit que c'etait a cause des dimensions de mon element structurant.Donc j'ai penser a eroder sur 1D une premiere fois ma matrice puis la transposée puis l'eroder a nouveau.
    C'est n'est pas propre mais cela ne fonction que pour les image carrée
    Quant on l'execute sur une image rectangulaire ba ya decalage.

    Je ne comprend pas. pourtant ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    matrice=[[1,2,3]
            [4,5,6]
            [7,8,9]
            [10,11,12]]
     
    Tmatrice=[[1,4,7,10]
               [2,5,8,11]
               [3,6,9,12]]
     
    TTmatrice=[[1,2,3]
                [4,5,6]
                [7,8,9]
                [10,11,12]]
    C'est bien ca quant on fait des maths avec les mains on nous apprends les matrice
    la transposé c'est lire une ligne est l'crire en colonne...
    J'ai essayer une dilatation avec une matrice sur papier et ca fonctionne meme avec une matrice rectangulaire.l

    Bon je cherche a trouver ken meme une solution pour un element structurant carré.. MERCI
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  2. #2
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    C'est resolut .... C'est juste que je m'étais tromper de matrice (1D au lieu de 2D) la ca fonctionne bien ...

    Dslé je met un bout de code pour la comprehension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    import numarray.nd_image as _nd
    import numarray as N
     
    struct =N.array([[1,1,1],[1,1,1],[1,1,1]])
    #permet erosion ou dilatation par carré
     
    a = N.array([[0,0,0,0,0], [0,1,1,1,0], [0,1,1,1,0], [0,0,0,0,0]])
    print a
    b= _nd.binary_dilation(a, struct, 1)
    print b
    c=_nd.binary_erosion(a,struct,1)
    print c
    Donc pas besoin de passé par la transposée et tt le tralalalalala...
    Voila. a Bientot
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

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

Discussions similaires

  1. erosion et dilatation
    Par mat09 dans le forum Images
    Réponses: 10
    Dernier message: 16/04/2009, 20h33
  2. Traitement images erosion dilatation
    Par mahdouch1 dans le forum Débuter
    Réponses: 1
    Dernier message: 20/03/2009, 15h41
  3. algorithmes erosion et dilatation
    Par dadou846 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 05/02/2009, 21h38
  4. augmentation des contrastes : erosion, dilatation ?
    Par svagrim dans le forum Traitement d'images
    Réponses: 18
    Dernier message: 02/08/2007, 10h28
  5. Dilatation & Erosion
    Par zaiim dans le forum Images
    Réponses: 2
    Dernier message: 04/05/2007, 09h49

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