jueves, 9 de mayo de 2013

Detección de esquinas

Para esta entrega se pidió detectar esquinas, esto mediante el método de diferencia de filtro mediano.


  • Primero se realiza la escala de grises
  • Después se utiliza un filtro medio
  • Ya con el filtro, se realiza es sacar la diferencia entre la imagen de escala de grises y la imagen que se genero con el filtro medio
Código:
def normalizar(image, maxv):
mat = image.load()
ratio = 255.0/maxv
for x in range(image.size[0]):
for y in range(image.size[1]):
mat[x, y] = int(mat[x, y]*ratio)
return image
def diferencia(izq, der):
output = izq.copy()
matO = output.load()
matI = izq.load()
matD = der.load()
maxv = 0
for x in range(output.size[0]):
for y in range(output.size[1]):
cord = (x, y)
matO[cord] = fabs(matI[cord]-matD[cord])
if matO[cord] > maxv:
maxv = matO[cord]
return normalizar(output, maxv)
def nuevo_visitados(size):
visitados = dict()
for i in range(size[0]):
for j in range(size[1]):
visitados[i,j] = False
return visitados
def promediar_esquinas(image):
esquinas = list()
mat = image.load()
for x in range(image.size[0]):
for y in range(image.size[1]):
if mat[x, y] == 255:
points = dfs_promedio(mat, (x, y), image.size)
promedio = [0.0, 0.0]
for p in points:
promedio[0] += p[0]
promedio[1] += p[1]
promedio = (int(promedio[0]/len(points)), int(promedio[1]/len(points)))
esquinas.append(promedio)
for cord in esquinas:
mat[cord] = 255
return esquinas
view raw esquinas.py hosted with ❤ by GitHub



Imágenes/resultado:







1 comentario:

Elisa dijo...

Pues... 5 pts. Explicas casi nada y en los ejemplos falta detectar muchas esquinas.

Publicar un comentario