Cap.VII: Interpretación de las imágenes Reconocimiento de objetos Objetos etiquetados Extracción de las características Clasificación Análisis de las imágenes Cap.VII: Interpretación de las imágenes Etiquetamiento Imagen binaria Conectividad 1 Ejemplo de etiquetamiento Resolución Matlab ImgEnt=imread('rice.png');imshow(imgEnt);pause; imgBWMask=im2BW(imgEnt); se = strel('disk',2); imgBWMarcador = imerode(imgBWMask,se); imgReconst=imreconstruct(imgBWMarcador,imgBWMask); imgBWElimBorde = imclearborder(imgReconst); imgEtiq=bwlabel(imgBWElimBorde); subplot(1,2,1);imshow(imgEnt);subplot(1,2,2);imshow(label2rgb(imgEtiq)); Extracción de las características Características de los objetos: identificación Fronteras versus región Invariante a escalado, traslación y rotación Descriptores N M N M A(i ) = ∑∑ g i (x, y ) W (i ) = ∑∑ g i (x, y ) ⋅ f (x, y ) Área y peso: x =1 y =1 x =1 y =1 Perímetro: P 2 (i ) Compacidad: A(i ) Centro de gravedad: N M N M ∑∑ x ⋅ g i (x, y ) ∑∑ y ⋅ g i (x, y ) xˆ i = x =1 y =1 yˆ i = A(i ) x =1 y =1 A(i ) Extracción de las características(2/2) Teorema de unicidad de Papoulis m (i ) = ∑∑ x ⋅ y ⋅ g (x, y ) Momentos: N M p q pq i x =1 y =1 Invariantes a traslaciones (centrales): N M mc pq (i ) = ∑∑ ( x − xˆi ) ⋅ ( y − yˆ i ) ⋅ g i ( x, y ) p q x =1 y =1 A escalas (centrales normalizados): Elipse que inscribe al objeto: Excentricidad, orientación µ pq = mc pq m00 b e = 1− a 2 2 Descriptores topológicos Globales e invariantes a escala, rotación y traslación Número de agujeros Número de componentes conectados Número de Euler Diferencia entre componentes y agujeros A(0),B(-1),i(2) Envolvente convexa Simplificar el objeto eliminado la concavidades La envolvente convexa (convex hull), EC, de un conjunto C se define como el conjunto convexo más pequeño que contiene a C. Matlab Ejemplo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 [row,cols]=find(imgEnt>4); mean([row,cols]) [V,D]=eig(cov([row,cols])) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Area: 19 Centroid: [5.0526 5.6316] BoundingBox: [2.5000 2.5000 5 6] MajorAxisLength: 5.5489 MinorAxisLength: 4.6766 Eccentricity: 0.5382 Orientation: -76.7175 FilledArea: 19 EulerNumber: 1 EquivDiameter: 4.9185 ConvexArea: 20 Solidity: 0.9500 Extent: 0.6333 Perimeter: 13.8995 (D.^.5)*4 3 Ejemplo: detectar objetos redondos Dada la imagen ‘pillsetc.png’: A) Leer la imagen. B) Convertirla a grises. C) Umbralizar con Otsu. D) Eliminar objetos menores 30. E) Realizar un cierre con elemento estructurante de disco de radio 2. F) Rellenar. G) Etiquetar H) Extraer las características de área, centroide y perímetro de cada objeto. I) Calcular el parámetro adimensional 4π2A para cada objeto, siendo A el área y P el P perímetro. J) Colocar en el centroide del objeto un circulo negro si tiende a ser un círculo (utilizar como criterio que lo es si 4π A > 0.8 ), en P caso contrario poner una cruz. 2 Ejemplo: detectar objetos redondos RGB = imread('pillsetc.png'); figure; imshow(RGB); I = rgb2gray(RGB); threshold = graythresh(I); bw = im2bw(I,threshold); figure; imshow(bw) bw = bwareaopen(bw,30); se = strel('disk',2); bw = imclose(bw,se); bw = imfill(bw,'holes'); figure; imshow(bw) Ejemplo: detectar objetos redondos labels = bwlabel(bw); features = regionprops(labels,'Area','Perimeter','Centroid'); figure; imshow(label2rgb(labels));hold on; for i=1:numel(features) if(4*pi*features(i).Area/(features(i).Perimeter)^2 > .8) plot(features(i).Centroid(1),features(i).Centroid(2),'ko'); else plot(features(i).Centroid(1),features(i).Centroid(2),'k+'); end end hold off; end 4 Descriptores texturales (1/5) Textura asociada a propiedades de suavidad, regularidad, granularidad ,… Interacción entre la luz con la materia Tacto y visión Espacio de escalas (lejos y cerca) Concepto de texel Primitiva de descripción del patrón textual Invariante a posición, rotación y luminancia Descriptores texturales(2/5) El análisis textural consiste en la descripción de cómo son y cómo se distribuyen los elementos de textura en una imagen Los descriptores de texturas deben cuantificar ciertas propiedades tales como suavidad, rugosidad y regularidad. Técnicas Estructurales Estadísticas Frecuenciales No solo descriptivo sino también para la segmentación Segmentación 5 Descriptores texturales(3/5) Estructurales Supone que la textura está compuesta por combinaciones espaciales de una “textura primitiva”, es decir, de un patrón que se repite. A partir del patrón se formarán patrones de estructuras más complejas por medio de reglas. Se basa en descripciones relacionales Éxito en texturas muy regulares Aceptada Rechazada Descriptores texturales(4/5) Frecuenciales Transformadas de Fourier: global No funciona con variaciones espaciales Filtros de Gabor, fija la orientación y escala del patrón Función de Gauss modulada por un armónico con orientación determinada La varianza y la frecuencia del armónico definen el espacio de escala Descriptores texturales(5/5) Filtros de Gabor Bancada de filtros de Gabor en función de la escala y la orientación f = {0.2, 0.35, 0.5} π π 3π φ = 0, , , 4 2 4 6 Descriptores estadísticos en textura Orden del estadístico: depende de número de píxeles de vecindad Primer orden: histogramas locales Energía, entropía, momentos No tiene en cuenta las relaciones espaciales Matlab Analyzing the Texture of an Image Function Description rangefilt Calculates the local range of an image. stdfilt Calculates the local standard deviation of an image. entropyfilt Calculates the local entropy of a grayscale image. Entropy is a statistical measure of randomness. Rango = valor máximo menos valor mínimo Características locales en un entorno de 3x3 por defecto y de 9x9 en la entropía Ejemplo: estadísticos de primer orden Entropía Contraste I = imread('bag.png'); E = entropyfilt(I); Eim = mat2gray(E); imshow(Eim); S = stdfilt(I,nhood); imshow(mat2gray(S)); Ejemplo: estadísticos de primer orden Entropía Umbralizacion Cierre Relleno I = imread('bag.png'); E = entropyfilt(I); Eim = mat2gray(E); BW1 = im2bw(Eim, .8); BWao = bwareaopen(BW1,2000); nhood = true(9); closeBWao = imclose(BWao,nhood); roughMask = imfill(closeBWao,'holes'); 7 Descriptores estadísticos en textura Orden del estadístico: depende de número de píxeles de vecindad Primer orden: histogramas locales No tiene en cuenta las relaciones espaciales Segundo orden: matriz de coocurencia Regla de vecindad A (kxk), siendo k el número de grises. aij, representa el número de veces que un píxel con nivel de gris i, se encuentra a una distancia h, en dirección θ, de un píxel con nivel de gris j Ejemplo: vecindad a 45º con h=1 h=píxel superior derecha Descriptores estadísticos en textura Matriz de co-ocurrencia del nivel de gris Estimación de la probabilidad compuesta: h=píxel superior derecha 2 1 2 1 C = 3 3 0 16 2 2 1 Propiedades: energía, entropía, correlación,… Clasificación entre texturas stats = Ejemplo: Contrast: [0.3307 0.3358] I = imread('circuit.tif'); Homogeneity: [0.8534 0.8531] [GLCM2,SI] = graycomatrix(I,'Offset',[2 0;0 2]); stats = graycoprops(GLCM2,{'contrast','homogeneity'}) 1000 3448 1908 9 0 0 0 0 0 800 600 400 200 0 0 50 100 150 200 250 4 x 10 1861 3 0 0 0 0 19450 4505 583 4405 10103 1719 346 1692 8584 0 28 1377 0 0 0 0 0 0 0 0 93 0 1534 0 11459 887 870 752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2.5 2 1.5 1 0.5 0 0 0.2 0.4 0.6 0.8 1 Reglas de vecindad: Angle OFFSET 0 [0 D] 45 [-D D] 90 [-D 0] 135 [-D -D] 3251 2039 7 0 0 0 0 0 2173 0 0 0 0 0 19890 3890 646 7 0 0 3811 10426 1882 107 0 0 325 0 1864 88 8215 1506 1748 11229 0 863 0 0 0 0 0 857 776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 Descriptores de fronteras(1/4) Códigos encadenados Segmentos de longitud y orientación determinada dependiente de la conectividad a 4 ó 8. Primer elemento Información de su posición Proceso de normalización El código de menor valor Ejemplo Obtener el código encadenado del objeto etiquetado con conectividad a 4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02123355677 Descriptores de fronteras(2/4) Geométricos Perímetro: código encadenado(1 y 2 ) Representación de la curva mediante una función unidimensional Signatura: distancia de un punto interior del objeto (p.ej: centroide) a cada uno de los puntos fronteras. Invarianza a la traslación Depende del punto inicial, se toma la distancia mayor La invarianza a escala se consigue normalizando la distancia 9 Descriptores de fronteras(3/4) Signatura problemas Invariante a escala: normalización distancia [0 1] Dependiente de la posición inicial: punto de máxima distancia Sensible al punto interior Curvas con concavidades Curvatura: variación de la tangente en el contorno Histograma de la curvatura Invariante a traslación y rotación ∇f ∇f κ = div Ejercicio Calcular la curvatura sobre el pixel indicado (empléese una máscara de Sobel). −2 −2 −2 −2 −1 0 1 2 −1 • 0 1 2 −1 0 1 2 −1 0 1 2 ∂ x f ( x, y ) = 0 ∂ x Fx ( x, y ) = 0 ∂ y f ( x, y ) = 8 ∂ y Fy ( x, y ) = 0 ∇f ( x, y ) K = div ∇f ( x, y ) =0 Ejercicio Escribir el código para calcular la curvatura sobre una imagen (empléese una máscara de Sobel). fx = imfilter(img,fspecial('Sobel'),'conv','replicate'); fy = imfilter(img,fspecial('Sobel')','conv','replicate'); modGrad = (fx.*fx + fy.*fy).^.5; fx = fx./(modGrad+eps); fy = fy./(modGrad+eps); fyy = imfilter(fy,fspecial('Sobel')','conv','replicate'); fxx = imfilter(fx,fspecial('Sobel')','conv','replicate'); curvatura=fyy+fxx; 10 Descriptores de Fourier(4/4) Curvas cerradas: descripción unidimensional Secuencia en coordenadas cartesianas convertidas a variable compleja {(x1 , y1 ), (x2 , y 2 ),..., (xi , y i ),...(x n , y n )} z (i ) = xi + jy i K descriptores de Fourier De grueso a detalle. Continuo = centroide n Z k = ∑ zne −j 2π ⋅ k i K k = 0,1,2,..., K − 1 i =1 Anti-transformada: P<K zi = 1 K K −1 ∑Z k e j 2 i ⋅k ⋅n K i = 1,2,..., n k =0 Invariantes a traslaciones, rotaciones, escalado y de donde se empiece a tomar la secuencia. Reconocimiento de patrones Disciplina relacionada con la Inteligencia Artificial Asignar los objetos a una clase Imágenes, señales o cualquier tipo de medida Características + conocimiento a priori Enfoques Atlas Métodos sintácticos Redes neuronales Estadístico Atlas El objeto a ser reconocido es comparado con un conjunto de plantillas, teniendo en cuenta que puede haber habido traslaciones, rotaciones o cambio de escala. Muy utilizado en análisis médicas ITK( Insight Toolkit: Registration and segmentation) 11 Métodos sintácticos En este caso un objeto es visto como una composición de subformas simples. Las subformas más simple a ser reconocidas son llamadas primitivas y una forma compleja es representada en términos de interrelaciones entre estas primitivas. Este método tiene analogía con la sintaxis de un lenguaje. Hay problemas para separar en sus primitivas una forma que tiene mucho ruido. Redes neuronales Consiste en una red cuyos nodos son neuronas artificiales que se conectan mediante enlaces que tienen distintas ponderaciones. Las redes neuronales tienen la habilidad de aprender complejas relaciones no lineales de entrada-salida usando procedimientos secuenciales de entrenamiento. Clasificación Supervisada: MLP (Multilayer perceptron) y las redes de funciones de base radial (RBF). No supervisada se usa las redes de Kohonen conocidas como Self-Organizing Maps (SOM) Selección de las características Particionar el espacio de las características Propiedades de las características Discriminación Fiabilidad Independencia Menor número de características Longitud & ancho 12 Ejemplo de Fisher 4.5 4.5 setosa versicolor virginica setosa versicolor virginica 3.5 3.5 Anchura hoja 4 Anchura hoja 4 3 3 2.5 2.5 2 2 4 4.5 5 5.5 4.5 6 longitud hoja 6.5 7 7.5 8 4 4.5 5 5.5 6 longitud hoja 6.5 7 7.5 8 versicolor setosa virginica 4 y 3.5 3 2.5 2 4 4.5 5 5.5 6 x 6.5 7 7.5 8 Clasificadores estadísticos(1/5) Teoría de la probabilidad para clasificar Variables aleatorias Requiere del conocimiento previo de las funciones de densidad Paramétricas o no paramétricas Probabilidad a priori: p(x|ωi) Clasificadores estadísticos(2/5) Teoría de Bayes Minimizar el error de clasificación: se asigna a la clase con mayor probabilidad a posteriori: p ( X | ωi ) p (ωi ) p ( ωi | X ) = p( X ) Distancia a la clase i d i ( X ) = − ln ( p ( X | ωi ) p ( ωi ) ) 13 Clasificadores estadísticos(3/5) Paramétrica Modelizada por una densidad normal p ( X | ωi ) ≡ 1 ( 2π ) k /2 Σi 1 2 T 1 exp − ( X − M i ) Σ−i 1 ( X − M i ) 2 Función discriminante k T 1 1 d i ( X ) = − ln ( p ( X | ωi ) p ( ωi ) ) = ln ( 2π ) + ln Σi 2 + ( X − M i ) Σi−1 ( X − M i ) − ln ( p ( ωi ) ) 2 2 Clasificadores estadísticos(4/5) Normal Igualdad en la matriz de covarianza y todas las clase equiprobables Distancia de Mahalanobis T d i ( X ) = ( X − M i ) Σ −1 ( X − M i ) Si además las características no están correladas y las varianzas son idénticas T di ( X ) = ( X − M i ) Distancia euclídea ( X − Mi ) Ejemplo Dado los siguientes vectores de características de dos grupos, determinar a que clase pertenece el nuevo elementos: {4,5}. clase1 = 1 2 3 3 1 5 2 2 3 3 clase2 = 6 4 6 3 7 4 8 4 8 5 2 M1 = 3 7 M2 = 4 −0.25 1 Σ1 = −0.25 1.5 1 0.5 Σ2 = 0.5 0.5 pdf(obj,[x,y]) 6 5.5 5 T d1 ( X ) = ( X − M 1 ) Σ1−1 ( X − M 1 ) = 8.35 4.5 T d 2 ( X ) = ( X − M 2 ) Σ2−1 ( X − M 2 ) = 34 y 4 3.5 3 2.5 2 1.5 1 0 1 2 3 4 5 6 7 8 9 x 14 Problema En la imagen de monedas (‘coins.png’) se trata de clasificarlas en dos categorías: pequeñas y grandes. Se pide: 1. Algoritmo de segmentación, etiquetado y extracción de las características del área de cada objeto etiquetado. Explicarlo y escribir el seudo-código en Matlab. 2. Sabiendo que las áreas de las pequeñas son {1810 1854 1863 1891} y de las grandes son {2509 2538 2592 2650 2678 2751} y suponiendo distribuciones normales, calcular los parámetros de las distribuciones y la probabilidad a priori de cada etiqueta. 3. Determinar el umbral óptimo de Bayes. Ejemplo Algoritmo de segmentación imIn=imread('coins.png'); umbr = im2bw(imIn); bwcoins = imfill(umbr,'holes'); Problema Clasificar las monedas en grandes y pequeñas utilizando Bayes labels = bwlabel(bwcoins); %Etiquetamiento area_coins =regionprops(labels,'Area'); %Extracción de area de cada objeto 15 Problema Los parámetros de las distribuciones normales para las categorías de monedas pequeñas y grandes son la media y la varianza: Normal pequeñas: µ P = 1854 σ P2 = 1128 µ = 2619 σ = 8250 Normal grande: Mientras que las probabilidades a priori de cada clase son: 2 G G pP = 0.4 pG = 0.6 Problema 3. El umbral de Bayes será definido cuando la probabilidad de cada clase sea la misma para esa área: p ( area | ω ) p P p p ( area | ωG ) pG =1 p ( area | ωP ) p p log = 0 p ( area | ωG ) pG ( area − µ ) 2 area − µ 2 pσ p G) + ( − − log G P = 0 pσ σ P2 σ G2 p G Resolviendo la ecuación de segundo orden da que el área umbral es 2063 píxeles. Ejemplo Clasificar las monedas en grandes y pequeñas utilizando Bayes 16 Ejemplo: clasificación de Bayes pdf(obj,[x,y]) Espacio de las características 6 6 4 4 2 2 0 y 0 -2 -2 -4 -4 -6 -6 pdf(obj,[x,y]) -8 -8 0.1 -6 -4 -2 0 2 4 6 -8 -8 -6 -4 -2 4 6 Cluster 1 Cluster 2 4 0 0 2 pdf(obj,[x,y]) x 6 0.05 6 4 2 2 0 -2 0 y -6 -8 -8 0 -2 -4 -6 2 4 6 y -4 -2 x obj = gmdistribution.fit(X,2); idx = cluster(obj,X); -4 -6 -8 -8 -6 -4 -2 0 2 4 6 x Clasificadores estadísticos(5/5) No paramétricos Ventana de Parzen A partir del histograma de las características Número de muestras del conjunto total que cae dentro de un hipercubo del espacio de características: ∫ p ( X ) dX p( X ) = R ≅ ∫ dX k/n VR 1 xij < 1 2 0 en caso contrario φ ( xi ) = R k/n 1 p(X ) ≅ = VR n ⋅ hd n x − xi h ∑φ i =1 p(X ) ≅ X − Xi 2 1 n 1 exp ∑ 2h 2 n i =1 2π h 2 12 ( ) Ejemplo: k-means con el color H&E image 130 120 110 100 90 80 70 60 120 130 140 150 160 170 180 190 200 image labeled by cluster index Image courtesy of Alan Partin, Johns Hopkins Univ ersity ab = double(lab_he(:,:,2:3)); nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; % repeat the clustering 3 times to avoid local minima [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ... 'Replicates',3); 17 Cuestiones Etiquetamiento de las imágenes Extracción de características de los objetos etiquetados. Clasificadores estadísticos. 18