所以我在Matlab中做了这样的事情:
s = fspecial('sobel');
imshow(conv2(image, s));
在matlab中,当我用fspecial
创建一个sobel遮罩并在图像上使用conv2
遮罩时,卷积图像中的边缘是水平或垂直边缘,还是已经添加了水平和垂直边缘?对角线呢?
fspecial
的文档告诉我们
h = fspecial('sobel')返回一个3 × 3的过滤器h(如下所示),它通过近似垂直梯度使用平滑效果来强调水平边缘。如果需要强调垂直边缘,请调换滤镜
要转换过滤器,使用
hvert = ( fspecial('sobel') )'
Sobel滤波器基本上是一个光滑的导数算子。通过检测水平和垂直边缘,基本上可以检索图像梯度的索贝尔近似,这也可以获得对角线边缘。
要真正强调边缘而不用担心它们的方向,使用这个梯度的大小:
hy = fspecial('sobel');
hx = hy';
gx = imfilter(image, hx); % x component of Sobel gradient
gy = imfilter(image, hy); % y component
gmag = hypot(gx,gy); % magnitude of Sobel gradient