Fundamentos de Procesado de Imagen y Video (PDF)
Document Details
Uploaded by ChivalrousPlutonium8456
Universidad Politécnica de Madrid
Alberto Belmonte Hernández
Tags
Summary
Este documento proporciona una introducción a los fundamentos del procesado de imagen y video, incluyendo la extracción de características como la luminosidad, color, y textura. Explica conceptos como el histograma de una imagen, la representación del color y modelos para describir la textura. El texto es útil para estudiantes de posgrado interesados en el procesado de imágenes.
Full Transcript
Procesado de señales audiovisuales Fundamentos de procesado de imagen Alberto Belmonte Hernández Temario 1.1 Procesado y extracción de características en imagen y video. 1.2 Inteligencia artificial en el procesado de imagen y video. 1.3 Modelo de cámara, calibración y visión estereos...
Procesado de señales audiovisuales Fundamentos de procesado de imagen Alberto Belmonte Hernández Temario 1.1 Procesado y extracción de características en imagen y video. 1.2 Inteligencia artificial en el procesado de imagen y video. 1.3 Modelo de cámara, calibración y visión estereoscópica 3D. 1.4 Realidad aumentada, virtual y mixta. 2 1.1 Procesado y extracción de características en imagen y video 3 Extracción de características en imagen y video Cualquiera que sea la norma (MPEG-7, Dublin Core, etc.) para la estructuración, manejo y organización de los metadatos utilizados para caracterizar la información visual, se necesitan algunos descriptores visuales para el procesado y extracción de conocimiento avanzado sobre la imagen. De esta manera se pueden automatizar los procesos evitando el meta-datado manual. Estos descriptores se denotan de manera que puedan obtenerse de forma automática, haciendo uso de técnicas de procesamiento de imágenes y de visión por ordenador. Estos descriptores visuales pueden dividirse en dos grandes grupos: Descriptores de información general: Incluyen descriptores de bajo nivel, que proporcionan información sobre características básicas, como el brillo, el color, forma, esquinas, regiones, textura, posición, movimiento, etc. Descriptores de información de dominio específico: Proporcionan información sobre los objetos y eventos que se incluyen en la escena (por ejemplo, el reconocimiento de rostros, detección de objetos, segmentación, o la detección de transiciones de planos). Clasificación de Imágenes Una persona puede identificar directamente cual es contenido de una imagen y clasificarlo instantáneamente. Cual sería cada una de estas dos clases ¿? Pero un ordenador ve una cosa muy diferente… Cual sería ahora cada una de las clases ¿? Clasificación de Imágenes (Fundamentos y retos) 3 canales (RGB) con valores entre 0 y 255 Imagen de 1000x750 = 750000 píxeles Extracción de características en imagen y video Descriptores de información general: Como ya se ha mencionado, estos descriptores proporcionan información general y de bajo nivel sobre el contenido visual. Pueden aplicarse tanto a la información de imagen como de vídeo. Las actividades más comunes que se realizan con el contenido son la catalogación, la búsqueda y la recuperación por lo tanto, los descriptores junto a los metadatos pueden ayudar en la tarea. Trataremos en este tema descriptores de imagen relacionados con: ▪ Luminosidad ▪ Color ▪ Textura ▪ Descriptores espacio-temporales ▪ Movimiento Una imagen es un conjunto de píxeles (unidad mínima de información) ordenados en forma de matriz bidimensional (blanco y negro) o tridimensional (RGB, imagen a color). Los valores de un píxel se representan en el rango 0-255 lo cual permite definir diferentes tipos de tonalidades y colores. Para un ordenador, por tanto, una imagen será una simple matriz de números. Para visualizar imágenes sólo hay que colorear adecuadamente los píxeles en base los valores de cada uno de ellos. Extracción de características en imagen y video - Luminosidad Supongamos que tenemos una imagen digital de nivel de gris, como la que se muestra en la siguiente figura: Se trata de una imagen de nivel de gris, con 512 filas por 512 columnas, cuyos píxeles tienen 8 bits cada uno (es decir, tenemos una imagen monocromática de 8 bits/píxel). Con 8 bits, tenemos 2^8 = 256 niveles de gris posibles, que van del negro (nivel 0) hasta el blanco (nivel 255). El histograma de una imagen digital, con niveles de gris que van desde [0, L - 1] (en el ejemplo anterior, con 8 bits/píxel), [0, 255]), es un vector discreto cuyo tamaño es el número de niveles de la imagen: donde gk es el kth nivel de gris, y nk es el número de píxeles de la imagen que tiene el nivel de gris gk. Así, h(gk) es la frecuencia de repetición del nivel de gris gk en la imagen. El histograma también puede entenderse como una probabilidad de ocurrencia: si nrow es el número de filas de la imagen, ncol el número de columnas, entonces n = nrow × ncol es el número total de píxeles de la imagen. Con esto p(gk) = nk/n da la frecuencia normalizada (que puede utilizarse como probabilidad) de aparición del nivel de gris gk en la imagen. Extracción de características en imagen y video - Luminosidad El histograma calculado de la imagen anterior es el siguiente: Cada columna es independiente del histograma, es decir, cada componente del vector refleja la frecuencia de aparición de ese nivel de gris. El histograma proporciona mucha información útil sobre la imagen, como la distribución de la luminosidad: las imágenes oscuras concentran los valores altos de las columnas en los niveles oscuros, mientras que las imágenes muy claras hacen lo contrario. El histograma puede modificarse (aplicando una transformación lineal o no al vector) para cambiar el aspecto de la imagen, haciéndola más oscura o clara: Extracción de características en imagen y video - Luminosidad El histograma se puede utilizar para caracterizar la imagen. Supongamos que tenemos una imagen I(x, y), siendo I() el valor del nivel de gris del píxel situado en la posición (x, y), siendo x la fila e y la columna. La luminosidad Lm(f ) de la imagen I() se denomina valor medio de la luminancia de los píxeles de la imagen: La ecuación anterior puede aplicarse siendo I la luminancia Y , o cualquier componente de color (R, G,B, Cb, Cr , etc.). Lm(f ) también puede utilizarse para caracterizar una señal de vídeo, calculando cada valor independiente de Lm(f ) para cada fotograma. Si tenemos nfr cuadros en la secuencia de vídeo, entonces la Luminosidad global LUM de la secuencia de vídeo es: En las aplicaciones relacionadas con la caracterización de video una posible forma de trabajar con la luminosidad sería: ▪ 1. Extraer los diferentes planos que incluye la película ▪ 2. Extraer un fotograma clave de cada plano ▪ 3. Aplicar el descriptor LUM a los fotogramas clave Lm(f ) puede calcularse para toda la imagen o para pequeños fragmentos de la misma, lo que permite seguir la evolución de partes específicas de la secuencia de vídeo a lo largo del tiempo. Extracción de características en imagen y video - Luminosidad La forma en que cambia la luminosidad (con el tiempo o las diferencias en distintos “patches” de la misma imagen) también es relevante. El parámetro que describe este cambio es la varianza de la Luminosidad LUV cuya expresión es: En el caso de secuencias de vídeo muy largas, como es el caso del streaming, la LUV puede calcularse a intervalos de tiempo regulares. De nuevo, y a modo de ejemplo, en el caso de la caracterización de lm, se puede aplicar a los fotogramas clave. Entropía de la luminosidad: Este descriptor representa la cantidad de información contenida en una imagen. Puede utilizarse, por ejemplo, para distinguir planos de diferentes tipos (plano largo, plano americano, primer plano, etc.) en aplicaciones de caracterización de imágenes. Se calcula mediante la expresión habitual de la entropía, aplicada a los niveles cuantificados de nivel de gris en cada píxel I(x, y) para cada fotograma (o plano, fotograma clave) nfr: Extracción de características en imagen y video - Color La forma en que se representa el color en las imágenes o en las secuencias de vídeo es similar a la forma en que el color es percibido por el Sistema Visual Humano. El ojo humano tiene dos tipos de elementos sensibles a la radiación electromagnética (en el rango de 400 a 760 nm, más o menos): Los bastones: Son sensibles a radiaciones muy bajas, por lo que son responsables de la visión nocturna (visión escotópica). No proporcionan información sobre el color percibido. Nosotros sólo tenemos un tipo. Conos: Son menos sensibles que los bastones, por lo que son responsables de la visión diurna (visión fotópica). Nosotros tenemos 3 tipos, sensibles a diferentes longitudes de onda de la radiación. La combinación de las 3 señales proporciona la información necesaria a nuestro cerebro para tener la sensación de color. Las diferentes frecuencias de la radiación se perciben como diferentes colores. Como el número y la respuesta de los bastones y los conos es diferente para cada persona, cada uno de nosotros percibe el color de forma diferente. La siguiente figura muestra la respuesta media de los conos y los bastones en el sistema visual humano: Extracción de características en imagen y video - Color La representación del color en las imágenes (y, por tanto, en el vídeo) es similar: se usan 3 bandas diferentes, cada una de las cuales representa la información de un color primario (normalmente, rojo, verde y azul, pero también se pueden utilizar otros). Cada banda incluye la cantidad de información de ese color en cada píxel. Para cada banda, podemos calcular el histograma de color. Por ejemplo, para la imagen anterior: Extracción de características en imagen y video - Color De hecho, la luminancia (nivel de gris) de un píxel se calcula a partir de una suma ponderada suma ponderada de las bandas de color RGB. Dependiendo del tipo de señal de TV y de los colores primarios seleccionados, existen diferentes espacios de color en los que trabajar a parte del RGB que según la (UIT) para vídeo digital y el calculo de la luminancia son: ▪ Señal de definición estándar - SDTV: Siguiendo la rec. UIT-BT.601: YSD = 0, 3R + 0, 59G + 0, 11B ▪ Señal de alta definición - HDTV: Siguiendo el rec. UIT.BT.709: YHD = 0, 21R + 0, 72G + 0, 07B ▪ Señal de ultra alta definición - UHDTV: Según rec. UIT.BT.2020: YUHD = 0, 26R + 0, 68G + 0, 06B Además de los primarios RGB, el color puede describirse siguiendo otros modelos perceptivos. En particular, existe un modelo muy utilizado que se basa en: Tono (H): describe el color percibido, Saturación (S): describe la cantidad de color percibido que se mezcla con blanco y Valor (V): describe el brillo percibido, y está relacionado (aunque no es lo mismo) con la luminancia. Los HSV son coordenadas cilíndricas, y se representan entonces como un cilindro: The equations for converting RGB to HSV are the following: Extracción de características en imagen y video - Color La saturación (mezcla con el blanco) es un descriptor muy útil y discriminatorio. La saturación S se obtiene directamente del modelo HSV. La saturación media Sm de una imagen se calcula como: Siendo S(x, y) el valor de saturación del píxel en la ubicación (x, y) y x la fila e y la columna. Si tenemos una secuencia de vídeo (o una secuencia de fotogramas clave) el descriptor de saturación SAT de ese conjunto de imágenes se obtiene como: Siendo nfr el número de tramas consideradas. Extracción de características en imagen y video – Color Ejemplos Extracción de características en imagen y video - Textura La textura es un descriptor que proporciona medidas de propiedades intuitivas como la suavidad, la tosquedad o la regularidad, como se muestra en el cuadrado blanco de las siguientes imágenes: Uno de los enfoques más sencillos para describir la textura es utilizar los momentos estadísticos momentos del histograma de nivel de gris de una imagen o región. Sea g una variable aleatoria que denote, por ejemplo, el nivel de gris, y sea h(gi), i = 0, 1, 2,... L - 1 es el histograma correspondiente, siendo L el número de niveles de gris distintos. El enésimo momento de g sobre la media es: Donde m es el valor medio de g (el nivel de gris medio): Extracción de características en imagen y video - Textura El segundo momento, la varianza, es una medida de contraste de nivel de gris que puede utilizarse para establecer descriptores de suavidad relativa. Por ejemplo, la medida R: Es 0 para zonas de intensidad constante (ya que la varianza es 0), y se acerca a 1 para valores grandes de σ2(g). El tercer momento es una medida de la asimetría del histograma. El cuarto momento es una medida de su planitud relativa. Las características anteriores implican los valores de los píxeles individuales, pero ignoran la interacción espacial entre los píxeles. Por ello, las características del histograma no reflejan objetos o patrones en la imagen, sino sólo la distribución de los niveles de gris. La mayoría de los métodos de análisis de texturas utilizan estadísticas de orden superior y consideran la relación entre dos o más píxeles a la vez. Entre estos métodos podemos encontrar: (a) Matriz de co-ocurrencia de niveles de gris de Haralick (Haralick gray-level co-occurrence matrix GLCM). (b) Patrones binarios locales (local binary patterns LBP). Extracción de características en imagen y video - GLCM La matriz de co-ocurrencia de niveles de gris (GLCM) es un método para cuantificar la relación espacial de los píxeles vecinos en una imagen. La GLCM cuenta el número de veces que cada par de valores de nivel de gris se encuentran como vecinos en la imagen, I(x, y), o en una región arbitraria de la imagen. Una vez calculado el GLCM, se normaliza (es decir, la suma de todos sus coeficientes debe ser 1). Una vez calculada la GLCM, las características de textura se obtienen a partir de la matriz GLCM normalizada. Ejemplo de una imagen de 4 × 4, con niveles de gris de 1 a 3. El GLCM se construye considerando la relación de cada píxel con su vecindad (en este ejemplo, sólo se considera el vecino de la derecha). El GLCM es un contador de combinaciones de pares de niveles de gris en la imagen. El GLCM normalizado p(i , j) representa la probabilidad estimada de que cada combinación en la imagen. En el ejemplo anterior, hay un 25% de píxeles con valor 1 que tienen un similar de valor 1 a la derecha. Las características de textura Haralick son funciones del GLCM normalizado, donde se representan diferentes aspectos de la distribución del nivel de gris en la región de de interés. Por ejemplo, los elementos diagonales del GLCM representan pares de píxeles con niveles de gris iguales. Extracción de características en imagen y video - GLCM Algunas de las características de la textura Haralick: Extracción de características en imagen y video - LBP Las características de textura de Haralick calculan una representación global de la textura basada en el GLCM. Los patrones binarios locales (LBP), por su parte, calculan una representación de la textura. Esta representación local se realiza comparando cada píxel con los valores de los píxeles que lo rodean. Probablemente, los LBP proporcionan más información que los GLCM, pero con un mayor coste en cuanto a necesidades de computación y uso de memoria. Uno de los usos más populares de los LBP es el reconocimiento facial. El valor del código LBP de un píxel A(x, y), con valor de gris GA, y considerando una vecindad de P píxeles alrededor de A, se obtiene por: La vecindad que rodea al píxel puede ser de cualquier diámetro, como se muestra arriba, pero siempre es un círculo. Se calcula el histograma, sobre la vecindad, de la frecuencia de cada número que aparece (es decir, cada combinación de los píxeles que son menores y que son mayores que el centro). Este histograma puede verse como un vector de características de 256 dimensiones (utilizando 8 bits/píxel). Opcionalmente, se normaliza el histograma. Se concatenan los histogramas (normalizados) de todas las vecindades. Esto proporciona un vector de características para toda la imagen. Extracción de características en imagen y video - LBP Ejemplo de uso de LBP para el reconocimiento facial: Aunque se puede utilizar cualquier diámetro para la vecindad, hay varias ventajas del de 3 × 3 (8-conectividad): Sólo requiere una sencilla prueba de umbralización y operaciones de bits muy rápidas. Al trabajar a una escala tan pequeña es posible capturar detalles extremadamente pequeños. ¡pero se pueden perder los detalles más gruesos! Para ello, se propuso una extensión de la implementación original de LBP para manejar tamaños de vecindad variables (con un coste computacional). Para ello hay que manejar dos parámetros: El número de puntos p en la vecindad circular simétrica. El radio r del círculo para tener en cuenta los diferentes detalles a escala. Dado un radio r y un número de puntos p, y alineando los puntos vecinos a un píxel específico, pueden darse los siguientes casos (llamados prototipos). Los 9 patrones de la fila superior son de especial interés, ya que representan los llamados patrones uniformes, que contienen como máximo dos transiciones 0-1 o 1-0, lo que los hace robustos a los cambios de rotación. Los patrones marcados como 0 detectan regiones brillantes (rodeadas de píxeles más pequeños que él). Los patrones marcados como 8 detectan regiones oscuras (todos los píxeles que rodean son más grandes). Los patrones marcados con 4 detectan regiones de borde (hay una transición de la oscuridad a la claro). Ejemplos LBP Extracción de características – Descriptores Espacio-Temporales El sistema visual humano tiende a detectar los artefactos en las secuencias de vídeo de una de manera diferente, según el movimiento de los objetos en la escena, y el nivel de detalle que contienen los fotogramas del vídeo. Siguiendo este principio, la recomendación UIT- P.910 denota 2 parámetros para evaluar la complejidad de la secuencia de vídeo: Complejidad temporal Complejidad espacial Ambos parámetros deben ser evaluados conjuntamente, para tener una completa información sobre la complejidad global de la secuencia de vídeo. La Información Temporal es una medida que indica la cantidad de cambios temporales de una secuencia de vídeo. Se calcula a partir de la función de diferencia de movimiento Dt entre los píxeles en la misma ubicación (x, y) de dos fotogramas diferentes en t y t + 1 (calculada sobre la señal de luminancia Y o cualquier otro plano de color: R, G, B, H, S, etc.). Donde I(x, y, t) es el frame en el instante de tiempo t. El valor medio de la función de diferencia en el tiempo es el descriptor TIM (TI Mean): Siendo nfr el número total de fotogramas de la secuencia. El parámetro final del descriptor TI se calcula como el máximo en el tiempo de la desviación estándar de Dt: Extracción de características – Descriptores Espacio-Temporales La información espacial SI es una medida que indica la cantidad de energía espacial de un fotograma. Suele ser mayor en las imágenes más complejas desde el punto de vista espacial. Requiere el cálculo del gradiente de la imagen. El cálculo del gradiente implica el cálculo de las derivadas de la imagen. Las derivadas de la imagen proporcionan información sobre las zonas de la imagen donde se localizan los cambios. Cuanto más fuerte sea el cambio, mayor será el valor de la derivada. Los cambios más fuertes suelen corresponder a las zonas donde se encuentran los bordes (transiciones fuertes). Por lo tanto, el cálculo de la derivada implica determinar las zonas en las que se encuentran los bordes presentes. En este tema sólo se verán los métodos de derivada de primer orden, aunque los métodos de segundo orden también son muy comunes. Considere las dos imágenes siguientes y sus derivadas espaciales: Por lo que podemos implicar que el uso de las derivadas locales puede dar información de las transiciones del nivel de gris → EDGES: ▪ Valor diferente del nulo en la primera derivada ▪ Transición a través del valor nulo en la segunda derivada Extracción de características – Descriptores Espacio-Temporales Consideremos la imagen I(x, y), donde x implica de nuevo la fila e y la columna. La primera derivada de la función bidimensional I(x, y) es su gradiente: El gradiente es un vector, por lo que tiene módulo y fase: El módulo es un vector que apunta a la dirección del máximo cambio de pendiente en el punto donde se calcula. El ángulo θ se mide tomando como referencia el eje OX. Debido a que una imagen digital NO es una función continua, no es realmente diferenciable. Es necesario, en consecuencia, estimar numéricamente el valor de las derivadas parciales: La estimación puede hacerse numéricamente mediante diferencias finitas, centrales o diferencias divididas, siguiendo los enfoques clásicos del análisis numérico. Debido a que las imágenes son estructuras matriciales regulares, es muy adecuado utilizar diferencias finitas. Para el caso de una dimensión las diferencias finitas: Suponiendo una estructura regular entre las muestras (como el espacio entre filas y columnas en las imágenes): Utilizando esta hipótesis de regularidad de forma iterativa: Extracción de características – Descriptores Espacio-Temporales Para una imagen z = I(x, y), siendo z el nivel de gris, es posible hacer las siguientes aproximaciones: Por lo tanto, normalmente se realizan las siguientes aproximaciones: Normalmente se aproxima por: Y se expresa comúnmente en el Procesamiento Digital de Imágenes mediante las máscaras: L. G. Roberts, "Machine perception of three dimensional solids". Óptical & Electro-optical information processing. MIT Press, 1965. Incluye una propuesta de otra aproximación que utiliza dierencias cruzadas (operador Roberts): Extracción de características – Descriptores Espacio-Temporales Es posible utilizar más de dos puntos para aproximar las derivadas (Prewitt): Esto conduce al operador de Prewitt (J. M. S. Prewitt, Object enhancement and extraction, Picture processing & psychopictorics, Academis Press, 1970). Con las siguientes máscaras: Otro operador 3 × 3 muy utilizado es el operador Sobel (presentado por los autores en una conferencia en Stanford en 1968): Con las siguientes máscaras: Extracción de características – Descriptores Espacio-Temporales El operador Sobel tiene como ventaja adicional, que cubre dos funcionalidades: como filtro de paso bajo (para eliminar el ruido), y para estimar las derivadas parciales: Siendo ∗ una operación de convolución, y Z la imagen, las máscaras anteriores son equivalentes a: Y la operación de convolución: Extracción de características – Descriptores Espacio-Temporales Ahora que podemos calcular la derivada de la imagen, podemos volver a el descriptor SI. Cualquiera de los operadores de gradiente anteriores puede utilizarse para estimar la derivada. Sin embargo, la recomendación ITU P.910 propone utilizar el operador Sobel para estimar el gradiente de cada imagen. El descriptor requiere calcular el valor medio del operador Sobel sobre la imagen, y su desviación estándar: donde: I(x, y, t) representa la imagen en el instante de tiempo t. Sobel (I(x, y, t)) implica la estimación del gradiente en la imagen I mediante el operador Sobel. El descriptor se denota entonces, en la UIT P.910, como: Según nuestras expresiones, eso implica: donde MAXtime es el valor máximo de la serie temporal del cálculo anterior. Como se ha visto, el gradiente puede utilizarse para obtener información sobre la energía espacial de la imagen. Combinando los conceptos de histograma y gradiente, se puede obtener más información de las imágenes. El gradiente es un vector, con módulo y fase. Dividiendo la imagen en pequeñas regiones, se puede hacer lo siguiente 1. Calcular el histograma de los módulos del gradiente para obtener información sobre la cantidad de energía espacial local en la imagen 2. Calcular el histograma de las fases del gradiente para obtener información sobre direcciones de los bordes del objeto en esa región. El último enfoque se denomina comúnmente Histograma de Gradientes orientados HoG, y se utiliza ampliamente para detectar formas particulares e identificar objetos predeterminados. Descriptores Espacio-Temporales Ejemplos Extracción de características – HoG HoG es un descriptor utilizado principalmente para la detección de objetos, aunque también puede utilizarse para representar la forma y la textura. Se propuso originalmente en 2005 para la detección de personas en imágenes. HoG proporciona gradientes de intensidad locales y direcciones de los bordes. El algoritmo propuesto incluye 5 pasos: ▪ 1. Reajuste de los valores de los píxeles de la imagen antes de la descripción (opcional). ▪ 2. Cálculo del gradiente en las direcciones x e y. ▪ 3. Cálculo de los votos ponderados en las celdas. ▪ 4. Normalización del contraste de las celdas espaciales superpuestas. ▪ 5. Creación del vector de características de los valores HoG. ▪ Vamos a detallar los pasos uno por uno: ▪ 1. Reajuste de los valores de los píxeles de la imagen antes de la descripción: Este primer paso es opcional, pero Dala y Trigs han demostrado que esta actividad puede mejorar el rendimiento de la descripción de características Se pueden aplicar varios métodos de reajuste: ▪ Procesamiento logarítmico: Se aplica una función logarítmica log(I(x, y)) a cada píxel I(x, y) de la imagen. Sin embargo, este método puede llevar a una sobrecorrección de los valores de los píxeles, y entonces disminuir el rendimiento. ▪ Procesamiento de raíz cuadrada: En este caso, la función I(x, y) se aplica a cada píxel, comprimiendo su rango un poco menos que en el caso logarítmico, lo que permite obtener mejores resultados. ▪ Se pueden utilizar otros enfoques de reajuste, como el escalado min-max: ((I(x, y) - Imin)/(Imax - Imin)), siendo Imin el valor mínimo valor del píxel, e Imax el máximo, o la normalización de la varianza ((I(x, y) - Imed)/Ivar), siendo Imed el valor medio del píxel e Ivar la varianza. ▪ Se recomienda iniciar el procedimiento sin ningún tipo de reajuste y más adelante probar algunas aproximaciones y comprobar la mejora en el rendimiento. Extracción de características – HoG 2. Cálculo del gradiente de la imagen en las direcciones x e y: El siguiente paso consiste en el cálculo de los gradientes en ambas direcciones Gx y Gy , utilizando cualquiera de los operadores descritos anteriormente. Una vez que el vector 𝐺Ԧ = (Gx y Gy), se puede calcular el módulo y la fase: Una vez que 𝐺Ԧ y θ se calculan, el HoG puede obtenerse, partiendo el conjunto de valores de θ en intervalos, y añadiendo a los intervalos la contribución o peso proporcionada por | 𝐺Ԧ |. 3. Cálculo de los votos ponderados en las celdas: Una vez calculado el gradiente, el siguiente paso es dividir la imagen en celdas y bloques. Una celda es una región rectangular (subimagen) de píxeles. Un bloque es un conjunto rectangular de celdas, en el que pueden solaparse algunas celdas entre bloques. Según Dalal y Triggs, su mejor elección (menor tasa de fallos) para la detección humana era un tamaño de celda de 6 × 6 y un tamaño de bloque de 3 × 3. Pero esto depende de la aplicación concreta. Dentro de una celda, hay que considerar un conjunto de orientaciones, bien en el rango de [0, 180] (sin signo) o [0, 360] (con signo).Un buen enfoque inicial puede ser dividir todo el intervalo en franjas de 10 o 20 grados. Por último, cada píxel contribuye con un voto ponderado al bin del histograma, es decir el peso del voto es simplemente la magnitud del gradiente | 𝐺Ԧ | en el píxel en cuestión, acumulado en la casilla de fase correspondiente. Extracción de características – HoG 4. Normalización del contraste de las celdas espaciales superpuestas: Para tener en cuenta los cambios en la iluminación y el contraste, los valores del gradiente pueden normalizarse localmente. Esto implica agrupar las celdas en entidades más grandes, llamadas bloques (que pueden ser cuadrados o rectangulares). Una celda puede contribuir a más de un bloque, lo que proporciona un cierto solapamiento que garantiza la coherencia. Dalal y Triggs obtienen buenos resultados utilizando bloques de 2×2 o 3×3. Para cada celda del bloque considerado, los histogramas de gradiente tienen que ser compuestos (concatenados), generando el vector de características 𝑣. Ԧ El último paso consiste en normalizar el vector de características 𝑣. Ԧ Las normas propuestas por los autores son: Los autores obtuvieron buenos resultados con L2 - norm y L1 - sqrt, mientras que L1 - norm proporcionó una disminución del 5% en el rendimiento. ¡No utilizar la normalización reduce el rendimiento del descriptor en un 27%! El vector de características normalizado puede ser procesado por cualquier esquema para detectar objetos (como SVM, KNN, etc.). Extracción de características – HoG Ejemplos Extracción de características – Segmentación La segmentación de imágenes es una función que toma entradas de imágenes y produce a la salida una máscara o una matriz con varios elementos que especifican la clase de objeto o instancia a la que pertenece cada píxel. Para la segmentación de imágenes pueden ser útiles varias heurísticas relevantes, o características de imagen de alto nivel. Estas características son la base de los algoritmos estándar de segmentación de imágenes que utilizan técnicas de agrupación como bordes e histogramas. Un ejemplo de heurística popular es el color. Los creadores gráficos pueden utilizar una pantalla verde para asegurarse de que el fondo de la imagen tiene un color uniforme, lo que permite programar la detección y sustitución del fondo en el postprocesado. Otro ejemplo de heurística útil es el contraste: los programas de segmentación de imágenes pueden distinguir fácilmente entre una figura oscura y un fondo claro (por ejemplo, el cielo). El programa identifica los límites de los píxeles basándose en valores muy contrastados. Las técnicas tradicionales de segmentación de imágenes basadas en este tipo de heurística pueden ser rápidas y sencillas, pero a menudo requieren un importante ajuste fino para adaptarse a casos de uso específicos con heurísticas diseñadas manualmente. Además, no siempre son lo suficientemente precisas como para utilizarlas con imágenes complejas. Las técnicas de segmentación más recientes utilizan el aprendizaje automático y el aprendizaje profundo para aumentar la precisión y la flexibilidad. La tecnología de redes neuronales profundas es especialmente eficaz para las tareas de segmentación de imágenes. Extracción de características – Tipos de Segmentación Segmentación semántica: consiste en ordenar los píxeles de una imagen en función de clases semánticas. En este modelo, cada píxel pertenece a una clase específica, y el modelo de segmentación no hace referencia a ningún otro contexto o información. Por ejemplo, la segmentación semántica realizada en una imagen con múltiples árboles y vehículos, proporcionará una máscara que categoriza todos los tipos de árboles en una clase (árbol) y todos los tipos de vehículos, ya sean autobuses, coches o bicicletas, en una clase (vehículos). Segmentación de instancias: consiste en clasificar los píxeles en función de las instancias de un objeto (a diferencia de las clases de objetos). Los algoritmos de segmentación por instancias no saben a qué clase pertenece cada región, sino que separan las regiones similares o superpuestas basándose en los límites de los objetos. Por ejemplo, supongamos que un modelo de segmentación por instancias procesa una imagen de una calle abarrotada de gente. Lo ideal sería que localizara objetos individuales dentro de la multitud, identificando el número de instancias en la imagen. Sin embargo, no puede predecir la región u objeto (es decir, una "persona") de cada instancia. Segmentación panóptica: es un tipo de segmentación más reciente, a menudo expresada como una combinación de segmentación semántica y segmentación por instancias. Predice la identidad de cada objeto, segregando cada instancia de cada objeto en la imagen. La segmentación panóptica es útil para muchos productos que requieren grandes cantidades de información para realizar sus tareas. Por ejemplo, los coches autónomos deben ser capaces de captar y comprender su entorno con rapidez y precisión. Pueden conseguirlo alimentando un flujo de imágenes en directo a un algoritmo de segmentación panóptica. Extracción de características – Técnicas de Segmentación Segmentación por bordes: es una popular técnica de procesamiento de imágenes que identifica los bordes de varios objetos en una imagen dada. Ayuda a localizar las características de los objetos asociados en la imagen utilizando la información de los bordes. La detección de bordes ayuda a despojar a las imágenes de información redundante, reduciendo su tamaño y facilitando su análisis. Los algoritmos de segmentación basados en bordes identifican los bordes en función de las variaciones de contraste, textura, color y saturación. Pueden representar con precisión los bordes de los objetos de una imagen utilizando cadenas de bordes que comprenden los bordes individuales. Segmentación basada en umbrales: es el método más simple de segmentación de imágenes, funciona dividiendo los píxeles en función de su intensidad relativa a un valor dado o umbral. Es adecuado para segmentar objetos con mayor intensidad que otros objetos o fondos. El valor del umbral T puede funcionar como una constante en imágenes con poco ruido. En algunos casos, es posible utilizar umbrales dinámicos. El umbralaje divide una imagen en escala de grises en dos segmentos en función de su relación con T, produciendo una imagen binaria. Segmentación por regiones: consiste en dividir una imagen en regiones con características similares. Cada región es un grupo de píxeles que el algoritmo localiza mediante un punto semilla. Una vez que el algoritmo encuentra los puntos semilla, puede hacer crecer las regiones añadiendo más píxeles o reduciéndolos y fusionándolos con otros puntos. Segmentación basada en clústeres: Los algoritmos de agrupación son algoritmos de clasificación no supervisados que ayudan a identificar información oculta en las imágenes. Aumentan la visión humana aislando clusters, sombreados y estructuras. El algoritmo divide las imágenes en clusters de píxeles con características similares, separando los elementos de datos y agrupando los elementos similares en clusters. Segmentación de cuencas hidrográficas: son transformaciones en una imagen en escala de grises. Tratan las imágenes como mapas topográficos, en los que el brillo de los píxeles determina la elevación (altura). Esta técnica detecta las líneas que forman las crestas y las cuencas, marcando las zonas entre las líneas de las cuencas. Divide las imágenes en varias regiones en función de la altura del píxel, agrupando los píxeles con el mismo valor de gris. Extracción de características – Movimiento Hay varios descriptores que se basan en el movimiento presente en el fotograma. El movimiento observado puede ser causado por el movimiento de los objetos de la escena, captados con una cámara estática, el movimiento de la cámara, mientras observa objetos estáticos o el movimiento combinado del objeto en la escena y de la propia cámara. Por lo tanto, es necesario disponer de métodos automáticos que puedan estimar el movimiento observado en la imagen. Cuando hay un movimiento relativo entre un objeto y la cámara se producen variaciones de los niveles de gris de las secuencias de imágenes capturadas. Conceptualmente podemos suponer que en el caso de que un objeto se mueva, cada punto de la superficie sigue, en el espacio tridimensional, una trayectoria S(t) que depende del tiempo. La Física Clásica establece que la derivada de esta función temporal es la velocidad 𝑣(𝑡) Ԧ de cada uno de los puntos móviles de la superficie en el espacio. Si se realiza una proyección sobre el plano de la imagen de cada una de las posiciones, se obtiene una se obtiene una trayectoria tridimensional s(t), cuya derivada constituye la proyección de la velocidad instantánea 𝑣(𝑡) Ԧ en dos dimensiones. Si se realiza la proyección de cada uno de los puntos de la superficie de los objetos móviles, se obtiene campo de velocidades proyectadas tridimensionalmente comúnmente conocido como “Flow” de la imagen. La información disponible normalmente no permite el cálculo del “flow” de la imagen. Sólo es posible intentar obtener su estimación mediante el estudio de las variaciones espacio-temporales de los niveles de gris de los puntos de la imagen. Esa estimación proporciona lo que se conoce con el nombre de “optical flow” o “vector de movimiento del campo”. Extracción de características – Movimiento Ejemplo visual de “optical flow”: La mayoría de los procedimientos existentes que permiten calcular el vector movimiento se basan en el análisis de las variaciones de intensidad de los niveles de gris entre imágenes consecutivas de la secuencia. Para el caso simple de un objeto con superficie lisa y movimiento lento hay varias causas de las variaciones de los niveles de gris en la escena. Es posible determinar, entre otras, las siguientes fuentes de variaciones de los niveles de gris en la escena: ▪ Movimiento del objeto: como consecuencia de la nueva posición de los elementos en la escena. ▪ Variaciones de la iluminación: depende de la intensidad de la fuente luminosa. ▪ Efectos fotométricos: por reflejos de tipo espejo o sombras que impactan ocasionalmente los niveles de intensidad de la zona. ▪ Distorsión geométrica: por deformaciones del bloque óptico al utilizar el zoom. ▪ Distorsiones de la cámara: variaciones espacio-temporales de la intensidad de la imagen pueden producirse simplemente por los defectos del sensor, o por variaciones del control de ganancia de la cámara. ▪ Debido a los hechos ya mencionados, es bastante improbable que un punto de la superficie de un objeto mantenga un valor gris constante con el tiempo, sea estático o en movimiento. Esto ha llevado al desarrollo de técnicas alternativas que describen el movimiento de los objetos basándose en el seguimiento de las características locales en lugar de las basadas en puntos, descritas por las peculiaridades del conjunto de los píxeles circundantes analizado a lo largo del tiempo. Extracción de características – Movimiento La hipótesis anterior ha sido utilizada para desarrollar diferentes tipos de técnicas para estimar el flujo óptico: Técnicas de correspondencia traslacional Técnicas diferenciales Técnicas basadas en la correlación Técnicas de minimización de energía Técnicas basadas en la fase En este tema, sólo se revisarán las técnicas diferenciales. Los vectores de movimiento se estiman a partir de las derivadas espacio-temporales de la imagen. Los primeros enfoques se basaban en las derivadas de primer orden del nivel de gris de la imagen de nivel gris I(x, y, t), siendo (x, y) las coordenadas espaciales del píxel, y t el instante de tiempo en el que se adquirió la imagen. Suponiendo sólo desplazamientos locales de los objetos en la imagen, y sabiendo que el intervalo de tiempo entre dos fotogramas consecutivos t+δt es lo suficientemente pequeño como para suponer que no habrá cambios relevantes en el nivel de gris del punto (x+δx, y+δy), tenemos: Con δt pequeño, y 𝑣Ԧ =(vx , vy) siendo el vector de flujo óptico en el punto (x, y). Teniendo en cuenta la hipótesis de que el nivel de luminosidad se mantiene constante, se puede se puede escribir lo siguiente: Expandiendo la serie de Taylor, el término izquierdo de la ecuación es: ε representa los términos de orden superior de δx, δy y δt. Eliminando en ambos lados de la ecuación el término I(x, y, t), dividiendo por δt y tomando límites δt → 0: Extracción de características – Movimiento La ecuación previa también puede describirse como se presenta a continuación o, en su defecto, en su forma abreviada: Donde Ix , Iy e It son las derivadas parciales de I(x, y, t) con respecto a x, y y t, respectivamente. La ecuación anterior es conocida como la ecuación de restricción de movimiento. El valor del gradiente de la imagen es normalmente calculado mediante máscaras como la de Sobel o Roberts. La derivada temporal It Se puede estimar mediante enfoques numéricos, como las diferencias netas entre píxeles homólogos de fotogramas consecutivos. El objetivo es poder calcular el vector de flujo óptico para cada píxel de la imagen. Como para cada píxel (x, y) sólo tenemos una ecuación y dos incógnitas, podemos buscar los valores de 𝑣Ԧ teniendo en cuenta más píxeles (en la vecindad local), y asumir que la vecindad comparte un valor de gradiente común. Esta hipótesis no es tan irreal, ya que los objetos contenidos en la imagen no son de un solo tamaño, y normalmente son sólidos rígidos con un movimiento. Utilizando N píxeles de la vecindad M, tenemos: En forma de matriz tenemos: Tenemos dos enfoques diferentes para resolver el problema: El sistema lineal exacto, con 2 ecuaciones para las 2 incógnitas, utilizando 2 píxeles. El sistema sobredeterminado, con más de 2 píxeles de una vecindad del píxel en el que se estima el vector de flujo óptico. Extracción de características – Movimiento Si consideramos una vecindad M con dos píxeles: Analíticamente, el sistema anterior tiene la siguiente solución: La matriz inversa requerida existe si y sólo si su determinante es distinto de cero, es decir, si: Lo que implica que el sistema es resoluble si: La magnitud de los gradientes en ambos píxeles no es cero, los gradientes apuntan a direcciones diferentes y geométricamente, ambas condiciones se cumplen si M incluye un borde curvo. Los sistemas lineales exactos no permiten obtener una estimación del error. Para permitirlo, es más común utilizar el sistema sobredeterminado. Utilizando la notación matricial, el nuevo sistema es: Para obtener la solución óptima 𝑣 que minimiza el vector de error ϵ, se utilizan los mínimos cuadrados: Extracción de características – Movimiento La solución a este tipo de problemas se obtiene mediante la llamada pseudoinversa 𝐼𝐺𝑖 (debido a que IG no es una matriz cuadrada y, por tanto no tiene inversa): Aplicando esto nos queda: El sistema tiene solución si la matriz cuadrada 𝐼𝐺𝑖 𝐼𝐺 (tamaño 2 × 2) tiene una inversa. Esa matriz es: Su matriz inversa se puede obtener si: Lo que implica que debe cumplirse lo siguiente: Las derivadas parciales Ix y Iy no deben ser cero, es decir, la vecindad M no debe tener un nivel de gris constante. Los gradientes no deben apuntar a la misma dirección, ya que esto produce una matriz IG con filas que serían una combinación lineal de cada una de ellas entre sí, y entonces, su determinante sería cero. Extracción de características – Movimiento Las expresiones pueden simularse mediante: Donde Ip e Iq significan cualquier derivada de I. Con esto: La solución buscada es: El error puede estimarse a partir de los elementos de la diagonal de (𝐼𝐺𝑖 𝐼𝐺 )−1 , ya que incluyen la varianza de la estimación, que depende de un factor constante que es igual a la varianza de los datos de entrada (la estimación de los gradientes y temporales). La varianza de los valores estimados y el valor de 𝜎 2: Ejemplos Flujo Óptico Lucas-Kanade Dense Optical Optical Flow Flow 1.2 Inteligencia artificial en el procesado de imagen y video 47 Extracción de características – Tradicional vs Aprendizaje Automático La extracción de características es un componente esencial para cualquier tarea de procesado de datos. De hecho, todo el modelo de aprendizaje profundo funciona en torno a la idea de extraer características útiles que definan claramente los datos introducidos. En los proyectos de aprendizaje automático, queremos transformar los datos brutos en un vector de características para mostrar a nuestro algoritmo de aprendizaje cómo aprender las características del objeto. En la imagen anterior, introducimos la imagen en bruto de una motocicleta en un algoritmo de extracción de características. Vamos a tratar el algoritmo de extracción de características como una caja negra por ahora y volveremos a él pronto. Por ahora, debemos saber que el algoritmo de extracción produce un vector de características que es una matriz 1D que constituye una representación robusta del objeto. Es importante señalar que la imagen anterior refleja las características extraídas de una sola motocicleta. Una característica muy importante de un rasgo es su repetibilidad. La característica debe ser capaz de detectar las motos en general y no sólo esta en concreto. Así, en problemas del mundo real, la característica no será una copia exacta de la pieza de la imagen de entrada. Los modelos de aprendizaje automático son tan buenos como las características que se les proporcionan. Esto significa que la creación de buenas características es una tarea importante en la construcción de modelos de ML. Pero, ¿en qué consiste una buena característica? ¿Y cómo se puede saber? Extracción de características – Tradicional vs Aprendizaje Automático Por ejemplo, en el caso de imágenes, un buen rasgo nos ayudará a reconocer un objeto en todas las formas en que puede aparecer. Características de un buen rasgo en imagen podrían ser: Identificable Fácil de rastrear y comparar Coherente en diferentes escalas, condiciones de iluminación y ángulos de visión. Sigue siendo visible en imágenes con ruido o cuando sólo se ve una parte del objeto. En los problemas tradicionales de aprendizaje automático, dedicamos una buena cantidad de tiempo a la selección e ingeniería manual de características. En este proceso nos basamos en nuestro conocimiento del dominio (o nos asociamos con expertos en el dominio) para crear características que hagan que los algoritmos de aprendizaje automático funcionen mejor. A continuación, introducimos las características producidas en un clasificador, regresor, algoritmo de agrupamiento… para predecir el resultado. Extracción de características – Tradicional vs Aprendizaje Automático En el aprendizaje profundo, no necesitamos extraer manualmente características de la imagen. La red extrae automáticamente las características y aprende su importancia en la salida aplicando pesos a sus conexiones. La imagen en bruto se introduce en la red y, a medida que pasa por las capas de la red, ésta identifica patrones en la imagen para crear características. Las redes neuronales pueden considerarse extractores de características + clasificadores que pueden entrenarse de principio a fin, a diferencia de los modelos tradicionales de ML que utilizan características creadas a mano. Puede que de la impresión de que las redes neuronales sólo entienden las características útiles, pero eso no es del todo cierto. Las redes neuronales recogen todas las características disponibles y les asignan pesos aleatorios. Durante el proceso de entrenamiento, ajustan estas ponderaciones para reflejar su importancia y cómo deberían afectar a la predicción de salida. Los patrones con mayor frecuencia de aparición tendrán pesos más altos y, a su vez, se considerarán características más útiles. En cambio, las características con pesos más bajos tendrán un impacto muy bajo en el resultado. La imagen de entrada tiene demasiada información extra que no es necesaria para la clasificación. Por lo tanto, el primer paso tras el preprocesamiento de la imagen es simplificarla extrayendo la información importante y desechando la que no lo es. Al extraer los colores o segmentos de imagen importantes, podemos transformar datos de imagen complejos y de gran tamaño en conjuntos de características más pequeños. Esto simplifica y acelera la tarea de clasificar imágenes en función de sus características. Si no realizamos este proceso las redes neuronales comienzan a hacerse muy grandes en términos de capas y el procesado comienza a ser lento y costoso. Extracción de características – Tradicional vs Aprendizaje Automático Conclusiones La principal característica radica en la extracción manual o automática de las características para realizar la tarea seleccionada. Es importante un preprocesamiento inicial de los datos de cara a convertirlos a unas representaciones iniciales adecuadas y en algunos casos de cara a reducir el tamaño o la redundancia de datos no útiles. La selección del algoritmo de aprendizaje dependerá de la tarea a realizar. Si se siguen una alternativa mediante extracción de características manual existen gran variedad de algoritmos en la literatura para tareas de clasificación, regresión, clustering entre otras. Si se siguen soluciones Deep Learning se pueden recurrir a los tres tipos principales de arquitecturas y sus variantes más complejas (DNN, CNN, RNN). De ambas soluciones ni una es mejor ni la otra el peor. La primer necesita de un gran conocimiento de procesado y análisis para seleccionar aquellos algoritmos que extraigan características útiles para el análisis. El segundo conjunto radica en el conocimiento del campo del DL y se hace necesario poseer un gran Dataset para poder entrenar y que las redes neuronales puedan aprender eficientemente. A veces la extracción manual puede ser más rápida dado que los algoritmos son más simples pero puede complicarse dependiendo del número de operaciones a realizar el del número de técnicas empleadas. Las redes neuronales son arquitecturas muy complejas y que si queremos reducir tiempos de procesado o tener tiempo real en el sistema se hace necesario el uso de GPUs. Extracción de características mediante Deep Learning en imagen Idea general Vamos a ver el ejemplo de una red neuronal convolucional (las más empleadas para datos de entrada matriciales como las imágenes) para clasificación de imágenes en las que aparece un solo objeto. La red neuronal tendrá una arquitectura como la que se presenta en la siguiente figura: Se pueden diferenciar dos partes fundamentales, la primera de ella compuesta por capas de convolución y pooling que actúan como extractores de características y reducción de dimensionalidad respectivamente y la segunda que toma un vector (salida final de las convoluciones transformada a vector) y realizar la clasificación empleado ahora una parte de neuronas totalmente conectadas (Deep Neural Network DNN) para este propósito. Extracción de características mediante Deep Learning en imagen Idea general Al realizar la extracción de características de aprendizaje profundo, tratamos la red preentrenada como un extractor de características arbitrario, permitiendo que la imagen de entrada se propague hacia adelante, deteniéndose en la capa especificada previamente, y tomando las salidas de esa capa como nuestras características. De este modo, podemos seguir utilizando las características robustas y discriminativas aprendidas por la CNN. También podemos utilizarlas para reconocer clases para las que la CNN nunca fue entrenada. Un ejemplo de extracción de características mediante aprendizaje profundo puede verse en la figura. Aquí tomamos la red VGG16, permitimos que una imagen se propague a la capa final de máxima agrupación (pooling), antes de las capas de conexión completa (DNN), y extraemos las activaciones en esa capa. La salida de la capa de pooling tiene una forma de volumen de 7 x 7 x 512 que aplanamos en un vector de características de 21.055 valores. Dado un conjunto de datos de N imágenes, podemos repetir el proceso de extracción de características para todas las imágenes del conjunto de datos, Izquierda: arquitectura original de la red VGG16 que lo que nos deja con un total de vectores de características de N x 21.055- genera probabilidades para cada una de las 1.000 dim. Dadas estas características, podemos entrenar un modelo de etiquetas de clase de ImageNet. Derecha: Eliminando las aprendizaje automático "estándar" (como Regresión Logística o SVM Lineal) capas FC de VGG16 y devolviendo en su lugar la capa en estas características. final POOL. Esta salida nos servirá para extraer las características. Extracción de características mediante Deep Learning en imagen Finetuning Al realizar la extracción de características, no volvemos a entrenar la CNN original. En su lugar, tratamos la CNN como un extractor de características arbitrario y, a continuación, entrenamos un modelo de aprendizaje automático simple sobre las características extraídas. El ajuste fino, en cambio, requiere no sólo actualizar la arquitectura de la CNN, sino también volver a entrenarla para que aprenda nuevas clases de objetos. El ajuste fino es un proceso de varios pasos: Eliminar los nodos totalmente conectados al final de la red (es decir, donde se realizan las predicciones reales de las etiquetas de clase). Sustituir los nodos totalmente conectados por otros recién inicializados. Congelar las capas CONV anteriores en la red (garantizando que no se destruya ninguna característica robusta aprendida previamente por la CNN). Empezar el entrenamiento, pero sólo entrenar las cabezas de las capas FC. Opcionalmente, descongelar algunas/todas las capas CONV de la red y realizar una segunda pasada de entrenamiento. Extracción de características mediante Deep Learning en imagen Finetuning Si permitimos que el gradiente se propague desde estos valores aleatorios a lo largo de toda la red, corremos el riesgo de destruir estas potentes características. Para evitar este problema, dejamos que la cabeza de nuestra FC se "caliente" (irónicamente) "congelando" todas las capas del cuerpo de la red. Los datos de entrenamiento se propagan hacia delante a través de la red como haríamos normalmente; sin embargo, la retropropagación se detiene después de las capas FC, lo que permite a estas capas empezar a aprender patrones de las capas CONV altamente discriminativas. En algunos casos, podemos decidir no descongelar nunca el cuerpo de la red, ya que nuestra nueva cabeza FC puede obtener una precisión suficiente. Sin embargo, para algunos conjuntos de datos suele ser ventajoso permitir que las capas CONV originales también se modifiquen durante el proceso de ajuste fino. Después de que la cabeza de la FC haya empezado a aprender patrones en nuestro conjunto de datos, podemos pausar el entrenamiento, descongelar el cuerpo y continuar el entrenamiento, pero con una tasa de aprendizaje muy pequeña: no queremos alterar drásticamente nuestros filtros CONV. A continuación, se permite que el entrenamiento continúe hasta que se obtenga una precisión suficiente. El ajuste fino es un método superpotente para obtener clasificadores, regresores u otras soluciones de imágenes en tus propios conjuntos de datos personalizados a partir de redes preentrenadas (y es incluso más potente que el aprendizaje por transferencia mediante extracción de características). Extracción de características mediante Deep Learning en imagen Backbones conocidos Existen numerosas redes neuronales convolucionales que presentan arquitecturas que han presentado muy buenos resultados en diferentes tareas en imagen como detección de objetos, clasificación, segmentación… además estas redes dado que son muy usadas se encuentran normalmente preentrenadas en diferentes conjuntos de datos como ImageNet entre otros. Algunas de estas redes son (existen muchas más) son: VGG16 y VGG19 ResNet50 y ResNet101 Inception V3 Comencemos con una descripción general del conjunto de datos ImageNet y, a continuación, pasemos a un breve análisis de cada arquitectura de red. ¿Qué es ImageNet? Formalmente, ImageNet es un proyecto cuyo objetivo es etiquetar y clasificar (manualmente) imágenes en casi 22.000 categorías de objetos distintas con fines de investigación en visión por ordenador. Sin embargo, cuando oímos el término "ImageNet" en el contexto del aprendizaje profundo y las redes neuronales convolucionales, probablemente nos estemos refiriendo al ImageNet Large Scale Visual Recognition Challenge, o ILSVRC para abreviar. El objetivo de este reto de clasificación de imágenes es entrenar un modelo que pueda clasificar correctamente una imagen de entrada en 1000 categorías de objetos distintas. Los modelos se entrenan con aproximadamente 1,2 millones de imágenes de entrenamiento, 50.000 de validación y 100.000 de prueba. Estas 1.000 categorías de imágenes representan clases de objetos que encontramos en nuestra vida cotidiana, como especies de perros, gatos, diversos objetos domésticos, tipos de vehículos y mucho más. Puede consultar la lista completa de categorías de objetos del desafío ILSVRC aquí: http://image-net.org/challenges/LSVRC/2014/browse-synsets Cuando se trata de clasificación de imágenes, el desafío ImageNet es la referencia de facto para los algoritmos de clasificación de visión por ordenador, y la clasificación de este desafío ha estado dominada por las redes neuronales convolucionales y las técnicas de aprendizaje profundo desde 2012. Estas redes también demuestran una gran capacidad de generalización a imágenes fuera del conjunto de datos ImageNet mediante el aprendizaje por transferencia, como la extracción de características y el ajuste fino. Extracción de características mediante Deep Learning en imagen VGG16 and VGG19 La arquitectura de red VGG fue introducida por Simonyan y Zisserman en su artículo de 2014, Very Deep Convolutional Networks for Large Scale Image Recognition. Esta red se caracteriza por su simplicidad, ya que solo utiliza capas convolucionales de 3×3 apiladas unas sobre otras en profundidad creciente. La reducción del tamaño del volumen se gestiona mediante max pooling. Dos capas totalmente conectadas, cada una con 4.096 nodos, van seguidas de un clasificador softmax (arriba). Los números "16" y "19" corresponden al número de capas de pesos de la red (columnas D y E de la Figura). Unfortunately, there are two major drawbacks with VGGNet: It is painfully slow to train. The network architecture weights themselves are quite large (in terms of disk/bandwidth). Due to its depth and number of fully-connected nodes, VGG is over 533MB for VGG16 and 574MB for VGG19. This makes deploying VGG a tiresome task. We still use VGG in many deep learning image classification problems; however, smaller network architectures are often more desirable (such as SqueezeNet, GoogLeNet, etc.). Extracción de características mediante Deep Learning en imagen ResNet A diferencia de las arquitecturas de red secuenciales tradicionales, como AlexNet, OverFeat y VGG, ResNet es, en cambio, una forma de "arquitectura exótica" que se basa en módulos de microarquitectura (también llamados "arquitecturas de red en red"). El término microarquitectura se refiere al conjunto de "bloques de construcción" utilizados para construir la red. Una colección de bloques de construcción de microarquitecturas (junto con las capas estándar CONV, POOL, etc.) conduce a la macroarquitectura (es decir, la red final propiamente dicha). Introducida por primera vez por He et al. en su artículo de 2015, Deep Residual Learning for Image Recognition, la arquitectura ResNet se ha convertido en un trabajo muy conocido, demostrando que las redes extremadamente profundas pueden entrenarse utilizando optimizadores más lentos (y una función de inicialización razonable) mediante el uso de módulos residuales Figura). Se puede obtener una mayor precisión actualizando el módulo residual para utilizar mapeos de identidad, como se demuestra en su publicación de 2016, Identity Mappings in Deep Residual Networks. Dicho esto, el término ResNet50 y ResNet101 hacen referencia al número de capas de la red que combina sucesivamente estos bloques residuales. Aunque ResNet es mucho más profunda que VGG16 y VGG19, el tamaño del modelo es sustancialmente menor debido al uso de la agrupación de promedios globales en lugar de capas totalmente conectadas, lo que reduce el tamaño del modelo a 102 MB para ResNet50. (Izquierda) El módulo residual original. (Derecha) El módulo residual actualizado mediante preactivación. Extracción de características mediante Deep Learning en imagen Inception V3 La microarquitectura "Inception" fue presentada por primera vez por Szegedy et al. en su artículo de 2014, Going Deeper with Convolutions. El objetivo del módulo Inception es actuar como un "extractor de características multinivel" calculando convoluciones 1×1, 3×3 y 5×5 dentro del mismo módulo de la red; la salida de estos filtros se apila a lo largo de la dimensión del canal antes de introducirse en la siguiente capa de la red. La encarnación original de esta arquitectura se llamó GoogLeNet, pero las manifestaciones posteriores se han llamado simplemente Inception vN, donde N se refiere al número de versión publicado por Google. La arquitectura Inception V3 incluida en el núcleo de Keras proviene de la publicación posterior de Szegedy et al., Rethinking the Inception Architecture for Computer Vision (2015), que propone actualizaciones del módulo de inception para aumentar aún más la precisión de clasificación de ImageNet. Los pesos de Inception V3 son menores que los de VGG y ResNet, con un peso de 96 MB. Resolver tareas de computer visión extremo a extremo con Deep Learning Hasta ahora hemos visto una serie de redes convolucionales con las que podemos realizar diferentes tareas como, usarlas como extractores de características removiendo las capas totalmente conectadas, emplearlas como Fine Tuning para reaprovechar el entrenamiento previo y realizar un transfer learning, así como diferentes backbones muy empleados en la literatura dadas sus propiedades y resultados demostrados. Todos estos ejemplos previos solo trataban el caso de realizar una clasificación de imágenes en las que solo aparece un objeto en escena. ¿Qué pasa entonces si queremos realizar tareas más complejas como detección de objetos, segmentación o detección de landmarks entre otras?. ¿Es posible hacerlo de esta manera?. La respuesta es si, y no a la vez. Para estos casos toca emplear otras estrategias y construir redes más grandes que realizan otro tipo de tareas, pero las cuales suelen incorporar normalmente algún backbone para extracción de características junto a los nuevos módulos que aparecen en cada diseño. Vamos a ver un caso de ejemplo en detección de objetos sin entrar en profundidad de cara a entender que las redes comienzan a ser más complejas pero que suelen incorporar estos backbones u otros modificados para la extracción de características mediante el aprendizaje de la red. Numerosos algoritmos y técnicas existen en este campo de estudio: Faster-RCNN, SSD, YOLO, FPN, Retina Net y muchas nuevas redes que están superando a estas que son de las más conocidas en estas tareas. Resolver tareas de computer visión extremo a extremo con Deep Learning Vamos a centrarnos en el caso de la red Faster RCNN y veremos sus primeras configuraciones y su evolución hasta llegar a esta arquitectura final. Comenzamos con su primera versión conocida como Region Based CNN (RCNN) 1 – Tomamos una imagen de entrada (Cualquier tamaño) 2 – Extraemos regiones candidatas (Selective Search) y comprobamos que solapen con las anotaciones en un porcentaje para tratarlas como el objeto propuesto. 3 – Normalizamos las regiones propuestas a un tamaño fijo y Selective Search Algorithm extraemos Features mediante una CNN preentrenada. 4 – Aplicamos un clasificador (SVM 1 vs All, ANN…). Consigue resultados aceptables en la localización de objetos. Muy lenta pues se proponen gran cantidad de regiones y se aplica la red convolucional a cada una de ellas. No aprendemos a localizar via Deep Learning. Resolver tareas de computer visión extremo a extremo con Deep Learning Fast-RCNN 1 – Preentrenar una CNN en clasificación de imágenes. RoI Pooling 2 – Utilizar un algoritmos como Selective Search para proponer regiones. 3 – Pasar la imagen completa por la red preentrenada (sin capas FC) hasta una Operations convolución sin max pooling que propicie un tamaño de salida (feature map) no demasiado reducido. 4 – Aplicar RoI Pooling que tomará las regiones propuestas escaladas para recortar sobre el feature map. Esta operación recortará regiones de diferentes tamaños que se unifican en uno fijo con aplicación de un pooling. Fijamos una etiqueta y bbox real si solapan en cierto porcentaje. 5 – Se concatenan las regiones recortadas en un solo vector de features que se pasa por una serie de capas FC. 6 – La salida de estas capas entra a dos redes, una que predice las clase y otra que hace una regresión sobre los bounding box. +. Concatenar cada vector para cada. capa convolucional. Resolver tareas de computer visión extremo a extremo con Deep Learning Faster-RCNN Motivación: Reducir la lentitud de los algoritmos de proposición de regiones 1 – Se extrae el Feature Map con una red preentrenada. 2 – Se generan una serie de Anchors distribuidos por toda la imagen y con bounding box de diferentes tamaños y escalas. Esto permite cubrir toda la imagen en gran medida con gran variadad de posibilidades. 3 – Se pasa el Feature Map a un nuevo módulo conocido como Region Proposal Network (RPN) que extraerá una serie de Regiones Posibles entrenando una pequeña CNN con 2 clases (Fondo y Objeto) y regresión para refinar los bounding boxes. 4 – Utilizando el Feature Map y las regiones propuestas se utiliza una Fast-RCNN con RoI Pooling y misma arquitectura para clasificación y estimación del bounding box. RoI Pooling con las regiones Ventajas: Más rápida y robusta que Fast-RCNN propuestas por la RPN Inconvenientes: Varias redes independientes que entrenar (RPN Arquitectura Fast-RCNN usando y Fast-RCNN) lar regiones tras el RoI Pooling Resolver tareas de computer visión extremo a extremo con Deep Learning Mask-RCNN, una extensión de Faster-RCNN para realizar además segmentación 1 - Se propone como una nueva rama dentro de la Faster-RCNN. Utiliza las RoI extraídas por las RPN. 2 - Utiliza un dataset de imágenes segmentadas en objetos. 3 - Las RoI experimentan una alineación con respecto al feature map para mejorar la precisión. 4 - Las RoI alineadas recorren una serie de convoluciones utilizando unos backbones o convoluciones y deconvoluciones con otros backbones. 5 - Un backbone es el conjunto de red que permite la extracción del Feature Map principal. 6 - Las imágenes del dataset se reescalan al tamaño final de la RoI que recorre este camino. 7 - La función de Loss evalúa píxel a píxel para ver si este pertenece o no a una categoría. 8 - El resultado final se vuelve a escalar hacia arriba para fijarlo en la imagen original. Resolver tareas de computer visión extremo a extremo con Deep Learning Mask-RCNN, una extensión de Faster-RCNN para realizar además segmentación Resolver tareas de computer visión extremo a extremo con Deep Learning tras tareas en computer vision No vamos a detallar aquí las redes neuronales empeladas, pero en computer vision se pueden resolver gran cantidad de tareas diferentes y las redes neuronales tendrán arquitecturas más complejas y bastante diferentes pero suelen tener en común el empleo de un backbone que extraiga características de la imagen. Por ejemplo, otras tareas a resolver pueden ser la detección de Keypoints en el cuerpo o en la cara, tareas de OCR, entre otras muchas. Se presentan aquí unos ejemplos empleado algunos algoritmos existentes que emplearemos en la asignatura para la detección de keypoints y OCR. Detección de puntos clave Neural Style Transfer Generación de imágenes – Redes generativas adversarias Generación de imágenes – Redes generativas adversarias Generación de imágenes – Redes generativas adversarias Image to Image generation Pix2Pix arxiv.org/pdf/1611.07004.pdf A Style-Based Generator Architecture for Generative Adversarial Networks (arxiv.org) Text2Image StackGAN 1612.03242.pdf (arxiv.org) Difussion Model 2006.11239.pdf (arxiv.org) ¿Dónde estamos ahora? Transformadores Inicialmente, los Transformers se diseñaron para el procesamiento de texto, el procesamiento del lenguaje natural y forman parte de la mayoría de los modelos de lenguaje grande (LLM) actuales. Transformers para el procesamiento de imágenes ¿Cómo se incluyen los Transformers en las tareas anteriores de Deep Learning? Object detection DETR Architecture from https://arxiv.org/pdf/2005.12872v3.pdf SOTR: Segmenting Objects with Transformers from arxiv.org/pdf/2108.06747.pdf ¿Cómo se incluyen los Transformers en las tareas anteriores de Deep Learning? Image generation ViTGAN https://arxiv.org/pdf/2107.04589.pdf Pose estimation ViTPose from https://arxiv.org/pdf/2204.12484.pdf Soluciones multimodales: combinación de imagen, audio y texto Clip, Clap and Data2Vec 1.3 Modelo de cámara, calibración y visión estereoscópica 3D 77 Proyección de la imagen Cualquier aplicación de visión artificial intenta siempre emular el funcionamiento conjunto de nuestro sistema visual y de razonamiento. El procedimiento de adquisición de las imágenes presenta una curiosa analogía con el comportamiento del ojo humano. Ya Descartes (La Dioptrique, 1637) demostró que las imágenes atraviesan el ojo y se proyectan invertidas sobre la retina, siendo el cerebro el que facilita la interpretación correcta de la escena. El modelo de formación de una imagen con un sistema de lentes (cámara) es análogo al proceso del ojo. Equivale a realizar, sobre un plano determinado (el plano del sensor de la cámara), una proyección en perspectiva lineal, más conocida con el nombre de perspectiva cónica. El modelo de perspectiva cónica es un modelo simple, equivalente a lo que se ha venido a denominar en la literatura del tema el modelo de cámara puntual (pinhole-camera), o también cámara de agujero. Consiste en un plano opaco, con un agujero en el centro de tamaño infinitamente pequeño. Paralelo a este plano y a una distancia f se encuentra el plano de la imagen. 78 Proyección de la imagen La luz reflejada por la superficie de los objetos atraviesa el agujero e ilumina el cuadro de la imagen. Si el agujero es de tamaño infinitesimal, cada rayo de luz reflejado por cada uno de los puntos que componen la superficie de los objetos queda recogido como un único punto en el plano de la imagen. El conjunto de todos estos puntos forma una silueta que conforma la imagen. Sistema de perspectiva cónica con cámara puntual 79 Proyección en perspectiva lineal (cónica) Un punto de la superficie de un objeto, en el mundo tridimensional tiene las coordenadas P(X; Y ; Z). La proyección de P sobre el plano de la imagen será otro punto p(x; y) de coordenada Z constante, y de valor Z = 0 con el sistema de referencia de la figura anterior. La relación entre las coordenadas escritas en mayúsculas, correspondientes a los puntos en el sistema tridimensional, y las coordenadas escritas en minúsculas, asociadas a los puntos proyectados sobre el plano de la imagen, es: El modelo anterior se puede simplificar si se transforma todo el conjunto en un sistema básico de proyección en perspectiva cónica, como el siguiente: 80 Proyección en perspectiva lineal (cónica) Con este nuevo modelo desaparece el plano de la cámara con el agujero, quedando únicamente el plano de la imagen. Todos los rayos reflejados en la superficie de los objetos visualizados convergen en el foco de la cámara (centro de proyección), que es el nuevo origen de coordenadas del sistema de referencia cartesiano. Las relaciones entre las coordenadas tridimensionales P y las bidimensionales p se simplifican, pudiéndose expresar como: Dónde f representa la distancia entre el plano de la imagen y el foco al que convergen todos los rayos de luz. Por tanto, f equivale a la distancia focal de la cámara. Desarrollando la ecuación anterior queda: Se puede concluir que cada punto del plano de la imagen se corresponde con otro punto tridimensional de la superficie del objeto (a menos que éste sea transparente). Sin embargo, no se pueden recuperar los valores de (X, Y, Z) partir del conocimiento de (x; y), ya que sólo se dispone de dos ecuaciones linealmente independientes para resolver tres incógnitas. Únicamente se podrán recuperar los valores relativos de X / Z e Y / Z. 81 Proyección en perspectiva lineal (cónica) Las ecuaciones anteriores son no lineales y dificultan su operativa. Para poder linealizarlas, se usan las coordenadas homogéneas: Formato muy práctico para analizar la geometría y movimiento de los objetos. Por tanto, un punto P(X, Y, Z) se expresará en coordenadas homogéneas como PH(X, Y, Z, 1). La expresión matricial permite determinar la proyección sobre el plano de la imagen de cualquier punto del mundo real tridimensional, mediante la ayuda del parámetro adicional de las ecuaciones homogéneas. Existen situaciones en las que no sólo interesa conocer cómo obtener la proyección de un punto de una superficie sobre el plano de la imagen, sino también saber cómo va a evolucionar la proyección de dicho punto (y de otros de la misma superficie u objeto) con el tiempo, a medida que el objeto contemplado evoluciona en el campo visual, bien porque el objeto se esté moviendo, o bien por el propio movimiento de la cámara. Resulta práctico poder describir analíticamente la evolución de la proyección sobre el plano de la imagen, asumiendo conocido el tipo de movimiento captado. Las posibles aplicaciones de esta situación van desde egomotion hasta compensación de movimiento para codificadores de vídeo. 82 Proyección en perspectiva lineal (cónica) El procedimiento a seguir sería: dado un punto 𝑝𝑖 del plano de la imagen, proyección del punto tridimensional 𝑃𝑖 mediante la aplicación lineal anterior 𝑝𝑖𝑇 = 𝐴𝑃𝑖𝑇 siendo A la matriz: Encontrar la matriz 𝑀4 𝑥 4 , tal que permita averiguar 𝑝𝑓 que describa la proyección del movimiento realizado por el punto 𝑝𝑖 en el espacio. Es decir: Siendo M la matriz que describe el movimiento real efectuado por el punto 𝑃𝑖. Dicho movimiento puede ser simple (p.e. una translación, una rotación, etc.), o complejo, como combinación de varios simples. 83 Movimientos puntuales simples Todo movimiento en el espacio se puede descomponer en función de tres movimientos simples: Traslación, Rotación, Escalado. Si el punto 𝑃𝑖 (𝑋𝑖 , 𝑌𝑖 , 𝑍𝑖 ) se traslada en el espacio a la posición del punto 𝑃𝑓 (𝑋𝑓 , 𝑌𝑓 , 𝑍𝑓 ) mediante la traslación: Esto puede describir en coordenadas homogéneas mediante la aplicación: De manera análoga a la traslación, un escalado en los ejes X, Y o Z mediante los factores Sx , Sy o Sz se puede expresar matricialmente en coordenadas homogéneas mediante: 84 Movimientos puntuales simples La manera más simple de obtener la expresión analítica de una rotación arbitraria es descomponer el movimiento en tres rotaciones simples en torno a cada uno de los ejes coordenados. Posteriormente, se compone el movimiento global a partir de los tres movimientos simples. Cualquier rotación se puede descomponer en función de tres rotaciones independientes en torno a los tres ejes coordenados, siguiendo la nomenclatura náutica, en sus ángulos de: Si un punto 𝑃𝑖 (𝑋𝑖 , 𝑌𝑖 , 𝑍𝑖 ) se ve sometido a un movimiento de rotación en torno a los ejes OX, OY y OZ de ϕ, θ y ψ radianes respectivamente, su posición en instantes consecutivos vendrá descrita por: 85 Movimientos puntuales simples 86 Movimientos puntuales complejos Si el punto describe un movimiento complejo (translación + escalado +rotaciones en torno a ejes específicos), la transformación global M se puede expresar mediante una sola matriz de 4 x 4, que incluye los diferentes elementos. Por ejemplo, una translación, seguida de un escalado, y de una rotación en torno al eje OY se puede representar mediante la transformación: Es importante destacar que el producto de matrices NO es conmutativo. Se debe expresar la transformación en el orden en el que ésta se realiza. Si en lugar de un sólo punto, se pretende analizar el movimiento efectuado por un conjunto de m puntos (𝑃𝑖1 , 𝑃𝑖2 , … , 𝑃𝑖𝑚 ) se puede seguir utilizando la transformación descrita por la matriz M anterior sin más que aplicarla a la matriz P4m i cuyas columnas son los puntos 𝑃𝑖𝑚 : 87 Transformaciones inversas Traslación Escalado Rotación OX Rotación OY Rotación OZ 88 Sistema de referencia no situado en la cámara Si el sistema de referencia NO está situado en la cámara, y coincidente con el centro de proyección de la misma, es necesario obtener la transformación que permita averiguar la proyección de cualquier punto del espacio sobre el plano de la imagen, no situado en Z = f , con f la distancia focal. El procedimiento más sencillo para determinar la proyección anterior consiste en realizar las transformaciones simples inversas necesarias para hacer coincidentes el origen de coordenadas de la cámara y el del mundo real, para, posteriormente, proyectar mediante la matriz A ya conocida sobre el plano de la imagen. P.e., si el centro de proyección de la cámara está desplazado una cierta distancia del origen de coordenadas 𝐷 = (𝐷𝑥 , 𝐷𝑦 , 𝐷𝑧 ), y posteriormente la cámara ha sufrido un cierto cabeceo de ϕ radianes, entonces la transformación C que hace coincidentes ambos orígenes de coordenadas es: Con esto, la proyección p de cualquier punto real tridimensional P(X, Y, Z) sobre el plano de la imagen, en coordenadas homogéneas, vendrá dada por la aplicación: 89 Calibración de la cámara En muchas situaciones reales no resulta fácil conocer la transformación C que permite hacer coincidentes ambos orígenes de coordenadas, bien porque la cámara no esté accesible, bien porque se desconozca la posición exacta del centro de proyección de la cámara, etc. En estas circunstancias, el procedimiento que se suele seguir es intentar aplicar métodos numéricos para determinar el valor de los coeficientes de la aplicación B = AC a partir del conocimiento de la posición en el mundo real de un conjunto finito de puntos. Este procedimiento se suele conocer como calibración de cámara. Sea: Dado que se está haciendo uso de coordenadas homogéneas, el sistema anterior expandido resulta: 90 Calibración de la cámara La ecuación relativa a z no se ha considerado al haber utilizado ya la que determina el valor de (cuarta fila), así como para independizar al sistema de la coordenada z. Sustituyendo α en las dos primeras ecuaciones se obtiene: Dado que el sistema presenta 12 incógnitas, serán necesarias 12 ecuaciones para resolverlo. Es decir, se necesita conocer las coordenadas en el mundo real de, al menos, 6 puntos (no coplanarios para evitar que el sistema sea homogéneo), que introducidos en el sistema anterior proporcionan las doce ecuaciones buscadas. La resolución del sistema global se suele abordar por métodos de ajuste de mínimos cuadrados, tanto lineales como no lineales (como el método de Levenberg-Marquardt). Finalmente, una vez conocidas tres de las cuatro filas de la matriz B y el valor de α, resulta inmediato obtener la fila restante sin más que componer un sistema de 4 ecuaciones del tipo: Sabiendo que el valor de z es constante (z = f) para cualquier punto P(X, Y, Z) considerado. Las incógnitas de este nuevo sistema son: 91 Ejemplo práctico Paso 1: Realizar una foto en la que haya varios objetos, cubriendo un volumen razonablemente homogéneo en las tres dimensiones. Fijar un sistema de referencia 3D en la zona fotografiada, y otro 2D en la foto. Paso 2: Identificar una serie de puntos de referencia en el mundo 3D, y sus proyecciones en la foto. Paso 3: Calcular la matriz de proyección para resolver el problema de calibración de cámara. Pruebas adicionales: Identificar otros puntos 3D distintos de los usados para la calibración, y determinar los errores de proyección cometidos con la matriz de calibración obtenida. Comentar sobre las posibles fuentes de error, así como sobre su magnitud, en función de los resultados. 92 Estereovisión con cámaras paralelas Ya se ha demostrado que, con el modelo de cámara puntual, no es posible recuperar las coordenadas tridimensionales P(X, Y, Z) de cualquier punto proyectado sobre el plano de la imagen p(x, y), ya que sólo se dispone de dos ecuaciones para tres incógnitas: No obstante, este problema se puede solucionar si en lugar de una cámara se dispone de dos, dispuestas tal como se muestra en la siguiente figura: La proyección del punto P sobre ambos planos de imagen es: 93 Estereovisión con cámaras paralelas Sabiendo que las relaciones entre ambos sistemas de referencia tridimensionales, relativos a cada una de las cámaras, son: Sustituyendo, queda: La ecuación anterior indica que se puede extraer la información de la profundidad del punto proyectado sin más que restar los valores de x – x’, suponiendo conocidas la distancia focal y la distancia de separación entre ambas cámaras B. La dificultad fundamental radica en poder determinar la proyección de un punto concreto sobre ambos planos de imagen, y establecer la correspondencia espacial entre dichas proyecciones. 94 Estereovisión con cámaras paralelas Para facilitar la correspondencia se suelen aplicar diferentes técnicas, tales como: ▪ Seleccionar un punto en una imagen y buscar en un entorno de su homólogo (mismas coordenadas), si la distancia B entre las cámaras es pequeña, mediante técnicas de correlación. ▪ Aplicar métodos de detección de bordes y esquinas en ambas imágenes, para después aplicar técnicas de alto nivel para resolver el problema de la correspondencia espacial. ▪ Aplicar técnicas de restricción epipolar. ▪ Etc. Para trabajar con sistemas de estereovisión sigue siendo necesario efectuar el calibrado de ambas cámaras. Lo habitual es utilizar el procedimiento de selección de 6 puntos no coplanarios de manera independiente sobre cada una de las cámaras, calibrando por separado. La distancia B también puede ser determinada por el mismo procedimiento, analizando la proyección de un punto cuyas coordenadas tridimensionales son conocidas sobre cada uno de los planos de imagen. 95 Visión 3D Monocular Ya se ha visto que, cuando se utiliza una sola cámara, las relaciones entre las coordenadas tridimensionales de un punto en el espacio P(X, Y, Z) y su proyección sobre el plano de la imagen p(x, y) vienen dadas por el conjunto de ecuaciones: Asumiendo el modelo de cámara puntual, con el plano de la imagen en Z = f, y el centro de proyección en el origen de coordenadas del sistema de referencia: Una vez seleccionado el sistema de referencia cartesiano, se pueden plantear las ecuaciones básicas que rigen el comportamiento de la proyección de cualquier objeto visualizado por la cámara. Previamente, es necesario asumir una serie de hipótesis que permitan restringir el abanico de posibilidades a la hora de plantear el modelo de comportamiento del sistema de proyección lineal. 96 Visión 3D Monocular Todo el análisis se realizará considerando que los objetos visualizados por la cámara son rígidos y, por tanto, serán de aplicación todas aquellas condiciones que caracterizan la cinemática del solido rígido. Dado que sólo disponemos de una cámara, necesitamos estimar la velocidad y dirección del movimiento de la misma para conocer esa traslación que nos permita obtener la sensación 3D entre imágenes consecutivas. Estas soluciones quedan fuera del alcance de este curso, pero algunas de ellas son: obtención de la expresión del campo bidimensional de vectores de velocidad, análisis y aproximación por parches, uso de modelos polinómicos como el afín, el traslacional o el de cámara sobre soporte fijo, etc. 97 Información 3D a partir de dos proyecciones Cualquier sistema de vídeo siempre ha tratado de lograr la mejor representación de la realidad visual. La fase de adquisición es la encargada de ofrecer el material con el que construir esa realidad. Intentos de mejorar la calidad de la oferta son los sistemas de muy alta resolución (HD, UHD1 y UHD2) y los sistemas 3D. Estos últimos implican resolver aspectos técnicos importantes en la fase de captación, críticos para el éxito de la transmisión y/o la presentación. Lo esencial radica en cómo percibimos visualmente el espacio, los objetos en el espacio, sus dimensiones visuales y la distancia al observador. Esto viene determinado por el sistema visual humano y su compleja fisiología binocular, que cuenta con dos sensores (los ojos) separados por una media de. Esta medida se denomina distancia interocular, y define el ángulo de paralaje (desviación angular de la posición de un objeto observado desde dos puntos de vista diferentes), también conocido como paralaje horizontal. 98 Información 3D a partir de dos proyecciones La distancia interocular existente entre los ojos provoca una pequeña diferencia de percepción en cada ojo. La posición relativa de un objeto observado por cada ojo está ligeramente desplazada en las imágenes retinianas captadas. Esta diferencia (DL − DR en la figura) se denomina disparidad retinal o disparidad interocular. La fusión mental de las dos imágenes en el objeto sensorial se denomina estereopsis. Por tanto, la percepción 3D es una sensación, que se puede intentar recrear a partir de mostrar dos imágenes diferentes a cada ojo, y forzarle a realizar la estereopsis. 99 Información 3D a partir de dos proyecciones Se puede emular el comportamiento del sistema visual humano haciendo uso de dos cámaras. Estas cámaras se disponen con una diferencia de posición entre ellas (normalmente paralelas o perpendiculares). Si la distancia intercámara es menor a la interocular, se habla de modelo Hipo-Estéreo: Es el modelo habitual para capturar películas que se van a proyectar en salas con gran pantalla, y también en fotografía estéreo con objetivos macro. Si la distancia intercámara es mayor a la interocular, se habla de modelo Hiper-Estéreo: Este modelo puede mejorar la percepción de profundidad al proyectar imágenes de paisajes. La captura de imagen 3D estereoscópica se consigue a través del uso conjunto de dos sistemas de adquisición, sincronizados entre sí. Cuando se trata de dos cámaras individuales se montan conjuntamente sobre un rig (apaño, montaje,...). 100 Información 3D a partir de dos proyecciones Se puede demostrar que, para una cámara genérica, un punto del espacio tridimensional M con coordenadas homogéneas 𝑀 = [𝑋, 𝑌, 𝑍, 1]𝑇 se proyecta a un punto del plano imagen con coordenadas m= [𝑥, 𝑦, 1]𝑇 mediante la transformación matricial P: λ es una constante real distinta de cero que depende de P. ▪ R es una submatriz 3 x 3 de rotación. ▪ D es un vector tridimensional de desplazamiento. ▪ Ambos dependen de la colocación de la cámara en la escena y sus parámetros se denominan extrínsecos. La matriz A , que depende del tipo de cámara y su configuración, depende de 5 parámetros, denominados intrínsecos: ▪ α𝑥 , α𝑦 : distancia focal medida en unidades de píxeles del plano imagen en horizontal y vertical respectivamente. ▪ (u0, v0): coordenadas en el plano imagen del punto principal. (intersección del eje óptico con el plano imagen) ▪ γ: (skew) cero sólo cuando la configuración de los píxeles en el plano imagen es perfectamente ortogonal