【发布时间】:2022-03-01 08:08:33
【问题描述】:
TL; DR:试图在 O(1) 时间内找出绿色区域的坐标。输入是两组(top_left, bottom_right) 点。所以[x_min_1, y_min_1, x_max_1, y_max_1] 和[x_min_2, y_min_2, x_max_2, y_max_2]。绿色虚线矩形的输出应为[x_min, y_min, x_max, y_max]。
看起来像一个简单的问题,但我一直在尝试找到一个有效的解决方案。我有一个黄色矩形和另一个橙色矩形 always 在黄色矩形内的 OR 上。我想找到黄色矩形的非重叠区域的坐标。数字可以更好地解释这一点。
约束:
- 橙色矩形始终位于黄色矩形内部或与黄色矩形重合。
- 矩形始终是轴平行的。
在左图中,即使橙色矩形部分遮挡了黄色矩形,如果我们尝试将一个框紧紧包裹在黄色矩形的可见像素周围,我们会得到由绿色虚线表示的框。我要绿框的坐标。
在右图中,黄色矩形的可见像素由绿色虚线描绘,与左图不同,它没有覆盖整个黄色矩形。
我想要绿色框的坐标作为输出。有 O(1) 的解决方案吗?
简单且计算量大的解决方案是对黄色像素执行np.where,并通过获取np.where 输出的最小值和最大值来找到绿色框的坐标。
【问题讨论】:
-
我不确定围绕一组点的最小边界框会有什么帮助。我认为这需要我追踪可见的黄色矩形边框像素的路径,不知道如何高效优雅地做到这一点。
-
那么您所拥有的只是一张符合规定规则的两色图像吗?图片中没有坐标?
-
如何仅检查图像外边缘的所有点并从两种颜色之间的过渡位置推断橙色矩形的位置和大小?
-
颜色仅用于说明,输入中没有颜色。输入是两组 (top_left, bottom_right) 点。所以
[x_min_1, y_min_1, x_max_1, y_max_1]和[x_min_2, y_min_2, x_max_2, y_max_2]。
标签: python numpy geometry rectangles bounding-box