熊双辉 孙振华
(东南大学自动化学院 江苏 南京 210000)
随着小康社会的逐步建成,生活质量的逐年提高,人们对乳制品的需求也大大提高。总体来看,我国的奶牛养殖业中还存在很多的问题[1],主要表现在养殖管理的自动化程度不够高。比如,作为原奶下线的第一道工序,奶量测产在养殖管理过程中扮演着重要的角色,但在实际牧场环境下,奶量测产更多地是通过人工抄录的方式来进行。因此,原奶的测产对提高奶牛的产量及质量意义非凡。
在国外,很多发达国家很早就将计算机技术引入奶牛养殖业的现代化管理,以达到科学养殖的目的。其中,尤以以色列的阿菲金、SCR两家公司的综合养殖系统最为先进[2]。阿菲金和SCR管理软件,主要通过计步器及其接收装置来监控奶牛每天的产奶量等信息[3]。国外的养殖系统现代化程度高,技术先进、集成度高、专业性强,但是很难将其集成到我国现有的养殖管理系统之中。
然而,我国奶牛养殖业的现代化管理起步较晚,且正在从传统的养殖管理方式向以计算机科学为主导的现代化养殖管理方式转变。到2000年左右,我国的奶牛养殖系统仍以人工登记奶牛及奶量信息并通过手工输入到服务器的方式为主。近年来,我国自行研发出多种奶量自动测产系统,其中熊本海等[4]开发的奶牛精细饲养综合技术平台中利用RFID、PDA及无线局域网等技术的配合使用对奶牛产量进行统计。余云峰、吕伟国等[5-6]提出采用RFID和总线传输奶量的测产系统。上述这些方法虽然达到了奶量测产的目的,但是存在奶牛与奶量无法对应、成本过高、现场环境造成总线故障率较高等问题。
基于此,本文设计了一种基于RFID[7]技术和图像处理[8]的奶量测产系统,该系统包括奶牛占位识别和利拉伐面板识别两个模块。奶牛占位识别模块:首先,通过RFID与光电传感器获取到奶牛身份信息以及占位信息;然后,通过两种数据的融合,实现了奶牛身份与栏位的对应;最后,结合奶量识别结果,实现了奶牛与奶量的一一对应。利拉伐面板识别模块:首先,提出一种软硬件结合的滤波方法获取到简单背景的利拉伐面板图像;然后,通过二值化及图像分割等技术获取单个数码管图像;最后,通过穿针法识别出单个数码管读数并进行组合以获取识别结果。该系统避免了大量的总线,大大降低了传统总线法传输实时奶量数据的设备故障率。
牧场采用的是利拉伐转盘式挤奶机,该转盘共有80个牛栏,分别对应80个利拉伐示数面板,如图1所示。
图1 转盘式挤奶机
牧场原有的测产系统是采用B/S架构的MIS服务系统[9],该系统分为:供操作员操作的客户机、提供数据操纵的Web前端服务器和提供数据存储的数据库服务器。牧场原测产系统架构如图2所示。
图2 牧场原测产系统架构
在充分分析了牧场现有的奶量测产系统的基础上,针对现有测产系统中存在的低效、操作复杂、数据安全性差等问题设计出一套基于RFID技术和图像处理技术的C/S架构奶量测产系统。该系统分为物理层、链路层和应用层。物理层中,摄像机负责采集利拉伐面板示数的图像信息,RFID传感器负责采集奶牛的实时站位信息以及奶牛身份信息,光电传感器负责检测转盘反转的情况,多圈光电传感器负责检测需要多圈挤奶的牛位,占位光电传感器负责确定奶牛的占位信息;链路层中,通过USB、PCI总线、网线将物理层的数据发送到应用层;应用层中,完成RFID及光电传感器数据的融合,得出占位信息,完成利拉伐面板的图像处理,提取出奶量数据,将奶牛编号与产奶量对应起来,并最终通过WebService接口[10]将奶量数据传入牧场服务器。测产系统整体架构图如图3所示。
图3 测产系统架构图
本系统在物理层采用RFID进行奶牛身份标识与奶牛占位识别。经过对比选择,本测产系统选用耳挂式RFID标签标识奶牛身份,选用脚环式RFID标签标识牛栏信息。同时,考虑到标签的位置不断变化和识别的速度和距离等因素,最终决定采用圆极化的高频RFID天线[11]。此外,为识别转盘反转,增加六个光电感器组合进行判断;为识别奶牛一次挤奶多圈,增加一个光电传感器识别多圈挤奶奶位;为确保奶牛确实进入牛栏,增加一个红外传感器判断奶牛确实进入牛栏。基于RFID奶牛占位识别硬件结构如图4所示。
图4 占位硬件结构
综合牧场现场情况,针对奶牛身份及占位识别,设计了多传感器辅助检测,多信息融合的解决方案。具体流程图如图5所示。
1) 奶牛身份及入栏检测:在转盘入口的正中央安装一个RFID天线(图中RFID2)用于检测奶牛编号Ci,当RFID2感知到Ci说明奶牛Ci经过入口。为确保Ci确实进入栏位,在转盘入口的转盘内侧栏位旋转方向2/3位宽处安装天线RFID3,当RFID3也检测到Ci,则说明Ci确实进入栏位。最后为防止空栏时发生误检,在RFID3处又增加一个光电传感器Red3,以确保有奶牛入位。
2) 栏位编号检测:考虑到转盘入口处已安装RFID2和RFID3,因此,在转盘旋转方向隔两个栏位处安装RFID1以识别栏位标签m,此时奶牛Ci对应的栏位为m+2。如此便保证了奶牛编号、栏位号以及产奶量的对应关系。
3) 转盘反转检测:由于奶牛入栏情况复杂,经常会出现转盘反转的情况,因此在RFID1处增加六个光电传感器Red1,编号1~6。如果挤奶转盘正传,则Red1光电传感器组的触发顺序为1-2-3-4-5-6-1,反之则为6-5-4-3-2-1-6。可以据此检测挤奶转盘反转,发生反转时应舍弃此时各传感器采集到的数据。
4) 多圈挤奶检测:对于奶水丰富的奶牛可能需要多圈完成挤奶,因此不会从出口退出。但是,按照上述检测方案,该奶牛就不会出现在入口处,这样就会造成漏检。在逆旋转方向,入口下一栏位处安装一个光电传感器Red2,检测多圈挤奶。Red2光电传感器检测到栏位m+3中有奶牛占位,则说明该奶牛在出口没有出转盘,需要多圈挤奶,此时软件无需RFID2和RFID3以及Red3的信号,直接将奶牛编号写入对应的栏位,防止多圈挤奶奶牛的漏检。
传统的奶量示数面板主要通过自带的485总线提交采集到的奶量数据,该数据采集方法不能与奶牛身份信息相对应并且在奶厅恶劣的环境中485总线的故障率较高。基于此,通过在转盘式挤奶机的内侧安装一台工业相机作为图像采集设备并通过图像处理技术提取奶量。相机安装如图6所示。
在完成相机部署之后,通过软件触发方式采集的一天中不同时刻利拉伐面板的图像如图7所示。图7中显示的是不同时刻图像识别区域的背景情况,可以看到,图像中夹杂着来自灯光反射、太阳光直射等造成的噪声,使得利拉伐示数面板的的背景变得尤其复杂,这对下一步提取示数所在的区域造成巨大的困难。
图7 不同时刻相机采集的图像(未加遮光罩)
针对上述图像背景复杂的问题,设计出一种与利拉伐面板大小相适宜的遮光罩,如图8所示。将遮光罩安装在利拉伐面板的外围,这样就可以屏蔽掉来自灯光、太阳光等非人为因素的噪声,现场试验证明,设计出的遮光罩的效果比较理想,基本可以达到工程要求,进一步简化利拉伐示数面板的背景,如图9所示。
图8 遮光罩设计图(左)和实物图(右)
图9 相机采集的图像(加遮光罩)
利拉伐奶量计数面板中由LED数码管所显示出的奶量的识别是本系统设计的核心环节,直接关乎本测产系统的正确率。通过图像处理技术来获取利拉伐面板示数,基本算法流程包括选取ROI、通道过滤、图像二值化、图像分割和数码管数字识别等流程。基于图像处理的利拉伐面板读数识别算法流程图如图10所示。
图10 利拉伐面板示数识别算法流程图
3.2.1 选取ROI
由于利拉伐面板的安装高度固定,面板间的间距近似相等,所以采集到的利拉伐面板图像中数码管的示数会出现在图像中一个大致的区域。通过实际测量选定范围为(200~1 000,300~450)的800×150大小的图像作为ROI以降低后期图像处理的复杂度。
3.2.2 图像通道过滤及灰度化
由图7可知,在加了遮光罩后,图像的噪声大大降低,避免了一些强噪声的干扰,但是由于环境复杂,图像中仍然会有很多其他的干扰噪声,为了降低后期分割的复杂度,需要进一步提高图像的信噪比。
仔细分析ROI图像发现,图像中的LED数码管为绿色高亮,即图像中数码管上的每个像素点mi,j的mi,j(G)相对于mi,j(R)和mi,j(B)很大,根据这个特点,设计出以下通道过滤算法:
读取ROI中没一个像素点mi,j的RGB值,分别为三个通道设置阈值TR、TG和TB,当满足:
mi,j(R)
(1)
时,设置mi,j(R)=0,mi,j(G)=0。
图像ROI通道过滤后的图像及进一步灰度化后的图像如图11所示。
图11 滤色后图像(左)及灰度化图像(右)
3.2.3 图像二值化
数码管图像的二值化是后续数码管识别的基础,好的二值化算法将对后续识别率的提高有一定的帮助。经过对比,本系统采用自适应阈值确定方法OTSU[12]算法进行图像的二值化。该算法将图像分为背景和前景两个部分,前景和背景的类间方差越大则前景背景差别就越大,进而前景背景被错误区分的概率就越小。
对于图像f(x,y),前景与背景的分割阈值记为T,前景像素点个数占比为ω0,且其平均灰度记为μ0;背景像素点个数占比为ω1,且其平均灰度记为μ1。图像的平均灰度记为μ,类间方差记为g。
现有图像大小为M×N,其中灰度值小于T的像素点个数为N0,大于T的像素点个数为N1,则:
(2)
μ=ω0×μ0+ω1×μ1
(3)
g=ω0×(μ0-μ)2+ω1×(μ1-μ)2
(4)
遍历得到类间方差最大的T,即为二值化的分割阈值。图像二值化后的图像如图12所示。
图12 二值化后图像
3.2.4 图像形态学滤波
观察图12中图像二值化后的结果,发现数码管图像中会有很多的空隙,为了不影响数码管识别时白色像素点个数的统计,需要将二值化后的图像进行形态学滤波以获得较为饱满的图像。
膨胀[13]作为一种常见的形态学滤波算法,是通过求局部最大值来滤波。从数学角度来讲,膨胀是将图像A与B进行卷积操作,即将核覆盖范围内的最大像素值赋值给参考点。数学表达式如下:
(5)
形态学滤波后的图像如图13所示。
图13 形态学滤波后图像
3.2.5 图像分割
在做完图像的前期处理工作之后,对数码管进行识别之前,需要首先锁定示数所在图像区域,然后再将示数区域的数码管分割成单个数码管进行识别。
现有图像f(x,y),字符区域边界:
xmin=minxxmax=maxxymin=minyymax=maxys.t.f(x,y)=1
(6)
进而可以通过横轴方向的直方图[14]将示数区数码管分割成单个数码管。字符区域定位及单个数码管分割结果如图14所示。
图14 字符区域定位图(左)及单个数字分割结果(右)
3.2.6 穿针法识别数码管读数
在了解七段数码管的显示原理之后,采用穿针法[15]进行数码管识别,该算法的核心思想是先找出被点亮的数码管,进而组合成一个数字。穿针法数码管识别如图15所示。并且本文根据工程需求,提出了适合本系统的数码管识别编码表,如表1所示。
图15 穿针法数码管识别示意图
数码管数字 0123456789F●AT-TTFTTTTTT-BT-TTTFFTTTF-CT-FTTTTTTTF-DT-TTFTTFTTF-ET-TFFFTFTFT-FT-FFTTTFTTT-GF-TFTTTFFTT-h/w>2h/w≈1
针对每一段数码管,人为设定固定的坐标区域,并根据固定坐标区域的直方图判定该段数码管是否点亮。各段数码管的判定区间如表2所示,其中x代表水平方向,y代表垂直方向,w代表单个数码管图像的宽度(像素),h代表单个数码管图像的高度(像素)。
表2 各段数码管判定区间
3.2.7 数字重组
在完成图像中所有数码管数字的识别之后,需要进一步对之前的识别结果进行组合处理以得到最终结果。由于利拉伐示数板固定一位小数且最大整数部分一般不超过三位,重组算法即为:
(7)
式中:Ni为从左往右第i个数码管识别结果;R为最终识别结果。res为最终识别结果,若第一个数码管的识别结果为表示状态的C或F字符需要自动忽略。
本套测产系统最终被部署到牧场提供的Windows XP系统上。在系统测试阶段,先后解决了软件自身设计不当造成的内存泄漏、并发处理不当等一系列问题,最终软件可以稳定的运行在当前系统环境下。软件运行主界面如图16所示。
图16 测产系统运行主界面
为检验本系统的可靠性,随机采集了两个牧场共计六个奶厅不同班次的奶量识别情况(如图17所示)以及奶牛占位与奶牛身份的对应情况(如图18所示)。
图17 利拉伐面板示数识别率
图18 奶牛占位识别率
从图17可以看出在加遮光罩后奶量识别率受外界噪声的干扰大大降低,最终识别准确率基本在99%左右,达到牧场要求。
从图18可以看出,奶牛占位与奶牛身份对应的准确率基本稳定在99%左右,如此奶牛编号与产奶量可以很好地对应起来,用于牧场管理者的决策,基本满足牧场的要求。
本文在深入了解牧场需求,认真勘查牧场现场情况的基础上,研究了RFID技术在标识方面的应用以及图像处理技术。并且在此基础上设计并实现了基于RFID技术的奶牛身份及占位识别算法和基于图像处理的利拉伐面板示数提取算法。基于上述两个算法而设计的测产系统在保证识别正确率的同时,提高了系统的稳定性,降低了牧场的生产成本,将产奶量与具体的奶牛对应起来,这将具有很好的实用价值。