{"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_3.ipynb","provenance":[{"file_id":"1_R61bEjOoCUd8N_69Fw8BfPMcqSYeCGH","timestamp":1571580165675}],"collapsed_sections":[],"toc_visible":true}},"cells":[{"cell_type":"markdown","metadata":{"id":"bGoqOO_6eiCF","colab_type":"text"},"source":["# Traitement de l'image TP n° 3"]},{"cell_type":"markdown","metadata":{"id":"q8jXSmUbeiCL","colab_type":"text"},"source":["
\n","Écrire votre nom ici \n","\n","Nom : \n","
"]},{"cell_type":"markdown","metadata":{"id":"ubjo5PDZeiCR","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":"KXpZCIFWeiCU","colab_type":"code","colab":{}},"source":["#pip install pillow"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"6LJXltN44l8C","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":"H50HEPN24qsG","colab_type":"code","colab":{}},"source":["from IPython.display import display"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"uzGBPgn9ewZ4","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":"UAJDhMA4euhk","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":"v6MMD8cge66X","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":"-J2FDFVceiCg","colab_type":"text"},"source":["## Transformation d'une image par convolution\n","\n","Modifier une image par convolution consiste à remplacer les composantes de chaque pixel par une combinaison des valeurs des composantes des pixels voisins et de lui-même.\n","\n","### Un pixel et ses 8 voisins :\n","\n","\n","\n","### Un exemple de transformation : ( le filtre passe-haut )\n","\n","\n","\n","\n","\n","\n","**Le code ci-dessous réalise cette transformation**\n","\n","**Exécutez le**"]},{"cell_type":"code","metadata":{"id":"_np5UfGEeiCk","colab_type":"code","colab":{}},"source":["#on récupère les dimensions\n","largeur,hauteur=img.size\n","#création d'une image vide\n","img2=Image.new('RGB',(largeur,hauteur))\n","\n","\n","################ traitement ##############\n","# On récupère les valeurs des composantes\n","# du pixel et de ses 8 voisins \n","# On évite les bords de l'image\n","# On réalise le calcul\n","##########################################\n","for y in range(1,hauteur-1,1):\n"," for x in range(1,largeur-1,1):\n"," r1,v1,b1,a1=img.getpixel((x-1,y-1))\n"," r2,v2,b2,a2=img.getpixel((x,y-1))\n"," r3,v3,b3,a3=img.getpixel((x+1,y-1))\n"," r4,v4,b4,a4=img.getpixel((x-1,y))\n"," r5,v5,b5,a5=img.getpixel((x,y))\n"," r6,v6,b6,a6=img.getpixel((x+1,y))\n"," r7,v7,b7,a7=img.getpixel((x-1,y+1))\n"," r8,v8,b8,a8=img.getpixel((x,y+1))\n"," r9,v9,b9,a9=img.getpixel((x+1,y+1))\n"," #modification des pixels\n"," r=-r2-r4+5*r5-r6-r8\n"," v=-v2-v4+5*v5-v6-v8\n"," b=-b2-b4+5*b5-b6-b8\n"," a=a5\n"," img2.putpixel((x,y),(r,v,b,a))\n"," \n","# affichage des images\n","display(img,img2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"uyK-6OB8eiCq","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez cette transformation :(Un flou)**\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"yIaZ8gZKeiCt","colab_type":"code","colab":{}},"source":["#Écrire le programme ici\n"," "],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"2kzH9f3BeiC4","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Réalisez une transformation avec cette matrice :**\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"YGUlqVjReiC6","colab_type":"text"},"source":["
\n","\n","## Détecter les contours d'une image\n","\n","On utilisera cette image\n","

\n","\n","

\n","\n","**Il s'agit encore d'une transformation par convolution avec la matrice :**\n","\n","

\n","\n","

\n","\n","
\n","\n"]},{"cell_type":"markdown","metadata":{"id":"5zHxnzQWf1Sj","colab_type":"text"},"source":["**Exécutez ce code**\n","\n","pour pouvoir accéder à l'image hébergée par un serveur\n","\n","**Notez bien le nom de l'image !**"]},{"cell_type":"code","metadata":{"id":"uC9ssue2gD5m","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/port.png\"\n","response = requests.get(url)\n","imgp = Image.open(BytesIO(response.content))\n","#affichage de l'image\n","display(imgp)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"NOBYzUeig0e0","colab_type":"text"},"source":["## À faire :\n","\n","**Réalisez cette transformation**"]},{"cell_type":"code","metadata":{"id":"tFq8x8LNeiC9","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"F1pVs0u0eiDL","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Vous rajouterez au programme précédent ce bout de code là ou il faut en créant une seconde image vierge**"]},{"cell_type":"code","metadata":{"id":"XqsF-dW5eiDN","colab_type":"code","colab":{}},"source":["# code à rajouter \n","moyenne=(r+v+b)//3\n","if moyenne>20:\n"," c=0\n","else:\n"," c=255\n","img3.putpixel((x,y),(c,c,c,a))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"6KzdnR1ieiDa","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"cmuQjkrDeiDo","colab_type":"text"},"source":["
\n","\n","## À faire:\n","\n","**Vous réaliserez une transformation par convolution que vous imaginerez...**"]},{"cell_type":"code","metadata":{"id":"hyljwgaSeiDu","colab_type":"code","colab":{}},"source":["# Écrire le programme ici"],"execution_count":0,"outputs":[]}]}