我正在使用MATLAB(2011)制作一个项目,它使用户可以过滤灰度图像(使用卷积但不查找边缘) . 我知道边缘有[edge]函数,我知道对于某些运算符(如sobel),你可以使用[fspecial]来获取矩阵 .
我找到了一个矩阵(或多个),对应于我需要的每个操作符:sobel,roberts,robinson,Laplacian等...
然后我以这种方式应用过滤器:
Result_image = conv2(Original_image, matrix_filter);
但我找不到一个Canny运营商......
我读到canny是从应用拉普拉斯算子开始的varius步骤实现的 . 但是呢?以下步骤是什么?如何才能将矩阵应用于图像?
我正在寻找矩阵,或者找到它的方法或至少一个例子来理解“多步骤程序” .
我找到了一个页面,告诉了实现边缘运算符的步骤 . 过滤的步骤是什么? (导数X,导数Y,梯度,非最大抑制,滞后) . 该页面是Canny Edge Detector(由Mikel Rodriguez提供) .
1 回答
正如您所指出的,Canny Edge Detector是 algorithm not a filter . 这意味着您无法拥有"Canny"过滤器 .
让我们看看算法中涉及的步骤(Wikipedia或OpenCV implementation):
高斯滤波(使用高斯滤波器)
图像的梯度(使用其他边缘滤波器,例如Sobel滤波器)
非最大限制(不涉及过滤器)
阈值处理(不涉及过滤器)
如你所见,没有Canny过滤器,所以我担心你不能得到这样的过滤器 .