【发布时间】:2020-12-28 06:05:50
【问题描述】:
我使用图像时间序列和以下两种方法自动完成了随时间测量植物面积的任务,以推断生长率:(1) Python + ArcGIS,和 (2) Python + OpenCV。
在第一种方法中,ArcGIS 允许我在图像上创建矢量网格。网格的每个单元格都包含一个植物,因此我从左上角到右下角对每个单元格进行编号。在创建植物像素 == 1 且其他所有内容 == 0 的二进制图像后,我应用区域统计来查找我的植物区域。通过这种方式,植物数量保持一致,因为我在时间序列中的所有图像上使用相同的网格,但这需要人工干预。
在第二种方法中,我使用 OpenCV 通过轮廓查找植物。每个轮廓的编号是根据其质心坐标和边界框尺寸自动完成的。目前我让它们“从上到下”排序,但它显然不像手工制作的网格那样完美。此外,植物#1 可能不会在第二或第三张图像中保持植物#1,因为每株植物在实验过程中生长和移动,并且新植物出现并改变轮廓总数(图像每小时拍摄一次)至数周)。因此,我无法比较第一张图像中的植物 #1 和后续图像中的植物 #1,因为它们甚至可能不是同一种植物。
如何使用第二种方法在整个时间序列中始终如一地对同一植物进行编号?我考虑将后续图像中的质心与之前图像中最相似的 (x,y) 坐标相关联(一旦数据采用表格形式),但这将无法提供更新后的编号轮廓图像。
【问题讨论】:
-
请尽量增加帖子的可读性。
-
如果这样更好,请告诉我。
-
有点不清楚问题是什么,但如果我理解正确,你想从左上角到右下角对轮廓进行排序?
-
不,我已经能够(大部分)对轮廓进行排序。问题在于,在随后的图像中,轮廓图像中标记为 #1 的植物会变成 #13 或 #8,具体取决于新的质心和边界框尺寸。因此,随着时间的推移,我无法将 #1 与下一个 #1 进行比较以获得增长率,因为它们实际上是不同的植物。我需要一种方法来确保首先标记为 #1 的植物在所有图像中保持相同的数量。
标签: python opencv time-series measurement rate