-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimage-pixels.py
More file actions
125 lines (108 loc) · 3.98 KB
/
Copy pathimage-pixels.py
File metadata and controls
125 lines (108 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#IMPORTS
# Vous devez installer Pillow (v5.4.0 utilisée ici)
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import random
import math
#### Début du CODE
chemin = "./media/image/oslo.png"
print("Ouverture du fichier ", chemin)
imageOslo = Image.open(chemin)
print("Transformation de l'image en tableau de Pixel") # Quelle est la représentation du pixel ?
image = np.asarray(imageOslo)
# Affichage Lignes, Colonnes et nombre de plans
infosImage = image.shape
print("Width - Height - nombre de plans") # Qu'est-ce qu'un plan ?
print(infosImage)
#FILTRE ROUGE
def filtreRouge(imageSource):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
im[i, j] = (r, 0, 0)
return im
print("Application filtre rouge")
imageRouge = filtreRouge(image)
plt.imshow(imageRouge)
plt.show()
#FILTRE VERT
def filtreVert(imageSource):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
im[i, j] = (0, v, 0)
return im
print("Application filtre vert")
imageVerte = filtreVert(image)
plt.imshow(imageVerte)
plt.show()
#FILTRE BLEU
def filtreBleu(imageSource):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
im[i, j] = (0, 0, b)
return im
print("Application filtre bleu")
imageBleue = filtreBleu(image)
plt.imshow(imageBleue)
plt.show()
#FILTRE GRIS
def filtreGris(imageSource):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
moyenne = (int(r)+int(v)+int(b))/3
im[i, j] = (moyenne, moyenne, moyenne)
return im
print("Application filtre gris")
imageGrisee = filtreGris(image)
plt.imshow(imageGrisee)
plt.show()
#Affichage des couleurs de chaque pixels
def affichage_couleur_pixels(imageSource):
for x in range(infosImage[0]):
ligne = ""
for y in range(infosImage[1]):
ligne = ligne + str(image[x][y])
print(ligne)
print("\n")
#affichage_couleur_pixels(image)
# Cette fonction permet de modifier les canaux de couleur selon une liste prédéfinie
# Rq: https://mortada.net/can-integer-operations-overflow-in-python.html
def ajoutBruit(imageSource, listeBruit):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
nouveauRouge = r + listeBruit[(i+j)%(len(listeBruit))]
nouveauVert = v - listeBruit[(j)%(len(listeBruit))]
nouveauBleu = b - listeBruit[(i)%(len(listeBruit))]
im[i, j] = ( nouveauRouge, nouveauVert, nouveauBleu)
return im
listeBruit = [10, -100, -20, 200, 254, 300, 855, 654, 235, -89, 69, 13, 11, 15, 2018, 1993, 1964, 1961, 1998, 1993, -12, 23 ]
print("Application d'un bruit selon la liste suivante: ", listeBruit)
imageParasite = ajoutBruit(image, listeBruit)
plt.imshow(imageParasite)
plt.show()
def retraitBruit(imageSource, listeBruit):
im = np.copy(imageSource) # On fait une copie de l'original
for i in range(im.shape[0]):
for j in range(im.shape[1]):
r, v, b = im[i, j]
nouveauRouge = r - listeBruit[(i+j)%(len(listeBruit))]
nouveauVert = v + listeBruit[(j)%(len(listeBruit))]
nouveauBleu = b + listeBruit[(i)%(len(listeBruit))]
im[i, j] = ( nouveauRouge, nouveauVert, nouveauBleu)
return im
# Rq: ajoutBruit puis retraitBruit == imageSource -> https://fr.wikipedia.org/wiki/Isomorphisme
print("Retrait du bruit selon la liste suivante: ", listeBruit)
imageSansParasite = retraitBruit( imageParasite, listeBruit )
plt.imshow(imageSansParasite)
plt.show()
print("Fin du programme")