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 :

[Pil] Utilisation de matrice de convertion


Sujet :

Calcul scientifique Python

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut [Pil] Utilisation de matrice de convertion
    c'est qque chose que je ne connais pas du tout.

    Si qqu'un peut m'aiguiller sur le moyen de générer une matrice de convertion pour transformer les image RGB en XYZ puis du XYZ en Lab.

    j'ai bien un lien des formules appliquer mais je ne sais pas m'en servir.

    merci par avance.

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Salut Est ce que tu peut nous remettre les formules s'il te plait.

    Sinon Tu doit avoir des formules du genre CielAB=X*r+Y*g+Z*b où XYZ sont des coefficient.

    la chose a faire je pense est de decomposer l'image RGB en ses trois composante. (im.split() dans Image module)

    Tu obtiens ainsi trois nouvelle images.
    Tu multplie tes images par la constante correspondante a la composante.
    Ensuite grace a merge tu reconstitue une image a l'aide d'un triplet de tableau

    Je te met un bout de code mais. Je n'es pas verifier la synthaxe.
    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
     
    import ImageOps
    import Image
    import numarray as N
     
    def RGBtoLAB(path):
     
        image1=Image.open(fp=str(path))
        largeur,hauteur=image1.size
     
        RGB=image1.split()
        R=RGB[0]
        G=RGB[1]
        B=RGB[2]
     
        L=(N.array(R.getdata()))*0.299 #Coefficient pr RGBto XYZ
        A=(N.array(G.getdata()))*0.587
        B=(N.array(B.getdata()))*0.114
        Iml=Image.new("L",(largeur,hauteur))
        Iml.putdata(L)
        Ima=Image.new("L",(largeur,hauteur))
        Ima.putdata(A)
        Imb=Image.new("L",(largeur,hauteur))
        Imb.putdata(B)
     
     
        LAB=(Iml,Ima,Imb)
     
        ImLab=Image.merge('RGB',LAB)
        ImLab.save("c://LAB.bmp")
    Si tu utilise les matrices alors.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    im.convert(mode, matrix) => image
     Converts an "RGB" image to "L" or "RGB" using a conversion matrix. The matrix is a 4- or 16-tuple.
     The following example converts an RGB image (linearly calibrated according to ITU-R 709, using the D65 luminant) to the CIE XYZ colour space:
     Convert RGB to XYZ       rgb2xyz = (
            0.412453, 0.357580, 0.180423, 0,
            0.212671, 0.715160, 0.072169, 0,
            0.019334, 0.119193, 0.950227, 0 )
        out = im.convert("RGB", rgb2xyz)
    Ne t'inquiete pas pour les mode 'RGB' dans merge ou convert c'est juste pour indiquer que l'image est constitué de trois composantes.

    Voila si tu a des questions:n'esite pas :
    voila je ne suis pas tout sur de mon code. a verifier. a+
    [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...

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    Ok, merci pour ces explications.
    voici le lien vers les formules de convertion de mode image.

    http://www.easyrgb.com/math.php?MATH=M2#text2

    donc si je comprend bien, je peux donc manipuler les données de l'image même si elle est en Lab. ca c'est cool.

    Autre question: Pil/Tkinter peut il afficher des images dans ce mode?
    sinon, il faut créer une copie en rgb pour l'afficher?

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    La joie de la colorimetrie !!!
    Bon pour ce qu'il est de la pil tu peut traiter l'image avec. En effet lui il voit une image "XYZ" ou "CieLAB" comme une image RGB mais multiplieé par un facteur. Pour ce qui est de Tkinter... J'en est fait tres peu en cour et ca me soulé. Donc pour mes interfaces je passe par QTdesigner et pyQT. Si tu arrive a afficher une image RGB tu peut afficher une image CieLAB.
    Pour etre clair : une image cieLAB ,XYZ, ou CielUV n'est rien d'autre q'une image RGB mais dont les composantes sont ponderé. Apres c'est a la vue de ton image que tu vois une difference.

    Une image n'est rien d'autre qu'une matrice avec des valeurs, cette meme image dans un autre repere n'est rien d'autre que cette matrice avec coefficient commun.

    Voila j'espere avoir été clair.

    PS :Si tu a essayer mon code ci dessus, ajoute Tu verra que la PIL ce moque du repere elle ne fait qu'afficher.
    [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...

  5. #5
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    On ne va pas débattre de ce qu'est les différents modes d'une image....

    la compréhension de la colorimétrie et des espaces de représentations n'est pas chose facile.

    je vous remercie pour les infos données ci avant.
    Sauriez vous ou je peux trouver une matrice de conversion RVB >> Cie Lab et inversement?
    Sinon il va falloir que je me congne beaucoup de ligne de code en plus.....

    J'ai toujours pas encore trouvé.

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Je suis desolé si je te suis parut agressif ce n'etait pas voulut. Je sais que la colorimetrie n'est pas une chose facile.

    Pour passer directement de cieLAB a RGB ou RGB a cieLAB je pense avoir une solution.

    Raisonnement sur une composante:

    On admet simplement que pour passer de RGB a XYZ on multiplie R par T et ca nous donne X

    Donc nous avons X et pour passer en cieLAB , X mutliplié par D nous donne L
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RxT -->X
    XxD -->L
    Donc RxTxX -->L
    Dans la réalité il faut,pour obtenir une composante dans un nouveau repere, multiplier toute les composante du repere d'origine et la somme de ceux ci donne LA nouvelle composante (Pour passer de RGB a XYZ). Pour savoir tu dois te referer au site que tu nous a donner.

    Je ne sais pas si tu es au courant, mais comme tu a pu le comprendre lorsque les composante du repere origine ont des valeurs particulieres tu dois faire une operations au préalabe (d'ou les ligne de condition avant la conclusion)

    Voila en esperant que j'apporte une aide utile.
    [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...

  7. #7
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    désolé aussi, pour ma réponse une peu dur.

    je te remercie pour ton aide, j'aurais voulu évité de passer par là, c'est pour ca que je cherchais des matrices de convertions mais bon....
    ce n'est pas insurmontable....

    je vais pouvoir me mettre au travail, sur mon procédé de traitement.
    merci.

    parp1, tu m'as l'air assez calé en colorimétrie, tu travail dans le domaine?

    merci.

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    J'ai suivi des cour dans une licence pro traitement d'image. Donc j'ai eu le droit a tous ces calculs a la main.... Et en partiel. lol Donc c'est un peu ancré la dedans !!! lol Allez quand ca fonctionne tu nous tiens au courant! OK Merci Bonne continuation!

    Au fait c'est quoi ton procédé de traitement ?? C'est pas secret defense quand meme. Donne moi les grandes lignes s'il te plait ca m'interesse. MErci

    J'essai de sortir la matrice RGBtoCieLAB je la mettrai ici quand ca sera fini.
    [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...

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut Matrice RGBtoCieLAB!!
    Comme promis la matrice RGB to CieLAB:

    Je ne suis pas sur de mon resultat donc ... essaye de faire comme ci dessus en deux fois! et regarde si ca donne le meme resultat qu'avec ma matrice.

    Je n'ai pas fait le calcul pour les conditions dslé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    matrix RGBtoCiLAB
     
    L+16=(24.6616,82.9632,8.3752)# soustraire 16 a toutes les valeurs de pixels.
    A=(99.899,-178.8,54.15)
    B(36.66,119.2,-175.66)
    Essaye de faire fonctionner la matrice avec la commande Image.convert()

    Voila!
    [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. utilisation des matrices de Newton Games
    Par Plomeg dans le forum Newton
    Réponses: 9
    Dernier message: 03/04/2008, 10h51
  2. Réponses: 8
    Dernier message: 16/04/2007, 16h10
  3. Réponses: 1
    Dernier message: 13/04/2007, 14h33
  4. [Pil] utilisation de getpixel
    Par duplo dans le forum Tkinter
    Réponses: 7
    Dernier message: 20/12/2005, 19h01
  5. [debutant]Utiliser des matrices en C
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 20h45

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