基于图像处理的瓶装液体杂质及液位检测方法转让专利

申请号 : CN201510676841.9

文献号 : CN105334228B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韩云涛程章龙杜世通吴振张晓涛李伟强宝琛韩鹏刘晓晴王洪兴

申请人 : 哈尔滨工程大学

摘要 :

本发明提供的是一种基于图像处理的瓶装液体杂质及液位检测方法。a、摄像头采集并输入所要处理的图像;b、创建用来存储每一步处理后图像的内存空间;c、运用高斯滤波对图像进行灰度化平滑处理;d、运用改进的otsu自适应阈值分割算法找到阈值T1;e、对步骤d中找到的阈值进行放大得到新的阈值T2;f、用找到的阈值对高斯滤波后的图像进行二值化形态学处理;g、对杂质和液位进行检测并输出结果;h、释放内存空间。本发明实现了阈值在一定光线范围内的自适应调节。实验结果表明该算法可使系统识别直径0.5mm以上的杂质并能准确检测出液体液位,并对不合格产品进行报警提示和剔除。

权利要求 :

1.一种基于图像处理的瓶装液体杂质及液位检测方法,其特征是:a、摄像头采集并输入所要处理的图像;

b、创建用来存储每一步处理后图像的内存空间;

c、运用高斯滤波对图像进行灰度化平滑处理;

d、运用改进的otsu自适应阈值分割算法找到阈值T1;

e、对步骤d中找到的阈值进行放大得到新的阈值T2;

f、用新的阈值T2对高斯滤波后的图像进行二值化形态学处理;

g、对杂质和液位进行检测并输出结果,具体包括:

1)对输入图像进行轮廓查找并把各个信息以链表的形式保存,传出指向这条链表表头的指针;

2)进入循环中,通过链表表头指针指向当前轮廓坐标;

3)绘制当前轮廓并计算当前轮廓区域面积area;

4)area与内轮廓阈值进行比较,如果area小于该阈值,则被认定为内轮廓即杂质然后计数并标定杂质位置;

5)area与外轮廓阈值进行比较,若大于该阈值,则当前轮廓区域为外轮廓,计数加1;

6)遍历完所有存储的轮廓区域之后,查看外轮廓数目,如外轮廓数目大于1,则认为液位不满;

7)实时输出结果;

h、释放内存空间。

2.根据权利要求1所述的基于图像处理的瓶装液体杂质及液位检测方法,其特征是步骤d到步骤f中对高斯滤波处理后的图像进行otsu计算差分图像阈值T和形态学处理的具体方法如下:(1)计算直方图并归一化histogtam得到图像灰度级及各级灰度出现的概率;

(2)由步骤(1)得到图像灰度均值;

(3)计算直方图的零阶和一阶距并找到最大类间方差及对应的灰度值即为自适应阈值;

(4)对步骤(3)中的阈值进行放大,实现对传统otsu算法的改进;

(5)利用阈值T对上述处理过的图像进行形态学滤波处理;

(6)对处理后的图像进行后续处理。

说明书 :

基于图像处理的瓶装液体杂质及液位检测方法

技术领域

[0001] 本发明涉及的是一种图像处理方法,尤其是一种基于图像处理的瓶装液体杂质及液位检测方法。

背景技术

[0002] 众所周知,对于瓶装液体是否含有杂质事关食品与医药安全。食品安全问题已成为当今社会的热点话题,所以严格把控食品生产过程中的卫生,保证食品的安全至关重要。然而,现如今国内大部分企业和产品生产车间采用传统的肉眼识别,这种识别方法速度慢,检测人员容易疲劳,可靠性差。不论从实用性还是从企业成本需求考虑,采用原理简单、成本低廉、易操作的图像处理的方法来对食品进行检测是一种趋势。
[0003] 图像处理没有固定的算法,研究图像处理必须以实际对象和实际效果为主要准则。我国传统的瓶装液体杂质检测技术主要有光流法和背景减除法。光流法是通过判断是否有异物产生光流场来判断杂质的存在的,这种方法计算量大,不适用于实时处理。背景减除法分辨率极高,可以识别类如毛发这样细小杂质。然而,其对系统控制的精确度也十分高,需要两帧图像的水瓶位置接近于重合,这点在实际应用中由于硬件的限制很难达到。并且由于液体运动产生的细小气泡也会被识别成杂质。
[0004] 至于瓶装液体的液位检测,在已有的研究中,提出了如光电传感器法,电容传感器法,超声波法,以上检测方法虽然检测结果理想,但成本较高,短时间内难以广泛推行应用。基于机器视觉的检测方法由于其原理简单、成本低廉、操作方便,不借助于外部测量仪器既能实现对瓶装液体进行实时监测的目的,因此受到人们广泛关注。
[0005] 鉴于以上两种液体杂质检测方式在瓶装液体检测应用上的不足和工业现场对原理简单、操作方便、成本低廉及不借助于外部检测仪器即可进行实时检测的要求,更为有效的检测算法有待进一步开发。

发明内容

[0006] 本发明的目的在于提供一种可使系统识别直径0.5mm以上的杂质,并能准确检测出液体液位的基于图像处理的瓶装液体杂质及液位检测方法。
[0007] 本发明的目的是这样实现的:
[0008] a、摄像头采集并输入所要处理的图像;
[0009] b、创建用来存储每一步处理后图像的内存空间;
[0010] c、运用高斯滤波对图像进行灰度化平滑处理;
[0011] d、运用改进的otsu自适应阈值分割算法找到阈值T1;
[0012] e、对步骤d中找到的阈值进行放大得到新的阈值T2;
[0013] f、用找到的阈值对高斯滤波后的图像进行二值化形态学处理;
[0014] g、对杂质和液位进行检测并输出结果;
[0015] h、释放内存空间。
[0016] 所述的d到f中运用高斯平滑对图像进行高斯滤波处理后进行otsu计算差分图像阈值T1的具体方法如下:计算直方图并归一化histogtam得到图像灰度级及各级灰度出现的概率;可得到图像灰度均值;计算直方图的零阶和一阶距并找到最大类间方差及对应的灰度值即为自适应阈值;对以上得到的的阈值进行一定比例的放大,以实现对传统otsu算法的改进;利用阈值T对上述处理过的图像进行形态学滤波处理;对处理后的图像进行后续处理。
[0017] 本发明通过对当前液体杂质检测的常用算法进行实际验证,最终提出了改进的otsu阈值自适应分割算法。
[0018] 本发明的有益效果:本发明的一种基于图像处理的瓶装液体的杂质及液位检测算法,经过大量实验,对传统的otsu阈值分割算法进行改进,实现了阈值在一定光线范围内的自适应调节,减小了传统阈值分割算法固定不变的保守性,同时在杂质及液位检测系统中成功得以应用。实验结果表明该算法可使系统识别直径0.5mm以上的杂质并能准确检测出液体液位,对不合格产品进行报警提示和剔除。

附图说明

[0019] 图1为杂质和液位检测算法流程图;
[0020] 图2为改进的自适应阈值分割法流程图。

具体实施方式

[0021] 下面结合附图对本发明作进一步的说明。由于该发明仅介绍了检测系统的算法,因此如下示意图仅显示与本发明有关的基本构成。
[0022] 一种基于图像处理的瓶装液体的杂质及液位检测算法,具体算法如下:
[0023] a、摄像头采集并输入所要处理的图像;
[0024] b、创建用来存储每一步处理后图像的内存空间;
[0025] 在OpenCV中调用cvCreatImage()函数创建用来存储每一步处理后图像的内存。
[0026] c、运用高斯滤波对图像进行灰度化平滑处理;
[0027] d、运用改进的otsu自适应阈值分割算法找到阈值T1;
[0028] e、对d中找到的阈值进行一定比例的放大得到新的阈值T2;d和e中otsu具体算法如下:
[0029] Step1:计算直方图并归一化histogtam可以得到图像灰度级1→M,第i级像素ni个,总像素为N,则第i级灰度出现的概率为
[0030] Pi=ni/N
[0031] Step2:计算图像灰度均值
[0032]
[0033] Step3:计算直方图的零阶w[i]和一级距u[i]
[0034]
[0035] w1=1-w[k]
[0036] 对一级矩作以下处理:
[0037] μ0=μ[k]/w[k],μ1=[μ-μ[k]]/[1-w[k]]
[0038] Step4:计算并找到最大的类间方差对应此最大方差的灰度值即为要找的阈值[0039] 类间方差:σ2[k]=w0(μ-μ0)2+w1(μ-μ1)2
[0040] 即:σ2[k]=[μ·w[k]-μ[k]]2/{w[k]·[1-w[k]]}
[0041] k从1→M变化,是类间方差最大的k即为所求之最佳阈值,记为kmax。
[0042] Step5:Step4中找到的阈值进行一定的比例放大即a=kmax·b(其中,1.22
[0043] 通过对传统的otsu算法的实验过程发现,其并不能达到阈值自适应的效果,甚至不能提取出图像杂质的轮廓,团队发现本设计的带有杂质的瓶子图像,杂质和背景的界限分明,传统的otsu算法计算出的的阈值偏小导致不能正确提取出杂质,故经过100次实验,提出了在Step5的基础上对阈值进行扩大(其中放大倍数为1.22
[0044] 通过Step5得出的阈值,实验效果良好,符合本设计的需要,完全达到了阈值自适应调节的效果。
[0045] f、用找到的阈值对高斯滤波后的图像进行二值化形态学处理;
[0046] 本设计通过对阈值分割后的图像先进行闭运算再进行开运算处理,可以看出闭运算操作使得瓶子顶端的分离部分连接在一起,从而避免了后续轮廓查找的误操作,达到了很好的效果。
[0047] g、对杂质和液位进行检测并输出结果;其具体算法如下:
[0048] 1)对输入图像(阈值分割图像)进行轮廓查找并把各个信息以链表的形式保存。传出指向这条链表表头的指针;
[0049] 2)进入循环中,通过链表表头指针指向当前轮廓坐标;
[0050] 3)绘制当前轮廓并计算当前轮廓区域面积area;
[0051] 4)area与内轮廓阈值进行比较,如果area小于该阈值,则被认定为内轮廓即杂质然后计数并标定杂质位置;
[0052] 5)area与外轮廓阈值进行比较,若大于该阈值,则当前轮廓区域为外轮廓,计数加1;
[0053] 6)遍历完所有存储的轮廓区域之后,查看外轮廓数目,如外轮廓数目大于1,则认为液位不满;
[0054] 7)实时输出结果。
[0055] h、释放内存空间。
[0056] 应用OpenCV下的cvReleaseMemStorage()函数释放内存,并结束程序。
[0057] 以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更或者修改。本发明的技术性范围并不局限于说明书上的内容,必须根据权利要求范围来确定其技术性范围。