Documentos de Académico
Documentos de Profesional
Documentos de Cultura
In [58]:
print(Matriz)
In [59]:
#Compresion
contador = 0
contador1 = 0
promedios=[]
while contador < Matriz.shape[0]:
while contador1 < Matriz.shape[1]:
sub_array = Matriz[contador:contador+2,contador1:cont1+2]
prom=0
for fila in sub_array:
for elemento in fila:
prom += elemento
prom = int(prom/(sub_array.shape[0]*sub_array.shape[1]))
promedios.append(prom)
contador1+=2
contador1=0
contador+=2
proms=(np.asarray(promedios).reshape(6,6))
proms
Out[59]:
In [60]:
#Descompresion
cant = 0 # es el contador de filas
cant1 = 0 # es el contador de los elements por fila
recons = [] #matriz 1
reconstr = [] #matriz 2
while cant < proms.shape[0]: #iteracin entre filas de la matriz comprimida
while cant1 < proms.shape[1]: #iteracion de los elementos de las filas de la matri
s comprimida
sub = proms[cant,cant1] #toma un valor de la fila
recons.append(sub) #agrega el valor a la matriz 1
recons.append(sub) #repite el valor en la matriz 1
cant1+=1 #siguiente elemento de la matriz comprimida
cant1=0 #reinicia el numero de elementos de fila
cant+=1 #siguiente fila
cant+=1 #siguiente fila
reconst = (np.asarray(recons).reshape(6,12)) #la matriz (MM1) con filas con elementos repetidos 2
veces cada una
for i in range(reconst.shape[0]): #para cada una de las filas de la matriz creada (MM1)
a=reconst[i] #toma una fila
reconstr.append(a) #la agrega a la matriz 2
reconstr.append(a) #repite ;a fila anterior en la matriz 2
i+=1 # siguiente fila de (MM1)
reconstruccion = (np.asarray(reconstr).reshape(12,12))#Matriz Reconstruida
print('\nReconstruccion de la imagen :\n')
print(reconstruccion)
Reconstruccion de la imagen :
In [61]:
print('\nimagen Original\n')
print(Matriz)
imagen Original
In [62]:
El MSE es :
5509.666666666667
El RMSE es:
El RMSE es:
74.22712891299695
In [63]:
# PSNR
import math
maximfilas=[]
for j in range(Matriz.shape[0]): # para cada fila
qa=np.asarray(Matriz[j])
qqa=max(qa) #maximo valor de fila
j+=1
maximfilas.append(qqa) #vector con los maximos valores
maxi=max(maximfilas) #maximo de valor total
PSNR=20*(math.log10(maxi/RMSE)) #calculo PSNR
print('El PSNR es:')
print(PSNR)
El PSNR es:
10.685421082912361
In [64]:
#SNR
a=0
for i in range(Matriz.shape[1]): #Para cada fila
for j in range(Matriz.shape[0]):
c=Matriz[i,j]
d=reconstruccion[i,j]
e=c**2
a+=e #Sumatoria
j+=1
j=0
i=+1
b=a/(Matriz.shape[0]*Matriz.shape[1]) #calculo SNR
SNR=20*(math.log10((b**0.5/RMSE)))
print("SNR:")
print(SNR)
SNR:
6.20525925821072
In [65]:
# Calcula la diferencia y la imagen diferencia con a=1
i=0
j=0
D=[]
d1=[]
for i in range(Matriz.shape[1]):
for j in range(Matriz.shape[0]):
pi =Matriz[i,j]
qi=reconstruccion[i,j]
e=pi-qi
diff=e #diferencia entre Matriz Original y Reconstruida
b=128 #mitad dle valor maximo de un pixel
ee=e+b
a=1 #Parametro de mag
D.append(ee*a)
d1.append(diff)
j+=1
j=0
i=+1
imgdif=(np.asarray(D).reshape(12,12)) #Imagen de Diferencia
d2=(np.asarray(d1).reshape(12,12)) # Resta entre ambas imagenes
print('la imagen diferente con a=1')
print(imgdif)
print('La difeencia entre ambas:')
print(d2)
In [ ]: