Go Down

Topic: Traitement d'image [conseil] (Read 2171 times) previous topic - next topic

May 23, 2013, 09:17 pm Last Edit: May 23, 2013, 10:11 pm by Floarduino Reason: 1
Bonjour à tous,

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 :)

skywodd

Bonjour,

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 : http://mbed.org/users/edodm85/notebook/ov7670-camera-module/
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Christian_R

Peut être qu'un simple module de reconnaissance de couleur pourrait faire le boulot ?
Christian

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) ?

Encore merci pour votre aide.

Artouste



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   :smiley-mr-green: ) 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.  :smiley-mr-green:



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 ?

Artouste

#6
May 24, 2013, 10:00 pm Last Edit: May 24, 2013, 10:03 pm by Artouste Reason: 1

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  :smiley-mr-green: ) l'acquisition/communication du capteur vers uno.

Donc si tu veux essayer cette voie, déjà ouvrir "ta souris"  :smiley-mr-green:  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 ?

Et encore merci pour l'aide  :D

Christian_R

Je n'y connais rien en haricots blancs :smiley-mr-green:
Est ce que la différence de couleur est le seul moyen de distinguer les mauvais ?
(ex, différence de densité ?)
Christian


Je n'y connais rien en haricots blancs :smiley-mr-green:


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+ http://www.buhlergroup.com/global/en/process-technologies/optical-sorting.htm ) donc il n'y a pas d'échappatoire de ce côté  :P

chabot380

salut les racistes !  :smiley-mr-green:

Et si le haricot a une tache noire du coté non visible par la caméra ?  :smiley-eek:

A+
ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

fdufnews

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.


salut les racistes !  :smiley-mr-green:

Et si le haricot a une tache noire du coté non visible par la caméra ?  :smiley-eek:

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é


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  :)

skywodd


Ceci etant si je devais essayer de résoudre ce "challenge" (arduino et budget cheap   :smiley-mr-green: ) 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.  :smiley-mr-green:

18x18 pixels je gagne :smiley-mr-green:
http://skyduino.wordpress.com/2011/06/07/transformer-une-souris-en-micro-webcam/


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 ;)

Ou solution ultime (le Raspi c'est dépassé :P) :
https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-MICRO/
+ webcam de pas trop mauvaise qualité
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

#14
May 25, 2013, 03:23 pm Last Edit: May 25, 2013, 03:38 pm by Floarduino Reason: 1

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 ...


Ou solution ultime (le Raspi c'est dépassé :P) :
https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-MICRO/
+ webcam de pas trop mauvaise qualité

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 ?

Go Up