Los sentidos son fundamentales para nuestra percepción del mundo, ya que nos permiten recibir, procesar e interpretar la información del entorno. A través de ellos, experimentamos y comprendemos la realidad que nos rodea. De todos los sentidos, la visión destaca como el más importante, por su naturaleza dominante influye profundamente en cómo percibimos y respondemos a nuestro mundo.
Pero nuestro cerebro no solo decodifica las señales eléctricas que recibe en imágenes, sino que también integra información de diferentes áreas visuales para comprender el color, la forma, el movimiento y la profundidad. Este proceso permite a los humanos reconocer objetos, percibir el espacio tridimensional, evaluar distancias y movimientos, y reaccionar de manera apropiada a los estímulos visuales. La percepción visual es esencial para movernos por el mundo, la interacción social y la realización de tareas complejas, haciendo de la visión uno de los sentidos más críticos.
Para dotar de visión a las computadora necesitamos replicar de algún modo ese proceso. Por un lado necesitamos un forma de hacerles llegar la información visual y, por otro lado, necesitamos dotarles de un «cerebro» que sea capaz de interpretar y dar sentido a esa información. Ese cerebro es a día de hoy las Redes Neuronales Artificiales y, sobre todo, las Redes Neuronales Convolucionales.

Qué ven las computadoras

Veamos un ejemplo con una imagen de un personaje famoso y muy reconocible, el retrato del ex-presidente de los EEUU Abraham Lincoln. Cuando con nuestros ojos miramos la foto de Lincoln somos capaces de identificar inmediatamente que se trata de un rostro con ojos, nariz, boca, orejas, cejas… sin ningún esfuerzo somos capaces de recolectar información de todos esos pequeños detalles y darles sentido. Más allá de identificar que es un rostro no tardamos en decir «es el rostro de Lincoln». Aunque no hayamos visto nunca esa imagen concreta del famoso presidente nuestro cerebro es capaz de conectar la información de la imagen y la información que ya habita en nuestro cerebro para hacer esa identificación a la velocidad del rayo. Pero, ¿qué ve realmente un ordenador cuando mira esa misma foto?
Necesitamos convertir esta imagen en un formato que pueda ser procesado por computadoras. Las computadoras son buenas con los números, así que transformamos la información de la imagen en algo que podamos darle al ordenador, algo con lo que pueda trabajar.
En realidad un ordenador solo «ve» la imagen de la derecha del todo, una matriz de dos dimensiones con valores que oscilan entre 0 y 255. Aunque la representación en píxeles de la imagen no sería exactamente la que muestra el ejemplo te ruego que sigas el razonamiento y verás que tiene un sentido para llegar desde la foto a la matriz.
En la segunda imagen se ha pixelado la foto de Lincoln con píxeles bien grandes, por simplificar. En la tercera foto sencillamente hemos dado un valor a la tonalidad de cada píxel dentro de una escala que va desde el 0 (negro o ausencia de luz) al 255 (blanco o luminosidad máxima) pasando por 254 tonalidades de luminosidad del gris intermedias. La matriz de la derecha muestra simplemente los valores de los píxeles de la tercera imagen quitando la propia imagen del fondo. Ahora estás viendo lo mismo que «ve» una computadora.
Como podemos ver una imagen tiene unas dimensiones que se pueden representar por su ancho y su alto en píxeles, por ejemplo la imagen de esta moto podríamos decir que tiene una dimensión de 32 x 20 píxeles.

Cada uno de los píxeles de la imagen será un componente básico de ésta. Al tratarse de un espacio con dos dimensiones cualquier pixel de la imagen tendrá una ubicación en ese espacio, es decir, podremos identificar cualquier pixel con sus coordenadas en ese espacio de dos dimensiones. El eje x va de 0 a 31 y el eje y de 0 a 19. En total, la imagen, en total, tiene 640 (32 × 20) píxeles.
En el primer píxel destacado podemos ver que se haya en el valor x=20 e y=9 y que el valor de f(x,y)= 0, es decir se trata de un pixel negro, el más oscuro de la escala.
Podemos comprobar que en la imagen, al tener dos dimensiones, cada pixel se encuentra en un contexto o, dicho de otro modo, está rodeada de una serie de píxeles que la rodean a lo largo de los dos ejes, x e y. Esta información será fundamental a la hora de interpretar y extraer características de las imágenes, pero esto lo veremos en otro artículo más adelante.
Hemos visto la matriz que representa la información presente en las imágenes que llamamos en blanco y negro (aunque en realidad estén representadas por una gama de 256 tonalidades diferentes entre esos valores), pero ¿qué pasa cuando la fotografía es en color?
Imágenes en Color
Para representar el valor de cada píxel ahora necesitaremos otra forma de representar la información, la escala de 255 tonos de las imágenes en blanco y negro no nos es de ayuda en este contexto. Pero contamos con otra herramienta: el RGB
RGB es un modelo que representa los colores a través de la combinación de tres colores primarios: rojo (Red), verde (Green) y azul (Blue). Se trata de un modelo aditivo, lo que significa que los colores se crean combinando diferentes intensidades de estos tres colores de luz a la vez. Cuando se mezclan en diferentes proporciones, pueden producir una amplia gama de colores.
Usando el RGB podemos representar entonces cualquier imagen a color, y para cada pixel en esta ocasión obtendremos tres valores que combinados arrojan el color que vemos en la imagen.
Veamos ahora nuestra moto en todo su esplendor y colorido en vez de en blanco y negro. A la derecha podemos ver la representación de la matriz para cada uno de los canales R (rojo) G (verde) y B (azul) que de nuevo tomará valores entre 0 y 255 para representar las diferentes tonalidades de brillo de cada uno de esos valores.

Como puede ver en la imagen el color se compone de tres canales: rojo, verde y azul. Ahora la pregunta es, ¿cómo ven las computadoras esta imagen? Una vez más los ordenadores ven matrices. En esta ocasión, a diferencia de las imágenes en escala de grises, donde teníamos un solo canal, tendremos tres matrices apiladas una encima de otra; por eso hablamos de una matriz en tres dimensiones (3D).
En el ejemplo, por simplificar, cada matriz es de 19×19, es decir cuenta con 361 píxeles pero como se trata de una matriz de tres dimensiones se representa con la dimensionalidad (19, 19, 3), siendo 3 la profundidad de la matriz.
Digamos que la primera matriz representa el canal rojo; entonces cada elemento de esa matriz representa una intensidad de color rojo en ese píxel, y lo mismo ocurre con el verde y el azul. Cada píxel de una imagen en color tiene tres números (0 a 255) asociados con él. Estos números representan la intensidad del color rojo, verde y azul en ese píxel en particular en cada canal.
Cada uno de los tres colores primarios en el modelo RGB tiene un valor de intensidad que normalmente va de 0 a 255 (en el caso de la codificación de 8 bits por color). Un valor de 0 significa que no hay luz de ese color, mientras que 255 indica la máxima intensidad de ese color. Por ejemplo, un píxel con valores RGB (255, 0, 0) aparecerá rojo, (0, 255, 0) aparecerá verde, y (0, 0, 255) aparecerá azul.
Hasta aquí la introducción a entender cuál es la información que ven realmente las computadoras, la materia prima con la que trabajan para hacer cosas tan maravillosas como distinguir e identificar si hay un perro en una foto, si ese rostro pertenece a Abraham Lincoln, Barack Obama o George Washington e incluso ser capaces de crear imágenes totalmente nuevas a partir de unas indicaciones en un prompt.



