Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEGMENTACIÓN DE IMÁGENES
1. Marco teórico
La segmentación de imágenes pretende encontrar particiones en una imagen tal que se pueda
separar aquellas regiones homogéneas que tengan significado para el analista de las regiones del
fondo de la imagen. Se supone que las regiones homogéneas son objetos perceptualmente
significativos y los bordes sus límites.
Por ejemplo en la siguientes figuras se pretende extraer la sección de la imagen que corresponde
a las caras de las personas, haciendo uso solamente de criterios relacionados al nivel de gris, es
posible eliminar las regiones blancas y negras, pero no es posible distinguir entre el nivel de gris
de las caras y el nivel de gris de la vestimenta.
2. Objetivo
1. Desarrollar un procedimiento para binarizar una imagen en la región del fondo y la región de
interés basado únicamente en el nivel de gris.
2. Segmentar las regiones conectadas en V4.
3. Presentar las regiones una ventana.
3. Requerimientos:
Use la imagen adjunta tomada con una cámara web
de regiones oscuras sobre un fondo blanco.
4. Se solicita
Luego de terminar el desarrollo de este laboratorio modifique el programa para grabar cada una
de las sub-imágenes extraídas en archivos separados para su posterior procesamiento.
5. Procedimiento de solución.
b) Convierte a gris
G = rgb2gray(I); % convierte a gris
d) Binarización de la imagen.
B = im2bw(G, level); % binariza
f) Etiquetado de regiones
L = bwlabel(B); % etiqueta la imagen
El procedimiento de etiquetado de regiones asigna una etiqueta a todos los pixeles que se
encuentren en una vecindad V4 o V8
Las siguiente figuras presentan el resultado del proceso de etiqueta de regiones para la
imagen binaria indicada.
0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0
0 1 1 0 0 1 0 2 0 3 0 0 3 0 1 1 0 0 1 0 1 0 3 0 0 3
0 0 1 0 0 1 0 2 0 3 0 0 3 0 0 1 0 0 1 0 1 0 3 0 0 3
0 1 1 0 0 1 0 0 0 3 0 0 3 0 1 1 0 0 1 0 0 0 3 0 0 3
0 0 1 0 0 1 0 0 0 3 3 3 3 0 0 1 0 0 1 0 0 0 3 3 3 3
0 0 1 1 1 1 0 0 0 0 0 0 3 0 0 1 1 1 1 0 0 0 0 0 0 3
0 4 0 0 0 0 5 0 0 0 0 0 3 0 1 0 0 0 0 1 0 0 0 0 0 3
0 0 0 0 0 0 0 6 0 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 3
0 7 0 0 0 0 0 0 8 0 0 0 3 0 2 0 0 0 0 0 0 1 0 0 0 3
0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
V
Imagen binaria 4 V8
Observe que en V4, se generan mayor cantidad de regiones (en este caso son 9) que en V8
(en este caso son 3).
Esta función no es del matlab y ha sido desarrollada para administrar cada segmento de la
imagen original como una imagen separada.
function I = bwlabelextract(L, R, C)
I = [];
mR = min(R); mC = min(C);
for i = 1:length(R)
Rn = R(i)- mR + 1;
Cn = C(i) -mC +
1; I(Rn, Cn) = 1;
end
La función setperimeter adiciona una dos filas (antes de la primera y luego de la última) y
dos columnas (antes de la primera y luego de la última) con valores igual a cero.
function B = setperimeter(B)
[rows, cols] = size(B);
B = [zeros(1,cols); B; zeros(1,cols)];
B = [zeros(rows + 2, 1) B zeros(rows + 2, 1)];
i) Plotea la estructura de imágenes
plotimg(C); % plotea la estructura de imágenes
Esta función permite visualizar el una sola ventana todas las imágenes extraídas en el proceso
de segmentación.
Observe que las imágenes son extraídas en una estructura de datos de tipo matricial: I(i).I
function plotimg(C)
len = length(C);
rowsplot = floor(sqrt(len));
colsplot = ceil (len/rowsplot);
for l = 1:len
subplot(rowsplot, colsplot, l), imshow(C(l).I);
end