如果存在图像的给定2d数组,则阈值已经完成,现在是二进制信息。
有没有特殊的方法来处理这个图像,我在图像上得到多个blob的坐标?
我无法使用openCV,因为此过程需要在C中的自定义模拟器上的10个以上模拟机器人上同时运行。
我需要blob xy坐标,但首先我需要先找到那些多个blob。
像素组大小的最简单标准应该足够了。但我没有任何线索如何开始编码。
PS:单个blob应该没问题。问题是多个blob。
只是一个良好的开端?
答案 0 :(得分:4)
查看QuickBlob这是一个小型,独立的C库,听起来非常适合您的需求。
QuickBlob附带一个小命令行工具(csv-blobs
),可输出输入图像中找到的每个blob的位置和大小:
./csv-blobs white image.png
X,Y,size,color
28.37,10.90,41,white
51.64,10.36,42,white
...
以下是一个示例(由于QuickBlob附带的show-blobs.py
微型Python实用程序,生成了输出图像):
答案 1 :(得分:1)
您可以使用如下算法标记连接部分的二进制图像:
逐行迭代每个二进制像素p,
一个。如果p为true且labelArray中此位置的对应值为0(未标记),则将其分配给新标签并执行广度优先搜索,该搜索将添加对同一标签也同样的所有周围二进制像素。 / p>
现在唯一的问题是你有多个相互接触的斑点。因为您知道blob的大小,所以您应该能够计算出给定连接区域中有多少blob。这是棘手的部分。此时您可以尝试执行k-means聚类。您也可以尝试其他方法,例如使用二进制扩张。
答案 2 :(得分:1)
我知道我参加派对的时间已经很晚了,但我只是为正在研究这个问题的受益者加上这个。
这是一个很好的描述,可能符合您的需求。 http://www.mcs.csueastbay.edu/~grewe/CS6825/Mat/BinaryImageProcessing/BlobDetection.htm