Pour mes études, j'ai décidé d'étudier un système de triage optique utilisé dans l'industrie agro-alimentaire et je dois en faire une sorte de reproduction simplifiée. Je vous explique le principe : je fais glisser des haricots blancs le long d'une rampe, ils passent devant une webcam qui serait reliée à Arduino (ou directement une caméra genre VGA OV7670). Je voudrais alors que la carte analyse l'image filmée pour détecter la présence ou non de noir sur le haricot (haricot avec du noir = pas bon). S'il y a effectivement du noir, j'aimerai avoir par exemple une LED rouge qui s'allume (au moins au début et peut-être a posteriori un vérin ou un souffleur permettant d’éjecter les haricots mauvais).
Pour cela, je pense faire compter par la carte le nombre de pixels noirs (ou considérés comme étant noirs) sur les images captées par la caméra et dire qu’à partir d’un certain seuil, le haricot est considéré comme étant mauvais.
Alors ça c'était la partie théorique mais pour ce qui est de la réalisation, c'est (beaucoup) plus flou étant donné que je n'ai jamais utilisé Arduino ... Je suis en train d'étudier l'excellent tuto du site du zéro (un grand merci à Astalaseven, Eskimon et olyte ) mais j'aimerais savoir plusieurs choses :
Ce que je veux faire est-il possible (j'ai cru comprendre qu'arduino avait du mal avec le traitement d'image mais ici ce ne serait pas très lourd je pense) ?
Si oui, quelle carte Arduino choisir ?
Est-il une bonne idée d’utiliser une caméra VGA OV7670 ?
Merci à tous ceux qui auront pris le temps de me lire
Ce projet n'est définitivement pas à la porté d'une carte arduino classique, Due peut être mais j'en suis même pas sûr ...
Entre les calculs de matrice, l'acquisition du signal vga, la détection des couleurs, etc etc ça va demander un sacré paquet de temps cpu.
2 choix :
Utiliser une carte arduino mega et faire des acquisitions à très très faible fréquence en utilisant au maximum le matériel bas niveau (pas les fonctions arduino).
Utiliser une carte plus puissante style STM32F4 qui possède un contrôleur pour caméra intégré
Remarque : bien faire attention de prendre la version avec mémoire FIFO sinon tu ne pourras jamais respecter les timings à +40MHz du vga
Quelques info : OV7670 Camera + mbed LPC1768 over USB | Mbed
Tout d'abord merci pour vos réponses
Je risque d'être un peu serré niveau budget pour une carte puissante et d'après ce que j'ai compris en farfouillant sur le net, il est plus facile de programmer avec le module de reconnaissance de couleur, je pense que je pense donc faire comme a dit Christian du coup. Une Uno suffit du coup non ? Et pour ce qui est du capteur, il m'en faut un comme ça (cf photo jointe) ?
Floarduino:
Ce que je veux faire est-il possible (j'ai cru comprendre qu'arduino avait du mal avec le traitement d'image mais ici ce ne serait pas très lourd je pense) ?
Si oui, quelle carte Arduino choisir ?
Est-il une bonne idée d’utiliser une caméra VGA OV7670 ?
...
Merci à tous ceux qui auront pris le temps de me lire
bonsoir
du gros traitement d'image couleur, comme indiqué par skywodd ce n'est pas à la portée d'un arduino.
Ceci etant si je devais essayer de résoudre ce "challenge" (arduino et budget cheap ) et apres reflexion rapide ,je me tournerais vers l'utilisation d'un capteur de souris optique en faisant "simplement" du traitement/detection de seuil de contraste sur matrice 16X16.
voir ce lien pour debuter une reflexion http://www.bidouille.org/hack/mousecam
ceci etant , l'ecueil le plus gros que je vois avec cette méthode est surement celui d'adapter une optique meme rudimentaire utilisable pour cette application, mais ça doit etre un bon exercice.
J'ai trouvé une vieille souris à capteur optique donc je vais tenter, en tout cas j'aime beaucoup l'idée Donc une Uno suffirait, pour le capteur de la souris comme pour le capteur cité plus haut ?
Floarduino:
J'ai trouvé une vieille souris à capteur optique donc je vais tenter, en tout cas j'aime beaucoup l'idée Donc une Uno suffirait, pour le capteur de la souris comme pour le capteur cité plus haut ?
Perso, j'ai juste testé par curiosité et en cannibalisant une vieille logitech (et pas aujourd'hui ) l'acquisition/communication du capteur vers uno.
Donc si tu veux essayer cette voie, déjà ouvrir "ta souris" et voir si elle "couine dans le poste" 8)
Attention néanmoins et je me répète, même si intellectuellement l'idée acquisition capteur en 16X16 64 est peut etre recevable , la partie adaptation optique "n'est pas gagnée" sans connaissance/aide spécifique dans ce domaine 8)
Ma souris ne marche pas ... Est-ce que ce ne serait pas plus simple de le faire avec un capteur spécialement dédié à Arduino et pas beaucoup plus cher qu'une nouvelle souris ? Si oui, le modèle que j'ai trouvé convient-il ?
Christian_R:
Je n'y connais rien en haricots blancs
XD Je suis pas un grand spécialiste non plus hein
Bah il doit exister d'autres méthodes mais ma présentation concerne uniquement la partie tri suivant la couleur (le système d'origine est la sortex Z+ Page not found ) donc il n'y a pas d'échappatoire de ce côté
Franchement l'Arduino n'est pas vraiment adaptée à ce genre de tâche.
Je suggérerais la CMUCAM elle fait la partie traitement d'image et l'arduino ferait la prise de décision. Mais ce n'est pas vraiment adapté à un budget limité comme tu le disais.
L'autre solution peut être mieux adaptée et du même ordre de prix qu'une Arduino c'est une carte Raspberry Pi avec une webcam. Là tu peux faire du vrai traitement d'image, il y a des librairies adaptées.
Et si le haricot a une tache noire du coté non visible par la caméra ?
XD Bah en fait normalement sur le système d'origine il y a une caméra de chaque côté mais là je vais faire un seul côté mais il suffirait de faire un autre système de l'autre côté
fdufnews:
Franchement l'Arduino n'est pas vraiment adaptée à ce genre de tâche.
...
L'autre solution peut être mieux adaptée et du même ordre de prix qu'une Arduino c'est une carte Raspberry Pi avec une webcam. Là tu peux faire du vrai traitement d'image, il y a des librairies adaptées.
Je vais essayer ça alors, merci mille fois pour tous vos conseils
Artouste:
Ceci etant si je devais essayer de résoudre ce "challenge" (arduino et budget cheap ) et apres reflexion rapide ,je me tournerais vers l'utilisation d'un capteur de souris optique en faisant "simplement" du traitement/detection de seuil de contraste sur matrice 16X16.
voir ce lien pour debuter une reflexion http://www.bidouille.org/hack/mousecam
ceci etant , l'ecueil le plus gros que je vois avec cette méthode est surement celui d'adapter une optique meme rudimentaire utilisable pour cette application, mais ça doit etre un bon exercice.
18x18 pixels je gagne
Floarduino:
Je risque d'être un peu serré niveau budget pour une carte puissante et d'après ce que j'ai compris en farfouillant sur le net, il est plus facile de programmer avec le module de reconnaissance de couleur, je pense que je pense donc faire comme a dit Christian du coup.
Sinon une carte STM32F4 c'est 12€, soit la moitié du prix d'une carte arduino
Je ne suis pas sur Linux, ça pose problème ? C'est aussi simple d'utilisation qu'une Arduino une STM32F4 ou une A13-OLinuXino-MICRO ? Et si je prends une STM32F4, je prends quoi avec, un capteur de couleur, une webcam ou une caméra vga ?
skywodd:
Sinon une carte STM32F4 c'est 12€, soit la moitié du prix d'une carte arduino
Mais elle doit être moins performante non ? Parce qu'au pire les 25 euros d'une Arduino ça me va si ça marche ...
Pas assez chère mon fils cela me rappelle une pub
Les performances d'un CPU ne sont pas toujours proportionnelles à son prix
Floarduino:
Je ne suis pas sur Linux, ça pose problème ? C'est aussi simple d'utilisation qu'une Arduino une STM32F4 ou une A13-OLinuXino-MICRO ? Et si je prends une STM32F4, je prends quoi avec, un capteur de couleur, une webcam ou une caméra vga ?
Pour Linux cela se soigne...
Pour le choix du capteur il est fonction des performances que tu veux attendre.
Un capteur de couleur c'est 1 pixel il intègre la couleur de tout ce qui est placé dans son champs de vision. Donc si tu veux distinguer des points noirs de petite taille il faut oublier. il faut que les tâches que tu cherches perturbent suffisamment la couleur de l'élément pour que ce type de capteur soit exploitable. Comme la couleur des haricots peut subtilement varier d'un haricot à un autre bonne chance....
Pour le choix d'une caméra, il est fonction des capacités de traitement de ton CPU. Pas la peine de prendre un capteur méga pixel avec un arduino. Mais la résolution que tu cherches à obtenir va aussi conditionner ton choix. Le haricot est-il seul dans le champs? Quelle est la taille des tâches que tu cherches à discerner?
fdufnews:
Les performances d'un CPU ne sont pas toujours proportionnelles à son prix
Va pour une STM32F4 alors
fdufnews:
Mais la résolution que tu cherches à obtenir va aussi conditionner ton choix. Le haricot est-il seul dans le champs? Quelle est la taille des tâches que tu cherches à discerner?
Oui, je ferai tomber les haricots un à un. Pour ce qui est des tâches, ce serait de l'ordre du millimètre de diamètre si possible, si c'est un peu plus ce n'est pas très grave.
Bonjour
Au lieu d'utiliser une camera, utilises une cellule de scanner; le haricot défile devant. Avec une bonne optique, le haricot est balayé (optiquement) complètement, la cellule fournit un signal cyclique (balayage) dont la valeur dépend de la lumière. Avec des comparateurs tu définis les niveaux "blanc haricot" (max et min), le niveau blanc "pas de haricot", le niveau '"tache haricot", etc.
Mais, haricot par haricot, t'as pas fini ! (combien de haricots dans un kilo de haricots).
A+
lve123:
Bonjour
Au lieu d'utiliser une camera, utilises une cellule de scanner; le haricot défile devant
...
Mais, haricot par haricot, t'as pas fini ! (combien de haricots dans un kilo de haricots).
A+
Pas mal l'idée du scanner Pour ce qui est du temps passé, l'objectif c'est vraiment de créer quelque chose qui montre que réaliser un tri optique des haricots est possible, pas quelque chose qui est prêt à être utilisé par des entreprises (le système de laboratoire en quelque sorte, pas le système industriel).