Cap.VII: Interpretación de las imágenes Reconocimiento de objetos Objetos etiquetados Extracción de las características Clasificación Etiquetamiento Imagen binaria Conectividad 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 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: 2 P (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 A(i ) yˆ i = x =1 y =1 A(i ) 1 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 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 2 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 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 [row,cols]=find(imgEnt>4); mean([row,cols]) [V,D]=eig(cov([row,cols])) 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 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 >>[B,L] = bwboundaries(bw,'noholes'); >>figure; imshow(label2rgb(L, @jet, [.5 .5 .5])) >>hold on >>for k = 1:length(B) boundary = B{k}; plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2) >>end >>stats = regionprops(L,'Area','Centroid'); >>threshold = 0.94; >>for k = 1:length(B) delta_sq = diff(boundary).^2; perimeter = sum(sqrt(sum(delta_sq,2))); area = stats(k).Area; metric = 4*pi*area/perimeter^2; metric_string = sprintf('%2.2f',metric); if metric > threshold centroid = stats(k).Centroid; plot(centroid(1),centroid(2),'ko'); end text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',... 'FontSize',14,'FontWeight','bold'); Metrics closer to 1 indicate that the object is approximately round 0.91 0.90 0.58 0.73 0.95 0.96 >>end 3 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) No solo descriptivo sino también para la segmentación 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 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 4 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 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. 5 Ejemplo: estadísticos de primer orden Entropía Contraste 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 j, se encuentra a una distancia h, en dirección θ, de un píxel con nivel de gris Ejemplo: vecindad a -45º con h=1 h=píxel superior derecha 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'}) 3448 1908 9 0 0 0 0 0 1000 800 600 400 200 1861 19450 4505 583 0 0 0 0 3 4405 10103 1719 93 0 0 0 0 346 1692 8584 1534 0 0 0 0 0 28 1377 11459 887 0 0 0 0 0 0 870 752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 x 10 50 100 150 200 250 3 2.5 2 1.5 1 3251 2039 7 0 0 0 0 0 2173 0 0 0 0 0 19890 3811 3890 10426 646 1882 7 107 0 0 0 0 325 0 1864 88 8215 1506 1748 11229 0 863 0 0 0 0 0 0 0 0 857 0 776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0 0 0.2 0.4 0.6 0.8 1 6 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 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 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, rotación y escala ∇f ∇f κ = div 7 Descriptores de Fourier(4/4) Curvas cerradas: descripción unidimensional Secuencia en coordenadas cartesianas convertidas a variable compleja {(x1 , y1 ), (x 2 , y 2 ),..., (x i , y i ),...(x n , y n )} z (i ) = x i + jy i K descriptores de Fourier De grueso a detalle. Continuo = centroide n Z k = ∑ zn e −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 2i ⋅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 Estadístico Métodos sintácticos Alineamiento de plantillas Redes neuronales Alineamiento de plantillas 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) 8 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 9 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 6 longitud hoja 4.5 6.5 7 7.5 8 4 4.5 5 5.5 6 longitud hoja 6.5 7 7.5 180 190 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 Ejemplo: k-means con el color H&E image 130 120 110 100 90 80 70 60 120 130 140 150 160 170 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); 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) 10 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 ) = p ( X | ωi ) p (ωi ) Clasificadores estadísticos(3/5) Paramétrica Modelizada por una densidad normal p( X | ωi ) = 1 ( 2π ) n/2 Σi 1 2 T 1 exp − ( X − M i ) Σ i−1 ( X − M i ) 2 Función discriminante n T 1 1 di ( 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 di ( X ) = − 1 T ( X − M i ) Σ −1 ( X − M i ) 2 Si además las características no están correladas y las varianzas son idénticas T di ( X ) = ( X − M i ) ( X − M i ) Distancia euclídea 11 Ejemplo: clasificación de Bayes Espacio de las características pdf(obj,[x,y]) 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 2 4 6 Cluster 1 Cluster 2 4 0 0 pdf(obj,[x,y]) x 6 0.05 6 4 2 2 0 -2 0 y -6 -8 -8 -6 0 -2 -4 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 1 n 1 exp ∑ 2h 2 n i =1 2π h2 1 2 ( ) 2 12