You are on page 1of 27

Detección y contabilización de objetos

Fco. Javier Garcı́a Sánchez


Patricia Gómez de Francisco

17 de enero de 2011
Índice general

1. Introducción 1

2. Adquisición de Imágenes 3

3. Procesado de las imágenes 5

4. Problemas 15
4.1. Problemas de adquisición . . . . . . . . . . . . . . . . . . . . . 15
4.2. Problemas de procesado . . . . . . . . . . . . . . . . . . . . . 15

5. Resultados 17

6. Conclusiones y mejoras 19

7. Anexos 20
7.1. Código del programa . . . . . . . . . . . . . . . . . . . . . . . 20

1
Resumen

En este trabajo nos proponemos detectar y contabilizar objetos a partir de las


fotografı́as obtenidas mediante sistemas digitales de obtención de imágenes.
El objetivo final de nuestro proyecto es crear un sistema de vigilancia capaz
de detectar y contabilizar cambios en una escena, para ello estudiaremos los
problemas que se derivan de esta tarea y elegiremos aquellos medios que nos
sean más favorables para realizarla.
Capı́tulo 1

Introducción

La teledetección es la ciencia y el arte de obtener información de un obje-


to, área o fenómeno a partir de los datos obtenidos mediante un dispositivo
o instrumento que no está en contacto fı́sico con los mismos.

La teledetección, globalmente, se puede considerar como un proceso de


lectura. Mediante diferentes sensores se obtienen datos que deben ser proce-
sados y analizados para obtener información de objetos, áreas o fenómenos.
Los datos obtenidos pueden ser muy variados, medidas de campos de fuerza,
distribuciones de ondas acústicas o de energı́a electromagnética.
A continuación expondremos algunos de los fundamentos teóricos sobre
el proceso global de la teledetección que hemos tenido que tener en cuenta a
la hora de realizar este proyecto.

Figura 1.1: Esquema general de Teledetección de la energı́a electromagnética


[1]

Dividiremos el proceso de Teledetección en varias etapas: Adquisición de


las imágenes, procesado, y análisis de los resultados. Como podemos ver en

1
la figura 1.1 los elementos a tener en cuenta en la etapa de adquisición son:

Las fuentes de energı́a.

La propagación de energı́a a través de la atmósfera.

La interacción de la energı́a con los objetos situados en la superficie


terrestre.

La retransmisión de la energı́a a través de la atmósfera.

Los sensores aéreos o espaciales.

En el siguiente apartado nos referiremos brevemente a ellas. Posterior-


mente, estudiaremos diferentes métodos para el procesado de las imágenes
obtenidas. Y finalmente, se realizará un análisis de los resultados generados.

2
Capı́tulo 2

Adquisición de Imágenes

En esta parte del proceso deberemos encontrar la combinación sensor/


plataforma más adecuada a nuestro propósito.
Los sensores son instrumentos que captan la energı́a electromagnética que
llega hasta ellos, que ha sido reflejada o emitida por los objetos. La convierten
en una señal electrónica que acondicionan y que finalmente registran en algún
tipo de soporte para su posterior análisis.
Los sensores van instalados en una plataforma, desde la que operan. La
plataforma les da soporte y condiciona las caracterı́sticas de los datos que
obtienen.
Los sensores de teledetección se pueden clasificar en dos grandes grupos,
dependiendo de si incorporan o no la fuente de energı́a que ilumina los objetos
que se pretende detectar.

Sensores Pasivos: Son aquellos que utilizan como fuente de energı́a


una fuente externa, el Sol, o los objetos mismos observados consid-
erándolos como emisores de energı́a.

Sensores Activos: Son aquellos que “iluminan” los objetos, y recogen


el “eco” de la energı́a que proyectan sobre los objetos para extraer
información de sus caracterı́sticas.

Para cada proyecto de teledetección, la selección del binomio sensor/plataforma


idóneo dependerá: de la escala del objeto o fenómeno a observar, de su evolu-
ción temporal, de sus caracterı́sticas a lo largo del espectro, del contraste
radiométrico frente al entorno, de la urgencia en disponer datos, etc; y en
última instancia de los recursos económicos disponibles.
La plataforma es el elemento al que va anclado el sensor, de igual manera,
podemos clasificarlos en:

3
Móviles: Aquellas que facilitan el desplazamiento del sensor, a una
determinada altura o para realizar un barrido. Ej: Aviones, satélites.

Estáticas: Aquellas que fijan la posición del sensor. Ej: Trı́pode.

Figura 2.1: Tipos de plataformas [2]

Para la realización de nuestro sistema de vigilancia hemos optado por


elegir un binomio sensor/plataforma formado por un sensor pasivo optoelec-
trónico y una plataforma estática. Un sensor optoelectrónico utiliza trans-
ductores fotónicos que convierten la energı́a electromagnética incidente en
una variación de alguna caracterı́stica electrónica o eléctrica: resistencia, po-
tencial, etc., que puede ser medida.
El sensor optoelectrónico será una cámara digital convencional y la platafor-
ma un soporte fijo para la misma. Con lo que obtendremos secuencias de
imágenes digitales de la misma escena.
Hay que tener en cuenta que una de las caracterı́sticas fundamentales que
definen un sistema de teledetección es la resolución. La resolución o poder
resolutivo define las prestaciones de un sistema, midiendo la capacidad de
un sistema óptico para distinguir entre dos señales cercanas en el espacio,
en el espectro y en intensidad o radiométrica. No obstante, en el caso que
nos ocupa no nos interesa especialmente este aspecto. Puesto que lo que
buscamos es detectar cambios en la escena y no reconocer objetos, nuestro
sensor no precisa de una gran resolución.

4
Capı́tulo 3

Procesado de las imágenes

Llamamos procesado de imágenes a las operaciones realizadas sobre los


datos originales para obtener información a partir de ellas. Estas transfor-
maciones, son operaciones matemáticas que permiten combinar las medidas
iniciales obtenidas en el proceso de adquisición, creando unas nuevas variables
que permitan una mejor descripción de los datos obtenidos. [3]
Desde un punto de vista fı́sico, una imagen puede considerarse como un
objeto plano cuya intensidad luminosa y color puede variar de un punto a
otro. Si se trata de imágenes monocromas (blanco y negro), se pueden repre-
sentar como una función continua f (x, y) donde (x, y) son sus coordenadas
y el valor de f es proporcional a la intensidad luminosa (nivel de gris) en ese
punto. Si en cambio, disponemos de imágenes en color, lo más común es que
vengan dadas en el modelo de color denominado RGB, es decir, cada pixel
de la imagen se corresponderá a un vector de tres componentes:
 
fR (x, y)
fG (x, y)
fB (x, y)
donde R,G y B corresponden a las intensidades de color rojo, verde y azul
respectivamente.
Una imagen digital consiste en una matriz de enteros, conocidos como
pı́xeles donde cada uno cuantifica la escala de grises o grado de oscuridad.
Cuando una imagen formada por miles o millones de estos pixeles se visualiza,
la apariencia es una imagen de tono continuo. La imagen 3.1 ha sido dividida
en una malla de pı́xeles de 72 filas por 72 columnas, donde cada pı́xel se
representa mediante un valor desde 0 (negro oscuro) a 255 (blanco brillante).
Rango de valores debido a que los ordenadores trabajan con números. Los
ordenadores operan con el sistema de números binarios, lo más eficiente y
conveniente es usar rangos correspondientes a potencias de 2. Los números

5
del rango del 0 al 255 pueden tener espacio en 1 byte, que consta de 8 dı́gitos
binarios, o bits. Una porción de la imagen cercana a la boca de la estatua
se muestra ampliada en (b), y los números digitales asociados a esa porción
están en la tabla (c), destacar la correspondencia de los números bajos con las
zonas oscuras y los números altos con las zonas claras como comentábamos
anteriormente. [4]

Figura 3.1: Información de una imagen digital

El valor de cada pı́xel simboliza la cantidad de energı́a electromagnética


emitida por la correspondiente zona de la superficie del objeto.
Puesto que Matlab es un programa de cálculo numérico orientado a matri-
ces, lo emplearemos para transformar las imágenes obtenidas por el sensor,
en matrices de valores enteros. Además, este software comercial trae pro-
gramadas numerosas funciones que permiten tratar las imágenes de forma
eficaz.
A continuación mostramos con detalle las fases de procesado de las imágenes
adquiridas por el sensor.[6]

6
Supongamos que tenemos la siguiente imagen de referencia, y otra tomada
tiempo después, en la que aparecen elementos nuevos,

Figura 3.2: (Izq) Imagen de referencia. (Der) Imagen con elementos nuevos

Por tanto, la primera operación que realizamos al cargar una imagen, es


crear tres matrices en las que se vuelca la información de cada pixel en base
a su código RGB. Una vez realizado este paso, estamos en condiciones de
emplear todos los recursos aportados por Matlab.
Ya que nuestra finalidad no requiere conocer el objeto presente o dar
información acerca de él, entendemos que computacionalmente hablando, es
más barato trabajar en escala de grises. Luego el siguiente paso es hacer la
transición.

RGB −→ Gray

Figura 3.3: (Izq) Imagen de referencia en grises. (Der) Imagen con elementos
nuevos en grises

De esta manera, en vez de manejar tres matrices correspondientes a cada


color, pasamos a tener una única matriz.

7
Nuestro objetivo final es detectar y contar nuevos objetos que aparez-
can en una escena. Por ello dispondremos siempre de dos imágenes. Una de
ellas, será una imagen de referencia que necesitará de una supervisión hu-
mana, mientras que el resto de imágenes generadas serán comparadas con la
primera.

La evaluación de cada imagen comenzará por tanto sustrayéndole la ima-


gen de referencia con el fin de eliminar los objetos que consideraremos back-
ground. Este proceso es la clave de nuestro algoritmo, puesto que no dispon-
dremos usualmente de un fondo homogéneo, si no que aparecerán elementos,
como farolas, edificios, sombras u otros objetos que no debemos considerar.

Figura 3.4: Resta de imágenes

Este proceso de resta, introduce mucho ruido en la imagen. Para elimi-


narlo aplicamos un filtro de mediana, que en nuestro caso asigna a cada pı́xel
el valor de la media de sus vecinos 6x6. Este filtro suele ser útil para reducir
ciertos patrones de ruido, como por ejemplo los efectos de ”salt & pepper”de
algunas imágenes. La imagen generada se presenta en la figura 3.5.

8
Figura 3.5: Aplicación del filtro de mediana

Los objetos que hay que segmentar difieren del fondo que ahora tenemos.
Estos cambios en el contraste pueden ser detectados por operadores que
calculan el gradiente de una imagen. En nuestro algoritmo vamos a emplear
un operador local que realiza esta tarea conocido como máscara de Sobel [5]:
 
−1 0 1
1
Sh = −2 0 2
8
−1 0 1
O bien:
 
−1 −2 −1
1
Sv =  0 0 0
8
1 2 1
En primer lugar calculamos un valor umbral con el fin de trasladar nuestra
imagen en grises a una imagen binaria, 0 y 1, o lo que es lo mismo, en B/N.
Con el threshold calculado, aplicamos la máscara de Sobel para detectar los
bordes en los que existe una diferencia de contraste. La imagen generada
aparece en la figura 3.6.

9
Figura 3.6: Aplicación de la máscara de sobel

A continuación vamos a aplicar una serie de operaciones morfológicas


para mejorar los resultados obtenidos. Las operaciones morfológicas aplican
un elemento estructural a la imagen de entrada, sin cambiar el tamaño de
la imagen de salida. Las operaciones morfológicas más comunes son la dilat-
ación y la erosión. En una operación morfológica, el valor de cada pı́xel en
la imagen de salida depende del valor de ese pı́xel en la imagen de entrada y
su relación con la vecindad. Seleccionando el tamaño y forma de la vecindad
(definido a través de un elemento estructural) se puede crear una operación
morfológica, que altera el valor del pı́xel en la imagen de salida.
En primer lugar aplicamos una dilatación, esta se basa en aumentar el niv-
el de los valores de los pı́xeles en el entorno de los objetos presentes en la
imagen. Para calcular la dilatación se superpone el pı́xel central del elemen-
to estructural a cada pı́xel de la imagen de entrada, entonces el pı́xel de
la imagen de entrada se altera en función de los valores de los pı́xeles del
entorno, definidos por el elemento estructural. El valor del pı́xel de salida
será el máximo entre todos los pı́xeles presentes en la vecindad. Como se ha
expuesto previamente, el elemento estructural define la forma y el tamaño de
la vecindad del pı́xel que será analizado, para posteriormente alterar su valor.
Está definida por una matriz formada por ceros y unos de forma y tamaño
arbitrario en la cual las posiciones donde está el uno define la vecindad. La
matriz que define el elemento estructural tiene un tamaño muy inferior al

10
tamaño de la matriz original que define la imagen a la que modificará. En
nuestro caso emplearemos un elemento estructural lineal:
 
1 0 0 0 0
0 1 0 0 0
 
D= 0 0 1 0 0 

0 0 0 1 0
0 0 0 0 1
La imagen generada se muestra en la figura 3.7.

Figura 3.7: Dilatación de los bordes detectados

La imagen dilatada muestra bien el contorno dependiendo del objeto, no


obstante, aparecen huecos dentro de los mismos. El siguiente paso será rel-
lenar estos objetos. La respuesta obtenida por el algoritmo se muestra en la
figura 3.8.

11
Figura 3.8: Operación de relleno

Por último, para que el objeto segmentado parezca algo más natural, lo
suavizamos erosionando dos veces la imagen con una estructura en diamante.
La erosión reduce el nivel de los pı́xeles del entorno de un objeto, para ello
selecciona el mı́nimo valor de la vecindad del punto a tratar (en vez del
máximo, como cuando se aplica la dilatación) La imagen resultante de esta
operación se presenta en la figura 3.9.

Figura 3.9: Obtención de los objetos segmentados

12
Estas acciones constituyen el segmentado de las imágenes. Para las opera-
ciones de distinción de objetos se depende de la convención utilizada de conec-
tividad, que es la forma en la que se considera si dos pı́xeles tienen relación
como para que formen parte del mismo objeto. La conectividad puede ser de
dos tipos, conexión-4 o bien, conexión-8. En la figura 3.10 se esquematizan
ambos tipos.

Figura 3.10: (a) Conectividad conexión-8 (b) Conectividad conexión-4

En la conectividad conexión-8 se dice que el pı́xel rojo pertenece al mismo


objeto si existe un pı́xel de valor uno en las posiciones 1,2,3,4,5,6,7 y 8.
Por su parte la conectividad conexión-4 relaciona solo a los pı́xel 2,4,5 y
7. Para las operaciones que consideran conectividad como un parámetro es
importante tomar en cuenta que esta determina fuertemente el resultado final
del procesamiento, puesto que puede dar origen a objetos nuevos en donde
si hubiera elegido otra conectividad no existirı́an. Para explicar lo anterior
consideremos la figura 3.11. Como puede verse si se elige la conectividad
conexión-8, la figura contenida en la imagen serı́a considerada como una
sola, pero si al contrario se elige la conectividad conexión-4 serı́a vista como
dos objetos diferentes.

Figura 3.11: Problema al elegir la conectividad

13
Finalmente podemos realizar un etiquetado de los componentes existentes
en la imagen binaria, para contabilizar el número de elementos presentes
como podemos ver en la imagen 3.12.

Figura 3.12: Etiquetado de los elementos

Además podemos presentar los resultados de otra manera distinta, con-


torneando los objetos segmentados sobre la imagen en la que han sido cap-
turados. Podemos verlo en la figura 3.13.

Figura 3.13: Contorneado de los objetos segmentados

14
Capı́tulo 4

Problemas

A continuación exponemos los problemas que hemos encontrado al desar-


rollar nuestro sistema de vigilancia tanto en la parte de captura de imágenes
como en la parte de procesado. Además citaremos algunos problemas que
intuimos podrı́an ocasionar limitaciones a nuestro sistema de vigilancia, pero
que no hemos podido valorar empı́ricamente.

4.1. Problemas de adquisición


Los problemas derivados de las tomas de imágenes son los siguientes:
1. Necesidad de una completa inalterabilidad en la posición del sensor.
Es decir, el sensor no debe presentar movimiento alguno, puesto que
al realizar la resta de dos imágenes, estas deben coincidir pixel a pixel
salvo en los objetos nuevos.
Solución: Invertir dinero en desarrollar una plataforma que cumpla
esta condición.
2. Problemas ambientales. Debilidad del sistema a los fenómenos meteo-
rológicos como cambios de luz, niebla, lluvia, etc.
Solución: Lo ideal será utilizar este sistema de vigilancia en lugares
cerrados con luz artificial fija.

4.2. Problemas de procesado


Los problemas derivados del procesado de las imágenes son los siguientes:
1. Puesto que fundamentamos la segmentación de objetos en la detección
de bordes. La respuesta obtenida con este método es poco efectiva cuan-
do el background no presenta demasiado contraste con los elementos a

15
identificar.
Solución: Restar a la imagen, otra imagen de referencia.

2. Si se presenta de nuevo el problema de movimiento del sensor, esta


resta nos dará un resultado erróneo.
Solución: Aplicar transformaciones geométricas que permitan encajar
las fotos de nuevo.

3. El programa presenta problemas cuando en la escena no cambia nada,


como consecuencia del ruido no eliminado en el procesado, se detectan
cambios nimios. En el caso en el que ocurriera un cambio, el alogorit-
mo se centra en él, aumentando el valor del thresold, por lo que esos
pequeños cambios son despreciados.
Solución: Implementar una mejor solución para el cálculo automático
del thresold.

4. Al emplear un software tan desarrollado como Matlab, el tiempo de


computación es grande.
Solución: Implementar las funciones empleadas en nuestro algoritmo
sin utilizar Matlab para que el programa sea más eficiente.

5. Si aparecen sombras, el programa no puede distinguirlas del objeto que


las genera. Cuando detectamos un objeto, la silueta incluirá la de su
sombra.
Solución: No se ha encontrado aún una solución, en la que el software
discrimine las sombras generadas.

16
Capı́tulo 5

Resultados

El proceso llevado a cabo para la realización de este proyecto fue el sigu-


iente:

Una vez descubierto el problema que suponı́a tener imágenes con un


fondo no homogéneo y con poco contraste, tratamos de solucionar el
problema realizando restas de imágenes.

Figura 5.1: Tableros

Comprobando que este método, aunque rudimentario daba resultados


satisfactorios, decidimos implementarlo junto con una serie de procesos
que permitı́an la segmentación de algunos objetos sencillos. Ver los
resultados obtenidos en el apartado de procesado de imágenes.

Por último, investigando en las nuevas librerı́as de Matlab 2009, encon-


tramos una manera de obtener las imágenes directamente desde una
cámara conectada al ordenador, las cuales son procesadas con el mis-
mo programa mediante el algoritmo creado con anterioridad. De esta

17
manera conseguimos detectar objetos reales en una simulación real,
aunque con limitaciones. Ver el código adjunto en los anexos.

Figura 5.2: Imágenes de la simulación real

Figura 5.3: Resultados de la simulación real

18
Capı́tulo 6

Conclusiones y mejoras

Mediante un sencillo sistema formado por una cámara digital y un pc


hemos logrado el objetivo de este proyecto, crear un sistema de vigilancia
capaz de detectar y contabilizar cambios en una escena.
Los resultados obtenidos son satisfactorios cuando ejecutamos nuestro algo-
ritmo en condiciones óptimas de iluminación, contraste con el background,
no movimiento del sensor, etc.
Cuando nos alejamos de estas situaciones, los resultados obtenidos empe-
oran, mostrando las limitaciones del sistema. Por ello introducimos el com-
ponente humano en el análisis de los resultados como explicamos en una de
las múltimples mejoras que se proponen a continuación.

1. Si mejoramos la calidad del sensor, mejoraremos la calidad de la imagen.

2. Programar todas las funciones fuera de matlab para obtener una mejor
respuesta en el tiempo.

3. Implementar nuevas mejoras en el algoritmo que resulevan los proble-


mas enunciados anteriormente.

4. Desarrollar una función dentro del programa que permita el envı́o de


imágenes a un correo electrónico o mediante MMS. La finalidad de
esta aplicación, es la supervisión de las imágenes obtenidas por un ser
humano, que sea quien decida la respuesta, en el caso de un sistema de
vigilancia, avisar a la policı́a.

5. Desarrollar una interfaz gráfica para introducir los parámetros vari-


ables de configuración del sensor y para una adquisición de imágenes
personalizadas.

19
Capı́tulo 7

Anexos

7.1. Código del programa


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%% SISTEMA DE DETECCION Y CONTABILIZACION DE OBJETOS %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Adquisicion de la imagen

% Seleccionamos un dispositivo de video


vid=videoinput(’winvideo’,1);

% Asumimos que la primera muestra se va a tomar inmediatamente después de


% ejecutar el programa.
triggerconfig(vid,’immediate’);

% Configuramos el dispositivo para tomar 2 imagenes...


framesPerTrigger=2;
set(vid,’FramesPerTrigger’,framesPerTrigger)

%...y repetimos el disparador nAdditionalTrigs veces mas para un total de n+1 dis
nAdditionalTrigs=4;
set(vid,’TriggerRepeat’,nAdditionalTrigs)

% Para controlar el tiempo en el que los Frames son tomados configuramos el


% frame rate del dispositivo.
src = getselectedsource(vid);

20
fps=15;
set(src, ’FrameRate’, num2str(fps))

% Como queremos tomar 1 frame cada 10 segundos, la herramienta no debera


% tomar imagenes hasta que el dispositivo alcanze el 150o frame.
acqPeriod=10;
frameDelay=fps*acqPeriod;

% Si el disparador es retrasado por este valor, la herramienta no


% almacenará ningún frame hasta que no llegue el frame 150.
set(vid,’TriggerFrameDelay’,frameDelay)

% Para asegurar que la adquisición no se cierra cuando el tiempo termine,


% configuramos este tiempo como ligeramente mayor a la duración de la
% adquisición.
totalTrigs=nAdditionalTrigs+4;
acqDuration=(acqPeriod*totalTrigs)+80;
vid.Timeout = acqDuration;

% Tomamos una imagen de referencia


referencia=getsnapshot(vid);
figure, imagesc(referencia)

% Comenzamos la ejecución
start(vid)

% La detenemos cuando lleguemos al tiempo estipulado


wait(vid,acqDuration);

numAcquired = get(vid, ’FramesAcquired’);


imageData = getdata(vid, numAcquired);

% Mostramos las imagenes obtenidas por la camara


for i=1:numAcquired
figure, imagesc(imageData(:,:,:,i))

I=rgb2gray(referencia);
I2=rgb2gray(imageData(:,:,:,i));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

21
%%%%%%%%%%%% Procesamiento de la imagen

% Resta de imagenes
newimage=zeros(size(I));

for i = 1:size(I,1)
for k = 1:size(I,2)
% resto pixel a pixel para eliminar el fondo
newimage(i,k)= I(i,k)-I2(i,k);

end
end

%figure, imshow(newimage), title(’Imagen restadas’)


% Aplicamos un filtro de mediana
newimage=medfilt2(newimage,[6 6]);
%figure, imshow(newimage), title(’Sin ruido’)

% Calculamos el threshold y buscamos los bordes


[junk threshold] = edge(newimage, ’sobel’);
fudgeFactor = .5;
BWs = edge(newimage,’sobel’, threshold * fudgeFactor);
%figure, imshow(BWs), title(’binary gradient mask’)

% Definicion del elemento estructural y dilatacion


se90 = strel(’line’, 3, 90);
se0 = strel(’line’, 3, 0);
BWsdil = imdilate(BWs, [se90 se0]);
%figure, imshow(BWsdil), title(’dilated gradient mask’);

% Rellenado de los objetos


BWdfill = imfill(BWsdil, ’holes’);
%figure, imshow(BWdfill), title(’binary image with filled holes’);

% Erosionado
seD = strel(’diamond’,1);
BWfinal = imerode(BWdfill,seD);
BWfinal = imerode(BWdfill,seD);
%figure, imshow(BWfinal), title(’segmented image’);

22
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Resultados obtenidos

% Etiquetamos los distintos elementos con una conectividad conexion-4


Mat=bwlabel(BWfinal,4);
% Nos muestra en pantalla el numero de elementos
max(max(Mat))
% Vemos en la imagen, cada objeto con un color
map=[0 0 0; jet(22)];
imshow(Mat+1,map)

% Calculamos el contorno y lo a~
nadimos a la imagen
BWoutline = bwperim(BWfinal);
Segout = I2;
Segout(BWoutline) = 255;
figure, imshow(Segout), title(’outlined original image’);

end

23
Bibliografı́a

[1] Lillesand, T. M. y R. W. Kiefer, Remote Sensing and Image Interpreta-


tion, 6th Ed.,New York 2007, John Willey and Sons.

[2] Casterad, Ma Auxiliadora, Introducción a la teledetección. Centro de


Investigación y Tecnologı́a Agroalimentaria de la ONU.

[3] De la Rosa Flores, R. Procesamiento de imágenes digitales, Instituto


Tecnológico de Puebla, México.

[4] Aparicio Cirre, M. Estudio Fotogramétrico del deposito de agua de can-


teras.

[5] Gonzalez, Rafael C., Woods, R., ”Digital image processing - 3rd
edition”Prentice-Hall, 2008. ISBN number 9780131687288

[6] Valdemar Cuevas, E y Zaldivar Navarro, D. Visión por Computador


utilizando Matlab y el toolbox de procesamiento Digital de Imágenes.

24

You might also like