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