一种玉米自动检测方法与流程

文档序号:14348260阅读:1194来源:国知局

本发明涉及粮食安全检测,涉及玉米,具体涉及一种玉米自动检测方法。



背景技术:

玉米是国人的主要粮食作物。在收集和储存玉米的过程中,玉米出现霉变、碎裂、虫洞等现象,是很常见的现象。这些异常玉米,会影响人体的健康,必须加以检测和滤除。

常规的利用人工对玉米进行逐粒检测的方法,成本太高,检测效率低。



技术实现要素:

本发明目的是提供一种玉米自动检测方法,极大的降低了检测成本、提高了检测效率。

为了实现以上目的,本发明采用的技术方案为:一种玉米自动检测方法,包括如下步骤:

a)尺寸过小检测:捕获背景图像;当前图像与背景图像做差;前景检测,得到玉米粒对应的像素点;连通域检测,得到玉米粒的尺寸;与经验阈值进行比较,过滤小尺寸玉米粒;

b)玉米粒整体颜色检测:玉米粒外轮廓提取;尖端点定位,所述尖端点为遍历轮廓,玉米粒上夹角值最大的位置;胚乳区域检测,所述胚乳区域是玉米粒表面上,亮度值较高的凹槽型区域;子叶部分检测,所述的子叶部分为玉米粒上,去除胚乳部分之外的剩余区域;色彩值提取;

c)玉米粒破损检测:玉米粒外轮廓提取;外轮廓平滑性检测;玉米粒对称性分析;

d)虫洞检测:配置光源的角度和led灯光的亮度,使得玉米粒表面全部都变成白色;孔洞位置,由于灯光无法得到反射,因此变成黑色小洞;在玉米粒区域内,对图像进行二值化,使得黑色小洞变成白色前景;连通域检测;找到所有的尺寸大于阈值的连通域;如果连通域的数目大于或者等于1,则说明玉米粒上存在孔洞,此时预警;

e)霉变检测:利用区域增长法,得到胚乳区域;将胚乳区域提取出来;对胚乳区域对应的像素值,进行亮度分析,得到直方图;在存在霉变点时,亮度直方图会出现两个波峰;找到两个波峰之间的分类阈值;对胚乳区域,利用上步找到的阈值进行二值化;连通域分析,得到最大连通域;最大连通域宽和高都大于20个像素的阈值,则说明存在霉变点,此时预警;

f)表面裂痕检测:在玉米粒的表面,进行边缘提取;过滤长度<50像素的短边缘;对每一条长边缘,进行梯度分析。

进一步的,步骤a)中捕获背景图像在进行玉米粒检测之前,背景图像的获取步骤如下:

a11)利用摄像机,对着背景连续拍摄图像;

a12)检测该段时间的图像,是否存在运动目标,如果存在,则需要重新拍摄;

a13)如果该段图像都是静止的,则通过对所有图像计算均值,得到背景图。

进一步的,步骤b)中胚乳区域检测的凹槽型区域的取得步骤为:

b31)从玉米尖端开始,向外搜索亮度值接近的区域;

b32)采用递归的方法,逐步向外扩展;

b33)直到扩展到遇到边界,停止;

b34)此时所有的扩展区域都是胚乳部分。

进一步的,步骤c)中外轮廓平滑性检测具体步骤如下:

c21)遍历每一个轮廓点;

c22)找到当前轮廓点的前面第5个点,以及后面的第5个点;

c23)分别计算这两个点与当前点构成的夹角;

c24)遍历所有点的夹角值,如果某个夹角值小于120°,则预警,此时轮廓不具有平滑性。

进一步的,步骤c)中玉米粒对称性分析具体步骤如下:

c31)遍历轮廓,找到玉米粒上夹角值最大的位置,作为尖端点;

c32)从尖端点出发,发射直线,与任意轮廓点连接起来;

c33)以当前连线作为对称轴,计算左右两侧的图像内容的对称性;

c34)找到配对数目最多的对称轴;

c35)如果最大对称性匹配的像素数目不到总数目的80%,则说明玉米粒不是完整的,某个部分出现了残缺。

进一步的,步骤f)中对每一条长边缘,进行梯度分析的步骤是:

f31)遍历每一个边缘点;

f32)沿着边缘垂直的方向,采集像素进行分析;

f33)记录下边缘两侧,梯度值小于10的像素点位置,作为边缘的边界点;

f34)根据左右两侧,边缘的边界点的坐标差,得到当前边缘点对应的边缘宽度;

f35)如果当前边缘的所有点的边缘宽度都小于6个像素,则认为该线条是裂缝,否则是胚乳边缘;

f36)存在裂缝的情形,需要预警。

本发明的技术效果在于:本发明提出了一种利用机器视觉,对玉米粒的质量进行自动检测的方法,极大的降低了检测成本、提高了检测效率。

具体实施方式

本发明的具体步骤:

a)尺寸过小检测:

有些玉米粒,尺寸非常小。这种玉米粒是没有任何实用价值的。因此需要提前过滤掉。

本发明中,采用如下的方法来进行小尺寸玉米粒的检测:

a1、捕获背景图像

在进行玉米粒检测之前,需要提前获取背景图像。背景图像的获取方法如下:

a11)利用摄像机,对着背景连续拍摄一段时间的图像。

a12)检测该段时间的图像,是否存在运动目标。如果存在,则需要重新拍摄。

a13)如果该段图像都是静止的,则通过对所有图像计算均值,得到背景图。

a2、当前图像与背景图像做差

a3、前景检测,得到玉米粒对应的像素点

对当前图与背景图进行逐像素比较。如果某个像素位置,当前像素点的亮度值,与背景像素点的亮度值之差大于阈值(阈值默认为200),则记为前景像素。

a4、连通域检测,得到玉米粒的尺寸

对二值化图像中的前景像素进行连通域分析,将尺寸最大的连通域提取出来,作为玉米粒。然后,计算该连通域的最小外接矩形,计算得到该矩形的宽度和长度。

a5、与经验阈值进行比较,过滤小尺寸玉米粒

如果玉米粒的宽度和长度,都小于经验阈值(100个像素),则需要作为小尺寸玉米粒进行过滤。

b)玉米粒整体颜色检测:

有些玉米粒因为病变、发霉,或者加工过程中温度过高等原因,导致玉米粒的颜色整体变黑、变暗。这种玉米粒是不能食用的,需要提前过滤出来。

具体方法如下:

b1、玉米粒外轮廓提取。

在二值化图像的基础上,进行连通域分析,进而进行轮廓点的提取。

b2、尖端点定位。

遍历轮廓,找到玉米粒上夹角值最大的位置,作为尖端点。

b3、胚乳区域检测。

胚乳区域是玉米粒表面上,亮度值较高的一个凹槽型区域。由于玉米变黑往往能是在子叶部分,因此需要提前将胚乳区域过滤掉,以降低该区域对颜色检测的影响。

采用区域增长的方法,得到凹槽区域:

b31)从玉米尖端开始,向外搜索亮度值接近的区域。

b32)采用递归的方法,逐步向外扩展。

b33)直到扩展到遇到边界,或者亮度值与尖端位置差异较大时,停止。

b34)此时所有的扩展区域都是胚乳部分。

b4、子叶部分检测。

玉米粒上,去除胚乳部分之外的剩余区域,全部都是子叶部分。

b5、色彩值提取。

在子叶部分,计算玉米粒的平均颜色值。此时如果平均颜色值的rgb三个分量的值,都小于阈值(50),则认为玉米粒偏黑,需要预警。

c)玉米粒破损检测:

在加工过程中,由于玉米粒受到的机械压力,很容易导致破损的现象。检测破损玉米的方法如下:

c1、玉米粒外轮廓提取。

在得到玉米粒对应的连通域之后,按顺序提取所有的轮廓点。

c2、外轮廓平滑性检测。

完整的玉米粒,其轮廓具有较好的平滑性。这是因为玉米的表面,本身就是平滑的。但是破损的玉米,其外部轮廓往往具有鲜明的棱角。通过对外轮廓的每一个点进行前后轮廓点夹角的计算,可以检测到外轮廓上出现的异常。

具体方法如下:

c21)遍历每一个轮廓点。

c22)找到当前轮廓点的前面第5个点,以及后面的第5个点。

c23)分别计算这两个点与当前点构成的夹角。

c24)遍历所有点的夹角值,如果某个夹角值过小,则预警,此时轮廓不具有平滑性。

c3、玉米粒对称性分析。

完整的玉米粒,具有较好的左右对称性。通过对玉米粒的外形的对称性分析和对称轴的检测,可以鉴定当前玉米粒是否正常。

对称性分析的具体步骤如下:

c31)遍历轮廓,找到玉米粒上夹角值最大的位置,作为尖端点。

c32)从尖端点出发,发射直线,与任意某个轮廓点连接起来。

c33)以当前连线作为对称轴,计算左右两侧的图像内容的对称性。

对称性的计算方法为:比较彼此对称的两个像素点的色彩值,如果rgb三个通道的色彩值的差,都小于阈值(20),则认为是配对的。统计总的配对像素的数目。

c34)找到配对数目最多的对称轴。

c35)如果最大对称性匹配的像素数目不到总数目的80%,则说明玉米粒不是完整的,某个部分出现了残缺。

d)虫洞检测:

虫洞的外在形状,是一个圆形的黑色小洞。本发明通过如下的方法,来检测玉米粒的表面,是否有孔洞的存在。

d1、配置光源的角度和led灯光的亮度,使得玉米粒表面全部都变成白色。

d2、孔洞位置,由于灯光无法得到反射,因此变成黑色小洞。

d3、在玉米粒区域内,对图像进行二值化,使得黑色小洞变成白色前景。

d4、连通域检测。

d5、找到所有的尺寸大于阈值的连通域。

d6、如果连通域的数目大于或者等于1,则说明玉米粒上存在孔洞。此时可以预警。

e)霉变检测:

玉米粒发生霉变时,会在胚乳区域,形成一个颜色较深的小团块。由于胚乳颜色通常偏亮,因此霉变点在胚乳上的检测具体方法如下:

d1、利用区域增长法,得到胚乳区域。

d2、将胚乳区域提取出来。

d3、对胚乳区域对应的像素值,进行亮度分析,得到直方图。

d4、在存在霉变点时,亮度直方图会出现两个波峰。

d5、找到两个波峰之间的分类阈值。

d6、对胚乳区域,利用步骤d5找到的阈值进行二值化。

d7、连通域分析,得到最大连通域。

d8、最大连通域宽和高都大于阈值(20个像素),则说明存在霉变点,此时需要预警。

f)表面裂痕检测:

玉米的表面出现裂缝,也是常见的异常现象之一。在对表面的裂缝进行检测时,需要避免玉米粒表面的非裂缝类边缘(胚乳边界、胚乳区域的褶皱)的干扰,导致错误检测。

本发明采用如下的方法,来进行玉米粒表面裂缝的检测:

f1、在玉米粒的表面,进行边缘提取。

f2、过滤短边缘(即取长度>50)

f3、对每一条长边缘,进行梯度分析:

f31)遍历每一个边缘点。

f32)沿着边缘垂直的方向,采集像素进行分析。

f33)记录下边缘两侧,梯度值小于10的像素点位置,作为边缘的边界点。

f34)根据左右两侧,边缘的边界点的坐标差,得到当前边缘点对应的边缘宽度。

f35)如果当前边缘的所有点的边缘宽度都小于6个像素,则认为该线条是裂缝。否则是胚乳边缘。

f36)存在裂缝的情形,需要预警。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1