如何使用regionprops计算轮廓的偏心率
非常抱歉再次给您带来困扰。我明白您的问题了:'regionprops' 函数需要二值图像作为输入,而不是轮廓的坐标点。
以下是正确的代码修改来计算轮廓的偏心率:
% 对轮廓进行筛选
for k = 1:length(noIslandContours)
contour = noIslandContours{k};
% 创建一个与图像大小相同的全黑图像
binaryImage = false(size(image));
% 将当前轮廓区域填充为白色
binaryImage(sub2ind(size(image), contour(:,1), contour(:,2))) = true;
% 对当前轮廓区域应用regionprops计算偏心率
properties = regionprops(binaryImage, 'Eccentricity');
eccentricity = properties.Eccentricity;
% 计算周长、面积和角点数
perimeter = length(contour);
area = numel(contour);
% 根据周长、面积、角点数和偏心率进行筛选
if perimeter > minPerimeter && area < maxArea && area > minArea && perimeter < maxPerimeter && eccentricity >= minEccentricity && eccentricity <= maxEccentricity
% 符合条件的轮廓处理
% ...
end
end
在此代码中,我们首先创建一个与图像大小相同的全黑二值图像。然后,将当前轮廓的坐标点标记为白色。接下来,我们将该二值图像应用于'regionprops'函数来计算轮廓的偏心率。最后,将偏心率与其他条件一起用于轮廓筛选。
请确保'noIslandContours'中的每个轮廓都是有效的轮廓坐标点,并且其坐标点的范围在图像尺寸内。
如果问题仍然存在,请提供更多关于'noIslandContours'和图像的详细信息,以便我能够更好地帮助您解决问题。再次对之前的错误回答表示诚挚的歉意。
原文地址: https://www.cveoy.top/t/topic/ufM 著作权归作者所有。请勿转载和采集!