我有一个二维的numpy数组。我想在数组的特定值周围找到非矩形边界框。矩形边界框已在Question:How to select all locations of unique elements in numpy 2d array with bounding box around them?中解决
让我们考虑以下示例
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)表示背景。
非常感谢。
最佳答案
您可以使用基于graph partition method的细分算法。例如,您可以使用Random Walker。但是您将必须通过以下方式更改权重。
对于每个像素v_i,让g_i为像素的颜色。虽然原始算法将w_ {ij}定义为:
w_{ij} = exp{-beta*(g_i - g_j)^2)}
然后应将
w_{ij}=0
设置为g_i==0
或g_j==0
。关于python - 如何围绕二维numpy数组中的特定值创建非矩形边界框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7741383/