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

Langage Delphi Discussion :

Reconnaissance de formes


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Reconnaissance de formes
    Bonjour,
    J'ai un projet à réaliser cette année qui consiste à programmer une reconnaissance de formes. J'ai déjà réalisé un programme qui me donne les contours. J'aimerais commencer par la reconnaissance de cercle ne connaissant ni le centre ni la taille. Quelqu'un connaitrait-il un algorithme ou pourrait me donner un lien ? Partout où j'ai cherché les algorithmes m'ont paru trop théoriques ou trop vagues.
    Merci d'avance

  2. #2
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut avec ou sans API ?
    Si le directeur de projet te laisse toute liberté et que seul le résultat compte. Je te propose de voir côté API notamment Kinect et Delphi http://itsecuritylab.eu/index.php/20...ct-and-delphi/

    Si tu doit partir de rien. Perso, je sèche !

    Pascal

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Comme cela s'apparente à un problème de reconnaissance de trajectoire voici un Zip qui pourrait te donner des idées.

    Son fonctionnement est basé sur le principe d'une mire de 3x3 points que l'on accroche sur un point d'une trajectoire (épaisse d'un pixel) en cliquant dessus et ensuite elle crapahute toute seule en suivant la trajectoire et ses changements de direction comme accrochée à une crémaillère.

    La miniature ci-après illustre quelques types de trajectoires suivies.
    Il y a cependant quelques cas limites où la mire de 3x3 ne sait plus vers où aller, comme par exemple dans le cas d'angles très très pointus ou de croisements où le tracé de la trajectoire est formé par un paté de pixels dont la taille dépasse celle de la mire. (Mais il suffirait en cas de besoin, d'utiliser une mire de taille plus importante)

    Pour tester on peut cliquer directement sur l'une des trajectoires visibles sur la page d'accueil les trajectoires en jaune passeront au vert.

    A+.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Oups je suis peut-être allé trop vite : A propos de
    J'aimerais commencer par la reconnaissance de cercle
    Si l'objectif de la reconnaissance de formes est de pouvoir conclure ceci est un cercle ou un carré, ou autre chose, il faudrait récupérer le tableau des points de la trajectoire et ajouter du code supplémentaire pour vérifier si l'ensemble des points est contenu à ±Delta dans le tracé de l'équation d'un cercle, d'un carré, etc.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Citation Envoyé par Pascal Fonteneau Voir le message
    Si le directeur de projet te laisse toute liberté et que seul le résultat compte...
    Je crois que c'est un devoir scolaire !
    Utiliser Kinect est un peu lourd, on peut penser que lebonnois cherche à le faire lui même en analysant le Canvas\ScanLine

    Si tu veux les algorithmes ou les formules de math voir la section
    Forum du club des développeurs et IT Pro > Autres langages > Algorithmes > Traitement d'images

    Comme l'algorithme de Hough : Circle detection process
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    L'objectif en réalité n'est pas un simple devoir maison d'algorithmique, mais de pouvoir a partir de cas simples rechercher une généralisation possible, les différentes méthodes, les évolutions etc...

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Lebonnois : L'objectif en réalité n'est pas un simple devoir maison d'algorithmique, mais de pouvoir a partir de cas simples rechercher une généralisation possible, les différentes méthodes, les évolutions etc...
    Ok, mais tout ça ressemble à des étapes ultérieures.

    J'aimerais commencer par la reconnaissance de cercle ne connaissant ni le centre ni la taille.
    Reconnaissance sur quoi ??? Si c'est sur des images scannées ou des photographies la problématique sera différente de celle d'une reconnaissance de cercles monochromes épais d'un seul pixel et tracés sur un fond également monochrome : Faudrait donner un peu plus de précisions, sinon on tourne en rond.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Citation Envoyé par lebonnois Voir le message
    L'objectif en réalité n'est pas un simple devoir maison d'algorithmique, mais de pouvoir a partir de cas simples rechercher une généralisation possible, les différentes méthodes, les évolutions etc...
    Personnellement, je n'ai rien compris à cette phrase devant nous éclaircir l'objectif !

    Qu'est-ce qu'un "simple devoir maison d'algorithmique" ?

    Si tu veux de la généralisation, c'est donc déjà existant "La transformée de Hough" qui est une technique parmi d'autres

    Partir de cas simples pour généraliser, n'est pas une bonne approche, tu n'auras un final qu'une collection de cas spécifique mais pas un règle générale !
    Des mathématiciens et théoriciens se sont penchés sur le projet et un grand nombre de développeurs ont déjà pondu des implémentations plus ou moins complète !

    En Delphi, tu ne feras que fournir une implémentation spécifique au métier cible par le logiciel, en général, le programme sait ce qu'il cherche et utilise une ou plusieurs méthodes pour affiner le résultat

    Tu veux faire un projet qui recense toutes les approches possibles de reconnaissance de forme ?
    Ce qui serait typique d'un projet scolaire à titre démonstratif

    Dans un projet professionnel, tu as un objectif précis associé au métier cible du logiciel, comme de
    - l'OCR
    - Vidéo-surveillance pour de la reconnaissance faciale\objet abandonné
    - Vidéo-surveillance pour de la gestion des flux (encombrement routier par exemple)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Qu'est-ce qu'un "simple devoir maison d'algorithmique" ?
    Un devoir d'algorithmique : "pour lundi vous me programerez ceci cela..."

    Citation Envoyé par ShaiLeTroll Voir le message
    Tu veux faire un projet qui recense toutes les approches possibles de reconnaissance de forme ?
    Ce qui serait typique d'un projet scolaire à titre démonstratif
    Exactement ! C'est un projet à titre démonstratif.
    Reproduire l'une ou l'autre méthode ne m’intéresse pas. Je dois durer dix minutes : introduire (enjeux du futur...robotique...sécurité routière...voitures intelligentes...RECONNAISSANCES D'OBJETS ) vaguement passer sur le moyen de "simplifier l'image" (noir et blanc...contours), puis présenter (avec programme visuel à l'appui) ce qui existe, ce qui se fait mieux, ce qui ressemble à la nature, ce qui est intelligent...et pour finir les applications. C'est du marketing, intéresser les profs pour gagner sa note.
    Je cherche un ensemble que je puisse présenter de manière logique, pas jeter quelques méthodes qui ont rien à voir les unes aux autres (pas forcément complexe de niveaux professionnel) plutôt impressionnant et bien fait, il faut que sa reste propre et que je puisse expliquer.
    Merci à vos réponses.

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    C'est une mini-présentation en préparation de la soutenance en fin d'année, cela ne concerne aucunement le développement Delphi !

    Ici, on ne fera que te fournir du code, c'est à toi de chercher la démarche d'étude pour élaborer ta présentation dont tu as déjà le sommaire !

    Je n'ai jamais eu besoin du forum (que je ne connaissais même pas) lors de mes études et encore moins pour préparer mes deux soutenances d'une heure en fin d'études accompagnés chacunes de leur rapport de 150 pages !
    Si tu veux le "savoir faire", il faut chercher par soi même et pas attendre la réponse des autres !

    Tu oses parler de marketing sur un forum de développement !
    C'est à cause du marketing que l'on utilise à 90% l'OS le moins performant !
    C'est à cause du marketing que l'on utilise à 60% le SmartPhone le moins performant !
    ...


    Bon Courage !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Si je suis ici c'est parce qu'on m'a dit qu'il pouvait y avoir des pros qui lisent ce que j'écris. Ce que je demande c'est pas de me balancer une méthode de présentation ou autre. J'imagine que certains ont déja programmé ce genre de truc. Ce que je leur demande c'est ce que eux utilisent, trouvent plus facile, ou plus rapide ou mieux fait en terme d'algorithmes. On ma reproché mon manque de précision à propos de la nature de ce que je voulais faire. Je n'ai parlé qu'a titre indicatif. Pour le reste je ne suis pas là pour disserter, qui veut m'aider merci, le reste ne m'interesse pas...
    J'ai posté ici parce que je programme en delphi.

  12. #12
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Citation Envoyé par lebonnois Voir le message
    Si je suis ici c'est parce qu'on m'a dit qu'il pouvait y avoir des pros qui lisent ce que j'écris.
    Et il y en a mais chacun dans leur domaine de compétence. Developpez.net est vaste

    Citation Envoyé par lebonnois Voir le message
    Ce que je leur demande c'est ce que eux utilisent, trouvent plus facile, ou plus rapide ou mieux fait en terme d'algorithmes.
    ...et là justement tu n'es pas dans le bon forum (à moins que quelqu'un ait déjà traité spécifiquement ce sujet) !
    T'es-tu rendu sur le forum proposé par Shai dans une précédente intervention ? Si tu y trouves ton bonheur mais que tu as des problèmes à l'implémenter, alors nous serons susceptibles de t'aider.

    Citation Envoyé par lebonnois Voir le message
    J'ai posté ici parce que je programme en delphi.
    L'excuse habituelle mais tu n'es pas encore dans une problématique Delphi, uniquement mathématique

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Ok j'ai un problème lié à Delphi...
    J'ai programmé un truc est il m'affiche une erreur: "...EAccessViolation"
    Ma partie de code de detection :
    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
    53
    54
     
    Begin
    For j:=1 to Image1.Height do
      Begin
        For i:=1 to Image1.Width do
        Begin
          If Image1.Canvas.Pixels[i,j]=RGB(0,0,0) then
          Begin
            For y:=1 to Image1.Height do
            Begin
              For x:=1 to Image1.Width do
              Begin
                If Image1.Canvas.Pixels[x,y]=RGB(0,0,0) then
                Begin
                  r:=sqrt(sqr(x-i)+sqr(y-j));
                  rayons[k]:=r;
                  k:=k+1;
                End;
              End;
            End;
          End;
        End;
      End;
    For k:=1 to 360000 do
      Begin
      j:=1;
      For i:=1 to 360000 do
        Begin
        If (rayons[i]<rayons[k]-5) and (rayons[i]>rayons[k]+5) then j:=j+1;
        If j>100 then rayonsE[k]:=rayons[k];
        End;
      End;
    For j:=1 to Image1.Height do
      Begin
        For i:=1 to Image1.Width do
        Begin
          If Image1.Canvas.Pixels[i,j]=RGB(0,0,0) then
          Begin
            For y:=1 to Image1.Height do
            Begin
              For x:=1 to Image1.Width do
              Begin
                If Image1.Canvas.Pixels[x,y]=RGB(0,0,0) then
                Begin
                  r:=sqrt(sqr(x-i)+sqr(y-j));
                  For k:=1 to 360000 do
                  If (r>rayonsE[k]-5) and (r<rayonsE[k]+5) and (r>0) then Image1.Canvas.Pixels[round((x+i)/2),round((y+j)/2)]:=RGB(0,0,0);
                End;
              End;
            End;
          End;
        End;
      End;
    End;

  14. #14
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    L'indice du premier pixel est [0,0] et non [1,1]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For j := 0 to Image1.Height -1 do
      Begin
        For i := 0 to Image1.Width -1 do

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Merci . Il me semble que sur un ancien test tout ceci fonctionnait.
    Au niveau du contenu est ce que tout ceci peut être fonctionnel ?

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, 17h41
  2. Reconnaissance de "forme" sur une fonction
    Par Nemerle dans le forum Traitement du signal
    Réponses: 13
    Dernier message: 20/10/2006, 12h23
  3. reconnaissance de formes dans un Fichier Avi
    Par renovator dans le forum C++Builder
    Réponses: 1
    Dernier message: 05/07/2006, 10h40
  4. [MasterPage] Reconnaissance de Form
    Par Kylen dans le forum ASP.NET
    Réponses: 8
    Dernier message: 04/07/2006, 16h33
  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, 11h34

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