[MÚSICA] En el primer vídeo hemos introducido el problema de la clasificación de imágenes y hemos presentado este esquema que vemos aquí y que será el que iremos siguiendo a lo largo de todo el curso. En este esquema ya podemos ver todos los pasos que intervienen en un sistema de clasificación de imágenes. Tal como comentamos en el vídeo anterior la clasificación se va a basar siempre en un primer paso de detección y descripción de características locales en lo que consideraremos puntos de interés de la imagen, características que nos interesará que sean repetitivas en varias imágenes y que además sean discriminativas. En este vídeo lo que vamos a hacer es introducir algunos conceptos básicos sobre las imágenes y sobre las técnicas que vamos a utilizar para procesarlas y para poder detectar las características locales. Vamos a explicar solo aquello que consideramos imprescindible para poder entender correctamente los detectores de características, que iremos viendo a lo largo del curso. Empezaremos por el concepto mismo de imagen, en general vamos a trabajar con imágenes en color que estarán capturadas por cámaras digitales estándar. El resultado que se obtiene cuándo capturamos una imagen con una cámara depende esencialmente de tres factores. En primer lugar el color de la luz que ilumina la escena, en segundo lugar el tipo de material de la escena que estamos capturando y que tendrá unas propiedades de la refracción de la luz diferentes para cada material y por último la sensibilidad de la cámara que estamos utilizando que evidentemente será diferente en función del modelo y de la calidad de la cámara. Hay que decir que normalmente las cámaras tienen tres sensores, que son sensibles a diferentes longitudes de onda de la luz y que habitualmente estas longitudes a las que son sensibles se corresponden con los colores rojo, verde y azul. Es con estos tres sensores que las cámaras intentan cubrir la sensibilidad a todo el espectro visible. De esta forma, el resultado final cuando capturamos una imagen es una matriz de puntos, lo que normalmente conocemos como los píxeles de la imagen. Si ampliamos una eternidad la zona de esta imagen podemos ver que el valor del color con cada uno de los píxeles de la imagen se obtiene como la combinación de tres valores. Que corresponden al canal rojo, al canal verde y al canal azul, RGB de las siglas en inglés de red, green and blue. Por lo tanto cada píxel viene dado por tres valores numéricos, que en general están en el rango entre 0 y 255, donde el 0 indica la ausencia de color y el 255 indica la máxima representación de ese color en un punto. En este caso el color del pixel es un color turquesa claro,que viene dado por valores altos de verde y de azul y un color un valor medio del color rojo. En muchos casos, en vez de trabajar con la imagen en color, trabajaremos con la imagen de intensidad que se relaciona únicamente con la cantidad de luz que cada punto de la escena emite. En este caso entendemos que la intensidad de cada píxel se representa en niveles de gris y se puede estimar a partir de los valores del color rojo, verde y azul. A partir de la suma de los tres valores normalizado en este caso por el máximo del rojo, el verde y el azul, para mantener la intensidad tenga el rango de 0 a 255. En general intensidades menores corresponden a valores oscuros, y las mayores intensidades corresponden a las zonas claras de la imagen. La imagen de intensidad aparte de cómo una matriz de píxeles, también se puede ver como una función bidimensional, donde para cada punto, para cada píxel de la imagen vamos a tener una coordenada en el EGX y una coordenada en el EGY griega, y un valor de la función de intensidad. Si dibujamos esta función de intensidad en 3D, cómo tenemos en esta figura de aquí podemos ver que los picos los, los valores altos de esta función de intensidad se corresponden con las zonas claras de la imagen. Mientras que los valores bajos de esta función de intensidad, lo que serían los valles en esta representación 3D, se corresponden con las zonas oscuras de la imagen. Esta visión de la imagen como una función bidimensional es la que nos va a ayudar a poder definir las características locales de la imagen, de una forma matemática muy bien definida. Empecemos definiendo el concepto de característica local ó Local feature en inglés. Una característica local describe las propiedades de un píxel de la imagen, con respecto a su entorno más local. Estas características pueden representar diferentes estructuras cómo por ejemplo regiones de intensidad homogénea, lo que llamaremos blobs ó bien los contornos de la imagen. Y lo importante de estas características es que se van a poder obtener analizando de forma matemática las propiedades de la función de intensidad. por ejemplo una de las características locales más comunes en visión por computador, son los contornos de los objetos que aparecen en una imagen, ya que nos van a dar información directa sobre qué objetos tenemos en una imagen. En este caso, por ejemplo, los contornos principales de esta imagen podrían ser estos de aquí. Y podemos ver que se corresponden con aquellas zonas de la imagen donde tenemos un alto contraste de forma local. Si ampliamos una de las zonas de esta imagen, en este caso por ejemplo un contorno principal estaría aquí. Y si lo representamos también como una función entre 3D vemos que estos puntos de la imagen se corresponden con esta zona de la función aquí, que corresponde precisamente a los puntos donde tenemos una mayor variación local de la función de intensidad. Sabemos que para analizar las variaciones locales de una función tenemos el concepto de derivada, y por lo tanto los contornos se podrán detectar analizando puntos máximos en la derivada de la función de intensidad. La manera práctica más habitual de realizar este análisis local del entorno de los píxeles, en la función de intensidad, es mediante la utilización de filtros locales. Un filtro como por ejemplo este que vemos aquí nos define una serie de pesos que se van a aplicar a cada uno de los vecinos de un determinado píxel, de forma que vamos a obtener un nuevo valor que nos va a dar la respuesta de ese píxel a la característica local que nos está definiendo el filtro. Vamos a verlo con un ejemplo, y vamos a ampliar una pequeña zona de la imagen anterior y obtenemos esta matriz, donde tenemos lados valores de intensidad de cada uno de los píxeles en la región. Si queremos aplicar el filtro anterior en uno de los píxeles de esta imagen, por ejemplo este de aquí, el resultado va a ser la combinación de los píxeles vecinos ponderados por el valor del filtro si lo centramos en este píxel determinado. En este caso la vecindad que vamos a considerar va a ser una vecindad de 3 por 3, ya que este es el tamaño del filtro que estamos considerando. Al aplicar el filtro los píxeles situados a la izquierda del píxel central se van a ponderar con un valor más 1, ya que este es el valor que tenemos en la columna izquierda del filtro. Y los píxeles que tenemos a la derecha del valor central se van a ponderar con un valor menos 1, ya que este es el valor que tenemos en la columna derecha del filtro. Los píxeles de la columna central como tenemos un 0 en el filtro no se van a tener en cuenta. El resultado final de aplicar el filtro va a ser la suma de todos los píxeles situados a la izquierda menos la suma de todos los píxeles situados en la columna derecha, ya que esta es la ponderación de los píxeles en cada una de estas vecindades del píxel en cuestión. El resultado final en este caso va a ser 116. Esto nos da un valor medio del filtro ya que este píxel está ubicado en una zona donde tenemos un cierto contraste en la dirección horizontal que es precisamente la característica local que trata de detectar este filtro. Sin embargo si y este mismo filtro lo aplicamos en un punto donde tenemos bajo contraste, como por ejemplo este de aquí, donde tenemos poca diferencia de izquierda a derecha el resultado a aplicar en el centro el resultado va a ser 0, indicando que tenemos una baja respuesta de este punto a la característica local en cuestión. Para poner obtener las características locales en todos los píxeles de la imagen lo que se puede hacer es aplicar el filtro secuencialmente en todos los píxeles de la imagen original, empezando por el píxel situado en la parte superior izquierda de la imagen, y vamos continuando por todos los píxeles de esta fila. A continuación los de la segunda fila y así sucesivamente pasando todos los píxeles de la imagen de manera que obtenemos cómo resultado una nueva imagen donde el valor de cada píxel en esta nueva imagen es la respuesta de la imagen original a la característica local definida por el filtro. En este caso podemos ver que tenemos valores relativamente elevados en esta diagonal, son estos valores de la imagen resultado, que se corresponden con los píxeles de la imagen original también en esta diagonal que se son precisamente los píxeles que tenían un elevado contraste en la dirección horizontal, que como hemos dicho es la característica y está tratando de detectar este filtro. La manera matemática informal de realizar esta aplicación de un filtro por la imagen es mediante la utilización la operación de la convolución. La convolución es una operación que se utiliza habitualmente en teoría de la señal para descomponer una señal dada, en una serie de funciones más simples. La convolución se define de la forma siguiente. Es una operación que se aplica entre dos funciones, la función f, que es la señal de entrada, y la función g, que es la función básica, y lo que intenta es caracterizar el grado de solapamiento entre las dos funciones. Como podemos ver, se expresa como el producto de las dos funciones sobre una ventana del entorno del punto. En visión por computador la convolución se ha usado para cambiar el aspecto global de una imagen, ya sea suavizando sus contornos, o agudizándolos y también, que es lo que básicamente nos importa a nosotros, para la extracción de características locales. Cuando aplicamos la convolución a la visión por computador para extraer las características locales, la función f, la señal de entrada, se corresponde con la imagen original, mientras que la función básica g, se corresponde con el filtro que nos define la característica local que queremos detectar. La convolución en este caso nos va a medir el grado de solapamiento entre un punto de la imagen y el filtro, por lo tanto, nos va a dar la respuesta de ese punto, a la característica local. Fijémonos que el sumatorio viene definido por el tamaño del filtro, que nos define el entorno local alrededor del punto de la imagen original. Vamos a analizar con un poco más de detalle el cálculo que nos define la convolución. El primer aspecto que tenemos que considerar son las coordenadas x prima, y prima del filtro. Vemos que estas coordenadas se definen con origen en el punto central, es decir, la coordenada (0,0) se corresponde con el punto central del filtro, y las coordenadas del resto de puntos del filtro, se definen respecto a este origen, de manera que el punto situado a la izquierda y arriba, es la coordenada menos 1, menos 1, y el punto situado abajo a la derecha es el punto 1,1. Cuando aplicamos el filtro definido con este sistema de coordenadas, a la fórmula de la convolución, obtenemos el siguiente sumatorio, como el entorno local se define a partir de la diferencia de la coordenada en la imagen, menos la coordenada en el filtro, nos queda que el punto del filtro en la coordenada menos 1, menos 1, se combina con el punto en la imagen en la coordenada x+1, y+1. De la misma forma, en valor del kerner en la posición 0, menos 1 se combina con el valor en la imagen de la posición x, y+1, mientras que el valor del kerner en la posición 1, menos 1 se combina con el valor de la imagen en la posición x menos 1, y+1. Y así para el resto de sumando de la expresión. Podemos ver de esta forma que la coordinada superior izquierda del filtro se combina con el punto que está situado a la derecha y abajo del pixel de la imagen original, mientras que la coordenada inferior derecha del filtro se combina con el punto que está situado en la coordenada a la izquierda y arriba del pixel en la imagen original. Así pues, podemos ver que hay un intercambio en la posición entre imagen y el filtro, con lo que, el efecto de aplicar el filtro es el inverso al que aparentemente podríamos esperar de los valores del filtro. En este caso en concreto, aunque el filtro nos define como valores negativos los de la columna izquierda y valores positivos los de la columna derecha, el efecto de aplicar la convolución con este filtro es el inverso, es decir, los píxeles en la columna izquierda se ponderan como positivos, mientras que los píxeles de la columna a la derecha se ponderan como negativos. Hay que tener en cuenta que esta inversión se va a producir tanto en la dirección horizontal, como en la dirección vertical. Sin embargo, como este filtro es simétrico en la dirección vertical, la inversión solo se produce horizontalmente. Para filtros que sean totalmente simétricos, el efecto de la inversión será, por lo tanto, inexistente. Finalmente, vamos a ver un ejemplo de como se puede aplicar la convolución para detectar los contornos en una imagen. Para ello definimos cuatro filtros que nos van a permitir detectar los contornos tanto en dirección vertical como en dirección horizontal, y además tanto si el contraste de izquierda a derecha es, pasa de blanco a negro como si pasa de negro a blanco. Este primer filtro de aquí nos va a permitir detectar contornos verticales, donde tengamos un alto contraste de blanco a negro, por ejemplo, en esta zona de la imagen tenemos una respuesta alta del filtro. El segundo filtro también nos permite detectar contornos verticales, pero cuando el cambio de contraste es de negro a blanco. Por ejemplo, en esta zona de la imagen tenemos una alta respuesta de este filtro. Los dos últimos filtros nos van a permitir detectar contornos horizontales. En el primer paso cuando tenemos un alto contraste de negro a blanco, por ejemplo, en esta zona de la imagen de aquí, tenemos una alta respuesta y, en este último filtro, cuando tenemos un alto contraste, una alta diferencia de contraste de blanco a negro, por ejemplo en esta zona de la imagen de aquí, con esta respuesta del filtro. En este vídeo, hemos explicado conceptos muy básico sobre cómo se obtiene y cómo se representa una imagen, los necesarios para poder definir luego el concepto de característica local como una herramienta que nos permite analizar las propiedades de una imagen a partir de la vecindad de cada píxel. Hemos introducido también el concepto de convolución como una herramienta matemática, que nos va a permitir detectar características locales en la imagen. En el próximo vídeo vamos a utilizar todos estos conceptos, para ya introducir uno de los detectores de puntos de interés que más se utilizan en la clasificación de la imagen, el que se conoce como detector shift. [AUDIO EN BLANCO]