¿Sabes qué es el procesamiento digital de imágenes?
Son un conjunto de técnicas que se aplican a imágenes para definir características, métricas o variables que permitan crear modelos inteligentes, identificar objetos, personas y animales en una imagen, facilitar búsqueda de información, mejorar la apariencia de fotos, comparar imágenes, entre otros.
¿Quieres saber más? Contáctanos hello@fouriering.com
Es amplio el panorama del conocimiento que gobierna estas técnicas, por lo que es una ciencia aplicable para solucionar cualquier problema del día a día. El procesamiento digital de imágenes está presente en aplicaciones industriales, ciencias médicas, biometría e identificación, agricultura, ganadería, satélites de observación terrestre, como en tantas otras tareas de distinta índole en la sociedad.
Un problema relativamente sencillo dentro de este universo de técnicas es evaluar cuando dos imágenes son parecidas. Este problema lo estudia el Image Matching que se centra en evaluar cuando dos imágenes son similares y define una forma de cuantificar esta similitud a través de la correlación entre ambas imágenes. La correlación es una de varias métricas que se pueden obtener de un conjunto de imágenes. Si las imágenes son parecidas, esta correlación debería de ser cercana a 1, mientras que en caso contrario es cercana a 0. Gráficamente, esto es lo que se hace cuando se estima la correlación entre dos imágenes:
La correlación entre dos imágenes genera una nueva matriz llamada matriz de convolución (convoluted feature), que se usa como insumo para técnicas como el Image matching, redes neuronales convolucionales, entre otras.
Las imágenes se convierten en el núcleo de la descripción de la realidad y el procesamiento digital de imágenes aquellas herramientas que permitan clasificar, procesar, representar e inferir lo que se quería capturar con la imagen.
Las imágenes y la tecnología 4.0
Es una ciencia compleja, precisa e interesante pero ¿qué tan útil es en la sociedad, en la industria y en la tecnología 4.0? Bastante de hecho.
En una sociedad enmarcada en la tecnología 4.0, donde internet y los medios digitales permiten almacenar tanta información, las imágenes no son una excepción. Hoy en día, se crean 2.5 exabytes de información (1 exabyte = 1018 bytes) que no poseen un uso posterior a parte de almacenamiento. Por este motivo, las redes neuronales convolucionales y el procesamiento digital de imágenes juegan un papel importante cuando se quiere obtener información de la realidad para tomar una decisión. Es por esto que la visión por computación y estas técnicas cobra fuerzas en la tecnología 4.0.
Las fotografías tomadas desde el espacio se envían a la tierra mediante una técnica del procesamiento digital de imágenes que compacta la imagen, de modo que se pueda representar con menor tamaño y permita enviarse de manera ágil. La industria agropecuaria, agrícola e industrias manufactureras implementan estas técnicas para tener un control de los productos, hacer pruebas de calidad y determinar con anticipación productos que presenten fallos o imperfectos.
Beneficios para tí y tu empresa
Estos son algunos beneficios y aplicaciones que posee el procesamiento digital de imágenes a nivel empresarial. Estas técnicas también poseen una contribución significativa en el sector de la investigación.
Actualmente, el COVID-19 ha cambiado la forma en cómo se mueve el mundo. Uno de estos nuevos cambios es el control para evitar la propagación de la pandemia. Una alternativa adoptada por varias empresas es el distanciamiento social y el reconocimiento facial. Mediante redes neuronales y el procesamiento digital de imágenes, es posible crear algoritmos que pueden determinar cuando puede existir un riesgo de contagio evaluando el distanciamiento entre las personas y teniendo un control de la sintomatología del personal.
¿Quieres crear un asistente virtual personalizado para tu empresa?, el deep learning y el procesamiento digital de imágenes son herramientas que pueden ayudarte a conseguirlo. Un asistente virtual personalizado es un robot virtual (no posee cuerpo físico, hardware) que permite entablar una comunicación con personas y sistemas y reconocer el entorno en el cual se está a través del uso de estas herramientas.
El reconocimiento de productos defectuosos es otro uso común de estas técnicas. Se ubica una cámara en algún lado del flujo del proceso y se obtiene en tiempo real imágenes de este. Estas imágenes pasan posteriormente por algoritmos de procesamiento digital de imágenes y algoritmos inteligentes para determinar el estado del producto.
El reconocimiento facial es otra aplicación que posee este gran universo de técnicas, el cual permite identificar una persona e incluso determinar un estado de conducta dependiendo algunas características que se pueden obtener del rostro humano.
¿Te gustaría aprender más?
Aquí tienes un enlace con conceptos muy básicos para que te embarques en esta aventura.
¿Cómo empezar?
Python es un lenguaje de programación que hoy en día se usa para crear modelos inteligentes y posee un módulo enfocado en procesar imágenes. Este módulo es Open Computer Vision Library (cv2) que, con algún módulo de visualización (se recomienda Plotly) es posible crear algoritmos que hagan estas tareas de procesamiento digital de imágenes de forma rápida, confiable y eficiente. Estos módulos se pueden importar de la siguiente manera:
from PIL import Image
import cv2
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
¿Cómo hacer un Image Matching?
Esta técnica se usa principalmente cuando se quiere saber dónde una imagen patrón (reference) está en una imagen a procesar (image). Matemáticamente, una imagen se representa como una matriz de dimensión nm3 donde el 3 corresponde a los canales RGB (Red, Green, Blue) que permiten darle color a la imágen. La correlación es una métrica que mide la relación lineal entre 2 imágenes mediante un barrido de la reference en la image. La correlación también tiene un uso importante con otro tipo de variables como señales, vectores, entre otros. Este proceso de correlación se presenta gráficamente a continuación. Un Image Matching necesita cinco pasos para identificar las coordenadas donde se tenga similitud entre ambas imágenes, estos pasos son:
Carga de imágenes: Inicialmente se deben cargar ambas imágenes, para nuestro ejemplo se llamarán image y reference.
image = cv2.imread('image.jpg')
reference = cv2.imread('reference.jpg')
Correlación: Evaluar la convolución entre ambas imágenes y obtener el valor máximo de la correlación.
convolution = cv2.matchTemplate(image,reference,cv2.TM_CCOEFF_NORMED)
max_conv = np.max(convolution)
Binarización: Evaluar una condición lógica que permita binarizar la imagen (pasarla a una matriz de 0 y 1). Esta condición se hace
limit = max_conv*umbral_decision
binary_convolution = np.array((convolution >= limit), np.dtype('uint8'))
Dilatación: Dilatar la imagen para hacer un zoom en aquellos puntos donde la correlación es máxima.
kernel = np.ones((3,3),np.dtype('uint8'))
dilated_image = cv2.dilate(binary_convolution,kernel,iterations = 10)
Búsqueda de coordenadas: Se hace buscando contornos en la imágen. Estos contornos luego se llevan a una coordenada puntual y este es el resultado del Image Matching.
Caso práctico
Como ejemplo, queremos buscar en la imágen X donde aparece la imagen Y. Este caso práctico abarca los cuatro primeros pasos del Image Matching.
Se obtiene en la figura de la izquierda el resultado de la convolución entre ambas imágenes. Sin embargo, no está claro todavía los puntos donde encontró la imagen Y. Por esto, es necesario hacer la binarización y la dilatación de la imágen. Estas dos técnicas permiten resaltar estos puntos dentro de todos los píxeles que pueda tener la imágen.
Comments