![](/img/trans.png)
[英]How can I efficiently translate a large, non-rectangular 2D list to an even larger rectangular 2D array?
[英]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==0
或g_j==0
时,应设置w_{ij}=0
g_j==0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.