我有几个图像需要找到边缘。我尝试过跟踪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对象的方法吗?
答案 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系统,没有它们就更容易了! ;)