transparencias reconocimiento - ELAI-UPM

Anuncio
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
Descargar