Professional Documents
Culture Documents
17 de enero de 2011
Índice general
1. Introducción 1
2. Adquisición de Imágenes 3
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
Introducción
1
la figura 1.1 los elementos a tener en cuenta en la etapa de adquisición son:
2
Capı́tulo 2
Adquisición de Imágenes
3
Móviles: Aquellas que facilitan el desplazamiento del sensor, a una
determinada altura o para realizar un barrido. Ej: Aviones, satélites.
4
Capı́tulo 3
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]
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
RGB −→ Gray
Figura 3.3: (Izq) Imagen de referencia en grises. (Der) Imagen con elementos
nuevos en grises
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.
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
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.
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.
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.
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.
14
Capı́tulo 4
Problemas
15
identificar.
Solución: Restar a la imagen, otra imagen de referencia.
16
Capı́tulo 5
Resultados
17
manera conseguimos detectar objetos reales en una simulación real,
aunque con limitaciones. Ver el código adjunto en los anexos.
18
Capı́tulo 6
Conclusiones y mejoras
2. Programar todas las funciones fuera de matlab para obtener una mejor
respuesta en el tiempo.
19
Capı́tulo 7
Anexos
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Adquisicion de la imagen
%...y repetimos el disparador nAdditionalTrigs veces mas para un total de n+1 dis
nAdditionalTrigs=4;
set(vid,’TriggerRepeat’,nAdditionalTrigs)
20
fps=15;
set(src, ’FrameRate’, num2str(fps))
% Comenzamos la ejecución
start(vid)
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
% Erosionado
seD = strel(’diamond’,1);
BWfinal = imerode(BWdfill,seD);
BWfinal = imerode(BWdfill,seD);
%figure, imshow(BWfinal), title(’segmented image’);
22
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Resultados obtenidos
% 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
[5] Gonzalez, Rafael C., Woods, R., ”Digital image processing - 3rd
edition”Prentice-Hall, 2008. ISBN number 9780131687288
24