1

如果我有一个任意形状(附上一个非常简单的模型),我将如何估计 Matlab 中封闭表面的面积。为了得到沿曲线的一些随机点,我使用 ginput 命令粗略估计曲线,点之间的间距不相等。我想估计面积,但我相信 trapz 命令会由于重叠而高估面积(如果我在这里错了,请纠正我)。有没有更准确的方法来获取面积?

谢谢! 在此处输入图像描述

在此处输入图像描述

4

1 回答 1

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.

输出是:

在此处输入图像描述

Area: 228003

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

ans = 

    Area: 229154
于 2015-08-03T21:04:19.743 回答