1
� Reconocimiento de objetos� Objetos etiquetados� Extracción de las características
� Clasificación
Cap.VII: Interpretación de las imágenes
Análisis de las imágenes
� Etiquetamiento� Imagen binaria
� Conectividad
Cap.VII: Interpretación de las imágenes
2
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� Área y peso:
� Perímetro:� Compacidad:
� Centro de gravedad:
( ) ( ) ( ) ( ) ( )∑∑∑∑= == =
⋅==N
x
M
y
i
N
x
M
y
i yxfyxgiWyxgiA1 11 1
,,,
( )( )iA
iP 2
( )
( )
( )
( )iA
yxgy
yiA
yxgx
x
N
x
M
y
i
i
N
x
M
y
i
i
∑∑∑∑= == =
⋅
=
⋅
=1 11 1
,
ˆ
,
ˆ
Extracción de las características(2/2)
� Teorema de unicidad de Papoulis� Momentos:� Invariantes a traslaciones (centrales):
� A escalas (centrales normalizados):
� Elipse que inscribe al objeto:� Excentricidad, orientación
( ) ( )∑∑= =
⋅⋅=N
x
M
y
i
qp
pq yxgyxim1 1
,
( ) ( ) ( ) ( )∑∑= =
⋅−⋅−=N
x
M
y
i
q
i
p
ipq yxgyyxximc1 1
,ˆˆ
00m
mc pqpq =µ
2
1
−=
a
be
3
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 00 0 0 0 0 0 0 0 0 00 0 0 0 1 0 0 0 0 00 0 0 1 1 1 0 0 0 00 0 1 1 1 1 1 0 0 00 0 1 1 1 1 1 0 0 00 0 0 1 1 1 0 0 0 00 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0
Area: 19Centroid: [5.0526 5.6316]BoundingBox: [2.5000 2.5000 5 6]MajorAxisLength: 5.5489MinorAxisLength: 4.6766Eccentricity: 0.5382Orientation: -76.7175FilledArea: 19EulerNumber: 1EquivDiameter: 4.9185ConvexArea: 20Solidity: 0.9500Extent: 0.6333Perimeter: 13.8995
[row,cols]=find(imgEnt>4);mean([row,cols])[V,D]=eig(cov([row,cols]))(D.^.5)*4
4
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 para cada objeto, siendo A el área y P el perímetro. J) Colocar en el centroide del objeto un circulo negro sitiende a ser un círculo (utilizar como criterio que lo es si ), en caso contrario poner una cruz.
2
4 A
P
π
2
40.8
A
P
π>
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');
elseplot(features(i).Centroid(1),features(i).Centroid(2),'k+');
endendhold off;end
5
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
6
Descriptores texturales(3/5)
Aceptada Rechazada
� 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
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
30, , ,4 2 4
π π πφ
=
{ }0.2,0.35,0.5f =
7
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
Calculates the local entropy of a grayscale image. Entropy is a statistical measure of randomness.
entropyfilt
Calculates the local standard deviation of an image.stdfilt
Calculates the local range of an image.rangefilt
DescriptionFunction
Rango = valor máximo menos valor mínimoCaracterísticas locales en un entorno de 3x3 por defecto y de 9x9 en la entropía
Ejemplo: estadísticos de primer ordenEntropí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 ordenEntropía Umbralizacion
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');
Cierre Relleno
8
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
� Matriz de co-ocurrencia del nivel de gris� Estimación de la probabilidad compuesta:
� Propiedades: energía, entropía, correlación,…� Clasificación entre texturas
Descriptores estadísticos en textura
h=píxel superior derecha
2 1 213 3 0
162 2 1
C
=
Ejemplo: I = imread('circuit.tif'); [GLCM2,SI] = graycomatrix(I,'Offset',[2 0;0 2]); stats = graycoprops(GLCM2,{'contrast','homogeneity'})
0
200
400
600
800
1000
0 50 100 150 200 250
0
0.5
1
1.5
2
2.5
3
x 104
0 0.2 0.4 0.6 0.8 1
3448 1861 3 0 0 0 0 0
1908 19450 4405 346 0 0 0 0
9 4505 10103 1692 28 0 0 0
0 583 1719 8584 1377 0 0 0
0 0 93 1534 11459 870 0 0
0 0 0 0 887 752 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
3251 2173 0 0 0 0 0 0
2039 19890 3890 646 7 0 0 0
7 3811 10426 1882 107 0 0 0
0 325 1864 8215 1748 0 0 0
0 0 88 1506 11229 863 0 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
stats =
Contrast: [0.3307 0.3358]Homogeneity: [0.8534 0.8531]
Angle OFFSET0 [0 D] 45 [-D D]90 [-D 0]135 [-D -D]
Reglas de vecindad:
9
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 00 0 0 0 0 0 0 0 0 00 0 0 0 1 0 0 0 0 00 0 0 1 1 1 0 0 0 00 0 1 1 1 1 1 0 0 00 0 1 1 1 1 1 0 0 00 0 0 1 1 1 0 0 0 00 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0
0 2 1 2 3 3 5 5 6 7 7
Descriptores de fronteras(2/4)� Geométricos
� Perímetro: código encadenado(1 y )� 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
2
10
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
fdiv
fκ
∇= ∇
Ejercicio
� Calcular la curvatura sobre el pixel indicado (empléese una máscara de Sobel).
( )
( )
, 0
, 8
x
y
f x y
f x y
∂ =
∂ =
( )
( )
, 0
, 0
x x
y y
F x y
F x y
∂ =
∂ =
( )( )
,0
,
f x yK div
f x y
∇= =
∇
2 1 0 1 2
2 1 0 1 2
2 1 0 1 2
2 1 0 1 2
− −
− − • − −
− −
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;
11
Descriptores de Fourier(4/4)� Curvas cerradas: descripción unidimensional
� Secuencia en coordenadas cartesianas convertidas a variable compleja
� K descriptores de Fourier� De grueso a detalle. Continuo = centroide
� Anti-transformada: � P<K
� Invariantes a traslaciones, rotaciones, escalado y de donde se empiece a tomar la secuencia.
( ) ( ) ( ) ( ){ }nnii yxyxyxyx ,,...,,...,,,, 2211 ( ) ii jyxiz +=
1,...,2,1,01
2
−==∑=
⋅−
KkezZn
i
iK
kj
nk
π
nieZK
zK
k
nK
kij
ki ,...,2,11 1
0
2
== ∑−
=
⋅⋅
� 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
Reconocimiento de patrones
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)
12
Métodos sintácticos� En este caso un objeto es visto como una
composición de subformas simples. Las subformasmá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
13
Ejemplo de Fisher
4 4.5 5 5.5 6 6.5 7 7.5 82
2.5
3
3.5
4
4.5
longitud hoja
Anc
hura
hoj
a
setosa
versicolorvirginica
4 4.5 5 5.5 6 6.5 7 7.5 82
2.5
3
3.5
4
4.5
longitud hoja
Anc
hura
hoj
a
setosaversicolorvirginica
4 4.5 5 5.5 6 6.5 7 7.5 82
2.5
3
3.5
4
4.5
x
y
versicolor
setosavirginica
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:
� Distancia a la clase i
( )( ) ( )
( )|
|i i
i
p X pp X
p X
ω ωω =
( ) ( ) ( )( )ln |i i id X p X pω ω= −
14
Clasificadores estadísticos(3/5)
� Paramétrica� Modelizada por una densidad normal
� Función discriminante
( )( ) ( )1
1/ 22
1 1( | ) exp
22
T
i i i ik
i
p X X M X Mωπ
− ≡ − − Σ −
Σ
( ) ( ) ( )( ) ( ) ( ) ( ) ( )( )1
12
1ln | ln 2 ln ln
2 2
T
i i i i i i i i
kd X p X p X M X M pω ω π ω−
= − = + Σ + − Σ − −
Clasificadores estadísticos(4/5)
� Normal� Igualdad en la matriz de covarianza y todas las
clase equiprobables� Distancia de Mahalanobis
� Si además las características no están correladas y las varianzas son idénticas� Distancia euclídea
( ) ( ) ( )1T
i i id X X M X M−= − Σ −
( ) ( ) ( )T
i i id X X M X M= − −
Ejemplo� Dado los siguientes vectores de características de dos grupos,
determinar a que clase pertenece el nuevo elementos: {4,5}.
clase1 =1 23 31 52 23 3
clase2 =6 46 37 48 48 5
1
2
3M
=
2
1 0.5
0.5 0.5
Σ =
( ) ( ) ( )
( ) ( ) ( )
1
1 1 1 1
1
2 2 2 2
8.35
34
T
T
d X X M X M
d X X M X M
−
−
= − Σ − =
= − Σ − =
x
y
pdf(obj,[x,y])
0 1 2 3 4 5 6 7 8 91
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6
1
1 0.25
0.25 1.5
− Σ =
−
2
7
4M
=
15
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 y de las grandes son 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.
{ }1810 1854 1863 1891
{ }2509 2538 2592 2650 2678 2751
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); %Etiquetamientoarea_coins =regionprops(labels,'Area'); %Extracción de area de cada objeto
16
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:� Normal grande:� Mientras que las probabilidades a priori de cada
clase son:
21854 1128P Pµ σ= =
22619 8250G Gµ σ= =
0.4 0.6P Gp p= =
Problema
� 3. El umbral de Bayes será definido cuando la probabilidad de cada clase sea la misma para esa área:
� Resolviendo la ecuación de segundo orden da que el área umbral es 2063 píxeles.
( )( )
( )( )
( ) ( )2 2
2 2
|1
|
|log 0
|
log 0
P p
G G
P p
G G
p G G P
P G p G
p area p
p area p
p area p
p area p
area area p
p
ω
ω
ω
ω
µ µ σ
σ σ σ
=
=
− − − + − =
Ejemplo� Clasificar las monedas en grandes y pequeñas
utilizando Bayes
17
Ejemplo: clasificación de Bayes
-8 -6 -4 -2 0 2 4 6-8
-6
-4
-2
0
2
4
6Espacio de las características
-8 -6 -4 -2 0 2 4 6-8
-6
-4
-2
0
2
4
6
x
y
pdf(obj,[x,y])
Cluster 1
Cluster 2
-8 -6 -4 -2 0 2 4 6
-8
-6
-4
-2
0
2
4
6
0
0.05
0.1
x
pdf(obj,[x,y])
y
-8 -6 -4 -2 0 2 4 6-8
-6
-4
-2
0
2
4
6
x
y
pdf(obj,[x,y])
obj = gmdistribution.fit(X,2);idx = cluster(obj,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:
( )( )
/R
R
R
p X dXk n
p XVdX
= ≅∫
∫
( )1
/ 1 ni
diR
x xk np X
V n h hφ
=
− ≅ =
⋅ ∑
( )112
0 en caso contrario
ij
i
xxφ
<=
( )( )
2
1 22 21
1 1exp
22
ni
i
X Xp X
n hhπ=
−≅
∑
Ejemplo: k-means con el colorH&E image
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);
image labeled by cluster index120 130 140 150 160 170 180 190 200
60
70
80
90
100
110
120
130
18
Cuestiones
� Etiquetamiento de las imágenes� Extracción de características de los objetos
etiquetados.� Clasificadores estadísticos.
Top Related