¿Qué es Radiance HDR?

Radiance HDR es un formato de imagen de alto rango dinámico desarrollado para el sistema de renderizado Radiance e identificado habitualmente por la extensión HDR. Su encoding de píxeles RGBE habitual representa cada píxel con tres bytes de color y un byte de exponente compartido.

Cómo funciona Radiance HDR

Una imagen Radiance tiene tres partes: un encabezado de información textual, una cadena de resolución y registros de líneas de barrido. El encabezado suele comenzar con #?RADIANCE (stb_image e ImageMagick también aceptan #?RGBE), contiene asignaciones de variables como FORMAT (ya sea 32-bit_rle_rgbe o 32-bit_rle_xyze), EXPOSURE, COLORCORR y PRIMARIES, y termina con una línea vacía. La cadena de resolución, por ejemplo -Y 1024 +X 2048, indica las cantidades de píxeles y el orden en que se escribieron. Cada píxel ocupa cuatro bytes: una mantisa de 8 bits para cada uno de los tres colores primarios y un exponente común de 8 bits. Un byte de mantisa es una fracción de 256, no un valor entero: el código de referencia de Radiance decodifica un canal como (mantisa + 0,5) / 256 × 2 elevado a (exponente − 128), y un byte de exponente de 0 significa negro, por lo que los bytes (128, 64, 32, 129) almacenan aproximadamente (1; 0,5; 0,25). Las líneas de barrido se almacenan sin comprimir o con uno de dos esquemas de compresión por longitud de secuencia; la documentación de referencia de Radiance sitúa la compresión típica en torno a 2:1. Los valores son lineales y pueden ser físicos: para datos RGB, un píxel de (1, 1, 1) corresponde a 1 vatio por estereorradián por metro cuadrado en el espectro visible, pero la documentación de referencia de Radiance indica que los valores no son físicamente válidos si las fuentes de luz no se modelaron correctamente, la imagen se convirtió desde otro formato o se aplicó un filtrado personalizado. La propia documentación de Radiance usa el sufijo .pic; .hdr es el habitual en otros contextos.

Datos clave

  1. RGBE asigna a cada píxel una mantisa de 8 bits por canal y un único exponente compartido, en lugar de tres números de punto flotante. En un píxel que no es negro, el byte de mantisa del canal más brillante está entre 128 y 255, y los otros dos se escalan con el mismo exponente, por lo que un canal mucho más tenue que el más brillante conserva pocos bits significativos. El autor del formato sitúa la precisión en torno a 1 % a lo largo de más de 76 órdenes de magnitud y señala que los incrementos entre valores pueden hacerse visibles en regiones de azul y magenta saturados.
  2. La cadena de resolución contiene tanto el orden de barrido como el tamaño. -Y N +X M es la forma estándar: N filas almacenadas de arriba abajo, cada una con M píxeles de izquierda a derecha. Otras siete combinaciones de signos y ejes describen el almacenamiento con inversión o rotación, y cuando X aparece primero, el primer número es el ancho, no la altura. Un decodificador que extrae solo dos números transpone o invierte estos archivos; la documentación de referencia de Radiance señala que algunos programas solo manejan el orden estándar.
  3. Las tres mantisas y el exponente ocupan los cuatro bytes, por lo que no hay canal alfa ni signo. La transparencia tiene que transmitirse en un archivo separado o en otro formato, y RGBE no puede almacenar componentes negativos, lo que lo limita a los colores dentro de la gama de sus primarios RGB. La variante XYZE, declarada mediante FORMAT=32-bit_rle_xyze, cubre la gama visible, pero un lector debe comprobar la línea FORMAT para distinguir las dos variantes, así que confirma la compatibilidad con XYZE antes de depender de ella.
  4. Las variables del encabezado cambian lo que significan los números. EXPOSURE es un multiplicador ya aplicado a los píxeles y es acumulativo, por lo que la radiancia original es el valor almacenado dividido por el producto de todas las líneas EXPOSURE. COLORCORR es el mismo tipo de multiplicador aplicado y acumulativo, especificado por separado para cada color primario, por lo que cada canal también debe dividirse por su producto de COLORCORR. PRIMARIES indica las cromaticidades; cuando no está presente, se aplican los valores predeterminados de Radiance, cuyo punto blanco es equienergético (0,333; 0,333), no D65. Algunos lectores no utilizan estos datos: la documentación de OpenImageIO indica que asume que todos los archivos RGBE son lineales y tienen primarios sRGB.

Cuándo importa Radiance HDR

Usa Radiance HDR cuando un motor de renderizado o una herramienta de iluminación espere una entrada en .hdr, sobre todo para mapas de entorno e iluminación basada en imágenes que necesitan valores lineales muy superiores al blanco de la pantalla. La documentación de OpenImageIO indica que el formato todavía se usa en muchas aplicaciones heredadas y para distribuir mapas de entorno HDR, pero recomienda formatos más recientes como OpenEXR, salvo cuando se requiera acceso a archivos heredados. Al convertir, comprueba que el destino respete la exposición, la corrección de color, los colores primarios y la orientación del encabezado; una salida de 8 bits no puede conservar el rango adicional.

Cómo ayuda Transloadit con Radiance HDR

La tabla de formatos de imagen de Transloadit incluye HDR, descrito como el formato de imagen RGBE de Radiance, entre los formatos que sus Robots basados en ImageMagick, incluido /image/resize, pueden leer y escribir.

La tabla solo informa de la capacidad de lectura y escritura; no describe cómo se transforman los valores de alto rango dinámico cuando la salida es un formato de 8 bits como JPEG o PNG, así que comprueba el brillo y el color con un archivo representativo.

Explora los formatos de archivo y las capacidades de compresión de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis