Traitement d'image ou Programmer des fonctions de logiciels de retouche d'images!

Documents pareils
IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Fête de la science Initiation au traitement des images

Projet Matlab : un logiciel de cryptage

TP : Gestion d une image au format PGM

Formats d images. 1 Introduction

TP SIN Traitement d image

Utilisation de XnView

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

S.P.S.N. Lac du Der 2008

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Utiliser le logiciel Photofiltre Sommaire

Initiation à la programmation en Python

Pop-Art façon Roy Liechtenstein

Structure du format BMP, sa lecture, sa construction et son écriture

Hiver 2013 IMN 259. Introduction à l analyse d images. Par Pierre-Marc Jodoin

Manuel d'utilisation de l'administration du site Japo.ch - 1

Usage des photos pour Internet et pour la presse

Cours de numérisation sur Epson Perfection

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

Présentation. Référenciel : textes officiels

COMMENT CREER VOS BANDES GRAND FORMAT?

GROOBAX. cliquer sur le «G» Cliquer sur «options» Sélectionner le dossier qui contiendra les paramètres => Cliquer A chercher le dossier créé en 2/

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

Leçon N 5 PICASA Généralités

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Création de maquette web

INFO 2 : Traitement des images

Bernard Lecomte. Débuter avec HTML

Initiation à html et à la création d'un site web

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Les différentes étapes à suivre pour la création d un feuillet

Traitement numérique de l'image. Raphaël Isdant

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Mise en route de Cobian Backup

FORMATS DE FICHIERS. Quels sont les différents types d informations numériques dans un document multimédia?

I. Introduction aux fonctions : les fonctions standards

Création d un site web avec Nvu

Séance 0 : Linux + Octave : le compromis idéal

SpeechiTablet Notice d utilisation

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

1 Lecture de fichiers

Construire un portail de ressources numériques avec Netvibes

Tutoriel : logiciel de présentation Openoffice Impress

REUNION INFORMATIQUE 15/09/12 Utilisation Messagerie «Webmail 2» I ) Préambule : Pourquoi l utilisation d une messagerie commune?

Utilisation du visualiseur Avermedia

Conservation des documents numériques

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

nom : Collège Ste Clotilde

COPY. Picture Style Editor Ver. 1.4 MODE D EMPLOI. Logiciel de création de fichiers de style d image. Contenu de ce mode d emploi

Utilisation du logiciel ImageJ gratuit

Traitement par lot redimensionner des images

Traitement d un AVI avec Iris

Intégration de solutions libres. XnView. 16, rue des Bouleaux La Ferté Saint Aubin

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Sur trois couches, on obtient donc 2563 = de couleurs, soit 24bpp (Bit Per Pixel).

Choisir entre le détourage plume et le détourage par les couches.

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

TP 1. Prise en main du langage Python

Inspiration 7.5. Brève description d Inspiration. Avantages d Inspiration. Inconvénients d Inspiration

Présentation du langage et premières fonctions

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Comment créer un diagramme de Gantt avec OpenOffice.org

L informatique en BCPST

Utilisez Toucan portable pour vos sauvegardes

Calibrage du moniteur avec Monitor Profiler de Little CMS

PHPWEBSITE -Tutoriel image

STAGE IREM 0- Premiers pas en Python

La photo numérique et les logiciels libres. Asie Photos

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TD de supervision. J.P. Chemla. Polytech Tours Département productique 2ème année

Gérer son travail dans Lightroom

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

- Enlever les imperfections de la peau avec l'outil clonage. - Donner plus d'impact à la chevelure du personnage

DÉCOUVERTE DE CAPTURE ONE

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Jean Dubuffet AUTOPORTRAIT II

Chap17 - CORRECTİON DES EXERCİCES

Cours Excel : les bases (bases, texte)

T u t o r i e l s PhotoFiltre

Catégories de format d'optimisation

Utiliser ma messagerie GMAIL

Cyber-base du Pays Martégal. Atelier «Découverte de l ordinateur»

PR OC E D U RE S D E B A S E

Utilisation du logiciel Epson Easy Interactive Tools

Initiation à linfographie

DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran

Traitement de texte : Quelques rappels de quelques notions de base

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

2013 Pearson France Adobe Illustrator CC Adobe Press

Organiser ses photos sur l ordinateur

Tune Sweeper Manuel de l'utilisateur

Transcription:

I. Bien ranger ses affaires. Traitement d'image ou Programmer des fonctions de logiciels de retouche d'images! Pour bien travailler il est très important de savoir où sont rangées ses affaires. On va travailler dans un dossier dont l'adresse sera c:/isn/trait_img On peut créer ce dossier manuellement ou le faire faire par python : On a alors besoin de la bibliothèque os : import os #import de la bibliothèque os qui contient les fonctions #permettant de travailler sur des fichiers try: #essai de création du dossier os.makedirs('c:/isn/trait_img') #le dossier est créé avec les dossiers intermédiaires! print ("Dossier créé!") except (FileExistsError): print ("Le dossier existe déjà") #le dossier a déjà été créé, pas la peine de recommencer rep_cour=os.getcwd() #rep_cour est le répertoire courant (celui où le prg travaille actuellement) if ((rep_cour)!=("c:/isn/trait_img")): #si on n'est pas dans le dossier isn/trait_img os.chdir("c:/isn/trait_img") #alors on y va! print ("Répertoire de travail actuel : ",os.getcwd()) #affichage du répertoire courant pour vérifier #qu'on est où on veut II. Les images. Il existe de nombreux formats d'images (bmp, jpeg, pgm, etc). Nous allons travailler sur des images au format pgm (Portable Grey Map) qui sont des images en 256 niveaux de gris (0 = noir, 255 = blanc). Le langage python utilise une bibliothèque très utile pour le traitement d'images : PIL (Python Imaging library) Installer la bibliothèque en lançant l'executable Pillow-2.1.0.win32-py3.3.exe On va travailler sur une image test nommée img_base.pgm (ce fichier sera placé dans le dossier "c:/isn/trait_img") B M-L 1/8

III. Le traitement d'images. III.1. Ouvrir un fichier et lire ses propriétés. On va supposer que le dossier "c:/isn/trait_img" a été créé et qu'il est notre répertoire courant. Une petite vérification avec os.getcwd() peut être utile ;-) Ne jamais hésiter à regarder les informations sur une fonction grâce à help! exemple : help(image) import os from PIL import Image #bibliothèque pour le travail sur les dossier #bibliothèque pour le travail sur les images rep_cour=os.getcwd() #répertoire courant print ("répertoire courant :",rep_cour) if rep_cour!="c:/isn/trait_img": #si on n'est pas dans le bon print ("on se déplace vers ") os.chdir("c:/isn/trait_img") #on s'y déplace! print(os.getcwd()) #vérification print ("tout est en ordre!") #Nous allons ouvrir le fichier image img_base nom_image=("img_base.pgm") #pour ouvrir une autre image il suffira de changer le nom img_in=image.open(nom_image) #img_in "contient" le fichier image print ("Nom de l'image :",nom_image) print("format de l'image :",img_in.format) #Portable PixMap print ("Taille de l'image :",img_in.size) #tuple (Colonnes,Lignes) print ("Mode de l'image :",img_in.mode) #niveaux de gris img_in.show() #affichage de l'image On a donc récupéré beaucoup d'informations (en particulier la taille de l'image)! On va maintenant créer une nouvelle image qui soit de la même taille que la première et que nous rangerons dans le dossier c:/isn/trait_img B M-L 2/8

III.2. Créer une copie à l'identique. On va "construire" un fichier img_out ayant les mêmes propriétés que le fichier img_in! Le principe va être le suivant : Balayer le fichier img_in sur les L lignes et C colonnes Récupérer la valeur de chaque pixel (p=img_in.getpixel(x,y)) Recopier la valeur du pixel dans la nouvelle image (img_out.putpixel(x,y),p) Il va de soi que le fichier img_out sera créé avant d'être rempli : (img_out=image.new(img_in.mode,img_in.size) Une fois ce travail effectué, on sauvegardera la nouvelle image : img_out.save("img_copie.pgm) III.3. Passer du niveau de gris au noir et blanc. On va maintenant produire une image de sortie différente de celle d'entrée. L'image de sortie sera en noir et blanc. On sait que chaque pixel a une valeur comprise entre 0 et 255 (du plus foncé au plus clair). Ecrire un programme qui produise une image en noir et blanc pour laquelle on aura choisi le seuil (entre 50 et 200). Cette image sera sauvegardée sous le nom img_nb Seuil = 75 Seuil = 175 B M-L 3/8

III.4. Effet négatif. L'effet négatif consiste à remplacer chaque valeur de pixel par son complémentaire à 255. On obtient alors un effet similaire à celui des négatifs d'appareils photos argentique. Ecrire le programme qui permet de réaliser cet effet et de sauvegarder l'image sous le nom img_neg.pgm. III.5. Effet miroir. Cette fois on va générer une image qui sera une réflexion par rapport à un axe vertical. On la sauvegardera sous img_refv.pgm On peut s'amuser à faire un reflet par rapport à un axe horizontal. Sauver sous img_refh.pgm III.6. Réduction d'une image. On va diviser par 2 la taille de l'image. Pour cela on peut donner au nouveau pixel la valeur moyenne des pixels constituant le carré de 2 x 2 qu'il remplace. On sauvegardera le résultat sous img_reduite.pgm On peut s'amuser à programmer cette réduction en choisissant le taux de réduction (de 1 à 10 par exemple). Sauvegarder sous img_reduite_taux.pgm B M-L 4/8

III.7. Effet photomaton. On a compris qu'ici on allait réduire l'image puis la recopier quatre fois. Celle là on va l'appeler img_photomaton.pgm III.8. Effet de bord. Afin de localiser des objets dans une image, il est nécessaire de localiser les bords de ces objets. Le principe va consister à comparer les valeurs de pixels voisins. Si ces valeurs sont très différentes, il est probable qu'on se trouve sur le bord d'un objet! Par exemple sur l'image ci contre, le pixel "a" se trouve en bordure d'objet alors que le pixel "b" est à l'intérieur de l'objet. 155 Pour un pixel en position a : 60 a 140 e 50 b 35 d a b 40 On calcule un nombre t= ((b d) 2 +(c e) 2 ) c Exemple : pour "a", t= ((140 60) 2 +(35 155) 2 ) 144,2 et pour "b", t= ((35 50) 2 +(40 60) 2 )=25 On va donc estimer que si le nombre est supérieur à 25 (par exemple) alors le pixel se trouve en bordure. On l'affichera en noir et si le nombre est inférieur à 25 on l'affichera en blanc. Ecrire une fonction qui prend en argument 4 nombres b, c, d, e et qui retourne le nombre ((b d) 2 +(c e) 2 ) Mettre en œuvre la transformation et sauver le résultat sous le nom img_bord.pgm B M-L 5/8

IV. Travail sur des images en couleurs (format jpg). On va travailler dans un dossier c:/isn/trait_img/jpg IV.1. Format d'un pixel. Dans le cas du format jpg, chaque pixel est un tuple constitué de 3 valeurs (R,G,B). Chacune de ces valeurs représente le niveau de Rouge, de Vert et de Bleu constituant le point. Ces valeurs sont comprises entre 0 et 255. Le noir correspond au tuple (0,0,0) et le blanc à (255,255,255). Ecrire un programme qui va afficher la valeur du pixel de coordonnées (10,20) de l'image img_base.jpg. IV.2. Transformation en niveaux de gris. Pour transformer une image couleur en image en niveaux de gris, on peut faire la moyenne des 3 couleurs et affecter le résultat au pixel de l'image nouvellement créée. On doit prendre soin de définir le mode de la nouvelle image comme étant "L" : img_out=image.new("l",img_in.size) Sauvegarder l'image produite sous img_niv_gris.pgm IV.3. Transformation en négatif couleur. On reprendra le même principe que pour le négatif noir et blanc en agissant sur chacune des trois couleurs R, G et B. Sauvegarder sous img_neg.jpg B M-L 6/8

V. Scripts utilisés. V.1. Copie d'une image.pgm à l'identique. import os from PIL import Image #bibliothèque pour le travail sur les dossier #bibliothèque pour le travail sur les images rep_cour=os.getcwd() #répertoire courant print ("répertoire courant :",rep_cour) if rep_cour!="c:/isn/trait_img": #si on n'est pas dans le bon print ("on se déplace vers ") os.chdir("c:/isn/trait_img") #on s'y déplace! print(os.getcwd()) #vérification print ("tout est en ordre!") #Nous allons ouvrir le fichier image img_base print ("Ce programme va recopier à l'identique l'image img_base et sauvegarder la copie") nom_image=("img_base.pgm") #pour ouvrir une autre image il suffira de changer le nom img_in=image.open(nom_image) taille=img_in.size #tuple (Colonnes,Lignes) des dimensions de l'image col=taille[0] lgn=taille[1] print ("image de",col,"colonnes par",lgn,"lignes") img_out=image.new(img_in.mode,img_in.size) #création du fichier de sortie for l in range(lgn): for c in range(col): #print(l,c) p=img_in.getpixel((c,l)) img_out.putpixel((c,l),p) img_out.save("img_copie.pgm") img_in.show() img_out.show() #affichage de l'image de départ #affichage de l'image créée B M-L 7/8

V.2. Transformation d'une image couleurs en niveau de gris. import os #bibliothèque pour le travail sur les dossier from PIL import Image #bibliothèque pour le travail sur les images rep_cour=os.getcwd() #répertoire courant print ("répertoire courant :",rep_cour) if rep_cour!="c:/isn/trait_img/jpg": #si on n'est pas dans le bon print ("on se déplace vers ") os.chdir("c:/isn/trait_img/jpg") #on s'y déplace! print(os.getcwd()) #vérification print ("tout est en ordre!") #Nous allons ouvrir le fichier image img_base print ("Ce programme va trnsformer une image couleurs en image en niveaux de gris et sauvegarder la copie") nom_image=("img_base.jpg") #pour ouvrir une autre image il suffira de changer le nom img_in=image.open(nom_image) taille=img_in.size #tuple (Colonnes,Lignes) des dimensions de l'image col=taille[0] lgn=taille[1] print ("image de",col,"colonnes par",lgn,"lignes") img_out=image.new("l",img_in.size) #création du fichier de sortie for l in range(lgn): for c in range(col): #print(l,c) p=img_in.getpixel((c,l)) p=(p[0]+p[1]+p[2])/3 img_out.putpixel((c,l),p) img_out.save("img_niv_gris.pgm") img_in.show() #affichage de l'image de départ img_out.show() #affichage de l'image créée B M-L 8/8