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 :

problème avec l'exécution d'une fonction


Sujet :

Images

  1. #1
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut problème avec l'exécution d'une fonction
    Bonjour tout le monde,
    je dispose d'une fonction BoundMirrorExpand(A) qui enveloppe la matrice A par des valeurs qui ne nous importent pas,en gros si la dimension de A est [m,n],la dimension du résultat (BoundMirrorExpand(A)) devra être [m+2,n+2] .

    Voici le corp de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    1  function B = BoundMirrorExpand(A)
    2  [m,n] = size(A);
    3  yi = 2:m+1;
    4  xi = 2:n+1;
    5  B = zeros(m+2,n+2);
    6  B(yi,xi) = A;
    7  B([1 m+2],[1 n+2]) = B([3 m],[3 n]);  % mirror corners
    8  B([1 m+2],xi) = B([3 m],xi);          % mirror left and right boundary
    9  B(yi,[1 n+2]) = B(yi,[3 n]);          % mirror top and bottom boundary

    j'ai exécuté cette fonction sur la matrice a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a =
     
         0     0     0
         0   255     0
         0     0     0
    b=BoundMirrorExpand(a),et j'obtient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    b =
     
       255     0   255     0   255
         0     0     0     0     0
       255     0   255     0   255
         0     0     0     0     0
       255     0   255     0   255
    Jusqu'ici pas de soucis.Tout fonctionne très bien.

    Maintenant je voudrai appliquer cette fonction sur une image.En exécutant cette séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    image=imread('point.bmp');
    a=boundmirrorexpand(image);
    j'obtient le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ??? Assignment has more non-singleton rhs dimensions than non-singleton
    subscripts.
     
    Error in ==> BoundMirrorExpand at 6
    B(yi,xi) = A;
    Pourquoi cette fonction s'exécute très bien avec une matrice et non avec des image bmp?

  2. #2
    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 828
    Points
    14 828
    Par défaut
    Un petit tour par la

    Assignment has more non-singleton rhs dimensions than non-singleton subscripts.


    Donc :
    1. (qui n'a rien à voir mais important) N'appelle pas ta variable image => c'est une fonction de MATLAB
    2. Regarde la taille de la variable que tu récupères avec imread.

  3. #3
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Citation Envoyé par caro95470 Voir le message



    2. Regarde la taille de la variable que tu récupères avec imread.
    En effet,l'image que j'ai récupéré par imread est une matrice 3 dimensions,où la dimension de profondeur correspond aux composantes RGB de l'image 24 bits.


    Pour mon cas il fallait que je fasse : ( avant l'appel )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    im=imread('test.bmp');
    im=im(:,:,1); %l'image est en niveau de gris =>les 3 composantes sont identiques.
    Merci à vous caro95470.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2008, 22h58
  2. Réponses: 4
    Dernier message: 22/03/2008, 12h06
  3. problème avec l'utilisation d'une fonction
    Par mcspawn dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 15h39
  4. Réponses: 1
    Dernier message: 13/12/2006, 14h18
  5. problème avec l'appel d'une fonction
    Par mademoizel dans le forum ASP
    Réponses: 5
    Dernier message: 26/06/2006, 15h04

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