Sistemas-Multimedia / MRVC

A scable-in-resolution video codec
Other
1 stars 48 forks source link

Bit allocation in 2D decompositions #58

Open vicente-gonzalez-ruiz opened 4 years ago

vicente-gonzalez-ruiz commented 4 years ago

Remember:

+-----------+   DWT   +----+----+
|           | ------> | LL | LH |
|   image   |         +----+----+
|           | <------ | HL | HH |
+-----------+  iDWT   +----+----+
                     decomposition

Bit allocation (see Section 7.1.2 (Quantization)) defines, given a bit budget R, the quantization step that must be used in each subband (LL, LH, HL and HH) to minimize the distortion (MSE, for example).

If the transform (DWT) is orthogonal, this optimization problem can be solved considering that the distortion generated by the quantization of the subbands is additive (for example, the quantization error generated by the quantization of the subband LL "Q(LL)" and the subband LH "Q(LH), added "Q(LL)+Q(LH)" is equal to the quantization error generated by the quantization of both subbands at the same time "Q(LL,LH)"). Thus, if we know the RD (Rate/Distortion) curve of each subband (that is, the contribution of each subband to the quality of the reconstructed (quantized) image), the optimal quantization step for each subband is those q_step that produces as much R bits (in total, for the 4 subbands) and none of these bits decreases the distortion in an amount that corresponds with a slope in the curve that is smaller that \lambda. See this notebook.

victorconka commented 4 years ago

Hola,

tengo dudas con este ultimo issue.

¿Como se selecciona el valor R ? Para cada cuantificador he probado un valor diferente. Valor del ejemplo, valor mínimo de tamaño de subbanda, valor máximo de tamaño de subbanda.

¿Los resultados obtenidos son coherentes ? (He aplicado el ejemplo del notebook proporcionado sin hacerle mas modificaciones que adaptándolo de 2 curvas a 4 - 1 curva por subbanda).

Aquí los resultados obtenidos.

Saludos,

Viktor

vicente-gonzalez-ruiz commented 4 years ago

On Mon, 10 Feb 2020 at 09:13, Viktor notifications@github.com wrote:

Hola,

tengo dudas con este ultimo issue.

¿Como se selecciona el valor R ? Para cada cuantificador he probado un valor diferente. Valor del ejemplo, valor mínimo de tamaño de subbanda, valor máximo de tamaño de subbanda.

El R total es un parámetro que en última instancia controla la calidad de la reconstrucción. Usa los valores que quieras. De hecho, ya he visto que has usado varios valores de R (si no fuera así, no hubieras podido obtener ninguna curva).

¿Los resultados obtenidos son coherentes ? (He aplicado el ejemplo del notebook

https://github.com/vicente-gonzalez-ruiz/bit_allocation/blob/master/bit_allocation.ipynb proporcionado sin hacerle mas modificaciones que adaptándolo de 2 curvas a 4 - 1 curva por subbanda).

Aquí https://github.com/vsobolyev/MCDWT/blob/actividad_03/src/anmjv_v3.ipynb los resultados obtenidos.

Si estos resultados son el issue de encontrar un buen cuantificador, pues no tienen muy mala pinta, pero, tampoco creo que sean buenos. Las tres curvas deberían salir casi iguales. Además, yo veo muchas curvas (que estaría bien que etiquetaras).

Slds.

Saludos,

Viktor

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXOZMCOM2EQUZUTAYP4TRCELDFA5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELHYHNQ#issuecomment-584025014, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO5GHJZQY7KJ5LYFFILRCELDFANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola, como prueba intente anular el resto de subbandas y la gráfica que sale es la siguiente: image

sin embargo, manteniendo el resto de subbandas sin tocar y aplicando quantizador unicamente a la banda que toca la grafica es como sigue: image

vicente-gonzalez-ruiz commented 4 years ago

Hola,

las gráficas de la versión donde no se anulan las subbandas parecen correctas. Sin embargo, las otras no me lo parecen. Todas, no sólo la LL, deberian ser decrecientes con el rate. ¿Estás seguro de que no hay ningún bug?

En cualquier caso, la segunda forma valen perfectamente. No hace falta que lo hagáis anulando las subbandas (y gracias por intentarlo).

Slds.

On Mon, 17 Feb 2020 at 01:38, Viktor notifications@github.com wrote:

Hola, como prueba intente anular el resto de subbandas y la gráfica que sale es la siguiente: [image: image] https://user-images.githubusercontent.com/3610852/74616042-e2dd1180-5125-11ea-963c-588c6fbe9cb5.png

sin embargo, manteniendo el resto de subbandas sin tocar y aplicando quantizador unicamente a la banda que toca la grafica es como sigue: [image: image] https://user-images.githubusercontent.com/3610852/74616086-233c8f80-5126-11ea-9f13-ef9c80fd96b8.png

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXO7B5FWNVDI4QM4A3CDRDHL65A5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL4XVYA#issuecomment-586775264, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO3RBINX5BEIB7HKCM3RDHL65ANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola, tiendo a pensar a que no hay bug, pues parece ser, que el peso de la banda LL es la que le da la forma a las demás gráficas por la diferencia de peso que tienen al no anular las demás bandas. Aquí un extracto de ejecución(anulando el resto de mandas, deja el peso de la imagen en "0" - únicamente el tamaño del contenedor y cabecera): image Y aquí los datos finales, en todas las bandas se observa peso decreciente dada la evolución de qstep, sin embargo unicamente la banda LL presenta MSE creciente : image

Slds

vicente-gonzalez-ruiz commented 4 years ago

Viktor,

no tiene sentido que al aumentar el q_step disminuya el MSE o viceversa. ¿Has probado con otro vídeo?

Slds.

Por cierto, ¿por qué algunas de las gráficas las denominas "SIZE" y otras "mse"? ¿No todas representan lo mismo?

On Mon, 17 Feb 2020 at 10:59, Viktor notifications@github.com wrote:

Hola, tiendo a pensar a que no hay bug, pues parece ser, que el peso de la banda LL es la que le da la forma a las demas gráficas por la diferencia de peso que tienen. Aquí un extracto de ejecución: [image: image] https://user-images.githubusercontent.com/3610852/74642033-92d86c00-5172-11ea-8d40-263ecc72a956.png Y aquí los datos finales, en todas las bandas se observa peso decreciente dada la evolución de qstep, sin embargo unicamente la banda LL presenta MSE creciente : [image: image] https://user-images.githubusercontent.com/3610852/74643023-573ea180-5174-11ea-93c0-aa8208994e57.png E

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXO6G4TKLJ7V6ER4AEKTRDJNX3A5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL5YWDA#issuecomment-586910476, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO5V6M24G5DKWRVF6NTRDJNX3ANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola,

las gráficas donde pone "XX - SIZE" representan el peso de la imagen dado un qstep, y las gráficas donde pone "XX - MSE" representan mse de la imagen dado un qstep. Es la representación de valores por separado para ver si tienen sentido. (size ha de disminuir y mse ha de aumentar) El tamaño de las subbandas cuantificadas va disminuyendo en las 4 subbandas, sin embargo únicamente en la subbanda LL, el valor de MSE es creciente como era de esperar.

Aquí dos notebook iguales con la única diferencia de alterar el resto de subbandas estableciendo como valor 0. https://github.com/vsobolyev/MCDWT/tree/actividad_03_zeroVSnonzero/demos/bit_allocation_in_DWT

Slds

vicente-gonzalez-ruiz commented 4 years ago

On Mon, 17 Feb 2020 at 16:05, Viktor notifications@github.com wrote:

Hola,

las gráficas donde pone "XX - SIZE" representan el peso de la imagen dado un qstep, y las gráficas donde pone "XX - MSE" representan mse de la imagen dado un qstep. Es la representación de valores por separado para ver si tienen sentido. (size ha de disminuir y mse ha de aumentar)

OK.

El tamaño de las subbandas cuantificadas va disminuyendo en las 4 subbandas, sin embargo únicamente en la subbanda LL, el valor de MSE es creciente como era de esperar.

Aquí dos notebook iguales con la única diferencia de alterar el resto de subbandas estableciendo como valor 0.

https://github.com/vsobolyev/MCDWT/tree/actividad_03_zeroVSnonzero/demos/bit_allocation_in_DWT

Bien, el primero parece que está perfecto. Sobre el segundo, siento repetirme, pero yo creo que tienes algún bug. Por ejemplo, las gráficas para LL deberían salir casi iguales si tienes o no en cuenta las otras 3 subbandas (me refiero a que las curvas para LL del segundo notebook deberían ser muy parecidas a las curvas para LL del primero, porque las subbandas LH, HL y HH contienen poca información relevante, y por tanto, no hay mucha diferencia entre considerarlas o anularlas).

:-)

Slds

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXO2BREXHENO4L7U57ODRDKRTTA5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL6XMJA#issuecomment-587036196, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO3CJYZPKP4YY2WQ3VTRDKRTTANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola Efectivamente, acabo de descubrir el bug! Cuando se anulan el resto de las bandas, el valor de MSE se debe calcular entre los archivos de las subbandas correspondientes. Esto es, antes de calcular la inversa de DWT/MCDWT.

https://github.com/vsobolyev/MCDWT/tree/actividad_03_zeroVSnonzero/demos/bit_allocation_in_DWT Slds

vicente-gonzalez-ruiz commented 4 years ago

Hola,

efectivamente ahora las curvas tienen buena pinta, pero la solución que me das aquí en el correo no me parece correcta (no lo he mirado en el notebook). El MSE debe calcularse en el dominio de la imagen (después de aplicar la transformada inversa).

:-/

Slds.

On Mon, 17 Feb 2020 at 16:22, Viktor notifications@github.com wrote:

Hola Efectivamente, acabo de descubrir el bug! Cuando se anulan el resto de las bandas, el valor de MSE se debe calcular entre los archivos de las subbandas correspondientes. Esto es, antes de calcular la inversa de DWT/MCDWT.

https://github.com/vsobolyev/MCDWT/tree/actividad_03_zeroVSnonzero/demos/bit_allocation_in_DWT Slds

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXO3KMZYDRMZWAA2QPILRDK2T3A5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL67SGQ#issuecomment-587069722, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO3KZCVOXMKS6PGNKJDRDK2T3ANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola,

basándome en lo que habíamos entendido entre compañeros: la curva obtenida es efecto de perdida de información, pues cuantificadores son compresores con perdida. A mayor qstep, mas info perdida y MSE es la forma de medir esa perdida comparando imágenes bit a bit. Al cuantificar subbandas, parece tener sentido que el "lugar" mas idóneo para medir el efecto es calculando MSE entre las subbandas cuantificadas. En caso de hacerlo después de recomponer imagen, el ruido es superior a la "señal" (curva de degradación de la imagen) que queremos observar, por eso la curva que tiene forma esperada es LL debido a su peso.

(¿A caso anulación de subbandas se hace de otra manera?) image

Slds

vicente-gonzalez-ruiz commented 4 years ago

Hola,

la distorsión debe medirse en el dominio de la imagen (no el transformado) porque las transformadas wavelet generan coeficientes cuya importancia depende de la subbanda en la que están.

Sí, con ese código borras la imagen. Pero ten en cuenta que todas las imágenes se almacenan en disco después de aplicarles un desplazamiento a

  1. Mira en la línea 70 de:

https://github.com/Sistemas-Multimedia/MCDWT/blob/master/src/IO/image.py

Por tanto, no lo estás haciendo correctamente.

Slds.

On Mon, 17 Feb 2020 at 23:55, Viktor notifications@github.com wrote:

Hola,

basándome en lo que habíamos entendido entre compañeros: la curva obtenida es efecto de perdida de información, pues cuantificadores son compresores con perdida. A mayor qstep, mas info perdida y MSE es la forma de medir esa perdida comparando imágenes bit a bit. Al cuantificar subbandas, parece tener sentido que el "lugar" mas idóneo para medir el efecto es calculando MSE entre las subbandas cuantificadas. En caso de hacerlo después de recomponer imagen, el ruido es superior a la "señal" (curva de degradación de la imagen) que queremos observar, por eso la curva que tiene forma esperada es LL debido a su peso.

(¿A caso anulación de subbandas se hace de otra manera?) [image: image] https://user-images.githubusercontent.com/3610852/74690875-d7025580-51e0-11ea-8a1c-50e540ac6fd1.png

Slds

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXO7OSJ2YPCMM3CY3G4DRDMIUXA5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEL73KQI#issuecomment-587183425, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO6UDO5BYU7NTZQT4YLRDMIUXANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/

victorconka commented 4 years ago

Hola,

creo que hemos logrado la solución que permite medir MSE en el dominio de la imagen anulando el resto de subbandas. Nos guardamos la explicación para la presentación, y si da tiempo después de 2 exámenes de hoy - realizaremos la implementación. Gracias por el feedback proporcionado.

Saludos, Equipo ANMJV

vicente-gonzalez-ruiz commented 4 years ago

👍

On Wed, 19 Feb 2020 at 13:27, Viktor notifications@github.com wrote:

Hola,

creo que hemos logrado la solución que permite medir MSE en el dominio de la imagen anulando el resto de subbandas. Nos guardamos la explicación para la presentación. Gracias por el feedback proporcionado.

Saludos, Equipo ANMJV

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Sistemas-Multimedia/MCDWT/issues/58?email_source=notifications&email_token=ACRKXOZ637S5IN3OIMCE5HLRDUQS7A5CNFSM4KQH54FKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMHTNNI#issuecomment-588199605, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACRKXO2KL45IC6OVFACZAZTRDUQS7ANCNFSM4KQH54FA .

-- Vicente González Ruiz Departamento de Informática, Universidad de Almería https://w3.ual.es/~vruiz/