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

Simulink Discussion :

Reconnaissance de forme


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut Reconnaissance de forme
    Bonjour a tous,

    voila, je debute sur matlab en traitement des images, et je souhaite tout d'abord me familiariser avec en faisant des petites manipulations.
    Je souhaite avant tout balayer, avec une image de taille 31 par exemple, une autre image de taille beaucoup plus grande afin de faire une correlation.
    Sur ma grande image, j'ai des points blanc (je me suis arrangé pour faire des images binaire), et avec mon autre image crée, je souhaite savoir le nombre de points. Voici mon programme:
    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
    47
    48
    49
    50
    51
    52
    clear all
    close all
    clc
     
    %Déclaration des variables
    taille=31;
    val=(taille-1)/2;
    nbadventis=0; %nb adventices initialisé a zero
     
    %Matrice circulaire
    SE=strel('disk',16,0);
    A=zeros(taille,taille);
    A(val+1,val+1)=1;
    imc=imdilate(A,SE);
    taille_imc=size(imc)
    Y=taille_imc(2);
    X=taille_imc(1);
    figure
    subplot(1,2,1)
    imshow(A)
    subplot(1,2,2)
    imshow(imc)
     
    %%Image a traiter, variable
    img=imread('mahala_filtre.bmp');
    taille_img=size(img)
    y=taille_img(2);
    x=taille_img(1);
    img1=img(:,:,1);
     
     
    %%Balayage et corrélation
    res1=zeros(size(x),size(y));% matrice de correlation 
    init=zeros(size(x),size(y));% matrice d'initialisation 
    for i=1:size(x)-taille
        for j=1:size(Y):size(y)-taille
            res1(i,j)=corr2(imc,img1); 
            if res1>=0,60
                nbadventis=nbadventis+1
                init(i,j)=init(i,j)+res(i,j);
                i=i+size(X)
            else i=i+1;
     
            end
        end
    end
     
    figure
    subplot(1,2,1)
    imshow(img1)
    subplot(1,2,2)
    imshow(init)
    Voila, le probléme viens, je pense de mon balayage, et je me retrouve coincé.
    Merci d'avance

    PS: je joins la photo si vous voulez compiler et regarder mes resultats
    Fichiers attachés Fichiers attachés

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

    Déjà je repère un problème majeur: i est la variable sur laquelle tu fais ta boucle for, or tu la changes à l'intérieur: ceci n'est pas possible, l'incrémentation se fait automatiquement.
    Petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i = 1:10
       disp(['avant: ' num2str(i)])
       i= 1;
       disp(['après: ' num2str(i)])
    end
    Si tu veux changer i à l'intérieur, pense à utiliser plutôt une boucle while

    PS: Pense à l'indentation de ton code qui le rend plus visible: Ctrl+A , Ctrl+I

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ensuite,

    taille_imc=size(imc)
    Y=taille_imc(2);
    X=taille_imc(1);
    et
    taille_img=size(img)
    y=taille_img(2);
    x=taille_img(1);
    Peuvent être remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [X Y] = size(imc);
    [x y pasbesoin]=size(img);
    Et par la suite, x, y, X, Y étant des valeurs, pourquoi mettre size(x), size(y)?

    res1=zeros(size(x),size(y));% matrice de correlation
    init=zeros(size(x),size(y));% matrice d'initialisation
    Remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res1=zeros(x,y);% matrice de correlation 
    init=zeros(x,y);% matrice d'initialisation

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut
    Merci pour vos réponses. Alors, pour ma boucle, je souhaite avant tout de copier le point dans ma nouvelle matrice init, et le compter dans la variable nbadventis et de l'afficher. Cependant je ne vois pas comment faire, car c'est la façon de manipuler la matrice circulaire qui me pose un probléme, au niveau du balayage.

Discussions similaires

  1. Reconnaissance de forme par réseau neuronal
    Par Rémiz dans le forum Méthodes prédictives
    Réponses: 34
    Dernier message: 28/05/2007, 16h41
  2. Reconnaissance de "forme" sur une fonction
    Par Nemerle dans le forum Traitement du signal
    Réponses: 13
    Dernier message: 20/10/2006, 11h23
  3. reconnaissance de formes dans un Fichier Avi
    Par renovator dans le forum C++Builder
    Réponses: 1
    Dernier message: 05/07/2006, 09h40
  4. [MasterPage] Reconnaissance de Form
    Par Kylen dans le forum ASP.NET
    Réponses: 8
    Dernier message: 04/07/2006, 15h33
  5. Algos pour reconnaissance de formes
    Par Laurent Gomila dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 09/12/2005, 10h34

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