TIFF: El Estándar Profesional para Imágenes
El formato Tagged Image File Format (TIFF) sigue siendo el estándar de oro para fotografía profesional, escaneo, archivado y flujos de trabajo editoriales. A diferencia de la compresión con pérdidas de JPEG o la limitación de una sola imagen de PNG, TIFF soporta múltiples opciones de compresión—sin pérdidas y con pérdidas—dentro de un único archivo, lo que lo hace ideal para flujos de trabajo donde la calidad nunca se puede comprometer durante el procesamiento intermedio.
Arquitectura del Contenedor TIFF: IFD y Datos de Imagen
La fortaleza de TIFF radica en su estructura extremadamente flexible basada en directorios. Cada archivo TIFF comienza con un encabezado de 8 bytes que especifica el orden de bytes (little-endian II o big-endian MM) y la versión (típicamente 42). Este encabezado es seguido inmediatamente por punteros Image File Directory (IFD)—la clave de la extensibilidad de TIFF.
Estructura IFD: Cada IFD es una secuencia de entradas de directorio de 12 bytes. Cada entrada contiene un número de etiqueta (2 bytes), tipo de datos (2 bytes: 1=BYTE, 2=ASCII, 3=SHORT, 4=LONG, 5=RATIONAL, etc.), recuento (4 bytes) y valor/desplazamiento (4 bytes). Este diseño permite a TIFF incrustar metadatos arbitrarios—resolución, espacio de color, esquema de compresión, fecha/hora, derechos de autor, marca/modelo de cámara—sin romper la compatibilidad hacia atrás.
Un único archivo TIFF puede contener múltiples IFD vinculados mediante desplazamientos, habilitando:
- TIFF multi-imagen (MTIFF): Almacenar secuencias de páginas completas (trabajos de escaneo) en un archivo, cada uno con resolución, espacio de color y compresión independientes
- Cadenas de miniaturas: Almacenar imágenes de resolución completa + vistas previas en paralelo
- TIFF piramidal: Almacenar una imagen base + copias submuestreadas para generación rápida de miniaturas
Estrategias de Compresión: Sin Pérdidas vs Con Pérdidas
Compresión Sin Pérdidas:
- Sin comprimir (Etiqueta 259 = 1): Datos de píxeles puros; archivos más grandes pero tiempo de procesamiento cero
- LZW (Etiqueta 259 = 5): Compresión basada en diccionario Lempel-Ziv-Welch; ~50–70% reducción de tamaño para imágenes naturales; completamente reversible
- PackBits (Etiqueta 259 = 32773): Codificación simple de longitud de ejecución; excelente para imágenes sintéticas/binarias (escaneos, diagramas); reducción del 80–95% para texto
- Deflate (Etiqueta 259 = 8): DEFLATE de PNG; ~10–15% mejor que LZW en datos fotográficos; codificación/decodificación más lenta
Compresión Con Pérdidas:
- JPEG (Etiqueta 259 = 7): Incrusta datos de imagen comprimida JPEG completa; calidad variable; relación típica 20:1; retiene artefactos DCT
- OJPEG (Etiqueta 259 = 6): JPEG obsoleto; raramente utilizado en flujos de trabajo modernos
Ejemplo de Compensación de Compresión: Una imagen RGB lineal de 16 bits (50 MP, 300 MB sin comprimir):
- TIFF sin comprimir: 300 MB
- TIFF LZW: ~110 MB (procesamiento profesional de RAW)
- TIFF JPEG: ~8 MB (distribución final, artefactos JPEG aceptables)
Tipos de Datos y Profundidades de Bits
TIFF soporta profundidades de píxeles de 1 bit (monocromático) a 32 bits de punto flotante por canal:
| Profundidad | Interpretación | Caso de Uso |
|---|---|---|
| 1 bit | Bilevel (blanco/negro) | FAX, escaneos de alto contraste |
| 4 bits | Color indexado (16 colores) | Gráficos heredados |
| 8 bits | Escala de grises o color indexado | Escaneo estándar |
| 16 bits | Escala de grises o por canal | Flujos RAW → TIFF, edición de luz lineal |
| 32 bits float | Color lineal (similar a HDR) | Cine profesional/composición |
Interpretación Fotométrica (Etiqueta 262): Especifica el modelo de color: 0 = WhiteIsZero, 1 = BlackIsZero, 2 = RGB, 3 = Paleta, 4 = Máscara de Transparencia, etc.
Extensiones Profesionales: TIFF-EP y GeoTIFF
TIFF/EP (Fotografía Electrónica): Extensión estandarizada para cámaras digitales (ISO 12234-2). Obliga a:
- RGB lineal de 16 bits o punto flotante de 32 bits
- Perfil ICC incrustado para definición del espacio de color
- Ordenamiento estricto de IFD y validación de etiquetas
- Etiquetas obligatorias de patrón de matriz de filtro de color (CFA) para procesamiento similar a RAW
GeoTIFF: Incrusta metadatos geográficos (sistema de coordenadas, coeficientes de georeferencia, datos de elevación). Esencial para teledetección, cartografía y flujos de trabajo SIG. Un único GeoTIFF puede reemplazar archivos world externos.
TIFF en Flujos de Trabajo Profesionales
Fotografía Digital: Los fotógrafos exportan archivos RAW → Adobe DNG (basado en TIFF) o RAW propietario → TIFF RGB lineal de 16 bits para edición no destructiva → TIFF sRGB de 8 bits para archivo → JPEG para web.
Escaneo de Documentos: Escáner → TIFF bilevel de 1 bit (1 MB por página) o TIFF escala de grises de 8 bits con compresión JPEG (100–300 KB por página) → flujo de trabajo OCR → PDF con búsqueda.
Impresión/Editorial: Software de diseño exporta TIFF 300 DPI, CMYK con LZW → RIP de impresora ingiere sin comprimir o LZW → Separa en placas de color.
Comparación: TIFF vs PNG, JPEG, AVIF
| Aspecto | TIFF | PNG | JPEG | AVIF |
|---|---|---|---|---|
| Compresión | Opcional; sin pérdidas o con pérdidas | Solo sin pérdidas | Con pérdidas | Sin pérdidas/con pérdidas |
| Multi-imagen | Sí (secuencias de página) | No | No | No |
| Profundidad de bits | 1–32 bits | 8–16 bits por canal | 8 bits por canal | 8–12 bits por canal |
| Metadatos | Etiquetas IFD extensas | Chunks básicos | Marcadores limitados | Extenso (HEIF) |
| Perfiles de color | ICC incrustado | ICC incrustado | Limitado | Sí (CICP/ICC) |
| Tamaño de archivo | 50–300 MB (fotografía cruda) | 10–50 MB | 1–5 MB | 2–8 MB |
| Soporte web | Pobre (carga lenta) | Excelente | Excelente | Excelente |
| Calificación de archivo | Excelente (formato estable) | Excelente | Aceptable (artefactos con pérdidas) | Desconocida (edad del formato) |
Procesamiento de TIFF en Python
Lectura y Escritura:
from PIL import Image
import numpy as np
# Abrir TIFF RGB de 16 bits
img = Image.open('foto_lineal.tiff')
data = np.array(img) # forma (altura, ancho, 3), dtype uint16
# Modificar (flujo de trabajo no destructivo)
editado = Image.fromarray((data * 0.95).astype(np.uint16), mode='RGB;16')
editado.save('foto_editada.tiff', compression='lzw') # Guardar con LZW
# TIFF multi-imagen (secuencia de página)
imagenes = Image.open('multi_pagina.tiff')
for i, pagina in enumerate(ImageSequence.Iterator(imagenes)):
pagina.save(f'pagina_{i}.tiff')
Metadatos Avanzados:
img = Image.open('escaneo.tiff')
etiquetas = img.tag_v2
print(etiquetas[270]) # ImageDescription
print(etiquetas[274]) # Orientation
print(etiquetas[282]) # XResolution (DPI)
# Preservar durante el procesamiento
img_editada.save('salida.tiff', info=img.info)
Conversión por Lotes (TIFF a PDF):
# ImageMagick: preservar 16 bits y metadatos
convert entrada.tiff -depth 16 salida.pdf
# Ghostscript: secuencia TIFF completa a PDF multipágina
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=multi.pdf *.tiff
Cuándo Elegir TIFF
- Almacenamiento archivístico/a largo plazo: Ningún formato es más estable; la preservación TIFF es estándar de la industria
- Flujos de trabajo de procesamiento RAW: Exportar RAW → TIFF RGB lineal de 16 bits → editar → finalizar
- Escaneo de documentos grandes: TIFF multipágina = archivo único para trabajo de 500 páginas
- Trabajo de color profesional: Perfiles ICC incrustados + precisión de 16 bits
- SIG/Teledetección: GeoTIFF incrusta metadatos de coordenadas
- Evitar TIFF si: Entrega web (lenta), correo electrónico (tamaño de archivo), edición en aplicaciones de consumidor (Photoshop prefiere PSD)
La complejidad de TIFF es su fortaleza—un único formato puede acomodar todas las necesidades de imagen profesional mientras mantiene fidelidad perfecta desde la adquisición hasta el archivo.
Conversiones relacionadas
Lo más habitual al trabajar con imágenes son estas direcciones de conversión: