基于计算机视觉的液滴图像拼接与识别算法研究
2021-11-14张嘉文董晓斌苗桂君邱宪波
张嘉文 董晓斌 苗桂君 邱宪波
(北京化工大学信息科学与技术学院,北京 100029)
引言
新型冠状病毒肺炎(SARS-CoV-2)于2019年12月底爆发,严重危害人类公共卫生安全。由于其超强的传染性,快速准确地诊断和控制显得至关重要。核酸检测作为重要的诊断手段,为SARS-CoV-2的鉴定提供了精准迅速的检测方法。采取高灵敏的核酸检测方法,对不同程度感染的患者进行个体化治疗、疗效监测等,具有非常重要的临床意义。
聚合酶链式反应(polymerase chain reaction,PCR)技术作为科研和临床中广为使用的一种核酸检测方法,至今已经更新到第三代技术。其中,第一代是传统的终点PCR技术,可实现核酸定性检测;第二代是实时定量荧光PCR技术(real-time quantitative PCR,qPCR),可实现核酸的相对定量检测;第三代为数字PCR技术(digital PCR,dPCR),可实现核酸的绝对定量检测。微液滴作为生化反应的微反应器,具备高通量、低消耗、无交叉污染、保证反应均匀性等优点,液滴微流控技术被广泛应用于单细胞研究、肿瘤早期诊断、基因测序等生物医学研究领域[1]。液滴数字PCR(droplet digital PCR,ddPCR)作为一种高通量、低成本的数字PCR技术,由于其对于低丰度目标的检测具有较高的灵敏度和特异性,在核酸分析及肿瘤疾病诊断方面具有很大应用潜力[2]。例如,ddPCR在新冠病毒SARS-Cov-2的检测中,将准确度从RT-qPCR的28.2%提高到87.4%,非常适合在隔离观察期的低病毒载量患者的检测[3]。
液滴数字PCR技术将包裹核酸的液滴作为反应单元,通过对液滴的计数统计来进行样品的判断。但在实际应用中,由于液滴体积小、数量庞大、排列密集,靠传统人工计数方式很难准确识别。目前,在液滴识别与检测领域,已经发展出多种基于微流控芯片的液滴识别与计数技术,主要分为流式检测法和荧光图像检测法两种。对于流式检测法,主要通过光电晶体管、光电二极管或光电倍增管(PMT)等传感器进行探测,虽然灵敏度高,但是顺序逐一检测每个微滴的方式,吞吐量低且设备成本高[4];对于荧光图像检测法,通常通过CMOS传感器或CCD的扫描设备进行拍照和图像处理分析来实现检测[5]。与流式检测法相比,荧光图像检测法可以一次扫描多个液滴,大大缩短检测时间。但是,受图像传感器的频率、曝光性能等的限制,对于较大的平铺液滴芯片无法一次实现整个芯片的扫描拍照,需要针对不同部位进行多次拍照;液滴内部与背景反差小,造成荧光图像均匀性差,或者存在噪声的情况,增加了液滴检测与识别的难度。而且,图像处理算法的速度和效率决定了实现PCR定量所需的总时间。因此,围绕液滴微流控技术的高灵敏检测应用,发展与液滴微流控芯片相匹配的高通量、高效的液滴图像检测方法,进一步提高液滴微流控技术的检测灵敏度是一个重要的研究方向。
针对上述问题,本研究提出了一种基于计算机视觉的低成本、高精度且简单快速的方法,实现液滴的准确识别与计数;通过设计图像拼接算法,对多次扫描芯片获得的荧光图像进行拼接,再对拼接后的液滴图像进行检测和计数。
1 方法
本实验采用实验显微镜,对使用PDMS制作的液滴生成芯片进行扫描拍摄获取,其中液滴由通过十字交叉通道的去离子水和矿物油+表面活性剂生成。用于拼接的明场液滴图像由显微镜对液滴的收集腔按照3行2列的顺序进行拍摄,并且保证图像之间有一定的重合部分。荧光液滴图像采用文献[6]中的荧光液滴图像进行试验。液滴图像检测算法主要分为图像拼接和图像识别两部分,算法流程如图1所示。
图1 算法流程Fig.1 Flow chart of calculation
1.1 图像拼接算法
拼接算法主要包括图像配准和图像拼接两个步骤。由于实验环境下光源固定,所以在拍照过程中芯片明暗不会改变,经试验不需要图像融合就可以得到较好的拼接结果。
在图像配准算法中,首先进行特征点的提取。由于液滴图像检测对图像的细节要求较高,所以在图像拼接步骤中要尽可能保留图像的特征,选择高精度的特征提取方法,故本研究选择对特征点描述更加精准的SIFT(scale-invariant feature transform)[7]进行提取;该局部特征描述子可以很好地应对图像尺寸变化,具有尺度不变性。其次,进行特征点筛选。对相邻图像的特征点进行匹配,依据特征点的特征描述子对相似特征点进行匹配;然后对特征点进行初步筛选[8],先根据特征描述子的欧氏距离进行筛选,距离越小说明两个特征点越相似,再对筛选后的特征点进行二次筛选[9],得到最终的匹配特征点。再次,根据匹配特征点计算出图像的变换矩阵,通过原图像的像素矩阵与变换矩阵相乘,可将两张图像变换至同一坐标系中,其公式如下:
(1)
(2)
式中,x、y分别为变换后的坐标,u、v分别为变换前的坐标。
最后,通过变换矩阵,将两张图像变换到同一坐标系中对图像进行拼接。
1.2 液滴图像识别算法
针对拼接后的图像进行液滴识别,根据不同的识别对象设计了不同的识别算法,主要分为明场液滴识别与荧光液滴识别两种模式。
通过观察明场液滴图像,可以发现液滴轮廓呈圆环状,分为内轮廓和外轮廓,内轮廓相互独立互不粘连。基于上述图像特征,在对图像轮廓进行检测后,通过面积以及角点检测进行轮廓筛选,保留液滴内轮廓后进行轮廓计数,完成液滴检测。实验证明,明场液滴检测算法简单高效,对于明场液滴图像具有较高的检测精度。该算法主要包含图像预处理、轮廓识别和轮廓筛选三大步骤。
第一步,对图像进行预处理。这部分主要包括灰度图像转化、直方图均衡化以及自适应阈值分割图像二值化操作,可以有效处理图像明暗分布不均的问题[10]。然后对图像进行高斯模糊。一方面是可以消除噪声,减少轮廓检测算法的工作量,另一方面是可以消除阈值分割后产生的轮廓毛刺,并且不会影响角点特征,能减小角点检测的误差,为之后的角点检测做铺垫。
第二步,进行轮廓识别。对二值图像进行边缘增强[11],使轮廓与背景对比更加明显,再使用Canny算法进行轮廓检测,对液滴进行轮廓识别之后液滴出现的内圈和外圈轮廓、内圈轮廓互不相连,可以筛选出内圈轮廓完成检测。
第三步进行轮廓筛选。首先对轮廓进行面积筛选,可以排除掉过大或者过小的轮廓,然后对轮廓进行角点检测。角点检测的原理是:遍历轮廓线上的点,取两个距离该点Pi固定距离的轮廓点Pi-k、Pi+k,在一个很小的区域内,可以用如下公式近似表示支撑角的大小[12],将支撑角度小于一定阈值的全部视为角点,有
(3)
统计轮廓线上的角点数量,将角点数量大于一定阈值的轮廓全部排除,就得到最终的检测结果。
针对荧光液滴图像识别时,由于荧光液滴内部与背景对比明显、背景颜色单一,所以便于进行图像分割[13]。对图像进行闭运算,可以很好地分离粘连的液滴,所以在荧光液滴识别算法图像预处理环节增加了对图像进行形态学变换,从而实现粘连液滴的有效分离。然后,再对轮廓进行精确计数。
为了验证本算法对液滴识别的准确率,将人工手动计数所得的结果作为液滴的精确数目进行对比分析。
2 结果
2.1 实验图像拼接结果
本实验选择排列为3行2列的6张图像进行拼接,待拼接的图像见图2(a),拼接的结果见图2(b)。
图2 图像拼接。(a)待拼接图片;(b)拼接后图片Fig.2 Image stitching. (a) Images to be stitched;(b)Images after splicing
2.2 阈值分割邻域大小
阈值分割所用的邻域大小经过多次实验来确定。在同一实验环境下,选择不同邻域大小的液滴识别结果,如图3所示。实验表明,邻域选择41×41~51×51的检测结果最好。最终确定对该图像选择51×51的邻域进行计算,即取该点周围的2 600个像素点的平均值作为阈值(T),可表示为
图3 自适应阈值分割邻域大小实验结果Fig.3 Results of neighborhood size experimental
(4)
2.3 角点阈值实验结果
如果角度阈值选择过大,则无法检测出轮廓线上的角点;而阈值选择过小,则可能将液滴圆弧轮廓上的点误检测为角点。图4展示了不同角度阈值情况下轮廓检测结果及液滴识别的实验结果。综合实验结果,本实验采用0.22作为角度阈值。
图4 角点检测角度阈值实验结果Fig.4 Corner detection angle threshold experimental results
2.4 液滴识别算法结果
图5展示了图像处理过程中关键步骤的效果,包括二值化、轮廓识别、轮廓筛选。从(d)可以看出,对非荧光液滴的内轮廓进行检测,能有效避免液滴粘连导致的错误识别问题,取得较好的检测结果。
图5 图像处理过程的各步骤。(a)二值图片;(b)轮廓识别;(c)面积筛选去掉较大轮廓并进行角点检测;(d)角点筛选去掉不规则形状Fig.5 Steps of image processing. (a) Binary image;(b) Contour recognition;(c) The larger contour is removed by area filtering and corner detection is carried out;(d) Removing irregular shapes by corner detection
荧光液滴检测实验结果如图6所示。其中,(a)为原始荧光液滴图像,(b)为轮廓识别后的效果,可以看出检测效果较好。
图6 荧光液滴图像的检测。(a)荧光液滴图像;(b)算法对液滴进行识别后Fig.6 Detection of fluorescent droplet image. (a) Fluorescence droplet image;(b) After droplet identification
2.5 算法识别准确率验证
对于液滴大小均匀的5组明场液滴图像,算法识别的准确率可以达到99.2%以上,统计结果如图7(a)所示。相比明场液滴图像,荧光液滴图像轮廓清晰,与背景对比明显,便于进行图像识别,所以其识别准确率可接近100%,实验结果如图7(b) 所示。
图7 算法识别准确率验证。(a)明场液滴;(b)荧光液滴Fig.7 Algorithm accuracy verification. (a) Bright field droplet; (b) Fluorescent droplet
3 讨论
目前,在液滴图像识别的算法中,使用较为广泛的方法为基于分水岭算法的改良[14-16],本研究选择文献[14]中的算法进行对比。采用本算法、分水岭算法与人工计数法,通过6组实验,对明场液滴图像与荧光液滴图像的检测性能进行对比分析。
使用上述两种方法,实现明场液滴图像的检测,结果如图8(a)所示。实验表明,同一背景下两种算法在检测精度上差别不大,但在实验过程中,分水岭算法容易出现过度分割,导致误检现象的存在[17],尤其是出现液滴之间的间隙与液滴大小相近的情况,如图8(b)所示。由于液滴间隙会产生夹角,所以通过本算法中的角点检测,可以有效避免这种误检测的问题。
图8 两种液滴识别算法的对比分析。(a) 明场液滴检测对比; (b)分水岭算法检测Fig.8 Comparison and analysis of two droplet recognition algorithms. (a) Comparison of bright field droplet detection;(b) Detection of watershed algorithm
在算法复杂度方面,分水岭算法需要对每一个识别区域进行标记,还需要对标记点进行筛选,只留下液滴内部的标记点以及背景,并且标记越多算法耗时越久。而本算法利用液滴图像的特性,对液滴轮廓的内圆进行识别,不会产生轮廓粘连,省去了对轮廓进行区分的步骤,在不损失检测精度的情况下,实现了算法的简化。
荧光液滴相对于非荧光液滴来说识别难度降低,因为其背景对比度高、轮廓清晰,更容易计算边缘特征,完成图像分割,所以上述两种算法针对荧光液滴图像检测的成功率较高,3组实验的液滴识别率均达到100%。实验证明,本算法简单可靠,对于荧光液滴识别,可达到与分水岭算法相同的识别成功率。
4 结论
本研究以液滴数字PCR检测为背景,验证了算法从图像拼接到液滴检测的可行性,并且与分水岭算法的检测性能进行了对比分析。实验结果表明,所提的检测方法对荧光和非荧光液滴的识别率均达到99.2%以上。在算法复杂度方面,本研究从液滴的特性出发,省去了分水岭算法中的计算标记点等步骤,进一步简化了算法;利用角点检测,排除了与液滴大小相近的液滴间隙,实现了液滴的快速、高精度检测。实验证明,该算法节省人力资源,提高准确率,可以在液滴检测方面得到较好的应用。