MorphologicalAlgorithm_ParticleSegmentation

形态学算法 - 颗粒分割

项目地址:https://github.com/LetMeFly666/MorphologicalAlgorithm_ParticleSegmentation

在线文档: https://maps.letmefly.xyz

问题描述

显微应用中一个预处理步骤是从两组或更多组重叠的类似颗粒(见右图)中分离出单个独立的一种颗粒。假设所有颗粒的大小相同,提出一种产生3幅图像的形态学算法,这3幅图像分别仅由如下物体组成:

9.36.jpg

具体方法:

拿到图像后,首先进行二值化处理,然后进行一个开运算。

本项目用Python实现。到此为止,图像(numpy.array)中的数据只有0和255

由此我们可以使用opencv中自带的连通块划分函数,将不同的颗粒(块)划分为不同的连通块(记为“标签图片”)。

比如:

然后,我们就可以根据划分出来的连通块,来区分不同类型的颗粒了。

与边界重合的颗粒

我们只需要遍历一下4个边界。如果一个颗粒与边界重合(边界上出现了不为0的标签),那么我们就记录下这个颗粒的标签。

例如上面小图的3。

之后遍历一遍图像,并新建一个全为0的大小相同的图像(记为“边界图像”),找到标签图片中是“3”的位置,把边界图像中对应位置记为255。

这样,我们就提取出了边界颗粒

相互重叠的颗粒

提取出了边界颗粒后,我们用开运算后的图像减去边界图像,只研究未分类的剩余颗粒。

假设一个颗粒的面积大约为3,那么我们只需要统计每个种类的标签的像素个数,>3的就视为是有重叠的颗粒

单个的颗粒

提取出了相互重叠的颗粒后,只需要拿剩余颗粒减去有重叠的颗粒,就能得到单独的颗粒

代码实现

实现结果

result.jpg

同步发文于CSDN,原创不易,转载请附上原文链接哦~ Tisfy:https://letmefly.blog.csdn.net/article/details/125258729