我手头已经得到二值图像,图像上有几块不规则的小的白色区域,有什么办法可以得到每个白色区域的质心坐标(或者中心,只要靠近区域的中间就行了),并计算白色区域的个数,
该算法可以用来标记米粒的位置,和个数。
更进一步的话最好能够合并靠得比较近的白色区域。
求各位大侠思路算法,如有好得算法,可以再开贴加分!!
该算法可以用来标记米粒的位置,和个数。
更进一步的话最好能够合并靠得比较近的白色区域。
求各位大侠思路算法,如有好得算法,可以再开贴加分!!
1、将你的二值图像转换成24位色的黑白图像
2、用循环对白色区域用颜色x=(x+1){x的初始值设为1}进行FloodFill,如此每块白色区域就变成不同颜色的非黑白色区域,则x-1就是原白色区域的个数
3、建立一个足够大的初始值为0的矩阵分别处理各色块,如为该色块则置1,如
0 0 0 0 1 0 0 0 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 0 0 0 0
1 1 1 1 1 1 0 0 0
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 0 0
0 0 0 0 0 0 0 0 0
则该矩阵的有效大小为7*5,则中心为(4,3),再加上顶边和左边的偏移就是该区域的中心坐标
缺点:最大计数为254*254*253(不过如果不够的话可以分成几块进行计数)
特点:将若干个白色区域转化成唯一一个某色区域并同时完成计数工作,避免找边界;利用矩阵找中心
谢谢flyjzy5(),在你提到的方法中,边界跟踪是个难点,因为图象的边缘有断点,不大好实现。
这个问题我已经初步解决了:
因为图上的白点不多,我写了一个算法,把距离近的点合并到一起,并找到坐标的平均直。各位高手有没有什么其他的更好的办法呢?