边缘检测,Matlab视觉系统工具箱

时间:2013-08-15 14:47:50

标签: computer-vision matlab-cvst edge-detection

我有几个图像需要找到边缘。我尝试过跟踪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只能拾取整个图像中大约一半的边缘。我可以采用不同的方法来找到所有的边缘,或者是一种改进vision.EdgeDetector对象的方法吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,hedge = vision.EdgeDetector的阈值为20.尝试将其更改为hedge = vision.EdgeDetector('Threshold', Value )并使用 ,了解哪种价值最适合您。

答案 1 :(得分:1)

尝试:

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

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

help edge

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