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 :

Extraire 10 pixel par portion d'image


Sujet :

Images

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 33
    Points : 20
    Points
    20
    Par défaut Extraire 10 pixel par portion d'image
    Bonjour,

    j'ai fait ce code pour extraire 10 pt de chaque portion d'une image cad avoir 100 pts par image ( cas de 10 portions) mais avec ce code je n'est que 10 pts par portion d'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    I=imread('test.jpg');
    Image=zeros(1,1,10);
        for j =1:10
        L=round(j*rand(1));% je veux avoir des fenêtres aléatoire
        S=round(j*rand(1));
        Image(:,:,j)=imcrop(I,[L S 0  0]); % les 0 0 pour avoir un seul pixel
        end
    Merci de pour votre aide .

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Essayes ceci :


    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
    close all
     
    % Charger Image
    I=imread('untitled.jpg');
    I = rgb2gray(I);
    s = size(I)
     
    % Parametres
    nb_portions = [4 4]; % 4*4 = 16 portions
    nb_points = 10;
     
    % Blocs (frontieres portions)
    i_pos = round(linspace(1,s(1),nb_portions(1)+1));
    j_pos = round(linspace(1,s(2),nb_portions(2)+1));
     
    % Stockage resultat
    Image=zeros(nb_portions(1),nb_portions(2),nb_points);
     
    % Test (A enlever) 
    Test_IM = zeros(s);
     
    for i=1:nb_portions(1)
        for j=1:nb_portions(2)
     
            % Pixel Aleatoires
            Ii = i_pos(i)+ round((i_pos(i+1)-i_pos(i))*rand(nb_points,1));
            Ij = j_pos(j)+ round((j_pos(i+1)-j_pos(i))*rand(nb_points,1));
     
            % Extraction
            Image(i,j,:) = I(sub2ind(size(I),Ii,Ij));
     
            Test_IM(sub2ind(size(I),Ii,Ij)) = 1; % A enlever
        end
    end
     
    % Test
    spy(Test_IM)
    colormap(gray(2))
    ++ et bonne chance

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Bonsoir,

    Merci pour votre réponse .
    mais lorsque je généralise ce code pour un ensemble d'image j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ??? Index exceeds matrix dimensions.
     
    Error in ==> Base_Test at 39
             Image(i,j,:) = I{sub2ind(size(I{Num}),Ii,Ij)};
    Autre question pourqoui vous avaez utliser rgb2gray(I) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ??? Error using ==> rgb2gray>parse_inputs
    MAP must be a m x 3 array.
    Error in ==> rgb2gray at 35
    X = parse_inputs(varargin{:});
    Error in ==> Base_Train_V1 at 14
      I{Num}=rgb2gray(I);
    Merci bcp

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    de ce que j'en comprends ne serait-ce pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    I{Num}(sub2ind(size(I{Num}),Ii,Ij));
    NB : je n'ai pas MATLAB donc je ne suis pas sure.

    Remarque : éviter d'utiliser Image comme nom de variable car c'est le nom d'une fonction MATLAB

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    J'ai corrigé le 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
     
    % Charger Image
    I=imread('untitled.jpg');
    Igray = rgb2gray(I);
    s = size(Igray);
     
    % Parametres
    nb_portions = [5 5]; % 4*4 = 16 portions
    nb_points = 100;
     
    % Blocs (frontieres portions)
    i_pos = round(linspace(1,s(1),nb_portions(1)));
    j_pos = round(linspace(1,s(2),nb_portions(2)));
     
    % Stockage resultat
    Image=zeros(nb_portions(1),nb_portions(2),nb_points);
    ImageRGB = zeros(nb_portions(1),nb_portions(2),nb_points,size(I,3));
     
    % Test (A enlever) 
    Test_IM = zeros(s);
     
    for i=1:nb_portions(1)-1
        for j=1:nb_portions(2)-1
     
            % Pixel Aleatoires
            Ii = i_pos(i)+ floor((i_pos(i+1)-i_pos(i))*rand(nb_points,1));
            Ij = j_pos(j)+ floor((j_pos(i+1)-j_pos(i))*rand(nb_points,1));
     
     
            % Extraction
            Image(i,j,:) = Igray(sub2ind(size(Igray),Ii,Ij));
     
            % Extraction RGB
            for p=1:nb_points
                ImageRGB(i,j,p,:) = I(Ii(p),Ij(p),:);
            end
     
            Test_IM(sub2ind(size(Igray),Ii,Ij)) = 1; % A enlever
        end
    end
     
    % Test
    spy(Test_IM)
    colormap(gray(2))
    Sinon , j'ai rajouté des lignes pour avoir l'image en RGB aussi.

    ++

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci encore une fois .

    lorsque j'utlise rgb2gray mtalabe me donne une erreur .

    dans le cas ou je charge plusieurs images :
    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
     
    for i=0:9
       fname = sprintf('test%d.jpg',i);
       I{i+1}=imread(fname,'jpg');
    end
    for Num=0:9
    Igray = rgb2gray(I{Num}); % j'ai Erreur ici
    s = size(Igray);
     
    % Parametres
    nb_portions = [5 5]; % 4*4 = 16 portions
    nb_points = 100;
     
    % Blocs (frontieres portions)
    i_pos = round(linspace(1,s(1),nb_portions(1)));
    j_pos = round(linspace(1,s(2),nb_portions(2)));
     
    % Stockage resultat
    Image=zeros(nb_portions(1),nb_portions(2),nb_points);
    ImageRGB = zeros(nb_portions(1),nb_portions(2),nb_points,size(I,3));
     
    % Test (A enlever) 
    Test_IM = zeros(s);
     
    for i=1:nb_portions(1)-1
        for j=1:nb_portions(2)-1
     
            % Pixel Aleatoires
            Ii = i_pos(i)+ floor((i_pos(i+1)-i_pos(i))*rand(nb_points,1));
            Ij = j_pos(j)+ floor((j_pos(i+1)-j_pos(i))*rand(nb_points,1));
     
     
            % Extraction
            Image(i,j,:) = Igray(sub2ind(size(Igray),Ii,Ij)); % erreur ici 
            % ici j'ouvre un fichier et ecris les valeurs de chaque points 
            % Extraction RGB
            for p=1:nb_points
                ImageRGB(i,j,p,:) = I(Ii(p),Ij(p),:);
            end
     
            Test_IM(sub2ind(size(Igray),Ii,Ij)) = 1; % A enlever
        end
    end
    end        
    % Test
    spy(Test_IM)
    colormap(gray(2))
    Merci pou votre aide.

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Deux possibilités ,

    1-

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for Num=0:9    % Attention Num commence à 0 => I{0}  :( 
    Igray = rgb2gray(I{Num}); % j'ai Erreur ici
    s = size(Igray);
    2- Si cela n'est pas la cause :

    s_test = size(I{Num}) % Tu dois avoir 3 en 3eme dimension
    Igray = rgb2gray(I{Num}); % j'ai Erreur ici
    s = size(Igray);

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    non c juste une erreur de frap je commence de Num=1:9.

    pour la 2 possibilité j'ai pas bien compris : Tu dois avoir 3 en 3eme dimension

    merci

  9. #9
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    La fonction rgb2gray transforme une image couleur en une image en niveau de gris.

    Un pixel d'une image RGB (Red - Green - Blue) contient l'information sur ces trois couleurs, et don utilise un vecteur de taille 3 (généralement des entiers codé sur un octet, entre 0 et 255). Exemple : [12 15 200].

    Donc une image RGB de taille [h w] est une matrice de taille [h w 3] ...

    Si on reviens à la 2eme possibilité , size(size(I{Num}),3) doit etre egale à 3 pour que la fonction rgb2gray ne plante pas .

    ++

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Ok merci.

    je vais le tester .

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

Discussions similaires

  1. Afficher un image dynamiquement pixel par pixel
    Par mchk0123 dans le forum Qt
    Réponses: 14
    Dernier message: 03/04/2007, 23h02
  2. Image a remplir Pixel par Pixel, Quel objet utiliser ?
    Par ZbergK dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 28/02/2007, 21h35
  3. Lecture de fichiers images pixels par pixels
    Par FabHacker dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2005, 16h12
  4. [ImageMagick] Parcourir une image pixel par pixel
    Par kip dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/10/2005, 14h10
  5. [VB6] [Graphisme] Transfert d'image pixel par pixel
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/10/2002, 09h53

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