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 :

Filtrage d'une image couleur


Sujet :

Images

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 329
    Points : 88
    Points
    88
    Par défaut Filtrage d'une image couleur
    bonjour ,
    j'ai un petit probleme dans l'affichage d'image final voici le code
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    close all;clear all;clc;
    
    I = imread('originale.jpg');
    
    R = double(I(:,:,1));
    G = double(I(:,:,2));
    B = double(I(:,:,3));
    
    dx = [-sqrt(2)/4 0 sqrt(2)/4; -1 0 1; -sqrt(2)/4 0 sqrt(2)/4];  
    dy = dx';
    
    Rx = filter2(R, dx, 'full');      
    Ry = filter2(R, dy, 'full');
    
    %%% combinaison de deux composantes
    R =sqrt( Rx.^2 + Ry.^2);
    
    Gx = filter2(G, dx,'full');      
    Gy = filter2(G, dy, 'full');
    
    %%% combinaison de deux composantes
    G =sqrt( Gx.^2 + Gy.^2);
    
    Bx = filter2(B, dx, 'full');      
    By = filter2(B, dy, 'full');
    
    %%% combinaison de deux composantes
    B =sqrt( Bx.^2 + By.^2);
    
    FinalImage= [R G B];
    
     imshow(FinalImage);
    il ya un probleme dans les dernier ligne en rouge

    quelqu'un peux contribué

    Merci d'avence

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut,

    C'est tout à fait normal qu'il y ait un problème. tu ne reconstruis pas correctement ton image finale.

    Si tu regardes

    tu verras que tu as 3 dimensions. Il faut donc recréer ces 3 dimensions pour ton résultats final. Or toi tu concatènes les résultats intermédiaires. Donc tu as au final une "image" à 2 dimension. Plus précisément, tu as affiché côte à côte les 3 composantes de ton image.

    Il faut donc faire ceci pour recréer ton image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [l c]=size(R);
     
    FinalImage(1:l,1:c,1)=uint8(R);
    FinalImage(1:l,1:c,2)=uint8(G);
    FinalImage(1:l,1:c,3)=uint8(B);
     
     imshow(FinalImage);

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 329
    Points : 88
    Points
    88
    Par défaut
    Merci pour votre reponse,

    tu peux excuter ce code avec cette image, je vois au final l'image a fait une sorte de rotation

    je sais pas prk ??
    Images attachées Images attachées  

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Ouep, mais là, je ne suis pas assez expérimenté en image pour savoir pourquoi tu as cette rotation ou symétrie.

    En attendant d'avoir une réponse plus complète, tu peux changer les paramètres des axes pour avoir ton image dans le "bon" sens en rajoutant ces lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set(gca,'xdir','reverse');
    set(gca,'ydir','normal');

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par hanane78 Voir le message
    tu peux excuter ce code avec cette image, je vois au final l'image a fait une sorte de rotation
    Utilise CONV2 à la place de FILTER2 pour éviter la rotation de 180°

    Sinon pour la concaténation des 3 couches à la fin, tu peux aussi utiliser la fonction CAT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FinalImage = cat(3,R,G,B);
    et il faut certainement convertir les données finales dans la même classe que les données initiales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FinalImage = uint8(FinalImage);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 329
    Points : 88
    Points
    88
    Par défaut
    Merci bcp pour votre reponse le probleme a ete resolut dans un 1er temps.
    quant au filter2() ou bien conv2() se sont des fonction qu'on doit l'utiliser d'une maniere simple c'est a dire on donne la matrice et le masque et on faisant la convolution, ma question es ce que si possible ajouter un seuillage a cette convolution quelque soit la fonction utiliser soit conv2 ou filiter2

Discussions similaires

  1. Gradient d'une image couleur
    Par hanane78 dans le forum Images
    Réponses: 16
    Dernier message: 26/01/2008, 13h27
  2. Rendre le milieu d'une image couleur en gris
    Par nouha_79 dans le forum Images
    Réponses: 2
    Dernier message: 16/11/2007, 19h20
  3. Réponses: 3
    Dernier message: 14/04/2007, 21h30
  4. Tramage d'une image couleur
    Par sandball22 dans le forum Images
    Réponses: 2
    Dernier message: 15/01/2007, 16h58
  5. Quantification d'une image couleur
    Par sandball22 dans le forum Images
    Réponses: 2
    Dernier message: 02/12/2006, 22h32

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