Practica 2 21-22 - enunciado PDF

Title Practica 2 21-22 - enunciado
Author Quike García
Course Tecnologías De Imagen Y Vídeo
Institution Universidad Politécnica de Madrid
Pages 18
File Size 571.2 KB
File Type PDF
Total Downloads 50
Total Views 162

Summary

enunciado...


Description

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS

VIDEO CODEC – PARTE I Muestreo, Cuantificación e Interpolación en Color. Norma 601

CONTENIDO 1.

Introducción .......................................................................................................................................... 2

2.

Preparativos .......................................................................................................................................... 4

3.

Medida de Calidad ................................................................................................................................. 4

4.

5.

3.1.

PSNR en RGB .................................................................................................................................. 4

3.2.

PSNR en Componentes .................................................................................................................. 5

Cuantificación y Recuperación .............................................................................................................. 6 4.1.

Cuantificación y Codificación......................................................................................................... 6

4.2.

Decodificación y Reconstrucción ................................................................................................... 6

Formatos de Croma 4:2:2 y 4:2:0 .......................................................................................................... 7 5.1.

Submuestreo 4:2:2 ........................................................................................................................ 7

5.2.

Interpolación 4:2:2 ........................................................................................................................ 8

5.3.

Filtrado Previo y Submuestreo 4:2:0 ............................................................................................. 9

5.4.

Interpolación 4:2:0 ...................................................................................................................... 10

6.

Imagen Error ........................................................................................................................................ 11

7.

Distribución de color en las imágenes................................................................................................. 13

8.

Pruebas por realizar y documentar ..................................................................................................... 13 8.1.

Cuantificación y recuperación ..................................................................................................... 13

8.2.

Formatos de croma ..................................................................................................................... 14

8.2.1.

Formato 4:2:2 ...................................................................................................................... 14

8.2.2.

Formato 4:2:0 ...................................................................................................................... 16

8.2.3.

Imagen Error ........................................................................................................................ 16

8.3.

Distribución de color en las imágenes......................................................................................... 17

8.4.

Pruebas opcionales...................................................................................................................... 17

8.4.1. 9.

Interpolación bilineal en 4:2:0............................................................................................. 17

Entrega ................................................................................................................................................ 18

Pág. 1 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS

1. INTRODUCCIÓN Las prácticas anteriores han tratado sobre señales de vídeo y conceptos de muestreo, cuantificación e interpolación en imágenes de grises. A partir de esta práctica, se aplican estos conceptos a las imágenes y señales de vídeo en color, para ir implementando sucesivamente un codificador-decodificador (Codec). Como en lugar de partir de señales analógicas se parte de valores ya digitalizados, más que muestreo y cuantificación se tendrá un re-muestreo y una re-cuantificación de los valores, sin embargo, a efectos de comprender los conceptos los resultados son muy comparables. Esta práctica 2 sienta las bases para el proceso de compresión de una imagen (que se realizará en la práctica 3). En la Figura 1 se muestra el esqueleto del esquema a implementar que va a servir de base para la siguiente práctica.

Figura 1: Esqueleto para emisor y receptor El esquema consiste en un emisor y un receptor que se implementarán en dos módulos independientes y que se comunicarán mediante los datos (variables) almacenados en la memoria del espacio de trabajo de Matlab (mostrado en forma de nube). De esta manera, la memoria de Matlab sustituye el flujo binario que se crearía en realidad. Como muestra la figura, en esta práctica se realiza el proceso de conversión de formato (cambio del espacio de color y cuantificación según la norma 601), aunque en lugar de partir de una señal analógica, se parte de una imagen RGB que se supone ya muestreada a la frecuencia principal 4:4:4. Con ella se obtiene la señal en componentes digital en formato 4:4:4. Seguidamente se reducirá el número de muestras a los esquemas 4:2:2 y 4:2:0 tanto por diezmado como con un filtrado previo al diezmado para Pág. 2 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS el caso 4:2:0. De esta forma se tendrá la señal preparada para comprimir (visualización detallada de este proceso en figura 2). A este proceso se le denomina muestreo de fuente (source sampling).

Imagen RGB Original Filtrado

Conversión RGB→YCbCr Muestreo

Cuantificación y Codificación 601

Filtrado previo y submuestreo 4:2:2

4:4:4

4:4:4→4:2:2

M

Q

C

Filtrado

4:4:4→4:2:0

4:2:0 Figura 2. Proceso de Muestreo de fuente El proceso de cuantificación y codificación tiene pérdidas porque se está utilizando un rango menor del proporcionado por los 8 bits, pues la norma 601 reserva códigos para sincronismos y niveles fuera de rango (footroom y headroom). De la misma manera, los procesos de bajada a 4:2:2 y 4:2:0 añadirán pérdidas de calidad a la señal que se necesitarán evaluar. A partir de las señales 4:2:2 o 4:2:0 obtenidas en la recepción o descompresión, será necesario volver al esquema 4:4:4 realizando la interpolación de las muestras que faltan, aquí se empleará la réplica o la interpolación bilineal opcionalmente. Seguidamente se realizará el proceso de reconstrucción a partir de esta señal deshaciendo la codificación 601 previa. En esta decodificación y reconstrucción, como no es posible generar señales analógicas en Matlab, simplemente se restituirá el rango de la luminancia y diferencias de color al que se ha empleado en las prácticas anteriores. Finalmente, la imagen en componentes se convertirá a RGB para obtener la imagen recuperada. Al proceso completo le llamamos proceso de recuperación a partir de la imagen fuente (source recovery), se muestra en la figura 3.

Imagen Fuente 4:2:2

4:4:4

Decodificación y Reconstrucción 601

4:2:2→4:4:4

4:2:0 Interpolación

dC

R

Conversión YCbCr→RGB

Imagen RGB Recuperada

4:2:0→4:4:4 Figura 3. Proceso de Recuperación a partir de imagen fuente La imagen final ha sufrido el proceso de “ida y vuelta” (conversión y recuperación), ambos con pérdidas, con lo cual interesa visualizar el resultado y compararlo con la imagen original que entró en la cadena. Pág. 3 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS En resumen, en esta práctica: • • • •



Se cuantificarán y codificarán imágenes según la norma 601 Se implementan los esquemas de muestreo 4:2:2 y 4:2:0 Se realizará también el proceso de interpolación, decodificación y reconstrucción inversa Se crearán funciones para medir la calidad objetiva y visualizar el error de imágenes en color (calidad subjetiva) que sufran las imágenes en este proceso con pérdidas (en esta práctica el error es debido a la cuantificación y sub-muestreo, en la siguiente práctica el error será debido a la compresión) Por último, se visualizarán las distribuciones del color en algunas imágenes y se verá el efecto de la compresión sobre ellas.

2. PREPARATIVOS Ya que se necesitan varias funciones de prácticas anteriores, debe asegurarse que se encuentren todas en la carpeta “functions” dentro de su directorio de trabajo y que funcionen correctamente, recuerde que la entrega incluye esta carpeta “functions” con todas las funciones de prácticas anteriores: • •

Practica_0: rgb_to_ycbcr(), ycbcr_to_rgb()e image_data_size() Practica_1: psnr(), downsample(), upsample(), replicate(), quantize() y bilinear() (esta última opcional)

Cree dentro de la carpeta “functions” la carpeta “practica_2” como hizo en las practicas anteriores, en ella va a crear las funciones nuevas. Descargue el fichero zip que acompaña a esta práctica y expándalo en su directorio “code” al expandirse añadirá nuevas imágenes a la carpeta “images“ y una función auxiliar a la carpeta “functions_aux”, por otro lado en la carpeta “test_files\practica_2” se expandirán varios programas de comprobación TIVComprueba… y sus datos. Recuerde que dichos programas son para comprobar que el código se ha realizado correctamente, y no se deben documentar en el informe. Una vez expandido el zip y creada la carpeta de las funciones de esta práctica ejecute en el directorio de trabajo “code” una vez el script crea_paths.m Preste especial atención a las “Pruebas a realizar y documentar” del apartado 8, a las que se refiere en cada subapartado. Son estas pruebas las que se deben analizar en el informe, realizando las medidas pedidas, respondiendo a las preguntas e incluyendo las imágenes pedidas. Ciertos apartados más difíciles o largos de implementar son opcionales, realícelos solo si le queda tiempo.

3. MEDIDA DE CALIDAD Se van a codificar dos funciones para calcular la relación señal a ruido de pico (PSNR) de imágenes en color de acuerdo con la información expuesta en las clases. Es una medida objetiva de la pérdida de calidad.

3.1.

PSNR en RGB

Para construir la siguiente función se puede consultar la función psnr() de la práctica 1, teniendo en cuenta que el error ahora se promedia en las tres bandas R, G y B. Es necesario convertir las entradas a double por si no lo fueran.

Pág. 4 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS function ratio = psnr_rgb(Image_rec, Image_orig) % function ratio = psnr_rgb(Image_rec, Image_orig) % Calcula la relación señal a ruido de pico de una imagen RGB que ha % sufrido alguna degradación. % Entradas: ambas con tipos de datos uint8 ó double % Image_rec Matriz RGB con imagen recuperada tras degradación % Image_orig Matriz RGB con imagen antes de sufrir la degradación % Salida: escalar ratio con el resultado % Alumnos: XXX y XXX Prueba de funcionamiento (no documentar): Para probar esta función de forma similar a como se hizo en la práctica anterior se proporciona la imagen peppers_lq_det.bmp que es una versión deteriorada de la imagen peppers_lq.bmp, ambas son ahora imágenes en color. Utilizando la función psnr_rgb() con estas dos imágenes se debe obtener un valor aproximadamente igual a 18.6 dB.

3.2.

PSNR en Componentes

De la misma forma debe construirse la siguiente función de dos salidas, que convierte las imágenes a componentes y calcula los PSNR para la luminancia y para las diferencias de color, promediando el error de las componentes de croma. De esta forma se podrá evaluar la calidad de forma independiente en la información de brillo y en la de color. Esto resulta conveniente, al tener la luminancia y las diferencias de color generalmente tratados por separado en los sistemas de compresión. function [psnry , psnrchroma] = psnr_ycbcr(Image_rec, Image_orig) % function [psnry , psnrchroma] = psnr_ycbcr(Image_rec, Image_orig) % Calcula la relación señal a ruido de pico de una imagen RGB que ha % sufrido alguna degradación. % Este cálculo se realiza tanto para la luminancia como para % las diferencias de color, con las que se hacer la media % Entradas: ambas con tipos de datos uint8 ó double % Image_rec Matriz RGB con imagen recuperada tras degradación % Image_orig Matriz RGB con imagen antes de sufrir la degradación % Salidas: % psnry escalar relación señal ruido de pico en la luminancia % psnrchroma escalar, relación señal a ruido de pico calculada % sobre las diferencias de color. % % Alumnos: XXX XXX Nota: aunque las cromas en el formato proporcionado por rgb_to_ycbcr()tienen un rango de -128 a +128 use como valor de potencia de pico de la señal 255 al cuadrado para la fórmula.

Prueba de funcionamiento (no documentar): La prueba de psnr_ycbcr() sobre peppers_lq_det.bmp y peppers_lq.bmp debe arrojar un valor de 26.6 dB para psnry y 22.6 dB para psnrchroma .

Pág. 5 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS

4. CUANTIFICACIÓN Y RECUPERACIÓN 4.1.

Cuantificación y Codificación

El desarrollo de la práctica continúa con la implementación de los bloques mostrados en las figuras 1 a 3, en primer lugar, el bloque de cuantificación y codificación según la norma 601. En la siguiente función quantize_601 se debe generar la señal 4:4:4 en forma de imágenes de luminancia y diferencias de color. La función debe tomar una imagen RGB y a partir de ella: • • • • •

Convertirla a componentes (tras esto Y debe estar entre 0 y 255 y Cb/Cr entre -128 y 128). Cambiar su rango de variación de 0 a 1 para la luminancia y entre -0.5 y 0.5 para las cromas, de forma que se asemeje a las señales que considera la norma 601 Aplicarles las fórmulas de cuantificación de la norma 601 para 8 bits, consulte la norma o las trasparencias de clase, tenga en cuenta que la fórmula es diferente de la vista para señal N-10. Por lo tanto, esta función implementa los bloques: “Conversión RGB → YCbCr” y “Cuantificación y Codificación” de la figura 2. Se puede comprobar el funcionamiento con el script TIVComprueba_quantize_601.m.

function [Yq, Cbq, Crq] = quantize_601(ImageRGB) % function [Yq, Cbq, Crq] = quantize_601(ImagenRGB) % Toma una imagen RGB y tras convertirla a componentes la % codificada de acuerdo con la norma 601 para 8 bits % Entradas: % ImagenRGB: Imagen RGB de tipo uint8 o double % Salidas: todas tipo uint8 % Yq Luminancia 4:4:4 según norma 601 % Cbq y Crq Diferencias de color 4:4:4 norma 601 % Alumnos: XXX XXX

4.2.

Decodificación y Reconstrucción

Para ir paso a paso se van a saltar de momento las etapas de submuestreo e interpolación (más tarde se insertarán) y se va a realizar ahora el proceso de decodificación/reconstrucción a través de una fórmula contraria a la de la cuantificación con 8 bits de la norma 601, seguida de la conversión de vuelta a RGB. Tenga en cuenta que el rango final de la luminancia y de las diferencias de color ha de ser el original, es decir 0 a 255 de margen dinámico. La imagen resultante debe ser aparentemente idéntica a la original, aunque con las medidas se demostrará que ha habido pérdidas. La interfaz de la función es la siguiente: function ImageRec = dequantize_601(Yq, Cbq, Crq) % function ImageRec = dequantize_601(Yq, Cbq, Crq) % Recupera como imagen RGB la señal 601 4:4:4 proporcionada % a la entrada % Entradas: todas uint8 ó double % Yq Luminancia con codificación 601 % Cbq y Crq Diferencias de color codificadas 601 % Salida: % Imagen RGB en formato uint8 para visualizar % Alumnos: XXX y XXXX Observaciones:

Pág. 6 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS • •



Recuerde convertir la salida a uint8 para que la imagen RGB se pueda visualizar correctamente mediante imshow() Deduzca y use la fórmula de reconstrucción para valores codificados con 8 bits a rango normalizado y luego convierta a RGB con rango 0 a 255. Se trata de las operaciones contrarias a las realizadas en la función anterior. Puede comprobar esta función llamando al script TIVComprueba_dequantize_601.m.

El proceso de codificación y decodificación 601 tiene pérdidas debidas a las conversiones y los cambios de rango de la señal, a pesar de que se parta de una señal ya digitalizada. Se va a medir la calidad de las imágenes que salen de esta codificación-decodificación pues se trata de un límite superior, una calidad de partida que se va a degradar cuando se sub-muestree la croma en esta práctica o se comprima la imagen en la siguiente. De esta forma se podrá medir cuánto se pierde con estos procesos adicionales, en comparación con esta calidad de referencia. En cualquier caso, puede probar la conversión inversa de lo generado por quantize_601() para la imagen mini601.bmp de forma que obtenga exactamente la imagen original. Se recomienda esta prueba para asegurarse de que las fórmulas son correctas. Pruebas a realizar y documentar: consultar apartado 8.1

5. FORMATOS DE CROMA 4:2:2 Y 4:2:0 Como se ha comentado, raramente se comprime la señal con las cromas en resolución completa, generalmente se comprime con sub-muestreo a 4:2:0 y cuando se requiere mucha calidad, a 4:2:2. Esta reducción de las muestras puede hacerse con un simple diezmado, siendo posible mejorarla con un filtrado previo que suavice la señal a sub-muestrear. En el caso de la señal 4:2:2 no se va a considerar realizar un filtrado previo, en el caso 4:2:0 sí.

5.1.

Submuestreo 4:2:2

Se pide la implementación del bloque: “4:4:4 → 4:2:2” en la figura 2. Para ello, se debe realizar la función que cumple la siguiente interfaz: function [Y422, Cb422, Cr422] = sub_chroma_422(Y, Cb, Cr) % function [Y422, Cb422, Cr422] = sub_chroma_422(Y,Cb, Cr) % Realiza un submuestreo 4:2:2 de las componentes 601 % % Entradas: uint8 o double para las señales % Y Señal de luminancia codificada según la norma 601 % Cb,Cr Señales diferencia de color codificadas según 601 % % Salidas: tipo double % Y422 señal de luminancia intacta % Cb422, Cr422 señales de crominancia submuestreadas 4:2:2 % % Alumnos : XXX y XXXX

Observaciones:

Pág. 7 de 18

Tecnologías de Imagen y Vídeo – Curso 2021-2022

Practica 2

TEMA 2 – DIGITALIZACIÓN Y CODIFICACIÓN SIN PÉRDIDAS •

Use la función downsample() de la práctica 1 para realizar el diezmado.



Compruebe que las señales de salida tienen el tamaño esperado, esta función no debería admitir...


Similar Free PDFs