{"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_5.ipynb","provenance":[{"file_id":"1tyA9A4eAbH2-XDPgyGxbQ_s_QQTVdNHv","timestamp":1571581266759}],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"SDDasvVdirRd","colab_type":"text"},"source":["# Traitement de l'image TP n° 5"]},{"cell_type":"markdown","metadata":{"id":"JCvmH2sPirRr","colab_type":"text"},"source":["
\n","Écrire votre nom ici \n","\n","Nom : \n","
"]},{"cell_type":"markdown","metadata":{"id":"1tlY7bJUirRw","colab_type":"text"},"source":["## L'image pour ce TP\n","\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":"HWL0t_W7irR0","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"hW14qZxe5MRO","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":"AbL-8DXF5Qnt","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"aFFEfvB6i5zj","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":"7OFwEwntjAtY","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/median4.jpg\"\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":"1yOtqkaMjU9W","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":"f90ajspzirSA","colab_type":"text"},"source":["
\n","\n","## Filtre médian \n","\n","**Réaliser un filtre médian consiste à partir d'une image en niveau de gris:**\n","* À remplacer chaque pixel par la valeur médiane de ce pixel et de ses 8 voisins \n","* On ne tiendra pas compte des bords de l'image ( ils n'ont pas 8 voisins..)\n","\n","**Le principe**\n","* Comme l'image est en niveau de gris les composantes (r , v , b) sont égales\n","* On stocke dans une liste les valeurs du pixel et de ses 8 voisins\n","* On trie la liste par ordre croissant\n","* On récupère la cinquième valeur ( la médiane )\n","* Le pixel prendra alors cette valeur\n","\n","**Voici le programme qui réalise cette transformation:**\n","\n"]},{"cell_type":"code","metadata":{"id":"M9QDzxCwirSG","colab_type":"code","colab":{}},"source":["#on récupère les dimensions\n","largeur,hauteur=img.size\n","\n","\n","#traitement\n","def median(img):\n"," #création d'une image vide\n"," img2=Image.new('RGB',(largeur,hauteur))\n"," for y in range(1,hauteur-1,1):\n"," for x in range(1,largeur-1,1):\n"," liste=[]\n"," r1,v1,b1=img.getpixel((x-1,y-1))\n"," liste.append(r1)# stockage de la valeur dans la liste\n"," r2,v2,b2=img.getpixel((x,y-1))\n"," liste.append(r2)\n"," r3,v3,b3=img.getpixel((x+1,y-1))\n"," liste.append(r3)\n"," r4,v4,b4=img.getpixel((x-1,y))\n"," liste.append(r4)\n"," r5,v5,b5=img.getpixel((x,y))\n"," liste.append(r5)\n"," r6,v6,b6=img.getpixel((x+1,y))\n"," liste.append(r6)\n"," r7,v7,b7=img.getpixel((x-1,y+1))\n"," liste.append(r7)\n"," r8,v8,b8=img.getpixel((x,y+1))\n"," liste.append(r8)\n"," r9,v9,b9=img.getpixel((x+1,y+1))\n"," liste.append(r9)\n"," liste.sort()# tri de la liste\n"," r=liste[4] # récupération de la médiane\n"," img2.putpixel((x,y),(r,r,r))\n"," return(img2)\n","\n","var=median(median(img))# appel de la fonction median()\n","display(img,var)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"MaawAC4PirSZ","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Reprendre l'ensemble avec cette image**\n","

\n"," \n","

\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"8nwmeOibirSb","colab_type":"code","colab":{}},"source":["# code "],"execution_count":0,"outputs":[]}]}