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 :

Equation de la chaleur / Image 1D 2D [Débutant]


Sujet :

Images

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut Equation de la chaleur / Image 1D 2D
    Bonjour,

    Dans le cadre de mes études, je révise mais je ne comprends pas le bout de code suivant censé utiliser l'equation de la chaleur pour débruiter une image:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function u=Exercice2(Im_Noisy)
     
    %schéma 2D explicit
    dt=0.2; 
    T=1; 
    u=double(Im_Noisy); 
    [n m]=size(u); 
    for t =0:dt:T
        u_xx=u(:,[2:n n]) - 2*u+u(:,[1 1:n-1]); 
        u_yy=u([2:m m],:) - 2*u+u(:,[1 1:m-1]);
        u=u+dt*(u_xx+u_yy); 
    end
    imagesc(u); colormapgray
    end
    1ère question: pourriez-vous svp m'expliquer la syntaxe de ces 2 lignes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u_xx=u(:,[2:n n]) - 2*u+u(:,[1 1:n-1]); 
        u_yy=u([2:m m],:) - 2*u+u(:,[1 1:m-1]);
    2ème question: (elle est light donc je la glisse ici) quelle est la différence entre une image 1D et 2D?

    Merci d'avance!


  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pense à décomposer ces lignes pour lieux comprendre:
    • 2:n Génère les nombres de 2 à n par pas de 1
    • [2:n n] Concatène n à la fin
    • u(:,[2:n n]) Retourne toute les colonnes d'indices [2:n n]. Autrement dit la même image décalée d'un pixel vers la gauche (la dernière colonne étant doublée).

    Et à les exécuter sur un exemple simple. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u = [1 2 3; 4 5 6; 7 8 9];
    n = 3;
    De même pour le reste.

    Au final, on calcule pour tout (i,j)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u_xx(i,j) = u(i,j+1) - 2*u(i,j) + u(i,j-1);
    u_yy(i,j) = u(i+1,j) - 2*u(i,j) + u(i-1,j);
    Citation Envoyé par bilou_12 Voir le message
    2ème question: (elle est light donc je la glisse ici) quelle est la différence entre une image 1D et 2D?
    Tu veux plutôt dire 2D et 3D non? Car 1D, c'est un simple vecteur et donc aucunement une image.
    • 2D: image en niveaux de gris
    • 3D: image couleur (ex: RGB)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Merci Winjerome pour tes réponses!

    Donc si j'ai bien compris ton exemple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u = [1 2 3; 4 5 6; 7 8 9];
    n = 3;
    ...retourne la 2ème et la 3ème colonne soit [4 5 6; 7 8 9]?

    Quant à 1-D et 2-D, je t'ai induis en erreur car il ne s'agit pas de l'image mais de l'équation de la chaleur à 1 ou 2 dimension!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bilou_12 Voir le message
    Donc si j'ai bien compris ton exemple...
    ...retourne la 2ème et la 3ème colonne soit [4 5 6; 7 8 9]?
    Non, je te dis d'appliquer les lignes que tu n'as pas comprises avec ces valeurs de u et n afin de bien comprendre.

    Citation Envoyé par bilou_12 Voir le message
    Quant à 1-D et 2-D, je t'ai induis en erreur car il ne s'agit pas de l'image mais de l'équation de la chaleur à 1 ou 2 dimension!
    Je dirais qu'à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for t =0:dt:T
        u_xx=u(:,[2:n n]) - 2*u+u(:,[1 1:n-1]); 
        u_yy=u([2:m m],:) - 2*u+u(:,[1 1:m-1]);
        u=u+dt*(u_xx+u_yy); 
    end
    tu auras quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for t =0:dt:T
        u_xx=u([2:n n]) - 2*u+u([1 1:n-1]); 
        u=u+dt*u_xx; 
    end

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Merci WinJerome!

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

Discussions similaires

  1. Equation de la chaleur 1D avec MATLAB
    Par pubis2luxe dans le forum Mathématiques
    Réponses: 0
    Dernier message: 07/06/2014, 23h30
  2. l'equation de la chaleur
    Par djodjosami dans le forum Fortran
    Réponses: 9
    Dernier message: 07/02/2012, 17h03
  3. programme d'equation de la chaleur
    Par najoua01 dans le forum Débuter
    Réponses: 9
    Dernier message: 30/01/2011, 12h10
  4. Equation de la chaleur
    Par kawtar2 dans le forum Fortran
    Réponses: 9
    Dernier message: 10/03/2009, 19h41
  5. equation de la chaleur
    Par mirinda dans le forum Mathématiques
    Réponses: 5
    Dernier message: 25/06/2008, 12h04

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