我有这个计算圆度的代码
I = imread('http://energyfanatics.com/wp-content/uploads/2008/05/banana.jpg');
%I = imread('http://www.nyapplecountry.com/images/photosvarieties/redrome04.jpg');
pic = rgb2gray(I);
threshold = graythresh(pic);
bw = im2bw(pic,threshold);
fbw = ones(size(bw))-imfill(ones(size(bw))-bw);
invImg = ~fbw;
imshow(invImg);
f = bwlabel(invImg);
S = regionprops(f,'Area','Perimeter','centroid');
res = (min(sqrt([S.Area]),[S.Perimeter]/4)./(max(sqrt([S.Area]), [S.Perimeter]/4))).^2;
我的问题是当我使用香蕉的图片时,我的得分有多个值,但是当我使用苹果的另一张图片时,我只得到一个值。问题在于留下的噪音。我试图使用一些边缘检测方法,如 sobel,但我无法将边缘检测与黑白图像结合起来。
所以我的问题是如何检测水果的边缘以便得到整个水果以及如何消除噪音。我只想得到水果的圆润度。