Matlab面积计算

时间:2015-08-03 20:37:08

标签: matlab area ginput

如果我有一个任意形状(附件是一个非常简单的模拟),我如何估计Matlab中封闭表面的面积。为了获得沿曲线的一些随机点,我使用ginput命令对曲线进行粗略估计,两点之间的间距不等。我想得到一个区域的估计,但我相信trapz命令会因重叠而高估该区域(如果我错了,请纠正我)。是否有更准确的方法来获得该区域?

谢谢! enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

嗯,你没有提供足够的信息来完全解决问题,但是你可以采取一种方法来自动找到边界以计算面积:

% Get image and convert to logical mask
img = ~im2bw(imread('polyarea.jpg'));

% Fill the hole
img = imfill(img,'holes');

% Get boundary
b = bwboundaries(img);

% Approximate area of boundary
area = polyarea(b{1}(:,1), b{1}(:,2));

% Print area
disp(['Area: ' num2str(area)]); 

imshow(img);
hold on;
plot(b{1}(:,2),b{1}(:,1),'go');

这个想法是你有一个输入,你形成一个逻辑掩码,获得掩码的边界,然后你可以使用polyarea近似边界所包围的区域。

输出结果为:

enter image description here

Area: 228003

此外,您还可以使用regionprops(img,'Area')输出:

ans = 

    Area: 229154