python求封闭图形的面积_使用生成的多边形的正确闭合skimage.measure.find_轮廓()

我目前正在使用skimage.measure.find_contours()来查找曲面上的轮廓。现在我已经找到了轮廓线,我需要能够找到包围它们的区域。在

当所有顶点都在数据集中时,这就像一个完全封闭的多边形一样。

但是,如果等高线在边或角点突破了曲面的边,如何确保多边形是完全封闭的?当发生这种情况时,我希望使用曲面的边作为附加顶点来封闭多边形。例如,在下面的图像中,随着轮廓的显示,您可以看到轮廓结束于图像的边缘,如何关闭它们?同样在棕色轮廓的例子中,它只是一条直线,我认为我不想返回一个区域,我该如何挑选这个例子?在

我知道我可以通过检查多边形的最后一个顶点是否与第一个顶点相同来检查封闭的轮廓/多边形。在

我有计算多边形内面积的代码,取自heredef find_area(array):

a = 0

ox,oy = array[0]

for x,y in array[1:]:

a += (x*oy-y*ox)

ox,oy = x,y

return -a/2

我只需要帮助关闭多边形。检查可能发生的不同情况。在

谢谢

更新:

应用@soupault建议的解决方案后,我得到了以下代码:

^{pr2}$

此解决方案假设每个像素的大小为1x1。在我的实际数据解决方案中,情况并非如此,因此我还应用了以下函数来对数据应用线性插值。我相信你也可以应用一个类似的函数来缩小每个像素的面积,提高数据的分辨率。在import numpy as np

from scipy import interpolate

def interpolate_patch(x,y,patch):

x_interp = np.arange(np.ceil(x[0]), x[-1], 1)

y_interp = np.arange(np.ceil(y[0]), y[-1], 1)

f = interpolate.interp2d(x, y, patch, kind='linear')

patch_interp = f(x_interp, y_interp)

return x_interp, y_interp, patch_interp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值