【问题标题】:Find outer non-overlapped region coordinates查找外部非重叠区域坐标
【发布时间】: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


【解决方案1】:

如果我理解正确,绿色框与整个黄色矩形不重合的唯一时间是橙色矩形占据整个边缘,即当它的两个相邻角与黄色矩形相同时。所以你真的只需要比较每个矩形的角。一般分为三种情况:

  1. 零个或其中一个角相同:绿色是整个黄色矩形
  2. 所有的角都是一样的:??? (不知道当它们完全重叠时你想做什么)
  3. 两个相邻的角是相同的:有趣的案例

在情况 (3) 中,绿色矩形由四个不相等的角组成:两个黄色和两个橙色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-07-19
    • 2016-09-11
    • 1970-01-01
    • 2015-10-29
    • 2020-10-04
    相关资源
    最近更新 更多