已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学士学位论文 规则方格中 药片数量的检测 作者姓名:崇斯杰 学科专业:信息与计算数学专业 导师姓名:刘利刚 教授 完成时间:二一七年五月 University of Science and Technology of China A dissertation for bachelors degree Number Detect of Pills in Regular Squares Authors Name:Sijie Chong Speciality:Computational Mathematics Supervisor:Prof. Ligang Liu Finished Time:May, 2017 中国科学技术大学本科毕业论文 致谢 在此感谢刘利刚老师对我的大力帮助。 在我的本科生涯中,刘老师对我产生了至关重要的影响。是他将我引领上了 计算机图形学这样一条有趣而又有用的道路上,并让我对编程产生了极大的兴 趣,明确了日后发展的方向。刘老师对工作和学习严谨的态度时刻影响着我,让 我受益良多。 另外感谢刘老师的学生王士玮师兄,师兄也在各个方面提供了我很多帮助, 让我少走了很多弯路,在此深表谢意。 感谢阿巴赛科技有限公司研发部门的各位师兄师姐,在学习上给予我的诸 多帮助。 中国科学技术大学本科毕业论文 摘要 日常生活中,在医院看病时,医生都会给我们配出各种各样的药片。有的时 候,他们会用小包装将药片分开,按照每顿的剂量交给病人。应上海一家医院的 邀请,我有幸观察了医生配药的过程。医生们在由规则方格组成的配药器内,将 药片按照剂量分开放置,然后由机器自动包装,最后送到病人手中。 然而我们知道,人在长时间执行单调的动作时,很容易出现精神力难以集中 的状况。若是在其他情况下造成的影响并不大,但是对于医院给药来说,犯错误 是完全不容许的,因为这关系到病人的生命健康问题。这就启发我们制作一套由 摄像头和电脑主机构成的系统,来辅助检测方格中药片的数量,以减少医生在给 药时由于失误而导致的药片数量防止错误。 在本次毕业设计中,我将重点放在程序部分,即如何从一张规则的带有药片 的方格的照片中获得药片数量的信息。这将用到计算机图形学中多方面的知识, 成功后,还可以在医院中进行实际操作,来最终形成一套完整的产品。 关键词:规则方格药片二值图轮廓检测凸缺陷检测噪声排除 中国科学技术大学本科毕业论文 目录 摘要 第一章绪论 3 1.1背景介绍 3 第二章方法简介 4 2.1检测步骤 4 2.1.1、矩形检测 4 2.1.2、单个矩形内的药片检测 5 第三章矩形检测 7 3.1二值图转化 7 3.1.1、灰度图转化 7 3.1.2、二值图转化 7 3.1.3、角点检测 8 3.1.4、矩形判定 9 第四章单个矩形中药片的检测 14 4.1轮廓检测 14 4.2消除噪音 15 4.3贴合药片的检测 17 4.3.1、轮廓的凸包 17 4.3.2、凸缺陷 18 第五章实验结果 19 第六章反思与不足 20 第七章未来展望 21 第八章参考文献 22 1 中国科学技术大学本科毕业论文 图目录 1.1 给药器原图 3 2.1 给药器二值图 5 2.2 二值图中的一个方格 6 3.1 二值图 10 3.2 角点配对后的检测结果 11 3.3 对噪声矩形消除后的效果 12 3.4 辅助添加后的结果(对比图 3.3) 13 4.1 贴合的药片二值图 14 4.2 轮廓检测原图 15 4.3 轮廓检测效果 15 4.4 贴合药片 17 4.5 凸包与凸缺陷 18 5.1 原图 19 5.2 矩形检测图 19 5.3 最终结果图 19 2 中国科学技术大学本科毕业论文 第一章绪论 第一节背景介绍 随着社会的发展,医生们在医院中使用的给药工具也越来越先进。如今,只 需要医生将对应数量的药片放进如图 1.1 所示的方格中,医院的自动包装机器就 会帮你将这些药片给一一包装完毕,给医生提供了极大的便利,也降少了误包装 的可能性。 图 1.1给药器原图 但是,在医院中,通常负责放置药片的都是同一位医生,他们往往一工作便 是连续很多小时。在这样长时间的重复单调活动的过程中,难免会遇到操作失 误的情况。然而,在医院这样的地方,一个小小的失误很可能会影响到病人的健 康,这也启发我们来寻找一种方法来减少这样造成的失误。因此,收到医院的邀 请,我们收集了医院内的给药器的一些图片,并尝试通过一些成本较低的方式, 来实现机器辅助检测药片的数量,从而减少医生给药的失误率。 首先,我们进行信息收集的方式很简单,只是一个简单的摄像头,这也意味 着我们只能通过一些原始的图片(例如图 1.1)来进行检测。而这套系统的核心 部分,也将集中在这里,即如何在一个给定的带有规则方格的图片中,运用图像 处理的一些手段,来获取每一个方格内的药片数量。 3 中国科学技术大学本科毕业论文 第二章方法简介 第一节检测步骤 让我们再回到上面的图 1.1,让计算机从这样一幅图像中识别出每一个方格 中的药片将会分两步进行。第一,检测出图中所有矩形方格的位置以及大小,从 而确定每一个矩形所包含的所有像素;第二,当我们获得了所有矩形的具体位置 后,就需要将每一个矩形内的药片数量检测出来。这样,我们就可以和预先输入 系统的数据进行比对,从而在医生可能发生错误的时候进行提示,让医生人工进 行最后的检测,从而减少药片放置的失误率。 本文所使用的程序将采用 C+ 编写,集成了 opencv2 库和 qt,将会用到 opencv2 中的部分算法。 一、矩形检测 首先,我们来尝试将图像中所有的矩形的位置检测出来。在检测之前,我们 可以发现,由于图像中矩形的规整性,我们是能够获得矩形以一定的规律排布这 样的先验知识的。这对于准确检测每个矩形来说十分有用, 因为通过普通摄像头 采集的图像势必会具有很强的噪音,而这些噪音会极大得影响我们矩形检测的 结果。在我们具有矩形以一定的规律排布这样的先验知识后, 去除这些噪音将会 变得非常容易。 那么,首先,由于 256 位的彩色图像的内容过于复杂,直接从这里进行矩形 检测会极大耗费整个计算机的计算资源。理所应当, 我们会想到一个储存信息数 相对较少,并能够更简单地显示出所有矩形方格的方法,即图像的二值图像。 所谓二值图,其实也十分简单,只是将整个图像每一个像素的梯度计算出 来,将一定梯度以上的像素点设置为 1,其他为 0 即可。这样,整个图像的边缘 便会形成一幅新的图像。这样的图像,将完整得保留所有矩形的特征, (同时也 包括所有药片的边缘) ,但相比较于 256 位的彩色图像,它的每一个像素只储存 了 0 或者 1 中的一个值,这将使得我们的运算速度得到极大的提高。 在来这里,我们使用 Canny 边缘检测算法来进行检测。 然后,再获得了原图像的二值图后,我们会使用自己的算法来寻找图中疑似 矩形角点的像素,并将这些像素进行分类。接下啦,当所有的“疑似”角点都被 4 中国科学技术大学本科毕业论文 检测出来后,会将其中的角点根据这些矩形排布的规律进行匹配,得到最终所有 方格的位置。 二、单个矩形内的药片检测 在获得了所有方格的位置以后,我们的问题自然而然就将转变到如何在一 个给定的矩形内,找出其中所有的药片。 由于本文的操作主要将集中在二值图的运算上,所以我们将从二值图的一 些图像处理技巧上进行入手。首先,让我们来观察一幅二值图。 图 2.1给药器二值图 我们将其中一个比较具有代表力的方格取出来。这里的代表力, 是指的其中 药片较为清晰,而各种类型的噪音均有的一个方格。如图 2.2 所示: 对于这样的一个方格,通过人类的先验知识,我们能够狠清楚地明白,其中 共有两片药片。但是,对于计算机而言这却是一个不太容易的问题。因为图像中 含有太大的噪音。无论是边界的线条型噪音,还是左上方的点状噪音,都会对检 测结果产生极大的影响。 为了避免这个情况,我们必须对图像进行有目的性的去噪。这里的去噪和一 般意义上的去噪不太一样,由于图像中这些噪音的特殊性,我们可以进行针对性 5 中国科学技术大学本科毕业论文 图 2.2二值图中的一个方格 的去噪。这将在下面进行详细的解释。 去噪完毕后,我们的图像中将只留下药片的边缘所在的像素。之后,只需要 运用轮廓检测的相关算法,就可以得到图中轮廓的数量。但是这还遗留下一个问 题,如果多个药片聚集到一块,那么将只能检测出一条轮廓。这时,就需要我们 寻找一种方法,来找到轮廓中实际的药片数量。 这里,我们将运用凸缺陷的方法来进行计算。因为大多数药片本身都是凸 形,所以如果两篇药片自然地贴在一起,将会在它们形成的公共凸包内产生明显 的凸缺陷。根据凸缺陷的数量,我们将可以获得这一条轮廓中药片数量的信息。 6 中国科学技术大学本科毕业论文 第三章矩形检测 第一节二值图转化 一、灰度图转化 转化为二值图的第一步, 是先进行灰度图转化。所谓灰度图转化,在计算机 图形学中的运用早已经相当广泛。因为这是将 3 通道图像转化为单通道图像,简 化算法最有效的手段。通常来说, 灰度图转化所使用的方法, 就是讲图像的 RGB 三个分量按照一定的权重加权,从而得到该点的最终的灰度。一般来说,通用的 公式如下: Gray = R 0.3 + G 0.59 + B 0.11(3.1) 在 OpenCV2 中,提供了非常方便快捷的灰度图转化功能,在本程序中,我 们将直接使用封装好的灰度图转化函数。 二、二值图转化 1. 高斯去噪 一般来说,在进行灰度图向二值图的转化时,我们需要首先对图像进行高斯 去噪,来预先消除一些不太明显,但对结果会产生影响的噪音。 所谓高斯去噪,又称为高斯滤波、高斯模糊或者正态去噪,其实也就是通过 二维上的正态分布来进行的去噪。通过对每一个像素计算, 将它附近的像素以正 态分布的加权得到一个值,作为该点新的值。这样可以将图像的边界变得更光 滑,有效减少边界噪音对于边缘检测的影响。 在这次的程序中,我们将对每个像素点两个像素以内的点进行采样,并通过 高斯分布加权,得到每个点高斯去噪以后的值。由于高斯模糊在 OpenCV2 中也 有自己封装好的语句,我们可以直接拿来使用。 7 中国科学技术大学本科毕业论文 2. Canny 边缘检测算子 很多图像的信息其实并不需要在彩色图像中就能提取出,比如说“数量”这 一概念,当图像的边缘被检测出来时,我们便能从边缘组成的图像中明显得得到 “数量”的信息。于是,在 1986 年,John F. Canny 提出了一种边缘检测的算法。 当上一步的高斯去噪进行完毕后,我们就可以对边缘已经光滑化的图像进行边 缘检测了。 所谓“边缘”这个概念,在我们心中都有一个明确的定义,但是对于计算机 而言,这个定义却不管用,我们需要从灰度图的亮度梯度上着手,得到我们所需 要的“边缘” 。在大多数边缘检测算法中,亮度梯度是一个非常重要的标准,往 往对其做阈值保留就可以得到很好的效果。 而 Canny 边缘检测相比较于正常的边缘检测算法,它额外采用了滞后阈值 作为是否保留像素点的标准。这样的阈值分为两个,分别为高阈值和低阈值。其 中,高阈值的作用很清晰,当一个点的梯度超过了高阈值时,则这个点一定会被 作为边缘点而保留。这样,我们可以得到一个能够确信的边缘。之后,我们可以 通过跟踪这些高阈值下被判断为边缘的点,如果与这些点相邻,并且梯度超过了 低阈值,那么这些点也将被视为边缘点。相对的,假如一个点的梯度小于了低阈 值,那么这个点将一定不会被我们的边缘二值图所显示。 这样做的好处在于,能够避免一些噪音点处的梯度很高,但实际并不是边缘 点的点被误判断为边缘。 同样,Canny 边缘检测算法也在 OpenCV2 中得到了良好的实现。 三、角点检测 角点,顾名思义,就是图像上角的点,简单来说,就是线条相交的地方。 一般而言,角点检测运用的原理,是一个固定大小的像素框内,如果存在角 点,那么无论这个框向那个方向移动,都会引起整个框内像素的变化(边缘点则 在沿着边缘方向移动时不会出现这样的情况) 。 角点检测虽然在 OpenCV 里有封装好的代码,但经过多次测试,发现其自 带的角点检测程序效果并不好,受到噪音的影响过大。另外,在这次的方格检测 中,我们也并不需要啊那些噪音中斜线的角点,我们仅需要检测出方格的直角 角点即可。而从图 2.1 可以看出,我们的角方格有的时候并非四个点都能明显得 显示在二值图上,但绝大多数方格至少都有一组对角的角点能够显示得很清楚。 8 中国科学技术大学本科毕业论文 而通过这样一组对角,我们就能完全确定这个矩形的方位。于是,这启发了我们 另一个方向,在寻找到所有角点的基础上,手动寻找一个在图像上规整排布的矩 形的四个直角的点。从而获得所有矩形的坐标。 1. 角点连续性的定义 首先,我们运用 OpenCV2 自带的角点检测程序,获得所有角点的坐标。并 在这些角点内进行排查,得到矩形顶点的位置。 接下来,我们需要做的,就是寻找这些矩形的角点所在的像素的特点。 矩形的角点, 最大的特点自然是矩形上和这个角点相邻的两条边。理论上来 讲,在一个像素足够清晰的图片里,假如这是一个矩形的左上顶点,那么从它开 始向右数一定个数的像素点,都应该被边缘检测所保留(矩形的上边缘) 。但是 实际上,由于硬件的精度,以及人工拍摄所存在的角度问题,总会使得图片上像 素不那么标准,于是,我们引入一个 1 像素的容差,只要它右边的某个像素点, 其上下 1 像素范围内有一个点是白色的(即属于检测出的边缘) ,则视为这个点 是白色的。当一个像素点正右方有连续的 15 个点都满足这样的条件时,则我们 称这个点为右连续的。 同理,我们可以得到左连续,上连续,下连续的定义。 2. 角点的分类 当一个被判定为角点的点,同时在上述定义下满足两条以上的连续,且两个 不为相对位置的时候,我们就可以称这个点为一个直角角点了。为了下面进行角 点配对时方便,我们将对这些角点按照其连续的方向进行标签化。 假如一个角点同时右连续且下连续,我们就给它打上 1 号标签,代表它能够 作为一个矩形的左上顶点。同样,2 号为右上顶点标签;3 号为左下顶点标签;4 号为右下顶点标签。同一个点可以拥有多个标签,以便于进行角点配对。 四、矩形判定 1. 角点配对 在我们矩形的角点被检测出来,并且全都打上了标签之后,我们就可以进行 角点配对工作了。 9 中国科学技术大学本科毕业论文 一个矩形的具体位置及其大小,我们只需要得到它一对对角顶点的坐标即 可完成。这也就是说,只要我们能找出一对满足一定条件的 1、4 标签或者 2、3 标签的直角角点,就能够确定出一个矩形方格。 那么,接下来问题就在于这样的一对“满足”条件的角点究竟需要满足什么 样的条件。我们再次来看得到的二值图: 图 3.1二值图 首先,经过实际测量,这些方格的大小,都是在 31*51 到 65*76 之间的。也 许这很奇怪,明明是规整的方格,为什么在图像中的大小差距会如此大?其实, 这涉及到摄像头的角度问题,由于摄像头是正对着给药器的,所以离摄像头越远 的方格在摄像头上所占的角度也必然越小。同样, 摄像头正对的方格所占的角度 也会相应很大。这样就导致了这些方格最终在图像上展示时的大小不一。 所以,我们给对角点的 x 方向的差值限制在 31-65 之间,y 方向为 51-76 之 间,这已经足够排除掉大部分噪声。 首先,我们对所有的具有 4 标签的角点进行遍历,寻找每一个 3 标签点左上 方的,距离满足条件的,最近的具有 1 标签的角点,并将它和 4 标签的角点进 行组合。当然,因为二值图中存在一定的噪音,有可能一个角落被扫描出多个角 点,所以,每次遍历时,如果这个点 10 个像素范围内曾有点被选取过,那么将 10 中国科学技术大学本科毕业论文 自动跳过这个点,以防止在一个方格中扫描出多个矩形的情况。 在所有这样的矩形都扫描出来后,我们再来考虑由 2、3 标签配对形成的矩 形。因为二值图中有部分矩形,并不能将 1、4 角点检测完全,所以,我们还需 要反过来寻找 2、3 角点,来补全这些剩下的矩形。当然,方法和上面是一样的, 只需要用和上述相同的方法保证不会出现矩形重合的情况即可。 经过这样的处理后,我们得到的效果如图 3.2 所示: 图 3.2角点配对后的检测结果 2. 根据对称性进行噪声排除 可以发现,除了我们需要检测的那些方格外,图中还多检测出了很多不应 该被检测到的方格。此时,我们之前所提到的,规则网格的对称性就可以发挥 作用了。根据规则网格的对称性,我们可以很方便地删除掉那些我们不希望看 到的“矩形” 。所运用的原理也十分简单,如果一个方格是有效的,那么在这个 5*5 的方格中,在照片的精细程度还可以接受的情况下,至少会有两个以上和它 在同一横坐标,大小差不多的方格;同样也至少会有两个以上纵坐标差不多的方 格。 (这里仅对于 5*5 进行研究,假如方格数更多,可以对这个坐标相近的矩形 个数进行更高的要求) 11 中国科学技术大学本科毕业论文 这里, 我采用的方法是, 对每一个矩形, 都检测是否存在起点(即左上顶点) 和它几乎在同一水平线上或者同一垂直线上的所有其他矩形,若水平以及垂直 的均超过两个,则这个矩形则是有效的。其余的矩形则直接删除,不被保留。最 后得到的效果如图所示: 图 3.3对噪声矩形消除后的效果 3. 手动添加损失的矩形 最后, 我们会发现, 图中还是损失了一部分矩形信息。在这次所用的样图中, 我们损失了两个矩形的信息。虽然这和拍摄条件有着很大的关系, 可以通过硬件 的优化来解决。但是为了防止我们的系统在操作过程中出现这样的情况, 我们还 将为用户提供删除矩形和手动添加矩形的操作接口。 其中删除矩形自然不必多说,只需要用户将整个矩形大致框选出来,程序会 将最接近的矩形给删除。 而添加矩形中,除了纯手动添加外,我们还提供了一种辅助添加的思路。即 用户只需要将起点(矩形的左上顶点)选好,机器会自动追踪和这个起点横纵坐 标相近的其他矩形的起点点,并寻找这些点的均值作为这个点的坐标。同样,这 个矩形的长宽也将同时考虑到这几个追踪的矩形的大小均值,带入到这个起点 12 中国科学技术大学本科毕业论文 所在的位置,然后作为这个矩形的大小。实际实验效果中,这种辅助添加的效果 还算不错,可以起到方便用户操作的功能: 图 3.4辅助添加后的结果(对比图 3.3) 到这里为止,我们所有的矩形已经全部在图中被检测出来。在程序中,它们 以一个名为“Rectangle”的类存放着,储存着这个矩形的坐上顶点坐标,矩形的 长和宽。接下来要做的,就是在这些已知位置和大小的矩形中,检测出所有的药 片的数量。 13 中国科学技术大学本科毕业论文 第四章单个矩形中药片的检测 在前文中,我们已经实现了在一个规则的矩形方阵中,将所有的方格给检测 出来。在我们获得了所有的方格的位置后,自然而然,下一步便是将单个方格中 的药片数量给检测出来。检测药片数量, 最基本的想法就是通过轮廓检测检测出 图像中轮廓的个数。但是,直接这样操作将会存在很多问题。首先,由于反光和 光照阴影的影响,在图像中会出现很多在意料之外的噪音。这些噪音在检测中也 会被算作一条轮廓,从而影响药片检测的效果。 其次,除了噪音之外,还有一种特殊情况会严重影响检测结果。这种特殊情 况就是药片的贴合。如果药片在立体方向上重叠, 那么无论如何从简单的平面图 中都是无法获得所有药片数量信息的。所以, 我们这里只会讨论当两个药片距离 较近,贴合在一起的情况。如下图所示: 图 4.1贴合的药片二值图 于是,我们具体的操作将分为三步:1、对二值图进行轮廓检测;2、除去图 中所有的噪音;3、通过凸缺陷的方法来识别贴合在一起的药片。 第一节轮廓检测 x 首先我们来看轮廓检测。所谓轮廓,简单来说就是连接在一起的像素点。 任何两个像素点只要他们在像素图上相邻(邻边或者邻角都可以) ,便称他们为 “连接的” 。而连接在一起的点都会被视为一个整体,这些整体的外轮廓就是我 们需要统计的部分。 在理想情况下,如果没有噪音,且药片都十分清晰地分离,那么这些轮廓的 14 中国科学技术大学本科毕业论文 数量将可以直接表示药片的数量。 这种轮廓检测在图形处理中的用途极为广泛,而在 OpenCV2 中,只需要给 定二值图,就可以有封装好的函数直接计算出图像的外轮廓。 (之所以只检查外 轮廓,是因为如果连内轮廓一起检测,会产生极多的难以消除的噪音,对于整个 检测效果而言得不偿失。 下面我们来看一个轮廓检测的例子: 图 4.2轮廓检测原图 图 4.3轮廓检测效果 第二节消除噪音 首先在消除噪音之前,我们回到图 4.1 中,来观察一下噪音的特点。图 4.1 中的方格很具有代表性,几乎包括了所有可能遇到的情况。 这些噪音相对于左下角的药片,可以发现分为如下几种: 1、整条轮廓全部贴在边界上的:只是因为方格选取中,方格内部仍然有一 圈较小的边界,这样的边界往往都会离选取的方格边界非常近,近到几乎贴在一 15 中国科学技术大学本科毕业论文 起。由此形成的噪音,整个扫描到的轮廓也会整个都贴在轮廓边缘。由于我们的 轮廓所储存的数据为点列格式,所以,我们对每一条轮廓的所有像素点都进行一 次检测,假如它所有的像素点全都距离边界的距离小于一个给定给的值时,我们 就视为这条轮廓是紧贴边界的。就可以将这条轮廓视为第一类噪音。 在图 4.1 中,左边那条竖直的直线和顶端的那条平行线组成的噪音就属于这 一类。由于药片本身具有 10 个像素左右的大小,所以我们将上面给定的阈值设 置为 3,是一定不会将药片当做噪音误删除的,所以这是一种可以安全去除的噪 音。 2、 面积过小的轮廓: 在检测完后, 我们惠发现一些明显面积极小的轮廓。这 些轮廓的生成原因,大多是因为给药器上的斑点或者是部分反光造成的。这样的 噪音的特点在于,它所占据的 x 和 y 分量的大小都很小。所以,我们的解决方法 是,提取一个轮廓所有像素点的 x 分量和 y 分量的最大值和最小值,并用最大值 减去最小值,对减后的差值和给定的值进行对比,如果全都小于给定的阈值,那 么就视这条轮廓为第二类噪音,即面积过小的噪音。 这样的噪音,在图 4.1 中也表现得极为明显,就是在药片上方的仅由几个像 素点组成的白色轮廓。这样的噪音,和第一类噪音一样,是能够比较安全消除的 噪音。 3、条状噪音: 第三类噪音,是呈条状分布的噪音。所谓条状,故名思议,就是在界面上的 轮廓呈现长条形。这样的噪音, 往往是由于强烈的反光以及单方向的光线导致药 盒内的阴影所造成的。如图 4.1,右边的一条长条形就是由于反光所造成的噪音。 这样的噪音,特点在于 x 方向所占的大小和 y 方向所占的大小具有明显的差距。 具体来说,我在程序中仍然计算了它们在 x 方向和 y 方向上的差值,分别设为 dx 和 dy。当 dx 大于 dy 的五倍或者 dy 大于 dx 的五倍时,我们将视为这是一个 长条状形的噪音。 在图 4.1 中,右边的噪音能够被成功检测出来并进行消除。但是,这种噪音 检测方式却不是完全安全的。假如有一片较小的药片, 恰好位于反光的分界线的 正下方时,就有可能因为这长条形状的反光而被当做噪声而被误删除掉。但是鉴 于我们拥有的只有二维的图像,这样反光下的噪音通过人类判别都可能有一定 的失误。再加上这样的情况可以通过调节现场光照, 来避免这样强烈的反光来修 复,所以我们可以暂时不予考虑这种极为特殊的情况。这样的噪音,我们称它为 第三类噪音。 16 中国科学技术大学本科毕业论文 第三节贴合药片的检测 在噪音被消除后,我们的场景内的轮廓将会只剩下我们所需要的药片的轮 廓。但是,这样的轮廓并不是完美的,因为,存在图 4.1 中那样比较特殊的情况, 即两片药片很可能会紧贴在一起(如下图所示) 。出现这种情况时,我们需要通 过一些特殊的手段,来让电脑知道这是多个药片贴合所产生的矩形。 图 4.4贴合药片 首先我们明确一个思路,这样多个药片贴合形成的轮廓是否具有一个公共 的特征呢?答案是肯定的。从直观上看, ,我们能够发现,在这样的轮廓上,我 们能明显地发现它分成了两“块” ,而这所谓的“块”在数学上又称为凸形,也 就是说,我们最终需要寻找的,就是这条轮廓中,所包含的凸形的个数。反过来 讲,我们也可以通过轮廓上内凹的那些部分来判断具体有多少个凸形,这将成为 我们下面方法的基本思路。 一、轮廓的凸包 我们先来明确轮廓凸包的概念。所谓凸包, 在图形学中同样已经被研究过了 多次, 其相关算法也是相对很成熟。凸包是指能够将一个图形所包围的最小的凸 多变形。比如一个漏斗形状的多边形, 它的凸包就是将漏斗的顶点相连所得到的 四边形。 这里,我简单介绍一下所使用的算法中,寻找凸包的基本思路。 在凸包检测中,我们采用的函数基本算法为 Graham 扫描算法,它的复杂度 为 nlog(n),整个过程简明易懂。简单来说,这个算法的过程如下: 1. 首先计算求得输入点 x 坐标取到最小值(如果 x 相等,则比较 y 是不是最 小)的点,作为记录的第一个点; 17 中国科学技术大学本科毕业论文 2. 其它的点按照极角按逆时针排列,如果存在共线的,取距离原点较近的那 一个; 3. 依次将 0,1,2 三个坐标压入栈; 4. 对于剩余的点,i 依次从 3 到 n,观察次栈顶和栈顶,以及当前的 i 对应的 点,如果是向右方向转动或者在同一条直线上,那么弹栈; 5. 将 i 对应的点压栈,转到第 3 步。 最后,栈内剩余的点就是我们所需要的轮廓凸包边界。 二、凸缺陷 所谓凸缺陷,故名思议,就是轮廓在凸包里面所缺陷的部分。我们先举一个 简单的例子,当我们将手掌平摊,五指张开的时候,我们的凸包就是如下图所示 的轮廓。在这幅图中,凸缺陷已经用字母全部标注了出来: 图 4.5凸包与凸缺陷 那么,用凸缺陷该如何检测我们的多个药片的贴合呢? 首先我们回到图 4.4, 在这幅图中, 我们的药片呈现了一个小角度的夹角, 这 是一个明显的凸缺陷。 而在这个夹角相对的位置, 也有一个凸缺陷, 但并不明显。 在对大多数的图片进行归纳后,我们可以发现,这些贴合的药片的凸缺陷的 个数往往呈现一个规律。两片药片中,比较明显的凸缺陷往往有 1-2 个(当两个 半圆形药片对半贴合的时候,形状与一片并无区别,在这里不予考虑) 。而同样, 我们可以总结,当多个药片连接在一起时,他们呈现的凸缺陷数为 x 时,则药片 数量为 1+x/2 的整数部分。 (对于 1-3 枚药片时是十分有效的,药片过多的情况 在这样小的容器中容易产生重叠,往往需要药师手动检验) 。 这里,我们仍需弄清一个概念,即什么样的凸缺陷我们称之为“明显”的凸 缺陷。说道这,就不得不提到 OpenCV 中凸缺陷检测算法得到的数据,最后所 得的 vec4 类型的数据中,第 4 个维度即为我们的缺陷上距离边界最远点的距离, 18 中国科学技术大学本科毕业论文 这可以用来表示缺陷的明显程度。在本次实验中,主要的依据就是这个量,当这 个量大于 10 个像素时,我们称这个凸缺陷为一个“明显”的凸缺陷。 因此,我们只需要检测出这些凸缺陷中较为明显的凸缺陷个数,即可得到我 们需要的实际药片数量。将这结果带入到上一步中, 就能得到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 布绒玩具制作工操作知识评优考核试卷含答案
- 钨钼制品烧结工岗前安全生产基础知识考核试卷含答案
- 劳务经纪人安全实操考核试卷含答案
- 防渗墙工岗前创新思维考核试卷含答案
- 电机车修配工保密知识考核试卷含答案
- 古建琉璃工10S执行考核试卷含答案
- 防锈处理工岗前管理综合考核试卷含答案
- 固体树脂版制版员安全理论模拟考核试卷含答案
- 船闸及升船机运行员岗前安全技能测试考核试卷含答案
- 印染烧毛工改进评优考核试卷含答案
- 北京辅警面试题库及答案
- 非静脉曲张上消化道出血的内镜管理指南解读课件
- 2025年国防科工局机关公开遴选公务员笔试模拟题及答案
- 2024-2025学年山东省济南市天桥区八年级(上)期末语文试卷(含答案解析)
- (高清版)DB44∕T 724-2010 《广州市房屋安全鉴定操作技术规程》
- 2025职业健康培训测试题(+答案)
- 供货流程管控方案
- 《实践论》《矛盾论》导读课件
- 老年病康复训练治疗讲课件
- DB4201-T 617-2020 武汉市架空管线容貌管理技术规范
- 药品追溯码管理制度
评论
0/150
提交评论