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 :

Fonction de remplacement pixel noir et blanc


Sujet :

Images

  1. #1
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut Fonction de remplacement pixel noir et blanc
    Salut à tous, j'essaye de créer une fonction qui quand elle repère un pixel blanc entouré de au moins 3 pixels noir le convertit en noir.

    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
    34
    35
    36
    37
    38
    39
    40
    clc;
    close all;
    clear all;
     
     
    image = imread('lettre2_8.jpg');
    image = im2bw(image,graythresh(image));
     
    [x,y] = size(image);
     
    for i=1:x
     
        for j=1:y
     
            if ((image(i,j) == 1) && ((image(i,j-1)== 0) || (image(i,j+1)== 0)))
                pixNoirCote =0;
     
                if (image(i,j-1) == 0)
                    pixNoirCote = pixNoirCote + 1;
                end
     
                if (image(i,j+1) == 0)
                    pixNoirCote = pixNoirCote + 1;
                end
     
                if (image(i+1,j) == 0)
                    pixNoirCote = pixNoirCote + 1;
                end
     
                if (image(i-1,j) == 0)
                    pixNoirCote = pixNoirCote + 1;
                end
     
                if pixNoirCote >=3
                    image(i,j)=0
                end
            end
        end
    end
    imwrite(image,'lettreeuhhhh.jpg','jpg','Quality',100);
    j'obtiens comme erreur :
    ??? Subscript indices must either be real positive integers or
    logicals.
    
    Error in ==> ajoutPixel_VTest at 26
                if ((image(i,j) == 1) && ((image(i,j-1)== 0) ||
                (image(i,j+1)== 0)))
    je ne comprends pas vraiment l'erreur mon code me parait juste :s

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

    Dans un premier temps, direction la Subscript indices must either be real positive integers or logicals.
    Puis mise en évidence de tes erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        for j=1:y        
            if ((image(i,j) == 1) && ((image(i,j-1)== 0) || (image(i,j+1)== 0)))

  3. #3
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    :p maintenant j ai plus d erreur mais mon code fait juste pas ce que je demande

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    clc;
    close all;
    clear all;
     
        image = imread('lettre2_8.jpg');
        image = im2bw(image,graythresh(image));
     
    	[x,y] = size(image);
     
        for i=1:x        
     
             for j=1:y        
     
                if ((j>1) & (j <= image(:,end)))
     
                    if ((image(i,j) == 1) && ((image(i,j-1)== 0) || (image(i,j+1)== 0)))  
                        pixNoirCote =0;
     
                        if (image(i,j-1) == 0)
                            pixNoirCote = pixNoirCote + 1;
                        end
     
                        if (image(i,j+1) == 0)
                            pixNoirCote = pixNoirCote + 1;
                        end
     
                        if (image(i+1,j) == 0)
                            pixNoirCote = pixNoirCote + 1;
                        end
     
                        if (image(i-1,j) == 0)
                            pixNoirCote = pixNoirCote + 1;
                        end
     
                        if pixNoirCote >=3
                            image(i,j)= 0;
                        end
     
                    end
                end    
             end
        end
     
    imwrite(image,'lettreeuhhhh.jpg','jpg','Quality',100);

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Karly Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                if ((j>1) & (j <= image(:,end)))
    Je doute que cela soit la condition que tu veuilles imposer

  5. #5
    Membre du Club
    Homme Profil pro
    etuidiant
    Inscrit en
    Octobre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : etuidiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 64
    Points : 50
    Points
    50
    Par défaut
    J'ai besoin que j soit plus grand que 1 et soit plus petit que l'index du dernier pixel de la ligne. Mais en fait le dernier le dernier élément de la ligne correspond à y je suis bete :p merci ca marche!!

  6. #6
    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
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Pour alléger un peu ton code, tu peux calculer la somme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image(i,j-1)+image(i,j+1)+image(i-1,j)+image(i+1,j)
    et comparer le résultat avec 3.
    Ce calcul peut aussi se faire en convoluant ton image avec un masque adaptée.
    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.

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

Discussions similaires

  1. Remplacement pixel noir et blanc
    Par appo7 dans le forum Images
    Réponses: 4
    Dernier message: 08/11/2011, 20h54
  2. Nombre de pixels Noirs/Blancs
    Par khouloud. dans le forum Images
    Réponses: 6
    Dernier message: 10/10/2011, 21h45
  3. Créer un graphiquer 2D en noir et blanc via une fonction griddata
    Par frisou65 dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 23/09/2011, 08h39
  4. Réponses: 4
    Dernier message: 31/10/2010, 03h52
  5. [Galerie] Fonction pour convertir une image en noir et blanc
    Par piotrr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/02/2009, 12h23

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