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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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') - 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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
5 pts. Es MUY importante que saques 10 en el lab que sigue.
ResponderEliminar