NIfTI: El Formato Estándar para RM Cerebral y fMRI
¿Qué es NIfTI?
NIfTI (Neuroimaging Informatics Technology Initiative) es un formato de archivo abierto diseñado específicamente para almacenar datos de imagen cerebral procedentes de resonancia magnética (RM), fMRI (RM funcional), PET, DTI y otras modalidades de neuroimagen. Desarrollado en 2004 por un grupo de trabajo del NIH, NIfTI se creó para reemplazar el anticuado formato ANALYZE 7.5 y establecer un estándar único e inequívoco para compartir volúmenes cerebrales entre laboratorios de investigación de todo el mundo.
Hoy en día, NIfTI es la lingua franca de la neuroimagen: prácticamente todos los fabricantes de escáneres, pipelines de análisis y conjuntos de datos abiertos lo utilizan. Los archivos se presentan en dos variantes:
.nii— archivo único que contiene cabecera y datos de imagen concatenados.hdr/.img— el formato de dos archivos heredado de ANALYZE (cabecera separada de los datos de vóxeles).nii.gz—.niicomprimido con gzip; con diferencia la forma más habitual en la práctica (reduce el tamaño un 60–80% en volúmenes cerebrales típicos)
Estructura Interna de un Archivo NIfTI
Un archivo .nii comienza con una cabecera de 348 bytes (idéntica en tamaño a ANALYZE 7.5 por compatibilidad), seguida de 4 bytes de indicador de extensión, extensiones opcionales y los datos de vóxeles crudos en orden row-major (índice más rápido = x).
Campos clave de la cabecera:
| Campo | Bytes | Función |
|---|---|---|
sizeof_hdr |
4 | Debe ser 348 (NIfTI-1) o 540 (NIfTI-2) |
dim[8] |
16 | Dimensiones: dim[0]=rango, dim[1–7]=tamaños |
pixdim[8] |
32 | Tamaños de vóxel en mm (y TR en segundos para dim[4]) |
datatype |
2 | Tipo de dato: INT16, FLOAT32, COMPLEX64… |
scl_slope / scl_inter |
8 | Reescalado lineal: valor_almacenado × slope + intercept |
qform_code / sform_code |
4 | Declaraciones del sistema de coordenadas |
srow_x/y/z |
48 | Filas de la matriz afín vóxel→mm (sform) |
Los campos sform y qform son los que dan potencia a NIfTI: codifican la orientación y posición exactas del volumen en un espacio de coordenadas del mundo real (espacio del escáner, espacio estándar MNI152, Talairach, etc.), eliminando la ambigüedad izquierda-derecha que plagaba a ANALYZE.
NIfTI-2 (2011) extiende dim y pixdim de enteros de 16 bits / flotantes de 32 bits a 64 bits, lo que permite volúmenes de más de 32.767 vóxeles por dimensión — crucial para RM de 7T de alta resolución.
Sistemas de Coordenadas: qform vs. sform
NIfTI usa dos transformaciones de coordenadas opcionales, cada una etiquetada con un código:
- qform (códigos 1–4): Codifica la geometría de adquisición del escáner como una rotación cuaternión más tres desplazamientos. Código 1 = coordenadas anatómicas del escáner; código 4 = espacio MNI.
- sform (código 1–4): Matriz afín completa 4×3 — más flexible; se usa tras el preprocesamiento al espacio estándar.
Convención: si sform_code > 0, usar sform; si solo qform_code > 0, usar qform. Software como FSL, FreeSurfer y SPM respetan esta jerarquía.
Trabajar con NIfTI en Python: nibabel
nibabel es la biblioteca estándar en Python:
import nibabel as nib
import numpy as np
# Cargar un .nii.gz
img = nib.load('sub-01_T1w.nii.gz')
# Datos como array NumPy
data = img.get_fdata() # float64; aplica scl_slope/inter automáticamente
print(data.shape) # p.ej. (256, 256, 176) para T1 isótropo de 1 mm
# Matriz afín (4×4)
aff = img.affine
# Modificar y guardar
new_img = nib.Nifti1Image(data * 2, affine=aff, header=img.header)
nib.save(new_img, 'doble.nii.gz')
# Tamaños de vóxel y TR
print(img.header.get_zooms()) # (1.0, 1.0, 1.0, 2.0) — mm + TR en s
Para datos fMRI 4D (shape = (64, 64, 36, 240)), get_fdata() devuelve el array completo con todas las dimensiones.
Pipelines de Neuroimagen Estándar que Usan NIfTI
- BIDS (Brain Imaging Data Structure) — estándar comunitario para organizar archivos NIfTI:
sub-01/ses-01/anat/sub-01_ses-01_T1w.nii.gz - fMRIPrep — pipeline de preprocesamiento de fMRI; entradas y salidas exclusivamente en NIfTI
- FSL — suite de neuroimagen de Oxford; NIfTI nativo en toda la suite (FEAT, BET, FLIRT, MELODIC)
- SPM — Statistical Parametric Mapping (MATLAB); usa NIfTI para todos los análisis desde SPM8
- FreeSurfer — reconstrucción de la superficie cortical; importa/exporta NIfTI junto al formato MGH
- MRtrix3 — tractografía de difusión; lee NIfTI, guarda tractos en
.tck
Convertir DICOM a NIfTI: dcm2niix
La salida cruda de los escáneres MRI es DICOM. La herramienta estándar para la conversión DICOM→NIfTI es dcm2niix:
dcm2niix -z y -f "%p_%s" -o ./nifti/ ./carpeta_dicom/
-z y produce .nii.gz; también genera un sidecar .json con parámetros del escáner (TR, TE, ángulo de excitación, SliceTiming) necesarios para el cumplimiento BIDS.
Consejos Prácticos
- Verificar siempre la orientación antes del análisis: usa
fslhdo nibabel para comprobar el sform/qform. La orientación incorrecta es la fuente más frecuente de errores sutiles. - Prefiere
.nii.gzpara almacenamiento y compartición; casi todas las herramientas manejan la compresión de forma transparente. - Límite de dimensión NIfTI-1: si alguna dimensión supera 32.767 vóxeles, necesitas NIfTI-2.
- Espacio MNI: el análisis de grupo alinea los cerebros individuales a la plantilla MNI152; los archivos NIfTI post-registro deben tener
sform_code=4y la matriz afín MNI. - fMRI 4D: los datos temporales son un único NIfTI 4D — no los dividas en volúmenes individuales salvo que sea estrictamente necesario.
NIfTI combina simplicidad, metadatos de coordenadas ricos y soporte universal en toda la cadena de herramientas, convirtiéndolo en la piedra angular de la investigación moderna en neuroimagen humana y animal.
Conversiones relacionadas
Conversiones frecuentes del catálogo: