{"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_2.ipynb","provenance":[{"file_id":"1a2fEiU4A8bTi2YwcZVmnRf8-2K6uZjh9","timestamp":1571579669465}],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"2T_gz2Bab5em","colab_type":"text"},"source":["# Traitement de l'image TP n° 2"]},{"cell_type":"markdown","metadata":{"id":"Rj8R7mvEb5es","colab_type":"text"},"source":["
\n","Écrire votre nom ici \n","\n","Nom : \n","
"]},{"cell_type":"markdown","metadata":{"id":"oL2zXwaQb5ew","colab_type":"text"},"source":["## Commençons par faire afficher notre 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":"PmKbkHD3b5ey","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"jCMSS9r04R50","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":"bqmstMvy4WkL","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"8ZYG3reFdSg7","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":"ElzTrMpYdUrN","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":"rt7vN4BhdcRD","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":"jtp1hrQYb5e_","colab_type":"text"},"source":["## Mettre une image en niveau de gris\n","\n","Pour mettre une image en niveau de gris, il faut remplacer les composantes rouge, verte et bleue par leur moyenne\n","\n","Donc pour chaque pixel on réalise la transformation suivante:\n","\n","\n","moyenne = ( r+v+b )//3 ( la moyenne doit être un entier )\n","\n","( r , v , b , a) -----> (moyenne , moyenne , moyenne , a)\n","\n","**Complétez le code ci-dessous pour qu'il réalise une mise en niveau de gris** "]},{"cell_type":"code","metadata":{"id":"og2c1oaXb5fC","colab_type":"code","colab":{}},"source":["#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"," # calcul de la moyenne à compléter\n"," \n"," # remplissage de la nouvelle image à modifier\n"," img2.putpixel((x,y),(???,???,???,alpha))\n","#affichage des deux images\n","display(img,img2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Js3BTaqUb5fQ","colab_type":"text"},"source":["
\n","\n","## Mettre une image en noir et blanc\n","\n","**Pour mettre une image en noir et blanc, il faut au préalable l'avoir mise en niveau de gris,**\n","\n","**puis si la moyenne calculée est supérieure à 127 on la met au maximum (255) sinon on la met au minimum (0)**\n","\n","Voici un bout de code qu'il faudra utiliser :"]},{"cell_type":"code","metadata":{"id":"EzDe8LW7b5fT","colab_type":"code","colab":{}},"source":["if moyenne > 127:\n"," moyenne=255\n","else:\n"," moyenne=0"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"JWARCTRib5fZ","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez ci-dessous un programme qui réalise la mise en noir et blanc de l'image**\n"]},{"cell_type":"code","metadata":{"id":"7lOOb-otb5fh","colab_type":"code","colab":{}},"source":["#Écrire le programme ici\n"," "],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"08YvQ4dub5fp","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","Dans le programme précédent 127 est un 'seuil' \n","\n","**Reprendre le programme précédent en modifiant ce seuil**\n"]},{"cell_type":"code","metadata":{"id":"nz5EbRoSb5fv","colab_type":"code","colab":{}},"source":["#Écrire le programme ici\n"," "],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"RosbLrIeb5f1","colab_type":"text"},"source":["# Filtrage par seuil \n","\n","Voici le programme du filtre rouge du TP n°1"]},{"cell_type":"code","metadata":{"id":"PKFWlJQMb5f3","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":"LLddjzwQb5f9","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Modifiez le programme pour que la composante rouge de la nouvelle image soit de 255 si la composante rouge de l'image est supérieure à 127 et 0 sinon**\n"]},{"cell_type":"code","metadata":{"id":"dzRSXtWAb5gB","colab_type":"code","colab":{}},"source":["#Écrire le programme ici\n"," "],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"WkQJMluOb5gH","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Imaginez un programme qui réalise un filtrage par seuil différent sur les 3 composantes...**\n"]},{"cell_type":"code","metadata":{"id":"zUI4erAIb5gJ","colab_type":"code","colab":{}},"source":["#Écrire le programme ici\n"," "],"execution_count":0,"outputs":[]}]}