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 :

Concatener à la volée


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 163
    Par défaut Concatener à la volée
    Bonjour,

    Je dispose d'une matrice images 4D la forme: monImage <128x128x384 double>
    Je me déplace dans ma matrice selon la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for bIm = 1 :length(b)
        for slice = 1:nbSlice
        posIm = slice+(bIm-1)*nbSlice;
        monImage(:,:,posIm);
        end
    end
    Où slice est le niveau de coupe et bIm le paramètre que je fais varier.

    J'aurai besoin pour l'un de mes calculs de concatener toutes les slices pour une valeur de b donnée.
    J'ai essayé de différentes façon mais visiblement ca pose à MatLab un problème de dimension à chaque fois.
    En effet, je procède de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % initialisation d'un buffer
    catImage = zeros(128,128,length(b))
     
    for bIm = 1 :length(b)
        for slice = 1:nbSlice
        posIm = slice+(bIm-1)*nbSlice;
        catImage (:,:,bIm) =  cat(2,catImage (:,:,bIm),monImage(:,:,posIm));
        end
    end
    Si vous avez une idée je suis preneur !

  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
    Par défaut
    Bonjour,

    il y a effectivement sur un problème de dimension : en faisant cat(...,...), tu agrandis les dimensions de ta matrice et tu essaies de faire 'tenir' cette nouvelle matrice dans les anciennes dimensions...

    Mais que veux-tu faire précisément? De quelle façon veux-tu concaténer? Quelle doit être la structure finale?

    Un petit exemple pour cat :
    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
    >> A = ones(3,3,1)
     
    A =
     
         1     1     1
         1     1     1
         1     1     1
     
    >> cat(2,A,ones(3,3)*2)
     
    ans =
     
         1     1     1     2     2     2
         1     1     1     2     2     2
         1     1     1     2     2     2
    C'est vraiment de cette façon que tu souhaites concaténer tes images?
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 163
    Par défaut
    le veux coller bout à bout une série d'images

  4. #4
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Citation Envoyé par TopCao Voir le message
    le veux coller bout à bout une série d'images
    Que veux tu dire ?

    Sinon, la solution que t'as donné Magelan fait largement l'affaire

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 163
    Par défaut
    La solution de Magelan marche bien pour une paire, un trio ou n images, mais elle ne fonctionne pas dans une boucle.

    Je crois qu'un reshape sera plus efficace pour le coup

  6. #6
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:k
        ...
        ...
        a=cat(2, a, m)
    end
    sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i=1:k
        ...
        ...
        a(:,:,k)=m ;
    end

Discussions similaires

  1. Concatener la date au du nom fichier
    Par peppena dans le forum Linux
    Réponses: 5
    Dernier message: 09/02/2009, 12h53
  2. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  3. [VB6] Concaténation de deux controles RTF facile
    Par bbbastien dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/02/2004, 12h58
  4. Concaténation de chaine de caractères
    Par joy dans le forum Linux
    Réponses: 5
    Dernier message: 07/07/2003, 13h03
  5. probleme de concatenation
    Par cyna dans le forum C
    Réponses: 2
    Dernier message: 23/08/2002, 10h41

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