¿Existe un formato de archivo comprimido con pérdida para imágenes de rango dinámico de 16 bits?

14

Me gustaría comprimir agresivamente algunos archivos de imágenes científicas en escala de grises de 16 bits, pero sin reducir el rango dinámico. ¿Es posible tal cosa?

Entiendo que el formato JPEG utiliza compresión con pérdida y, por lo tanto, bastante agresiva, pero solo admite 8 bits por canal de color.

El formato PNG admite imágenes en escala de grises de 16 bits, pero solo admite compresión sin pérdidas, lo que limita la relación de compresión del archivo.

El formato TIFF también admite imágenes en escala de grises de 16 bits, pero que yo sepa, no admite compresión con pérdida estándar de imágenes de 16 bits.

Christopher Bruns
fuente
2
¡JPEG realmente admite imágenes de 12 bits! No mucha gente sabe esto, y muchos programas no lo admiten. Pero, el apoyo está ahí.
Dietrich Epp
1
Creo que openEXR es lo que quieres. Puede ser más flexible con submuestreo de color que jpeg y ajustarlo mejor para sus necesidades de datos científicos. Como recuerdo, esto está desarrollado para / por Pixar.
JDługosz
2
BPG admite hasta tp 14 bits.
Vi0
Lo siento si estoy completamente fuera de línea aquí, pero ¿qué hay de malo con un buen ZIP antiguo?
Ilia Frenkel
1
@Ilia Frenkel ZIP no tiene pérdidas. (Tampoco especializado para imágenes)
Christopher Bruns

Respuestas:

18

Parece que lo que estás buscando es JPEG2000. Tiene una gama de opciones que incluyen una compresión con pérdida de 16 bits y mejores relaciones de compresión que JPEG. No ha sido tan ampliamente adoptado como se esperaba (por una serie de razones) y puede tener algunos problemas de patentes que podrían dificultar su uso en ciertas situaciones, pero de lo contrario se ajustan a sus necesidades.

Personalmente, si estuviera en su posición, diría que el almacenamiento es barato y uso PNG, que es un estándar definido y gratuito.

James Snell
fuente
2
JPEG2000 parece ser la cosa. Las herramientas ImageMagick funcionan con jpeg2000; lo cual es suficiente apoyo para continuar con mi investigación.
Christopher Bruns
8

JPEG2000, y es posible que también desee ver OpenEXR porque es compatible con hardware de video.

Iliah Borg
fuente
3

El rango dinámico máximo de una codificación lineal de 8 bits es de solo 8 paradas, sin embargo, el rango dinámico que puede almacenar con una codificación no lineal es ilimitado.

Por lo tanto, sugeriría que aplique una curva de tono fuerte a las imágenes y luego puede usar JPEG estándar sin perder el rango dinámico. Cuando desee utilizar las imágenes originales, conviértalas a 16 bits y aplique la curva de tono inversa.

Eso es, por supuesto, si el rango dinámico es su única preocupación. Si también necesita preservar el rango tonal, entonces puede que tenga que rodar su propia compresión con pérdida ...

Matt Grum
fuente
1
De manera similar, puede preprocesar las imágenes de manera que descarte la información que sabe que no le importa, antes de guardarla como PNG o TIFF de 16 bits sin compresión.
junkyardsparkle
Esto es lo que la cámara de video está haciendo con el perfil de imagen de registro, pero por experiencia puedo decir que es una muy mala mala idea porque la reducción de la información se soluciona en lugar de usar pérdida variable. El uso de la compresión con pérdida openEXR daría un resultado mucho mejor.
skyde