lunes, 18 de febrero de 2013

Tarea 3. Detección de formas

Para esta tarea se nos pidió analizar la forma de una imagen.

La imagen original que utilicé para esta tarea es un cuadrado, con el fin de que sea fácil de detectar. El borde gris es de Blogger que lo puse para que se distinguiera bien la imagen con el fondo blanco.

Para realizar esta tarea es necesaria la tarea anterior de detección de bordes para saber que es fondo y que es la imagen de adentro y poder diferenciar el contorno.

Para poder detectar esto se realizó lo de la tarea anterior, convertir a escala de grises depués aplicar convolución, normalizar y binarizar.






BFS
Realicé una funcion en donde se marca un punto de origen con coordenadas, se utiliza este punto y se le saca su pixel correspondiente y se guarda. Después se recorren todos los pixeles que son del mismo color y se cambian a un color dado. Para realizar la subrutina me basé en el código que hizo la Dra. Elisa.








Aquí el código del BFS


 
def bfs(img, origen, color):
pixeles = img.load()
width, height = img.size
cola = []
cola.append(origen)
original = pixeles[origen]
while len(cola)>0:
fila,columna = cola.pop(0)
actual = pixeles[fila,columna]
if actual == original or actual == color:
for dx in [-1,0,1]:
for dy in [-1,0,1]:
candidato = (fila + dy, columna + dx)
pixel_dy = candidato[0]
pixel_dx = candidato[1]
if pixel_dy >= 0 and pixel_dy < width and pixel_dx >= 0 and pixel_dx < height:
contenido = pixeles[pixel_dy,pixel_dx]
if contenido == original:
pixeles[pixel_dy,pixel_dx]=color
img.putpixel((pixel_dy,pixel_dx),color)
cola.append(candidato)
return img
view raw gistfile1.py hosted with ❤ by GitHub

1 comentario:

  1. Pues, sería encontrar todos los objetos en una sola corrida. Faltaron los centros de masa. También faltó la etiqueta de la entrada. 3 pts.

    ResponderEliminar