【发布时间】:2015-07-28 18:14:04
【问题描述】:
在 MATLAB 中调用以下函数将 Canny 过滤器应用于图像:
edges = edge(image, 'Canny');
我知道有两个 Python 函数可以实现 Canny 过滤器:
import cv2
edges = cv2.Canny(image)
和
from skimage import feature
edges = feature.canny(image)
但是,这些 Python 函数都不能像 MATLAB 那样计算滤波器的高阈值和低阈值。根据this neuroimaging paper,
。 . .默认的 MATLAB 算法 [生成] 两个阈值,使得高阈值被计算为不超过 30% 的像素被检测为边缘的最低值,而低阈值定义为高阈值的 40% .
是否有 Python 实现可以做到这一点?
【问题讨论】:
-
scikit-image 源在这里:github.com/scikit-image/scikit-image/blob/master/skimage/… 应该很容易适应做你想做的事。
-
@StefanvanderWalt 你们会对这样的拉取请求感兴趣吗?有很多 matlab 用户正在过渡到 python,所以我认为对此有相当广泛的需求,但如果你不希望没有独立理由的情况下复制 matlab 的代码,我会理解。
-
我认为如果这是一个有用的功能,我们没有理由不实施它。这样做时请注意不要查看使用不同许可编写的任何代码。
标签: python matlab opencv image-processing scikit-image