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

Traitement d'images Discussion :

ségmentation sous Matlab


Sujet :

Traitement d'images

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut ségmentation sous Matlab
    salut,
    je travaille sur un projet de reconnaissance des caractères manuscrits, notre méthode consiste a calculer les points caractéristiques (les invariants) d'un caractère( 22 points ). maintenent ce que je cherche faire est :
    "en supposant qu'on a une image qui contient plusieurs caractère manuscrits, comment faire pour isoler chaque caractère de l'image séparément, sans éliminer aucun caractère ??"

    j'ai pensez a la détections des contours soit par canny ou bien segmentation en utilisons la fonctin egde ( je travail sur mathlab), mais ca va compliquer le travaille sur surtout que je vais soutenir prochainement le projet!!
    je veux seulement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    Peux tu nous montrer un exemple de ce que tu aimerais détecter pour connaître la qualité du fond, l'espacement entre les lettres etc

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    voici mon ami un exemple d'image :

    [ame=http://www.zshare.net/image/90785251bace6ac6/]Photo 001.jpg - 0.06MB[/ame]
    Images attachées Images attachées  

  4. #4
    Membre régulier Avatar de DocteurV
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 85
    Points : 101
    Points
    101
    Par défaut
    Si j'étais à ta place, je procéderais en 3 étapes :
    1. Binariser l'image en utilisant les fonctions rgb2gray et graythresh
    2. Un peu de morphologie mathématique du style de imdilate ou imclose pour que les branches des lettres soient toutes connexes.
    3. Labelisation des objets connexes en utilisant bwlabeln par exemple


    En guise de résultat tu devrais avoir une image labelisée avec un label différent pour chaque lettre.

    Je ne suis pas au boulot là, donc je n'ai pas matlab pour t'envoyer un script, mais si tu fouilles dans l'aide des fonctions que je t'ai données, tu devrais t'en sortir.

    J'espère que ca t'aidera.
    a+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    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
    im=imread('C:\Documents and Settings\Imagerie\Bureau\Photo 001.jpg');
    imshow(im);
    level=graythresh(im);
     
    imbw=im2bw(im,level);
    imbw=imcomplement(imbw);
    figure;imshow(imbw);
     
    %permet de dilater les traits
    %(Tu peux essayer de changer disk par autre chose et aussi utiliser la
    %fonction imerode('line',      ) voir doc    pour enlever les lignes peut être
    se = strel('disk',5);
    imdil=imdilate(imbw,se);
    figure;imshow(imdil);
     
    %repère les régions (tu peux changer les paramètres à étudier je les ai mis au pif
    L = bwlabel(imdil);
    stats = regionprops(L,'Area','Centroid','MajorAxisLength','MinorAxisLength','Orientation','Perimeter','Image','BoundingBox');
    Petit script simple à voir ce que tu veux exploiter et modifier.

    Mais bon le truc principal ici c'est d'agrandir tes traits car ils sont trop fin et disparaissent avec le passage en noir et blanc (à la limite tu peux essayer de mettre un level à la main voir si ca marche mieux)

    Après jouer sur l'érosion et la dilatation avec certaines formes etc te permettra de faire d'autres choses.

    Toutes les données sont stockées dans le tableau de structure stats où tu peux facilement aller rechercher les données de la manière suivante :

    aire=stats(1).Area;

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Points : 107
    Points
    107
    Par défaut
    Salut,

    Le filtre de Gabor est pas mal utilisé pour ca : have a look (il y a meme le code matlab et un exemple d'ocr sur des caracteres chinois).

    A+

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    merci d'avoir répondu, et merci pour le script mon ami.
    l'image étais juste un exemple pour illustrer je peux modifié la clarté des caractères en utilisant un feutre. Mon objectif est d'identifier un "caractère test" (qu'on va fournit comme entrer au script matlab) dans une image de caractères !

    ce que je cherche est: comment isoler chaque caractère de l'image pour calculer ces points caractéristique, ensuite calculer le nombre des points d'appariements entre chaque caractère de l'image est le caractère test.

    j'en ai déjà le programme qui calcul les points caractéristiques (program_ps.mat) et celui qui calcul le nombres des points d'appariements(find_nearest_neighbours.mat)

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Oulala... inutile de partir sur des méthodes trop complexes.

    Il tout d'abord réussir à isoler chaque ligne qui contient des caractères.
    Pour cela une méthode simple est d'utiliser les histogrammes de projections. Là tu fais une projection horizontale. Les endroits où tu auras 0 sont les séparations entre les lignes.

    Ensuite, tu refais de même avec une projection verticale pour chacune des lignes précédemment segmentée.
    Tu auras alors isolé chaque caractère.

    Si ton image n'est pas binaire, il te faudra alors seuiller préalablement ou faire des projections en niveaux de gris et prendre les maxima pour les séparations et non les minima.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    la méthode décrite au dessus est imposé par l'encadrant.
    any ideas ?

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Mosoka Voir le message
    la méthode décrite au dessus est imposé par l'encadrant.
    any ideas ?
    La méthode de Toto13 reste applicable : il s'agit d'identifier les "vides" entre les caractères. D'abord rechercher des lignes vides afin de découper l'image en bandes horizontales. Puis, dans chaque bande, rechercher des colonnes vides afin de découper la bande en rectangle (qui contient normalement un seul caractère).

    Sinon, il y a aussi la traditionnelle segmentation "watershed".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Oulala... inutile de partir sur des méthodes trop complexes.

    Il tout d'abord réussir à isoler chaque ligne qui contient des caractères.
    Pour cela une méthode simple est d'utiliser les histogrammes de projections. Là tu fais une projection horizontale. Les endroits où tu auras 0 sont les séparations entre les lignes.

    Ensuite, tu refais de même avec une projection verticale pour chacune des lignes précédemment segmentée.
    Tu auras alors isolé chaque caractère.

    Si ton image n'est pas binaire, il te faudra alors seuiller préalablement ou faire des projections en niveaux de gris et prendre les maxima pour les séparations et non les minima.
    Salut,
    Comment peut_on choisir le seuil pour la segmentation
    merci

  12. #12
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par pretyy Voir le message
    Salut,
    Comment peut_on choisir le seuil pour la segmentation
    merci
    Dans le cas de l'image en exemple ci-dessus, tout ce qui n'est pas nul, donc seuil à 1 après avoir inverser l'image.
    Toutefois, il y a toujours un léger dégradé difficilement perceptible. Alors dans des images aussi facile, on prend un seuil médian du type 128. Sinon on augmente le contraste avant de seuiller.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Animation sous MATLAB
    Par Bluntz dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/10/2006, 18h36
  2. Lire un programme écrit sous MATLAB
    Par tipi09 dans le forum Octave
    Réponses: 2
    Dernier message: 06/10/2006, 10h43
  3. Pointeur sous MATLAB
    Par corentin59 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/10/2006, 10h06
  4. Curseur sous MATLAB
    Par philatex dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/08/2006, 09h02
  5. Exécutable sous MATLAB
    Par julien_arche dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/08/2006, 09h54

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