|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Continuons avec l'extraction des points caracteristiques. Apres les contours (Canny), passons maintenant aux coins avec Harris.
Le detecteur de Harris est un detecteur assez simple qui permet d'extraire les "coins" des contours. Les points récupérés sont souvent utilisés dans les algorithmes de reconnaissance de forme. ![]() plus d'info: http://en.wikipedia.org/wiki/Corner_detection Code Java :
Vous trouverez une version "stand-alone" de ce code au Post #14 Et également une version sous forme de Plugin pour l'application de Millie ici -> HarrisDetectionPlugin.jar
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 818 ![]() |
Bien joué, moi je l'avais implémenté en Python pour faire un suivi de point sur un film de prothèse. C'est assez robuste, faut il choisir le bon seuil pour avoir les points les plus robuste !
Bravo encore
__________________
Dis moi qui tu suis, je te dirais qui je Hais! Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit Mon premier Tutoriel You are safe in Parp1City .... (AC DC) Ensemble luttons contre le chômage de parp1City! A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes... |
|
|
00
|
|
|
#3 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Citation:
En fait, a l'instar de millie, je fais un peu de menage dans mes archives de code. J'en profite pour remettre au propre et poster les algos usuels.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 818 ![]() |
Dès lors ou tu passes du temps a faire quelque chose, et que tu mets en ligne tu as du merite, ce que je veux dire par la... tu pourrais te faire ta petite ToolBox pour le traitement d'image, mais non tu en fait profité les copains.
__________________
Dis moi qui tu suis, je te dirais qui je Hais! Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit Mon premier Tutoriel You are safe in Parp1City .... (AC DC) Ensemble luttons contre le chômage de parp1City! A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes... |
|
|
00
|
|
|
#5 |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Nouvelle version du filtre:
- utilisation d'une fenetre gaussienne lors du calcul de la matrice de harris (second-moment). - recherche du maxima local de la mesure de Harris (8 pixels voisins) - filtrage des points trop proche ou ayant une mesure trop faible Bref de meilleurs résultats, au detriment des perfs (la recherche du maxima local implique de calculer 9 mesures)
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 28 ![]() |
y a t'il une version C++ de cet algorithme?
|
|
|
00
|
|
|
#7 | |
![]() ![]() Inscription : juin 2006 Messages : 6 929 ![]() |
Citation:
De plus, la discussion est ici et pas dans le domaine Java car le code permet assez facilement (cela dit, ça peut prendre un peu de temps), en connaissant un peu Java, de pouvoir le transcrire dans le langage et la bibliothèque de ton choix.
__________________
Je ne répondrai à aucune question technique en privé |
|
|
|
00
|
|
|
#8 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Étudiant Inscription : décembre 2006 Messages : 175 ![]() |
Annule et remplace :
Voici maintenant mon lanceur : Code :
Maintenant c'est bon ! Sinon l'argument 1 de setup() est facultatif ?? Bonne soirée |
||
|
|
00
|
|
|
#10 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Citation:
Cela dit, il est possible de recupérer le code des autres methodes.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#11 | ||||
|
Membre du Club
![]() Étudiant Inscription : décembre 2006 Messages : 175 ![]() |
Bonjour,
J'ai tenté de faire ma propre implémentation du détecteur de Harris. Cependant sur une image entière le temps de calcul est très long et les résultats pas très probants... Quelqu'un saurait-il dire ce qui ne vas vraiment pas ? Pour le faire fonctionner : - API Jama (Java Matrix) - API JAI nécessaires... Deux classes : - ImageNM.java - Harris.java (classe main[]) Code java :
et la classe ImageNM : Code java :
|
||||
|
|
00
|
|
|
#12 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Code java :
Dans le detecteur de Harris, on n'a pas besoin de cherchers les valeurs propres de la matrice. On calcule la courbure (R, Determinant et Trace) en utilisant les elements de la matrice M.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#13 |
|
Membre du Club
![]() Étudiant Inscription : décembre 2006 Messages : 175 ![]() |
Ok je vais changer ça.
Cependant cela ne devrait pas tellement influencer les résultats (je ne sais si tu as tester le prog?) puisque : Trace(M) = λ1+ λ2 = M1,1 + M2,2 Déterminant(M) = λ1λ2 = M1,1*M2,2 – M1,2*M2,1 R = Déterminant(M) – k(Trace(M))^2 Merci à toi |
|
|
00
|
|
|
#14 | ||||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Le résultat sans doute pas, mais la vitesse surement...
J'en profite pour poster une version "stand-alone" du filtre, qui précalcule les valeurs filtrés des derivées F*Lx², F*Ly² et F*Lxy pour accelerer le temps de traitement (au detriment de la mémoire). Code java :
Pour l'utiliser: Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||||
|
00
|
|
|
#15 | ||
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 4 ![]() |
Bonjour,
j'essaye désespérément de savoir de quoi est capable un détecteur de Harris, et surtout si je vais pouvoir l'utiliser pour mon projet. Voilà j'y connais pas grand chose en "computer vision" et j'aimerais trouver un algo qui puisse me donner les coordonnées de formes géométriques simples (rectangles). Naïvement je pense que le détecteur de Harris est la solution à mon pb. Voilà donc je tente d'utiliser votre implémentation, mais le résultat qu'il me sort n'est pas très cohérent. Mon niveau en graphic avec java est assez faible, je débute, donc je dois surement passer de mauvaise ressource à Fast Harris. Toutes remarques bienvenues ! Merci Code Java :
|
||
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Étudiant Inscription : décembre 2006 Messages : 175 ![]() |
Pour revenir sur le détecteur de Harris dans le code de pseudocode.
A quoi sert le coef multiplicateur * 1000 lors du calcul des coefficients gaussiens ? |
|
|
00
|
|
|
#17 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() Étudiant Inscription : décembre 2006 Messages : 175 ![]() |
oki... merci
|
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : janvier 2009 Messages : 1 ![]() |
merci pour le code , personnellement je l'ai tester et ça marche convenablement. Le seul problème que j'ai rencontré c'est comment fixer un seuil maximal pour le nombre de coins sachant que dans votre code le paramètre nmbmax est écrit dans le commentaire mais pas utilisé dans la méthode filtre .Donc je vous demande comment procéder pour limiter le nombre de coin à seuil donné.
/** * Perfom Harris Corner Detection * * @param c Image map * @param tilesize size of a tile * @param nmbmax max number of corner to keep * @return filtered image map */ public ByteProcessor filter(ByteProcessor c, int minMeasure, int minDistance) |
|
|
00
|
|
|
#20 | |||||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 424 ![]() |
Citation:
1. Je vous suggère d'utiliser/adapter le code du post#14 qui est une version un peu plus "optimisée" des calculs. 2. Une méthode qui marche pas mal, c'est d'utiliser un seuil en pourcentage. Pour cela on calcule toutes les mesures de Harris, on normalise et font un simple test de dépassement. C'est la méthode qui est utilisée dans MillieGUI : HarrisFastDetectionOperator.java La normalisation entre 0 et 100 (en échelle Log et qui pourrait être optimisée ):Code java :
Le test de dépassement: Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||||
|
00
|
Copyright © 2000-2012 - www.developpez.com