Photographie Numérique
Sciences Numériques et Technologie
Willard S. Boyle Co-inventeur du
capteur CCD avec Georges E.
Smith dans les laboratoires Bell
en 1969
Sciences Numériques et Technologie
Retrouvez ces diapos sur
jusdeliens.com/mjsnt2021
Photographie Numérique
• Développement d’un programme Python pour détecter un obstacle
• Entrées : image caméra
• Contrôleur et capteur : Carte ESP32-CAM Wifi avec caméra intégrée
• Sorties : afficher la présence d’un obstacle et la position
Cahier des charges du projet
Photographie Numérique
Schéma fonctionnel
Capteur
Capter des images
Données
Transmettre les images captées
Algorithme
Détecter un obstacle à partir des images reçues
Photographie Numérique
Architecture matérielle
Serveur IOT ESP32-Cam
ESP32-Cam
Routeur wifi
PC
Programme Python
PC
Programme Python
Commutateurs routeur Internet
Photographie Numérique
• 3 séances de 1h
• 1 carte pour 4-5 personnes, travail individuel
• 1ere séance
• Prise en main des outils
• Brainstorming : quel algorithme pour détecter un obstacle ?
• 2e séance :
• Réalisation du programme
• Dernière séance :
• Présentations : 3 min pour présenter le travail effectué
• Evaluation individuelle au format QCM et réponses courtes
Organisation
Photographie Numérique
Développez votre programme en ligne sur
repl.it/@jusdeliens/pyscopx
Photographie Numérique
Développez votre programme en ligne
4) Exécutez votre programme
1) Connectez vous : Sign up -> log in
2) Editez votre programme : - Changer "CamXXXX"
- Changer « PrenomNOM"
- Implémenter l’algorithme
3) Renommer votre programme
5) Utiliser la console pour vérifier la sortie de votre
programme
Photographie Numérique
Visualiser votre caméra en ligne sur https://jusdeliens.com/play/pyscopx/
Username : « mariejo »
Password : « riennestacraindre » Identifiant : « PrenomNOM »
Caméra : « CamXXXX »
Remplacer par les 2 lettres et 2 chiffres inscrits
au dos de la platine Remplacer par votre
prénom et nom
Photographie Numérique
Visualiser votre caméra en ligne
1) Observer l’image de votre caméra en temps
réel
2) Observer le filtre pour vérifier votre
algorithme
NE PAS UTILISER CETTE INTERFACE Travailler uniquement sur
pyscopx.jusdeliens.com
Photographie Numérique
Comprendre l’algorithme pyscopx en langage naturel
Se connecter à la caméra avec les identifiants spécifiés Répéter tant que le programme est en run
Récupérer les données de la caméra Si la camera est connectée
Afficher la taille de l’image reçue Générer une couleur aléatoire
Répéter pour chaque colonne de l’image Répéter pour chaque ligne de l’image
Si la luminosité du pixel à la ligne et colonne est supérieure à 50 Changer la couleur du pixel du filtre à la ligne colonne en cours par la couleur générée aléatoirement
Sinon
Changer la couleur du pixel du filtre à la ligne colonne en cours par la couleur noir
Photographie Numérique
Comprendre l’algorithme pyscopx en algorigramme
Se connecter à la caméra avec les identifiants spécifiés
Récupérer les données de la caméra la caméra est connectée ? Afficher la taille de l’image reçue
Générer une couleur aléatoire
Répéter pour chaque colonne x
Répéter pour chaque ligne y Luminosité est supérieure à 50 ?
Le programme est en run ?
Colorier pixel en x,y en noir Colorier pixel en x,y avec la couleur aléatoire
Après avoir répéter pour toutes les
colonnes
Après avoir répéter pour toutes les lignes
NON
OUI NON
OUI OUI
Photographie Numérique
Modifier l’algorithme pyscopx pour détecter un obstacle
Se connecter à la caméra avec les identifiants spécifiés Répéter tant que le programme est en run
Récupérer l’image de la caméra Si la camera est connectée
Afficher la taille de l’image reçue
Initialiserla variable nPixelObstacle à 0 Répéter pour chaque colonne de l’image
Répéter pour chaque ligne de l’image
Si la luminosité du pixel à la ligne et colonne est supérieure à 50 Incrémenter la variable nPixelObstacle
Sinon
Changer la couleur du pixel du filtre à la ligne colonne en cours par la couleur noir Si nPixelObstacle est supérieur à 1000
Ecrire dans la console « Obstacle présent » Sinon
Ecrire dans la console « Pas d’obstacle » Seuil de détection
Photographie Numérique
Modifier l’algorithme pyscopx pour détecter un obstacle
Répéter pour chaque colonne x
Répéter pour chaque ligne y Luminosité est supérieure à 50 ?
Colorier pixel en x,y en noir Incrémenter variable nPixelsObstacle
Après avoir répéter pour toutes les
colonnes
Après avoir répéter pour toutes les lignes
OUI NON
nPixelsObstacle supérieur à 1000
Ecrire dans la console «Pas d’obstacle» Ecrire dans la console « Obstacle présent »
OUI NON
Initialiser variable nPixelsObstacle à 0
…
Le programme est en run ?
Photographie Numérique
Améliorer l’algorithme pyscopx pour détecter un obstacle
• Définir le seuil de détection d’obstacle en fonction de la taille de l’image
• Remplacer 1000 par une formule tenant compte de la définition de la dernière image reçue
• Diviser l’image en 2 parties (gauche et droite) et
compter le nombre de pixels d’obstacle dans chacune
• Si le nombre de pixels d’obstacle est plus grand qu’un seuil (fonction de la définition de chaque partie), alors afficher « obstacle à gauche » ou « obstacle à droite » selon la partie concernée
LANGAGE, PROGRAMMATION, PHOTOGRAPHIE NUMERIQUE
Les prérequis à comprendre pour réaliser ce projet
Photographie Numérique
Image, pixel, couleur RVB et luminosité
x
y
(x=0,y=0)
(x=0, y=hauteur)
(x=largeur, y=0)
Photographie Numérique
Pyscopx et les fonctions et variables camera
• camera = pyscopx.Camera("CamXXXX", "PrenomNOM")
Se connecte à la caméra avec les identifiants spécifiés
• camera.actualiser()
Fonction pour actualiser les données de la caméra (images, infos de connexion…) et réinitialiser le filtre à la dernière image reçue
• camera.lirePixelRouge(x,y)
• camera.lirePixelVert(x,y)
• camera.lirePixelBleu(x,y)
• camera.lirePixelLuminosite(x,y)
Fonctions renvoyant la composante correspondante (rouge, vert, bleu, luminosité, teinte, saturation) du pixel dans la dernière image reçue à la colonne x et ligne y
• camera.ecrirePixel(x,y, rouge,vert,bleu)
Fonction pour colorier le pixel du filtre à la colonne x et ligne y, avec la couleur spécifiée en rouge vert bleu
• camera.largeur
Variable contenant le nombre de colonnes dans l’image
• camera.hauteur
Variable contenant le nombre de lignes dans l’image
Langages et programmation
Les types de base
• Les types « str » pour ‘’string’’ (ou chaine de caractères)
• Les types « int » pour ‘’integer’’ (ou entier)
• Les types « float » pour ‘’float’’ (ou flottant)
Langages et programmation
Les entrées/sorties
• Sortie d’affichage
• Entrée au clavier
Langages et programmation
Les variables
• Affectation
• Opérations
Langages et programmation
Structures de contrôle : les conditions
ATTENTION : la tabulation représente ce qui est dans le bloc du « SI ALORS »
Langages et programmation
Structures de contrôle : les tests
ATTENTION à mettre 2 signes ‘’=‘’ pour le test
‘’!=‘’ signifie
‘’différent de’’
Langages et programmation
Structures de contrôle : les boucles
ATTENTION : la tabulation représente ce qui est dans le bloc de la boucle
Photographie Numérique
• Mots clés du langage Python : import, print, while, if, else, for
• Notions de variables : affectation, opérateurs
• Conditions, tests et boucles : comparaison, bornées/non bornées, indentation, seuil
• Notion de fonctions : syntaxe, utilisation, renvoie de valeur
• Photographie numérique : définition, résolution, filtre, pixel, couleur, luminosité
Notions à comprendre et retenir
Photographie Numérique
• Evaluation pour tester vos connaissances et votre compréhension du projet réalisé au format QCM
• Soutenance projet de 3 min par personne
Prochaine séance
Modalités d’évaluation
Soutenance de projet
Recherche de contenu
Recherche de sources différentes en rapport avec la thématique: tutoriels, codes … 1 Appropriation des ressources collectées : traitement, choix et analyse 1 Organisation Démarche de travail en amont : planification, organisation du travail 3 Communication Niveau de langue oral et écrit : vocabulaire précis , clarté du langage, fautes d’orthographe 3 Voix et attitude : parler fort, regarder son auditoire, ton dynamique 3 Respect du plan
Introduction : cahier des charges
Développement : organisation, état initial, solutions développées, état final
Conclusion : difficultés rencontrées, ce qui a été compris et pas compris, évolutions possibles
4
Respect du temps : + ou – 1 min 2
Questions Réponses aux questions posées 3