原始图片:
图A
图B
两种方法:
第一种方法:扫描整个图像,对于每个圆形区域,最先扫描到的点应为其顶点A,如图1所示,获取顶点A和底部点B的坐标,AB的中点即为圆心坐标。同时将该圆形区域的灰度值置为其他值,这样在扫描下一行时就不会在扫描到该圆。
图1
实现代码:
对A图的运算效果如图2:效果可以接受
图4
图2
对B图的运算效果如图3:由于B图中的圆有些不是很光滑,顶部有些地方是直线,所以第一个扫描的点不是A,而是A前面的某一点,所以有些圆并未取到圆心。
图3
针对B图这种情况,采用另一种算法,求质心法。质心的求法为:
,
其中,f(x,y)是(x,y)点处的灰度值。
仍然扫描图像,对每个圆形区域求质心,并将区域的灰度值重新标定,以免该区域被再次扫描到,代码:
对B图的效果见图4:效果可以接受
图4