| |
| Auteur |
Message |
|
|
SonOfSparda
|
Publié: Sam 24 Oct 2009, 23:19 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Je sais que ce topic commence à vous sortir par les yeux mais a y reflechir il m'est arrivé la solution qui je pense sera la bonne. On divise la vue en un gros quadrillage du style 30 cases. On fait l'écart type de chaque case. une case a gros écart type devient une zone chaude elle est peinte en rouge, en gros elle envoie un signal au cerveau "la il y a quelque chose" si il n'y a rien alors c'est une zone froide sans intérêt. Delà (et ici j'ai besoin de la volonté) notre cogiteur s'intéresse pour une raison ou une autre a une zone chaude, peut être celle a plus gros écart type ou par simple balayage au début puisqu'après on s'intéressera seulement a l'apparition des nouvelles zones chaudes. Bon enfin on se focalise sur la zone chaude, on avance par balayage jusqu'à rencontrer un changement, la on s'y place dessus et cette fois on va suivre le trait, avec un algo dont je n'ai pas encore l'idée claire, on va dessiner comme ça le contour et le mettre en mémoire, du fait de ce "suivi" on va pouvoir lisser et éliminer les lignes trop petites. On prend ensuite la ou les cases dans lesquelles se trouvaient l'objet, et on refait leur écart type en enlevant les points qui constituaient le contour de notre objet. Si la zone est toujours chaude c'est qu'il y a un autre objet sinon nada. A ceci il faut ajouter une méthode de vérification rapide des cases pour détecter si il y a changement ou pas, peut être par la moyenne. Et envoyer de nouveaux signaux. Deux schémas pour expliquer plus clairement: Pièce jointe: schema copy.jpg [79.42 Kio]
Téléchargé 91 fois
Pièce jointe: schema copy1.jpg [80.32 Kio]
Téléchargé 90 fois
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
Calibanproject
|
Publié: Dim 25 Oct 2009, 11:45 |
|
|
Roboticien initiéInscrit le: Jeu 23 Oct 2008, 14:27Messages: 1024Localisation: Saint-Ouen |
je te conseil de t'interresser à l'algo de la fonction floodfil (le pot de peinture dans PaintBrush) Maintenant, deplace ton curseur sur ton image pixel par pixel. Si tu rencontre un pixel "chaud", alors tu execute un floodfil (en transformant en couler froide afin que le traitement ne se relance pas 150 fois sur la même forme)et tu récupère les coordonnées max de ta zone chaude (largeur et hauteur de l'objet) tu peux déjà isoler ainsi l'objet car il est la forme chaude sur ton image isolée  Aprés, si tu fait une recherche de contour comme tu a déjà fait et miam miam  Soit tu peux l'isoler a partir des ton image "chaude" auquel cas tu travaillera en "symbolique" ou bien depuis ton image original auquel cas tu bossera en "reel".
_________________

Languages : Delphi, Pascal, C#, RPL, SQL, PL-SQL, Français, Anglais |
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Dim 25 Oct 2009, 12:01 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Bien vu l'aveugle! merci je vais m'y interesser
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
Pfeu
|
Publié: Ven 30 Oct 2009, 15:43 |
|
|
Bricoleur débutantInscrit le: Jeu 6 Nov 2008, 15:20Messages: 80Localisation: Antony, France |
Salut SonOfSparda, Voila une conf (entrée libre) a Paris fin novembre qui peut t'interesser, et interesser tous les gens qui font de la reconnaissance d'objets via l'etude de contour : ******************* L'Institut des Systèmes Intelligents et de Robotique (UPMC, CNRS UMR 7222) reçoit le jeudi 26 novembre 2009 de 14h à 16h, dans le cadre de ses séminaires, M. James Elder, Professeur à l'Université de York (Toronto, Canada) qui fera un exposé intitulé : Segmenting Salient Shapes (cf. résumé ci-dessous). Les séminaires ISIR sont ouverts à tout public intéressé. La liste des séminaires ISIR programmés est disponible à : http://www.isir.fr (rubrique séminaires). --- Intervenant : Prof. James Elder, , http://elderlab.yorku.ca/ Université de York, Toronto, Canada Titre : Segmenting Salient Shapes Date et lieu : Jeudi 26 novembre 2009 de 14h à 16h, sur le Campus Jussieu, Pyramide ISIR, entre les tours 55 et 56, 1er étage, salle de réunion ISIR (H20) Abstract: I will discuss the problem of detecting and segmenting salient objects in natural images. Humans are very good at this, and very fast. Most thoroughly studied is the task of rapid animal detection, however the mechanisms underlying rapid detection remain poorly understood. Here I will report recent psychophysical results suggesting that the fastest mechanisms underlying animal detection in natural scenes use contour shape as a principal discriminative cue, while somewhat slower mechanisms integrate these rapidly computed shape cues with image texture cues. Detection continues to improve with increased stimulus exposure, suggesting progressive refinement of neural representations. These results pose a challenge for computational models, as the performance of current contour grouping algorithms falls short of human perception. Here I will present results of a Bayesian coarse-to-fine contour grouping algorithm in which approximate representations are computed rapidly and then refined over time. The algorithm outperforms single-scale algorithms and suggests one possible role for massive feedback projections from higher cortical areas in the object pathway to earlier visual areas. ****************** a+
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Ven 30 Oct 2009, 18:22 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
Miguil
|
Publié: Lun 9 Nov 2009, 14:24 |
|
|
Roboticien confirméInscrit le: Jeu 23 Oct 2008, 09:10Messages: 386Localisation: Paris (75018) |
C'est clair !!! C'est dommage que ce soit aux heures de travail sinon j'y serai bien allé... snif ! C'est pas pratique quand même ! A chaque fois qu'il y a un truc intéressant c'est toujours en semaine... J'ai transféré cette annonce également dans la rubrique "événements"...
_________________ « Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. » Extrait de « L'univers de la science », Isaac Asimov |
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Mar 9 Fév 2010, 10:30 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Ca fait longtemps que je vous ai pas tenu au courrant, enfait j'ai été énormément déçu par les résultats de mes algos, d'autant plus que c'est la condition sine qua non pour me lancer dans l'IA.
J'ai pensé à ce qu'a dit léon a propos de la qualité de la caméra, j'ai alors opté pour une 16mm, je lui ai fait regarder des films. Bah le résultat n'est pas mieux.
Je pensais que ça venait de mon algo, je me suis alors résigné a utiliser une fonction de détection déjà dans la lib, et... le résultat n'est pas exploitable non plus, et il faut que les paramètres soient très bien reglés, en gros il faut un oeil humain derrière... Et ca ne détecte pas certains changements pourtant flagrants, mais j'ai lu sur wiki je crois que la plupart des algos de traitement fonctionnent en N&B ca viens peut être de là.
Il me faut un changement total d'approche j'irais nulle part en forcant dans ce sens.
Je suis un peu retourné vers les univers virtuels mais il m'est venu une idée hier.
Pourquoi pas un système stupide? Je reprend un peu mon idée de zones rouges et vertes. L'ia se focalise un peu au pif sur des zones de l'image et on lui renvoie juste "c'est jaune" "c'est violet". Si on lui renvoie que c'est violet apres lui avoir dit que c'était jaune, c'est qu'il y a une arrête entre les deux.
De la je fais une recherche dichotomique, qui me donne a chaque fois un point plus près de l'arrete.
Je ne m'y connais pas en thread, mais je suis sur qu'on peut meme donner un ordre de priorité a la vision, limiter l'approfondissement de la recherche dichotomique a deux ou trois niveaux par exemple, ca nous donnerait des formes floues.
L'idée c'est que l'IA doit réellement se constituer sa propre image de son coté.
Une fois que j'ai mes points j'en reviens a ce que disais Phil(toujours une longueur d'avance celui là) je décompose en série de courbes et de droites que je pourrais comparer. Je pense être capable d'en tirer des droites avec mon niveau en math, mais pour les courbes? Est-ce qu'il y a une sorte d'ajustement affine mais pour les arcs de cercle?
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
electron
|
Publié: Mar 9 Fév 2010, 15:46 |
|
|
| Bricoleur débutantInscrit le: Lun 18 Jan 2010, 22:08Messages: 30 |
En fait, en indiquant "arrette" à chaque changement de couleur de pixel, tu reconstruit l'image simplement alors pourquoi ne pas garder la valeur des pixels ? Personnellement, je m'intéresse à la reconnaissance de visages et de formes, je réfléchis pour le moment je n'ai pas encore une théorie bien définie, mais j'en parlerais si j'arrive à quelque chose. Citer: Je pense être capable d'en tirer des droites avec mon niveau en math, mais pour les courbes? Et si tu disais que "tout ce qui n'est pas "droite" est "courbe" ça arrangerait ta recherche^^
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Mer 10 Fév 2010, 15:44 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Citer: En fait, en indiquant "arrette" à chaque changement de couleur de pixel, tu reconstruit l'image simplement alors pourquoi ne pas garder la valeur des pixels ? Non ca c'est ce que je faisais au début et t'as pu voir le résultat... là ma méthode j'analyserais jamais toute l'image. Prenons l'image d'un rond vert sur un fond blanc. Je prend deux points, un dans le rond , un à sa gauche. Ils sont pas de la même couleur donc deux objets... Je prend le pixel entre ces deux points et je dis que c'est un point de l'arrête même si c'est faux, l'image que voit le robot c'est alors une image blanche a gauche de notre point d'arrête puis verte après celui ci. C'est une image très approximative. alors je prend un deuxième point au pif, en haut du rond et je refais pareil, j'ai maintenant une approximation de la hauteur du rond tu commences a voir? Si je veux affiner la précision, il me suffit de recommencer l'opération en prenant le point qui se trouve entre le premier point qu'on a crée et le point du rond, ca fera reculer ou avancer la zone verte. Tu précise la forme en prenant d'autre points au pif, et tu précise sa taille en testant les points entre les points. C'est un peu dur a expliquer mais si tu vois le principe de la recherche dichotomique c'est ça. C'est que de la théorie, je sais pas si ça marche. Mon idée globale c'est de même plus penser à essayer d'avoir les vrais contours, on y arrivera jamais, c'est long, moche et le résultat est inexploitable a mon avis. Citer: Personnellement, je m'intéresse à la reconnaissance de visages et de formes, je réfléchis pour le moment je n'ai pas encore une théorie bien définie, mais j'en parlerais si j'arrive à quelque chose. Ce serait super qu'on échange nos idées parce que c'est vraiment dur et comme je le disais j'arrive à court de points de vue. Ya pas énormément de monde qui se lance là dedans. Ce que je sais c'est que si le but c'est seulement de faire trouver un truc au programme, style un visage, ya l'haar training qui a l'air pas mal, tu lui montre un paquet d'images de visages que tu lui indique positives, et un paquet d'images sans visages que tu lui dit négatives. L'haar training trouve les ressemblances et différences et va te créer un fichier qui définira ce qui pour lui est un visage et il pourra te dire sur quelle image y'en a un. L'inconvénient c'est qu'il lui fait beaucouuuup d'images et que ça prend tout le cpu et dix piges.
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
electron
|
Publié: Mer 10 Fév 2010, 16:57 |
|
|
| Bricoleur débutantInscrit le: Lun 18 Jan 2010, 22:08Messages: 30 |
Tu as pas réagi à ça : Citer: Et si tu disais que "tout ce qui n'est pas "droite" est "courbe" ça arrangerait ta recherche^^ Puisque tu cherche à reconnaitre les formes vues par une caméra, ce que tu devrait faire ce n'est pas une analyse de pixels lignes par lignes. 1) Ton robot possède en mémoire diverses images (un verre, une fourchette, etc...) et chaque image est d'une certaine taille en mémoire, par exemple 64 x 64 pixels. 2) Tu copie à partir du centre de la vue caméra tous les pixels, ce qui te donne une taille d'image captée de 64 x 64, donc la même taille que les images en mémoire. 3) Tu compare l'image captée avec la liste d'images que le robot possède, il faut utiliser pour ça une comparaison de pixels en bloc, c'est une procédure que j'ai vu quelque part et en assembleur (pour la vitesse de comparaison des pixels). 4) tu permet une certaine tolérance (ajustable) dans la comparaison et dés que le test trouve que l'image captée est aproximativement la même qu'une image qu'il a en mémoire il sera capable de te dire ce que voit le robot. Mon idée n'est possible que si la caméra est arrêtée dans une direction.Par contre pour que le robot reconnaisse l'image d'un objet pendant que la caméra est en mouvement il faut analyser l'image captée à chaque variation de l'image captée (de la vue quoi) et c'est pas évident,un truc de ouf..
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Mer 10 Fév 2010, 17:13 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Houla desolé, merci de me le rappeler, en plus c'est à ça que je voulais réagir à la base, ma mémoire fait des siennes  . Moi au début je pensais superposer la forme en mémoire a la forme filmée. La première en jaune l'autre en bleue, on compte le nombre de pixels verts et si ils sont pas loin du nombre de pixels de l'image d'origine c'est que les objets sont les mêmes, enfin un truc dans le style. Le souci c'est que si tu tournes l'objet bah ca colle pas dutout, et si il faut faire toutes les rotations possibles c'est un gouffre à CPU. Et ce qui me plait bien avec la description en courbes et en segments c'est que tu peux trouver des caractéristiques communes a des formes différentes, style "ces deux objets ont des arrondis", l'ia pourrait reconnaitre la similitude, et mémoriser le concept "arrondi". Et pour ton idée de "si c'est pas des droites c'est des courbes" ouep mais comment les enregistrer sous forme d'équation? Et comment les comparer apres? Mais ton idée est bien hein et il ya des chances que j'utilise un truc comme ça en premier pour la comparaison. Je me dit de plus en plus que les yeux devront être un organe indépendant, avec un pc spécialement pour ça.
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
electron
|
Publié: Mer 10 Fév 2010, 23:56 |
|
|
| Bricoleur débutantInscrit le: Lun 18 Jan 2010, 22:08Messages: 30 |
Là tu me bloque ^^ Il faut trouver une méthode de comparaison entre deux images qui ne tienne pas compte de la position horizontale, verticale, ou en biais des images, ça serait donc une comparaison de moyenne peut-être car je connais pas les moyennes en math^^ Chais pas je vais réfléchir à çe problème jeudi et voir s'il y a pas une autre méthode. Pour ce qui est de ta méthode des courbes tu avais écris que tu saurais reconnaitre une droite (arette) donc quand c'est une droite tu l'enregistre comme un état logique 1 et quand c'est pas une droite comme un état logique 0 (correspond à "courbe"). Edit : J'ai trouvé un code sur le net mais faudrait demander à son auteur comment faire si une image n'est pas verticale^^ http://www.vbfrance.com/codes/COMPARER-IMAGES_5917.aspx
|
|
Haut
|
|
|
Calibanproject
|
Publié: Jeu 11 Fév 2010, 11:46 |
|
|
Roboticien initiéInscrit le: Jeu 23 Oct 2008, 14:27Messages: 1024Localisation: Saint-Ouen |
Bon alors j'y vais de mes petites explications  Je t'explique donc ici comment j'ai procédé pour Caliban. Pour Cybrina, je laisse une plus grande part à OpenCv même si j'implémente, en complément cette analyse  Déjà, il te faut une image. ce peut être un flux de webcam ou une photo, qu'importe. ici, on va prendre une photos de certaines personnes de ma familles lors de mon mariage : Pièce jointe: 01.JPG [17.87 Kio]
Téléchargé 26 fois
Ensuite, il te faut appliquer un filtre de déviation standard. pour cela, tu trouveras un trés bel exemple et de belle DLL dans ce projet de démo http://sourceforge.net/projects/filters/files/Ainsi, en appliquant la déviation standard (tu dois adapter le paramétrage à la luminosité de l'image -> cela peut se faire de façon empirique sur une cam  ), tu obtient : Pièce jointe: 
02.JPG [ 24.31 Kio | Consulté 8 fois ]
Et c'est là que les choses amusantes commencent  Tu as donc une image noir et blanc "brute". Pour toutes les taches qui suivent, je te conseil d'utiliser une fonction type "Scanline" (google est ton ami) car cela va des centaines de fois plus vite que l'adressage de pixel et de charger tes résultats dans des tableaux dynamique. les images qui suivent sont donc de simples "transcriptions" visuelles des tableaux dynamique numériques-> une couleur pouvant être un nombre). La base de tout (concernant Calib), est la fonctuion "Floodfill" ou plutot un dérivé appliqué aux tableaux dynamique. cette fonction est bien connue sous paintbrush car c'est le pot de peinture. Elle remplace une couleur connexe par une autre couleur. Attaquons le premier pixel de l'image et effectuons un floodfill rouge : nous obtenons : Pièce jointe: 
03.JPG [ 26.53 Kio | Consulté 4 fois ]
Le procéssus qui est décrit par la suite doit s'appliquer à cette première opération (car cela pourrait remplir seulement un objet et non tout le fond). mais pour que ce soit parlant, on va dérouler le process sur un "truc" significatif. Bref, là, y'a "traitement" puis on continue. Inutile d'effectuer le floodfill sur les pixel rouges (comme ça on gagne du temps de traitement. L'étape suivante sera donc : Pièce jointe: 
04.JPG [ 26.3 Kio | Consulté 5 fois ]
La aussi on doit appliquer le traitement mais, pour que l'explication soit parlante, je préfére attendre le step suivant qui est : Pièce jointe: 
05.JPG [ 25.05 Kio | Consulté 4 fois ]
En effet, la fonction Floodfill (enfin, l'algo je veux dire), peut être facilement détourné pour récupérer les coordonnées max en X et Y de la zonne qu'elle a remplie. Autrement dit, on est capable de "dessiner" un rectangle autour de la zone remplie. Maintenant, isolons cette zone dans une nouvelle image (a partir de l'image noir et blanc). nous avons : Pièce jointe: 06.JPG [8.09 Kio]
Téléchargé 23 fois
Maintenant traitons cette image comme la principale en effectuant un floodfill a partir du pixel original qui avait déclanché le floodfill (en rouge sur l'image précédente). Nous obtenons : Pièce jointe: 07.JPG [9.4 Kio]
Téléchargé 22 fois
Une fois ceci fait, tous les pixels qui ne sont pas rouges doivent être mis dans une couleur unique : Pièce jointe: 08.JPG [10.04 Kio]
Téléchargé 21 fois
Désormais, il faut juste chercher la plus grande diagonale de la zone rouge : Pièce jointe: 
09.JPG [ 11.73 Kio | Consulté 5 fois ]
Puis appliquer une rotation à l'image pour que cette plus grande diagonale soit bien droite : Pièce jointe: 
10_1.JPG [ 13.4 Kio | Consulté 5 fois ]
A ce stade, il est utile d'effectuer une resize de l'image en partant du principe que, par exemple, la plus grande latgeur doit être de 64 pixels. Ainsi ici, notre "image" serait redimensionnée pour faire 64 pixel de haut et, disons, 32 de large. Nous calculons le ratio Hauteur/largeur qui est de 0.5 et le gardons sous le coude pour plus tard. Une fois ceci fait. il faut appliquer une rotation de 90 degrés 3 fois de suite pour générer les images : Pièce jointe: 
10_2.JPG [ 12.32 Kio | Consulté 5 fois ]
Pièce jointe: 
10_3.JPG [ 12.49 Kio | Consulté 5 fois ]
Pièce jointe: 
10_4.JPG [ 12.39 Kio | Consulté 5 fois ]
Nous avons donc un groupe de 4 images pouvant être comaprées avecx un "modèle". mais plutot que de comparer avec tous, nous ne le faisons qu'avec ceux qui possèdent le même ratio (0.5 dans notre exemple mais ça pourait trés bien être 0.7456). je te conseil de mettre une marge de tolérance de 5% au niveau du ratio... tiens, ca tombe bien, dans ma base, j'ai un modèle pile poil du même ratio (mais s'il y en a plusieurs, il faut tous les tester, le "bon" étant celui qui aura le taux de correspondance le plus élevé) : Pièce jointe: modele.JPG [11.34 Kio]
Téléchargé 18 fois
Maintenant, nous prenons nos 4 images générées et les superposons successivement au modèle. Et pour l'une d'entre elle, nous obtenons : Pièce jointe: 
11.JPG [ 14.92 Kio | Consulté 4 fois ]
Or dans cette image, les point violet ET Vert sont les points communs. Jaune et bleu sont les différences. Alors oui, le vert est aussi important que le violet car il caractérise l'absence de marquer ce qui, en soit, est un marqueur  Aprés, tu fait ton petit rapport de proportionalité pour voir si ton IA ou programme considéré qu'il y a correspondance Si tel est le cas, le zone violette doivent venir renforcer les zones bleu du modèle et les verte les zones vertes. car en effet, derrière le modèle "vert-bleu", en fait il sagit de "poids" issus de l'expérience, L'interprétation verte ou bleu dépendant des valeur en dessus ou en dessous de la valeur médiane des poids du modèle Une fois ceci fait, tu garde l'info de la présence du visage de "Michel" dans un coin de la mémoire puis tu revient à l'image noir et blanc et passe au floodfill suivant et ainsi de suite jusqu'à ce que l'image noir et blanche soit intégrallement rouge. Contrairement aux apparence, ce traitement peut s'effectuer trés rapidement si tu utilise des tableau dynamique et scanline pour les générer. car en effet, chaque floodfill sur l'image noir et blache interdit la post analyse de pixels déjà analysé précédement. in fino, tu n'a que quelques "passes" du traitement sur l'image et qui permet d'isoler les objets significatifs. Voilà, j'espère que je suis compréhsensible mais je me tiens a ta disposition pour toute question  Edit, je ne sais pas pourquoi certaines photos s'affichent et d'autres doivent être télécharger mais l'essentiel est qu'elle sont toutes consultables, non ?
_________________

Languages : Delphi, Pascal, C#, RPL, SQL, PL-SQL, Français, Anglais |
|
|
Haut
|
|
|
electron
|
Publié: Jeu 11 Fév 2010, 19:32 |
|
|
| Bricoleur débutantInscrit le: Lun 18 Jan 2010, 22:08Messages: 30 |
Merci Caliban pour ta description bien détaillée et ton analyse professionnelle  C'est génial d'avoir ta version  Dans mon idée j'avais pensé à comparer 8 versions d'une même image captée (correspondant aux 8 directions d'inclinaison d'un objet) à la liste d'images en mémoire (base de données interne), mais j'avais changé d'avis et ne l'ai pas présenté dans ce topic car cette méthode fixe à 8 inclinaisons seulement et donc si un objet se trouve dans une position intermédiaire il ne sera pas reconnu. Bon c'est déjà ça c'est sûr de pouvoir reconnaître 8 fois plus facilement un objet, mais je cherche une méthode plus complète et si possible avec le moins de passes possibles, mais je me doute que c'est peut-être utopique, cependant j'y crois encore pour le moment, tant qu'il y a de l'espoir^^ Une question qu'il serait possible de se poser, c'est comment notre cerveau reconnaît-il qu'une zone de l'image est un visage ? car c'est instantané, c'est incroyable. Apparemment, ce qu'il fait c'est d'abord de détecter une zone d'une certaine couleur puis de l'analyser pour savoir s'il sagit d'un visage, c'est à dire la zone est-elle d'une taille suffisante, comporte t'elle à l'intérieur d'elle-même des zones autres que la couleurs de la zone principale, ces zones analysées une à une correspondent-elles à des yeux, à un nez, etc, et ceci en acceptant une marge bien sûr.
|
|
Haut
|
|
|
SonOfSparda
|
Publié: Mer 24 Fév 2010, 16:11 |
|
|
Roboticien confirméInscrit le: Sam 25 Oct 2008, 23:01Messages: 567 |
Salut! Désolé je mets du temps en ce moment, en dev je m'éparpille un peu dans tout les sens. Merci calib' et ça fonctionne bien? Je dis ça parce que les details genre la bouche, le nez matchent pas ça me fais un peu peur mais finalement je me casse peut être la tête pour rien, le système de comparaison compte plus que celui de détection de contours. Sinon Electron j'ai eu un sursaut de génie... pour une reconnaissance qui tiens pas compte de la rotation c'est simple... Les coordonnées polaires ! Comment j'y ai pas pensé plus tôt je m'en sers tout le temps en jeu vidéo, tu trouve le centre de chaque forme, le point de contour le plus éloigné de celui ci. Tu les aligne sur ce rayon et hop dans le sens des aiguilles d'une montre ou quoi tu lances la comparaison :p Et comme ça pareil tu peux même détecter des similitudes sur une partie du contour de deux objets différents. Citer: Une question qu'il serait possible de se poser, c'est comment notre cerveau reconnaît-il qu'une zone de l'image est un visage ? car c'est instantané, c'est incroyable. Faut aussi voir que si on faisais tourner un algo stupide style point par point sur une machine aussi puissante que le cerveau ça fonctionnerait quand même. La vision doit être un des seuls domaines qui reste encore hors de portée des ordinateurs actuels.
_________________ Projet en cours: Upgrade la classe de vision Statut: 10%
programmeur langages: C, C#, C++,asp, php,SQL,javascript,CSS. |
|
|
Haut
|
|
|
Calibanproject
|
Publié: Mer 24 Fév 2010, 16:18 |
|
|
Roboticien initiéInscrit le: Jeu 23 Oct 2008, 14:27Messages: 1024Localisation: Saint-Ouen |
Ton modèle doit être évolutif dans le temps et seul les point pertinent de l'individus finissent par subsister
_________________

Languages : Delphi, Pascal, C#, RPL, SQL, PL-SQL, Français, Anglais |
|
|
Haut
|
|
|
electron
|
Publié: Jeu 25 Fév 2010, 22:57 |
|
|
| Bricoleur débutantInscrit le: Lun 18 Jan 2010, 22:08Messages: 30 |
Citer: Les coordonnées polaires ! OUi Son  Cette méthode est géniale, je viens juste de lire y a (deux jours) un bouquin d'un japonais qui explique cette méthode polaire pour la reconnaissance de formes. Le livre ne détaille pas, il survole juste la conception des robots. Livre "contrôle des robots par micro-ordinateurs". Auteurs : Sadao Maekawa, Eiichi Ohno Editeur : Masson 125 pages.
|
|
Haut
|
|
|
street
|
Publié: Sam 27 Fév 2010, 14:33 |
|
|
Roboticien débutantInscrit le: Mer 21 Oct 2009, 18:12Messages: 176 |
Sympa ce thread ! Bon j'y connais rien en image, mais vous savez que les humains ne sont pas capables de reconnaitre un visage à l'envers par exemple ? vous vous souvenez de ce peintre qui fait un tableau en 30 secondes, un tableau qui ressemble à rien jusqu'au moment où il le retourne, et hop ! c'est le visage de Madonna ou Mickael Jackson... bon cela dit, le coup de la diagonale c'est vrai que c'est pas con, ça coute pas cher (et ça peut rapporter gros  ) Sinon c'est pas Philou qui parlait du mp4 je crois ?
|
|
Haut
|
|
|
philopat
|
Publié: Dim 28 Fév 2010, 15:26 |
|
|
Roboticien initiéInscrit le: Mer 5 Nov 2008, 00:19Messages: 1094Localisation: Paris - Chevreuse |
salut à tous les amateurs de visages et de leurs facettes voici mon humble avis ce que j'ai l'impression, c'est qu'on a un filtre automatique dans la tete qui préselectionne dans la video que nos yeux nous offrent, quelques clichés caracteristiques du visage qu'on observe, pour qu'ensuite ce soit facile à le reconnaitre le cas échéant! c'est à dire qu'il s'agit d'un genre de processus actif permanent qui se charge de choisir ce qu'il faut inscrire dans la base de données exmploitée pour la reconnaissance. ensuite, je souhaite tirer mon chapeau à la theorie de Street, au sujet du principe de reconnaissance ! j'ai retourné ça plusieurs fois dans ma tete pendant de longues semaines, et ça me parait clair qu'un truc du genre est en fonction dans notre demarche humaine de reconnaissance des formes : c'est à dire pour moi accompagné d'un genre de systeme expert qui traite les conditions de reconnaissance. (d'abord reconnaitre des parties puis des sous-ensembles, puis des ensembles...) par exemple: si on a 2 ombres espacées , puis une en dessous décalée d'un espace semblable, alors on cherche à traiter la forme des contours autour de ces ombres pour verifier si il ne s'agit pas d'un visage ...etc... - on s'en aperçoit dans les conditions tres difficiles comme quand on essaye desesperement de reconnaitre quelqu'un dans une photo tres floue ouqui est tres en arriere plan. de plus, ça à l'air d'etre un systeme commandable par la volonté aussi. comme s'obliger à comprendre un visage là où il n'y en a pas..exemple dans une images de marbres, dans les nuages, dans une fumée de cigarette, la lune, les ombres nocturnes en forêt , etc.... - mais pour revenir au sens pratique, je pense qu'il faut optimiser la reconnaissance à l'analyse de zones petites puis grandes etc... (comme le propose Street dans sa theorie) car pour moi, la comparaison d'images filarisées comme vous le montrer n'est qu'un systeme bancal pour amuser la galerie au depart, mais qui ne tiendra jamais la route pour analyser un visage parmis 100000. pourquoi? parce que d'une part un visage change enormement de forme au court d'un mois, puis parce que entre 2 photos d'une meme personnes il y a parfois des differences graphiques plus grandes que entre 2 photos de certaines personnes differentes qui se ressemblent vaguement! - ma conclusion : il faut d'abord savoir reconnaitre un oeil savoir reconnaire les zones d'ombre des arcades sourcilieres savoir reconnaitre une bouche savoir reconnaitre les zones d'ombres du menton les lignes du nez, les ombres de naissance des cheveux etc... etc... tout ça pour pouvoir reconstruire les parties manquantes à chaque item, pour ensuite passer à l'ensemble... c'est à dire qu'on suppose qu'il y a un 2eme oeil meme si on ne le distingue pas tres bien, etc... (comme le propose street dans sa theorie) toutes ces reconnaisance devront certainement etre aossiciées à un taux de doutes...(reconnaissance plus au moins verifiée ou assurée par bouclages) puis savoir reconnaitre un visage devient presque evident -mais sacher que , en tant qu' amateur de dessins de visages, pour moi ça se joue au millimetre près en grandeur réelle (c'est meme pire en fait, car il s'agit des deviations curvilignes hypersensibles). et toutes les proportions dans tous les sens interviennnet pratiquement. c'est à dire les tangentes extrapolées et les angles de ces tangentes par rapport à certaines points de reperes comme les coins des yeux etc... autant dire tout de suite que reconnaitre un visage parmis d'autre avec une webcam bas de gamme c'est quasiment impossible. ça permet simplement de s'initier au probleme en commançant avec de lourdes entraves. ensuite quand tout cela est plus ou moins maitrisé, on peut deformer , ou separer des parties d'un visage par glissemnts sans que la reconaissance soit problematique ! .... enfin voilà pour mon avis mais je respecte infiniment ce depart de travail qui permet de mettre en place toute l'architecture logicielle requise au fur et à mesure de l'avancée sur le sujet... - phil
_________________ ce qui voit , se voit dans les yeux de ceux qui nous regardent... |
|
|
Haut
|
|
|
Calibanproject
|
Publié: Dim 28 Fév 2010, 18:24 |
|
|
Roboticien initiéInscrit le: Jeu 23 Oct 2008, 14:27Messages: 1024Localisation: Saint-Ouen |
Citer: autant dire tout de suite que reconnaitre un visage parmis d'autre avec une webcam bas de gamme c'est quasiment impossible. ça permet simplement de s'initier au probleme en commançant avec de lourdes entraves. Et bien justement je ne suis pas d'accord avec cela est je parle d'expèrience. S'il est certain que le système ne permet pas d'identifier un million de visages différents, il permet malgrés tout d'enregistrer, par pondération, la position des point marquant du visage (espacement entre les yeux, forme du front...etc) et de stocker un nombre significatif d'information. Utiliser une pixélisation toute simple revient a stocker la totalité des vecteurs caractéristiques détectables. En fait j'ai l'impression qu'on ne me comprend pas. Cette image n'est que l'image a comparer. Le modèle pour sa part et la "moyenne" de toutes les images acquises ayant matché avec le modèle initial. Progressivement, le modèle s'ajuste à chaque individus, ou objet. Il est évident qu'il est débile de comparer cette image avec une autre statique, ca ne donnerait rien. Par contre si cette image matche a un certain niveau de pourcentage, alors elle sera intégrée dans le modèle moyen de sorte que le score suivant pour un même individus sera plus élevé. notez par ailleurs que la que le modèle "humain" et composé de la moyenne des différents modèles de personnes connus...etc. Il n'est pas question de comparer pixel a pixel, ce serait crétin mais de comparer les nuage de pixels de l'image (leur taille, positions relatives...etc). Pour le controle, l'acquisition n'est comparée qu'avec les modèles possédant un ratio H/L identique et un taux de "pixel marquant" a peut pret similaire. Alors bien entendu tout ceci peut être perfectionné à l'infini mais cela, ce n'est que de la plomberie.Il constitue une base de départ simple a mettre en oeuvre etinfiniment suffisante pour travailler à l'élaboration d'une IA et la hierarchisation des données. Pour aller au dela de ce genre de choses, alors il faut y consacrer sa vie car le domaine du traitement d'image devient trés vite un sujet complexe nécessitant une ingénieurie trés complexe et des puissances de calcul hors norme. reste donc a savoir quel est l'objectif de Son : Elaborer le meilleur système de traitement possible ou bien disposer d'une entrée de data suffisement flexible pour alimenter un proto moteur d'IA. Les démarches à suivre sont fondamentalement différentes dans ces 2 cas  J'avais cru comprendre qu'a la base SonOf souhaitait detecter les contour et certain point marquant d'un objet isolés. Je m'en suis donc tenu a fournir une explication d'un système répondant à ce "cahier des charges" et qui m'a donné suffisement satisfaction pour bosser avec pendant quelques années... De faiy, si j'ai bien compris, cad que tel est le sujet de ce thread, je vous invite a créer un sujet dédié sur l'élaboration d'un système de reconnaissance de forme optimal afin de recentrer les sujet. (Bah vi, il est souvent question du fait que les sujet sont difficilement retrouvables...) Je fais donc mon modo de base en vous invitant a recentrer le débat dans ce thread et a poursuivre la théorisation de la reconnaissance dans un sujet dédié
_________________

Languages : Delphi, Pascal, C#, RPL, SQL, PL-SQL, Français, Anglais |
|
|
Haut
|
|
|
|
Heures au format UTC
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum
|
|
|