5. Representación digital de imágenes

5.1 Introducción

Para trabajar seriamente en visión por computadora hay que entender una idea central: una imagen digital no es una fotografía "mágica" para la máquina, sino una estructura numérica. Todo lo que hace un algoritmo visual, desde detectar bordes hasta clasificar una radiografía, ocurre porque la imagen está representada como datos que pueden almacenarse, leerse y transformarse matemáticamente.

En este tema estudiaremos cómo se representa una imagen en una computadora. Veremos qué es un píxel, qué significan las dimensiones, cómo se expresa el color, qué papel cumple la profundidad de bits y por qué las imágenes pueden pensarse como matrices.

Esta base es imprescindible porque los próximos temas se apoyarán directamente sobre estos conceptos al trabajar con OpenCV, NumPy y PyTorch.

5.2 De una escena real a una imagen digital

Una escena del mundo real es continua: la luz cambia de forma suave en el espacio, los objetos tienen bordes físicos y el color puede variar de manera muy fina. Sin embargo, una computadora no almacena esa continuidad. Lo que hace es convertir la escena en una representación discreta.

Esa conversión implica dos procesos fundamentales:

  • Muestreo espacial: dividir la imagen en pequeñas celdas o posiciones.
  • Cuantización: asignar a cada celda un valor numérico dentro de un rango finito.

El resultado es una rejilla de valores. Cada valor representa la información visual de una pequeña región de la escena original.

Una imagen digital es una aproximación discreta de una escena continua. La computadora no guarda la realidad completa, sino una versión muestreada y cuantizada de ella.

5.3 ¿Qué es un píxel?

La unidad básica de una imagen digital es el píxel. La palabra proviene de picture element, es decir, elemento de imagen. Un píxel representa la información visual asociada a una posición concreta dentro de la imagen.

Es importante no pensar el píxel como un cuadradito físico del mundo real, sino como una unidad de información dentro de la representación digital. En imágenes en escala de grises, cada píxel guarda un nivel de intensidad. En imágenes en color, cada píxel guarda varios valores, normalmente uno por canal.

Si observamos una imagen muy ampliada, empezamos a ver la rejilla de píxeles. Eso muestra que la imagen digital tiene resolución finita y que su detalle depende de cuántos píxeles la componen.

5.4 Dimensiones de una imagen

Las imágenes digitales tienen dos dimensiones espaciales principales:

  • Ancho: cantidad de columnas de píxeles.
  • Alto: cantidad de filas de píxeles.

Por ejemplo, una imagen de 1920 x 1080 tiene 1920 columnas y 1080 filas. Eso significa que contiene:

1920 x 1080 = 2.073.600 píxeles.

Esta cantidad total de píxeles influye directamente en el nivel de detalle, el peso del archivo en memoria y el costo computacional de procesar la imagen.

5.5 Resolución espacial

La resolución espacial describe cuántos píxeles se utilizan para representar la imagen. En términos generales, a mayor resolución, mayor capacidad para capturar detalles finos.

Sin embargo, conviene distinguir dos ideas relacionadas pero no idénticas:

  • Resolución de la imagen: cantidad total de píxeles en ancho y alto.
  • Tamaño físico de visualización: cuánto espacio ocupa esa imagen en pantalla o en papel.

Una misma imagen de 1000 x 1000 píxeles puede verse pequeña o grande según dónde se muestre. Su resolución digital no cambia, aunque sí cambie su tamaño visual.

5.6 Coordenadas dentro de la imagen

Para trabajar con imágenes, cada píxel debe poder ubicarse mediante coordenadas. Lo habitual en programación es usar:

  • Una coordenada de fila.
  • Una coordenada de columna.

En muchas bibliotecas, el origen se ubica en la esquina superior izquierda. Esto significa:

  • La fila aumenta hacia abajo.
  • La columna aumenta hacia la derecha.

Por ejemplo, el píxel (0, 0) está arriba a la izquierda. El píxel (10, 20) indica fila 10, columna 20.

Esta convención es muy importante porque más adelante trabajaremos con recortes, transformaciones y acceso directo a regiones de la imagen.

5.7 Imágenes en escala de grises

Una imagen en escala de grises representa la información visual usando un solo valor por píxel. Ese valor indica intensidad luminosa, normalmente desde negro hasta blanco pasando por niveles intermedios de gris.

En el caso más común, cada píxel usa 8 bits, lo que permite 256 valores posibles:

  • 0 representa negro.
  • 255 representa blanco.
  • Los valores intermedios representan distintos tonos de gris.

Este tipo de imagen es muy importante porque muchas tareas visuales no necesitan color para empezar, y trabajar con un solo canal simplifica el procesamiento.

5.8 Imágenes en color

Las imágenes en color suelen representarse mediante varios canales. El esquema más conocido es RGB, donde cada píxel tiene tres componentes:

  • Rojo.
  • Verde.
  • Azul.

Si cada canal usa 8 bits, entonces cada componente puede tomar valores entre 0 y 255. La combinación de esos tres canales permite representar una gran variedad de colores.

Por ejemplo:

  • (255, 0, 0) representa rojo intenso.
  • (0, 255, 0) representa verde intenso.
  • (0, 0, 255) representa azul intenso.
  • (255, 255, 255) representa blanco.
  • (0, 0, 0) representa negro.

Más adelante veremos que existen otros espacios de color, pero RGB es el punto de partida más intuitivo.

5.9 Canales de una imagen

Un canal puede entenderse como una capa numérica que almacena una parte de la información visual. En una imagen RGB, hay tres matrices superpuestas, una por canal.

Si la imagen tiene tamaño alto x ancho, entonces:

  • Una imagen en grises puede representarse como alto x ancho.
  • Una imagen RGB puede representarse como alto x ancho x 3.

Este detalle será muy importante cuando usemos bibliotecas de Python, porque la forma o shape del arreglo nos dirá exactamente cómo está organizada la imagen en memoria.

5.10 Profundidad de bits

La profundidad de bits indica cuántos bits se usan para representar el valor de cada píxel o de cada canal. Cuantos más bits haya disponibles, mayor será la cantidad de valores posibles.

Bits Valores posibles Ejemplo
1 bit 2 valores Blanco y negro puro.
8 bits 256 valores Escala de grises común o un canal RGB.
16 bits 65.536 valores Imágenes médicas o científicas de mayor precisión.
32 bits Muy alta precisión Procesamiento flotante o imágenes HDR.

En visión por computadora básica, el caso más común es trabajar con 8 bits por canal. Pero en algunos dominios especializados, como medicina o teledetección, es frecuente usar más precisión.

5.11 Cuantización

La cuantización es el proceso por el cual se asignan valores discretos a una señal continua. En imágenes, esto significa que la intensidad o el color no se guardan con infinitos matices, sino con una cantidad limitada de niveles.

Cuanta menor sea la profundidad de bits:

  • Menor será el tamaño potencial de almacenamiento.
  • Menor será la fidelidad tonal.
  • Mayor será el riesgo de perder detalle o suavidad en las transiciones.

Por eso existe una relación directa entre calidad visual, capacidad de representación y costo de almacenamiento.

5.12 La imagen como matriz

Desde el punto de vista computacional, una imagen puede tratarse como una matriz o arreglo numérico. Esto es una idea central porque permite aplicar operaciones matemáticas y algoritmos de forma sistemática.

Por ejemplo, una imagen en escala de grises de 3 filas por 4 columnas podría representarse así:

[
  [ 12,  18,  25,  30],
  [ 40,  55,  63,  70],
  [ 80,  90, 110, 255]
]

Cada número corresponde a la intensidad de un píxel. Si la imagen fuera RGB, cada posición almacenaría tres valores en lugar de uno.

Esta representación matricial explica por qué NumPy es tan importante en visión por computadora: permite manipular imágenes como arreglos numéricos de forma eficiente.

5.13 Forma de un arreglo de imagen

Cuando trabajamos en Python, es habitual inspeccionar la forma de una imagen mediante su shape. Esa forma describe cuántas dimensiones tiene el arreglo y cuántos elementos hay en cada una.

Ejemplos comunes:

  • (480, 640) para una imagen en grises.
  • (480, 640, 3) para una imagen RGB.
  • (480, 640, 4) para una imagen con canal alfa adicional.

Comprender este punto evita errores muy frecuentes al intentar mostrar, recortar, transformar o alimentar imágenes a un modelo.

5.14 Tamaño en memoria

El tamaño de una imagen en memoria depende de:

  • Su ancho y alto.
  • La cantidad de canales.
  • La profundidad de bits.

Por ejemplo, una imagen RGB de 1920 x 1080 con 8 bits por canal ocupa aproximadamente:

1920 x 1080 x 3 = 6.220.800 bytes, es decir, alrededor de 6 MB sin compresión.

Esto muestra por qué trabajar con video o con grandes datasets de imágenes puede demandar mucha memoria y almacenamiento.

5.15 Formatos de archivo

Una cosa es la representación interna de una imagen en memoria y otra es el formato con el que se guarda en disco. Los formatos de archivo definen cómo se almacena y, en muchos casos, cómo se comprime la información.

Algunos formatos frecuentes son:

  • JPEG: muy usado para fotografías, con compresión con pérdida.
  • PNG: compresión sin pérdida y soporte de transparencia.
  • BMP: formato simple, usualmente sin compresión.
  • TIFF: frecuente en contextos profesionales, científicos o médicos.
  • WebP: formato moderno con buena compresión.

En visión por computadora importa conocer esto porque la compresión puede introducir artefactos que afecten el análisis visual.

5.16 Compresión con pérdida y sin pérdida

No todos los formatos guardan la imagen de la misma manera. Algunos preservan exactamente los datos originales, mientras que otros sacrifican parte de la información para reducir tamaño.

  • Sin pérdida: al recuperar la imagen, los valores permanecen intactos.
  • Con pérdida: se eliminan ciertos detalles para lograr archivos más livianos.

Esto tiene consecuencias prácticas. Si una tarea requiere análisis fino de textura, bordes o intensidades, una compresión agresiva puede perjudicar el rendimiento del sistema.

Un archivo visualmente aceptable para un humano no siempre es ideal para un algoritmo. La compresión puede alterar patrones que resultan importantes para la visión por computadora.

5.17 Relación entre representación y procesamiento

Todas las operaciones de visión por computadora dependen de cómo está representada la imagen. Si modificamos los valores de la matriz, cambia la imagen. Si filtramos una región, estamos operando sobre subconjuntos de píxeles. Si entrenamos una CNN, en realidad alimentamos tensores formados por esos mismos valores numéricos.

Por eso conceptos como intensidad, canal, forma, tipo de dato y resolución no son detalles secundarios. Son la base misma sobre la que trabaja cualquier algoritmo visual.

5.18 Tipos de dato numérico

Además de los valores visuales, importa el tipo de dato con el que esos valores se almacenan. Algunos tipos frecuentes son:

  • uint8: enteros sin signo de 8 bits, muy común en imágenes estándar.
  • uint16: enteros sin signo de 16 bits.
  • float32: números flotantes, muy usados en procesamiento y Deep Learning.

Este punto es importante porque ciertas operaciones pueden producir resultados distintos según el tipo de dato. Por ejemplo, una división o normalización suele requerir conversión a flotante.

5.19 Normalización de valores

En muchos flujos de trabajo, especialmente en Deep Learning, no se utilizan los valores originales de 0 a 255. En cambio, se normalizan a escalas más convenientes, como:

  • 0.0 a 1.0.
  • -1.0 a 1.0.

La normalización no cambia la estructura espacial de la imagen, pero sí modifica la escala numérica con la que se trabaja. Esto puede facilitar entrenamiento, estabilidad y comparación entre imágenes.

5.20 Canal alfa y transparencia

Algunas imágenes incluyen un canal adicional llamado alfa. Este canal representa transparencia u opacidad. En ese caso, la imagen puede tener cuatro componentes por píxel en lugar de tres.

Por ejemplo:

  • R, G, B y A.

Aunque en visión por computadora tradicional muchas veces se ignora este canal, en ciertos contextos gráficos o de composición visual puede ser relevante.

5.21 Diferencia entre imagen y display

Conviene no confundir la imagen como dato con la imagen como elemento visual mostrado en pantalla. La representación digital es una estructura numérica. Lo que vemos en el monitor es una interpretación de esa estructura a través del hardware y del software de visualización.

Esto implica que:

  • La misma imagen puede verse distinto en distintos dispositivos.
  • Los perfiles de color y la calibración pueden influir en la percepción humana.
  • El algoritmo, en cambio, opera sobre los valores numéricos almacenados.

En visión por computadora nos interesa principalmente la representación numérica, no la percepción subjetiva del display.

5.22 Ejemplo conceptual completo

Imaginemos una imagen RGB de 100 x 200 píxeles.

  • Tiene 100 filas.
  • Tiene 200 columnas.
  • Cada píxel contiene 3 valores.
  • Si usa 8 bits por canal, cada valor va de 0 a 255.

Su forma sería:

(100, 200, 3)

La cantidad total de valores numéricos almacenados sería:

100 x 200 x 3 = 60.000

Esto ayuda a ver con claridad que una imagen digital no es otra cosa que una colección organizada de números con estructura espacial.

5.23 Errores comunes al empezar

Cuando se empieza a trabajar con imágenes, suelen aparecer confusiones frecuentes:

  • Confundir ancho con alto.
  • No distinguir filas de columnas.
  • Olvidar que una imagen RGB tiene tres canales.
  • Asumir que todas las imágenes están en uint8.
  • Ignorar que ciertos formatos introducen compresión con pérdida.
  • No revisar la forma real del arreglo antes de procesarlo.

Evitar estos errores desde el principio simplifica muchísimo el trabajo posterior.

5.24 Qué debes recordar de este tema

  • Una imagen digital es una representación discreta y numérica de una escena visual.
  • El píxel es la unidad básica de información dentro de la imagen.
  • Las dimensiones indican cantidad de filas y columnas de píxeles.
  • Las imágenes pueden representarse como matrices o arreglos numéricos.
  • En color, lo habitual es trabajar con varios canales, como RGB.
  • La profundidad de bits define cuántos valores puede tomar cada píxel o canal.
  • La resolución, el tipo de dato y el formato de archivo influyen en calidad, memoria y procesamiento.

5.25 Conclusión

La representación digital de imágenes es una base conceptual decisiva para todo lo que sigue en visión por computadora. Si comprendemos que una imagen es una estructura numérica organizada espacialmente, resulta mucho más fácil entender filtros, transformaciones, histogramas, convoluciones y modelos de Deep Learning.

En otras palabras, antes de enseñar a una máquina a reconocer objetos o interpretar escenas, primero debemos entender cómo está almacenada la información visual con la que va a trabajar.

En el próximo tema estudiaremos los canales de color y los espacios de color, ampliando la forma en que las imágenes representan no solo intensidad, sino también información cromática.