Formato JPEG trabajo

Idontknow

Hola, estoy programando el formato JPEG en formato progresivo y estoy anclado en la codificación AC, alguien sabe como funciona exactamente?

gonya707

No estoy seguro de entender lo que pides.

JPEG es un formato de compresion que se basa en la dct, la transformada discreta del coseno. Los pasos habiguales que unsa un codificador es dividir la imagen en macrobloques de 16x16px y de ahi obtener 12 bloques (4 luminancia, 8 crominancia) de 8x8px (todo esto suponiendo que estes trabajando en 4:4:4).

a partir de ahi a cada bloque de 8x8 se le hace una dct y se deja a 0 todos los resultados de alta frecuencia (los de la esquina inferior derecha del bloque). Cuantos más se eliminen más se comprime pero más info se pierde y aparece más efecto de bloque.

Si es algo de eso te puedo ayudar si me reformulas la pregunta XD

gonya707

Se me olvidaba añadir que despues de es se cuantifican los números de la dct y se redondean, para despues colocarlos según un patron determinado, si es una imagen progresiva suele hacerse en zigzag (izquierda) y si es entrelazada hay que dar prioridad a las fercuencias verticales y entonces se recorren los indices como la de la derecha:

despues se pasan a unos simbolos que eran [valor inicial] [numero de ceros, numero] ,[numero de ceros, numero],[numero de ceros, numero]......[final]

y cada uno de esos simbolos se codificaba con unas tablas de cuyo nombre no me acuerdo correspondiendo los simbolos mas prbables con menos bits y los poco probables con muchos bits

1 respuesta
Idontknow

#3 "despues se pasan a unos simbolos que eran [valor inicial] [numero de ceros, numero] ,[numero de ceros, numero],[numero de ceros, numero]......[final]" Esto es lo que me interesa, todo lo que has nombrado ya lo se. De codificación hay dos tipos, la DC que consiste en el primer valor de la DCT y la AC que son los 63 valors restantes del cuadrado 8x8.

Mi pregunta es sobre como codifico exactamente el AC. Se que va contando los ceros que hay entre valor y valor, con un máximo de 16 pasos. Otra cosa es que no se de donde sacar las tablas de Huffman, las tengo en un libro pero tener que picar 4 paginas de códigos no apetece...

Merci por la ayuda

gonya707

Hombre, puedes picar las 4 páginas o hacer el huffman de manera teórica con otras 4 páginas de datos estadísticos sobre la probabilidad de aparición de cada símbolo. Vamos que no te queda mas remedio.

Igual ya esta picado en algun lado (fijo que si) y solo tendrias que usar una función ya codificada. Vamos, copiarlo todo es insane e inutil.

Yo recuerdo que hice tambien un codificador-decodificador de jpeg y mpeg con matlab pero no recuerdo de donde saque los huffman

1 respuesta
Idontknow

#5 Me seria de mucha ayuda que me dijeras de donde. Yo también lo estoy haciendo con matlab y me toca hacer el decodificador. Por casualidad donde estudias?

1 respuesta
gonya707

#6 en un par de búsquedas he encontrado esto:

http://en.pudn.com/downloads140/sourcecode/zip/detail603114_en.html

jpeg compression matlab source code. By the uniform quantization and huffman coding components, concise and understandable

Te bastaría con ver como hace el huffman, lo otro es fácil.

Ya no estudio xD, pero todo esto fue en la politecnica de madrid, ing telecomunicaciones

1 respuesta
Idontknow

#7 Muchas gracias :)

Usuarios habituales

  • Idontknow
  • gonya707