从特殊的索贝尔遮罩找到水平或垂直边缘



所以我在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

最新更新