begin process at 2012 05 28 10:14:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

calcul de rayan des cercles dans une image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

calcul de rayan des cercles dans une image

mardi 19 avril 2011 à 17:25:49 | calcul de rayan des cercles dans une image

swito

salut

je travaille sur un projet de traitement d image , l'objectif c' est de faire un code en c/c++ qui détecte toutes les cercles qui existe dans l image puis calculer pour chaque cercle détecter son Rayan.


prière de m'aider si quelqu'un a une idée
mercredi 20 avril 2011 à 08:44:12 | Re : calcul de rayan des cercles dans une image

louis14

Bonjour,
il faut que tu regardes du côté de la transformée de Hough. IL me semble qu'il y a un exemple sur ce site.

louis
mercredi 20 avril 2011 à 08:50:50 | Re : calcul de rayan des cercles dans une image

louis14


Voilà un très bon article :
http://www.cppfrance.com/codes/IMANALYSE-LOGICIEL-TRAITEMENT-IMAGE-DITHERING-WIN32_46507.aspx

il y a la détection de cercle

louis
mercredi 20 avril 2011 à 09:36:20 | Re : calcul de rayan des cercles dans une image

swito

bonjour
merci louis pour votre rep

j ai déjà essayé avec la bibliothèque opencv mon programme s’exécute mais les cercles tracé ne sont les vrais cercles cherché c-t-a dire il trace des grandes cercles aléatoires par contre dans l image traité il y a des centaines des petites image
peut être je sais pas faire un bon paramétrage

voila mon code

#include <cv.h>
#include <highgui.h>
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<cxcore.h>
#include<cvaux.h>

using namespace std;
int main()
{
//Déclaration
IplImage*image_couleur;
IplImage*image_gris;
IplImage*image_binaire;
// IplImage*image_contour;
IplImage*image_filtre;
CvMat*masque3x3;
CvSeq*circles;
CvMemStorage*storage = cvCreateMemStorage(0);

// charger une image
image_couleur=cvLoadImage("im1.jpg");
if (image_couleur == NULL)
{
cout << "impossible d'ouvrir le fichier";
exit(EXIT_FAILURE);
}
//On vérifie l'origine de l'image chargée
//Si elle n'est pas en haut à gauche, il faut la corriger
int flip=0;
if(image_couleur->origin!=IPL_ORIGIN_TL)
{
flip=CV_CVTIMG_FLIP;
}

//Conversion en niveaux de gris
image_gris=cvCreateImage(cvGetSize(image_couleur),image_couleur->depth,1);
if (image_gris == NULL)
{
cout << "impossible de creer image gris";
exit(EXIT_FAILURE);
}

cvCvtColor(image_couleur,image_gris,CV_BGR2GRAY);
image_binaire=cvCreateImage(cvGetSize(image_couleur),8,1);
image_filtre=cvCreateImage(cvGetSize(image_couleur),8,1);
masque3x3= cvCreateMat(3,3,CV_32FC1);


/* for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
float k;
cin >> k ;
cvmSet(masque3x3, i, j, k);
}
}
*/
cvmSet(masque3x3, 0, 0,0);
cvmSet(masque3x3, 1, 0,-1);
cvmSet(masque3x3, 2, 0,0);
cvmSet(masque3x3, 0, 1,-1);
cvmSet(masque3x3, 1, 1,5);
cvmSet(masque3x3, 2, 1, -1);
cvmSet(masque3x3, 0, 2, 0);
cvmSet(masque3x3, 1, 2, -1);
cvmSet(masque3x3, 2, 2, 0);
cvFilter2D(image_gris,image_filtre,masque3x3);
cvSmooth(image_gris,image_gris, CV_GAUSSIAN, 3,3);
cvThreshold(image_filtre,image_binaire,100,255,CV_THRESH_BINARY);

circles = cvHoughCircles(image_gris, storage, CV_HOUGH_GRADIENT,1,image_gris->height/4,84,42,0,0);
for(int i = 0; i < circles->total; i++ )
{

float* p = (float*)cvGetSeqElem( circles, i );
cvCircle( image_gris ,cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 );
cvCircle( image_gris ,cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 );
}
/*
CvScalar scalaire;
for(int x=0;x<image_gris->width;x++)
{
for(int y=0;y<image_gris->height;y++)
{
scalaire=cvGet2D(image_gris, y, x);
printf ("%3d",scalaire.val[0]);
}
printf("\n");
}
*/
//Création des fenêtres dans lesquelles nous afficherons les images

cvNamedWindow("Affichage image couleur", CV_WINDOW_AUTOSIZE);
cvShowImage("Affichage image couleur", image_couleur);
cvNamedWindow("Affichage image gris",CV_WINDOW_AUTOSIZE);
cvShowImage("Affichage image gris", image_gris);
cvNamedWindow("Affichage image filtre");
cvShowImage("Affichage image filtre",image_filtre);
cvNamedWindow("Affichage image binaire",CV_WINDOW_AUTOSIZE);
cvShowImage("Affichage image binaire",image_binaire);

cvWaitKey(0);
cvDestroyWindow("Affichage image couleur");
cvDestroyWindow("Affichage image gris");
cvDestroyWindow("Affichage image filtre");
cvDestroyWindow("Affichage image binaire");
cvReleaseImage(&image_couleur);
cvReleaseImage(&image_gris);
cvReleaseImage(&image_filtre);
cvReleaseImage(&image_binaire);
cvReleaseMat(&masque3x3);

return 0;

}


Cette discussion est classée dans : image, calcul, cercles, rayan


Répondre à ce message

Sujets en rapport avec ce message

Reconnaissance d'image et calcul du contour [ par Tic62 ] Bonjour à tous, Je suis en 2ème année de BTS IRIS et j'ai un projet à effectuer.En Visual C++, je dois récupérer l'image venant d'une WebCam. Ca j'ar determination du point d'intersection de plusieurs cercles dans une image (traitement d'image) [ par noussagh ] Bonsoir Comment je peux déterminer les coordonnées du point d'intersection de plusieurs cercles sur une image binarisée? Programmation du calcul de la matrice de cooccurrence pour une image couleur [ par aylan ] J ai programmé la matrice de cooccurrence pour une image bmp. Maintenant, je veux la programmer pour des images couleurs, mais je n'arrive à le faire. reconaissance d'objet [ par jbflo ] Bonjour! Joyeux noël! programme en c, mode console Mon objectif n'est pas seulement de lancer mon webcam Mais de faire un programme de reconnaiss Problème avec pointeurs private dans une classe [ par vvdbvivien07 ] Bonjour, Je suis en train de réaliser un traitement d'image en c++ et voici mon problème: L'utilisateur doit rentrer le nom d'un fichier pgm et le pr [Socket] Envoi d'image par requête http post [ par sleepersh ] Alors voilà, je viens poster ici car vous êtes sûrement ma dernière chance. Ca fait des jours que je cherche une solution à mon problème mais rien, pe problem dans le chargement d'une image 3ds [ par arkhaoula ] bon jour , j'ai realisé un programme en c avec la bib opengl qui faire le chargement d'une image de type 3ds mais le problem que la foncion louad3ds q [C++ vers Bar]création d'une image de synthèse au format .df3 sous Povray à partir d'un fichier .inc ou .tab [ par alex2229 ] je voulais savoir si par hasard quelqu'un avait déjà réaliser ce genre de programme pour Povray. Cordialement, alex color image [ par DevMln ] bonjour je cherche comment calculer le nombre de couleur unique qui existe dans une image couleur merci Récupéré le nom d'une image. [ par Azxx ] Bonjour, Je suis en train de réaliser un projet en C# sous visual studio 2010. Voici mon problème : J'ai une image contenu dans un boutton (Button.im


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,415 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales