jueves, 2 de mayo de 2013

Lab#8. Detección de Poligonos


Para esta semana se nos pidio realizar un programa que pudiera detectar poligonos para esto se llevo a cabo el siguiente proceso:
  • Utilice la imagen original 
 
  • pase a escala de grises para despues binarizarla 

  • Aplicamos lo que es convolución que genera la imagen con los bordes encontrados y los gradientes. 
 

 

Implementación:
Aquí estan algunas funciones representativas y lo que pude implementar de codigo de convolución hasta ahorita. 
  • Esta es la función encargada de calcular las pendientes de cada pixel, recibe el listado de puntos correspondiente a la forma detectada, y los gradientes de X y Y.
    def toma_lineas(pendiente,img):
    segmento=list()
    imagen=img.load()
    ancho,alto=img.size
    for a in range(ancho):
    for b in range(alto):
    if imagen[a,b]!=(0,0,0):
    pendiente_2=pendiente[a,b]
    if pendiente[a,b]==0:
    imagen[a,b]=(0,0,255)
    if pendiente[a,b]==1:
    imagen[a,b]=(55,0,0)
    if pendiente[a,b]==2:
    imagen[a,b]=(255,67,34)
    if pendiente[a,b]==3:
    imagen[a,b]=(2,45,0)
    if pendiente[a,b]==4:
    imagen[a,b]=(9,67,23)
    if pendiente[a,b]==5:
    imagen[a,b]=(34,6,67)
    img.save('linea1.png')
    view raw pendiente1.py hosted with ❤ by GitHub
  • Para cada punto de la lista, obtiene el valor en los gradientes, y calcula la pendiente en el punto.
  • Lo que alcance a tener  es en base a las pendientes encontradas pinta lo que son las rectas dentro de los poligonos detectados por convolución. 

def toma_pendiente(imagen): # obtenemos la pendiente
Gx=gx
Gy=gy
print Gx
print Gy
imagen=imagen.load()
ancho,alto=imagen.size
pendiente=numpy.empty((ancho, alto))
for i in range(ancho):
for j in range(alto):
if Gx[i,j]!=0 and Gy[i,j]!=0:
m=0
elif Gx[i,j]==0 and Gy[i,j]==0:
m=1
elif Gy[i,j]<=0 and Gx[i,j]==0:
m=2
elif Gy[i,j]>=0 and Gx[i,j]==0:
m=3
elif Gx[i,j]<=0 and Gy[i,j]==0:
m=4
elif Gx[i,j]>=0 and Gy[i,j]==0:
m=5
pendiente[i,j]=m
print 'termino'
return pendiente
view raw tpendiente.py hosted with ❤ by GitHub

1 comentario: