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 :

seuillage d'image RGB


Sujet :

Calcul scientifique Python

  1. #1
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut seuillage d'image RGB
    Bonsoir,
    J'ai une fonction qui crée un seuillage sur une image en niveaux de gris, pas de souci.
    Par contre, je n'arrive pas à appliquer ce seuillage sur une image RGB.

    Voici mon code :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    from numpy import *
    from PIL import Image
     
    ####################
    def seuil(x):
        if x<122:
            return 50
        else:
            return 220
    ####################    
    # seuillage d'une image en niveaux de gris 
    image1 = Image.open('lena.png').convert('L')
    impix = image1.load()
    for i in range(image1.size[0]):
        for j in range(image1.size[1]):
            impix[i,j] = seuil(impix[i,j]) 
     
    image1.save('lenaseuil.eps')
    image1.show()
     
    ####################    
    # seuillage d'une image en couleurs 
    image2 = Image.open('lena.png')
    composition = image2.split()
     
    impix0 = composition[0].load()
    for i in range(image2.size[0]):
        for j in range(image2.size[1]):
            impix0[i,j] = seuil(impix0[i,j]) 
     
    impix1 = composition[1].load()
    for i in range(image2.size[0]):
        for j in range(image2.size[1]):
            impix1[i,j] = seuil(impix1[i,j])
     
    impix2 = composition[2].load()
    for i in range(image2.size[0]):
        for j in range(image2.size[1]):
            impix2[i,j] = seuil(impix2[i,j])
     
    ## décomposition de l'image
    ma_composition=impix0,impix1,impix2
     ## Recomposition de l'image
    mon_image_recomposee = Image.merge('RGB',ma_composition)
    ## Sauvegarde de l'image décomposée puis recomposée
    mon_image_recomposee.save("lenaseuilRGB.eps")
    ## Visualisation de l'image recomposée
    Image.open('lenaseuilRGB.eps').show()
    Je pense que mon souci se situe à la ligne 43, mais je ne suis pas sûr.
    Si quelqu'un peut m'aider, je le suis en serai reconnaissant car il y a un point qui m'échappe (je confonds image et liste ?).
    Dans un deuxième temps, je souhaiterais effectuer une boucle sur impix.

    A bientôt, j'espère.

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    J'ai réussi à faire ce que je voulais.
    Je n'ai pas encore la boucle mais cela ne devrait pas être trop compliqué.
    Je ne poste pas de code pour l'instant car j'ai l'impression que cela n'intéresse pas grand monde...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Par défaut
    Bonjour,

    Pour moi la méthode ne fonctionne pas par l'application de .load() après .split(). Image.merge() accepte bien un tupple d'image mais pas un tupple de "PixelAccess".

    Je trouve que c'est un peu s’embêter de passer par .load() pour faire des boucles sur chaque paramètre RGB. Tu pourrais passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data = image2.getdata()
    data = [seuil(data[x]) for x in range(len(data))]
    im.putdata(data)
    A moins que tu cherche absolument à travailler matriciellement sur la suite de ton projet...

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je n'ai pas mon code sous la main mais c'est effectivement ressemblant à ce que j'ai fait finalement.
    Merci quand même.

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

Discussions similaires

  1. BUFFER D'IMAGE RGB
    Par aziatedu13 dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 27/11/2007, 16h06
  2. Transposée d'une image RGB
    Par silainos dans le forum Images
    Réponses: 4
    Dernier message: 01/10/2007, 03h45
  3. convertir image RGB en HSV
    Par deb_Sous_Python dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 23/04/2007, 12h25
  4. Réponses: 10
    Dernier message: 18/04/2007, 09h39
  5. Conversion d'une image rgb en hsl
    Par ranell dans le forum Images
    Réponses: 13
    Dernier message: 01/03/2007, 22h03

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