DETECCIÓN DE ANUNCIOS DE TELEVISIÓN MEDIANTE SOFTWARE

download DETECCIÓN DE ANUNCIOS DE TELEVISIÓN MEDIANTE SOFTWARE

of 96

Transcript of DETECCIÓN DE ANUNCIOS DE TELEVISIÓN MEDIANTE SOFTWARE

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    1/96

    Objetivos e Inters

    II

    Septiembre 2013

    INGENIERA DE TELECOMUNICACINrea de Teora de la Seal y Comunicaciones

    Departamento de Ingeniera Electrnica

    PORTADA

    Daniel Jess Martnez Campos | Jos Ramn Cerquides BuenoAutor | Director

    DETECCIN DE ANUNCIOS DE

    TELEVISIN MEDIANTE SOFTWARE

    E.T.S.I.

    U.S.

    PROYECTO FIN DE CARRERA

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    2/96

    I

    Agradecimientos:

    Con la presentacin del presente proyecto final de carrera no solo se acaba unproyecto, sino que se termina una de las etapas ms duras y largas de mi vida.Llegado a este punto hay que mirar atrs y debo reconocer con humildad que debodar las gracias a muchas personas.

    Empezar dando las gracias a mis compaeros de carrera: a los que empezaron yse quedaron y a los que se fueron, y a los que estuvieron en mi vida pero ahoraestn ausentes.

    Especialmente agradecido estoy con mis compaeros, profesores y amigos deMxico, los cuales me aportaron mucho tanto en lo acadmico como en lo personal.

    No tengo palabras para agradecer el apoyo, el cario y el amor que me ha brindadomi guapsima novia Carmen, sin cuya ayuda no habra podido entregar a tiempoeste proyecto.

    Tengo mucho que agradecer a mis compaeros, excompaeros, jefes y amigos detrabajo de CATEC y SolarMEMS porque son unos grandsimos profesionales ymejores personas.

    Tambin estoy especialmente agradecido a Jos Ramn Cerquides, tutor de esteproyecto, por confiar en m para la realizacin del mismo y por haberme dado todo

    tipo de facilidades para presentarlo.

    Pese a que a veces pareca que me ponan zancadillas y piedras en el caminotambin estoy agradecido a la comunidad de profesores de la ETSI, especialmentea los profesores de los primeros cursos, como Alberto Casado o Antonio Gonzlez.

    Pero todo lo anterior carecera de sentido sin el apoyo incondicional de mis padresa los cuales les debo todo, por lo que nunca les estar lo suficientementeagradecido, as como a mi familia en general que siempre me ha brindado su carioy apoyo.

    Muchas gracias a todos, de corazn.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    3/96

    Contenido

    II

    ndicePORTADA .................................................................................................................................................... 0

    Agradecimientos: .................................................................................................................................... 1

    ndice ............................................................................................................................................................ 0

    Lista de Figuras ........................................................................................................................................ 1

    1. OBJETIVOS E INTERS ................................................................................................................ 1

    2. ESTADO DEL ARTE ....................................................................................................................... 2

    2.1. DESARROLLO HISTRICO ................................................................................................. 2

    2.2. ENUMERACIN DE TCNICAS ........................................................................................ 3

    2.3. OTRAS TECNOLOGAS ......................................................................................................... 7

    3. MEMORIA DESCRIPTIVA ........................................................................................................... 8

    3.1. INTRODUCCIN ..................................................................................................................... 8

    3.2. TEORA.................................................................................................................................... 12

    3.2.1. Conversin a Escala de Grises .............................................................................. 12

    3.2.2. Clculo de la Media ................................................................................................... 13

    3.2.3. Determinacin del Valor Umbral ........................................................................ 13

    3.2.4. Clculo de la Frecuencia de Muestreo .............................................................. 14

    3.3. ARQUITECTURA DEL SISTEMA.................................................................................... 17

    3.3.1. Arquitectura del Hardware ................................................................................... 17

    3.3.1.1. Ordenador ................................................................................................................ 17

    3.3.1.2. Tarjeta de Televisin DVB - USB .................................................................... 18

    3.3.2. Arquitectura del Software ..................................................................................... 19

    3.3.2.1. Sistema Operativo ................................................................................................ 19

    3.3.2.2. DirectX 11 SDK ....................................................................................................... 20

    3.4. DESCRIPCIN DEL SISTEMA ......................................................................................... 21

    3.4.1. Breve Descripcin del Sistema ............................................................................ 21

    3.4.2. Aplicaciones ................................................................................................................. 22

    3.4.3. Algoritmos .................................................................................................................... 23

    3.4.3.1. Algoritmo de generacin de huellas ............................................................. 23

    3.4.3.2. Algoritmo de deteccin de anuncios ............................................................ 25

    3.5. MANUAL DE USUARIO ..................................................................................................... 27

    3.5.1. Generacin de Huellas ............................................................................................. 27

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    4/96

    Contenido

    III

    3.5.2. Deteccin de Anuncios ............................................................................................ 29

    3.5.3. Paso a paso ................................................................................................................... 30

    3.5.3.1. Generacin de huellas ......................................................................................... 30

    3.5.3.2. Deteccin de anuncios ........................................................................................ 324. PRUEBAS, RESULTADOS Y CONCLUSIONES ................................................................... 36

    4.1. PRUEBAS Y RESULTADOS .............................................................................................. 36

    4.1.1. Configuracin previa a la realizacin de las pruebas ................................ 36

    4.1.2. Pruebas .......................................................................................................................... 36

    4.1.2.1. Pruebas de deteccin de anuncios ................................................................ 36

    4.1.2.2. Pruebas de degradado ........................................................................................ 38

    4.2. Conclusiones ......................................................................................................................... 415. BIBLIOGRAFA ............................................................................................................................. 45

    ANEXO: CDIGO FUENTE ................................................................................................................. 46

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    5/96

    Lista de Figuras

    IV

    Lista de Figuras

    Figura 1: Ejemplo de cambio de plano ......................................................................................................... 8

    Figura 2: Estructura de pxeles en una secuencia de vdeo ......................................................................... 12

    Figura 3: Falso cambio de plano ................................................................................................................. 14

    Figura 4: Esquema de generacin de una huella ........................................................................................ 15

    Figura 5: Ordenador ................................................................................................................................... 17

    Figura 6: Dispositivo USB sintonizador ....................................................................................................... 18

    Figura 7: Sistema operativo ........................................................................................................................ 19

    Figura 8: DirectX ......................................................................................................................................... 20

    Figura 9: Visual Studio Express Edition ....................................................................................................... 21

    Figura 10: Esquema del algoritmo de generacin de huellas ..................................................................... 24Figura 11: Esquema del algoritmo de deteccin de huellas ....................................................................... 26

    Figura 12: Programa de generacin de huellas .......................................................................................... 27

    Figura 13: Programa de deteccin de anuncios ......................................................................................... 29

    Figura 14: Seleccin del archivo de huellas ................................................................................................ 30

    Figura 15: Archivo de salida de huellas ...................................................................................................... 31

    Figura 16: Seleccin de fuente de vdeo ..................................................................................................... 32

    Figura 17: Seleccin del archivo de huellas ................................................................................................ 33

    Figura 18: Seleccin del archivo de anuncios ............................................................................................. 34

    Figura 19: Salida del archivo de anuncios .................................................................................................. 34

    Figura 20: Seleccin de la fuente de vdeo ................................................................................................. 35

    Figura 21: Probabilidades de deteccin de anuncios y de falso cambio de plano ...................................... 37Figura 22: Frecuencia de ocurrencia de las huellas para distintas calidades de vdeo ............................... 39

    Figura 23: Probabilidad de error de deteccin de anuncio en funcin de la calidad de vdeo .................... 40

    Figura 24: Huella de 12 bits frente a 48 bits ............................................................................................... 41

    Figura 25: Histograma de escala de grises para determinacin de umbral de negro ................................ 43

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    6/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    7/96

    Objetivos e Inters

    -1-

    1. OBJETIVOS E INTERSLa publicidad es una forma de dar a conocer un producto, sus

    caractersticas y funcionamiento a la gente [4]. Los anuncios de televisin han sidohasta el momento el sistema publicitario ms potente y extendido, jugando unpapel importante en las vidas de las personas. Para las empresas comerciales soninstrumentos esenciales de marketing para llamar la atencin sobre sus productosy aumentar sus ventas [1].

    Los anuncios son una gran fuente de ingresos para los operadores por loque los anunciantes son muy celosos sobre el impacto de los anuncios y sepreocupan de que su difusin sea la requerida mediante la realizacin de unseguimiento estadstico de los mismos [4]. Esto determina la presencia deempresas a las que los anunciantes acuden para verificar que sus anuncios detelevisin son realmente emitidos segn lo contratado. En la actualidad, pararealizar dicha verificacin se utilizan a grupos de individuos que completan unaserie de encuestas. Sera deseable transferir esta tarea a un sistema informtico[1].

    La deteccin automtica de los anuncios de televisin es un conjunto detcnicas computacionales que permiten detectar automticamente los anuncios de

    una secuencia de vdeo de televisin [2]. Un sistema informtico podra analizar elflujo de imgenes de la televisin y grabar con precisin el tiempo y fecha deemisin, as como el identificador de canal. Algunas de las posibles aplicacionesrequieren slo la deteccin de anuncios, como tal, mientras que en otras tambinse requiere el reconocimiento del anuncio en particular [1].

    La deteccin automtica de anuncios de televisin minimiza la intervencinhumana y los errores debido a esta, as como el coste que supone el seguimiento delos anuncios [4]. Es posible que las empresas tambin pretendan detectarautomticamente lo que sus competidores estn haciendo. Las empresas demarketing pueden estar interesadas en relacionar las caractersticas medibles delos diferentes anuncios a su xito en el mercado [1].

    Aunque es un tema que sigue siendo en gran medida del dominio de lainvestigacin, todos estos son objetivos de inters potencial para los productores yagencias de publicidad, posiblemente debido a esto existe una fuerte participacinde la industria, incluyendo a empresas como Philips o Google, as como laexistencia de muchas patentes [2][1].

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    8/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    9/96

    Estado del Arte

    -3-

    2.2. ENUMERACIN DE TCNICAS

    Existe un cierto grupo de trabajos relacionados con la deteccin de anunciosde televisin. Aunque bsicamente el objetivo fundamental es comn, existendiferentes variantes entre los distintos trabajos, de tal modo que mientras algunostrabajos solo buscan delimitar el bloque de anuncios, otros tienen como finalidadla deteccin de los propios anuncios. Existen, adems, trabajos en los que ladeteccin se realiza en tiempo real, mientras que en otros casos el anlisis serealiza sobre grabaciones. Esto va a influir de forma directa en la complejidad yvelocidad de los algoritmos utilizados.

    En base a lo anterior, podemos dividir los trabajos entre aquellos que

    analizan las caractersticas propias de los anuncios y aquellos otros que se basanen un aprendizaje de los mismos.

    A continuacin se van a presentar una serie de estrategias que pretendenrealizar la deteccin de anuncios defendidas por ciertos autores.

    1. La deteccin del comienzo de los anuncios se puede realizar mediante labsqueda de los planos monocromticos o negros que se encuentran alcomienzo de los anuncios, siendo este un problema relativamente sencillo

    de procesamiento de seal. Sin embargo, las escenas que presentan coloresoscuros hacen que sea difcil, por lo que se han propuesto varias tcnicaspara resolver este problema: establecer un umbral medio, utilizar lavarianza de la luminancia de pixel o hacer uso de la entropa del histogramade luminancia.

    Por otra parte algunos autores han notado que el logotipo del canal noestuvo presente durante los comerciales. La deteccin del logotipo puedeser un indicador interesante pero es, por desgracia, una difcil tarea:

    podemos encontrarnos con logotipos semi-transparentes, color dinmico,movimiento, etc. Adems, la presencia del logotipo no siempre essistemtica en los programas, lo que resulta en falsos positivos.

    Se puede analizar tambin la tasa de actividad, puesto que una alta tasa deactividad puede ser indicativa de que estamos en presencia de un anuncio.Esto se debe a que una de las formas en que los anunciantes intentan captarla atencin de los espectadores es mediante la introduccin de muchomovimiento.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    10/96

    Estado del Arte

    -4-

    Otra caracterstica propia de los bloques de anuncios es la duracin de losmismos. Se puede ver, segn el pas, que de media entre cada bloque deanuncios hay una duracin de 20,9 minutos, mientras que el propio bloque

    de anuncios presenta una duracin de 3,7 minutos.

    Tambin se puede hacer una medida de los bordes de la zona de imagen dela pantalla mediante tcnicas de deteccin de bordes y de la longitud de losvectores de movimiento. Esta observacin tambin da lugar a muchas falsasalarmas: las pelculas de accin, clips, trailers, etc.

    Otras caractersticas tambin se pueden utilizar: la presencia de texto porun mtodo de deteccin de texto. Desgraciadamente, este es un proceso

    costoso y de igual modo pueden producirse muchas falsas alarmas (trailers,noticias, televisin, etc.) [2].

    2. Debido al hecho de que cada tipo de programa tiene sus caractersticasparticulares, por ejemplo: dibujos animados, pelculas, noticias, series detelevisin, deportes, etc.; es muy difcil, y quizs imposible, llegar a unasolucin que funcione para todos los tipos de programa. Por lo tanto, sedecide dividir el proyecto en dos partes [7]:

    a. En la primera parte nos ocupamos de los tipos de programas quevisualizan la mayora de los espectadores: series de televisin (noanimadas) y pelculas. Con el fin de detectar bloques comerciales, serealiz la deteccin de cortes duros (cambios de planos) y ladeteccin de texto en el segmento de vdeo. Asumimos que, en seriesde televisin y pelculas, los cortes duros y el texto rara vezaparecen; al contrario de lo que pasa en los anuncios, en los queaparecen con frecuencia. La integracin de estas dos herramientasnos puede proporcionar un algoritmo eficiente que pueda detectar

    bloques comerciales de una manera fiable.

    b. En la segunda parte del proyecto tratamos de resolver el problemaque plantea la deteccin de anuncios durante la emisin de dibujosanimados y deportes. Usando la deteccin de histograma para cadatipo de programa, se detecta el bloque comercial fuera del programade televisin.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    11/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    12/96

    Estado del Arte

    -6-

    lmites exactos son, a continuacin, refinados basndose en lascaractersticas as obtenidas.

    Despus del refinamiento de contorno, eliminamos los valores extremos dealgunas observaciones [5].

    6. Realiza una divisinde caractersticas tcnicas, por una parte las que sondirectamente medibles y por otra las que son medibles de una formaindirecta [1].

    Las caractersticas medibles de forma directa son:

    La duracin temporal del bloque completo de anuncios y de un soloanuncio.

    Dos anuncios consecutivos estn separados por un pequeo corte de5-12 planos negros.

    El volumen del audio aumenta al comienzo del anuncio y se reduce alfinal del mismo.

    Las caractersticas medidas de forma indirecta:

    Un observador humano percibe los anuncios animados y con muchomovimiento. Esto se refleja en una alta frecuencia de cortes y porrpidos cambios del contenido del color.

    Los comerciales a menudo muestran imgenes estticas,especialmente al final de los mismos, presentando el producto, laempresa, etc.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    13/96

    Estado del Arte

    -7-

    2.3. OTRAS TECNOLOGAS

    Como se ha presentado anteriormente, existen un nmero apreciable deestudios cientficos y patentes que trataban el tema de deteccin automtica de

    anuncios de televisin, en cambio, la mayora de estos trabajos no dejan claro si las

    tcnicas propuestas son realmente eficaces [2].

    Como productos terminados podemos destacar Comskip que es un detector

    comercial mpeg libre. Es una aplicacin de consola de Windows que lee un archivo

    MPEG y analiza el contenido en base a una gran cantidad de parmetros configurables.

    Tras el anlisis se genera un archivo en varios formatos posibles que contiene la

    ubicacin de los anuncios publicitarios en el interior del archivo mpeg.

    Desde la aparicin de XP Media Center 2005, se ha incluido la herramienta

    llamada DVRMS", que presenta muchas herramientas para analizar archivos grabados

    con Media Center presentando funciones como cortar, editar, comprimir, etc. Pero lo

    que es realmente destacable es la funcin Skip Feature Comercial. Esto es

    exactamente lo que su nombre sugiere: una funcin para analizar los programas de

    televisin grabados y que de forma automtica se salta los bloques comerciales

    mientras ests viendo la grabacin.

    Por otra parte el programa de deteccin automtica de anuncios ms avanzado

    disponible al pblico en general se denomina ShowAnalyzer. Segn su creador con una

    adecuada configuracin se puede obtener un porcentaje de deteccin del 100%,

    tambin es cierto que el mismo autor aclara que la configuracin de la aplicacin no es

    para pusilnimes.

    A un nivel hardware, ya hay televisores que incluyen un DVR incorporado de

    serie (como el LG 60PY2DR) [3].

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    14/96

    Memoria Descriptiva

    -8-

    3. MEMORIA DESCRIPTIVA3.1. INTRODUCCIN

    En el estado del arte se ha sealado que los anuncios de la mayora de lospases presentan una serie de caractersticas bien definidas, tanto en el aspectosonoro como en el visual. En el presente proyecto solo se aborda la deteccin deanuncios desde el plano visual. Desde el plano visual los bloques de anunciospresentan una estructura bien definida. Al inicio de un bloque de anuncios, tras unprograma televisivo cualquiera, se proyectan una serie de fotogramascompletamente negros, tras los cuales tiene comienzo el anuncio. En la aplicacinse hace uso de esta caracterstica para detectar el posible comienzo de un anuncio.

    Figura 1: Ejemplo de cambio de plano

    La aplicacin desarrollada hace uso de los cambios de plano. Se define uncambio de plano como la transicin entre dos fotogramas de vdeo consecutivos,siendo el primer fotograma un plano negro y el siguiente plano el primero de unposible anuncio.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    15/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    16/96

    Memoria Descriptiva

    -10-

    Se realiza una comparacin de cada pixel con su consecutivo y del ltimocon el primero, esta comparacin se implementa como una resta: si el resultado esmayor que cero, se guarda el resultado en un vector binario en la posicin

    correspondiente al bit analizado un 1; en caso contrario, se guarda un 0.

    Es fcil comprobar que la probabilidad de error es menor cuanto mayor seael nmero de elementos del vector binario huella, pero a cambio el programa sepuede volver ms lento aumentando la probabilidad de cometer un error en elmuestreo. En el captulo de conclusiones se explica en detalle este asunto.

    Durante la ejecucin, los programas estn continuamente buscandocambios de planos, y cuando se produce uno, se mide el tiempo transcurrido desdeque ste ocurre hasta el siguiente muestreo. Esta segunda imagen es a la cual se le

    aplican los algoritmos y se le calcula la huella.

    De lo anterior se deduce que solo existe una oportunidad para capturar laimagen y presentarla. Se podra optar por otras estrategias, como hacer secuenciasde fotogramas desde que se detecta el cambio de plano, pero de esta forma seaumentara la tasa de falsas detecciones, as como los tiempos de procesamiento,por lo que la denominacin tiemporeal empezara a desvirtuarse.

    Se debe poner el mximo empeo en la precisin del muestreo, de talmanera que, idealmente, el tiempo de estabilizacin de la imagen debe ser un valor

    lo ms constante posible.

    El ojo humano tiene una velocidad de respuesta a un estmulo luminoso de,aproximadamente 30 Hz. Realizando un anlisis conservador, se va a recibir unnuevo plano cada 1/30 seg = 33 mseg (PAL es 25 fps y NTSC 30 fps).

    Para no perder ningn fotograma la frecuencia de captura debe ser mayorde 30 fps (tm < 33 mseg o 40 msg). El temporizador har todo lo posible por lanzaruna excepcin cada N mseg, pero es posible que tarde un poco ms, o incluso unpoco menos, por lo que aparece una incertidumbre asociada al temporizador. Al

    mismo tiempo. Se ha podido comprobar que, al programar la frecuencia deltemporizador, cuanto mayor sea sta, menor es la precisin; y, por tanto, mayor laincertidumbre. De todo lo anterior, se desprende que se debe llegar a uncompromiso entre la frecuencia de muestreo y la incertidumbre.

    Dado lo crtico de la eleccin de la frecuencia de muestreo para un adecuadofuncionamiento de las aplicaciones de deteccin y generacin de huellas, se hacreado la aplicacin PFC Setup Cambio Plano que es capaz de determinar lafrecuencia ptima.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    17/96

    Memoria Descriptiva

    -11-

    El programa PFC Setup Cambio Plano realiza una serie de capturas de unasecuencia de vdeo, al final de cada captura, guarda el valor real de los tiempostranscurridos entre las capturas y se muestra una lista con los valores que facilita

    la eleccin de la frecuencia de muestreo en funcin de la mquina con la que seest trabajando.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    18/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    19/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    20/96

    Memoria Descriptiva

    -14-

    Para determinar el valor umbral de negro en el cambio de plano, laaplicacin PFC Setup Cambio Plano realiza una serie de capturas de la fuente devdeo y calcula para cada imagen el histograma de la misma, guardando elresultado en un histograma general. Finalmente se hace uso de este histogramapara determinar el valor ms adecuado de cambio de plano.

    Figura 3: Falso cambio de plano

    3.2.4.Clculo de la Frecuencia de Muestreo

    Como se ha mencionado anteriormente la eleccin de una adecuadafrecuencia de muestreo es fundamental para el buen funcionamiento de laaplicacin. Adems, se considera que se trabaja sobre una mquina losuficientemente potente, lo cual es un requisito indispensable.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    21/96

    Memoria Descriptiva

    -15-

    Clculo de la huella:

    Figura 4: Esquema de generacin de una huella

    iempo de muestreo , iempo de frame ,

    Se hace evidente que, para que la huella pueda ser reconocida conposterioridad, ha debido de crearse cumpliendo la siguiente relacin:

    La frecuencia de muestreo es configurable desde el timer, que es el que

    produce los eventos que tienen asociado el cdigo de captura de las imgenes.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    22/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    23/96

    Memoria Descriptiva

    -17-

    3.3. ARQUITECTURA DEL SISTEMA3.3.1.Arquitectura del Hardware

    3.3.1.1. OrdenadorEs el sistema sobre el que se van a ejecutar los programas software que se

    han realizado. Es un elemento crtico del proyecto, puesto que se requiere tiemporeal en el procesamiento del programa de deteccin. Existen varias caractersticasdel ordenador que son clave: la velocidad del microprocesador y el nmero dencleos. La memoria no es un problema en su tamao, pero s en la velocidad decarga de los datos.

    El equipo utilizado es un Intel Core 2 Duo CPU P7350 de la familia Penryn a2 GHz.

    En cualquier caso, la aplicacin PFC Setup Cambio Plano se encarga dedeterminar si un equipo tiene la potencia necesaria para poder ejecutar, con lasmnimas garantas, la aplicacin de deteccin de anuncios.

    El que la CPU est constituida por dos ncleos presenta una gran ventaja enla aplicacin puesto que uno de los ncleos ejecuta la interfaz de usuario y el otroncleo realiza las tareas de procesamiento de datos.

    Figura 5: Ordenador

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    24/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    25/96

    Memoria Descriptiva

    -19-

    3.3.2.Arquitectura del Software3.3.2.1. Sistema Operativo

    El sistema operativo es un programa que se encarga de gestionar unamultitud de tareas, como puede ser la gestin de los recursos hardware, proveerservicios a los programas de aplicacin, acceso a memoria, etc.

    El sistema operativo seleccionado es el Windows Vista Home Premium conla actualizacin Service Pack 2. Se ha elegido este sistema operativo porquepermite la instalacin del sintonizador de televisin Avermedia as como la de losprogramas creados en el entorno de desarrollo Visual Studio de Microsoft, creadosen el lenguaje Visual C++ .Net. Tambin es imprescindible que sea compatible conDirectX y en concreto con el objeto MSVidCtl que proporciona todo lo necesariopara el desarrollo de aplicaciones de televisin tanto digitales como analgicaspara el lenguaje C++, C#, Visual Basic y .Net en general, adems de MFC.

    Otro motivo igualmente importante para seleccionar un sistema operativoWindows es que condiciona tanto el sintonizador de televisin que se puedeutilizar, como el entorno de desarrollo de las aplicaciones y el lenguaje sobre el quese escriben las propias aplicaciones. Esto no es trivial debido a la escasa cantidadde ejemplos y cdigos que existen para la sintonizacin de canales de televisinDVB y para la captura de imgenes. Por todo ello, se hace necesario implementar laaplicacin en el lenguaje en el que exista una mayor documentacin y en este caso

    el lenguaje es C++ para plataforma Windows.

    Figura 7: Sistema operativo

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    26/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    27/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    28/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    29/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    30/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    31/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    32/96

    Memoria Descriptiva

    -26-

    Figura 11: Esquema del algoritmo de deteccin de huellas

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    33/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    34/96

    Memoria Descriptiva

    -28-

    3. Comenzar: Este botn da acceso al comienzo de la aplicacin degeneracin de huellas. Tras ser pulsado, van apareciendo una serie dedilogos para seleccionar los archivos necesarios para generar las

    huellas de los anuncios y guardar el resultado en un archivo de salida.

    4. Detener: Este botn se debe pulsar cuando se crea conveniente salir dela aplicacin, siendo imprescindible ser pulsado una vez al final de lasesin de generacin de huellas.

    5. Salida de vdeo: Esta zona es un control ActiveX que permite visualizarla salida de vdeo, ya sea de televisin, vdeo, DVD o cualquier otrafuente compatible.

    6. Salida de texto: Aqu se muestra toda la informacin y eventos que segeneran durante la ejecucin de la aplicacin. Cada vez que detecta uncandidato a anuncio muestra la informacin por pantalla.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    35/96

    Memoria Descriptiva

    -29-

    3.5.2.Deteccin de Anuncios

    Como se puede comprobar, la interfaz de usuario de la aplicacin etectaanuncios es idntica a la de Generacin de uellas. Esta aplicacin analiza lasecuencia de vdeo y detecta los cambios de plano. Una vez detectados stos, tomael cambio de plano como referencia temporal para muestrear con precisin elplano candidato. Posteriormente, a este plano se le calcula la huella y se comparacon las lista de huellas. En caso se encontrarse una huella idntica, se muestra unmensaje a travs de la salida de texto y se produce una nueva entrada en el ficherode salida.

    Figura 13: Programa de deteccin de anuncios

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    36/96

    Memoria Descriptiva

    -30-

    3.5.3.Paso a paso3.5.3.1. Generacin de huellas

    Lo primero que hay que configurar es el valor del filtro de negro. Este valorse puede obtener haciendo uso de la aplicacin SETUP o mediante prueba y errorhasta que se encuentre un valor adecuado. Una vez configurado este parmetro, sepuede pulsar el botn Comenzar.

    Como se ha comentado anteriormente, al pulsar el botn van a aparecer porpantalla una serie de dilogos que permiten seleccionar los archivos necesarios enla ejecucin de la aplicacin.

    1. Seleccin del archivo de huellas

    Figura 14: Seleccin del archivo de huellas

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    37/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    38/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    39/96

    Memoria Descriptiva

    -33-

    1. Seleccin del archivo de huellas

    Figura 17: Seleccin del archivo de huellas

    El archivo de huellas almacena las huellas de todos los anuncios que estnregistrados. Por lo tanto debemos de seleccionar el archivo que previamente se hacreado en la aplicacin de generacin de huellas, adems de configurar de formaidntica el filtro de negro.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    40/96

    Memoria Descriptiva

    -34-

    2. Seleccin del archivo de anuncios

    Figura 18: Seleccin del archivo de anuncios

    El archivo de anuncios guardar una lnea por cada anuncio encontrado,almacenando en la misma informacin til como la fecha, la hora, etc.

    Figura 19: Salida del archivo de anuncios

    Como se puede apreciar en la primera columna de cada fila, se guarda elnombre del anuncio, en la segunda la fecha y en la tercera la hora exacta de lacaptura del anuncio.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    41/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    42/96

    Pruebas, Resultados y Conclusiones

    -36-

    4. PRUEBAS, RESULTADOS Y CONCLUSIONES4.1. PRUEBAS Y RESULTADOS

    4.1.1.Configuracin previa a la realizacin de las pruebasEl objetivo de las pruebas de deteccin es medir el rendimiento bajo unas

    condiciones de trabajo normales. Aunque la calidad del vdeo a analizar es baja,el equipo sobre el que se trabaja debe tener una potencia adecuada, as como estarcorrectamente configurada la aplicacin de acuerdo a las caractersticas tcnicasde este equipo. Para ayudar a realizar esta configuracin, se ha desarrollado laaplicacin PFC Setup Cambio Plano, la cual determina, para una determinadafuente de vdeo, tanto su umbral de negro en los cambios de plano como lafrecuencia de muestreo. Si la frecuencia de muestreo supera los 40 ms no existegaranta en la deteccin de los anuncios; aunque si la desviacin es pequea, laaplicacin puede funcionar correctamente, incluso con un muy alto rendimiento.Adems de todo lo anterior, el equipo debe tener cerrada todas las aplicaciones yprocesos que no sean imprescindibles para el sistema operativo o para elfuncionamiento de la propia aplicacin. Por ltimo, en el gestor de tareas deWindows se le debe asignar la mxima prioridad a la aplicacin.

    4.1.2.PruebasSe han realizado dos tipos de pruebas: el primer tipo pretende demostrar o

    medir la fiabilidad de la aplicacin bajo un uso normal con un nivel de calidad de

    imagen bajo medio; en el segundo tipo de pruebas se va un paso ms all y sebusca el lmite de funcionalidad del algoritmo.

    4.1.2.1. Pruebas de deteccin de anuncios

    Para la realizacin de las pruebas se han utilizado tres secuencias de vdeocon anuncios de televisin reales. La calidad de imagen de estos vdeos expresada apartir del bitrate es de 180, 190 y 250 Kbps respectivamente. El bitrate se calculacomo el cociente entre el peso en Kb del vdeo y la duracin en segundos delmismo.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    43/96

    Pruebas, Resultados y Conclusiones

    -37-

    A cada vdeo es necesario obtenerle su valor umbral de cambio de plano,para lo que se utiliza, como ya se ha mencionado anteriormente, la aplicacin PFCSetup Cambio Plano. Una vez obtenido este parmetro, se introduce en laaplicacin de generacin de huellas junto con la frecuencia de muestreo (que debeser menor de 40 ms) y se comienza el proceso. Una vez terminado este proceso, seobtiene un archivo de salida que debe ser editado para eliminar los falsos cambiosde plano y para asignar nombres a los anuncios.

    Tras terminar de editar el archivo de generacin de huellas se procede alanzar la aplicacin PFC Deteccin Anuncios y se deja ejecutar la aplicacin. Alfinalizar la aplicacin, se genera un archivo de salida en el que se ha guardado encada lnea un posible anuncio detectado. En caso de haber detectado un cambio de

    plano, pero no encontrar la huella en la base de datos, se guarda la cadena parapoder ser analizada con posterioridad.

    Tras realizarse el anlisis correspondiente a los datos anteriormentecomentados, se obtienen los siguientes resultados:

    Vdeos Anuncios Detectados Falsos

    deteccin

    Cambios

    detectados

    Falsos

    cambios

    La Sexta 1 26 26 0 26 7

    La Sexta 2 27 27 0 27 4

    Mejores anuncios 13 13 0 13 3

    Totales 66 66 0 66 14

    Figura 21: Probabilidades de deteccin de anuncios y de falso cambio de plano

    0

    0,2

    0,4

    0,6

    0,8

    1

    1,2

    La Sexta 1 La Sexta 2 Mejores

    anuncios

    Probabilidad de detectar

    anuncio correcto

    Probabilidad falso cambio

    de plano

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    44/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    45/96

    Pruebas, Resultados y Conclusiones

    -39-

    Figura 22: Frecuencia de ocurrencia de las huellas para distintas calidades de vdeo

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    46/96

    Pruebas, Resultados y Conclusiones

    -40-

    El segundo tipo de grfica muestra al igual que en la prueba anterior laprobabilidad de error, pero frente a las diferentes velocidades o bitrate.

    Figura 23: Probabilidad de error de deteccin de anuncio en funcin de la calidad de vdeo

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    47/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    48/96

    Pruebas, Resultados y Conclusiones

    -42-

    Si se considera que, tanto h como w deben ser nmeros enteros y queh/w=0.75, la huella ms pequea mayor que h1 que presenta unos valores de h y wque son nmeros enteros es la huella de 48 bits.

    Se podra pensar que un aumento tan considerable en el nmero de bits porhuella tendra como consecuencia un tiempo de procesamiento mayor de cadacaptura. Lo cierto es que para aumentar el nmero de bits hay que suavizar elescalado que se realiza sobre la imagen, siendo esta operacincomputacionalmente mucho ms pesada.

    Finalmente, se puede comprobar que la aplicacin no sufre retraso alguno,pero a cambio aumenta considerablemente el rendimiento y la robustez de la

    aplicacin.

    Por otra parte, se ha podido constatar a lo largo del desarrollo del proyectodos puntos de especial relevancia para el buen funcionamiento de la aplicacin:

    El primer punto es el relativo a la eleccin del umbral de negro de loscambios de plano.

    El segundo punto es la eleccin de una correcta frecuencia demuestreo.

    Para intentar solucionar o paliar ambos problemas se ha desarrollado laaplicacin PFC Setup Cambio Plano. Aunque la aplicacin genera soluciones decompromiso para ambos problemas, la forma de abordar el problema escompletamente diferente para cada caso.

    Para la seleccin del umbral de negro de cambio de plano la aplicacincaptura una serie de secuencias de vdeo de la fuente que se quiere analizar.Posteriormente se realiza un histograma de escala de grises (0 - 255) de losdiferentes planos capturados, siendo el histograma lo que proporciona la

    aplicacin al usuario.

    Para tomar una decisin, se tiene en cuenta que los valores ms prximos alnegro son a su vez los nmeros ms prximos al cero en el histograma.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    49/96

    Pruebas, Resultados y Conclusiones

    -43-

    Figura 25: Histograma de escala de grises para determinacin de umbral de negro

    Al analizar el histograma se aprecian 3 o 4 valores de color significativosentre los valores ms pequeos de color (no se debe tomar como un valorsignificativo un valor con baja frecuencia que pueda valer cero, aunque sea el valormnimo de color). Se toma el mnimo valor significativo. Se ha podido comprobarexperimentalmente que es recomendable sumarle 4 puntos ms a este valor, comofactor de seguridad. Siendo este el valor umbral buscado Vh.

    Si se sigue este protocolo no se corre el riesgo de perder ningn cambio deplano, aunque s de detectar un falso cambio de plano, pero como ya se haexplicado a lo largo del presente proyecto eso no representa un problema degravedad.

    El otro problema recurrente y quizs de mayor importancia es el relativo ala frecuencia de muestreo. Como ya se ha comentado para tener una tasa dedeteccin de anuncios del 100 % es imprescindible que la aplicacin muestree lafuente de vdeo a una tasa no inferior a 25 frames por segundo o lo que es lomismo una captura cada menos de 40 ms. Por otra parte conviene que lafrecuencia de muestreo se ajuste lo ms posible a la velocidad real deprocesamiento del equipo utilizado, de tal modo que si el ordenador es mspotente se pueden realizar capturas ms rpidamente y a la inversa, si no es tanpotente no conviene subir demasiado la frecuencia, puesto que aunque la mitad delas veces realice las capturas en tiempo la otra mitad restante no va a poderrealizarlas a tiempo pudiendo dejar de capturas frames importantes.

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    50/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    51/96

    Bibliografa

    -45-

    5. BIBLIOGRAFA[1] R. LIENHART, C. KUHMNCH y W. EFFELSBERG. On the Detection and

    Recognition of Television Commercials. En Proc. IEEE Conf. MultimediaComputing and System. Ottawa, Canada. Jun 1997.Pag. 509 516.

    [2] SHANOO. Automatic Detection of TV Commercials Technology. Allabtworld. 28Junio 2011.

    [3] ILYA VEDRASHKO. Automatic Commercial Skipping. Blog Advertising Lab. 18

    Febrero 2007.

    [4] SWATI D. BENDALE y BIJAL.J.TALATI. T.V. Commercial detection in serialvideos. International journal of computer engineering & technology (IJCET).Volumen 4, Asunto 3, May-June (2013). Tamilnadu, India. Pag. 86-92.

    [5] JUN-CHENG CHEN, JEN-HAO YEH, WEI-TA-CHU, JIN-HAU KUO y JA-LING WU.Improvement of Commercial Boundary Detection Using Audiovisual Features.

    Lecture Notes in Computer Science, vol. 3767, pp. 776786, 2005, Jeju, Korea.

    [6] SATTERWHITE, B and MARQUES, O. Automatic detection of TV commercials.Potentials, IEEE (Volume:23 , Issue: 2 ), pp 9 - 12. April-May 2004.

    [7] IDAN MIEXELS and BARAK SERVATKA. Automatic Detection of TVCommercials. Israel Institute of Technology, The Vision and Image SciencesLaboratory, 2004.

    [8] http://msdn.microsoft.com

    [9] http://www.codeproject.com

    http://msdn.microsoft.com/en-us/library/ms787278.aspxhttp://msdn.microsoft.com/en-us/library/ms787278.aspxhttp://www.codeproject.com/Articles/11558/Thread-for-beginners-get-familiar-with-concept-andhttp://www.codeproject.com/Articles/11558/Thread-for-beginners-get-familiar-with-concept-andhttp://www.codeproject.com/Articles/11558/Thread-for-beginners-get-familiar-with-concept-andhttp://msdn.microsoft.com/en-us/library/ms787278.aspx
  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    52/96

    Anexo

    -46-

    ANEXO: CDIGO FUENTE

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    53/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    54/96

    Anexo

    -48-

    GeneraBD.h

    #pragmaonce

    #include"Huellas.h"#include"Procesador.h"#include"Reproductor.h"#include"Rendimiento.h"#include"GeneraHuellas.h"

    usingnamespace System::Drawing;usingnamespace System::Threading;usingnamespace System::Windows::Forms;usingnamespace System;usingnamespace System::ComponentModel;

    refclass GeneraBD{

    public:delegatevoid SetTextDelegate(String ^ Texto);GeneraBD(void);GeneraBD(ListBox ^ SalidaTexto);GeneraBD(ListBox ^ SalidaTexto,AxMSVidCtlLib::AxMSVidCtl ^ TV);Thread ^ HiloPrincipal;ListBox ^ SalidaTexto;Reproductor ^ TV;Procesador ^ PDI;GeneraHuellas ^ ArchivoHuellas;Huellas ^ HuellaActual;Huellas ^ HuellaAnterior;int ValorMedio;int FiltroLP;bool Cambio;float Fps;int NumTics;bool CambioPlano(Bitmap ^ ImagenBN);void ProcesamientoImagen(); //Aqu es dnde entravoid PasarTexto(String ^ Cadena); //en accin el hilo

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    55/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    56/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    57/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    58/96

    Anexo

    -52-

    Reproductor.h

    #pragmaonce

    usingnamespace System::Drawing;usingnamespace System::Windows::Forms;usingnamespace AxMSVidCtlLib;

    //using namespace System::Windows::Forms;

    /** La clase reproductor al ser creada referencia el componente de Form* TV.* De esta manera todos los mtodos de Reproductor puede acceder a TV* y facilita* la captura y procesado de las imgenes del vdeo reproducido

    */

    refclass Reproductor{

    public:

    AxMSVidCtlLib::AxMSVidCtl ^Video;OpenFileDialog ^Explorador;Image ^ ImagenCapturada;Image ^ ImagenAnterior;Image ^ ImagenComprimida;Image ^ SalidaImagen;

    Reproductor(AxMSVidCtlLib::AxMSVidCtl ^ TV);

    Image ^ CapturaImagen();void Reproduce();void Parar();Image ^ ComprimeImagen(Image ^ Origen);Image ^ ComprimeImagen(Image ^ Origen,int ModoCompresion);Image ^ ExpandeImagen();bool NuevaImagen(Image ^ Nueva, Image ^ Anterior);

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    59/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    60/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    61/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    62/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    63/96

    Anexo

    -57-

    Procesador.h

    #pragmaonce

    usingnamespace System::Drawing;usingnamespace System::Drawing::Imaging;usingnamespace System::Windows::Forms;

    refclass Procesador{

    public:ImageAttributes ^ AtributosImagen;ColorMatrix ^ MatrizColor;Image ^ ImagenComprimida;Image ^ ImagenBase;

    Bitmap ^ ImagenBN;int AnchoImgComp;int AltoImgComp;int ValorMedio;Procesador(void);Procesador(Image ^ Origen);Image ^ ComprimeImagen();Image ^ ComprimeImagen(Image ^ Origen);Image ^ ExpandeImagen();Bitmap ^ ConvierteBN();

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    64/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    65/96

    Anexo

    -59-

    Tapiz->DrawImage(Origen,0,0,this->AnchoImgComp,this->AltoImgComp);ImagenComprimida = (Image )(Auxiliar);return (Image ^)gcnew Bitmap(Auxiliar);

    }

    Image ^ Procesador::ComprimeImagen(){

    Graphics ^ Tapiz;Image ^ Salida;Bitmap ^ Auxiliar;Auxiliar = gcnew Bitmap(this->AnchoImgComp,this->AltoImgComp);Tapiz = Graphics::FromImage(Auxiliar);Tapiz->InterpolationMode = System::Drawing::Drawing2D::InterpolationMode::HighQualityBicubic;Tapiz->DrawImage(ImagenBase,0,0, this->AnchoImgComp,this->AltoImgComp);ImagenComprimida = (Image )(Auxiliar);

    return (Image ^)gcnew Bitmap(Auxiliar);}

    Image ^ Procesador::ExpandeImagen(){

    Graphics ^ Tapiz;Image ^ Salida;Bitmap ^ Auxiliar;Auxiliar = gcnew Bitmap(ImagenBase->Width,ImagenBase->Height);Tapiz = Graphics::FromImage(Auxiliar);Tapiz->InterpolationMode = System::Drawing::Drawing2D::InterpolationMode::High;Tapiz->DrawImage(ImagenComprimida,0,0,

    ImagenBase->Width,ImagenBase->Height);return (Image ^)gcnew Bitmap(Auxiliar);

    }

    Bitmap ^ Procesador::ConvierteBN(){

    Graphics ^ Tapiz;ImagenBN = gcnew Bitmap(ImagenComprimida->Width,ImagenComprimida->Height);Tapiz = Graphics::FromImage(ImagenBN);Tapiz->DrawImage(ImagenComprimida,Rectangle(0,0,ImagenComprimida->Width,ImagenComprimida->Height),0,0,

    ImagenComprimida->Width,ImagenComprimida->Height,GraphicsUnit::Pixel,AtributosImagen);return ImagenBN;

    }

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    66/96

    Anexo

    -60-

    Clase Genera Huellas

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    67/96

    Anexo

    -61-

    GeneraHuellas.h

    pragmaonce

    #include"Huellas.h"

    usingnamespace System;usingnamespace System::IO;usingnamespace System::Collections::Generic;

    refclass GeneraHuellas{

    public:OpenFileDialog ^ Explorador;StreamWriter ^ FicheroEscritura;StreamReader ^ FicheroLectura;

    GeneraHuellas(void);void CrearArchivo();void AbrirArchivo();void Aadir(Huellas ^ Nueva);void GuardarTodo();void LeerArchivoCompleto();String ^ ExtraeBits(String ^ Huella);String ^ ExtraeBits(Huellas ^ Huella);bool BuscaHuella(Huellas ^ Huella);List ^ Lista;List ^ ListaCadenas;

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    68/96

    Anexo

    -62-

    GeneraHuellas.cpp

    #include"StdAfx.h"

    #include"GeneraHuellas.h"

    GeneraHuellas::GeneraHuellas(void){

    Lista = gcnew List();ListaCadenas = gcnew List();Explorador = gcnew OpenFileDialog();

    }

    void GeneraHuellas::AbrirArchivo(){

    Explorador->Filter = "txt files (*.txt)|*.txt";Explorador->ShowDialog();

    if(File::Exists(Explorador->FileName)){

    FicheroLectura = gcnew StreamReader(Explorador->FileName);}else{

    File::Create(Explorador->InitialDirectory+ "Huellas2.txt");}

    }

    void GeneraHuellas::CrearArchivo(){

    Explorador->Filter = "txt files (*.txt)|*.txt";Explorador->ShowDialog();if(File::Exists(Explorador->FileName))

    { FicheroEscritura = gcnew StreamWriter(Explorador->FileName);

    }else{File::Create(Explorador->InitialDirectory+ "Huellas2.txt");

    }FicheroEscritura->WriteLine("Cadena binaria"+"\t"+"Nombre del anuncio\t"+"Nmero de anuncio");

    }

    void GeneraHuellas::Aadir(Huellas ^ Nueva){

    Lista->Add(Nueva);}

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    69/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    70/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    71/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    72/96

    Anexo

    -66-

    Huellas.h

    #pragmaonce

    #include"procesador.h"

    usingnamespace System;usingnamespace System::Collections;usingnamespace System::Drawing;usingnamespace System::Drawing::Imaging;usingnamespace System::Windows::Forms;

    refclass Huellas :public Procesador{

    public:

    BitArray ^ HuellaBinaria;Procesador ^ Huella;String ^ CadenaHuella;int NumeroBits;String ^ Anuncio;int NumeroAnuncio;DateTime ^ FechaHora;//Bitmap ^ aux;

    Huellas(void);Huellas(Procesador ^ Huella);Huellas(String ^ Huella);BitArray ^ Genera();

    BitArray ^ Genera(String ^ Huella);BitArray ^ Genera(Procesador ^ Huella);BitArray ^ Huellas::Genera(array ^ ListaPixelBN);array ^ GeneraListaBN(Bitmap ^ ImagenBN);bool ComparaPixel(Color ^ Actual, Color ^ Siguiente);bool Huellas::ComparaHuellas(BitArray ^ Huella1,BitArray ^ Huella2);String ^ ExtraeBits(Huellas ^Huella);

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    73/96

    Anexo

    -67-

    Huellas.cpp

    #include"StdAfx.h"

    #include"Huellas.h"

    Huellas::Huellas(void){

    this->NumeroBits = 12;HuellaBinaria = gcnew BitArray(NumeroBits);this->Huella = gcnew Procesador();

    }

    Huellas::Huellas(Procesador ^ Huella){

    NumeroBits = Huella->AltoImgComp*Huella->AnchoImgComp;HuellaBinaria = gcnew BitArray(NumeroBits);

    this->FechaHora = gcnew DateTime();this->Huella = Huella;this->AltoImgComp = Huella->AltoImgComp;this->AnchoImgComp = Huella->AnchoImgComp;this->AtributosImagen = Huella->AtributosImagen;this->ImagenBase = Huella->ImagenBase;this->ImagenBN = Huella->ImagenBN;this->ImagenComprimida = Huella->ImagenComprimida;

    }

    Huellas::Huellas(String ^ Huella){

    NumeroBits = Huella->Length;

    HuellaBinaria = Genera(Huella);}

    BitArray ^ Huellas::Genera(){

    int i,j,ind;BitArray ^ Aux;array ^ ListaPixelBN;ListaPixelBN = gcnewarray(16);Aux = gcnew BitArray(16);ind = 0;for(j=0; jAltoImgComp; j++){

    for(i=0;iAnchoImgComp;i++){if(j ==Huella->AltoImgComp-1 &&i == Huella->AnchoImgComp-1){

    HuellaBinaria->Set(ind,ComparaPixel(Huella->ImagenBN->GetPixel(i,j),Huella->ImagenBN->GetPixel(0,0)));

    }else{if(j == Huella->AltoImgComp - 1)

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    74/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    75/96

    Anexo

    -69-

    HuellaBinaria->Set(ind,ComparaPixel((Color ^)ListaPixelBN->GetValue(ind),(Color ^)ListaPixelBN->GetValue(0)));

    }else{

    HuellaBinaria->Set(ind,ComparaPixel((Color ^)ListaPixelBN->GetValue(ind),(Color ^)ListaPixelBN->GetValue(ind+1)));

    }ind ++;

    }}

    return Aux;}

    BitArray Huellas::Genera(Procesador Huella){

    int i,j,ind;

    BitArray ^ Aux;Aux = gcnew BitArray(NumeroBits);ind = 0;for(j=0; jAltoImgComp; j++){

    for(i=0;iAnchoImgComp;i++){

    if(j ==Huella->AltoImgComp-1 &&i == Huella->AnchoImgComp-1){

    HuellaBinaria->Set(ind,ComparaPixel(Huella->ImagenBN->GetPixel(i,j),Huella->ImagenBN->GetPixel(0,0)));

    }else{if(j == Huella->AltoImgComp - 1){

    HuellaBinaria->Set(ind,ComparaPixel(Huella->ImagenBN->GetPixel(i,j),Huella->ImagenBN->GetPixel(i+1,j)));

    }else{if(i == Huella->AnchoImgComp - 1){

    HuellaBinaria->Set(ind,ComparaPixel(Huella->ImagenBN->GetPixel(i,j),Huella->ImagenBN-GetPixel(0,j+1)));

    }else{HuellaBinaria->Set(ind,ComparaPixel(Huella->ImagenBN->GetPixel(i,j),Huella->ImagenBN->GetPixel(i+1,j)));

    }}

    }ind ++;

    }}

    return Aux;

    }

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    76/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    77/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    78/96

    Anexo

    -72-

    Clase Detecta

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    79/96

    Anexo

    -73-

    Detecta.h

    #pragmaonce

    #include"GeneraBD.h"#include"Huellas.h"

    usingnamespace System::IO;usingnamespace System::Collections::Generic;refclass Detecta :public GeneraBD{

    public:Detecta(void);Detecta(System::Windows::Forms::ListBox ^SalidaTexto,AxMSVidCtlLib::AxMSVidCtl ^TV);void GuardarTodo();

    void CrearArchivo();void Aadir(Huellas ^ Anuncio);GeneraBD ^ BaseDatos;StreamWriter ^ Fichero;OpenFileDialog ^ Explorador;GeneraHuellas ^ ArchivoAnuncios;

    };

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    80/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    81/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    82/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    83/96

    Anexo

    -77-

    (PFC Detecta Anuncios)Form1.h

    #pragmaonce

    #include"Detecta.h"#include"GeneraBD.h"#include"Huellas.h"#include"Procesador.h"#include"Reproductor.h"#include"Rendimiento.h"

    namespace PFCDetectaAnuncios{

    usingnamespace System;usingnamespace System::ComponentModel;usingnamespace System::Collections;

    usingnamespace System::Windows::Forms;usingnamespace System::Data;usingnamespace System::Drawing;usingnamespace System::Windows::Forms;usingnamespace System::Threading;

    /// /// Resumen de Form1////// ADVERTENCIA: si cambia el nombre de esta clase,/// deber cambiar la propiedad 'Nombre de archivos/// de recursos' de la herramienta de compilacin/// de recursos administrados asociada con todos los

    /// archivos .resx de los que depende esta clase. De lo/// contrario, los diseadores no podrn interactuar/// correctamente con los recursos adaptados asociados/// con este formulario.///

    publicrefclass Form1 : public System::Windows::Forms::Form{public:

    bool CambioPlano;DateTime ^ t1;Detecta ^ Anuncios;Form1(void)

    { InitializeComponent();////TODO: agregar cdigo de constructor aqu//

    }

    protected:/// /// Limpiar los recursos que se estn utilizando./// ~Form1(){

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    84/96

    Anexo

    -78-

    if (components){

    delete components;}

    }

    private: AxMSVidCtlLib::AxMSVidCtl^ SalidaVideo;private: System::Windows::Forms::ListBox^ SalidaTexto;protected:protected:private: System::Windows::Forms::NumericUpDown^ EntradaFiltro;private: System::Windows::Forms::Label^ label1;private: System::Windows::Forms::Button^ button1;private: System::Windows::Forms::Button^ button2;private: System::Windows::Forms::Timer^ Reloj;private: System::ComponentModel::IContainer^ components;private:

    /// /// Variable del diseador requerida.

    ///

    #pragmaregion Windows Form Designer generated code/// /// Mtodo necesario para admitir el Diseador./// No se puede modificar/// el contenido del mtodo con el editor de cdigo./// void InitializeComponent(void){

    this->components = (gcnew System::ComponentModel::Container());

    System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));this->SalidaVideo = (gcnew AxMSVidCtlLib::AxMSVidCtl());this->SalidaTexto = (gcnew System::Windows::Forms::ListBox());this->EntradaFiltro = (gcnew System::Windows::Forms::NumericUpDown());this->label1 = (gcnew System::Windows::Forms::Label());this->button1 = (gcnew System::

    Windows::Forms::Button());this->button2 = (gcnew System::Windows::Forms::Button());this->Reloj = (gcnew System::Windows::Forms::Timer(this->components));(cli::safe_cast(this->SalidaVideo))->BeginInit();(cli::safe_cast(this->EntradaFiltro))->BeginInit();this->SuspendLayout();

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    85/96

    Anexo

    -79-

    //// SalidaVideo//this->SalidaVideo->Location = System::Drawing::Point(12, 12);

    this->SalidaVideo->Name = L"SalidaVideo";this->SalidaVideo->OcxState = (cli::safe_cast(resources->GetObject(L"SalidaVideo.OcxState")));this->SalidaVideo->Size = System::Drawing::Size(352, 352);this->SalidaVideo->TabIndex = 0;

    //// SalidaTexto//this->SalidaTexto->FormattingEnabled = true;

    this->SalidaTexto->Location = System::Drawing::Point(379, 113);this->SalidaTexto->Name = L"SalidaTexto";this->SalidaTexto->Size = System::Drawing::Size(303, 251);this->SalidaTexto->TabIndex = 1;

    //// EntradaFiltro//this->EntradaFiltro->Location = System::Drawing::Point(379, 66);this->EntradaFiltro->Maximum = System::Decimal(

    gcnew cli::array< System::Int32 >(4) {50, 0, 0, 0});this->EntradaFiltro->Name = L"EntradaFiltro";this->EntradaFiltro->Size = System::Drawing::Size(120, 20);this->EntradaFiltro->TabIndex = 2;this->EntradaFiltro->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {18, 0, 0, 0});

    //// label1//this->label1->AutoSize = true;this->label1->Font = (

    gcnew System::Drawing::Font(L"Microsoft Sans Serif",10, System::Drawing::FontStyle::Regular,System::Drawing::GraphicsUnit::Point,

    static_cast(0)));this->label1->Location = System::Drawing::Point(376, 37);this->label1->Name = L"label1";this->label1->Size = System::Drawing::Size(100, 17);this->label1->TabIndex = 3;this->label1->Text = L"Filtro de negro";

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    86/96

    Anexo

    -80-

    //// button1//this->button1->Location = System::Drawing::Point(572, 27);

    this->button1->Name = L"button1";this->button1->Size = System::Drawing::Size(110, 23);this->button1->TabIndex = 4;this->button1->Text = L"Comenzar";this->button1->UseVisualStyleBackColor = true;this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);

    //// button2//this->button2->Location = System::Drawing::Point(572, 66);

    this->button2->Name = L"button2";this->button2->Size = System::Drawing::Size(110, 23);this->button2->TabIndex = 5;this->button2->Text = L"Detener";this->button2->UseVisualStyleBackColor = true;this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);

    //// Reloj//this->Reloj->Interval = 10;this->Reloj->Tick += gcnew System::EventHandler(

    this, &Form1::Reloj_Tick);

    //// Form1//this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;this->ClientSize = System::Drawing::Size(694, 376);this->Controls->Add(this->button2);this->Controls->Add(this->button1);this->Controls->Add(this->label1);

    this->Controls->Add(this->EntradaFiltro);this->Controls->Add(this->SalidaTexto);this->Controls->Add(this->SalidaVideo);this->Name = L"Form1";this->Text = L"Detecta anuncios";

    (cli::safe_cast(this->SalidaVideo))->EndInit();(cli::safe_cast(this->EntradaFiltro))->EndInit();

    this->ResumeLayout(false);this->PerformLayout();

    }

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    87/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    88/96

    Anexo

    -82-

    private: System::Void Reloj_Tick(System::Object^ sender,System::EventArgs^ e){

    /* Se trata del evento asociado al Timer que se producir cada un

    * nmero de milisegundos determinado por la propiedad Interval* de la instancia Reloj:* 1) Se captura la imagen, se comprime y se convierte a escala de* grises* 2) Se comprueba si el frame capturado pertenece a un cambio de* plano* 2.1)(true) Se guarda la hora actual del sistema, se activa la* bandera cambio de plano y se limpia la salida de texto.* 2.2)(false) Se comprueba si el frame actual es un frame* cualquiera o el primer frame tras el ltimo cambio de plano. Es* decir, el primer frame de vdeo, que es al que hay que* calcularle la huella.* 2.2.1)(true) Se calcula el tiempo transcurrido desde el

    * primer cambio de plano y el primer frame de vdeo que no es* cambio de plano. Esta operacin es realizada para* sincronizar la captura del primer frame en la aplicacin de* generacin de huellas y en deteccin de huellas. Si no se* hiciese, dependiendo de cada ordenador, podra ocurrir que* el tiempo de muestreo del frame fuese tan dispar que las* huellas no fuesen iguales. Por defecto, se establece que se* muestrea tanto en la aplicacin de generacin de huellas* como en la de deteccin, 50 ms tras el primer cambio de* plano. Se justificar este valor ms adelante.* 2.2.1.1)(true) Han pasado ms de 50 ms y el plano* actual no es un cambio de plano.* a) La bandera CambioPlano se pone a false.

    * b) Se genera una huella a partir de la captura* actual.* c) Busca la huella actual en la lista de* huellas(ListaCadenas)* 2.2.1.1.1)(true) Se ha detectado la* huella y se conoce la posicin en la* lista.* a) Se limpia la salida de texto* b) De la clase anuncios se prepara la* HuellaActual y se guarda en la lista de* anuncios detectados.* c) Se imprimen por pantalla informacin* referente al anuncio detectado

    */

    int i,delay;int EncuentraAnuncio;DateTime ^ t2;delay = -1;EncuentraAnuncio = -1;Anuncios->PDI->ComprimeImagen(Anuncios->TV->CapturaImagen());Anuncios->PDI->ConvierteBN();if(Anuncios->CambioPlano(Anuncios->PDI->ImagenBN)){

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    89/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    90/96

    Anexo

    -84-

    Clase PFC Genera Huellas

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    91/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    92/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    93/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    94/96

    Anexo

    -88-

    //// Reloj//this->Reloj->Interval = 10;this->Reloj->Tick += gcnew System::EventHandler(

    this, &Form1::Reloj_Tick);//// EntradaFiltro//this->EntradaFiltro->Location = System::Drawing::Point(364, 32);this->EntradaFiltro->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {50, 0, 0, 0});this->EntradaFiltro->Name = L"EntradaFiltro";this->EntradaFiltro->Size = System::Drawing::Size(100, 20);this->EntradaFiltro->TabIndex = 6;this->EntradaFiltro->Value = System::Decimal(

    gcnew cli::array< System::Int32 >(4) {18, 0, 0, 0});//// Form1//this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;this->ClientSize = System::Drawing::Size(701, 344);this->Controls->Add(this->EntradaFiltro);this->Controls->Add(this->label1);this->Controls->Add(this->button2);this->Controls->Add(this->button1);

    this->Controls->Add(this->SalidaTexto);this->Controls->Add(this->SalidaVideo);this->Name = L"Form1";this->Text = L"Deteccin de anuncios";(cli::safe_cast(this->SalidaVideo))->EndInit();(cli::safe_cast(this->EntradaFiltro))->EndInit();this->ResumeLayout(false);this->PerformLayout();

    }

    #pragmaendregionprivate: System::Void button1_Click(System::Object^ sender,System::EventArgs^ e)

    {

    /* Se configura todo lo necesario para poder iniciar la aplicacin:* 1) Se inicializan las banderas y propiedades correspondientes* 2) Se realiza la instancia de la clase GeneraBD* 3) Se guarda el valor que ha introducido el usuario en la variable* FiltroLP de BaseDatos* 4) Se inicia la reproduccin del vdeo* 5) Se activa el Timer para que tengan lugar los eventos de reloj

    */

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    95/96

  • 7/27/2019 DETECCIN DE ANUNCIOS DE TELEVISIN MEDIANTE SOFTWARE

    96/96

    Anexo

    * 2.2.1.1)(true) Han pasado ms de 50 ms y el* plano actual no es un cambio de plano.* a) La bandera CambioPlano se pone a false.* b) Se genera una huella a partir de la captura* actual.

    * c) Guarda la huella actual en la lista de* huellas(Lista)* d) Se imprimen por pantalla informacin* referente al anuncio detectado*/

    int i,delay;DateTime ^ t2;delay = -1;BaseDatos->PDI->ComprimeImagen(BaseDatos->TV->CapturaImagen());BaseDatos->PDI->ConvierteBN();if(BaseDatos->CambioPlano(BaseDatos->PDI

    ->ImagenBN)){

    t1 = DateTime::Now;CambioPlano = true;SalidaTexto->Items->Clear();

    }else{/*Aqu tenemos que distinguir entre un framecualquiera y el primer frame tras cambio deplano*/if(CambioPlano==true){

    t2 = DateTime::Now;delay = (TimeSpan(t1->Ticks - t2

    ->Ticks)).Milliseconds;if(Math::Abs(delay) > 50){CambioPlano = false;BaseDatos->HuellaActual = gcnew Huellas(BaseDatos->PDI);BaseDatos->HuellaActual->Genera();BaseDatos->ArchivoHuellas->Aadir(BaseDatos->HuellaActual);SalidaTexto->Items->Add("Nuevo cambio de plano: "+BaseDatos->ArchivoHuellas->ListaHuellas->Count);SalidaTexto->Items->Add(