|
|||||||||||||
07-19-2012 01:18 PM - modifié 07-19-2012 01:21 PM
Salut à tous,
Je suis sur un nouveau projet (machine de vision) et j'ai vraiment besoin de l'aide pour réaliser mon projet (je suis novice en matière de vision)
Merci d'avance pour l'aide / informations / explication
Voila mon problème:
Je dois réaliser un banc de vision pour tester un afficheur LCD VFD en utilisation Labwindows/CVI et NI IMAQDX pour une camera Ethernet et NIIMAQ pour le traitement de l’image
Je mettre en pièce jointe une photo pour mon LCD VFD, le but de ce test c’est de s’assurer que tous les pixels sont fonctionnelles et que l’afficheur est bien assemblé, pour résumer
Deux test à faire :
1 ) test des pixels
2) test alignement
A première vue l’idée c’est de compter le nombre de pixels pour le test des pixels
Pouvez-vous m’indiquer les stratèges de tests possible et les fonctions NI IMAQ qui il faut pour faire mes test
Encore une fois je vous remercie d’avance pour toute contribution / explications / Informations utile
J’attends alors les sympa ![]()
le 07-20-2012 02:08 AM
Bonjour
L'image a t elle été faite avec la caméra définitive? Car si l'ecran LCD est monochrome, pas besoin d'une camera couleur. Tu perdrait en résolution.
Ensuite, je te conseille de faire du blob analysis pour compter les particules.
Il faut commencer par seuiller l'image pour isoler les pixels du fond, puis eventuellement un peu de morphologie pour supprimer les parasites. Enfin, compter les particules.
Toutes ces fonctions se trouvent dans les palettes de morphologie.
Bonne continuation
le 07-20-2012 05:48 AM
Merci toto69,
Je te confirme que l'LCD c'est de type monochrome, je viens de mettre une nouvelle capture en pièce jointe
J'ajoute aussi une petite précision c'est que j'utilise Labwindows et pas Labview ...
Peux-tu me dire ala faisabilité avec labwindows ?
Avez-vous un exemple en CVI ?
le 07-22-2012 05:03 AM
Salut à tous,
J'avance un peu, merci toto69 pour l'algo !
J'arrive à calculer le nombre des pixels dans mon image, par contre j'ai un autre problème pour definir le ROI.
En fait il est possible d'avoir une un pictogramme dans image et du coup mon programme retour pixels de plus ...
J'ai essayer d'utiliser les fonctions ROI, mais il me semble que je n'arrive pas tout seul !
Voici mon bout de code
ROI* mainROI1;
RotatedRect primaryRect = {215, 50, 100, 970, 0.00};
// dans le main
src=imaqCreateImage (IMAQ_IMAGE_U8, 3);
dest = imaqCreateImage (IMAQ_IMAGE_U8, 3);
mainROI1 = imaqCreateROI();
et voici le code du bouton Process
int CVICALLBACK Process (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
unsigned int min, max;
int connectivity;
FindTransformRectOptions TOptions = {40, 4, 2, 10, IMAQ_BOTTOM_TO_TOP, IMAQ_LEFT_TO_RIGHT, TRUE, FALSE, TRUE, TRUE};
Image* histogramMask;
switch (event)
{
case EVENT_COMMIT:
/* Clear any overlay on this image and display it */
// imaqClearOverlay(src, NULL);
/* Computes a coordinate transform based on the position */
/*of an object in a search area of an image */
//imaqFindTransformRect(src, primaryRect, &transform, IMAQ_FIND_REFERENCE, &TOptions, NULL);
/* Display the result you get from FindTransformRects */
imaqClearOverlay(src, NULL);
/* Get region of interest from image UI */
imaqRemoveContour (mainROI1, IMAQ_ALL_CONTOURS);
imaqAddRectContour (mainROI1, pRect);
/* Set ROI to the window */
imaqSetWindowROI (IMG_WINDOW, mainROI1);
histogramMask = imaqCreateImage (IMAQ_IMAGE_U8, 2);
imaqROIToMask (histogramMask,mainROI1,1,NULL,NULL);
imaqDisplayImage (histogramMask, IMG_WINDOW, TRUE);
/* Process the Threshold */
GetCtrlVal (panelHandle, PANEL_THRESHOLD_MIN, &min);
GetCtrlVal (panelHandle, PANEL_THRESHOLD_MAX, &max);
imaqThreshold (dest, histogramMask, (float)min, (float)max, TRUE, 255.0);
/* Get the particle reports */
GetCtrlVal (panelHandle, PANEL_CONNECTIVITY, &connectivity);
imaqCountParticles (dest, connectivity, &numParticles);
/* Display Results */
imaqDisplayImage (dest, 1, TRUE);
SetCtrlVal (panelHandle, PANEL_NUMPARTICLES, numParticles);
SetCtrlVal (panelHandle, PANEL_PARTICLENUM, 0);
SetCtrlAttribute (panelHandle, PANEL_PARTICLENUM, ATTR_DIMMED, (numParticles<=0));
SetCtrlAttribute (panelHandle, PANEL_PARTICLENUM, ATTR_MAX_VALUE, numParticles-1);
DisplayReport (0);
break;
}
return 0;
}
> Resultat 0 pixels !!!
Merci d'avance ![]()
le 07-23-2012 05:39 AM
Bonjour,
Content que mon aide soit utile. Cependant, je ne connais pas LabWindows, mais je pense que toutes les fonctions IMAQ sont les mêmes qu'en LabVIEW.
Pour ce qui est de la ROI, il faut la dessiner pour qu'elle englobe les charactères, sans prendre le pictogramme indésirable. Si le pictogramme touche le bord de ta ROI, il y a une option qui s'apelle "Remove Border Objects" en morphologie, qui te permet d'enlever les particules indésirables si elles touchent le bord de la ROI.
Sinon, il est possible de faire une ROI de petite dimension, et de la déplacer d'un charactère à l'autre avec une boucle. Mais ca demande plus de code.
07-23-2012 06:56 PM - modifié 07-23-2012 06:58 PM
OK toto, merci bien !
En fin j'arrive à trouver uen solution, ça peut être n'est pas TOP, mais elle me dépanne pour l'instant.
En fait j'ai definire une ROI, puis j'extraire la zone ROI et je le mettre dans une nouvelle image et enfin j'applique les traitement ...
Si quelqu'un de la communauté peut me fournir plus d'elemnts d'explication ?
Deux question de plus ça peut être bête mais bon, j'ai remarqué que la majorité des gens ici utilisent labview pour la vision
Est-ce que les performances sont mieux avec LabView ?, même API ?
ou bien le débat clasique Lbview VS Labwindows ?
Merci à tous
![]()
Mon Profil | Confidentialité |
Conditions d'utilisation |
Contacter NI
© 2011 National Instruments Corporation. All rights reserved. | Envoyer cette page
|
||

Envoyer cette page