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 :

Effectuer une analyse colorimétrique


Sujet :

Traitement d'images

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Effectuer une analyse colorimétrique
    les amis, je suis bloquée dans mon travail, j'ai des photos de larves de poissons sur les quelles je dois mesurer les nuances de bleu et les nuances de rouges séparément. je suis novice dans ce domaine , pouvez m'aider SVP . Ci joint une photo pour vous donner une idée et merci d'avance . Nom : J26 A1.jpg
Affichages : 161
Taille : 177,4 Ko

  2. #2
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Effectuer une analyse colorimétrique
    Bonjour,

    Tu pourrais commencer par un agrandissement de l'image sur une partie anatomiquement intéressante (ce dont je n'ai aucune idée):

    Nom : Poisson_00.png
Affichages : 81
Taille : 483,1 Ko

    puis effectuer une série de prélèvements de couleurs sur les régions concernées à l'aide de Paint (ou tout autre logiciel approprié), afin de disposer de données statistiques pour chacune des teintes.

    Et que voudrais-tu faire par la suite ? Il faudrait donner des précisions.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    bonjour
    merci pour votre réponse, c'est une larve de sandre ( un poisson), au cour du développement la larve est 100% bleu, puis apparait le rouge pour a la fin de la métamorphose 100% rouge. moi je cherche a quantifier sur chaque larve la quantité de bleu et du rouge pour avoir une estimation sur le stade de développement.

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

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : avril 2004
    Messages : 828
    Points : 1 367
    Points
    1 367
    Par défaut
    Ton rouge n'est pas tout à fait rouge, ton bleu pas tout à fait bleu. Il faudrait , dans l'espace 3d rgb déterminer le centre des pts bleus et rouges et compter les pixels proches de ces points.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  5. #5
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Effectuer une analyse colorimétrique
    Tu peux déjà retirer le fond clair de l'image par la transformation qui à chaque pixel initial (r, v, b) fait correspondre le nouveau triplet d'entiers (r', v', b') résultant de la soustraction du plus petit des 3 indices:
    r' = r - Min(r, v, b) ,
    v' = v - Min(r, v, b) ,
    b' = b - Min(r, v, b) ,
    et dont l'un des termes est nécessairement nul.

    En confirmation de la remarque de Nebulix, les couleurs apparaissant das la nouvelle image

    Nom : Poisson_00_700x159.png
Affichages : 84
Taille : 104,2 KoNom : Poisson_01_700x159.png
Affichages : 79
Taille : 79,7 Ko

    ne sont pas exactement celles que tu annonces, mais plutôt le cyan et le violet.

    Cela ne constitue aucun obstacle au dénombrement, en raison de la caractérisation très simple de chaque teinte:
    r = 0 (pour le cyan, résultant de la superposition du bleu et du vert) ,
    v = 0 (pour le violet, qui résulte de la superposition du bleu et du rouge) .


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  6. #6
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Effectuer une analyse colorimétrique
    Le corps de l'image Bitmap est représenté par une matrice de pixels:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     CONST Dim_Max = 2100;
     ... / ...
     TYPE Pixel = ARRAY[1..3] OF Byte;
          Tab_Pix = ARRAY[0..Dim_Max, 0..Dim_Max] OF Pixel;
     
     VAR Larg_Image, Haut_Image, T_Fichier, T_Image: Z_32;          // Z_32 = LongInt
         V_Fich_1, V_Fich_2: File OF Byte;
         Matrice_1, Matrice_2: Tab_Pix;
    ... / ...
         Icyan, Iviolet: Z_32
    Voici un codage élémentaire, écrit en Pascal, pour le passage de la première matrice (image initiale, à fond clair) à la seconde (image sur fond noir):
    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
    50
    51
     PROCEDURE Aff_I1I2;
       CONST C1 = 4; L1 = 40; o = 10;
       BEGIN
         E(0015); Wt(C1, L1 - 1, 'Intensit‚ totale du cyan:    Ic = ');
         E(0010); Write(Icyan:o);
         E(0015); Wt(C1, L1 + 1, 'Intensit‚ totale du violet:  Iv = ');
         E(0010); Write(Iviolet:o)
       END;
     
     PROCEDURE CalculI1I2(La, Ha: Z_32; VAR J1, J2: Z_32; VAR Ma2: Tab_Pix);
       VAR s, S1, S2, Xm, Ym: Z_32; Px: Pixel;
       BEGIN
         S1:= 0; S2:= 0;
         FOR Xm:= 0 TO (La - 1) DO
           FOR Ym:= 0 TO (Ha - 1) DO
             BEGIN
               Px:= Ma2[Xm, Ym]; s:= Px[1];
               Inc(s, Px[2]);    Inc(s, Px[3]);
               IF (s>0) THEN IF (Px[1]=0) THEN Inc(S1)
                                          ELSE IF (Px[2]=0) THEN Inc(S2)
             END;
         J1:= S1; J2:= S2
       END;
     
    (*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
     
     Calcul de la seconde matrice
     
    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
     
     PROCEDURE ZeroM(VAR Ma: Tab_Pix);
       CONST Pzero: Pixel = (0, 0, 255);
       VAR i, j: Z_32;
       BEGIN
         FOR i:= 0 TO Dim_Max DO
           FOR j:= 0 TO Dim_Max DO Ma[i, j]:= Pzero
       END;
     
     PROCEDURE Calc_Mat_Im2(La, Ha: Z_32; VAR Ma1, Ma2: Tab_Pix);
       VAR k, m: Byte; Xm, Ym: Z_32; Px1, Px2: Pixel;
       BEGIN
         ZeroM(Matrice_2);
         FOR Xm:= 0 TO (La - 1) DO
           FOR Ym:= 0 TO (Ha - 1) DO
             BEGIN
               Px1:= Ma1[Xm, Ym]; m:= Px1[1];
               FOR k:= 2 TO 3 DO IF (m>Px1[k]) THEN m:= Px1[k];
               FOR k:= 1 TO 3 DO Px2[k]:= Px1[k] - m;
               Ma2[Xm, Ym]:= Px2
             END
       END;
    Tu traduiras facilement ces instructions.

    Avec l'image proposée (maintenue à ses dimensions initiales 2088x473), le programme a conduit aux résultats suivants:

    Nom : Résultats01.png
Affichages : 106
Taille : 3,7 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  7. #7
    Membre expérimenté

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : mai 2013
    Messages : 413
    Points : 1 334
    Points
    1 334
    Par défaut Couleurs et vecteurs
    Bonjour,

    On doit effectivement changer le fond car le blanc a des projection sur toutes les autres couleurs :
    • On prend ensuite deux couleurs représentant nos deux couleurs à remplacer
    • On calcule la couleur commune Cm =(min(r1,r2), min(g1,g2), min(g1,g2)
    • On la retire des 2 couleurs C1 et C2 (orthogonalisation : il faut donc que nos deux couleurs soient colinéaires si l'une des deux couleurs résultantes est (0,0,0) alors il faut choisir d'autres couleurs d'origine mais c'est mal parti.
    • On "normalise" ces vecteurs par exemple avec k1 = 255/max(r1, g1, b1) en fait k1 = $FFFF div max(r1, g1, b1) et r1 = (k1 * r1) >> 8, g1 = (k1 * g1) >> 16, ...
    • On calcule les deux images avec le produit scalaire avec chacune des couleurs C1 et C2 modifiées qui est divisé par 255 (en fait *258 >> 16) pour retomber sur des valeurs entre 0 et 255.
    • Un correction de luminosité et de contraste peut être nécessaire.


    Il y a des solutions plus sophistiquées mais celle-ci donne déjà des résultats intéressants.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  8. #8
    Membre expérimenté

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : mai 2013
    Messages : 413
    Points : 1 334
    Points
    1 334
    Par défaut Mea culpa
    Bonjour,

    Oups !

    Citation Envoyé par Guesset Voir le message
    il faut donc que nos deux couleurs soient colinéaires
    NE soient PAS colinéaires bien sûr.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. Qu'est ce qu'une analyse fonctionelle
    Par sandrine dans le forum Débats sur le développement - Le Best Of
    Réponses: 22
    Dernier message: 28/02/2015, 19h03
  2. Réponses: 6
    Dernier message: 24/03/2005, 14h29
  3. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  4. Effectuer une sauvegarde
    Par Ultra-FX dans le forum Administration système
    Réponses: 8
    Dernier message: 19/06/2004, 14h04
  5. [Builder] Effectuer une opération quand une resource a changé
    Par Satch dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 08/04/2004, 13h22

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