Skip to content

Commit

Permalink
Aplicación de filtros, convoluciones y mascaras
Browse files Browse the repository at this point in the history
  • Loading branch information
ac-marlon authored Sep 3, 2018
1 parent 498aef7 commit 6f6d0df
Show file tree
Hide file tree
Showing 16 changed files with 531 additions and 16 deletions.
169 changes: 169 additions & 0 deletions FIltrosConvoluciones.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 2 14:12:49 2018
@author: FamiliaHogar
"""

from skimage import io
import matplotlib.pyplot as plt
import numpy as np

#plt.rcParams['image.cmap'] = 'gray'
matrizOriginal = (io.imread('blackWhite.png')/255.0)/255.0
i, j = matrizOriginal.shape
matrizSuavizada = np.zeros((i, j))
matrizBordeada = np.zeros((i, j))
matrizPerfilada = np.zeros((i, j))

###### Suavizado ######

for x in range(i):
for y in range(j):
if x == 0 and y == 0:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x,(y+1)] + matrizOriginal[x,y]
+ matrizOriginal[x,y] + matrizOriginal[x,y] + matrizOriginal[(x+1),y]
+ matrizOriginal[x,y])/10)
elif x == i-1 and y == 0:
matrizSuavizada[x,y] = ((matrizOriginal[(x),y] + matrizOriginal[(x),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x-1,(y+1)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y] + matrizOriginal[x,y] + matrizOriginal[(x),y]
+ matrizOriginal[x,y])/10)
elif x == i-1 and y == j-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x),y] + matrizOriginal[(x),(y)]
+ matrizOriginal[x,(y)] + matrizOriginal[x-1,(y)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x),y-1]
+ matrizOriginal[x,y])/10)
elif x == 0 and y == j-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y)]
+ matrizOriginal[x,(y)] + matrizOriginal[x,(y)] + matrizOriginal[x,y]
+ matrizOriginal[x,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1]
+ matrizOriginal[x,y])/10)
elif y == 0 and x != 0 and x != i-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x-1,(y+1)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y] + matrizOriginal[x,y] + matrizOriginal[(x+1),y]
+ matrizOriginal[x,y])/10)
elif x == i-1 and y != 0 and y != j-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x),y] + matrizOriginal[(x),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x-1,(y+1)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x),y-1]
+ matrizOriginal[x,y])/10)
elif y == j-1 and x != 0 and x != i-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y)]
+ matrizOriginal[x,(y)] + matrizOriginal[x-1,(y)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1]
+ matrizOriginal[x,y])/10)
elif x == 0 and y != 0 and y != j-1:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x,(y+1)] + matrizOriginal[x,y]
+ matrizOriginal[x,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1]
+ matrizOriginal[x,y])/10)
else:
matrizSuavizada[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x-1,(y+1)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1]
+ matrizOriginal[x,y])/10)

###### Bordes ######

for x in range(i):
for y in range(j):
if x == 0 and y == 0:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - 2*matrizOriginal[x,y]
- matrizOriginal[x,y] + matrizOriginal[(x+1),y])/4)
elif x == i-1 and y == 0:
matrizBordeada[x,y] = ((2*matrizOriginal[(x),y] + matrizOriginal[(x),(y+1)]
- matrizOriginal[x-1,(y+1)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y] + matrizOriginal[(x),y])/4)
elif x == i-1 and y == j-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x),y] + matrizOriginal[(x),(y)]
- matrizOriginal[x-1,(y)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] + matrizOriginal[(x),y-1])/4)
elif x == 0 and y == j-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y)]
- matrizOriginal[x,(y)] - 2*matrizOriginal[x,y]
- matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1])/4)
elif y == 0 and x != 0 and x != i-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x-1,(y+1)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y] + matrizOriginal[(x+1),y])/4)
elif x == i-1 and y != 0 and y != j-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x),y] + matrizOriginal[(x),(y+1)]
- matrizOriginal[x-1,(y+1)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] + matrizOriginal[(x),y-1])/4)
elif y == j-1 and x != 0 and x != i-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y)]
- matrizOriginal[x-1,(y)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] + matrizOriginal[(x+1),y-1])/4)
elif x == 0 and y != 0 and y != j-1:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - 2*matrizOriginal[x,y]
- matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1])/4)
else:
matrizBordeada[x,y] = ((2*matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x-1,(y+1)] - 2*matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] + matrizOriginal[(x+1),y-1])/4)

###### Perfilado ######

for x in range(i):
for y in range(j):
if x == 0 and y == 0:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x,(y+1)] - matrizOriginal[x,y]
- matrizOriginal[x,y] - matrizOriginal[x,y] - matrizOriginal[(x+1),y]
+ 9*matrizOriginal[x,y])/6)
elif x == i-1 and y == 0:
matrizPerfilada[x,y] = ((-matrizOriginal[(x),y] - matrizOriginal[(x),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x-1,(y+1)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y] - matrizOriginal[x,y] - matrizOriginal[(x),y]
+ 9*matrizOriginal[x,y])/6)
elif x == i-1 and y == j-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x),y] - matrizOriginal[(x),(y)]
- matrizOriginal[x,(y)] - matrizOriginal[x-1,(y)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x),y-1]
+ 9*matrizOriginal[x,y])/6)
elif x == 0 and y == j-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y)]
- matrizOriginal[x,(y)] - matrizOriginal[x,(y)] - matrizOriginal[x,y]
- matrizOriginal[x,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x+1),y-1]
+ 9*matrizOriginal[x,y])/6)
elif y == 0 and x != 0 and x != i-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x-1,(y+1)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y] - matrizOriginal[x,y] - matrizOriginal[(x+1),y]
+ 9*matrizOriginal[x,y])/6)
elif x == i-1 and y != 0 and y != j-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x),y] - matrizOriginal[(x),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x-1,(y+1)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x),y-1]
+ 9*matrizOriginal[x,y])/6)
elif y == j-1 and x != 0 and x != i-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y)]
- matrizOriginal[x,(y)] - matrizOriginal[x-1,(y)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x+1),y-1]
+ 9*matrizOriginal[x,y])/6)
elif x == 0 and y != 0 and y != j-1:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x,(y+1)] - matrizOriginal[x,y]
- matrizOriginal[x,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x+1),y-1]
+ 9*matrizOriginal[x,y])/6)
else:
matrizPerfilada[x,y] = ((-matrizOriginal[(x+1),y] - matrizOriginal[(x+1),(y+1)]
- matrizOriginal[x,(y+1)] - matrizOriginal[x-1,(y+1)] - matrizOriginal[x-1,y]
- matrizOriginal[x-1,y-1] - matrizOriginal[x,y-1] - matrizOriginal[(x+1),y-1]
+ 9*matrizOriginal[x,y])/6)

plt.imshow(matrizOriginal,vmin=0,vmax=1)
plt.figure()
plt.imshow(matrizSuavizada,vmin=0,vmax=1)
plt.figure()
plt.imshow(matrizBordeada,vmin=0,vmax=1)
plt.figure()
plt.imshow(matrizPerfilada,vmin=0,vmax=1)
io.imsave("blackWhiteSuave.png", matrizSuavizada)
io.imsave("blackWhiteBordes.png", matrizBordeada)
io.imsave("blackWhitePerfil.png", matrizPerfilada)
43 changes: 43 additions & 0 deletions MascarasImaConvolucion.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 2 12:18:00 2018
@author: FamiliaHogar
"""

from skimage import io
import matplotlib.pyplot as plt
import numpy as np

matrizOriginal = np.random.random((30,30))
matrizSuavizada = np.zeros((30, 30))

for x in range(30):
for y in range(30):
matrizSuavizada[x,y] = ((matrizOriginal[(x+1)%30,y] + matrizOriginal[(x+1)%30,(y+1)%30]
+ matrizOriginal[x,(y+1)%30] + matrizOriginal[x-1,(y+1)%30] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1)%30,y-1]
+ matrizOriginal[x,y])/30)

#plt.imshow(matrizOriginal, vmin=0, vmax=1)
#plt.figure()
#plt.imshow(matrizSuavizada,vmin=0,vmax=1)
#plt.figure()

arrayMujerModelo = io.imread('mujer.jpg')/255.0

h,w,c = arrayMujerModelo.shape # obtenemos el tamaño de la imagen original
mujerGris = np.zeros((h,w)) # creamos una matriz donde generar la imagen

plt.imshow(arrayMujerModelo,vmin=0,vmax=1)
plt.title("Dimensiones de la imagen: \n" + str(arrayMujerModelo.shape))

for i in range(h):
for j in range(w):
mujerGris[i,j] = (arrayMujerModelo[i,j,0] + arrayMujerModelo[i,j,1] + arrayMujerModelo[i,j,2])/3

plt.figure()
plt.imshow(mujerGris,vmin=0,vmax=1)
plt.title("Dimensiones de la imagen: \n" + str(mujerGris.shape))

io.imsave("blackWhite.png", mujerGris)
44 changes: 44 additions & 0 deletions RGBaEscalaGrises.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 2 12:18:00 2018
@author: FamiliaHogar
"""

from skimage import io
import matplotlib.pyplot as plt
import numpy as np

matrizOriginal = np.random.random((30,30))
matrizSuavizada = np.zeros((30, 30))

for x in range(30):
for y in range(30):
matrizSuavizada[x,y] = ((matrizOriginal[(x+1)%30,y] + matrizOriginal[(x+1)%30,(y+1)%30]
+ matrizOriginal[x,(y+1)%30] + matrizOriginal[x-1,(y+1)%30] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1)%30,y-1]
+ matrizOriginal[x,y])/10)

#plt.imshow(matrizOriginal, vmin=0, vmax=1)
#plt.figure()
#plt.imshow(matrizSuavizada,vmin=0,vmax=1)
#plt.figure()

arrayMujerModelo = io.imread('mujer.jpg')/255.0

h,w,c = arrayMujerModelo.shape # obtenemos el tamaño de la imagen original
mujerGris = np.zeros((h,w)) # creamos una matriz donde generar la imagen

plt.imshow(arrayMujerModelo,vmin=0,vmax=1)
plt.title("Dimensiones de la imagen: \n" + str(arrayMujerModelo.shape))

#Se promedia el RGB y se asigna al pixel i,j de la imagen final en grises
for i in range(h):
for j in range(w):
mujerGris[i,j] = (arrayMujerModelo[i,j,0] + arrayMujerModelo[i,j,1] + arrayMujerModelo[i,j,2])/3

plt.figure()
plt.imshow(mujerGris,vmin=0,vmax=1)
plt.title("Dimensiones de la imagen: \n" + str(mujerGris.shape))

io.imsave("blackWhite.png", mujerGris)
7 changes: 4 additions & 3 deletions SuavizadoImaGris.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
print("- Dimensiones de la imagen:")
print(grayGirl.shape)
plt.imshow(grayGirl,vmin=0,vmax=1)
plt.title("Original")

#Carga de imagenes a color:
plt.figure()
Expand All @@ -25,12 +26,12 @@
plt.imshow(colorGirl,vmin=0,vmax=1)


plt.imshow(lena_rgb[:,:,0],vmin=0,vmax=1)
plt.imshow(colorGirl[:,:,0],vmin=0,vmax=1)
plt.title("Canal Rojo")
plt.figure()
plt.imshow(lena_rgb[:,:,1],vmin=0,vmax=1)
plt.imshow(colorGirl[:,:,1],vmin=0,vmax=1)
plt.title("Canal Verde")
plt.figure()
plt.imshow(lena_rgb[:,:,2],vmin=0,vmax=1)
plt.imshow(colorGirl[:,:,2],vmin=0,vmax=1)
plt.title("Canal Azul")

77 changes: 73 additions & 4 deletions SuavizadoMatriz.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,85 @@
@author: FamiliaHogar
"""
import numpy as np
import matplotlib.pyplot as plt

###### Ejercicio original ######

matrizOriginal = np.random.randint(0, 99, (30,30))
matrizSuavizada = np.zeros((30,30))
#print(matrizOriginal)

for x in range(30):
for y in range(30):
matrizSuavizada[x,y] = ((matrizOriginal[(x+1)%10,y] + matrizOriginal[(x+1)%10,(y+1)%10]
+ matrizOriginal[x,(y+1)%10] + matrizOriginal[x-1,(y+1)%10] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1)%10,y-1]
matrizSuavizada[x,y] = ((matrizOriginal[(x+1)%30,y] + matrizOriginal[(x+1)%30,(y+1)%30]
+ matrizOriginal[x,(y+1)%30] + matrizOriginal[x-1,(y+1)%30] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1)%30,y-1]
+ matrizOriginal[x,y])/10)

###### Matriz con cuadros en las esquinas ######

plt.rcParams['image.cmap'] = 'gray'

matrizOriginal = np.zeros((30, 30))
for x in range(30):
for y in range(30):
if (y > 10 or x < 20) and (x > 10 or y < 20):
matrizOriginal[x,y] = 1

###### Matriz con un cuadro en la mitad #######

matrizOriginal = np.zeros((30, 30))
for x in range(30):
for y in range(30):
if (y > 5 and x > 5) and (x < 25 and y < 25):
matrizOriginal[x,y] = 1

###### Matriz continua en los bordes ######

matrizOriginal = np.random.random((30,30))
matrizSuavizada = np.zeros((30, 30))

for x in range(30):
for y in range(30):
matrizSuavizada[x,y] = ((matrizOriginal[(x+1)%30,y] + matrizOriginal[(x+1)%30,(y+1)%30]
+ matrizOriginal[x,(y+1)%30] + matrizOriginal[x-1,(y+1)%30] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1)%30,y-1]
+ matrizOriginal[x,y])/10)

plt.imshow(matrizOriginal, vmin=0, vmax=1)
plt.figure()
plt.imshow(matrizSuavizada,vmin=0,vmax=1)

###### Bordes repetidos ######

matrizOriginal = np.random.randint(0, 99, (32,32))
matrizSuavizadaBord = np.zeros((32, 32))
matrizSuavizada = np.zeros((30, 30))

for x in range(1):
for y in range(32):
matrizOriginal[x,y] = matrizOriginal[x+1,y]

for x in range(32):
for y in range(1):
matrizOriginal[x,y] = matrizOriginal[x,y+1]

for x in range(32):
for y in range(31,32):
matrizOriginal[x,y] = matrizOriginal[x,y-1]

for x in range(31,32):
for y in range(32):
matrizOriginal[x,y] = matrizOriginal[x-1,y]

for x in range(1,31):
for y in range(1,31):
matrizSuavizadaBord[x,y] = ((matrizOriginal[(x+1),y] + matrizOriginal[(x+1),(y+1)]
+ matrizOriginal[x,(y+1)] + matrizOriginal[x-1,(y+1)] + matrizOriginal[x-1,y]
+ matrizOriginal[x-1,y-1] + matrizOriginal[x,y-1] + matrizOriginal[(x+1),y-1]
+ matrizOriginal[x,y])/10)

for x in range(30):
for y in range(30):
matrizSuavizada[x,y] = matrizSuavizadaBord[x+1,y+1]


Loading

0 comments on commit 6f6d0df

Please sign in to comment.