一种基于机器视觉技术的鸡蛋裂纹检测
2013-04-29李栋赖科星
李栋 赖科星
摘要:为了实现对鸡蛋壳裂纹的检测,提出了一种基于机器视觉技术的鸡蛋裂纹检测系统设计方案,该系统的硬件部分采用红色LED作为光源,选用背景光照射方式,在封闭的环境中通过CCD摄像机来获取单个静止鸡蛋的图像。软件部分采用灰度转换,中值滤波,线性锐化,阈值分割,边缘轮廓特征提取等手段实现图像的裂纹检测,最后基于图像的数学特征去除干扰因素,准确定位裂纹。实验结果表明系统对破损鸡蛋检测的准确率达到了93%。
关键词:裂纹;机器视觉;鸡蛋;MATLAB;检测
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2013)07-1633-03
蛋类食品具有很高的营养价值,是人们日常生活中的主要食品,其品质的优劣直接决定蛋类产品的质量,甚至于影响食用者的健康。我国蛋类产品的市场资源深厚,需求量大,但是在鸡蛋生产体系结构中,蛋壳破损检测方法还很落后,还没有产品化的自动检测系统,受鸭蛋表面污点的影响,传统的检测设备不能够正确识别裂纹和污点,除一些大规模的生产基地分别从荷兰Hot-Cheers及日本NABEL公司引进检测生产线,我国绝大部分禽蛋生产企业仍然沿用人工检测方法。目前,人工检测是国内外鸡蛋破损检测的主要方法[1],由于人工检测生产效率低,劳动强度大,对检测人员的技术要求高,检测稳定性较差,这些严重制约着中国蛋品加工技术的规模化发展。据资料显示,美国每年因照蛋环节造成的鸡蛋破损率为5%~8%,经济损失巨大[2]。因此,研究适合我国国情的鸡蛋破损检测设备,提高分拣效率,已经成为我国蛋产品制造业目前及未来亟待解决的问题。机器视觉检测作为一种主要利用光的透射、折射、反射的原理与蛋壳结构建立一种关系,通过数学模型建立检测蛋壳裂纹的方法[3-5],无疑将极大的推动我国鸡蛋检测事业的发展。
1 试验材料和机器视觉系统硬件设计
本试验所研究的鸡蛋来自于长沙春华皮蛋厂的同一批鸡蛋。机器视觉系统硬件部分可概括分为图像获取、图像分析处理以及图像结果显示与控制三个部分,主要由LED光源、照蛋器、可散热暗室、CCD摄像机、图像采集卡和计算机等环节组成。采用红色LED作为光源,选用背景光照射方式。鸡蛋距离光源15cm。在暗室中,光线通过照蛋器上的小孔透射到鸡蛋上,CCD摄像机可以采集到鸡蛋的正面图像。装置图如图1所示。
2 图像分析与处理
试验获得的图像格式为JPG,720×350大小的彩色图片,图像分析与处理的流程是灰度转化,中值滤波,线性锐化,阈值分割,边缘轮廓特征提取,最终得到试验结果。
2.1 灰度转化
在暗室的背景光照射下,裂纹部分与非裂纹部分的亮度有很大的差异,裂纹部分的亮度更强,采集的原图像的裂纹部分是一条明亮的线条或网状的明亮区域。在灰度图中裂纹部分和鸡蛋其他区域也容易分辨,因此将彩色图像转化为灰度图像,既有易于区分裂纹,又可以提高图像的处理速度,并且在后期的图像处理过程中,期间使用的多个函数要求文件格式为二维的灰度图像,而imread函数读出的是三维图像,因此为了前后函数的兼容,有必要进行灰度转换。将彩色图片进行灰度转化是把彩色图像中的RGB值转化为灰度值,RGB图像是以R、G、B为轴来建立空间直角坐标系,RGB图像的每个像素的颜色都是用该三维空间的一个点来表示的。灰度图像每个像素的颜色可以用直线R=G=B上的一个点来表示。因此RGB图像转灰度图像的本质就是寻求一个三维空间到一维空间的映射。在MATLAB仿真软件中是由公式(1)来实现的,函数表达式为I=rgb2gray(RGB)。如图2a所示。
2.2 图像增强
为了使鸡蛋的裂纹尤其是微小裂纹能够准确快速地识别出来,图像增强处理是一切工作的基础,图像增强能够显示那些被模糊了的细节或简单突出一幅图像中我们最感兴趣的特征,同时削弱或去除某些不需要的信息。该文采用中值滤波和线性锐化的方法对鸡蛋图像进行增强处理。
2.2.1 中值滤波
蛋壳的结构特点和物理环境决定了通过CCD摄像机采集到的图像主区域上会不可避免的出现与裂纹形状和结构相类似的部分,这一部分噪声信号会影响系统对裂纹区域的识别与判定。中值滤波是一种去除噪声的非线性处理方法,其基本原理是把数字图像中一点的值用该邻域中各点值的中值代替[6],利用中值滤波可以消除各种噪声源和一些干扰引起的虚假的样品边缘或轮廓。在MATLAB仿真软件中,采用I2=medfilt2(I1)函数,通过3×3的模板返回中值滤波后的图像矩阵I2[7]。如图2b所示。
2.2.2 线性锐化
为了更进一步突出裂纹的特征信息,采用图像锐化处理来突出图像的边缘轮廓信息,加强图像的轮廓特征,以便于机器视觉系统的识别,提高准确率。线性高通滤波器是最常用的线性锐化滤波器,这种滤波器的中心系数都是正的,而周围的系数都是负的。对3×3的模板来说,典型的系数取值是
在MATLAB仿真软件中,可采用I2=imfilter(I,h1)函数实现线性锐化。如图2c所示。
2.3 阈值分割
阈值分割法是一种基于图像的分割技术,通过设定不同的特征阈值,把图像像素点分为若干类。当不同类的物体灰度值或其他特征值相差很大时,它能很有效地对图像进行分割。在前人的研究基础上,采用最大类间方差法可以自动计算出最优阈值,较灰度直方图确定阈值的方法其准确率大大提高[8]。在MATLAB仿真软件中,可以采用thresh=graythresh(I)函数实现动态阈值分割。如图2d所示。
2.4 鸡蛋边缘轮廓特征提取
通过对鸡蛋图像处理,可以得到图像中裂纹部分和噪声部分的几何特征参数。通过实验分析可知在带有污点的鸡蛋图像中,裂纹部分一般呈现线条状或网状,污点部分的长宽比较小,裂纹处的数学特征如数学期望和方差等与污点有较大差别;污点处的期望值一般小于整幅图像的平均阈值,而裂纹大于平均阈值,并且污点处的数值波动比裂纹处的小。
在边缘检测中,边缘定位能力和噪声抵制能力是一对矛盾体,有的算法边缘定位能力比较强,有的抗噪能力比较好。边缘检测算子参数的选择也直接影响到边缘定位能力和噪声抵制能力,常用的算子有水平垂直差分算子、Roberts算子、Sobel算子、Prewitt算子[9]、Laplacian算子、LOG算子和Canny算子。Sobel算子对灰度渐变和噪声较多的图像处理效果好,且对边缘定位比较准确,因此选取Sobel算子进行边缘轮廓特征处理。在MATLAB图像处理工具箱中提供了edge函数用于实现Sobel边缘算子检测。其调用格式为I2=edge(I2,'sobel')。如图2e所示。
3 试验结果
本试验选取150个大小不同,品种相同,有标号的鸡蛋作图像采样检测,其中经过仔细成熟的人工检测得知无破损的鸡蛋80个,有破损的鸡蛋70个 。将机器视觉系统的检测结果与人工检测结果进行对比。结果表明,系统的准确率达到了93%。如表1所示。
4 结论
本文建立了一种基于机器视觉技术的鸡蛋裂纹检测系统。通过图像采集系统收集鸡蛋图像,经图像转化、图像增强和特征提取,使用MATLAB编程环境,能够较为准确地对鸡蛋图像进行检测,系统的准确率达到了93%。对干净的鸡蛋能够准确的检测,但对于有污点的蛋检测精度需进一步提高,算法还有待改进。并且本系统现在是停留在实验室条件下,对静止对象进行拍摄和检测,下一步要实现整个检测系统的整体设计,力争在工业现场实现传动系统和检测系统的同步。
参考文献:
[1] 姜瑞涉,陆秋君,王俊. 鸡蛋品质检测的研究现状及其展望[J].粮油加工与食品机械,2002(11):33-35.
[2] Bain M M.Eggshell structure and mechanical strength[C].In Proc 8th Australian Poultry and Feed Convention,Gold Coast:Australia,1990.
[3] 赵鹏.机器视觉理论及应用[M].电子工业出版社,2011:1-2.
[4] 潘磊庆,屠康,苏子鹏,等.基于计算机视觉和神经网络检测鸡蛋裂纹的研究[J].农业工程学报,2007,23(5):154-158.
[5] 潘磊庆,屠康,詹歌,等.基于计算机视觉和声学响应信息融合的鸡蛋裂纹检测[J].农业工程学报,2010,26(11):332-337.
[6] 周品,李晓东. MATLAB数字图像处理[M].清华大学出版社,2012:232-236.
[7] 张铮,王艳平,薛桂香.数字图像处理与机器视觉——Visual C++与Matlab实现[M].人民邮电出版社,2010,4:156-158.
[8] 王树文,张长利,房俊龙.基于计算机视觉的番茄损伤自动检测与分类研究[J].农业工程学报,2005,21(5):98-101.
[9] 彭辉,姚雅娟,文友先,等.基于图像投影变换的鸡蛋破损检测[J].农业工程学报,2010,49(3):694-697.