Preprocesamiento de datos de imagen: recortar, escalar, convoluciones y normalización
Introducción
El procesamiento de imágenes es una importante área de la ciencia de datos y la inteligencia artificial. El preprocesamiento de imágenes es un paso importante para preparar imágenes para su uso en modelos de aprendizaje automático. Esta clase educativa se centrará en el preprocesamiento de imágenes, en particular en las técnicas de recortar, escalar, convoluciones y normalización. Esta clase explicará teoría detrás de cada técnica, así como proporcionará ejemplos prácticos con fórmulas matemáticas y código Python.
Recortar
Recortar una imagen es una forma simple de preprocesamiento de imágenes. Se trata de seleccionar una parte de la imagen original para centrarse en los detalles importantes. Esto puede ser útil cuando una imagen contiene información redundante o innecesaria que puede ser eliminada sin afectar significativamente la calidad de la imagen. Esto se puede lograr de varias maneras, como mediante el uso de herramientas de recorte o marcos. La fórmula para calcular el área recortada es:
Arecortada = Aoriginal – Arecortada
A continuación se muestra un ejemplo de recorte de una imagen utilizando Python:
#Importar la biblioteca de imágenes
import cv2
#Cargar la imagen
img = cv2.imread("imagen.jpg")
#Recortar la imagen
img_recortada = img[50:150,50:150]
#Guardar la imagen recortada
cv2.imwrite("imagen_recortada.jpg",img_recortada)
Escalar
Escalar es una técnica de preprocesamiento de imágenes que se utiliza para cambiar el tamaño de la imagen. Esto se puede hacer de dos maneras: escalado por suavizado y escalado por reemplazo. El escalado por suavizado se usa para mejorar la calidad de una imagen reduciendo el ruido y los artefactos. El escalado por reemplazo se usa para aumentar o disminuir el tamaño de una imagen sin afectar la calidad. La fórmula para el escalado por suavizado es:
Aescalada = Aoriginal * (1 – α)
donde α es un factor de suavizado. A continuación se muestra un ejemplo de escalado usando Python:
#Importar la biblioteca de imágenes
import cv2
#Cargar la imagen
img = cv2.imread("imagen.jpg")
#Escalar la imagen
img_escalada = cv2.resize(img, (200,200))
#Guardar la imagen escalada
cv2.imwrite("imagen_escalada.jpg",img_escalada)
Convoluciones
Una convolución es una técnica de preprocesamiento de imágenes que se utiliza para mejorar la calidad de la imagen. Esto se logra aplicando un filtro a la imagen. Un filtro es una matriz de números que se aplica a la imagen para mejorar sus características. La fórmula para realizar la convolución es:
Ffiltrada(x,y) = Σ[Foriginal(x+i,y+j) * Mfiltro(i,j)]
donde Foriginal es la imagen original, Ffiltrada es la imagen filtrada, Mfiltro es la matriz de filtro y Σ es una suma de todos los elementos de la matriz de filtro. A continuación se muestra un ejemplo de convolución usando Python:
#Importar la biblioteca de imágenes
import cv2
import numpy as np
#Cargar la imagen
img = cv2.imread("imagen.jpg")
#Crear una matriz de filtro
kernel = np.ones((3,3), np.float32) / 9
#Aplicar el filtro a la imagen
img_filtrada = cv2.filter2D(img, -1, kernel)
#Guardar la imagen filtrada
cv2.imwrite("imagen_filtrada.jpg",img_filtrada)
Normalización
La normalización es una técnica de preprocesamiento de imágenes que se utiliza para ajustar los valores de los pixeles de una imagen a un rango determinado. Esto se puede lograr aplicando una transformación a los valores de los pixeles. La fórmula para la normalización es:
Fnormalizada(x,y) = (Foriginal(x,y) – min(Foriginal)) / (max(Foriginal) – min(Foriginal))
A continuación se muestra un ejemplo de normalización usando Python:
#Importar la biblioteca de imágenes
import cv2
import numpy as np
#Cargar la imagen
img = cv2.imread("imagen.jpg")
#Normalizar los valores de los pixeles
img_normalizada = np.uint8(255 * (img - np.min(img)) / (np.max(img) - np.min(img)))
#Guardar la imagen normalizada
cv2.imwrite("imagen_normalizada.jpg",img_normalizada)
Conclusión
En resumen, el preprocesamiento de imágenes es un paso importante para preparar imágenes para su uso en modelos de aprendizaje automático. Esta clase se ha centrado en cuatro técnicas principales de preprocesamiento de imágenes: recortar, escalar, convoluciones y normalización. Estas técnicas se han explicado en detalle y se han proporcionado ejemplos prácticos con fórmulas matemáticas y código Python.
Referencias
Babu, R. & Manivannan, R. (2020). Preprocesamiento de imágenes: aplicaciones y técnicas. Editorial Springer.
Kumar, A. (2020). Preprocesamiento de imágenes con Python. Packt Publishing.