基于Halcon 的胶囊药丸缺陷检测

2023-09-27 14:20汤济铭
电子制作 2023年17期
关键词:矩形框药丸算子

汤济铭

(西京学院 电子信息学院,陕西西安,710123)

0 引言

近年来,人民对药品的需求急剧增大,胶囊剂药是最常见的一种药物剂型。其具有便于携带和服用的特点。胶囊可以将药物很好地保护在胶囊内,避免药物受到外界污染和方便患者服用。胶囊剂药成品应保持外观整洁,无缺漏、明显的损伤、污染、变色等现象,并且要求胶囊剂大小、形状、颜色统一。胶囊剂成品检测是其生成过程中不可或缺的一步,通常由人工进行,然而人工具有成本高、效率低、无法满足大规模生产的缺点。无法满足人民对药品需求的急剧增大和应对人口老龄化的现状,给有限的医疗资源造成了不小的压力。

随着现代化科技的快速发展,人工智能的出现改变了人类的生产和生活方式。人工智能可以通过自动化和智能化技术,大幅降低了生产成本和提高了工作效率;可以通过处理大量数据并训练出精准的模型,来解决诸如图像、语音、自然语言等领域的复杂问题;可以为企业提供更准确、更快速、更智能的服务,从而创造出新的商业价值;还可以应用于医疗、教育、金融、交通等领域,为人们的生活带来极大便利和改善。人工智能已经成为新一代科技革命和产业变革的核心驱动力,是研究智能和认知机制的重要手段,对于推动人类科学、社会发展、世界经济的进步具有重要意义[1]。

1 机器视觉介绍

机器视觉技术是人工智能快速发展的分支之一。机器视觉利用机器代替人眼做一些复杂的技术,从客观的事物图像中提取出人类所需要信息,并对这些信息进行处理、分析、理解及反馈等类似于人脑的功能,如工业上的识别、定位、测量和检测等技术。机器视觉是一门由多门技术融合起来的综合技术,包括数字图像处理、机械工程、控制工程、光学、视觉、计算机软硬件等多门技术。一个典型的机器视觉系统包含照明、镜头、高速相机、图像采集卡、视觉处理机五大模块。其工作过程可概括为:光源、成像、图像捕捉、数模转换(A/D 转换)、图像处理与决策、控制系统等过程。在大批量重复性工业生产过程中,机器视觉系统可以显著提高工业生产效率和自动化程度,还可以替代人工去完成一些危险的工作或者人类视觉难以满足生产要求的工作[1]。

2 胶囊检测流程

本文通过机器视觉技术对胶囊剂药的图像进行Blob 分析,从而得到每一个胶囊剂的尺寸和颜色数据特征,将黄色胶囊药丸视为标准药丸,蓝色胶囊药丸视为坏药丸,通过各个胶囊的尺寸和颜色信息与标准的黄色胶囊药丸特征进行对比,判断其是否存在缺漏、明显的损伤、污染、变色等现象。以此促进生产效率和生产规模、降低生产成本,实现高质量生产。

利用机器视觉软件Halcon 对得到的胶囊剂图片进行数据分析,具体步骤如图2 所示。

■2.1 Blob 分析

Blob(Binary large object)分析用来将图像二值化,分割得到图像的前景区域,即图像中的具有相似颜色、纹理等特征所组成的一块连通区域。然后对该连通区域进行特征测量,计算出目标的数量、形状、面积、大小和方向[2]。Blob 分析的步骤主要分为获取图像、图像分割、特征提取三步。通常会运用到ROI(感兴趣区域)定位、图像预处理、图像分割、区域处理、特征提取、显示或输出等操作算子。

2.1.1 图像预处理

预处理工作是图像处理中的关键一步,其直接决定着图像处理的成功与否。预处理主要是为了消除图像中对结果无用的信息,保留及增强对结果有重要作用的信息。成功的预处理可以让后续的图像工作达到事半功倍的效果。关于预处理,本文将彩色图像分解成R、G、B 三通道图像,选取其中图像前景和背景颜色对比度最突出的通道作为处理图像,以便更方便地提取所需的关键信息。

实验中,发现蓝色通道图像的药丸区域与背景区域的像素对比度相较于红色、绿色通道更为明显,图像处理起来更直接、容易。因此本文采用蓝色通道图像进行后续的图像处理操作。

2.1.2 图像分割

关于图像分割部分,本文对胶囊图像进行阈值分割,以实现单独分割出胶囊区域的目的,减小操作的复杂度。阈值分割是一种基于区域的图像分割处理方法,原理是将原灰度图像中的像素点按照其对应灰度值的大小进行分类,对原灰度图像进行一个分割,分割后的结果对应着原图像中不同的现实景物。分割后的各个区域内部具有高相关性,不同区域之间具有低相关性。阈值分割将输入图像中满足分割条件的所有图像像素点都作为一个区域返回,如果传递了多个灰度值空间(MinGray和MaxGray的元组),则为每个区间返回一个单独的区域。

Halcon 中阈值分割的数学公式可表示为:

其中f(x,y)为坐标点(x,y)处的像素值,g(x,y)为阈值分割后图像点(x,y)处的像素值,MinGray、MaxGray分别为灰度值的下限、上限阈值。通过调试的方法,尝试不同的阈值以实现最佳的分割效果,达到令分割出来的胶囊区域具有清晰的边缘和连续性,并且能够准确地区分出胶囊区域与其他背景区域。

实验中,用threshold 算子对图像进行阈值分割,将药片所在位置与图像背景区域分割开,以缩小待处理区域。然后用connection 算子将阈值分割的区域打散,由于药片所在区域必然是打散后区域中面积最大的一个,因此直接用select_shape_std 算子选择面积最大的区域。接着用shape_trans 算子将药片区域的形状变换成矩形区域,更贴合实际区域。最后用reduce_domain 将药片所在区域裁剪下来,后续的操作直接在裁剪区域上进行,进一步缩小处理范围。

具体算子如下:

图像分割结果如图7、8 所示。

2.1.3 特征提取

实验发现,原黄色胶囊区域在蓝色通道图片中与其他区域的对比度比较明显,灰度值较低,将其分割出来比较简单易行。因此可以根据这一特征,利用Blob 分析的方法逐步向其逼近。先用decompose3 算子获取蓝色通道图像,然后对其进行阈值分割、形状选择等操作。

具体算子如下:

实际中,胶囊药片的大小、背景颜色基本一致,胶囊所处的位置基本固定不变,不同胶囊药丸种类间的区别多为胶囊颜色不同。本文根据这一特征,在标准药丸图片中,定位到胶囊所在区域,然后用矩形框的形式将胶囊所在区域逐个表示出来,这里需要用到for 循环语句。

具体算子如下所示:

实验效果如图9、10 所示。

2.1.4 区域处理

分割、特征提取后的图像需要进行形态学区域处理。形态学处理是图像处理中用的最广泛的技术之一,是一种基于形状、结构的处理技术。形态学处理可以抓住图像中最为本质、最有需要的特征,用规定的结构元去度量和提取图像中的对应形状,从而达到改善图像的质量和增强图像特征的目的。常用于特征提取、图像分割、去噪等方面[3]。腐蚀、膨胀、开、闭运算是图像形态学处理中的基本运算方法。

腐蚀操作是指一个集或对象目标从其原来的形状收缩的过程。该目标缩小的方式是由结构元素决定的。其表达式为:

假设A 和B 是Z2中的两个集合,B 对A 的腐蚀(表示为AΘB)定义为:

式中,A 是前景像素的一个集合,B 是一个结构元,Z是前景像素值。换句话说,这个公式指出B 对A 的腐蚀是所有点Z的集合,条件是平移(相对于B 的原点)Z后的B 包含于A。腐蚀可以消除物体的边界、将小于结构元的物体(毛刺、小凸起)去除。

与腐蚀相反,膨胀操作是指一个集或对象目标从其原来的形状扩大的过程。该目标扩大的方式也是由结构元素决定的。膨胀会扩充物体的边界,将与物体接触的所有小于结构元的背景点合并到该物体中,如果两个物体之间的距离小于结构元,膨胀会把两个物体连通到一起[3]。

假设A 和B 是Z2中的两个集合,B 对A 的膨胀(表示为A ⊕B)定义为:

公式(3)是以B 相对于其原点反射并将这一反射平移Z为基础的。于是,B 对A 的膨胀就是所有位移Z(对的原点的位移)的集合,条件是的前景元素与A 的至少一个元素重叠。

开运算是对图像进行先腐蚀后膨胀操作,用来去除区域中小点、毛刺等,开运算可以消除区域中比结构元小的物体、平滑物体的边界。闭运算与开运算相反,对图像进行先膨胀后腐蚀操作,用来填充物体内比结构元小的孔洞、平滑物体的边界,同时可以连接临近的物体[3]。本项目中主要是消除阈值分割后所得图像中的孔洞、平滑边界,以形成整体区域方便后续的区域定位操作。

具体算子如下所示:

■2.2 仿射变换

在图像采集过程中,由于每次采集到的图像不同,胶囊所处的位置也不同,需要将胶囊所在位置与矩形框位置进行图像配准。因此,对采集到的图像进行仿射变换便成了检测过程中必不可少的一步。仿射变换是指在平面上将图形进行线性变换和平移的组合操作。它可以保持原始图形中的平行线仍然平行,并且保持原始图形中的比例关系不变。常见的仿射变换包括平移、旋转、缩放和剪切等操作[4]。仿射变换一般由两部分组成,先对一个向量空间做一次线性变换,再对线性变换后得到的向量进行平移,由此变换为所需要的向量空间。仿射变换前后图像的凸性、共线性、平行性、共线比例不变性等性质保持不变,只可能改变图像的比例及角度。

仿射变换的一般数学表达式如下:

在二维图像中,仿射变换一般表示为:

虽然每次采集到的图像可能各不相同,但胶囊在整个药板里的位置是固定的。根据这一现象,将所采集到的图像区域仿射变换。仿射变换所需的行、列坐标及角度即为所获取图像的行、列坐标及角度。这样不管后续所采集到的图像是否发生偏移、旋转、倾斜等情况,都能保证胶囊所在位置永远都处于矩形框内,方便后续对多幅图像进行分割、特征提取和检测等操作,提高了程序的鲁棒性。

具体算子如下:

实验效果如图11、12 所示。

图1 机器视觉工作流程图

图2 胶囊检测流程图

图3 原图像

图4 红色通道图像

图5 绿色通道图像

图6 蓝色通道图像

图7 图像分割(a)

图8 图像分割(b)

图9 特征提取(a)

图10 特征提取(b)

图11 仿射变换前

图12 仿射变换后

图13 面积检测(a)

图14 面积检测(b)

■2.3 面积检测

图像在经过仿射变换后,胶囊所在的位置便位于前文所创建的矩形框区域内,通过Blob 分析分割出胶囊各自所在的区域,并对各自的区域与矩形框区域内的各个矩形框进行交运算。由于坏胶囊和空胶囊的灰度值与正常胶囊相差甚多,在阈值分割时已将坏胶囊的一部分和空胶囊区域分割出去了,坏胶囊只剩下一半的面积区域。因此在面积检测时很容易将坏胶囊和空胶囊同正常胶囊进行区分。

因为矩形框区域的面积大于胶囊面积,并将胶囊区域完全覆盖,因此两个区域进行交运算所得的结果便为胶囊区域的面积。通过对胶囊进行分割后的特征检测可以得出胶囊区域的面积约在12000 像素,因此可以设置一个低阈值点8000 像素,若两区域的交集面积低于阈值点8000 像素,便说明该区域内的胶囊存在问题,直接判定结果为坏胶囊,若大于低阈值点便继续对该区域进行后续的灰度值检测,而若两区域的交集面积等于0 便说明该区域内没有胶囊,直接判定结果为空胶囊。将空胶囊所在区域用红色矩形框显示,坏胶囊所在区域用红色标识显示。

■2.4 灰度值检测

除了缺漏、损坏,胶囊在生成过程中也有可能受到污染、变色等情况,单独对胶囊所在区域进行面积检测还不足以说明胶囊没有问题。因此还需要对胶囊图像进行灰度值检测,利用min_max_gray 算子得到检测区域的最大、最小灰度值,若胶囊受到了污染、变色的情况,其部分区域的灰度值f′(x,y)必然不会与正常区域的灰度值f(x,y) 大小相同,因此可以根据胶囊区域的灰度值再次对胶囊的好坏进行判断。通过对好的胶囊图像区域进行特征检测,得到其大致的灰度值取值范围,倘若在检测过程中,待检测区域胶囊的灰度值与好的胶囊区域的灰度值相差甚多,两者之差大于所设定的阈值T,便判断该区域内的胶囊存在问题,判定其为坏胶囊,若两者之差小于阈值T,便认为该区域的胶囊没有问题。本文设T=50 。

具体算子如下所示:

实验效果如图15、16 所示。

图15 灰度值检测(a)

图16 灰度值检测(b)

3 检测过程的通用性验证

为了验证药丸检测算法的通用性,使用不同药丸图片进行检测,修改算法中生成矩形框所在位置和其他部分算子的参数。实验效果如图17~图20 所示。

图17 通用性验证(a)

图18 通用性验证(b)

图19 通用性验证(c)

图20 通用性验证(d)

结果表明,算法具有一定的通用性,可以对不同的胶囊图像进行测量,并得到较满意的结果。

4 结束语

本文基于Halcon机器视觉软件对胶囊药丸进行缺陷检测,取得了较满意的实验结果。但本实验仅依赖于Halcon 软件,未能实现窗体化的操作程序,且每次检测的药丸数量有限,并且对图片采集环境要求较高。在拥有大量数据集的情况下,多用深度学习算法对药丸进行检测,有待后续进一步研究。

猜你喜欢
矩形框药丸算子
Deconstructive Analysis of New Media Communication from Translanguaging Perspective
药丸
药丸病毒大作战
拟微分算子在Hp(ω)上的有界性
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
多模态卷积神经网络的物体抓取检测
一种汽车式起重机防倾翻方法的研究
一类Markov模算子半群与相应的算子值Dirichlet型刻画
共享单车有了“家”
Roper-Suffridge延拓算子与Loewner链