我目前正在使用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。在我的实际数据解决方案中,情况并非如此,因此我还应用了以下函数来对数据应用线性插值。我相信你也可以应用一个类似的函数来缩小每个像素的面积,提高数据