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 :

optimisation du temps


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 optimisation du temps
    Je débute en matlab et je suis entrain de programmer un algorithme en matlab.
    Le voila le début du 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
     
    tic;
    for f=1:1
    f
        %*****Image
       ImageReel0  = imread(['BaseTest1/',int2str(f),'.jpg'],'jpg');
        %****Masque
       Masque0 = imread(['MasqueBaseTest1/',int2str(f),'.jpg'],'jpg');
       ImageReel=imresize(ImageReel0,[384 512],'bicubic');
       Masque=imresize(Masque0,[384 512],'bicubic');
     
     
     
      K=[0.125 0.25 0.5 1];
      INIT=K(1)
      I0=imresize(ImageReel,INIT,'bicubic');
      s=size(I0);
      N=4;
      Speau=0.66;
      Sfond=0.22;
      P0 = zeros(s(1:2)); 
      M0 = zeros(s(1:2)); 
      Toc

    Mon problème c’est qu’on affichant le temps mis au bout de ces instructions (juste imread et imresize) c’est presque 3 .5 seconde ce qui m’étonne trop en plus je suis dans une application temps réel donc 3.5 seconde pour juste imread et imresize c’est choquant. Donc pouvez- vous m’aidez à optimiser ce temps en changeant le code ou bien en l’optimisant.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Utilise le profiler pour voir les lignes qui consomment le plus de temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    profile on
     
    for f = ...
     
     
    end
     
    profile viewer
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  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
    En utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    profile on
    profile viewer
    et comme j’ai dis en avant que les instructions de imresize consomme presque 3 .5 seconde. Donc comme solution afin de gagner ces 3.5 Seconde, j’ai établie un imresize de toutes les images dans un nouveau dossier tout d’abords et je n’est rien changer du reste du 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
     
    tic;
    for f=1:1
    f
        %*****Image
       ImageReel  = imread(['BaseTest11/',int2str(f),'.jpg'],'jpg');
        %****Masque
       Masque = imread(['MasqueBaseTest11/',int2str(f),'.jpg'],'jpg');
     
     
     
      K=[0.125 0.25 0.5 1];
      INIT=K(1)
      I0=imresize(ImageReel,INIT,'bicubic');
      s=size(I0);
      N=4;
      Speau=0.66;
      Sfond=0.22;
      P0 = zeros(s(1:2)); 
      M0 = zeros(s(1:2)); 
      Toc
    Mon problème maintenant que les taux que je calcule diminue de presque 0 .4% et je n’ai pas trouvé d’explication pour ça ?? Pouvez vous m’aidez à trouver une explication pour ça ??Ou bien à trouver une autre solution afin de gagner du temps sans perdre dans mes taux??

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Si c'est bien IMRESIZE qui prends le plus de temps, je te conseille de ré-écrire cette fonction en codant la méthode d'interpolation bicubique uniquement.

    La référence donnée sur la page de Wikipédia pour la méthode par convolution est la même que celle spécifiée dans IMRESIZE.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  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
    Merci Dut pour ta réponse, mais pouvez vous m’aide avec un code matlab de la méthode d'interpolation bicubique ??

Discussions similaires

  1. Optimisation du temps de traitement
    Par djuddju dans le forum Oracle
    Réponses: 4
    Dernier message: 20/04/2006, 21h16
  2. optimiser le temps d'exécution de l'explorateur windows
    Par ben_iap dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 31/01/2006, 22h04
  3. Réponses: 9
    Dernier message: 20/06/2005, 12h17
  4. [SGBD]Optimiser le temps d'accès aux données (schéma BD)
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 08/10/2004, 18h33
  5. optimisation de temps de traitement xml/xslt
    Par Erwy dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/05/2004, 16h08

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