一种基于多尺度核的宽场显微镜照度均匀度的检测方法与流程

文档序号:31792152发布日期:2022-10-14 15:57阅读:173来源:国知局
一种基于多尺度核的宽场显微镜照度均匀度的检测方法与流程

1.本发明涉及光学显微镜照度均匀度的检测方法,特别涉及一种基于多尺度核的宽场显微镜照度均匀度的检测方法。


背景技术:

2.照度均匀度是一种图像画质的评价指标,它反映了一幅图像的光照均匀程度。在显微镜应用中,照度均匀度为评价图像的光照均匀度提供了一种客观的评价指标,该指标涉及图像的最小灰度值、最大灰度值和平均灰度值。通常的照度均匀度自动检测方法未考虑画面中的干扰物对计算的影响,特别是宽场显微镜中,因为清洁工艺无法完全去除光路中的污渍及样本玻片上的污渍,由此在检测照度均匀度时通常会产生计算误差。
3.显微镜光路中的污渍可能存在于物镜、观察头、中继镜、相机等光学器件上,样本玻片上的污渍可能存在于载玻片和盖破片的任何表面位置。而如果为了清理污渍的目的拆卸一台已经组装完毕的显微镜,那么在清理光路组件后,复原工作将异常繁琐、耗时;且在遇到光学镜片材料中夹杂异物时,更是增加了去除污渍的操作难度并会增加硬件维护成本。
4.常规的阈值分割法可以去除主要的污渍影响,但留存下来的污渍仍将影响最小灰度值和最大灰度值,进而在计算照度均匀度时无法有效地抑制计算误差,影响检测的准确度和稳定性。


技术实现要素:

5.本发明所要解决的技术问题是提供一种能够降低计算误差,避免拆装显微镜,从而能自动降低污渍误差对评估显微镜照度均匀度影响的基于多尺度核的宽场显微镜照度均匀度的检测方法。
6.本发明解决上述技术问题所采用的技术方案为:一种基于多尺度核的宽场显微镜照度均匀度的检测方法,包含以下步骤:
7.步骤(1):读取由工业相机采集的显微图像,记为图a;
8.步骤(2):计算出与图a相对应的掩膜图,记为图m;
9.步骤(3):调用opencv(open source computer vision library,开源计算机视觉库,官网“https://docs.opencv.org/3.4.17/d1/dfb/intro.html”)的bitwise_and函数对图a和图m做“与”操作,得到掩膜后的灰度图像,记为图a
mask

10.步骤(4):计算图a
mask
的最小灰度值和最大灰度值,分别记为v
min
、v
max

11.步骤(5):调用opencv的mean函数计算图a
mask
的灰度均值,记为g
avg

12.步骤(6):使用以下公式计算图a
mask
的照度均匀度u,照度均匀度u即为宽场显微镜下图a的照度均匀度u:
13.14.步骤(2)的具体步骤如下:
15.步骤(2-1):调用opencv的gaussianblur函数处理图a,得到高斯滤波后的滤波图像,记为图a
gaussian

16.步骤(2-2):调用opencv的threshold函数处理图a
gaussian
,将得到的掩膜图记为掩膜图m1;
17.步骤(2-3):去除掩膜图m1中的过小区域和潜在的背景区域,将得到的掩膜图记为掩膜图m2;
18.步骤(2-4):使用掩膜图m2,遍历统计图a
gaussian
的灰度均值,先统计出掩膜图m2中的非零像素点数量,记为n;再累加求和掩膜图m2中非零像素点位置对应的图a
gaussian
像素点的灰度值,记为v
sum
;最后计算掩膜图m2作用下图a
gaussian
的灰度均值,记为th
avg
,计算图a
gaussian
灰度均值的公式如下:
[0019][0020]
步骤(2-5):先创建一张与掩膜图m2相同尺寸的灰度图,记为图m3,其所有的像素值均为0。再使用th
avg
对掩膜图m2做阈值化处理,将判断结果赋值到图m3中,即:如果掩膜图m2的像素点的灰度值大于th
avg
,那么将图m3中与之对应的像素点赋值为255,反之赋值为0;
[0021]
步骤(2-6):调用opencv的morphologyex函数中的morph_open方法对图m3做开操作处理,得到减轻像素团黏连的灰度图,记为图m4;
[0022]
步骤(2-7):去除图m4中的过小区域和潜在的背景区域,记为图m5;
[0023]
步骤(2-8):调用opencv的bitwise_or函数对图m2和图m5作或处理,得到一张或操作后的灰度图像,即为掩膜图m。
[0024]
步骤(2-3)具体如下:
[0025]
步骤(2-3-1):调用opencv的findcontours函数处理图m1,获取图m1中所有像素团轮廓的轮廓集,记为t1,其中t1共有n1个像素团轮廓;
[0026]
步骤(2-3-2):调用opencv的contourarea函数处理轮廓集t1,获取轮廓集t1所对应的轮廓面积集,记为s1,其中s1共有n1个轮廓面积;
[0027]
步骤(2-3-3):保留同时满足以下两个条件的子轮廓像素团t
1-i
,形成新的轮廓集,记为t
1-keep

[0028]
第一个条件是,面积集s1的子轮廓面积s
1-i
(i=1,2,3,

,n1)大于预设的面积阈值th
area
,th
area
=30像素;
[0029]
第二个条件是,遍历图m1中的四周单像素边缘,统计与子轮廓t
1-i
(i=1,2,3,

,n1)重合的像素点数量,该像素点数量小于预设的像素数量阈值th
num
,th
num
=20像素;
[0030]
步骤(2-3-4):调用opencv的drawcontours函数遍历t
1-keep
,将t
1-keep
绘制到一张新的灰度掩膜图,记为掩膜图m2,其中,在drawcontours中令thickness=-1,使用填充轮廓方法,所填充的像素灰度值为255,未填充的像素灰度值为0。
[0031]
步骤(2-7)具体如下:
[0032]
步骤(2-7-1):调用opencv的findcontours函数处理图m4,获取图m4中所有像素团轮廓的轮廓集,记为t2,其中t2共有n2个像素团轮廓;
[0033]
步骤(2-7-2):调用opencv的contourarea函数处理轮廓集t2,获取轮廓集t2所对应
的轮廓面积集,记为s2,其中s2共有n2个轮廓面积;
[0034]
步骤(2-7-3):保留同时满足以下两个条件的子轮廓像素团t
2-i
,形成新的轮廓集,记为t
2-keep

[0035]
第一个条件是,面积集s2的子轮廓面积s
2-i
(i=1,2,3,

,n2)大于预设的面积阈值th
area
,th
area
=30像素;
[0036]
第二个条件是,遍历统计子轮廓t
2-i
(i=1,2,3,

,n2)与图m4中的四周单像素边缘重合的像素点数量,该像素点数量小于预设的像素数量阈值th
num
,th
num
=20像素;
[0037]
步骤(2-7-4):调用opencv的drawcontours函数遍历t
2-keep
,将t
2-keep
绘制到一张新的灰度掩膜图,记为图m5,其中,在drawcontours中令thickness=-1,使用填充轮廓方法,所填充的像素灰度值为255,未填充的像素灰度值为0。
[0038]
步骤(4)的具体步骤如下:
[0039]
步骤(4-1):先定义不同尺度的均值滤波器,记为滤波器fk(k=1,2,3,

,k),其中k表示滤波器fk的总数量,再预设每个滤波器的尺度,记为sk像素
×
sk像素(k=1,2,3,

,k),其中sk表示以像素为单位的第k个滤波器的宽度和高度,范围为75~200的正整数;
[0040]
步骤(4-2):定义k为累加变量,初始化为k=1;
[0041]
步骤(4-3):判断k与k的大小关系,如果k≤k,那么执行步骤(4-4);否则,执行步骤(4-7);
[0042]
步骤(4-4):使用第k个尺度将图a
mask
划分成mk个等大小的方格子区域,使用hk和wk分别表示第k个尺度下图a
mask
的横向方格数量和纵向方格数量,mk、hk和wk的计算公式如下:
[0043][0044]
上式中,mk表示第k个尺度下图a
mask
中等尺度划分出来的方格子区域总数,hk和wk分别表示第k个尺度下图a
mask
的横向方格数量和纵向方格数量,h和w分别表示图a
mask
的纵向像素个数和横向像素个数,floor(
·
)表示向下取整操作;
[0045]
步骤(4-5):计算图a
mask
中每个方格子区域的灰度均值,记为v
avg-k,m
(其中,k=1,2,3,

,k;m=1,2,3,

,mk),v
avg-k,m
的计算公式如下:
[0046]
[0047]
上式中,t表示第k个尺度下每个子区域的像素点总数,a
k,m,t
表示第k个尺度下第m个子区域中的第t个系数,a
mask-k,m,t
表示第k个尺度下取自图a
mask
第m个子区域的第t个像素点灰度值,表示第k个尺度下取自图a
mask
第m个子区域的有效像素灰度值之和,n
k,m
表示第k个尺度下取自图a
mask
第m个子区域的有效像素点数量,v
avg-k,m
表示第k个尺度下对应图a
mask
第m个子区域的灰度均值;如果a
mask-k,m,t
的像素灰度值为0,令a
k,m,t
=0;如果a
mask-k,m,t
的像素灰度值不为0,令a
k,m,t
=1;
[0048]
步骤(4-6):对变量k累计加1,返回步骤(4-3);
[0049]
步骤(4-7):重新初始化累加变量k,初始化为k=1;
[0050]
步骤(4-8):判断k与k的大小关系,如果k≤k,那么执行步骤(4-9),否则,执行步骤(4-13);
[0051]
步骤(4-9):在第k个尺度下,统计出m个灰度均值v
avg-k,m
中的最小值和最大值,分别记为v
min-k
、v
max-k

[0052]
步骤(4-10):去除v
min-k
中的最小值和最大值,统计剩余v
min-k
数值的平均值,记为v
min
,公式如下:
[0053][0054]
上式中,k表示所选尺度的序号,k表示尺度的总数量,v
min-k
表示第k个尺度下m个灰度均值v
avg-k,m
中的最小值,v
min
表示对应图a
mask
的最小灰度值;min(
·
)表示选取目标对象中所有元素最小值的操作,max(
·
)表示选取目标对象中所有元素最大值的操作;
[0055]
步骤(4-11):去除v
max-k
中的最小值和最大值,统计剩余v
max-k
数值的平均值,记为v
max
,公式如下:
[0056][0057]
上式中,k表示所选尺度的序号,k表示尺度的总数量,v
max-k
表示第k个尺度下m个灰度均值v
avg-k,m
中的最大值,v
max
表示对应图a
mask
的最大灰度值;min(
·
)表示选取目标对象中所有元素最小值的操作,max(
·
)表示选取目标对象中所有元素最大值的操作;
[0058]
步骤(4-12):对变量k累计加1,返回步骤(4-8);
[0059]
步骤(4-13):得到图a
mask
的最大灰度值v
min
和最小灰度值v
max

[0060]
与现有技术相比,本发明的优点在于以开源计算机视觉库中的各种函数为辅助方法,先阈值化处理原始图像,获得污渍的初步掩膜图,再使用多尺度核遍历计算不同尺度均值滤波器下显微图像对应的最小灰度集合和最大灰度集合,然后剔除两组集合中的最小值与最大值,对剩余数据各自做加权平均后,得到全局最小灰度均值和全局最大灰度均值,最终计算出照度均匀度。对比常规的基于阈值分割去污渍干扰技术,本发明的方法既能更好地剔除污渍,也能减轻未去除污渍对最小、最大灰度值的影响,进而提升照度均匀度的检测准确度,为评价显微镜下的照度均匀度提供更客观的检测方法。本发明方法适用于不同洁净程度下宽场显微镜照度均匀度的检测需求,能有效地抑制污渍对照度均匀度的误差影
响,提高检测准确度和稳定性。此外,在检测照度均匀度的准确度方面,本发明方法与“人工手动计算”方法相近,综合运行时间优于1秒,具有准确、稳定、快速的特点。
附图说明
[0061]
图1为本发明方法使用的显微镜采集设备硬件平台的结构示意图;
[0062]
图2为本发明的基于多尺度核的显微镜照度均匀度检测方法流程图;
[0063]
图3为本发明的计算显微图像a的掩膜图的流程图;
[0064]
图4位本发明的掩膜效果示意图;
[0065]
图5为本发明的基于多尺度核计算显微图像a中最小灰度值和最大灰度值的流程图;
[0066]
图6为本发明实施例的3张样本图。
具体实施方式
[0067]
以下结合附图实施例对本发明作进一步详细描述。
[0068]
实施例:本发明实施例使用的显微镜采集设备硬件平台如图1所示,它包括工业相机1、中继镜2、物镜3、空白样本4、电动平台5、光源6、工业相机数据线7和显微镜支架8。
[0069]
本发明一种基于多尺度核的宽场显微镜照度均匀度的检测方法,流程图如图2所示,包含以下步骤:
[0070]
步骤(1):读取由工业相机1采集的显微图像,记为图a;
[0071]
步骤(2):计算出与图a相对应的掩膜图,记为图m,具体步骤如下:
[0072]
步骤(2-1):调用opencv的gaussianblur函数处理图a,得到高斯滤波后的滤波图像,记为图a
gaussian

[0073]
步骤(2-2):调用opencv的threshold函数处理图a
gaussian
,将得到的掩膜图记为掩膜图m1;
[0074]
步骤(2-3):去除掩膜图m1中的过小区域和潜在的背景区域,将得到的掩膜图记为掩膜图m2,具体如下:
[0075]
步骤(2-3-1):调用opencv的findcontours函数处理图m1,获取图m1中所有像素团轮廓的轮廓集,记为t1,其中t1共有n1个像素团轮廓;
[0076]
步骤(2-3-2):调用opencv的contourarea函数处理轮廓集t1,获取轮廓集t1所对应的轮廓面积集,记为s1,其中s1共有n1个轮廓面积;
[0077]
步骤(2-3-3):保留同时满足以下两个条件的子轮廓像素团t
1-i
,形成新的轮廓集,记为t
1-keep

[0078]
第一个条件是,面积集s1的子轮廓面积s
1-i
(i=1,2,3,

,n1)大于预设的面积阈值th
area
,本实施例中,取值th
area
=30像素;
[0079]
第二个条件是,遍历图m1中的四周单像素边缘,统计与子轮廓t
1-i
(i=1,2,3,

,n1)重合的像素点数量,该像素点数量小于预设的像素数量阈值th
num
,本实施例中,取值th
num
=20像素;
[0080]
步骤(2-3-4):调用opencv的drawcontours函数遍历t
1-keep
,将t
1-keep
绘制到一张新的灰度掩膜图,记为掩膜图m2,其中,在drawcontours中令thickness=-1,使用填充轮廓方
法,所填充的像素灰度值为255,未填充的像素灰度值为0;;
[0081]
步骤(2-4):使用掩膜图m2,遍历统计图a
gaussian
的灰度均值,先统计出掩膜图m2中的非零像素点数量,记为n;再累加求和掩膜图m2中非零像素点位置对应的图a
gaussian
像素点的灰度值,记为v
sum
;最后计算掩膜图m2作用下图a
gaussian
的灰度均值,记为th
avg
,计算图a
gaussian
灰度均值的公式如下:
[0082][0083]
步骤(2-5):先创建一张与掩膜图m2相同尺寸的灰度图,记为图m3,其所有的像素值均为0。再使用th
avg
对掩膜图m2做阈值化处理,将判断结果赋值到图m3中,即:如果掩膜图m2的像素点的灰度值大于th
avg
,那么将图m3中与之对应的像素点赋值为255,反之赋值为0;
[0084]
步骤(2-6):调用opencv的morphologyex函数中的morph_open方法对图m3做开操作处理,得到减轻像素团黏连的灰度图,记为图m4;
[0085]
步骤(2-7):去除图m4中的过小区域和潜在的背景区域,记为图m5,具体如下:
[0086]
步骤(2-7-1):调用opencv的findcontours函数处理图m4,获取图m4中所有像素团轮廓的轮廓集,记为t2,其中t2共有n2个像素团轮廓;
[0087]
步骤(2-7-2):调用opencv的contourarea函数处理轮廓集t2,获取轮廓集t2所对应的轮廓面积集,记为s2,其中s2共有n2个轮廓面积;
[0088]
步骤(2-7-3):保留同时满足以下两个条件的子轮廓像素团t
2-i
,形成新的轮廓集,记为t
2-keep

[0089]
第一个条件是,面积集s2的子轮廓面积s
2-i
(i=1,2,3,

,n2)大于预设的面积阈值th
area
,本实施例中,取值th
area
=30像素;
[0090]
第二个条件是,遍历统计子轮廓t
2-i
(i=1,2,3,

,n2)与图m4中的四周单像素边缘重合的像素点数量,该像素点数量小于预设的像素数量阈值th
num
,本实施例中,取值th
num
=20像素,所填充的像素灰度值为255,未填充的像素灰度值为0;
[0091]
步骤(2-7-4):调用opencv的drawcontours函数遍历t
2-keep
,将t
2-keep
绘制到一张新的灰度掩膜图,记为图m5,其中,在drawcontours中令thickness=-1,使用填充轮廓方法,所填充的像素灰度值为255,未填充的像素灰度值为0;
[0092]
步骤(2-8):调用opencv的bitwise_or函数对图m2和图m5作或处理,得到一张或操作后的灰度图像,即为掩膜图m;
[0093]
步骤(3):调用opencv的bitwise_and函数对图a和图m做“与”操作,得到掩膜后的灰度图像,记为图a
mask

[0094]
步骤(4):计算图a
mask
的最小灰度值和最大灰度值,分别记为v
min
、v
max
具体步骤如下:
[0095]
步骤(4-1):先定义不同尺度的均值滤波器,记为滤波器fk(k=1,2,3,

,k),其中k表示滤波器fk的总数量,再预设每个滤波器的尺度,记为sk像素
×
sk像素(k=1,2,3,

,k),其中sk表示以像素为单位的第k个滤波器的宽度和高度,范围为75~200的正整数;本实施例中,选择了6个不同尺度的均值滤波器,即k=6,每个尺度核的大小分别为75像素
×
75像素、100像素
×
100像素、125像素
×
125像素、150像素
×
150像素、175像素
×
175像素、200像素
×
200像素;
[0096]
步骤(4-2):定义k为累加变量,初始化为k=1;
[0097]
步骤(4-3):判断k与k的大小关系,如果k≤k,那么执行步骤(4-4);否则,执行步骤(4-7);
[0098]
步骤(4-4):使用第k个尺度将图a
mask
划分成mk个等大小的方格子区域,使用hk和wk分别表示第k个尺度下图a
mask
的横向方格数量和纵向方格数量,mk、hk和wk的计算公式如下:
[0099][0100]
上式中,mk表示第k个尺度下图a
mask
中等尺度划分出来的方格子区域总数,hk和wk分别表示第k个尺度下图a
mask
的横向方格数量和纵向方格数量,h和w分别表示图a
mask
的纵向像素个数和横向像素个数,floor(
·
)表示向下取整操作,如floor(20.12)的计算结果为整数20,本实施例中,举例当k=1时,选取第1个75像素
×
75像素大小的尺度核,因为图a
mask
的尺寸与图a相同,均为2056像素
×
1504像素,所以经过当前尺度核处理,在图a
mask
的划分出了h1=27个横向方格和w1=20个纵向方格,每个方格的尺寸大小均为75像素
×
75像素;
[0101]
步骤(4-5):计算图a
mask
中每个方格子区域的灰度均值,记为v
avg-k,m
(其中,k=1,2,3,

,k;m=1,2,3,

,mk),v
avg-k,m
的计算公式如下:
[0102][0103]
上式中,t表示第k个尺度下每个子区域的像素点总数,a
k,m,t
表示第k个尺度下第m个子区域中的第t个系数,a
mask-k,m,t
表示第k个尺度下取自图a
mask
第m个子区域的第t个像素点灰度值,表示第k个尺度下取自图a
mask
第m个子区域的有效像素灰度值之和,n
k,m
表示第k个尺度下取自图a
mask
第m个子区域的有效像素点数量,v
avg-k,m
表示第k个尺度下对应图a
mask
第m个子区域的灰度均值;如果a
mask-k,m,t
的像素灰度值为0,令a
k,m,t
=0;如果a
mask-k,m,t
的像素灰度值不为0,令a
k,m,t
=1;本实施例中,当k=1时,每个子区域的尺寸为75像素
×
75像素,那么t=5625像素;
[0104]
步骤(4-6):对变量k累计加1,返回步骤(4-3);
[0105]
步骤(4-7):重新初始化累加变量k,初始化为k=1;
[0106]
步骤(4-8):判断k与k的大小关系,如果k≤k,那么执行步骤(4-9),否则,执行步骤
(4-13);
[0107]
步骤(4-9):在第k个尺度下,统计出m个灰度均值v
avg-k,m
中的最小值和最大值,分别记为v
min-k
、v
max-k

[0108]
步骤(4-10):去除v
min-k
中的最小值和最大值,统计剩余v
min-k
数值的平均值,记为v
min
,公式如下:
[0109][0110]
上式中,k表示所选尺度的序号,k表示尺度的总数量,v
min-k
表示第k个尺度下m个灰度均值v
avg-k,m
中的最小值,v
min
表示对应图a
mask
的最小灰度值;min(
·
)表示选取目标对象中所有元素最小值的操作,max(
·
)表示选取目标对象中所有元素最大值的操作;
[0111]
步骤(4-11):去除v
max-k
中的最小值和最大值,统计剩余v
max-k
数值的平均值,记为v
max
,公式如下:
[0112][0113]
上式中,k表示所选尺度的序号,k表示尺度的总数量,v
max-k
表示第k个尺度下m个灰度均值v
avg-k,m
中的最大值,v
max
表示对应图a
mask
的最大灰度值;min(
·
)表示选取目标对象中所有元素最小值的操作,max(
·
)表示选取目标对象中所有元素最大值的操作;
[0114]
步骤(4-12):对变量k累计加1,返回步骤(4-8);
[0115]
步骤(4-13):得到图a
mask
的最大灰度值v
max
和最小灰度值v
min

[0116]
步骤(5):调用opencv的mean函数计算图a
mask
的灰度均值,记为g
avg

[0117]
步骤(6):使用以下公式计算图a
mask
的照度均匀度u,照度均匀度u即为宽场显微镜下图a的照度均匀度u:
[0118][0119]
上式中,v
min
为图a
mask
的最小灰度值,v
max
为图a
mask
的最大灰度值,g
avg
为图a
mask
的灰度均值,u为图a
mask
的照度均匀度检测结果,是一个百分比数值。
[0120]
以下对本发明的方法的正确性进行验证:
[0121]
1.精度实验
[0122]
本发明的方法应用于检测显微镜的照度均匀度,本实施例选用的3张样本图如图6所示,相关的平行测试方法名称和测试数据如表1所示。其中,|

u|表示每种方法与“人工手动计算”方法之间照度均匀度之差的绝对值。此外,由于“人工手动计算”方法存在随机性,因此表1中该方法的相应数据是对15次采样统计平均后的结果。
[0123]
表1不同平行方法的照度均匀度测试数据表
[0124][0125]
如表1,本实施例共设置了3组实验,每组实验针对1张样本图,并记录了每张样本下4种不同平行方法的照度均匀度测试数据,每种平行方法的含义如表2所示:
[0126]
表2测试中5种平行方法的功能说明
[0127][0128]
表1的测试数据表明:
[0129]
(1)比较表1中|

u|的结果,发现方法3(本发明的方法)的偏差结果最小,表明本发明的方法更接近“人工手动计算”分析照度均匀度的结果;
[0130]
(2)方法1和方法2的|

u|远大于10%,而方法3(本发明的方法)的|

u|始终小于1%,表明本发明的方法能有效地抑制污渍对照度均匀度计算的影响,且相对稳定;
[0131]
(3)对于方法4(人工手动计算),之所以先采集15组数据再统计平均,是为了减少手动采样过程中的随机性,这种随机性包括随机噪声和随机选点。而本发明的方法内含统计平均特点,可有效抑制随机性,提高检测稳定性;
[0132]
2.运行速度实验
[0133]
表3记录了本发明的实施例运行时间。
[0134]
表3本发明的实施例运行时间
[0135][0136]
表3的结果表明:
[0137]
(1)运行时间与样本图例的污渍清洁程度有关,污渍越多,运行时间越长;
[0138]
(2)综合运行时间优于1秒。
[0139]
3.结论
[0140]
综上,本发明适用于检测宽场显微镜的照度均匀度,其结果与“人工手动计算”相近,具有准确、稳定、快速的特点,并良好地抑制了光路和样本污渍对照度均匀度分析的误差影响。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1