给出单色位图:
000000000000000000000000000000000000000 001000100000000000000000000000000000000 000101000000000000000000000000000000000 000010000000001000000000000000000000000 000101000000010100000000000000000000000 001000100000100010000000000000000000000 000000000000010100000000000000000000000 000000000000001000000000000000000000000 000000000000000000000000000000000000000 000000000000001111110000000000000000000 000000000000001000010000000000000000000 000000000000001000010000000000000000000 000000000000001111110000000000000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000000000000000000
我希望能够在位图上找到每个对象的边界矩形。
我可以使用任何已建立的算法吗?
答案 0 :(得分:3)
您正在寻找的是“Blob”检测,它可以检测从周围区域突出的物体组。根据您所需的复杂程度,您还可以跟踪面积,凸度,周长,边界框等。斑点用于许多机器视觉和检测应用。
Wiki上有很多已建立的算法等。
您还可以查看图像处理库,想到的是AForge - 它是一个用C#编写的开源库:aforge.net
或者只是搜索“Blob detection”,你会发现很多关于你需要的信息。
祝你好运!答案 1 :(得分:0)
如果您可以访问MATLAB,可以查看regionprops
函数源。它做了很多事情,包括寻找边界框。
基本上你需要根据它们所属的连接组件标记所有像素,然后你可以为每个像素取最小和最大X和Y坐标。
答案 2 :(得分:0)
我要做的是查看任何标记算法。易于实现的是“运行轨道”算法。 然后,当您完成标记后,您可以找到每个标记对象的(顶部,左侧,右侧,底部)极端像素。 它可能不是最快的方式(因为你将多次扫描图像),但它很容易实现。
以下是演讲幻灯片(简称)描述了RT算法(以及另外一个):http://www.cvl.isy.liu.se/Education/UnderGraduate/TSBB08/DBgrk7.pdf