【发布时间】:2015-11-30 01:18:28
【问题描述】:
在过去的两周里,我一直被这个问题所困扰,试图找到一种方法将一组矩形/正方形组合成一个更大的包含感兴趣区域的矩形/正方形。这项工作是在 Python 中完成的。
我正在开发一种仪器,该仪器可以获取任何表面的 X 和 Y 方向的强度信息。我可以在一系列分辨率下进行实验,但正如预期的那样,更高的分辨率会显着增加实验的时间范围。我的目标是在低分辨率下进行实验,然后进行更高分辨率的实验,但仅限于有趣的领域。我附上了一张图片来告诉你我的意思。
除了黄色/橙色斑点之外,我对任何东西都不是特别感兴趣。所以我正在提取与我的最小阈值相对应的一定强度的区域。我最终得到了扩展为矩形/正方形大小的 XY 中心。我希望下图有 5 个感兴趣的区域,包括热点周围的最小区域。
不幸的是,我最终得到的是这个(总共 53 个矩形代表 5 个区域):
问题在于矩形的数量 - 它纯粹基于峰的强度。我想通过以下方式将其从 53 减少到 5 1)将重叠的矩形组合成一个大矩形或 2)只保留一个代表其他矩形的单个矩形。
到目前为止,我已经尝试了许多不同的方式来看待它,但我无法让它发挥作用。我探索了wx 模块,我可以在其中检查矩形是否重叠,检查点是否彼此靠近,中心点是否在其他矩形内,等等...
我故意没有发布任何代码,因为它没有一个特别好用......
如果你们中的任何人能对此提供帮助,我将永远感激不尽!
更新 1 多亏了 Kenney,我有了一个可以做我想做的工作的代码。到目前为止,我只在一组结果上对其进行了测试,但一旦我分析更多,就会再次更新。看看生成的图像。
【问题讨论】:
-
测试重叠矩形看起来像是要走的路:如果您添加第二个与预先存在的第一个矩形重叠的矩形,您可以扩展第一个矩形的边界并丢弃第二个。如果你这样做,你应该得到 5 个矩形。
-
@Kenney 你知道最好的方法是什么吗?我已经尝试过了,但我仍然得到不正确的矩形数量..
-
不能保证矩形不会重叠,但我会用最小的上/左和最大的下/右坐标调整现有矩形。如果有多个匹配项,您可能必须选择重叠区域最大的矩形。或者,检查新矩形的中心是否在现有矩形内。我很想看看你的尝试和你得到的结果?
-
我注意到在您的输出中,即使您有 53 个矩形(看起来更少),它们也被聚集成五个不重叠的组。您可以对这些矩形进行后处理以对它们进行分组,然后平均它们的边界。
-
1) 我正在开发一个符合您建议的代码版本。 2)图像确实有所有 53 个矩形,XY 位置的差异可能非常小。我同意,这 5 个区域的表现很好,所以如果我可以将它们聚集在一起,然后取它们的平均值,它会起作用。我只是不确定如何将它们组合在一起,按 X 或 Y 或 XY 对它们进行排序不起作用。
标签: python pandas matplotlib wxwidgets