jueves, 25 de abril de 2013

Laboratorio 7: Detección de Agujeros - Preprocesamiento

Para la tarea de laboratorio de esta semana, se nos dio la tarea de localizar agujeros en una imagen, utilizando los valores de los histogramas laterales de la misma. En sí se trata de un preprocesamiento (como el título dice) sobre lo que sería la detección de los agujeros, ya que solamente se encontrará un área en la cual una parte del agujero se encuentra.

Para explicar el procedimiento, se utilizará la siguiente imagen simple (es una simple hoja con un par de perforaciones, y la foto fue tomada con una cámara de celular):


El procedimiento es simple. Primero, se pasa la imagen a escala de grises, y al seguir se binariza la imagen. Este proceso de binarización es importante, porque dependiendo de la imagen en la cual vamos a buscar los agujeros, se deberá cambiar el umbral de binarización, esto debido a los contrastes que puedan dar las imágenes binarizadas al usar diferentes valores de umbrales en diferentes imágenes.
Teniendo la imagen binarizada, podemos calcular sus histogramas laterales. Estos consisten en las sumas de las intensidades por columna (histograma vertical) y por fila (histograma horizontal). Los histogramas graficados, se verían de la siguiente manera:

Histograma Horizontal


Histograma Vertical


En base a los histogramas, buscamos picos (superiores o inferiores, en este caso son inferiores) que corresponderán a las posiciones en cada eje donde se encuentrá un agujero (eje x para el vertical, y para el horizontal). Con los anteriores histogramas, podemos ver que así es, debido a que el vertical contiene 3 picos (existen 3 columnas de agujeros) y el horizontal contiene 2 picos (existen 2 filas de agujeros).
Entre más grande el pico, más agujeros se encuentran en esa columna/fila.

Localizadas las posiciones de los picos, se trazan líneas, que al cruzar, podemos suponer que se encontró un agujero en la vecinidad. 


Como se puede ver, los cruces son en posiciones en las cuales existe un agujero, excluyendo el primero, el cual es inevitable de trazar debido a la combinación de otras localizaciones de agujeros.

Para visualizar mejor la localización, e ignorar los que no son, podemos trazar rectángulos alrededor del "centro" localizado del agujero y eliminar los que no contienen pixeles o contienen muy pocos. Quedaría así:


Con esto localizamos exitosamente los agujeros, y lo siguiente es localizar los agujeros, de forma un poco más precisa e identificarlos con ID's. Lo anterior estará en el post de la clase.

Otros ejemplos

Entrada                                                                           Cruces de Picos
Agujeros Detectados

Entrada

 Entrada                                                                             Cruces de Picos

Agujeros Detectados

Código:

1 comentario:

  1. idealmente sería una regla horizontal y una vertical por cada agujero; hay mucho ruido en tu detección. 9 pts.

    ResponderEliminar