La compresión de imágenes puede ser con pérdida o sin pérdida . La compresión sin pérdida se prefiere para fines de archivo y, a menudo, para imágenes médicas, dibujos técnicos, imágenes prediseñadas o cómics. Los métodos de compresión con pérdida, especialmente cuando se utilizan a bajas tasas de bits , introducen artefactos de compresión . Los métodos con pérdida son especialmente adecuados para imágenes naturales, como fotografías, en aplicaciones en las que es aceptable una pérdida de fidelidad menor (a veces imperceptible) para lograr una reducción sustancial en la tasa de bits. La compresión con pérdida que produce diferencias insignificantes puede denominarse compresión sin pérdida visual.
Cuantización de color : reducción del espacio de color a unos pocos colores "representativos" en la imagen. Los colores seleccionados se especifican en la paleta de colores en el encabezado de la imagen comprimida. Cada píxel simplemente hace referencia al índice de un color en la paleta de colores. Este método se puede combinar con el tramado para evitar la posterización .
Paleta de imagen completa, normalmente 256 colores, utilizada en formatos de archivos GIF y PNG.
paleta de bloques, normalmente 2 o 4 colores para cada bloque de 4x4 píxeles, utilizada en BTC , CCC , S2TC y S3TC .
Submuestreo de crominancia . Aprovecha el hecho de que el ojo humano percibe los cambios espaciales de brillo con mayor nitidez que los de color, promediando o eliminando parte de la información de crominancia en la imagen.
La mejor calidad de imagen a una tasa de compresión determinada (o tasa de bits ) es el objetivo principal de la compresión de imágenes, sin embargo, existen otras propiedades importantes de los esquemas de compresión de imágenes:
La escalabilidad generalmente se refiere a una reducción de calidad lograda mediante la manipulación del flujo de bits o archivo (sin descompresión ni recompresión). Otros nombres para la escalabilidad son codificación progresiva o flujos de bits integrados . A pesar de su naturaleza contraria, la escalabilidad también se puede encontrar en códecs sin pérdida, generalmente en forma de escaneos de píxeles gruesos a finos. La escalabilidad es especialmente útil para obtener una vista previa de las imágenes mientras se descargan (por ejemplo, en un navegador web) o para proporcionar acceso de calidad variable a, por ejemplo, bases de datos. Existen varios tipos de escalabilidad:
Calidad progresiva o capa progresiva: el flujo de bits refina sucesivamente la imagen reconstruida.
Resolución progresiva : primero se codifica una resolución de imagen más baja; luego se codifica la diferencia en resoluciones más altas. [6] [7]
Componente progresivo : primero codifica la versión en escala de grises; luego agrega el color completo.
Codificación de la región de interés . Algunas partes de la imagen se codifican con mayor calidad que otras. Esto se puede combinar con la escalabilidad (codificar estas partes primero y otras después).
Metainformación . Los datos comprimidos pueden contener información sobre la imagen que puede utilizarse para categorizar, buscar o explorar imágenes. Dicha información puede incluir estadísticas de color y textura, imágenes de vista previa pequeñas e información sobre el autor o los derechos de autor.
Potencia de procesamiento . Los algoritmos de compresión requieren distintas cantidades de potencia de procesamiento para codificar y decodificar. Algunos algoritmos de alta compresión requieren una gran potencia de procesamiento.
La calidad de un método de compresión se mide a menudo por la relación señal-ruido máxima . Mide la cantidad de ruido introducido a través de una compresión con pérdida de la imagen, sin embargo, el juicio subjetivo del espectador también se considera una medida importante, siendo quizás la medida más importante.
El estándar JPEG 2000 fue desarrollado entre 1997 y 2000 por un comité JPEG presidido por Touradj Ebrahimi (posteriormente presidente de JPEG). [18] A diferencia del algoritmo DCT utilizado por el formato JPEG original, JPEG 2000 utiliza algoritmos de transformada wavelet discreta (DWT). Utiliza la transformada wavelet CDF 9/7 (desarrollada por Ingrid Daubechies en 1992) para su algoritmo de compresión con pérdida, [19] y la transformada wavelet Le Gall–Tabatabai (LGT) 5/3 [20] [21] (desarrollada por Didier Le Gall y Ali J. Tabatabai en 1988) [22] para su algoritmo de compresión sin pérdida. [19] La tecnología JPEG 2000 , que incluye la extensión Motion JPEG 2000 , fue seleccionada como el estándar de codificación de vídeo para el cine digital en 2004. [23]
Codificación de Huffman
La codificación de Huffman es una técnica fundamental que se utiliza en algoritmos de compresión de imágenes para lograr una representación eficiente de los datos. Este método, que debe su nombre a su inventor David A. Huffman, se emplea ampliamente en diversos estándares de compresión de imágenes, como JPEG y PNG.
Principio de codificación de Huffman
La codificación de Huffman es una forma de codificación de entropía que asigna códigos de longitud variable a los símbolos de entrada en función de su frecuencia de aparición. El principio básico es asignar códigos más cortos a los símbolos que aparecen con mayor frecuencia y códigos más largos a los símbolos menos frecuentes, reduciendo así la longitud media del código en comparación con los códigos de longitud fija.
Aplicación en la compresión de imágenes
En la compresión de imágenes, la codificación de Huffman se aplica normalmente después de otras transformaciones, como la transformada discreta del coseno (DCT) en el caso de la compresión JPEG. Después de transformar los datos de la imagen en una representación del dominio de frecuencia, se utiliza la codificación de Huffman para codificar los coeficientes transformados de manera eficiente.
Pasos en la codificación Huffman para la compresión de imágenes
Análisis de frecuencia: calcule la frecuencia de aparición de cada símbolo o combinación de símbolos en los datos de la imagen transformada.
Construcción del árbol de Huffman: Construya un árbol de Huffman basado en las frecuencias de los símbolos. El árbol se construye de forma recursiva combinando los nodos con las frecuencias más bajas hasta que se forme un único nodo raíz.
Asignación de palabras clave: recorra el árbol de Huffman para asignar palabras clave de longitud variable a cada símbolo, y asigne palabras clave más cortas a los símbolos más frecuentes.
Codificación: reemplace los símbolos originales en los datos de la imagen con sus palabras de código Huffman correspondientes para generar el flujo de datos comprimido.
Beneficios de la codificación Huffman en la compresión de imágenes
Compresión sin pérdida: la codificación Huffman se puede utilizar en técnicas de compresión de imágenes con y sin pérdida, lo que proporciona flexibilidad para equilibrar la relación de compresión y la calidad de la imagen.
Eficiencia: Al asignar códigos más cortos a símbolos que aparecen con frecuencia, la codificación de Huffman reduce la longitud promedio del código, lo que da como resultado una representación eficiente de los datos y menores requisitos de almacenamiento.
Compatibilidad: la codificación Huffman tiene un amplio soporte y se puede integrar sin problemas en los estándares y algoritmos de compresión de imágenes existentes.
Conclusión
La codificación de Huffman desempeña un papel crucial en la compresión de imágenes, ya que codifica de manera eficiente los datos de las imágenes en una representación compacta. Su capacidad para asignar de manera adaptativa palabras de código de longitud variable en función de las frecuencias de los símbolos la convierte en un componente esencial de las técnicas modernas de compresión de imágenes, ya que contribuye a reducir el espacio de almacenamiento y el ancho de banda de transmisión, manteniendo al mismo tiempo la calidad de la imagen.
Notas y referencias
^ "Compresión de datos de imagen".
^ Ahmed, N.; Natarajan, T.; Rao, KR (1974). "Transformada discreta del coseno" (PDF) . IEEE Transactions on Computers : 90–93. doi :10.1109/TC.1974.223784. S2CID 149806273. Archivado desde el original (PDF) el 25 de noviembre de 2011.
^ Gilad David Maayan (24 de noviembre de 2021). "Compresión de imágenes basada en IA: lo último en tecnología". Hacia la ciencia de datos . Consultado el 6 de abril de 2023 .
^ Bühlmann, Matthias (28 de septiembre de 2022). "Compresión de imágenes basada en difusión estable". Medium . Consultado el 2 de noviembre de 2022 .
^ "Compresión de imágenes generativas de alta fidelidad" . Consultado el 6 de abril de 2023 .
^ Burt, P.; Adelson, E. (1 de abril de 1983). "La pirámide laplaciana como código de imagen compacto". IEEE Transactions on Communications . 31 (4): 532–540. CiteSeerX 10.1.1.54.299 . doi :10.1109/TCOM.1983.1095851. S2CID 8018433.
^ Shao, Dan; Kropatsch, Walter G. (3 al 5 de febrero de 2010). Spaček, Libor; Franco, Vojtěch (eds.). "Pirámide gráfica laplaciana irregular" (PDF) . Taller de invierno de visión por computadora 2010 . Nové Hrady, República Checa: Sociedad Checa de Reconocimiento de Patrones. Archivado (PDF) desde el original el 27 de mayo de 2013.
^ Claude Elwood Shannon (1948). Alcatel-Lucent (ed.). "Una teoría matemática de la comunicación" (PDF) . Bell System Technical Journal . 27 (3–4): 379–423, 623–656. doi :10.1002/j.1538-7305.1948.tb01338.x. hdl : 11858/00-001M-0000-002C-4314-2 . Archivado (PDF) desde el original el 24 de mayo de 2011. Consultado el 21 de abril de 2019 .
^ David Albert Huffman (septiembre de 1952), "Un método para la construcción de códigos de redundancia mínima" (PDF) , Actas del IRE , vol. 40, núm. 9, págs. 1098-1101, doi :10.1109/JRPROC.1952.273898, archivado (PDF) desde el original el 2005-10-08
^ Pratt, WK; Kane, J.; Andrews, HC (1969). "Codificación de imágenes por transformada de Hadamard". Actas del IEEE . 57 : 58–68. doi :10.1109/PROC.1969.6869.
^ "T.81 – COMPRESIÓN DIGITAL Y CODIFICACIÓN DE IMÁGENES FIJAS DE TONO CONTINUO – REQUISITOS Y DIRECTRICES" (PDF) . CCITT . Septiembre de 1992. Archivado (PDF) desde el original el 2000-08-18 . Consultado el 12 de julio de 2019 .
^ "Explicación del formato de imagen JPEG". BT.com . BT Group . 31 de mayo de 2018 . Consultado el 5 de agosto de 2019 .
^ "¿Qué es un JPEG? El objeto invisible que vemos todos los días". The Atlantic . 24 de septiembre de 2013 . Consultado el 13 de septiembre de 2019 .
^ Baraniuk, Chris (15 de octubre de 2015). "Las protecciones anticopia podrían llegar a los archivos JPEG". BBC News . BBC . Consultado el 13 de septiembre de 2019 .
^ "La controversia GIF: la perspectiva de un desarrollador de software". 27 de enero de 1995. Consultado el 26 de mayo de 2015 .
^ L. Peter Deutsch (mayo de 1996). DEFLATE Compressed Data Format Specification versión 1.3. IETF . pág. 1. seg. Resumen. doi : 10.17487/RFC1951 . RFC 1951 . Consultado el 23 de abril de 2014 .
^ Taubman, David; Marcellin, Michael (2012). Fundamentos, estándares y prácticas de compresión de imágenes JPEG2000: Fundamentos, estándares y prácticas de compresión de imágenes. Springer Science & Business Media . ISBN9781461507994.
^ ab Unser, M.; Blu, T. (2003). "Propiedades matemáticas de los filtros wavelet JPEG2000" (PDF) . IEEE Transactions on Image Processing . 12 (9): 1080–1090. Bibcode :2003ITIP...12.1080U. doi :10.1109/TIP.2003.812329. PMID 18237979. S2CID 2765169. Archivado desde el original (PDF) el 2019-10-13.
^ Sullivan, Gary (8–12 de diciembre de 2003). «Características generales y consideraciones de diseño para la codificación de vídeo en subbandas temporales». UIT-T . Grupo de expertos en codificación de vídeo . Consultado el 13 de septiembre de 2019 .
^ Le Gall, Didier; Tabatabai, Ali J. (1988). "Codificación de subbandas de imágenes digitales utilizando filtros de núcleo corto simétricos y técnicas de codificación aritmética". ICASSP-88., Conferencia internacional sobre acústica, habla y procesamiento de señales . pp. 761–764 vol.2. doi :10.1109/ICASSP.1988.196696. S2CID 109186495.