如何计算下图中白色菌落区域的个数,连在一起的若干个“圆”最好能做一个分化!谢谢了。分数不够再开贴.

解决方案 »

  1.   

    opencv中有目标识别代码。http://opencv.itseez.com/doc/tutorials/objdetect/table_of_content_objdetect/table_of_content_objdetect.html
      

  2.   

    你发原图吧,形态学处理你这个二值结果不是很方便,因为菌落的面积差别太大,如果结构选择小,分不开,结构选择大,小的区域会被处理掉.我曾经给一个人做的matlab的培养皿细胞图像识别课设,貌似是紫色的,颜色深浅不一致,需要在原图上下功夫,直接想办法统计.用你目前的二值结果很不好办.qq 790404545
      

  3.   

    给你提供一个思路吧,
    1、寻找所有的轮廓,并统计面积 
      仅保留minArea<Area<MaxArea的轮廓,此时可以把那些小的点和大的圈去掉,仅剩下菌落的轮廓
      函数:CvFindContours()
    2、统计每个轮廓最下外接矩形的长宽比,假如长宽比接近于整数A,那么认为是A个菌落。
       我做过类似的处理~有空可以再交流~
      

  4.   

    先求出这个图的边缘 fA(,),
    再求出它的骨架fB(,);
    这时的骨架是不太好用的,因为有些圆是粘连在一起的。
    求出fB(,)上每个有效点到 fA(,)上最近的点的距离,可以在fB上使用图像膨胀的方法来实现。将最小值计录到 fC(,)
    在fC(,)的有效点上查找3*3邻域最大值,每找到一个,就算是一个样本,并且将fC(,)该位置设为0