发明内容
本发明的目的是提供一种基于显微镜图像的盘星藻类细胞统计方法及***,以解决上述现有技术存在的问题,利用盘星藻类的显微镜图像,通过图像模式识别技术准确统计出盘星藻类的个数。
为实现上述目的,本发明提供了如下方案:本发明提供一种基于显微镜图像的盘星藻类细胞统计方法,包括以下步骤:
对采集的原始盘星藻类显微镜图像进行预处理,获得待检测盘星藻类灰度图像;
对所述待检测盘星藻类灰度图像进行边缘检测,获得盘星藻类边缘图像;
检测所述盘星藻类边缘图像的凸包和凸缺陷,对所述凸包和凸缺陷进行校验,获得有效凸缺陷点;
基于所述有效凸缺陷点,统计盘星藻类细胞个数。
可选地,对所述原始显微镜图像进行预处理,获得所述待检测盘星藻类灰度图像包括:
对所述原始显微镜图像进行缩放处理;
对缩放后的显微镜图像进行灰度处理,获得初始盘星藻类灰度图像;
对所述初始盘星藻类灰度图像进行去噪处理,获得所述待检测盘星藻类灰度图像。
可选地,对所述待检测盘星藻类灰度图像进行边缘检测,获得所述盘星藻类边缘图像包括:
计算所述所述待检测盘星藻类灰度图像的大律OTSU阈值;
基于所述大律OTSU阈值,提取盘星藻类边缘特征,获得边缘图像;
对所述边缘图像进行形态学膨胀处理,连接断开的边缘,增强盘星藻类外轮廓的完整性,获得所述盘星藻类边缘图像。
可选地,检测所述盘星藻类边缘图像的凸包和凸缺陷包括:
基于所述盘星藻类边缘图像,计算盘星藻类外轮廓;
比较所述盘星藻类外轮廓,提取最大盘星藻类外轮廓;
对所述最大盘星藻类外轮廓进行凸包检测,获得凸包数据;
基于所述凸包数据,检测所述最大盘星藻类外轮廓的凸缺陷。
可选地,对所述凸包和凸缺陷进行校验,获得所述有效凸缺陷点包括:
对所述凸包进行校验,删除误检测的所述凸包;
对所述凸缺陷进行校验,删除误检测的所述凸缺陷,获得所述有效凸缺陷点。
可选地,对所述凸包进行校验,删除误检测的所述凸包包括:
计算所述凸包中任意两个凸点之间的第一像素距离,当所述第一像素距离小于设置第一阈值时,计算相邻所述凸点的第一中心点,用所述第一中心点代替所述凸点;
计算所述凸包中的点和所有所述凸缺陷点之间的第二像素距离,如果所述第二像素距离小于设置的第二阈值时,校验当前凸缺陷点,如果所述当前凸缺陷点正常,则删除所述凸包中的点;
对所有所述凸缺陷点进行排序,计算中位depth的值medianDepth,如果当前校验的所述凸包中的点和所述凸缺陷点之间的像素距离过近,计算该凸缺陷点depth值与medianDepth值的第一偏差,如果所述第一偏差小于设定的第三阈值,则删除所述当前校验的所述凸包中的点。
可选地,对所述凸缺陷进行校验,删除误检测的所述凸缺陷包括:
计算所述凸缺陷中相邻两个所述凸缺陷点之间的第三像素距离,如果所述第三像素距离小于设置的第四阈值时,计算相邻两个所述凸缺陷点的第二中心点,然后以所述第二中心点来替代相邻两个所述凸缺陷点;
计算所述凸缺陷中每个点和所述凸包中所有点之间的第四像素距离,如果所述第四像素距离小于第五阈值,则直接删除所述凸缺陷点;
以每个所述凸缺陷点的depth值为基准,对所有所述凸缺陷点进行排序,重新计算所述中位depth的值medianDepth;
计算每个所述凸缺陷点的depth值与所述medianDepth值的第二偏差,如果所述第二偏差大于设定的第六阈值,则对所述凸缺陷点进行删除。
可选地,对所述凸缺陷进行校验,删除误检测的所述凸缺陷还包括:
将当前所述凸缺陷点与前、后相邻的两个所述凸缺陷点构成三角形,计算当前所述凸缺陷点对应的夹角;若当前所述凸缺陷点对应的夹角小于角度阈值,则认为当前所述凸缺陷点为双角盘星藻类双角凹陷产生的待定伪凸缺陷点;
对所述待定伪凸缺陷点进一步验证,如果是伪凸缺陷点,则删除当前所述凸缺陷点。
可选地,基于所述有效凸缺陷点,统计所述盘星藻类细胞个数包括:
按顺时针方向,计算相邻所述有效凸缺陷点之间的间距;
计算所述间距的间距中位值;
基于所述间距和所述间距中位值,估算漏检的所述凸缺陷点;
基于所述凸缺陷点的个数,统计所述盘星藻类细胞个数,以所述盘星藻类细胞个数的典型值为基础,对统计的所述盘星藻类细胞个数进行修正。
还提供一种基于显微镜图像的盘星藻类细胞统计***,包括:图像处理模块、边缘特征点检测校验模块和个数统计模块,
所述图像处理模块,用于对采集的原始盘星藻类显微镜图像进行预处理,获得待检测盘星藻类灰度图像,对所述待检测盘星藻类灰度图像进行边缘检测,获得盘星藻类边缘图像;
所述边缘特征点检测校验模块,用于检测所述盘星藻类边缘图像的凸包和凸缺陷,对所述凸包和凸缺陷进行校验,获得有效凸缺陷点;
所述个数统计模块,用于所述基于所述有效凸缺陷点,统计盘星藻类细胞个数。
本发明公开了以下技术效果:
本发明提供的一种基于显微镜图像的盘星藻类细胞统计方法及***,通过分析凸包和凸缺陷,有效地区分出双角盘星藻类和单角盘星藻类,提高了细胞个数统计的精度。并且通过分析凸缺陷之间的间距,可以判断出是否存在漏检测的凸缺陷,并估算出漏检测凸缺陷的个数。为细胞个数典型值修正模块提供了较精确的参考值,从而进一步提高了盘星藻类细胞个数统计的精度。同时,采用的凸包和凸缺陷分析方法对图像上盘星藻类的大小没有要求,能够对不同分辨率下拍摄的图像进行识别和分析,具有广泛的适用性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提供一种基于显微镜图像的盘星藻类细胞统计方法,在进行盘星藻类细胞个数统计前,先要获取原始盘星藻类显微镜图像。在本实施例中,原始盘星藻类显微镜图像利用包括透射光源和显微镜物镜的光学显微镜和数字相机的图像采集装置进行原始盘星藻类显微镜图像的获取,在进行图像采集时数字相机装设在光学显微镜上,并通过USB信号线连接到电脑,数字相机受电脑软件层里支持软件组件中的图像获取模块控制,向软件层提供所需图像。利用深度学习网络识别图像中的盘星藻类并对盘星藻类进行图像截取,获得原始盘星藻类显微镜图像。本实施例中的盘星藻类细胞统计方法具体包括以下步骤,如图1所示:
S1、对原始盘星藻类显微镜图像进行预处理,增强图像的对比度。
本实施例中所获取的原始盘星藻类显微镜图像为彩色图像,在进行预处理时,如图2所示,具体包括:
首先对图像进行缩放处理,提高整体运行效率;
将缩放后的彩色图像数据转换成灰度图像;
对灰度图像进行中值滤波去噪;
采用CLAHE(对比度受限的自适应直方图均衡化)算法对图像进行对比度拉伸操作;
由于CLAHE算法拉伸后的图像数据会存在较多噪点,需要通过高斯模糊化算法来进一步降噪,从而获得完成降噪处理后的最终灰度图像。
S2、对灰度图像进行边缘检测,获得图像中盘星藻类的边缘特征。
如图3所示,具体包括:
在灰度图像上利用大律算法计算OTSU(大律)阈值;
以OTSU阈值为基础,分别乘以设置的大小不同的两个系数,分别为低阈值系数和高阈值系数,组成CANNY检测用的高低阈值,然后用Canny边缘检测方法从灰度图像中提取出盘星藻类的边缘特征;
在边缘图像上做形态学膨胀操作,连接断开的边缘,增强盘星藻类外轮廓的完整性。
S3、基于边缘图像计算盘星藻类外轮廓,并找到最大外轮廓,对最大外轮廓进行检测,获得最大外轮廓的特征点,特征点包括凸包和凸缺陷。
如图4所示,具体包括:
在边缘图像上,通过opencv视觉库findContour函数检测外轮廓外轮廓;
从所检测到的所有外轮廓数据中找到最大的外轮廓,具体为根据opencv视觉库minAreaRect函数计算每个外轮廓的最小包围矩形,将最小包围矩形的长和宽相乘得到该外轮廓的面积,比较所有外轮廓的面积,获得面积最大的外轮廓,该外轮廓即是最大外轮廓;
通过opencv视觉库convexHull函数对最大外轮廓做凸包检测,计算最大外轮廓上的凸包,检测出来的凸包hull是一个向量形式的点集,即vector<Point>hull;
结合凸包数据,在最大外轮廓上检测它的凸缺陷,具体为将最大外轮廓和最大外轮廓的凸包送入到opencv视觉库convexityDefects函数中,检测该最大外轮廓的凸缺陷点,表示为defects,它是一个向量形式的结构体(vector<Vec4i>defects),其中结构体Vec4i包含4个变量,分别是轮廓起始点索引startPointID,轮廓结束点索引endPointID,距离凸包最远点索引farPointID和最远点到轮廓的像素距离depth。最大外轮廓的凸缺陷点是在凸包内部,并且凸缺陷点是由最大外轮廓上的坐标点产生。在检测最大外轮廓的凸缺陷点时,设置凸缺陷点与凸包之间的最小depth距离和两个凸缺陷点之间的最小间距,通过计算最大外轮廓上的坐标点与凸包的距离,从最大外轮廓上的坐标点中筛选出符合要求的坐标点,这些坐标点就是凸缺陷点。
S4、特征点校验:校验凸包和凸缺陷,删除误检测数据。
参照图5,所述特征点校验包括以下内容:
(1)凸包校验:校验凸包数据,删除误检测的凸包点;
(2)凸缺陷校验:校验凸缺陷数据,删除误检测的凸缺陷点和双角盘星藻类中两个角之间的伪凸缺陷点。
其中,参照图6,凸包校验包括以下步骤:
(1)计算凸包数据中任意两个凸点之间的像素距离,正常盘星藻类的角与角之间是有一定距离的,标准的凸包点在角的顶点上。当两个凸点之间的距离小于设置的阈值时,本实施例中,该阈值设置为10,计算它们的中心点,具体为:设置两个凸点的坐标分别为PTa(xa,ya),PTb(xb,yb),
X=(xa+xb)/2
Y=(ya+yb)/2
PT(X,Y)即为中心点,然后以中心点PT(X,Y)来替代这两个凸点;
(2)计算凸包中的凸点和凸缺陷中所有凸缺陷点之间的像素距离,如果发现它的像素距离小于设置的阈值时,本实施例中,该阈值设置为10,进一步排查当前的凸缺陷点,如果当前的凸缺陷点没有问题,那么将对凸包的点进行删除处理;
(3)以每个凸缺陷点Vec4i结构体里的depth值为基准,对所有凸缺陷点进行排序,然后找到中位depth的值medianDepth;
(4)如果步骤(2)发现某个凸点和凸缺陷点之间的像素距离过近(像素距离小于设置的阈值),那么计算该凸缺陷点depth值与medianDepth值的偏差。如果偏差小于设定的阈值,那么说明该凸缺陷点没有问题,将对该凸点进行删除处理。
参照图7,所述凸缺陷校验包括以下步骤:
(1)计算凸缺陷中相邻两个凸缺陷点之间的像素距离,当两个凸缺陷点之间的距离小于设置的阈值时,本实施例中,该阈值设置为10,计算它们的中心点,具体为,两个凸缺陷点分别为pt1(x1,y1),pt2(x2,y2),
x=(x1+x2)/2
y=(y1+y2)/2
pt(x,y)即为中心点,
然后以中心点来替代这两个凸缺陷点;
(2)计算凸缺陷中每个凸缺陷点和凸包所有凸点之间的像素距离,如果发现凸缺陷点和凸点之间的距离过近(像素距离小于10),则直接删除该凸缺陷点;
(3)由于在前面的凸包校验环节已经排除了误检测的凸点。因此,步骤(2)可以对问题凸缺陷点直接进行删除处理;
(4)以每个凸缺陷点Vec4i结构体里的depth值为基准,对所有凸缺陷点进行排序,然后重新中位depth的值medianDepth;
(5)计算每个凸缺陷点Vec4i结构体里depth值与medianDepth值的偏差。如果偏差大于设定的阈值,则对该凸缺陷点进行删除操作;
(6)由于双角盘星藻类在两个角之间会多生成一个凸缺陷点,直接统计凸缺陷点的个数会造成较大的细胞个数统计误差。因此,需要在凸缺陷中查找:是否存在这样的凸缺陷点,如果存在,需要将它删除。
为了更好地说明通过凸缺陷角度验证,找到双角盘星藻类的过程,参照示例图8,包括以下内容:
(1)图像中深色的点表示凸缺陷点。其中,A、D和F点是双角盘星藻类细胞中间多出来的伪凸缺陷点,为了后续表述方便,这里给它命名为alpha凸缺陷点,这些点是需要进行删除操作的;B、C、E点是正常的凸缺陷点,给它命名为beta凸缺陷点,用于统计盘星藻类细胞的个数;
(2)按顺时针方向,从第二个凸缺陷点开始,将当前凸缺陷点、上一个凸缺陷点和下一个凸缺陷点,这三个点组成三角形。计算当前凸缺陷点与相邻两个凸缺陷点组成的夹角;
(3)通过观察图像特征可以发现:三个凸缺陷点组成的三角形,共有4种类型,它们分别为:
(a)三个点都是alpha凸缺陷点:例如:ADF组成的三角形,D点的夹角是钝角,角度较大。这种形态下,相当于图8中C和E点都未检测出来,或检测出来后都被删除掉了。我们分析了500多张盘星藻类数据未发现这类现象,一般来说beta凸缺陷点更容易检测出来。另外在前面凸缺陷距离校验环节,会根据凸缺陷点与外轮廓的距离值depth来进行检查,beta凸缺陷点的depth值比alpha凸缺陷点的depth值要大,所以,alpha凸缺陷点更容易被删除。因此,这种三角形类型出现的概率非常低;
(b)三个点都是beat凸缺陷点:例如:BCE组成的三角形,C点的夹角是钝角,角度较大。单角盘星藻类图像或双角盘星藻类图像滤除掉alpha凸缺陷点后,组成的三角形都是这种方式;
(c)两个点是alpha凸缺陷点,另一个点是beta凸缺陷点:例如:DEF组成的三角形,E点的夹角是钝角,角度较大;
(d)两个点是beta凸缺陷点,另一个点是alpha凸缺陷点:例如:BAC组成的三角形,A点的夹角是锐角,角度较小。
(4)根据步骤(3)总结的规律,我们在进行步骤(2)操作时,以BAC组成的三角形为例,如果计算出A的角度较小,低于设置的角度阈值,那么说明A点很有可能是alpha凸缺陷点;
(5)双角盘星藻类双角凹陷产生的伪凸缺陷点与凸包的depth距离会比正常的凸缺陷点与凸包的depth距离要小。为方便描述,仍以BAC组成的三角形为例,进一步分析A点到外轮廓凸包的距离是否最小。用depthA表示A点到外轮廓凸包的距离,用depthB表示B点到外轮廓凸包的距离,用depthC表示C点到外轮廓凸包的距离。如果depthA同时小于depthB和depthC,那么说明A点为alpha凸缺陷点,将其进行删除处理。
在本实施例中,验证伪凸缺陷点的方法对单角盘星藻类不会产生负面的影响,正常的凸缺陷点构成的夹角为钝角,因此,本方法可以区分图像中的盘星藻类是单角盘星藻类还是双角盘星藻类,并消除盘星藻类细胞个数统计时,双角盘星藻类引起的误差,进一步提高了细胞个数统计的精度。
参照图9,图像中深色的点对应的就是特征点校验后的凸缺陷点,可以观察到:无论是双角盘星藻类还是单角盘星藻类,凸缺陷检测的效果都很理想。
S5、藻类细胞个数统计:通过分析凸缺陷,统计出盘星藻类的细胞个数。
参照图10,所述藻类细胞个数统计包括以下步骤:
(1)从第二个凸缺陷点开始,计算当前凸缺陷点与上一个凸缺陷点之间的像素距离,将计算结果保存为向量形式(vector<float>length);
(2)将计算的像素距离进行排序,从length中找到中间位置对应的像素距离值,表示为medianLength;
(3)统计当前凸缺陷点的个数;
(4)计算length[i](向量length中第i个位置对应的像素距离值)和medianLength的比例,如果比例大于设定的阈值,则说明这两个相邻的凸缺陷点之间存在漏检的凸缺陷点;
(5)按步骤(4)的方式,遍历向量length中所有的数值,计算漏检的凸缺陷点个数;
(6)将步骤(3)统计的凸缺陷点个数和步骤(5)计算的漏检凸缺陷点个数相加,得到当前盘星藻类的细胞个数;
(7)按盘星藻类细胞个数规律,以步骤(6)统计的细胞个数为参考值,用对应的典型细胞个数来修正细胞统计结果,在本实施例中,如果检测出来的细胞个数小于10个(不包括10)的,将它修正为8;同理小于18的修正为16,小于28的修正为32,小于50的修正为64,比50更大的修正为128。
参照图11,盘星藻类图像左上角深色数字为本发明提供的方法统计的细胞个数,下方亮色的数字为人工统计的盘星藻类细胞个数。
还提供一种基于显微镜图像的盘星藻类细胞统计***,如图12所示,包括:图像处理模块、边缘特征点检测校验模块和个数统计模块,
图像处理模块,用于对采集的原始盘星藻类显微镜图像进行预处理,获得待检测盘星藻类灰度图像,对待检测盘星藻类灰度图像进行边缘检测,获得盘星藻类边缘图像;
边缘特征点检测校验模块,用于检测盘星藻类边缘图像的凸包和凸缺陷,对凸包和凸缺陷进行校验,获得有效凸缺陷点;
细胞个数统计模块,用于基于所述有效凸缺陷点,统计盘星藻类细胞个数。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。