【发布时间】:2016-12-19 03:35:10
【问题描述】:
假设我有一个图像的场景解析图,这个场景解析图中的每个像素都表示这个像素属于哪个对象。现在我想获取每个对象的边界框,如何在 python 中实现呢? 举个详细的例子,假设我有一个这样的场景解析图:
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 1 1 1 0 0 0
0 0 1 1 1 0 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
所以边界框是:
0 0 0 0 0 0 0
1 1 1 1 1 0 0
1 0 0 0 1 0 0
1 0 0 0 1 0 0
1 1 1 1 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
其实在我的任务中,只要知道这个物体的宽高就足够了。
一个基本思路是在场景解析图中搜索四个边,从上、下、左、右方向。但是图像中可能会有很多小物体,这种方式效率不高。
第二种方法是计算所有非零元素的坐标并找到最大/最小x/y。然后使用这些 x 和 y 计算体重和身高。
还有其他更有效的方法吗?谢谢。
【问题讨论】:
-
请向我们展示您的尝试。
-
已添加。@JulienBernu
-
您需要做的事情听起来与图形 flood filling 非常相似,因此您可以使用算法作为起点(双关语)。