DÉTECTION OPTIMALE DES CONTOURS: CANNY, DÉRICHE, SHENCASTAN
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008
-
13 mars 2008 à 14:45
hackadian1850 -
19 janv. 2014 à 09:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
hawarih
Messages postés2Date d'inscriptionmercredi 8 février 2012StatutMembreDernière intervention18 mai 2012 18 mai 2012 à 01:46
salut,
je travail sur le traitement d'images svp quelqu'un m'aide à trouver un code source écrit en langage java qui fait le filtre gaussien
aussi un code qui fait le filtre médian
et finalement un code qui fait un filtre moyenneur
merci
altyok
Messages postés11Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention 2 septembre 2011 6 avril 2011 à 17:10
salut PISTOL_PETE
je suis aller sur ton site et j'ai vu que tu fait bcp de programme sur le traitement de l'image et donc je pense que tu pourrais m'aider.
moi je cherche a réaliser une reconnaissance de forme sur un signal vidéo. j'ai une caméra qui film l'entrée d'un parking et je dois différencier les piétons des voitures et je pensais donc faire sa par reconnaissance de forme.
pense tu que ce projet peut être réalisable et aurais-tu une idée de départ.
merci
A+
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 8 mars 2011 à 17:56
Salut
Il suffit de faire un seuil (un test pour chaque pixel) à 176 puis de maintenir une image compteur, il n'y a rien de compliquer.
nguene79
Messages postés1Date d'inscriptionlundi 7 mars 2011StatutMembreDernière intervention 8 mars 2011 8 mars 2011 à 15:57
Salut j'aimerai traiter des images satellitaires en nuance de gris ( près de 8000 images) avec MATLAB ou tout autre logiciel pratique.
Le problème consiste à mesurer au niveau de chaque pixel un indice appelé CCD (cold cloud duration).
Le problème peut être décomposé en 4 étapes:
1ere étape
- seuiller les images de façon à faire apparaitre uniquement les pixels dont la valeur pval est supérieure à 176
2eme étape
- sur une série de 12 images,en parcourant chacune d'elle, au niveau de chaque pixel, il faut incrémenter un compteur appelé CCD chaque fois que le pixel en question a une valeur supérieure à 176
3eme étape
- A la fin de la série, après avoir parcouru les 12 images, Au niveau de chaque pixel, on doit disposer de la valeur du compteur CCD afin de savoir combien de fois la valeur de ce pixel a été supérieure à 176
4eme étape
-Le résultat doit être une image exprimant la valeur du compteur en chaque pixel.On pourra utiliser une table (look up table) qui renseignera en fonction de la couleur sur l'image de la valeur du compteur CCD
Merci de m'y aider.
Samardum
Messages postés5Date d'inscriptiondimanche 12 avril 2009StatutMembreDernière intervention27 avril 2010 27 avril 2010 à 09:29
Bonjour,
J'ai testé les filtres ISEF sur une image satellitaire (panchromatique avec une résolution spatiale de 10 m) avec un b = 0.2. Les résultats semblent correctes.
Merci beaucoup Pistol_Pete d'avoir éclairer ma lanterne.
A+
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 26 avril 2010 à 17:11
Le filtre de ISEF dans Shen-Castan est construite de manière récursive: b est effectivement compris entre 0 et 1 et est appelé un smoothing factor, un facteur de lissage. Plus b est faible, et plus le lissage de limage est faible. On conservera donc plus de contours. A l'inverse, si b est élevé, le lissage de l'image sera important et moins de contours seront détectés.
Si tu as une image très bruité, il vaut mieux prendre un b proche de 1.
A+
Samardum
Messages postés5Date d'inscriptiondimanche 12 avril 2009StatutMembreDernière intervention27 avril 2010 26 avril 2010 à 16:16
Bonjour tout le monde,
Concernant les filtres ISEF appliqués sur une image, j'aimerai savoir que signifie le paramètre b dans : f(x) = a x b (à la puissance valeur absolue de x)
avec 0<b<1
J'ai lu dans un commentaire dans votre code que plus b est faible, plus le bruit est important et plus il y'a de détails.
Pourquoi ?
Merci d'avance.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 15 févr. 2010 à 16:32
Salut
Il faut que tu remplaces la définition de macro _WIN32_WINNT par celle la:
#define _WIN32_WINNT 0x0501
A+
mohamedbenhlima
Messages postés1Date d'inscriptionjeudi 25 décembre 2008StatutMembreDernière intervention12 février 2010 12 févr. 2010 à 19:44
bjr, moi j'ai l'erreur suivante sur vc++ (error C2065: 'GET_WHEEL_DELTA_WPARAM' : undeclared identifier)
saidousguine
Messages postés1Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 3 janvier 2010 3 janv. 2010 à 19:48
salut merci de votre code sources de c++ de filtres optimale de shen casten et duriche et cynnty mais le pb est ce que tu avais une cmde matlab de detecter les contour de image par filtre de shen casten ou duriche j'ai fait help au matlab mais il avait aucun réponse et aucun toolbox avait ces contour donc j'ai besoin s'il vous plais une commande qui détecte les contour de image par les filtre optimal canny et shen casten et duriche et un tooolbox au matlab de ces contour et merci beaucoup
corvite
Messages postés2Date d'inscriptiondimanche 20 avril 2008StatutMembreDernière intervention27 novembre 2009 27 nov. 2009 à 12:22
Merci, c'est ce que j'ai fait quelques minutes après avoir posté mon commentaire et ça a marché ;)
Sinon, au plus je m'amuse avec ton "petit" soft, au plus je suis épaté ;)
Encore bravo pour ce travail.
A+
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 27 nov. 2009 à 08:55
Salut
Merci de ton commentaire. L'erreur que tu obtients peux être très facilement corrigé en remplacant IDC_HAND par IDC_NO par exemple.
Si tu veux garder IDC_HAND, il corrigé la ligne suivante
#define _WIN32_WINNT 0x0400 => 0x0500
A+
corvite
Messages postés2Date d'inscriptiondimanche 20 avril 2008StatutMembreDernière intervention27 novembre 2009 26 nov. 2009 à 21:22
Bonjour,
Super boulot que vous avez effectué Pistol_Pete. Merci de l'avoir "posté" ici afin que nous puissions en profiter.
Je suis étudiant en informatique et je dois développer un projet qui en gros consiste à identifier des images... Afin d'atteindre ce but, je dois au préalable transformer mes images d'origine afin que l'identification soit plus aisé. Je voulais donc profiter de certaines fonctions de votre projet pour les adapter au mien.
Le soucis que j'ai, c'est que quand j'essaie de générer votre code avec VS 2008, j'ai l'erreur suivante : error C2065: 'IDC_HAND' : undeclared identifier
Pouvez-vous m'aider à corriger cette erreur?
Pour info, je dois développer mon projet en C#... Donc votre projet me servira principalement dans la compréhension des filtres qu'on peut appliquer sur les images. J'ai donc pas mal d'expérience avec les langages C# et JAVA mais beaucoup moins en C++.
Merci
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 5 mai 2009 à 13:54
Oui je me sert des indices pour calculer la valeur de la gaussienne parce qu'il faut bien discrétiser un jour notre gaussienne. C'est aussi, pour cela, que la normalisation est un peu différente dans la formule. Cependant, tu peux construire ta gaussienne comme tu le souhaites. (avec n'importe qu'elle pas de discrétisation).
A+
Samardum
Messages postés5Date d'inscriptiondimanche 12 avril 2009StatutMembreDernière intervention27 avril 2010 29 avril 2009 à 10:49
Re,
J'ai compris à quoi sert le test d'interromption du calcul du kernel. Y'a pas de soucis pour ça. Tu as mis une une valeur seuil audessous de laquelle, tu arrête la formation du filtre.
Ma grande question, en revanche, est :
Qu'est ce qui justifie l'utilisation des indices (i=0,..maxsize) pour le calcul du kernel.
tu calcules la gaussienne des indices pour générer les élmts du kernel. Pourquoi?
Merci d'avance.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 29 avril 2009 à 10:35
Salut
Je le répète, la taille de ce filtre n'est pas constante. Elle dépendra de la valeur de l'écart type du bruit de ton image. Si l'image est fortement bruité, l'écart type sera fort, et le filtre sera large pour avoir un filtrage important.
Le bruit dans ton image est indépendant de la taille de ton image.
Relit bien le bout de code que j'ai mis lors de mon précédent post: la taille de ce filtre correspond bien à "taille" (la variable). Le break, n'est pas inutile...
Tu dis:
"La construction du noyau gaussien n'a pas de fondement mathématique"
Bien sur que si! (A part peut être l'erreur de normalisation). Pour moi c'est LA méthode pour construire un noyau gaussien.
Aussi, cela ne sert à rien d'utiliser un noyau 2D parce que la convolution peut être séparable. Donc un noyau 1D que l'on applique en x et en y convient très bien et la complexité de l'algo diminue fortement.
A+
Samardum
Messages postés5Date d'inscriptiondimanche 12 avril 2009StatutMembreDernière intervention27 avril 2010 29 avril 2009 à 10:04
Bonjour tout le monde,
Merci PISTOL_PETE d'avoir répondu à ma question mais je ne suis pas toujours convaincue.
Pour moi le filtre est certes conçu d'une manière dynamique mais tjrs est-il que dans ton code il aura une taille contante puisque les élèments du kernel tu les calcul à partir des indices (i : 0 jusqu'à maxsize, taille maximale fixée à 20).
J'aurai compris que le filtre aurai eu une taille différente s'il prenait les valeurs de l'image car ces dernières changent effectivement d'une image à une autre), mais ce n'est pas le cas !!!!
Je voudrai bien savoir comment on construit un noyau gaussien car la méthode que tu utilises, combien même elle donne de bons résultats mais elle n'a pas de fondement mathématique.
De ma part, g implémenté le filtre de Canny en IDL car je travaille particulièrement sur les images satellitaires et g utilisé un noyau 5*5 que g trouvé dans la littérature.
Merci de me donner des élèments de réponse ou de m'orienter si possible.
Merci.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 28 avril 2009 à 16:17
Salut Samardum
Pour ta première question, la taille du noyau gaussien n'est pas constante. Par contre sa taille maximal est de 20 pixels. Suivant la valeur de l'écart type que l'utilisateur spécifie, la gaussienne est plus ou moins "étroite" et la taille du filtre change:
//Creation du masque gaussian
for(i=0;i<MAX_SIZE_MASK;i++)
{
Gaussien[i]=MeanGauss((float)i,s);
dGaussien[i]=dGauss((float)i,s);
if(Gaussien[i]<0.005)
{
taille=i; <<- ici on arrête le filtre
break;
}
}
Pour ta seconde question, le filtre est centré donc moy=0, mais par contre pour la normalisation, je ne sais plus pourquoi j'ai pas pris 1/sigma*sqrt(2*pi)
Mais je ne pense pas que cela change grand chose, ce n'est qu'un facteur de normalisation. (A tester tout de même)
A+
Samardum
Messages postés5Date d'inscriptiondimanche 12 avril 2009StatutMembreDernière intervention27 avril 2010 20 avril 2009 à 15:21
Bonjour,
J'aimerai avoir plus d'information sur la méthode utilisée pour la création du noyau gaussien dans le code "Canny".En fait, je pose deux questions:
1- comment justifier l'utilisation des valeurs i allant de 0 à 20 dans la création du kernel du noyau gaussien mono dimension. Pourquoi pas d'autres valeurs?
2- La fonction de densité de probabilité est
f(x) = 1/sigma*sqrt(2*pi)*exp (-1/2(x-moy/sigma)(x-moy/sigma))
alors pourquoi dans le code vous utilisez
f(x) = 1/sigma*sigma*2*pi*exp(-1/2*x/sigme*x/sigma)
Merci de m'éclairer sur ces questions.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 9 avril 2009 à 08:54
Tu peux faire toutes les déclarations de variable en début de fonction PUIS ensuite l'initialisation des mêmes variables. Sinon, reconstruit la fonction sans les goto.
A+
lolkais
Messages postés8Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention 8 avril 2009 8 avril 2009 à 20:59
Merci de votre répons e, j'utilise CB C++ 6.0 il m affiche l erreur suivante :
c:\documents and settings\kais\bureau\c8\imanalyse\sources\cimage.cpp(250) : error C2362: initialization of 'picture' is skipped by 'goto errPicture'
c:\documents and settings\kais\bureau\c8\imanalyse\sources\cimage.cpp(236) : see declaration of 'picture'
Error executing cl.exe.
le fichier que j ouvre est Cimage?
Merci de m aider
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 8 avril 2009 à 17:07
Salut
Comment ouvrir un fichier cpp: en double cliquant dessus...
Ce code est compilé avec VC++ 2005 mais compile sans problème avec VS 2008.
Il suffit d'ouvrir le projet et de compiler, il ne devrait pas y avoir d'erreur.
A+
lolkais
Messages postés8Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention 8 avril 2009 8 avril 2009 à 15:52
Bonjour,
J'aurais besoin de votre aide pour ouvrir le fichier cpp , avec quel version de VB C++ et quelle bibliothéques.
Meric de mindiquer comment faire sachant que je suis electronicien et nouveau sur la programmation
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 21 oct. 2008 à 20:17
Salut
Cette section de commentaire est réservée pour parler de cette source. Donc sur les algos de Canny Dériche Shen Castan...
Kalman est ici hors sujet. Poster sur le forum pourra peut être te donner plus d'information.
A+
jijodi
Messages postés1Date d'inscriptionlundi 6 octobre 2008StatutMembreDernière intervention21 octobre 2008 21 oct. 2008 à 17:06
Bonjour
Est ce que vous pouvez me donnez le code de Kalman en Matlab
merci
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 1 août 2008 à 13:54
Salut
Voici la dernière version de mon logiciel sans boggue connu.
La documentation en ligne est enfin à jour et disponible sur le site web du logiciel:
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 5 juin 2008 à 11:39
Salut
HHABLA: Peux tu me dire ce qui se passe pour la derniere version de mon programme.
Est ce que c'est l'executable qui ne marche pas (y a t'il un message d'erreur)?
Ou c'est a la compilation qu'il y a des erreurs?
Merci a toi de m'aider a debogguer mon prog.
A+
hhabla
Messages postés7Date d'inscriptiondimanche 20 janvier 2008StatutMembreDernière intervention17 juin 2008 4 juin 2008 à 10:59
justement le PB réside pendant l'ouverture des fichiers.....
hhabla
Messages postés7Date d'inscriptiondimanche 20 janvier 2008StatutMembreDernière intervention17 juin 2008 4 juin 2008 à 10:27
Salut;
Désolée j'arrive pas a voir les résultats de votre dernière version, il y'a un bug je crois?!; en fait je pensais à la même chose c'est à dire utiliser une fonction de conversion vers Bmp puis utiliser les algorithmes implémentés, les fichiers sur lesquels je dois appliquer ces algorithmes c'est des .avi;
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 3 juin 2008 à 21:30
>>Garceur, je ne vois aucun int?r?t de passer d'un code C en un code matlab! Ou peut ?tre c'est pour faire un algorithme beaucoup plus long.
Mais matlab peut faire marcher des codes en c, il faut te renseigner.
>>Amel, j'ai pas compris ta derni?re question:
"pour les images bmp(bitmap) vous pouvez transformer ces images en bmp"???
Pour le filtre de Kalman, ?a n'a aucun rapport avec cette sources, mais peut ?tre dans une prochaine version...
A+
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 3 juin 2008 à 21:23
Salut HHABLA
Bien que c'est possible d'utiliser des images jpeg. Il faut pour cela les transform?es en bitmap.
Tu peux ouvrir des images bmp, jpeg et png et appliquer n'importe quel traitement dessus
A+
cs_Amel3
Messages postés9Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention21 juin 2008 3 juin 2008 à 11:15
bonjour
pour les images bmp(bitmap)
vous pouvez trensformer ces images en bmp
moi je cherche mnt le code de kalman
kalman c'es un filtre il est utiliser pour la detection précise des route
qui paut m'aider sur ce code je l'ai en matlab mais en c++ non
merci
hhabla
Messages postés7Date d'inscriptiondimanche 20 janvier 2008StatutMembreDernière intervention17 juin 2008 3 juin 2008 à 08:16
Exellent comme résultat!!, mais est ce que c possible d'utiliser des images de différents formats, exp JPG, JPEG ect....Merci
gaceur
Messages postés4Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention26 avril 2008 26 avril 2008 à 11:50
Salut,
je veux bien avoir une idée sur le code en matlab.
cs_Amel3
Messages postés9Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention21 juin 2008 10 avril 2008 à 12:50
bon si vous voulez je vous donne le code en matlab pour mieux me comprend
merci
cs_Amel3
Messages postés9Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention21 juin 2008 10 avril 2008 à 12:47
bonjour
je vous remercie vraiment je voudrais juste vous dire que je cherche la direction de la route pas le detection du route moi j'ai fait la detection semi automatique de la route par le filtre de sobel et je cherche la direction de la route sachant que cette route ne dépasse pas 15 pixel
merci bq
fatima
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 13 mars 2008 à 19:14
et voila, 10/10 (pas habitué à la nouvelle interface).
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 13 mars 2008 à 19:12
fine, super, j'ai compris mon prof, je devrais pouvoir piger ta source dès que je serai en meilleur état :D
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 13 mars 2008 à 18:09
Salut
Merci de ton commentaire.
La technique que tu me proposes est exactement celle que j'utilise pour mes algos de shenCastan et de Deriche. En ce qui concerne: "flouter légerement", je laisse le choix a l'utilisateur mais cella donne de bien meilleurs resultats en général lorsque l'on filtre l'image d'une maniere importante.
Ici les filtres passebas utilisés ont une frequence de coupure tres faible!
Ton prof a totalement raison de faire le rapprochement entre le traitement de l'image et du son, parcequ'il y a selon moi qu'une unique difference: une image est compose de 2 dimensions.
D'ailleurs dans cette source, on utilise les termes ISEF, filtre RIF, filtres RII qui sont des termes que l'on retrouve .... en traitement du signal.
A+
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 13 mars 2008 à 14:45
Une technique sympathique de détection des contours (tu dois la connaitre) est de flouter légèrement l'image (filtre passe bas) puis de soustraire le résultat à l'image de départ, ça donne un résultat pas mal et a l'avantage de sortir les petits défauts de l'image.
J'ai vu ça dans un cours que je suis actuellement en Angleterre, le prof traite d'image comme il traite le son, c'est vraiment intéressant.
Sinon, comme d'habitude, très bonne source. C ya !
19 janv. 2014 à 09:16
18 mai 2012 à 01:46
je travail sur le traitement d'images svp quelqu'un m'aide à trouver un code source écrit en langage java qui fait le filtre gaussien
aussi un code qui fait le filtre médian
et finalement un code qui fait un filtre moyenneur
merci
6 avril 2011 à 17:10
je suis aller sur ton site et j'ai vu que tu fait bcp de programme sur le traitement de l'image et donc je pense que tu pourrais m'aider.
moi je cherche a réaliser une reconnaissance de forme sur un signal vidéo. j'ai une caméra qui film l'entrée d'un parking et je dois différencier les piétons des voitures et je pensais donc faire sa par reconnaissance de forme.
pense tu que ce projet peut être réalisable et aurais-tu une idée de départ.
merci
A+
8 mars 2011 à 17:56
Il suffit de faire un seuil (un test pour chaque pixel) à 176 puis de maintenir une image compteur, il n'y a rien de compliquer.
8 mars 2011 à 15:57
Le problème consiste à mesurer au niveau de chaque pixel un indice appelé CCD (cold cloud duration).
Le problème peut être décomposé en 4 étapes:
1ere étape
- seuiller les images de façon à faire apparaitre uniquement les pixels dont la valeur pval est supérieure à 176
2eme étape
- sur une série de 12 images,en parcourant chacune d'elle, au niveau de chaque pixel, il faut incrémenter un compteur appelé CCD chaque fois que le pixel en question a une valeur supérieure à 176
3eme étape
- A la fin de la série, après avoir parcouru les 12 images, Au niveau de chaque pixel, on doit disposer de la valeur du compteur CCD afin de savoir combien de fois la valeur de ce pixel a été supérieure à 176
4eme étape
-Le résultat doit être une image exprimant la valeur du compteur en chaque pixel.On pourra utiliser une table (look up table) qui renseignera en fonction de la couleur sur l'image de la valeur du compteur CCD
Merci de m'y aider.
27 avril 2010 à 09:29
J'ai testé les filtres ISEF sur une image satellitaire (panchromatique avec une résolution spatiale de 10 m) avec un b = 0.2. Les résultats semblent correctes.
Merci beaucoup Pistol_Pete d'avoir éclairer ma lanterne.
A+
26 avril 2010 à 17:11
Si tu as une image très bruité, il vaut mieux prendre un b proche de 1.
A+
26 avril 2010 à 16:16
Concernant les filtres ISEF appliqués sur une image, j'aimerai savoir que signifie le paramètre b dans : f(x) = a x b (à la puissance valeur absolue de x)
avec 0<b<1
J'ai lu dans un commentaire dans votre code que plus b est faible, plus le bruit est important et plus il y'a de détails.
Pourquoi ?
Merci d'avance.
15 févr. 2010 à 16:32
Il faut que tu remplaces la définition de macro _WIN32_WINNT par celle la:
#define _WIN32_WINNT 0x0501
A+
12 févr. 2010 à 19:44
3 janv. 2010 à 19:48
27 nov. 2009 à 12:22
Sinon, au plus je m'amuse avec ton "petit" soft, au plus je suis épaté ;)
Encore bravo pour ce travail.
A+
27 nov. 2009 à 08:55
Merci de ton commentaire. L'erreur que tu obtients peux être très facilement corrigé en remplacant IDC_HAND par IDC_NO par exemple.
Si tu veux garder IDC_HAND, il corrigé la ligne suivante
#define _WIN32_WINNT 0x0400 => 0x0500
A+
26 nov. 2009 à 21:22
Super boulot que vous avez effectué Pistol_Pete. Merci de l'avoir "posté" ici afin que nous puissions en profiter.
Je suis étudiant en informatique et je dois développer un projet qui en gros consiste à identifier des images... Afin d'atteindre ce but, je dois au préalable transformer mes images d'origine afin que l'identification soit plus aisé. Je voulais donc profiter de certaines fonctions de votre projet pour les adapter au mien.
Le soucis que j'ai, c'est que quand j'essaie de générer votre code avec VS 2008, j'ai l'erreur suivante : error C2065: 'IDC_HAND' : undeclared identifier
Pouvez-vous m'aider à corriger cette erreur?
Pour info, je dois développer mon projet en C#... Donc votre projet me servira principalement dans la compréhension des filtres qu'on peut appliquer sur les images. J'ai donc pas mal d'expérience avec les langages C# et JAVA mais beaucoup moins en C++.
Merci
5 mai 2009 à 13:54
A+
29 avril 2009 à 10:49
J'ai compris à quoi sert le test d'interromption du calcul du kernel. Y'a pas de soucis pour ça. Tu as mis une une valeur seuil audessous de laquelle, tu arrête la formation du filtre.
Ma grande question, en revanche, est :
Qu'est ce qui justifie l'utilisation des indices (i=0,..maxsize) pour le calcul du kernel.
tu calcules la gaussienne des indices pour générer les élmts du kernel. Pourquoi?
Merci d'avance.
29 avril 2009 à 10:35
Je le répète, la taille de ce filtre n'est pas constante. Elle dépendra de la valeur de l'écart type du bruit de ton image. Si l'image est fortement bruité, l'écart type sera fort, et le filtre sera large pour avoir un filtrage important.
Le bruit dans ton image est indépendant de la taille de ton image.
Relit bien le bout de code que j'ai mis lors de mon précédent post: la taille de ce filtre correspond bien à "taille" (la variable). Le break, n'est pas inutile...
Tu dis:
"La construction du noyau gaussien n'a pas de fondement mathématique"
Bien sur que si! (A part peut être l'erreur de normalisation). Pour moi c'est LA méthode pour construire un noyau gaussien.
Aussi, cela ne sert à rien d'utiliser un noyau 2D parce que la convolution peut être séparable. Donc un noyau 1D que l'on applique en x et en y convient très bien et la complexité de l'algo diminue fortement.
A+
29 avril 2009 à 10:04
Merci PISTOL_PETE d'avoir répondu à ma question mais je ne suis pas toujours convaincue.
Pour moi le filtre est certes conçu d'une manière dynamique mais tjrs est-il que dans ton code il aura une taille contante puisque les élèments du kernel tu les calcul à partir des indices (i : 0 jusqu'à maxsize, taille maximale fixée à 20).
J'aurai compris que le filtre aurai eu une taille différente s'il prenait les valeurs de l'image car ces dernières changent effectivement d'une image à une autre), mais ce n'est pas le cas !!!!
Je voudrai bien savoir comment on construit un noyau gaussien car la méthode que tu utilises, combien même elle donne de bons résultats mais elle n'a pas de fondement mathématique.
De ma part, g implémenté le filtre de Canny en IDL car je travaille particulièrement sur les images satellitaires et g utilisé un noyau 5*5 que g trouvé dans la littérature.
Merci de me donner des élèments de réponse ou de m'orienter si possible.
Merci.
28 avril 2009 à 16:17
Pour ta première question, la taille du noyau gaussien n'est pas constante. Par contre sa taille maximal est de 20 pixels. Suivant la valeur de l'écart type que l'utilisateur spécifie, la gaussienne est plus ou moins "étroite" et la taille du filtre change:
//Creation du masque gaussian
for(i=0;i<MAX_SIZE_MASK;i++)
{
Gaussien[i]=MeanGauss((float)i,s);
dGaussien[i]=dGauss((float)i,s);
if(Gaussien[i]<0.005)
{
taille=i; <<- ici on arrête le filtre
break;
}
}
Pour ta seconde question, le filtre est centré donc moy=0, mais par contre pour la normalisation, je ne sais plus pourquoi j'ai pas pris 1/sigma*sqrt(2*pi)
Mais je ne pense pas que cela change grand chose, ce n'est qu'un facteur de normalisation. (A tester tout de même)
A+
20 avril 2009 à 15:21
J'aimerai avoir plus d'information sur la méthode utilisée pour la création du noyau gaussien dans le code "Canny".En fait, je pose deux questions:
1- comment justifier l'utilisation des valeurs i allant de 0 à 20 dans la création du kernel du noyau gaussien mono dimension. Pourquoi pas d'autres valeurs?
2- La fonction de densité de probabilité est
f(x) = 1/sigma*sqrt(2*pi)*exp (-1/2(x-moy/sigma)(x-moy/sigma))
alors pourquoi dans le code vous utilisez
f(x) = 1/sigma*sigma*2*pi*exp(-1/2*x/sigme*x/sigma)
Merci de m'éclairer sur ces questions.
9 avril 2009 à 08:54
A+
8 avril 2009 à 20:59
c:\documents and settings\kais\bureau\c8\imanalyse\sources\cimage.cpp(250) : error C2362: initialization of 'picture' is skipped by 'goto errPicture'
c:\documents and settings\kais\bureau\c8\imanalyse\sources\cimage.cpp(236) : see declaration of 'picture'
Error executing cl.exe.
le fichier que j ouvre est Cimage?
Merci de m aider
8 avril 2009 à 17:07
Comment ouvrir un fichier cpp: en double cliquant dessus...
Ce code est compilé avec VC++ 2005 mais compile sans problème avec VS 2008.
Il suffit d'ouvrir le projet et de compiler, il ne devrait pas y avoir d'erreur.
A+
8 avril 2009 à 15:52
J'aurais besoin de votre aide pour ouvrir le fichier cpp , avec quel version de VB C++ et quelle bibliothéques.
Meric de mindiquer comment faire sachant que je suis electronicien et nouveau sur la programmation
21 oct. 2008 à 20:17
Cette section de commentaire est réservée pour parler de cette source. Donc sur les algos de Canny Dériche Shen Castan...
Kalman est ici hors sujet. Poster sur le forum pourra peut être te donner plus d'information.
A+
21 oct. 2008 à 17:06
Est ce que vous pouvez me donnez le code de Kalman en Matlab
merci
1 août 2008 à 13:54
Voici la dernière version de mon logiciel sans boggue connu.
La documentation en ligne est enfin à jour et disponible sur le site web du logiciel:
http://ImAnalyse.free.fr
5 juin 2008 à 11:39
HHABLA: Peux tu me dire ce qui se passe pour la derniere version de mon programme.
Est ce que c'est l'executable qui ne marche pas (y a t'il un message d'erreur)?
Ou c'est a la compilation qu'il y a des erreurs?
Merci a toi de m'aider a debogguer mon prog.
A+
4 juin 2008 à 10:59
4 juin 2008 à 10:27
Désolée j'arrive pas a voir les résultats de votre dernière version, il y'a un bug je crois?!; en fait je pensais à la même chose c'est à dire utiliser une fonction de conversion vers Bmp puis utiliser les algorithmes implémentés, les fichiers sur lesquels je dois appliquer ces algorithmes c'est des .avi;
3 juin 2008 à 21:30
Mais matlab peut faire marcher des codes en c, il faut te renseigner.
>>Amel, j'ai pas compris ta derni?re question:
"pour les images bmp(bitmap) vous pouvez transformer ces images en bmp"???
Pour le filtre de Kalman, ?a n'a aucun rapport avec cette sources, mais peut ?tre dans une prochaine version...
A+
3 juin 2008 à 21:23
Bien que c'est possible d'utiliser des images jpeg. Il faut pour cela les transform?es en bitmap.
Regarde ma derni?re source:
http://www.cppfrance.com/codes/IMANALYSE-LOGICIEL-TRAITEMENT-IMAGE-DITHERING-WIN32_46507.aspx
Tu peux ouvrir des images bmp, jpeg et png et appliquer n'importe quel traitement dessus
A+
3 juin 2008 à 11:15
pour les images bmp(bitmap)
vous pouvez trensformer ces images en bmp
moi je cherche mnt le code de kalman
kalman c'es un filtre il est utiliser pour la detection précise des route
qui paut m'aider sur ce code je l'ai en matlab mais en c++ non
merci
3 juin 2008 à 08:16
26 avril 2008 à 11:50
je veux bien avoir une idée sur le code en matlab.
10 avril 2008 à 12:50
merci
10 avril 2008 à 12:47
je vous remercie vraiment je voudrais juste vous dire que je cherche la direction de la route pas le detection du route moi j'ai fait la detection semi automatique de la route par le filtre de sobel et je cherche la direction de la route sachant que cette route ne dépasse pas 15 pixel
merci bq
fatima
13 mars 2008 à 19:14
13 mars 2008 à 19:12
13 mars 2008 à 18:09
Merci de ton commentaire.
La technique que tu me proposes est exactement celle que j'utilise pour mes algos de shenCastan et de Deriche. En ce qui concerne: "flouter légerement", je laisse le choix a l'utilisateur mais cella donne de bien meilleurs resultats en général lorsque l'on filtre l'image d'une maniere importante.
Ici les filtres passebas utilisés ont une frequence de coupure tres faible!
Ton prof a totalement raison de faire le rapprochement entre le traitement de l'image et du son, parcequ'il y a selon moi qu'une unique difference: une image est compose de 2 dimensions.
D'ailleurs dans cette source, on utilise les termes ISEF, filtre RIF, filtres RII qui sont des termes que l'on retrouve .... en traitement du signal.
A+
13 mars 2008 à 14:45
J'ai vu ça dans un cours que je suis actuellement en Angleterre, le prof traite d'image comme il traite le son, c'est vraiment intéressant.
Sinon, comme d'habitude, très bonne source. C ya !