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 :

Redimensionner une matrice avec "reshape"


Sujet :

Images

  1. #1
    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 Redimensionner une matrice avec "reshape"
    Bonjour à tous ,

    j'ai une matrice m[256 256 16] que je cherche à redimentionner en m[256 256 3 16].
    J'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m=reshape(m, [256 256 3 16])
    Mais j'ai un problème : il faut que les dimensions ne changent pas !!

    Merci de m'aider svp.

    @+

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    si j'ai bien compris, reshape prends en deuxième paramètre une matrice qui a exactement le même nombre de cases que la première : il s'arrange ensuite pour faire entrer les données de la première dans la seconde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    A =
        1    4    7    10
        2    5    8    11
        3    6    9    12
     
    B = reshape(A,2,6)
     
    B =
        1    3    5    7    9   11
        2    4    6    8   10   12
     
    % A : 3*4 B : 2*6, 12 cases chacune.
    Donc a priori il ne fait pas ce que tu essayes de lui faire faire.

    Tu vas devoir probablement mettre la main à la patte.


    Tiens, en bonus une commande TRES utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> help reshape
     RESHAPE Change size.
        RESHAPE(X,M,N) returns the M-by-N matrix whose elements
        are taken columnwise from X.  An error results if X does
        not have M*N elements.

  3. #3
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    m2 = zeros(256, 256, 3, 16);
    m2(:,:,1,:) = m;
    m2(:,:,2,:) = m;
    m2(:,:,3,:) = m;
    Ca te fait une iamge RGB qui ne contient que des valeurs de gris, et qui presente le meme aspect que ton image de base.
    C'est ce que tu veux ?

    A+

  4. #4
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> m = ones(256,256,3,16);
    >> m2 = zeros(256, 256, 3, 16);
    m2(:,:,1,:) = m;
    m2(:,:,2,:) = m;
    m2(:,:,3,:) = m;
    ??? Subscripted assignment dimension mismatch.

    ça n'a pas l'air de fonctionner.

  5. #5
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut,

    A la base, m est une matrice 256x256x16,
    dans ce cas ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    m = ones(256, 256, 16);
     
    m2 = zeros(256, 256, 3, 16);
    m2(:,:,1,:) = m;
    m2(:,:,2,:) = m;
    m2(:,:,3,:) = m;
    A+

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    m = ones(256, 256, 16);
     
    m2 = zeros(256, 256, 3, 16);
    m2(:,:,1,:) = reshape(m, 256, 256, 1, 16);
    m2(:,:,2,:) = reshape(m, 256, 256, 1, 16);
    m2(:,:,3,:) = reshape(m, 256, 256, 1, 16);
    Ca, ça devrait marcher, sans le reshape, ça ne peut pas marcher.

  7. #7
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    je l'avais teste avant de le poster, quand meme...

    ca marche sans le reshape.
    Je suppose que matlab le fait automatiquement.

    A+

  8. #8
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Kangourou
    je l'avais teste avant de le poster, quand meme...

    ca marche sans le reshape.
    Je suppose que matlab le fait automatiquement.

    A+

    effectivement ce que tu avais dit fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    m = ones(256, 256, 16);
    m2 = zeros(256, 256, 3, 16);
    m2(:,:,1,:) = m;
    m2(:,:,2,:) = m;
    m2(:,:,3,:) = m;

  9. #9
    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
    merci à vous tous ...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2014, 07h49
  2. Redimensionner une JFrame avec valeur limite
    Par ppopov dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 15/01/2006, 20h08

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