gpt4 book ai didi

python - 使用 scipy 应用 Sobel 过滤器

转载 作者:太空狗 更新时间:2023-10-29 18:14:21 24 4
gpt4 key购买 nike

我正在尝试在图像上应用 Sobel 过滤器以使用 scipy 检测边缘。我在 Windows 7 Ultimate(64 位)上使用 Python 3.2(64 位)和 scipy 0.9.0。目前我的代码如下:

import scipy
from scipy import ndimage

im = scipy.misc.imread('bike.jpg')
processed = ndimage.sobel(im, 0)
scipy.misc.imsave('sobel.jpg', processed)

我不知道我做错了什么,但处理后的图像看起来一点也不像它应该的样子。图片“bike.jpg”是一张灰度(模式“L”而非“RGB”)图片,因此每个像素只有一个与之关联的值。

很遗憾,我还不能在这里发布图片(没有足够的声誉),但我在下面提供了链接:

原始图像(bike.jpg): http://s2.postimage.org/64q8w613j/bike.jpg

Scipy 过滤 (sobel.jpg): http://s2.postimage.org/64qajpdlb/sobel.jpg

预期输出: http://s1.postimage.org/5vexz7kdr/normal_sobel.jpg

我显然哪里出错了!有人可以告诉我在哪里吗?谢谢。

最佳答案

1) 使用更高的精度。 2)您只计算沿零轴的导数的近似值。 2D Sobel 算子在 Wikipedia 上有解释。 .试试这个代码:

import numpy
import scipy
from scipy import ndimage

im = scipy.misc.imread('bike.jpg')
im = im.astype('int32')
dx = ndimage.sobel(im, 0) # horizontal derivative
dy = ndimage.sobel(im, 1) # vertical derivative
mag = numpy.hypot(dx, dy) # magnitude
mag *= 255.0 / numpy.max(mag) # normalize (Q&D)
scipy.misc.imsave('sobel.jpg', mag)

关于python - 使用 scipy 应用 Sobel 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7185655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com