产学研创新服务平台(开云优惠体育网页版入口)
专利申请类型:发明专利;专利名称:一种基于差分度量的浅色生物样本的检测方法
专利类型:发明专利
专利申请号:CN202210315356.9
专利申请(专利权)人:宁波永新光学股份有限公司
权利人地址:浙江省宁波市高新区木槿路169号
专利发明(设计)人:王益平,郑驰,张琦,沈开远,顾剑,王方,俞俊杰
专利摘要:本发明公开了一种基于差分度量的浅色生物样本检测方法,通过先检测出生物样本的有效矩形区域,再遍历采集该区域,缩短采样时间,提高运行效率,并充分利用OpenCV这一通用、开源的计算机视觉库拥有丰富的数字图像处理函数方法这一特点对图像进行滤波、差分度量、闭操作和去干扰处理,能满足无显卡配置条件下良好地抑制背景噪声,且快速、稳定地分割出淹没于背景的浅色样本区域,并适用于正常颜色和深色生物样本,为后续的自动样本采集做好准备,提高自动采集效率。
主权利要求:
1.一种基于差分度量的浅色生物样本检测方法,其特征在于包含以下步骤:
步骤(1):以白色光源做背光,通过架设在光学显微镜物镜旁的工业相机采集无生物样本的背景图像,记为图A;
步骤(2):从图A中自动检测出感兴趣区域,记为图BROI,并保存感兴趣区域图BROI的位置参数,具体步骤如下:步骤(2?1):直接调用OpenCV的threshold函数处理图A,得到阈值化后的图像,记为图Ath;
步骤(2?2):沿着图Ath的水平中线从左侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为0,右侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的左侧边线的中心点,记为(ileft,jleft);
步骤(2?3):沿着图Ath的水平中线从右侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为255,右侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的右侧边线的中心点,记为(iright,jright);
步骤(2?4):沿着图Ath的垂直中线从上侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为0,下侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的上侧边线的中心点,记为(itop,jtop);
步骤(2?5):沿着图Ath的垂直中线从下侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为255,下侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的下侧边线的中心点,记为(ibottom,jbottom);
步骤(2?6):计算感兴趣区域的起始坐标端点、高度和宽度,分别记为(iROI,jROI)、hROI、wROI,公式如下:上式中,iROI、jROI分别表示的感兴趣区域中起始坐标点的纵坐标和横坐标;hROI、wROI分别表示的感兴趣区域中的高度和宽度;Vborder表示边距,取值为50像素;
步骤(2?7):通过位置信息(iROI,jROI)、hROI、wROI,从图Ath中提取出感兴趣区域,记为图BROI;
步骤(3):先将生物样本放置于透明的载玻片上,再由电动载物台的上平台将载玻片运送到工业相机下的拍摄区域,采集生物样本的图片;
步骤(4):通过步骤(2)中保存的感兴趣区域的位置信息获取生物样本图片的感兴趣区域图像,记为图B1;
步骤(5):直接调用OpenCV的滤波函数处理图B1,得到滤波后的图像,记为图Bfilter,具体步骤如下:步骤(5?1):调用OpenCV的GaussianBlur函数处理图B1,得到高斯滤波后的滤波图像,记为图BGaussian,在GassianBlur函数中,卷积核的尺寸取为5像素×5像素;
步骤(5?2):调用OpenCV的fastNlMeansDenoising函数处理图BGaussian,得到非局部平均处理后的滤波图像,记为图Bfilter,在fastNlMeansDenoising函数中,参数取值h=3,templateWindowSize=9,searchWindowSize=27;
步骤(6):先调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff,再区分存在生物样本的目标区域和不包含生物样本的其他区域,经过度量处理生成仅剩生物样本的灰度图像,记为图D;最后,调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,得到增强连通性的灰度图像,记为图DClose,具体步骤如下:步骤(6?1):调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff;
步骤(6?2):调用OpenCV的mean函数获取图Cdiff的统计平均值,记为thavg;
步骤(6?3):使用thavg对图Cdiff做阈值化处理,获得新的灰度图,记为图Cavg,公式如下:
上式中,Cavg为阈值化处理后的灰度图,Cdiff为差分灰度图,thavg为判断阈值,Cdiff(ik,jk)代表图Cdiff中纵坐标值为ik、横坐标值为jk的像素点的灰度值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cdiff的像素点总数目;
步骤(6?4):创建一个与图Cavg相同大小的度量矩阵,记为矩阵Hcount,遍历统计图Cavg中每个像素点附近的有效像素点数量,并依次对应地赋值到矩阵Hcount中,公式如下:Hcount(ik,jk)=measure(Cavg(ik,jk))
上式中,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵数值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;measure(·)代表度量方法,逐像素地遍历图Cavg中以坐标(ik,jk)为中心的11像素×
11像素范围内的非0值像素点个数,记为n,并令Hcount(ik,jk)=n,如果遍历的像素点超出图Cavg的边界,忽略超出的像素点;
步骤(6?5):先统计求和矩阵Hcount中所有数值,记为Vsum,公式如下:
上式中,Vsum为矩阵Hcount的统计求和结果,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵点数值,其中,k=0,1,2,…,N?1,N为矩阵Hcount的矩阵点总数;
再统计求和图Cavg中非零像素点个数,记为Vnone?zero,公式如下:
上式中,Vnone?zero为图Cavg中的非零像素点个数;αk代表与图Cavg中纵坐标值为ik、横坐标值为jk的像素点相关的系数,如果像素点(ik,jk)的取值Cavg(ik,jk)=255,那么αk=1;如果像素点(ik,jk)的取值Cavg(ik,jk)=0,那么αk=0,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;
最后,统计平均矩阵Hcount,其结果记为thHavg,公式如下:
上式中,thHavg为矩阵Hcount的统计平均值,Vsum为矩阵Hcount的统计求和值,Vnone?zero是为图Cavg中非零像素点个数的统计求和值;
步骤(6?6):使用thHavg对矩阵Hcount做阈值化处理,获得新的灰度图,记为图D,公式如下:
上式中,D为阈值化处理后的灰度图,Hcount为度量矩阵,thHavg为判断阈值,Hcount(ik,jk)代表矩阵中Hcount行为ik、列为jk的矩阵点数值,D(ik,jk)代表图D中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图D的像素点总数目;
步骤(6?7):调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,在morphologyEx函数中,卷积核的尺寸取为3像素×3像素,得到增强连通性的灰度图像,记为图DClose;
步骤(7):去除图DClose中的干扰对象,得到去除干扰后的灰度图像,记为图Tkeep,具体方法如下:步骤(7?1):先调用OpenCV的findContours函数中的RETR_EXTRNAL方法获取图Dclose中所有像素团轮廓的轮廓集,记为T1,再调用OpenCV的boundingRect函数遍历处理轮廓集T1,得到对应的外接矩形轮廓集,记为T2,计算外接矩形轮廓集T2的外接矩形面积集,记为S,取Sk=hk×wk,其中,Sk、hk、wk依次为外接矩形轮廓集T2中第k个外接矩形轮廓的面积值、高度和宽度,k=0,1,2,…,N?1,N为外接矩形轮廓集T2的总轮廓数;
步骤(7?2):设定一个外接矩形面积阈值用来判断某个子轮廓是否为细小杂物的干扰目标,记为tharea,取值为1000像素,如果一个子轮廓的外接矩形面积Sk大于tharea,则判定为有效的生物样本目标;反之则判定该子轮廓对应的区域属于细小杂物的干扰目标,删除该子轮廓对应的区域;
步骤(7?3):设定一个全局面积比例阈值来判断某个子轮廓是否为干扰背景,记为thrate1,取值为0.5,计算外接矩形轮廓集T2中每个外接矩形子轮廓对应的矩形面积与图BROI的矩形面积之比,公式如下:上式中,Vrate1?k为外接矩形轮廓集T2中第k个外接矩形子轮廓的全局面积比,Sk为外接矩形轮廓集T2中第k个外接矩形子轮廓的矩形面积,SROI为图BROI的矩形面积,其中,k=0,1,
2,…,N?1,如果Vrate1?k小于thrate1,则判定外接矩形轮廓集T2中第k个外接矩形子轮廓所对应的生物目标为有效的生物样本目标;反之判定该子轮廓对应的区域属于背景干扰目标,删除该子轮廓对应的区域;
步骤(7?4):设定一个外接矩形的长宽比例阈值用来判断某个子轮廓是否为细长形的丝印干扰目标,记为thrate2,取值为0.3,比较外接矩形的长度和宽度,选择较小的数值作为宽度a,选择大数值作为长度b,如果外接矩形轮廓集T2中某个外接矩形子轮廓的长宽比a/b大于thrate2,则判定为有效的生物样本目标;反之判定为该子轮廓对应的区域属于丝印干扰目标,删除该子轮廓对应的区域;
步骤(7?5):创建一组存储临时处理结果的图集,记为图集E,图集E包含与轮廓集T1相同数量的N个子图,记为子图Ek,所有子图Ek的像素点均取值为0;
步骤(7?6):选取轮廓集T1的子轮廓,记为子轮廓T1?k,其中,k=0,1,2,…,N?1,调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,表示使用255灰度值填充子轮廓T1?k所包围的区域,将处理结果保存到子图Ek;
步骤(7?7):设置一个像素数量阈值,记为thoutside,取值thoutside=5像素,统计图E1中最外层边框像素值为255的像素点数量,记为Voutside?k,如果Voutside?k
8);如果Voutside?k≥thoutside,且k
步骤(7?8):进一步判断子轮廓T1?k的有效性,判断式如下:
上式中,Sk为第k个子轮廓的外接矩形面积,SROI为感兴趣区域的面积,SROI=BROI的高度×BROI的宽度,hSk、wSk分别为第k个子轮廓的外接矩形高度和宽度,min(hSk,wSk)表示选取hSk和wSk之间最小值,max(hSk,wSk)表示选取hSk和wSk之间最大值;tharea为设定的外接矩形面积阈值,取值为1000像素;thrate1为全局面积比例阈值,取值为0.5;thrate2为外接矩形的长宽比例阈值,取值为0.3;
如果同时满足上式条件,则调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,且k
步骤(7?9):生成一幅与图Dclose相同大小的灰度图,记为图Tkeep,图Tkeep的所有像素点取值为0,遍历图集E中所有的子图Ek,逐一将子图Ek赋值到Tkeep中,最终得到去除干扰的灰度图Tkeep;
步骤(8):根据图Tkeep计算所有生物目标的共同外接矩形,得到包含所有轮廓的最小外接矩形的信息,将该最小外接矩形的信息作为生物样本的位置信息。
2.如权利要求1所述的一种基于差分度量的浅色生物样本检测方法,其特征在于步骤(8)中生物样本具有N个不同位置的目标区域,N≥0,最小外接矩形包含N个生物目标的外轮廓,最小外接矩形的信息包含:1)最小外接矩形中左上角端点的纵坐标i0;2)最小外接矩形中左上角端点的横坐标j0;3)最小外接矩形的高度h0;4)最小外接矩形的宽度w0。 说明书 : 一种基于差分度量的浅色生物样本的检测方法技术领域[0001] 本发明涉及一种生物样本的检测方法,尤其是涉及一种基于差分度量的浅色生物样本的检测方法。背景技术[0002] 随着自动化水平的提升,生物医学领域涌现了一批基于电动载物台的自动显微镜采集设备,其搭载了一套自动生物样本采集系统。该类系统能自动判别生物样本中有效的采图区域,去除冗余区域,进而提高采集效率。[0003] 通常,目标检测技术主要分为传统技术和深度学习算法两个分支。基于传统方法的目标检测技术主要通过人为设置形态学的特征实现目标检测,它对显卡资源要求较低,在设备成本、开发周期和数据样本量方面都具有优势,但检测鲁棒性受限;而基于深度学习的目标检测技术极大地拓展了复杂环境下的目标检测适用范围,但设备成本、数据样本量和训练迭代时间等均为自身的限制因素。[0004] 在实际的工作环境中,照明条件和生物样本颜色都会影响目标检测效果。偏暗的照明环境,容易引起背景噪声;在偏暗的照明条件下,相比深色的生物样本,浅色的生物样本更容易淹没在背景环境中,难以清晰地分辨出目标轮廓。而使用传统目标检测技术,组合运用常规滤波方法、直方图均衡、分水岭算法均无法有效地提取出低照度条件下浅色生物样本的目标轮廓。发明内容[0005] 本发明所要解决的技术问题是提供一种基于差分度量的浅色生物样本的检测方法,能够解决无独立显卡、低照度和浅色样本条件下,因淹没于背景环境导致生物样本轮廓不清晰的问题。[0006] 本发明实现以上技术目标所采用的方案为:一种基于差分度量的浅色生物样本检测方法,包含以下步骤:[0007] 步骤(1):以白色光源做背光,通过架设在光学显微镜物镜旁的工业相机采集无生物样本的背景图像,记为图A;[0008] 步骤(2):从图A中自动检测出感兴趣区域,记为图BROI,并保存感兴趣区域图BROI的位置参数;[0009] 步骤(3):先将生物样本放置于透明的载玻片上,再由电动载物台的上平台将载玻片运送到工业相机下的拍摄区域,采集生物样本的图片;[0010] 步骤(4):通过步骤(2)中保存的感兴趣区域的位置信息获取生物样本图片的感兴趣区域图像,记为图B1;[0011] 步骤(5):直接调用OpenCV(OpenSourceComputerVisionLibrary,开源计算机视觉库,官网“https://docs.opencv.org/3.4.17/d1/dfb/intro.html”)自带的滤波函数处理图B1,得到滤波后的图像,记为图Bfilter;[0012] 步骤(6):先调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff,再区分存在生物样本的目标区域和不包含生物样本的其他区域,经过度量处理生成仅剩生物样本的灰度图像,记为图D;最后,调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,得到增强连通性的灰度图像,记为图DClose;[0013] 步骤(7):去除图DClose中的干扰对象,得到去除干扰后的灰度图像,记为图Tkeep;[0014] 步骤(8):根据图Tkeep计算所有生物目标的共同外接矩形,得到包含所有轮廓的最小外接矩形的信息,将该最小外接矩形的信息作为生物样本的位置信息。[0015] 步骤(8)中生物样本具有N个不同位置的目标区域,N≥0,最小外接矩形包含N个生物目标的外轮廓,最小外接矩形的信息包含:1)最小外接矩形中左上角端点的纵坐标i0;2)最小外接矩形中左上角端点的横坐标j0;3)最小外接矩形的高度h0;4)最小外接矩形的宽度w0。[0016] 步骤(2)具体步骤如下:[0017] 步骤(2?1):直接调用OpenCV的threshold函数处理图A,得到阈值化后的图像,记为图Ath;[0018] 步骤(2?2):沿着图Ath的水平中线从左侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为0,右侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的左侧边线的中心点,记为(ileft,jleft);[0019] 步骤(2?3):沿着图Ath的水平中线从右侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为255,右侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的右侧边线的中心点,记为(iright,jright);[0020] 步骤(2?4):沿着图Ath的垂直中线从上侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为0,下侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的上侧边线的中心点,记为(itop,jtop);[0021] 步骤(2?5):沿着图Ath的垂直中线从下侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为255,下侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的下侧边线的中心点,记为(ibottom,jbottom);[0022] 步骤(2?6):计算感兴趣区域的起始坐标端点、高度和宽度,分别记为(iROI,jROI)、hROI、wROI,公式如下:[0023][0024] 上式中,iROI、jROI分别表示的感兴趣区域中起始坐标点的纵坐标和横坐标;hROI、wROI分别表示的感兴趣区域中的高度和宽度;Vborder表示边距,取值为50像素;[0025] 步骤(2?7):通过位置信息(iROI,jROI)、hROI、wROI,从图Ath中提取出感兴趣区域,记为图BROI。[0026] 步骤(5)具体步骤如下:[0027] 步骤(5?1):调用OpenCV的GaussianBlur函数处理图B1,得到高斯滤波后的滤波图像,记为图BGaussian,在GassianBlur函数中,卷积核的尺寸取为5像素×5像素;[0028] 步骤(5?2):调用OpenCV的fastNlMeansDenoising函数处理图BGaussian,得到非局部平均处理后的滤波图像,记为图Bfilter,在fastNlMeansDenoising函数中,参数取值h=3,templateWindowSize=9,searchWindowSize=27。[0029] 步骤(6)的具体步骤如下:[0030] 步骤(6?1):调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff;[0031] 步骤(6?2):调用OpenCV的mean函数获取图Cdiff的统计平均值,记为thavg;[0032] 步骤(6?3):使用thavg对图Cdiff做阈值化处理,获得新的灰度图,记为图Cavg,公式如下:[0033][0034] 上式中,Cavg为阈值化处理后的灰度图,Cdiff为差分灰度图,thavg为判断阈值,Cdiff(ik,jk)代表图Cdiff中纵坐标值为ik、横坐标值为jk的像素点的灰度值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cdiff的像素点总数目;[0035] 步骤(6?4):创建一个与图Cavg相同大小的度量矩阵,记为矩阵Hcount,遍历统计图Cavg中每个像素点附近的有效像素点数量,并依次对应地赋值到矩阵Hcount中,公式如下:[0036] Hcount(ik,jk)=measure(Cavg(ik,jk))[0037] 上式中,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵数值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;measure(·)代表度量方法,逐像素地遍历图Cavg中以坐标(ik,jk)为中心的11像素×11像素范围内的非0值像素点个数,记为n,并令Hcount(ik,jk)=n,如果遍历的像素点超出图Cavg的边界,忽略超出的像素点;[0038] 步骤(6?5):先统计求和矩阵Hcount中所有数值,记为Vsum,公式如下:[0039][0040] 上式中,Vsum为矩阵Hcount的统计求和结果,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵点数值,其中,k=0,1,2,…,N?1,N为矩阵Hcount的矩阵点总数;[0041] 再统计求和图Cavg中非零像素点个数,记为Vnone?zero,公式如下:[0042] 其中[0043] 上式中,Vnone?zero为图Cavg中的非零像素点个数;αk代表与图Cavg中纵坐标值为ik、横坐标值为jk的像素点相关的系数,如果像素点(ik,jk)的取值Cavg(ik,jk)=255,那么αk=1;如果像素点(ik,jk)的取值Cavg(ik,jk)=0,那么αk=0,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;[0044] 最后,统计平均矩阵Hcount,其结果记为thHavg,公式如下:[0045][0046] 上式中,thHavg为矩阵Hcount的统计平均值,Vsum为矩阵Hcount的统计求和值,Vnone?zero是为图Cavg中非零像素点个数的统计求和值;[0047] 步骤(6?6):使用thHavg对矩阵Hcount做阈值化处理,获得新的灰度图,记为图D,公式如下:[0048][0049] 上式中,D为阈值化处理后的灰度图,Hcount为度量矩阵,thHavg为判断阈值,Hcount(ik,jk)代表矩阵中Hcount行为ik、列为jk的矩阵点数值,D(ik,jk)代表图D中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图D的像素点总数目;[0050] 步骤(6?7):调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,在morphologyEx函数中,卷积核的尺寸取为3像素×3像素,得到增强连通性的灰度图像,记为图DClose。[0051] 步骤(7)具体方法如下:[0052] 步骤(7?1):先调用OpenCV的findContours函数中的RETR_EXTRNAL方法获取图Dclose中所有像素团轮廓的轮廓集,记为T1,再调用OpenCV的boundingRect函数遍历处理轮廓集T1,得到对应的外接矩形轮廓集,记为T2,计算外接矩形轮廓集T2的外接矩形面积集,记为S,取Sk=hk×wk,其中,Sk、hk、wk依次为外接矩形轮廓集T2中第k个外接矩形轮廓的面积值、高度和宽度,k=0,1,2,…,N?1,N为外接矩形轮廓集T2的总轮廓数;[0053] 步骤(7?2):设定一个外接矩形面积阈值用来判断某个子轮廓是否为细小杂物的干扰目标,记为tharea,取值为1000像素,如果一个子轮廓的外接矩形面积大于tharea,则判定为有效的生物样本目标;反之则判定该子轮廓对应的区域属于细小杂物的干扰目标,删除该子轮廓对应的区域;[0054] 步骤(7?3):设定一个全局面积比例阈值来判断某个子轮廓是否为干扰背景,记为thrate1,取值为0.5,计算外接矩形轮廓集T2中每个外接矩形子轮廓对应的矩形面积与图BROI的矩形面积之比,公式如下:[0055][0056] 上式中,Vrate1?k为外接矩形轮廓集T2中第k个外接矩形子轮廓的全局面积比,Sk为外接矩形轮廓集T2中第k个外接矩形子轮廓的矩形面积,SROI为图BROI的矩形面积,其中,k=0,1,2,…,N?1,如果Vrate1?k小于thrate1,则判定外接矩形轮廓集T2中第k个外接矩形子轮廓所对应的生物目标为有效的生物样本目标;反之判定该子轮廓对应的区域属于背景干扰目标,删除该子轮廓对应的区域;[0057] 步骤(7?4):设定一个外接矩形的长宽比例阈值用来判断某个子轮廓是否为细长形的丝印干扰目标,记为thrate2,取值为0.3,比较外接矩形的长度和宽度,选择较小的数值作为宽度a,选择大数值作为长度b,如果外接矩形轮廓集T2中某个外接矩形子轮廓的长宽比a/b大于thrate2,则判定为有效的生物样本目标;反之判定为该子轮廓对应的区域属于丝印干扰目标,删除该子轮廓对应的区域;[0058] 步骤(7?5):创建一组存储临时处理结果的图集,记为图集E,图集E包含与轮廓集T1相同数量的N个子图,记为子图Ek,所有子图Ek的像素点均取值为0;[0059] 步骤(7?6):选取轮廓集T1的子轮廓,记为子轮廓T1?k,其中,k=0,1,2,…,N?1,调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,表示使用255灰度值填充轮廓T1?k所包围的区域,将处理结果保存到子图Ek;[0060] 步骤(7?7):设置一个像素数量阈值,记为thoutside,取值thoutside=5像素,统计图E1中最外层边框像素值为255的像素点数量,记为Voutside?k,如果Voutside?k[0061] 步骤(7?8):进一步判断子轮廓T1?k的有效性,判断式如下:[0062][0063] 上式中,Sk为第k个子轮廓的外接矩形面积,SROI为感兴趣区域的面积,SROI=BROI的高度×BROI的宽度,hSk、wSk分别为第k个子轮廓的外接矩形高度和宽度,min(hSk,wSk)表示选取hSk和wSk之间最小值,max(hSk,wSk)表示选取hSk和wSk之间最大值;tharea为设定的外接矩形面积阈值,取值为1000像素;thrate1为全局面积比例阈值,取值为0.5;thrate2为外接矩形的长宽比例阈值,取值为0.3;[0064] 如果同时满足上式条件,则调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,且k[0065] 步骤(7?9):生成一幅与图Dclose相同大小的灰度图,记为图Tkeep,图Tkeep的所有像素点取值为0,遍历图集E中所有的子图Ek,逐一将子图Ek赋值到Tkeep中,最终得到去除干扰的灰度图Tkeep。[0066] 与现有技术相比,本发明的优点在于通过先检测出生物样本的有效矩形区域,再遍历采集该区域,缩短采样时间,提高运行效率,并充分利用OpenCV这一通用、开源的计算机视觉库拥有丰富的数字图像处理函数方法这一特点对图像进行滤波、差分度量、闭操作和去干扰处理,能满足无显卡配置条件下良好地抑制背景噪声,且快速、稳定地分割出淹没于背景的浅色样本区域,并适用于正常颜色和深色生物样本,为后续的自动样本采集做好准备,提高自动采集效率。附图说明[0067] 图1为本发明方法使用的自动显微镜采集设备硬件平台的结构示意图;图中对应的标号为:1显微镜相机机位,2生物样本,3电动载物台,4显微镜支架,5工业相机数据线,6工业相机,7工业相机拍摄区域,8上平台,9中平台,10下平台;[0068] 图2为本发明的基于差分度量的浅色细胞样本检测方法流程图;[0069] 图3为本发明的差分度量图像增强方法流程图;[0070] 图4为本发明实施例的方法用于一组生物样本实例检测的图片。具体实施方式[0071] 以下结合附图实施例对本发明作进一步详细描述。[0072] 为了使领域内的技术人员更好地理解本发明,下面结合实施例和附图进一步介绍本发明的技术方案。[0073] 实施例:[0074] 如图1所示,是本发明的自动显微镜采集设备硬件平台,它包括显微镜相机机位1、电动载物台3、显微镜支架4、工业相机数据线5、工业相机6、工业相机拍摄区域7。[0075] 电动载物台3包括上平台8、中平台9和下平台10三个部件,共同构成一个平面运动机构,它能搭载生物样本2沿着水平的X轴和Y轴两个方向做平移运动。生物样本2被放置在电动载物台3的上平台8上。工业相机拍摄区域7设置在中平台9上,嵌入了一块矩形的白色背光源。当电动载物台3中的上平台8载着生物样本2移动到工业相机拍摄区域7后,被遮挡的背光源将会显露出来,该光源相对生物样本2呈背光形式,协助工业相机6采集生物样本2的宏观图片。[0076] 整体系统先采集生物样本2的宏观图片,然后检测出生物样本2的有效矩形区域,最后由电动载物平台3运载生物样本2到显微镜相机机位1下方的光学物镜视野范围内连续自动地采集有效矩形区域内的微观图片,从而提高生物样本的采集效率,减轻图像信息的冗余度。在检测生物样本有效矩形区域的功能中,本发明为了解决无独立显卡、低照度、浅色样本条件下,生物样本淹没于背景环境导致目标轮廓不清晰的目标检测问题,采用了一种基于差分度量的浅色生物样本检测方法。[0077] 图2是本发明的基于差分度量的浅色生物样本检测方法的流程图,详细介绍了基于差分度量的浅色生物样本检测方法,包含以下步骤:[0078] 步骤(1):以白色光源做背光,通过架设在光学显微镜物镜旁的工业相机采集无生物样本的背景图像,记为图A;[0079] 步骤(2):从图A中自动检测出感兴趣区域,记为图BROI,并保存感兴趣区域图BROI的位置参数,具体步骤如下:[0080] 步骤(2?1):直接调用OpenCV的threshold函数处理图A,得到阈值化后的图像,记为图Ath;[0081] 步骤(2?2):沿着图Ath的水平中线从左侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为0,右侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的左侧边线的中心点,记为(ileft,jleft);[0082] 步骤(2?3):沿着图Ath的水平中线从右侧向图A的中心点扫描,不断比较左右相邻两个像素点的灰度值,当左侧的像素点灰度值为255,右侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的右侧边线的中心点,记为(iright,jright);[0083] 步骤(2?4):沿着图Ath的垂直中线从上侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为0,下侧的像素灰度点为255时,则停止扫描,得到感兴趣区域的上侧边线的中心点,记为(itop,jtop);[0084] 步骤(2?5):沿着图Ath的垂直中线从下侧向图A的中心点扫描,不断比较上下相邻两个像素点的灰度值,当上侧的像素点灰度值为255,下侧的像素灰度点为0时,则停止扫描,得到感兴趣区域的下侧边线的中心点,记为(ibottom,jbottom);[0085] 步骤(2?6):计算感兴趣区域的起始坐标端点、高度和宽度,分别记为(iROI,jROI)、hROI、wROI,公式如下:[0086][0087] 上式中,iROI、jROI分别表示的感兴趣区域中起始坐标点的纵坐标和横坐标;hROI、wROI分别表示的感兴趣区域中的高度和宽度;Vborder表示边距,取值为50像素;[0088] 步骤(2?7):通过位置信息(iROI,jROI)、hROI、wROI,从图Ath中提取出感兴趣区域,记为图BROI;[0089] 步骤(3):先将生物样本放置于透明的载玻片上,再由电动载物台的上平台将载玻片运送到工业相机下的拍摄区域,采集生物样本的图片;[0090] 步骤(4):通过步骤(2)中保存的感兴趣区域的位置信息获取生物样本图片的感兴趣区域图像,记为图B1;[0091] 步骤(5):直接调用OpenCV的滤波函数处理图B1,得到滤波后的图像,记为图Bfilter,具体步骤如下:[0092] 步骤(5?1):调用OpenCV的GaussianBlur函数处理图B1,得到高斯滤波后的滤波图像,记为图BGaussian,在GassianBlur函数中,卷积核的尺寸取为5像素×5像素;[0093] 步骤(5?2):调用OpenCV的fastNlMeansDenoising函数处理图BGaussian,得到非局部平均处理后的滤波图像,记为图Bfilter,在fastNlMeansDenoising函数中,参数取值h=3,templateWindowSize=9,searchWindowSize=27;[0094] 步骤(6):先调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff,再区分存在生物样本的目标区域和不包含生物样本的其他区域,经过度量处理生成仅剩生物样本的灰度图像,记为图D;最后,调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,得到增强连通性的灰度图像,记为图DClose,如图3流程图所示,具体步骤如下:[0095] 步骤(6?1):调用OpenCV的absdiff函数对步骤(4)的图B1和步骤(5)的图Bfilter做差分处理,得到差分灰度图,记为图Cdiff;[0096] 步骤(6?2):调用OpenCV的mean函数获取图Cdiff的统计平均值,记为thavg;[0097] 步骤(6?3):使用thavg对图Cdiff做阈值化处理,获得新的灰度图,记为图Cavg,公式如下:[0098][0099] 上式中,Cavg为阈值化处理后的灰度图,Cdiff为差分灰度图,thavg为判断阈值,Cdiff(ik,jk)代表图Cdiff中纵坐标值为ik、横坐标值为jk的像素点的灰度值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cdiff的像素点总数目;[0100] 步骤(6?4):创建一个与图Cavg相同大小的度量矩阵,记为矩阵Hcount,遍历统计图Cavg中每个像素点附近的有效像素点数量,并依次对应地赋值到矩阵Hcount中,公式如下:[0101] Hcount(ik,jk)=measure(Cavg(ik,jk))[0102] 上式中,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵数值,Cavg(ik,jk)代表图Cavg中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;measure(·)代表度量方法,逐像素地遍历图Cavg中以坐标(ik,jk)为中心的11像素×11像素范围内的非0值像素点个数,记为n,并令Hcount(ik,jk)=n,如果遍历的像素点超出图Cavg的边界,忽略超出的像素点;[0103] 步骤(6?5):先统计求和矩阵Hcount中所有数值,记为Vsum,公式如下:[0104][0105] 上式中,Vsum为矩阵Hcount的统计求和结果,Hcount(ik,jk)代表矩阵Hcount中行为ik、列为jk的矩阵点数值,其中,k=0,1,2,…,N?1,N为矩阵Hcount的矩阵点总数;[0106] 再统计求和图Cavg中非零像素点个数,记为Vnone?zero,公式如下:[0107] 其中[0108] 上式中,Vnone?zero为图Cavg中的非零像素点个数;αk代表与图Cavg中纵坐标值为ik、横坐标值为jk的像素点相关的系数,如果像素点(ik,jk)的取值Cavg(ik,jk)=255,那么αk=1;如果像素点(ik,jk)的取值Cavg(ik,jk)=0,那么αk=0,k=0,1,2,…,N?1,N为图Cavg的像素点总数目;[0109] 最后,统计平均矩阵Hcount,其结果记为thHavg,公式如下:[0110][0111] 上式中,thHavg为矩阵Hcount的统计平均值,Vsum为矩阵Hcount的统计求和值,Vnone?zero是为图Cavg中非零像素点个数的统计求和值;[0112] 步骤(6?6):使用thHavg对矩阵Hcount做阈值化处理,获得新的灰度图,记为图D,公式如下:[0113][0114] 上式中,D为阈值化处理后的灰度图,Hcount为度量矩阵,thHavg为判断阈值,Hcount(ik,jk)代表矩阵中Hcount行为ik、列为jk的矩阵点数值,D(ik,jk)代表图D中纵坐标值为ik、横坐标值为jk的像素点的灰度值,k=0,1,2,…,N?1,N为图D的像素点总数目;[0115] 步骤(6?7):调用OpenCV的morphologyEx函数中的MORPH_CLOSE方法对图D做闭操作处理,在morphologyEx函数中,卷积核的尺寸取为3像素×3像素,得到增强连通性的灰度图像,记为图DClose;[0116] 步骤(7):去除图DClose中的干扰对象,得到去除干扰后的灰度图像,记为图Tkeep,具体方法如下:[0117] 步骤(7?1):先调用OpenCV的findContours函数中的RETR_EXTRNAL方法获取图Dclose中所有像素团轮廓的轮廓集,记为T1,再调用OpenCV的boundingRect函数遍历处理轮廓集T1,得到对应的外接矩形轮廓集,记为T2,计算外接矩形轮廓集T2的外接矩形面积集,记为S,取Sk=hk×wk,其中,Sk、hk、wk依次为外接矩形轮廓集T2中第k个外接矩形轮廓的面积值、高度和宽度,k=0,1,2,…,N?1,N为外接矩形轮廓集T2的总轮廓数;[0118] 步骤(7?2):设定一个外接矩形面积阈值用来判断某个子轮廓是否为细小杂物的干扰目标,记为tharea,取值为1000像素,如果一个子轮廓的外接矩形面积大于tharea,则判定为有效的生物样本目标;反之则判定该子轮廓对应的区域属于细小杂物的干扰目标,删除该子轮廓对应的区域;[0119] 步骤(7?3):设定一个全局面积比例阈值来判断某个子轮廓是否为干扰背景,记为thrate1,取值为0.5,计算外接矩形轮廓集T2中每个外接矩形子轮廓对应的矩形面积与图BROI的矩形面积之比,公式如下:[0120][0121] 上式中,Vrate1?k为外接矩形轮廓集T2中第k个外接矩形子轮廓的全局面积比,Sk为外接矩形轮廓集T2中第k个外接矩形子轮廓的矩形面积,SROI为图BROI的矩形面积,其中,k=0,1,2,…,N?1,如果Vrate1?k小于thrate1,则判定外接矩形轮廓集T2中第k个外接矩形子轮廓所对应的生物目标为有效的生物样本目标;反之判定该子轮廓对应的区域属于背景干扰目标,删除该子轮廓对应的区域;[0122] 步骤(7?4):设定一个外接矩形的长宽比例阈值用来判断某个子轮廓是否为细长形的丝印干扰目标,记为thrate2,取值为0.3,比较外接矩形的长度和宽度,选择较小的数值作为宽度a,选择大数值作为长度b,如果外接矩形轮廓集T2中某个外接矩形子轮廓的长宽比a/b大于thrate2,则判定为有效的生物样本目标;反之判定为该子轮廓对应的区域属于丝印干扰目标,删除该子轮廓对应的区域;[0123] 步骤(7?5):创建一组存储临时处理结果的图集,记为图集E,图集E包含与轮廓集T1相同数量的N个子图,记为子图Ek,所有子图Ek的像素点均取值为0;[0124] 步骤(7?6):选取轮廓集T1的子轮廓,记为子轮廓T1?k,其中,k=0,1,2,…,N?1,调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,表示使用255灰度值填充轮廓T1?k所包围的区域,将处理结果保存到子图Ek;[0125] 步骤(7?7):设置一个像素数量阈值,记为thoutside,取值thoutside=5像素,统计图E1中最外层边框像素值为255的像素点数量,记为Voutside?k,如果Voutside?k[0126] 步骤(7?8):进一步判断子轮廓T1?k的有效性,判断式如下:[0127][0128] 上式中,Sk为第k个子轮廓的外接矩形面积,SROI为感兴趣区域的面积,SROI=BROI的高度×BROI的宽度,hSk、wSk分别为第k个子轮廓的外接矩形高度和宽度,min(hSk,wSk)表示选取hSk和wSk之间最小值,max(hSk,wSk)表示选取hSk和wSk之间最大值;tharea为设定的外接矩形面积阈值,取值为1000像素;thrate1为全局面积比例阈值,取值为0.5;thrate2为外接矩形的长宽比例阈值,取值为0.3;[0129] 如果同时满足上式条件,则调用OpenCV的drawContours函数处理子轮廓T1?k,参数取值color=Scalar(255,255,255),thickness=?1,且k[0130] 步骤(7?9):生成一幅与图Dclose相同大小的灰度图,记为图Tkeep,图Tkeep的所有像素点取值为0,遍历图集E中所有的子图Ek,逐一将子图Ek赋值到Tkeep中,最终得到去除干扰的灰度图Tkeep;[0131] 步骤(8):根据图Tkeep计算所有生物目标的共同外接矩形,得到包含所有轮廓的最小外接矩形的信息,本实施例中生物样本具有N个不同位置的目标区域,N≥0,最小外接矩形包含N个生物目标的外轮廓,最小外接矩形的信息包含:1)最小外接矩形中左上角端点的纵坐标i0;2)最小外接矩形中左上角端点的横坐标j0;3)最小外接矩形的高度h0;4)最小外接矩形的宽度w0,将该最小外接矩形的信息作为生物样本的位置信息。[0132] 图4是本发明实施例检测的生物样本的图片。该图片中的第一行是三组待检测生物样本的原图,第二行是生物样本的检测结果图片。左侧子图是单目标下的浅色生物样本,中间子图是单目标下的深色生物样本,右侧子图是多目标下的正常颜色生物样本。第三行是人工观察标注的图片。本次检测实例中,从生物目标的颜色深浅、数量两个维度测试了本发明方法的目标检测效果,从图4显示的结果可以看出,本发明的生物目标检测结果与人工观察标注的生物目标结果基本一致,无遗漏、无明显偏移的问题,达成了本发明的设计目的。[0133] 对比已有的目标分割技术,它能满足无显卡配置条件下良好地抑制背景噪声,且快速、稳定地分割出淹没于背景的浅色样本区域,并适用于正常颜色和深色生物样本,为后续的自动样本采集做好准备,提高自动采集效率。
专利地区:浙江
专利申请日期:2022-03-28
专利公开日期:2024-11-29
专利公告号:CN114723695B