In [1]:
# LIBRERIAS
import matplotlib
import numpy as np
import matplotlib.pylab as plt
import matplotlib.image as mpimg
import cmath as cm
from scipy.io import wavfile
from scipy import misc 
from scipy import stats

%matplotlib inline 
plt.rcParams['figure.figsize'] = 26, 12 # para modificar el tamaño de la figura
#matplotlib.rc('xtick', labelsize=20) 
#matplotlib.rc('ytick', labelsize=20) 
font = {'weight' : 'bold',
        'size'   : 12}

matplotlib.rc('font', **font)

In [2]:
from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di # Example: di.display_html('<h3>%s:</h3>' % str, raw=True)

# This line will hide code by default when the notebook is exported as HTML
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) { jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True)

# This line will add a button to toggle visibility of code blocks, for use with the HTML export version
di.display_html('''<button onclick="jQuery('.input_area').toggle(); jQuery('.prompt').toggle();">Pulse para codigo</button>''', raw=True)



In [3]:
#1. Leer imagen y graficar

Ima = misc.imread('RonchiH.png') # Se lee la imagen como matriz en escala de 8 bit
plt.figure(figsize=(5,5))
plt.imshow(Ima, cmap='gray')
plt.title('Imagen Original RonchiH.png ')
plt.show()


---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-3-023c35c1b5d1> in <module>()
      1 #1. Leer imagen y graficar
      2 
----> 3 Ima = misc.imread('RonchiH.png') # Se lee la imagen como matriz en escala de 8 bit
      4 plt.figure(figsize=(5,5))
      5 plt.imshow(Ima, cmap='gray')

/usr/lib/python3.6/site-packages/scipy/misc/pilutil.py in imread(name, flatten, mode)
    152     """
    153 
--> 154     im = Image.open(name)
    155     return fromimage(im, flatten=flatten, mode=mode)
    156 

/usr/lib/python3.6/site-packages/PIL/Image.py in open(fp, mode)
   2310 
   2311     if filename:
-> 2312         fp = builtins.open(filename, "rb")
   2313 
   2314     try:

FileNotFoundError: [Errno 2] No such file or directory: 'RonchiH.png'

In [ ]:
#2. tranformada de fourier y graficar la amplitud de la transformada.

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(tf)**(1/4),cmap='gray')
plt.title('Tranf. de Fourier de RonchiH.png ')
plt.show()

In [ ]:
#3. Borrar la mitad del patrón, realizar la TF inversa, graficar

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 128

tf_cut[freqinf:freqsup,:] = 0

plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

In [ ]:
#4. Borrar la OTRA mitad del patrón, realizar la TF inversa, graficar
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut2 = tf
freqinf = 128
freqsup = 256

tf_cut2[freqinf:freqsup,:] = 0
dt = 0.001
invtf2 = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut2)))*1/dt**2

plt.subplot(121)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut2)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

plt.subplot(122)
plt.figure(figsize=(5,5))
plt.imshow(abs(invtf2),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

In [ ]:
#5. Repetir el punto tres borrando un área central del patrón. Usar diferentes áreas y analizar.
#-----------------------------------------------------------------------------------------------------------------
#Area interna 1
#-----------------------------------------------------------------------------------------------------------------
fig = plt.figure()

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 100
freqsup = 200

tf_cut[freqinf:freqsup,:] = 0

ax1=fig.add_subplot(2,2,1)
#plt.figure(figsize=(5,5))
ax1.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
#plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

ax2=fig.add_subplot(2,2,2)
#plt.figure(figsize=(5,5))
ax2.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Invers. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
#plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area interna 2
#-----------------------------------------------------------------------------------------------------------------

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 50
freqsup = 230

tf_cut[freqinf:freqsup,:] = 0

ax3=fig.add_subplot(2,2,3)
#plt.figure(figsize=(5,5))
ax3.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
#plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

ax4=fig.add_subplot(2,2,4)
#plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
ax4.imshow(abs(invtf),cmap='gray')
plt.show()

In [ ]:
#6. Repetir el punto tres borrando el área exterior del patrón. Usar diferentes áreas y analizar.
#-----------------------------------------------------------------------------------------------------------------
#Area externa 1
#-----------------------------------------------------------------------------------------------------------------

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 80

tf_cut[freqinf:freqsup,:] = 0

#plt.subplot(3,2,1)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(3,2,2)
plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area externa 2
#-----------------------------------------------------------------------------------------------------------------

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 200

tf_cut[freqinf:freqsup,:] = 0

#plt.subplot(3,2,3)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(3,2,4)
plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.imshow(abs(invtf),cmap='gray')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area externa 3
#-----------------------------------------------------------------------------------------------------------------

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinf = 50
freqsup = 256

tf_cut[freqinf:freqsup,:] = 0

#plt.subplot(3,2,5)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(3,2,6)
plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.imshow(abs(invtf),cmap='gray')
plt.show()

In [ ]:
#7. Repetir el punto 1 y 2 para la imagen RonchiV.png.

#-----------------------------------------------------------------------------------------------------------------
#Leer la imagen RonchiV.png
#-----------------------------------------------------------------------------------------------------------------
ImaV = misc.imread('RonchiV.png') # Se lee la imagen como matriz en escala de 8 bit
plt.figure(figsize=(5,5))
plt.imshow(ImaV, cmap='gray')
plt.title('Imagen Original RonchiV.png ')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Transformada de Fourier de RonchiV.png
#-----------------------------------------------------------------------------------------------------------------
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(tf)**(1/4),cmap='gray')
plt.title('Tranf. de Fourier de RonchiV.png ')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Borar mitad del patron y realizar transf. invers.
#-----------------------------------------------------------------------------------------------------------------
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 128

tf_cut[:,freqinf:freqsup] = 0

plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Repetir el punto 3 con la otra mitad del patrón.
#-----------------------------------------------------------------------------------------------------------------
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 128
freqsup = 256

tf_cut[:,freqinf:freqsup] = 0

plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Repetir el punto 3 un área central del patrón. Usar diferentes áreas.
#-----------------------------------------------------------------------------------------------------------------
#Area interna 1

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 100
freqsup = 200

tf_cut[:,freqinf:freqsup] = 0

#plt.subplot(2,2,1)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(2,2,2)
plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Invers. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area interna 2

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 50
freqsup = 230

tf_cut[:,freqinf:freqsup] = 0

#plt.subplot(2,2,3)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(2,2,4)
plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.imshow(abs(invtf),cmap='gray')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Repetir el punto 3 un área central del patrón. Usar diferentes áreas.
#-----------------------------------------------------------------------------------------------------------------
#Area externa 1

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 80

tf_cut[:,freqinf:freqsup] = 0

#plt.subplot(3,2,1)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(3,2,2)
plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area externa 2

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 0
freqsup = 200

tf_cut[:,freqinf:freqsup] = 0

plt.subplot(3,2,3)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

plt.subplot(3,2,4)
plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.imshow(abs(invtf),cmap='gray')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Area externa 3

dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(ImaV)))*dt**2

tf_cut = tf
freqinf = 50
freqsup = 256

tf_cut[:,freqinf:freqsup] = 0

#plt.subplot(3,2,5)
plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

#plt.subplot(3,2,6)
plt.figure(figsize=(5,5))
plt.title('Tranf. Inver. Freq.Cut:[%s,%s]'%(freqinf,freqsup))
plt.imshow(abs(invtf),cmap='gray')
plt.show()

In [ ]:
#8. Tome la imagen Ronchi.png y utilice la transformada de Fourier para borrar (aproximado) el patrón del cuadro 
#   inferior derecho.

#-----------------------------------------------------------------------------------------------------------------
#Leer la imagen Ronchi.png
#-----------------------------------------------------------------------------------------------------------------
Ima = misc.imread('Ronchi.png') # Se lee la imagen como matriz en escala de 8 bit
plt.figure(figsize=(5,5))
plt.imshow(Ima, cmap='gray')
plt.title('Imagen Original Ronchi.png ')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Transformada de Fourier de Ronchi.png
#-----------------------------------------------------------------------------------------------------------------
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(tf)**(1/4),cmap='gray')
plt.title('Tranf. de Fourier de Ronchi.png ')
plt.show()
#-----------------------------------------------------------------------------------------------------------------
#Borar mitad del patron y realizar transf. invers.
#-----------------------------------------------------------------------------------------------------------------
dt = 0.001
tf = np.fft.fftshift(np.fft.fft2(np.fft.fftshift(Ima)))*dt**2

tf_cut = tf
freqinfx = 0
freqsupx = 256
freqinfy = 0
freqsupy = 256

tf_cut[freqinfx:freqsupx,freqinfy:freqsupy] = 0

plt.figure(figsize=(5,5))
plt.imshow(abs(tf_cut)**(1/4),cmap='gray')
plt.title('Tranf. Freq.Cut:[%s,%s:%s,%s]'%(freqinfx,freqsupx,freqinfy,freqsupy))
plt.show()

dt = 0.001
invtf = np.fft.fftshift(np.fft.ifft2(np.fft.fftshift(tf_cut)))*1/dt**2

plt.figure(figsize=(5,5))
plt.imshow(abs(invtf),cmap='gray')
plt.title('Tranf. Inver. Freq.Cut:[%s,%s:%s,%s]'%(freqinfx,freqsupx,freqinfy,freqsupy))
plt.show()

In [ ]: