Tema 2

Anuncio
Televisión – Plan 2010 ETSIT-UPM – Curso 2016-17
Trabajos propuestos sobre tema 2
Se debe realizar obligatoriamente el trabajo propuesto en la primera sección y uno de los propuestos
en la segunda. Se debe entregar un fichero PDF llamado “TVtrabajo2.pdf” con una memoria que
responda en detalle a las cuestiones planteadas e incluya gráficos, imágenes, etc., más un archivo
llamado “TVtrabajo2.zip” (o “TVtrabajo2.rar”) con el código desarrollado, a través de la página de
TV del repositorio Moodle de la UPM antes del domingo 2016-10-16 @ 23:59:59 CEST.
0. Consideraciones previas
•
El objetivo de estos ejercicios es construir, experimentar y razonar sobre un pequeño sistema de
codificación. No se pretende una implementación eficiente sino fácil de comprender y modificar.
Se recomienda desarrollar en MATLAB el código, que se usará para resolver cualquier posible
duda sobre la memoria. Si se utiliza otro entorno de programación, debería disponer de un buen
soporte para la representación de gráficos (e.g., Python, Mathematica, Maple).
•
El enunciado incluye una serie de cuestiones cuya respuesta es opcional, y que pueden ser más
complejas o laboriosas, por lo que se recomienda abordarlas una vez que se han cumplimentado
todos los apartados obligatorios. Dicho esto, también se advierte de que la calificación dependerá
del número de apartados resueltos (y de la calidad de la memoria en general), por lo que los
apartados opcionales servirán, en su caso, para mejorar la nota.
•
En todo caso, tenga en cuenta que el resultado de un apartado puede ser una pieza fundamental
para la resolución del siguiente. Es imprescindible que verifique que la construcción es correcta.
Para ello debe contrastar los resultados obtenidos con lo que se ha explicado en teoría y poder
justificar las diferencias, si es que existen.
•
Para la confección de la memoria, pueden utilizarse las imágenes de prueba contenidas en
http://www.gti.ssr.upm.es/tv/pix/Lena.rar.
1. Cuantificador
1. Construir un cuantificador uniforme simétrico sin memoria. Dicho cuantificador debe recibir
como argumento la señal a cuantificar, el número de bits del cuantificador y el tamaño del escalón
de cuantificación, y entregar el índice del intervalo cuantificado. Ejemplo: i = Q(Delta, N, x).
2. Construir el descuantificador correspondiente. Ejemplo: y = DQ(Delta, N, i).
3. [Opcional: Verificar el conjunto cuantificador+descuantificador introduciendo muestras de una
señal con distribución uniforme. Calcular la distorsión de sobrecarga y el ruido granular teóricos,
y verificar que los valores obtenidos experimentalmente son compatibles con ellos.]
4. Representar gráficamente el resultado de cuantificar un periodo de una señal sinusoidal cuyo
rango coincida con el del cuantificador para 2, 4 y 8 b.
5. [Opcional: Calcular el ruido de cuantificación para la señal anterior y estimar, en base a ese ruido,
la distribución espectral del ruido de cuantificación para cada uno de los casos anteriores.]
2. Codificador
Una vez construido el [des]cuantificador de la sección anterior, común a los dos [de]codificadores
que se proponen a continuación, se debe desarrollar uno de ellos.
2.1 Codificador diferencial
6. Calcular un predictor óptimo de orden 1 basado en la muestra anterior de la misma fila utilizando
las estadísticas de la imagen de prueba.
7. Construir un codificador diferencial sin cuantificador utilizando el predictor anterior. Si una
muestra no está disponible (e.g., por estar fuera de los límites de la imagen), el predictor utilizará
un valor arbitrario (e.g., 128). [Opcional: ¿Cuál es el mejor valor y por qué?]
8. Aplicar el codificador diferencial sobre la imagen y obtener el histograma de frecuencias del error
de predicción, dividiendo su rango en intervalos de anchura unidad. Justificar el resultado obtenido.
9. Construir un codificador/decodificador diferencial utilizando el predictor anterior, pero sin cuantificador. Comprobar que es posible la decodificación sin pérdidas.
10. Construir un codificador diferencial combinando el cuantificador y el predictor óptimo anterior.
Representar la relación S/N de la imagen obtenida para 1, 2, ... 8 b/muestra, y extraer conclusiones.
11. Repetir el experimento anterior utilizando como predictor la muestra precedente en vez del predictor óptimo, y extraer conclusiones.
12. [Opcional: Calcular un código Huffman para el codificador diferencial basado en la muestra precedente y un cuantificador de 4 bits. Calcular la relación de compresión que puede alcanzarse.]
2.2 Codificador de transformadas
6. Construir la matriz de la transformación unidimensional (DCT-II) de orden 8. Verificar que la
transformada es unitaria y ortogonal.
7. Construir funciones que calculen la DCT bidimensional de un bloque de tamaño 8×8 y su inversa
utilizando la matriz anterior. Verificar que la transformación es invertible.
8. Descomponer la imagen de prueba en un mosaico de sub-imágenes de tamaño 8×8. Aplicar las
transformadas directa e inversa obtenidas en el apartado anterior sobre las sub-imágenes, y reconstruir la imagen de prueba. Explicar el resultado obtenido.
9. Utilizando las matrices obtenidas en el apartado anterior, representar el histograma de los coeficientes de las transformadas de posiciones (0,0), (0,1), (1,0), (2,2), (3,3) y (7,7), donde el primer
índice representa el número de la fila y el segundo el de la columna, ambos numerados a partir
de 0. Razonar si deben utilizarse diferentes cuantificadores o puede emplearse siempre el mismo.
10. [Opcional: Utilizar las estadísticas de la imagen de prueba para asignar el número de bits a cada
cuantificador.]
11. Utilizando el cuantificador uniforme desarrollado previamente y el esquema de asignación de
bits que se considere más apropiado, construir un codificador/decodificador de transformadas y
aplicarlo sobre la imagen de prueba.
12. Calcular la relación S/N obtenida para la imagen de prueba para 4, 2, 1, 0,5 y 0,1 bpp.
Descargar