PHYSIQUE_Ondes et Signaux_Chap 2 et 3 TP5 Python au service de nos chapitres d’optique… I. Traitement d’image Ouvrir l’image : vache.jpg et l’enregistrer dans un dossier à votre nom. 1. Rappeler quelles sont les trois couleurs primaires qui sont utilisées dans le modèle trichromique et quel type de synthèse (additive ou soustractive) est utilisée pour le rendu des couleurs dans les écrans LCD. 2. A chaque pixel est associé un code (n, m, l) avec n, m et l des entiers naturels compris entre 0 et 255. Le code (0, 0, 255) correspond au bleu. Le code (120, 0, 120) correspond au magenta. En déduire à quelle couleur chaque entier, n, m, l fait référence. 3. L’image peut être considérée comme une grille de x pixels sur y pixels Rechercher, parmi les propriétés de l’image, quelles sont ses dimensions (x, y). Ouvrir le fichier : image.py et l’enregistrer-sous : votreprenom_image.py (dans le même dossier que celui dans lequel vous avez enregistré votre image). 4. Exécuter le programme (en cliquant sur l’icône flèche verte). Fermer la première image qui s’affiche, puis observer la seconde image. 5. Quel est la finalité de ce programme ? 6. Noter sur votre feuille les modifications à apporter au programme pour : a) qu’il corresponde à un filtre bleu. b) qu’il corresponde à un filtre jaune. c) qu’il corresponde un filtre cyan sur la moitié supérieure de l’image uniquement. (on pourra utiliser, à bon escient, la valeur photo.shape[0]//2pour définir la moitié de la hauteur de l’image et photo.shape[1]//2 pour définir la moitié de la largeur de l’image). d) qu’il corresponde à un filtre magenta sur le quart inférieur de l’image uniquement. 7. Appeler le professeur pour validation. 8. Tester vos modifications et admirez vos créations picturales !! photo = np.copy(photovache) # on définit « photo », la copie de la photo originale appelée quant à elle « photovache » for i in range(0,photo.shape[0]): for j in range(0,photo.shape[1]): r, v, b = photo[i, j] photo[i, j] = (r,0,0) # Pour un ensemble de pixels que l’on définit, on réalise un filtrage en jouant sur les valeurs des couleurs appelées r, v, b plt.figure('montbéliarde rouge') plt.imshow(photo) plt.show() # Affichage du texte « montbéliarde rouge » et de l'image filtrée II. Diagramme de niveaux d’énergie de l’atome d’hydrogène Ouvrir le programme : atome hydrogene.py et l’enregistrer-sous : votreprenom_atome hydrogene.py. 1. Compléter le programme en entrant à l’endroit prévu à cet effet la formule permettant de calculer les valeurs des niveaux d’énergie de l’atome d’hydrogène : niveau[n-1] = -13.6/n**2 2. Insérer à la ligne suivante une commande permettant l’affichage du texte « Niveaux dénergie En en électrons-volts ». 3. Vérifier le fonctionnement de cette partie du programme en cliquant sur l’icône « flèche verte ». 4. Lire attentivement les lignes de commande de l’étape # calcul des différences deux à deux des niveaux d’énergie et expliquer sur votre feuille à quoi correspondra la valeur inscrite dans la nème ligne de la pème colonne du tableau affiché. 5. Dans quelle ligne ou dans quelle colonne seront rangées les valeurs des ΔE correspondant aux cinq raies visibles du spectre de raies d’émission de l’hydrogène déjà étudiées en classe ? Le vérifier. 6. Proposer à l’écrit les lignes de codes qui seraient nécessaires pour programmer l’affichage d’un tableau de valeurs faisant apparaître les longueurs d’ondes des photons émis ou absorbés lors des différentes transitions possibles. On pourra s’appuyer sur la formule (10**2)*3*(6.63)/((niveau[n]-niveau[p])*1.6), le facteur 10**2 étant adapté à un affichage en nm sans avoir besoin de l’intervention des puissances de 10 des autres termes de la formule. Python ne pourrait pas travailler avec des 10*(-34)… 7. Appeler le professeur pour vérification. 8. Tester votre programme. niveau=[0,0,0,0,0,0,0] for n in range(1,8): niveau[n-1]=-13.6/n**2 #Calcul des niveaux d'énergie en électronvolts print('Niveaux d énergie En en électron-volt') print(niveau) print(np.round(niveau,2)) #Affichage du texte « Niveaux d’énergie en électron-volt » puis de la liste de valeurs des niveaux d’énergie puis de la même liste arrondie à 2 chiffres après la virgule. tableaudeltaE=np.zeros((7,7)) #Définition d’un tableau appelé « tableaudeltaE », de 7 lignes et 7 colonnes, for n in range(0,7): for p in range(0,7): if not n==p : tableaudeltaE[n][p]=niveau[n]-niveau[p] print("tableau des écarts Delta E = En - Ep en électron-volts") print(np.round(tableaudeltaE,2)) puis attribution à chacune des cases de ce tableau de la valeur du ΔE qui lui correspond #Affichage du texte « tableau des Delta E en électron-volts » puis affichage du tableau avec les valeurs arrondies à 2 chiffres après la virgule. photo.shape : apporte une difficulté supplémentaire un peu inutile. Mieux vaut peut-être faire remplacer ce code par les dimensions trouvées par les élèves pour l’image étudiée… for i in range(photo.shape[0]//2,photo.shape[0]): for j in range(photo.shape[1]//2,photo.shape[1]): r, v, b = photo[i, j] photo[i, j] = (r,0,b) ctrl+z pour revenir en arrière ctrl+s, ctrl+a, ctrl+c fonctionnent !! #Calcul des longueurs d’ondes tableaulongueurdondes=np.zeros((7,7)) for n in range(0,7): for p in range(0,7): if not n==p : tableaulongueursdondes[n][p]=(3*10**2)*(6.63)/((niveau[n]-niveau[p])*1.6) #Affichage du tableau des longueurs d’ondes en nanomètres print("tableau des longueurs d ondes des photons émis ou absorbés en nm") print(np.round(tableaudlongueursdondes,2)) print('Niveaux d énergie En en électron-volt') print(niveau) print(np.round(niveau,2)) tableaudeltaE=np.zeros((7,7)) #Affichage du tableau des Delta E en milliélectron-volts print("tableau des écarts Delta E = En - Ep en milliélectron-volts") print(np.round(tableaudeltaE,2))