Images avec Arduino

Bonjour, je suis en Terminale SI et mon projet est un système qui va "lire" un texte qui est écrit normalement (je veut dire comme celui-ci par exemple) et va le traduire en Braille sur une plaque; je vais utiliser une carte arduino pour reconnaître les lettres (je pense en différenciant le noir du blanc sur une image ou bien comparer avec des images pré-enregistrées) et je voulais savoir de quelle façon je pourrais réaliser ce programme.
Merci d'avance pour la/les réponse(s).

Si la traduction avait été simplement de rentrer du texte dans l'arduino à partir d'une console et de l'afficher en braille je pense que cela aurait été possible mais reconnaitre du texte écrit demande quand même pas mal de ressources. Aussi bien en puissance de calcul qu'en taille mémoire pour stocker les images et les manipuler. La plateforme Arduino n'est pas trop adaptée à ce genre de tâche. Il serait je pense plus sûr de partir sur une plateforme de type Raspberry Pi.

Si je ne me trompe, le braille est une écriture en 3 dimensions, et "reconnaitre" un texte considéré au départ comme une image s'apparente à de la reconnaissance de formes.

Une fois le texte plus ou moins reconnu, il devrait être possible de le "traduire" en caractères brailles avec un dictionnaire, puis l'inscrire ligne par ligne sur une plaque avec une imprimante 3D, reste à reconnaître ledit texte.

La reconnaissance de forme est un sujet compliqué, en dehors de la puissance de calcul nécessaire, donc c'est plutôt un périphérique d'un arduino qui pourrait éventuellement le faire (voir camera PIXY2 par exemple).

En conclusion, sauf si je n'ai pas bien compris ta question ou si quelqu'un connait une solution beaucoup plus évidente que celle ébauchée, automatiser ce que tu veux faire me semble d'un niveau un peu élevé pour un élève et le budget d'un élève de terminale. Peut-être faudrait-il simplifier ton projet.

Si tu peux modifier le sujet, je suggère de faire de la reconnaissance vocale et traduction en braille. C'est réalisable sur une base ESP8266 ou ESP32. On trouve pas mal de choses pour la reconnaissance vocale sur ces processeurs.

fdufnews, en fait j'ai déja choisi arduino donc je ne peut plus (ou difficilement) changer de matériel. Mais merci quand même

ard_newbie, le problème n'est pas la traduction en soit du texte en texte en Braille car je vais faire le système qui va afficher avec des LED si le programme traduit la bonne lettre (car je vais me limiter à la reconnaissance d'une lettre à la fois) et la partie qui va montrer le système pour afficher les caractères va être réalisée sur SolidWorks. Mais est-ce qu'il existe quand même un moyen de réussir à reconnaître les lettres sans ajout de matériel? (car c'est quasi impossible comme je l'ai dit avant).

lesept, changer de matériel est déjà difficile alors changer de sujet..., mais même sans cela, je ne vois pas très bien l’intérêt du système que tu propose. (c'est surement moi qui ne comprends pas ^^)

Gabriel51:
Mais est-ce qu'il existe quand même un moyen de réussir à reconnaître les lettres sans ajout de matériel? (car c'est quasi impossible comme je l'ai dit avant).

Cherche sur internet "pattern recognition" pour voir ce qui est proposé. A mon avis, sous certaines conditions restrictives (quelques lettres toujours de la même taille, bien différenciées, etc..) ça devrait pouvoir se faire avec la puissance de calcul et la mémoire d'une carte DUE par exemple, MAIS ça va te demander beaucoup d'efforts car à ma connaissance il n'existe pas de bibliothèques déjà écrites, et pas sur que ce soit du niveau d'un élève de terminale.

Gabriel51:
... je vais me limiter à la reconnaissance d'une lettre à la fois) et la partie qui va montrer le système pour afficher les caractères
... Mais est-ce qu'il existe quand même un moyen de réussir à reconnaître les lettres sans ajout de matériel? (car c'est quasi impossible comme je l'ai dit avant).

Bonsoir
Projet très très (trop ?) ambitieux
surtout avec avec la base arduino à laquelle tu te contraint :grin:

Une voie de reflexion que je vois est peut etre d'utiliser une souris optique à base d'ADNS

J'ai déjà joué avec le concept

attention néanmoins à bien comprendre/assimiler où sont situées les difficultés :

  • Faire de l'acquisition matricielle de niveau de gris , çà reste relativement ...simple 8)

  • Deriver ces niveaux de gris vers la reconnaissance d'un caractère univoque/connu, c'est déjà une autre paire de manche :grin:

  • Afficher "en braille" un caractére (re)connu, c'est la partie simple

Gabriel51:
lesept, changer de matériel est déjà difficile alors changer de sujet..., mais même sans cela, je ne vois pas très bien l’intérêt du système que tu propose. (c'est surement moi qui ne comprends pas ^^)

Ben pour les sourds et aveugles !!! (on les oublie souvent)

Non, c'est pour rendre le problème plus simple, car je te sens mal barré avec la reconnaissance de caractères sur Arduino. Avec un ESP32 éventuellement, mais rien que la programmation n'est pas simple. Alors le portage sur un microcontrôleur...

Honnêtement, tu devrais discuter avec ton prof pour simplifier le problème, et éviter d'avoir une banane...

Pour être honnête je ne comprends même pas que le prof puisse laisser choisir un tel sujet.
Faut croire qu'il n'y a pas que les élèves qui ne réalisent pas la difficulté de la chose.

fdufnews:
Pour être honnête je ne comprends même pas que le prof puisse laisser choisir un tel sujet.
Faut croire qu'il n'y a pas que les élèves qui ne réalisent pas la difficulté de la chose.

+1 avec toi :grin:
Encore faudrait il connaitre exactement ou du mieux possible , comment se déroule "la phase d'attribution/distribution" vers tel ou tel "projet"
les "malcomprenants" :smiley: pouvant surement se situer à différents "échelons"

Gabriel51:
fdufnews, en fait j'ai déja choisi arduino donc je ne peut plus (ou difficilement) changer de matériel. Mais merci quand même

Et bien voilà la première erreur que vous pourrez documenter dans votre rapport de stage pour expliquer pourquoi cela a été un échec...

—> choix de la plateforme arbitraire sans analyse des besoins et donc sans compréhension de la puissance de traitement nécessaire.

Ce sera toujours un plus de montrer qu’on apprend de ses échecs...:wink:

Plus sérieusement (même si je le suis ci dessus), soit vous vous limitez à un démonstrateur théorique qui suppose l’existence D’un autre module qui se charge de l’OCR et vous envoie un flux ASCII (UTF8 ou 16 en fait si vous voulez traiter les Lettres diacritées propres au français et symboles type @ ce qui va encore plus compliquer - peut-être se limiter aux chiffres et majuscules sans accents ni cédilles ), soit vous changez de plateforme...

@Gabriel51: Tu nous dis, voir réponse #4, je cite:

Mais est-ce qu'il existe quand même un moyen de réussir à reconnaître les lettres sans ajout de matériel?

Reconnaître une forme complexe (ex une lettre) nécessite à priori de travailler sur une image, donc d'utiliser une caméra, donc comment comptais-tu t'y prendre sans caméra ??

As-tu regardé ce que tu peux faire en raccordant une PIXY2 à un arduino UNO ?
C'est une caméra à laquelle tu commences par apprendre à reconnaître certaines formes, puis tu lui soumets des formes parmi celles déjà reconnues et elle t'indique laquelle est laquelle à travers sa connection avec arduino.

Il y a peut être quelque chose à creuser ici avec un ESP32 et une micro caméra OV7670

@lesept le titre au-dessus de la vidéo c'est : This project shows how to interface the cheap OV7670 camera with FIFO using an ESP32 and display the image on an SPI TFT. Donc à priori ça ne va pas jusqu'à intégrer un algorithme de reconnaissance de forme.

Un extrait de la présentation de la PIXY2:

la caméra Pixy 2 est architecturée sur la base d'un super capteur vidéo Aptina™ MT9M114, 1/4", 1296 x 976 pixels associé à un processeur NXP™ LPC4330 dual core vous permettant ainsi très facilement de suivre des lignes, des objets de couleur ou encore reconnaître des formes par exemple.

Caractéristiques:

  • Processeur: NXP LPC4330 - 204 MHz - dual core
  • RAM: 264 K bytes
  • Flash: 2 M bytes
  • Capteur vidéo: Aptina MT9M114 - 1/4" - 1296 x 976 pixels
  • Champ de vision de la lentille: 60° horizontal, 40° vertical
  • Type de lentille: M12
  • 2 Leds blanche
  • Consommation: 140 mA typ.
  • Alimentation: Via USB (5 V - Câble non livré)
  • Sorties: UART serial, SPI, I2C, USB, digital, analog
  • Dimensions: 42x 38 x 15 mm
  • Poids: 10 g (24 g avec visserie et nappe)
  • Version: 2.2

Pour 50 Euros TTC, je ne pense pas qu'on puisse trouver beaucoup mieux aujourd'hui.

ard_newbie:
@lesept le titre au-dessus de la vidéo c'est : This project shows how to interface the cheap OV7670 camera with FIFO using an ESP32 and display the image on an SPI TFT. Donc à priori ça ne va pas jusqu'à intégrer un algorithme de reconnaissance de forme.

C'est vrai, mais je pense que notre ami doit fournir un minimum de travail sur ce projet. Il ne s'agit pas forcément d'une reconnaissance de caractères manuscrits, on peut imaginer, compte tenu de la difficulté du projet, une reconnaissance sur des caractères "formattés", comme par exemple des points ou carrés noirs dans une matrice N*M qui forment la lettre.
Dans un cas simplifié comme celui-ci, l'ESP32 peut faire de belles choses et il y a du travail de programmation pas forcément simple.

Bonsoir

L'esp32 avec camera (AI Thinker, TTGO, M5 Stack....)
-vient juste de sortir,
-est très économique (8€ pour l'ESP32 CAM' d'AI Thinker avec camera OV2640 incluse !!!)
-a du potentiel : içi déjà une reconnaissance de QRcode !!!
dépot içi
+Certains travaillent à un OpenMV sur ESP32

Bemol : tout ça est excitant mais c'est très récent , imparfait et encore 'expérimental' de plus la mise en oeuvre est sous IDF Espressif, pas encore sous IDE Arduino

Se lancer sur cette piste implique d'accepter d'essuyer les plâtres et se débrouiller plus ou moins seul...
Donc probablement pas pour les projets scolaires de 2018/2019 à moins d'une percée du soft.
ESP32 CAM.jpg

al1fch:
Bonsoir

L'esp32 avec camera (AI Thinker, TTGO, M5 Stack....)
-vient juste de sortir,
-est très économique (8€ pour l'ESP32 CAM' d'AI Thinker avec camera OV2640 incluse !!!)
-a du potentiel : içi déjà une reconnaissance de QRcode !!!
dépot içi
+Certains travaillent à un OpenMV sur ESP32

Bemol : tout ça est excitant mais c'est très récent , imparfait et encore 'expérimental' de plus la mise en oeuvre est sous IDF Espressif, pas encore sous IDE Arduino

Se lancer sur cette piste implique d'accepter d'essuyer les plâtres et se débrouiller plus ou moins seul...
Donc probablement pas pour les projets scolaires de 2018/2019 à moins d'une percée du soft.

:grin:

Salut Al1
T'es un peu ch....nt quand même :smiley:

on sort pas çà un dimanche soir

OK Artouste, la prochaine sera ... en début du repos dominical !

Désolé de répondre aussi tardivement, en fait j'ai déjà choisi la camera (https://www.technologieservices.fr/camera-serie-grove-275626.html) mais elle ne fait que prendre l'image en photo et comme je ne peut pas changer la liste de matériel, j'aimerais savoir s'il existe une fonction qui permet d'analyser la couleur ou bien le contraste des pixels d'une image?

Donc pour résumer vous avez choisi et acheté du matériel sans vous soucier de savoir s'ils correspondait au besoin ? (cf mon post #10...)

vous avez déjà choisi l'arduino aussi? Un Uno je suppose ?

La caméra que vous avez choisie est une caméra "série". Elle permet par exemple de prendre des photos et de les stocker sur une carte SD.

Vous avez un code d'exemple ici qui prend une photo pour la sauver sur carte SD au format JPEG

ses spécifications:

Pixel: 300,000
Résolution:

  • 640 x 480
  • 320 x 240
  • 160 x 120
    Réglage du focus manuel
    Uart Baud Rate: 9600~115200

En supposant que vous arriviez à traiter l'image, même en 160 x 120 en représentant les pixels en noir et blanc (1 bit) il faut 2400 octets pour stocker la photo... un UNO n'en a que 2048 au total ==> vous ne pouvez pas avoir la photo en mémoire...

Sur un Mega il y aurait déjà un peu plus de place mais ce sera super short.. faudra travailler par petits bouts en jouant avec la carte SD.. ce sera super lent..

de plus la caméra ne vous donne pas les pixels natifs mais un JPEG... faudra décoder... et pour ça faut de la mémoire... par exemple cette librairie de décodage JPEG (Arduino JPEGDecoder library) dit bien que ça ne marche que sur des processeurs un peu plus puissants que le UNO ou MEGA de base...

bref - à mon avis il faut aller discuter avec votre prof et prévoir de prendre un Arduino très performant si vous voulez rester sur ce sujet avec cette caméra et le monde arduino