基于标记分水岭算法。
直接的分水岭算法对图像的灰度图进行处理,一定会出现过分割。通过对图像进行开闭运算,以及膨胀腐蚀等手段,将图像中的噪点去除,将图像中的主要的形状、大小等信息保留下来,最终进行图像重建,获得可以很好划分的灰度图。
在灰度图基础上,进行
前提:
(1)原始图像效果很好,噪点少,前景和背景区分清晰。
(2)每个个体之间的相似性很大,保证个体斑之间的灰度分布很接近。
步骤:
(1)读取图片,进行判断,如果是灰度图,不变,否则将其转换为灰度图
(2)进行滤波,函数fspecial(‘sobel’)选择边缘算子,增强x和y方向上的边缘。sobel算子是一个三行三列的矩阵,对图像的垂直梯度进行增强。如果要对水平方向进行边缘增强,则取sobel算子的转置。
(3)进行滤波,imfilter(double(I), hy, ‘replicate’)对x和y方向进行滤波
(4)标记前景对象:这里进行各种开闭运算,膨胀和腐蚀运算,目的是出去图像中的噪点,并对图像中斑的形态进行调整,开运算是腐蚀后膨胀,适合将粘结在一起的斑区分开或去除毛刺,闭运算是先膨胀后腐蚀,目的是填补斑中的孔洞或边缘的凹坑填平,最终都是为了平滑。
算子的type和大小需要仔细调整,以最终效果不影响计数统计佳。
Io:开运算;Ie:腐蚀;Iobr:腐蚀后重建。
Ioc:先开运算,后闭运算;Ic:原灰度图直接进行闭运算。
Iobrd:腐蚀后重建图,再膨胀;Iobrcbr:以一张腐蚀后重建图 和 一张 腐蚀后重建再膨胀图 进行重建。颜色:黑色是背景,白色是目标,所以不需要再反色。