230 likes | 346 Views
3D RGB Image Compression. Autores: Alejandro Rodríguez, Alberto Arjonilla Cobreros, Enrique María Ayala Pérez, Abraham Domínguez Morales, Manuel Jesús. CHANDRAJIT BAJAJ, INSUNG IHM, SANGHUN PARK. Contenido. Una visión general. Artículo. Aplicación. Conclusiones. Bibliografía.
E N D
3D RGB ImageCompression Autores: Alejandro Rodríguez, Alberto Arjonilla Cobreros, Enrique María Ayala Pérez, Abraham Domínguez Morales, Manuel Jesús CHANDRAJIT BAJAJ, INSUNG IHM, SANGHUN PARK
Contenido • Una visión general. • Artículo. • Aplicación. • Conclusiones. • Bibliografía.
1. Una visión general • Clave del trabajo. • Compresión de imágenes 3D RGB. ANTES DESPUÉS
1. Una visión general • Objetivos. • Las imágenes ocupen el menor espacio posible en memoria sin pérdida masiva de información. • Conseguir un rápido acceso aleatorio. • Aplicaciones de la compresión: • Imágenes médicas. • Software que utilice imágenes en tiempo real. • Paginas web con elementos 3D. • Etc.
2. ¿De qué trata el artículo? • El artículo divide el proceso de compresión de imágenes 3D RGB en tres pasos: • Transformada Wavelet. • Truncación. • Codificación Zerobit.
2.0. Principios básicos • La representación 3D se realiza por vóxeles. • Así como en 2D se usa el píxel, en 3D se usa el término vóxel. • Nuestro artículo trabaja con celdas. • Celda se define como un bloque de 4x4x4 vóxeles.
2.0. Principios básicos • Conversión de imágenes de Voxelo a Java. • Voxelo trabaja con 256 colores máximo. • Java usa el formato RGB. • Hemos convertido del formato 256 colores de voxelo al formato RGB, por ejemplo: Voxelo: 96 RGB: {15,255,15}
2.1. Transformada Wavelet • Objetivo: • Reducción de la mayor parte de la información de cada celda a un número reducido de coeficientes. • Propiedades de la transformada. • Transformada discreta: muy natural en representación computacional. • Computacionalmente simple: puede ser implementada mediante unas pocas operaciones. • Sin pérdida de información: podemos realizar la transformada inversa obteniendo la información original.
2.1. Transformada Wavelet • Preliminares. • Aplicable por celdas. • Dividimos cada celda en 8 bloques de 2x2x2. • Todo el proceso se realiza 3 veces, una por cada componente del color: R, G y B. • Proceso de la transformada: Se realizan dos iteraciones. • Primera iteración: • Aplicable a cada bloque de 2x2x2. • Segunda iteración: • Aplicable a los 8 bloques de 2x2x2. • Depende de los resultados obtenidos tras la primera iteración.
2.1. Transformada Wavelet • Primera Iteración: • En un bloque de 2x2x2 hay 8 valores. • Se obtienen 8 coeficientes a partir de esos 8 valores. • Los coeficientes se calculan de la siguiente forma: • Estos 8 coeficientes obtenidos contienen toda la información del bloque 2x2x2 en cuestión. Media
2.1. Transformada Wavelet • Segunda Iteración: • Se aplican las mismas fórmulas utilizadas en la primera iteración. • Novedades: • Los 8 valores necesarios se obtienen del primer coeficiente de cada nodo hijo. • Los 8 coeficientes obtenidos corresponderán al nodo padre.
2.1. Transformada Wavelet • Organización final tras las iteraciones: • Tenemos 64 componentes por celda • El resultado final es un árbol de 2 niveles: • Nivel 0: • Nodo padre resultante de la segunda transformada. • Posee los coeficientes de las medias de sus nodos hijos • Nivel 1: • Tenemos 8 nodos hoja en este nivel. • Cada uno representa un bloque de 2x2x2 vóxeles. • Posee los coeficientes de la primera transformada
2.1. Transformada Wavelet • Vista global de cada celda: • Se optimiza el almacenamiento eliminando de cada nodo hijo el primer coeficiente, que representa la media. • La información de estos coeficientes está contenida en el nodo padre.
2.2. Truncación • Objetivo: • Reducir el número de coeficientes de la transformada, eliminando aquellos que poseen poca o ninguna información. • Tras la aplicación de la transformada Wavelet: • La mayor parte de la información está contenida en los primeros coeficientes (los más grandes). • Los restantes pueden ser truncados (los más cercanos a cero).
2.2. Truncación • Proceso de Truncación: • Cada celda es representada por 64 coeficientes. • El proceso se realiza sobre el conjunto de coeficientes ordenados de mayor a menor. • Se seleccionan los coeficientes significativos (los mayores) con respecto al porcentaje de coeficientes a conservar, dado por el usuario. • Los coeficientes no significativos son truncados, es decir, puestos a cero. • Este proceso provoca una pérdida de información.
2.3. Codificación Zerobit • Objetivo: • Definir una estructura interna de la imagen que posibilite una alta compresión a la hora de su almacenamiento. • Definiremos el proceso para una celda, pero puede ser aplicable a bloques mayores dependiendo del tamaño de la imagen.
2.3. Codificación Zerobit • El proceso se divide en dos pasos: • Paso 0: • En total se tienen 9 nodos por celda: • 1 nodo para el padre. • 8 nodos para los hijos. • Zerobits: nuevo componente que introducimos al principio de la estructura y esta formado por: • 9 bits, uno referente a cada nodo de la celda. • Indican si ese nodo contiene o no información.
2.3. Codificación Zerobit • Paso 1: • Equivalente al paso 0 pero a un nivel más profundo. • Introducimos un nuevo componente al principio de los nodos que poseen información, el cual está formado por: • 7 bits, uno para cada coeficiente del nodo. • Indican si ese coeficiente posee o no información.
2.3. Codificación Zerobit • Utilidad de la codificación: • A la hora de almacenar la imagen nos ahorramos aquellos bloques que no contengan información. • Mejora el acceso aleatorio a los bloques y coeficientes de cada celda.
3. Aplicación • Características: • Uso del entorno gráfico jDeveloper con JDK 1.6 de Java. • Uso de librerías de java3D para visualización de imágenes a color procedentes de voxelo. • Proceso aplicado a la imagen: • Transformada Wavelet. • Truncación mediante dos métodos posibles: • Porcentaje de coeficientes a conservar. • Valor umbral de los coeficientes. • Visualización de la imagen resultante. • Posibilidad de un “paso a paso”, en el que podemos ir visualizando resultados locales.
3. Aplicación • El aspecto final de nuestra aplicación es: Selección de método de truncación y valor Carga de imagen Imagen resultante Imagen original
4. Conclusiones • Transformada Wavelet + Codificación Zerobit. • Potente mecanismo de compresión. • Con un 7% de los coeficientes obtenemos un tamaño de, al menos, 30 veces inferior al original. • Útil en aplicaciones en tiempo real. • Bajo tiempo de reconstrucción de la imagen original y rápido acceso. • Tratamiento de texturas 3D.
5. Bibliografía • Artículo: “3D RGB ImageCompressionforInteractiveApplications”. • Web del autor: http://www.cs.utexas.edu/~bajaj/ • Proyecto 2007: “Clasificación topológica de voxeles y visualización”. • Trabajo dirigido 2005-2006: “Imagen MAT-6, Expansión y Contracción en 3D”. • API java 1.6.