Pr´acticas de V´ıdeo Digital - EIIAB - Plan de...

93
Pr´acticasdeV´ ıdeo Digital Escuela Universitaria Polit´ ecnica de Cuenca

Transcript of Pr´acticas de V´ıdeo Digital - EIIAB - Plan de...

Page 1: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practicas de Vıdeo Digital

Escuela Universitaria Politecnica de Cuenca

Page 2: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2

Page 3: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Indice general

1. Captura de imagenes 111.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 11

2. Tratamiento de imagenes con MATLAB 132.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1. Interfaz de usuario . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2. Definicion de variables . . . . . . . . . . . . . . . . . . . . . . 152.3.3. Ejecucion de funciones . . . . . . . . . . . . . . . . . . . . . . 152.3.4. Funciones para trabajar con ficheros de imagenes . . . . . . . 172.3.5. Acceso a elementos de una matriz . . . . . . . . . . . . . . . 182.3.6. Operaciones con matrices . . . . . . . . . . . . . . . . . . . . 202.3.7. Creacion de funciones personalizadas . . . . . . . . . . . . . . 212.3.8. Sentencias de control de flujo de programa . . . . . . . . . . . 232.3.9. Detalles para mejorar el rendimiento de MATLAB . . . . . . 25

2.4. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 26

3. Operadores puntuales 293.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.3.1. Conversion a niveles de gris . . . . . . . . . . . . . . . . . . . 303.3.2. Posterizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.3. Cambios de brillo y contraste . . . . . . . . . . . . . . . . . . 323.3.4. Desplazamientos . . . . . . . . . . . . . . . . . . . . . . . . . 343.3.5. Rotaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.4. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 36

4. Operadores Locales 394.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.3. Conceptos teoricos previos . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3.1. Filtros FIR digitales . . . . . . . . . . . . . . . . . . . . . . . 394.3.2. Propiedad de separabilidad . . . . . . . . . . . . . . . . . . . 41

4.4. Desplazamiento en frecuencia . . . . . . . . . . . . . . . . . . . . . . 434.5. Desarrollo de la practica . . . . . . . . . . . . . . . . . . . . . . . . . 44

3

Page 4: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

4 INDICE GENERAL

4.5.1. Filtro paso bajo con enventanado rectangular . . . . . . . . . 444.5.2. Filtro paso bajo con otros enventanados . . . . . . . . . . . . 454.5.3. Filtro paso alto mediante desplazamiento en frecuencia . . . . 46

4.6. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 46

5. Operadores globales 495.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.3.1. Visualizacion de la informacion contenida en la FFT . . . . . 505.3.2. Eliminacion de componentes frecuenciales . . . . . . . . . . . 525.3.3. Eliminacion de componentes suavizada . . . . . . . . . . . . . 525.3.4. Filtrado a partir de una respuesta en frecuencia . . . . . . . . 53

5.4. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 53

6. Diezmado e interpolacion 556.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.3.1. Diezmado de imagenes . . . . . . . . . . . . . . . . . . . . . . 566.4. Interpolacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576.5. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 57

7. Interfaces de comunicacion 597.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.2. Objetivos y motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . 607.3. Forma de evaluacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 607.4. Plan de actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.4.1. Recomendacion UIT-R BT.656 . . . . . . . . . . . . . . . . . 617.4.2. Formato del tren de datos comun a los dos interfaces . . . . . 617.4.3. Recomendacion UIT-R BT.799 . . . . . . . . . . . . . . . . . 677.4.4. Recomendacion UIT-R BT.1120 . . . . . . . . . . . . . . . . 707.4.5. Resumen comparativo de los diferentes interfaces . . . . . . . 74

7.5. Bibliografıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.5.1. Bibliografıa basica . . . . . . . . . . . . . . . . . . . . . . . . 757.5.2. Bibliografıa complementaria . . . . . . . . . . . . . . . . . . . 75

8. Potencial de compresion de la DCT 778.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.2. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8.3.1. Distribucion de la informacion en la DCT de una imagen . . 788.3.2. Aplicacion de la DCT a la compresion intracuadro . . . . . . 79

8.4. Resultados de la practica . . . . . . . . . . . . . . . . . . . . . . . . 82

9. Compensacion de movimiento 859.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.2. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

9.3.1. Codificacion de una imagen P . . . . . . . . . . . . . . . . . . 86

Page 5: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

INDICE GENERAL 5

9.3.2. Codificacion de una imagen B . . . . . . . . . . . . . . . . . . 899.3.3. Comprobacion de funcionamiento de las funciones . . . . . . 92

Page 6: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

6 INDICE GENERAL

Page 7: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Indice de figuras

2.1. Dos ejemplos de visualizacion del interfaz de ususarios de Matlab. . 152.2. Definicion de variables en la ventana de comandos de Matlab. . . . . 162.3. Ejecucion de comandos de la librerıa y disenados por el usuario. . . . 162.4. Acceso a elementos del interior de una matriz. . . . . . . . . . . . . . 192.5. Acceso a submatrices. . . . . . . . . . . . . . . . . . . . . . . . . . . 192.6. Operaciones basicas con matrices. . . . . . . . . . . . . . . . . . . . . 202.7. Generacion y ejecucion de funciones de procesamiento por lotes. . . . 212.8. Detalle del editor de Matlab. Al detener el cursor del raton sobre

una variable, el programa nos muestra el valor de dicha variable o sutamano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.9. Generacion y ejecucion de funciones con paso de parametros. . . . . 222.10. El negativo de una imagen se consigue mediante un operador que

denominaremos puntual. . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1. Operadores puntuales: correspondencia entre pıxeles. . . . . . . . . . 293.2. Conversion a niveles de gris. . . . . . . . . . . . . . . . . . . . . . . . 303.3. La posterizacion tiene una funcion de transferencia E/S en escalera. 313.4. Los cambios de brillo y contraste se consiguen con funciones de trans-

ferencia lineales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5. Al aumentar el contraste en una imagen se hacen mas evidentes los

contornos de los objetos. . . . . . . . . . . . . . . . . . . . . . . . . . 333.6. Al disminuir el contraste de una imagen se disimulan los contornos. . 333.7. Los desplazamientos unicamente implican cambio de posicion en los

pıxeles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.8. Ejemplo de desplazamiento en x de valor N = 1. . . . . . . . . . . . 35

4.1. Mediante el enventanado rectangular limitamos la duracion de la res-puesta al impulso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.2. El Efecto Gibbs es evidente en filtrados paso bajo implementados conenventanados rectangulares. . . . . . . . . . . . . . . . . . . . . . . . 41

4.3. El enventanado Hamming suaviza la terminacion de la ventana y mi-nimiza el efecto Gibbs. . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.4. Respuesta en frecuencia de un filtro paso bajo abrupto bidimensionalcon forma rectangular. . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.5. La respuesta al impulso del filtro de la figura 4.4 es separable. . . . . 424.6. El filtrado paso alto realza los contornos de os objetos. . . . . . . . . 434.7. Implementacion de filtrados paso alto a partir de la propiedad de

desplazamiento en frecuencia. . . . . . . . . . . . . . . . . . . . . . . 44

7

Page 8: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

8 INDICE DE FIGURAS

Page 9: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Indice de tablas

7.1. Inicio y final de intervalos de supersion vertical. . . . . . . . . . . . . 627.2. Bits F, V y H de los codigos SAV y EAV. . . . . . . . . . . . . . . . 63

9

Page 10: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

10 INDICE DE TABLAS

Page 11: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 1

Captura de imagenes

1.1. Objetivo

El objetivo de esta practica es comprobar lo habitual y cotidiano que es la imagendigital y el video digital en el entorno tecnologico en el que nos movemos actual-mente. Para ello, por una parte se buscaran aplicaciones y sistemas relacionados conla imagen digital y por otra, se obtendra todo aquel material de vıdeo e imagenesque se utilizara en las practicas de procesado de imagenes a lo largo de todo elcuatrimestre. Todo este material se podra grabar en el dico duro del servidor “tele-co.uclm.es” disponible en el laboratorio de imagen, aunque no esta de mas disponerde un disquete o “PenDrive” para transportar los algoritmos o las imagenes que sedesee para la realizacion de las memorias.

1.2. Desarrollo

La primera parte de esta practica consiste en realizar un analisis de los posiblessistemas y aplicaciones relacionadas con la imagen y el vıdeo digital. Los alumnosharan una lista de aplicaciones y sistemas que obtengan o utilicen en su funciona-miento imagenes o secuencias digitales, comentandolos muy brevemente.

En segundo lugar, se trata de obtener algunas imagenes digitales con el fin deutilizarlas en las practicas relacionadas con el procesado digital de imagenes a lolargo del cuatrimestre. Para dichas practicas, se necesitara el siguiente material:

• Una imagen fotografica digitalizada en un formato sin comprimir (por ejemploBMP).

• Tres fotogramas consecutivos a partir de una secuencia de vıdeo, tambien sincomprimir.

Los alumnos deberan conseguir este material de la forma que estimen oportuna.Es aconsejable utilizar tamanos de imagenes del orden de 640x480, tamanos masgrandes serıan mas lentos de procesar, aunque tambien se puede trabajar con ellos.

1.3. Resultados de la practica

Al final de la practica se realizara una memoria breve (no mas de dos paginas)que contenga:

11

Page 12: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

12 PRACTICA 1. CAPTURA DE IMAGENES

• En primer lugar, una lista con las formas de adquirir imagenes y secuenciasde vıdeo digitales y las aplicaciones y sistemas que las utilicen comentandolasbrevemente.

• Finalmente, se explicara de forma esquematica la manera en que se ha obtenidoel material que se pide en el apartado 1.2.

La entrega de memorias para su correccion se realizara insertando los ficheroscorrespondientes en un directorio llamado “vdfinal” (todo con minusculas) en lacuenta del alumno en el servidor “teleco.uclm.es”; directorio que sera creado por elalumno, y utilizado para cada una de las practicas de video digital que se realicen.

El plazo para entregar esta memoria sera de una semana.

Page 13: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 2

Tratamiento de imagenes conMATLAB

2.1. Objetivos

MATLAB es un software orientado al calculo matricial. En esta practica se vanrepasar sus caracterısticas mas destacables y su manejo basico, tratando de ponerde manifiesto cuales son las aplicaciones en las que resulta mas adecuada su utili-zacion. Dentro de estas aplicaciones aparece el desarrollo de algoritmos orientadosal procesamiento digital de imagenes, aunque como veremos no su fase de imple-mentacion. Asimismo, en esta practica se hara un repaso de su forma de uso con elfin de facilitar el desarrollo de las practicas de esta asignatura relacionadas con elprocesamiento de imagenes.

2.2. Introduccion

La herramienta de calculo matricial MATLAB es, probablemente, la aplicacionmatematica mas utilizada en las fases iniciales del tratamiento digital de senales.En esta introduccion se apuntan las caracterısticas mas importantes que han hechoposible este exito.

MATLAB esta orientado al calculo eficiente basado en vectores y matrices decualquier tamano. Al ser posible representar las senales digitales como vectores y lasimagenes como matrices, se hace muy directo su procesamiento mediante algorit-mos matematicos en este entorno. El propio MATLAB, ademas, contiene una grancantidad de funciones matematicas ya implementadas dispuestas para realizar proce-samientos complejos. Estas funciones no sera necesario mas que aplicarlas a nuestrasvariables matriciales y vectoriales para observar rapidamente sus resultados. Estasfunciones ya implementadas se encuentran organizadas en librerıas denominadas”Toolbox”.

Ademas de las funciones incluidas en el programa, MATLAB permite al usuarioescribir sus propias funciones para realizar las operaciones que desee. Para ello,MATLAB utiliza un lenguaje de programacion de muy alto nivel, muy alejado dellenguaje de la maquina, pero muy sencillo de interpretar por nosotros y por tantomuy potente y flexible, capaz de expresar en una sola sentencia procesamientos muycomplejos.

Pero MATLAB, a pesar de todas estas ventajas, no es la panacea de los progra-mas de procesamiento de imagenes. De hecho, este programa es muy poco eficiente

13

Page 14: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

14 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

en cuanto a la utilizacion de la memoria. En las imagenes digitales, cada pıxel quedarepresentado por un valor binario de 8 bits. En cambio, MATLAB, para sus pro-cesamientos, utiliza operaciones en coma flotante con 32 bits de resolucion. Esto esciertamente un derroche que afecta a las necesidades de memoria, y a la velocidadde procesamiento de los algoritmos. Por otra parte, MATLAB utiliza un lenguaje deprogramacion interpretado. La diferencia entre un lenguaje interpretado y un len-guaje compilado radica en que momento se realiza la conversion del codigo escrito allenguaje de la maquina. Mientras que los lenguajes compilados utilizan un procesode compilacion anterior e independiente a la ejecucion siendo por tanto mas rapidosde procesar, los programas escritos en un lenguaje interpretado como MATLAB secompilan en tiempo de ejecucion haciendo esta considerablemente mas lenta, su uti-lizacion en tiempo real solo es posible con algoritmos sencillos computacionalmentey mediante un hardware muy potente.

Todo esto, que iremos viendo a lo largo de este apartado de manera muy sencillahace que MATLAB sea muy eficiente en la etapa de simulacion de algoritmos deprocesado y para la etapa de desarrollo de nuevos algoritmos; aunque en la etapade implementacion es mas apropiado utilizar lenguajes compilados como puede serel lenguaje C.

2.3. Desarrollo

A continuacion se van a ofrecer una serie de nociones sobre la utilizacion deMATLAB. Estas nociones seran de cinco tipos fundamentales:

• Nociones de generacion acceso y utilizacion de vectores y matrices.

• Utilizacion de funciones de la librerıa.

• Generacion de funciones especıficas por parte del usuario.

• Manejo y tratamiento de imagenes.

• Eficiencia computacional.

A lo largo de este apartado se iran proponiendo ejercicios y cuestiones teoricascon el fin de aclarar los recursos y tecnicas aquı planteados que seran de utilidadpara las siguientes practicas.

2.3.1. Interfaz de usuario

El interfaz de usuario de MATLAB Permite visualizar diferentes ventanas. Enlos dos ejemplos que aparecen en la figura 2.1, a la derecha aparece la ventana decomandos en la que iremos escribiendo todos los mandatos y funciones que queramosejecutar, ya sean propias de la aplicacion o hechas por nosotros.

En el ejemplo izquierdo de la figura 2.1 podemos ver en su parte izquierda unaventana de directorios en la que podemos acceder a ayudas de las funciones de cadaToolbox. En el caso del ejemplo estan desplegados los puntos de acceso de la Toolboxde procesado de imagen. Tambien bajo la anterior aparece otra ventana para escogerel directorio actual en el que se buscaran las funciones a ejecutar. En la figura de laderecha aparece otro ejemplo en el que podemos ver una ventana con informacionde las variables utilizadas en el programa, y un historico de comandos ejecutados.

Page 15: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 15

Figura 2.1: Dos ejemplos de visualizacion del interfaz de ususarios de Matlab.

La ventana de comandos de MATLAB, situada en los dos casos anteriores a laderecha, es realmente un interprete de comandos en el que nosotros podemos ejecutarcualquier operacion sobre una o mas variables y nos devolvera el resultado de dichaoperacion. En este apartado veremos como definir variables matriciales, veremoscomo realizar operaciones, como aplicar funciones a las variables, y finalmente comocrear nuestras propias rutinas.

2.3.2. Definicion de variables

La definicion de variables se realiza en MATLAB mediante la expresion:Variable = [fila1; fila2; fila3; ...]

utilizandose espacios en blanco o ”,”para separar los elementos de una fila, y”;”para separar las filas entre sı.

En la figura 2.2 podemos observar las formas mas habituales de definir variables.La variable var_01 es una matriz de tamano 1x1, es decir un numero real, de valor18. La variable var_02 es una matriz con tres filas y tres columnas en la que sedefinen cada uno de sus terminos. Finalmente, la variable var_03 es una matriz 4x3construida a partir de anadirle a var_02 la cuarta fila.

En el caso en que no sepamos el tamano que va a alcanzar una matriz, podemosdefinirla como vacıa, como en el ejemplo var_04; de esta manera, posteriormente,podemos ir situando elementos en la matriz y el programa la redimensionara segunlas necesidades. Hay que tener cuidado con esta opcion ya que consume muchamemoria, y mucho tiempo de acceso en las operaciones que se realicen sobre ellas.

2.3.3. Ejecucion de funciones

Las funciones implementadas en las librerıas o “toolbox” de MATLAB se utilizanatendiendo al siguiente formato:

resultado = funcion(parametro1, parametro2, ...)

En el caso en que se omita el nombre de la variable resultado, se creara unavariable llamada ans que contendra la salida de la funcion utilizada. En la figura 2.3podemos contemplar algunos ejemplos.

Page 16: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

16 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

Figura 2.2: Definicion de variables en la ventana de comandos de Matlab.

Figura 2.3: Ejecucion de comandos de la librerıa y disenados por el usuario.

Page 17: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 17

Ejercicio:

(a) Definir una variable de matlab que contenga la raiz cuadrada de 27016839424(para ello puede consultarse la ayuda de la funcion de Matlab sqrt()).

2.3.4. Funciones para trabajar con ficheros de imagenes

MATLAB tiene capacidad de leer ficheros de imagenes y convertirlos a variablesmatriciales del entorno de trabajo. La informacion de una imagen se convierte puesen una matriz de numeros, a la que posteriormente se le puede aplicar cualquier fun-cion o algoritmo matematico, ya sea de los contenidos en la librerıa o uno disenadoa medida. Una vez procesada una matriz, MATLAB nos permite visualizar los re-sultados en la pantalla, o volver a almacenarla en el disco como fichero de imagen.Los formatos compatibles con estas funciones son:

• “jpg” or “jpeg” Joint Photographic Experts Group (JPEG)

• “tif” or “tiff” Tagged Image File Format (TIFF)

• “gif” Graphics Interchange Format (GIF)

• “bmp” Windows Bitmap (BMP)

• “png” Portable Network Graphics

• “hdf” Hierarchical Data Format (HDF)

• “pcx” Windows Paintbrush (PCX)

• “xwd” X Window Dump (XWD)

• “cur” Windows Cursor resources (CUR)

• “ico” Windows Icon resources (ICO)

El comando para leer una imagen de un fichero y convertirla a matriz numericaes “imread”, y un ejemplo de funcionamiento es este.

>> matriz_imagen = imread(’nombre_fichero’, ’formato’);donde matriz_imagen es el nombre de variable que almacenara el contenido

de la imagen, nombre_fichero es el nombre del fichero que contiene la imagen, y“formato” es el formato del fichero imagen, que puede ser cualquiera de los vistosen la tabla anterior.

Los datos contenidos en las matrices asociadas a imagenes que definen cada pıxel,pueden ser enteros sin signo de tamano 8 (tipo uint8) o numeros en coma flotante de32 bits (tipo double). En el primer caso, la informacion de cada pıxel estara definidapor valores entre 0 y 255. En el segundo caso, el margen de valores sera entre 0 y 1.El tipo uint8 es el tipo por defecto cuando se utiliza imread(), pero no es compatiblecon la mayorıa de las operaciones matematicas, por lo que sera necesario pasar lasvariables matriciales a tipo double (ver ayuda de la funcion double()) y una vezhechas las operaciones volver a pasar a uint8 (ver ayuda de la funcion uint8() Paramas informacion consultar la ayuda de MATLAB.

Para visualizar una matriz como una imagen se utilizan los mandatos “imshow”,e “image”. El formato habitual de uso es:

>> imshow(matriz_imagen)

Page 18: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

18 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

con el se visualiza el contenido de la variable en forma de imagen, que sera enescala de grises si la matriz es bidimensional o en color si se trata de una matriztridimensional de tamano MxNx3.

Si queremos almacenar una matriz resultado como un fichero grafico utilizaremosel comando “imwrite”. Un ejemplo de utilizacion puede ser:

>> imwrite(matriz_imagen, ’nombre_fichero’, ’formato’):Puede encontrarse informacion sobre parametros de cada formato en la ayuda

de Matlab.

Ejercicios:

(a) Convertir el fichero “armario.bmp” a una variable de matlab y obtener eltamano de la matriz resultado mediante la funcion size() (ver la ayuda deMatlab).

(b) Convertir el fichero “armarioBN.bmp” a una variable de matlab y obtenernuevamente e tamano de la matriz resultado mediante la funcion size().

(c) ¿Que diferencias encuentras en ellas?.

2.3.5. Acceso a elementos de una matriz

El acceso a elementos de una matriz se realiza mediante la expresion:variable = matriz(fila, columna, plano, ...)siendo fila, la primera dimension de la matriz, columna la segunda, plano la

tercera, etc.En los ejemplos de la figura 2.4 tenemos una matriz de tamano 3x3, y en primer

lugar, con var_05 accedemos al elemento de la fila 2 y columna 3. Con var_06accedemos al elemento de la segunda fila y primera columna; Se puede observar quela columna 1 se toma por defecto. En var_07 accedemos a toda la fila 2, utilizandoen el campo de las columnas en comodın “:”. Finalmente, en var_08 accedemos avarios elementos de la fila 2; en concreto a los elementos entre la columna 2 y la3. El uso del signo “:” tambien realiza las mismas funciones si se aplica a las filas,como en la figura 2.5, dando como resultado vectores columna; y si se aplica en lasdos dimensiones, da como resultado submatrices.

Ejercicios:

Para conocer el contenido de las matrices asociadas a imagenes en color se rea-lizaran las siguientes pruebas:

(a) Convertir el fichero “armario.bmp” a una variable de matlab.

(b) Como se ha visto en la seccion 2.3.4 las imagenes en color estan compuestaspor tres planos. En este ejercicio se pondran a cero los planos 2 y 3 de lavariable obtenida en el ejercicio (a), y se visualizara el resultado mediante lafuncion imshow().

(c) De la misma manera que en el ejercicio (b), poner a cero los planos 1 y 3 dela variable obtenida en el ejercicio (a) y visualizar el resultado mediante lafuncion imshow().

Page 19: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 19

Figura 2.4: Acceso a elementos del interior de una matriz.

Figura 2.5: Acceso a submatrices.

Page 20: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

20 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

(d) Nuevamnte, a partir de la variable obtenida en el ejercicio (a), poner a cerolos planos 1 y 2 y visualizar el resultado mediante la funcion imshow().

(e) ¿Que conclusiones se pueden obtener de los resultados anteriores?.

2.3.6. Operaciones con matrices

Los operadores mas habituales son los clasicos suma (+), resta (-), multiplicacion(*), y division (/). Estos operadores se aplican, por defecto, de forma matricial. En elcaso en que se quiera por ejemplo realizar un producto entre los elementos homologosde dos matrices, o lo que es lo mismo considerando las matrices como un array, envez de el operador (*) debemos usarlo con un punto delante (.*).

En el ejemplo de la figura 2.6, se define la matriz var_11 de 6x3 que sera utilizadacomo dos matrices de 3x3 en las siguientes operaciones. La variable var_12 es la sumade las dos matrices, y por tanto la suma de sus elementos. La variable var_13 esel resultado del producto matricial de las dos matrices 3x3. Por ultimo, la variablevar_14 es el resultado de multiplicar las matrices elemento a elemento.

Figura 2.6: Operaciones basicas con matrices.

Ademas de los operadores aritmeticos podemos utilizar los operadores logicosand (&), or (|), etc.

Ejercicios:

(a) A partir de un fichero imagen, realizar la operacion salida=255-imagen enmatlab, donde imagen es la variable de matlab que representa a la imagendel fichero. Visualizar y analizar el resultado obtenido (esta operacion puederealizarse pıxel a pıxel o con la matrız completa).

(b) A partir de un fichero de imagen, multiplicar independientemente cada unode los planos por un factor, entre 0 y 3. Visualizar y analizar el resultadoobtenido.

Page 21: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 21

2.3.7. Creacion de funciones personalizadas

MATLAB tambien permite al usuario definir sus propias funciones. En primerlugar, hemos de considerar que las funciones de MATLAB pueden ser funcionesescritas en lenguaje “C” y compiladas, que no se contemplaran en estas practicas; yfunciones escritas en el propio lenguaje de MATLAB, que son las que nos interesan.

Existen dos tipos de funciones en lenguaje MATLAB: unas son, realmente, fiche-ros de procesamiento por lotes, y no se les pueden pasar parametros pero devuelvenun resultado; las otras, son funciones propiamente dichas a las que se les pasan losparametros necesarios, devolviendo tambien el resultado de las operaciones realiza-das. Ambos tipos de funciones se implementan como ficheros de texto ASCII quedeben tener extension “.m”.

MATLAB posee su propio editor ASCII que se abre desde la ventana de coman-dos mediante el mandato edit. De esta manera se abre el editor con una nuevafuncion en blanco. Tambien es posible abrir una funcion ya implementada para edi-tarla escribiendo el comando edit mi_funcion, siendo mi_funcion.m el fichero quecontiene la funcion a editar. En la figura 2.7 podemos ver ejemplos de funciones deprocesamiento por lotes y su ejecucion, ası como su modo de utilizacion.

Figura 2.7: Generacion y ejecucion de funciones de procesamiento por lotes.

Por su parte, en la figura 2.8 aparece un detalle del editor que permite ver elvalor de las variables simplemente superponiendo el cursor en ellas.

Finalmente, en la figura 2.9 podemos observar el detalle de la implementacion deuna funcion con parametros en el editor y su utilizacion en la ventana de comandos.

Ejercicios:

(a) Una imagen es el negativo de otra cuando los pıxeles homologos de cada una deellas tienen colores complementarios. A partir del ejercicio (a) realizado en elapartado 2.3.6, implementar una funcion que llamaremos negativo(). Dichafuncion tendra el formato matriz_negativo = negativo(matriz_imagen).En esta funcion, el parametro matriz_imagen es una variable matricial deMATLAB que representa a una imagen leıda previamente con la funcion

Page 22: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

22 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

Figura 2.8: Detalle del editor de Matlab. Al detener el cursor del raton sobre unavariable, el programa nos muestra el valor de dicha variable o su tamano.

Figura 2.9: Generacion y ejecucion de funciones con paso de parametros.

Page 23: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 23

imread(), y el resultado matriz_negativo de esta funcion sera otra varia-ble matricial que representa a la imagen negativo de matriz_imagen y esvisualizable mediante laq funcion imshow(). En la figura 2.10 pueden verseuna imagen y su negativo.

(b) Igualmente, a partir del ejercicio (b) del apartado 2.3.6, implementar una fun-cion que llamaremos cambiacolor() que tenga como entradas, cuatro parame-tros: en primer lugar una matriz imagen fichero de imagen, y los tres siguienteslos tres factores que se aplicaran a cada uno de los planos de la matriz de entra-da. Esta funcion devolvera a la salida una matriz imagen visualizable medianteimshow().

(a) Original (b) Negativo

Figura 2.10: El negativo de una imagen se consigue mediante un operador que de-nominaremos puntual.

2.3.8. Sentencias de control de flujo de programa

Las sentencias de control de flujo de programa de MATLAB estan inspiradasen el lenguaje “C” y por tanto tienen formatos y utilidades muy parecidas. En esteapartado se hace un esbozo de su funcionamiento; puede obtenerse mas informacionen la ayuda.

• El comando if comprueba una condicion para elegir entre dos grupos de sen-tencias a ejecutar. La condicion se expresa en base a operadores logicos, como“¡”, “¿”, “¿=”, “==”, “ =”, “&”, etc. Todos estos y mas pueden encontrarseen la ayuda. Un ejemplo es el siguiente:

if I == JA(I,J) = 2;

elseif abs(I-J) == 1A(I,J) = -1;

elseA(I,J) = 0;

end

Page 24: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

24 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

Observese que el operador “=” es un operador de asignacion, mientras que “==”es un operador logico. El operador “ ” es muy utilizado en America y aparece enlos teclados de esta procedencia. En los teclados europeos tenemos que buscarlo porsu codigo ASCII, que es el 126. Ası pues, para escribirlo debemos pulsar la tecla“Alt” y, sin soltarla, marcar el numero 126 en el bloque numerico de la derecha delteclado.

• El comando for se utiliza para repetir un conjunto de sentencias un numeroespecıfico de veces. Algunos ejemplos de utilizacion son los siguientes.

FOR I = 1:N,FOR J = 1:N,

A(I,J) = 1/(I+J-1);END

END

En los casos anteriores, “I” y “J” se incrementan de unidad en unidad. Si que-remos que los incrementos sean diferentes podemos utilizar el ejemplo siguiente.

FOR S = 1.0: -0.1: 0.0,. . . ;

END

en este caso S se incrementa en pasos de -0.1, o lo que es lo mismo, se decrementaen pasos de valor 0.1.

• El comando while repite un conjunto de sentencias un numero indefinido deveces. Un ejemplo de utilizacion es el siguiente.

n=1; a=3;while a < 100000,

a = a^2;n = n+1;

end

• Los comandos switch y case van asociados para escoger entre varios gru-pos de sentencias, basandonos en una expresion. Un ejemplo, asumiendo queMETODO es una cadena de caracteres, es el siguiente.

switch lower(METODO)case ’lineal’,’bilineal’

disp(’Metodo es lineal’)case ’cubico’

disp(’Metodo es cubico’)otherwise

disp(’Metodo desconocido.’)end

Ejercicio:

(a) Mejorar la funcion cambiacolor() del apartado anterior de manera que, cuan-do la matriz de entrada sea en color realice el procesamiento encomendado, ycuando la matriz de entrada sea en niveles de gris (blanco y negro) devuelva lamisma imagen que se paso como entrada sin aplicarle ningun procesamiento.Esta funcion se debera llamarcambiacolor2().

Page 25: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.3. DESARROLLO 25

2.3.9. Detalles para mejorar el rendimiento de MATLAB

En primer lugar, tenemos que decir que MATLAB visualiza por defecto todos losresultados intermedios de las operaciones que se realizan. La representacion en pan-talla de datos intermedios es realmente util en las fases de desarrollo y comprobaciondel funcionamiento de los algoritmos, para detectar errores, pero una vez terminadaesa fase, dado que dicha visualizacion consume mucho tiempo de ejecucion, es acon-sejable anadir un signo “;” al final de los comandos de los que no necesitamos versus resultados. De esta manera se indica al programa que no los visualice

Por otra parte, MATLAB utiliza dos tipos de funciones:

• Todas las funciones escritas en ficheros “*.m” son funciones escritas en unlenguaje interpretado, que se deben compilar en el momento de ser ejecutadas,lo que las hace mas lentas.

• En cambio, otras operaciones como los productos de matrices, estan imple-mentadas, y compiladas, en el nucleo de la aplicacion, lo que las hace muchomas rapidas.

En este sentido, por ejemplo, para calcular el resultado de un sumatorio de pro-ductos, es mucho mas eficiente utilizar el producto escalar de dos vectores (vector1 .*vector2), y el comando suma acumulada (sum(vector)), que implementar un buclefor realizando cada producto y la suma acumulada.

Ası, una operacion como esta:

y =300∑

i=1

ai ∗ x[i]

puede resolverse facilmente de esta manera

y=0;for i = 1:300

y = y + (a(i) * x(i));end

pero es mucho mas eficiente utilizary = sum(a .* x);

Como norma general, cuando sea posible debe evitarse el uso de bucles for owhile en funciones de MATLAB; pero, si el uso de bucles es imprescindible porcualquier razon, es conveniente sacar de el todo aquello que no sea necesario hacerreiterativamente. Por ejemplo, el siguiente es un desarrollo valido:

for i=1:(62.5 * 4.8). . .;B = B + 35 * sqrt(2) * x(i);. . . ;

end

pero es mucho mas eficiente utilizar:

Page 26: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

26 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

factor1 = 35 * sqrt(2); fin=62.5 * 4.8;for i=1:fin

. . .;B = B + factor1 * x(i);. . . ;

end

ya que en el primer caso el producto 35 * sqrt 2se realizara 300 veces, y en elsegundo una sola.

Por ultimo, es importante saber que la utilizacion en MATLAB de las llamadasmatrices vacıas, que se van redimensionando conforme se las usa, son muy pocoeficientes. Las matrices vacıas conforme se les van anadiendo elementos, estos se vansituando mediante punteros a una lista, haciendo complicado el acceso independientea sus elementos. Estas matrices vacıas son utiles cuando no se puede saber de ningunamanera el tamano que va a tomar una matriz; y esto es raro que suceda; siempre sesuele tener una estimacion del tamano maximo. Otra posibilidad es cuando la matriza utilizar va a tener solo un 10 % de los elementos distintos de cero. En este ultimocaso, se puede justificar el empleo de matrices vacıas por economıa de memoria.

Ejercicios:

(a) Ejecutar la funcion eficiencia_no2.m y anotad el tiempo requerido para suejecucion.

(b) Analizar la operacion que se esta realizando a partir del listado de la misma.

(c) Ejecutar la funcion eficiencia_no1.m y anotad el tiempo requerido para suejecucion.

(d) Analizar lo que ha cambiado respecto a eficiencia_no2.m a partir de loslistados de las funciones.

(e) Ejecutar la funcion eficiencia_no.m y anotad el tiempo requerido para suejecucion.

(f) Analizar lo que ha cambiado respecto a eficiencia_no1.m a partir de loslistados de las funciones.

(g) Ejecutar la funcion eficiencia_si.m y anotad el tiempo requerido para suejecucion.

(h) Analizar lo que ha cambiado respecto a eficiencia_no.m a partir de los lis-tados de las funciones.

2.4. Resultados de la practica

Al final de la practica se realizara una memoria breve contestando a las cuestio-nes que se han venido planteando a lo largo del desarrollo y aportando los listados delas funciones “.m” solicitadas. Todos los ficheros “*.m” que se han solicitado seranprobados mediante la siguiente funcion de test para comprobar su funcionamiento.Dicha funcion esta disponible para su uso por parte de los alumnos, siendo aconseja-ble que sea comprobado el funcionamiento de todas las funciones pedidas, de formaprevia a la entrega del material para su correccion.

Page 27: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

2.4. RESULTADOS DE LA PRACTICA 27

La entrega de memorias para su correccion se realizara insertando los ficheroscorrespondientes en un directorio llamado “vdfinal” (todo con minusculas) en lacuenta del alumno en el servidor “teleco.uclm.es”; directorio que sera creado por elalumno, y utilizado para cada una de las practicas de video digital que se realicen.

El plazo para entregar esta memoria sera de una semana.

function error = repaso(fichero_imagen)

% ---------------------------------------------------------------% La entrada a esta funcion es un nombre de fichero de imagen con% el formato ’nombre_fich.ext’.%% ESTE FICHERO NO SE DEBE MODIFICAR BAJO NINGUN CONCEPTO.% SE DEBEN ADAPTAR LAS FUNCIONES PARA QUE FUNCIONEN CON ESTE% FICHERO TAL Y COMO ESTA.%----------------------------------------------------------------

matriz = imread(fichero_imagen);

% Obtencion del negativofigure(4);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(negativo(matriz));title(’Negativo’)

% Cambio de coloresfigure(2);subplot(2,2,1);imshow(cambiacolor(matriz, 100, 100, 100));title(’R=100, V=100, A=100’)

subplot(2,2,2);imshow(cambiacolor(matriz, 200, 100, 100));title(’Rojo=200, V=100, A=100’)

subplot(2,2,3);imshow(cambiacolor(matriz, 100, 150, 100));title(’R=100, Verde=150, A=100’)

subplot(2,2,4);imshow(cambiacolor(matriz, 100, 100, 50));title(’R=100, V=100, Azul=50’)

Page 28: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

28 PRACTICA 2. TRATAMIENTO DE IMAGENES CON MATLAB

Page 29: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 3

Procesado digital de imagenes:Operadores puntuales

3.1. Introduccion

Para el procesamiento digital de imagenes podemos utilizar diferentes funcionesque se clasifican como: operadores puntuales, operadores locales, operadores porbloques, y operadores globales. De todas estas los mas sencillos son los operadorespuntuales.

Los operadores puntuales, como puede apreciarse en la figura 3.1 producen enla salida una imagen en las que cada pıxel es funcion exclusivamente de un pıxelde la imagen de entrada. Con estas operaciones son posibles transformaciones deintensidad y de geometrıa. Ejemplos de transformaciones de intensidad que se puedenhacer con este tipo de operadores son: el calculo del el negativo de una imagen,modificar el brillo y el contraste, el cambio de la profundidad del color (operacionque en algunos programas se denomina “posterizacion”). Por su parte algunas delas transformaciones geometricas pueden ser traslaciones, giros y deformaciones.

Figura 3.1: Operadores puntuales: correspondencia entre pıxeles.

3.2. Objetivo

El objetivo de esta practica es aplicar diversos operadores puntuales a algunade las imagenes obtenidas en la practica 1. Con ello, se persigue, ademas, el conoci-miento de las posibilidades que ofrecen estos operadores tan sencillos.

3.3. Desarrollo

Las funciones que se piden durante el desarrollo de esta practica tendran unnombre de funcion y un formato especıfico. Dicho formato debe ser respetado escru-

29

Page 30: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

30 PRACTICA 3. OPERADORES PUNTUALES

pulosamente, ya que las funciones seran probadas todas y cada de ellas una medianteotra funcion de MATLAB que las ira ejecutando, y mostrara sus resultados de formaautomatica. Dicha funcion de prueba, que para esta practica se llama “puntuales()”estara disponible en la pagina web de la asignatura, con el fin de que los alumnoscomprueben el funcionamiento de sus algoritmos antes de entregar los resultadospara su correccion.

Por otra parte, deben disenarse las funciones para que procdesen las imagenescon independencia del tamano de la matriz de entrada. En aquellos casos en los quesea necesario conocer el tamano para realizar algun procesamiento, dicho tamano seobtendra con la funcion “size()”.

3.3.1. Conversion a niveles de gris

Una transformacion de intensidad sencilla con imagenes en color es convertirlas aimagenes en niveles de gris. Para ello, debemos obtener el nivel de brillo de cada unode los pıxeles, a partir de sus niveles de color. El resultado de esta transformacionse puede ver en la figura 3.2

Figura 3.2: Conversion a niveles de gris.

Partimos de imagenes compuestas por tres planos, plano de rojo, plano de verdey plano de azul, en las que el margen dinamico de cada uno de los colores primariosva desde 0 a 255, correspondiendo 0 al nivel de intensidad mas bajo, y 255 al masalto. A partir de esta informacion hemos de extraer el nivel de brillo de cada pıxelmultiplicamdo el nivel de intensidad de cada color primerio por el factor correspon-diente y sumando. Como expresion que relaciona el nivel de brillo de un pıxel con losniveles de intensidad de cada primario se puede utilizar la que aparece en la normaUIT-R BT.601, que es la suguiente:

Y = 0, 45 ∗R + 0, 37 ∗G + 0, 11 ∗B

Ejercicio:

(a) Implementar una funcion con el formato siguiente:

matriz_gris = gris(matriz_imagen)

Esta funcion convertira la matriz matriz_imagen de tamano NxMx3 que con-tiene la informacion de una imagen en color, en una matriz bidimensional de

Page 31: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

3.3. DESARROLLO 31

tamano NxM, que represente a la misma imagen pero en niveles de gris. Debetenerse en cuenta que la matriz de salida debe estar compuesta por elementosenteros sin signo de longitud 8 (ver funcion uint8()) para poder ser visuali-zada con la funcion imshow().

3.3.2. Posterizacion

La posterizacion permite disminuir el numero de niveles de tono (colores), ovalores de luminosidad para la imagen a procesar. Por ejemplo, si se escogen dosniveles tonales en una imagen RGB, se limita la profundidad de color a ocho colores:000-Negro, 001-Azul, 010-Verde, 011-Cian, 100-Rojo, 101-Magenta, 110-Amarillo y111-Blanco.

Este procesamiento es util para crear efectos especiales como areas grandes yplanas en una fotografıa. Los efectos de este comando resultan mas evidentes si sereduce el numero de niveles de gris en una imagen de escala de grises. Sin embargo,tambien se puede utilizar este comando para producir algunos efectos interesantesen imagenes en color.

Basicamente lo que hace la posterizacion es cuantificar los niveles de intensidadde cada color con menos bits; de forma que los colores y los niveles de intensidad sereducen dependiendo de dicha cuantificacion. Algoritmicamente puede entenderse elproceso ilustrandolo con la figura 3.3.

• Se calcula el numero de niveles de entrada que corresponden a cada nivel desalida, dividiendo el nuvel maximo a la entrada por el numero de niveles a lasalida.

• Se situa cada nivel de entrada en el nivel de salida que le corresponde dividiendocada valor de entrada por la cantidad de anterior y truncando la parte decimal.

• se recupera el margen dinamico multiplicando por el nivel maximo a la saliday dividiendo por el numero de niveles discretos de salida.

Figura 3.3: La posterizacion tiene una funcion de transferencia E/S en escalera.

Todo este proceso se resume en la siguiente expresion:

Salida =V Smax

NSmax∗ entero

[Entrada

V EmaxNSmax

]

Page 32: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

32 PRACTICA 3. OPERADORES PUNTUALES

donde Salida es cada uno de los valores de los pıxeles de salida, V Smax es elvalor de salida maximo posible, NSmax es el numero de niveles discretos posibles ala salida (numero de niveles de cuantificacion), Entrada es cada uno de los valoresde los pıxeles de entrada y V Emax es el valor maximo a la entrada.

Ejercicios:

(a) Implementar una funcion con el formato siguiente:

matriz_posterizada = posteriza(matriz_imagen, niveles)

Esta funcion convertira la matriz matriz_imagen que contiene la informacionde una imagen en color, en otra matriz del mismo tamano que represente ala misma imagen pero con una profundidad de color dada por el parametro“niveles” Debe tenerse en cuenta que la matriz de salida debe estar compuestapor elementos enteros sin signo de longitud 8 (ver funcion uint8()) para poderser visualizada con la funcion imshow().

(b) Comprobar que para un valor de 2 “niveles” en la imagen de salida solo apa-recen los ocho colores posibles vistos en parrafos anteriores.

(c) Analizar para que valor mınimo de “niveles” deja de apreciarse claramente elefecto porducido por la perdida de profundidad de color.

3.3.3. Cambios de brillo y contraste

Mediante los cambios de brillo y contraste podemos conseguir resaltar un objetoaumentando su iluminacion o las diferencias de intensidad dentro de unos margenesdeterminados, o disimularlo oscureciendolo o disminuyendo el margen de niveles deintensidad existentes. La relacion entre la entrada y la salida de un sistema quemodifica el brillo o el contraste es una relacion lineal semejante a la que puede verseen la figura 3.4.

Figura 3.4: Los cambios de brillo y contraste se consiguen con funciones de transfe-rencia lineales.

Las ecuaciones que definen la relacion entre la entrada y la salida en esta graficaes la siguiente:

Page 33: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

3.3. DESARROLLO 33

y = ya + m ∗ (x− xa)

Donde m es la pendiente de la recta y (xa, ya) es un punto contenido en dicharecta. En la figura 3.5 puede verse el resultado de aumentar el contraste a unaimagen, y en la figura 3.6 la disminucion del mismo.

Figura 3.5: Al aumentar el contraste en una imagen se hacen mas evidentes loscontornos de los objetos.

Figura 3.6: Al disminuir el contraste de una imagen se disimulan los contornos.

En este proceso han de tenerse en cuenta las siguientes consideraciones:

• El cambio de brillo que se produce en una imagen de entrada a traves de esteprocesamiento podemos considerarlo proporcional a la variacion de superficiede la parte inferior de la funcion de transferencia de la figura 3.4. Ası pues,un aumento en el valor de ya sin variar m ni xa implicarıa un aumento en elbrillo.

• Por su parte, un cambio en la pendiente m de la funcion de transferencia im-plicarıa un cambio de contraste. Puede verse que dicho cambio en la pendienteimplica variaciones diferentes en los margenes de intensidad a la entrada y ala salida.

• Si se quiere modificar el contraste sin alterar el brillo de la imagen de entradasera necesario buscar un punto (xa, ya) en el cual, modificando la pendiente mno varıe la superficie inferior de la funcion de transferencia de la figura 3.4.

Page 34: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

34 PRACTICA 3. OPERADORES PUNTUALES

Ejercicios:

(a) En este apartado se implementara una funcion de cambio de brillo y contrastecon el formato: matriz_contraste = contraste(matriz_imagen, m, Y_a);donde m es la pendiente de la funcion de transferencia entrada/salida e Ymedes el valor de salida que corresponde con la entrada Xmed=128 de la grafica.Con ellos se configurara la curva que aumentando ”m.aumentara el contrastesin variar el brillo y aumentando Ymed aumentara el brillo sin afectar al con-traste. Debe tenerse en cuenta que la matriz de salida debe estar compuestapor elementos enteros sin signo de longitud 8 (ver funcion uint8()) para poderser visualizada con la funcion imshow().

(b) Comprobar que para valores de m = 2 y m = 0, 5 con valores de Y med = 128aumenta y disminuye respectivemente el contraste sin afectar al brillo.

(c) Comprobar que para valores de Y med = 192 e Y med = 64 con valores dem = 1 aumenta y disminuye respectivemente el brillo sin afectar al contraste..

3.3.4. Desplazamientos

Hasta ahora, las funciones que hemos disenado trabajaban siempre sin que lospıxeles sufrieran ningun cambio de posicion. Las transformaciones geometricas vana afectar unicamente a dichas posiciones, sin tener porque cambiar niveles de inten-sidad.

La transformacion de desplazamiento es la transformacion geometrica mas sen-cilla. Simplemente consiste en cambiar las posiciones de los pıxeles en una cantidadfija tanto en la direccion x como en la y. En la figura 3.7 puede verse algunoseejemplos de desplazamientos en cada una de las direcciones.

Figura 3.7: Los desplazamientos unicamente implican cambio de posicion en lospıxeles.

Page 35: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

3.3. DESARROLLO 35

Como ejemplo de implementacion del desplazamiento, a continuacion se muestrael caso de tener que desplazar la imagen un pixel a la derecha. Puede verse en lafigura 3.8 que un desplazamiento de valor N en la direccion x implica situar a lasalida en las posiciones x = (N +1 : Xmax) lo que hay en la entrada en las posicionesx = (1 : Xmax − 1).

Figura 3.8: Ejemplo de desplazamiento en x de valor N = 1.

Ejercicios:

(a) En este apartado se va a implementar una funcion que ofrezca a la salidala misma imagen pasada como parametro a la entrada, pero desplazada unacierta cantidad en las direcciones x e y. El formato de esta funcion sera este:matriz_desplaza = desplaza(matriz_imagen, desp_x, desp_y); donde lavariable matriz_imagen es la variable matricial asociada a la imagen a proce-sar, y desp_x y desp_y son los desplazamientos dados en pıxeles. Debe tenerseen cuenta que los desplazamientos de x positivos seran hacia la derecha, y losdesplazamiento de y positivos seran hacia abajo.

(b) Probar la funcion implementada anteriormente con valores de desplazamientospositivos y negativos indistintamente en cada direccion.

Una vez desarrollada esta funcion serıa sencillo aplicarle al desplazamiento decada pixel funciones lineales, senoidales o de cualquier otro tipo para conseguirdiferentes efectos, pero esto queda mas alla del objetivo de esta practica y por tantono se implementara aquı.

3.3.5. Rotaciones

De forma general para implementar una rotacion de una imagen, la primeraidea que se nos puede ocurrir es transformar las coordenadas cartesianas en polares,anadir el angulo de rotacion al angulo de cada pixel, y volver a coordenadas car-tesianas de nuevo para representar. Este proceso, que conceptualmente es sencillo,matematicamente tiene algunas complicaciones; por ello, no vamos a implementaruna transformacion de giro general. A cambio de esto vamos a utilizar directamentealgunas funciones de MATLAB que nos realizan algunos giros concretos.

Page 36: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

36 PRACTICA 3. OPERADORES PUNTUALES

En este apartado, se probaran las funciones fliplr(), flipud(), el operadortrasponer (′) y la funcion rot90 con la variable matricial que representa a la imagen,comprobandose finalmente los resultados obtenidos, mediante imshow().

• La funcion fliplr() voltea la imagen en horizontal cambiando las columnasde la parte derecha a la izquierda y viceversa.

• La funcion flipud() realiza el volteo vertical.

• El operador trasponer, cambia filas por columnas, lo que significa una rotaciony un volteo.

• Y finalmente, la funcion rot90() gira la imagen en angulo recto.

Todas esta funciones de MATLAB actuan sobre matrices bidimensionales, por lotanto, sera necesario crear nuevas funciones que apliquen las funciones anteriores acada uno de los planos NxM de la matriz tridimensional que representa a la imagenRGB.

Ejercicios:

Asi pues se escribiran cuatro funciones con los siguiente formatos:

(a) matriz_salida = voltea_h(matriz_imagen);

(b) matriz_salida = voltea_v(matriz_imagen);

(c) matriz_salida = trasponer(matriz_imagen):

(d) matriz_salida = rotacion90(matriz_imagen);

Cada una de estas funciones solo necesitaran aplicar las funciones originales deMATLAB a cada canal de la imagen.

3.4. Resultados de la practica

Al final de la practica se realizara una memoria breve y se guardara, junto conlos ficheros de MATLAB pedodos en el directorio “vdfinal” de la cuenta del alumnoen el servidor “teleco”.

Todos los ficheros “*.m” que se han solicitado seran probados mediante la siguien-te funcion de test para comprobar su funcionamiento. Dicha funcion esta disponiblepara su uso por parte de los alumnos, siendo aconsejable que sea comprobado elfuncionamiento de todas las funciones pedidas, de forma previa a la entrega delmaterial para su correccion.

El plazo para entregar esta memoria sera de dos semanas.

function error = puntuales(ficheroImagen)

% ---------------------------------------------------------------% La entrada a esta funcion es un nombre de fichero de imagen con% el formato ’nombrefich.ext’.%% ESTE FICHERO NO SE DEBE MODIFICAR BAJO NINGUN CONCEPTO.% SE DEBEN ADAPTAR LAS FUNCIONES PARA QUE FUNCIONEN CON ESTE% FICHERO TAL Y COMO ESTA.%----------------------------------------------------------------

Page 37: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

3.4. RESULTADOS DE LA PRACTICA 37

matriz = imread(ficheroImagen);

% Rotacionfigure(11);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(rotacion90(matriz));title(’rotacion90’)

figure(10);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(trasponer(matriz));title(’traspuesta’)

figure(9);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(voltea_v(matriz));title(’voltea v => flipud’)figure(8);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(voltea_h(matriz));title(’voltea h => fliplr’)

% Desplazamientosfigure(7);subplot(2,2,1);imshow(desplaza(matriz, 100, 100));title(’x=100, y=100’)

subplot(2,2,2);imshow(desplaza(matriz, -100, 100));title(’x=-100, y=100’)

subplot(2,2,3);imshow(desplaza(matriz, 100, -100));title(’x=100, y=-100’)

Page 38: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

38 PRACTICA 3. OPERADORES PUNTUALES

subplot(2,2,4);imshow(desplaza(matriz, -100, -100));title(’x=-100, y=-100’)

% Contrastefigure(6);subplot(2,2,1);imshow(matriz);title(’Original’)

subplot(2,2,2);imshow(contraste(matriz, 1, 192));title(’m=1, Ymed=192’)

subplot(2,2,3);imshow(contraste(matriz, 4, 128));title(’m=4, Ymed=128’)

subplot(2,2,4);imshow(contraste(matriz, 0.25, 128));title(’m=125, Ymed=128’)

% Posterizacionfigure(5);subplot(2,2,1);imshow(matriz);title(’Original’)

subplot(2,2,2);imshow(posteriza(matriz, 64));title(’Posterizada 64’)

subplot(2,2,3);imshow(posteriza(matriz, 16));title(’Posterizada 16’)

subplot(2,2,4);imshow(posteriza(matriz, 2));title(’Posterizada 2’)

% Conversion a niveles de grisfigure(3);subplot(1,2,1);imshow(matriz);title(’Original’)

subplot(1,2,2);imshow(gris(matriz));title(’gris’)

Page 39: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 4

Procesado digital de imagenes:Operadores locales

4.1. Introduccion

Una vez conocidos los operadores puntuales dentro del procesamiento digital deimagenes, en esta practica, nos vamos a centrar en una serie de operadores algo mascomplejos, que son los operadores locales. Mediante estos operadores, cada pıxelde la imagen de salida es funcion de varios pıxeles, pero no todos, de la imagende entrada. Dentro de estos operadores podemos considerar la convolucion para laaplicacion de filtros FIR.

4.2. Objetivo

El objetivo de esta practica es conocer y aplicar operaciones locales a alguna delas imagenes obtenidas en la practica 1. Mediante esta practica, se tomara contactocon diferentes algoritmos de filtrado digital de senales, y su aplicacion en el ambitode las imagenes.

4.3. Conceptos teoricos previos

4.3.1. Diseno de filtros FIR digitales mediante la digitalizacion derespuestas impulsionales analogicas

Existen muchos metodos de diseno de filtros digitales; unos calculan la respuestaen frecuencia directamente de las caracterısticas que se quiere que tenga el filtro,y otros parten del diseno de filtros analogicos para posteriormente conseguir unequivalente digital.

Dentro del segundo tipo de metodos, se trata de partir de la respuesta impulsionalde un filtro analogico, y discretizarla con una cierta frecuencia de muestreo. Con ellose obtiene la respuesta al impulso de un filtro digital, con la frecuencia de corte digitalmarcada por la frecuencia de corte analogica, y el valor del periodo de muestreo Tsde la digitalizacion. La relacion entre estas tres variables viene dada por la expresionvista en teorıa Ω = ω ∗ Ts. Este es el metodo que utilizaremos en esta practica.

Partimos de la respuesta al impulso de un filtro paso bajo ideal analogico conganancia A y frecuencia de corte analogica fca.

Su respuesta en frecuencia sera la siguiente

39

Page 40: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

40 PRACTICA 4. OPERADORES LOCALES

H(Ω) = A ∗∏(

f

2fca

)

Y su respuesta al impulso la podremos calcular a partir de la Transformada DeFourier Inversa, que es el conocido “sinc”

h(t) = A ∗ 2fca ∗ sinc(2fca ∗ t)

Para pasar esta respuesta impulsional de analogico a digital, lo mas sencillo esconsiderar que el periodo de muestreo es Ts = 1 con lo que tendrıamos Ω = ω y lasfrecuencias de corte analogicas y digitales coincidirıan. De este modo conseguirıamosfiltrar digitalmente una secuencia con la respuesta en frecuencia siguiente

H(ejω) = A ∗∏ (

fd

2fcd

)

convolucionando la secuencia de entrada con la respuesta impulsional.

h[n] = A ∗ 2fcd ∗ sinc(2fcd ∗ n)

La respuesta impulsional h[n] anterior, como sabemos, tiene una duracion infini-ta, y ademas no es causal. Al tener una duracion infinita, el numero de operacioneshace que sea imposible la convolucion. Una forma posible de conseguir una respuestaimpulsional finita es recortar esta respuesta al impulso, quedandonos con la partecentral. Esto se muestra graficamente en la figura 4.1. Cuanto mas larga sea la ven-tana que se aplique, mas se parecera la respuesta impulsional real a la ideal, y portanto, mas se acercara la respuesta del filtro digital a la respuesta ideal.

Figura 4.1: Mediante el enventanado rectangular limitamos la duracion de la res-puesta al impulso.

El hecho de que la respuesta impulsional recortada no sea causal se puede solu-cionar simplemente retardandola, de manera que la primera muestra no nula, sea lade ındice n = 0. Esto unicamente producira, como plantean las propiedades de lossistemas lineales e invariantes, un retardo a la salida

De esta manera conseguimos una respuesta al impulso que no es la verdaderapero que se puede aproximar mucho a ella, todo lo que queramos, haciendola maslarga. La utilizacion de la ventana rectangular (llamada ası por su forma constanteen el intervalo central, y nulo en el resto) elimina las oscilaciones del espectro en losextremos del sinc, produciendo un efecto llamado “Efecto Gibbs” que se observa enla figura 4.2.

Para minimizar este “Efecto Gibbs” diversos autores han probado diferentesformas de enventanado que ofrecen diferentes caracterısticas de filtrado. Algunas deestas formas de ventana tienen los nombres de “Ventana Triangular”, “Ventana de

Page 41: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

4.3. CONCEPTOS TEORICOS PREVIOS 41

Figura 4.2: El Efecto Gibbs es evidente en filtrados paso bajo implementados conenventanados rectangulares.

Hamming”, “Ventana de Hanning” y pueden verse en la bibliografıa aconsejada enla teorıa. Un ejemplo de enventanado Hamming puede verse en la figura 4.3

Figura 4.3: El enventanado Hamming suaviza la terminacion de la ventana y mini-miza el efecto Gibbs.

Las respuestas al impulso finitas h’[n] a partir de las respuestas impulsionalesinfinitas se obtendran mediante el producto muestra a muestra de dicha respuestaal impulso infinita h[n] con la ventana correspondiente W[n].

hi[n] = h[n] ∗W [n]

En el filtrado por convolucion de senales unidimensionales, la amplitud de larespuesta al impulso afecta a la amplitud de la senal de salida filtrada. Esto enimagenes supone un incremento en la luminosidad de la imagen, que se puede evitarhaciendo que la respuesta impulsional del filtro cumpla la expresion

∞∑n=−∞

h[n] = 1

4.3.2. Aplicacion de la propiedad de separabilidad de la Transfor-mada de Fourier Bidimensional

La propiedad de separabilidad de la Transformada de Fourier Multidimensionalindica que si una senal multidimensional se separable, es decir que si

f(x1, x2, . . . , xn) = f1(x1) ∗ f2(x2) ∗ . . . ∗ fn(xn)

Page 42: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

42 PRACTICA 4. OPERADORES LOCALES

su transformada de Fourier tambien lo es, lo que significa que

F (ejω1 , ejω2 , . . . , ejωn) = F1(ejω1) ∗ F2(ejω2) ∗ . . . ∗ Fn(ejωn)

En el caso bidimensional, consideramos el filtro 2D con la respuesta en frecuenciacon forma rectangular de la figura 4.4, En este caso, la respuesta en frecuencia pode-mos considerarla como una funcion separable, por lo tanto, la respuesta impulsionaldel filtro tambien lo sera como puede verse en la figura 4.5.

Figura 4.4: Respuesta en frecuencia de un filtro paso bajo abrupto bidimensionalcon forma rectangular.

Figura 4.5: La respuesta al impulso del filtro de la figura 4.4 es separable.

Ası pues si queremos filtrar una imagen mediante un filtro paso bajo bidimensio-nal rectangular con frecuencias de corte conocidas seguiremos el siguiente proceso:

• Primero calculamos, aplicando la propiedad de separabilidad de la Transfor-mada de Fourier la respuesta impulsional de cada filtro digital unidimensionalen las direcciones x e y.

• Despues tomamos las respuestas al impulso para cada direccion, y las multi-plicamos entre sı resultando una respuesta al impulso matricial como esta.

h[n1, n2] =

hx[1] ∗ hy[1] hx[2] ∗ hy[1] . . . hx[n] ∗ hy[1]hx[1] ∗ hy[2] hx[2] ∗ hy[2] . . . hx[n] ∗ hy[2]

......

. . ....

hx[1] ∗ hy[m] hx[2] ∗ hy[m] . . . hx[n] ∗ hy[m]

Si hx[n] y hy[n] son vectores columna, como suele ser habitual, esta matriz seconseguirıa mediante el producto matricial siguiente.

h[n1, n2] = hx[n] ∗ hy[m]T

Page 43: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

4.4. DESPLAZAMIENTO EN FRECUENCIA 43

• Finalmente, realizaremos la convolucion entre la imagen y la repuesta impul-sional 2D

En cuanto al tamano de la senal de salida filtrada, para cada una de las dimen-siones se cumple la relacion

Lfiltrada = Loriginal + Tamh[n] − 1

donde Lfiltrada es el tamano de la secuencia final, Loriginal es el tamano de lasecuencia a filtrar y Tam es el tamano de la respuesta al impulso.

Este aumento en el tamano se produce por la operacion de convolucion en losextremos de la secuencia original. Esta caracterıstica se muestra, en el filtrado deimagenes por convolucion, a traves de un contorno en la imagen de salida; contornoque, si se desea, se puede eliminar, quedandonos exclusivamente con la parte centralde la salida.

4.4. Aplicacion de la propiedad de desplazamiento enfrecuencia de la Transformada de Fourier

En ocasiones estamos interesados en disenar un filtro distinto del paso bajo; yasea paso banda, paso alto (4.6), etc. Existen formas directas de implementar estetipo de filtros, pero una posibilidad es, una vez obtenida la respuesta frecuencial deun filtro paso bajo, desplazarla en frecuencia la cantidad deseada f0 (ver figura 4.7.Esto, en virtud de la propiedad de desplazamiento en frecuencia de la Trasformada deFourier, significa multiplicar la respuesta impulsional por una exponencial compleja.

hpa[n] = hpb[n] ∗ ejω0n

Figura 4.6: El filtrado paso alto realza los contornos de os objetos.

Este metodo para pasar de un filtro paso bajo a uno paso alto es muy comodo,ya que ejπ = −1 y ası

ejπn = (−1)n

lo que implica, simplemente, cambiar de signo las muestras impares de la res-puesta impulsional.

Page 44: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

44 PRACTICA 4. OPERADORES LOCALES

Figura 4.7: Implementacion de filtrados paso alto a partir de la propiedad de des-plazamiento en frecuencia.

Al implementar un filtro paso alto a partir de un filtro paso bajo hemos de teneren cuenta lo que pasa con la frecuencia de corte al desplazar el espectro en 0,5. Estoqueda patente en la figura 4.7.

La frecuencia de corte del filtro paso alto fca resultante de este desplazamientono tiene el valor fcb, sino que cumple la expresion fca = 0, 5 − fcb. Esta expresiondebe tenerse en cuenta para el diseno del filtro paso bajo inicial.

La implementacion de un filtro paso banda o banda eliminada puede tambienhacerse de forma directa o mediante combinaciones de filtros paso bajo y paso altodel orden deseado.

4.5. Desarrollo de la practica

Al igual que en la practica anterior, las funciones que se realicen durante estedesarrollo, seran probadas mediante otra funcion test hecha en MATLAB que lasira ejecutando, y mostrara sus resultados automaticamente. Al final de esta practicase puede encontrar el listado de esta funcion de prueba. Como en la vez anterior,se recuerda la necesidad de respetar al maximo los formatos de las funciones que seproponen en cada caso. Ademas, algunas de las funciones pedidas en esta practicase reutilizaran en practicas posteriores, haciendo mas necesario todavıa este respetoa los formatos.

Deben disenarse las funciones con independencia del tamano de la imagen de en-trada, y en aquellos casos en los que sea necesario conocer el tamano, se obtendra estemediante la funcion size()

4.5.1. Implementacion de un filtro FIR paso bajo con enventanadorectangular

Comenzamos la parte practica de esta sesion implementando un filtro paso bajobidimensional para aplicarlo a nuestras imagenes. Para ello utilizaremos el metodode ventanas con una ventana rectangular. Esto va a implicar varios pasos que acontinuacion se recuerdan:

• Para cada direccion, x e y, podemos tener diferentes frecuencias de corte, loque significa que deberemos calcular las respuestas al impulso de los filtrosvertical y horizontal a partir de las frecuencias de corte deseadas.

• Para que las respuestas al impulso que utilicemos en la convolucion sean finitasy causales, deberemos tener en cuenta dos cosas: en primer lugar, recortar

Page 45: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

4.5. DESARROLLO DE LA PRACTICA 45

dichas respuestas impulsionales, haciendolas del tamano deseado, que puedeser distinto para cada dimension; y en segundo lugar, debemos conseguir quela primera muestra no nula sea h[n=0] lo que implica un retardo.

• Finalmente, compondremos la matriz respuesta impulsional bidimensional me-diante el producto de los vectores respuesta al impulso unidimensionales ycalcularemos la convolucion.

El formato de la funcion de MATLAB que se disenara sera el siguiente:

matriz_filtrada = fpb_rect(matriz_imagen, fcx, fcy, tamx, tamy)

donde matriz_imagen es la matriz que representa la imagen de entrada, y lamatriz matriz_filtrada es el resultado del filtrado, fcx y fcy son las frecuencias decorte digitales que se aplicaran y tamx y tamy”los tamanos horizontal y vertical dela ventana que limita en el tiempo la matriz respuesta impulsional.

Para simplificar un poco el trabajo, las tareas que debe hacer esta funcion sonlas siguientes:

(a) Calcular la respuesta impulsional unidimensional del filtrado en la direccion x.

(b) Para evitar cambios en el brillo de la imagen despues de ser filtrada se norma-lizara la respuesta impulsional mediante la operacion en MATLAB

h[n] =h[n]∑Tamx

n=0 (h[n])

Con ello estamos haciendo que la suma de todas las muestras de h[n] tenga elvalor 1, y ası que la convolucion no varıe la luminosidad de la imagen

(c) Repetir los pasos 1 y 2 para la direccion y.

(d) Multiplicar las respuestas al impulso unidimensionales para obtener la matrizrespuesta al impulso bidimensional buscada.

(e) Realizar la convolucion 2D (MATLAB: conv2()), para cada uno de los planosR, G y B de la imagen.

4.5.2. Aplicacion de diversos enventanados para la implementaciondel filtro paso bajo anterior

Un inconveniente de la utilizacion de la ventana rectangular con imagenes es queel Efecto Gibbs es bastante evidente y disminuye considerablemente la calidad de fi-nal de la imagen filtrada. Para minimizar este Efecto Gibbs diversos autores han pro-bado con otras formas de enventanado que ofrecen diferentes caracterısticas de filtra-do. Nosotros aquı vamos a probar las ventanas ”Triangular”, (MATLAB: triang())”Hamming”(MATLAB: hamming()), y ”Hanning”(MATLAB: hanning()). Sus ca-racterısticas teoricas pueden verse en la bibliografıa recomendada en teorıa.

Ası, en este apartado se modificara la funcion fpb_rect() escrita con anterio-ridad para aplicar en cada caso una ventana diferente de las tres anteriores. Lasfunciones a desarrollar tendran los formatos siguientes:

• matriz_filtrada = fpb_tria(matriz_imagen, fcx, fcy, tamx, tamy);

• matriz_filtrada = fpb_hamm(matriz_imagen, fcx, fcy, tamx, tamy);

• matriz_filtrada = fpb_hann(matriz_imagen, fcx, fcy, tamx, tamy);

Page 46: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

46 PRACTICA 4. OPERADORES LOCALES

Cuestion:

(a) Buscar el valor mınimo de frecuencia de corte de un filtro paso bajo que,aplicado simultaneamente en horizontal y en vertical, hace perder la calidadde la imagen de manera evidente.

4.5.3. Implementacion de un filtro paso alto mediante desplaza-miento en la frecuencia de la respuesta al impulso

En este apartado, se escribira una funcion de MATLAB que realice el filtrado pa-so alto de una imagen con una determinada frecuencia de corte. Para ello, en primerlugar, se modificara de nuevo la funcion fpb_rect() de manera que aquı unicamentese tiene que anadir el desplazamiento en frecuencia de dichas respuestas al impulso.

La funcion a implementar tendra el formato siguiente:

matriz_filtrada = fpa_rect(matriz_imagen, fcx, fcy, tamx, tamy);

A continuacion se implementara el mismo filtro paso alto, pero en este caso utilizan-do para ello el enventanado triangular. Ası mismo, se implementara tambien otrafuncion con el formato:

matriz_filtrada = fpa_tria(matriz_imagen, fcx, fcy, tamx, tamy);

Cuestiones:

(a) Comparar los resultados obtenidos con una misma imagen de entrada, conlas funciones fpa_rect() y fpa_tria() utilizando las frecuenicas de cortefcd = 0, 01, fcd = 0, 015 y fcd = 0, 025 y con tamanos de respuesta al impulsode Tamx = Tamy = 41. Indicar si se detecta algun resultado extrano enalguno de los casos.

(b) Buscar el valor mınimo de frecuencia de corte de un filtro paso alto que, apli-cado simultaneamente en horizontal y en vertical, hace perder la calidad dela imagen de manera evidente y comparar este valor con el obtenido en lascuesiones del apartado 4.5.2. Puede sacarse alguna conclusion de este hecho.

4.6. Resultados de la practica

Al final de la practica se realizara una memoria breve comentando los resultadosobtenidos en cada caso, y se guardara, junto con los ficheros de MATLAB en eldirectorio ”vdfinal”de la cuenta del alumno en el servidor ”teleco.uclm.es”

Com en practicas anteriores, se aconseja probar los algoritmos implementadosmediante la funcion de test que se ofrece antes de entregarlos para su correccion. Lafuncion de test que se utilizara para la correcion sera la siguiente.

function locales(n_fichero)

matriz = imread(n_fichero);

% Filtro paso alto con diferentes anchos de banda x e y

Page 47: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

4.6. RESULTADOS DE LA PRACTICA 47

figure(15);imshow(fpa_tria(matriz, .015, 0, 41, 41));title(’Filtro Paso Alto: fcx=0,02, fcy=0, Tamx=Tamy=41’)

figure(14);imshow(fpa_tria(matriz, 0, .015, 41, 41));title(’Filtro Paso Alto: fcx=0, fcy=0.02, Tamx=Tamy=41’)

% Filtro paso alto con iguales anchos de banda x e y

figure(13);imshow(fpa_rect(matriz, .05, .05, 41, 41));title(’Filtro Paso Alto: fcx=fcy=0.05, Tamx=Tamy=41’)

figure(12);imshow(fpa_rect(matriz, .025, .025, 41, 41));title(’Filtro Paso Alto: fcx=fcy=0.025, Tamx=Tamy=41’)

figure(11);imshow(fpa_rect(matriz, .015, .015, 41, 41));title(’Filtro Paso Alto: fcx=fcy=0.015, Tamx=Tamy=41’)

figure(10);imshow(fpa_rect(matriz, .01, .01, 41, 41));title(’Filtro Paso Alto: fcx=fcy=0.01, Tamx=Tamy=41’)

% Filtro paso bajo con ventana de Hanning

figure(9);imshow(fpb_hann(matriz, .1, .1, 41, 41));title(’Hanning: fcx=fcy=0.1, Tamx=Tamy=41’)

% Filtro paso bajo con ventana de Hamming

figure(8);imshow(fpb_hamm(matriz, .1, .1, 41, 41));title(’Hamming: fcx=fcy=0.1, Tamx=Tamy=41’)

% Filtro paso bajo con ventana triangular

figure(7);imshow(fpb_tria(matriz, .1, .1, 41, 41));title(’Triangular: fcx=fcy=0.1, Tamx=Tamy=41’)

% Filtro paso bajo con ventana rectangular

figure(6);imshow(fpb_rect(matriz, .1, .1, 41, 41));title(’Rectangular: fcx=fcy=0.1, Tamx=Tamy=41’)

% Filtro paso bajo con ventana rectangular diferentes anchos de banda

Page 48: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

48 PRACTICA 4. OPERADORES LOCALES

figure(5);imshow(fpb_rect(matriz, .1, .001, 41, 41));title(’Rectangular: fcx=0.1, fcy=0.001, Tamx=41, Tamy=41’)

figure(4);imshow(fpb_rect(matriz, .001, .1, 41, 41));title(’Rectangular: fcx=0.001, fcy=0.1, Tamx=41, Tamy=41’)

%con longitud de 141 muestras tarda MAS de 15 min.%t0 = clock;%figure(3);%imshow(fpb_rect(matriz, .01, .01, 141, 141));%title(’Rectangular: fcx=fcy=0.01, Tamx=Tamy=141’)%T141 = etime(clock,t0)

t0 = clock;figure(2);imshow(fpb_rect(matriz, .01, .01, 41, 41));title(’Rectangular: fcx=fcy=0.01, Tamx=Tamy=41’)T41 = etime(clock,t0)

figure(1);imshow(matriz);title(’Original’)

Page 49: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 5

Procesado digital de imagenes:Operadores globales

5.1. Introduccion

La utilizacion de la convolucion para tareas de filtrado es una solucion teorica-mente correcta, pero en la practica la cantidad de calculos necesarios con respuestasimpulsionales relativamente largas, hacen que este tipo de filtrado sea costoso entiempo de proceso. Para acelerar en lo posible el proceso de filtrado, se recurre adominios transformados en los que la cantidad de calculos a realizar disminuye, ycon ello el tiempo de procesamiento.

En el caso de las imagenes se recurre al dominio de la frecuencia. Este trabajoen el dominio de la frecuencia implica el calculo de la Transformada de Fourier Bi-dimensional de la imagen que queramos procesar. Dicha Transformada de Fourier esuna funcion continua, que necesita ser discretizada para poder utilizarla en el orde-nador. De esta manera, se hace necesario el desarrollo de la Transformada Discretade Fourier (DFT - Discrete Fourier Transform).

Para el calculo de la DFT de secuencias, se han desarrollado algoritmos de calculorapido que forman un conjunto al que se llama globalmente Transformada Rapida deFourier (FFT - Fast Fourier Transform). La utilizacion de la FFT con secuencias deduracion infinita tiene algunas complicaciones, puesto que para calcular la FFT deuna secuencia debemos conocer toda ella, o en su caso trocearla, y trabajar con lostrozos independientemente. Estas complicaciones no vienen al caso en esta practica,ya que nosotros vamos a tratar con imagenes de tamano finito, de las que conocemostodos sus pıxeles.

Como la FFT son algoritmos en los que el calculo de cada coeficiente de latransformada se hace a partir de toda la informacion a transformar, su uso esta den-tro de lo que llamamos operadores globales en el ambito del tratamiento digital deimagenes.

5.2. Objetivos

Los objetivos de esta practica son, por un lado, analizar la informacion quecontiene la FFT de una imagen, y por otro aplicar esta transformada como operadorglobal a alguna de las imagenes obtenidas en la practica 1. En esta practica, tambiense trataran diferentes procesos de filtrado digital de imagenes.

49

Page 50: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

50 PRACTICA 5. OPERADORES GLOBALES

5.3. Desarrollo

Esta practica, esta dividida en dos partes. En la primera no habra que desa-rrollar ningun algoritmo, sino que se tratara exclusivamente de visualizar diferentesinformaciones, y sacar conclusiones a partir de ellas. En la segunda parte, habra quedesarrollar alguna funcion de MATLAB para filtrar imagenes en el dominio de la fre-cuencia. Para esta segunda parte, como ya estamos acostumbrados, se dispondra deuna funcion de test para comprobar que todas las funciones estan hechas de acuerdocon los formatos pedidos. El listado de esta funcion de test aparece en el anexo deeste enunciado. Ademas, alguna de las funciones pedidas se podran reutilizar en lasiguiente practica sobre diezmado e interpolacion.

De nuevo se insiste en la necesidad de disenar las funciones con independenciadel tamano de la imagen de entrada, y en aquellos casos en los que sea necesarioconocer el tamano para procesar, este se obtendra mediante la funcion "size()".

5.3.1. Visualizacion de la informacion contenida en la FFT

En este apartado, se va a analizar la informacion contenida en la Transformadade Fourier de una imagen. Este analisis se realizara a partir de la funcion cont_fft()que se ofrece desarrollada a continuacion.

function cont_fft(n_fichero)

matriz = imread(n_fichero);tam = size(matriz);mat_fft=fft2(matriz);

figure(5);elimina_modulo = mat_fft ./ abs(mat_fft);imagen = ifft2(elimina_modulo);imagen_normalizada = imagen / max(max(max(imagen)));imagen_positiva = max(0, real(imagen_normalizada));imagen_final = contraste(imagen_positiva*255, 0, 5, 0, 255);imshow(real(imagen_final));title(’Imagen obtenida de la fase de la FFT: CONTRASTE REALZADO’);

figure(4);imagen = ifft2(abs(mat_fft));imshow(uint8(real(imagen)));title(’Imagen obtenida a partir del modulo de la FFT’);

figure(3);imagen = ifft2(imag(mat_fft));imshow(uint8(real(imagen)));title(’Imagen obtenida a partir de la parte imaginaria de la FFT’);

figure(2);imagen = ifft2(real(mat_fft));imshow(uint8(real(imagen)));title(’Imagen obtenida a partir de la parte real de la FFT’);

Page 51: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

5.3. DESARROLLO 51

figure(1);x=linspace(0,1,tam(2));y=linspace(0,1,tam(1));mesh(x, y, log10(abs(mean(mat_fft, 3))));title(’Visualizacion del log10 del modulo de la FFT2 de la imagen’);

A esta funcion se le debe pasar como parametro el nombre de un fichero deimagen, y de esta imagen se muestra la siguiente informacion:

• En la figura 1 se visualiza el modulo en unidades logarıtmicas de la Transfor-mada de Fourier de la imagen.

• En la figura 2 aparece la informacion de una imagen contenida en la parte realde su FFT. Dicho de otra manera, se representa el resultado de realizar la FFTinversa a la parte real del espectro asociado a la imagen

• En la figura 3 aparece la informacion contenida en la parte imaginaria de laFFT.

• En la figura 4 se muestra el resultado de eliminar la informacion de fase de laFFT conservando exclusivamente la informacion de modulo.

• Por ultimo, en la figura 5 se muestra el resultado de eliminar la informaciondel modulo de la FFT de la imagen, quedandonos exclusivamente con la infor-macion de la fase. En esta visualizacion se ha tenido que aumentar el contrastepara hacer visibles todos los detalles contenidos en el resultado.

Ejercicios:

(a) En la memoria final se debe explicar de forma general el funcionamiento de lafuncion cont_fft().

(b) Comenta el resultado contenido en la figura 1: Indica en que margenes defrecuencia se encuentra la mayor cantidad de informacion de una imagen.

(c) Observa la figura 2, y trata de explicar el resultado obtenido. Para ello se debetener en cuenta las propiedades de simetrıa de la Transformada de Fourier, yque

Re[X(ejω)

]=

12

[X(ejω) + X∗(ejω)

]

(d) Observa la figura 5, e indica que informacion esta contenida sobre todo en lafase de una imagen. Se debe tener presente que errores en la fase impleicarıanerrores en dicha informacion.

(e) A la vista de las figuras 2, 3, 4 y 5, indica si para recuperar una imagencorrectamente es suficiente con su informacion de modulo. ¿Es suficiente conla informacion de fase?, ¿y con la parte real?, ¿y con la imaginaria?

Page 52: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

52 PRACTICA 5. OPERADORES GLOBALES

5.3.2. Filtrados en la frecuencia: Eliminacion de componentes fre-cuenciales

En los siguientes apartados de esta practica se implementaran y se probaran algu-nos algoritmos para comprobar los efectos que produce el filtrado de imagenes en eldominio de la frecuencia. Concretamente seran tres algoritmos, cuyas caracterısticasse analizan en los siguientes parrafos.

La primera opcion que se nos puede ocurrir para filtrar una senal en el dominiode la frecuencia, es obtener su Transformada de Fourier, y eliminar aquellas compo-nentes frecuenciales que no nos interesen. Esta va a ser la idea del primer algoritmoa desarrollar con MATLAB.

Ejercicio:

(a) Se implementara una funcion que ponga a cero aquellas componentes de laTransformada Discreta de Fourier bidimensional que esten fuera de la bandade paso. El formato de la funcion sera este:

matriz_filtrada = fpb_fft_abr(matriz_entrada, fcx, fcy);

5.3.3. Filtrados en la frecuencia: Eliminacion de componentes sua-vizada

Con la solucion anterior estamos tratando de implementar un filtro no causalque serıa el que proporcionarıa un filtrado abrupto ideal. Como puede comprobarse,el resultado no es el deseado, produciendose una cierta distorsion en la fase, lo quegenera una serie de contornos repetidos. Para evitar estos efectos, podemos tratar derealizar un filtrado del mismo tipo pero menos abrupto, haciendo que la respuestaen frecuencia caiga con una pendiente finita, a ambos lados de la frecuencia de corte.En la siguiente figura se trata de representar esta idea para el caso unidimensional.

Esta segunda opcion se ofrece implementada debido a su complejidad. En estecaso, solo se necesitara comprobar el funcionamiento de esta idea. Su formato eseste:

matriz_filtrada = fpb_fft_sua(matriz_entrada, fcx, fcy, tranx, trany);

donde los valores de las transiciones entre la banda de paso y la atenuada en cadadireccion “tranx” y “trany” estan dados en tanto por uno del margen frecuencial res-pectivamente en horizontal y vertical. Estas transiciones estan colocadas de maneraque la frecuencia de corte del filtro caiga en el centro de la zona de transicion, por lotanto el valor maximo de las transiciones debe ser menor que dos veces la frecuenciade corte utilizada. El listado de esta funcion se ofrece en un fichero aparte.

Ejercicio:

(a) Comentar en la memoria final los resultados obtenidos al aplicar esta funcioncon diferentes frecuencias de corte y diferentes tamanos de transicion.

Page 53: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

5.4. RESULTADOS DE LA PRACTICA 53

5.3.4. Filtrados en la frecuencia: Filtrado a partir de la respuestaen frecuencia de un filtro

Una vez hechas las pruebas anteriores, debemos entrar en la realizacion de unfiltrado mas parecido a la realidad, es decir, calcular una respuesta en frecuencia apartir de la FFT de la respuesta al impulso, y multiplicarla miembro a miembro porla Transformada de Fourier de la imagen.

En este apartado, se implementara una funcion en MATLAB con el siguienteformato:

matriz_filtrada = fpb_fft_tria(matriz_entrada, fcx, fcy, tamx, tamy);

Esta funcion realizara las operaciones que se indican a continuacion.

(a) En primer lugar calculara la respuesta al impulso h[n1,n2] con frecuencias decorte fcx y fcy y tamanos tamx y tamy en cada una de las direcciones. Para ellose utilizara un enventanado triangular, por lo tanto es aconsejable utilizar comopunto de partida la funcion fpb_tria() desarrollada en la practica anterior.

(b) Seguidamente, se calculara la Transformada de Fourier bidimensional de laimagen, y la Transformada de Fourier Bidimensional de la respuesta impulsio-nal. Esta ultima debe tener el mismo tamano de la imagen para posteriormentepoder realizar el producto elemento a elemento de ambas (ver la informacionsobre la funcion fft2() en la ayuda de MATLAB).

(c) Finalmente hemos de compensar el retardo producido por la forma de uso de larespuesta impulsional. Como al hacer la FFT de la respuesta al impulso, estaestaba retardada con el fin de hacer causal el sistema, este retardo aparecera ala salida como distorsion de desplazamiento. Esta distorsion habra que com-pensarla para ofrecer como resultado la imagen sin desplazamientos. Para estacorreccion del retardo, puede utilizarse la funcion de MATLAB circshift().

5.4. Resultados de la practica

Al final de la practica se realizara una memoria breve comentando los resultadosobtenidos para distintos parametros, y se guardara, junto con los ficheros realiza-dos en MATLAB en el directorio ”vdfinal”de la cuenta del alumno en el servidor“teleco.uclm.es”.

La duracion prevista para esta practica es de dos semanas.Como en practicas anteriores, en la correccion de las practicas se utilizara una

funcion de test para comprobar el correcto funcionamiento de las funciones pedidas.Para ello se utilizara la funcion que se expone a continuacion. Una vez mas, serecomienda que se compruebe el funcionamiento de los algoritmos disenados antesde su entrega para corregir

function globales(n_fichero)

matriz = imread(n_fichero);

figure(5);imshow(fpb_fft_tria(matriz, .1, .1, 11, 11));title(’Filtrado en frecuencia: enventanado triangular tama~no 11.’);

Page 54: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

54 PRACTICA 5. OPERADORES GLOBALES

figure(4);imshow(fpb_fft_tria(matriz, .1, .1, 41, 41));title(’Filtrado en frecuencia: enventanado triangular tama~no 41.’);

figure(3);imshow(fpb_fft_tria(matriz, .1, .1, 141, 141));title(’Filtrado en frecuencia: enventanado triangular tama~no 141.’);

figure(1);imshow(fpb_fft_abr(matriz, .1, .1));title(’Filtrado en la frecuencia con corte abrupto.’);

Page 55: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 6

Procesado digital de imagenes:Diezmado e interpolacion

6.1. Introduccion

En las dos practicas anteriores se ha analizado la problematica existente en elfiltrado de imagenes, y en esta trabajaremos con algunos de los filtros disenadoshasta aquı aplicandolos a los procesos de diezmado e interpolacion.

El diezmado trata de reducir la frecuencia de muestreo asociada a una secuenciade muestras, dividiendola por un factor entero. Para entender mejor este proceso, lomejor es verlo a traves de un ejemplo. Si queremos reducir la frecuencia de mues-treo fs por un factor entero M , lo que tendremos que hacer es eliminar de nuestrasecuencia M − 1 de cada M muestras. Con ello conseguiremos otra secuencia, querepresentara a la misma senal analogica que la anterior, pero como si la hubiesemosmuestreado a una frecuencia

f ′s =fs

MEn el proceso de diezmado, de la misma manera que en el proceso de muestreo,

hemos de evitar que en la secuencia obtenida aparezca el efecto del solapamientoespectral. Es decir, hemos de tener cuidado que f ′s ≤ 2 ∗B, donde B es el ancho debanda de la senal analogica. En el caso que esto no sea cierto, tendremos que aplicara la entrada del diezmador un filtro paso bajo digital.

La interpolacion es el proceso contrario del diezmado en el sentido que, lo quetratamos es de aumentar la frecuencia de muestreo por un valor entero, obteniendoa la salida un numero de muestras “L” veces mayor que en la entrada; donde “L” esel factor de interpolacion. Si lo queremos ver a traves de un ejemplo, lo que tenemosque hacer es insertar L−1 muestras entre cada dos de la secuencia original. Con ello,estamos obteniendo una nueva secuencia que representa a la misma senal analogicapero como si la hubieramos tomado con una frecuencia de muestreo f ′s = L ∗ fs.Al tener una frecuencia de muestreo mayor a la salida de interpolador, podemosasegurar que en el proceso de interpolacion nunca se produce solapamiento espectral.

El proceso de interpolacion se divide conceptualmente en dos partes: una primeraen la que se introducen L − 1 muestras de valor cero entre cada dos muestras deentrada, y una segunda parte que es un filtrado paso bajo con frecuencia de corte

fcd =1

2L

y ganancia en amplitud G = L.

55

Page 56: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

56 PRACTICA 6. DIEZMADO E INTERPOLACION

6.2. Objetivos

Esta practica tiene dos objetivos. El primero es reconocer, mediante visualizacionen el dominio espacial, la existencia de solapamiento espectral despues de realizar unproceso de diezmado sobre una imagen. En segundo lugar se aplicara la tecnica deinterpolacion a la implementacion de un zoom digital sencillo aplicable a imagenes.

6.3. Desarrollo

En esta practica se implementaran en Matlab los algoritmos de diezmado e in-tepolacion y se reutilizaran las funciones de filtrado implementadas en las practicasanteriores. Como siempre, se dispondra de una funcion de test para comprobar quetodas estan hechas de acuerdo con los formatos pedidos. El listado de esta funcionde test aparece en el apartado final de esta practica.

Asimismo, se recuerda la necesidad de disenar las funciones con independenciadel tamano de la imagen de entrada, y en aquellos casos en los que sea necesarioconocer el tamano de dicha imagen para procesarla, este se obtendra mediante lafuncion size().

6.3.1. Diezmado de imagenes

La funcion a implementar en este apartado realizara un diezmado por M , consi-deradolo como exclusivamente la eliminacion de las M − 1 muestras de cada M . Elformato de la funcion sera el siguiente:

matriz_salida = diezma(matriz_entrada, M);

donde M es el factor de diezmado.Como es de esperar el tamano en pıxeles de la imagen de salida sera M veces

menor, por tanto esta imagen aparecera mas pequena en la pantalla. Esto es porqueMatlab dedica el mismo tamano de pıxel a la imagen de entrada que a la de salida.En la realidad, el diezmado debe llevar consigo un cambio en el periodo de muestreoy por tanto en la recuperacion, siendo el periodo de recuperacion a la salida T ′s =Ts ∗ M . Esto, en sonido implicarıa una separacion temporal de las muestras, y enimagen supondrıa que cada pixel tenga un tamano M veces mayor. De esta manera,el tamano de la imagen no variarıa debido al proceso de diezmado.

Como puede comprobarse, el filtrado previo al diezmado se ha considerado in-dependiente, de forma que podremos aplicarlo o no a nuestra conveniencia. Concre-tamente, en este apartado se pretende comparar los resultados del caso en el queaplicamos filtro antisolapamiento y del caso en el que no.

Ejercicio:

(a) Comparar el resultado de diezmar por 10 una imagen de las obtenidas en lapractica 1 directamente con la funcion diezma(), y el resultado de el mis-mo diezmado, pero habiendo aplicado previamente el filtro antisolapamientocorrespondiente. Para realizar el filtrado, lo propio es utilizar alguna de las fun-ciones de filtrado desarroladas en las dos practicas anteriores. Las conclusionesque se obtengan de esta comparacion se incluiran en la memoria.

Page 57: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

6.4. INTERPOLACION 57

6.4. Implementacion de un zoom digital aplicando in-terpolacion

En este apartado se implementara un zoom digital basado en un interpolador.El interpolador, como sabemos se compone de dos bloques funcionales diferentes.

• El primer bloque se dedica a insertar L − 1 muestras de valor “0′′ entre cadados muestras de entrada. Esto, aplicado a una imagen implica insertar L − 1ceros en la direccion horizontal y L− 1 ceros en la vertical.

• El segundo bloque es un filtro paso bajo que para imagenes sera bidimensionaly que tendra como frecuencias de corte

fcx = fcy =1

2L

y como ganancia en amplitud, recordando que estamos interpolando en las dosdirecciones, tendremos G = L2.

La funcion de MATLAB a implementar tendra el formato siguientematriz_salida = zoom(matriz_entrada, L);donde L es el factor de interpolacion.Esta funcion debera ampliar la parte central de la imagen, de tamano (Xmax/L)∗

(Ymax/L) eliminando todo lo demas. En esta expresion, Xmax corresponderıa altamano horizontal de la imagen, e Ymax corresponderıa al tamano vertical de laimagen. Al interpolar la porcion de imagen descrita, el tamano de la imagen finalsera el mismo que el de la imagen original pero ampliando la region elegida.

El filtrado paso bajo se puede realizar mediante cualquiera de las funciones defiltrado vistas en las dos practicas anteriores, aunque es aconsejable probar con unode los enventanados no rectangulares para obtener una mayor calidad. Por otra partela colocacion de la multiplicacion por el factor de ganancia tambien debe cuidarsepara que no se produzca ningun efecto de redondeo de la etapa de filtrado.

6.5. Resultados de la practica

Al final de la practica se realizara una memoria breve comentando los resultadosobtenidos en cada apartado, y se guardara, junto con los ficheros de MATLAB enel directorio ”vdfinal”de la cuenta del alumno en el servidor ”teleco.uclm.es”.

La duracion prevista para esta practica es de 1 semana.A continuacion se muestra la funcion de test que se utilizara para comprobar el

correcto funcionamiento de los algoritmos. Es aconsejable que dicho funcionamientosea comprobado previamente a la entrega del material para su correccion.

function interpola(n_fichero)

matriz = imread(n_fichero);tam = size(matriz);

figure(6)imshow(zoom(matriz, 8));title(’Imagen ampliada por 8.’);

Page 58: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

58 PRACTICA 6. DIEZMADO E INTERPOLACION

figure(5)imshow(zoom(matriz, 5));title(’Imagen ampliada por 5.’);

figure(4)imshow(zoom(matriz, 4));title(’Imagen ampliada por 4.’);

figure(3)imshow(zoom(matriz, 2));title(’Imagen ampliada por 2.’);

figure(2);filtrada = fpb_tria(matriz, .05, .05, 41, 41);recorte = filtrada(21:20+tam(1), 21:20+tam(2), :);

subplot(1,2,1);imshow(diezma(recorte, 10));title(’Imagen diezmada por 10 con filtro fcd=0,5/M.’);

subplot(1,2,2);imshow(diezma(matriz, 10));title(’Imagen diezmada por 10 sin filtro.’);

figure(1);imshow(matriz);title(’Imagen original.’);

Page 59: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 7

Interfaces de comunicacion anivel de estudio

7.1. Introduccion

Con posterioridad a la aplicacion de la tecnologıa digital en diversas tareas delcampo de la television, se hizo necesario conformar un modo de transmision digitaldel vıdeo. De esta manera, la comunicacion entre los equipos de estudio se realizarıatambien en el dominio digital; evitando la cascada de conversiones D/A y A/D queexistıan en la cadena de produccion, considerando la transmision analogica. Ası,en 1986 la Union Internacional de Telecomunicaciones publico la recomendacionUIT-R BT.656. En ella se definıa el interfaz paralelo, para la transmision digitalde informacion de vıdeo codificado segun la norma 4:2:2, dentro de los estudios. Enesta primera version de la recomendacion, ademas se describio la estructura del trende datos asociado a este interfaz. Anos mas tarde se anadirıa a esta recomendacionla definicion del interfaz serie. Este presenta como ventajas fundamentales el bajocoste del cable, y la posibilidad de cubrir distancias mucho mas grandes, a cambiode una ligera complicacion en la electronica asociada.

Dentro del tren de datos definido en la recomendacion UIT-R BT.656 se hablade determinados espacios libres que estan asociados a los espacios de sincronismo delvıdeo analogico. Estos espacios pueden ser utilizados para transmitir, opcionalmente,informacion de sonido u otras informaciones auxiliares, aprovechando ası dichoshuecos. Para ello, la UIT elaboro en 1997 las recomendaciones UIT-R BT.1305,y 1364, en las que se plasma el formato que deben tener los datos a multiplexarcon la informacion de video. No obstante, dentro de un estudio es habitual que lainformacion de vıdeo y audio dentro de los estudios viaje por vıas independientes,puesto que ademas llevan consigo procesos tambien distintos.

Posteriormente, la definicion de la television digital de alta definicion, que llevaconsigo un cambio en el formato de la pantalla y una mejora en la resolucion dela imagen, hizo necesaria la especificacion de unos interfaces de comunicacion apro-piados. Estos interfaces, se definieron en la recomendacion UIT-R BT.1120. Paraeste caso de television de alta definicion tambien se definio el formato de las infor-maciones auxiliares, como el audio, que se transmitirıan por multiplexacion en eltiempo, junto con la informacion de video. Esta definicion aparece a su vez en larecomendacion UIT-R BT.1365.

Las recomendaciones UIT-R BT.1305, 1364 y 1365 no van a ser objeto de nuestroestudio, pero su conocimiento puede ser interesante en diversas aplicaciones y por

59

Page 60: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

60 PRACTICA 7. INTERFACES DE COMUNICACION

ello se mencionan aquı.

7.2. Objetivos y motivacion

El conocimiento de las formas de transmision de la informacion de vıdeo en elambito de los estudios de television se considera basico para un buen aprovecha-miento de esta asignatura. Por ello, se ha creıdo conveniente utilizar la tecnica delestudio dirigido, con el fin de que, a traves de el y de la consulta de normativasreales, se descubran y analicen los aspectos basicos involucrados en la transmisionde la senal de vıdeo a nivel de un estudio de television.

En el siguiente apartado referente al plan de actividades, se encontrara el camino,a traves de las citadas normas, para conseguir el objetivo que se persigue.

Es conveniente advertir que no se trata de estudiar las normas en su totalidad, nicomprenderlas al 100 %. El analisis exhaustivo de estas normas llevarıa probablemen-te un tiempo considerable debido al lenguaje tecnico utilizado, y a la profundidadcon que estan planteados ciertos conceptos. Lo que se trata en este trabajo es delocalizar y extraer aquella informacion basica que nos permita tener una vision ge-neral de los distintos procesos involucrados en la transmision de las senales digitalesde vıdeo. Por ello, se realizara una tarea de busqueda de los datos concretos que sepiden en cada momento, se elaborara un cuadro resumen con los datos obtenidos, yfinalmente se pediran unas conclusiones.

7.3. Forma de evaluacion

La evaluacion de esta practica se realizara en dos fases. Por una parte, se eva-luara el cuestionario individual presentado por cada alumno con los resultados pe-didos; y por otra parte, en los examenes de Junio y Septiembre, aparecera algunapregunta o conjunto de preguntas con un valor no superior al 10 %, referentes a estetrabajo.

Este trabajo sera entregado en papel para su evaluacion, con el fin de que sepuedan senalar individualmente aquellas preguntas que esten mal contestadas, oque deban ser revisadas. Para realizar esta practica se dispondra de dos semanascontadas a partir de la entrega del enunciado. El ultimo dıa de practicas de lasegunda semana se recogeran todas las memorias para su evaluacion.

En este trabajo, se encontraran preguntas de localizacion de datos, marcadas conel signo (L), y preguntas de razonamiento marcadas con el sımbolo (R). Para aprobaresta practica, sera obligatoria la contestacion correcta del 90% de las preguntasteoricas marcadas con ”(L)”. En esta cantidad de respuestas correctas estara labarrera del 5. Una vez superada esta barrera, las calificaciones entre el 5 y el 10vendran determinadas, en primer lugar por el 10 % restante de preguntas teoricas (L),en segundo lugar, por la totalidad de las preguntas de razonamiento, que supondranun 25 % de la nota final; y finalmente, el apartado de tabla resumen y conclusiones,que tendra un peso del 20 %. Una vez corregidas las memorias, estas seran devueltasa los alumnos para el estudio del examen. A aquellos que no hayan superado el 90%de las preguntas (L) tendran un segundo plazo para corregirlas y volver a entregarla memoria.

Page 61: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 61

7.4. Plan de actividades

En este apartado se atendera sobretodo a la norma UIT-R BT.656 referente alos interfaces de comunicacion para sistemas de television de 525 y 625 lıneas quefuncionan en el nivel 4:2:2 de la recomendacion UIT-R BT.601 parte A; es decirsistemas con formatos de pantalla 4/3 y 16/9 muestreados a 13,5 Mhz. Tambien sededicara un tiempo, aunque menor, a la recomendacion UIT-R BT.799 que se refierea sistemas que utilizan el nivel 4:4:4 de codificacion, y por ultimo a la recomendacionUIT-R BT.1120 para senales de estudio de television de alta definicion.

7.4.1. Interfaz de comunicacion para television mejorada en el nivel4:2:2: Recomendacion UIT-R BT.656

Antes de comenzar, hemos de leer con atencion las consideraciones que se expo-nen y la recomendacion inicial.

(L) 1.- ¿A que sistemas esta dirigida esta recomendacion?

En la introduccion se divide el contenido de la recomendacion en tres partes, unareferente al tren de datos comun a los dos interfaces, las otras dos referentes a lascaracterısticas concretas de los interfaces paralelo y serie.

7.4.2. Formato del tren de datos comun a los dos interfaces

(L) 2.- ¿Que tipo de interconexion entre equipos proporcionan estos interfaces?

(L) 3.- ¿Que tipo de informacion binaria pueden transportar estos interfaces?

Page 62: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

62 PRACTICA 7. INTERFACES DE COMUNICACION

En el cuadro 1 del apartado 2 se definen los intervalos de tramas.(R) 4.- Completa la tabla 7.1, considerando unicamente los sistemas de 625 lıneas,

en el que se muestran los inicios y finales de los intervalos de supresion de trama yde vıdeo activo para un cuadro completo.

Inicio FinCampo 1 Supresion Lınea 1

Vıdeo activoSupresion Lınea 312

Campo 2 Supresion Lınea 313Vıdeo activoSupresion Lınea 625

Tabla 7.1: Inicio y final de intervalos de supersion vertical.

(L) 5.- En el apartado 2.2 de la recomendacion se reservan ciertos codigos parafines de identificacion de datos. Expresa estos datos en codigo hexadecimal.

(L) 6.- Indica a que velocidad se transmiten los datos, y de que manera se mul-tiplexan en el tiempo.

(L) 7.- En el apartado 2.4 se establecen dos codigos de temporizacion llamadosSAV (Start of Active Video) y EAV (End of Active Video). En que lugares del trende datos van situados.

Page 63: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 63

(L) 8.- Indica la estructura general en bits de estos codigos para interfaces de 10bits.

(R) 9.- Rellena la tabla 7.2 indicando en que lugares se situan las distintascombinaciones de los bits F, V, y H.

F V H Posiciones en las que se encuentra0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1

Tabla 7.2: Bits F, V y H de los codigos SAV y EAV.

(L) 10.- Explica que mision tienen los bits P.

(R) 11.- ¿Que sentido puede tener enviar codigos 80h, 10h, 80h, 10h durante lasupresion de trama.

Page 64: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

64 PRACTICA 7. INTERFACES DE COMUNICACION

Interfaz paralelo

Se trata en la parte 2 de esta recomendacion.(L) 12.- ¿Que estructura debe tener el medio de transmision (cable y conectores)

que utiliza este interfaz?

(L) 13.- Indica la frecuencia a la que debe oscilar el reloj de transmision.

(R) 14.- El apartado 3 hace referencia a posibles variaciones en la fase del reloj yestablece un lımite maximo para el funcionamiento efectivo del interfaz. ¿Sabrıas de-cir porque este lımite maximo no es adecuado para la temporizacion de la conversionD/A o la conversion serie-paralelo?

Page 65: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 65

(R) 15.- En la figura 4 de la recomendacion se habla de una herramienta sencillapara la medida de la calidad en la comunicacion. Esta herramienta es el ”diagramade ojos”. Indica que instrumento se puede utilizar para tomar estas medidas, y deque manera se utiliza con este proposito.

(L) 16.- El apartado 5 habla de detalles mecanicos del conector, pero solo nosvamos a detener en el tipo de conector que se utiliza en el interfaz paralelo. ¿Cuales?

Interfaz serie

Se describe en la parte 3 de esta recomendacion.(L) 17.- En el apartado 5 se describe el medio de transmision. ¿Que estructura

debe tener el medio de transmision que utiliza este interfaz?

Page 66: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

66 PRACTICA 7. INTERFACES DE COMUNICACION

(L) 18.- Si no hay posibilidad de una senal de reloj expresamente dispuesta eneste medio de transmision, de que manera se consigue la sincronizacion del emisory el receptor.

(R) 19.- Indica a que frecuencia de bit se envıan los datos mediante este interfaz.

(L) 20.- En el apartado 6.3.3 se habla de caracterısticas del conector utilizadoen el interfaz electrico, pero solo nos vamos a detener en el tipo de conector que seutiliza. ¿Cual es?

Page 67: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 67

7.4.3. Interfaz de comunicacion para television mejorada en el nivel4:4:4: Recomendacion UIT-R BT.799

Esta recomendacion tiene una estructura similar a la 656 vista anteriormente porlo tanto solo nos detendremos en aquellos detalles especıficos que las diferencian.

(L) 1.- En las consideraciones y la recomendacion previa, se trata de justificar elestablecimiento de esta norma. Indica a que tipo de informacion va orientado esteinterfaz.

(L) 2.- En la introduccion general de esta recomendacion se plantea la solucionque se adopta para implementar el interfaz para el nivel 4:4:4, a partir del desarro-llado para el nivel 4:2:2. ¿Cual es esta solucion?

(L) 3.- ¿Que senales de vıdeo se pueden transmitir por los interfaces a los que serefiere esta norma?

Page 68: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

68 PRACTICA 7. INTERFACES DE COMUNICACION

Formato del tren de datos

Se describe en la parte 1 de esta recomendacion.(L) 4.- En los apartados 2.3 y 2.4 se explica de que manera se multiplexan los

datos en el tiempo para la transmision. Indica que datos y en que orden se transmitenpor cada uno de los enlaces.

(L) 5.- Comenta las similitudes que veas en los codigos de referencia de tempo-rizacion respecto del interfaz descrito en la recomendacion 656.

Interfaz paralelo

Se describe en la parte 2 de esta recomendacion(L) 6.- Una caracterıstica propia de este interfaz es la relacion de temporizacion

entre los dos enlaces, que aparece en el apartado 3. Indica el retardo maximo que sepermite entre ambos.

(L) 7.-Comenta las similitudes que encuentres en la senal de reloj respecto delinterfaz descrito en la recomendacion 656.

Page 69: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 69

Interfaz serie

Se describe en la parte 3 de esta recomendacion.(L) 8.- Tambien en el interfaz serie se especifica la relacion de temporizacion

entre los dos enlaces en el apartado 2. ¿Cual es el retardo maximo que se permite?.

Page 70: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

70 PRACTICA 7. INTERFACES DE COMUNICACION

7.4.4. Interfaz de comunicacion para television de alta definicion:Recomendacion UIT-R BT.1120

La recomendacion UIT-R BT.1120, en concordancia con la 709 de codificacion dela senal de television de alta definicion, establece dos tipos de interfaces: en la parte1 se describe un interfaz adecuado a la codificacion de television convencionales,haciendo la distincion entre sistemas de 1125 lıneas y 1250 lıneas. En cambio, laparte 2 describe un interfaz comun para los sistemas codificados segun el ”formatocomun de imagen para alta definicion”(HD-CIF).

Interfaces para senales de TVAD relacionados con los sistemas conven-cionales: Formato del tren de datos

El formato del tren de datos se describe en la parte 1.En el apartado 2 se describe el interfaz digital. Como en casos anteriores se

pretende transmitir, tanto informacion de vıdeo y temporizacion como senales auxi-liares.

(L) 1.- Indica de que manera se transmiten las senales Y , CB y CR en este trende datos.

(L) 2.- Comenta las similitudes que observes en los codigos de referencia detemporizacion SAV y EAV, respecto de los interfaces anteriores.

Page 71: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 71

Interfaces para senales de TVAD relacionados con los sistemas conven-cionales: Interfaz paralelo

El interfaz paralelo se describe a partir del apartado 3.(L) 3.- Describe las diferentes estructuras del cable de transmision que utiliza

este interfaz.

(L) 4.- Describe el funcionamiento del reloj en cada uno de los casos.

En el apartado 3.3 se describen las caracterısticas mecanicas de los conectores ycables.

(L) 5.- Identifica el tipo de conector en cada caso.

Page 72: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

72 PRACTICA 7. INTERFACES DE COMUNICACION

Interfaces para senales de TVAD relacionados con los sistemas conven-cionales: Interfaz serie

El interfaz serie se describe en el apartado 4 de esta parte.(L) 6.- Indica la forma en que se multiplexan los datos segun el contenido de los

apartados 4.1 y 4.2.1.

(L) 7.- ¿Cual es la frecuencia de reloj que se utiliza en el interfaz serie?

(L) 8.- Describe el tipo de cable y los conectores del interfaz electrico segun elapartado 4.3.

Page 73: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.4. PLAN DE ACTIVIDADES 73

Interfaz para formato comun de imagen de alta definicion (CIF): Formatodel tren de datos

El interfaz para el formato comun de imagen se describe en la parte 2 de estarecomendacion comenzando con el formato del tren de datos.

(L) 9.- Indica de que manera se tratan las senales Y , CB y CR en el tren de datosdel interfaz CIF segun el apartado 2.1.

(L) 10.- Comenta las diferencias que observes en los codigos de referencia detemporizacion SAV y EAV respecto de los interfaces anteriores.

Interfaz para formato comun de imagen de alta definicion (CIF): Interfazparalelo

El interfaz paralelo se describe en el apartado 3.(L) 11.- En los apartados 3 y 3.1 se describe la senal de reloj adoptada para el

interfaz paralelo. Indica de que senal se trata y en que momento se producen lastransiciones.

Page 74: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

74 PRACTICA 7. INTERFACES DE COMUNICACION

(L) 12.- Describe el tipo de cable y los conectores del interfaz paralelo segun elapartado 3.3.

Interfaz para formato comun de imagen de alta definicion (CIF): Interfazserie

El apartado 4 describe el interfaz serie.(L) 13.- Indica la forma en que se multiplexan los datos segun el contenido de

los apartados 4.1 y 4.2.1.

(L) 14.- ¿Cual es la frecuencia de reloj que se utiliza en el interfaz serie?

(L) 15.- Describe el tipo de cable y los conectores del interfaz electrico segun elapartado 4.3.

7.4.5. Resumen comparativo de los diferentes interfaces

Una vez vistos los diferentes interfaces digitales de vıdeo se realizara un resumencomparandolos entre sı. Se tratara de comparar la manera de formatear los datos,el transporte y recepcion de la senal de reloj, etc., ası como la estructura logica yfısica de los interfaces serie y paralelo, y su modo de funcionamiento.

Page 75: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

7.5. BIBLIOGRAFIA 75

7.5. Bibliografıa

7.5.1. Bibliografıa basica

• Recomendacion UIT-R BT.656-4. Interfaces para las senales de vıdeo con com-ponentes digitales en sistemas de television de 525 lıneas y 625 lıneas quefuncionan en el nivel 4:2:2 de la recomendacion UIT-R BT.601 (parte A).

• Recomendacion UIT-R BT.799-3. Interfaces para las senales de vıdeo con com-ponentes digitales en sistemas de television de 525 y 625 lıneas que funcionanen el nivel 4:4:4 de la recomendacion UIT-R BT.601 (parte A).

• Recomendacion UIT-R BT.1120-3. Interfaces digitales para las senales de es-tudio de TVAD.

7.5.2. Bibliografıa complementaria

• Recomendacion UIT-R BT.601-5. Parametros de codificacion de television di-gital para estudios con formatos de imagen normal 4:3 y de pantalla ancha16:9.

• Recomendacion UIT-R BT.709-4. Valores de los parametros de la norma deTVAD para la produccion y el intercambio internacional de programas.

• Rodrıguez Vazquez, J.L. Vıdeo digital. Ed: SP-EUITT-UPM. Madrid (1996)

• Watkinson, J. Vıdeo digital, Ed. Paraninfo. (1996)

• Watkinson, J. El arte del vıdeo digital, Ed. IORTV. (1992)

• Bethencourt, T. Sistemas de television: clasicos y avanzados. Ed. IORTV.(1992).

Page 76: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

76 PRACTICA 7. INTERFACES DE COMUNICACION

Page 77: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 8

Potencial de compresion de laDCT en imagenes estaticas

8.1. Objetivo

Comprobar en la practica algunas de las propiedades de la Transformada Discretadel Coseno (DCT), que hacen posible conseguir la compresion subjetivamente sinperdidas en secuencias de vıdeo. Se va a analizar la importancia de los distintoscoeficientes de la DCT, con el fin de considerar su eliminacion, consiguiendo ası lacompresion intracuadro. Tambien se aplicara una matriz de cuantificacion real, delas utilizadas por el metodo de compresion JPEG, para comprobar sus resultados

8.2. Introduccion

La gran cantidad de informacion digital que aparece a partir del muestreo desecuencias de vıdeo hace necesaria su compresion, para poder almacenar o transmitirdicha informacion con un coste razonable. Esta compresion es posible debido a laexistencia de informacion redundante en las secuencias de vıdeo y que por tanto sepuede eliminar para volver a recuperarla en recepcion a partir de la informacionreal.

Podemos clasificar la informacion redundante segun su naturaleza en tres cate-gorıas. La redundancia espacial aparece dentro de cada fotograma, y hace referenciaa que los objetos poseen una cierta continuidad. Esta continuidad hace que en losfotogramas existan grandes superficies en las que los pıxeles son casi identicos. La re-dundancia temporal se estudia entre fotogramas consecutivos. Se fundamenta en queen el tiempo en que se toman dos fotogramas consecutivos (habitualmente 40ms.), noexisten grandes cambios entre las imagenes. Esto hace que en la mayorıa de los casosdos pıxeles homologos de dos fotogramas consecutivos sean practicamente iguales.Por ultimo, la redundancia estadıstica trata de aprovechar la distinta frecuencia conque aparecen los sımbolos a codificar, para ahorrar unos cuantos bits en aquellossımbolos que aparecen con mayor frecuencia.

Los metodos de compresion tratan de detectar esta informacion redundante yeliminarla, codificando exclusivamente y de forma adecuada, la informacion mınimapara recuperar con un nivel de calidad apropiado. Existen varias formas de codifica-cion para minimizar cada tipo de redundancia, consiguiendo niveles de compresionmoderados. Sin embargo, el uso de un dominio transformado en vez del dominio

77

Page 78: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

78 PRACTICA 8. POTENCIAL DE COMPRESION DE LA DCT

espacio-temporal a que estamos acostumbrados, multiplica los factores de compre-sion, afectando solo de forma ligera a la calidad.

La transformacion que se utiliza mas habitualmente en tratamiento de imageneses la transformada discreta del coseno (DCT); no por ser la unica, ni quiza la mejor,sino porque los metodos MPEG de compresion, que estan basados en la DCT hansido aceptados ampliamente por todo el mundo. Al estudio de esta transformacion,y mas concretamente a sus propiedades, va dirigida esta practica.

8.3. Desarrollo

Los algoritmos de compresion son bastante complejos de desarrollar. No obstante,en esta practica se han elegido, de todos los aspectos involucrados en la compresionde vıdeo, aquellos que son mas representativos, y cuya dificultad no es excesiva, deforma que el desarrollo de esta no lleve mas tiempo del disponible en una sesion.

Los cuatro aspectos que se van a analizar son estos:

• En primer lugar. la distribucion de la informacion, en el dominio de la DCT,de una imagen. Se comprobara que la mayor parte de la informacion reside enlos coeficientes de baja frecuencia.

• Despues, entrando ya en el terreno de la compresion, veremos que la elimina-cion de gran parte de los coeficientes de la DCT en realizaciones de tamano8x8 no degrada en exceso la calidad de las imagenes.

• En cambio, se observara que la cuantificacion del coeficiente DC sı puede afec-tar apreciablemente a dicha calidad, en el llamado efecto ”bloque”(o ”bloc-king”).

• Finalmente, se utilizara una matriz de cuantificacion real, la matriz de cuan-tificacion por defecto del metodo JPEG para cuantificar los coeficientes de laDCT y se comentaran los resultados.

.

8.3.1. Distribucion de la informacion en la DCT de una imagen

Al aplicar la transformada discreta del coseno a una imagen, la mayor partede la informacion se concentra en los coeficientes que representan a las frecuenciasmas bajas. En este apartado, se va a comprobar este hecho a partir de una imagencompleta. Para realizar este apartado puede utilizarse cualquiera de las imagenesque se tomaron en la practica 1.

En este apartado se codificara una funcion de MATLAB que tendra como en-trada una variable de tipo matriz que representa a una imagen en niveles de gris(blanco y negro). Para pasar una imagen en color a niveles de gris puede utilizarse lafuncion de MATLAB rgb2gray(). A esta matriz de entrada, que al ser en niveles degris sera bidimensional, se le calculara la DCT 2D mediante la funcion dct2(), y fi-nalmente se representaran graficamente sus coeficientes mediante la funcion mesh().

Esta representacion grafica de los coeficientes se realizara en dos partes. Enprimer lugar se representaran todos los coeficientes, y en segundo lugar unicamentelos primeros 50x50 coeficientes de mas baja frecuencia. Estas dos representaciones se

Page 79: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

8.3. DESARROLLO 79

visualizaran a la vez, mediante la orden subplot(), sobre la misma ventana “figure”actual.

El formato de esta funcion sera el siguiente:

infoDCT(matriz_entrada);

Puede observarse que no es necesario definir variable de salida, puesto que lasalida de la funcion es la propia representacion grafica

8.3.2. Aplicacion de la DCT a la compresion intracuadro

En este apartado se va a utilizar la DCT de forma similar a la que se utiliza enlos metodos de compresion JPEG, MPEG-2 y otros. En este metodo, se divide laimagen en pequenos bloques cuadrados de 8x8 pıxeles, y posteriormente se aplicanlos algoritmos de compresion correspondientes sobre dichos bloques. A la hora derecuperar, se deben realizar cada una de las DCT inversas a las matrices 8x8, yrecomponer nuevamente la imagen resultado.

Para resolver este apartado, se utilizara como base la funcion de MATLAB yacodificada .aplicaDCT()cuyo listado aparece a continuacion.

function matriz_salida = aplicaDCT(matriz_entrada)

%----------------------------------------------------------------% La funcion aplicaDCT, tal y como esta codificada, devuelve a la% salida la misma matriz que se le ha pasado como parametro de% entrada. No obstante, aunque operativamente no se obtiene de% ella ningun resultado, esta preparada para que a partir de ella% se puedan realizar diferentes pruebas relativas a la% codificacion intracuadro que se utiliza en los metodos de% compresion JPEG y MPEG-1 y 2.%% Esta funcion divide la variable matriz de entrada en% submatrices de tama~no 8x8, calcula, de todas ellas, su DCT% bidimensional y abre la posibilidad de jugar con los% coeficientes de estas DCTs segun las necesidades.% Posteriormente vuelve a convertir las matrices DCT al dominio% espacial mediante la DCT inversa, y recompone la imagen para% comprobar los efectos de los cambios que se hayan podido% realizar en los coeficientes.%----------------------------------------------------------------

tam = size(matriz_entrada); % calculo del tama~no de la entrada

% Division de la matriz de entrada en submatrices 8x8, y% construccion de una lista (listaBloques) con todas estas% submatrices.n_celdasX = ceil(tam(2)/8); % numero de celdas horizontaln_celdasY = ceil(tam(1)/8); % numero de celdas verticallistaBloques = zeros(8, 8, n_celdasX * n_celdasY);matrizBloques = zeros(n_celdasY * 8, n_celdasX * 8);matrizBloques(1:tam(1), 1:tam(2)) = matriz_entrada;

Page 80: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

80 PRACTICA 8. POTENCIAL DE COMPRESION DE LA DCT

% matrizBloques tiene tama~no multiplo de 8 en x e y.% A continuacion se rellena la lista de bloques con las% submatrices 8x8 de la matriz.for i=1:n_celdasX

for j=1:n_celdasYlistaBloques(:, :, i + (j-1)*n_celdasX) = ...matrizBloques((j-1)*8 + 1 : j*8, (i-1)*8 + 1 : i*8);

endend

% calculo de las DCTs 8x8for k=1:n_celdasX*n_celdasY

listaDCT(:,:,k) = dct2(listaBloques(:,:,k));end

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% Aquı empieza el procesamiento particular.% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

resultado = listaDCT; % sin procesamiento

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% Aquı termina el procesamiento particular.% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

% Recuperacion de matrices 8x8 al dominio espacialfor k=1:n_celdasX * n_celdasY

listaBloques(:,:,k) = idct2(resultado(:,:,k));end

% Reconstruccion de la imagensalida = zeros(size(matrizBloques));for n=1:n_celdasX

for m=1:n_celdasYsalida((m-1)*8 + 1 : m*8, (n-1)*8 + 1 : n*8) = ...listaBloques(:,:,n + (m-1)*n_celdasX);

endend

% Salida de la imagen con el tama~no originalmatriz_salida = uint8(salida(1:tam(1), 1:tam(2)));

Esta funcion realiza las siguientes operaciones:

(a) Divide la variable matriz_entrada en submatrices de tamano 8x8, y almacenadichas submatrices en una variable ”listaBloques”de tamano 8x8xN.

(b) A cada una de estas matrices 8x8 se les aplica la DCT bidimensional.

(c) Se establece el lugar del proceso en el que se anadiran los algoritmos de pruebaa codificar por los alumnos. En este punto se realizaran distintas pruebas sobrelas matrices de coeficientes que se indiquen.

(d) Se aplica la DCT inversa a las matrices 8x8.

(e) Se reconstruye la imagen resultante del proceso senalado.

Page 81: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

8.3. DESARROLLO 81

Ejercicios:

Las operaciones a realizar con las matrices de coeficientes pueden realizarse to-mando como base la propia funcion aplicaDCT() y generando a partir de ella lasdistintas versiones aplicaDCTn(). Cada una de las pruebas a realizar son indepen-dientes debiendo partir en cada caso del listado original.

(a) Comprobacion de funcionamiento de la funcion aplicaDCT(). Se aplicara dichafuncion a una matriz imagen en tonos de gris y se comprobara que a la salidase obtiene la imagen original.

(b) Eliminacion de todos los coeficientes AC. En la parte dedicada al procesa-miento particular, se pondran a cero todos los coeficientes distintos del DC(C(0,0)) en cada una de las matrices 8x8. Esta funcion se guardara con elnombre aplicaDCT1()".

(c) Solo cuatro coeficientes de baja frecuencia. Modificar la funcion aplicaDCT()para que en la parte de procesamiento particular se eliminen todos los coefi-cientes distintos de los cuatro de mas baja frecuencia, es decir, DC y los tresde alrededor. Esta funcion se guardara con el nombre aplicaDCT2().

(d) Solo nueve coeficientes de baja frecuencia. Modificar la funcion aplicaDCT()para que en la parte de procesamiento particular se eliminen todos los coefi-cientes excepto los nueve de mas baja frecuencia, es decir, los cuatro del apar-tado anterior y los cinco siguientes. Esta funcion se guardara con el nombreaplicaDCT3().

(e) Cuantificacion del coeficiente DC. En la parte de procesamiento particularde aplicaDCT(), sin eliminar ningun coeficiente, realizar una cuantificaciona 4 bits (16 niveles posibles) sobre el coeficiente DC para observar el efecto“bloque”. Guardar la funcion completa con el nombre aplicaDCT4().

(f) Cuantificacion mediante matriz. En este apartado se cuantificaran las matricesde coeficientes tal y como se hace en la realidad. Las matrices de coeficientesoriginales se dividen por una matriz de cuantificacion, y el resultado se re-dondea al entero mas cercano. Esta cuantificacion producira largas cadenas deceros al final de las matrices de coeficientes, lo que permitira conseguir unamayor compresion tanto en el caso de grabacion como de transmision.

En el extremo receptor, o en el momento de recuperar la informacion alma-cenada, las matrices cuantificadas se multiplicaran de nuevo por su matriz decuantificacion, restableciendo ası los valores mas aproximados a los originales.

En este apartado, se simulara todo este proceso. Para ello podemos partir dela funcion aplicaDCT() ofrecida. En la zona de procesamiento particular sedividiran las matrices de coeficientes por una matriz de cuantificacion, redon-deando posteriormente al entero mas cercano, y volviendo a multiplicar denuevo por la misma matriz de cuantificacion. De esta manera, podemos ha-cernos una idea de los efectos que tiene esta forma de cuantificacion con lasimagenes que utilicemos.

A continuacion se presentan dos matrices de cuantificacion diferentes que seutilizaran en este apartado con el fin de comparar sus resultados.

Page 82: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

82 PRACTICA 8. POTENCIAL DE COMPRESION DE LA DCT

JPEG =

16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99

MPEG =

8 16 19 22 26 27 29 3416 16 22 24 27 29 34 3719 22 26 27 29 34 34 3822 22 26 27 29 34 37 4022 26 27 29 32 35 40 4826 27 29 32 35 40 48 5826 27 29 34 38 46 56 6927 29 35 38 46 56 69 83

Ambas matrices se encuentran almacenadas en el fichero de variables de MAT-LAB llamado “cuantifica.mat” que se ofrecera durante la practica. Para cargar estasvariables al entorno de trabajo se utilizara el comando load(). La primera matrizexpuesta tiene el nombre cuantif_JPEG dentro del fichero, y es la matriz de cuan-tificacion por defecto, que utilizan los algoritmos de compresion JPEG.

Opcionalmente, como sabemos el formato JPEG puede utilizar otras matricesde cuantificacion diferentes, pero en esos casos, debe almacenarse o transmitirsetambien los valores de la matriz utilizada. Si no se almacena nada se entendera quela matriz utilizada es esta.

La segunda matriz tiene el nombre cuantif_MPEG dentro del fichero, y es una delas matrices que se utilizan habitualmente en el formato de compresion MPEG. Estamatriz se utiliza para comprimir tanto las imagenes intracuadro (I) como los erroresde prediccion en los casos en los que se aplique la tecnica de compensacion de mo-vimiento; por eso puede notarse que sus valores son algo mas bajos que los del casoJPEG. Tenemos que tener en cuenta, que las imagenes I, al ser referencia para lasimagenes P y B, pueden propagar errores; una compresion excesiva en una imagen Ipuede hacer que las predicciones de imagenes posteriores sean de baja calidad, porsu parte, una cuantificacion excesiva del error de prediccion ocasionaria perdidas decalidad grandes. Por ello se debe tener un cuidado especial y no comprimir dema-siado, ya que la aparicion de defectos en las imagenes de prediccion pueden mermarmucho la calidad de la secuencia.

En este ultimo apartado se codificaran dos funciones aplicaDCT5() para el ca-so JPEG, y aplicaDCT6() para el formato MPEG a partir de aplicaDCT() y secomentaran los resultados en la memoria de la practica.

8.4. Resultados de la practica

Al final de la practica se realizara una memoria breve comentando los resultadosobtenidos en cada caso, y se guardara, junto con los ficheros de MATLAB en eldirectorio ”vdfinal”de la cuenta del alumno en el servidor ”teleco.uclm.es”

Page 83: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

8.4. RESULTADOS DE LA PRACTICA 83

Com en practicas anteriores, se aconseja probar los algoritmos implementadosmediante la funcion de test, que se ofrece a continuacion, antes de entregarlos parasu correccion.

La duracion estimada de la practica es de dos semanas.

function salida = intracuadro(fichero_entrada)

matriz_entrada = imread(fichero_entrada);

tam=size(matriz_entrada);if (tam(1)+tam(2) < sum(tam))matriz_gris = rgb2gray(matriz_entrada);

elsematriz_gris = matriz_enttrada;

end

figure(8);imshow(aplicaDCT6(matriz_gris));title(’Matriz de cuantificacion habitual MPEG-2.’)

figure(7);imshow(aplicaDCT5(matriz_gris));title(’Matriz de cuantificacion por defecto en JPEG.’)

figure(6);imshow(aplicaDCT4(matriz_gris));title(’Cuantificacion de coeficientes DC: Efecto "bloque".’)

figure(5);imshow(aplicaDCT3(matriz_gris));title(’Nueve coeficientes de mas baja frecuencia. Factor 64:9’)

figure(4);imshow(aplicaDCT2(matriz_gris));title(’Cuatro coeficientes de mas baja frecuencia. Factor 16:1’)

figure(3);imshow(aplicaDCT1(matriz_gris));title(’Solo coeficientes DC. Factor 64:1.’)

figure(2);imshow(aplicaDCT(matriz_gris));title(’Resultado de aplicaDCT(). Imagen original’)

figure(1);infoDCT(matriz_gris);

Page 84: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

84 PRACTICA 8. POTENCIAL DE COMPRESION DE LA DCT

Page 85: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

Practica 9

Compensacion de movimiento ycompresion intercuadro

9.1. Objetivos

El objetivo principal de esta practica es acercarnos al proceso de compresion in-tercuadro de MPEG-2. Este acercamiento se hara observando las diferentes tecnicasque se llevan a cabo en este tipo de compresion.

• La primera tecnica es la de compensacion de movimiento que intenta detectarel movimiento que se produce entre un fotograma y el siguiente, buscandoposibles desplazamientos de los macrobloques.

• En segundo lugar, se utiliza la tecnica de codificacion diferencial DPCM quetiene su fundamento en la codificacion, no de macrobloques enteros, sino dela diferencia entre el macrobloque actual y una prediccion del mismo; lo queserıa el error de prediccion.

• Finalmente, sobre el error de prediccion se aplica la codificacion intracuadroabordada de la practica anterior: division en bloques, aplicacion de la DCT,cuantificacion, lectura en zig-zag, y codificaciones de longitud variable (VLC)y longitud de recorrido (RLC).

9.2. Introduccion

La maxima potencia de compresion en secuencias de vıdeo se produce, no por lacodificacion intracuadro de cada fotograma, sino debido a la aplicacion de procesosintercuadro que tratan de minimizar la redundancia temporal. Estos procesos inter-cuadro se basan en trabajar sobre una prediccion de la imagen actual, a partir deuna imagen anterior y/o una imagen siguiente.

Como sabemos, en MPEG-2 existen tres tipos de imagenes: imagenes intracuadro(I), imagenes de prediccion (P), e imagenes bidireccionales (B). Las imagenes queutilizan compresion intercuadro son las P y B, con la diferencia que las imagenesP solo toman como referencia para calcular la prediccion la imagen I o P anterior,mientras que las imagenes B toman como referencia de prediccion indiferentementela imagen I o P anterior o siguiente.

85

Page 86: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

86 PRACTICA 9. COMPENSACION DE MOVIMIENTO

Hemos de tener en cuenta que las secuencias de vıdeo tratan de mantener unacierta continuidad en la accion, de manera que el ojo perciba un movimiento cons-tante. Por ello, en el periodo de tiempo que transcurre entre dos fotogramas, y salvoun cambio de plano, las diferencias que se producen en las imagenes se deben a lige-ros movimientos entre los objetos, o en todo caso a movimientos de la camara, queen definitiva se reflejan tambien en desplazamientos de partes de la imagen. Estosmovimientos trata de contrarrestarlos la compensacion de movimiento. El resultadode detectar y contrarrestar en parte esos desplazamientos es una prediccion de laimagen actual, que simplemente se codifica mediante los vectores de movimiento delos macrobloques.

La imagen de prediccion, resultante de la aplicacion de la compensacion de mo-vimiento, se diferencia respecto de la imagen actual en el error de prediccion. Esteerror de prediccion sera lo que necesitara el decodificador, junto con los vectoresde movimiento, para regenerar la imagen actual al final de la cadena. Pero no esnecesario almacenar todo el error de prediccion, a este tambien podemos aplicar-le la compresion intracuadro. Por otra parte, el error de prediccion suele ser muypequeno, de manera que su codificacion intracuadro con la utilizacion de tecnicasRLC y VLC se realizara con muy pocos bits, aumentando el factor de compresionconsiderablemente, y sin merma de la calidad.

En esta practica se estudiaran los procesos involucrados en la compresion inter-cuadro. Debido a la dificultad de programacion de estos procesos en el escaso tiempodisponible, se partira de dos funciones ya codificadas; se analizara su funcionamientoy posteriormente se evaluaran los resultados que producen.

9.3. Desarrollo

Para esta practica se han preparado dos algoritmos diferentes; uno para lasimagenes P y otro para las imagenes B; a pesar de que como se comprobara lasdiferencias son pequenas.

9.3.1. Codificacion de una imagen P

La codificacion de una imagen tipo P parte de la imagen I o P anterior. El co-dificador MPEG-2 divide la imagen actual y la de referencia en macrobloques detamano 16x16, y a partir de ellos calcula sus vectores de movimiento. Mediante es-tos vectores de movimiento y los macrobloques de la imagen anterior se configurala imagen de prediccion. La diferencia entre la imagen actual real y la imagen deprediccion da lugar al error de prediccion. Este error de prediccion se codifica intra-cuadro; y como hemos visto, necesitara muy pocos bits. Finalmente, la informaciondel error de prediccion se envıa junto con los vectores de movimiento de los ma-crobloques al decodificador, y ası, este recompondra la imagen actual a partir de laimagen anterior de referencia.

Una posible simulacion de este proceso, se describe en la siguiente funcion deMATLAB. En ella se considera la imagen anterior como una imagen I, por simplifi-car.

function matriz_salida = imagenP(matrizI, matrizP)

tam = size(matrizI);

Page 87: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

9.3. DESARROLLO 87

% Division de la matriz de entrada en submatrices 16x16, y% construccion de una lista (listaMacroB) con todas estas% submatrices.n_celdasX = ceil(tam(2)/16);n_celdasY = ceil(tam(1)/16);listaMacroBI = zeros(16, 16, n_celdasX * n_celdasY);listaMacroBP = zeros(16, 16, n_celdasX * n_celdasY);matrizMacroBI = zeros(n_celdasY * 16, n_celdasX * 16);matrizMacroBP = zeros(n_celdasY * 16, n_celdasX * 16);matrizMacroBI(1:tam(1), 1:tam(2)) = matrizI;matrizMacroBP(1:tam(1), 1:tam(2)) = matrizP;

% matrizMacroBx tiene tama~no multiplo de 16 en x e y. A% continuacion se rellena la lista de bloques con las% submatrices 16x16 de la matriz.for i=1:n_celdasX

for j=1:n_celdasYlistaMacroBI(:, :, i + (j-1)*n_celdasX) = ...matrizMacroBI((j-1)*16 + 1 : j*16, (i-1)*16 + 1 : i*16);

listaMacroBP(:, :, i + (j-1)*n_celdasX) = ...matrizMacroBP((j-1)*16 + 1 : j*16, (i-1)*16 + 1 : i*16);

endend

% Compensacion de movimiento en P sobre Iopera_correla = zeros(n_celdasX*n_celdasY, n_celdasX*n_celdasY);resulta_correla = zeros(1, n_celdasX*n_celdasY);for i=1:n_celdasX*n_celdasY

for j=1:n_celdasX*n_celdasYopera_correla(i, j) = ...corr2(listaMacroBP(:,:,j), listaMacroBI(:,:,i));

endend[maximo, resulta_correla] = max(opera_correla);

% "maximo" contiene el valor de la correlacion entre los% macrobloques si este valor esta por encima de un umbral, la% codificacion de macrobloque sera intercuadro, y si esta por% debajo sera intracuadro "resulta_correla" actua como vector% de movimiento, ya que es el ındice del macrobloque que en% cada caso contiene el maximo de correlacionload cuantificamacroBloque = zeros(16, 16);listaBloques = zeros(8, 8, 4);listaDCT = zeros(8, 8, 4);

% "listaBloques" se utiliza para realizar las codificaciones de% los bloques, ya sean intracuadro o intercuadro. En ambos% casos se utilizara la matriz de cuantificacion "cuantif_MPEG"for i= 1:n_celdasX*n_celdasY

Page 88: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

88 PRACTICA 9. COMPENSACION DE MOVIMIENTO

if maximo(i) >= 0.7 % intercuadromacroBloque = listaMacroBP(:,:,i) - ...listaMacroBI(:,:,resulta_correla(i));

% division en bloqueslistaBloques(:, :, 1) = macroBloque(1:8, 1:8);listaBloques(:, :, 2) = macroBloque(1:8, 9:16);listaBloques(:, :, 3) = macroBloque(9:16, 1:8);listaBloques(:, :, 4) = macroBloque(9:16, 9:16);for k=1:4

listaDCT(:,:,k) = dct2(listaBloques(:,:,k));% calculo de las DCTs, cuantificacion mediante matriz

listaDCT(:,:,k) = round(listaDCT(:,:,k)./ ...cuantif_MPEG).*cuantif_MPEG;

% DCT inversalistaBloques(:, :, k) = idct2(listaDCT(:, :, k));

end% reconstruccion Macrobloques

macroBloque(1:8, 1:8) = listaBloques(:, :, 1);macroBloque(1:8, 9:16) = listaBloques(:, :, 2);macroBloque(9:16, 1:8) = listaBloques(:, :, 3);macroBloque(9:16, 9:16) = listaBloques(:, :, 4);listaMacroBP(:, :, i) = macroBloque + ...

listaMacroBI(:,:,resulta_correla(i));else

macroBloque = listaMacroBP(:,:,i);% division en bloques

listaBloques(:, :, 1) = macroBloque(1:8, 1:8);listaBloques(:, :, 2) = macroBloque(1:8, 9:16);listaBloques(:, :, 3) = macroBloque(9:16, 1:8);listaBloques(:, :, 4) = macroBloque(9:16, 9:16);for k=1:4

% calculo de las DCTslistaDCT(:,:,k) = dct2(listaBloques(:,:,k));

% cuantificacion mediante matrizlistaDCT(:,:,k) = round(listaDCT(:,:,k)./ ...

cuantif_MPEG).*cuantif_MPEG;%DCT inversa

listaBloques(:, :, k) = idct2(listaDCT(:, :, k));end

% reconstruccion MacroBmacroBloque(1:8, 1:8) = listaBloques(:, :, 1);macroBloque(1:8, 9:16) = listaBloques(:, :, 2);macroBloque(9:16, 1:8) = listaBloques(:, :, 3);macroBloque(9:16, 9:16) = listaBloques(:, :, 4);listaMacroBP(:, :, i) = macroBloque;

endend

% Reconstruccion de la imagensalida = zeros(size(matrizMacroBP));

Page 89: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

9.3. DESARROLLO 89

for n=1:n_celdasXfor m=1:n_celdasY

salida((m-1)*16 + 1 : m*16, (n-1)*16 + 1 : n*16) = ...listaMacroBP(:,:,n + (m-1)*n_celdasX);

endend

% Salida de la imagen con el tama~no originalmatriz_salida = uint8(salida(1:tam(1), 1:tam(2)));

Ejercicios:

Sobre este listado se tratara de dar respuesta a las siguientes preguntas en lamemoria:

(a) En el fragmento de codigo entre las lıneas 29 a 36 se simula el calculo delos vectores de movimiento. ¿Que procedimiento se sigue para realizar estecalculo? ¿Cual es la zona de busqueda de cada macrobloque?; es decir, ¿Quezona de la imagen I anterior se utiliza para buscar cada macrobloque de laimagen actual?

(b) Entre las lıneas 57 y 73 se simula el procesamiento intercuadro que se realizacuando la semejanza entre el macrobloque actual de la imagen P y el masparecido de la imagen I esta por encima de un umbral. ¿De que manera seproduce el proceso de compresion-descompresion?.

(c) Entre las lıneas 75 y 91 se simula el procesamiento intracuadro, cuando no seencuentra un macrobloque semejante al actual en la imagen de referencia, o lasemejanza es pequena. ¿De que manera se produce, en este caso, el proceso decompresion-descompresion?. Comparar las lıneas 58 y 75.

9.3.2. Codificacion de una imagen B

El listado que aparece a continuacion es muy similar al visto hasta ahora. Basica-mente, las diferencias estan en que, en vez de buscar los macrobloques de la imagenactual en la imagen anterior unicamente, tambien se buscaran en la imagen posterior.Ambas imagenes, anterior y posterior se consideran del tipo I para simplificar.

Este aumento de la busqueda de macrobloques en ambas imagenes complica con-siderablemente el proceso, sobretodo en el tiempo de ejecucion, pero tiene la ventajade que posiblemente se encuentren mas coincidencias entre bloques, las diferenciassean mas pequenas, y por tanto la compresion sea muy alta para estas imagenes.

La funcion siguiente trata de simular el proceso de codificacion y decodificacionde una imagen B.

function matriz_salida = imagenB(matrizI1, matrizB, matrizI2)

tam = size(matrizI1);

% Division de la matriz de entrada en submatrices 16x16, y% construccion de una lista (listaMacroB) con todas estas% submatrices.n_celdasX = ceil(tam(2)/16);

Page 90: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

90 PRACTICA 9. COMPENSACION DE MOVIMIENTO

n_celdasY = ceil(tam(1)/16);listaMacroBI = zeros(16, 16, 2 * n_celdasX * n_celdasY);listaMacroBB = zeros(16, 16, n_celdasX * n_celdasY);matrizMacroBI1 = zeros(n_celdasY * 16, n_celdasX * 16);matrizMacroBI2 = zeros(n_celdasY * 16, n_celdasX * 16);matrizMacroBB = zeros(n_celdasY * 16, n_celdasX * 16);matrizMacroBI1(1:tam(1), 1:tam(2)) = matrizI1;matrizMacroBI2(1:tam(1), 1:tam(2)) = matrizI2;matrizMacroBB(1:tam(1), 1:tam(2)) = matrizB;

% matrizMacroBx tiene tama~no multiplo de 16 en x e y. A% continuacion se rellena la lista de bloques con las% submatrices 16x16 de la matriz.desplaza2 = n_celdasX * n_celdasY;for i=1:n_celdasX

for j=1:n_celdasYlistaMacroBI(:, :, i + (j-1)*n_celdasX) = ...

matrizMacroBI1((j-1)*16 + 1 : j*16, (i-1)*16 + 1 : i*16);listaMacroBI(:,:,desplaza2+i+(j-1)*n_celdasX) = ...

matrizMacroBI2((j-1)*16+1 : j*16, (i-1)*16+1 : i*16);listaMacroBB(:, :, i + (j-1)*n_celdasX) = ...

matrizMacroBB((j-1)*16 + 1 : j*16, (i-1)*16 + 1 : i*16);end

end

% Compensacion de movimiento en B sobre I1 e I2opera_correla = zeros(2*n_celdasX*n_celdasY, n_celdasX*n_celdasY);resulta_correla = zeros(1, n_celdasX*n_celdasY);for i=1:2*n_celdasX*n_celdasY

for j=1:n_celdasX*n_celdasYopera_correla(i, j) = ...corr2(listaMacroBB(:,:,j), listaMacroBI(:,:,i));

endend[maximo, resulta_correla] = max(opera_correla);

% "maximo" contiene el valor de la correlacion entre los% macrobloques si este valor esta por encima de un umbral, la% codificacion de macrobloque sera intercuadro, y si esta por% debajo sera intracuadro "resulta_correla" es el ındice que% contiene el maximo de correlacion hace las veces de vector% de movimientoload cuantificamacroBloque = zeros(16, 16);listaBloques = zeros(8, 8, 4);listaDCT = zeros(8, 8, 4);

% "listaBloques" se utiliza para realizar las codificaciones de% los bloques, ya sean intracuadro o intercuadro. En ambos% casos se utilizara la matriz de cuantificacion "cuantif_MPEG"

Page 91: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

9.3. DESARROLLO 91

for i= 1:n_celdasX*n_celdasYif maximo(i) >= 0.7 % intercuadro

macroBloque = listaMacroBB(:,:,i) - ...listaMacroBI(:,:,resulta_correla(i));

% division en bloqueslistaBloques(:, :, 1) = macroBloque(1:8, 1:8);listaBloques(:, :, 2) = macroBloque(1:8, 9:16);listaBloques(:, :, 3) = macroBloque(9:16, 1:8);listaBloques(:, :, 4) = macroBloque(9:16, 9:16);for k=1:4

% calculo de las DCTslistaDCT(:,:,k) = dct2(listaBloques(:,:,k));

% cuantificacion mediante matrizlistaDCT(:,:,k) = round(listaDCT(:,:,k)./ ...cuantif_MPEG).*cuantif_MPEG;

%DCT inversalistaBloques(:, :, k) = idct2(listaDCT(:, :, k));

end% reconstruccion MacroB

macroBloque(1:8, 1:8) = listaBloques(:, :, 1);macroBloque(1:8, 9:16) = listaBloques(:, :, 2);macroBloque(9:16, 1:8) = listaBloques(:, :, 3);macroBloque(9:16, 9:16) = listaBloques(:, :, 4);listaMacroBB(:, :, i) = ...

macroBloque + listaMacroBI(:,:,resulta_correla(i));else

macroBloque = listaMacroBB(:,:,i);% division en bloques

listaBloques(:, :, 1) = macroBloque(1:8, 1:8);listaBloques(:, :, 2) = macroBloque(1:8, 9:16);listaBloques(:, :, 3) = macroBloque(9:16, 1:8);listaBloques(:, :, 4) = macroBloque(9:16, 9:16);for k=1:4

% calculo de las DCTslistaDCT(:,:,k) = dct2(listaBloques(:,:,k));

% cuantificacion mediante matrizlistaDCT(:,:,k) = round(listaDCT(:,:,k)./ ...

cuantif_JPEG).*cuantif_JPEG;%DCT inversa

listaBloques(:, :, k) = idct2(listaDCT(:, :, k));end

% reconstruccion MacrobloquesmacroBloque(1:8, 1:8) = listaBloques(:, :, 1);macroBloque(1:8, 9:16) = listaBloques(:, :, 2);macroBloque(9:16, 1:8) = listaBloques(:, :, 3);macroBloque(9:16, 9:16) = listaBloques(:, :, 4);listaMacroBB(:, :, i) = macroBloque;

endend

Page 92: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

92 PRACTICA 9. COMPENSACION DE MOVIMIENTO

% Reconstruccion de la imagensalida = zeros(size(matrizMacroBB));for n=1:n_celdasX

for m=1:n_celdasYsalida((m-1)*16 + 1 : m*16, (n-1)*16 + 1 : n*16) = ...

listaMacroBB(:,:,n + (m-1)*n_celdasX);end

end

% Salida de la imagen con el tama~no originalmatriz_salida = uint8(salida(1:tam(1), 1:tam(2)));

Ejercicios:

Sobre esta funcion al igual que en el caso anterior se respondera a las siguientespreguntas en la memoria

(a) Entre las lıneas 22 y 29 se preparan las variables ”listaMacroBI 2”listaMa-croBB”que se utilizaran para el proceso de analisis de los vectores de movi-miento. ¿Que caracterıstica tiene la variable ”listaMacroBI”que la diferenciade la utilizada en la funcion ”imagenP()”?. Explica el contenido que alber-gara esta variable y para que se utilizara.

(b) En el fragmento de codigo entre las lıneas 33 a 40 se simula el calculo de losvectores de movimiento. ¿Cual es la zona de busqueda de cada macrobloque?

9.3.3. Comprobacion de funcionamiento de las funciones

Ejercicios:

(a) La funcion imagenP() se probara con dos fotogramas consecutivos de unasecuencia. Estos fotogramas fueron conseguidos en la primera practica que serealizo en el curso.

(b) Una vez comprobado el funcionamiento completo, se pondra un punto de rup-tura en la lınea 44 con el fin de visualizar los valores de las variables maximo, querepresenta el grado de correlacion conseguido con cada macrobloque de la ima-gen P respecto a otro de la imagen I; y resulta_correla que indica el ındicedel macrobloque de la imagen I cuya correlacion es maxima con cada macro-bloque de la imagen P. Representa graficamente, el vector resulta_correlaque contiene informacion sobre los vectores de movimiento, y comenta el re-sultado obtenido. Si la camara ha permanecido estatica durante la captura,es probable que algunos valores de resulta_correla coincidan con el pro-pio indice dentro del vector. Esto significarıa que el macrobloque que mas separece al actual es el homologo de la imagen I, como serıa de esperar. En elcaso de que la camara este en movimiento, probablemente muchos valores deresulta_correla esten desplazados una misma cantidad respecto de su valorde ındice; esta cantidad caracterizarıa dicho movimiento.

(c) La funcion imagenB() debera probarse con tres fotogramas consecutivos de unasecuencia. Estos fotogramas tambien se consiguieron en la primera practica quese realizo en el curso.

Page 93: Pr´acticas de V´ıdeo Digital - EIIAB - Plan de …edii.uclm.es/~jmlova/Archivos/VD/Archivos/VdPracticas.pdfPr´actica 2 Tratamiento de im´agenes con MATLAB 2.1. Objetivos MATLAB

9.3. DESARROLLO 93

(d) Una vez comprobado el funcionamiento completo, se pondra un punto de rup-tura en la lınea 47 con el fin de visualizar los valores de las variables maximo,que representa el grado de correlacion conseguido con cada macrobloque dela imagen B respecto a otro de las dos imagenes I; y resulta_correla queindica el ındice del macrobloque de la lista listaMacroBI cuya correlacion esmaxima con cada macrobloque de la imagen B.

(e) Representa graficamente, aplicando un punto de ruptura en la lınea 47, elvector que contiene informacion sobre los vectores de movimiento, y comentael resultado obtenido comparandolo con el anterior. Probablemente existanvalores de resulta_correla que correspondan a macrobloques de la primeraimagen I, y otros que pertenezcan a la imagen I posterior. Esta es la ventaja dela utilizacion de imagenes B en compresion intercuadro, la mayor probabilidadde encontrar macrobloques semejantes en cualquiera de las dos imagenes dereferencia.