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 :

Creation dynamique de structure de matrice


Sujet :

Images

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Creation dynamique de structure de matrice
    Bonjour,

    Dans le cadre de mon stage, je fais un programme qui extrait les images d'une vidéo, les filtre et crée une nouvelle vidéo à partir des images filtrées. Le programme fonctionne avec une boucle for, mais j'ai cru comprendre que Matlab n'est pas très performant avec les boucles, j'essaie donc de l'éliminer.

    Pour cela je voudrais créer dynamiquement une structure de matrice, je m'explique :
    La structure dois comprendre les images rgb (matrice 1080,1920,3) extraites de la vidéo. Mon idée est d'appliquer ensuite mon filtrage aux éléments de la structure en utilisant les operateur ":" au lieu d'utiliser une boucle.

    Finalement la question est la suivante : Est-il possible de placer dynamiquement les images dans la structure sans utiliser de boucle?

    Mon problème est un peu difficil à expliquer, j'espère que mon message est clair, Merci d'avance pour vos réponses

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    la réponse est : ça dépend!

    Si ton filtrage consiste à appliquer une opération identique à chaque pixel ou à des groupes de pixels à l'aide d'un élément structurant de taille fixe, alors la réponse est certainement oui. Mais je ne comprends pas bien pourquoi tu parles de dynamique? Qu'est ce qui évolue?

    Tu pourrais peut-être nous montrer ton code qui utilise les boucles for? Ou nous expliquer plus en détail les différentes étapes de ton code?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Je me doutais bien que je n'avais pas été très claire!
    L'utilisation du terme dynamique n'est peut-être pas exacte , ce que je veux dire c'est que la structure de matrice se remplie au fur et à mesure que les images sont extraites de la vidéo.

    Je vous montre le code actuel qui fonctionne avec une boucle et qui filtre une vidéo de 8s en 15min!!!

    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
    aviobj = avifile('video_test_frag8_filtre4niv_098_08_02_0.avi');
    mov=mmreader('W:\Eloise\Video_test\\F1_Will_BRUTE_quarter.avi')
    
    fps=mov.FrameRate;
    aviobj.fps = fps;
    aviobj.compression='None';
    total_images=mov.NumberOfFrames;
    count=1;
    
    for i=1:total_images,
        % lecture d'une image de la vidéo
        img=read(mov,i);
    % application du filtre
        eval([ 'im = AppliquerFiltre(img);' ]);
    % ajout de l'image filtrée au nouveau film
        aviobj = addframe(aviobj,im);
        count=count+1;
    end
    
    mov=close(aviobj);
    Le problème est que je n'est pas accès aux images dans l'objet aviobj et que l'instruction read me permet seulement de lire les images. Je voudrais placer les images dans une structure de matrice pour avoir accès facilement à chaque image.

    Merci d'avance pour votre aide

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    y-a-t-il une raison particulière pour laquelle tu utilises eval dans ta boucle? Tu ne pourras pas mettre simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    im = AppliquerFiltre(img);
    Ensuite, je ne pense pas que le temps d'exécution du ton algo dépend de la boucle for mais plutôt de la fonction AppliquerFiltre. Que fais-tu dans cette fonction?

    Sinon pour sauvegarder tes images, tu peux faire un tableau de cellules.
    (Le tableau de cellule n'est pas une nécessité étant donné que toutes tes frames ont les mêmes dimension, mais je trouve que c'est plus clair de les ordonner ainsi plutôt que dans une matrice classique).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Salut,
    autre alternative aux tableaux de cellules, les matrices 3D:


  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par kevin07 Voir le message
    Salut,
    autre alternative aux tableaux de cellules, les matrices 3D:

    Oui mais comme ce sont des images rgb, je pense que un tableau de cellule sera plus simple a utiliser.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses,

    Citation Envoyé par magelan
    y-a-t-il une raison particulière pour laquelle tu utilises eval dans ta boucle?
    Effectivement, 'eval' ne sert à rien, c'est un reste d'un précédent essai de code.

    Citation Envoyé par kevin07
    autre alternative aux tableaux de cellules, les matrices 3D:
    Code :im(:,:,n)=read(mov,n)
    Le problème est que chaque image est déjà une matrice 3D (ligne,colonne,rgb), il faut donc stocker des matrices 3D.

    Citation Envoyé par magelan
    Sinon pour sauvegarder tes images, tu peux faire un tableau de cellules.
    Je ne connaissais pas les tableaux de cellules, je vais me renseigner.

    Citation Envoyé par magelan
    je ne pense pas que le temps d'exécution du ton algo dépend de la boucle for mais plutôt de la fonction AppliquerFiltre. Que fais-tu dans cette fonction?
    Le calcul demande beaucoup de temps même sans appliquer de filtre, donc juste en décomposant une image et en reconstituant une vidéo.
    Peut être tout simplement que les fonctions read et addframe demande beaucoup de ressource et qu'il n'y a pas grand chose à faire pour accélérer le processus...

    En tout cas merci, je vais creuser les tableaux de cellules

Discussions similaires

  1. [en C]creation dynamique d'interface
    Par ronan99999 dans le forum Windows
    Réponses: 3
    Dernier message: 19/08/2004, 12h53
  2. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 19h34
  3. Réponses: 8
    Dernier message: 04/09/2003, 16h07
  4. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 18h31
  5. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59

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