1. Volteo Aleatorio
RandomFlip invierte aleatoriamente la imagen a lo largo de ejes específicos. axes=(0, 1) indica posibles inversiones en las direcciones izquierda-derecha (LR) y anterior-posterior (AP).
Para imágenes CT:
- Simula variaciones en la posición del paciente y asimetrías laterales.
- Mejora la capacidad de generalización espacial del modelo.
Para imágenes PET:
- Simula diferencias posicionales izquierda-derecha del paciente.
- Generalmente se usa solo
axes=('LR',)(normalmente eje 1).
⚠️ Nota: Si las imágenes CT y PET están registradas, deben aplicarse las mismas inversiones para manetner la correspondencia espacial.
Se puede usar axes=(0,1) o axes=('LR','AP').
ct_volteado = tio.RandomFlip(axes=(0, 1))(ct)
pet_volteado = tio.RandomFlip(axes=(1))(pet)
2. Transformación Afín Aleatoria
RandomAffine aplica transformaciones afines aleatorias incluyendo escalado, rotación y traslación. scales=(0.95, 1.05) indica un rango de escalado entre 0.95 y 1.05. degrees=5 limita la rotación a ±5°.
Para imágenes CT:
- Simula diferencias en el ángulo del escáner o pequeñas variaciones en la posición del paciente.
- Mejora la robustez manteniendo la autenticidad anatómica.
Para imágenes PET:
- Simula errores de registro o diferencias en la reconstrucción.
- Ayuda a mejorar la generalización espacial del modelo.
ct_afin = tio.RandomAffine(scales=(0.95, 1.05), degrees=5)(ct)
pet_afin = tio.RandomAffine(scales=(0.95, 1.05), degrees=5)(pet)
3. Deformación Elástica Aleatoria
RandomElasticDeformation genera deformaciones elásticas mediante el desplazamiento aleatorio de puntos de control. max_displacement=3 establece un desplazamiento máximo de 3 vóxeles.
Para imágenes CT:
- Simula deformaciones de tejidos blandos (llenado vesical, movimiento intestinal).
- Aumenta la robustez del modelo ante cambios morfológicos.
Para imágenes PET:
- Simula movimiento de órganos o variaciones en la reconstrucción.
ct_elastica = tio.RandomElasticDeformation(max_displacement=3)(ct)
pet_elastica = tio.RandomElasticDeformation(max_displacement=3)(pet)
4. Ruido Aleatorio
RandomNoise añade ruido gaussiano a la imagen. std representa la deesviación estándar del ruido (normalizada respecto al rango de intensidad).
Para imágenes CT:
- Simula diferencias de ruido en escaneos con distintas dosis.
- Mejora la adaptabilidad del modelo a imágenes CT de baja calidad.
Para imágenes PET:
- Simula ruido estadístico por variaciones en tiempo de escaneo, dosis inyectada o algoritmo de reconstrucción.
- Incrementa la robustez frente a diferentes calidades de imagen.
⚠️ Nota: El ruido en PET debe ser bajo (sensibilidad cuantitativa SUV). Se recomienda std=0.01~0.05.
ct_ruido = tio.RandomNoise(std=0.01)(ct)
pet_ruido = tio.RandomNoise(std=0.03)(pet)
5. Corrección Gamma Aleatoria
RandomGamma ajusta el mapeo no lineal de valores de intensidad (transformación gamma). El valor gamma real varía entre exp(-0.3) y exp(0.3) ≈ 0.74–1.35. log_gamma se usa para controlar suavemente cambios de brillo.
Para imágenes CT:
- Simula diferencias de contraste por parámetros de escaneo (kVp, kernel de reconstrucción).
- Ayuda al modelo a mantener robustez ante variaciones en el rango de HU.
⚠️ Nota: No se recomiendan valores grandes (>±0.5) para evitar alterar la relación lineal de los valores HU.
ct_gamma = tio.RandomGamma(log_gamma=(-0.3, 0.3))(ct)
6. Desenfoque Aleatorio
RandomBlur aplica un desenfoque gaussiano para simular reducción de resolución. std indica el radio de desenfoque en vóxeles.
Para imágenes PET:
- Simula diferentes filtros de reconstrucción (FWHM) o efectos de borrosidad.
- Mejora la generalización del modelo entre distintos sistemas de escaneo.
⚠️ Nota: Un desenfoque excesivo (>1.5) reduce significativamente la precisión de SUVmax y SUVpeak.
pet_desenfocada = tio.RandomBlur(std=(0, 1))(pet)