O que é JPEG XT?
JPEG XT, padronizado como ISO/IEC 18477, amplia o JPEG básico com maior precisão, HDR, ponto flutuante, codificação sem perdas e codificação de canal alfa. Seus fluxos mantêm uma imagem base para decodificadores JPEG mais antigos.
Como o JPEG XT funciona
JPEG XT adiciona camadas ao JPEG legado. Um arquivo contém uma imagem JPEG comum, a camada base, além de dados de extensão que um decodificador XT combina com a base decodificada para reconstruir a imagem mais rica. O codec thorfdbg/libjpeg, que o comitê JPEG lista entre as implementações de JPEG XT, transporta esses dados de extensão como caixas dentro de segmentos de marcadores de aplicação APP11, e a norma JPEG reserva segmentos de aplicação para uso das aplicações, o que permite aos decodificadores existentes ler o arquivo sem entender a extensão. Para conteúdo HDR, a base é uma representação de baixa faixa dinâmica: esse codificador aplica mapeamento de tons à entrada HDR por padrão e, para alguns perfis, aceita uma imagem fornecida separadamente. A norma é dividida em partes. A parte 1 reapresenta o núcleo do JPEG em seu uso comum, a parte 2 codifica imagens HDR com uma codificação legada baseada em texto para seus metadados, a parte 3 define o formato de arquivo baseado em caixas, a parte 6 adiciona amostras inteiras de 9 a 16 bits, a parte 7 adiciona amostras HDR de ponto flutuante, a parte 8 adiciona codificação sem perdas e quase sem perdas, e a parte 9 adiciona canais alfa. Portanto, a compatibilidade precisa ser declarada por parte e, para a parte 7, por perfil, não como uma única indicação de sim ou não.
Informações essenciais
- Um arquivo que abre em um visualizador comum comprova apenas que o JPEG base está intacto. Os dados HDR, de maior precisão, sem perdas ou de alfa são transportados em segmentos de marcadores de aplicação (APP11 no codec
thorfdbg/libjpeg) que um decodificador legado não interpreta, portanto confirme esses dados com um decodificador para a parte relevante do JPEG XT. - A compatibilidade com JPEG XT não é uma capacidade única. A parte 6 abrange amostras inteiras de 9 a 16 bits, a parte 7 abrange amostras HDR de ponto flutuante, a parte 8 abrange codificação sem perdas e quase sem perdas, e a parte 9 abrange canais alfa, enquanto a parte 1 apenas reapresenta o núcleo do JPEG em seu uso comum. A parte 7 não é a única voltada a HDR: a parte 2 também trata de HDR, com uma codificação legada baseada em texto para seus metadados. Pergunte quais partes e, para a parte 7, qual perfil uma ferramenta lê e grava: a própria lista de software do comitê JPEG inclui um codec em conformidade apenas com o perfil B da parte 7 e outro apenas com a parte 2.
- Regravar um arquivo com ferramentas que suportam apenas JPEG pode descartar os dados de extensão sem gerar erro. O
jpegtrando libjpeg-turbo, por exemplo, copia apenas marcadores de comentários por padrão e descarta outros metadados;-copy allé necessário para manter todos os marcadores extras. Manter os marcadores não comprova que a extensão ainda pode ser decodificada:thorfdbg/libjpegarmazena uma soma de verificação do fluxo JPEG base ao gravar arquivos JPEG XT e rejeita dados de extensão cujas dimensões diferem da imagem base, portanto compare a saída decodificada em XT antes e depois de qualquer regravação. A decodificação e recodificação por um codec legado parte apenas da imagem base. - JPEG XT não é JPEG XL. JPEG XT (ISO/IEC 18477) mantém o arquivo legível por decodificadores JPEG legados. JPEG XL (ISO/IEC 18181) é um sistema de codificação separado cuja ponte com o JPEG legado é a transcodificação sem perdas de um arquivo JPEG existente para JPEG XL e de volta para um arquivo JPEG idêntico ao original.
Quando o JPEG XT é relevante
O JPEG XT é relevante quando um arquivo precisa abrir em softwares JPEG comuns e também conter dados HDR, com maior profundidade de bits, sem perdas ou de canal alfa para softwares compatíveis com XT. Decodificadores legados mostram apenas a imagem base, por isso os dados adicionais precisam ser verificados com um decodificador que implemente a parte pertinente do padrão.
Fontes
- Comitê JPEG: visão geral do JPEG XT (ISO/IEC 18477) e de suas partes
- Comitê JPEG: plano de trabalho do JPEG XT e partes publicadas da ISO/IEC 18477
- Comitê JPEG: software para JPEG XT e as partes com as quais cada implementação está em conformidade
- thorfdbg/libjpeg: codec JPEG e JPEG XT (README)
- thorfdbg/libjpeg: boxes/box.hpp (caixas de extensão em segmentos do marcador APP11)
- thorfdbg/libjpeg: codestream/image.cpp (soma de verificação do fluxo base e verificação das dimensões da extensão)
- ITU-T T.81 | ISO/IEC 10918-1: requisitos e diretrizes do JPEG (segmentos APPn, cláusula B.2.4.6)
- libjpeg-turbo: manual do jpegtran (a opção -copy)
- Comitê JPEG: visão geral do JPEG XL (ISO/IEC 18181)