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 :

flux optique LK


Sujet :

Images

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Points : 22
    Points
    22
    Par défaut flux optique LK
    Bonjour,
    je viens de terminer un code qui calcule le flux optique en utilisant la méthode de Lucas-Kanade, j'ai utilisé l'algorithme expliqué dans le help du Matlab sous le titre "vision.OpticalFlow System object"
    voici mon 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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
        % Convert to grayscale
        I = rgb2gray(firstFrame);
        J = rgb2gray(secondFrame);
     
        % convert to double
        I = double(I);
        J = double(J);
     
        % compute Ix,Iy,It
     
        H=(1/12)*[-1 8 0 -8 1];
     
        Ix = imfilter(I,H,'replicate');
        Iy = imfilter(I,H','replicate');
        It=I-J;
     
     
        %smooth the Ix Iy and It
     
        S=(1/16)*[1 4 6 4 1];
        Ix_m = imfilter(Ix,S,'replicate');
        Iy_m = imfilter(Iy,S,'replicate');
        It_m = imfilter(It,S,'replicate');
     
        % window size
        w=10;
        % initialize velocity vectors
        u = zeros(height,width);
        v = zeros(height,width);
     
        % compute the velocity vectors
        for i=11:height-10
            for j=11:width-10 
                Ix = Ix_m(i-w:i+w, j-w:j+w);
                Iy = Iy_m(i-w:i+w, j-w:j+w);
                It = It_m(i-w:i+w, j-w:j+w);
     
                  Ix = Ix(:);
                  Iy = Iy(:);
                  b = -It(:); 
     
                  A = [Ix Iy];
                  d = pinv(A)*b;
     
                  u(i,j)=d(1);
                  v(i,j)=d(2);
            end
        end
     
    % Draw the optical flow vectors
    figure(1);
    %II = imcrop(I,[21 21 width-20 height-20]);
    imshow(uint8(I));
    hold on;
     
       quiver(u,v, 1,'r')
    J'ai plusieurs questions:
    premièrement est ce que mon code est correcte?
    deuxièmement comment faire pour afficher que les vecteurs non nulle sur l'image de résultat?
    troisièmement comment faire pour améliorer les résultats?
    quatrièmement dans le 'help' de Matlab il compare les valeurs propres de la matrice A'A a un seuil comment fixer ce seuil
    dans le deuxième cas des valeurs propres je ne comprends pas comment normalisée le flux optique (voir l'aide du matlab attaché)
    dernièrement est ce que l'utilisation des méthodes de détection des bordure ou les coins (corners) est pour éviter de tomber dans le deuxièmement et le troisième cas des valeurs propres
    Merci pour votre aideNom : 1.jpg
Affichages : 329
Taille : 227,4 Ko

  2. #2
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Salut,

    Pour vérifier tes résultats, tu peux les comparer à une implémentation déjà réalisée et approuvée par de nombreux utilisateurs. Il y en a plusieurs sur FileExchange comme celui-ci : http://www.mathworks.com/matlabcentr...k-optical-flow

    Ensuite, pour ce qui est d'améliorer les résultats, le flow optique est basé sur des approximations et sur des choix de procédure d'estimation. La méthode de Lucas Kanade est une méthode d'estimation, basée sur des hypothèses. D'autres méthodes existent, chacune avec ses avantages et inconvénients. Tout dépend si tu veux un algorithme plus rapide mais peut-être moins précis ou bien si tu souhaites avoir une très grande précision et pas de limite sur le temps de calcul.
    Il me semble que la méthode de Black-Anandan est plus précise que Lucas-Kanade mais demande plus de temps de calcul. Tu peux trouver des implémentations de cette méthode sous Matlab sur le FileExchange également.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Points : 22
    Points
    22
    Par défaut
    Merci Escap;
    Comment je peut manipuler l'instruction 'quiver' pour que je puisse afficher que les vecteurs non nulles

  4. #4
    Membre habitué
    Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2012
    Messages : 130
    Points : 197
    Points
    197
    Par défaut
    Logiquement les vecteurs que tu vois à l'écran sont tous non nuls. Les valeurs nulles sont simplement des points.

Discussions similaires

  1. Traiter le résultat d'un flux optique
    Par saturn1 dans le forum OpenCV
    Réponses: 0
    Dernier message: 14/04/2012, 11h46
  2. Lucas-Kanade (flux optique)
    Par Aldebran dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 12/03/2012, 11h27
  3. Réponses: 4
    Dernier message: 04/05/2010, 13h15
  4. Flux optique et arrière-plan
    Par dulbi dans le forum OpenCV
    Réponses: 1
    Dernier message: 29/07/2009, 16h13
  5. calcul du flux optique
    Par raidouna dans le forum Images
    Réponses: 0
    Dernier message: 07/02/2008, 12h00

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