【发布时间】:2018-11-09 06:00:35
【问题描述】:
我想计算一个“几乎”圆形(或椭圆形)物体的周长。我用了两种方式:
第一种方法:
stats = regionprops('table',bw,'Centroid',...
'MajorAxisLength','MinorAxisLength','Perimeter');
perimeter_matlab=stats.Perimeter; %get the perimeter using matlab regionprops
第二种方法:
stats2 = regionprops(L,'Area','Centroid');
for k = 1:length(B)
% obtain (X,Y) boundary coordinates corresponding to label 'k'
boundary = B{k};
%get the perimeter by calculating the each pixel to pixel distance in boundary and add the discret distand together
delta_sq = diff(boundary).^2;
perimeter_pixel= sum(sqrt(sum(delta_sq,2)));
end
结果:
当我使用像 900*600 像素这样的矩形对象时,它的周长应该是 900*2+598*2=2996 但是
perimeter_matlab=2935.7 为什么会出错?
perimeter_pixel = 2996 是正确的。
当我使用半径为50 像素(直径为101)且其周长应为2*pi*50=314.1593 的圆时
perimeter_matlab=313.904 接近答案,但是
perimeter_pixel = 332.0488为什么会出错?
Matlab 如何计算perimeter?
【问题讨论】: