Está en la página 1de 11

VICERRECTORADO DOCENTE Código: GUIA-PRL-2.

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

FORMATO DE GUÍA DE PRÁCTICA DE LABORATORIO PARA DOCENTES

CARRERA: Computación ASIGNATURA: Visión por Computadora


NRO. PRÁCTICA: 7 TÍTULO PRÁCTICA: GUIA-2.2 Operaciones sobre grupos de puntos de la
imagen
OBJETIVO
- Aplicar el filtro de la media a una imagen para suavizar el ruido.
- Utilizar el filtro de la mediana para eliminar el ruido impulsivo.
- Aplicar el filtro Gaussiano para suavizar la imagen sin eliminar detalles importantes.
- Agregar ruido sal y pimienta a las imágenes y analizar cómo afecta su apariencia.
- Comprender el significado y las diferencias entre cada uno de los filtros utilizados..

1. Ingrese al AVAC de la práctica de la materia, en la Unidad # 2 encontrará los documentos para


realizar la práctica incluyendo el anexo con el detalle de cada una de las instrucciones a realizar.
2. Lea detenidamente cada instrucción y verifique que progresivamente los resultados sean
exitosos.
3. Suba el documento al AVAC cumpliendo con los plazos de entrega indicados por el profesor.

INSTRUCCIONES 4. Detalle de la subida del archivo


• Subir un archivo en pdf con la información solicitada, este documento debe tener
una caratula con el nombre de los integrantes.
• Solo un estudiante sube al AVAC.
• Trabajar en grupo de 2 estudiantes.
• En el nombre del archivo poner el apellido de los 2 estudiantes.

Integrantes:
Andrew Acosta
Diegmar Autheman
David Gonzales
Cristhian Yupa

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

ANEXO
Desafio #1

Ejercicio: Explorando filtros y ruido en el procesamiento de imágenes

Objetivo: En esta práctica de laboratorio, se compara y evalua el desempeño de cada filtro


en términos de su capacidad para reducir el ruido y preservar los detalles importantes de la
imagen.

Descripción: En esta práctica, exploraremos diferentes técnicas de procesamiento de


imágenes mediante la aplicación de distintos filtros. Nos centraremos en tres tipos de filtros
comunes: el filtro de la media, el filtro de la mediana y el filtro Gaussiano. Además, también
aplicaremos ruido sal y pimienta a las imágenes para analizar cómo afecta a su apariencia.

Materiales necesarios:

Un entorno de programación Python con OpenCV instalado.


Conjunto de imágenes de prueba.

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

Pasos de la práctica:

1. Desafío 1: Operación de puntos de espacio:

a. Cargar una imagen de muestra para procesar.

import cv2

from google.colab.patches import cv2_imshow


import numpy as np
import matplotlib.pyplot as plt

# Cargar una imagen de muestra para procesar


from google.colab import drive
drive.mount("/content/drive/", force_remount=True)
path01 = "drive/My Drive/mega.jpg"

image = cv2.imread(path01, cv2.IMREAD_GRAYSCALE)


print("imagen")
cv2_imshow(image)

Se carga la imagen con la cual vamos a estar trabajando llamada “mega,jpg”


La imagen está cargada directamente desde el drive de nuestra cuenta personal usando el
comando “drive.mount”

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

b. Implementar el filtro de la media:


i. Definir una ventana de tamaño determinado (por ejemplo, 3x3, 5x5).

# Implementar el filtro de la media


def apply_mean_filter(image, window_size):
filtered_image = cv2.blur(image, (window_size, window_size))
return filtered_image

# Definir una ventana de tamaño determinado


window_size = 3

ii. Deslizar la ventana sobre la imagen y calcular el valor promedio de


los píxeles dentro de la ventana.

# Aplicar el filtro de la media


mean_filtered_image = apply_mean_filter(image, window_size)

iii. Reemplazar el valor del píxel central por el valor promedio calculado.

# Mostrar la imagen resultante después de aplicar el filtro de la


media
plt.imshow(mean_filtered_image, cmap='gray')
plt.title("Filtro de la media")
plt.axis('off')
plt.show()

iv. Mostrar la imagen resultante después de aplicar el filtro de la media y


su respectivo histograma.
# Calcular y mostrar el histograma de la imagen resultante
hist_mean_filtered_image =
cv2.calcHist([mean_filtered_image], [0], None, [256], [0,
256])
plt.plot(hist_mean_filtered_image)
plt.title("Histograma del filtro de la media")
plt.show()

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

c. Implementar el filtro de la mediana:


i. Definir una ventana de tamaño determinado (por ejemplo, 3x3, 5x5).

# Implementar el filtro de la mediana


def apply_median_filter(image, window_size):
filtered_image = cv2.medianBlur(image, window_size)
return filtered_image

ii. Deslizar la ventana sobre la imagen y recopilar los valores de los


píxeles dentro de la ventana.

# Aplicar el filtro de la mediana


median_filtered_image = apply_median_filter(image, window_size)

iii. Ordenar los valores recopilados en orden ascendente.

# Mostrar la imagen resultante después de aplicar el filtro de la


mediana
plt.imshow(median_filtered_image, cmap='gray')
plt.title("Filtro de la mediana")
plt.axis('off')
plt.show()

i. Mostrar la imagen resultante después de aplicar el filtro de la mediana


y su respectivo histograma.

# Calcular y mostrar el histograma de la imagen resultante


hist_median_filtered_image = cv2.calcHist([median_filtered_image],
[0], None, [256], [0, 256])
plt.plot(hist_median_filtered_image)
plt.title("Histograma del filtro de la mediana")
plt.show()

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

d. Implementar el filtro Gaussiano:


i. Definir una ventana de tamaño determinado (por ejemplo, 3x3, 5x5,
selecciona 2 mascara o kernel).

# Implementar el filtro Gaussiano


def apply_gaussian_filter(image, window_size, sigma):
filtered_image = cv2.GaussianBlur(image, (window_size,
window_size), sigma)
return filtered_image
# Definir el tamaño de la ventana y el valor de sigma para el filtro
Gaussiano
window_size = 3
sigma = 1.0

ii. Deslizar la ventana sobre la imagen y calcular el valor promedio


ponderado de los píxeles dentro de la ventana.
# Aplicar el filtro Gaussiano
gaussian_filtered_image = apply_gaussian_filter(image,
window_size, sigma)

iii. Reemplazar el valor del píxel central por el valor promedio ponderado
calculado.

# Mostrar la imagen resultante después de aplicar el filtro


Gaussiano
plt.imshow(gaussian_filtered_image, cmap='gray')
plt.title("Filtro Gaussiano")
plt.axis('off')
plt.show()

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

iv. Mostrar la imagen resultante después de aplicar el filtro Gaussiano y


su respectivo histograma.

# Calcular y mostrar el histograma de la imagen resultante


hist_gaussian_filtered_image =
cv2.calcHist([gaussian_filtered_image], [0], None, [256], [0, 256])
plt.plot(hist_gaussian_filtered_image)
plt.title("Histograma del filtro Gaussiano")
plt.show()

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

e. Aplicar ruido sal y pimienta:


i. Definir una probabilidad de ruido, que determine la proporción de
píxeles que serán afectados.

# Aplicar ruido sal y pimienta


def apply_salt_and_pepper_noise(image, probability):
noisy_image = np.copy(image)
num_salt = int(probability * image.size * 0.5)
coords = [np.random.randint(0, i - 1, num_salt) for i in
image.shape]
noisy_image[coords] = 255
num_pepper = int(probability * image.size * 0.5)
coords = [np.random.randint(0, i - 1, num_pepper) for i in
image.shape]
noisy_image[coords] = 0
return noisy_image

# Definir la probabilidad de ruido


probability = 0.05

ii. Para cada píxel de la imagen, generar un número aleatorio y


compararlo con la probabilidad de ruido.

# Aplicar ruido sal y pimienta


noisy_image = apply_salt_and_pepper_noise(image, probability)

# Mostrar la imagen con ruido sal y pimienta


plt.imshow(noisy_image, cmap='gray')
plt.title("Imagen con ruido sal y pimienta")
plt.axis('off')
plt.show()

Resolución CS N° 076-04-2016-04-20
VICERRECTORADO DOCENTE Código: GUIA-PRL-2.1

CONSEJO ACADÉMICO Aprobación: 8/05/2023

Guía de Práctica de Laboratorio

iii. Si el número aleatorio es menor que la probabilidad de ruido,


Supongamos que tenemos el siguiente histograma de una imagen en
escala de grises con 16 niveles de intensidad calcular la imagen
ecualizada.

# Calcular y mostrar el histograma de la imagen con ruido


hist_noisy_image = cv2.calcHist([noisy_image], [0], None, [256], [0,
256])
plt.plot(hist_noisy_image)
plt.title("Histograma de la imagen con ruido")
plt.show()

# Calcular y mostrar la imagen ecualizada


equalized_image = cv2.equalizeHist(image)

plt.imshow(equalized_image, cmap='gray')
plt.title("Imagen ecualizada")
plt.axis('off')
plt.show()

f. Documentar de manera clara y organizada los pasos seguidos, los resultados


obtenidos.

Recuerda documentar cada paso de la práctica, incluyendo explicaciones teóricas de los


filtros utilizados, el código fuente implementado, los resultados obtenidos y el análisis
realizado. Esto permitirá a los estudiantes comprender en detalle los conceptos y técnicas
empleadas en el procesamiento de imágenes y fortalecer su capacidad para resolver desafíos
relacionados con filtros y ruido. ¡Buena suerte!

Resolución CS N° 076-04-2016-04-20

También podría gustarte