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

Images Discussion :

Comptage de groupe de Pixel


Sujet :

Images

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Comptage de groupe de Pixel
    Bonjour,

    Je me permet d'écrire sur le forum en espérant trouver en solution à mon problème après plusieurs itérations de mon code...

    Dans le cadre d'un projet de thèse j'ai testé un capteur sous un flux de particule ionisante et acquit des données (.bin) pendant cette irradiation.

    Mon banc de test ma permis de récupérer des images de 2048/2048 pixel avec un niveau de gris de 0 à 4095 (8Mo par images...).
    Ma contrainte principale est que j'ai plus de 5000 images à post traiter sur plusieurs type de particule testé en un temps limité.

    Après analyse de quelque images il en ressort que les particules peuvent impacter plusieurs pixels groupés.
    Ci-dessous mon code, la première partie me permet de faire un post-traitement en prenant en compte ma première image et de la comparé à deux image consécutive.
    Ca me permet d’enlever les pixels qui auraient des problèmes à chaque itération (en prenant la ref) puis en comparant deux image consécutive d'enlever les problèmes qui pourrait arriver en cours de test en les comptant qu'une fois.
    A ça s’ajoute un filtre de bruit (VALUE_PixErrorThreshold) que j'ai calibré à 10 (test fait dans le noir mais il y a un niveau de bruit max de 10)

    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
    52
    53
    54
    close all
    clear all
     
    %Variable Generale
    ResultingTable = zeros(1,2); % Pixels Errors | ImageTrouble
    VALUE_PixErrorThreshold = 10; % Max 4096 
    %VALUE_PixErrorThresholdTrouble = 5000; %
     
    [FileNames,PathName] = uigetfile('.bin','Select One or More Files','MultiSelect','on');
    FileName = char(FileNames(1));
    fid = fopen (fullfile(PathName,FileName), 'r');
    IMG_REF = fread(fid,[2048,2048],'uint16','b');
    fclose(fid);
    IMG_REF = IMG_REF'; %Rotate
     
     
    for NbEvent = 2:(length(FileNames)-1) % Take pictures by 2, first picture is the Ref picture
      tic;
     
      FileName = char(FileNames(NbEvent));
      fid = fopen (fullfile(PathName,FileName), 'r');
      IMG_ANALASED_1= fread(fid,[2048,2048],'uint16','b');  
      fclose(fid);
      IMG_ANALASED_1 = IMG_ANALASED_1';
     
      FileName = char(FileNames(NbEvent+1));
      fid = fopen (fullfile(PathName,FileName), 'r');
      IMG_ANALASED_2 = fread(fid,[2048,2048],'uint16','b');
      fclose(fid);
      IMG_ANALASED_2 = IMG_ANALASED_2';
     
     
      %%Comparaison des deux matrices
      IMG_ANALASED_1_COMP = abs(IMG_ANALASED_1 - IMG_REF);  
      IMG_ANALASED_1_COMP = IMG_ANALASED_1_COMP > VALUE_PixErrorThreshold;  
      IMG_ANALASED_2_COMP = abs(IMG_ANALASED_2 - IMG_REF);       
      IMG_ANALASED_2_COMP = IMG_ANALASED_2_COMP > VALUE_PixErrorThreshold;
      IMG_MID = (IMG_ANALASED_2_COMP - IMG_ANALASED_1_COMP);
      IMG_TOTAUX_RES   = (IMG_ANALASED_2_COMP - IMG_MID);
     
     
      NbrPixError(1, NbEvent+1) = nnz(IMG_TOTAUX_RES); %Couting non zeros pixels in picture
      PixErrorThreshold (1, NbEvent+1)= VALUE_PixErrorThreshold;
     
      %Spot Event
      HELP... :calim2:
     
      toc;
    end
     
    % concatenate all the tables 
    Tab_Final=[PixErrorThreshold;NbrPixError];
    Tab_Final=Tab_Final';
    writematrix(Tab_Final, 'Resultats.txt')
    Actuellement j'ai le threshold appliqué et nombre de pixel en erreur dans chaque images. (je suis déjà content de moi, et ça en 0.1s par traitement d'image !!!
    Ce que je voudrais c'est pouvoir avoir un tableaux où une ligne = Nombre de pixel groupé en erreur (incluant même un pixel seul) puis a la suite de cette ligne le nombre de pixel impacté par groupe. Exemple [3 51 1 23] ==> 3 groupe de pixel 51pixgroupe1 1pixel group2 23pixgroup3 et ça pour chaque image post traité

    Au départ j'avais pris octave et la fonction imfindcircles mais je n'arrivais pas à récupérer le nombre exacte de pixel dans mes cercle et je pense que je n'avais pas les pixels seul... Maintenant je suis sur Matlab et j'ai essayé la fonction findgroups mais je pense que je dois faire fausse route...
    Quelqu’un pourrait s'il vous plait m'aider, voir simplement m'aiguiller ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      A1 = [1024.5 1024.5];
      Entier_A1 = int16(A1);
      [C,R] = imfindcircles(IMG_TOTAUX_RES,[5 10],'sensitivity',0.85);
      A=min(min(IMG_TOTAUX_RES));
      B=max(max(IMG_TOTAUX_RES));
      imshow(IMG_TOTAUX_RES, [A,B])
      Entier_C = int16(C);
      if int16(Entier_C==Entier_A1)
          SpotEvent(1, NbEvent+1) = 0;
        else
          NbSpotEvent = rows(C);
          SpotEvent(1, NbEvent+1) = NbSpotEvent;
      endif
    Merci par avance !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Hello,

    Bon je pense avoir pas mal avancé, j'ai trouvé la fonction " regionprops" avec la sous fonction 'Area'... Ca m'a l'air pas mal ! j'ai passé mon image résultat en logical et hop. Je continue à tester sur des images connue, si ca marche ça sera tip toppp !!!

    A suivre !

Discussions similaires

  1. Pixel de comptage
    Par Spoutch dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 29/07/2015, 16h53
  2. [CR 2008] Comptage des mois sous un groupe
    Par Nour08 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 16/11/2011, 15h18
  3. comptage unique avec group by
    Par socaw dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/08/2010, 13h32
  4. Comptage délicat par groupe
    Par LDDL dans le forum Requêtes
    Réponses: 8
    Dernier message: 22/08/2007, 23h25
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

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