1 Análisis de las imágenes - ELAI-UPM

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