Está en la página 1de 5

Ejercicio de procesamiento de imágenes

En este ejercicio buscamos localizar (o ubicar) los cuadros en una fotografía de un museo de arte.

Comenzaremos leyendo y visualizando la imagen:

Antes de comenzar a operar con la imagen es necesario convertirla a escala de grises. Las operaciones
morfológicas solo pueden aplicarse sobre imágenes en grises o binarias.
Necesitamos que los objetos de interés (en nuestro caso los cuadros) tengan valores de mayor
intensidad, es decir, se muestren más brillantes que aquellos que no nos interesan. Por eso
procedemos a colocar la imagen en negativo utilizando la función complemento de Matlab.

Ahora, necesitamos que estos objetos que se encuentran en primer plano puedan conectarse, los
detalles de los cuadros son información innecesaria para nuestro objetivo, e incluso podría entorpecer
el procedimiento. Por lo tanto, aplicaremos dilatación, con un elemento estructurante (kernel,
máscara, strel) cuadrado para mantener la forma de los cuadros.
Ahora que tenemos nuestros cuadros bastante iluminados y pueden visualizarse claramente,
procedemos a binarizar la imagen. Para este caso, aplicaremos binarización global y fijaremos un
threshold en 0.75.

Pueden observarse algunos objetos agrietados, por lo que aplicaremos closing. Esto permitirá unir
estas grietas sin dilatar los bordes de los objetos. Esta operación no es del todo necesaria para
continuar, pero es útil para observar cómo funciona este algoritmo.
Finalmente aplicaremos una función de detección de objetos conectados que nos permite obtener
muchas propiedades de estos objetos conectados. En este caso solicitaremos 3 propiedades: área (el
área en pixeles de cada objeto), bounding box (el rectángulo más pequeño capaz de contener el
objeto) y centroide (la posición en coordenadas del centroide del objeto).

Si visualizamos la nueva variable creada en el command window, podemos observar cada una de las
propiedades solicitadas de cada objeto encontrado en la imagen.

Podemos observar que el algoritmo encontró 16 objetos en nuestra imagen. Podemos por ejemplo
dibujar el bounding box del objeto número 6 utilizando la función rectangle de Matlab. Recuérdese
que para definir un rectángulo necesitamos las coordenadas de la esquina inferior izquierda y el
largo(w) y ancho(h) de la figura [x y w h]. El siguiente código dibuja el bounding box sobre la imagen
en grises.
También podemos recortar este cuadro de la imagen utilizando la función imcrop de Matlab y la
información del bbox obtenida.

Ahora el desafío esta en eliminar de la imagen aquellos objetos que no corresponden a los cuadros,
que sobrevivieron a todos nuestros filtros. O seleccionar aquellos de los cuales estamos seguros
corresponden a los cuadros. ¿Cómo hacerlo? Podríamos basarnos en el área de cada objeto, o tal vez
otras propiedades de regionprops puedan ayudarnos.