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 :

calcul de gradient entre deux images


Sujet :

Images

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Par défaut calcul de gradient entre deux images
    Bonjour ,
    pour calculer le vecteur de déplacement (horizontal et vertical (u,v)=dI/dx,dI/dy) entre deux image successives (n et n+1) ,j'ai suivit les étapes suivantes:
    enregistrer l'ensemble des image (146) de la video en img{i}, et les convertir en niveau de gris par la fonction rgb2gray , ensuite , et ici se trouve le problème ; pour calculer la différence entre deux de ces images, je n'arrive pas a calculer, et voila ce que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for n=1:numel(list) % numel(list) 146 images
    for i=1:n  % nbr des lignes dans chaque image
        for j=1:m % nbr des colonnes dans chaque image
    Jx(i,j)=(imgi{n}(i+1,j),imgi{n+1}(i,j))/2;
    Jy(i,j)=(imgi{n}(i,j)-imgi{n+1}(i,j))/2;
    end
    end
    car, chaque img{i} représente une image de dimension n*m , autrement dit img{i} n'est pas une valeur . (c'est une matrice).
    Merci de me répondre.
    bon weekend

  2. #2
    Membre émérite

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    salut,

    ton code écrase les valeur de tout les enregistrements ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Deplacement = [];
    for n=1:numel(imgi)-1 % La dernière n'as pas de suivant ...
        Deplacement{n} = imgi{n+1} - imgi{n};
    end
    ++ bonne chance

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Par défaut
    Merci pour ta réponse mr_samura ,
    Mais le problem se pause au niveau de class des variables , telque lorsque j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for k =1:numel(list)
        %list= dir(chemin);
        img{k}=imread(fullfile(rep,list(k).name),ext(3:end));
        imgi{k}=rgb2gray(img{k}); % convertir en Intensité 
     
        end
    dans ce cas imgi{i}, est considérée comme cell class , et pour calculer le vecteur de déplacement entre 2 images successives : imgi{i} ,imgi{i+1}, matlab m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Error using ==> -
    Function '-' is not defined for values of class 'uint8'.
     
    On line 30  ==> Jy{s}(i,j)=double({0.5*(imgi{s+1}(i,j)-imgi{s}(i,j))});
    alors, j'ai utilisé la fonction double comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Jy{s}(i,j)=double({0.5*(imgi{s+1}(i,j)-imgi{s}(i,j))});% Jy vecteur deplacement par rapport y.
    mais rien n'a changé.

    il faut bien compter que imgi{i}, est une matrice ,mais matlab la considère comme cell.
    et le vecteur de déplacement par définition est : I(x,y,t)=I(x+dx/dt,y+dy/dt, t+1)
    moi je veut calculer (u,v)=(dx/dt,dy/dt); pour toute l'ensemble d'images 146.(méthode flot optique).
    Merci d'avance.

  4. #4
    Membre émérite

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Salut,

    Matlab sort les dents car tu converti après la soustraction de deux matrices de type UINT8... essayes comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    % Covertir à l'usage
    IM1 = imread('football.jpg');
    IM2 = imread('football.jpg');
    DIFF = double(IM1) - double(IM2);
     
    % Convertir au chargement (mieux à mon avis)
    IM1 = double(imread('football.jpg'));
    IM2 = double(imread('football.jpg'));
    DIFF = IM1 - IM2;
    ++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Par défaut
    Bonjour ;
    Merci encore , c toute a fait ...
    je pense que ca va régler
    Mais maintenant j'arrive à l'étape d'itération pour le calcul de delta² U=k(Û-U).
    delta² V=k(V-v)., et je ne sais pas comment afficher ma carte flot obtenu comme des flèches (méthode flot optique).
    Merci.

  6. #6
    Invité de passage
    Femme Profil pro
    Ingénieur validation
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Par défaut R
    Bonjour Enitta s'il vous plais pouvez vous me donner la fonction ou le code avec le quelle vous avez calculer le vecteur de déplacement en fonction du principe du flot optique

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

Discussions similaires

  1. Calcul de différence entre deux images
    Par afef_master dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 23/09/2008, 15h33
  2. [quiver] Visualiser un gradient entre deux images
    Par jp_developpeur dans le forum Images
    Réponses: 7
    Dernier message: 26/08/2008, 19h06
  3. Calcul erreur entre deux images noir et blanc
    Par b4sols dans le forum Images
    Réponses: 1
    Dernier message: 22/03/2007, 08h59
  4. Différence entre deux images
    Par Mookie dans le forum 2D
    Réponses: 3
    Dernier message: 13/04/2006, 15h46
  5. [PIL] Difference entre deux images
    Par t_om84 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 26/12/2005, 12h45

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