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

MATLAB Discussion :

attempted to access v_angles(1)


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut attempted to access v_angles(1)
    J'utilise le descripteur HOG, et j'obtient cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ??? Attempted to access v_angles(1); index out of bounds because
    numel(v_angles)=0.
     
    Error in ==> HOG at 49
                    if (v_angles(k)<ang_lim)
    je vous file le code de la fonction HOG:
    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
    55
    56
    57
    58
    59
    60
     
    %Image descriptor based on Histogram of Orientated Gradients for gray-level images. This code 
    %was developed for the work: O. Ludwig, D. Delgado, V. Goncalves, and U. Nunes, 'Trainable 
    %Classifier-Fusion Schemes: An Application To Pedestrian Detection,' In: 12th International IEEE 
    %Conference On Intelligent Transportation Systems, 2009, St. Louis, 2009. V. 1. P. 432-437. In 
    %case of publication with this code, please cite the paper above.
     
    function H=HOG(Im)
    %%Im = imread(Im);
    if size(Im,3) == 3
        Im = rgb2gray(Im);
    else
        Im = Im;
    end
    nwin_x=3;%set here the number of HOG windows per bound box
    nwin_y=3;
    B=9;%set here the number of histogram bins
    [L,C]=size(Im); % L num of lines ; C num of columns
    H=zeros(nwin_x*nwin_y*B,1); % column vector with zeros
    m=sqrt(L/2);
    if C==1 % if num of columns==1
        Im=im_recover(Im,m,2*m);%verify the size of image, e.g. 25x50
        L=2*m;
        C=m;
    end
    Im=double(Im);
    step_x=floor(C/(nwin_x+1));
    step_y=floor(L/(nwin_y+1));
    cont=0;
    hx = [-1,0,1];
    hy = -hx';
    grad_xr = imfilter(double(Im),hx);
    grad_yu = imfilter(double(Im),hy);
    angles=atan2(grad_yu,grad_xr);
    magnit=((grad_yu.^2)+(grad_xr.^2)).^.5;
    for n=0:nwin_y-1
        for m=0:nwin_x-1
            cont=cont+1;
            angles2=angles(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x); 
            magnit2=magnit(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x);
            v_angles=angles2(:);    
            v_magnit=magnit2(:);
            K=max(size(v_angles));
            %assembling the histogram with 9 bins (range of 20 degrees per bin)
            bin=0;
            H2=zeros(B,1);
            for ang_lim=-pi+2*pi/B:2*pi/B:pi
                bin=bin+1;
                for k=1:K
                    if (v_angles(k)<ang_lim)
                        v_angles(k)=100;
                        H2(bin)=H2(bin)+v_magnit(k);
                    end
                end
            end
     
            H2=H2/(norm(H2)+0.01);        
            H((cont-1)*B+1:cont*B,1)=H2;
        end
    end
    J'ai pas compris cette erreur, pouvez -vous m'aidez à le corriger??

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    Si tu tapes dans la console avant de lancer ton code:
    Lorsqu'il s'arrête, quelle est la valeur de K? que vaut size(v_angles) ?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    K>> k
     
    k =
     
         1
     
    K>> size(v_angles) 
     
    ans =
     
         0     1

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Il faudrait remplacer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_angles=squeeze(angles2(:));
    Mais j'ai l'impression que le problème est plus dans l'appel de la fonction HOG (elle a été validé dans le papier que tu cites en en-tête, a moins que tu ne l'ais modifiée?) : Que vaut Im ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    En remplaçant
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    v_angles=squeeze(angles2(:));
    il me donne cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Attempted to access v_angles(1); index out of bounds because
    numel(v_angles)=0.
     
    Error in ==> HOG at 50
                    if (v_angles(k)<ang_lim)
    Je n'est rien modifier pour le code de la fonction HOG,
    Concernant Im, c'est une partie de l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       CropWind = imcrop(image, rect);
       H=HOG(CropWind);

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Que contient exactement Im ?

    Sinon si size(v_angles) vaut 0 1, max(size(v_angles)) vaudra 1 alors que v_angles est vide. D'où ton erreur.
    Utilise length à la place.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    Im c'est une matrice de taille:

    Utilise length à la place de quoi??

  8. #8
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Utilise length à la place de quoi??
    Length à la place de size.
    Tu peux nous montrer ce que vaut size(CropWind) ?

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    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
     size(CropWind)
     
    ans =
     
         3    40     3
     length(v_angles)
     
    ans =
     
         0
     
     
    size(v_angles)
     
    ans =
     
         0     1

  10. #10
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Le problème est que ton image n'est pas assez grande :
    la fonction HOG utilise une taille de fenêtre élémentaire
    nwin_x=3;%set here the number of HOG windows per bound box
    nwin_y=3;
    Il faut que ton image fasse au moins un pixel de plus en largeur et en hauteur que cette fenêtre pour que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    step_x=floor(C/(nwin_x+1));
    step_y=floor(L/(nwin_y+1));
    ne soient pas nulles.

    Donc, si dans ton code tu remplaces
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    K=max(length(v_angles));
    Tu vas surement enlever l'erreur, mais pas obtenir de résultat intéressant.
    agrandi le rectangle de découpage de imcrop

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/01/2013, 07h10
  2. Attempted to access
    Par Paolo. dans le forum Images
    Réponses: 2
    Dernier message: 23/10/2012, 14h14
  3. Erreur "Attempted to access"
    Par Sonia_ dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/09/2012, 19h34
  4. Réponses: 9
    Dernier message: 30/12/2011, 17h18
  5. Erreur "Attempted to access"
    Par foufi86 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/05/2011, 19h00

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