1

我有几张图像需要找到边缘。我尝试在 matlab 中遵循 vision.EdgeDetector System 对象,以及他们在此处给出的示例:http: //www.mathworks.com/help/vision/ref/vision.edgedetectorclass.html

他们举了一个例子

    hedge = vision.EdgeDetector;
    hcsc = vision.ColorSpaceConverter('Conversion','RBG to intensity')
    hidtypeconv = vision.ImageDataTypeConverter('OutputDataType',single');
    img = step(hcsc, imread('picture.png'))
    img1 = step(hidtypeconv, ing);
    edge = step(hedge,img1);
    imshow(edges);

我在我的代码中完全遵循了这一点。

然而,这段代码并没有产生我想要的所有边缘,似乎 Matlab 只能拾取整个图像中大约一半的边缘。有没有一种不同的方法可以找到所有的边缘,或者有一种方法可以改进 Matlab 中的 vision.EdgeDetector 对象?

4

2 回答 2

2

默认情况下,对冲 = vision.EdgeDetector 的阈值为 20。尝试将其更改为对冲 = vision.EdgeDetector('Threshold', Value ) 并使用来查看最适合您的值。

于 2013-08-20T19:44:23.543 回答
1

尝试:

imgGray = rgb2gray(imgRGB);
imgEdge = edge(imgGray,'canny');

这应该为您提供大部分边缘点,如果没有,则相应地更改参数 THRESH 和 SIGMA。另请检查以下其他方法:

help edge

您不必使用 vision.EdgeDetector 系统,没有它们会更容易!;)

于 2014-09-12T20:34:47.610 回答