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 :

Binarisation d'image couleur


Sujet :

Images

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Binarisation d'image couleur
    Bonjour tout le monde

    S'il vous plait pouvez-vous m'aider à trouver un algorithme ou bien une fonction qui permet de faire la binarisation d'une image couleur ou noir et blanche en utilisant le seuillage (en changeant aux niveau des pixel) par la méthode de Bernson?
    Merci d'avance ^^

  2. #2
    Membre actif Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Points : 214
    Points
    214
    Un thésard a souvent un problème de motivation jusqu'au moment où il aura un problème de temps....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 6
    Points
    6
    Par défaut methode de BERNSEN&&binarisation image!
    bonjour tout le monde ,

    Je suis débutant en MATLAB et j'ai un exercice à résoudre: binarisation d'image couleur en noir et blanc. J'ai 2 questions:
    1) Cette fois en fait l'échange aux niveaux de pixel lui-même (exemple pixel 3*3 en calcule les seuils min et max du pixel et calcule le seuil milieu s = (Imin + Imax)/2) ?
    *aussi la fonction qui permet de calculer le seuil du voisinage de pixel ?
    2) J'ai utilisé ce code source qui me permet de choisi n’importe quelle image pour la traiter mais le problème c'est comment je peux faire le traitement sur l'image choisie?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %pour ouvrir image
    [filename, pathname] = uigetfile('*','Charger Image');img=imread(fullfile(pathname, filename));
    img=im2double(rgb2gray(img));
    img=im2double(img);
    *voila mon code source de traitement (que dois-je faire pour que le traitement se fasse sur n'importe qu'elle image entrée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    I = imread('Image_dégradation.jpg');m = rgb2gray(I); figure, imshow(m);
    [l,c]=size(m);s=120;
    for i=1:l
        for j=1:c
            if m(i,j)<s
                m(i,j)=0;
            else
                m(i,j)=255;
            end
        end
    end
    figure,imshow(m);
    Aidez-moi à réaliser mon TP

    Merci d'avance

  4. #4
    Membre actif Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Points : 214
    Points
    214
    Par défaut
    Bonjour,
    Citation Envoyé par dr.housekl Voir le message
    1) Cette fois en fait l'échange aux niveaux de pixel lui-même (exemple pixel 3*3 en calcule les seuils min et max du pixel et calcule le seuil milieu s = (Imin + Imax)/2) ?
    *aussi la fonction qui permet de calculer le seuil du voisinage de pixel ?
    voilà une piste pour calculer le min et max pour chaque bloc de 3*3 pixels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [l,c]=size(m);
     
    w=3*3;
    for i=1:w:l
        for j=1:w:c
            s = 0;
     
            if i+w-1 <= l & j+w-1 <= c
                Min=min(m(i:i+w-1,j:j+w-1));
                Max=max(m(i:i+w-1,j:j+w-1));
                s=(Min+Max)/2
    2) J'ai utilisé ce code source qui me permet de choisi n’importe quelle image pour la traiter mais le problème c'est comment je peux faire le traitement sur l'image choisie?
    en l'affectant à une variable (tu l'as déjà fais dans ton ex code (cf la variable m)
    Un thésard a souvent un problème de motivation jusqu'au moment où il aura un problème de temps....

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Russie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    voilà ce que j'ai utilisé pour le seuillage local (méthode de Berenson) mais ça ne marche pas.
    J'ai besoin d'aide s'il vous plait .
    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
    m= imread('images[5].jpg'); imshow(m);
     
    [l,c]=size(m);
    for i=1:l
        for j=1:c
     
            w=3*3;
            for i=1:w
                for j=1:w
                    s = 0;
     
                    if i+w-1 <= l & j+w-1 <= c
                        Min=min(m(i:i+w-1,j:j+w-1));
                        Max=max(m(i:i+w-1,j:j+w-1));
                        s=(Min+Max)/2;
                    end
     
                    if m(i,j)<s
                        m(i,j)=0;
                    else
                        m(i,j)=255;
                    end
     
                end
            end
        end
    end
    imshow(m);
    Merci d'avance.
    Aussi je voudrais savoir comment parcourir l'image sans accéder aux pixels du bord. Merci.

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

    Attention d'utiliser des indices ayant des noms différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i=1:l
        for j=1:c
            
            w=3*3;
            for i=1:w
                for j=1:w
    Sinon, aurais-tu un papier décrivant la méthode de seuillage que tu utilises?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Essayez avec ceci

    fichier matlab principal par exemple binarisation.m

    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
    function imgBW = imageBinarisation(imdata,seuil)
    imdata = image2Double(imdata);
     
    % convertir l'image en double
     
    [L,T] = size(imdata);
    imgBW = zeros(L,T);
    for i=1:L
        for j=1:T
            if imdata(i,j)<=seuil
                imgBW(i,j)=0;
            else
                imgBW(i,j)=1;
            end
        end
    end
    imgBW = double(imgBW);

    Faire appel de cette fonction dans le fichier de binarisation par exemple bin.m

    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
    clc;
    clear all 
     
    img_exemple = 'exemple.gif';
     
    % exemple.gif étant l'image à binariser
     
    img = imread(img_exemple);
     
    image = img(:,:,1);
    imgBW = imageBinarisation(image, 0.2);   
     
      % 0.2 étant la valeur seuil, le prendre proche de la valeur min de l'image
     
    figure(1)
    imageShow(image)
     
    figure(2)
    imageShow(imgBW)

Discussions similaires

  1. Binariser une image RVB sur la couleur rouge
    Par deathsceythe dans le forum OpenCV
    Réponses: 0
    Dernier message: 25/09/2008, 21h53
  2. Quantification d'une image couleur
    Par sandball22 dans le forum Images
    Réponses: 2
    Dernier message: 02/12/2006, 22h32
  3. Binarisation d'image pour détection de formes
    Par babarpapa dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 09/05/2006, 15h32
  4. Images couleurs et C++
    Par solitaire dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 22/11/2005, 13h21
  5. diffirencier entre les images couleurs et les noir et blanc
    Par passion_info dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/05/2005, 14h15

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