¿Qué algoritmo de compresión de imágenes usaron las Voyagers?

Recientemente, se discutieron los códigos de corrección de errores Reed-Solomon: ¿Cómo se relaciona el apilamiento de naranjas en 24 dimensiones con la recepción y decodificación de señales de las Voyagers?

Mientras la nave estaba entre Saturno y Urano, el software a bordo se actualizó para hacer un grado de compresión de imágenes y usar una codificación de corrección de errores Reed-Solomon más eficiente.

Pero siendo un apasionado de la compresión de imágenes, la segunda parte de esta actualización me interesó.

Lo anterior está respaldado por una referencia a Voyager Telecommunications

Las imágenes de Voyager sin comprimir contienen 800 líneas, 800 puntos (píxeles) por línea y 8 bits por píxel (para expresar uno de los 256 niveles de gris). Sin embargo, gran parte del contenido de datos en una imagen típica de un planeta o satélite es un espacio oscuro o características de nubes de bajo contraste. Al contar solo las diferencias entre los niveles de gris de los píxeles adyacentes, en lugar de los valores completos de 8 bits, la compresión de datos de imagen redujo la cantidad de bits para la imagen típica en un 60 % sin comprometer indebidamente la información. Esto redujo el tiempo necesario para transmitir cada imagen completa de Urano y Neptuno a la Tierra.

Así que es una forma de codificación predictiva .

Sin embargo, esta descripción es incompleta, porque la codificación predictiva por sí sola no reduce las tasas de bits. Los residuos de un predictor amplían el rango a 9 bits por muestra, aunque solo se necesitan los 8 bits menos significativos para recuperar la muestra.

Una amplia gama de opciones de codificación residual habría estado disponible a principios de la década de 1980:

  • Codificación aritmética (dudoso)
  • Tablas fijas de códigos de prefijos precalculados (bastante razonables ya que se sabe que los residuos tienen una distribución aproximada de Laplace)
  • Codificación Huffman
  • Ejecute códigos de longitud para residuos cercanos a cero.
  • Restringir los residuos a un rango más pequeño (compresión con pérdida de crudo).

E incluso si no se menciona, cronológicamente esto también es lo suficientemente reciente como para que alguna variante de Lempel-Ziv pudiera haber estado involucrada. Por lo general, no son tan buenos para las imágenes fotográficas, pero si la mayor parte de la imagen es un espacio oscuro y no se usa ningún otro código de entropía, habría sido una elección razonable.

Incluso se omite la elección del predictor espacial, solo dice "niveles de gris de píxeles adyacentes".

Conceptualmente, dudo que se haya usado algo más avanzado que un predictor IZQUIERDO, pero fácilmente podría haber sido una combinación NINGUNO/ARRIBA/IZQUIERDO. No creo que se haya utilizado ningún predictor de gradiente, ya que es anterior tanto al artículo de Alan Paeth como al conocimiento general del excelente predictor de ClampedGrad (LOCO).

P: ¿Cómo funcionaba la compresión de imágenes de Voyager, además de ser una forma de codificación predictiva?

Respuestas (3)

Sería bueno ver la compresión de datos de imágenes de Voyager y la codificación de bloques de Urban, pero es de pago.

Sin embargo , se describe en los Estándares de compresión de datos espaciales , que dice

Robert Rice del Laboratorio de Propulsión a Chorro ideó un código adaptativo para la misión Voyager, 6-10 que fue extremadamente eficiente en términos de detección de cambios en la entropía de datos y códigos de conmutación sin requerir que el compresor mantuviera y actualizara la información estadística. El algoritmo de Rice se describe en el inserto del recuadro, El algoritmo de compresión sin pérdidas del codificador de Rice.

La larga y para mí ininteligible explicación del codificador Rice comienza

La arquitectura del codificador Rice (Fig. A) consta de una etapa de preprocesador que realiza una operación predictiva sobre los datos originales. El predictor dará como resultado símbolos centrados alrededor de cero.

Por favor vea la referencia para los detalles.

También se describe en Compresión de datos sin pérdida

(Nota: no estoy 100% seguro de que este método se haya utilizado para las imágenes, puede haber sido solo para datos científicos. Si no es así, avíseme y lo eliminaré)

Sí, esto es suficiente. Los códigos de arroz serían una excelente opción de código de prefijo para residuos de predicción, y corresponden aproximadamente a la opción 2) en mi pregunta.

Traté de buscar un enlace de acceso público al documento de Urban (1987) al que se hace referencia en la respuesta de @Organic Marble. Afortunadamente, es de acceso público a través de la Universidad de Arizona: Compresión de datos de imágenes de Voyager y codificación de bloques

De las páginas 5 y 6, vemos que:

  • el Image Data Compressor (IDC) es un compresor de codificación silencioso universal
  • el algoritmo, llamado FAST, es un compresor de píxeles divididos adaptativo

Dado que Urban (1987) está disponible, podría buscar los Detalles de la implementación de IDC y FAST que faltan:

  1. ¿Qué predictor espacial se utilizó?

Diferencias de píxeles de orden de línea de exploración simple, o en otras palabras, un predictor IZQUIERDO.

  1. ¿Qué significa "compresor adaptativo de píxeles divididos"?

"Adaptable" aquí significa que derramaron la imagen en bloques y usaron diferentes parámetros para cada bloque. "Píxel dividido" significa que codifican los bits menos significativos y los más significativos por separado (donde se produce la división es el parámetro configurable). ¿Por qué hacer tal cosa? Bueno, eso es debido al siguiente elemento:

  1. ¿Qué tipo de códigos Rice se utilizaron?

Resulta que el esquema real implementado es bastante simple: elija la división entre LSB y MSB de modo que todos los bits establecidos estén en el lado LSB. Luego, use una longitud de código adecuada, 1-6 u 8.

Dudaría en llamar a esto "codificación Rice", excepto que las ideas aquí se deben ciertamente a Robert F. Rice.