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 d'une ligne: code tres lent


Sujet :

Images

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut creation d'une ligne: code tres lent
    Bonjour, j'ai cré une fonction qui cré des lignes en passant par un point x0 y0 et de direction alpha.

    Ce code est lent du faite de la boucle.

    Je n'arrive pas à m'en affranchir ... une idée ?
    besoin d'un regard exterieur

    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
    function [imageNB] = createline(img,x0,y0,alpha,hautfin,affichages)
     
    imageNB=zeros(size(img));
     
    lesx=[x0:-1:hautfin];
    var=lesx(1)/tan(alpha);
    lesy=var-((lesx(:))/tan(35))+y0;
    theend=numel(lesy);
     
    % imageNB(int16(lesx(:)),int16(lesy(:)))=1;
     
    for kk=2:theend
        imageNB(int16(lesx(kk)),int16(lesy(kk)))=1;
    end
     
    if (affichages==1)
        figure, imshow(imageNB);
    end
     
     
    end

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    Et si tu nous dis qu'es-ce que tu veux obtenir avec un tel algorithme (Le principe) ?
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    Je veux juste créer une ligne blanche sur une image d'une taille determiné.
    La ligne a pour contrainte d'avoir une inclinaison alpha et passant par le point x0y0 de la matrice.

    J'ai l'impression d'utiliser un bazooka pour cueillir une pâquerette ...

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    J'ai un doute : tu utilises INT16 pour faire un arrondi ?

    ROUND serait plus propre (ou l'un de ses amis CEIL, FIX et FLOOR).

    Ensuite je pense que tu dois pouvoir utiliser IND2SUB pour ne pas avoir à faire de boucle.

    Sinon dans un premier temps en gardant la boucle si tu sors l'arrondi tu devrais gagner un peu de temps :
    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
    function [imageNB] = createline(img,x0,y0,alpha,hautfin,affichages)
     
    imageNB=zeros(size(img));
     
    lesx=[x0:-1:hautfin];
    var=lesx(1)/tan(alpha);
    lesy=var-((lesx(:))/tan(35))+y0;
    theend=numel(lesy);
     
    varX = round(lesx);
    varY = round(lesy);
     
    for kk=2:theend
        imageNB(varX(kk)),varY(kk))=1;
    end
     
    if (affichages==1)
        figure, imshow(imageNB);
    end
    end
    Sinon pour tracer une ligne c'est LINE qu'il faut utiliser...
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    la fonction drawslope sur mathworks est pas mal ...

    ImagingAll

Discussions similaires

  1. comprendre une ligne code
    Par ouinih dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2011, 16h23
  2. Réponses: 5
    Dernier message: 02/09/2006, 15h10
  3. [VB2005] conversion d'une ligne de code de C# > vers VB2005
    Par DonJR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/07/2006, 23h08
  4. [Tableaux] Explication d'une ligne de code
    Par eXiaNazaire dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2006, 13h09
  5. PB sur une ligne de code
    Par romrai dans le forum Access
    Réponses: 2
    Dernier message: 22/02/2006, 11h27

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