La détection des LED de statut de l'objet à partir d'une Image

Ma question est similaire à OpenCV: Détecter des lumières clignotantes dans un flux vidéo
openCV détecter des lumières clignotantes

Je veux détecter LED de statut on/off de toute image qui ont CONDUIT objet. Objet LED peuvent être de toute taille ( mais surtout cercle ). Il est important d'obtenir l'emplacement de tous les témoins de cette image même si elle peut être allumé ou ÉTEINT. Tout d'abord, je voudrais obtenir le statut et la position de la Led qui sont SUR seulement. Maintenant source de l'image est statique, pour mon travail, mais il doit être à partir de la vidéo de tout produit ayant Voyants lumineux. Donc, il n'y a aucune chance d'avoir le modèle de l'image afin de la soustraire à l'arrière-plan.

J'ai essayé à l'aide d'OpenCV (nouveaux OpenCV) avec seuil, des Contours et des Cercles de méthodes mais ne trouve pas réussie. Merci de partager si tout code source ou de la solution. La solution peut être n'importe quoi, non seulement à l'aide d'OpenCV, qui devrait donner le résultat pour moi. Il serait grandement apprécié.

La différence de deux autres question, c'est que je veux obtenir le numéro de la Led dans l'image qu'il peut être allumé ou ÉTEINT et le statut de tous les Voyants. Je sais que c'est très complexe. Tout d'abord j'ai essayé de détecter les Voyants lumineux de l'image. J'ai mis en place le code qui j'ai partagé ci-dessous. J'ai eu différentes implémentations mais code ci-dessous est en mesure de me montrer les Voyants lumineux juste en dessinant les contours, mais le nombre de contours sont plus que les Voyants lumineux. Je ne suis donc pas en mesure d'obtenir le nombre total de Voyants lumineux atleast. Merci de me suggérer vos entrées.

int main(int argc, char* argv[])
{

IplImage* newImg = NULL;
IplImage* grayImg = NULL;
IplImage* contourImg = NULL;
float minAreaOfInterest = 180.0;
float maxAreaOfInterest = 220.0;
//parameters for the contour detection
CvMemStorage * storage = cvCreateMemStorage(0);
CvSeq * contours = 0;
int mode = CV_RETR_EXTERNAL;
mode = CV_RETR_CCOMP; //detect both outside and inside contour
cvNamedWindow("src", 1);
cvNamedWindow("Threshhold",1);
//load original image
newImg = cvLoadImage(argv[1], 1);

IplImage* imgHSV = cvCreateImage(cvGetSize(newImg), 8, 3);
cvCvtColor(newImg, imgHSV, CV_BGR2HSV);

cvNamedWindow("HSV",1);
cvShowImage( "HSV", imgHSV );
IplImage* imgThreshed = cvCreateImage(cvGetSize(newImg), 8, 1);

cvInRangeS(newImg, cvScalar(20, 100, 100), cvScalar(30, 255, 255), imgThreshed);
cvShowImage( "src", newImg );

cvShowImage( "Threshhold", imgThreshed );

//make a copy of the original image to draw the detected contour
contourImg = cvCreateImage(cvGetSize(newImg), IPL_DEPTH_8U, 3);
contourImg=cvCloneImage( newImg );
cvNamedWindow("Contour",1);
//find the contour
cvFindContours(imgThreshed, storage, &contours, sizeof(CvContour), mode, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
int i = 0;
for (; contours != 0; contours = contours->h_next)
{
    i++;
    //ext_color = CV_RGB( rand()&255, rand()&255, rand()&255 ); //randomly coloring different contours      
    cvDrawContours(contourImg, contours, CV_RGB(0, 255, 0), CV_RGB(255, 0, 0), 2, 2, 8, cvPoint(0,0));
}
printf("Total Contours:%d\n", i);
cvShowImage( "Contour", contourImg );

cvWaitKey(0);
cvDestroyWindow( "src" ); cvDestroyWindow( "Threshhold" );
cvDestroyWindow( "HSV" );
cvDestroyWindow( "Contour" );
cvReleaseImage( &newImg ); cvReleaseImage( &imgThreshed ); 
cvReleaseImage( &imgHSV );
cvReleaseImage( &contourImg );



}
Ce qui n'a pas de travail pour vous? Pas de travail est plutôt vague, expliquer si vous avez eu des problèmes de mise en œuvre ou pourquoi vos tests dit nos réussir (au moins votre opinion à ce sujet). Aussi, ce qui est différent des deux autres questions ?
J'ai édité ma question et ajouté le code.
Pouvez-vous le mettre ici ce type d'images que vous travaillez avec? Plusieurs exemples.
Comme je suis un nouvel utilisateur, je ne suis pas autorisé à télécharger des images. Veuillez trouver le lien ci-dessous pour une image de l'échantillon. lien
Vous êtes à la recherche pour les led d'une seule couleur? Connaissez-vous cette couleur avant de commencer l'algorithme? Avez-vous un lot d'images à partir de la même place (ou de votre appareil au fil du temps ? )?

OriginalL'auteur jkstar | 2012-05-22