ACTIVIDAD
PROCESAMIENTO DIGITAL DE IMAGENES
IMAGENOLOGIA
Estudiante:
Sergio Lira Pérez
Docente: Hernández Tolentino Uriel
Fecha de entrega: 22/03/202
1. Código realizado en Dev C.
2. import cv2 41. self.label_umbral.pack()
3. import numpy as np 42. self.scale_umbral = Scale(master, from_=0,
4. import tkinter as tk to=100, orient=tk.HORIZONTAL)
5. from tkinter import filedialog, Button, Label, Scale 43. self.scale_umbral.pack()
6. from skimage.transform import radon, iradon 44.
7. from skimage.filters import sobel 45. self.label_umbral = Label(master, text="Filtro
8. Radon:")
9. radon = 0 46. self.label_umbral.pack()
10. 47. self.scale_umbral = Scale(master, from_=0,
to=255.0, orient=tk.HORIZONTAL)
11. class AplicacionImagen: 48. self.scale_umbral.pack()
12. def __init__(self, master): 49.
13. self.master = master 50. self.label_umbral = Label(master, text="Filtro
14. master.title("Ajuste de Imagen") iRadon:")
15. 51. self.label_umbral.pack()
16. self.imagen_original = None 52. self.scale_umbral = Scale(master, from_=0,
17. self.imagen_procesada = None to=180, orient=tk.HORIZONTAL)
18. 53. self.scale_umbral.pack()
19. self.label_imagen = Label(master, 54.
text="Cargar Imagen:") 55. self.btn_aplicar = Button(master,
20. self.label_imagen.pack() text="Aplicar Ajustes",
21. command=self.aplicar_ajustes)
22. self.btn_cargar = Button(master, text="Cargar 56. self.btn_aplicar.pack(pady=10)
Imagen", command=self.cargar_imagen) 57.
23. self.btn_cargar.pack(pady=10) 58. def cargar_imagen(self):
24. 59. ruta_imagen = filedialog.askopenfilename()
25. self.label_gamma = Label(master, 60. if ruta_imagen:
text="Ajuste de Gamma:") 61. self.imagen_original =
26. self.label_gamma.pack() cv2.imread(ruta_imagen)
27. self.scale_gamma = Scale(master, from_=0.1, 62. self.imagen_procesada =
to=3.0, resolution=0.1, orient=tk.HORIZONTAL) self.imagen_original.copy()
28. self.scale_gamma.pack() 63. self.mostrar_imagen(self.imagen_procesada
29. )
30. self.label_sigma = Label(master, text="Valor 64.
de Sigma (Filtro Gaussiano):") 65. def mostrar_imagen(self, imagen):
31. self.label_sigma.pack() 66. cv2.imshow('Imagen', imagen)
32. self.scale_sigma = Scale(master, from_=0, 67.
to=5.0, resolution=0.1, orient=tk.HORIZONTAL) 68. def aplicar_ajustes(self):
33. self.scale_sigma.pack() 69. if self.imagen_procesada is not None:
34. 70. gamma = self.scale_gamma.get()
35. self.label_umbral = Label(master, 71. sigma = self.scale_sigma.get()
text="Umbral de Canny:") 72. umbral_canny = self.scale_umbral.get()
36. self.label_umbral.pack() 73.
37. self.scale_umbral = Scale(master, from_=0, 74. self.imagen_procesada =
to=255, orient=tk.HORIZONTAL) self.ajustar_gamma(self.imagen_original, gamma)
38. self.scale_umbral.pack() 75. self.imagen_procesada =
39. self.aplicar_filtro_gaussiano(self.imagen_procesada
40. self.label_umbral = Label(master, text="Filtro , sigma)
Pasa Altas:") 76. self.imagen_procesada =
self.aplicar_canny(self.imagen_procesada, 108. root = tk.Tk()
umbral_canny) 109. app = AplicacionImagen(root)
77. self.imagen_procesada= 110. root.mainloop()
self.aplicar_filtropasa_altas(self.imagen_procesada, 111. cv2.destroyAllWindows()
sigma)
78. self.imagen_procesada=
self.aplicar_transformada_Radon(self.imagen_proc
El anterior código, se realizó en el ambiente
esada, sigma)
Phyton – Dev C Compiler.
79. self.imagen_procesada=
self.aplicar_transformada_inversaRadon(self.image
n_procesada, sigma) 1. Interfaz - Código realizado en Dev C.
80.
81. self.mostrar_imagen(self.imagen_procesada
)
82.
83. def ajustar_gamma(self, imagen, gamma):
84. inv_gamma = 1.0 / gamma
85. tabla = np.array([((i / 255.0) ** inv_gamma) *
255 for i in np.arange(0, 256)]).astype("uint8")
86. return cv2.LUT(imagen, tabla)
87.
88. def aplicar_filtro_gaussiano(self, imagen,
sigma):
89. return cv2.GaussianBlur(imagen, (0, 0),
sigmaX=sigma)
90.
91. def aplicar_canny(self, imagen, umbral):
92. return cv2.Canny(imagen, umbral, umbral * 2)
93.
94. def aplicar_filtropasa_altas(self, imagen, sigma):
95. imagen = sobel (imagen)
96. return cv2.LUT(imagen)
97.
98. def
aplicar_transformada_Radon(self,imagen,sigma):
99. theta =
np.linspace(o.,180.,max(imagen),endopoint =
False)
100. sinogram = radon (imagen, theta=theta,
circle=True)
101. return cv2.randn (imagen, (0,0))
102.
103. def
aplicar_transformada_inversaRadon(self,imagen,si
gma):
104. reconstructed_image = iradon (sinogram, theta
= theta, circle=True)
105. return cv2(imagen, tabla)
106.
107. if __name__ == "__main__":
Imágenes, filtros deseados.