CN111161214B - 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法 - Google Patents

一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法 Download PDF

Info

Publication number
CN111161214B
CN111161214B CN201911250568.8A CN201911250568A CN111161214B CN 111161214 B CN111161214 B CN 111161214B CN 201911250568 A CN201911250568 A CN 201911250568A CN 111161214 B CN111161214 B CN 111161214B
Authority
CN
China
Prior art keywords
pig
image
point
adopting
drinking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911250568.8A
Other languages
English (en)
Other versions
CN111161214A (zh
Inventor
刘星桥
李健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu University
Original Assignee
Jiangsu University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu University filed Critical Jiangsu University
Priority to CN201911250568.8A priority Critical patent/CN111161214B/zh
Publication of CN111161214A publication Critical patent/CN111161214A/zh
Application granted granted Critical
Publication of CN111161214B publication Critical patent/CN111161214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/02Measuring arrangements characterised by the use of optical techniques for measuring length, width or thickness
    • G01B11/06Measuring arrangements characterised by the use of optical techniques for measuring length, width or thickness for measuring thickness ; e.g. of sheet material
    • G01B11/0608Height gauges
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/24Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/28Measuring arrangements characterised by the use of optical techniques for measuring areas
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01GWEIGHING
    • G01G17/00Apparatus for or methods of weighing material of special form or property
    • G01G17/08Apparatus for or methods of weighing material of special form or property for weighing livestock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/66Analysis of geometric attributes of image moments or centre of gravity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30181Earth observation
    • G06T2207/30188Vegetation; Agriculture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30242Counting objects in image

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法,拍摄猪只背部图片并得到猪只体高,划定猪只进食时的位置、提取猪只轮廓、采用二值化处理将猪只背部图像的像素点置为0并计算个数,将计算的黑色像素点个数与先前校验的各个高度下10CM*10CM黑色正方形的像素点个数进行比对,将猪只的实际背部面积和猪只的体高、猪只的实际体重进行拟合操作得到猪只体重预估。饮水监测:当饮水区域白色像素点超过50%则初步判断存在饮水行为,之后跟踪猪只质心,当质心移动距离不超过阈值时,截取第10张照片中饮水器周围20*20CM的图片,并输入traincascade分类器,对饮水区域的图片进行比对判定图片内容,如果该图片的内容为猪只头部,则最终判定猪只在饮水。

Description

一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法
技术领域
本发明涉及新型数字农业管理系统领域,特别是利用双目深度摄像技术预估猪只的体重信息,对猪只的饮水行为作出精准的判定。
背景技术
我国养猪业的总体规模长期处于世界前列,养猪业在我国经济发展中起到了重要的作用。自2012年以来我国的猪只年末存栏数和出栏数呈现明显的下滑趋势,现阶段的猪只养殖业效益低的主要原因是疫情的处置不及时,导致了高死亡率和不合格率,去年以来“非洲猪瘟”肆虐我国,重创我国生猪养殖行业。当前对猪只疾病的防治主要通过人工观察,成本大并且存在人畜传染的隐患。
通过物联网技术及相关自动化设备代替人力,可以快速及时的反馈猪只的生长情况,健康情况。比对猪只每天的饮水、进食、休息的时长、预估猪只的体重,都可以对猪只的情况进行相应的了解并将结果反馈给饲养员。
发明内容
本发明的目的在于研制基于视觉的猪只体重预测系统、监测猪只每天的饮水活动。健康猪只每日的饮水次数、饮食次数、休息次数随着季节的变化而变化,但不会出现太大的变化,对于饮水次数的采集可以反馈猪只健康情况;对于猪只的体重预测更可以直观地反馈给饲养人员,如果体重出现了明显的差异,可以加大投喂量或者检查猪只的健康状态。
本发明的技术方案主要包括:
下位机模块,用于控制滑轨往返于猪舍的各个地点进行拍摄;
上位机模块:对于采集的猪背部图片进行统一地处理,计算出相关猪只的体重信息。对于饮水区域周围的图片进行识别,判断是否存在饮水情况。
所述下位机模块包括交流220V~直流24V稳压电源模块,主要作用是给DM860电机驱动器以及雷赛86CM步进电机供电;采用PLC200 224XP晶体管型发送脉冲信号给雷赛DM860驱动器,驱动器驱动雷赛DM860电机转动,电机带动轨道转动;滑轨的运动采用3段式往返运动,通过PLC200 224XP向86CM步进电机发送转速频率和脉冲总数:加速阶段:采用低频率模式,加速转速频率在500Hz,脉冲总数1000;匀速阶段:平速转动频率在1KHz,脉冲总数2000;减速阶段:减速转速频率为500Hz,脉冲总数为1000。滑轨总长10M,一个来回共驻停8次,每次驻停时间为60s。使用PLC200 224XP的串口0通过RS485连接GPRS DTU,可以接收来自上位机的控制信号,所以可以远程的控制滑轨的启停。滑轨模块采用加长的CCM-W60-35公斤级直线滑台模具,长度为10M,并且搭载灰点Bumblebee-3双目摄像机用以捕获猪只照片。
所述上位机设计模块采用OpenCv库对猪只的体重进行测量:
首先通过观察猪只进食时相对于整张图片的位置,通过setMouseCallback鼠标响应函数,实时在CMD框显示当前的Point坐标信息以判定感兴趣区域ROI,最终确定的ROIimage区域为Rect(1100,600,270,350)。
第二步使用grabCut函数将猪只从整张图片中提取出来,其原型如下:
grabCut(img,result,rect,bgdModel,fgdModel,iterCount,mode),img为输入的完整图像、result为只包含猪只信息的图像、rect为Rect即第一步测量得到的感兴趣区域、bgdModel为整幅图像的背景图像、fgdModel为前景图像即只关于猪只的图像、iterCo unt为迭代次数设置成1次、mode选择GC_INIT_WITH_RECT即用矩形划定感兴趣区域。
第三步对得到的轮廓图result再一步进行筛选,使用compare函数对result结果进行二值化处理和剔除背景信息,原型如下:
void compare(InputArray src1,InputArray src2,OutputArray dst,intcompo p),src1为输入图像、src2比较图像,此处为前景图像即第二部的fgdModel信息,所以此参数为GC_PR_FGD、dst为输出图像、compop为src1和src2的比较法则,定义为GC_PR_FGD即选取src1和src2相等部分,即如果src1是src2中元素则此像素点为255,如果不属于src2则像素点为0.
第四步访问每个像素点对于不为0的像素进行置白色,为0进行置黑。采用动态地址配合at方法访问每个像素,如果BRG三通道中有一个不为0均将三通道设置成255,并统计不为0的像素点的总数。之后采用cvtColor函数进行图像的灰度化、采用threshold函数进行二值化处理即将图像变换成0或者1。
第五步对得到的猪只的轮廓面积进行换算得到实际的背部面积。公式如下:S1/S2=P1/P2,S1为猪只的实际面积、S2为100CM^2、P1为统计的猪只的色像素点个数、P2为当前高度下的猪只体高。最后对猪只的背部面积、猪只的体高和猪只的体重进行拟合,得到关于因变量为体重、自变量为体高和体重的拟合方程。拟合采用MatLab的cftool工具箱,首先输入自变量:X data即背部面积、Y data即猪只体高Y,接着输入因变量Z data即猪只实际体重。对X和Y的最高次幂进行选择得到拟合的结果,包括拟合的方程、SSE拟合误差、R-square均方差、Adjusted R Square校正决定系数、RMSE均方根误差。
对于猪只的饮水行为,由于存在高低饮水器的存在,高位的饮水器猪只只能抬头才能够到,所以不做监测,只对低位饮水器进行研究。
第一步划定低位饮水器的感兴趣区域ROIimage,经过setMouseCallback回调函数确定饮水器在整张图片中的位置Rect(50,0,100,200),此矩形下的白色像素个数是需要实时检测的数据。
第二步采用和体重预估相同的grab函数和compare函数对整张的图片进行猪只轮廓的提取、采用cvtColor函数进行图像的灰度化处理、采用threshold函数对灰度图像进行二值化处理。
第三步对得到的猪只的图像提取轮廓点集。
采用findContours函数读取图片中出现的所有图形的轮廓点集。其原型如下:
findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierarchy,int mode,int method,Point offset=Point()),image为输入的二值化图像,选择第二步的结果result、hierarchy为vector<vector<Point>>类型的多轮廓点集合contours用来保存所有轮廓的点集合、mode代表需要绘制的轮廓的类型,此处mode选择RETR_EXTERNAL配合method选择为CHAIN_APPROX_NONE即代表选择只采集物体的最外层轮廓点集、offset为相对于原图的偏移量选择默认值即不发生偏移。
第四步绘制轮廓并计算每个轮廓的面积。
采用drawContours绘制出contours点集中的每个轮廓,原型如下:
Void drawContours(InputOutputArray image,InputArrayOfArrays contours,int contourIdx,const Scalar&color,int thickness=1,int lineType=8,InputArrayhierarchy=noArray(),int maxLevel=INT_MAX,Point offset=Point()),image为输出的图像此处为dstimage三通道全零图像、contours为输入的轮廓点集、contoursIdx为需要绘制的几号轮廓、color代表轮廓颜色此处为scalar(255,255,255)、thickness为轮廓的粗细、lintType为轮廓线型、hierarchy为轮廓结构信息、maxLevel1为绘制轮廓最大等级采用默认参数、offset偏移量采用默认值。
采用contourArea函数计算每个轮廓点的面积,原型如下:
double cvContourArea(const CvArr*contour,CvSlice slice),contours为轮廓点集,即vetor<Point>类型的contours[i]点集和、slice为计算轮廓的起始点此处选CV_WHOLE_SEQ计算整个轮廓的面积。
第五步筛选最大面积的轮廓即猪只轮廓、绘制最小外接矩形、找出质心坐标。
对于每个轮廓面积输入到double类型数组,查找最大值后采用drawContours函数绘制出87号轮廓即猪只轮廓。
采用minAreaRect函数计算出外接矩形坐标,其参数为contours[87]即第87号轮廓点集,得到的RotatedRect变量box存储有最小外接矩形四个坐标点的信息。采用box.points(vertex)将box信息赋值给Point2f类型的vertex[4]数组。采用line函数绘制最小外接矩形,原型如下:
void line(Mat&img,Point pt1,Point pt2,const Scalar&color,intthickness=1,int lineType=8,int shift=0),img为输出图像、pt1代表是线段起点此处为vertex[i]、pt2是线段的终点此处为vertex[(i+1)%4]、color是线段颜色选择scalar(255,255,255)白色、thickness指线段粗细采用默认值、lineType线性采用默认值、shift坐标点小数点位数采用默认值。Vetex[4]中存储的是矩形四个角的坐标,通过任意两个对角线可得到质心点。质心的计算Point2f p=(vetex[0].x+vertex[2].x)/2,(vetex[0].y+vertex[2].y)/2。
第六步观察饮水区的像素点占用情况判定饮水。
在得到二值化result之后观察Rect(50,0,100,200)即饮水区域的白色像素点个数,达到10000白色像素点时,记录质心的坐标Point p。并开始连续的读取10张图像进行前五步的计算,读取质心坐标计算质心的总移动距离即点到点的每一段距离,当小于5CM时。截取原始图像饮水器周围20*20CM的图像,进行头部的识别。流程如下:
1:加载已经训练好的分类器
Cascade(级联)分类器是基于多个弱分类器对不同的特征进行依次处理(分类)来完成对目标的检测,即将多个弱分类器串起来,然后提取每个平滑窗上的不同特征,把这些特征依次放进不同的弱分类器里判断,如果所有的弱分类器都判断正标签,则表示该该平滑窗内检测到目标。不但可以通过多个弱分类器来形成一个强的级联分类器,而且可以减少运算量,目的是为了快速抛弃没有目标的平滑窗,从而达到快速检测目标的作用。
CascadeClassifier cascade、cascade.load("F:/train2/xml/cascade.xml")
2:读取当前原始的图像
imread("F:/test.jpg",1)
3:检测猪只的头部个数
vector<Rect>rect
cascade.detectMultiScale(grayimage,rect)
rect存储x、y、width、height等信息,grayimage为截取的20*20CM的灰度图像。
4:将检测到的猪只头部画圆处理
利用void circle(CV_IN_OUT Mat&img,Point center,int radius,constScalar&color,int thickness=1,int lineType=8,int shift=0),img为输出图像、center为画圆的圆心坐标选择(rect[i].x,rect[i].y)、radius为圆的半径采用(rect[i].width+rect[i].height)/2、scolor为设定圆的颜色采用scalar(0,0,255)、thickness为设置圆线粗细采用默认值、lineType线型采用默认值、shift圆心坐标点和半径值的小数点位数采用默认值。如果检测出是猪只头部则画圆判定是头部并最终判定存在饮水行为。
本发明的方法的技术方案为:一种基于双目视觉的猪只体重测量及饮水行为识别方法,包括以下步骤:
步骤1,在猪场横向方位安装滑轨,将各个位置拍摄的位置的图片保存到PC机本地硬盘,供给上位机程序;
步骤2,双目摄像机初始位置正对着饲喂站下料器区域,猪只进入饲喂器,电子耳标触发GPRS DTU既发送猪只实际的体重亦触发上位机处理程序;
步骤3,上位机从本地PC的相关硬盘中读取此时的猪只俯视图形,用户可以通过按钮计算通过视觉图片计算猪体重;
步骤4,下位机的程序控制摄像机滑动到饮水区域,通过分类器查看是否存在猪只饮水行为,并且记录饮水次数;
步骤5,实际体重与视觉称重信息均存储在上位机MySQL中,可以通过可视化数据库软件Navicat-for-MySQL查看相关的信息;
本发明的有益效果:
1)利用物联网及自动化设备替代人工观察猪体重,饮水情况,每天实时反馈信息,管理更加智能化,降低人工成本。
2)管理人员可以远程的操控滑轨与调看猪只当前的行为,可以在进食时实时判定猪只体重。
附图说明
图1是本发明系统整体结构图
图2是本发明下位机硬件原理图
图3是本发明上位机界面图
图4是本发明猪只二值化图
图5是本发明识别负样本图
图6是本发明识别正样本图
图7是本发明的traincascade训练结果图
具体实施方式
本发明包括下位机硬件设计及滑轨控制程序模块、服务器端的的软件界面程序、基于Bumblebee-3的双目视觉称重程序、基于traincascade分类器的饮水行为识别程序。
所述下位机硬件设计及滑轨控制模块,可以手动控制CCM-W60-35滑轨的启动和停止、PLC200 224XP也可以接收来自上位机的控制信号远程控制滑轨启动和停止;所述的服务器端的软件界面界面可以向客户端发送滑轨控制信号、可以接收猪只进食时通过GPRSDTU传送到上位机的实际体重信息、可以预估猪只的体重信息;可以读取猪只达到饮水区域时拍摄的局部照片并通过输入到traincascade分类器中对局部的图片进行识别与判断,判定是判定是否是猪只的头部进而判定否存在饮水行为。
采用CCM公司W60-35公斤10M长的滑轨、采用雷赛公司DM860驱动器驱动雷赛86HS85D步进电机,电机带动滑轨进行往复式的运动,一端到另一端的移动采用3段式每移动3.3M就停靠1分钟时间,驻停1分钟期间则拍摄猪只的进食照片、饮水照片。PLC200 224XP通过PORT0口和GPRS DTU与上位机进行TCP/IP通信,向上位机发送猪只的实际的体重信息、接收来自上位机的滑轨控制信号。
服务器界面采用QT软件进行编写,采用TCP-SERVER建立服务器端的监听,采用TCP-SOCKET套接字接收和发送数据,与客户端的GPRS DTU进行全双工通信,猪只进食时电子磅秤测量实际的猪只实际的体重,经由PLC200 224XP发送给服务器端。服务器端可以使用WRITE函数写入滑轨启动代码控制滑轨的启动和停止。
采用Point Grey公司Bumblebee-3双目深度摄像机将拍摄的猪只进食时的背部图片,通过服务器端的程序读取猪只进食时的图像以及进食时的猪只距离深度摄像头的长度,进而得到猪只进食时的体高信息,对猪只进食时的图片进行感兴趣区域的划定圈定猪只出现的固定位置、对图像进行高斯滤波减少噪声的影响、对图片进行直方图均衡化增加猪只和周围图片的对比对、采用grabCut函数对猪只的轮廓提取、采用二值化处理将猪只的背部的图像的像素点置为0即黑色,然后将猪只的背部图像复制到一张和拍摄图片同等大小额图片上,该图片的每个像素点均设置成255即白色,最后得到一张只有黑白的图片,计算黑色像素点个数,将计算的黑色像素点的个数与先前校验的各个高度下10CM*10CM黑色正方形的像素点个数进行比对计算,S1/S2=P1/P2,S1、S2、P1、P2分别为猪只的实际面积、10*10CM的面积、猪只的黑色像素点个数、此高度下的10*10CM的黑色像素点的个数,最后将猪只的实际背部面积和猪只的体高、猪只的实际体重进行拟合操作得到基于双目视觉的猪只的体重预估计模型。
服务器端的程序不停的读取饮水区域的图片,并不断监测饮水器感兴趣区域的白色像素点的的占比情况。在猪只进入饮水区域后,白色像素点的占比就会增加,当超过50%初步判断存在饮水行为。当占领指数达到阈值之后,通过持续的跟踪猪只矩形轮廓,并且连续记录猪只的质心相对于前一幅图片的移动距离,持续的监测10副图片并记录下XY轴相对于图片左上角原点的坐标。当质心的移动距离不超过阈值范围5CM时,判定可能存在饮水行为。最后截取饮水器周围的图片20*20CM,将截取到的图片输入到traincascade分类器,通过traincascade分类算法得到的cascade.xml分类器对饮水区域的图片进行比对判定当前是猪只的头部、猪只的尾部、地板还是猪只的背部,如果为猪只头部,就最终的判定此时是猪只的在进行饮水行为。
下面结合附图对本发明作进一步说明。
本发明是一种基于双目视觉的猪只体重测量及饮水行为识别系统,系统整体设计构架及猪舍环境如图1所示,包括饲喂器前的电子称重平台,双目摄像头Bumblebee-3及搭载其往复运动的滑轨CCM-W60-35,图1左边存在高低饮水器,右边为休息区域。图2为PLC200224XP与DM860驱动器、86HS85D步进电机的硬件连接图。图3为处理双目摄像机保存在PC中猪只图片的处理界面。图4为视觉称重中计算黑色像素点的最后二值化图片,此时比对先前校验数据即可以得到背部面积。图5和图6分别为输入负样本猪尾巴和正样本猪头的识别效果,负样本没有找到猪头,正样本找到了猪头并标记。图7为traincascade训练器训练的结果集。
本发明的具体实施方案为:
步骤1,在猪场钢结构顶部横向安装10M滑轨CCM-W60-35,下位机控制箱安装在右侧墙壁,PC机安装在猪舍透明玻璃外。
步骤2,猪只进入进入图1所示的自动饲喂站,电子耳标触发RFID阅读器并触发GPRS发送信号,上位机接收到信号,并开始读取硬盘信息。
步骤3,选择图3所示的打开文件按钮查看此时摄像机下的拍摄的猪只,上位机程序给出如图4所示二值化图,例如此二值化图中,总的像素点为9734400,白色像素点即猪只背部像素点个数为1287317,通过比对10CM*10CM在此高度下的黑色像素点个数,可得到猪只背部面积,软件界面会最终显示预估的猪只体重。
步骤4,进食完毕后,PC机或者通过右侧墙壁的控制箱操作滑轨移动到图1所示的饮水区域,此时程序自动捕获图片并计算低位饮水器矩形框中白色像素点的个数,当达到50%后,读取从此刻开始10张图片,通过目标跟踪算法中划定矩形框进行质心计算,计算在10张图中平均的移动距离,当小于5CM时,开始读取当前图片中低位饮水器旁边的20*20CM大小的图片,通过cascade.xml分类进行识别,当识别为猪头时,记录饮水次数加1,并存入MySQL。
步骤5,饲养人员可每天通过可视化软件navicat-for-mysql查看猪只的体重与饮水次数,自行判定猪只的健康状态,并作出相关的操作。
所属领域的普通技术人员应当理解:以上所述仅为本发明较佳的具体实施方式,在不脱离本发明的原理和宗旨的情况下对本技术方案及其发明构思加以等同替换或改变,均应包含在本发明的保护范围之内。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于双目视觉的猪只体重测量及饮水行为识别系统,其特征在于,包括
双目摄像机,用于采集猪舍图片;
下位机模块,用于控制与双面摄像机相连的滑轨往返于猪舍的各个地点,并与上位机彼此交互;
上位机模块:对于采集的猪背部图片进行统一地处理,计算出相关猪只的体重信息,对于饮水区域周围的图片进行识别,判断是否存在饮水情况;
所述上位机模块采用OpenCv库对猪只的体重进行测量,具体如下:
第一步,设置猪只进食时相对于整张图片的位置,通过setMouseCallback鼠标响应函数,实时在CMD框显示当前的Point坐标信息以判定感兴趣区域ROI,最终确定的ROIimage区域为Rect;
第二步,使用grabCut函数将猪只从整张图片中提取出来,其具体设置如下:grabCut(img,result,rect,bgdModel,fgdModel,iterCount,mode),其中,img为输入的完整图像、result为只包含猪只信息的图像、rect为第一步测量得到的感兴趣区域、bgdModel为整幅图像的背景图像、fgdModel为前景图像即只关于猪只的图像、iterCount为迭代次数设置成1次、mode选择GC_INIT_WITH_RECT即用矩形划定感兴趣区域;
第三步,对得到的轮廓图result再一步进行筛选,使用compare函数对result结果进行二值化处理和剔除背景信息,设置如下:
void compare(InputArray src1,InputArray src2,OutputArray dst,int cmpop),src1为输入图像、src2为前景图像即第二部的fgdModel信息,所以此参数为GC_PR_FGD、dst为输出图像、compop定义为GC_PR_FGD,即如果src1是src2中元素则此像素点为255,如果不属于src2则像素点为0;
第四步,访问每个像素点对于不为0的像素进行置白色,为0进行置黑;采用动态地址配合at方法访问每个像素,如果BRG三通道中有一个不为0均将三通道设置成255,并统计不为0的像素点的总数;之后采用cvtColor函数进行图像的灰度化、采用threshold函数进行二值化处理即将图像变换成0或者1;
第五步,对得到的猪只的轮廓面积进行换算得到实际的背部面积,公式如下:S1/S2=P1/P2,S1为猪只的实际面积、S2为100CM^2、P1为统计的猪只的色像素点个数、P2为当前高度下的猪只体高;最后对猪只的背部面积、猪只的体高和猪只的体重进行拟合,得到关于因变量为体重、自变量为体高和体重的拟合方程;
所述上位机模块对猪只的饮水行为的监测,具体如下:
第一步,划定低位饮水器的感兴趣区域ROIimage,经过setMouseCallback回调函数确定饮水器在整张图片中的位置Rect(50,0,100,200),此矩形下的白色像素个数需要实时检测数据;
第二步,采用grab函数和compare函数对整张的图片进行猪只轮廓的提取、采用cvtColor函数进行图像的灰度化处理、采用threshold函数对灰度图像进行二值化处理;
第三步,对得到的猪只的图像提取轮廓点集:
采用findContours函数读取图片中出现的所有图形的轮廓点集,其设置如下:
findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierarchy,int mode,int method,Point offset=Point()),image为输入的二值化图像result、hierarchy为vector<vector<Point>>类型的多轮廓点集合contours、mode选择RETR_EXTERNAL配合method选择为CHAIN_APPROX_NONE即代表选择只采集物体的最外层轮廓点集、offset为相对于原图的偏移量选择默认值即不发生偏移;
第四步,绘制轮廓并计算每个轮廓的面积;
采用drawContours绘制出contours点集中的每个轮廓,具体设置如下:
void drawContours(InputOutputArray image,
InputArrayOfArrays contours,int contourIdx,const Scalar&color,intthickness=1,int lineType=8,InputArray hierarchy=noArray(),int maxLevel=INT_MAX,Point offset=Point()),image为输出的图像此处为dstimage三通道全零图像、contours为输入的轮廓点集、contoursIdx为需要绘制的几号轮廓、color选择颜色此处为scalar(255,255,255)、thickness为轮廓的粗细、lintType为线型、hierarchy为轮廓结构信息、maxLevel1为绘制轮廓最大等级采用默认参数、offset偏移量采用默认值;
采用contourArea函数计算每个轮廓点的面积,其具体设置如下:
double cvContourArea(const CvArr*contour,CvSlice slice=CV_WHOLE_SEQ),contours为轮廓点集即vetor<Point>类型的contours[i]点集和、slice为计算轮廓的七十点,此采用默认值计算整个轮廓的面积;
第五步,筛选最大面积的轮廓即猪只轮廓、绘制最小外接矩形、找出质心坐标;
对于每个轮廓面积输入到double类型数组,查找最大值后采用drawContours函数绘制出87号轮廓即猪只轮廓;
采用minAreaRect函数计算出外接矩形坐标,其参数为contours[87]即第87号轮廓点集,得到的RotatedRect变量box存储有最小外接矩形四个坐标点的信息;采用box.points(vertex)将box信息赋值给Point2f类型的vertex[4]数组;采用line函数绘制最小外接矩形,具体设置如下:
void line(Mat&img,Point pt1,Point pt2,const Scalar&color,intthickness=1,int lineType=8,int shift=0),img为输出图像、pt1是起点vertex[i]、pt2是终点vertex[(i+1)%4]、color是线段颜色选择scalar(255,255,255)、thickness指线段粗细采用默认值、lineType线性采用默认值、shift坐标点小数点位数采用默认值;计算质心Point2f p=(vetex[0].x+vertex[2].x)/2,(vetex[0].y+vertex[2].y)/2;
第6步,观察饮水区的像素点占用情况判定饮水;
在得到二值化result之后观察Rect(50,0,100,200)即饮水区域的白色像素点个数,达到10000白色像素点时,记录质心的坐标Point p,并开始连续的读取10张图像进行前五步的计算,读取质心坐标计算质心的总移动距离即点到点的每一段距离,当小于5CM时,截取原始图像饮水器周围20*20CM的图像,进行头部的识别;流程如下:
1:加载已经训练好的分类器
CascadeClassifier cascade、cascade.load("F:/train2/xml/cascade.xml")
2:读取当前原始的图像
imread("F:/test.jpg",1)
3:检测猪只的头部个数
vector<Rect>rect
cascade.detectMultiScale(grayimage,rect)
rect存储x、y、width、height等信息,grayimage为截取的20*20CM的灰度图像;
4:将检测到的猪只头部画圆处理
利用void circle(CV_IN_OUT Mat&img,Point center,int radius,const Scalar&color,int thickness=1,int lineType=8,int shift=0)img为输出图像、center为画圆的圆心坐标选择(rect[i].x,rect[i].y)、radius为圆的半径采用(rect[i].width+rect[i].height)/2、scolor为设定圆的颜色采用scalar(0,0,255)、thickness为设置圆线粗细采用默认值、lineType线型采用默认值、shift圆心坐标点和半径值的小数点位数采用默认值;如果检测出是猪只头部则画圆判定是头部并最终判定存在饮水行为。
2.根据权利要求1所述的一种基于双目视觉的猪只体重测量及饮水行为识别系统,其特征在于,所述双目摄像机采用灰点Bumblebee-3双目摄像机。
3.根据权利要求1所述的一种基于双目视觉的猪只体重测量及饮水行为识别系统,其特征在于,所述下位机模块包括交流220V-直流24V稳压电源模块,用于给DM860电机驱动器以及雷赛86CM步进电机供电;采用PLC200 224XP晶体管型发送脉冲信号给雷赛DM860驱动器,驱动器驱动雷赛DM860电机转动,电机转动能够带动滑轨运动。
4.根据权利要求3所述的一种基于双目视觉的猪只体重测量及饮水行为识别系统,其特征在于,所述滑轨的运动采用3段式往返运动,包含加速阶段、匀速阶段和减速阶段,所述加速阶段:采用低频率模式,加速频率在500Hz,脉冲总数1000;所述匀速阶段:平速转动在1KHz,脉冲总数2000;所述减速阶段:减速频率为500Hz,脉冲总数为1000。
5.根据权利要求3所述的一种基于双目视觉的猪只体重测量及饮水行为识别系统,其特征在于,所述滑轨采用加长的CCM-W60-35公斤级直线滑台模具,总长10M,一个来回共驻停8次,每次驻停时间为60s,使用PLC200 224XP的串口0通过RS485连接GPRSDTU,接收来自上位机的控制信号,以远程控制滑轨的启停。
6.一种根据权利要求1-5任一项所述基于双目视觉的猪只体重测量及饮水行为识别系统的猪只体重测量及饮水行为识别方法,其特征在于,包括以下步骤:
步骤1,在猪场横向方位安装滑轨,将各个位置拍摄的位置的图片保存到PC机本地硬盘,供给上位机;
步骤2,双目摄像机初始位置正对着饲喂站下料器区域,猪只进入饲喂器,电子耳标触发GPRSDTU既发送猪只实际的体重亦触发上位机处理程序;
步骤3,上位机从本地PC的相关硬盘中读取此时的猪只俯视图形,用户可以通过按钮计算通过视觉图片计算猪体重;
步骤4,下位机的程序控制摄像机滑动到饮水区域,通过分类器查看是否存在猪只饮水行为,并且记录饮水次数;
步骤5,实际体重与视觉称重信息均存储在上位机MySQL中,可以通过可视化数据库软件Navicat-for-MySQL查看相关的信息。
CN201911250568.8A 2019-12-09 2019-12-09 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法 Active CN111161214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911250568.8A CN111161214B (zh) 2019-12-09 2019-12-09 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911250568.8A CN111161214B (zh) 2019-12-09 2019-12-09 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法

Publications (2)

Publication Number Publication Date
CN111161214A CN111161214A (zh) 2020-05-15
CN111161214B true CN111161214B (zh) 2023-05-05

Family

ID=70556635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911250568.8A Active CN111161214B (zh) 2019-12-09 2019-12-09 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法

Country Status (1)

Country Link
CN (1) CN111161214B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113505630A (zh) * 2021-04-13 2021-10-15 新希望六和股份有限公司 猪场监控模型训练方法、装置、计算机设备和存储介质
CN113632749B (zh) * 2021-09-07 2022-11-22 华中农业大学 一种基于动物行为的猪身体状态监测方法
CN115226644A (zh) * 2022-08-05 2022-10-25 中国农业大学 一种猪只分群饲喂管理装置和系统
CN115331266B (zh) * 2022-10-17 2023-02-10 天津大学四川创新研究院 一种猪只唯一化识别去重警报方法
CN116824273B (zh) * 2023-08-28 2024-01-12 成都飞机工业(集团)有限责任公司 一种航空制造件任意视角二维投影图像面片属性判断方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1523175A1 (en) * 2003-10-09 2005-04-13 Deutsche Thomson-Brandt Gmbh Method and apparatus for automatic format decision related to the useful picture content part of a picture signal
CN103884280A (zh) * 2014-03-14 2014-06-25 中国农业大学 一种移动式多猪圈猪体尺体重监测系统
CN106295558A (zh) * 2016-08-08 2017-01-04 华南农业大学 一种猪只行为节律分析方法
CN107437069B (zh) * 2017-07-13 2020-06-26 江苏大学 基于轮廓的猪只饮水行为识别方法

Also Published As

Publication number Publication date
CN111161214A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
CN111161214B (zh) 一种基于双目视觉的猪只体重测量及饮水行为识别系统及方法
CN109785337B (zh) 一种基于实例分割算法的栏内哺乳动物清点方法
US20190012531A1 (en) Movement monitoring system
US11688154B2 (en) Analysis and sorting in aquaculture
JP5761789B2 (ja) 植物体の画像領域抽出方法、植物体の画像領域抽出装置、および植物体の生育監視システム
CN111724355B (zh) 一种鲍鱼体型参数的图像测量方法
CN112232978B (zh) 水产品体长和重量检测方法、终端设备及存储介质
US20210368748A1 (en) Analysis and sorting in aquaculture
CN103674857A (zh) 基于机器视觉的牧草饲料检测系统和方法
Kaixuan et al. Target detection method for moving cows based on background subtraction
CN109086696B (zh) 一种异常行为检测方法、装置、电子设备及存储介质
CN109380146A (zh) 生猪自动测量装置和方法
CN106056078B (zh) 一种基于多特征回归式集成学习的人群密度估计方法
CN115861721B (zh) 基于图像数据的畜禽养殖喷雾设备状态识别方法
CN111797831A (zh) 基于bim和人工智能的家禽进食并行异常检测方法
CN111680587B (zh) 一种基于多目标跟踪的鸡群活动量实时估算方法及系统
CN109598200A (zh) 一种铁水罐罐号的图像智能识别系统及方法
EP3769036B1 (en) Method and system for extraction of statistical sample of moving fish
CN113706512B (zh) 一种基于深度学习和深度相机的生猪体重测量方法
CN105404866A (zh) 一种多模式自动实施人体状态感知的实现方法
HUE029105T2 (en) System and method for estimating target size
CN114943929A (zh) 基于图像融合技术的鱼类异常行为实时检测方法
CN108830169B (zh) 增氧机工作状态的检测方法和系统
CN112598738A (zh) 一种基于深度学习的人物定位方法
CN116830162A (zh) 用于生物体量化的系统、方法和计算机可执行代码

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant