繁体   English   中英

如何围绕二维numpy数组中的特定值创建非矩形边界框?

[英]how to create non-rectangular bounding box around specific values in 2d numpy array?

我有一个二维的numpy数组。 我想在数组的特定值周围找到非矩形边界框。 矩形边界框已在问题中得到解决:如何选择numpy 2d数组中具有边界框的唯一元素的所有位置?

让我们考虑以下示例

array([[1, 1, 2, 2],\
      [0, 1, 0, 1],\
      [3, 0, 1, 4],\
      [0, 3, 1, 1]])

结果有点复杂

 For one unique value 1, (0,0),(0,1),(1,1),(1,2),(1,3),(2,2), (3,2),(3,3)

我们希望以这样一种方式构造索引,即在该区域内考虑极值内的零值。 从这个意义上讲,它更像是一个区域分段问题,其值完全相似,但区域内部为零。 它定义了一个区域的边界。

要注意的是,该区域仅由唯一值和零组成。 通过问题的构造,彼此之间不可能有任何非唯一值。

也许是在图像处理意义上的图像轮廓发现问题(我不确定)

我们找到了这个地区。 我们要从一堆特征中搜索某个特征位于某些区域中。 例如,我们检测到SIFT。 我们想找到哪些筛选功能位于一个唯一的区域,而无需对功能进行任何比较。

请让我知道进一步的澄清。

编辑:重要的是要注意,这不是连接的组件问题。 在连接的组件中,一个区域实际上是由齐次值组成。 在我们的情况下,两者之间可以有零(或任何其他值)。 因此,这仅是检测受唯一值约束的区域。 同样重要的是要注意,在该区域内不能有任何任意值,而是一个单个值(如零或255)表示背景。

非常感谢。

您可以使用基于图分区方法的细分算法。 例如,您可以使用Random Walker 但是您将必须通过以下方式更改权重。

对于每个像素v_i,让g_i为像素的颜色。 虽然原始算法将w_ {ij}定义为:

w_{ij} = exp{-beta*(g_i - g_j)^2)}

然后,当g_i==0g_j==0时,应设置w_{ij}=0 g_j==0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM