{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.2"},"colab":{"name":"Copie de Tp_traitement_images_1.ipynb","provenance":[{"file_id":"10ug2wxmvqwCdqFUhYdLfW3-mI0HVssji","timestamp":1571578973064}],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"7iX8HaGG2Y63","colab_type":"text"},"source":["# Traitement de l'image TP n° 1"]},{"cell_type":"markdown","metadata":{"id":"Ccysd5fm2Y7F","colab_type":"text"},"source":["
\n","Écrire votre nom ici \n","\n","Nom : \n","
"]},{"cell_type":"markdown","metadata":{"id":"ixfkj0Pc2Y7K","colab_type":"text"},"source":["## Commençons par faire afficher une image\n","Nous travaillerons avec cette célèbre image\n","

\n","\n","

\n","Pour utiliser/manipuler des images en Python, il faut utiliser une bibliothèque.\n","\n","Nous utiliserons la bibliothèque: **pillow**\n","\n","Si elle n'est pas déjà installée : "]},{"cell_type":"code","metadata":{"id":"siWQbC982Y7R","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"GVyEPZJjyr0a","colab_type":"text"},"source":["**Pour ceux qui utilise la version(jupyter) de EduPython:**\n","\n","Exécutez cette cellule au préalable afin d'importer le module display pour l'affichage dans le notebook"]},{"cell_type":"code","metadata":{"id":"XwmfcB03zBI1","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"YIzG3sNx2Y7k","colab_type":"text"},"source":["**Le code suivant affiche l'image**\n","\n","L'image est hébergée sur un serveur et est chargée dans ce notebook\n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"yCA5jpIm2Y7p","colab_type":"code","colab":{}},"source":["#chargement des bibliothèques \n","from PIL import Image\n","import requests\n","from io import BytesIO\n","# chargement de la photo se trouvant à l'adresse donnée\n","url=\" http://isn-icn-ljm.pagesperso-orange.fr/photo/joconde.png\"\n","response = requests.get(url)\n","img = Image.open(BytesIO(response.content))\n","#affichage de l'image\n","display(img)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"bEpM5MJMc30d","colab_type":"text"},"source":["**Dans tout ce TP la variable img contient l'image téléchargée depuis le serveur**"]},{"cell_type":"markdown","metadata":{"id":"k8DGNWdA2Y77","colab_type":"text"},"source":["## Composition d'une image\n","\n","* Une image peut être assimilée à un tableau de pixels\n","* Chaque pixel est constitué d'une couleur\n","* Une couleur est un mélange de trois couleurs ( rouge, vert , bleu, alpha ) alpha gère l'opacité de l'image\n"," * (0,0,0) pour le noir\n"," * (255,255,255) pour le blanc\n"," * ( 255,0,0) pour du rouge\n"," * etc ..\n","\n","***Une image est donc constituée de pixels qui contiennent une couleur***\n","
\n","\n","## Se repérer dans l'image\n","\n","Imaginons une image de 10 X 10 pixels:\n","\n","On peut la représenter par le tableau suivant :\n","\n","

\n","\n","

\n","\n","**Ainsi le pixel 65 a pour coordonnées : ( 5 , 6 )**\n","\n","
\n"," \n","**Le code suivant donne les dimensions de notre image**\n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"szyB7eSe2Y8A","colab_type":"code","colab":{}},"source":["# on récupère les dimensions dans les variables largeur et hauteur\n","largeur,hauteur=img.size\n","#affichage du résultat\n","print(largeur,\" X \",hauteur,\" pixels\")\n"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"EpSsbCLe2Y8O","colab_type":"text"},"source":["**Le code suivant affiche la couleur d'un pixel au hasard dans l'image**\n","\n","La bibliothèque random et la méthode randint ( random.randint( a , b) ) permet de choisir au hasard un nombre entier entre a et b \n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"KN4ytrML2Y8T","colab_type":"code","colab":{}},"source":["import random\n","#on récupère les dimensions\n","largeur,hauteur=img.size\n","\n","# choix d'un pixel et récupération de la couleur\n","x=random.randint(0,largeur)\n","y=random.randint(0,hauteur)\n","pixel=img.getpixel((x,y))\n","\n","#affichage du résultat\n","print(\" La couleur du pixel \",(x,y),\" est \",pixel)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"eFNgOOuL2Y8i","colab_type":"text"},"source":["## Récupérer les composantes ( rouge, vert , bleu , alpha) d'un pixel\n","\n","Comme on le constate avec le programme ci-dessus, la variable pixel contient 4 valeurs : **( rouge, vert , bleu , alpha)**\n","\n","**Pour atteindre un élément de pixel :**\n","\n","* rouge=pixel[0]\n","* vert=pixel[1]\n","* bleu=pixel[2]\n","* alpha=pixel[3]\n","\n","**On peut récupérer ces valeurs dans des variables avec le code suivant :**\n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"wjWVu0xw2Y8o","colab_type":"code","colab":{}},"source":["import random\n","#on récupère les dimensions\n","largeur,hauteur=img.size\n","\n","# choix d'un pixel et récupération de la couleur\n","x=random.randint(0,largeur)\n","y=random.randint(0,hauteur)\n","pixel=img.getpixel((x,y))\n","\n","# mise des valeurs des composantes dans des variables\n","rouge=pixel[0]\n","vert=pixel[1]\n","bleu=pixel[2]\n","alpha=pixel[3]\n","\n","#affichage du résultat\n","print(\"La composante rouge du pixel de coordonnées \" ,(x,y), \" est:\",rouge)\n","print(\"La composante verte du pixel de coordonnées \" ,(x,y), \" est:\",vert)\n","print(\"La composante bleue du pixel de coordonnées \" ,(x,y), \" est:\",bleu)\n","print(\"La composante alpha du pixel de coordonnées \" ,(x,y), \" est:\",alpha)\n","\n"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"JOyMuKdm2Y80","colab_type":"text"},"source":["
\n","\n","## Réalisons un filtre rouge\n","\n","\n","Le code ci-dessous, parcourt tous les pixels de l'image et remplit \n"," \n","une image vierge avec les pixels modifiés de notre image.\n"," \n","La modification effectuée ici est de remplacer toutes les composantes\n","rouges par le maximum soit : 255\n"," "]},{"cell_type":"code","metadata":{"id":"JtT1xvjU2Y86","colab_type":"code","colab":{}},"source":["\n","#on récupère les dimensions\n","largeur,hauteur=img.size\n","#création d'une image vide de mêmes dimensions\n","img2=Image.new('RGB',(largeur,hauteur))\n","\n","# On parcourt l'image avec une double boucle\n","for x in range(largeur):\n"," for y in range(hauteur):\n"," pixel=img.getpixel((x,y))\n"," #chargement des composantes dans des variables\n"," rouge=pixel[0]\n"," vert=pixel[1]\n"," bleu=pixel[2]\n"," alpha=pixel[3]\n"," # remplissage de la nouvelle image\n"," img2.putpixel((x,y),(255,vert,bleu,alpha))\n","#affichage des deux images\n","display(img,img2) "],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_ar3XVjF2Y9H","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez ci-dessous un programme qui réalise un filtre vert**"]},{"cell_type":"code","metadata":{"id":"FJvSGIVx2Y9K","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"izTPK2qv2Y9V","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez ci-dessous un programme qui réalise un filtre bleu**"]},{"cell_type":"code","metadata":{"id":"wP6N3YfO2Y9Y","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"i81AW7lU2Y9o","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez ci-dessous un programme qui réalise la transformation des pixels ( r , v, b, a) en : ( 255 - r, 255 - v , 255 - b , a)**\n"]},{"cell_type":"code","metadata":{"id":"BaX4tPHz2Y9s","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"PplAN9wK2Y90","colab_type":"text"},"source":["**Quel nom peut-on donner à cette transformation ?**\n","\n","**Réponse :** "]},{"cell_type":"markdown","metadata":{"id":"3o_YCSmN2Y94","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez ci-dessous un programme qui réalise une transformation que vous imaginerez...**\n"]},{"cell_type":"code","metadata":{"id":"9KMzMSIS2Y97","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]}]}