0

我使用sobel边缘检测。

如果您有 Matlab,这是示例图像文件 在此处输入图像描述

Matlab 本身如何设法实现像这样的非常薄的边缘(仅使用 Matlab 的边缘函数,以 'sobel' 作为参数)

matlabsobel = edge(originalImage,'sobel')
imshow(matlabsobel)

在此处输入图像描述

但是当我尝试以自己的方式做sobel算法时,假设过程是一样的..

originalImage = gaussianizedimage;
threshold = 60.5;
k = [1 2 1; 0 0 0; -1 -2 -1];
H = conv2(double(originalImage),k, 'same');
V = conv2(double(originalImage),k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);
imshow(edgeImage);
title('sobel algorithm')

在此处输入图像描述

为什么它不一样?我的实现中仍然缺少什么来实现 Matlab 的薄边?

谢谢

4

1 回答 1

1

感谢 rayryeng

Sobel 是第一步,为了得到细边,你需要进行 skelotinization

>> BW3 = bwmorph(bww,'skel',Inf);
>> figure()
>> imshow(BW3)

生成的图像如下

在此处输入图像描述

于 2014-08-21T01:37:46.987 回答