Estoy tratando de aplicar el filtro Sobel en una imagen para detectar bordes usando scipy. Estoy usando Python 3.2 (64 bit) y scipy 0.9.0 en Windows 7 Ultimate (64 bit). Actualmente mi código es el siguiente:Aplicación del filtro Sobel usando scipy
import scipy
from scipy import ndimage
im = scipy.misc.imread('bike.jpg')
processed = ndimage.sobel(im, 0)
scipy.misc.imsave('sobel.jpg', processed)
No sé lo que estoy haciendo mal, pero la imagen procesada no se parece en nada a lo que debería. La imagen, 'bike.jpg' es una imagen en escala de grises (modo 'L' no 'RGB') por lo que cada píxel tiene solo un valor asociado.
Lamentablemente no puedo publicar las imágenes aquí todavía (no tienen suficiente reputación) pero he proporcionado enlaces siguientes:
imagen original (bike.jpg): http://s2.postimage.org/64q8w613j/bike.jpg
Scipy filtrada (sobel.jpg): http://s2.postimage.org/64qajpdlb/sobel.jpg
salida esperada: http://s1.postimage.org/5vexz7kdr/normal_sobel.jpg
obviamente estoy yendo s equivocadas ¡en algún lugar! ¿Puede alguien decirme dónde? Gracias.
Sí, quería que el derivado a través del eje 0 (dx). En realidad estoy tratando de implementar el detector de bordes Canny y estaba teniendo problemas para calcular el gradiente utilizando los operadores de Sobel. ¡Muchas gracias! Necesitaba cambiar la precisión. – Feanor