1ère Générale NSI

 

Term. Générale NSI

 

Terminale STI2D SIN

Bts Ccst

Technico-commercial 3.0

[[{"text":"","title":"Traitements des images numériques"}],[{"text":"Nous allons reprendre l'image x.png pour commencer à traiter les images.

Rappels sur les 3 lignes de code ci-dessous.
- La première ligne stocke l'image nommée \"x.png\" dans la variable nommée \"image\":
image = new SimpleImage (\"./assets/x.png\");
- La ligne 2 : image.setZoom(20); - régler l’option de zoom sur 20 (10, 20, ... peu importe).
- La ligne print(image); - affiche donc l'image avec un agrandissement de 20x.

Exécuter le code.
"},{"code":"
image = new SimpleImage(\"./assets/x.png\")

image.setZoom(20)

print(image)
"}],[{"text":"Maintenant nous allons manipuler les pixels.

Explications :
- La première ligne prend le pixel de coordonnée (0,0) dand l'image et le stocke dans la variable pixel.
pixel = image.getPixel(0, 0)
pixel.setRed(255) Met une valeur au canal rouge du pixel.

Exécuter le code et modifier la valeur entre 0 et 255.

","title":"pixel.setRed(255) Example"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setRed(255)

print(image)
"}],[{"text":"Les fonctions suivantes permettent de modifier les canaux rouge, vert et bleu du pixel : 
- setRed(int) - int varie entre 0 et 255:
- setGreen(int) - int varie entre 0 et 255:
setBlue(int) - int varie entre 0 et 255:
 

Testez le code ci-dessous.

Modifier le code pour mettre le pixel (0,0) en vert.
","title":"Fonctions Pixel Set Red/Green/Blue "},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setRed(255)

print(image)
"},{"solution":"pixel = image.getPixel(0, 0)\npixel.setGreen(255)"}],[{"text":"
Mettre le pixel(0,0) en jaune.
Modifier le code en conséquence.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setRed(255)

print(image)
"},{"solution":"#mettre rouge et vert à 255 et bleu à 0\npixel = image.getPixel(0, 0)\npixel.setRed(255)\npixel.setGreen(255)"}],[{"text":"
Mettre le pixel(1,0) en jaune.
Modifier le code en conséquence.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setRed(255)

print(image)
"},{"solution":"#mettre rouge et vert à 255 et bleu à 0\npixel = image.getPixel(1, 0)\npixel.setRed(255)\npixel.setGreen(255)"}],[{"text":"
Mettre le pixel(0,0) en blanc.
Modifier le code en conséquence.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setRed(255)

print(image)
"},{"solution":"#mettre rouge et vert à 255 et bleu à 0\npixel = image.getPixel(0, 0)\npixel.setRed(255)\npixel.setGreen(255)\npixel.setBlue(255)"}],[{"text":"
Ecrire le code pour mettre le pixel(1,4) en violet.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

print(image)
"}],[{"text":"Pour modifier la couleur de plusieurs pixels, il faut juste assigner le pixel à une nouvelle coordonnée et lui mettre une nouvelle couleur.

Tester le code.
","title":"Plusieurs Pixels - Diagonale en Rouge"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

# Pixel refers to (0, 0), set to red
pixel = image.getPixel(0, 0)
pixel.setRed(255)

# Change pixel to refer to (1, 0)
pixel = image.getPixel(1, 0)
pixel.setRed(255)

print(image)
"}],[{"text":"
Mettre le pixel à l'origine en vert et celui juste à droite en rouge.
 
Modifier le code en conséquence.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

# Pixel refers to (0, 0), set to red
pixel = image.getPixel(0, 0)
pixel.setRed(255)

# Change pixel to refer to (1, 0)
pixel = image.getPixel(1, 0)
pixel.setRed(255)

print(image)
"},{"solution":"#mettre vert 255\npixel = image.getPixel(0, 0)\npixel.setGreen(255)\n\n#mettre rouge 255\npixel = image.getPixel(1, 0)\npixel.setRed(255)"}],[{"text":"
Mettre le pixel blanc aux coordonnées (2,2) en rouge.
 
Modifier le code en conséquence.

Maintenant que vous maitriser, mettre toute la diagonale en rouge.

Appeler le professeur pour valider votre travail.
","title":"Plusieurs Pixels - Diagonale en Rouge"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

# Pixel refers to (0, 0), set to red
pixel = image.getPixel(0, 0)
pixel.setRed(255)

# Change pixel to refer to (1, 0)
pixel = image.getPixel(1, 0)
pixel.setRed(255)

print(image)
"},{"solution":"#mettre vert 0 rouge 255 bleu 0\npixel = image.getPixel(2, 2)\npixel.setGreen(0)\npixel.setBlue(0)\n\n#mettre rouge 255\npixel = image.getPixel(1, 0)\npixel.setRed(255)"}],[{"text":"
Ecrire un programme pour créer une barre horizontale bleu, blanc et rouge.
 

Appeler le professeur pour valider votre travail.
","title":"Exercice"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

pixel = image.getPixel(0, 0)
pixel.setBlue(255)

pixel = image.getPixel(1, 0)
pixel.setBlue(255)

#Ecrire la suite


print(image)
"}],[{"text":"
Supposons que vous avez 5 000 cartons dans un entrepôt et un robot.
Vous voulez que le robot déplace toutes les cartons d'un coin à l'autre de l'entrepôt.
L'ordinateur est stupide, alors vous lui expliquez (en codant) en détail comment déplacer un carton.
Ensuite vous lui dites de  répéter les mêmes étapes pour tous les cartons (5000 fois).
C'est dans ces situations que vous utiliserez les boucles 
Boucles = rapidité + puissance!

Exécuter le code Python ci-dessous.

Le programme à réaliser un traitement sur tous les pixels de l'image x.png.

Celui-ci consiste à mettre à 0 les canaux du vert et du bleu.

Combien de fois ont été exécutés les instructions dans la boucle for du programme?
Aide : x.png est une image de 10 pixels sur 10 pixels. 

Lorsque l'on met à 0 le canal bleu et le canal vert d'un pixel blanc. De quelle couleur devient le pixel?
","title":"Les boucles pour le traitement d'images"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

#image sans traitement
print(\"image non traitée:\")
print(image);

#traitement de tous les pixels de l'image
for pixel in image :  
  pixel.setGreen(0)
  pixel.setBlue(0)

#image traiter
print(\"image traitée:\")
print(image)
"},{"text":"
Combien de fois ont été exécutés les instructions dans la boucle for du programme?
Aide : x.png est une image de 10 pixels sur 10 pixels. 

"},{"edit":"

Répondre ici.

"},{"text":"Lorsque l'on met à 0 le canal bleu et le canal vert d'un pixel blanc. De quelle couleur devient le pixel?"},{"edit":"

Répondre ici.

"}],[{"text":"Maintenant vous allez travaillé avec l'image flowers.jpg.


L'image flowers.jpg est une image de 457 pixels de large (width) sur 360 pixels de haut (height).

Combien de fois vont être exécutés les instructions dans la boucle for du programme?

","title":"flowers.jpg"},{"edit":"

Répondre ici.

"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

print(\"avant\")

for pixel in image :  
  pixel.setRed(255)
  pixel.setGreen(255)
  pixel.setBlue(0)

print(image)

print(\"après\")

"},{"text":"Exécuter le programme.

Que fait ce programme.
"},{"edit":"

Répondre ici.

"},{"text":"Comment varie le temps de traitement de l'image en fonction de la grandeur de l'image?"},{"edit":"

Répondre ici

"}],[{"text":"
Nous avons vu que pour obtenir la couleur jaune, il faut utiliser du rouge + vert.  
Nous savons donc que les parties jaunes de l’image flowers.jpg ont des valeurs rouge et vert élevées. Alors que se passe-t-il si, pour chaque pixel, s! nous mettons le rouge à 0?

\"yellow

L'exemple précédent avait modifié tous les pixels de l'image. Ce n'est pas réaliste.
De quoi sont faits les pixels des feuilles vertes? De quoi sont faits les pixels des fleurs jaunes?

Vous allez, pour chaque pixel, mettre le canal rouge à 0.

Ecrire le code en conséquence (rouge à 0).

Quelles sont les couleurs RVB élevées pour les fleurs jaunes?
","title":"Expérience n°1 : Rouge à 0"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)

"},{"solution":"pixel.setRed(255)"}],[{"text":"Maintenant, vous allez mettre le canal vert et bleu à 0, sans toucher au canal rouge. 

Ecrire le code en conséquence.

Admirez votre création.
","title":"Expérience n°2 : Canal Rouge"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)
"}],[{"text":"Faire de même avec le canal bleu. Mettre le canal rouge et vert à 0.

Ecrire le code en conséquence.

Admirer votre création.
","title":"Expérience n°3 : Canal Bleu"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)
"}],[{"text":"Nous allons utiliser trois nouvelles instructions :
- pixel.getRed()
- pixel.getGreen()
- pixel.getBlue()

Ces instructions permettent de prendre la valeur du canal rouge, vert ou bleu du pixel sélectionné.

Remarque : En programmation, nous utilisons très souvent la combinaison ci-dessous pour coder :

set / get ( mettre / prendre )




","title":"pixel.getRed() / pixel.getGreen() / pixel.getBlue()"},{"code":"
image = new SimpleImage(\"./assets/x.png\")
image.setZoom(20)

# Pixel (2, 2),blanc
pixel = image.getPixel(2, 2)

red = pixel.getRed() 
print(\"rouge =\",red)

green = pixel.getGreen() 
print(\"vert =\",green)

blue = pixel.getBlue() 
print(\"vert =\",blue) 



print(image)
"},{"text":"Les valeurs affichées par les canaux rouge, vert et bleu sont-ils logiques (255,255,255)?"},{"edit":"

Répondre ici.

"}],[{"text":"Dans l'exemple suivant, nous récupérons la valeur du canal rouge du pixel : red = pixel.getRed()
Nous multiplions par 2 la valeur.
 pixel.setRed(red) : Met le canal rouge du pixel à cette nouvelle valeur.

Exécuter le code et décrire le résultat obtenu. 

","title":"Augmentation du canal Rouge"},{"edit":"

Décrire ici.

"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  red = pixel.getRed()
  red = red * 2
  pixel.setRed(red)
 

print(image)

"}],[{"text":"Nous souhaitons transformer en orange la fleur jaune.
Pour cela, il faut garder 75% du canal vert ( x 0.75 ).
 
Ecrire le code correspond en utilisant la combinaison setGreen et getGreen.
","title":"Expérience n°4"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)
"},{"solution":" green = pixel.getGreen()\n green = green * 0.75\n pixel.setGreen(green)"}],[{"text":"Vous allez multiplier par 0.75 les valeurs d'origines des canaux rouge, vert et bleu de l'image.

Ecrire le code python correspondant.

Ensuite vous essaierez avec un coefficient de 0.5 et 0.25.

Quel effet cela a sur l'image?
","title":"Expérience n°5"},{"edit":"

Répondre ici.

"},{"code":"
image = new SimpleImage(\"./assets/flowers.jpg\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)
"},{"solution":" green = pixel.getGreen()\n green = green * 0.75\n pixel.setGreen(green)"}],[{"text":"
Nous avons volontairement modifié une image pour camoufler sont contenue.

Les paramètres du traitement de l'image sont les suivants :

Les valeurs verte et bleue ne sont que des valeurs aléatoires dans la plage 0 à 255. On appelle cela \"neige\" ou \"bruit de fond\".

Les données de l'image réelle sont exclusivement dans les valeurs rouges.

De plus, les valeurs en rouge ont toutes été divisées par 10 (pour la foncer).

La \"neige\" créé par le vert et le bleu obscurcit l'image réelle.

Écrire le code pour récupérer l'image réelle et résoudre l'énigme.

","title":"Enigme"},{"edit":"

Répondre ici.

"},{"code":"
image = new SimpleImage(\"./assets/enigme.png\")

for pixel in image :  
  #Ecrire le code ici
  
  
print(image)
"}],[{"text":"Source : http://www.stanford.edu"}]]

En poursuivant votre navigation sur mon site, vous acceptez l’utilisation des Cookies et autres traceurs  pour réaliser des statistiques de visites et enregistrer sur votre machine vos activités pédagogiques. En savoir plus.