Halcom 发表于 2018-4-22 10:55:44

图像圆度计算

https://ww2.mathworks.cn/help/im ... -round-objects.html
metric = 4*pi*area/perimeter^2.
= bwboundaries(bw,'noholes');

% Display the label matrix and draw each boundary
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end

stats = regionprops(L,'Area','Centroid');

threshold = 0.94;

% loop over the boundaries
for k = 1:length(B)

% obtain (X,Y) boundary coordinates corresponding to label 'k'
boundary = B{k};

% compute a simple estimate of the object's perimeter
delta_sq = diff(boundary).^2;   
perimeter = sum(sqrt(sum(delta_sq,2)));

% obtain the area calculation corresponding to label 'k'
area = stats(k).Area;

% compute the roundness metric
metric = 4*pi*area/perimeter^2;

% display the results
metric_string = sprintf('%2.2f',metric);

% mark objects above the threshold with a black circle
if metric > threshold
    centroid = stats(k).Centroid;
    plot(centroid(1),centroid(2),'ko');
end

text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...
       'FontSize',14,'FontWeight','bold');

end

title(['Metrics closer to 1 indicate that ',...
       'the object is approximately round']);





页: [1]
查看完整版本: 图像圆度计算