Descargar

Integrales proyectivas y análisis de color (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red Análisis de color. Las técnicas anteriores se pueden aplicar tanto en imágenes en color como en escala de grises. Existen otras técnicas que hacen específicamente uso del color: Detección de zonas de color. Seleccionar y modelar un color objetivo. Encontrar regiones conexas de ese color. Parecido al relleno de color, pero aplicado a toda la imagen. ? Aplicaciones: sistemas croma-key (segmentación por color), detección de objetos (p.ej. de caras humanas usando color de piel), seguimiento basado en color. Reproyección del histograma. Es un caso de la detección de zonas de color. Para cada color se define una verosimilitud (probabilidad), obtenida mediante un histograma de color. Comparación de histogramas. Definir y usar una medida de diferencia entre histogramas. Aplicada fundamentalmente en indexación de imágenes (consultas basadas en similitud).

edu.red Análisis de color. Reproyección del histograma. Permite detectar un color partiendo de una imagen con regiones amplias de ese color. Idea: usar histogramas para modelar un color objetivo. Proceso: 1) Calcular el histograma de color de una zona de la imagen con el color objetivo. – Ejemplo. Histograma (R, G), con 64×64 celdas. Imagen de entrada, A Recortes de césped, B Histograma, H R G

edu.red Análisis de color. 2) Usar el histograma como una medida de verosimilitud, probabilidad o distancia en el espacio de color. Valor alto: césped. Valor bajo: no césped. Histograma, H R G Histograma, G R G – Ejemplo. Buscar el máximo de H ? hmax G(r, g) = min {255, 255·10·H(r, g)/hmax} Blanco (255) color de césped Negro (0) color de no césped

edu.red Análisis de color. 3) Dada una imagen nueva, C, aplicar los valores del histograma para detectar las zonas de césped. M(x, y) = G(C(x, y).R, C(x, y).G), para todo (x, y) Esto es lo que se conoce como la reproyección del hist. Histograma, G R G Imagen de entrada C M, reproyección del histograma sobre C Césped segmentado

edu.red Análisis de color. Ejemplo de aplicación: Sistema croma-key. Se toma una imagen del panel de color usado como fondo. Y se calcula su histograma. R Histograma R-G G Imagen de fondo, F R Histograma R-B B En este caso vamos a usar histogramas 3D de 32x32x32

edu.red Análisis de color. Después se usa la reproyección para obtener la máscara de segmentación M. Imagen nueva, A Binarizada y erosionada conveniente-mente (3 iteraciones) M, reproyección del histograma sobre A Imagen compuesta, R

edu.red Análisis de color. Comparación de histogramas. Permite obtener una medida subjetiva de similitud entre imágenes, basada en color. Es útil en aplicaciones como indexación de imágenes. Idea: definir una medida de diferencia (o similitud) entre dos histogramas. La diferencia entre dos imágenes se reduce a la diferencia entre los histogramas correspondientes. Se pueden usar distintas medidas como: suma de diferencias al cuadrado, producto vectorial o solapamiento. Histograma, H1 R G Histograma, H2 R G min (H1, H2) R G solap(H1, H2) = ?min(H1, H2) = 0.608 ? 60.8%

edu.red Análisis de color. Ejemplo de aplicación: Indexación de imágenes. En una base de datos de imágenes queremos añadir consultas basadas en similitud entre imágenes: “Busca la imagen de la BD que más se parezca a una dada”. “Busca las n imágenes de la BD más relacionadas, en cuanto a su contenido, con una dada”. “Busca imágenes que traten sobre el mismo tema o categoría”. Por ejemplo, “busca imágenes de fútbol”.

Todas estas consultas se reducen a medidas de distancia entre histogramas, entre la imagen dada y las de la BD. En los dos últimos ejemplos, además, se deben etiquetar (automáticamente) las imágenes en ciertas categorías.

edu.red Análisis de color. Ejemplo 1. Base de datos de imágenes. f1 f2 f3 f4 s1 s2 s3 s4 b1 b2 b3 b4 t1 t2 t3 t4

edu.red Análisis de color. Añadimos a la BD consultas del tipo: “buscar las imágenes que estén más relacionadas con una dada, A”. Proceso: Usar histogramas 3D de los canales (R,G,B), con 32 celdas por dimensión. Normalizamos los histogramas para que la suma total sea 1. Tomamos como medida de similitud el solapamiento entre histogramas. Esta medida irá entre 0 y 1 (entre 0% y 100% de solapamiento). Calcular los histogramas de todas las imágenes de la BD y de la imagen A. Calcular la similitud de esos histogramas con el de A. 3) Resultado: las imágenes de la BD con mayor valor de similitud.

edu.red Análisis de color. Ejemplo 1. Consulta: buscar las 3 imágenes más relacionadas con… Respuestas: (Gp:) f4

(Gp:) f2

(Gp:) f3

Imagen de entrada A Respuesta 1 Similitud: 33% Respuesta 2 Similitud: 32% Respuesta 3 Similitud: 29%

edu.red (Gp:) b4

(Gp:) b1

Análisis de color. Ejemplo 2. Consulta: buscar las 3 imágenes más relacionadas con… Respuestas: Imagen de entrada A Respuesta 1 Similitud: 36% Respuesta 2 Similitud: 35% Respuesta 3 Similitud: 34% (Gp:) s2

edu.red (Gp:) b1

(Gp:) b4

Análisis de color. Ejemplo 3. Consulta: buscar las 3 imágenes más relacionadas con… Respuestas: Imagen de entrada A Respuesta 1 Similitud: 64% Respuesta 2 Similitud: 63% Respuesta 3 Similitud: 62% (Gp:) b2

edu.red (Gp:) t2

Análisis de color. Ejemplo 4. Consulta: buscar las 3 imágenes más relacionadas con… Respuestas: Imagen de entrada A Respuesta 1 Similitud: 36% Respuesta 2 Similitud: 33% Respuesta 3 Similitud: 32% (Gp:) b2

(Gp:) t3

edu.red Análisis de imágenes. Conclusiones: Existen otras muchas técnicas de análisis de imágenes, muchas de ellas diseñadas para problemas específicos. Simplemente hemos dado una breve perspectiva de los principales objetivos (detección, seguimiento, reconocimiento, etc.) y algunas técnicas para conseguirlos (template matching, integrales proyectivas, etc.). Disyuntiva: técnicas genéricas ? soluciones ad hoc. El análisis de imágenes es la base de la visión artificial, cuyo objetivo es la comprensión de la información visual. Además, la visión artificial incorpora técnicas más propias de la inteligencia artificial: reconocimiento de patrones, clasificación supervisada y no supervisada, toma de decisiones, representación del conocimiento, etc.

edu.red Análisis de imágenes en OpenCV. Búsqueda de patrones Flujo óptico Integrales proyectivas Reproyección y comparación de histogramas

edu.red OpenCV incluye muchas funciones relacionadas con el análisis de imágenes y la visión artificial, algunas básicas y otras mucho más avanzadas. No obstante, no vamos a profundizar mucho, puesto que se sale de los objetivos de la asignatura. Nos limitaremos a las técnicas estudiadas en este tema: Búsqueda de patrones: cvMatchTemplate Flujo óptico: cvCalcOpticalFlowBM Integrales proyectivas: cvIntegral Análisis de color: cvCalcBackProject, cvCompareHist

En “cvaux” se puede encontrar alguna funcionalidad adicional y experimental de análisis y reconocimiento de patrones. Análisis de imágenes en OpenCV.

edu.red Búsqueda de patrones La función cvMatchTemplate de OpenCV permite realizar la búsqueda de patrones por template matching: dado un patrón y una imagen, calcular el mapa de matching. Distintas medidas de distancia: CV_TM_SQDIFF: suma de diferencias al cuadrado. CV_TM_SQDIFF_NORMED: diferencias al cuadrado normalizadas. CV_TM_CCORR: producto vectorial de los 2 trozos de imagen. CV_TM_CCORR_NORMED: producto vectorial normalizado. CV_TM_CCOEFF: producto vectorial de los patrones “centrados” (correlación). CV_TM_CCOEFF_NORMED: correlación normalizada. Análisis de imágenes en OpenCV.

edu.red void cvMatchTemplate (const CvArr* img, const CvArr* templ, CvArr* result, int method) Significado: buscar el patrón templ en la imagen img usando la medida de distancia dada en method, y almacenando el resultado en la imagen result. Ojo con las restricciones de tamaños y tipos de datos: Las imágenes img y templ deben ser de 1 solo canal, de 8 bits de profundidad o bien reales de 32 bits. La imagen templ debe ser más pequeña que la img. La imagen result debe ser de 1 solo canal y necesariamente de reales de 32 bits. Si img es de tamaño WxH y templ de wxh, result debe ser de tamaño (W-w+1)x(H-h+1). Análisis de imágenes en OpenCV.

edu.red En imágenes en color, dos opciones: Convertirlas a escala de grises (cvCvtColor) y trabajar en gris. Separar los canales (cvSplit), aplicar el matching a cada canal y sumar los resultados (cvAdd). Con CV_TM_SQDIFF, el mejor valor de matching se encontrará en la posición del mínimo. Con CV_TM_CCORR y CV_TM_CCOEFF, el mejor matching será el máximo. Para buscar máximos y mínimos puede ser interesante usar la función cvMinMaxLoc. void cvMinMaxLoc (const CvArr* A, double* minVal, double* maxVal, CvPoint* minLoc, CvPoint* maxLoc, const CvArr* mask=0) minVal, maxVal: mínimo y máximo global en A, respectivamente. minLoc, maxLoc: posición (x,y) del mínimo y del máximo en A. Análisis de imágenes en OpenCV.

edu.red Flujo óptico Existen muchas funciones relacionadas con el análisis de movimiento en la sección “Motion Analysis and Object Tracking” dentro de la parte CV de OpenCV. Hay que tener ciertos conocimientos sobre las técnicas para poder hacerlas funcionar adecuadamente, así que nos limitaremos a la estudiada en el tema. La función cvCalcOpticalFlowBM permite calcular el flujo óptico entre dos imágenes (en escala de grises) aplicando la técnica del matching de bloques. Otras funciones para calcular el flujo óptico: cvCalcOpticalFlowHS, cvCalcOpticalFlowLK, cvCalcOpticalFlowPyrLK. Análisis de imágenes en OpenCV.

edu.red void cvCalcOpticalFlowBM (const CvArr* imgA, const CvArr* imgB, CvSize blockSize, CvSize shiftSize, CvSize maxRange,int usePrevious, CvArr* velx, CvArr* vely) imgA, imgB: imágenes de entrada. Deben ser de 8 bits y 1 solo canal. Ambas de igual tamaño. velx, vely: flujo óptico resultante. Son también dos imágenes, de 1 canal con profundidad real de 32 bits. blockSize: tamaño del bloque que se busca. Recordar que el tipo CvSize es un struct con los campos: width y height. maxRange: radio de búsqueda del bloque. shiftSize (no visto en el tema): usar cvSize(1,1) para buscar el bloque en todo el radio de búsqueda; cvSize(2,2) para buscar en saltos de 2 en X e Y; cvSize(3,3) en saltos de 3, etc. usePrevious: si es true, velx y vely se toman como parámetros de entrada. Se buscan los bloques partiendo de las posiciones previas. Análisis de imágenes en OpenCV.

edu.red Si las imágenes imgA e imgB son de WxH y el tamaño de bloque es de wxh, las imágenes velx y vely deben ser de tamaño: (?W/w?)x(?H/h?). Ojo, está mal en la ayuda.

Algunas indicaciones: En general, el cálculo del flujo óptico será un proceso muy lento. Puede ser adecuado reducir el tamaño de las imágenes antes de aplicarles la función. Ajustar los parámetros requiere un proceso de ensayo y error. Bloques pequeños: matching poco fiable. Bloques grandes: proceso lento. Radio pequeño: error si la velocidad es mayor. Radio grande: proceso más lento. Descartar los bloques de los extremos. En general, serán poco fiables si hay movimiento por esa zona. En los ejemplos del tema se usan imágenes de 320×240, bloques de 21×21, radio de búsqueda 21×21 y shiftSize 1×1. Análisis de imágenes en OpenCV.

edu.red Integrales proyectivas OpenCV no incluye, implícitamente, funciones para el manejo de integrales proyectivas, aunque se pueden usar matrices CvMat (o incluso imágenes IplImage) para almacenarlas y manipularlas. En cuanto al cálculo de las proyecciones, puede ser interesante la función cvIntegral. void cvIntegral (const CvArr* I, CvArr* S, CvArr* Sq=0, CvArr* T=0) Dada la imagen I, calcula en S una imagen en la que cada píxel (x,y) es la suma de los píxeles (x’,y’) con x’

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente