PGF ( Progressive Graphics File ) es un formato de imagen de mapa de bits basado en wavelets que emplea compresión de datos con y sin pérdida . PGF se creó para mejorar y reemplazar el formato JPEG . Se desarrolló al mismo tiempo que JPEG 2000 , pero con un enfoque en la velocidad por sobre la relación de compresión . [ cita requerida ]
PGF puede funcionar con índices de compresión más altos sin consumir más tiempo de codificación/descodificación y sin generar los artefactos "borrosos y en bloques" característicos del estándar JPEG original basado en DCT . [2] También permite descargas progresivas más sofisticadas . [ cita requerida ]
Modelos de color
PGF admite una amplia variedad de modelos de color:
- Escala de grises con 1, 8, 16 o 31 bits por píxel
- Color indexado con tamaño de paleta de 256
- Imagen en color RGB con 12, 16 (rojo: 5 bits, verde: 6 bits, azul: 5 bits), 24 o 48 bits por píxel
- Imagen en color ARGB con 32 bits por píxel
- Imagen en color L*a*b con 24 o 48 bits por píxel
- Imagen en color CMYK con 32 o 64 bits por píxel
Discusión técnica
PGF afirma lograr una calidad de compresión mejorada con respecto a JPEG añadiendo o mejorando características como la escalabilidad. Su rendimiento de compresión es similar al estándar JPEG original. PGF también admite tasas de compresión muy bajas y muy altas (incluida la compresión sin pérdida ). La capacidad del diseño para manejar una gama muy amplia de tasas de bits efectivas es uno de los puntos fuertes de PGF. Por ejemplo, para reducir el número de bits de una imagen por debajo de una cierta cantidad, lo recomendable con el primer estándar JPEG es reducir la resolución de la imagen de entrada antes de codificarla, algo que normalmente no es necesario para ese propósito cuando se utiliza PGF debido a sus propiedades de escalabilidad wavelet.
La cadena de proceso PGF contiene los siguientes cuatro pasos:
- Transformación del espacio de color (en el caso de imágenes en color)
- Transformada Wavelet Discreta
- Cuantización (en caso de compresión de datos con pérdida)
- Codificación de longitud de ejecución de plano de bits jerárquico
Transformación de componentes de color
Inicialmente, las imágenes deben transformarse del espacio de color RGB a otro espacio de color, lo que da lugar a tres componentes que se manejan por separado. PGF utiliza una transformación de color YUV modificada totalmente reversible. Las matrices de transformación son:
Los componentes de crominancia se pueden reducir en resolución, aunque no necesariamente es necesario.
Transformada wavelet
Los componentes de color se transforman entonces mediante wavelets a una profundidad arbitraria. A diferencia de JPEG 1992, que utiliza una transformada de coseno discreta de tamaño de bloque de 8x8 , PGF utiliza una transformada de wavelets reversible: una versión redondeada de la transformada de wavelets CDF biortogonal 5/3 . Este banco de filtros wavelets es exactamente el mismo que el wavelet reversible utilizado en JPEG 2000. Utiliza solo coeficientes enteros, por lo que la salida no requiere redondeo (cuantificación) y, por lo tanto, no introduce ningún ruido de cuantificación.
Cuantización
Después de la transformada wavelet, los coeficientes se cuantifican escalarmente para reducir la cantidad de bits que los representan, a costa de una pérdida de calidad. El resultado es un conjunto de números enteros que deben codificarse bit a bit. El parámetro que se puede cambiar para establecer la calidad final es el paso de cuantificación: cuanto mayor sea el paso, mayor será la compresión y la pérdida de calidad. Con un paso de cuantificación igual a 1, no se realiza ninguna cuantificación (se utiliza en la compresión sin pérdida). A diferencia de JPEG 2000, PGF utiliza solo potencias de dos, por lo tanto, el valor del parámetro i representa un paso de cuantificación de 2 i . El uso de potencias de dos hace que no sean necesarias las operaciones de multiplicación y división de números enteros.
Codificación
El resultado del proceso anterior es una colección de subbandas que representan varias escalas de aproximación. Una subbanda es un conjunto de coeficientes ( números enteros que representan aspectos de la imagen asociados a un determinado rango de frecuencias, así como a un área espacial de la imagen).
Las subbandas cuantificadas se dividen en bloques , regiones rectangulares en el dominio wavelet. Por lo general, se seleccionan de manera que los coeficientes dentro de ellas a lo largo de las subbandas formen bloques aproximadamente espaciales en el dominio de la imagen (reconstruida) y se recopilen en un macrobloque de tamaño fijo .
El codificador debe codificar los bits de todos los coeficientes cuantificados de un macrobloque, comenzando con los bits más significativos y avanzando hacia los bits menos significativos. En este proceso de codificación, cada plano de bits del macrobloque se codifica en dos llamados pasos de codificación , primero codificando los bits de coeficientes significativos, luego los bits de refinamiento de coeficientes significativos. Claramente, en el modo sin pérdida todos los planos de bits tienen que ser codificados, y no se puede descartar ningún plano de bits.
Con un codificador adaptativo de longitud de serie/Rice (RLR) solo se comprimen los coeficientes significativos , ya que contienen series largas de ceros. El codificador RLR con parámetro k (longitud logarítmica de una serie de ceros) también se conoce como código elemental de Golomb de orden 2 k .
Comparación con otros formatos de archivo
- JPEG 2000 es ligeramente más eficiente en el uso del espacio para manejar imágenes naturales. La PSNR para la misma relación de compresión es en promedio un 3% mejor que la PSNR de PGF. Tiene una pequeña ventaja en la relación de compresión, pero tiempos de codificación y decodificación más largos. [2]
- PNG (Gráficos de red portátiles) es más eficiente en términos de espacio al manejar imágenes con muchos píxeles del mismo color.
Existen varias ventajas autoproclamadas del PGF sobre el estándar JPEG ordinario: [2]
- Rendimiento de compresión superior : la calidad de imagen (medida en PSNR ) para la misma relación de compresión es en promedio un 3 % mejor que la PSNR de JPEG. A tasas de bits más bajas (por ejemplo, menos de 0,25 bits/píxel para imágenes en escala de grises), PGF tiene una ventaja mucho más significativa sobre ciertos modos de JPEG: los artefactos son menos visibles y casi no hay bloqueos. Las ganancias de compresión sobre JPEG se atribuyen al uso de DWT .
- Representación con resolución múltiple : PGF proporciona una compresión perfecta de múltiples componentes de imagen, y cada componente lleva de 1 a 31 bits por muestra de componente. Con esta función, no es necesario almacenar imágenes de vista previa ( miniaturas ) por separado.
- Transmisión progresiva por precisión de resolución, comúnmente denominada decodificación progresiva: PGF proporciona organizaciones eficientes de flujo de código que son progresivas por resolución. De esta manera, después de que se haya recibido una parte más pequeña de todo el archivo, es posible ver una calidad inferior de la imagen final; la calidad se puede mejorar de manera monótona obteniendo más datos de la fuente.
- Compresión con y sin pérdida : PGF ofrece compresión con y sin pérdida en una única arquitectura de compresión. Tanto la compresión con y sin pérdida se consigue mediante el uso de una transformada wavelet (entera) reversible.
- Información espacial del canal lateral : la transparencia y los planos alfa son totalmente compatibles
- Extracción de ROI : desde la versión 5, PGF admite la extracción de regiones de interés ( ROI ) sin decodificar toda la imagen.
Software disponible
El autor publicó libPGF a través de SourceForge , bajo la Licencia Pública General Reducida de GNU versión 2.0. [1] Xeraina ofrece un codificador y decodificador de consola de Windows gratuito , y visores PGF basados en WIC para plataformas Windows de 32 y 64 bits. Otras aplicaciones WIC, incluido el Explorador de archivos, pueden mostrar imágenes PGF después de instalar este visor. [3]
Digikam es un popular software de edición y catalogación de imágenes de código abierto que utiliza libPGF para sus miniaturas. Utiliza la función de decodificación progresiva de las imágenes PGF para almacenar una única versión de cada miniatura, que luego se puede decodificar a diferentes resoluciones sin pérdida, lo que permite a los usuarios cambiar dinámicamente el tamaño de las miniaturas sin tener que volver a calcularlas. [ cita requerida ]
Véase también
- Comparación de formatos de archivos gráficos
- Formatos de archivos gráficos relacionados : ECW , JPEG , JPEG 2000 , JPEG XR
- Formatos de archivos de imagen
- Compresión de imagen
Extensión de archivo
La extensión de archivo .pgfy el TLA PGF también se utilizan para fines no relacionados:
- Adobe Illustrator utilizó un formato de gráficos progresivos antes de PostScript encapsulado .
- PGF/TikZ utiliza un formato de gráficos portátil en el proyecto PGF de SourceForge .
- XnView y Konvertor asocian la extensión de archivo
.pgfcon Portfolio Graphics .
Referencias
- ^ por Christoph Stamm (2015). "PGF libPGF.org". Proyecto SourceForge . Consultado el 14 de septiembre de 2015 .
- ^ abc Stamm, Christoph (2002). «PGF: un nuevo formato de archivo progresivo para la compresión de imágenes con y sin pérdida» (PDF) . Archivado (PDF) desde el original el 7 de marzo de 2007. Consultado el 12 de abril de 2023 .
- ^ "Descargar PGF". xeraina. 2013. Consultado el 12 de abril de 2023 .
